diff options
Diffstat (limited to 'system/test-kernel/0130-lrng.patch')
-rw-r--r-- | system/test-kernel/0130-lrng.patch | 28362 |
1 files changed, 0 insertions, 28362 deletions
diff --git a/system/test-kernel/0130-lrng.patch b/system/test-kernel/0130-lrng.patch deleted file mode 100644 index 89d06d84c..000000000 --- a/system/test-kernel/0130-lrng.patch +++ /dev/null @@ -1,28362 +0,0 @@ -diff -urN linux-5.15/MAINTAINERS linux-5.15-lrng/MAINTAINERS ---- linux-5.15/MAINTAINERS 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/MAINTAINERS 2021-11-29 12:36:52.113279174 +1100 -@@ -10830,6 +10830,13 @@ - F: Documentation/memory-barriers.txt - F: tools/memory-model/ - -+LINUX RANDOM NUMBER GENERATOR (LRNG) DRIVER -+M: Stephan Mueller <smueller@chronox.de> -+S: Maintained -+W: https://www.chronox.de/lrng.html -+F: drivers/char/lrng/* -+F: include/linux/lrng.h -+ - LIS3LV02D ACCELEROMETER DRIVER - M: Eric Piel <eric.piel@tremplin-utc.net> - S: Maintained -diff -urN linux-5.15/MAINTAINERS.orig linux-5.15-lrng/MAINTAINERS.orig ---- linux-5.15/MAINTAINERS.orig 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/MAINTAINERS.orig 2021-11-29 12:32:21.653280206 +1100 -@@ -0,0 +1,20816 @@ -+List of maintainers and how to submit kernel changes -+==================================================== -+ -+Please try to follow the guidelines below. This will make things -+easier on the maintainers. Not all of these guidelines matter for every -+trivial patch so apply some common sense. -+ -+Tips for patch submitters -+------------------------- -+ -+1. Always *test* your changes, however small, on at least 4 or -+ 5 people, preferably many more. -+ -+2. Try to release a few ALPHA test versions to the net. Announce -+ them onto the kernel channel and await results. This is especially -+ important for device drivers, because often that's the only way -+ you will find things like the fact version 3 firmware needs -+ a magic fix you didn't know about, or some clown changed the -+ chips on a board and not its name. (Don't laugh! Look at the -+ SMC etherpower for that.) -+ -+3. Make sure your changes compile correctly in multiple -+ configurations. In particular check that changes work both as a -+ module and built into the kernel. -+ -+4. When you are happy with a change make it generally available for -+ testing and await feedback. -+ -+5. Make a patch available to the relevant maintainer in the list. Use -+ ``diff -u`` to make the patch easy to merge. Be prepared to get your -+ changes sent back with seemingly silly requests about formatting -+ and variable names. These aren't as silly as they seem. One -+ job the maintainers (and especially Linus) do is to keep things -+ looking the same. Sometimes this means that the clever hack in -+ your driver to get around a problem actually needs to become a -+ generalized kernel feature ready for next time. -+ -+ PLEASE check your patch with the automated style checker -+ (scripts/checkpatch.pl) to catch trivial style violations. -+ See Documentation/process/coding-style.rst for guidance here. -+ -+ PLEASE CC: the maintainers and mailing lists that are generated -+ by ``scripts/get_maintainer.pl.`` The results returned by the -+ script will be best if you have git installed and are making -+ your changes in a branch derived from Linus' latest git tree. -+ See Documentation/process/submitting-patches.rst for details. -+ -+ PLEASE try to include any credit lines you want added with the -+ patch. It avoids people being missed off by mistake and makes -+ it easier to know who wants adding and who doesn't. -+ -+ PLEASE document known bugs. If it doesn't work for everything -+ or does something very odd once a month document it. -+ -+ PLEASE remember that submissions must be made under the terms -+ of the Linux Foundation certificate of contribution and should -+ include a Signed-off-by: line. The current version of this -+ "Developer's Certificate of Origin" (DCO) is listed in the file -+ Documentation/process/submitting-patches.rst. -+ -+6. Make sure you have the right to send any changes you make. If you -+ do changes at work you may find your employer owns the patch -+ not you. -+ -+7. When sending security related changes or reports to a maintainer -+ please Cc: security@kernel.org, especially if the maintainer -+ does not respond. Please keep in mind that the security team is -+ a small set of people who can be efficient only when working on -+ verified bugs. Please only Cc: this list when you have identified -+ that the bug would present a short-term risk to other users if it -+ were publicly disclosed. For example, reports of address leaks do -+ not represent an immediate threat and are better handled publicly, -+ and ideally, should come with a patch proposal. Please do not send -+ automated reports to this list either. Such bugs will be handled -+ better and faster in the usual public places. See -+ Documentation/admin-guide/security-bugs.rst for details. -+ -+8. Happy hacking. -+ -+Descriptions of section entries and preferred order -+--------------------------------------------------- -+ -+ M: *Mail* patches to: FullName <address@domain> -+ R: Designated *Reviewer*: FullName <address@domain> -+ These reviewers should be CCed on patches. -+ L: *Mailing list* that is relevant to this area -+ S: *Status*, one of the following: -+ Supported: Someone is actually paid to look after this. -+ Maintained: Someone actually looks after it. -+ Odd Fixes: It has a maintainer but they don't have time to do -+ much other than throw the odd patch in. See below.. -+ Orphan: No current maintainer [but maybe you could take the -+ role as you write your new code]. -+ Obsolete: Old code. Something tagged obsolete generally means -+ it has been replaced by a better system and you -+ should be using that. -+ W: *Web-page* with status/info -+ Q: *Patchwork* web based patch tracking system site -+ B: URI for where to file *bugs*. A web-page with detailed bug -+ filing info, a direct bug tracker link, or a mailto: URI. -+ C: URI for *chat* protocol, server and channel where developers -+ usually hang out, for example irc://server/channel. -+ P: Subsystem Profile document for more details submitting -+ patches to the given subsystem. This is either an in-tree file, -+ or a URI. See Documentation/maintainer/maintainer-entry-profile.rst -+ for details. -+ T: *SCM* tree type and location. -+ Type is one of: git, hg, quilt, stgit, topgit -+ F: *Files* and directories wildcard patterns. -+ A trailing slash includes all files and subdirectory files. -+ F: drivers/net/ all files in and below drivers/net -+ F: drivers/net/* all files in drivers/net, but not below -+ F: */net/* all files in "any top level directory"/net -+ One pattern per line. Multiple F: lines acceptable. -+ X: *Excluded* files and directories that are NOT maintained, same -+ rules as F:. Files exclusions are tested before file matches. -+ Can be useful for excluding a specific subdirectory, for instance: -+ F: net/ -+ X: net/ipv6/ -+ matches all files in and below net excluding net/ipv6/ -+ N: Files and directories *Regex* patterns. -+ N: [^a-z]tegra all files whose path contains tegra -+ (not including files like integrator) -+ One pattern per line. Multiple N: lines acceptable. -+ scripts/get_maintainer.pl has different behavior for files that -+ match F: pattern and matches of N: patterns. By default, -+ get_maintainer will not look at git log history when an F: pattern -+ match occurs. When an N: match occurs, git log history is used -+ to also notify the people that have git commit signatures. -+ K: *Content regex* (perl extended) pattern match in a patch or file. -+ For instance: -+ K: of_get_profile -+ matches patches or files that contain "of_get_profile" -+ K: \b(printk|pr_(info|err))\b -+ matches patches or files that contain one or more of the words -+ printk, pr_info or pr_err -+ One regex pattern per line. Multiple K: lines acceptable. -+ -+Maintainers List -+---------------- -+ -+.. note:: When reading this list, please look for the most precise areas -+ first. When adding to this list, please keep the entries in -+ alphabetical order. -+ -+3C59X NETWORK DRIVER -+M: Steffen Klassert <klassert@kernel.org> -+L: netdev@vger.kernel.org -+S: Odd Fixes -+F: Documentation/networking/device_drivers/ethernet/3com/vortex.rst -+F: drivers/net/ethernet/3com/3c59x.c -+ -+3CR990 NETWORK DRIVER -+M: David Dillow <dave@thedillows.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/3com/typhoon* -+ -+3WARE SAS/SATA-RAID SCSI DRIVERS (3W-XXXX, 3W-9XXX, 3W-SAS) -+M: Adam Radford <aradford@gmail.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.lsi.com -+F: drivers/scsi/3w-* -+ -+53C700 AND 53C700-66 SCSI DRIVER -+M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/53c700* -+ -+6LOWPAN GENERIC (BTLE/IEEE 802.15.4) -+M: Alexander Aring <alex.aring@gmail.com> -+M: Jukka Rissanen <jukka.rissanen@linux.intel.com> -+L: linux-bluetooth@vger.kernel.org -+L: linux-wpan@vger.kernel.org -+S: Maintained -+F: Documentation/networking/6lowpan.rst -+F: include/net/6lowpan.h -+F: net/6lowpan/ -+ -+6PACK NETWORK DRIVER FOR AX.25 -+M: Andreas Koensgen <ajk@comnets.uni-bremen.de> -+L: linux-hams@vger.kernel.org -+S: Maintained -+F: drivers/net/hamradio/6pack.c -+ -+802.11 (including CFG80211/NL80211) -+M: Johannes Berg <johannes@sipsolutions.net> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git -+F: Documentation/driver-api/80211/cfg80211.rst -+F: Documentation/networking/regulatory.rst -+F: include/linux/ieee80211.h -+F: include/net/cfg80211.h -+F: include/net/ieee80211_radiotap.h -+F: include/net/iw_handler.h -+F: include/net/wext.h -+F: include/uapi/linux/nl80211.h -+F: net/wireless/ -+ -+8169 10/100/1000 GIGABIT ETHERNET DRIVER -+M: Heiner Kallweit <hkallweit1@gmail.com> -+M: nic_swsd@realtek.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/realtek/r8169* -+ -+8250/16?50 (AND CLONE UARTS) SERIAL DRIVER -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: linux-serial@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git -+F: drivers/tty/serial/8250* -+F: include/linux/serial_8250.h -+ -+8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.] -+L: netdev@vger.kernel.org -+S: Orphan / Obsolete -+F: drivers/net/ethernet/8390/ -+ -+9P FILE SYSTEM -+M: Eric Van Hensbergen <ericvh@gmail.com> -+M: Latchesar Ionkov <lucho@ionkov.net> -+M: Dominique Martinet <asmadeus@codewreck.org> -+L: v9fs-developer@lists.sourceforge.net -+S: Maintained -+W: http://swik.net/v9fs -+Q: http://patchwork.kernel.org/project/v9fs-devel/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs.git -+T: git git://github.com/martinetd/linux.git -+F: Documentation/filesystems/9p.rst -+F: fs/9p/ -+F: include/net/9p/ -+F: include/trace/events/9p.h -+F: include/uapi/linux/virtio_9p.h -+F: net/9p/ -+ -+A8293 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/a8293* -+ -+AACRAID SCSI RAID DRIVER -+M: Adaptec OEM Raid Solutions <aacraid@microsemi.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.adaptec.com/ -+F: Documentation/scsi/aacraid.rst -+F: drivers/scsi/aacraid/ -+ -+ABI/API -+L: linux-api@vger.kernel.org -+F: include/linux/syscalls.h -+F: kernel/sys_ni.c -+X: include/uapi/ -+X: arch/*/include/uapi/ -+ -+ABIT UGURU 1,2 HARDWARE MONITOR DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/abituguru.c -+ -+ABIT UGURU 3 HARDWARE MONITOR DRIVER -+M: Alistair John Strachan <alistair@devzero.co.uk> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/abituguru3.c -+ -+ACCES 104-DIO-48E GPIO DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-104-dio-48e.c -+ -+ACCES 104-IDI-48 GPIO DRIVER -+M: "William Breathitt Gray" <vilhelm.gray@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-104-idi-48.c -+ -+ACCES 104-IDIO-16 GPIO DRIVER -+M: "William Breathitt Gray" <vilhelm.gray@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-104-idio-16.c -+ -+ACCES 104-QUAD-8 DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+M: Syed Nayyar Waris <syednwaris@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: drivers/counter/104-quad-8.c -+ -+ACCES PCI-IDIO-16 GPIO DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-pci-idio-16.c -+ -+ACCES PCIe-IDIO-24 GPIO DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-pcie-idio-24.c -+ -+ACENIC DRIVER -+M: Jes Sorensen <jes@trained-monkey.org> -+L: linux-acenic@sunsite.dk -+S: Maintained -+F: drivers/net/ethernet/alteon/acenic* -+ -+ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER -+M: Peter Kaestle <peter@piie.net> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+W: http://piie.net/?section=acerhdf -+F: drivers/platform/x86/acerhdf.c -+ -+ACER WMI LAPTOP EXTRAS -+M: "Lee, Chun-Yi" <jlee@suse.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/acer-wmi.c -+ -+ACPI -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Len Brown <lenb@kernel.org> -+L: linux-acpi@vger.kernel.org -+S: Supported -+W: https://01.org/linux-acpi -+Q: https://patchwork.kernel.org/project/linux-acpi/list/ -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm -+F: Documentation/ABI/testing/configfs-acpi -+F: Documentation/ABI/testing/sysfs-bus-acpi -+F: Documentation/firmware-guide/acpi/ -+F: drivers/acpi/ -+F: drivers/pci/*/*acpi* -+F: drivers/pci/*acpi* -+F: drivers/pnp/pnpacpi/ -+F: include/acpi/ -+F: include/linux/acpi.h -+F: include/linux/fwnode.h -+F: tools/power/acpi/ -+ -+ACPI APEI -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Len Brown <lenb@kernel.org> -+R: James Morse <james.morse@arm.com> -+R: Tony Luck <tony.luck@intel.com> -+R: Borislav Petkov <bp@alien8.de> -+L: linux-acpi@vger.kernel.org -+F: drivers/acpi/apei/ -+ -+ACPI COMPONENT ARCHITECTURE (ACPICA) -+M: Robert Moore <robert.moore@intel.com> -+M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com> -+L: linux-acpi@vger.kernel.org -+L: devel@acpica.org -+S: Supported -+W: https://acpica.org/ -+W: https://github.com/acpica/acpica/ -+Q: https://patchwork.kernel.org/project/linux-acpi/list/ -+B: https://bugzilla.kernel.org -+B: https://bugs.acpica.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm -+F: drivers/acpi/acpica/ -+F: include/acpi/ -+F: tools/power/acpi/ -+ -+ACPI FAN DRIVER -+M: Zhang Rui <rui.zhang@intel.com> -+L: linux-acpi@vger.kernel.org -+S: Supported -+W: https://01.org/linux-acpi -+B: https://bugzilla.kernel.org -+F: drivers/acpi/fan.c -+ -+ACPI FOR ARM64 (ACPI/arm64) -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+M: Hanjun Guo <guohanjun@huawei.com> -+M: Sudeep Holla <sudeep.holla@arm.com> -+L: linux-acpi@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/acpi/arm64 -+ -+ACPI I2C MULTI INSTANTIATE DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/i2c-multi-instantiate.c -+ -+ACPI PMIC DRIVERS -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Len Brown <lenb@kernel.org> -+R: Andy Shevchenko <andy@kernel.org> -+R: Mika Westerberg <mika.westerberg@linux.intel.com> -+L: linux-acpi@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-acpi/list/ -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm -+F: drivers/acpi/pmic/ -+ -+ACPI THERMAL DRIVER -+M: Rafael J. Wysocki <rafael@kernel.org> -+R: Zhang Rui <rui.zhang@intel.com> -+L: linux-acpi@vger.kernel.org -+S: Supported -+W: https://01.org/linux-acpi -+B: https://bugzilla.kernel.org -+F: drivers/acpi/*thermal* -+ -+ACPI VIDEO DRIVER -+M: Zhang Rui <rui.zhang@intel.com> -+L: linux-acpi@vger.kernel.org -+S: Supported -+W: https://01.org/linux-acpi -+B: https://bugzilla.kernel.org -+F: drivers/acpi/acpi_video.c -+ -+ACPI VIOT DRIVER -+M: Jean-Philippe Brucker <jean-philippe@linaro.org> -+L: linux-acpi@vger.kernel.org -+L: iommu@lists.linux-foundation.org -+S: Maintained -+F: drivers/acpi/viot.c -+F: include/linux/acpi_viot.h -+ -+ACPI WMI DRIVER -+L: platform-driver-x86@vger.kernel.org -+S: Orphan -+F: drivers/platform/x86/wmi.c -+F: include/uapi/linux/wmi.h -+ -+ACRN HYPERVISOR SERVICE MODULE -+M: Fei Li <fei1.li@intel.com> -+L: acrn-dev@lists.projectacrn.org (subscribers-only) -+S: Supported -+W: https://projectacrn.org -+F: Documentation/virt/acrn/ -+F: drivers/virt/acrn/ -+F: include/uapi/linux/acrn.h -+ -+AD1889 ALSA SOUND DRIVER -+L: linux-parisc@vger.kernel.org -+S: Maintained -+W: https://parisc.wiki.kernel.org/index.php/AD1889 -+F: sound/pci/ad1889.* -+ -+AD5110 ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER -+M: Mugilraj Dhavachelvan <dmugil2000@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: drivers/iio/potentiometer/ad5110.c -+ -+AD525X ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/AD5254 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/misc/ad525x_dpot.c -+ -+AD5398 CURRENT REGULATOR DRIVER (AD5398/AD5821) -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/AD5398 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/regulator/ad5398.c -+ -+AD714X CAPACITANCE TOUCH SENSOR DRIVER (AD7142/3/7/8/7A) -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/AD7142 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/input/misc/ad714x.c -+ -+AD7877 TOUCHSCREEN DRIVER -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/AD7877 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/input/touchscreen/ad7877.c -+ -+AD7879 TOUCHSCREEN DRIVER (AD7879/AD7889) -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/AD7879 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/input/touchscreen/ad7879.c -+ -+ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR) -+M: Jiri Kosina <jikos@kernel.org> -+S: Maintained -+ -+ADF7242 IEEE 802.15.4 RADIO DRIVER -+M: Michael Hennerich <michael.hennerich@analog.com> -+L: linux-wpan@vger.kernel.org -+S: Supported -+W: https://wiki.analog.com/ADF7242 -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/net/ieee802154/adf7242.txt -+F: drivers/net/ieee802154/adf7242.c -+ -+ADM1025 HARDWARE MONITOR DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/adm1025.rst -+F: drivers/hwmon/adm1025.c -+ -+ADM1029 HARDWARE MONITOR DRIVER -+M: Corentin Labbe <clabbe.montjoie@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/adm1029.c -+ -+ADM8211 WIRELESS DRIVER -+L: linux-wireless@vger.kernel.org -+S: Orphan -+W: https://wireless.wiki.kernel.org/ -+F: drivers/net/wireless/admtek/adm8211.* -+ -+ADP1653 FLASH CONTROLLER DRIVER -+M: Sakari Ailus <sakari.ailus@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/adp1653.c -+F: include/media/i2c/adp1653.h -+ -+ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501) -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/ADP5520 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/gpio/gpio-adp5520.c -+F: drivers/input/keyboard/adp5520-keys.c -+F: drivers/leds/leds-adp5520.c -+F: drivers/mfd/adp5520.c -+F: drivers/video/backlight/adp5520_bl.c -+ -+ADP5588 QWERTY KEYPAD AND IO EXPANDER DRIVER (ADP5588/ADP5587) -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/ADP5588 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/gpio/gpio-adp5588.c -+F: drivers/input/keyboard/adp5588-keys.c -+ -+ADP8860 BACKLIGHT DRIVER (ADP8860/ADP8861/ADP8863) -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/ADP8860 -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/video/backlight/adp8860_bl.c -+ -+ADT746X FAN DRIVER -+M: Colin Leroy <colin@colino.net> -+S: Maintained -+F: drivers/macintosh/therm_adt746x.c -+ -+ADT7475 HARDWARE MONITOR DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/adt7475.rst -+F: drivers/hwmon/adt7475.c -+ -+ADVANSYS SCSI DRIVER -+M: Matthew Wilcox <willy@infradead.org> -+M: Hannes Reinecke <hare@suse.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: Documentation/scsi/advansys.rst -+F: drivers/scsi/advansys.c -+ -+ADVANTECH SWBTN DRIVER -+M: Andrea Ho <Andrea.Ho@advantech.com.tw> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/adv_swbutton.c -+ -+ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346) -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/ADXL345 -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/accel/adi,adxl345.yaml -+F: drivers/input/misc/adxl34x.c -+ -+ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER -+M: Michael Hennerich <michael.hennerich@analog.com> -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml -+F: drivers/iio/accel/adxl372.c -+F: drivers/iio/accel/adxl372_i2c.c -+F: drivers/iio/accel/adxl372_spi.c -+ -+AF9013 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/af9013* -+ -+AF9033 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/af9033* -+ -+AFFS FILE SYSTEM -+M: David Sterba <dsterba@suse.com> -+L: linux-fsdevel@vger.kernel.org -+S: Odd Fixes -+F: Documentation/filesystems/affs.rst -+F: fs/affs/ -+ -+AFS FILESYSTEM -+M: David Howells <dhowells@redhat.com> -+M: Marc Dionne <marc.dionne@auristor.com> -+L: linux-afs@lists.infradead.org -+S: Supported -+W: https://www.infradead.org/~dhowells/kafs/ -+F: Documentation/filesystems/afs.rst -+F: fs/afs/ -+F: include/trace/events/afs.h -+ -+AGPGART DRIVER -+M: David Airlie <airlied@linux.ie> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm -+F: drivers/char/agp/ -+F: include/linux/agp* -+F: include/uapi/linux/agp* -+ -+AHA152X SCSI DRIVER -+M: "Juergen E. Fischer" <fischer@norbit.de> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/aha152x* -+F: drivers/scsi/pcmcia/aha152x* -+ -+AIC7XXX / AIC79XX SCSI DRIVER -+M: Hannes Reinecke <hare@suse.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/aic7xxx/ -+ -+AIMSLAB FM RADIO RECEIVER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-aimslab* -+ -+AIO -+M: Benjamin LaHaise <bcrl@kvack.org> -+L: linux-aio@kvack.org -+S: Supported -+F: fs/aio.c -+F: include/linux/*aio*.h -+ -+AIRSPY MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/airspy/ -+ -+ALACRITECH GIGABIT ETHERNET DRIVER -+M: Lino Sanfilippo <LinoSanfilippo@gmx.de> -+S: Maintained -+F: drivers/net/ethernet/alacritech/* -+ -+ALCATEL SPEEDTOUCH USB DRIVER -+M: Duncan Sands <duncan.sands@free.fr> -+L: linux-usb@vger.kernel.org -+S: Maintained -+W: http://www.linux-usb.org/SpeedTouch/ -+F: drivers/usb/atm/speedtch.c -+F: drivers/usb/atm/usbatm.c -+ -+ALCHEMY AU1XX0 MMC DRIVER -+M: Manuel Lauss <manuel.lauss@gmail.com> -+S: Maintained -+F: drivers/mmc/host/au1xmmc.c -+ -+ALI1563 I2C DRIVER -+M: Rudolf Marek <r.marek@assembler.cz> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/i2c/busses/i2c-ali1563.rst -+F: drivers/i2c/busses/i2c-ali1563.c -+ -+ALIENWARE WMI DRIVER -+L: Dell.Client.Kernel@dell.com -+S: Maintained -+F: drivers/platform/x86/dell/alienware-wmi.c -+ -+ALL SENSORS DLH SERIES PRESSURE SENSORS DRIVER -+M: Tomislav Denis <tomislav.denis@avl.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+W: http://www.allsensors.com/ -+F: Documentation/devicetree/bindings/iio/pressure/asc,dlhl60d.yaml -+F: drivers/iio/pressure/dlhl60d.c -+ -+ALLEGRO DVT VIDEO IP CORE DRIVER -+M: Michael Tretter <m.tretter@pengutronix.de> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/allegro,al5e.yaml -+F: drivers/media/platform/allegro-dvt/ -+ -+ALLWINNER A10 CSI DRIVER -+M: Maxime Ripard <mripard@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml -+F: drivers/media/platform/sunxi/sun4i-csi/ -+ -+ALLWINNER CPUFREQ DRIVER -+M: Yangtao Li <tiny.windzz@gmail.com> -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/opp/allwinner,sun50i-h6-operating-points.yaml -+F: drivers/cpufreq/sun50i-cpufreq-nvmem.c -+ -+ALLWINNER CRYPTO DRIVERS -+M: Corentin Labbe <clabbe.montjoie@gmail.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: drivers/crypto/allwinner/ -+ -+ALLWINNER HARDWARE SPINLOCK SUPPORT -+M: Wilken Gottwalt <wilken.gottwalt@posteo.net> -+S: Maintained -+F: Documentation/devicetree/bindings/hwlock/allwinner,sun6i-hwspinlock.yaml -+F: drivers/hwspinlock/sun6i_hwspinlock.c -+ -+ALLWINNER THERMAL DRIVER -+M: Vasily Khoruzhick <anarsoul@gmail.com> -+M: Yangtao Li <tiny.windzz@gmail.com> -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/thermal/allwinner,sun8i-a83t-ths.yaml -+F: drivers/thermal/sun8i_thermal.c -+ -+ALLWINNER VPU DRIVER -+M: Maxime Ripard <mripard@kernel.org> -+M: Paul Kocialkowski <paul.kocialkowski@bootlin.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/staging/media/sunxi/cedrus/ -+ -+ALPHA PORT -+M: Richard Henderson <rth@twiddle.net> -+M: Ivan Kokshaysky <ink@jurassic.park.msu.ru> -+M: Matt Turner <mattst88@gmail.com> -+L: linux-alpha@vger.kernel.org -+S: Odd Fixes -+F: arch/alpha/ -+ -+ALPS PS/2 TOUCHPAD DRIVER -+R: Pali Rohár <pali@kernel.org> -+F: drivers/input/mouse/alps.* -+ -+ALTERA I2C CONTROLLER DRIVER -+M: Thor Thayer <thor.thayer@linux.intel.com> -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-altera.txt -+F: drivers/i2c/busses/i2c-altera.c -+ -+ALTERA MAILBOX DRIVER -+M: Joyce Ooi <joyce.ooi@intel.com> -+S: Maintained -+F: drivers/mailbox/mailbox-altera.c -+ -+ALTERA MSGDMA IP CORE DRIVER -+M: Olivier Dautricourt <olivier.dautricourt@orolia.com> -+R: Stefan Roese <sr@denx.de> -+L: dmaengine@vger.kernel.org -+S: Odd Fixes -+F: Documentation/devicetree/bindings/dma/altr,msgdma.yaml -+F: drivers/dma/altera-msgdma.c -+ -+ALTERA PIO DRIVER -+M: Mun Yew Tham <mun.yew.tham@intel.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-altera.c -+ -+ALTERA SYSTEM MANAGER DRIVER -+M: Thor Thayer <thor.thayer@linux.intel.com> -+S: Maintained -+F: drivers/mfd/altera-sysmgr.c -+F: include/linux/mfd/altera-sysmgr.h -+ -+ALTERA SYSTEM RESOURCE DRIVER FOR ARRIA10 DEVKIT -+M: Thor Thayer <thor.thayer@linux.intel.com> -+S: Maintained -+F: drivers/gpio/gpio-altera-a10sr.c -+F: drivers/mfd/altera-a10sr.c -+F: drivers/reset/reset-a10sr.c -+F: include/dt-bindings/reset/altr,rst-mgr-a10sr.h -+F: include/linux/mfd/altera-a10sr.h -+ -+ALTERA TRIPLE SPEED ETHERNET DRIVER -+M: Joyce Ooi <joyce.ooi@intel.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/altera/ -+ -+ALTERA UART/JTAG UART SERIAL DRIVERS -+M: Tobias Klauser <tklauser@distanz.ch> -+L: linux-serial@vger.kernel.org -+S: Maintained -+F: drivers/tty/serial/altera_jtaguart.c -+F: drivers/tty/serial/altera_uart.c -+F: include/linux/altera_jtaguart.h -+F: include/linux/altera_uart.h -+ -+AMAZON ANNAPURNA LABS FIC DRIVER -+M: Talel Shenhar <talel@amazon.com> -+S: Maintained -+F: Documentation/devicetree/bindings/interrupt-controller/amazon,al-fic.txt -+F: drivers/irqchip/irq-al-fic.c -+ -+AMAZON ANNAPURNA LABS MEMORY CONTROLLER EDAC -+M: Talel Shenhar <talel@amazon.com> -+M: Talel Shenhar <talelshenhar@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/edac/amazon,al-mc-edac.yaml -+F: drivers/edac/al_mc_edac.c -+ -+AMAZON ANNAPURNA LABS THERMAL MMIO DRIVER -+M: Talel Shenhar <talel@amazon.com> -+S: Maintained -+F: Documentation/devicetree/bindings/thermal/amazon,al-thermal.txt -+F: drivers/thermal/thermal_mmio.c -+ -+AMAZON ETHERNET DRIVERS -+M: Netanel Belgazal <netanel@amazon.com> -+M: Arthur Kiyanovski <akiyano@amazon.com> -+R: Guy Tzalik <gtzalik@amazon.com> -+R: Saeed Bishara <saeedb@amazon.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/device_drivers/ethernet/amazon/ena.rst -+F: drivers/net/ethernet/amazon/ -+ -+AMAZON RDMA EFA DRIVER -+M: Gal Pressman <galpress@amazon.com> -+R: Yossi Leybovich <sleybo@amazon.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-rdma/list/ -+F: drivers/infiniband/hw/efa/ -+F: include/uapi/rdma/efa-abi.h -+ -+AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER -+M: Tom Lendacky <thomas.lendacky@amd.com> -+M: John Allen <john.allen@amd.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+F: drivers/crypto/ccp/ -+F: include/linux/ccp.h -+ -+AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER - SEV SUPPORT -+M: Brijesh Singh <brijesh.singh@amd.com> -+M: Tom Lendacky <thomas.lendacky@amd.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+F: drivers/crypto/ccp/sev* -+F: include/uapi/linux/psp-sev.h -+ -+AMD DISPLAY CORE -+M: Harry Wentland <harry.wentland@amd.com> -+M: Leo Li <sunpeng.li@amd.com> -+L: amd-gfx@lists.freedesktop.org -+S: Supported -+T: git https://gitlab.freedesktop.org/agd5f/linux.git -+F: drivers/gpu/drm/amd/display/ -+ -+AMD FAM15H PROCESSOR POWER MONITORING DRIVER -+M: Huang Rui <ray.huang@amd.com> -+L: linux-hwmon@vger.kernel.org -+S: Supported -+F: Documentation/hwmon/fam15h_power.rst -+F: drivers/hwmon/fam15h_power.c -+ -+AMD FCH GPIO DRIVER -+M: Enrico Weigelt, metux IT consult <info@metux.net> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-amd-fch.c -+F: include/linux/platform_data/gpio/gpio-amd-fch.h -+ -+AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER -+L: linux-geode@lists.infradead.org (moderated for non-subscribers) -+S: Orphan -+F: drivers/usb/gadget/udc/amd5536udc.* -+ -+AMD GEODE PROCESSOR/CHIPSET SUPPORT -+M: Andres Salomon <dilinger@queued.net> -+L: linux-geode@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html -+F: arch/x86/include/asm/geode.h -+F: drivers/char/hw_random/geode-rng.c -+F: drivers/crypto/geode* -+F: drivers/video/fbdev/geode/ -+ -+AMD IOMMU (AMD-VI) -+M: Joerg Roedel <joro@8bytes.org> -+R: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> -+L: iommu@lists.linux-foundation.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git -+F: drivers/iommu/amd/ -+F: include/linux/amd-iommu.h -+ -+AMD KFD -+M: Felix Kuehling <Felix.Kuehling@amd.com> -+L: amd-gfx@lists.freedesktop.org -+S: Supported -+T: git https://gitlab.freedesktop.org/agd5f/linux.git -+F: drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd*.[ch] -+F: drivers/gpu/drm/amd/amdkfd/ -+F: drivers/gpu/drm/amd/include/cik_structs.h -+F: drivers/gpu/drm/amd/include/kgd_kfd_interface.h -+F: drivers/gpu/drm/amd/include/v9_structs.h -+F: drivers/gpu/drm/amd/include/vi_structs.h -+F: include/uapi/linux/kfd_ioctl.h -+ -+AMD SPI DRIVER -+M: Sanjay R Mehta <sanju.mehta@amd.com> -+S: Maintained -+F: drivers/spi/spi-amd.c -+ -+AMD MP2 I2C DRIVER -+M: Elie Morisse <syniurge@gmail.com> -+M: Nehal Shah <nehal-bakulchandra.shah@amd.com> -+M: Shyam Sundar S K <shyam-sundar.s-k@amd.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/busses/i2c-amd-mp2* -+ -+AMD PMC DRIVER -+M: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/amd-pmc.* -+ -+AMD POWERPLAY AND SWSMU -+M: Evan Quan <evan.quan@amd.com> -+L: amd-gfx@lists.freedesktop.org -+S: Supported -+T: git https://gitlab.freedesktop.org/agd5f/linux.git -+F: drivers/gpu/drm/amd/pm/ -+ -+AMD PTDMA DRIVER -+M: Sanjay R Mehta <sanju.mehta@amd.com> -+L: dmaengine@vger.kernel.org -+S: Maintained -+F: drivers/dma/ptdma/ -+ -+AMD SEATTLE DEVICE TREE SUPPORT -+M: Brijesh Singh <brijeshkumar.singh@amd.com> -+M: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> -+M: Tom Lendacky <thomas.lendacky@amd.com> -+S: Supported -+F: arch/arm64/boot/dts/amd/ -+ -+AMD XGBE DRIVER -+M: Tom Lendacky <thomas.lendacky@amd.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi -+F: drivers/net/ethernet/amd/xgbe/ -+ -+AMD SENSOR FUSION HUB DRIVER -+M: Nehal Shah <nehal-bakulchandra.shah@amd.com> -+M: Basavaraj Natikar <basavaraj.natikar@amd.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: Documentation/hid/amd-sfh* -+F: drivers/hid/amd-sfh-hid/ -+ -+AMS AS73211 DRIVER -+M: Christian Eggers <ceggers@arri.de> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/light/ams,as73211.yaml -+F: drivers/iio/light/as73211.c -+ -+ANALOG DEVICES INC AD7192 DRIVER -+M: Alexandru Tachici <alexandru.tachici@analog.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/adc/adi,ad7192.yaml -+F: drivers/iio/adc/ad7192.c -+ -+ANALOG DEVICES INC AD7292 DRIVER -+M: Marcelo Schmitt <marcelo.schmitt1@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml -+F: drivers/iio/adc/ad7292.c -+ -+ANALOG DEVICES INC AD7768-1 DRIVER -+M: Michael Hennerich <Michael.Hennerich@analog.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.yaml -+F: drivers/iio/adc/ad7768-1.c -+ -+ANALOG DEVICES INC AD7780 DRIVER -+M: Michael Hennerich <Michael.Hennerich@analog.com> -+M: Renato Lui Geh <renatogeh@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/adc/adi,ad7780.yaml -+F: drivers/iio/adc/ad7780.c -+ -+ANALOG DEVICES INC AD9389B DRIVER -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/ad9389b* -+ -+ANALOG DEVICES INC ADGS1408 DRIVER -+M: Mircea Caprioru <mircea.caprioru@analog.com> -+S: Supported -+F: Documentation/devicetree/bindings/mux/adi,adgs1408.txt -+F: drivers/mux/adgs1408.c -+ -+ANALOG DEVICES INC ADIN DRIVER -+M: Michael Hennerich <michael.hennerich@analog.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/net/adi,adin.yaml -+F: drivers/net/phy/adin.c -+ -+ANALOG DEVICES INC ADIS DRIVER LIBRARY -+M: Nuno Sa <nuno.sa@analog.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: drivers/iio/imu/adis.c -+F: include/linux/iio/imu/adis.h -+ -+ANALOG DEVICES INC ADIS16460 DRIVER -+M: Dragos Bogdan <dragos.bogdan@analog.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/imu/adi,adis16460.yaml -+F: drivers/iio/imu/adis16460.c -+ -+ANALOG DEVICES INC ADIS16475 DRIVER -+M: Nuno Sa <nuno.sa@analog.com> -+L: linux-iio@vger.kernel.org -+W: http://ez.analog.com/community/linux-device-drivers -+S: Supported -+F: drivers/iio/imu/adis16475.c -+F: Documentation/devicetree/bindings/iio/imu/adi,adis16475.yaml -+ -+ANALOG DEVICES INC ADM1177 DRIVER -+M: Michael Hennerich <Michael.Hennerich@analog.com> -+L: linux-hwmon@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/hwmon/adi,adm1177.yaml -+F: drivers/hwmon/adm1177.c -+ -+ANALOG DEVICES INC ADP5061 DRIVER -+M: Michael Hennerich <Michael.Hennerich@analog.com> -+L: linux-pm@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/power/supply/adp5061.c -+ -+ANALOG DEVICES INC ADV7180 DRIVER -+M: Lars-Peter Clausen <lars@metafoo.de> -+L: linux-media@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/media/i2c/adv7180.c -+F: Documentation/devicetree/bindings/media/i2c/adv7180.yaml -+ -+ANALOG DEVICES INC ADV748X DRIVER -+M: Kieran Bingham <kieran.bingham@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/adv748x/* -+ -+ANALOG DEVICES INC ADV7511 DRIVER -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/adv7511* -+ -+ANALOG DEVICES INC ADV7604 DRIVER -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/adv7604* -+F: Documentation/devicetree/bindings/media/i2c/adv7604.yaml -+ -+ANALOG DEVICES INC ADV7842 DRIVER -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/adv7842* -+ -+ANALOG DEVICES INC ADXRS290 DRIVER -+M: Nishant Malpani <nish.malpani25@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: drivers/iio/gyro/adxrs290.c -+F: Documentation/devicetree/bindings/iio/gyroscope/adi,adxrs290.yaml -+ -+ANALOG DEVICES INC ASOC CODEC DRIVERS -+M: Lars-Peter Clausen <lars@metafoo.de> -+M: Nuno Sá <nuno.sa@analog.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+W: http://wiki.analog.com/ -+W: http://ez.analog.com/community/linux-device-drivers -+F: sound/soc/codecs/ad1* -+F: sound/soc/codecs/ad7* -+F: sound/soc/codecs/adau* -+F: sound/soc/codecs/adav* -+F: sound/soc/codecs/sigmadsp.* -+F: sound/soc/codecs/ssm* -+ -+ANALOG DEVICES INC DMA DRIVERS -+M: Lars-Peter Clausen <lars@metafoo.de> -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: drivers/dma/dma-axi-dmac.c -+ -+ANALOG DEVICES INC IIO DRIVERS -+M: Lars-Peter Clausen <lars@metafoo.de> -+M: Michael Hennerich <Michael.Hennerich@analog.com> -+S: Supported -+W: http://wiki.analog.com/ -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 -+F: Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 -+F: Documentation/devicetree/bindings/iio/*/adi,* -+F: Documentation/devicetree/bindings/iio/dac/adi,ad5758.yaml -+F: drivers/iio/*/ad* -+F: drivers/iio/adc/ltc249* -+F: drivers/iio/amplifiers/hmc425a.c -+F: drivers/staging/iio/*/ad* -+X: drivers/iio/*/adjd* -+ -+ANALOGBITS PLL LIBRARIES -+M: Paul Walmsley <paul.walmsley@sifive.com> -+S: Supported -+F: drivers/clk/analogbits/* -+F: include/linux/clk/analogbits* -+ -+ANDES ARCHITECTURE -+M: Nick Hu <nickhu@andestech.com> -+M: Greentime Hu <green.hu@gmail.com> -+M: Vincent Chen <deanbo422@gmail.com> -+S: Supported -+T: git https://git.kernel.org/pub/scm/linux/kernel/git/greentime/linux.git -+F: Documentation/devicetree/bindings/interrupt-controller/andestech,ativic32.txt -+F: Documentation/devicetree/bindings/nds32/ -+F: arch/nds32/ -+N: nds32 -+K: nds32 -+ -+ANDROID CONFIG FRAGMENTS -+M: Rob Herring <robh@kernel.org> -+S: Supported -+F: kernel/configs/android* -+ -+ANDROID DRIVERS -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+M: Arve Hjønnevåg <arve@android.com> -+M: Todd Kjos <tkjos@android.com> -+M: Martijn Coenen <maco@android.com> -+M: Joel Fernandes <joel@joelfernandes.org> -+M: Christian Brauner <christian@brauner.io> -+M: Hridya Valsaraju <hridya@google.com> -+M: Suren Baghdasaryan <surenb@google.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git -+F: drivers/android/ -+F: drivers/staging/android/ -+ -+ANDROID GOLDFISH PIC DRIVER -+M: Miodrag Dinic <miodrag.dinic@mips.com> -+S: Supported -+F: Documentation/devicetree/bindings/interrupt-controller/google,goldfish-pic.txt -+F: drivers/irqchip/irq-goldfish-pic.c -+ -+ANDROID GOLDFISH RTC DRIVER -+M: Jiaxun Yang <jiaxun.yang@flygoat.com> -+S: Supported -+F: Documentation/devicetree/bindings/rtc/google,goldfish-rtc.txt -+F: drivers/rtc/rtc-goldfish.c -+ -+AOA (Apple Onboard Audio) ALSA DRIVER -+M: Johannes Berg <johannes@sipsolutions.net> -+L: linuxppc-dev@lists.ozlabs.org -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: sound/aoa/ -+ -+APEX EMBEDDED SYSTEMS STX104 IIO DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: drivers/iio/adc/stx104.c -+ -+APM DRIVER -+M: Jiri Kosina <jikos@kernel.org> -+S: Odd fixes -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/apm.git -+F: arch/x86/kernel/apm_32.c -+F: drivers/char/apm-emulation.c -+F: include/linux/apm_bios.h -+F: include/uapi/linux/apm_bios.h -+ -+APPARMOR SECURITY MODULE -+M: John Johansen <john.johansen@canonical.com> -+L: apparmor@lists.ubuntu.com (subscribers-only, general discussion) -+S: Supported -+W: wiki.apparmor.net -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor -+F: Documentation/admin-guide/LSM/apparmor.rst -+F: security/apparmor/ -+ -+APPLE BCM5974 MULTITOUCH DRIVER -+M: Henrik Rydberg <rydberg@bitmath.org> -+L: linux-input@vger.kernel.org -+S: Odd fixes -+F: drivers/input/mouse/bcm5974.c -+ -+APPLE DART IOMMU DRIVER -+M: Sven Peter <sven@svenpeter.dev> -+R: Alyssa Rosenzweig <alyssa@rosenzweig.io> -+L: iommu@lists.linux-foundation.org -+S: Maintained -+F: Documentation/devicetree/bindings/iommu/apple,dart.yaml -+F: drivers/iommu/apple-dart.c -+ -+APPLE SMC DRIVER -+M: Henrik Rydberg <rydberg@bitmath.org> -+L: linux-hwmon@vger.kernel.org -+S: Odd fixes -+F: drivers/hwmon/applesmc.c -+ -+APPLETALK NETWORK LAYER -+L: netdev@vger.kernel.org -+S: Odd fixes -+F: drivers/net/appletalk/ -+F: include/linux/atalk.h -+F: include/uapi/linux/atalk.h -+F: net/appletalk/ -+ -+APPLIED MICRO (APM) X-GENE DEVICE TREE SUPPORT -+M: Khuong Dinh <khuong@os.amperecomputing.com> -+S: Supported -+F: arch/arm64/boot/dts/apm/ -+ -+APPLIED MICRO (APM) X-GENE SOC EDAC -+M: Khuong Dinh <khuong@os.amperecomputing.com> -+S: Supported -+F: Documentation/devicetree/bindings/edac/apm-xgene-edac.txt -+F: drivers/edac/xgene_edac.c -+ -+APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER -+M: Iyappan Subramanian <iyappan@os.amperecomputing.com> -+M: Keyur Chudgar <keyur@os.amperecomputing.com> -+S: Supported -+F: drivers/net/ethernet/apm/xgene-v2/ -+ -+APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER -+M: Iyappan Subramanian <iyappan@os.amperecomputing.com> -+M: Keyur Chudgar <keyur@os.amperecomputing.com> -+M: Quan Nguyen <quan@os.amperecomputing.com> -+S: Supported -+F: Documentation/devicetree/bindings/net/apm-xgene-enet.txt -+F: Documentation/devicetree/bindings/net/apm-xgene-mdio.txt -+F: drivers/net/ethernet/apm/xgene/ -+F: drivers/net/mdio/mdio-xgene.c -+ -+APPLIED MICRO (APM) X-GENE SOC PMU -+M: Khuong Dinh <khuong@os.amperecomputing.com> -+S: Supported -+F: Documentation/admin-guide/perf/xgene-pmu.rst -+F: Documentation/devicetree/bindings/perf/apm-xgene-pmu.txt -+F: drivers/perf/xgene_pmu.c -+ -+APTINA CAMERA SENSOR PLL -+M: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/aptina-pll.* -+ -+AQUACOMPUTER D5 NEXT PUMP SENSOR DRIVER -+M: Aleksa Savic <savicaleksa83@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/aquacomputer_d5next.rst -+F: drivers/hwmon/aquacomputer_d5next.c -+ -+AQUANTIA ETHERNET DRIVER (atlantic) -+M: Igor Russkikh <irusskikh@marvell.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: https://www.marvell.com/ -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: Documentation/networking/device_drivers/ethernet/aquantia/atlantic.rst -+F: drivers/net/ethernet/aquantia/atlantic/ -+ -+AQUANTIA ETHERNET DRIVER PTP SUBSYSTEM -+M: Egor Pomozov <epomozov@marvell.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.aquantia.com -+F: drivers/net/ethernet/aquantia/atlantic/aq_ptp* -+ -+ARASAN NAND CONTROLLER DRIVER -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+M: Naga Sureshkumar Relli <nagasure@xilinx.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/mtd/arasan,nand-controller.yaml -+F: drivers/mtd/nand/raw/arasan-nand-controller.c -+ -+ARC FRAMEBUFFER DRIVER -+M: Jaya Kumar <jayalk@intworks.biz> -+S: Maintained -+F: drivers/video/fbdev/arcfb.c -+F: drivers/video/fbdev/core/fb_defio.c -+ -+ARC PGU DRM DRIVER -+M: Alexey Brodkin <abrodkin@synopsys.com> -+S: Supported -+F: Documentation/devicetree/bindings/display/snps,arcpgu.txt -+F: drivers/gpu/drm/tiny/arcpgu.c -+ -+ARCNET NETWORK LAYER -+M: Michael Grzeschik <m.grzeschik@pengutronix.de> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/arcnet/ -+F: include/uapi/linux/if_arcnet.h -+ -+ARM ARCHITECTED TIMER DRIVER -+M: Mark Rutland <mark.rutland@arm.com> -+M: Marc Zyngier <maz@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/include/asm/arch_timer.h -+F: arch/arm64/include/asm/arch_timer.h -+F: drivers/clocksource/arm_arch_timer.c -+ -+ARM HDLCD DRM DRIVER -+M: Liviu Dudau <liviu.dudau@arm.com> -+S: Supported -+F: Documentation/devicetree/bindings/display/arm,hdlcd.txt -+F: drivers/gpu/drm/arm/hdlcd_* -+ -+ARM INTEGRATOR, VERSATILE AND REALVIEW SUPPORT -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/arm,integrator.yaml -+F: Documentation/devicetree/bindings/arm/arm,realview.yaml -+F: Documentation/devicetree/bindings/arm/arm,versatile.yaml -+F: Documentation/devicetree/bindings/arm/arm,vexpress-juno.yaml -+F: Documentation/devicetree/bindings/auxdisplay/arm,versatile-lcd.yaml -+F: Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml -+F: Documentation/devicetree/bindings/i2c/i2c-versatile.txt -+F: Documentation/devicetree/bindings/interrupt-controller/arm,versatile-fpga-irq.txt -+F: Documentation/devicetree/bindings/mtd/arm-versatile.txt -+F: arch/arm/boot/dts/arm-realview-* -+F: arch/arm/boot/dts/integrator* -+F: arch/arm/boot/dts/versatile* -+F: arch/arm/mach-integrator/ -+F: arch/arm/mach-realview/ -+F: arch/arm/mach-versatile/ -+F: arch/arm/plat-versatile/ -+F: drivers/bus/arm-integrator-lm.c -+F: drivers/clk/versatile/ -+F: drivers/i2c/busses/i2c-versatile.c -+F: drivers/irqchip/irq-versatile-fpga.c -+F: drivers/mtd/maps/physmap-versatile.* -+F: drivers/power/reset/arm-versatile-reboot.c -+F: drivers/soc/versatile/ -+ -+ARM KOMEDA DRM-KMS DRIVER -+M: James (Qian) Wang <james.qian.wang@arm.com> -+M: Liviu Dudau <liviu.dudau@arm.com> -+M: Mihail Atanassov <mihail.atanassov@arm.com> -+L: Mali DP Maintainers <malidp@foss.arm.com> -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/arm,komeda.txt -+F: Documentation/gpu/komeda-kms.rst -+F: drivers/gpu/drm/arm/display/include/ -+F: drivers/gpu/drm/arm/display/komeda/ -+ -+ARM MALI PANFROST DRM DRIVER -+M: Rob Herring <robh@kernel.org> -+M: Tomeu Vizoso <tomeu.vizoso@collabora.com> -+R: Steven Price <steven.price@arm.com> -+R: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/panfrost/ -+F: include/uapi/drm/panfrost_drm.h -+ -+ARM MALI-DP DRM DRIVER -+M: Liviu Dudau <liviu.dudau@arm.com> -+M: Brian Starkey <brian.starkey@arm.com> -+L: Mali DP Maintainers <malidp@foss.arm.com> -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/arm,malidp.txt -+F: Documentation/gpu/afbc.rst -+F: drivers/gpu/drm/arm/ -+ -+ARM MFM AND FLOPPY DRIVERS -+M: Ian Molton <spyro@f2s.com> -+S: Maintained -+F: arch/arm/include/asm/floppy.h -+F: arch/arm/mach-rpc/floppydma.S -+ -+ARM PMU PROFILING AND DEBUGGING -+M: Will Deacon <will@kernel.org> -+M: Mark Rutland <mark.rutland@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/pmu.yaml -+F: Documentation/devicetree/bindings/perf/ -+F: arch/arm*/include/asm/hw_breakpoint.h -+F: arch/arm*/include/asm/perf_event.h -+F: arch/arm*/kernel/hw_breakpoint.c -+F: arch/arm*/kernel/perf_* -+F: drivers/perf/ -+F: include/linux/perf/arm_pmu.h -+ -+ARM PORT -+M: Russell King <linux@armlinux.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Odd Fixes -+W: http://www.armlinux.org.uk/ -+T: git git://git.armlinux.org.uk/~rmk/linux-arm.git -+F: arch/arm/ -+X: arch/arm/boot/dts/ -+ -+ARM PRIMECELL AACI PL041 DRIVER -+M: Russell King <linux@armlinux.org.uk> -+S: Odd Fixes -+F: sound/arm/aaci.* -+ -+ARM PRIMECELL BUS SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+S: Odd Fixes -+F: drivers/amba/ -+F: include/linux/amba/bus.h -+ -+ARM PRIMECELL PL35X NAND CONTROLLER DRIVER -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+M: Naga Sureshkumar Relli <nagasure@xilinx.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/mtd/arm,pl353-nand-r2p1.yaml -+F: drivers/mtd/nand/raw/pl35x-nand-controller.c -+ -+ARM PRIMECELL PL35X SMC DRIVER -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+M: Naga Sureshkumar Relli <nagasure@xilinx.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/memory-controllers/arm,pl353-smc.yaml -+F: drivers/memory/pl353-smc.c -+ -+ARM PRIMECELL CLCD PL110 DRIVER -+M: Russell King <linux@armlinux.org.uk> -+S: Odd Fixes -+F: drivers/video/fbdev/amba-clcd.* -+ -+ARM PRIMECELL KMI PL050 DRIVER -+M: Russell King <linux@armlinux.org.uk> -+S: Odd Fixes -+F: drivers/input/serio/ambakmi.* -+F: include/linux/amba/kmi.h -+ -+ARM PRIMECELL MMCI PL180/1 DRIVER -+M: Russell King <linux@armlinux.org.uk> -+S: Odd Fixes -+F: drivers/mmc/host/mmci.* -+F: include/linux/amba/mmci.h -+ -+ARM PRIMECELL SSP PL022 SPI DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/spi/spi-pl022.yaml -+F: drivers/spi/spi-pl022.c -+ -+ARM PRIMECELL UART PL010 AND PL011 DRIVERS -+M: Russell King <linux@armlinux.org.uk> -+S: Odd Fixes -+F: drivers/tty/serial/amba-pl01*.c -+F: include/linux/amba/serial.h -+ -+ARM PRIMECELL VIC PL190/PL192 DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/interrupt-controller/arm,vic.txt -+F: drivers/irqchip/irq-vic.c -+ -+ARM SMC WATCHDOG DRIVER -+M: Julius Werner <jwerner@chromium.org> -+R: Evan Benn <evanbenn@chromium.org> -+S: Maintained -+F: Documentation/devicetree/bindings/watchdog/arm-smc-wdt.yaml -+F: drivers/watchdog/arm_smc_wdt.c -+ -+ARM SMMU DRIVERS -+M: Will Deacon <will@kernel.org> -+R: Robin Murphy <robin.murphy@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/iommu/arm,smmu* -+F: drivers/iommu/arm/ -+F: drivers/iommu/io-pgtable-arm* -+ -+ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS) -+M: Arnd Bergmann <arnd@arndb.de> -+M: Olof Johansson <olof@lixom.net> -+M: soc@kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git -+F: arch/arm/boot/dts/Makefile -+F: arch/arm64/boot/dts/Makefile -+ -+ARM SUB-ARCHITECTURES -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git -+F: arch/arm/mach-*/ -+F: arch/arm/plat-*/ -+ -+ARM/ACTIONS SEMI ARCHITECTURE -+M: Andreas Färber <afaerber@suse.de> -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-actions@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/actions.yaml -+F: Documentation/devicetree/bindings/clock/actions,owl-cmu.txt -+F: Documentation/devicetree/bindings/dma/owl-dma.yaml -+F: Documentation/devicetree/bindings/i2c/i2c-owl.yaml -+F: Documentation/devicetree/bindings/interrupt-controller/actions,owl-sirq.yaml -+F: Documentation/devicetree/bindings/mmc/owl-mmc.yaml -+F: Documentation/devicetree/bindings/net/actions,owl-emac.yaml -+F: Documentation/devicetree/bindings/pinctrl/actions,* -+F: Documentation/devicetree/bindings/power/actions,owl-sps.txt -+F: Documentation/devicetree/bindings/timer/actions,owl-timer.txt -+F: arch/arm/boot/dts/owl-* -+F: arch/arm/mach-actions/ -+F: arch/arm64/boot/dts/actions/ -+F: drivers/clk/actions/ -+F: drivers/clocksource/timer-owl* -+F: drivers/dma/owl-dma.c -+F: drivers/i2c/busses/i2c-owl.c -+F: drivers/irqchip/irq-owl-sirq.c -+F: drivers/mmc/host/owl-mmc.c -+F: drivers/net/ethernet/actions/ -+F: drivers/pinctrl/actions/* -+F: drivers/soc/actions/ -+F: include/dt-bindings/power/owl-* -+F: include/dt-bindings/reset/actions,* -+F: include/linux/soc/actions/ -+N: owl -+ -+ARM/ADS SPHERE MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/AFEB9260 MACHINE SUPPORT -+M: Sergey Lapin <slapin@ossfans.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/AJECO 1ARM MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/Allwinner SoC Clock Support -+M: Emilio López <emilio@elopez.com.ar> -+S: Maintained -+F: drivers/clk/sunxi/ -+ -+ARM/Allwinner sunXi SoC support -+M: Maxime Ripard <mripard@kernel.org> -+M: Chen-Yu Tsai <wens@csie.org> -+R: Jernej Skrabec <jernej.skrabec@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git -+L: linux-sunxi@lists.linux.dev -+F: arch/arm/mach-sunxi/ -+F: arch/arm64/boot/dts/allwinner/ -+F: drivers/clk/sunxi-ng/ -+F: drivers/pinctrl/sunxi/ -+F: drivers/soc/sunxi/ -+N: allwinner -+N: sun[x456789]i -+N: sun50i -+ -+ARM/Amlogic Meson SoC CLOCK FRAMEWORK -+M: Neil Armstrong <narmstrong@baylibre.com> -+M: Jerome Brunet <jbrunet@baylibre.com> -+L: linux-amlogic@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/clock/amlogic* -+F: drivers/clk/meson/ -+F: include/dt-bindings/clock/gxbb* -+F: include/dt-bindings/clock/meson* -+ -+ARM/Amlogic Meson SoC Crypto Drivers -+M: Corentin Labbe <clabbe@baylibre.com> -+L: linux-crypto@vger.kernel.org -+L: linux-amlogic@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/crypto/amlogic* -+F: drivers/crypto/amlogic/ -+ -+ARM/Amlogic Meson SoC Sound Drivers -+M: Jerome Brunet <jbrunet@baylibre.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/amlogic* -+F: sound/soc/meson/ -+ -+ARM/Amlogic Meson SoC support -+M: Neil Armstrong <narmstrong@baylibre.com> -+M: Kevin Hilman <khilman@baylibre.com> -+R: Jerome Brunet <jbrunet@baylibre.com> -+R: Martin Blumenstingl <martin.blumenstingl@googlemail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-amlogic@lists.infradead.org -+S: Maintained -+W: http://linux-meson.com/ -+F: arch/arm/boot/dts/meson* -+F: arch/arm/mach-meson/ -+F: arch/arm64/boot/dts/amlogic/ -+F: drivers/mmc/host/meson* -+F: drivers/pinctrl/meson/ -+F: drivers/rtc/rtc-meson* -+F: drivers/soc/amlogic/ -+N: meson -+ -+ARM/Annapurna Labs ALPINE ARCHITECTURE -+M: Tsahee Zidenberg <tsahee@annapurnalabs.com> -+M: Antoine Tenart <atenart@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/alpine* -+F: arch/arm/mach-alpine/ -+F: arch/arm64/boot/dts/amazon/ -+F: drivers/*/*alpine* -+ -+ARM/APPLE MACHINE SUPPORT -+M: Hector Martin <marcan@marcan.st> -+M: Sven Peter <sven@svenpeter.dev> -+R: Alyssa Rosenzweig <alyssa@rosenzweig.io> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: https://asahilinux.org -+B: https://github.com/AsahiLinux/linux/issues -+C: irc://irc.oftc.net/asahi-dev -+T: git https://github.com/AsahiLinux/linux.git -+F: Documentation/devicetree/bindings/arm/apple.yaml -+F: Documentation/devicetree/bindings/interrupt-controller/apple,aic.yaml -+F: Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml -+F: arch/arm64/boot/dts/apple/ -+F: drivers/irqchip/irq-apple-aic.c -+F: include/dt-bindings/interrupt-controller/apple-aic.h -+F: include/dt-bindings/pinctrl/apple.h -+ -+ARM/ARTPEC MACHINE SUPPORT -+M: Jesper Nilsson <jesper.nilsson@axis.com> -+M: Lars Persson <lars.persson@axis.com> -+L: linux-arm-kernel@axis.com -+S: Maintained -+F: Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt -+F: arch/arm/boot/dts/artpec6* -+F: arch/arm/mach-artpec -+F: drivers/clk/axis -+F: drivers/crypto/axis -+F: drivers/mmc/host/usdhi6rol0.c -+F: drivers/pinctrl/pinctrl-artpec* -+ -+ARM/ASPEED I2C DRIVER -+M: Brendan Higgins <brendanhiggins@google.com> -+R: Benjamin Herrenschmidt <benh@kernel.crashing.org> -+R: Joel Stanley <joel@jms.id.au> -+L: linux-i2c@vger.kernel.org -+L: openbmc@lists.ozlabs.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-aspeed.txt -+F: Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt -+F: drivers/i2c/busses/i2c-aspeed.c -+F: drivers/irqchip/irq-aspeed-i2c-ic.c -+ -+ARM/ASPEED MACHINE SUPPORT -+M: Joel Stanley <joel@jms.id.au> -+R: Andrew Jeffery <andrew@aj.id.au> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-aspeed@lists.ozlabs.org (moderated for non-subscribers) -+S: Supported -+Q: https://patchwork.ozlabs.org/project/linux-aspeed/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/joel/aspeed.git -+F: arch/arm/boot/dts/aspeed-* -+F: arch/arm/mach-aspeed/ -+N: aspeed -+ -+ARM/BITMAIN ARCHITECTURE -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/bitmain.yaml -+F: Documentation/devicetree/bindings/clock/bitmain,bm1880-clk.yaml -+F: Documentation/devicetree/bindings/pinctrl/bitmain,bm1880-pinctrl.txt -+F: arch/arm64/boot/dts/bitmain/ -+F: drivers/clk/clk-bm1880.c -+F: drivers/pinctrl/pinctrl-bm1880.c -+ -+ARM/CALXEDA HIGHBANK ARCHITECTURE -+M: Andre Przywara <andre.przywara@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/ecx-*.dts* -+F: arch/arm/boot/dts/highbank.dts -+F: arch/arm/mach-highbank/ -+ -+ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT -+M: Krzysztof Halasa <khalasa@piap.pl> -+S: Maintained -+F: arch/arm/mach-cns3xxx/ -+ -+ARM/CAVIUM THUNDER NETWORK DRIVER -+M: Sunil Goutham <sgoutham@marvell.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: drivers/net/ethernet/cavium/thunder/ -+ -+ARM/CIRRUS LOGIC BK3 MACHINE SUPPORT -+M: Lukasz Majewski <lukma@denx.de> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-ep93xx/ts72xx.c -+ -+ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE -+M: Alexander Shiyan <shc_work@mail.ru> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Odd Fixes -+N: clps711x -+ -+ARM/CIRRUS LOGIC EDB9315A MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE -+M: Hartley Sweeten <hsweeten@visionengravers.com> -+M: Alexander Sverdlin <alexander.sverdlin@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-ep93xx/ -+F: arch/arm/mach-ep93xx/include/mach/ -+ -+ARM/CLKDEV SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.armlinux.org.uk/~rmk/linux-arm.git clkdev -+F: drivers/clk/clkdev.c -+ -+ARM/CONEXANT DIGICOLOR MACHINE SUPPORT -+M: Baruch Siach <baruch@tkos.co.il> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/cx92755* -+N: digicolor -+ -+ARM/CONTEC MICRO9 MACHINE SUPPORT -+M: Hubert Feurstein <hubert.feurstein@contec.at> -+S: Maintained -+F: arch/arm/mach-ep93xx/micro9.c -+ -+ARM/CORESIGHT FRAMEWORK AND DRIVERS -+M: Mathieu Poirier <mathieu.poirier@linaro.org> -+M: Suzuki K Poulose <suzuki.poulose@arm.com> -+R: Mike Leach <mike.leach@linaro.org> -+R: Leo Yan <leo.yan@linaro.org> -+L: coresight@lists.linaro.org (moderated for non-subscribers) -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/coresight/linux.git -+F: Documentation/ABI/testing/sysfs-bus-coresight-devices-* -+F: Documentation/devicetree/bindings/arm/coresight-cpu-debug.txt -+F: Documentation/devicetree/bindings/arm/coresight-cti.yaml -+F: Documentation/devicetree/bindings/arm/coresight.txt -+F: Documentation/devicetree/bindings/arm/ete.yaml -+F: Documentation/devicetree/bindings/arm/trbe.yaml -+F: Documentation/trace/coresight/* -+F: drivers/hwtracing/coresight/* -+F: include/dt-bindings/arm/coresight-cti-dt.h -+F: include/linux/coresight* -+F: tools/perf/arch/arm/util/auxtrace.c -+F: tools/perf/arch/arm/util/cs-etm.c -+F: tools/perf/arch/arm/util/cs-etm.h -+F: tools/perf/arch/arm/util/pmu.c -+F: tools/perf/util/cs-etm-decoder/* -+F: tools/perf/util/cs-etm.* -+ -+ARM/CORGI MACHINE SUPPORT -+M: Richard Purdie <rpurdie@rpsys.net> -+S: Maintained -+ -+ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE -+M: Hans Ulli Kroll <ulli.kroll@googlemail.com> -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://github.com/ulli-kroll/linux.git -+F: Documentation/devicetree/bindings/arm/gemini.txt -+F: Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt -+F: Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.txt -+F: Documentation/devicetree/bindings/rtc/faraday,ftrtc010.txt -+F: arch/arm/boot/dts/gemini* -+F: arch/arm/mach-gemini/ -+F: drivers/crypto/gemini/ -+F: drivers/net/ethernet/cortina/ -+F: drivers/pinctrl/pinctrl-gemini.c -+F: drivers/rtc/rtc-ftrtc010.c -+ -+ARM/CZ.NIC TURRIS SUPPORT -+M: Marek Behún <kabel@kernel.org> -+S: Maintained -+W: https://www.turris.cz/ -+F: Documentation/ABI/testing/debugfs-moxtet -+F: Documentation/ABI/testing/sysfs-bus-moxtet-devices -+F: Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm -+F: Documentation/devicetree/bindings/bus/moxtet.txt -+F: Documentation/devicetree/bindings/firmware/cznic,turris-mox-rwtm.txt -+F: Documentation/devicetree/bindings/gpio/gpio-moxtet.txt -+F: Documentation/devicetree/bindings/leds/cznic,turris-omnia-leds.yaml -+F: Documentation/devicetree/bindings/watchdog/armada-37xx-wdt.txt -+F: drivers/bus/moxtet.c -+F: drivers/firmware/turris-mox-rwtm.c -+F: drivers/leds/leds-turris-omnia.c -+F: drivers/mailbox/armada-37xx-rwtm-mailbox.c -+F: drivers/gpio/gpio-moxtet.c -+F: drivers/watchdog/armada_37xx_wdt.c -+F: include/dt-bindings/bus/moxtet.h -+F: include/linux/armada-37xx-rwtm-mailbox.h -+F: include/linux/moxtet.h -+ -+ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6) -+M: Robert Jarzmik <robert.jarzmik@free.fr> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-pxa/ezx.c -+ -+ARM/FARADAY FA526 PORT -+M: Hans Ulli Kroll <ulli.kroll@googlemail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.berlios.de/gemini-board -+F: arch/arm/mm/*-fa* -+ -+ARM/FOOTBRIDGE ARCHITECTURE -+M: Russell King <linux@armlinux.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.armlinux.org.uk/ -+F: arch/arm/include/asm/hardware/dec21285.h -+F: arch/arm/mach-footbridge/ -+ -+ARM/FREESCALE IMX / MXC ARM ARCHITECTURE -+M: Shawn Guo <shawnguo@kernel.org> -+M: Sascha Hauer <s.hauer@pengutronix.de> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+R: Fabio Estevam <festevam@gmail.com> -+R: NXP Linux Team <linux-imx@nxp.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git -+X: drivers/media/i2c/ -+N: imx -+N: mxs -+ -+ARM/FREESCALE LAYERSCAPE ARM ARCHITECTURE -+M: Shawn Guo <shawnguo@kernel.org> -+M: Li Yang <leoyang.li@nxp.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git -+F: arch/arm/boot/dts/ls1021a* -+F: arch/arm64/boot/dts/freescale/fsl-* -+F: arch/arm64/boot/dts/freescale/qoriq-* -+ -+ARM/FREESCALE VYBRID ARM ARCHITECTURE -+M: Shawn Guo <shawnguo@kernel.org> -+M: Sascha Hauer <s.hauer@pengutronix.de> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+R: Stefan Agner <stefan@agner.ch> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git -+F: arch/arm/boot/dts/vf* -+F: arch/arm/mach-imx/*vf610* -+ -+ARM/GLOMATION GESBC9312SX MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/GUMSTIX MACHINE SUPPORT -+M: Steve Sakoman <sakoman@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/H4700 (HP IPAQ HX4700) MACHINE SUPPORT -+M: Philipp Zabel <philipp.zabel@gmail.com> -+M: Paul Parsons <lost.distance@yahoo.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-pxa/hx4700.c -+F: arch/arm/mach-pxa/include/mach/hx4700.h -+F: sound/soc/pxa/hx4700.c -+ -+ARM/HISILICON SOC SUPPORT -+M: Wei Xu <xuwei5@hisilicon.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+W: http://www.hisilicon.com -+T: git git://github.com/hisilicon/linux-hisi.git -+F: arch/arm/boot/dts/hi3* -+F: arch/arm/boot/dts/hip* -+F: arch/arm/boot/dts/hisi* -+F: arch/arm/mach-hisi/ -+F: arch/arm64/boot/dts/hisilicon/ -+ -+ARM/HP JORNADA 7XX MACHINE SUPPORT -+M: Kristoffer Ericson <kristoffer.ericson@gmail.com> -+S: Maintained -+W: www.jlime.com -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git -+F: arch/arm/mach-sa1100/include/mach/jornada720.h -+F: arch/arm/mach-sa1100/jornada720.c -+ -+ARM/IGEP MACHINE SUPPORT -+M: Enric Balletbo i Serra <eballetbo@gmail.com> -+M: Javier Martinez Canillas <javier@dowhile0.org> -+L: linux-omap@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/omap3-igep* -+ -+ARM/INCOME PXA270 SUPPORT -+M: Marek Vasut <marek.vasut@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-pxa/colibri-pxa270-income.c -+ -+ARM/INTEL IOP32X ARM ARCHITECTURE -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/INTEL IQ81342EX MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/INTEL IXDP2850 MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/INTEL IXP4XX ARM ARCHITECTURE -+M: Linus Walleij <linusw@kernel.org> -+M: Imre Kaloz <kaloz@openwrt.org> -+M: Krzysztof Halasa <khalasa@piap.pl> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/intel-ixp4xx.yaml -+F: Documentation/devicetree/bindings/bus/intel,ixp4xx-expansion-bus-controller.yaml -+F: Documentation/devicetree/bindings/gpio/intel,ixp4xx-gpio.txt -+F: Documentation/devicetree/bindings/interrupt-controller/intel,ixp4xx-interrupt.yaml -+F: Documentation/devicetree/bindings/timer/intel,ixp4xx-timer.yaml -+F: arch/arm/mach-ixp4xx/ -+F: drivers/bus/intel-ixp4xx-eb.c -+F: drivers/clocksource/timer-ixp4xx.c -+F: drivers/crypto/ixp4xx_crypto.c -+F: drivers/gpio/gpio-ixp4xx.c -+F: drivers/irqchip/irq-ixp4xx.c -+F: include/linux/irqchip/irq-ixp4xx.h -+F: include/linux/platform_data/timer-ixp4xx.h -+ -+ARM/INTEL KEEMBAY ARCHITECTURE -+M: Paul J. Murphy <paul.j.murphy@intel.com> -+M: Daniele Alessandrelli <daniele.alessandrelli@intel.com> -+S: Maintained -+F: Documentation/devicetree/bindings/arm/intel,keembay.yaml -+F: arch/arm64/boot/dts/intel/keembay-evm.dts -+F: arch/arm64/boot/dts/intel/keembay-soc.dtsi -+ -+ARM/INTEL RESEARCH IMOTE/STARGATE 2 MACHINE SUPPORT -+M: Jonathan Cameron <jic23@cam.ac.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-pxa/stargate2.c -+F: drivers/pcmcia/pxa2xx_stargate2.c -+ -+ARM/INTEL XSC3 (MANZANO) ARM CORE -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/IP FABRICS DOUBLE ESPRESSO MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/LG1K ARCHITECTURE -+M: Chanho Min <chanho.min@lge.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm64/boot/dts/lg/ -+ -+ARM/LOGICPD PXA270 MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/LPC18XX ARCHITECTURE -+M: Vladimir Zapolskiy <vz@mleia.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-lpc2k.txt -+F: arch/arm/boot/dts/lpc43* -+F: drivers/i2c/busses/i2c-lpc2k.c -+F: drivers/memory/pl172.c -+F: drivers/mtd/spi-nor/controllers/nxp-spifi.c -+F: drivers/rtc/rtc-lpc24xx.c -+N: lpc18xx -+ -+ARM/LPC32XX SOC SUPPORT -+M: Vladimir Zapolskiy <vz@mleia.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://github.com/vzapolskiy/linux-lpc32xx.git -+F: Documentation/devicetree/bindings/i2c/i2c-pnx.txt -+F: arch/arm/boot/dts/lpc32* -+F: arch/arm/mach-lpc32xx/ -+F: drivers/i2c/busses/i2c-pnx.c -+F: drivers/net/ethernet/nxp/lpc_eth.c -+F: drivers/usb/host/ohci-nxp.c -+F: drivers/watchdog/pnx4008_wdt.c -+N: lpc32xx -+ -+ARM/MAGICIAN MACHINE SUPPORT -+M: Philipp Zabel <philipp.zabel@gmail.com> -+S: Maintained -+ -+ARM/Marvell Dove/MV78xx0/Orion SOC support -+M: Andrew Lunn <andrew@lunn.ch> -+M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> -+M: Gregory Clement <gregory.clement@bootlin.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git -+F: Documentation/devicetree/bindings/soc/dove/ -+F: arch/arm/boot/dts/dove* -+F: arch/arm/boot/dts/orion5x* -+F: arch/arm/mach-dove/ -+F: arch/arm/mach-mv78xx0/ -+F: arch/arm/mach-orion5x/ -+F: arch/arm/plat-orion/ -+F: drivers/soc/dove/ -+ -+ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support -+M: Andrew Lunn <andrew@lunn.ch> -+M: Gregory Clement <gregory.clement@bootlin.com> -+M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu.git -+F: arch/arm/boot/dts/armada* -+F: arch/arm/boot/dts/kirkwood* -+F: arch/arm/configs/mvebu_*_defconfig -+F: arch/arm/mach-mvebu/ -+F: arch/arm64/boot/dts/marvell/armada* -+F: arch/arm64/boot/dts/marvell/cn913* -+F: drivers/cpufreq/armada-37xx-cpufreq.c -+F: drivers/cpufreq/armada-8k-cpufreq.c -+F: drivers/cpufreq/mvebu-cpufreq.c -+F: drivers/irqchip/irq-armada-370-xp.c -+F: drivers/irqchip/irq-mvebu-* -+F: drivers/pinctrl/mvebu/ -+F: drivers/rtc/rtc-armada38x.c -+ -+ARM/Mediatek RTC DRIVER -+M: Eddie Huang <eddie.huang@mediatek.com> -+M: Sean Wang <sean.wang@mediatek.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/rtc/rtc-mt2712.txt -+F: Documentation/devicetree/bindings/rtc/rtc-mt7622.txt -+F: drivers/rtc/rtc-mt2712.c -+F: drivers/rtc/rtc-mt6397.c -+F: drivers/rtc/rtc-mt7622.c -+ -+ARM/Mediatek SoC support -+M: Matthias Brugger <matthias.bgg@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: https://mtk.wiki.kernel.org/ -+C: irc://chat.freenode.net/linux-mediatek -+F: arch/arm/boot/dts/mt6* -+F: arch/arm/boot/dts/mt7* -+F: arch/arm/boot/dts/mt8* -+F: arch/arm/mach-mediatek/ -+F: arch/arm64/boot/dts/mediatek/ -+F: drivers/soc/mediatek/ -+N: mtk -+N: mt[678] -+K: mediatek -+ -+ARM/Mediatek USB3 PHY DRIVER -+M: Chunfeng Yun <chunfeng.yun@mediatek.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/phy/mediatek,* -+F: drivers/phy/mediatek/ -+ -+ARM/Microchip (AT91) SoC support -+M: Nicolas Ferre <nicolas.ferre@microchip.com> -+M: Alexandre Belloni <alexandre.belloni@bootlin.com> -+M: Ludovic Desroches <ludovic.desroches@microchip.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+W: http://www.linux4sam.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/at91/linux.git -+F: arch/arm/boot/dts/at91*.dts -+F: arch/arm/boot/dts/at91*.dtsi -+F: arch/arm/boot/dts/sama*.dts -+F: arch/arm/boot/dts/sama*.dtsi -+F: arch/arm/include/debug/at91.S -+F: arch/arm/mach-at91/ -+F: drivers/memory/atmel* -+F: drivers/watchdog/sama5d4_wdt.c -+F: include/soc/at91/ -+X: drivers/input/touchscreen/atmel_mxt_ts.c -+X: drivers/net/wireless/atmel/ -+N: at91 -+N: atmel -+ -+ARM/Microchip Sparx5 SoC support -+M: Lars Povlsen <lars.povlsen@microchip.com> -+M: Steen Hegelund <Steen.Hegelund@microchip.com> -+M: UNGLinuxDriver@microchip.com -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+T: git git://github.com/microchip-ung/linux-upstream.git -+F: arch/arm64/boot/dts/microchip/ -+F: drivers/pinctrl/pinctrl-microchip-sgpio.c -+N: sparx5 -+ -+Microchip Timer Counter Block (TCB) Capture Driver -+M: Kamel Bouhara <kamel.bouhara@bootlin.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: drivers/counter/microchip-tcb-capture.c -+ -+ARM/MIOA701 MACHINE SUPPORT -+M: Robert Jarzmik <robert.jarzmik@free.fr> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-pxa/mioa701.c -+ -+ARM/MStar/Sigmastar Armv7 SoC support -+M: Daniel Palmer <daniel@thingy.jp> -+M: Romain Perier <romain.perier@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://linux-chenxing.org/ -+T: git git://github.com/linux-chenxing/linux.git -+F: Documentation/devicetree/bindings/arm/mstar/* -+F: Documentation/devicetree/bindings/clock/mstar,msc313-mpll.yaml -+F: Documentation/devicetree/bindings/gpio/mstar,msc313-gpio.yaml -+F: arch/arm/boot/dts/mstar-* -+F: arch/arm/mach-mstar/ -+F: drivers/clk/mstar/ -+F: drivers/gpio/gpio-msc313.c -+F: drivers/watchdog/msc313e_wdt.c -+F: include/dt-bindings/clock/mstar-* -+F: include/dt-bindings/gpio/msc313-gpio.h -+ -+ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT -+M: Michael Petchkovsky <mkpetch@internode.on.net> -+S: Maintained -+ -+ARM/NOMADIK/Ux500 ARCHITECTURES -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik.git -+F: Documentation/devicetree/bindings/arm/ste-* -+F: Documentation/devicetree/bindings/arm/ux500.yaml -+F: Documentation/devicetree/bindings/arm/ux500/ -+F: Documentation/devicetree/bindings/i2c/i2c-nomadik.txt -+F: arch/arm/boot/dts/ste-* -+F: arch/arm/mach-nomadik/ -+F: arch/arm/mach-ux500/ -+F: drivers/clk/clk-nomadik.c -+F: drivers/clocksource/clksrc-dbx500-prcmu.c -+F: drivers/dma/ste_dma40* -+F: drivers/hwspinlock/u8500_hsem.c -+F: drivers/i2c/busses/i2c-nomadik.c -+F: drivers/iio/adc/ab8500-gpadc.c -+F: drivers/mfd/ab8500* -+F: drivers/mfd/abx500* -+F: drivers/mfd/db8500* -+F: drivers/pinctrl/nomadik/ -+F: drivers/rtc/rtc-ab8500.c -+F: drivers/rtc/rtc-pl031.c -+F: drivers/soc/ux500/ -+ -+ARM/NUVOTON NPCM ARCHITECTURE -+M: Avi Fishman <avifishman70@gmail.com> -+M: Tomer Maimon <tmaimon77@gmail.com> -+M: Tali Perry <tali.perry1@gmail.com> -+R: Patrick Venture <venture@google.com> -+R: Nancy Yuen <yuenn@google.com> -+R: Benjamin Fair <benjaminfair@google.com> -+L: openbmc@lists.ozlabs.org (moderated for non-subscribers) -+S: Supported -+F: Documentation/devicetree/bindings/*/*/*npcm* -+F: Documentation/devicetree/bindings/*/*npcm* -+F: arch/arm/boot/dts/nuvoton-npcm* -+F: arch/arm/mach-npcm/ -+F: drivers/*/*npcm* -+F: drivers/*/*/*npcm* -+F: include/dt-bindings/clock/nuvoton,npcm7xx-clock.h -+ -+ARM/NUVOTON WPCM450 ARCHITECTURE -+M: Jonathan Neuschäfer <j.neuschaefer@gmx.net> -+L: openbmc@lists.ozlabs.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/*/*wpcm* -+F: arch/arm/boot/dts/nuvoton-wpcm450* -+F: arch/arm/mach-npcm/wpcm450.c -+F: drivers/*/*wpcm* -+ -+ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT -+L: openmoko-kernel@lists.openmoko.org (subscribers-only) -+S: Orphan -+W: http://wiki.openmoko.org/wiki/Neo_FreeRunner -+F: arch/arm/mach-s3c/gta02.h -+F: arch/arm/mach-s3c/mach-gta02.c -+ -+ARM/Orion SoC/Technologic Systems TS-78xx platform support -+M: Alexander Clouter <alex@digriz.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.digriz.org.uk/ts78xx/kernel -+F: arch/arm/mach-orion5x/ts78xx-* -+ -+ARM/OXNAS platform support -+M: Neil Armstrong <narmstrong@baylibre.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-oxnas@groups.io (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/ox8*.dts* -+F: arch/arm/mach-oxnas/ -+F: drivers/power/reset/oxnas-restart.c -+N: oxnas -+ -+ARM/PALM TREO SUPPORT -+M: Tomas Cech <sleep_walker@suse.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://hackndev.com -+F: arch/arm/mach-pxa/palmtreo.* -+ -+ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT -+M: Marek Vasut <marek.vasut@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://hackndev.com -+F: arch/arm/mach-pxa/include/mach/palmld.h -+F: arch/arm/mach-pxa/include/mach/palmtc.h -+F: arch/arm/mach-pxa/include/mach/palmtx.h -+F: arch/arm/mach-pxa/palmld.c -+F: arch/arm/mach-pxa/palmt5.* -+F: arch/arm/mach-pxa/palmtc.c -+F: arch/arm/mach-pxa/palmte2.* -+F: arch/arm/mach-pxa/palmtx.c -+ -+ARM/PALMZ72 SUPPORT -+M: Sergey Lapin <slapin@ossfans.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://hackndev.com -+F: arch/arm/mach-pxa/palmz72.* -+ -+ARM/PLEB SUPPORT -+M: Peter Chubb <pleb@gelato.unsw.edu.au> -+S: Maintained -+W: http://www.disy.cse.unsw.edu.au/Hardware/PLEB -+ -+ARM/PT DIGITAL BOARD PORT -+M: Stefan Eletzhofer <stefan.eletzhofer@eletztrick.de> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.armlinux.org.uk/ -+ -+ARM/QUALCOMM SUPPORT -+M: Andy Gross <agross@kernel.org> -+M: Bjorn Andersson <bjorn.andersson@linaro.org> -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git -+F: Documentation/devicetree/bindings/*/qcom* -+F: Documentation/devicetree/bindings/soc/qcom/ -+F: arch/arm/boot/dts/qcom-*.dts -+F: arch/arm/boot/dts/qcom-*.dtsi -+F: arch/arm/mach-qcom/ -+F: arch/arm64/boot/dts/qcom/ -+F: drivers/*/*/qcom* -+F: drivers/*/*/qcom/ -+F: drivers/*/pm8???-* -+F: drivers/*/qcom* -+F: drivers/*/qcom/ -+F: drivers/bluetooth/btqcomsmd.c -+F: drivers/clocksource/timer-qcom.c -+F: drivers/cpuidle/cpuidle-qcom-spm.c -+F: drivers/extcon/extcon-qcom* -+F: drivers/i2c/busses/i2c-qcom-geni.c -+F: drivers/i2c/busses/i2c-qup.c -+F: drivers/iommu/msm* -+F: drivers/mfd/ssbi.c -+F: drivers/mmc/host/mmci_qcom* -+F: drivers/mmc/host/sdhci-msm.c -+F: drivers/pci/controller/dwc/pcie-qcom.c -+F: drivers/phy/qualcomm/ -+F: drivers/power/*/msm* -+F: drivers/reset/reset-qcom-* -+F: drivers/scsi/ufs/ufs-qcom* -+F: drivers/spi/spi-geni-qcom.c -+F: drivers/spi/spi-qcom-qspi.c -+F: drivers/spi/spi-qup.c -+F: drivers/tty/serial/msm_serial.c -+F: drivers/usb/dwc3/dwc3-qcom.c -+F: include/dt-bindings/*/qcom* -+F: include/linux/*/qcom* -+F: include/linux/soc/qcom/ -+ -+ARM/RADISYS ENP2611 MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/RDA MICRO ARCHITECTURE -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-unisoc@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/rda.yaml -+F: Documentation/devicetree/bindings/gpio/gpio-rda.yaml -+F: Documentation/devicetree/bindings/interrupt-controller/rda,8810pl-intc.txt -+F: Documentation/devicetree/bindings/serial/rda,8810pl-uart.txt -+F: Documentation/devicetree/bindings/timer/rda,8810pl-timer.txt -+F: arch/arm/boot/dts/rda8810pl-* -+F: drivers/clocksource/timer-rda.c -+F: drivers/gpio/gpio-rda.c -+F: drivers/irqchip/irq-rda-intc.c -+F: drivers/tty/serial/rda-uart.c -+ -+ARM/REALTEK ARCHITECTURE -+M: Andreas Färber <afaerber@suse.de> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-realtek-soc@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/realtek.yaml -+F: arch/arm/boot/dts/rtd* -+F: arch/arm/mach-realtek/ -+F: arch/arm64/boot/dts/realtek/ -+ -+ARM/RENESAS ARM64 ARCHITECTURE -+M: Geert Uytterhoeven <geert+renesas@glider.be> -+M: Magnus Damm <magnus.damm@gmail.com> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+Q: http://patchwork.kernel.org/project/linux-renesas-soc/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next -+F: Documentation/devicetree/bindings/arm/renesas.yaml -+F: arch/arm64/boot/dts/renesas/ -+F: drivers/soc/renesas/ -+F: include/linux/soc/renesas/ -+ -+ARM/RISCPC ARCHITECTURE -+M: Russell King <linux@armlinux.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.armlinux.org.uk/ -+F: arch/arm/include/asm/hardware/entry-macro-iomd.S -+F: arch/arm/include/asm/hardware/ioc.h -+F: arch/arm/include/asm/hardware/iomd.h -+F: arch/arm/include/asm/hardware/memc.h -+F: arch/arm/mach-rpc/ -+F: drivers/net/ethernet/8390/etherh.c -+F: drivers/net/ethernet/i825xx/ether1* -+F: drivers/net/ethernet/seeq/ether3* -+F: drivers/scsi/arm/ -+ -+ARM/Rockchip SoC support -+M: Heiko Stuebner <heiko@sntech.de> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-rockchip@lists.infradead.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git -+F: Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml -+F: Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml -+F: Documentation/devicetree/bindings/spi/spi-rockchip.yaml -+F: arch/arm/boot/dts/rk3* -+F: arch/arm/boot/dts/rv1108* -+F: arch/arm/mach-rockchip/ -+F: drivers/*/*/*rockchip* -+F: drivers/*/*rockchip* -+F: drivers/clk/rockchip/ -+F: drivers/i2c/busses/i2c-rk3x.c -+F: sound/soc/rockchip/ -+N: rockchip -+ -+ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/ -+F: Documentation/arm/samsung/ -+F: Documentation/devicetree/bindings/arm/samsung/ -+F: Documentation/devicetree/bindings/power/pd-samsung.yaml -+F: arch/arm/boot/dts/exynos* -+F: arch/arm/boot/dts/s3c* -+F: arch/arm/boot/dts/s5p* -+F: arch/arm/mach-exynos*/ -+F: arch/arm/mach-s3c/ -+F: arch/arm/mach-s5p*/ -+F: arch/arm64/boot/dts/exynos/ -+F: drivers/*/*/*s3c24* -+F: drivers/*/*s3c24* -+F: drivers/*/*s3c64xx* -+F: drivers/*/*s5pv210* -+F: drivers/clocksource/samsung_pwm_timer.c -+F: drivers/memory/samsung/ -+F: drivers/pwm/pwm-samsung.c -+F: drivers/soc/samsung/ -+F: drivers/tty/serial/samsung* -+F: include/clocksource/samsung_pwm.h -+F: include/linux/platform_data/*s3c* -+F: include/linux/serial_s3c.h -+F: include/linux/soc/samsung/ -+N: exynos -+N: s3c2410 -+N: s3c64xx -+N: s5pv210 -+ -+ARM/SAMSUNG S5P SERIES 2D GRAPHICS ACCELERATION (G2D) SUPPORT -+M: Andrzej Hajda <a.hajda@samsung.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/platform/s5p-g2d/ -+ -+ARM/SAMSUNG S5P SERIES HDMI CEC SUBSYSTEM SUPPORT -+M: Marek Szyprowski <m.szyprowski@samsung.com> -+L: linux-samsung-soc@vger.kernel.org -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/s5p-cec.txt -+F: drivers/media/cec/platform/s5p/ -+ -+ARM/SAMSUNG S5P SERIES JPEG CODEC SUPPORT -+M: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com> -+M: Jacek Anaszewski <jacek.anaszewski@gmail.com> -+M: Sylwester Nawrocki <s.nawrocki@samsung.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/platform/s5p-jpeg/ -+ -+ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT -+M: Andrzej Hajda <a.hajda@samsung.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/platform/s5p-mfc/ -+ -+ARM/SHMOBILE ARM ARCHITECTURE -+M: Geert Uytterhoeven <geert+renesas@glider.be> -+M: Magnus Damm <magnus.damm@gmail.com> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+Q: http://patchwork.kernel.org/project/linux-renesas-soc/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next -+F: Documentation/devicetree/bindings/arm/renesas.yaml -+F: arch/arm/boot/dts/emev2* -+F: arch/arm/boot/dts/gr-peach* -+F: arch/arm/boot/dts/iwg20d-q7* -+F: arch/arm/boot/dts/r7s* -+F: arch/arm/boot/dts/r8a* -+F: arch/arm/boot/dts/r9a* -+F: arch/arm/boot/dts/sh* -+F: arch/arm/configs/shmobile_defconfig -+F: arch/arm/include/debug/renesas-scif.S -+F: arch/arm/mach-shmobile/ -+F: drivers/soc/renesas/ -+F: include/linux/soc/renesas/ -+ -+ARM/SOCFPGA ARCHITECTURE -+M: Dinh Nguyen <dinguyen@kernel.org> -+S: Maintained -+W: http://www.rocketboards.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux.git -+F: arch/arm/boot/dts/socfpga* -+F: arch/arm/configs/socfpga_defconfig -+F: arch/arm/mach-socfpga/ -+F: arch/arm64/boot/dts/altera/ -+F: arch/arm64/boot/dts/intel/ -+ -+ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT -+M: Dinh Nguyen <dinguyen@kernel.org> -+S: Maintained -+F: drivers/clk/socfpga/ -+ -+ARM/SOCFPGA EDAC SUPPORT -+M: Dinh Nguyen <dinguyen@kernel.org> -+S: Maintained -+F: drivers/edac/altera_edac.[ch] -+ -+ARM/SPREADTRUM SoC SUPPORT -+M: Orson Zhai <orsonzhai@gmail.com> -+M: Baolin Wang <baolin.wang7@gmail.com> -+M: Chunyan Zhang <zhang.lyra@gmail.com> -+S: Maintained -+F: arch/arm64/boot/dts/sprd -+N: sprd -+N: sc27xx -+N: sc2731 -+ -+ARM/STI ARCHITECTURE -+M: Patrice Chotard <patrice.chotard@foss.st.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.stlinux.com -+F: Documentation/devicetree/bindings/i2c/i2c-st.txt -+F: arch/arm/boot/dts/sti* -+F: arch/arm/mach-sti/ -+F: drivers/ata/ahci_st.c -+F: drivers/char/hw_random/st-rng.c -+F: drivers/clocksource/arm_global_timer.c -+F: drivers/clocksource/clksrc_st_lpc.c -+F: drivers/cpufreq/sti-cpufreq.c -+F: drivers/dma/st_fdma* -+F: drivers/i2c/busses/i2c-st.c -+F: drivers/media/platform/sti/c8sectpfe/ -+F: drivers/media/rc/st_rc.c -+F: drivers/mmc/host/sdhci-st.c -+F: drivers/phy/st/phy-miphy28lp.c -+F: drivers/phy/st/phy-stih407-usb.c -+F: drivers/pinctrl/pinctrl-st.c -+F: drivers/remoteproc/st_remoteproc.c -+F: drivers/remoteproc/st_slim_rproc.c -+F: drivers/reset/sti/ -+F: drivers/rtc/rtc-st-lpc.c -+F: drivers/tty/serial/st-asc.c -+F: drivers/usb/dwc3/dwc3-st.c -+F: drivers/usb/host/ehci-st.c -+F: drivers/usb/host/ohci-st.c -+F: drivers/watchdog/st_lpc_wdt.c -+F: include/linux/remoteproc/st_slim_rproc.h -+ -+ARM/STM32 ARCHITECTURE -+M: Maxime Coquelin <mcoquelin.stm32@gmail.com> -+M: Alexandre Torgue <alexandre.torgue@foss.st.com> -+L: linux-stm32@st-md-mailman.stormreply.com (moderated for non-subscribers) -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32.git stm32-next -+F: arch/arm/boot/dts/stm32* -+F: arch/arm/mach-stm32/ -+F: drivers/clocksource/armv7m_systick.c -+N: stm32 -+N: stm -+ -+ARM/Synaptics SoC support -+M: Jisheng Zhang <Jisheng.Zhang@synaptics.com> -+M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/berlin* -+F: arch/arm/mach-berlin/ -+F: arch/arm64/boot/dts/synaptics/ -+ -+ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/TEGRA HDMI CEC SUBSYSTEM SUPPORT -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-tegra@vger.kernel.org -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/tegra-cec.txt -+F: drivers/media/cec/platform/tegra/ -+ -+ARM/TETON BGA MACHINE SUPPORT -+M: "Mark F. Brown" <mark.brown314@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/TEXAS INSTRUMENT AEMIF/EMIF DRIVERS -+M: Santosh Shilimkar <ssantosh@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/memory/*emif* -+ -+ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE -+M: Santosh Shilimkar <ssantosh@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git -+F: arch/arm/boot/dts/keystone-* -+F: arch/arm/mach-keystone/ -+ -+ARM/TEXAS INSTRUMENT KEYSTONE CLOCK FRAMEWORK -+M: Santosh Shilimkar <ssantosh@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/clk/keystone/ -+ -+ARM/TEXAS INSTRUMENT KEYSTONE CLOCKSOURCE -+M: Santosh Shilimkar <ssantosh@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/clocksource/timer-keystone.c -+ -+ARM/TEXAS INSTRUMENT KEYSTONE RESET DRIVER -+M: Santosh Shilimkar <ssantosh@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/power/reset/keystone-reset.c -+ -+ARM/TEXAS INSTRUMENTS K3 ARCHITECTURE -+M: Nishanth Menon <nm@ti.com> -+M: Vignesh Raghavendra <vigneshr@ti.com> -+M: Tero Kristo <kristo@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: Documentation/devicetree/bindings/arm/ti/k3.yaml -+F: arch/arm64/boot/dts/ti/Makefile -+F: arch/arm64/boot/dts/ti/k3-* -+F: include/dt-bindings/pinctrl/k3.h -+ -+ARM/THECUS N2100 MACHINE SUPPORT -+M: Lennert Buytenhek <kernel@wantstofly.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+ -+ARM/TOSA MACHINE SUPPORT -+M: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> -+M: Dirk Opfer <dirk@opfer-online.de> -+S: Maintained -+ -+ARM/TOSHIBA VISCONTI ARCHITECTURE -+M: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/iwamatsu/linux-visconti.git -+F: Documentation/devicetree/bindings/arm/toshiba.yaml -+F: Documentation/devicetree/bindings/net/toshiba,visconti-dwmac.yaml -+F: Documentation/devicetree/bindings/gpio/toshiba,gpio-visconti.yaml -+F: Documentation/devicetree/bindings/pci/toshiba,visconti-pcie.yaml -+F: Documentation/devicetree/bindings/pinctrl/toshiba,tmpv7700-pinctrl.yaml -+F: Documentation/devicetree/bindings/watchdog/toshiba,visconti-wdt.yaml -+F: arch/arm64/boot/dts/toshiba/ -+F: drivers/net/ethernet/stmicro/stmmac/dwmac-visconti.c -+F: drivers/gpio/gpio-visconti.c -+F: drivers/pci/controller/dwc/pcie-visconti.c -+F: drivers/pinctrl/visconti/ -+F: drivers/watchdog/visconti_wdt.c -+N: visconti -+ -+ARM/UNIPHIER ARCHITECTURE -+M: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> -+M: Masami Hiramatsu <mhiramat@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/socionext/uniphier.yaml -+F: Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.yaml -+F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml -+F: arch/arm/boot/dts/uniphier* -+F: arch/arm/include/asm/hardware/cache-uniphier.h -+F: arch/arm/mach-uniphier/ -+F: arch/arm/mm/cache-uniphier.c -+F: arch/arm64/boot/dts/socionext/uniphier* -+F: drivers/bus/uniphier-system-bus.c -+F: drivers/clk/uniphier/ -+F: drivers/dma/uniphier-mdmac.c -+F: drivers/gpio/gpio-uniphier.c -+F: drivers/i2c/busses/i2c-uniphier* -+F: drivers/irqchip/irq-uniphier-aidet.c -+F: drivers/mmc/host/uniphier-sd.c -+F: drivers/pinctrl/uniphier/ -+F: drivers/reset/reset-uniphier.c -+F: drivers/tty/serial/8250/8250_uniphier.c -+N: uniphier -+ -+ARM/VERSATILE EXPRESS PLATFORM -+M: Liviu Dudau <liviu.dudau@arm.com> -+M: Sudeep Holla <sudeep.holla@arm.com> -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: */*/*/vexpress* -+F: */*/vexpress* -+F: arch/arm/boot/dts/vexpress* -+F: arch/arm/mach-vexpress/ -+F: arch/arm64/boot/dts/arm/ -+F: drivers/clk/versatile/clk-vexpress-osc.c -+F: drivers/clocksource/timer-versatile.c -+N: mps2 -+ -+ARM/VFP SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.armlinux.org.uk/ -+F: arch/arm/vfp/ -+ -+ARM/VOIPAC PXA270 SUPPORT -+M: Marek Vasut <marek.vasut@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-pxa/include/mach/vpac270.h -+F: arch/arm/mach-pxa/vpac270.c -+ -+ARM/VT8500 ARM ARCHITECTURE -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Orphan -+F: Documentation/devicetree/bindings/i2c/i2c-wmt.txt -+F: arch/arm/mach-vt8500/ -+F: drivers/clocksource/timer-vt8500.c -+F: drivers/i2c/busses/i2c-wmt.c -+F: drivers/mmc/host/wmt-sdmmc.c -+F: drivers/pwm/pwm-vt8500.c -+F: drivers/rtc/rtc-vt8500.c -+F: drivers/tty/serial/vt8500_serial.c -+F: drivers/usb/host/ehci-platform.c -+F: drivers/usb/host/uhci-platform.c -+F: drivers/video/fbdev/vt8500lcdfb.* -+F: drivers/video/fbdev/wm8505fb* -+F: drivers/video/fbdev/wmt_ge_rops.* -+ -+ARM/ZIPIT Z2 SUPPORT -+M: Marek Vasut <marek.vasut@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/mach-pxa/include/mach/z2.h -+F: arch/arm/mach-pxa/z2.c -+ -+ARM/ZYNQ ARCHITECTURE -+M: Michal Simek <michal.simek@xilinx.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+W: http://wiki.xilinx.com -+T: git https://github.com/Xilinx/linux-xlnx.git -+F: Documentation/devicetree/bindings/i2c/cdns,i2c-r1p10.yaml -+F: Documentation/devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml -+F: Documentation/devicetree/bindings/spi/xlnx,zynq-qspi.yaml -+F: arch/arm/mach-zynq/ -+F: drivers/clocksource/timer-cadence-ttc.c -+F: drivers/cpuidle/cpuidle-zynq.c -+F: drivers/edac/synopsys_edac.c -+F: drivers/i2c/busses/i2c-cadence.c -+F: drivers/i2c/busses/i2c-xiic.c -+F: drivers/mmc/host/sdhci-of-arasan.c -+N: zynq -+N: xilinx -+ -+ARM64 PORT (AARCH64 ARCHITECTURE) -+M: Catalin Marinas <catalin.marinas@arm.com> -+M: Will Deacon <will@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git -+F: Documentation/arm64/ -+F: arch/arm64/ -+F: tools/testing/selftests/arm64/ -+X: arch/arm64/boot/dts/ -+ -+ARROW SPEEDCHIPS XRS7000 SERIES ETHERNET SWITCH DRIVER -+M: George McCollister <george.mccollister@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/dsa/arrow,xrs700x.yaml -+F: drivers/net/dsa/xrs700x/* -+F: net/dsa/tag_xrs700x.c -+ -+AS3645A LED FLASH CONTROLLER DRIVER -+M: Sakari Ailus <sakari.ailus@iki.fi> -+L: linux-leds@vger.kernel.org -+S: Maintained -+F: drivers/leds/flash/leds-as3645a.c -+ -+ASAHI KASEI AK7375 LENS VOICE COIL DRIVER -+M: Tianshu Qiu <tian.shu.qiu@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ak7375.txt -+F: drivers/media/i2c/ak7375.c -+ -+ASAHI KASEI AK8974 DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://www.akm.com/ -+F: drivers/iio/magnetometer/ak8974.c -+ -+ASC7621 HARDWARE MONITOR DRIVER -+M: George Joseph <george.joseph@fairview5.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/asc7621.rst -+F: drivers/hwmon/asc7621.c -+ -+ASPEED PINCTRL DRIVERS -+M: Andrew Jeffery <andrew@aj.id.au> -+L: linux-aspeed@lists.ozlabs.org (moderated for non-subscribers) -+L: openbmc@lists.ozlabs.org (moderated for non-subscribers) -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pinctrl/aspeed,* -+F: drivers/pinctrl/aspeed/ -+ -+ASPEED SCU INTERRUPT CONTROLLER DRIVER -+M: Eddie James <eajames@linux.ibm.com> -+L: linux-aspeed@lists.ozlabs.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2xxx-scu-ic.txt -+F: drivers/irqchip/irq-aspeed-scu-ic.c -+F: include/dt-bindings/interrupt-controller/aspeed-scu-ic.h -+ -+ASPEED SD/MMC DRIVER -+M: Andrew Jeffery <andrew@aj.id.au> -+L: linux-aspeed@lists.ozlabs.org (moderated for non-subscribers) -+L: openbmc@lists.ozlabs.org (moderated for non-subscribers) -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/mmc/aspeed,sdhci.yaml -+F: drivers/mmc/host/sdhci-of-aspeed* -+ -+ASPEED VIDEO ENGINE DRIVER -+M: Eddie James <eajames@linux.ibm.com> -+L: linux-media@vger.kernel.org -+L: openbmc@lists.ozlabs.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/media/aspeed-video.txt -+F: drivers/media/platform/aspeed-video.c -+ -+ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS -+M: Corentin Chary <corentin.chary@gmail.com> -+L: acpi4asus-user@lists.sourceforge.net -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+W: http://acpi4asus.sf.net -+F: drivers/platform/x86/asus*.c -+F: drivers/platform/x86/eeepc*.c -+ -+ASUS WIRELESS RADIO CONTROL DRIVER -+M: João Paulo Rechi Vita <jprvita@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/asus-wireless.c -+ -+ASYMMETRIC KEYS -+M: David Howells <dhowells@redhat.com> -+L: keyrings@vger.kernel.org -+S: Maintained -+F: Documentation/crypto/asymmetric-keys.rst -+F: crypto/asymmetric_keys/ -+F: include/crypto/pkcs7.h -+F: include/crypto/public_key.h -+F: include/linux/verification.h -+ -+ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API -+R: Dan Williams <dan.j.williams@intel.com> -+S: Odd fixes -+W: http://sourceforge.net/projects/xscaleiop -+F: Documentation/crypto/async-tx-api.rst -+F: crypto/async_tx/ -+F: include/linux/async_tx.h -+ -+AT24 EEPROM DRIVER -+M: Bartosz Golaszewski <brgl@bgdev.pl> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git -+F: Documentation/devicetree/bindings/eeprom/at24.yaml -+F: drivers/misc/eeprom/at24.c -+ -+ATA OVER ETHERNET (AOE) DRIVER -+M: "Justin Sanders" <justin@coraid.com> -+S: Supported -+W: http://www.openaoe.org/ -+F: Documentation/admin-guide/aoe/ -+F: drivers/block/aoe/ -+ -+ATC260X PMIC MFD DRIVER -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+M: Cristian Ciocaltea <cristian.ciocaltea@gmail.com> -+L: linux-actions@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/actions,atc260x.yaml -+F: drivers/input/misc/atc260x-onkey.c -+F: drivers/mfd/atc260* -+F: drivers/power/reset/atc260x-poweroff.c -+F: drivers/regulator/atc260x-regulator.c -+F: include/linux/mfd/atc260x/* -+ -+ATHEROS 71XX/9XXX GPIO DRIVER -+M: Alban Bedel <albeu@free.fr> -+S: Maintained -+W: https://github.com/AlbanBedel/linux -+T: git git://github.com/AlbanBedel/linux -+F: Documentation/devicetree/bindings/gpio/gpio-ath79.txt -+F: drivers/gpio/gpio-ath79.c -+ -+ATHEROS 71XX/9XXX USB PHY DRIVER -+M: Alban Bedel <albeu@free.fr> -+S: Maintained -+W: https://github.com/AlbanBedel/linux -+T: git git://github.com/AlbanBedel/linux -+F: Documentation/devicetree/bindings/phy/phy-ath79-usb.txt -+F: drivers/phy/qualcomm/phy-ath79-usb.c -+ -+ATHEROS ATH GENERIC UTILITIES -+M: Kalle Valo <kvalo@codeaurora.org> -+L: linux-wireless@vger.kernel.org -+S: Supported -+F: drivers/net/wireless/ath/* -+ -+ATHEROS ATH5K WIRELESS DRIVER -+M: Jiri Slaby <jirislaby@kernel.org> -+M: Nick Kossifidis <mickflemm@gmail.com> -+M: Luis Chamberlain <mcgrof@kernel.org> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/en/users/Drivers/ath5k -+F: drivers/net/wireless/ath/ath5k/ -+ -+ATHEROS ATH6KL WIRELESS DRIVER -+M: Kalle Valo <kvalo@codeaurora.org> -+L: linux-wireless@vger.kernel.org -+S: Supported -+W: https://wireless.wiki.kernel.org/en/users/Drivers/ath6kl -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git -+F: drivers/net/wireless/ath/ath6kl/ -+ -+ATI_REMOTE2 DRIVER -+M: Ville Syrjala <syrjala@sci.fi> -+S: Maintained -+F: drivers/input/misc/ati_remote2.c -+ -+ATK0110 HWMON DRIVER -+M: Luca Tettamanti <kronos.it@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/asus_atk0110.c -+ -+ATLX ETHERNET DRIVERS -+M: Chris Snook <chris.snook@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://sourceforge.net/projects/atl1 -+W: http://atl1.sourceforge.net -+F: drivers/net/ethernet/atheros/ -+ -+ATM -+M: Chas Williams <3chas3@gmail.com> -+L: linux-atm-general@lists.sourceforge.net (moderated for non-subscribers) -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://linux-atm.sourceforge.net -+F: drivers/atm/ -+F: include/linux/atm* -+F: include/uapi/linux/atm* -+ -+ATMEL MACB ETHERNET DRIVER -+M: Nicolas Ferre <nicolas.ferre@microchip.com> -+M: Claudiu Beznea <claudiu.beznea@microchip.com> -+S: Supported -+F: drivers/net/ethernet/cadence/ -+ -+ATMEL MAXTOUCH DRIVER -+M: Nick Dyer <nick@shmanahar.org> -+S: Maintained -+T: git git://github.com/ndyer/linux.git -+F: Documentation/devicetree/bindings/input/atmel,maxtouch.yaml -+F: drivers/input/touchscreen/atmel_mxt_ts.c -+ -+ATMEL WIRELESS DRIVER -+M: Simon Kelley <simon@thekelleys.org.uk> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: http://www.thekelleys.org.uk/atmel -+W: http://atmelwlandriver.sourceforge.net/ -+F: drivers/net/wireless/atmel/atmel* -+ -+ATOMIC INFRASTRUCTURE -+M: Will Deacon <will@kernel.org> -+M: Peter Zijlstra <peterz@infradead.org> -+R: Boqun Feng <boqun.feng@gmail.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: arch/*/include/asm/atomic*.h -+F: include/*/atomic*.h -+F: include/linux/refcount.h -+F: Documentation/atomic_*.txt -+F: scripts/atomic/ -+ -+ATTO EXPRESSSAS SAS/SATA RAID SCSI DRIVER -+M: Bradley Grove <linuxdrivers@attotech.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.attotech.com -+F: drivers/scsi/esas2r -+ -+ATUSB IEEE 802.15.4 RADIO DRIVER -+M: Stefan Schmidt <stefan@datenfreihafen.org> -+L: linux-wpan@vger.kernel.org -+S: Maintained -+F: drivers/net/ieee802154/at86rf230.h -+F: drivers/net/ieee802154/atusb.c -+F: drivers/net/ieee802154/atusb.h -+ -+AUDIT SUBSYSTEM -+M: Paul Moore <paul@paul-moore.com> -+M: Eric Paris <eparis@redhat.com> -+L: linux-audit@redhat.com (moderated for non-subscribers) -+S: Supported -+W: https://github.com/linux-audit -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit.git -+F: include/asm-generic/audit_*.h -+F: include/linux/audit.h -+F: include/uapi/linux/audit.h -+F: kernel/audit* -+F: lib/*audit.c -+ -+AUXILIARY DISPLAY DRIVERS -+M: Miguel Ojeda <ojeda@kernel.org> -+S: Maintained -+F: drivers/auxdisplay/ -+F: include/linux/cfag12864b.h -+ -+AVIA HX711 ANALOG DIGITAL CONVERTER IIO DRIVER -+M: Andreas Klinger <ak@it-klinger.de> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml -+F: drivers/iio/adc/hx711.c -+ -+AX.25 NETWORK LAYER -+M: Ralf Baechle <ralf@linux-mips.org> -+L: linux-hams@vger.kernel.org -+S: Maintained -+W: http://www.linux-ax25.org/ -+F: include/net/ax25.h -+F: include/uapi/linux/ax25.h -+F: net/ax25/ -+ -+AXENTIA ARM DEVICES -+M: Peter Rosin <peda@axentia.se> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/at91-linea.dtsi -+F: arch/arm/boot/dts/at91-natte.dtsi -+F: arch/arm/boot/dts/at91-nattis-2-natte-2.dts -+F: arch/arm/boot/dts/at91-tse850-3.dts -+ -+AXENTIA ASOC DRIVERS -+M: Peter Rosin <peda@axentia.se> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/axentia,* -+F: sound/soc/atmel/tse850-pcm5142.c -+ -+AXI-FAN-CONTROL HARDWARE MONITOR DRIVER -+M: Nuno Sá <nuno.sa@analog.com> -+L: linux-hwmon@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/hwmon/adi,axi-fan-control.yaml -+F: drivers/hwmon/axi-fan-control.c -+ -+AXXIA I2C CONTROLLER -+M: Krzysztof Adamski <krzysztof.adamski@nokia.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-axxia.txt -+F: drivers/i2c/busses/i2c-axxia.c -+ -+AZ6007 DVB DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/az6007.c -+ -+AZTECH FM RADIO RECEIVER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-aztech* -+ -+B43 WIRELESS DRIVER -+L: linux-wireless@vger.kernel.org -+L: b43-dev@lists.infradead.org -+S: Odd Fixes -+W: https://wireless.wiki.kernel.org/en/users/Drivers/b43 -+F: drivers/net/wireless/broadcom/b43/ -+ -+B43LEGACY WIRELESS DRIVER -+M: Larry Finger <Larry.Finger@lwfinger.net> -+L: linux-wireless@vger.kernel.org -+L: b43-dev@lists.infradead.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/en/users/Drivers/b43 -+F: drivers/net/wireless/broadcom/b43legacy/ -+ -+BACKLIGHT CLASS/SUBSYSTEM -+M: Lee Jones <lee.jones@linaro.org> -+M: Daniel Thompson <daniel.thompson@linaro.org> -+M: Jingoo Han <jingoohan1@gmail.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git -+F: Documentation/ABI/stable/sysfs-class-backlight -+F: Documentation/ABI/testing/sysfs-class-backlight -+F: Documentation/devicetree/bindings/leds/backlight -+F: drivers/video/backlight/ -+F: include/linux/backlight.h -+F: include/linux/pwm_backlight.h -+ -+BATMAN ADVANCED -+M: Marek Lindner <mareklindner@neomailbox.ch> -+M: Simon Wunderlich <sw@simonwunderlich.de> -+M: Antonio Quartulli <a@unstable.cc> -+M: Sven Eckelmann <sven@narfation.org> -+L: b.a.t.m.a.n@lists.open-mesh.org (moderated for non-subscribers) -+S: Maintained -+W: https://www.open-mesh.org/ -+Q: https://patchwork.open-mesh.org/project/batman/list/ -+B: https://www.open-mesh.org/projects/batman-adv/issues -+C: ircs://irc.hackint.org/batadv -+T: git https://git.open-mesh.org/linux-merge.git -+F: Documentation/networking/batman-adv.rst -+F: include/uapi/linux/batadv_packet.h -+F: include/uapi/linux/batman_adv.h -+F: net/batman-adv/ -+ -+BAYCOM/HDLCDRV DRIVERS FOR AX.25 -+M: Thomas Sailer <t.sailer@alumni.ethz.ch> -+L: linux-hams@vger.kernel.org -+S: Maintained -+W: http://www.baycom.org/~tom/ham/ham.html -+F: drivers/net/hamradio/baycom* -+ -+BCACHE (BLOCK LAYER CACHE) -+M: Coly Li <colyli@suse.de> -+M: Kent Overstreet <kent.overstreet@gmail.com> -+L: linux-bcache@vger.kernel.org -+S: Maintained -+W: http://bcache.evilpiepirate.org -+C: irc://irc.oftc.net/bcache -+F: drivers/md/bcache/ -+ -+BDISP ST MEDIA DRIVER -+M: Fabien Dessenne <fabien.dessenne@foss.st.com> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/platform/sti/bdisp -+ -+BECKHOFF CX5020 ETHERCAT MASTER DRIVER -+M: Dariusz Marcinkiewicz <reksio@newterm.pl> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/ec_bhf.c -+ -+BEFS FILE SYSTEM -+M: Luis de Bethencourt <luisbg@kernel.org> -+M: Salah Triki <salah.triki@gmail.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/luisbg/linux-befs.git -+F: Documentation/filesystems/befs.rst -+F: fs/befs/ -+ -+BFQ I/O SCHEDULER -+M: Paolo Valente <paolo.valente@linaro.org> -+M: Jens Axboe <axboe@kernel.dk> -+L: linux-block@vger.kernel.org -+S: Maintained -+F: Documentation/block/bfq-iosched.rst -+F: block/bfq-* -+ -+BFS FILE SYSTEM -+M: "Tigran A. Aivazian" <aivazian.tigran@gmail.com> -+S: Maintained -+F: Documentation/filesystems/bfs.rst -+F: fs/bfs/ -+F: include/uapi/linux/bfs_fs.h -+ -+BITMAP API -+M: Yury Norov <yury.norov@gmail.com> -+R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+R: Rasmus Villemoes <linux@rasmusvillemoes.dk> -+S: Maintained -+F: include/asm-generic/bitops/find.h -+F: include/linux/bitmap.h -+F: lib/bitmap.c -+F: lib/find_bit.c -+F: lib/find_bit_benchmark.c -+F: lib/test_bitmap.c -+F: tools/include/asm-generic/bitops/find.h -+F: tools/include/linux/bitmap.h -+F: tools/lib/bitmap.c -+F: tools/lib/find_bit.c -+ -+BLINKM RGB LED DRIVER -+M: Jan-Simon Moeller <jansimon.moeller@gmx.de> -+S: Maintained -+F: drivers/leds/leds-blinkm.c -+ -+BLOCK LAYER -+M: Jens Axboe <axboe@kernel.dk> -+L: linux-block@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git -+F: block/ -+F: drivers/block/ -+F: include/linux/blk* -+F: kernel/trace/blktrace.c -+F: lib/sbitmap.c -+ -+BLOCK2MTD DRIVER -+M: Joern Engel <joern@lazybastard.org> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: drivers/mtd/devices/block2mtd.c -+ -+BLUETOOTH DRIVERS -+M: Marcel Holtmann <marcel@holtmann.org> -+M: Johan Hedberg <johan.hedberg@gmail.com> -+M: Luiz Augusto von Dentz <luiz.dentz@gmail.com> -+L: linux-bluetooth@vger.kernel.org -+S: Supported -+W: http://www.bluez.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git -+F: drivers/bluetooth/ -+ -+BLUETOOTH SUBSYSTEM -+M: Marcel Holtmann <marcel@holtmann.org> -+M: Johan Hedberg <johan.hedberg@gmail.com> -+M: Luiz Augusto von Dentz <luiz.dentz@gmail.com> -+L: linux-bluetooth@vger.kernel.org -+S: Supported -+W: http://www.bluez.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git -+F: include/net/bluetooth/ -+F: net/bluetooth/ -+ -+BONDING DRIVER -+M: Jay Vosburgh <j.vosburgh@gmail.com> -+M: Veaceslav Falico <vfalico@gmail.com> -+M: Andy Gospodarek <andy@greyhouse.net> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://sourceforge.net/projects/bonding/ -+F: drivers/net/bonding/ -+F: include/net/bonding.h -+F: include/uapi/linux/if_bonding.h -+ -+BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER -+M: Dan Robertson <dan@dlrobertson.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/accel/bosch,bma400.yaml -+F: drivers/iio/accel/bma400* -+ -+BPF (Safe dynamic programs and tools) -+M: Alexei Starovoitov <ast@kernel.org> -+M: Daniel Borkmann <daniel@iogearbox.net> -+M: Andrii Nakryiko <andrii@kernel.org> -+R: Martin KaFai Lau <kafai@fb.com> -+R: Song Liu <songliubraving@fb.com> -+R: Yonghong Song <yhs@fb.com> -+R: John Fastabend <john.fastabend@gmail.com> -+R: KP Singh <kpsingh@kernel.org> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Supported -+W: https://bpf.io/ -+Q: https://patchwork.kernel.org/project/netdevbpf/list/?delegate=121173 -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git -+F: Documentation/bpf/ -+F: Documentation/networking/filter.rst -+F: Documentation/userspace-api/ebpf/ -+F: arch/*/net/* -+F: include/linux/bpf* -+F: include/linux/btf* -+F: include/linux/filter.h -+F: include/trace/events/xdp.h -+F: include/uapi/linux/bpf* -+F: include/uapi/linux/btf* -+F: include/uapi/linux/filter.h -+F: kernel/bpf/ -+F: kernel/trace/bpf_trace.c -+F: lib/test_bpf.c -+F: net/bpf/ -+F: net/core/filter.c -+F: net/sched/act_bpf.c -+F: net/sched/cls_bpf.c -+F: samples/bpf/ -+F: scripts/bpf_doc.py -+F: tools/bpf/ -+F: tools/lib/bpf/ -+F: tools/testing/selftests/bpf/ -+N: bpf -+K: bpf -+ -+BPF JIT for ARM -+M: Shubham Bansal <illusionist.neo@gmail.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/arm/net/ -+ -+BPF JIT for ARM64 -+M: Daniel Borkmann <daniel@iogearbox.net> -+M: Alexei Starovoitov <ast@kernel.org> -+M: Zi Shen Lim <zlim.lnx@gmail.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Supported -+F: arch/arm64/net/ -+ -+BPF JIT for MIPS (32-BIT AND 64-BIT) -+M: Paul Burton <paulburton@kernel.org> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/mips/net/ -+ -+BPF JIT for NFP NICs -+M: Jakub Kicinski <kuba@kernel.org> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/netronome/nfp/bpf/ -+ -+BPF JIT for POWERPC (32-BIT AND 64-BIT) -+M: Naveen N. Rao <naveen.n.rao@linux.ibm.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/powerpc/net/ -+ -+BPF JIT for RISC-V (32-bit) -+M: Luke Nelson <luke.r.nels@gmail.com> -+M: Xi Wang <xi.wang@gmail.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/riscv/net/ -+X: arch/riscv/net/bpf_jit_comp64.c -+ -+BPF JIT for RISC-V (64-bit) -+M: Björn Töpel <bjorn@kernel.org> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/riscv/net/ -+X: arch/riscv/net/bpf_jit_comp32.c -+ -+BPF JIT for S390 -+M: Ilya Leoshkevich <iii@linux.ibm.com> -+M: Heiko Carstens <hca@linux.ibm.com> -+M: Vasily Gorbik <gor@linux.ibm.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/s390/net/ -+X: arch/s390/net/pnet.c -+ -+BPF JIT for SPARC (32-BIT AND 64-BIT) -+M: David S. Miller <davem@davemloft.net> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/sparc/net/ -+ -+BPF JIT for X86 32-BIT -+M: Wang YanQing <udknight@gmail.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: arch/x86/net/bpf_jit_comp32.c -+ -+BPF JIT for X86 64-BIT -+M: Alexei Starovoitov <ast@kernel.org> -+M: Daniel Borkmann <daniel@iogearbox.net> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Supported -+F: arch/x86/net/ -+X: arch/x86/net/bpf_jit_comp32.c -+ -+BPF LSM (Security Audit and Enforcement using BPF) -+M: KP Singh <kpsingh@kernel.org> -+R: Florent Revest <revest@chromium.org> -+R: Brendan Jackman <jackmanb@chromium.org> -+L: bpf@vger.kernel.org -+S: Maintained -+F: Documentation/bpf/bpf_lsm.rst -+F: include/linux/bpf_lsm.h -+F: kernel/bpf/bpf_lsm.c -+F: security/bpf/ -+ -+BROADCOM B44 10/100 ETHERNET DRIVER -+M: Michael Chan <michael.chan@broadcom.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/broadcom/b44.* -+ -+BROADCOM B53 ETHERNET SWITCH DRIVER -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: netdev@vger.kernel.org -+L: openwrt-devel@lists.openwrt.org (subscribers-only) -+S: Supported -+F: Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml -+F: drivers/net/dsa/b53/* -+F: include/linux/dsa/brcm.h -+F: include/linux/platform_data/b53.h -+ -+BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE -+M: Nicolas Saenz Julienne <nsaenz@kernel.org> -+L: bcm-kernel-feedback-list@broadcom.com -+L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git -+F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml -+F: drivers/pci/controller/pcie-brcmstb.c -+F: drivers/staging/vc04_services -+N: bcm2711 -+N: bcm283* -+ -+BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE -+M: Florian Fainelli <f.fainelli@gmail.com> -+M: Ray Jui <rjui@broadcom.com> -+M: Scott Branden <sbranden@broadcom.com> -+M: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+T: git git://github.com/broadcom/mach-bcm -+F: arch/arm/mach-bcm/ -+N: bcm281* -+N: bcm113* -+N: bcm216* -+N: kona -+ -+BROADCOM BCM47XX MIPS ARCHITECTURE -+M: Hauke Mehrtens <hauke@hauke-m.de> -+M: Rafał Miłecki <zajec5@gmail.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/mips/brcm/ -+F: arch/mips/bcm47xx/* -+F: arch/mips/include/asm/mach-bcm47xx/* -+ -+BROADCOM BCM4908 ETHERNET DRIVER -+M: Rafał Miłecki <rafal@milecki.pl> -+M: bcm-kernel-feedback-list@broadcom.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/brcm,bcm4908-enet.yaml -+F: drivers/net/ethernet/broadcom/bcm4908_enet.* -+F: drivers/net/ethernet/broadcom/unimac.h -+ -+BROADCOM BCM5301X ARM ARCHITECTURE -+M: Hauke Mehrtens <hauke@hauke-m.de> -+M: Rafał Miłecki <zajec5@gmail.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/bcm470* -+F: arch/arm/boot/dts/bcm5301* -+F: arch/arm/boot/dts/bcm953012* -+F: arch/arm/mach-bcm/bcm_5301x.c -+ -+BROADCOM BCM53573 ARM ARCHITECTURE -+M: Rafał Miłecki <rafal@milecki.pl> -+L: bcm-kernel-feedback-list@broadcom.com -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/boot/dts/bcm47189* -+F: arch/arm/boot/dts/bcm53573* -+ -+BROADCOM BCM63XX ARM ARCHITECTURE -+M: Florian Fainelli <f.fainelli@gmail.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://github.com/broadcom/stblinux.git -+N: bcm63xx -+ -+BROADCOM BCM63XX/BCM33XX UDC DRIVER -+M: Kevin Cernekee <cernekee@gmail.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/gadget/udc/bcm63xx_udc.* -+ -+BROADCOM BCM7XXX ARM ARCHITECTURE -+M: Florian Fainelli <f.fainelli@gmail.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://github.com/broadcom/stblinux.git -+F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml -+F: arch/arm/boot/dts/bcm7*.dts* -+F: arch/arm/include/asm/hardware/cache-b15-rac.h -+F: arch/arm/mach-bcm/*brcmstb* -+F: arch/arm/mm/cache-b15-rac.c -+F: drivers/bus/brcmstb_gisb.c -+F: drivers/pci/controller/pcie-brcmstb.c -+N: brcmstb -+ -+BROADCOM BDC DRIVER -+M: Al Cooper <alcooperx@gmail.com> -+L: linux-usb@vger.kernel.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: Documentation/devicetree/bindings/usb/brcm,bdc.txt -+F: drivers/usb/gadget/udc/bdc/ -+ -+BROADCOM BMIPS CPUFREQ DRIVER -+M: Markus Mayer <mmayer@broadcom.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: drivers/cpufreq/bmips-cpufreq.c -+ -+BROADCOM BMIPS MIPS ARCHITECTURE -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: bcm-kernel-feedback-list@broadcom.com -+L: linux-mips@vger.kernel.org -+S: Maintained -+T: git git://github.com/broadcom/stblinux.git -+F: arch/mips/bmips/* -+F: arch/mips/boot/dts/brcm/bcm*.dts* -+F: arch/mips/include/asm/mach-bmips/* -+F: arch/mips/kernel/*bmips* -+F: drivers/soc/bcm/bcm63xx -+F: drivers/irqchip/irq-bcm63* -+F: drivers/irqchip/irq-bcm7* -+F: drivers/irqchip/irq-brcmstb* -+F: include/linux/bcm963xx_nvram.h -+F: include/linux/bcm963xx_tag.h -+ -+BROADCOM BNX2 GIGABIT ETHERNET DRIVER -+M: Rasesh Mody <rmody@marvell.com> -+M: GR-Linux-NIC-Dev@marvell.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/broadcom/bnx2.* -+F: drivers/net/ethernet/broadcom/bnx2_* -+ -+BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER -+M: Saurav Kashyap <skashyap@marvell.com> -+M: Javed Hasan <jhasan@marvell.com> -+M: GR-QLogic-Storage-Upstream@marvell.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/bnx2fc/ -+ -+BROADCOM BNX2I 1/10 GIGABIT iSCSI DRIVER -+M: Nilesh Javali <njavali@marvell.com> -+M: Manish Rangankar <mrangankar@marvell.com> -+M: GR-QLogic-Storage-Upstream@marvell.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/bnx2i/ -+ -+BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER -+M: Ariel Elior <aelior@marvell.com> -+M: Sudarsana Kalluru <skalluru@marvell.com> -+M: GR-everest-linux-l2@marvell.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/broadcom/bnx2x/ -+ -+BROADCOM BNXT_EN 50 GIGABIT ETHERNET DRIVER -+M: Michael Chan <michael.chan@broadcom.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/broadcom/bnxt/ -+ -+BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER -+M: Arend van Spriel <aspriel@gmail.com> -+M: Franky Lin <franky.lin@broadcom.com> -+M: Hante Meuleman <hante.meuleman@broadcom.com> -+M: Chi-hsien Lin <chi-hsien.lin@infineon.com> -+M: Wright Feng <wright.feng@infineon.com> -+M: Chung-hsien Hsu <chung-hsien.hsu@infineon.com> -+L: linux-wireless@vger.kernel.org -+L: brcm80211-dev-list.pdl@broadcom.com -+L: SHA-cyfmac-dev-list@infineon.com -+S: Supported -+F: drivers/net/wireless/broadcom/brcm80211/ -+ -+BROADCOM BRCMSTB GPIO DRIVER -+M: Gregory Fong <gregory.0xf0@gmail.com> -+L: bcm-kernel-feedback-list@broadcom.com -+S: Supported -+F: Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt -+F: drivers/gpio/gpio-brcmstb.c -+ -+BROADCOM BRCMSTB I2C DRIVER -+M: Kamal Dasu <kdasu.kdev@gmail.com> -+L: linux-i2c@vger.kernel.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Supported -+F: Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml -+F: drivers/i2c/busses/i2c-brcmstb.c -+ -+BROADCOM BRCMSTB UART DRIVER -+M: Al Cooper <alcooperx@gmail.com> -+L: linux-serial@vger.kernel.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: Documentation/devicetree/bindings/serial/brcm,bcm7271-uart.yaml -+F: drivers/tty/serial/8250/8250_bcm7271.c -+ -+BROADCOM BRCMSTB USB EHCI DRIVER -+M: Al Cooper <alcooperx@gmail.com> -+L: linux-usb@vger.kernel.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: Documentation/devicetree/bindings/usb/brcm,bcm7445-ehci.yaml -+F: drivers/usb/host/ehci-brcm.* -+ -+BROADCOM BRCMSTB USB PIN MAP DRIVER -+M: Al Cooper <alcooperx@gmail.com> -+L: linux-usb@vger.kernel.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: Documentation/devicetree/bindings/usb/brcm,usb-pinmap.yaml -+F: drivers/usb/misc/brcmstb-usb-pinmap.c -+ -+BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER -+M: Al Cooper <alcooperx@gmail.com> -+L: linux-kernel@vger.kernel.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: drivers/phy/broadcom/phy-brcm-usb* -+ -+BROADCOM ETHERNET PHY DRIVERS -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: bcm-kernel-feedback-list@broadcom.com -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/net/broadcom-bcm87xx.txt -+F: drivers/net/phy/bcm*.[ch] -+F: drivers/net/phy/broadcom.c -+F: include/linux/brcmphy.h -+ -+BROADCOM GENET ETHERNET DRIVER -+M: Doug Berger <opendmb@gmail.com> -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: bcm-kernel-feedback-list@broadcom.com -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/net/brcm,bcmgenet.txt -+F: Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt -+F: drivers/net/ethernet/broadcom/genet/ -+F: drivers/net/ethernet/broadcom/unimac.h -+F: drivers/net/mdio/mdio-bcm-unimac.c -+F: include/linux/platform_data/bcmgenet.h -+F: include/linux/platform_data/mdio-bcm-unimac.h -+ -+BROADCOM IPROC ARM ARCHITECTURE -+M: Ray Jui <rjui@broadcom.com> -+M: Scott Branden <sbranden@broadcom.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://github.com/broadcom/cygnus-linux.git -+F: arch/arm64/boot/dts/broadcom/northstar2/* -+F: arch/arm64/boot/dts/broadcom/stingray/* -+F: drivers/clk/bcm/clk-ns* -+F: drivers/clk/bcm/clk-sr* -+F: drivers/pinctrl/bcm/pinctrl-ns* -+F: include/dt-bindings/clock/bcm-sr* -+N: iproc -+N: cygnus -+N: bcm[-_]nsp -+N: bcm9113* -+N: bcm9583* -+N: bcm9585* -+N: bcm9586* -+N: bcm988312 -+N: bcm113* -+N: bcm583* -+N: bcm585* -+N: bcm586* -+N: bcm88312 -+N: hr2 -+N: stingray -+ -+BROADCOM IPROC GBIT ETHERNET DRIVER -+M: Rafał Miłecki <rafal@milecki.pl> -+M: bcm-kernel-feedback-list@broadcom.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/brcm,amac.txt -+F: drivers/net/ethernet/broadcom/bgmac* -+F: drivers/net/ethernet/broadcom/unimac.h -+ -+BROADCOM KONA GPIO DRIVER -+M: Ray Jui <rjui@broadcom.com> -+L: bcm-kernel-feedback-list@broadcom.com -+S: Supported -+F: Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt -+F: drivers/gpio/gpio-bcm-kona.c -+ -+BROADCOM MPI3 STORAGE CONTROLLER DRIVER -+M: Sathya Prakash Veerichetty <sathya.prakash@broadcom.com> -+M: Kashyap Desai <kashyap.desai@broadcom.com> -+M: Sumit Saxena <sumit.saxena@broadcom.com> -+M: Sreekanth Reddy <sreekanth.reddy@broadcom.com> -+L: mpi3mr-linuxdrv.pdl@broadcom.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: https://www.broadcom.com/support/storage -+F: drivers/scsi/mpi3mr/ -+ -+BROADCOM NETXTREME-E ROCE DRIVER -+M: Selvin Xavier <selvin.xavier@broadcom.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: http://www.broadcom.com -+F: drivers/infiniband/hw/bnxt_re/ -+F: include/uapi/rdma/bnxt_re-abi.h -+ -+BROADCOM NVRAM DRIVER -+M: Rafał Miłecki <zajec5@gmail.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: drivers/firmware/broadcom/* -+ -+BROADCOM PMB (POWER MANAGEMENT BUS) DRIVER -+M: Rafał Miłecki <rafal@milecki.pl> -+M: Florian Fainelli <f.fainelli@gmail.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-pm@vger.kernel.org -+S: Maintained -+T: git git://github.com/broadcom/stblinux.git -+F: drivers/soc/bcm/bcm63xx/bcm-pmb.c -+F: include/dt-bindings/soc/bcm-pmb.h -+ -+BROADCOM SPECIFIC AMBA DRIVER (BCMA) -+M: Rafał Miłecki <zajec5@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/bcma/ -+F: include/linux/bcma/ -+ -+BROADCOM SPI DRIVER -+M: Kamal Dasu <kdasu.kdev@gmail.com> -+M: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.yaml -+F: drivers/spi/spi-bcm-qspi.* -+F: drivers/spi/spi-brcmstb-qspi.c -+F: drivers/spi/spi-iproc-qspi.c -+ -+BROADCOM STB AVS CPUFREQ DRIVER -+M: Markus Mayer <mmayer@broadcom.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt -+F: drivers/cpufreq/brcmstb* -+ -+BROADCOM STB AVS TMON DRIVER -+M: Markus Mayer <mmayer@broadcom.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/thermal/brcm,avs-tmon.txt -+F: drivers/thermal/broadcom/brcmstb* -+ -+BROADCOM STB DPFE DRIVER -+M: Markus Mayer <mmayer@broadcom.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/memory-controllers/brcm,dpfe-cpu.yaml -+F: drivers/memory/brcmstb_dpfe.c -+ -+BROADCOM STB NAND FLASH DRIVER -+M: Brian Norris <computersforpeace@gmail.com> -+M: Kamal Dasu <kdasu.kdev@gmail.com> -+L: linux-mtd@lists.infradead.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: drivers/mtd/nand/raw/brcmnand/ -+ -+BROADCOM STB PCIE DRIVER -+M: Jim Quinlan <jim2101024@gmail.com> -+M: Nicolas Saenz Julienne <nsaenz@kernel.org> -+M: Florian Fainelli <f.fainelli@gmail.com> -+M: bcm-kernel-feedback-list@broadcom.com -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml -+F: drivers/pci/controller/pcie-brcmstb.c -+ -+BROADCOM SYSTEMPORT ETHERNET DRIVER -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: bcm-kernel-feedback-list@broadcom.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/broadcom/bcmsysport.* -+F: drivers/net/ethernet/broadcom/unimac.h -+ -+BROADCOM TG3 GIGABIT ETHERNET DRIVER -+M: Siva Reddy Kallam <siva.kallam@broadcom.com> -+M: Prashant Sreedharan <prashant@broadcom.com> -+M: Michael Chan <mchan@broadcom.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/broadcom/tg3.* -+ -+BROADCOM VK DRIVER -+M: Scott Branden <scott.branden@broadcom.com> -+L: bcm-kernel-feedback-list@broadcom.com -+S: Supported -+F: drivers/misc/bcm-vk/ -+F: include/uapi/linux/misc/bcm_vk.h -+ -+BROCADE BFA FC SCSI DRIVER -+M: Anil Gurumurthy <anil.gurumurthy@qlogic.com> -+M: Sudarsana Kalluru <sudarsana.kalluru@qlogic.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/bfa/ -+ -+BROCADE BNA 10 GIGABIT ETHERNET DRIVER -+M: Rasesh Mody <rmody@marvell.com> -+M: Sudarsana Kalluru <skalluru@marvell.com> -+M: GR-Linux-NIC-Dev@marvell.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/brocade/bna/ -+ -+BSG (block layer generic sg v4 driver) -+M: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: block/bsg.c -+F: include/linux/bsg.h -+F: include/uapi/linux/bsg.h -+ -+BT87X AUDIO DRIVER -+M: Clemens Ladisch <clemens@ladisch.de> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: Documentation/sound/cards/bt87x.rst -+F: sound/pci/bt87x.c -+ -+BT8XXGPIO DRIVER -+M: Michael Buesch <m@bues.ch> -+S: Maintained -+W: http://bu3sch.de/btgpio.php -+F: drivers/gpio/gpio-bt8xx.c -+ -+BTRFS FILE SYSTEM -+M: Chris Mason <clm@fb.com> -+M: Josef Bacik <josef@toxicpanda.com> -+M: David Sterba <dsterba@suse.com> -+L: linux-btrfs@vger.kernel.org -+S: Maintained -+W: http://btrfs.wiki.kernel.org/ -+Q: http://patchwork.kernel.org/project/linux-btrfs/list/ -+C: irc://irc.libera.chat/btrfs -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git -+F: Documentation/filesystems/btrfs.rst -+F: fs/btrfs/ -+F: include/linux/btrfs* -+F: include/uapi/linux/btrfs* -+ -+BTTV VIDEO4LINUX DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/driver-api/media/drivers/bttv* -+F: drivers/media/pci/bt8xx/bttv* -+ -+BUS FREQUENCY DRIVER FOR SAMSUNG EXYNOS -+M: Chanwoo Choi <cw00.choi@samsung.com> -+L: linux-pm@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git -+F: Documentation/devicetree/bindings/devfreq/exynos-bus.txt -+F: drivers/devfreq/exynos-bus.c -+ -+BUSLOGIC SCSI DRIVER -+M: Khalid Aziz <khalid@gonehiking.org> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/BusLogic.* -+F: drivers/scsi/FlashPoint.* -+ -+C-MEDIA CMI8788 DRIVER -+M: Clemens Ladisch <clemens@ladisch.de> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: sound/pci/oxygen/ -+ -+C-SKY ARCHITECTURE -+M: Guo Ren <guoren@kernel.org> -+L: linux-csky@vger.kernel.org -+S: Supported -+T: git https://github.com/c-sky/csky-linux.git -+F: Documentation/devicetree/bindings/csky/ -+F: Documentation/devicetree/bindings/interrupt-controller/csky,* -+F: Documentation/devicetree/bindings/timer/csky,* -+F: arch/csky/ -+F: drivers/clocksource/timer-gx6605s.c -+F: drivers/clocksource/timer-mp-csky.c -+F: drivers/irqchip/irq-csky-* -+N: csky -+K: csky -+ -+CA8210 IEEE-802.15.4 RADIO DRIVER -+M: Harry Morris <h.morris@cascoda.com> -+L: linux-wpan@vger.kernel.org -+S: Maintained -+W: https://github.com/Cascoda/ca8210-linux.git -+F: Documentation/devicetree/bindings/net/ieee802154/ca8210.txt -+F: drivers/net/ieee802154/ca8210.c -+ -+CANAAN/KENDRYTE K210 SOC FPIOA DRIVER -+M: Damien Le Moal <damien.lemoal@wdc.com> -+L: linux-riscv@lists.infradead.org -+L: linux-gpio@vger.kernel.org (pinctrl driver) -+F: Documentation/devicetree/bindings/pinctrl/canaan,k210-fpioa.yaml -+F: drivers/pinctrl/pinctrl-k210.c -+ -+CANAAN/KENDRYTE K210 SOC RESET CONTROLLER DRIVER -+M: Damien Le Moal <damien.lemoal@wdc.com> -+L: linux-kernel@vger.kernel.org -+L: linux-riscv@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/reset/canaan,k210-rst.yaml -+F: drivers/reset/reset-k210.c -+ -+CANAAN/KENDRYTE K210 SOC SYSTEM CONTROLLER DRIVER -+M: Damien Le Moal <damien.lemoal@wdc.com> -+L: linux-riscv@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/canaan,k210-sysctl.yaml -+F: drivers/soc/canaan/ -+F: include/soc/canaan/ -+ -+CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS -+M: David Howells <dhowells@redhat.com> -+L: linux-cachefs@redhat.com (moderated for non-subscribers) -+S: Supported -+F: Documentation/filesystems/caching/cachefiles.rst -+F: fs/cachefiles/ -+ -+CADENCE MIPI-CSI2 BRIDGES -+M: Maxime Ripard <mripard@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/cdns,*.txt -+F: drivers/media/platform/cadence/cdns-csi2* -+ -+CADENCE NAND DRIVER -+L: linux-mtd@lists.infradead.org -+S: Orphan -+F: Documentation/devicetree/bindings/mtd/cadence-nand-controller.txt -+F: drivers/mtd/nand/raw/cadence-nand-controller.c -+ -+CADENCE USB3 DRD IP DRIVER -+M: Peter Chen <peter.chen@kernel.org> -+M: Pawel Laszczak <pawell@cadence.com> -+R: Roger Quadros <rogerq@kernel.org> -+R: Aswath Govindraju <a-govindraju@ti.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git -+F: Documentation/devicetree/bindings/usb/cdns,usb3.yaml -+F: drivers/usb/cdns3/ -+X: drivers/usb/cdns3/cdnsp* -+ -+CADENCE USBSSP DRD IP DRIVER -+M: Pawel Laszczak <pawell@cadence.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git -+F: drivers/usb/cdns3/ -+X: drivers/usb/cdns3/cdns3* -+ -+CADET FM/AM RADIO RECEIVER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-cadet* -+ -+CAFE CMOS INTEGRATED CAMERA CONTROLLER DRIVER -+L: linux-media@vger.kernel.org -+S: Orphan -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/cafe_ccic* -+F: drivers/media/platform/marvell-ccic/ -+ -+CAIF NETWORK LAYER -+L: netdev@vger.kernel.org -+S: Orphan -+F: Documentation/networking/caif/ -+F: drivers/net/caif/ -+F: include/net/caif/ -+F: include/uapi/linux/caif/ -+F: net/caif/ -+ -+CAKE QDISC -+M: Toke Høiland-Jørgensen <toke@toke.dk> -+L: cake@lists.bufferbloat.net (moderated for non-subscribers) -+S: Maintained -+F: net/sched/sch_cake.c -+ -+CAN NETWORK DRIVERS -+M: Wolfgang Grandegger <wg@grandegger.com> -+M: Marc Kleine-Budde <mkl@pengutronix.de> -+L: linux-can@vger.kernel.org -+S: Maintained -+W: https://github.com/linux-can -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git -+F: Documentation/devicetree/bindings/net/can/ -+F: Documentation/devicetree/bindings/phy/ti,tcan104x-can.yaml -+F: drivers/net/can/ -+F: drivers/phy/phy-can-transceiver.c -+F: include/linux/can/bittiming.h -+F: include/linux/can/dev.h -+F: include/linux/can/led.h -+F: include/linux/can/length.h -+F: include/linux/can/platform/ -+F: include/linux/can/rx-offload.h -+F: include/uapi/linux/can/error.h -+F: include/uapi/linux/can/netlink.h -+F: include/uapi/linux/can/vxcan.h -+ -+CAN NETWORK LAYER -+M: Oliver Hartkopp <socketcan@hartkopp.net> -+M: Marc Kleine-Budde <mkl@pengutronix.de> -+L: linux-can@vger.kernel.org -+S: Maintained -+W: https://github.com/linux-can -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git -+F: Documentation/networking/can.rst -+F: include/linux/can/can-ml.h -+F: include/linux/can/core.h -+F: include/linux/can/skb.h -+F: include/net/netns/can.h -+F: include/uapi/linux/can.h -+F: include/uapi/linux/can/bcm.h -+F: include/uapi/linux/can/gw.h -+F: include/uapi/linux/can/isotp.h -+F: include/uapi/linux/can/raw.h -+F: net/can/ -+ -+CAN-J1939 NETWORK LAYER -+M: Robin van der Gracht <robin@protonic.nl> -+M: Oleksij Rempel <o.rempel@pengutronix.de> -+R: kernel@pengutronix.de -+L: linux-can@vger.kernel.org -+S: Maintained -+F: Documentation/networking/j1939.rst -+F: include/uapi/linux/can/j1939.h -+F: net/can/j1939/ -+ -+CAPABILITIES -+M: Serge Hallyn <serge@hallyn.com> -+L: linux-security-module@vger.kernel.org -+S: Supported -+F: include/linux/capability.h -+F: include/uapi/linux/capability.h -+F: kernel/capability.c -+F: security/commoncap.c -+ -+CAPELLA MICROSYSTEMS LIGHT SENSOR DRIVER -+M: Kevin Tsai <ktsai@capellamicro.com> -+S: Maintained -+F: drivers/iio/light/cm* -+ -+CARL9170 LINUX COMMUNITY WIRELESS DRIVER -+M: Christian Lamparter <chunkeey@googlemail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/en/users/Drivers/carl9170 -+F: drivers/net/wireless/ath/carl9170/ -+ -+CAVIUM I2C DRIVER -+M: Robert Richter <rric@kernel.org> -+S: Odd Fixes -+W: http://www.marvell.com -+F: drivers/i2c/busses/i2c-octeon* -+F: drivers/i2c/busses/i2c-thunderx* -+ -+CAVIUM LIQUIDIO NETWORK DRIVER -+M: Derek Chickles <dchickles@marvell.com> -+M: Satanand Burla <sburla@marvell.com> -+M: Felix Manlunas <fmanlunas@marvell.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.marvell.com -+F: drivers/net/ethernet/cavium/liquidio/ -+ -+CAVIUM MMC DRIVER -+M: Robert Richter <rric@kernel.org> -+S: Odd Fixes -+W: http://www.marvell.com -+F: drivers/mmc/host/cavium* -+ -+CAVIUM OCTEON-TX CRYPTO DRIVER -+M: George Cherian <gcherian@marvell.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+W: http://www.marvell.com -+F: drivers/crypto/cavium/cpt/ -+ -+CAVIUM THUNDERX2 ARM64 SOC -+M: Robert Richter <rric@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Odd Fixes -+F: Documentation/devicetree/bindings/arm/cavium-thunder2.txt -+F: arch/arm64/boot/dts/cavium/thunder2-99xx* -+ -+CBS/ETF/TAPRIO QDISCS -+M: Vinicius Costa Gomes <vinicius.gomes@intel.com> -+S: Maintained -+L: netdev@vger.kernel.org -+F: net/sched/sch_cbs.c -+F: net/sched/sch_etf.c -+F: net/sched/sch_taprio.c -+ -+CC2520 IEEE-802.15.4 RADIO DRIVER -+M: Varka Bhadram <varkabhadram@gmail.com> -+L: linux-wpan@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/ieee802154/cc2520.txt -+F: drivers/net/ieee802154/cc2520.c -+F: include/linux/spi/cc2520.h -+ -+CCREE ARM TRUSTZONE CRYPTOCELL REE DRIVER -+M: Gilad Ben-Yossef <gilad@benyossef.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family -+F: drivers/crypto/ccree/ -+ -+CCTRNG ARM TRUSTZONE CRYPTOCELL TRUE RANDOM NUMBER GENERATOR (TRNG) DRIVER -+M: Hadar Gat <hadar.gat@arm.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+F: drivers/char/hw_random/cctrng.c -+F: drivers/char/hw_random/cctrng.h -+F: Documentation/devicetree/bindings/rng/arm-cctrng.yaml -+W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family -+ -+CEC FRAMEWORK -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Supported -+W: http://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/ABI/testing/debugfs-cec-error-inj -+F: Documentation/devicetree/bindings/media/cec.txt -+F: Documentation/driver-api/media/cec-core.rst -+F: Documentation/userspace-api/media/cec -+F: drivers/media/cec/ -+F: drivers/media/rc/keymaps/rc-cec.c -+F: include/media/cec-notifier.h -+F: include/media/cec.h -+F: include/uapi/linux/cec-funcs.h -+F: include/uapi/linux/cec.h -+ -+CEC GPIO DRIVER -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Supported -+W: http://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/cec-gpio.txt -+F: drivers/media/cec/platform/cec-gpio/ -+ -+CELL BROADBAND ENGINE ARCHITECTURE -+M: Arnd Bergmann <arnd@arndb.de> -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+W: http://www.ibm.com/developerworks/power/cell/ -+F: arch/powerpc/include/asm/cell*.h -+F: arch/powerpc/include/asm/spu*.h -+F: arch/powerpc/include/uapi/asm/spu*.h -+F: arch/powerpc/platforms/cell/ -+ -+CELLWISE CW2015 BATTERY DRIVER -+M: Tobias Schrammm <t.schramm@manjaro.org> -+S: Maintained -+F: Documentation/devicetree/bindings/power/supply/cw2015_battery.yaml -+F: drivers/power/supply/cw2015_battery.c -+ -+CEPH COMMON CODE (LIBCEPH) -+M: Ilya Dryomov <idryomov@gmail.com> -+M: Jeff Layton <jlayton@kernel.org> -+L: ceph-devel@vger.kernel.org -+S: Supported -+W: http://ceph.com/ -+T: git git://github.com/ceph/ceph-client.git -+F: include/linux/ceph/ -+F: include/linux/crush/ -+F: net/ceph/ -+ -+CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH) -+M: Jeff Layton <jlayton@kernel.org> -+M: Ilya Dryomov <idryomov@gmail.com> -+L: ceph-devel@vger.kernel.org -+S: Supported -+W: http://ceph.com/ -+T: git git://github.com/ceph/ceph-client.git -+F: Documentation/filesystems/ceph.rst -+F: fs/ceph/ -+ -+CERTIFICATE HANDLING -+M: David Howells <dhowells@redhat.com> -+M: David Woodhouse <dwmw2@infradead.org> -+L: keyrings@vger.kernel.org -+S: Maintained -+F: Documentation/admin-guide/module-signing.rst -+F: certs/ -+F: scripts/extract-cert.c -+F: scripts/sign-file.c -+ -+CFAG12864B LCD DRIVER -+M: Miguel Ojeda <ojeda@kernel.org> -+S: Maintained -+F: drivers/auxdisplay/cfag12864b.c -+F: include/linux/cfag12864b.h -+ -+CFAG12864BFB LCD FRAMEBUFFER DRIVER -+M: Miguel Ojeda <ojeda@kernel.org> -+S: Maintained -+F: drivers/auxdisplay/cfag12864bfb.c -+F: include/linux/cfag12864b.h -+ -+CHAR and MISC DRIVERS -+M: Arnd Bergmann <arnd@arndb.de> -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git -+F: drivers/char/ -+F: drivers/misc/ -+F: include/linux/miscdevice.h -+X: drivers/char/agp/ -+X: drivers/char/hw_random/ -+X: drivers/char/ipmi/ -+X: drivers/char/random.c -+X: drivers/char/tpm/ -+ -+CHECKPATCH -+M: Andy Whitcroft <apw@canonical.com> -+M: Joe Perches <joe@perches.com> -+R: Dwaipayan Ray <dwaipayanray1@gmail.com> -+R: Lukas Bulwahn <lukas.bulwahn@gmail.com> -+S: Maintained -+F: scripts/checkpatch.pl -+ -+CHECKPATCH DOCUMENTATION -+M: Dwaipayan Ray <dwaipayanray1@gmail.com> -+M: Lukas Bulwahn <lukas.bulwahn@gmail.com> -+R: Joe Perches <joe@perches.com> -+S: Maintained -+F: Documentation/dev-tools/checkpatch.rst -+ -+CHINESE DOCUMENTATION -+M: Alex Shi <alexs@kernel.org> -+S: Maintained -+F: Documentation/translations/zh_CN/ -+ -+CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER -+M: Peter Chen <peter.chen@kernel.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git -+F: drivers/usb/chipidea/ -+ -+CHIPONE ICN8318 I2C TOUCHSCREEN DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/input/touchscreen/chipone_icn8318.txt -+F: drivers/input/touchscreen/chipone_icn8318.c -+ -+CHIPONE ICN8505 I2C TOUCHSCREEN DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/touchscreen/chipone_icn8505.c -+ -+CHROME HARDWARE PLATFORM SUPPORT -+M: Benson Leung <bleung@chromium.org> -+M: Enric Balletbo i Serra <enric.balletbo@collabora.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux.git -+F: drivers/platform/chrome/ -+ -+CHROMEOS EC CODEC DRIVER -+M: Cheng-Yi Chiang <cychiang@chromium.org> -+R: Enric Balletbo i Serra <enric.balletbo@collabora.com> -+R: Guenter Roeck <groeck@chromium.org> -+S: Maintained -+F: Documentation/devicetree/bindings/sound/google,cros-ec-codec.yaml -+F: sound/soc/codecs/cros_ec_codec.* -+ -+CHROMEOS EC SUBDRIVERS -+M: Benson Leung <bleung@chromium.org> -+M: Enric Balletbo i Serra <enric.balletbo@collabora.com> -+R: Guenter Roeck <groeck@chromium.org> -+S: Maintained -+F: drivers/power/supply/cros_usbpd-charger.c -+N: cros_ec -+N: cros-ec -+ -+CHRONTEL CH7322 CEC DRIVER -+M: Jeff Chase <jnchase@google.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/chrontel,ch7322.yaml -+F: drivers/media/cec/i2c/ch7322.c -+ -+CIRRUS LOGIC AUDIO CODEC DRIVERS -+M: James Schulman <james.schulman@cirrus.com> -+M: David Rhodes <david.rhodes@cirrus.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+L: patches@opensource.cirrus.com -+S: Maintained -+F: sound/soc/codecs/cs* -+ -+CIRRUS LOGIC EP93XX ETHERNET DRIVER -+M: Hartley Sweeten <hsweeten@visionengravers.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/cirrus/ep93xx_eth.c -+ -+CIRRUS LOGIC LOCHNAGAR DRIVER -+M: Charles Keepax <ckeepax@opensource.cirrus.com> -+M: Richard Fitzgerald <rf@opensource.cirrus.com> -+L: patches@opensource.cirrus.com -+S: Supported -+F: Documentation/devicetree/bindings/clock/cirrus,lochnagar.yaml -+F: Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.yaml -+F: Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml -+F: Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.yaml -+F: Documentation/devicetree/bindings/sound/cirrus,lochnagar.yaml -+F: Documentation/hwmon/lochnagar.rst -+F: drivers/clk/clk-lochnagar.c -+F: drivers/hwmon/lochnagar-hwmon.c -+F: drivers/mfd/lochnagar-i2c.c -+F: drivers/pinctrl/cirrus/pinctrl-lochnagar.c -+F: drivers/regulator/lochnagar-regulator.c -+F: include/dt-bindings/clk/lochnagar.h -+F: include/dt-bindings/pinctrl/lochnagar.h -+F: include/linux/mfd/lochnagar* -+F: sound/soc/codecs/lochnagar-sc.c -+ -+CIRRUS LOGIC MADERA CODEC DRIVERS -+M: Charles Keepax <ckeepax@opensource.cirrus.com> -+M: Richard Fitzgerald <rf@opensource.cirrus.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+L: patches@opensource.cirrus.com -+S: Supported -+W: https://github.com/CirrusLogic/linux-drivers/wiki -+T: git https://github.com/CirrusLogic/linux-drivers.git -+F: Documentation/devicetree/bindings/mfd/cirrus,madera.yaml -+F: Documentation/devicetree/bindings/pinctrl/cirrus,madera.yaml -+F: Documentation/devicetree/bindings/sound/cirrus,madera.yaml -+F: drivers/gpio/gpio-madera* -+F: drivers/irqchip/irq-madera* -+F: drivers/mfd/cs47l* -+F: drivers/mfd/madera* -+F: drivers/pinctrl/cirrus/* -+F: include/dt-bindings/sound/madera* -+F: include/linux/irqchip/irq-madera* -+F: include/linux/mfd/madera/* -+F: include/sound/madera* -+F: sound/soc/codecs/cs47l* -+F: sound/soc/codecs/madera* -+ -+CISCO FCOE HBA DRIVER -+M: Satish Kharat <satishkh@cisco.com> -+M: Sesidhar Baddela <sebaddel@cisco.com> -+M: Karan Tilak Kumar <kartilak@cisco.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/fnic/ -+ -+CISCO SCSI HBA DRIVER -+M: Karan Tilak Kumar <kartilak@cisco.com> -+M: Sesidhar Baddela <sebaddel@cisco.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/snic/ -+ -+CISCO VIC ETHERNET NIC DRIVER -+M: Christian Benvenuti <benve@cisco.com> -+M: Govindarajulu Varadarajan <_govind@gmx.com> -+S: Supported -+F: drivers/net/ethernet/cisco/enic/ -+ -+CISCO VIC LOW LATENCY NIC DRIVER -+M: Christian Benvenuti <benve@cisco.com> -+M: Nelson Escobar <neescoba@cisco.com> -+S: Supported -+F: drivers/infiniband/hw/usnic/ -+ -+CLANG-FORMAT FILE -+M: Miguel Ojeda <ojeda@kernel.org> -+S: Maintained -+F: .clang-format -+ -+CLANG/LLVM BUILD SUPPORT -+M: Nathan Chancellor <nathan@kernel.org> -+M: Nick Desaulniers <ndesaulniers@google.com> -+L: llvm@lists.linux.dev -+S: Supported -+W: https://clangbuiltlinux.github.io/ -+B: https://github.com/ClangBuiltLinux/linux/issues -+C: irc://irc.libera.chat/clangbuiltlinux -+F: Documentation/kbuild/llvm.rst -+F: include/linux/compiler-clang.h -+F: scripts/Makefile.clang -+F: scripts/clang-tools/ -+K: \b(?i:clang|llvm)\b -+ -+CLANG CONTROL FLOW INTEGRITY SUPPORT -+M: Sami Tolvanen <samitolvanen@google.com> -+M: Kees Cook <keescook@chromium.org> -+R: Nathan Chancellor <nathan@kernel.org> -+R: Nick Desaulniers <ndesaulniers@google.com> -+L: llvm@lists.linux.dev -+S: Supported -+B: https://github.com/ClangBuiltLinux/linux/issues -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/clang/features -+F: include/linux/cfi.h -+F: kernel/cfi.c -+ -+CLEANCACHE API -+M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: include/linux/cleancache.h -+F: mm/cleancache.c -+ -+CLK API -+M: Russell King <linux@armlinux.org.uk> -+L: linux-clk@vger.kernel.org -+S: Maintained -+F: include/linux/clk.h -+ -+CLOCKSOURCE, CLOCKEVENT DRIVERS -+M: Daniel Lezcano <daniel.lezcano@linaro.org> -+M: Thomas Gleixner <tglx@linutronix.de> -+L: linux-kernel@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core -+F: Documentation/devicetree/bindings/timer/ -+F: drivers/clocksource/ -+ -+CMPC ACPI DRIVER -+M: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> -+M: Daniel Oliveira Nascimento <don@syst.com.br> -+L: platform-driver-x86@vger.kernel.org -+S: Supported -+F: drivers/platform/x86/classmate-laptop.c -+ -+COBALT MEDIA DRIVER -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/pci/cobalt/ -+ -+COCCINELLE/Semantic Patches (SmPL) -+M: Julia Lawall <Julia.Lawall@inria.fr> -+M: Gilles Muller <Gilles.Muller@inria.fr> -+M: Nicolas Palix <nicolas.palix@imag.fr> -+M: Michal Marek <michal.lkml@markovi.net> -+L: cocci@systeme.lip6.fr (moderated for non-subscribers) -+S: Supported -+W: http://coccinelle.lip6.fr/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc -+F: Documentation/dev-tools/coccinelle.rst -+F: scripts/coccicheck -+F: scripts/coccinelle/ -+ -+CODA FILE SYSTEM -+M: Jan Harkes <jaharkes@cs.cmu.edu> -+M: coda@cs.cmu.edu -+L: codalist@coda.cs.cmu.edu -+S: Maintained -+W: http://www.coda.cs.cmu.edu/ -+F: Documentation/filesystems/coda.rst -+F: fs/coda/ -+F: include/linux/coda*.h -+F: include/uapi/linux/coda*.h -+ -+CODA V4L2 MEM2MEM DRIVER -+M: Philipp Zabel <p.zabel@pengutronix.de> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/coda.yaml -+F: drivers/media/platform/coda/ -+ -+CODE OF CONDUCT -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+S: Supported -+F: Documentation/process/code-of-conduct-interpretation.rst -+F: Documentation/process/code-of-conduct.rst -+ -+COMEDI DRIVERS -+M: Ian Abbott <abbotti@mev.co.uk> -+M: H Hartley Sweeten <hsweeten@visionengravers.com> -+S: Odd Fixes -+F: drivers/comedi/ -+ -+COMMON CLK FRAMEWORK -+M: Michael Turquette <mturquette@baylibre.com> -+M: Stephen Boyd <sboyd@kernel.org> -+L: linux-clk@vger.kernel.org -+S: Maintained -+Q: http://patchwork.kernel.org/project/linux-clk/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git -+F: Documentation/devicetree/bindings/clock/ -+F: drivers/clk/ -+F: include/linux/clk-pr* -+F: include/linux/clk/ -+F: include/linux/of_clk.h -+X: drivers/clk/clkdev.c -+ -+COMMON INTERNET FILE SYSTEM CLIENT (CIFS) -+M: Steve French <sfrench@samba.org> -+L: linux-cifs@vger.kernel.org -+L: samba-technical@lists.samba.org (moderated for non-subscribers) -+S: Supported -+W: http://linux-cifs.samba.org/ -+T: git git://git.samba.org/sfrench/cifs-2.6.git -+F: Documentation/admin-guide/cifs/ -+F: fs/cifs/ -+F: fs/smbfs_common/ -+ -+COMPACTPCI HOTPLUG CORE -+M: Scott Murray <scott@spiteful.org> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: drivers/pci/hotplug/cpci_hotplug* -+ -+COMPACTPCI HOTPLUG GENERIC DRIVER -+M: Scott Murray <scott@spiteful.org> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: drivers/pci/hotplug/cpcihp_generic.c -+ -+COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER -+M: Scott Murray <scott@spiteful.org> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: drivers/pci/hotplug/cpcihp_zt5550.* -+ -+COMPAL LAPTOP SUPPORT -+M: Cezary Jackiewicz <cezary.jackiewicz@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/compal-laptop.c -+ -+COMPILER ATTRIBUTES -+M: Miguel Ojeda <ojeda@kernel.org> -+R: Nick Desaulniers <ndesaulniers@google.com> -+S: Maintained -+F: include/linux/compiler_attributes.h -+ -+COMPUTE EXPRESS LINK (CXL) -+M: Alison Schofield <alison.schofield@intel.com> -+M: Vishal Verma <vishal.l.verma@intel.com> -+M: Ira Weiny <ira.weiny@intel.com> -+M: Ben Widawsky <ben.widawsky@intel.com> -+M: Dan Williams <dan.j.williams@intel.com> -+L: linux-cxl@vger.kernel.org -+S: Maintained -+F: drivers/cxl/ -+F: include/uapi/linux/cxl_mem.h -+ -+CONEXANT ACCESSRUNNER USB DRIVER -+L: accessrunner-general@lists.sourceforge.net -+S: Orphan -+W: http://accessrunner.sourceforge.net/ -+F: drivers/usb/atm/cxacru.c -+ -+CONFIGFS -+M: Joel Becker <jlbec@evilplan.org> -+M: Christoph Hellwig <hch@lst.de> -+S: Supported -+T: git git://git.infradead.org/users/hch/configfs.git -+F: fs/configfs/ -+F: include/linux/configfs.h -+F: samples/configfs/ -+ -+CONSOLE SUBSYSTEM -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+S: Supported -+F: drivers/video/console/ -+F: include/linux/console* -+ -+CONTEXT TRACKING -+M: Frederic Weisbecker <frederic@kernel.org> -+S: Maintained -+F: kernel/context_tracking.c -+F: include/linux/context_tracking* -+ -+CONTROL GROUP (CGROUP) -+M: Tejun Heo <tj@kernel.org> -+M: Zefan Li <lizefan.x@bytedance.com> -+M: Johannes Weiner <hannes@cmpxchg.org> -+L: cgroups@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git -+F: Documentation/admin-guide/cgroup-v1/ -+F: Documentation/admin-guide/cgroup-v2.rst -+F: include/linux/cgroup* -+F: kernel/cgroup/ -+ -+CONTROL GROUP - BLOCK IO CONTROLLER (BLKIO) -+M: Tejun Heo <tj@kernel.org> -+M: Jens Axboe <axboe@kernel.dk> -+L: cgroups@vger.kernel.org -+L: linux-block@vger.kernel.org -+T: git git://git.kernel.dk/linux-block -+F: Documentation/admin-guide/cgroup-v1/blkio-controller.rst -+F: block/bfq-cgroup.c -+F: block/blk-cgroup.c -+F: block/blk-iolatency.c -+F: block/blk-throttle.c -+F: include/linux/blk-cgroup.h -+ -+CONTROL GROUP - CPUSET -+M: Zefan Li <lizefan.x@bytedance.com> -+L: cgroups@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git -+F: Documentation/admin-guide/cgroup-v1/cpusets.rst -+F: include/linux/cpuset.h -+F: kernel/cgroup/cpuset.c -+ -+CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG) -+M: Johannes Weiner <hannes@cmpxchg.org> -+M: Michal Hocko <mhocko@kernel.org> -+M: Vladimir Davydov <vdavydov.dev@gmail.com> -+L: cgroups@vger.kernel.org -+L: linux-mm@kvack.org -+S: Maintained -+F: mm/memcontrol.c -+F: mm/swap_cgroup.c -+ -+CORETEMP HARDWARE MONITORING DRIVER -+M: Fenghua Yu <fenghua.yu@intel.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/coretemp.rst -+F: drivers/hwmon/coretemp.c -+ -+CORSAIR-CPRO HARDWARE MONITOR DRIVER -+M: Marius Zachmann <mail@mariuszachmann.de> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/corsair-cpro.c -+ -+CORSAIR-PSU HARDWARE MONITOR DRIVER -+M: Wilken Gottwalt <wilken.gottwalt@posteo.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/corsair-psu.rst -+F: drivers/hwmon/corsair-psu.c -+ -+COSA/SRP SYNC SERIAL DRIVER -+M: Jan "Yenya" Kasprzak <kas@fi.muni.cz> -+S: Maintained -+W: http://www.fi.muni.cz/~kas/cosa/ -+F: drivers/net/wan/cosa* -+ -+COUNTER SUBSYSTEM -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-counter -+F: Documentation/driver-api/generic-counter.rst -+F: drivers/counter/ -+F: include/linux/counter.h -+F: include/linux/counter_enum.h -+ -+CP2615 I2C DRIVER -+M: Bence Csókás <bence98@sch.bme.hu> -+S: Maintained -+F: drivers/i2c/busses/i2c-cp2615.c -+ -+CPMAC ETHERNET DRIVER -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/ti/cpmac.c -+ -+CPU FREQUENCY DRIVERS - VEXPRESS SPC ARM BIG LITTLE -+M: Viresh Kumar <viresh.kumar@linaro.org> -+M: Sudeep Holla <sudeep.holla@arm.com> -+L: linux-pm@vger.kernel.org -+S: Maintained -+W: http://www.arm.com/products/processors/technologies/biglittleprocessing.php -+F: drivers/cpufreq/vexpress-spc-cpufreq.c -+ -+CPU FREQUENCY SCALING FRAMEWORK -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Viresh Kumar <viresh.kumar@linaro.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git (For ARM Updates) -+F: Documentation/admin-guide/pm/cpufreq.rst -+F: Documentation/admin-guide/pm/intel_pstate.rst -+F: Documentation/cpu-freq/ -+F: Documentation/devicetree/bindings/cpufreq/ -+F: drivers/cpufreq/ -+F: include/linux/cpufreq.h -+F: include/linux/sched/cpufreq.h -+F: kernel/sched/cpufreq*.c -+F: tools/testing/selftests/cpufreq/ -+ -+CPU IDLE TIME MANAGEMENT FRAMEWORK -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Daniel Lezcano <daniel.lezcano@linaro.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git -+F: Documentation/admin-guide/pm/cpuidle.rst -+F: Documentation/driver-api/pm/cpuidle.rst -+F: drivers/cpuidle/ -+F: include/linux/cpuidle.h -+ -+CPU POWER MONITORING SUBSYSTEM -+M: Thomas Renninger <trenn@suse.com> -+M: Shuah Khan <shuah@kernel.org> -+M: Shuah Khan <skhan@linuxfoundation.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: tools/power/cpupower/ -+ -+CPUID/MSR DRIVER -+M: "H. Peter Anvin" <hpa@zytor.com> -+S: Maintained -+F: arch/x86/kernel/cpuid.c -+F: arch/x86/kernel/msr.c -+ -+CPUIDLE DRIVER - ARM BIG LITTLE -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+M: Daniel Lezcano <daniel.lezcano@linaro.org> -+L: linux-pm@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git -+F: drivers/cpuidle/cpuidle-big_little.c -+ -+CPUIDLE DRIVER - ARM EXYNOS -+M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> -+M: Daniel Lezcano <daniel.lezcano@linaro.org> -+M: Kukjin Kim <kgene@kernel.org> -+L: linux-pm@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Supported -+F: arch/arm/mach-exynos/pm.c -+F: drivers/cpuidle/cpuidle-exynos.c -+F: include/linux/platform_data/cpuidle-exynos.h -+ -+CPUIDLE DRIVER - ARM PSCI -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+M: Sudeep Holla <sudeep.holla@arm.com> -+L: linux-pm@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: drivers/cpuidle/cpuidle-psci.c -+ -+CPUIDLE DRIVER - ARM PSCI PM DOMAIN -+M: Ulf Hansson <ulf.hansson@linaro.org> -+L: linux-pm@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: drivers/cpuidle/cpuidle-psci.h -+F: drivers/cpuidle/cpuidle-psci-domain.c -+ -+CRAMFS FILESYSTEM -+M: Nicolas Pitre <nico@fluxnic.net> -+S: Maintained -+F: Documentation/filesystems/cramfs.rst -+F: fs/cramfs/ -+ -+CREATIVE SB0540 -+M: Bastien Nocera <hadess@hadess.net> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/hid-creative-sb0540.c -+ -+CRYPTO API -+M: Herbert Xu <herbert@gondor.apana.org.au> -+M: "David S. Miller" <davem@davemloft.net> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git -+F: Documentation/crypto/ -+F: Documentation/devicetree/bindings/crypto/ -+F: arch/*/crypto/ -+F: crypto/ -+F: drivers/crypto/ -+F: include/crypto/ -+F: include/linux/crypto* -+F: lib/crypto/ -+ -+CRYPTOGRAPHIC RANDOM NUMBER GENERATOR -+M: Neil Horman <nhorman@tuxdriver.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: crypto/ansi_cprng.c -+F: crypto/rng.c -+ -+CS3308 MEDIA DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: http://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/cs3308.c -+ -+CS5535 Audio ALSA driver -+M: Jaya Kumar <jayakumar.alsa@gmail.com> -+S: Maintained -+F: sound/pci/cs5535audio/ -+ -+CSI DRIVERS FOR ALLWINNER V3s -+M: Yong Deng <yong.deng@magewell.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml -+F: drivers/media/platform/sunxi/sun6i-csi/ -+ -+CW1200 WLAN driver -+M: Solomon Peachy <pizza@shaftnet.org> -+S: Maintained -+F: drivers/net/wireless/st/cw1200/ -+ -+CX18 VIDEO4LINUX DRIVER -+M: Andy Walls <awalls@md.metrocast.net> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/pci/cx18/ -+F: include/uapi/linux/ivtv* -+ -+CX2341X MPEG ENCODER HELPER MODULE -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/common/cx2341x* -+F: include/media/drv-intf/cx2341x.h -+ -+CX24120 MEDIA DRIVER -+M: Jemma Denson <jdenson@gmail.com> -+M: Patrick Boettcher <patrick.boettcher@posteo.de> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/cx24120* -+ -+CX88 VIDEO4LINUX DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/driver-api/media/drivers/cx88* -+F: drivers/media/pci/cx88/ -+ -+CXD2820R MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/cxd2820r* -+ -+CXGB3 ETHERNET DRIVER (CXGB3) -+M: Raju Rangoju <rajur@chelsio.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.chelsio.com -+F: drivers/net/ethernet/chelsio/cxgb3/ -+ -+CXGB3 ISCSI DRIVER (CXGB3I) -+M: Karen Xie <kxie@chelsio.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.chelsio.com -+F: drivers/scsi/cxgbi/cxgb3i -+ -+CXGB4 CRYPTO DRIVER (chcr) -+M: Ayush Sawal <ayush.sawal@chelsio.com> -+M: Vinay Kumar Yadav <vinay.yadav@chelsio.com> -+M: Rohit Maheshwari <rohitm@chelsio.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+W: http://www.chelsio.com -+F: drivers/crypto/chelsio -+ -+CXGB4 INLINE CRYPTO DRIVER -+M: Ayush Sawal <ayush.sawal@chelsio.com> -+M: Vinay Kumar Yadav <vinay.yadav@chelsio.com> -+M: Rohit Maheshwari <rohitm@chelsio.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.chelsio.com -+F: drivers/net/ethernet/chelsio/inline_crypto/ -+ -+CXGB4 ETHERNET DRIVER (CXGB4) -+M: Raju Rangoju <rajur@chelsio.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.chelsio.com -+F: drivers/net/ethernet/chelsio/cxgb4/ -+ -+CXGB4 ISCSI DRIVER (CXGB4I) -+M: Karen Xie <kxie@chelsio.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.chelsio.com -+F: drivers/scsi/cxgbi/cxgb4i -+ -+CXGB4 IWARP RNIC DRIVER (IW_CXGB4) -+M: Potnuri Bharat Teja <bharat@chelsio.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: http://www.openfabrics.org -+F: drivers/infiniband/hw/cxgb4/ -+F: include/uapi/rdma/cxgb4-abi.h -+ -+CXGB4VF ETHERNET DRIVER (CXGB4VF) -+M: Raju Rangoju <rajur@chelsio.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.chelsio.com -+F: drivers/net/ethernet/chelsio/cxgb4vf/ -+ -+CXL (IBM Coherent Accelerator Processor Interface CAPI) DRIVER -+M: Frederic Barrat <fbarrat@linux.ibm.com> -+M: Andrew Donnellan <ajd@linux.ibm.com> -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+F: Documentation/ABI/testing/sysfs-class-cxl -+F: Documentation/powerpc/cxl.rst -+F: arch/powerpc/platforms/powernv/pci-cxl.c -+F: drivers/misc/cxl/ -+F: include/misc/cxl* -+F: include/uapi/misc/cxl.h -+ -+CXLFLASH (IBM Coherent Accelerator Processor Interface CAPI Flash) SCSI DRIVER -+M: Manoj N. Kumar <manoj@linux.ibm.com> -+M: Matthew R. Ochs <mrochs@linux.ibm.com> -+M: Uma Krishnan <ukrishn@linux.ibm.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: Documentation/powerpc/cxlflash.rst -+F: drivers/scsi/cxlflash/ -+F: include/uapi/scsi/cxlflash_ioctl.h -+ -+CYBERPRO FB DRIVER -+M: Russell King <linux@armlinux.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.armlinux.org.uk/ -+F: drivers/video/fbdev/cyber2000fb.* -+ -+CYCLADES PC300 DRIVER -+S: Orphan -+F: drivers/net/wan/pc300* -+ -+CYPRESS_FIRMWARE MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/common/cypress_firmware* -+ -+CYPRESS CY8CTMA140 TOUCHSCREEN DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/touchscreen/cy8ctma140.c -+ -+CYTTSP TOUCHSCREEN DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/touchscreen/cyttsp* -+ -+D-LINK DIR-685 TOUCHKEYS DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-input@vger.kernel.org -+S: Supported -+F: drivers/input/keyboard/dlink-dir685-touchkeys.c -+ -+DALLAS/MAXIM DS1685-FAMILY REAL TIME CLOCK -+M: Joshua Kinard <kumba@gentoo.org> -+S: Maintained -+F: drivers/rtc/rtc-ds1685.c -+F: include/linux/rtc/ds1685.h -+ -+DAMA SLAVE for AX.25 -+M: Joerg Reuter <jreuter@yaina.de> -+L: linux-hams@vger.kernel.org -+S: Maintained -+W: http://yaina.de/jreuter/ -+W: http://www.qsl.net/dl1bke/ -+F: net/ax25/af_ax25.c -+F: net/ax25/ax25_dev.c -+F: net/ax25/ax25_ds_* -+F: net/ax25/ax25_in.c -+F: net/ax25/ax25_out.c -+F: net/ax25/ax25_timer.c -+F: net/ax25/sysctl_net_ax25.c -+ -+DATA ACCESS MONITOR -+M: SeongJae Park <sjpark@amazon.de> -+L: linux-mm@kvack.org -+S: Maintained -+F: Documentation/admin-guide/mm/damon/ -+F: Documentation/vm/damon/ -+F: include/linux/damon.h -+F: include/trace/events/damon.h -+F: mm/damon/ -+F: tools/testing/selftests/damon/ -+ -+DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER -+L: netdev@vger.kernel.org -+S: Orphan -+F: Documentation/networking/device_drivers/ethernet/dec/dmfe.rst -+F: drivers/net/ethernet/dec/tulip/dmfe.c -+ -+DC390/AM53C974 SCSI driver -+M: Hannes Reinecke <hare@suse.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/am53c974.c -+ -+DC395x SCSI driver -+M: Oliver Neukum <oliver@neukum.org> -+M: Ali Akcaagac <aliakc@web.de> -+M: Jamie Lenehan <lenehan@twibble.org> -+L: dc395x@twibble.org -+S: Maintained -+W: http://twibble.org/dist/dc395x/ -+W: http://lists.twibble.org/mailman/listinfo/dc395x/ -+F: Documentation/scsi/dc395x.rst -+F: drivers/scsi/dc395x.* -+ -+DCCP PROTOCOL -+L: dccp@vger.kernel.org -+S: Orphan -+W: http://www.linuxfoundation.org/collaborate/workgroups/networking/dccp -+F: include/linux/dccp.h -+F: include/linux/tfrc.h -+F: include/uapi/linux/dccp.h -+F: net/dccp/ -+ -+DECnet NETWORK LAYER -+L: linux-decnet-user@lists.sourceforge.net -+S: Orphan -+W: http://linux-decnet.sourceforge.net -+F: Documentation/networking/decnet.rst -+F: net/decnet/ -+ -+DECSTATION PLATFORM SUPPORT -+M: "Maciej W. Rozycki" <macro@orcam.me.uk> -+L: linux-mips@vger.kernel.org -+S: Maintained -+W: http://www.linux-mips.org/wiki/DECstation -+F: arch/mips/dec/ -+F: arch/mips/include/asm/dec/ -+F: arch/mips/include/asm/mach-dec/ -+ -+DEFXX FDDI NETWORK DRIVER -+M: "Maciej W. Rozycki" <macro@orcam.me.uk> -+S: Maintained -+F: drivers/net/fddi/defxx.* -+ -+DEFZA FDDI NETWORK DRIVER -+M: "Maciej W. Rozycki" <macro@orcam.me.uk> -+S: Maintained -+F: drivers/net/fddi/defza.* -+ -+DEINTERLACE DRIVERS FOR ALLWINNER H3 -+M: Jernej Skrabec <jernej.skrabec@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/allwinner,sun8i-h3-deinterlace.yaml -+F: drivers/media/platform/sunxi/sun8i-di/ -+ -+DELL LAPTOP DRIVER -+M: Matthew Garrett <mjg59@srcf.ucam.org> -+M: Pali Rohár <pali@kernel.org> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/dell/dell-laptop.c -+ -+DELL LAPTOP FREEFALL DRIVER -+M: Pali Rohár <pali@kernel.org> -+S: Maintained -+F: drivers/platform/x86/dell/dell-smo8800.c -+ -+DELL LAPTOP RBTN DRIVER -+M: Pali Rohár <pali@kernel.org> -+S: Maintained -+F: drivers/platform/x86/dell/dell-rbtn.* -+ -+DELL LAPTOP SMM DRIVER -+M: Pali Rohár <pali@kernel.org> -+S: Maintained -+F: drivers/hwmon/dell-smm-hwmon.c -+F: include/uapi/linux/i8k.h -+ -+DELL REMOTE BIOS UPDATE DRIVER -+M: Stuart Hayes <stuart.w.hayes@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/dell/dell_rbu.c -+ -+DELL SMBIOS DRIVER -+M: Pali Rohár <pali@kernel.org> -+L: Dell.Client.Kernel@dell.com -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/dell/dell-smbios.* -+ -+DELL SMBIOS SMM DRIVER -+L: Dell.Client.Kernel@dell.com -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/dell/dell-smbios-smm.c -+ -+DELL SMBIOS WMI DRIVER -+L: Dell.Client.Kernel@dell.com -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/dell/dell-smbios-wmi.c -+F: tools/wmi/dell-smbios-example.c -+ -+DELL SYSTEMS MANAGEMENT BASE DRIVER (dcdbas) -+M: Stuart Hayes <stuart.w.hayes@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: Documentation/driver-api/dcdbas.rst -+F: drivers/platform/x86/dell/dcdbas.* -+ -+DELL WMI DESCRIPTOR DRIVER -+L: Dell.Client.Kernel@dell.com -+S: Maintained -+F: drivers/platform/x86/dell/dell-wmi-descriptor.c -+ -+DELL WMI SYSMAN DRIVER -+M: Divya Bharathi <divya.bharathi@dell.com> -+M: Prasanth Ksr <prasanth.ksr@dell.com> -+L: Dell.Client.Kernel@dell.com -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-class-firmware-attributes -+F: drivers/platform/x86/dell/dell-wmi-sysman/ -+ -+DELL WMI NOTIFICATIONS DRIVER -+M: Matthew Garrett <mjg59@srcf.ucam.org> -+M: Pali Rohár <pali@kernel.org> -+S: Maintained -+F: drivers/platform/x86/dell/dell-wmi-base.c -+ -+DELL WMI HARDWARE PRIVACY SUPPORT -+M: Perry Yuan <Perry.Yuan@dell.com> -+L: Dell.Client.Kernel@dell.com -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/dell/dell-wmi-privacy.c -+ -+DELTA ST MEDIA DRIVER -+M: Hugues Fruchet <hugues.fruchet@foss.st.com> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/platform/sti/delta -+ -+DELTA DPS920AB PSU DRIVER -+M: Robert Marko <robert.marko@sartura.hr> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/dps920ab.rst -+F: drivers/hwmon/pmbus/dps920ab.c -+ -+DENALI NAND DRIVER -+L: linux-mtd@lists.infradead.org -+S: Orphan -+F: drivers/mtd/nand/raw/denali* -+ -+DESIGNWARE EDMA CORE IP DRIVER -+M: Gustavo Pimentel <gustavo.pimentel@synopsys.com> -+L: dmaengine@vger.kernel.org -+S: Maintained -+F: drivers/dma/dw-edma/ -+F: include/linux/dma/edma.h -+ -+DESIGNWARE XDATA IP DRIVER -+M: Gustavo Pimentel <gustavo.pimentel@synopsys.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/misc-devices/dw-xdata-pcie.rst -+F: drivers/misc/dw-xdata-pcie.c -+ -+DESIGNWARE USB2 DRD IP DRIVER -+M: Minas Harutyunyan <hminas@synopsys.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -+F: drivers/usb/dwc2/ -+ -+DESIGNWARE USB3 DRD IP DRIVER -+M: Felipe Balbi <balbi@kernel.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -+F: drivers/usb/dwc3/ -+ -+DEVANTECH SRF ULTRASONIC RANGER IIO DRIVER -+M: Andreas Klinger <ak@it-klinger.de> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-iio-distance-srf08 -+F: drivers/iio/proximity/srf*.c -+ -+DEVICE COREDUMP (DEV_COREDUMP) -+M: Johannes Berg <johannes@sipsolutions.net> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/base/devcoredump.c -+F: include/linux/devcoredump.h -+ -+DEVICE DEPENDENCY HELPER SCRIPT -+M: Saravana Kannan <saravanak@google.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: scripts/dev-needs.sh -+ -+DEVICE DIRECT ACCESS (DAX) -+M: Dan Williams <dan.j.williams@intel.com> -+M: Vishal Verma <vishal.l.verma@intel.com> -+M: Dave Jiang <dave.jiang@intel.com> -+L: nvdimm@lists.linux.dev -+S: Supported -+F: drivers/dax/ -+ -+DEVICE FREQUENCY (DEVFREQ) -+M: MyungJoo Ham <myungjoo.ham@samsung.com> -+M: Kyungmin Park <kyungmin.park@samsung.com> -+M: Chanwoo Choi <cw00.choi@samsung.com> -+L: linux-pm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git -+F: Documentation/devicetree/bindings/devfreq/ -+F: drivers/devfreq/ -+F: include/linux/devfreq.h -+F: include/trace/events/devfreq.h -+ -+DEVICE FREQUENCY EVENT (DEVFREQ-EVENT) -+M: Chanwoo Choi <cw00.choi@samsung.com> -+L: linux-pm@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git -+F: Documentation/devicetree/bindings/devfreq/event/ -+F: drivers/devfreq/devfreq-event.c -+F: drivers/devfreq/event/ -+F: include/dt-bindings/pmu/exynos_ppmu.h -+F: include/linux/devfreq-event.h -+ -+DEVICE NUMBER REGISTRY -+M: Torben Mathiasen <device@lanana.org> -+S: Maintained -+W: http://lanana.org/docs/device-list/index.html -+ -+DEVICE RESOURCE MANAGEMENT HELPERS -+M: Hans de Goede <hdegoede@redhat.com> -+R: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> -+S: Maintained -+F: include/linux/devm-helpers.h -+ -+DEVICE-MAPPER (LVM) -+M: Alasdair Kergon <agk@redhat.com> -+M: Mike Snitzer <snitzer@redhat.com> -+M: dm-devel@redhat.com -+L: dm-devel@redhat.com -+S: Maintained -+W: http://sources.redhat.com/dm -+Q: http://patchwork.kernel.org/project/dm-devel/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git -+T: quilt http://people.redhat.com/agk/patches/linux/editing/ -+F: Documentation/admin-guide/device-mapper/ -+F: drivers/md/Kconfig -+F: drivers/md/Makefile -+F: drivers/md/dm* -+F: drivers/md/persistent-data/ -+F: include/linux/device-mapper.h -+F: include/linux/dm-*.h -+F: include/uapi/linux/dm-*.h -+ -+DEVLINK -+M: Jiri Pirko <jiri@nvidia.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/devlink -+F: include/net/devlink.h -+F: include/uapi/linux/devlink.h -+F: net/core/devlink.c -+ -+DH ELECTRONICS IMX6 DHCOM BOARD SUPPORT -+M: Christoph Niedermaier <cniedermaier@dh-electronics.com> -+L: kernel@dh-electronics.com -+S: Maintained -+F: arch/arm/boot/dts/imx6*-dhcom-* -+ -+DH ELECTRONICS STM32MP1 DHCOM/DHCOR BOARD SUPPORT -+M: Marek Vasut <marex@denx.de> -+L: kernel@dh-electronics.com -+S: Maintained -+F: arch/arm/boot/dts/stm32mp1*-dhcom-* -+F: arch/arm/boot/dts/stm32mp1*-dhcor-* -+ -+DIALOG SEMICONDUCTOR DRIVERS -+M: Support Opensource <support.opensource@diasemi.com> -+S: Supported -+W: http://www.dialog-semiconductor.com/products -+F: Documentation/devicetree/bindings/input/da90??-onkey.txt -+F: Documentation/devicetree/bindings/input/dlg,da72??.txt -+F: Documentation/devicetree/bindings/mfd/da90*.txt -+F: Documentation/devicetree/bindings/regulator/dlg,da9*.yaml -+F: Documentation/devicetree/bindings/regulator/da92*.txt -+F: Documentation/devicetree/bindings/regulator/slg51000.txt -+F: Documentation/devicetree/bindings/sound/da[79]*.txt -+F: Documentation/devicetree/bindings/thermal/da90??-thermal.txt -+F: Documentation/devicetree/bindings/watchdog/da90??-wdt.txt -+F: Documentation/hwmon/da90??.rst -+F: drivers/gpio/gpio-da90??.c -+F: drivers/hwmon/da90??-hwmon.c -+F: drivers/iio/adc/da91??-*.c -+F: drivers/input/misc/da72??.[ch] -+F: drivers/input/misc/da90??_onkey.c -+F: drivers/input/touchscreen/da9052_tsi.c -+F: drivers/leds/leds-da90??.c -+F: drivers/mfd/da903x.c -+F: drivers/mfd/da90??-*.c -+F: drivers/mfd/da91??-*.c -+F: drivers/pinctrl/pinctrl-da90??.c -+F: drivers/power/supply/da9052-battery.c -+F: drivers/power/supply/da91??-*.c -+F: drivers/regulator/da9???-regulator.[ch] -+F: drivers/regulator/slg51000-regulator.[ch] -+F: drivers/rtc/rtc-da90??.c -+F: drivers/thermal/da90??-thermal.c -+F: drivers/video/backlight/da90??_bl.c -+F: drivers/watchdog/da90??_wdt.c -+F: include/dt-bindings/regulator/dlg,da9*-regulator.h -+F: include/linux/mfd/da903x.h -+F: include/linux/mfd/da9052/ -+F: include/linux/mfd/da9055/ -+F: include/linux/mfd/da9062/ -+F: include/linux/mfd/da9063/ -+F: include/linux/mfd/da9150/ -+F: include/linux/regulator/da9211.h -+F: include/sound/da[79]*.h -+F: sound/soc/codecs/da[79]*.[ch] -+ -+DIAMOND SYSTEMS GPIO-MM GPIO DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-gpio-mm.c -+ -+DIOLAN U2C-12 I2C DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/busses/i2c-diolan-u2c.c -+ -+DIRECTORY NOTIFICATION (DNOTIFY) -+M: Jan Kara <jack@suse.cz> -+R: Amir Goldstein <amir73il@gmail.com> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: Documentation/filesystems/dnotify.rst -+F: fs/notify/dnotify/ -+F: include/linux/dnotify.h -+ -+DISK GEOMETRY AND PARTITION HANDLING -+M: Andries Brouwer <aeb@cwi.nl> -+S: Maintained -+W: http://www.win.tue.nl/~aeb/linux/Large-Disk.html -+W: http://www.win.tue.nl/~aeb/linux/zip/zip-1.html -+W: http://www.win.tue.nl/~aeb/partitions/partition_types-1.html -+ -+DISKQUOTA -+M: Jan Kara <jack@suse.com> -+S: Maintained -+F: Documentation/filesystems/quota.rst -+F: fs/quota/ -+F: include/linux/quota*.h -+F: include/uapi/linux/quota*.h -+ -+DISPLAYLINK USB 2.0 FRAMEBUFFER DRIVER (UDLFB) -+M: Bernie Thompson <bernie@plugable.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+W: http://plugable.com/category/projects/udlfb/ -+F: Documentation/fb/udlfb.rst -+F: drivers/video/fbdev/udlfb.c -+F: include/video/udlfb.h -+ -+DISTRIBUTED LOCK MANAGER (DLM) -+M: Christine Caulfield <ccaulfie@redhat.com> -+M: David Teigland <teigland@redhat.com> -+L: cluster-devel@redhat.com -+S: Supported -+W: http://sources.redhat.com/cluster/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm.git -+F: fs/dlm/ -+ -+DMA BUFFER SHARING FRAMEWORK -+M: Sumit Semwal <sumit.semwal@linaro.org> -+M: Christian König <christian.koenig@amd.com> -+L: linux-media@vger.kernel.org -+L: dri-devel@lists.freedesktop.org -+L: linaro-mm-sig@lists.linaro.org (moderated for non-subscribers) -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/driver-api/dma-buf.rst -+F: drivers/dma-buf/ -+F: include/linux/*fence.h -+F: include/linux/dma-buf* -+F: include/linux/dma-resv.h -+K: \bdma_(?:buf|fence|resv)\b -+ -+DMA GENERIC OFFLOAD ENGINE SUBSYSTEM -+M: Vinod Koul <vkoul@kernel.org> -+L: dmaengine@vger.kernel.org -+S: Maintained -+Q: https://patchwork.kernel.org/project/linux-dmaengine/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git -+F: Documentation/devicetree/bindings/dma/ -+F: Documentation/driver-api/dmaengine/ -+F: drivers/dma/ -+F: include/linux/dma/ -+F: include/linux/dmaengine.h -+F: include/linux/of_dma.h -+ -+DMA MAPPING HELPERS -+M: Christoph Hellwig <hch@lst.de> -+M: Marek Szyprowski <m.szyprowski@samsung.com> -+R: Robin Murphy <robin.murphy@arm.com> -+L: iommu@lists.linux-foundation.org -+S: Supported -+W: http://git.infradead.org/users/hch/dma-mapping.git -+T: git git://git.infradead.org/users/hch/dma-mapping.git -+F: include/asm-generic/dma-mapping.h -+F: include/linux/dma-direct.h -+F: include/linux/dma-mapping.h -+F: include/linux/dma-map-ops.h -+F: kernel/dma/ -+ -+DMA MAPPING BENCHMARK -+M: Barry Song <song.bao.hua@hisilicon.com> -+L: iommu@lists.linux-foundation.org -+F: kernel/dma/map_benchmark.c -+F: tools/testing/selftests/dma/ -+ -+DMA-BUF HEAPS FRAMEWORK -+M: Sumit Semwal <sumit.semwal@linaro.org> -+R: Benjamin Gaignard <benjamin.gaignard@linaro.org> -+R: Liam Mark <lmark@codeaurora.org> -+R: Laura Abbott <labbott@redhat.com> -+R: Brian Starkey <Brian.Starkey@arm.com> -+R: John Stultz <john.stultz@linaro.org> -+L: linux-media@vger.kernel.org -+L: dri-devel@lists.freedesktop.org -+L: linaro-mm-sig@lists.linaro.org (moderated for non-subscribers) -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/dma-buf/dma-heap.c -+F: drivers/dma-buf/heaps/* -+F: include/linux/dma-heap.h -+F: include/uapi/linux/dma-heap.h -+ -+DMC FREQUENCY DRIVER FOR SAMSUNG EXYNOS5422 -+M: Lukasz Luba <lukasz.luba@arm.com> -+L: linux-pm@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/memory-controllers/samsung,exynos5422-dmc.yaml -+F: drivers/memory/samsung/exynos5422-dmc.c -+ -+DME1737 HARDWARE MONITOR DRIVER -+M: Juerg Haefliger <juergh@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/dme1737.rst -+F: drivers/hwmon/dme1737.c -+ -+DMI/SMBIOS SUPPORT -+M: Jean Delvare <jdelvare@suse.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging.git dmi-for-next -+F: Documentation/ABI/testing/sysfs-firmware-dmi-tables -+F: drivers/firmware/dmi-id.c -+F: drivers/firmware/dmi_scan.c -+F: include/linux/dmi.h -+ -+DOCUMENTATION -+M: Jonathan Corbet <corbet@lwn.net> -+L: linux-doc@vger.kernel.org -+S: Maintained -+P: Documentation/doc-guide/maintainer-profile.rst -+T: git git://git.lwn.net/linux.git docs-next -+F: Documentation/ -+F: scripts/documentation-file-ref-check -+F: scripts/kernel-doc -+F: scripts/sphinx-pre-install -+X: Documentation/ABI/ -+X: Documentation/admin-guide/media/ -+X: Documentation/devicetree/ -+X: Documentation/driver-api/media/ -+X: Documentation/firmware-guide/acpi/ -+X: Documentation/i2c/ -+X: Documentation/power/ -+X: Documentation/spi/ -+X: Documentation/userspace-api/media/ -+ -+DOCUMENTATION REPORTING ISSUES -+M: Thorsten Leemhuis <linux@leemhuis.info> -+L: linux-doc@vger.kernel.org -+S: Maintained -+F: Documentation/admin-guide/reporting-issues.rst -+ -+DOCUMENTATION SCRIPTS -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-doc@vger.kernel.org -+S: Maintained -+F: Documentation/sphinx/parse-headers.pl -+F: scripts/documentation-file-ref-check -+F: scripts/sphinx-pre-install -+ -+DOCUMENTATION/ITALIAN -+M: Federico Vaga <federico.vaga@vaga.pv.it> -+L: linux-doc@vger.kernel.org -+S: Maintained -+F: Documentation/translations/it_IT -+ -+DONGWOON DW9714 LENS VOICE COIL DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.txt -+F: drivers/media/i2c/dw9714.c -+ -+DONGWOON DW9768 LENS VOICE COIL DRIVER -+M: Dongchun Zhu <dongchun.zhu@mediatek.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/dongwoon,dw9768.yaml -+F: drivers/media/i2c/dw9768.c -+ -+DONGWOON DW9807 LENS VOICE COIL DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.txt -+F: drivers/media/i2c/dw9807-vcm.c -+ -+DOUBLETALK DRIVER -+M: "James R. Van Zandt" <jrv@vanzandt.mv.com> -+L: blinux-list@redhat.com -+S: Maintained -+F: drivers/char/dtlk.c -+F: include/linux/dtlk.h -+ -+DPAA2 DATAPATH I/O (DPIO) DRIVER -+M: Roy Pledge <Roy.Pledge@nxp.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/soc/fsl/dpio -+ -+DPAA2 ETHERNET DRIVER -+M: Ioana Ciornei <ioana.ciornei@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/networking/device_drivers/ethernet/freescale/dpaa2/ethernet-driver.rst -+F: Documentation/networking/device_drivers/ethernet/freescale/dpaa2/mac-phy-support.rst -+F: drivers/net/ethernet/freescale/dpaa2/Kconfig -+F: drivers/net/ethernet/freescale/dpaa2/Makefile -+F: drivers/net/ethernet/freescale/dpaa2/dpaa2-eth* -+F: drivers/net/ethernet/freescale/dpaa2/dpaa2-mac* -+F: drivers/net/ethernet/freescale/dpaa2/dpkg.h -+F: drivers/net/ethernet/freescale/dpaa2/dpmac* -+F: drivers/net/ethernet/freescale/dpaa2/dpni* -+ -+DPAA2 ETHERNET SWITCH DRIVER -+M: Ioana Ciornei <ioana.ciornei@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/networking/device_drivers/ethernet/freescale/dpaa2/switch-driver.rst -+F: drivers/net/ethernet/freescale/dpaa2/dpaa2-switch* -+F: drivers/net/ethernet/freescale/dpaa2/dpsw* -+ -+DPT_I2O SCSI RAID DRIVER -+M: Adaptec OEM Raid Solutions <aacraid@microsemi.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+W: http://www.adaptec.com/ -+F: drivers/scsi/dpt* -+F: drivers/scsi/dpt/ -+ -+DRBD DRIVER -+M: Philipp Reisner <philipp.reisner@linbit.com> -+M: Lars Ellenberg <lars.ellenberg@linbit.com> -+L: drbd-dev@lists.linbit.com -+S: Supported -+W: http://www.drbd.org -+T: git git://git.linbit.com/linux-drbd.git -+T: git git://git.linbit.com/drbd-8.4.git -+F: Documentation/admin-guide/blockdev/ -+F: drivers/block/drbd/ -+F: lib/lru_cache.c -+ -+DRIVER COMPONENT FRAMEWORK -+L: dri-devel@lists.freedesktop.org -+F: drivers/base/component.c -+F: include/linux/component.h -+ -+DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+R: "Rafael J. Wysocki" <rafael@kernel.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git -+F: Documentation/core-api/kobject.rst -+F: drivers/base/ -+F: fs/debugfs/ -+F: fs/sysfs/ -+F: include/linux/debugfs.h -+F: include/linux/kobj* -+F: lib/kobj* -+ -+DRIVERS FOR OMAP ADAPTIVE VOLTAGE SCALING (AVS) -+M: Nishanth Menon <nm@ti.com> -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: drivers/soc/ti/smartreflex.c -+F: include/linux/power/smartreflex.h -+ -+DRM DRIVER FOR ALLWINNER DE2 AND DE3 ENGINE -+M: Maxime Ripard <mripard@kernel.org> -+M: Chen-Yu Tsai <wens@csie.org> -+R: Jernej Skrabec <jernej.skrabec@gmail.com> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/sun4i/sun8i* -+ -+DRM DRIVER FOR ARM PL111 CLCD -+M: Emma Anholt <emma@anholt.net> -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/pl111/ -+ -+DRM DRIVER FOR ARM VERSATILE TFT PANELS -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.yaml -+F: drivers/gpu/drm/panel/panel-arm-versatile.c -+ -+DRM DRIVER FOR ASPEED BMC GFX -+M: Joel Stanley <joel@jms.id.au> -+L: linux-aspeed@lists.ozlabs.org (moderated for non-subscribers) -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/gpu/aspeed-gfx.txt -+F: drivers/gpu/drm/aspeed/ -+ -+DRM DRIVER FOR AST SERVER GRAPHICS CHIPS -+M: Dave Airlie <airlied@redhat.com> -+R: Thomas Zimmermann <tzimmermann@suse.de> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/ast/ -+ -+DRM DRIVER FOR BOCHS VIRTUAL GPU -+M: Gerd Hoffmann <kraxel@redhat.com> -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/tiny/bochs.c -+ -+DRM DRIVER FOR BOE HIMAX8279D PANELS -+M: Jerry Han <hanxu5@huaqin.corp-partner.google.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/boe,himax8279d.yaml -+F: drivers/gpu/drm/panel/panel-boe-himax8279d.c -+ -+DRM DRIVER FOR CHIPONE ICN6211 MIPI-DSI to RGB CONVERTER BRIDGE -+M: Jagan Teki <jagan@amarulasolutions.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/bridge/chipone,icn6211.yaml -+F: drivers/gpu/drm/bridge/chipone-icn6211.c -+ -+DRM DRIVER FOR FARADAY TVE200 TV ENCODER -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/tve200/ -+ -+DRM DRIVER FOR FEIXIN K101 IM2BA02 MIPI-DSI LCD PANELS -+M: Icenowy Zheng <icenowy@aosc.io> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/feixin,k101-im2ba02.yaml -+F: drivers/gpu/drm/panel/panel-feixin-k101-im2ba02.c -+ -+DRM DRIVER FOR FEIYANG FY07024DI26A30-D MIPI-DSI LCD PANELS -+M: Jagan Teki <jagan@amarulasolutions.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/feiyang,fy07024di26a30d.yaml -+F: drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c -+ -+DRM DRIVER FOR GENERIC USB DISPLAY -+M: Noralf Trønnes <noralf@tronnes.org> -+S: Maintained -+W: https://github.com/notro/gud/wiki -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/gud/ -+F: include/drm/gud.h -+ -+DRM DRIVER FOR GRAIN MEDIA GM12U320 PROJECTORS -+M: Hans de Goede <hdegoede@redhat.com> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/tiny/gm12u320.c -+ -+DRM DRIVER FOR HX8357D PANELS -+M: Emma Anholt <emma@anholt.net> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/himax,hx8357d.txt -+F: drivers/gpu/drm/tiny/hx8357d.c -+ -+DRM DRIVER FOR ILITEK ILI9225 PANELS -+M: David Lechner <david@lechnology.com> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/ilitek,ili9225.txt -+F: drivers/gpu/drm/tiny/ili9225.c -+ -+DRM DRIVER FOR ILITEK ILI9486 PANELS -+M: Kamlesh Gurudasani <kamlesh.gurudasani@gmail.com> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/ilitek,ili9486.yaml -+F: drivers/gpu/drm/tiny/ili9486.c -+ -+DRM DRIVER FOR INTEL I810 VIDEO CARDS -+S: Orphan / Obsolete -+F: drivers/gpu/drm/i810/ -+F: include/uapi/drm/i810_drm.h -+ -+DRM DRIVER FOR LVDS PANELS -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: dri-devel@lists.freedesktop.org -+T: git git://anongit.freedesktop.org/drm/drm-misc -+S: Maintained -+F: drivers/gpu/drm/panel/panel-lvds.c -+F: Documentation/devicetree/bindings/display/panel/lvds.yaml -+ -+DRM DRIVER FOR MANTIX MLAF057WE51 PANELS -+M: Guido Günther <agx@sigxcpu.org> -+R: Purism Kernel Team <kernel@puri.sm> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/mantix,mlaf057we51-x.yaml -+F: drivers/gpu/drm/panel/panel-mantix-mlaf057we51.c -+ -+DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS -+S: Orphan / Obsolete -+F: drivers/gpu/drm/mga/ -+F: include/uapi/drm/mga_drm.h -+ -+DRM DRIVER FOR MGA G200 GRAPHICS CHIPS -+M: Dave Airlie <airlied@redhat.com> -+R: Thomas Zimmermann <tzimmermann@suse.de> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/mgag200/ -+ -+DRM DRIVER FOR MI0283QT -+M: Noralf Trønnes <noralf@tronnes.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt -+F: drivers/gpu/drm/tiny/mi0283qt.c -+ -+DRM DRIVER FOR MSM ADRENO GPU -+M: Rob Clark <robdclark@gmail.com> -+M: Sean Paul <sean@poorly.run> -+L: linux-arm-msm@vger.kernel.org -+L: dri-devel@lists.freedesktop.org -+L: freedreno@lists.freedesktop.org -+S: Maintained -+T: git https://gitlab.freedesktop.org/drm/msm.git -+F: Documentation/devicetree/bindings/display/msm/ -+F: drivers/gpu/drm/msm/ -+F: include/uapi/drm/msm_drm.h -+ -+DRM DRIVER FOR NOVATEK NT35510 PANELS -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/panel/novatek,nt35510.yaml -+F: drivers/gpu/drm/panel/panel-novatek-nt35510.c -+ -+DRM DRIVER FOR NOVATEK NT36672A PANELS -+M: Sumit Semwal <sumit.semwal@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/panel/novatek,nt36672a.yaml -+F: drivers/gpu/drm/panel/panel-novatek-nt36672a.c -+ -+DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS -+M: Ben Skeggs <bskeggs@redhat.com> -+L: dri-devel@lists.freedesktop.org -+L: nouveau@lists.freedesktop.org -+S: Supported -+T: git git://github.com/skeggsb/linux -+F: drivers/gpu/drm/nouveau/ -+F: include/uapi/drm/nouveau_drm.h -+ -+DRM DRIVER FOR OLIMEX LCD-OLINUXINO PANELS -+M: Stefan Mavrodiev <stefan@olimex.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.yaml -+F: drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c -+ -+DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS -+M: Noralf Trønnes <noralf@tronnes.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/repaper.txt -+F: drivers/gpu/drm/tiny/repaper.c -+ -+DRM DRIVER FOR QEMU'S CIRRUS DEVICE -+M: Dave Airlie <airlied@redhat.com> -+M: Gerd Hoffmann <kraxel@redhat.com> -+L: virtualization@lists.linux-foundation.org -+S: Obsolete -+W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/ -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/tiny/cirrus.c -+ -+DRM DRIVER FOR QXL VIRTUAL GPU -+M: Dave Airlie <airlied@redhat.com> -+M: Gerd Hoffmann <kraxel@redhat.com> -+L: virtualization@lists.linux-foundation.org -+L: spice-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/qxl/ -+F: include/uapi/drm/qxl_drm.h -+ -+DRM DRIVER FOR RAGE 128 VIDEO CARDS -+S: Orphan / Obsolete -+F: drivers/gpu/drm/r128/ -+F: include/uapi/drm/r128_drm.h -+ -+DRM DRIVER FOR RAYDIUM RM67191 PANELS -+M: Robert Chiras <robert.chiras@nxp.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.yaml -+F: drivers/gpu/drm/panel/panel-raydium-rm67191.c -+ -+DRM DRIVER FOR SAMSUNG DB7430 PANELS -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/panel/samsung,lms397kf04.yaml -+F: drivers/gpu/drm/panel/panel-samsung-db7430.c -+ -+DRM DRIVER FOR SITRONIX ST7703 PANELS -+M: Guido Günther <agx@sigxcpu.org> -+R: Purism Kernel Team <kernel@puri.sm> -+R: Ondrej Jirman <megous@megous.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml -+F: drivers/gpu/drm/panel/panel-sitronix-st7703.c -+ -+DRM DRIVER FOR SAVAGE VIDEO CARDS -+S: Orphan / Obsolete -+F: drivers/gpu/drm/savage/ -+F: include/uapi/drm/savage_drm.h -+ -+DRM DRIVER FOR SIMPLE FRAMEBUFFERS -+M: Thomas Zimmermann <tzimmermann@suse.de> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/tiny/simpledrm.c -+ -+DRM DRIVER FOR SIS VIDEO CARDS -+S: Orphan / Obsolete -+F: drivers/gpu/drm/sis/ -+F: include/uapi/drm/sis_drm.h -+ -+DRM DRIVER FOR SITRONIX ST7586 PANELS -+M: David Lechner <david@lechnology.com> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/sitronix,st7586.txt -+F: drivers/gpu/drm/tiny/st7586.c -+ -+DRM DRIVER FOR SITRONIX ST7701 PANELS -+M: Jagan Teki <jagan@amarulasolutions.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/panel/sitronix,st7701.yaml -+F: drivers/gpu/drm/panel/panel-sitronix-st7701.c -+ -+DRM DRIVER FOR SITRONIX ST7735R PANELS -+M: David Lechner <david@lechnology.com> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/sitronix,st7735r.yaml -+F: drivers/gpu/drm/tiny/st7735r.c -+ -+DRM DRIVER FOR SONY ACX424AKP PANELS -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/panel/panel-sony-acx424akp.c -+ -+DRM DRIVER FOR ST-ERICSSON MCDE -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/ste,mcde.yaml -+F: drivers/gpu/drm/mcde/ -+ -+DRM DRIVER FOR TDFX VIDEO CARDS -+S: Orphan / Obsolete -+F: drivers/gpu/drm/tdfx/ -+ -+DRM DRIVER FOR TPO TPG110 PANELS -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/panel/tpo,tpg110.yaml -+F: drivers/gpu/drm/panel/panel-tpo-tpg110.c -+ -+DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS -+M: Dave Airlie <airlied@redhat.com> -+R: Sean Paul <sean@poorly.run> -+R: Thomas Zimmermann <tzimmermann@suse.de> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/udl/ -+ -+DRM DRIVER FOR VIRTUAL KERNEL MODESETTING (VKMS) -+M: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com> -+M: Melissa Wen <melissa.srw@gmail.com> -+R: Haneen Mohammed <hamohammed.sa@gmail.com> -+R: Daniel Vetter <daniel@ffwll.ch> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/gpu/vkms.rst -+F: drivers/gpu/drm/vkms/ -+ -+DRM DRIVER FOR VIRTUALBOX VIRTUAL GPU -+M: Hans de Goede <hdegoede@redhat.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/vboxvideo/ -+ -+DRM DRIVER FOR VMWARE VIRTUAL GPU -+M: "VMware Graphics" <linux-graphics-maintainer@vmware.com> -+M: Zack Rusin <zackr@vmware.com> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/vmwgfx/ -+F: include/uapi/drm/vmwgfx_drm.h -+ -+DRM DRIVER FOR WIDECHIPS WS2401 PANELS -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/panel/samsung,lms380kf01.yaml -+F: drivers/gpu/drm/panel/panel-widechips-ws2401.c -+ -+DRM DRIVERS -+M: David Airlie <airlied@linux.ie> -+M: Daniel Vetter <daniel@ffwll.ch> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+B: https://gitlab.freedesktop.org/drm -+C: irc://irc.oftc.net/dri-devel -+T: git git://anongit.freedesktop.org/drm/drm -+F: Documentation/devicetree/bindings/display/ -+F: Documentation/devicetree/bindings/gpu/ -+F: Documentation/gpu/ -+F: drivers/gpu/ -+F: include/drm/ -+F: include/linux/vga* -+F: include/uapi/drm/ -+ -+DRM DRIVERS AND MISC GPU PATCHES -+M: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> -+M: Maxime Ripard <mripard@kernel.org> -+M: Thomas Zimmermann <tzimmermann@suse.de> -+S: Maintained -+W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/gpu/ -+F: drivers/gpu/drm/* -+F: drivers/gpu/vga/ -+F: include/drm/drm* -+F: include/linux/vga* -+F: include/uapi/drm/drm* -+ -+DRM DRIVERS FOR ALLWINNER A10 -+M: Maxime Ripard <mripard@kernel.org> -+M: Chen-Yu Tsai <wens@csie.org> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/allwinner* -+F: drivers/gpu/drm/sun4i/ -+ -+DRM DRIVERS FOR AMLOGIC SOCS -+M: Neil Armstrong <narmstrong@baylibre.com> -+L: dri-devel@lists.freedesktop.org -+L: linux-amlogic@lists.infradead.org -+S: Supported -+W: http://linux-meson.com/ -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.yaml -+F: Documentation/devicetree/bindings/display/amlogic,meson-vpu.yaml -+F: Documentation/gpu/meson.rst -+F: drivers/gpu/drm/meson/ -+ -+DRM DRIVERS FOR ATMEL HLCDC -+M: Sam Ravnborg <sam@ravnborg.org> -+M: Boris Brezillon <bbrezillon@kernel.org> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/atmel/ -+F: drivers/gpu/drm/atmel-hlcdc/ -+ -+DRM DRIVERS FOR BRIDGE CHIPS -+M: Andrzej Hajda <a.hajda@samsung.com> -+M: Neil Armstrong <narmstrong@baylibre.com> -+M: Robert Foss <robert.foss@linaro.org> -+R: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> -+R: Jonas Karlman <jonas@kwiboo.se> -+R: Jernej Skrabec <jernej.skrabec@gmail.com> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/bridge/ -+ -+DRM DRIVERS FOR EXYNOS -+M: Inki Dae <inki.dae@samsung.com> -+M: Joonyoung Shim <jy0922.shim@samsung.com> -+M: Seung-Woo Kim <sw0312.kim@samsung.com> -+M: Kyungmin Park <kyungmin.park@samsung.com> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git -+F: Documentation/devicetree/bindings/display/exynos/ -+F: drivers/gpu/drm/exynos/ -+F: include/uapi/drm/exynos_drm.h -+ -+DRM DRIVERS FOR FREESCALE DCU -+M: Stefan Agner <stefan@agner.ch> -+M: Alison Wang <alison.wang@nxp.com> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/fsl,dcu.txt -+F: Documentation/devicetree/bindings/display/fsl,tcon.txt -+F: drivers/gpu/drm/fsl-dcu/ -+ -+DRM DRIVERS FOR FREESCALE IMX -+M: Philipp Zabel <p.zabel@pengutronix.de> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+F: Documentation/devicetree/bindings/display/imx/ -+F: drivers/gpu/drm/imx/ -+F: drivers/gpu/ipu-v3/ -+ -+DRM DRIVERS FOR GMA500 (Poulsbo, Moorestown and derivative chipsets) -+M: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://github.com/patjak/drm-gma500 -+F: drivers/gpu/drm/gma500/ -+ -+DRM DRIVERS FOR HISILICON -+M: Xinliang Liu <xinliang.liu@linaro.org> -+M: Tian Tao <tiantao6@hisilicon.com> -+R: John Stultz <john.stultz@linaro.org> -+R: Xinwei Kong <kong.kongxinwei@hisilicon.com> -+R: Chen Feng <puck.chen@hisilicon.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/hisilicon/ -+F: drivers/gpu/drm/hisilicon/ -+ -+DRM DRIVER FOR HYPERV SYNTHETIC VIDEO DEVICE -+M: Deepak Rawat <drawat.floss@gmail.com> -+L: linux-hyperv@vger.kernel.org -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/hyperv -+ -+DRM DRIVERS FOR LIMA -+M: Qiang Yu <yuq825@gmail.com> -+L: dri-devel@lists.freedesktop.org -+L: lima@lists.freedesktop.org (moderated for non-subscribers) -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/lima/ -+F: include/uapi/drm/lima_drm.h -+ -+DRM DRIVERS FOR MEDIATEK -+M: Chun-Kuang Hu <chunkuang.hu@kernel.org> -+M: Philipp Zabel <p.zabel@pengutronix.de> -+L: dri-devel@lists.freedesktop.org -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: Documentation/devicetree/bindings/display/mediatek/ -+F: drivers/gpu/drm/mediatek/ -+F: drivers/phy/mediatek/phy-mtk-hdmi* -+F: drivers/phy/mediatek/phy-mtk-mipi* -+ -+DRM DRIVERS FOR NVIDIA TEGRA -+M: Thierry Reding <thierry.reding@gmail.com> -+L: dri-devel@lists.freedesktop.org -+L: linux-tegra@vger.kernel.org -+S: Supported -+T: git git://anongit.freedesktop.org/tegra/linux.git -+F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt -+F: drivers/gpu/drm/tegra/ -+F: drivers/gpu/host1x/ -+F: include/linux/host1x.h -+F: include/uapi/drm/tegra_drm.h -+ -+DRM DRIVERS FOR RENESAS -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+M: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> -+L: dri-devel@lists.freedesktop.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/pinchartl/media drm/du/next -+F: Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.yaml -+F: Documentation/devicetree/bindings/display/bridge/renesas,lvds.yaml -+F: Documentation/devicetree/bindings/display/renesas,du.yaml -+F: drivers/gpu/drm/rcar-du/ -+F: drivers/gpu/drm/shmobile/ -+F: include/linux/platform_data/shmob_drm.h -+ -+DRM DRIVERS FOR ROCKCHIP -+M: Sandy Huang <hjc@rock-chips.com> -+M: Heiko Stübner <heiko@sntech.de> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/rockchip/ -+F: drivers/gpu/drm/rockchip/ -+ -+DRM DRIVERS FOR STI -+M: Benjamin Gaignard <benjamin.gaignard@linaro.org> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/st,stih4xx.txt -+F: drivers/gpu/drm/sti -+ -+DRM DRIVERS FOR STM -+M: Yannick Fertre <yannick.fertre@foss.st.com> -+M: Philippe Cornu <philippe.cornu@foss.st.com> -+M: Benjamin Gaignard <benjamin.gaignard@linaro.org> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml -+F: drivers/gpu/drm/stm -+ -+DRM DRIVERS FOR TI KEYSTONE -+M: Jyri Sarha <jyri.sarha@iki.fi> -+M: Tomi Valkeinen <tomba@kernel.org> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml -+F: Documentation/devicetree/bindings/display/ti/ti,j721e-dss.yaml -+F: Documentation/devicetree/bindings/display/ti/ti,k2g-dss.yaml -+F: drivers/gpu/drm/tidss/ -+ -+DRM DRIVERS FOR TI LCDC -+M: Jyri Sarha <jyri.sarha@iki.fi> -+R: Tomi Valkeinen <tomba@kernel.org> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+F: Documentation/devicetree/bindings/display/tilcdc/ -+F: drivers/gpu/drm/tilcdc/ -+ -+DRM DRIVERS FOR TI OMAP -+M: Tomi Valkeinen <tomba@kernel.org> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+F: Documentation/devicetree/bindings/display/ti/ -+F: drivers/gpu/drm/omapdrm/ -+ -+DRM DRIVERS FOR V3D -+M: Emma Anholt <emma@anholt.net> -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml -+F: drivers/gpu/drm/v3d/ -+F: include/uapi/drm/v3d_drm.h -+ -+DRM DRIVERS FOR VC4 -+M: Emma Anholt <emma@anholt.net> -+M: Maxime Ripard <mripard@kernel.org> -+S: Supported -+T: git git://github.com/anholt/linux -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/brcm,bcm2835-*.yaml -+F: drivers/gpu/drm/vc4/ -+F: include/uapi/drm/vc4_drm.h -+ -+DRM DRIVERS FOR VIVANTE GPU IP -+M: Lucas Stach <l.stach@pengutronix.de> -+R: Russell King <linux+etnaviv@armlinux.org.uk> -+R: Christian Gmeiner <christian.gmeiner@gmail.com> -+L: etnaviv@lists.freedesktop.org (moderated for non-subscribers) -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+F: Documentation/devicetree/bindings/gpu/vivante,gc.yaml -+F: drivers/gpu/drm/etnaviv/ -+F: include/uapi/drm/etnaviv_drm.h -+ -+DRM DRIVERS FOR XEN -+M: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> -+L: dri-devel@lists.freedesktop.org -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/gpu/xen-front.rst -+F: drivers/gpu/drm/xen/ -+ -+DRM DRIVERS FOR XILINX -+M: Hyun Kwon <hyun.kwon@xilinx.com> -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/xlnx/ -+F: drivers/gpu/drm/xlnx/ -+ -+DRM PANEL DRIVERS -+M: Thierry Reding <thierry.reding@gmail.com> -+R: Sam Ravnborg <sam@ravnborg.org> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/panel/ -+F: drivers/gpu/drm/drm_panel.c -+F: drivers/gpu/drm/panel/ -+F: include/drm/drm_panel.h -+ -+DRM TTM SUBSYSTEM -+M: Christian Koenig <christian.koenig@amd.com> -+M: Huang Rui <ray.huang@amd.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/ttm/ -+F: include/drm/ttm/ -+ -+DSBR100 USB FM RADIO DRIVER -+M: Alexey Klimov <klimov.linux@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/dsbr100.c -+ -+DT3155 MEDIA DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/pci/dt3155/ -+ -+DVB_USB_AF9015 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/af9015* -+ -+DVB_USB_AF9035 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/af9035* -+ -+DVB_USB_ANYSEE MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/anysee* -+ -+DVB_USB_AU6610 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/au6610* -+ -+DVB_USB_CE6230 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/ce6230* -+ -+DVB_USB_CXUSB MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/dvb-usb/cxusb* -+ -+DVB_USB_EC168 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/ec168* -+ -+DVB_USB_GL861 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/gl861* -+ -+DVB_USB_MXL111SF MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mkrufky/mxl111sf.git -+F: drivers/media/usb/dvb-usb-v2/mxl111sf* -+ -+DVB_USB_RTL28XXU MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/rtl28xxu* -+ -+DVB_USB_V2 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/dvb-usb-v2/dvb_usb* -+F: drivers/media/usb/dvb-usb-v2/usb_urb.c -+ -+DYNAMIC DEBUG -+M: Jason Baron <jbaron@akamai.com> -+S: Maintained -+F: include/linux/dynamic_debug.h -+F: lib/dynamic_debug.c -+ -+DYNAMIC INTERRUPT MODERATION -+M: Tal Gilboa <talgi@nvidia.com> -+S: Maintained -+F: Documentation/networking/net_dim.rst -+F: include/linux/dim.h -+F: lib/dim/ -+ -+DZ DECSTATION DZ11 SERIAL DRIVER -+M: "Maciej W. Rozycki" <macro@orcam.me.uk> -+S: Maintained -+F: drivers/tty/serial/dz.* -+ -+E3X0 POWER BUTTON DRIVER -+M: Moritz Fischer <moritz.fischer@ettus.com> -+L: usrp-users@lists.ettus.com -+S: Supported -+W: http://www.ettus.com -+F: Documentation/devicetree/bindings/input/e3x0-button.txt -+F: drivers/input/misc/e3x0-button.c -+ -+E4000 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/e4000* -+ -+EARTH_PT1 MEDIA DRIVER -+M: Akihiro Tsukada <tskd08@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+F: drivers/media/pci/pt1/ -+ -+EARTH_PT3 MEDIA DRIVER -+M: Akihiro Tsukada <tskd08@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+F: drivers/media/pci/pt3/ -+ -+EC100 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/ec100* -+ -+ECRYPT FILE SYSTEM -+M: Tyler Hicks <code@tyhicks.com> -+L: ecryptfs@vger.kernel.org -+S: Odd Fixes -+W: http://ecryptfs.org -+W: https://launchpad.net/ecryptfs -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs.git -+F: Documentation/filesystems/ecryptfs.rst -+F: fs/ecryptfs/ -+ -+EDAC-AMD64 -+M: Yazen Ghannam <yazen.ghannam@amd.com> -+L: linux-edac@vger.kernel.org -+S: Supported -+F: drivers/edac/amd64_edac* -+F: drivers/edac/mce_amd* -+ -+EDAC-ARMADA -+M: Jan Luebbe <jlu@pengutronix.de> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/memory-controllers/marvell,mvebu-sdram-controller.yaml -+F: drivers/edac/armada_xp_* -+ -+EDAC-AST2500 -+M: Stefan Schaeckeler <sschaeck@cisco.com> -+S: Supported -+F: Documentation/devicetree/bindings/edac/aspeed-sdram-edac.txt -+F: drivers/edac/aspeed_edac.c -+ -+EDAC-BLUEFIELD -+M: Shravan Kumar Ramani <shravankr@nvidia.com> -+S: Supported -+F: drivers/edac/bluefield_edac.c -+ -+EDAC-CALXEDA -+M: Andre Przywara <andre.przywara@arm.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/highbank* -+ -+EDAC-CAVIUM OCTEON -+M: Ralf Baechle <ralf@linux-mips.org> -+L: linux-edac@vger.kernel.org -+L: linux-mips@vger.kernel.org -+S: Supported -+F: drivers/edac/octeon_edac* -+ -+EDAC-CAVIUM THUNDERX -+M: Robert Richter <rric@kernel.org> -+L: linux-edac@vger.kernel.org -+S: Odd Fixes -+F: drivers/edac/thunderx_edac* -+ -+EDAC-CORE -+M: Borislav Petkov <bp@alien8.de> -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+M: Tony Luck <tony.luck@intel.com> -+R: James Morse <james.morse@arm.com> -+R: Robert Richter <rric@kernel.org> -+L: linux-edac@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next -+F: Documentation/admin-guide/ras.rst -+F: Documentation/driver-api/edac.rst -+F: drivers/edac/ -+F: include/linux/edac.h -+ -+EDAC-DMC520 -+M: Lei Wang <lewan@microsoft.com> -+L: linux-edac@vger.kernel.org -+S: Supported -+F: drivers/edac/dmc520_edac.c -+ -+EDAC-E752X -+M: Mark Gross <mark.gross@intel.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/e752x_edac.c -+ -+EDAC-E7XXX -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/e7xxx_edac.c -+ -+EDAC-FSL_DDR -+M: York Sun <york.sun@nxp.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/fsl_ddr_edac.* -+ -+EDAC-GHES -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/ghes_edac.c -+ -+EDAC-I10NM -+M: Tony Luck <tony.luck@intel.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/i10nm_base.c -+ -+EDAC-I3000 -+L: linux-edac@vger.kernel.org -+S: Orphan -+F: drivers/edac/i3000_edac.c -+ -+EDAC-I5000 -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/i5000_edac.c -+ -+EDAC-I5400 -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/i5400_edac.c -+ -+EDAC-I7300 -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/i7300_edac.c -+ -+EDAC-I7CORE -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/i7core_edac.c -+ -+EDAC-I82443BXGX -+M: Tim Small <tim@buttersideup.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/i82443bxgx_edac.c -+ -+EDAC-I82975X -+M: "Arvind R." <arvino55@gmail.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/i82975x_edac.c -+ -+EDAC-IE31200 -+M: Jason Baron <jbaron@akamai.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/ie31200_edac.c -+ -+EDAC-IGEN6 -+M: Tony Luck <tony.luck@intel.com> -+R: Qiuxu Zhuo <qiuxu.zhuo@intel.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/igen6_edac.c -+ -+EDAC-MPC85XX -+M: Johannes Thumshirn <morbidrsa@gmail.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/mpc85xx_edac.[ch] -+ -+EDAC-PASEMI -+M: Egor Martovetsky <egor@pasemi.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/pasemi_edac.c -+ -+EDAC-PND2 -+M: Tony Luck <tony.luck@intel.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/pnd2_edac.[ch] -+ -+EDAC-QCOM -+M: Channagoud Kadabi <ckadabi@codeaurora.org> -+M: Venkata Narendra Kumar Gutta <vnkgutta@codeaurora.org> -+L: linux-arm-msm@vger.kernel.org -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/qcom_edac.c -+ -+EDAC-R82600 -+M: Tim Small <tim@buttersideup.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/r82600_edac.c -+ -+EDAC-SBRIDGE -+M: Tony Luck <tony.luck@intel.com> -+R: Qiuxu Zhuo <qiuxu.zhuo@intel.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/sb_edac.c -+ -+EDAC-SIFIVE -+M: Yash Shah <yash.shah@sifive.com> -+L: linux-edac@vger.kernel.org -+S: Supported -+F: drivers/edac/sifive_edac.c -+ -+EDAC-SKYLAKE -+M: Tony Luck <tony.luck@intel.com> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: drivers/edac/skx_*.[ch] -+ -+EDAC-TI -+M: Tero Kristo <kristo@kernel.org> -+L: linux-edac@vger.kernel.org -+S: Odd Fixes -+F: drivers/edac/ti_edac.c -+ -+EDIROL UA-101/UA-1000 DRIVER -+M: Clemens Ladisch <clemens@ladisch.de> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: sound/usb/misc/ua101.c -+ -+EFI TEST DRIVER -+M: Ivan Hu <ivan.hu@canonical.com> -+M: Ard Biesheuvel <ardb@kernel.org> -+L: linux-efi@vger.kernel.org -+S: Maintained -+F: drivers/firmware/efi/test/ -+ -+EFI VARIABLE FILESYSTEM -+M: Matthew Garrett <matthew.garrett@nebula.com> -+M: Jeremy Kerr <jk@ozlabs.org> -+M: Ard Biesheuvel <ardb@kernel.org> -+L: linux-efi@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git -+F: fs/efivarfs/ -+ -+EFIFB FRAMEBUFFER DRIVER -+M: Peter Jones <pjones@redhat.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/efifb.c -+ -+EFS FILESYSTEM -+S: Orphan -+W: http://aeschi.ch.eu.org/efs/ -+F: fs/efs/ -+ -+EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER -+M: Douglas Miller <dougmill@linux.ibm.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/ibm/ehea/ -+ -+EM28XX VIDEO4LINUX DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/em28xx* -+F: drivers/media/usb/em28xx/ -+ -+EMBEDDED LINUX -+M: Matt Mackall <mpm@selenic.com> -+M: David Woodhouse <dwmw2@infradead.org> -+L: linux-embedded@vger.kernel.org -+S: Maintained -+ -+EMMC CMDQ HOST CONTROLLER INTERFACE (CQHCI) DRIVER -+M: Adrian Hunter <adrian.hunter@intel.com> -+M: Ritesh Harjani <riteshh@codeaurora.org> -+M: Asutosh Das <asutoshd@codeaurora.org> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/cqhci* -+ -+EMULEX 10Gbps iSCSI - OneConnect DRIVER -+M: Subbu Seetharaman <subbu.seetharaman@broadcom.com> -+M: Ketan Mukadam <ketan.mukadam@broadcom.com> -+M: Jitendra Bhivare <jitendra.bhivare@broadcom.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.broadcom.com -+F: drivers/scsi/be2iscsi/ -+ -+EMULEX 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER (be2net) -+M: Ajit Khaparde <ajit.khaparde@broadcom.com> -+M: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com> -+M: Somnath Kotur <somnath.kotur@broadcom.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.emulex.com -+F: drivers/net/ethernet/emulex/benet/ -+ -+EMULEX ONECONNECT ROCE DRIVER -+M: Selvin Xavier <selvin.xavier@broadcom.com> -+L: linux-rdma@vger.kernel.org -+S: Odd Fixes -+W: http://www.broadcom.com -+F: drivers/infiniband/hw/ocrdma/ -+F: include/uapi/rdma/ocrdma-abi.h -+ -+EMULEX/BROADCOM LPFC FC/FCOE SCSI DRIVER -+M: James Smart <james.smart@broadcom.com> -+M: Dick Kennedy <dick.kennedy@broadcom.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.broadcom.com -+F: drivers/scsi/lpfc/ -+ -+EMULEX/BROADCOM EFCT FC/FCOE SCSI TARGET DRIVER -+M: James Smart <james.smart@broadcom.com> -+M: Ram Vegesna <ram.vegesna@broadcom.com> -+L: linux-scsi@vger.kernel.org -+L: target-devel@vger.kernel.org -+S: Supported -+W: http://www.broadcom.com -+F: drivers/scsi/elx/ -+ -+ENE CB710 FLASH CARD READER DRIVER -+M: Michał Mirosław <mirq-linux@rere.qmqm.pl> -+S: Maintained -+F: drivers/misc/cb710/ -+F: drivers/mmc/host/cb710-mmc.* -+F: include/linux/cb710.h -+ -+ENE KB2426 (ENE0100/ENE020XX) INFRARED RECEIVER -+M: Maxim Levitsky <maximlevitsky@gmail.com> -+S: Maintained -+F: drivers/media/rc/ene_ir.* -+ -+EPAPR HYPERVISOR BYTE CHANNEL DEVICE DRIVER -+M: Laurentiu Tudor <laurentiu.tudor@nxp.com> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/tty/ehv_bytechan.c -+ -+EPSON S1D13XXX FRAMEBUFFER DRIVER -+M: Kristoffer Ericson <kristoffer.ericson@gmail.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git -+F: drivers/video/fbdev/s1d13xxxfb.c -+F: include/video/s1d13xxxfb.h -+ -+EROFS FILE SYSTEM -+M: Gao Xiang <xiang@kernel.org> -+M: Chao Yu <chao@kernel.org> -+L: linux-erofs@lists.ozlabs.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git -+F: Documentation/filesystems/erofs.rst -+F: fs/erofs/ -+F: include/trace/events/erofs.h -+ -+ERRSEQ ERROR TRACKING INFRASTRUCTURE -+M: Jeff Layton <jlayton@kernel.org> -+S: Maintained -+F: include/linux/errseq.h -+F: lib/errseq.c -+ -+ET131X NETWORK DRIVER -+M: Mark Einon <mark.einon@gmail.com> -+S: Odd Fixes -+F: drivers/net/ethernet/agere/ -+ -+ETAS ES58X CAN/USB DRIVER -+M: Vincent Mailhol <mailhol.vincent@wanadoo.fr> -+L: linux-can@vger.kernel.org -+S: Maintained -+F: drivers/net/can/usb/etas_es58x/ -+ -+ETHERNET BRIDGE -+M: Roopa Prabhu <roopa@nvidia.com> -+M: Nikolay Aleksandrov <nikolay@nvidia.com> -+L: bridge@lists.linux-foundation.org (moderated for non-subscribers) -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://www.linuxfoundation.org/en/Net:Bridge -+F: include/linux/netfilter_bridge/ -+F: net/bridge/ -+ -+ETHERNET PHY LIBRARY -+M: Andrew Lunn <andrew@lunn.ch> -+M: Heiner Kallweit <hkallweit1@gmail.com> -+R: Russell King <linux@armlinux.org.uk> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-class-net-phydev -+F: Documentation/devicetree/bindings/net/ethernet-phy.yaml -+F: Documentation/devicetree/bindings/net/mdio* -+F: Documentation/devicetree/bindings/net/qca,ar803x.yaml -+F: Documentation/networking/phy.rst -+F: drivers/net/mdio/ -+F: drivers/net/mdio/acpi_mdio.c -+F: drivers/net/mdio/fwnode_mdio.c -+F: drivers/net/mdio/of_mdio.c -+F: drivers/net/pcs/ -+F: drivers/net/phy/ -+F: drivers/of/of_net.c -+F: include/dt-bindings/net/qca-ar803x.h -+F: include/linux/*mdio*.h -+F: include/linux/mdio/*.h -+F: include/linux/of_net.h -+F: include/linux/phy.h -+F: include/linux/phy_fixed.h -+F: include/linux/platform_data/mdio-bcm-unimac.h -+F: include/linux/platform_data/mdio-gpio.h -+F: include/trace/events/mdio.h -+F: include/uapi/linux/mdio.h -+F: include/uapi/linux/mii.h -+ -+EXFAT FILE SYSTEM -+M: Namjae Jeon <linkinjeon@kernel.org> -+M: Sungjong Seo <sj1557.seo@samsung.com> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: fs/exfat/ -+ -+EXT2 FILE SYSTEM -+M: Jan Kara <jack@suse.com> -+L: linux-ext4@vger.kernel.org -+S: Maintained -+F: Documentation/filesystems/ext2.rst -+F: fs/ext2/ -+F: include/linux/ext2* -+ -+EXT4 FILE SYSTEM -+M: "Theodore Ts'o" <tytso@mit.edu> -+M: Andreas Dilger <adilger.kernel@dilger.ca> -+L: linux-ext4@vger.kernel.org -+S: Maintained -+W: http://ext4.wiki.kernel.org -+Q: http://patchwork.ozlabs.org/project/linux-ext4/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git -+F: Documentation/filesystems/ext4/ -+F: fs/ext4/ -+F: include/trace/events/ext4.h -+ -+Extended Verification Module (EVM) -+M: Mimi Zohar <zohar@linux.ibm.com> -+L: linux-integrity@vger.kernel.org -+S: Supported -+F: security/integrity/evm/ -+ -+EXTENSIBLE FIRMWARE INTERFACE (EFI) -+M: Ard Biesheuvel <ardb@kernel.org> -+L: linux-efi@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git -+F: Documentation/admin-guide/efi-stub.rst -+F: arch/*/include/asm/efi.h -+F: arch/*/kernel/efi.c -+F: arch/arm/boot/compressed/efi-header.S -+F: arch/arm64/kernel/efi-entry.S -+F: arch/x86/platform/efi/ -+F: drivers/firmware/efi/ -+F: include/linux/efi*.h -+ -+EXTERNAL CONNECTOR SUBSYSTEM (EXTCON) -+M: MyungJoo Ham <myungjoo.ham@samsung.com> -+M: Chanwoo Choi <cw00.choi@samsung.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon.git -+F: Documentation/devicetree/bindings/extcon/ -+F: Documentation/firmware-guide/acpi/extcon-intel-int3496.rst -+F: drivers/extcon/ -+F: include/linux/extcon.h -+F: include/linux/extcon/ -+ -+EXTRA BOOT CONFIG -+M: Masami Hiramatsu <mhiramat@kernel.org> -+S: Maintained -+F: Documentation/admin-guide/bootconfig.rst -+F: fs/proc/bootconfig.c -+F: include/linux/bootconfig.h -+F: lib/bootconfig.c -+F: tools/bootconfig/* -+F: tools/bootconfig/scripts/* -+ -+EXYNOS DP DRIVER -+M: Jingoo Han <jingoohan1@gmail.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+F: drivers/gpu/drm/exynos/exynos_dp* -+ -+EXYNOS SYSMMU (IOMMU) driver -+M: Marek Szyprowski <m.szyprowski@samsung.com> -+L: iommu@lists.linux-foundation.org -+S: Maintained -+F: drivers/iommu/exynos-iommu.c -+ -+F2FS FILE SYSTEM -+M: Jaegeuk Kim <jaegeuk@kernel.org> -+M: Chao Yu <chao@kernel.org> -+L: linux-f2fs-devel@lists.sourceforge.net -+S: Maintained -+W: https://f2fs.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git -+F: Documentation/ABI/testing/sysfs-fs-f2fs -+F: Documentation/filesystems/f2fs.rst -+F: fs/f2fs/ -+F: include/linux/f2fs_fs.h -+F: include/trace/events/f2fs.h -+F: include/uapi/linux/f2fs.h -+ -+F71805F HARDWARE MONITORING DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/f71805f.rst -+F: drivers/hwmon/f71805f.c -+ -+FADDR2LINE -+M: Josh Poimboeuf <jpoimboe@redhat.com> -+S: Maintained -+F: scripts/faddr2line -+ -+FAILOVER MODULE -+M: Sridhar Samudrala <sridhar.samudrala@intel.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/failover.rst -+F: include/net/failover.h -+F: net/core/failover.c -+ -+FANOTIFY -+M: Jan Kara <jack@suse.cz> -+R: Amir Goldstein <amir73il@gmail.com> -+R: Matthew Bobrowski <repnop@google.com> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: fs/notify/fanotify/ -+F: include/linux/fanotify.h -+F: include/uapi/linux/fanotify.h -+ -+FARSYNC SYNCHRONOUS DRIVER -+M: Kevin Curtis <kevin.curtis@farsite.co.uk> -+S: Supported -+W: http://www.farsite.co.uk/ -+F: drivers/net/wan/farsync.* -+ -+FAULT INJECTION SUPPORT -+M: Akinobu Mita <akinobu.mita@gmail.com> -+S: Supported -+F: Documentation/fault-injection/ -+F: lib/fault-inject.c -+ -+FBTFT Framebuffer drivers -+L: dri-devel@lists.freedesktop.org -+L: linux-fbdev@vger.kernel.org -+S: Orphan -+F: drivers/staging/fbtft/ -+ -+FC0011 TUNER DRIVER -+M: Michael Buesch <m@bues.ch> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/tuners/fc0011.c -+F: drivers/media/tuners/fc0011.h -+ -+FC2580 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/fc2580* -+ -+FCOE SUBSYSTEM (libfc, libfcoe, fcoe) -+M: Hannes Reinecke <hare@suse.de> -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: www.Open-FCoE.org -+F: drivers/scsi/fcoe/ -+F: drivers/scsi/libfc/ -+F: include/scsi/fc/ -+F: include/scsi/libfc.h -+F: include/scsi/libfcoe.h -+F: include/uapi/scsi/fc/ -+ -+FILE LOCKING (flock() and fcntl()/lockf()) -+M: Jeff Layton <jlayton@kernel.org> -+M: "J. Bruce Fields" <bfields@fieldses.org> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: fs/fcntl.c -+F: fs/locks.c -+F: include/linux/fcntl.h -+F: include/uapi/linux/fcntl.h -+ -+FILESYSTEM DIRECT ACCESS (DAX) -+M: Dan Williams <dan.j.williams@intel.com> -+R: Matthew Wilcox <willy@infradead.org> -+R: Jan Kara <jack@suse.cz> -+L: linux-fsdevel@vger.kernel.org -+L: nvdimm@lists.linux.dev -+S: Supported -+F: fs/dax.c -+F: include/linux/dax.h -+F: include/trace/events/fs_dax.h -+ -+FILESYSTEMS (VFS and infrastructure) -+M: Alexander Viro <viro@zeniv.linux.org.uk> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: fs/* -+F: include/linux/fs.h -+F: include/linux/fs_types.h -+F: include/uapi/linux/fs.h -+F: include/uapi/linux/openat2.h -+X: fs/io-wq.c -+X: fs/io-wq.h -+X: fs/io_uring.c -+ -+FINTEK F75375S HARDWARE MONITOR AND FAN CONTROLLER DRIVER -+M: Riku Voipio <riku.voipio@iki.fi> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/f75375s.c -+F: include/linux/f75375s.h -+ -+FIREWIRE AUDIO DRIVERS and IEC 61883-1/6 PACKET STREAMING ENGINE -+M: Clemens Ladisch <clemens@ladisch.de> -+M: Takashi Sakamoto <o-takashi@sakamocchi.jp> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: include/uapi/sound/firewire.h -+F: sound/firewire/ -+ -+FIREWIRE MEDIA DRIVERS (firedtv) -+M: Stefan Richter <stefanr@s5r6.in-berlin.de> -+L: linux-media@vger.kernel.org -+L: linux1394-devel@lists.sourceforge.net -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git -+F: drivers/media/firewire/ -+ -+FIREWIRE SBP-2 TARGET -+M: Chris Boot <bootc@bootc.net> -+L: linux-scsi@vger.kernel.org -+L: target-devel@vger.kernel.org -+L: linux1394-devel@lists.sourceforge.net -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git master -+F: drivers/target/sbp/ -+ -+FIREWIRE SUBSYSTEM -+M: Stefan Richter <stefanr@s5r6.in-berlin.de> -+L: linux1394-devel@lists.sourceforge.net -+S: Maintained -+W: http://ieee1394.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git -+F: drivers/firewire/ -+F: include/linux/firewire.h -+F: include/uapi/linux/firewire*.h -+F: tools/firewire/ -+ -+FIRMWARE FRAMEWORK FOR ARMV8-A -+M: Sudeep Holla <sudeep.holla@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/firmware/arm_ffa/ -+F: include/linux/arm_ffa.h -+ -+FIRMWARE LOADER (request_firmware) -+M: Luis Chamberlain <mcgrof@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/firmware_class/ -+F: drivers/base/firmware_loader/ -+F: include/linux/firmware.h -+ -+FLASH ADAPTER DRIVER (IBM Flash Adapter 900GB Full Height PCI Flash Card) -+M: Joshua Morris <josh.h.morris@us.ibm.com> -+M: Philip Kelleher <pjk1939@linux.ibm.com> -+S: Maintained -+F: drivers/block/rsxx/ -+ -+FLEXTIMER FTM-QUADDEC DRIVER -+M: Patrick Havelange <patrick.havelange@essensium.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/counter/ftm-quaddec.txt -+F: drivers/counter/ftm-quaddec.c -+ -+FLOPPY DRIVER -+M: Denis Efremov <efremov@linux.com> -+L: linux-block@vger.kernel.org -+S: Odd Fixes -+F: drivers/block/floppy.c -+ -+FLYSKY FSIA6B RC RECEIVER -+M: Markus Koch <markus@notsyncing.net> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/joystick/fsia6b.c -+ -+FOCUSRITE SCARLETT GEN 2/3 MIXER DRIVER -+M: Geoffrey D. Bennett <g@b4.vu> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: sound/usb/mixer_scarlett_gen2.c -+ -+FORCEDETH GIGABIT ETHERNET DRIVER -+M: Rain River <rain.1986.08.12@gmail.com> -+M: Zhu Yanjun <zyjzyj2000@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/nvidia/* -+ -+FPGA DFL DRIVERS -+M: Wu Hao <hao.wu@intel.com> -+R: Tom Rix <trix@redhat.com> -+L: linux-fpga@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-dfl* -+F: Documentation/fpga/dfl.rst -+F: drivers/fpga/dfl* -+F: drivers/uio/uio_dfl.c -+F: include/linux/dfl.h -+F: include/uapi/linux/fpga-dfl.h -+ -+FPGA MANAGER FRAMEWORK -+M: Moritz Fischer <mdf@kernel.org> -+M: Wu Hao <hao.wu@intel.com> -+M: Xu Yilun <yilun.xu@intel.com> -+R: Tom Rix <trix@redhat.com> -+L: linux-fpga@vger.kernel.org -+S: Maintained -+Q: http://patchwork.kernel.org/project/linux-fpga/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mdf/linux-fpga.git -+F: Documentation/devicetree/bindings/fpga/ -+F: Documentation/driver-api/fpga/ -+F: Documentation/fpga/ -+F: drivers/fpga/ -+F: include/linux/fpga/ -+ -+FPU EMULATOR -+M: Bill Metzenthen <billm@melbpc.org.au> -+S: Maintained -+W: http://floatingpoint.sourceforge.net/emulator/index.html -+F: arch/x86/math-emu/ -+ -+FRAMEBUFFER LAYER -+L: dri-devel@lists.freedesktop.org -+L: linux-fbdev@vger.kernel.org -+S: Orphan -+Q: http://patchwork.kernel.org/project/linux-fbdev/list/ -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/fb/ -+F: drivers/video/ -+F: include/linux/fb.h -+F: include/uapi/linux/fb.h -+F: include/uapi/video/ -+F: include/video/ -+ -+FREESCALE CAAM (Cryptographic Acceleration and Assurance Module) DRIVER -+M: Horia Geantă <horia.geanta@nxp.com> -+M: Pankaj Gupta <pankaj.gupta@nxp.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/crypto/fsl-sec4.txt -+F: drivers/crypto/caam/ -+ -+FREESCALE COLDFIRE M5441X MMC DRIVER -+M: Angelo Dureghello <angelo.dureghello@timesys.com> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/sdhci-esdhc-mcf.c -+F: include/linux/platform_data/mmc-esdhc-mcf.h -+ -+FREESCALE DIU FRAMEBUFFER DRIVER -+M: Timur Tabi <timur@kernel.org> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/fsl-diu-fb.* -+ -+FREESCALE DMA DRIVER -+M: Li Yang <leoyang.li@nxp.com> -+M: Zhang Wei <zw@zh-kernel.org> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/dma/fsldma.* -+ -+FREESCALE DSPI DRIVER -+M: Vladimir Oltean <olteanv@gmail.com> -+L: linux-spi@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt -+F: drivers/spi/spi-fsl-dspi.c -+F: include/linux/spi/spi-fsl-dspi.h -+ -+FREESCALE ENETC ETHERNET DRIVERS -+M: Claudiu Manoil <claudiu.manoil@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/freescale/enetc/ -+ -+FREESCALE eTSEC ETHERNET DRIVER (GIANFAR) -+M: Claudiu Manoil <claudiu.manoil@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/fsl-tsec-phy.txt -+F: drivers/net/ethernet/freescale/gianfar* -+ -+FREESCALE GPMI NAND DRIVER -+M: Han Xu <han.xu@nxp.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: drivers/mtd/nand/raw/gpmi-nand/* -+ -+FREESCALE I2C CPM DRIVER -+M: Jochen Friedrich <jochen@scram.de> -+L: linuxppc-dev@lists.ozlabs.org -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/busses/i2c-cpm.c -+ -+FREESCALE IMX / MXC FEC DRIVER -+M: Joakim Zhang <qiangqing.zhang@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/fsl,fec.yaml -+F: drivers/net/ethernet/freescale/fec.h -+F: drivers/net/ethernet/freescale/fec_main.c -+F: drivers/net/ethernet/freescale/fec_ptp.c -+ -+FREESCALE IMX / MXC FRAMEBUFFER DRIVER -+M: Sascha Hauer <s.hauer@pengutronix.de> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+L: linux-fbdev@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/video/fbdev/imxfb.c -+F: include/linux/platform_data/video-imxfb.h -+ -+FREESCALE IMX DDR PMU DRIVER -+M: Frank Li <Frank.li@nxp.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/admin-guide/perf/imx-ddr.rst -+F: Documentation/devicetree/bindings/perf/fsl-imx-ddr.yaml -+F: drivers/perf/fsl_imx8_ddr_perf.c -+ -+FREESCALE IMX I2C DRIVER -+M: Oleksij Rempel <o.rempel@pengutronix.de> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-imx.yaml -+F: drivers/i2c/busses/i2c-imx.c -+ -+FREESCALE IMX LPI2C DRIVER -+M: Dong Aisheng <aisheng.dong@nxp.com> -+L: linux-i2c@vger.kernel.org -+L: linux-imx@nxp.com -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.yaml -+F: drivers/i2c/busses/i2c-imx-lpi2c.c -+ -+FREESCALE MPC I2C DRIVER -+M: Chris Packham <chris.packham@alliedtelesis.co.nz> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-mpc.yaml -+F: drivers/i2c/busses/i2c-mpc.c -+ -+FREESCALE QORIQ DPAA ETHERNET DRIVER -+M: Madalin Bucur <madalin.bucur@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/freescale/dpaa -+ -+FREESCALE QORIQ DPAA FMAN DRIVER -+M: Madalin Bucur <madalin.bucur@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/fsl-fman.txt -+F: drivers/net/ethernet/freescale/fman -+ -+FREESCALE QORIQ PTP CLOCK DRIVER -+M: Yangbo Lu <yangbo.lu@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/ptp/ptp-qoriq.txt -+F: drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp* -+F: drivers/net/ethernet/freescale/dpaa2/dprtc* -+F: drivers/net/ethernet/freescale/enetc/enetc_ptp.c -+F: drivers/ptp/ptp_qoriq.c -+F: drivers/ptp/ptp_qoriq_debugfs.c -+F: include/linux/fsl/ptp_qoriq.h -+ -+FREESCALE QUAD SPI DRIVER -+M: Han Xu <han.xu@nxp.com> -+L: linux-spi@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/spi/fsl,spi-fsl-qspi.yaml -+F: drivers/spi/spi-fsl-qspi.c -+ -+FREESCALE QUICC ENGINE LIBRARY -+M: Qiang Zhao <qiang.zhao@nxp.com> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/soc/fsl/qe/ -+F: include/soc/fsl/*qe*.h -+F: include/soc/fsl/*ucc*.h -+ -+FREESCALE QUICC ENGINE UCC ETHERNET DRIVER -+M: Li Yang <leoyang.li@nxp.com> -+L: netdev@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/net/ethernet/freescale/ucc_geth* -+ -+FREESCALE QUICC ENGINE UCC HDLC DRIVER -+M: Zhao Qiang <qiang.zhao@nxp.com> -+L: netdev@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/net/wan/fsl_ucc_hdlc* -+ -+FREESCALE QUICC ENGINE UCC UART DRIVER -+M: Timur Tabi <timur@kernel.org> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/tty/serial/ucc_uart.c -+ -+FREESCALE SOC DRIVERS -+M: Li Yang <leoyang.li@nxp.com> -+L: linuxppc-dev@lists.ozlabs.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/misc/fsl,dpaa2-console.yaml -+F: Documentation/devicetree/bindings/soc/fsl/ -+F: drivers/soc/fsl/ -+F: include/linux/fsl/ -+ -+FREESCALE SOC FS_ENET DRIVER -+M: Pantelis Antoniou <pantelis.antoniou@gmail.com> -+L: linuxppc-dev@lists.ozlabs.org -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/freescale/fs_enet/ -+F: include/linux/fs_enet_pd.h -+ -+FREESCALE SOC SOUND DRIVERS -+M: Nicolin Chen <nicoleotsuka@gmail.com> -+M: Xiubo Li <Xiubo.Lee@gmail.com> -+R: Fabio Estevam <festevam@gmail.com> -+R: Shengjiu Wang <shengjiu.wang@gmail.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: sound/soc/fsl/fsl* -+F: sound/soc/fsl/imx* -+F: sound/soc/fsl/mpc8610_hpcd.c -+ -+FREESCALE USB PERIPHERAL DRIVERS -+M: Li Yang <leoyang.li@nxp.com> -+L: linux-usb@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/usb/gadget/udc/fsl* -+ -+FREESCALE USB PHY DRIVER -+M: Ran Wang <ran.wang_1@nxp.com> -+L: linux-usb@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/usb/phy/phy-fsl-usb* -+ -+FREEVXFS FILESYSTEM -+M: Christoph Hellwig <hch@infradead.org> -+S: Maintained -+W: ftp://ftp.openlinux.org/pub/people/hch/vxfs -+F: fs/freevxfs/ -+ -+FREEZER -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Pavel Machek <pavel@ucw.cz> -+L: linux-pm@vger.kernel.org -+S: Supported -+F: Documentation/power/freezing-of-tasks.rst -+F: include/linux/freezer.h -+F: kernel/freezer.c -+ -+FRONTSWAP API -+M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: include/linux/frontswap.h -+F: mm/frontswap.c -+ -+FS-CACHE: LOCAL CACHING FOR NETWORK FILESYSTEMS -+M: David Howells <dhowells@redhat.com> -+L: linux-cachefs@redhat.com (moderated for non-subscribers) -+S: Supported -+F: Documentation/filesystems/caching/ -+F: fs/fscache/ -+F: include/linux/fscache*.h -+ -+FSCRYPT: FILE SYSTEM LEVEL ENCRYPTION SUPPORT -+M: Theodore Y. Ts'o <tytso@mit.edu> -+M: Jaegeuk Kim <jaegeuk@kernel.org> -+M: Eric Biggers <ebiggers@kernel.org> -+L: linux-fscrypt@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-fscrypt/list/ -+T: git git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt.git -+F: Documentation/filesystems/fscrypt.rst -+F: fs/crypto/ -+F: include/linux/fscrypt*.h -+F: include/uapi/linux/fscrypt.h -+ -+FSI SUBSYSTEM -+M: Jeremy Kerr <jk@ozlabs.org> -+M: Joel Stanley <joel@jms.id.au> -+R: Alistar Popple <alistair@popple.id.au> -+R: Eddie James <eajames@linux.ibm.com> -+L: linux-fsi@lists.ozlabs.org -+S: Supported -+Q: http://patchwork.ozlabs.org/project/linux-fsi/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/joel/fsi.git -+F: drivers/fsi/ -+F: include/linux/fsi*.h -+F: include/trace/events/fsi*.h -+ -+FSI-ATTACHED I2C DRIVER -+M: Eddie James <eajames@linux.ibm.com> -+L: linux-i2c@vger.kernel.org -+L: openbmc@lists.ozlabs.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-fsi.txt -+F: drivers/i2c/busses/i2c-fsi.c -+ -+FSI-ATTACHED SPI DRIVER -+M: Eddie James <eajames@linux.ibm.com> -+L: linux-spi@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/fsi/ibm,fsi2spi.yaml -+F: drivers/spi/spi-fsi.c -+ -+FSNOTIFY: FILESYSTEM NOTIFICATION INFRASTRUCTURE -+M: Jan Kara <jack@suse.cz> -+R: Amir Goldstein <amir73il@gmail.com> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git fsnotify -+F: fs/notify/ -+F: include/linux/fsnotify*.h -+ -+FSVERITY: READ-ONLY FILE-BASED AUTHENTICITY PROTECTION -+M: Eric Biggers <ebiggers@kernel.org> -+M: Theodore Y. Ts'o <tytso@mit.edu> -+L: linux-fscrypt@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-fscrypt/list/ -+T: git git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt.git fsverity -+F: Documentation/filesystems/fsverity.rst -+F: fs/verity/ -+F: include/linux/fsverity.h -+F: include/uapi/linux/fsverity.h -+ -+FT260 FTDI USB-HID TO I2C BRIDGE DRIVER -+M: Michael Zaidman <michael.zaidman@gmail.com> -+L: linux-i2c@vger.kernel.org -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/hid-ft260.c -+ -+FUJITSU LAPTOP EXTRAS -+M: Jonathan Woithe <jwoithe@just42.net> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/fujitsu-laptop.c -+ -+FUJITSU M-5MO LS CAMERA ISP DRIVER -+M: Kyungmin Park <kyungmin.park@samsung.com> -+M: Heungjun Kim <riverful.kim@samsung.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/m5mols/ -+F: include/media/i2c/m5mols.h -+ -+FUJITSU TABLET EXTRAS -+M: Robert Gerlach <khnz@gmx.de> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/fujitsu-tablet.c -+ -+FUSE: FILESYSTEM IN USERSPACE -+M: Miklos Szeredi <miklos@szeredi.hu> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+W: https://github.com/libfuse/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git -+F: Documentation/filesystems/fuse.rst -+F: fs/fuse/ -+F: include/uapi/linux/fuse.h -+ -+FUTEX SUBSYSTEM -+M: Thomas Gleixner <tglx@linutronix.de> -+M: Ingo Molnar <mingo@redhat.com> -+R: Peter Zijlstra <peterz@infradead.org> -+R: Darren Hart <dvhart@infradead.org> -+R: Davidlohr Bueso <dave@stgolabs.net> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core -+F: Documentation/locking/*futex* -+F: include/asm-generic/futex.h -+F: include/linux/futex.h -+F: include/uapi/linux/futex.h -+F: kernel/futex.c -+F: tools/perf/bench/futex* -+F: tools/testing/selftests/futex/ -+ -+GATEWORKS SYSTEM CONTROLLER (GSC) DRIVER -+M: Tim Harvey <tharvey@gateworks.com> -+M: Robert Jones <rjones@gateworks.com> -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml -+F: drivers/mfd/gateworks-gsc.c -+F: include/linux/mfd/gsc.h -+F: Documentation/hwmon/gsc-hwmon.rst -+F: drivers/hwmon/gsc-hwmon.c -+F: include/linux/platform_data/gsc_hwmon.h -+ -+GCC PLUGINS -+M: Kees Cook <keescook@chromium.org> -+L: linux-hardening@vger.kernel.org -+S: Maintained -+F: Documentation/kbuild/gcc-plugins.rst -+F: scripts/Makefile.gcc-plugins -+F: scripts/gcc-plugins/ -+ -+GCOV BASED KERNEL PROFILING -+M: Peter Oberparleiter <oberpar@linux.ibm.com> -+S: Maintained -+F: Documentation/dev-tools/gcov.rst -+F: kernel/gcov/ -+ -+GDB KERNEL DEBUGGING HELPER SCRIPTS -+M: Jan Kiszka <jan.kiszka@siemens.com> -+M: Kieran Bingham <kbingham@kernel.org> -+S: Supported -+F: scripts/gdb/ -+ -+GEMINI CRYPTO DRIVER -+M: Corentin Labbe <clabbe@baylibre.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: drivers/crypto/gemini/ -+ -+GEMTEK FM RADIO RECEIVER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-gemtek* -+ -+GENERIC ARCHITECTURE TOPOLOGY -+M: Sudeep Holla <sudeep.holla@arm.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/base/arch_topology.c -+F: include/linux/arch_topology.h -+ -+GENERIC ENTRY CODE -+M: Thomas Gleixner <tglx@linutronix.de> -+M: Peter Zijlstra <peterz@infradead.org> -+M: Andy Lutomirski <luto@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/entry -+F: include/linux/entry-common.h -+F: include/linux/entry-kvm.h -+F: kernel/entry/ -+ -+GENERIC GPIO I2C DRIVER -+M: Wolfram Sang <wsa+renesas@sang-engineering.com> -+S: Supported -+F: drivers/i2c/busses/i2c-gpio.c -+F: include/linux/platform_data/i2c-gpio.h -+ -+GENERIC GPIO I2C MULTIPLEXER DRIVER -+M: Peter Korsgaard <peter.korsgaard@barco.com> -+L: linux-i2c@vger.kernel.org -+S: Supported -+F: Documentation/i2c/muxes/i2c-mux-gpio.rst -+F: drivers/i2c/muxes/i2c-mux-gpio.c -+F: include/linux/platform_data/i2c-mux-gpio.h -+ -+GENERIC HDLC (WAN) DRIVERS -+M: Krzysztof Halasa <khc@pm.waw.pl> -+S: Maintained -+W: http://www.kernel.org/pub/linux/utils/net/hdlc/ -+F: drivers/net/wan/c101.c -+F: drivers/net/wan/hd6457* -+F: drivers/net/wan/hdlc* -+F: drivers/net/wan/n2.c -+F: drivers/net/wan/pc300too.c -+F: drivers/net/wan/pci200syn.c -+F: drivers/net/wan/wanxl* -+ -+GENERIC INCLUDE/ASM HEADER FILES -+M: Arnd Bergmann <arnd@arndb.de> -+L: linux-arch@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git -+F: include/asm-generic/ -+F: include/uapi/asm-generic/ -+ -+GENERIC PHY FRAMEWORK -+M: Kishon Vijay Abraham I <kishon@ti.com> -+M: Vinod Koul <vkoul@kernel.org> -+L: linux-phy@lists.infradead.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-phy/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git -+F: Documentation/devicetree/bindings/phy/ -+F: drivers/phy/ -+F: include/linux/phy/ -+ -+GENERIC PINCTRL I2C DEMULTIPLEXER DRIVER -+M: Wolfram Sang <wsa+renesas@sang-engineering.com> -+S: Supported -+F: drivers/i2c/muxes/i2c-demux-pinctrl.c -+ -+GENERIC PM DOMAINS -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Kevin Hilman <khilman@kernel.org> -+M: Ulf Hansson <ulf.hansson@linaro.org> -+L: linux-pm@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/power/power?domain* -+F: drivers/base/power/domain*.c -+F: include/linux/pm_domain.h -+ -+GENERIC RESISTIVE TOUCHSCREEN ADC DRIVER -+M: Eugen Hristev <eugen.hristev@microchip.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/touchscreen/resistive-adc-touch.c -+ -+GENERIC STRING LIBRARY -+R: Andy Shevchenko <andy@kernel.org> -+S: Maintained -+F: lib/string.c -+F: lib/string_helpers.c -+F: lib/test_string.c -+F: lib/test-string_helpers.c -+ -+GENERIC UIO DRIVER FOR PCI DEVICES -+M: "Michael S. Tsirkin" <mst@redhat.com> -+L: kvm@vger.kernel.org -+S: Supported -+F: drivers/uio/uio_pci_generic.c -+ -+GENERIC VDSO LIBRARY -+M: Andy Lutomirski <luto@kernel.org> -+M: Thomas Gleixner <tglx@linutronix.de> -+M: Vincenzo Frascino <vincenzo.frascino@arm.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso -+F: include/asm-generic/vdso/vsyscall.h -+F: include/vdso/ -+F: kernel/time/vsyscall.c -+F: lib/vdso/ -+ -+GENWQE (IBM Generic Workqueue Card) -+M: Frank Haverkamp <haver@linux.ibm.com> -+S: Supported -+F: drivers/misc/genwqe/ -+ -+GET_MAINTAINER SCRIPT -+M: Joe Perches <joe@perches.com> -+S: Maintained -+F: scripts/get_maintainer.pl -+ -+GFS2 FILE SYSTEM -+M: Bob Peterson <rpeterso@redhat.com> -+M: Andreas Gruenbacher <agruenba@redhat.com> -+L: cluster-devel@redhat.com -+S: Supported -+B: https://bugzilla.kernel.org/enter_bug.cgi?product=File%20System&component=gfs2 -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git -+F: Documentation/filesystems/gfs2* -+F: fs/gfs2/ -+F: include/uapi/linux/gfs2_ondisk.h -+ -+GIGABYTE WMI DRIVER -+M: Thomas Weißschuh <thomas@weissschuh.net> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/gigabyte-wmi.c -+ -+GNSS SUBSYSTEM -+M: Johan Hovold <johan@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss.git -+F: Documentation/ABI/testing/sysfs-class-gnss -+F: Documentation/devicetree/bindings/gnss/ -+F: drivers/gnss/ -+F: include/linux/gnss.h -+ -+GO7007 MPEG CODEC -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/usb/go7007/ -+ -+GOODIX TOUCHSCREEN -+M: Bastien Nocera <hadess@hadess.net> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/touchscreen/goodix.c -+ -+GOOGLE ETHERNET DRIVERS -+M: Jeroen de Borst <jeroendb@google.com> -+R: Catherine Sullivan <csully@google.com> -+R: David Awogbemila <awogbemila@google.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/device_drivers/ethernet/google/gve.rst -+F: drivers/net/ethernet/google -+ -+GPD POCKET FAN DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/gpd-pocket-fan.c -+ -+GPIO ACPI SUPPORT -+M: Mika Westerberg <mika.westerberg@linux.intel.com> -+M: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+L: linux-gpio@vger.kernel.org -+L: linux-acpi@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git -+F: Documentation/firmware-guide/acpi/gpio-properties.rst -+F: drivers/gpio/gpiolib-acpi.c -+F: drivers/gpio/gpiolib-acpi.h -+ -+GPIO AGGREGATOR -+M: Geert Uytterhoeven <geert+renesas@glider.be> -+L: linux-gpio@vger.kernel.org -+S: Supported -+F: Documentation/admin-guide/gpio/gpio-aggregator.rst -+F: drivers/gpio/gpio-aggregator.c -+ -+GPIO IR Transmitter -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/rc/gpio-ir-tx.c -+ -+GPIO MOCKUP DRIVER -+M: Bamvor Jian Zhang <bamv2005@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-mockup.c -+F: tools/testing/selftests/gpio/ -+ -+GPIO REGMAP -+R: Michael Walle <michael@walle.cc> -+S: Maintained -+F: drivers/gpio/gpio-regmap.c -+F: include/linux/gpio/regmap.h -+ -+GPIO SUBSYSTEM -+M: Linus Walleij <linus.walleij@linaro.org> -+M: Bartosz Golaszewski <brgl@bgdev.pl> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git -+F: Documentation/ABI/obsolete/sysfs-gpio -+F: Documentation/ABI/testing/gpio-cdev -+F: Documentation/admin-guide/gpio/ -+F: Documentation/devicetree/bindings/gpio/ -+F: Documentation/driver-api/gpio/ -+F: drivers/gpio/ -+F: include/asm-generic/gpio.h -+F: include/linux/gpio.h -+F: include/linux/gpio/ -+F: include/linux/of_gpio.h -+F: include/uapi/linux/gpio.h -+F: tools/gpio/ -+ -+GRE DEMULTIPLEXER DRIVER -+M: Dmitry Kozlov <xeb@mail.ru> -+L: netdev@vger.kernel.org -+S: Maintained -+F: include/net/gre.h -+F: net/ipv4/gre_demux.c -+F: net/ipv4/gre_offload.c -+ -+GRETH 10/100/1G Ethernet MAC device driver -+M: Andreas Larsson <andreas@gaisler.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/aeroflex/ -+ -+GREYBUS AUDIO PROTOCOLS DRIVERS -+M: Vaibhav Agarwal <vaibhav.sr@gmail.com> -+M: Mark Greer <mgreer@animalcreek.com> -+S: Maintained -+F: drivers/staging/greybus/audio_apbridgea.c -+F: drivers/staging/greybus/audio_apbridgea.h -+F: drivers/staging/greybus/audio_codec.c -+F: drivers/staging/greybus/audio_codec.h -+F: drivers/staging/greybus/audio_gb.c -+F: drivers/staging/greybus/audio_manager.c -+F: drivers/staging/greybus/audio_manager.h -+F: drivers/staging/greybus/audio_manager_module.c -+F: drivers/staging/greybus/audio_manager_private.h -+F: drivers/staging/greybus/audio_manager_sysfs.c -+F: drivers/staging/greybus/audio_module.c -+F: drivers/staging/greybus/audio_topology.c -+ -+GREYBUS FW/HID/SPI PROTOCOLS DRIVERS -+M: Viresh Kumar <vireshk@kernel.org> -+S: Maintained -+F: drivers/staging/greybus/authentication.c -+F: drivers/staging/greybus/bootrom.c -+F: drivers/staging/greybus/firmware.h -+F: drivers/staging/greybus/fw-core.c -+F: drivers/staging/greybus/fw-download.c -+F: drivers/staging/greybus/fw-management.c -+F: drivers/staging/greybus/greybus_authentication.h -+F: drivers/staging/greybus/greybus_firmware.h -+F: drivers/staging/greybus/hid.c -+F: drivers/staging/greybus/i2c.c -+F: drivers/staging/greybus/spi.c -+F: drivers/staging/greybus/spilib.c -+F: drivers/staging/greybus/spilib.h -+ -+GREYBUS LOOPBACK DRIVER -+M: Bryan O'Donoghue <pure.logic@nexus-software.ie> -+S: Maintained -+F: drivers/staging/greybus/loopback.c -+ -+GREYBUS PLATFORM DRIVERS -+M: Vaibhav Hiremath <hvaibhav.linux@gmail.com> -+S: Maintained -+F: drivers/staging/greybus/arche-apb-ctrl.c -+F: drivers/staging/greybus/arche-platform.c -+F: drivers/staging/greybus/arche_platform.h -+ -+GREYBUS SDIO/GPIO/SPI PROTOCOLS DRIVERS -+M: Rui Miguel Silva <rmfrfs@gmail.com> -+S: Maintained -+F: drivers/staging/greybus/gpio.c -+F: drivers/staging/greybus/light.c -+F: drivers/staging/greybus/power_supply.c -+F: drivers/staging/greybus/sdio.c -+F: drivers/staging/greybus/spi.c -+F: drivers/staging/greybus/spilib.c -+ -+GREYBUS SUBSYSTEM -+M: Johan Hovold <johan@kernel.org> -+M: Alex Elder <elder@kernel.org> -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: greybus-dev@lists.linaro.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/greybus/ -+F: drivers/staging/greybus/ -+F: include/linux/greybus.h -+F: include/linux/greybus/ -+ -+GREYBUS UART PROTOCOLS DRIVERS -+M: David Lin <dtwlin@gmail.com> -+S: Maintained -+F: drivers/staging/greybus/log.c -+F: drivers/staging/greybus/uart.c -+ -+GS1662 VIDEO SERIALIZER -+M: Charles-Antoine Couret <charles-antoine.couret@nexvision.fr> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/spi/gs1662.c -+ -+GSPCA FINEPIX SUBDRIVER -+M: Frank Zago <frank@zago.net> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/gspca/finepix.c -+ -+GSPCA GL860 SUBDRIVER -+M: Olivier Lorin <o.lorin@laposte.net> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/gspca/gl860/ -+ -+GSPCA M5602 SUBDRIVER -+M: Erik Andren <erik.andren@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/gspca/m5602/ -+ -+GSPCA PAC207 SONIXB SUBDRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/gspca/pac207.c -+ -+GSPCA SN9C20X SUBDRIVER -+M: Brian Johnson <brijohn@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/gspca/sn9c20x.c -+ -+GSPCA T613 SUBDRIVER -+M: Leandro Costantino <lcostantino@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/gspca/t613.c -+ -+GSPCA USB WEBCAM DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/gspca/ -+ -+GTP (GPRS Tunneling Protocol) -+M: Pablo Neira Ayuso <pablo@netfilter.org> -+M: Harald Welte <laforge@gnumonks.org> -+L: osmocom-net-gprs@lists.osmocom.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/gtp.git -+F: drivers/net/gtp.c -+ -+GUID PARTITION TABLE (GPT) -+M: Davidlohr Bueso <dave@stgolabs.net> -+L: linux-efi@vger.kernel.org -+S: Maintained -+F: block/partitions/efi.* -+ -+H8/300 ARCHITECTURE -+M: Yoshinori Sato <ysato@users.sourceforge.jp> -+L: uclinux-h8-devel@lists.sourceforge.jp (moderated for non-subscribers) -+S: Maintained -+W: http://uclinux-h8.sourceforge.jp -+T: git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git -+F: arch/h8300/ -+F: drivers/clk/h8300/ -+F: drivers/clocksource/h8300_*.c -+F: drivers/irqchip/irq-renesas-h8*.c -+ -+HABANALABS PCI DRIVER -+M: Oded Gabbay <ogabbay@kernel.org> -+S: Supported -+T: git https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git -+F: Documentation/ABI/testing/debugfs-driver-habanalabs -+F: Documentation/ABI/testing/sysfs-driver-habanalabs -+F: drivers/misc/habanalabs/ -+F: include/uapi/misc/habanalabs.h -+ -+HACKRF MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/hackrf/ -+ -+HANTRO VPU CODEC DRIVER -+M: Ezequiel Garcia <ezequiel@collabora.com> -+M: Philipp Zabel <p.zabel@pengutronix.de> -+L: linux-media@vger.kernel.org -+L: linux-rockchip@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml -+F: Documentation/devicetree/bindings/media/rockchip-vpu.yaml -+F: drivers/staging/media/hantro/ -+ -+HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER -+M: Frank Seidel <frank@f-seidel.de> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/ -+F: drivers/platform/x86/hdaps.c -+ -+HARDWARE MONITORING -+M: Jean Delvare <jdelvare@suse.com> -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+W: http://hwmon.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git -+F: Documentation/devicetree/bindings/hwmon/ -+F: Documentation/hwmon/ -+F: drivers/hwmon/ -+F: include/linux/hwmon*.h -+F: include/trace/events/hwmon*.h -+K: (devm_)?hwmon_device_(un)?register(|_with_groups|_with_info) -+ -+HARDWARE RANDOM NUMBER GENERATOR CORE -+M: Matt Mackall <mpm@selenic.com> -+M: Herbert Xu <herbert@gondor.apana.org.au> -+L: linux-crypto@vger.kernel.org -+S: Odd fixes -+F: Documentation/admin-guide/hw_random.rst -+F: Documentation/devicetree/bindings/rng/ -+F: drivers/char/hw_random/ -+F: include/linux/hw_random.h -+ -+HARDWARE SPINLOCK CORE -+M: Ohad Ben-Cohen <ohad@wizery.com> -+M: Bjorn Andersson <bjorn.andersson@linaro.org> -+R: Baolin Wang <baolin.wang7@gmail.com> -+L: linux-remoteproc@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git hwspinlock-next -+F: Documentation/devicetree/bindings/hwlock/ -+F: Documentation/locking/hwspinlock.rst -+F: drivers/hwspinlock/ -+F: include/linux/hwspinlock.h -+ -+HARDWARE TRACING FACILITIES -+M: Alexander Shishkin <alexander.shishkin@linux.intel.com> -+S: Maintained -+F: drivers/hwtracing/ -+ -+HARMONY SOUND DRIVER -+L: linux-parisc@vger.kernel.org -+S: Maintained -+F: sound/parisc/harmony.* -+ -+HDPVR USB VIDEO ENCODER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/hdpvr/ -+ -+HEWLETT PACKARD ENTERPRISE ILO CHIF DRIVER -+M: Matt Hsiao <matt.hsiao@hpe.com> -+S: Supported -+F: drivers/misc/hpilo.[ch] -+ -+HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER -+M: Jerry Hoemann <jerry.hoemann@hpe.com> -+S: Supported -+F: Documentation/watchdog/hpwdt.rst -+F: drivers/watchdog/hpwdt.c -+ -+HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa) -+M: Don Brace <don.brace@microchip.com> -+L: storagedev@microchip.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: Documentation/scsi/hpsa.rst -+F: drivers/scsi/hpsa*.[ch] -+F: include/linux/cciss*.h -+F: include/uapi/linux/cciss*.h -+ -+HFI1 DRIVER -+M: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com> -+M: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/hw/hfi1 -+ -+HFS FILESYSTEM -+L: linux-fsdevel@vger.kernel.org -+S: Orphan -+F: Documentation/filesystems/hfs.rst -+F: fs/hfs/ -+ -+HFSPLUS FILESYSTEM -+L: linux-fsdevel@vger.kernel.org -+S: Orphan -+F: Documentation/filesystems/hfsplus.rst -+F: fs/hfsplus/ -+ -+HGA FRAMEBUFFER DRIVER -+M: Ferenc Bakonyi <fero@drama.obuda.kando.hu> -+L: linux-nvidia@lists.surfsouth.com -+S: Maintained -+W: http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml -+F: drivers/video/fbdev/hgafb.c -+ -+HIBERNATION (aka Software Suspend, aka swsusp) -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Pavel Machek <pavel@ucw.cz> -+L: linux-pm@vger.kernel.org -+S: Supported -+B: https://bugzilla.kernel.org -+F: arch/*/include/asm/suspend*.h -+F: arch/x86/power/ -+F: drivers/base/power/ -+F: include/linux/freezer.h -+F: include/linux/pm.h -+F: include/linux/suspend.h -+F: kernel/power/ -+ -+HID CORE LAYER -+M: Jiri Kosina <jikos@kernel.org> -+M: Benjamin Tissoires <benjamin.tissoires@redhat.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git -+F: drivers/hid/ -+F: include/linux/hid* -+F: include/uapi/linux/hid* -+ -+HID PLAYSTATION DRIVER -+M: Roderick Colenbrander <roderick.colenbrander@sony.com> -+L: linux-input@vger.kernel.org -+S: Supported -+F: drivers/hid/hid-playstation.c -+ -+HID SENSOR HUB DRIVERS -+M: Jiri Kosina <jikos@kernel.org> -+M: Jonathan Cameron <jic23@kernel.org> -+M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> -+L: linux-input@vger.kernel.org -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/hid/hid-sensor* -+F: drivers/hid/hid-sensor-* -+F: drivers/iio/*/hid-* -+F: include/linux/hid-sensor-* -+ -+HIGH-RESOLUTION TIMERS, CLOCKEVENTS -+M: Thomas Gleixner <tglx@linutronix.de> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core -+F: Documentation/timers/ -+F: include/linux/clockchips.h -+F: include/linux/hrtimer.h -+F: kernel/time/clockevents.c -+F: kernel/time/hrtimer.c -+F: kernel/time/timer_*.c -+ -+HIGH-SPEED SCC DRIVER FOR AX.25 -+L: linux-hams@vger.kernel.org -+S: Orphan -+F: drivers/net/hamradio/dmascc.c -+F: drivers/net/hamradio/scc.c -+ -+HIGHPOINT ROCKETRAID 3xxx RAID DRIVER -+M: HighPoint Linux Team <linux@highpoint-tech.com> -+S: Supported -+W: http://www.highpoint-tech.com -+F: Documentation/scsi/hptiop.rst -+F: drivers/scsi/hptiop.c -+ -+HIPPI -+M: Jes Sorensen <jes@trained-monkey.org> -+L: linux-hippi@sunsite.dk -+S: Maintained -+F: drivers/net/hippi/ -+F: include/linux/hippidevice.h -+F: include/uapi/linux/if_hippi.h -+F: net/802/hippi.c -+ -+HIRSCHMANN HELLCREEK ETHERNET SWITCH DRIVER -+M: Kurt Kanzenbach <kurt@linutronix.de> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/dsa/hirschmann,hellcreek.yaml -+F: drivers/net/dsa/hirschmann/* -+F: include/linux/platform_data/hirschmann-hellcreek.h -+F: net/dsa/tag_hellcreek.c -+ -+HISILICON DMA DRIVER -+M: Zhou Wang <wangzhou1@hisilicon.com> -+L: dmaengine@vger.kernel.org -+S: Maintained -+F: drivers/dma/hisi_dma.c -+ -+HISILICON GPIO DRIVER -+M: Luo Jiaxing <luojiaxing@huawei.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-hisi.c -+ -+HISILICON HIGH PERFORMANCE RSA ENGINE DRIVER (HPRE) -+M: Zaibo Xu <xuzaibo@huawei.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/debugfs-hisi-hpre -+F: drivers/crypto/hisilicon/hpre/hpre.h -+F: drivers/crypto/hisilicon/hpre/hpre_crypto.c -+F: drivers/crypto/hisilicon/hpre/hpre_main.c -+ -+HISILICON I2C CONTROLLER DRIVER -+M: Yicong Yang <yangyicong@hisilicon.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+W: https://www.hisilicon.com -+F: drivers/i2c/busses/i2c-hisi.c -+ -+HISILICON LPC BUS DRIVER -+M: john.garry@huawei.com -+S: Maintained -+W: http://www.hisilicon.com -+F: Documentation/devicetree/bindings/arm/hisilicon/low-pin-count.yaml -+F: drivers/bus/hisi_lpc.c -+ -+HISILICON NETWORK SUBSYSTEM 3 DRIVER (HNS3) -+M: Yisen Zhuang <yisen.zhuang@huawei.com> -+M: Salil Mehta <salil.mehta@huawei.com> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://www.hisilicon.com -+F: drivers/net/ethernet/hisilicon/hns3/ -+ -+HISILICON NETWORK SUBSYSTEM DRIVER -+M: Yisen Zhuang <yisen.zhuang@huawei.com> -+M: Salil Mehta <salil.mehta@huawei.com> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://www.hisilicon.com -+F: Documentation/devicetree/bindings/net/hisilicon*.txt -+F: drivers/net/ethernet/hisilicon/ -+ -+HIKEY960 ONBOARD USB GPIO HUB DRIVER -+M: John Stultz <john.stultz@linaro.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/misc/hisi_hikey_usb.c -+F: Documentation/devicetree/bindings/misc/hisilicon-hikey-usb.yaml -+ -+HISILICON PMU DRIVER -+M: Shaokun Zhang <zhangshaokun@hisilicon.com> -+S: Supported -+W: http://www.hisilicon.com -+F: Documentation/admin-guide/perf/hisi-pmu.rst -+F: drivers/perf/hisilicon -+ -+HISILICON QM AND ZIP Controller DRIVER -+M: Zhou Wang <wangzhou1@hisilicon.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/debugfs-hisi-zip -+F: drivers/crypto/hisilicon/qm.c -+F: drivers/crypto/hisilicon/qm.h -+F: drivers/crypto/hisilicon/sgl.c -+F: drivers/crypto/hisilicon/zip/ -+ -+HISILICON ROCE DRIVER -+M: Wenpeng Liang <liangwenpeng@huawei.com> -+M: Weihang Li <liweihang@huawei.com> -+L: linux-rdma@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/infiniband/hisilicon-hns-roce.txt -+F: drivers/infiniband/hw/hns/ -+ -+HISILICON SAS Controller -+M: John Garry <john.garry@huawei.com> -+S: Supported -+W: http://www.hisilicon.com -+F: Documentation/devicetree/bindings/scsi/hisilicon-sas.txt -+F: drivers/scsi/hisi_sas/ -+ -+HISILICON SECURITY ENGINE V2 DRIVER (SEC2) -+M: Zaibo Xu <xuzaibo@huawei.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/debugfs-hisi-sec -+F: drivers/crypto/hisilicon/sec2/sec.h -+F: drivers/crypto/hisilicon/sec2/sec_crypto.c -+F: drivers/crypto/hisilicon/sec2/sec_crypto.h -+F: drivers/crypto/hisilicon/sec2/sec_main.c -+ -+HISILICON SPI Controller DRIVER FOR KUNPENG SOCS -+M: Jay Fang <f.fangjian@huawei.com> -+L: linux-spi@vger.kernel.org -+S: Maintained -+W: http://www.hisilicon.com -+F: drivers/spi/spi-hisi-kunpeng.c -+ -+HISILICON SPMI CONTROLLER DRIVER FOR HIKEY 970 -+M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/spmi/hisilicon,hisi-spmi-controller.yaml -+F: drivers/spmi/hisi-spmi-controller.c -+ -+HISILICON SPMI PMIC DRIVER FOR HIKEY 6421v600 -+M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml -+F: drivers/mfd/hi6421-spmi-pmic.c -+ -+HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT -+M: Zaibo Xu <xuzaibo@huawei.com> -+S: Maintained -+F: drivers/crypto/hisilicon/trng/trng.c -+ -+HISILICON V3XX SPI NOR FLASH Controller Driver -+M: John Garry <john.garry@huawei.com> -+S: Maintained -+W: http://www.hisilicon.com -+F: drivers/spi/spi-hisi-sfc-v3xx.c -+ -+HMM - Heterogeneous Memory Management -+M: Jérôme Glisse <jglisse@redhat.com> -+L: linux-mm@kvack.org -+S: Maintained -+F: Documentation/vm/hmm.rst -+F: include/linux/hmm* -+F: lib/test_hmm* -+F: mm/hmm* -+F: tools/testing/selftests/vm/*hmm* -+ -+HOST AP DRIVER -+M: Jouni Malinen <j@w1.fi> -+L: linux-wireless@vger.kernel.org -+S: Obsolete -+W: http://w1.fi/hostap-driver.html -+F: drivers/net/wireless/intersil/hostap/ -+ -+HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER -+L: platform-driver-x86@vger.kernel.org -+S: Orphan -+F: drivers/platform/x86/tc1100-wmi.c -+ -+HPET: High Precision Event Timers driver -+M: Clemens Ladisch <clemens@ladisch.de> -+S: Maintained -+F: Documentation/timers/hpet.rst -+F: drivers/char/hpet.c -+F: include/linux/hpet.h -+F: include/uapi/linux/hpet.h -+ -+HPET: x86 -+S: Orphan -+F: arch/x86/include/asm/hpet.h -+F: arch/x86/kernel/hpet.c -+ -+HPFS FILESYSTEM -+M: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz> -+S: Maintained -+W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi -+F: fs/hpfs/ -+ -+HSI SUBSYSTEM -+M: Sebastian Reichel <sre@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi.git -+F: Documentation/ABI/testing/sysfs-bus-hsi -+F: Documentation/driver-api/hsi.rst -+F: drivers/hsi/ -+F: include/linux/hsi/ -+F: include/uapi/linux/hsi/ -+ -+HSO 3G MODEM DRIVER -+L: linux-usb@vger.kernel.org -+S: Orphan -+F: drivers/net/usb/hso.c -+ -+HSR NETWORK PROTOCOL -+L: netdev@vger.kernel.org -+S: Orphan -+F: net/hsr/ -+ -+HT16K33 LED CONTROLLER DRIVER -+M: Robin van der Gracht <robin@protonic.nl> -+S: Maintained -+F: Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml -+F: drivers/auxdisplay/ht16k33.c -+ -+HTCPEN TOUCHSCREEN DRIVER -+M: Pau Oliva Fora <pof@eslack.org> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/touchscreen/htcpen.c -+ -+HTS221 TEMPERATURE-HUMIDITY IIO DRIVER -+M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+W: http://www.st.com/ -+F: Documentation/devicetree/bindings/iio/humidity/st,hts221.yaml -+F: drivers/iio/humidity/hts221* -+ -+HUAWEI ETHERNET DRIVER -+L: netdev@vger.kernel.org -+S: Orphan -+F: Documentation/networking/device_drivers/ethernet/huawei/hinic.rst -+F: drivers/net/ethernet/huawei/hinic/ -+ -+HUGETLB FILESYSTEM -+M: Mike Kravetz <mike.kravetz@oracle.com> -+L: linux-mm@kvack.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-kernel-mm-hugepages -+F: Documentation/admin-guide/mm/hugetlbpage.rst -+F: Documentation/vm/hugetlbfs_reserv.rst -+F: fs/hugetlbfs/ -+F: include/linux/hugetlb.h -+F: mm/hugetlb.c -+ -+HVA ST MEDIA DRIVER -+M: Jean-Christophe Trotin <jean-christophe.trotin@foss.st.com> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/platform/sti/hva -+ -+HWPOISON MEMORY FAILURE HANDLING -+M: Naoya Horiguchi <naoya.horiguchi@nec.com> -+L: linux-mm@kvack.org -+S: Maintained -+F: mm/hwpoison-inject.c -+F: mm/memory-failure.c -+ -+HYCON HY46XX TOUCHSCREEN SUPPORT -+M: Giulio Benetti <giulio.benetti@benettiengineering.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml -+F: drivers/input/touchscreen/hycon-hy46xx.c -+ -+HYGON PROCESSOR SUPPORT -+M: Pu Wen <puwen@hygon.cn> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: arch/x86/kernel/cpu/hygon.c -+ -+HYNIX HI556 SENSOR DRIVER -+M: Shawn Tu <shawnx.tu@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/hi556.c -+ -+Hyper-V/Azure CORE AND DRIVERS -+M: "K. Y. Srinivasan" <kys@microsoft.com> -+M: Haiyang Zhang <haiyangz@microsoft.com> -+M: Stephen Hemminger <sthemmin@microsoft.com> -+M: Wei Liu <wei.liu@kernel.org> -+M: Dexuan Cui <decui@microsoft.com> -+L: linux-hyperv@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git -+F: Documentation/ABI/stable/sysfs-bus-vmbus -+F: Documentation/ABI/testing/debugfs-hyperv -+F: Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst -+F: arch/arm64/hyperv -+F: arch/arm64/include/asm/hyperv-tlfs.h -+F: arch/arm64/include/asm/mshyperv.h -+F: arch/x86/hyperv -+F: arch/x86/include/asm/hyperv-tlfs.h -+F: arch/x86/include/asm/mshyperv.h -+F: arch/x86/include/asm/trace/hyperv.h -+F: arch/x86/kernel/cpu/mshyperv.c -+F: drivers/clocksource/hyperv_timer.c -+F: drivers/hid/hid-hyperv.c -+F: drivers/hv/ -+F: drivers/input/serio/hyperv-keyboard.c -+F: drivers/iommu/hyperv-iommu.c -+F: drivers/net/ethernet/microsoft/ -+F: drivers/net/hyperv/ -+F: drivers/pci/controller/pci-hyperv-intf.c -+F: drivers/pci/controller/pci-hyperv.c -+F: drivers/scsi/storvsc_drv.c -+F: drivers/uio/uio_hv_generic.c -+F: drivers/video/fbdev/hyperv_fb.c -+F: include/asm-generic/hyperv-tlfs.h -+F: include/asm-generic/mshyperv.h -+F: include/clocksource/hyperv_timer.h -+F: include/linux/hyperv.h -+F: include/uapi/linux/hyperv.h -+F: net/vmw_vsock/hyperv_transport.c -+F: tools/hv/ -+ -+HYPERBUS SUPPORT -+M: Vignesh Raghavendra <vigneshr@ti.com> -+L: linux-mtd@lists.infradead.org -+S: Supported -+Q: http://patchwork.ozlabs.org/project/linux-mtd/list/ -+C: irc://irc.oftc.net/mtd -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git cfi/next -+F: Documentation/devicetree/bindings/mtd/cypress,hyperflash.txt -+F: Documentation/devicetree/bindings/mtd/ti,am654-hbmc.txt -+F: drivers/mtd/hyperbus/ -+F: include/linux/mtd/hyperbus.h -+ -+HYPERVISOR VIRTUAL CONSOLE DRIVER -+L: linuxppc-dev@lists.ozlabs.org -+S: Odd Fixes -+F: drivers/tty/hvc/ -+ -+I2C ACPI SUPPORT -+M: Mika Westerberg <mika.westerberg@linux.intel.com> -+L: linux-i2c@vger.kernel.org -+L: linux-acpi@vger.kernel.org -+S: Maintained -+F: drivers/i2c/i2c-core-acpi.c -+ -+I2C CONTROLLER DRIVER FOR NVIDIA GPU -+M: Ajay Gupta <ajayg@nvidia.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/i2c/busses/i2c-nvidia-gpu.rst -+F: drivers/i2c/busses/i2c-nvidia-gpu.c -+ -+I2C MUXES -+M: Peter Rosin <peda@axentia.se> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-arb* -+F: Documentation/devicetree/bindings/i2c/i2c-gate* -+F: Documentation/devicetree/bindings/i2c/i2c-mux* -+F: Documentation/i2c/i2c-topology.rst -+F: Documentation/i2c/muxes/ -+F: drivers/i2c/i2c-mux.c -+F: drivers/i2c/muxes/ -+F: include/linux/i2c-mux.h -+ -+I2C MV64XXX MARVELL AND ALLWINNER DRIVER -+M: Gregory CLEMENT <gregory.clement@bootlin.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/marvell,mv64xxx-i2c.yaml -+F: drivers/i2c/busses/i2c-mv64xxx.c -+ -+I2C OVER PARALLEL PORT -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/i2c/busses/i2c-parport.rst -+F: drivers/i2c/busses/i2c-parport.c -+ -+I2C SUBSYSTEM -+M: Wolfram Sang <wsa@kernel.org> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+W: https://i2c.wiki.kernel.org/ -+Q: https://patchwork.ozlabs.org/project/linux-i2c/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git -+F: Documentation/devicetree/bindings/i2c/i2c.txt -+F: Documentation/i2c/ -+F: drivers/i2c/* -+F: include/linux/i2c-dev.h -+F: include/linux/i2c-smbus.h -+F: include/linux/i2c.h -+F: include/uapi/linux/i2c-*.h -+F: include/uapi/linux/i2c.h -+ -+I2C SUBSYSTEM HOST DRIVERS -+L: linux-i2c@vger.kernel.org -+S: Odd Fixes -+W: https://i2c.wiki.kernel.org/ -+Q: https://patchwork.ozlabs.org/project/linux-i2c/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git -+F: Documentation/devicetree/bindings/i2c/ -+F: drivers/i2c/algos/ -+F: drivers/i2c/busses/ -+ -+I2C-TAOS-EVM DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/i2c/busses/i2c-taos-evm.rst -+F: drivers/i2c/busses/i2c-taos-evm.c -+ -+I2C-TINY-USB DRIVER -+M: Till Harbaum <till@harbaum.org> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+W: http://www.harbaum.org/till/i2c_tiny_usb -+F: drivers/i2c/busses/i2c-tiny-usb.c -+ -+I2C/SMBUS CONTROLLER DRIVERS FOR PC -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/i2c/busses/i2c-ali1535.rst -+F: Documentation/i2c/busses/i2c-ali1563.rst -+F: Documentation/i2c/busses/i2c-ali15x3.rst -+F: Documentation/i2c/busses/i2c-amd756.rst -+F: Documentation/i2c/busses/i2c-amd8111.rst -+F: Documentation/i2c/busses/i2c-i801.rst -+F: Documentation/i2c/busses/i2c-nforce2.rst -+F: Documentation/i2c/busses/i2c-piix4.rst -+F: Documentation/i2c/busses/i2c-sis5595.rst -+F: Documentation/i2c/busses/i2c-sis630.rst -+F: Documentation/i2c/busses/i2c-sis96x.rst -+F: Documentation/i2c/busses/i2c-via.rst -+F: Documentation/i2c/busses/i2c-viapro.rst -+F: drivers/i2c/busses/i2c-ali1535.c -+F: drivers/i2c/busses/i2c-ali1563.c -+F: drivers/i2c/busses/i2c-ali15x3.c -+F: drivers/i2c/busses/i2c-amd756-s4882.c -+F: drivers/i2c/busses/i2c-amd756.c -+F: drivers/i2c/busses/i2c-amd8111.c -+F: drivers/i2c/busses/i2c-i801.c -+F: drivers/i2c/busses/i2c-isch.c -+F: drivers/i2c/busses/i2c-nforce2-s4985.c -+F: drivers/i2c/busses/i2c-nforce2.c -+F: drivers/i2c/busses/i2c-piix4.c -+F: drivers/i2c/busses/i2c-sis5595.c -+F: drivers/i2c/busses/i2c-sis630.c -+F: drivers/i2c/busses/i2c-sis96x.c -+F: drivers/i2c/busses/i2c-via.c -+F: drivers/i2c/busses/i2c-viapro.c -+ -+I2C/SMBUS INTEL CHT WHISKEY COVE PMIC DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/busses/i2c-cht-wc.c -+ -+I2C/SMBUS ISMT DRIVER -+M: Seth Heasley <seth.heasley@intel.com> -+M: Neil Horman <nhorman@tuxdriver.com> -+L: linux-i2c@vger.kernel.org -+F: Documentation/i2c/busses/i2c-ismt.rst -+F: drivers/i2c/busses/i2c-ismt.c -+ -+I2C/SMBUS STUB DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/i2c-stub.c -+ -+I3C DRIVER FOR CADENCE I3C MASTER IP -+M: Przemysław Gaj <pgaj@cadence.com> -+S: Maintained -+F: Documentation/devicetree/bindings/i3c/cdns,i3c-master.txt -+F: drivers/i3c/master/i3c-master-cdns.c -+ -+I3C DRIVER FOR SYNOPSYS DESIGNWARE -+M: Vitor Soares <vitor.soares@synopsys.com> -+S: Maintained -+F: Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.txt -+F: drivers/i3c/master/dw* -+ -+I3C SUBSYSTEM -+M: Alexandre Belloni <alexandre.belloni@bootlin.com> -+L: linux-i3c@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+C: irc://chat.freenode.net/linux-i3c -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux.git -+F: Documentation/ABI/testing/sysfs-bus-i3c -+F: Documentation/devicetree/bindings/i3c/ -+F: Documentation/driver-api/i3c -+F: drivers/i3c/ -+F: include/linux/i3c/ -+ -+IA64 (Itanium) PLATFORM -+L: linux-ia64@vger.kernel.org -+S: Orphan -+F: Documentation/ia64/ -+F: arch/ia64/ -+ -+IBM Power 842 compression accelerator -+M: Haren Myneni <haren@us.ibm.com> -+S: Supported -+F: crypto/842.c -+F: drivers/crypto/nx/Kconfig -+F: drivers/crypto/nx/Makefile -+F: drivers/crypto/nx/nx-842* -+F: include/linux/sw842.h -+F: lib/842/ -+ -+IBM Power in-Nest Crypto Acceleration -+M: Breno Leitão <leitao@debian.org> -+M: Nayna Jain <nayna@linux.ibm.com> -+M: Paulo Flabiano Smorigo <pfsmorigo@gmail.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+F: drivers/crypto/nx/Kconfig -+F: drivers/crypto/nx/Makefile -+F: drivers/crypto/nx/nx-aes* -+F: drivers/crypto/nx/nx-sha* -+F: drivers/crypto/nx/nx.* -+F: drivers/crypto/nx/nx_csbcpb.h -+F: drivers/crypto/nx/nx_debugfs.c -+ -+IBM Power IO DLPAR Driver for RPA-compliant PPC64 platform -+M: Tyrel Datwyler <tyreld@linux.ibm.com> -+L: linux-pci@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+F: drivers/pci/hotplug/rpadlpar* -+ -+IBM Power Linux RAID adapter -+M: Brian King <brking@us.ibm.com> -+S: Supported -+F: drivers/scsi/ipr.* -+ -+IBM Power PCI Hotplug Driver for RPA-compliant PPC64 platform -+M: Tyrel Datwyler <tyreld@linux.ibm.com> -+L: linux-pci@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+F: drivers/pci/hotplug/rpaphp* -+ -+IBM Power SRIOV Virtual NIC Device Driver -+M: Dany Madden <drt@linux.ibm.com> -+M: Sukadev Bhattiprolu <sukadev@linux.ibm.com> -+R: Thomas Falcon <tlfalcon@linux.ibm.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/ibm/ibmvnic.* -+ -+IBM Power Virtual Accelerator Switchboard -+M: Sukadev Bhattiprolu <sukadev@linux.ibm.com> -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+F: arch/powerpc/include/asm/vas.h -+F: arch/powerpc/platforms/powernv/copy-paste.h -+F: arch/powerpc/platforms/powernv/vas* -+ -+IBM Power Virtual Ethernet Device Driver -+M: Cristobal Forno <cforno12@linux.ibm.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/ibm/ibmveth.* -+ -+IBM Power Virtual FC Device Drivers -+M: Tyrel Datwyler <tyreld@linux.ibm.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/ibmvscsi/ibmvfc* -+ -+IBM Power Virtual Management Channel Driver -+M: Brad Warrum <bwarrum@linux.ibm.com> -+M: Ritu Agarwal <rituagar@linux.ibm.com> -+S: Supported -+F: drivers/misc/ibmvmc.* -+ -+IBM Power Virtual SCSI Device Drivers -+M: Tyrel Datwyler <tyreld@linux.ibm.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/ibmvscsi/ibmvscsi* -+F: include/scsi/viosrp.h -+ -+IBM Power Virtual SCSI Device Target Driver -+M: Michael Cyr <mikecyr@linux.ibm.com> -+L: linux-scsi@vger.kernel.org -+L: target-devel@vger.kernel.org -+S: Supported -+F: drivers/scsi/ibmvscsi_tgt/ -+ -+IBM Power VMX Cryptographic instructions -+M: Breno Leitão <leitao@debian.org> -+M: Nayna Jain <nayna@linux.ibm.com> -+M: Paulo Flabiano Smorigo <pfsmorigo@gmail.com> -+L: linux-crypto@vger.kernel.org -+S: Supported -+F: drivers/crypto/vmx/Kconfig -+F: drivers/crypto/vmx/Makefile -+F: drivers/crypto/vmx/aes* -+F: drivers/crypto/vmx/ghash* -+F: drivers/crypto/vmx/ppc-xlate.pl -+F: drivers/crypto/vmx/vmx.c -+ -+IBM ServeRAID RAID DRIVER -+S: Orphan -+F: drivers/scsi/ips.* -+ -+ICH LPC AND GPIO DRIVER -+M: Peter Tyser <ptyser@xes-inc.com> -+S: Maintained -+F: drivers/gpio/gpio-ich.c -+F: drivers/mfd/lpc_ich.c -+ -+ICY I2C DRIVER -+M: Max Staudt <max@enpas.org> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/busses/i2c-icy.c -+ -+IDEAPAD LAPTOP EXTRAS DRIVER -+M: Ike Panhc <ike.pan@canonical.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+W: http://launchpad.net/ideapad-laptop -+F: drivers/platform/x86/ideapad-laptop.c -+ -+IDEAPAD LAPTOP SLIDEBAR DRIVER -+M: Andrey Moiseev <o2g.org.ru@gmail.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+W: https://github.com/o2genum/ideapad-slidebar -+F: drivers/input/misc/ideapad_slidebar.c -+ -+IDT VersaClock 5 CLOCK DRIVER -+M: Luca Ceresoli <luca@lucaceresoli.net> -+S: Maintained -+F: Documentation/devicetree/bindings/clock/idt,versaclock5.yaml -+F: drivers/clk/clk-versaclock5.c -+ -+IEEE 802.15.4 SUBSYSTEM -+M: Alexander Aring <alex.aring@gmail.com> -+M: Stefan Schmidt <stefan@datenfreihafen.org> -+L: linux-wpan@vger.kernel.org -+S: Maintained -+W: https://linux-wpan.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan-next.git -+F: Documentation/networking/ieee802154.rst -+F: drivers/net/ieee802154/ -+F: include/linux/ieee802154.h -+F: include/linux/nl802154.h -+F: include/net/af_ieee802154.h -+F: include/net/cfg802154.h -+F: include/net/ieee802154_netdev.h -+F: include/net/mac802154.h -+F: include/net/nl802154.h -+F: net/ieee802154/ -+F: net/mac802154/ -+ -+IFE PROTOCOL -+M: Yotam Gigi <yotam.gi@gmail.com> -+M: Jamal Hadi Salim <jhs@mojatatu.com> -+F: include/net/ife.h -+F: include/uapi/linux/ife.h -+F: net/ife -+ -+IGORPLUG-USB IR RECEIVER -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/rc/igorplugusb.c -+ -+IGUANAWORKS USB IR TRANSCEIVER -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/rc/iguanair.c -+ -+IIO DIGITAL POTENTIOMETER DAC -+M: Peter Rosin <peda@axentia.se> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-iio-dac-dpot-dac -+F: Documentation/devicetree/bindings/iio/dac/dpot-dac.yaml -+F: drivers/iio/dac/dpot-dac.c -+ -+IIO ENVELOPE DETECTOR -+M: Peter Rosin <peda@axentia.se> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-iio-adc-envelope-detector -+F: Documentation/devicetree/bindings/iio/adc/envelope-detector.yaml -+F: drivers/iio/adc/envelope-detector.c -+ -+IIO MULTIPLEXER -+M: Peter Rosin <peda@axentia.se> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/multiplexer/io-channel-mux.yaml -+F: drivers/iio/multiplexer/iio-mux.c -+ -+IIO SCMI BASED DRIVER -+M: Jyoti Bhayana <jbhayana@google.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: drivers/iio/common/scmi_sensors/scmi_iio.c -+ -+IIO SUBSYSTEM AND DRIVERS -+M: Jonathan Cameron <jic23@kernel.org> -+R: Lars-Peter Clausen <lars@metafoo.de> -+L: linux-iio@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git -+F: Documentation/ABI/testing/configfs-iio* -+F: Documentation/ABI/testing/sysfs-bus-iio* -+F: Documentation/devicetree/bindings/iio/ -+F: drivers/iio/ -+F: drivers/staging/iio/ -+F: include/linux/iio/ -+F: tools/iio/ -+ -+IIO UNIT CONVERTER -+M: Peter Rosin <peda@axentia.se> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/afe/current-sense-amplifier.yaml -+F: Documentation/devicetree/bindings/iio/afe/current-sense-shunt.yaml -+F: Documentation/devicetree/bindings/iio/afe/voltage-divider.yaml -+F: drivers/iio/afe/iio-rescale.c -+ -+IKANOS/ADI EAGLE ADSL USB DRIVER -+M: Matthieu Castet <castet.matthieu@free.fr> -+M: Stanislaw Gruszka <stf_xl@wp.pl> -+S: Maintained -+F: drivers/usb/atm/ueagle-atm.c -+ -+IMGTEC ASCII LCD DRIVER -+M: Paul Burton <paulburton@kernel.org> -+S: Maintained -+F: Documentation/devicetree/bindings/auxdisplay/img,ascii-lcd.yaml -+F: drivers/auxdisplay/img-ascii-lcd.c -+ -+IMGTEC IR DECODER DRIVER -+S: Orphan -+F: drivers/media/rc/img-ir/ -+ -+IMON SOUNDGRAPH USB IR RECEIVER -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/rc/imon.c -+F: drivers/media/rc/imon_raw.c -+ -+IMS TWINTURBO FRAMEBUFFER DRIVER -+L: linux-fbdev@vger.kernel.org -+S: Orphan -+F: drivers/video/fbdev/imsttfb.c -+ -+INA209 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/hwmon/ti,ina2xx.yaml -+F: Documentation/hwmon/ina209.rst -+F: drivers/hwmon/ina209.c -+ -+INA2XX HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/ina2xx.rst -+F: drivers/hwmon/ina2xx.c -+F: include/linux/platform_data/ina2xx.h -+ -+INDUSTRY PACK SUBSYSTEM (IPACK) -+M: Samuel Iglesias Gonsalvez <siglesias@igalia.com> -+M: Jens Taprogge <jens.taprogge@taprogge.org> -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: industrypack-devel@lists.sourceforge.net -+S: Maintained -+W: http://industrypack.sourceforge.net -+F: drivers/ipack/ -+ -+INFINEON DPS310 Driver -+M: Eddie James <eajames@linux.ibm.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: drivers/iio/pressure/dps310.c -+ -+INFINIBAND SUBSYSTEM -+M: Doug Ledford <dledford@redhat.com> -+M: Jason Gunthorpe <jgg@nvidia.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: https://github.com/linux-rdma/rdma-core -+Q: http://patchwork.kernel.org/project/linux-rdma/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git -+F: Documentation/devicetree/bindings/infiniband/ -+F: Documentation/infiniband/ -+F: drivers/infiniband/ -+F: include/rdma/ -+F: include/trace/events/ib_mad.h -+F: include/trace/events/ib_umad.h -+F: include/uapi/linux/if_infiniband.h -+F: include/uapi/rdma/ -+F: samples/bpf/ibumad_kern.c -+F: samples/bpf/ibumad_user.c -+ -+INGENIC JZ4780 NAND DRIVER -+M: Harvey Hunt <harveyhuntnexus@gmail.com> -+L: linux-mtd@lists.infradead.org -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: drivers/mtd/nand/raw/ingenic/ -+ -+INGENIC JZ47xx SoCs -+M: Paul Cercueil <paul@crapouillou.net> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/boot/dts/ingenic/ -+F: arch/mips/generic/board-ingenic.c -+F: arch/mips/include/asm/mach-ingenic/ -+F: arch/mips/ingenic/Kconfig -+F: drivers/clk/ingenic/ -+F: drivers/dma/dma-jz4780.c -+F: drivers/gpu/drm/ingenic/ -+F: drivers/i2c/busses/i2c-jz4780.c -+F: drivers/iio/adc/ingenic-adc.c -+F: drivers/irqchip/irq-ingenic.c -+F: drivers/memory/jz4780-nemc.c -+F: drivers/mmc/host/jz4740_mmc.c -+F: drivers/mtd/nand/raw/ingenic/ -+F: drivers/pinctrl/pinctrl-ingenic.c -+F: drivers/power/supply/ingenic-battery.c -+F: drivers/pwm/pwm-jz4740.c -+F: drivers/remoteproc/ingenic_rproc.c -+F: drivers/rtc/rtc-jz4740.c -+F: drivers/tty/serial/8250/8250_ingenic.c -+F: drivers/usb/musb/jz4740.c -+F: drivers/watchdog/jz4740_wdt.c -+F: include/dt-bindings/iio/adc/ingenic,adc.h -+F: include/linux/mfd/ingenic-tcu.h -+F: sound/soc/codecs/jz47* -+F: sound/soc/jz4740/ -+ -+INOTIFY -+M: Jan Kara <jack@suse.cz> -+R: Amir Goldstein <amir73il@gmail.com> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: Documentation/filesystems/inotify.rst -+F: fs/notify/inotify/ -+F: include/linux/inotify.h -+F: include/uapi/linux/inotify.h -+ -+INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS -+M: Dmitry Torokhov <dmitry.torokhov@gmail.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+Q: http://patchwork.kernel.org/project/linux-input/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git -+F: Documentation/devicetree/bindings/input/ -+F: Documentation/devicetree/bindings/serio/ -+F: Documentation/input/ -+F: drivers/input/ -+F: include/linux/input.h -+F: include/linux/input/ -+F: include/uapi/linux/input-event-codes.h -+F: include/uapi/linux/input.h -+ -+INPUT MULTITOUCH (MT) PROTOCOL -+M: Henrik Rydberg <rydberg@bitmath.org> -+L: linux-input@vger.kernel.org -+S: Odd fixes -+F: Documentation/input/multi-touch-protocol.rst -+F: drivers/input/input-mt.c -+K: \b(ABS|SYN)_MT_ -+ -+INSIDE SECURE CRYPTO DRIVER -+M: Antoine Tenart <atenart@kernel.org> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: drivers/crypto/inside-secure/ -+ -+INTEGRITY MEASUREMENT ARCHITECTURE (IMA) -+M: Mimi Zohar <zohar@linux.ibm.com> -+M: Dmitry Kasatkin <dmitry.kasatkin@gmail.com> -+L: linux-integrity@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity.git -+F: security/integrity/ima/ -+ -+INTEL 810/815 FRAMEBUFFER DRIVER -+M: Antonino Daplas <adaplas@gmail.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/i810/ -+ -+INTEL ASoC DRIVERS -+M: Cezary Rojewski <cezary.rojewski@intel.com> -+M: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> -+M: Liam Girdwood <liam.r.girdwood@linux.intel.com> -+M: Jie Yang <yang.jie@linux.intel.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+F: sound/soc/intel/ -+ -+INTEL ATOMISP2 DUMMY / POWER-MANAGEMENT DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/intel/atomisp2/pm.c -+ -+INTEL ATOMISP2 LED DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/intel/atomisp2/led.c -+ -+INTEL BIOS SAR INT1092 DRIVER -+M: Shravan Sudhakar <s.shravan@intel.com> -+M: Intel Corporation <linuxwwan@intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/intel/int1092/ -+ -+INTEL BROXTON PMC DRIVER -+M: Mika Westerberg <mika.westerberg@linux.intel.com> -+M: Zha Qipeng <qipeng.zha@intel.com> -+S: Maintained -+F: drivers/mfd/intel_pmc_bxt.c -+F: include/linux/mfd/intel_pmc_bxt.h -+ -+INTEL C600 SERIES SAS CONTROLLER DRIVER -+M: Artur Paszkiewicz <artur.paszkiewicz@intel.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+T: git git://git.code.sf.net/p/intel-sas/isci -+F: drivers/scsi/isci/ -+ -+INTEL CPU family model numbers -+M: Tony Luck <tony.luck@intel.com> -+M: x86@kernel.org -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: arch/x86/include/asm/intel-family.h -+ -+INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets) -+M: Jani Nikula <jani.nikula@linux.intel.com> -+M: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> -+M: Rodrigo Vivi <rodrigo.vivi@intel.com> -+L: intel-gfx@lists.freedesktop.org -+S: Supported -+W: https://01.org/linuxgraphics/ -+Q: http://patchwork.freedesktop.org/project/intel-gfx/ -+B: https://gitlab.freedesktop.org/drm/intel/-/wikis/How-to-file-i915-bugs -+C: irc://irc.oftc.net/intel-gfx -+T: git git://anongit.freedesktop.org/drm-intel -+F: Documentation/gpu/i915.rst -+F: drivers/gpu/drm/i915/ -+F: include/drm/i915* -+F: include/uapi/drm/i915_drm.h -+ -+INTEL ETHERNET DRIVERS -+M: Jesse Brandeburg <jesse.brandeburg@intel.com> -+M: Tony Nguyen <anthony.l.nguyen@intel.com> -+L: intel-wired-lan@lists.osuosl.org (moderated for non-subscribers) -+S: Supported -+W: http://www.intel.com/support/feedback.htm -+W: http://e1000.sourceforge.net/ -+Q: http://patchwork.ozlabs.org/project/intel-wired-lan/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue.git -+F: Documentation/networking/device_drivers/ethernet/intel/ -+F: drivers/net/ethernet/intel/ -+F: drivers/net/ethernet/intel/*/ -+F: include/linux/avf/virtchnl.h -+F: include/linux/net/intel/iidc.h -+ -+INTEL ETHERNET PROTOCOL DRIVER FOR RDMA -+M: Mustafa Ismail <mustafa.ismail@intel.com> -+M: Shiraz Saleem <shiraz.saleem@intel.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/hw/irdma/ -+F: include/uapi/rdma/irdma-abi.h -+ -+INTEL FRAMEBUFFER DRIVER (excluding 810 and 815) -+M: Maik Broemme <mbroemme@libmpq.org> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: Documentation/fb/intelfb.rst -+F: drivers/video/fbdev/intelfb/ -+ -+INTEL GPIO DRIVERS -+M: Andy Shevchenko <andy@kernel.org> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git -+F: drivers/gpio/gpio-ich.c -+F: drivers/gpio/gpio-merrifield.c -+F: drivers/gpio/gpio-ml-ioh.c -+F: drivers/gpio/gpio-pch.c -+F: drivers/gpio/gpio-sch.c -+F: drivers/gpio/gpio-sodaville.c -+ -+INTEL GVT-g DRIVERS (Intel GPU Virtualization) -+M: Zhenyu Wang <zhenyuw@linux.intel.com> -+M: Zhi Wang <zhi.a.wang@intel.com> -+L: intel-gvt-dev@lists.freedesktop.org -+L: intel-gfx@lists.freedesktop.org -+S: Supported -+W: https://01.org/igvt-g -+T: git https://github.com/intel/gvt-linux.git -+F: drivers/gpu/drm/i915/gvt/ -+ -+INTEL HID EVENT DRIVER -+M: Alex Hung <alex.hung@canonical.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/intel/hid.c -+ -+INTEL I/OAT DMA DRIVER -+M: Dave Jiang <dave.jiang@intel.com> -+R: Dan Williams <dan.j.williams@intel.com> -+L: dmaengine@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-dmaengine/list/ -+F: drivers/dma/ioat* -+ -+INTEL IADX DRIVER -+M: Dave Jiang <dave.jiang@intel.com> -+L: dmaengine@vger.kernel.org -+S: Supported -+F: drivers/dma/idxd/* -+F: include/uapi/linux/idxd.h -+ -+INTEL IDLE DRIVER -+M: Jacob Pan <jacob.jun.pan@linux.intel.com> -+M: Len Brown <lenb@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Supported -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git -+F: drivers/idle/intel_idle.c -+ -+INTEL INTEGRATED SENSOR HUB DRIVER -+M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> -+M: Jiri Kosina <jikos@kernel.org> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/intel-ish-hid/ -+ -+INTEL IOMMU (VT-d) -+M: David Woodhouse <dwmw2@infradead.org> -+M: Lu Baolu <baolu.lu@linux.intel.com> -+L: iommu@lists.linux-foundation.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git -+F: drivers/iommu/intel/ -+F: include/linux/intel-iommu.h -+F: include/linux/intel-svm.h -+ -+INTEL IOP-ADMA DMA DRIVER -+R: Dan Williams <dan.j.williams@intel.com> -+S: Odd fixes -+F: drivers/dma/iop-adma.c -+ -+INTEL IPU3 CSI-2 CIO2 DRIVER -+M: Yong Zhi <yong.zhi@intel.com> -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+M: Bingbu Cao <bingbu.cao@intel.com> -+M: Dan Scally <djrscally@gmail.com> -+R: Tianshu Qiu <tian.shu.qiu@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/userspace-api/media/v4l/pixfmt-srggb10-ipu3.rst -+F: drivers/media/pci/intel/ipu3/ -+ -+INTEL IPU3 CSI-2 IMGU DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+R: Bingbu Cao <bingbu.cao@intel.com> -+R: Tianshu Qiu <tian.shu.qiu@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/admin-guide/media/ipu3.rst -+F: Documentation/admin-guide/media/ipu3_rcb.svg -+F: Documentation/userspace-api/media/v4l/pixfmt-meta-intel-ipu3.rst -+F: drivers/staging/media/ipu3/ -+ -+INTEL IXP4XX CRYPTO SUPPORT -+M: Corentin Labbe <clabbe@baylibre.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: drivers/crypto/ixp4xx_crypto.c -+ -+INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT -+M: Krzysztof Halasa <khalasa@piap.pl> -+S: Maintained -+F: drivers/net/ethernet/xscale/ixp4xx_eth.c -+F: drivers/net/wan/ixp4xx_hss.c -+F: drivers/soc/ixp4xx/ixp4xx-npe.c -+F: drivers/soc/ixp4xx/ixp4xx-qmgr.c -+F: include/linux/soc/ixp4xx/npe.h -+F: include/linux/soc/ixp4xx/qmgr.h -+ -+INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT -+M: Deepak Saxena <dsaxena@plexity.net> -+S: Maintained -+F: Documentation/devicetree/bindings/display/intel,ixp46x-rng.yaml -+F: drivers/char/hw_random/ixp4xx-rng.c -+ -+INTEL KEEM BAY DRM DRIVER -+M: Anitha Chrisanthus <anitha.chrisanthus@intel.com> -+M: Edmund Dea <edmund.j.dea@intel.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/intel,kmb_display.yaml -+F: drivers/gpu/drm/kmb/ -+ -+INTEL KEEM BAY OCS AES/SM4 CRYPTO DRIVER -+M: Daniele Alessandrelli <daniele.alessandrelli@intel.com> -+S: Maintained -+F: Documentation/devicetree/bindings/crypto/intel,keembay-ocs-aes.yaml -+F: drivers/crypto/keembay/Kconfig -+F: drivers/crypto/keembay/Makefile -+F: drivers/crypto/keembay/keembay-ocs-aes-core.c -+F: drivers/crypto/keembay/ocs-aes.c -+F: drivers/crypto/keembay/ocs-aes.h -+ -+INTEL KEEM BAY OCS HCU CRYPTO DRIVER -+M: Daniele Alessandrelli <daniele.alessandrelli@intel.com> -+M: Declan Murphy <declan.murphy@intel.com> -+S: Maintained -+F: Documentation/devicetree/bindings/crypto/intel,keembay-ocs-hcu.yaml -+F: drivers/crypto/keembay/Kconfig -+F: drivers/crypto/keembay/Makefile -+F: drivers/crypto/keembay/keembay-ocs-hcu-core.c -+F: drivers/crypto/keembay/ocs-hcu.c -+F: drivers/crypto/keembay/ocs-hcu.h -+ -+INTEL MANAGEMENT ENGINE (mei) -+M: Tomas Winkler <tomas.winkler@intel.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: Documentation/driver-api/mei/* -+F: drivers/misc/mei/ -+F: drivers/watchdog/mei_wdt.c -+F: include/linux/mei_cl_bus.h -+F: include/uapi/linux/mei.h -+F: samples/mei/* -+ -+INTEL MAX 10 BMC MFD DRIVER -+M: Xu Yilun <yilun.xu@intel.com> -+R: Tom Rix <trix@redhat.com> -+S: Maintained -+F: Documentation/ABI/testing/sysfs-driver-intel-m10-bmc -+F: Documentation/hwmon/intel-m10-bmc-hwmon.rst -+F: drivers/hwmon/intel-m10-bmc-hwmon.c -+F: drivers/mfd/intel-m10-bmc.c -+F: include/linux/mfd/intel-m10-bmc.h -+ -+INTEL MENLOW THERMAL DRIVER -+M: Sujith Thomas <sujith.thomas@intel.com> -+L: linux-pm@vger.kernel.org -+S: Supported -+W: https://01.org/linux-acpi -+F: drivers/thermal/intel/intel_menlow.c -+ -+INTEL P-Unit IPC DRIVER -+M: Zha Qipeng <qipeng.zha@intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: arch/x86/include/asm/intel_punit_ipc.h -+F: drivers/platform/x86/intel/punit_ipc.c -+ -+INTEL PMC CORE DRIVER -+M: Rajneesh Bhardwaj <irenic.rajneesh@gmail.com> -+M: David E Box <david.e.box@intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-platform-intel-pmc -+F: drivers/platform/x86/intel/pmc/ -+ -+INTEL PMIC GPIO DRIVERS -+M: Andy Shevchenko <andy@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git -+F: drivers/gpio/gpio-*cove.c -+ -+INTEL PMIC MULTIFUNCTION DEVICE DRIVERS -+M: Andy Shevchenko <andy@kernel.org> -+S: Maintained -+F: drivers/mfd/intel_soc_pmic* -+F: include/linux/mfd/intel_soc_pmic* -+ -+INTEL PMT DRIVER -+M: "David E. Box" <david.e.box@linux.intel.com> -+S: Maintained -+F: drivers/mfd/intel_pmt.c -+F: drivers/platform/x86/intel/pmt/ -+ -+INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT -+M: Stanislav Yakovlev <stas.yakovlev@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: Documentation/networking/device_drivers/wifi/intel/ipw2100.rst -+F: Documentation/networking/device_drivers/wifi/intel/ipw2200.rst -+F: drivers/net/wireless/intel/ipw2x00/ -+ -+INTEL PSTATE DRIVER -+M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> -+M: Len Brown <lenb@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Supported -+F: drivers/cpufreq/intel_pstate.c -+ -+INTEL QUADRATURE ENCODER PERIPHERAL DRIVER -+M: Jarkko Nikula <jarkko.nikula@linux.intel.com> -+L: linux-iio@vger.kernel.org -+F: drivers/counter/intel-qep.c -+ -+INTEL SCU DRIVERS -+M: Mika Westerberg <mika.westerberg@linux.intel.com> -+S: Maintained -+F: arch/x86/include/asm/intel_scu_ipc.h -+F: drivers/platform/x86/intel_scu_* -+ -+INTEL SKYLAKE INT3472 ACPI DEVICE DRIVER -+M: Daniel Scally <djrscally@gmail.com> -+S: Maintained -+F: drivers/platform/x86/intel/int3472/ -+ -+INTEL SPEED SELECT TECHNOLOGY -+M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/intel/speed_select_if/ -+F: include/uapi/linux/isst_if.h -+F: tools/power/x86/intel-speed-select/ -+ -+INTEL STRATIX10 FIRMWARE DRIVERS -+M: Dinh Nguyen <dinguyen@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-devices-platform-stratix10-rsu -+F: Documentation/devicetree/bindings/firmware/intel,stratix10-svc.txt -+F: drivers/firmware/stratix10-rsu.c -+F: drivers/firmware/stratix10-svc.c -+F: include/linux/firmware/intel/stratix10-smc.h -+F: include/linux/firmware/intel/stratix10-svc-client.h -+ -+INTEL TELEMETRY DRIVER -+M: Rajneesh Bhardwaj <irenic.rajneesh@gmail.com> -+M: "David E. Box" <david.e.box@linux.intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: arch/x86/include/asm/intel_telemetry.h -+F: drivers/platform/x86/intel/telemetry/ -+ -+INTEL UNCORE FREQUENCY CONTROL -+M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/intel/uncore-frequency.c -+ -+INTEL VIRTUAL BUTTON DRIVER -+M: AceLan Kao <acelan.kao@canonical.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/intel/vbtn.c -+ -+INTEL WIRELESS 3945ABG/BG, 4965AGN (iwlegacy) -+M: Stanislaw Gruszka <stf_xl@wp.pl> -+L: linux-wireless@vger.kernel.org -+S: Supported -+F: drivers/net/wireless/intel/iwlegacy/ -+ -+INTEL WIRELESS WIFI LINK (iwlwifi) -+M: Luca Coelho <luciano.coelho@intel.com> -+L: linux-wireless@vger.kernel.org -+S: Supported -+W: https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git -+F: drivers/net/wireless/intel/iwlwifi/ -+ -+INTEL WMI SLIM BOOTLOADER (SBL) FIRMWARE UPDATE DRIVER -+M: Jithu Joseph <jithu.joseph@intel.com> -+R: Maurice Ma <maurice.ma@intel.com> -+S: Maintained -+W: https://slimbootloader.github.io/security/firmware-update.html -+F: drivers/platform/x86/intel/wmi/sbl-fw-update.c -+ -+INTEL WMI THUNDERBOLT FORCE POWER DRIVER -+L: Dell.Client.Kernel@dell.com -+S: Maintained -+F: drivers/platform/x86/intel/wmi/thunderbolt.c -+ -+INTEL WWAN IOSM DRIVER -+M: M Chetan Kumar <m.chetan.kumar@intel.com> -+M: Intel Corporation <linuxwwan@intel.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/wwan/iosm/ -+ -+INTEL(R) TRACE HUB -+M: Alexander Shishkin <alexander.shishkin@linux.intel.com> -+S: Supported -+F: Documentation/trace/intel_th.rst -+F: drivers/hwtracing/intel_th/ -+F: include/linux/intel_th.h -+ -+INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT) -+M: Ning Sun <ning.sun@intel.com> -+L: tboot-devel@lists.sourceforge.net -+S: Supported -+W: http://tboot.sourceforge.net -+T: hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot -+F: Documentation/x86/intel_txt.rst -+F: arch/x86/kernel/tboot.c -+F: include/linux/tboot.h -+ -+INTEL SGX -+M: Jarkko Sakkinen <jarkko@kernel.org> -+R: Dave Hansen <dave.hansen@linux.intel.com> -+L: linux-sgx@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/intel-sgx/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/sgx -+F: Documentation/x86/sgx.rst -+F: arch/x86/entry/vdso/vsgx.S -+F: arch/x86/include/asm/sgx.h -+F: arch/x86/include/uapi/asm/sgx.h -+F: arch/x86/kernel/cpu/sgx/* -+F: tools/testing/selftests/sgx/* -+K: \bSGX_ -+ -+INTERCONNECT API -+M: Georgi Djakov <djakov@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc.git -+F: Documentation/devicetree/bindings/interconnect/ -+F: Documentation/driver-api/interconnect.rst -+F: drivers/interconnect/ -+F: include/dt-bindings/interconnect/ -+F: include/linux/interconnect-provider.h -+F: include/linux/interconnect.h -+ -+INTERRUPT COUNTER DRIVER -+M: Oleksij Rempel <o.rempel@pengutronix.de> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+L: linux-iio@vger.kernel.org -+F: Documentation/devicetree/bindings/counter/interrupt-counter.yaml -+F: drivers/counter/interrupt-cnt.c -+ -+INVENSENSE ICM-426xx IMU DRIVER -+M: Jean-Baptiste Maneyrol <jmaneyrol@invensense.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+W: https://invensense.tdk.com/ -+F: Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml -+F: drivers/iio/imu/inv_icm42600/ -+ -+INVENSENSE MPU-3050 GYROSCOPE DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/gyroscope/invensense,mpu3050.yaml -+F: drivers/iio/gyro/mpu3050* -+ -+IOC3 ETHERNET DRIVER -+M: Ralf Baechle <ralf@linux-mips.org> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/sgi/ioc3-eth.c -+ -+IOMAP FILESYSTEM LIBRARY -+M: Christoph Hellwig <hch@infradead.org> -+M: Darrick J. Wong <djwong@kernel.org> -+M: linux-xfs@vger.kernel.org -+M: linux-fsdevel@vger.kernel.org -+L: linux-xfs@vger.kernel.org -+L: linux-fsdevel@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git -+F: fs/iomap/ -+F: include/linux/iomap.h -+ -+IOMMU DRIVERS -+M: Joerg Roedel <joro@8bytes.org> -+M: Will Deacon <will@kernel.org> -+L: iommu@lists.linux-foundation.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git -+F: Documentation/devicetree/bindings/iommu/ -+F: Documentation/userspace-api/iommu.rst -+F: drivers/iommu/ -+F: include/linux/iommu.h -+F: include/linux/iova.h -+F: include/linux/of_iommu.h -+F: include/uapi/linux/iommu.h -+ -+IO_URING -+M: Jens Axboe <axboe@kernel.dk> -+R: Pavel Begunkov <asml.silence@gmail.com> -+L: io-uring@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.dk/linux-block -+T: git git://git.kernel.dk/liburing -+F: fs/io-wq.c -+F: fs/io-wq.h -+F: fs/io_uring.c -+F: include/linux/io_uring.h -+F: include/uapi/linux/io_uring.h -+F: tools/io_uring/ -+ -+IPMI SUBSYSTEM -+M: Corey Minyard <minyard@acm.org> -+L: openipmi-developer@lists.sourceforge.net (moderated for non-subscribers) -+S: Supported -+W: http://openipmi.sourceforge.net/ -+F: Documentation/driver-api/ipmi.rst -+F: Documentation/devicetree/bindings/ipmi/ -+F: drivers/char/ipmi/ -+F: include/linux/ipmi* -+F: include/uapi/linux/ipmi* -+ -+IPS SCSI RAID DRIVER -+M: Adaptec OEM Raid Solutions <aacraid@microsemi.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+W: http://www.adaptec.com/ -+F: drivers/scsi/ips* -+ -+IPVS -+M: Simon Horman <horms@verge.net.au> -+M: Julian Anastasov <ja@ssi.bg> -+L: netdev@vger.kernel.org -+L: lvs-devel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs-next.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git -+F: Documentation/networking/ipvs-sysctl.rst -+F: include/net/ip_vs.h -+F: include/uapi/linux/ip_vs.h -+F: net/netfilter/ipvs/ -+ -+IPWIRELESS DRIVER -+M: Jiri Kosina <jikos@kernel.org> -+M: David Sterba <dsterba@suse.com> -+S: Odd Fixes -+F: drivers/tty/ipwireless/ -+ -+IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY) -+M: Marc Zyngier <maz@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core -+F: Documentation/core-api/irq/irq-domain.rst -+F: include/linux/irqdomain.h -+F: kernel/irq/irqdomain.c -+F: kernel/irq/msi.c -+ -+IRQ SUBSYSTEM -+M: Thomas Gleixner <tglx@linutronix.de> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core -+F: kernel/irq/ -+ -+IRQCHIP DRIVERS -+M: Thomas Gleixner <tglx@linutronix.de> -+M: Marc Zyngier <maz@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core -+F: Documentation/devicetree/bindings/interrupt-controller/ -+F: drivers/irqchip/ -+ -+ISA -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+S: Maintained -+F: Documentation/driver-api/isa.rst -+F: drivers/base/isa.c -+F: include/linux/isa.h -+ -+ISA RADIO MODULE -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-isa* -+ -+ISAPNP -+M: Jaroslav Kysela <perex@perex.cz> -+S: Maintained -+F: Documentation/driver-api/isapnp.rst -+F: drivers/pnp/isapnp/ -+F: include/linux/isapnp.h -+ -+ISCSI -+M: Lee Duncan <lduncan@suse.com> -+M: Chris Leech <cleech@redhat.com> -+L: open-iscsi@googlegroups.com -+L: linux-scsi@vger.kernel.org -+S: Maintained -+W: www.open-iscsi.com -+F: drivers/scsi/*iscsi* -+F: include/scsi/*iscsi* -+ -+iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER -+M: Peter Jones <pjones@redhat.com> -+M: Konrad Rzeszutek Wilk <konrad@kernel.org> -+S: Maintained -+F: drivers/firmware/iscsi_ibft* -+ -+ISCSI EXTENSIONS FOR RDMA (ISER) INITIATOR -+M: Sagi Grimberg <sagi@grimberg.me> -+M: Max Gurtovoy <mgurtovoy@nvidia.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: http://www.openfabrics.org -+W: www.open-iscsi.org -+Q: http://patchwork.kernel.org/project/linux-rdma/list/ -+F: drivers/infiniband/ulp/iser/ -+ -+ISCSI EXTENSIONS FOR RDMA (ISER) TARGET -+M: Sagi Grimberg <sagi@grimberg.me> -+L: linux-rdma@vger.kernel.org -+L: target-devel@vger.kernel.org -+S: Supported -+W: http://www.linux-iscsi.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git master -+F: drivers/infiniband/ulp/isert -+ -+ISDN/CMTP OVER BLUETOOTH -+M: Karsten Keil <isdn@linux-pingi.de> -+L: isdn4linux@listserv.isdn4linux.de (subscribers-only) -+L: netdev@vger.kernel.org -+S: Odd Fixes -+W: http://www.isdn4linux.de -+F: Documentation/isdn/ -+F: drivers/isdn/capi/ -+F: include/linux/isdn/ -+F: include/uapi/linux/isdn/ -+F: net/bluetooth/cmtp/ -+ -+ISDN/mISDN SUBSYSTEM -+M: Karsten Keil <isdn@linux-pingi.de> -+L: isdn4linux@listserv.isdn4linux.de (subscribers-only) -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://www.isdn4linux.de -+F: drivers/isdn/Kconfig -+F: drivers/isdn/Makefile -+F: drivers/isdn/hardware/ -+F: drivers/isdn/mISDN/ -+ -+IT87 HARDWARE MONITORING DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/it87.rst -+F: drivers/hwmon/it87.c -+ -+IT913X MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/it913x* -+ -+ITE IT66121 HDMI BRIDGE DRIVER -+M: Phong LE <ple@baylibre.com> -+M: Neil Armstrong <narmstrong@baylibre.com> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml -+F: drivers/gpu/drm/bridge/ite-it66121.c -+ -+IVTV VIDEO4LINUX DRIVER -+M: Andy Walls <awalls@md.metrocast.net> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/ivtv* -+F: drivers/media/pci/ivtv/ -+F: include/uapi/linux/ivtv* -+ -+IX2505V MEDIA DRIVER -+M: Malcolm Priestley <tvboxspy@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/ix2505v* -+ -+JAILHOUSE HYPERVISOR INTERFACE -+M: Jan Kiszka <jan.kiszka@siemens.com> -+L: jailhouse-dev@googlegroups.com -+S: Maintained -+F: arch/x86/include/asm/jailhouse_para.h -+F: arch/x86/kernel/jailhouse.c -+ -+JC42.4 TEMPERATURE SENSOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/jc42.rst -+F: drivers/hwmon/jc42.c -+ -+JFS FILESYSTEM -+M: Dave Kleikamp <shaggy@kernel.org> -+L: jfs-discussion@lists.sourceforge.net -+S: Maintained -+W: http://jfs.sourceforge.net/ -+T: git git://github.com/kleikamp/linux-shaggy.git -+F: Documentation/admin-guide/jfs.rst -+F: fs/jfs/ -+ -+JME NETWORK DRIVER -+M: Guo-Fu Tseng <cooldavid@cooldavid.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/jme.* -+ -+JOURNALLING FLASH FILE SYSTEM V2 (JFFS2) -+M: David Woodhouse <dwmw2@infradead.org> -+M: Richard Weinberger <richard@nod.at> -+L: linux-mtd@lists.infradead.org -+S: Odd Fixes -+W: http://www.linux-mtd.infradead.org/doc/jffs2.html -+T: git git://git.infradead.org/ubifs-2.6.git -+F: fs/jffs2/ -+F: include/uapi/linux/jffs2.h -+ -+JOURNALLING LAYER FOR BLOCK DEVICES (JBD2) -+M: "Theodore Ts'o" <tytso@mit.edu> -+M: Jan Kara <jack@suse.com> -+L: linux-ext4@vger.kernel.org -+S: Maintained -+F: fs/jbd2/ -+F: include/linux/jbd2.h -+ -+JPU V4L2 MEM2MEM DRIVER FOR RENESAS -+M: Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/platform/rcar_jpu.c -+ -+JSM Neo PCI based serial card -+L: linux-serial@vger.kernel.org -+S: Orphan -+F: drivers/tty/serial/jsm/ -+ -+K10TEMP HARDWARE MONITORING DRIVER -+M: Clemens Ladisch <clemens@ladisch.de> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/k10temp.rst -+F: drivers/hwmon/k10temp.c -+ -+K8TEMP HARDWARE MONITORING DRIVER -+M: Rudolf Marek <r.marek@assembler.cz> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/k8temp.rst -+F: drivers/hwmon/k8temp.c -+ -+KASAN -+M: Andrey Ryabinin <ryabinin.a.a@gmail.com> -+R: Alexander Potapenko <glider@google.com> -+R: Andrey Konovalov <andreyknvl@gmail.com> -+R: Dmitry Vyukov <dvyukov@google.com> -+L: kasan-dev@googlegroups.com -+S: Maintained -+F: Documentation/dev-tools/kasan.rst -+F: arch/*/include/asm/*kasan.h -+F: arch/*/mm/kasan_init* -+F: include/linux/kasan*.h -+F: lib/Kconfig.kasan -+F: lib/test_kasan*.c -+F: mm/kasan/ -+F: scripts/Makefile.kasan -+ -+KCONFIG -+M: Masahiro Yamada <masahiroy@kernel.org> -+L: linux-kbuild@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig -+F: Documentation/kbuild/kconfig* -+F: scripts/Kconfig.include -+F: scripts/kconfig/ -+ -+KCOV -+R: Dmitry Vyukov <dvyukov@google.com> -+R: Andrey Konovalov <andreyknvl@gmail.com> -+L: kasan-dev@googlegroups.com -+S: Maintained -+F: Documentation/dev-tools/kcov.rst -+F: include/linux/kcov.h -+F: include/uapi/linux/kcov.h -+F: kernel/kcov.c -+F: scripts/Makefile.kcov -+ -+KCSAN -+M: Marco Elver <elver@google.com> -+R: Dmitry Vyukov <dvyukov@google.com> -+L: kasan-dev@googlegroups.com -+S: Maintained -+F: Documentation/dev-tools/kcsan.rst -+F: include/linux/kcsan*.h -+F: kernel/kcsan/ -+F: lib/Kconfig.kcsan -+F: scripts/Makefile.kcsan -+ -+KDUMP -+M: Dave Young <dyoung@redhat.com> -+M: Baoquan He <bhe@redhat.com> -+R: Vivek Goyal <vgoyal@redhat.com> -+L: kexec@lists.infradead.org -+S: Maintained -+W: http://lse.sourceforge.net/kdump/ -+F: Documentation/admin-guide/kdump/ -+F: fs/proc/vmcore.c -+F: include/linux/crash_core.h -+F: include/linux/crash_dump.h -+F: include/uapi/linux/vmcore.h -+F: kernel/crash_*.c -+ -+KEENE FM RADIO TRANSMITTER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-keene* -+ -+KERNEL AUTOMOUNTER -+M: Ian Kent <raven@themaw.net> -+L: autofs@vger.kernel.org -+S: Maintained -+F: fs/autofs/ -+ -+KERNEL BUILD + files below scripts/ (unless maintained elsewhere) -+M: Masahiro Yamada <masahiroy@kernel.org> -+M: Michal Marek <michal.lkml@markovi.net> -+R: Nick Desaulniers <ndesaulniers@google.com> -+L: linux-kbuild@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git -+F: Documentation/kbuild/ -+F: Makefile -+F: scripts/*vmlinux* -+F: scripts/Kbuild* -+F: scripts/Makefile* -+F: scripts/basic/ -+F: scripts/dummy-tools/ -+F: scripts/mk* -+F: scripts/mod/ -+F: scripts/package/ -+ -+KERNEL JANITORS -+L: kernel-janitors@vger.kernel.org -+S: Odd Fixes -+W: http://kernelnewbies.org/KernelJanitors -+ -+KERNEL NFSD, SUNRPC, AND LOCKD SERVERS -+M: "J. Bruce Fields" <bfields@fieldses.org> -+M: Chuck Lever <chuck.lever@oracle.com> -+L: linux-nfs@vger.kernel.org -+S: Supported -+W: http://nfs.sourceforge.net/ -+T: git git://linux-nfs.org/~bfields/linux.git -+F: fs/lockd/ -+F: fs/nfs_common/ -+F: fs/nfsd/ -+F: include/linux/lockd/ -+F: include/linux/sunrpc/ -+F: include/uapi/linux/nfsd/ -+F: include/uapi/linux/sunrpc/ -+F: net/sunrpc/ -+F: Documentation/filesystems/nfs/ -+ -+KERNEL REGRESSIONS -+M: Thorsten Leemhuis <linux@leemhuis.info> -+L: regressions@lists.linux.dev -+S: Supported -+ -+KERNEL SELFTEST FRAMEWORK -+M: Shuah Khan <shuah@kernel.org> -+M: Shuah Khan <skhan@linuxfoundation.org> -+L: linux-kselftest@vger.kernel.org -+S: Maintained -+Q: https://patchwork.kernel.org/project/linux-kselftest/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git -+F: Documentation/dev-tools/kselftest* -+F: tools/testing/selftests/ -+ -+KERNEL SMB3 SERVER (KSMBD) -+M: Namjae Jeon <linkinjeon@kernel.org> -+M: Sergey Senozhatsky <senozhatsky@chromium.org> -+M: Steve French <sfrench@samba.org> -+M: Hyunchul Lee <hyc.lee@gmail.com> -+L: linux-cifs@vger.kernel.org -+S: Maintained -+T: git git://git.samba.org/ksmbd.git -+F: fs/ksmbd/ -+F: fs/smbfs_common/ -+ -+KERNEL UNIT TESTING FRAMEWORK (KUnit) -+M: Brendan Higgins <brendanhiggins@google.com> -+L: linux-kselftest@vger.kernel.org -+L: kunit-dev@googlegroups.com -+S: Maintained -+W: https://google.github.io/kunit-docs/third_party/kernel/docs/ -+F: Documentation/dev-tools/kunit/ -+F: include/kunit/ -+F: lib/kunit/ -+F: tools/testing/kunit/ -+ -+KERNEL USERMODE HELPER -+M: Luis Chamberlain <mcgrof@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: include/linux/umh.h -+F: kernel/umh.c -+ -+KERNEL VIRTUAL MACHINE (KVM) -+M: Paolo Bonzini <pbonzini@redhat.com> -+L: kvm@vger.kernel.org -+S: Supported -+W: http://www.linux-kvm.org -+T: git git://git.kernel.org/pub/scm/virt/kvm/kvm.git -+F: Documentation/virt/kvm/ -+F: include/asm-generic/kvm* -+F: include/kvm/iodev.h -+F: include/linux/kvm* -+F: include/trace/events/kvm.h -+F: include/uapi/asm-generic/kvm* -+F: include/uapi/linux/kvm* -+F: tools/kvm/ -+F: tools/testing/selftests/kvm/ -+F: virt/kvm/* -+ -+KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64) -+M: Marc Zyngier <maz@kernel.org> -+R: James Morse <james.morse@arm.com> -+R: Alexandru Elisei <alexandru.elisei@arm.com> -+R: Suzuki K Poulose <suzuki.poulose@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: kvmarm@lists.cs.columbia.edu (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git -+F: arch/arm64/include/asm/kvm* -+F: arch/arm64/include/uapi/asm/kvm* -+F: arch/arm64/kvm/ -+F: include/kvm/arm_* -+F: tools/testing/selftests/kvm/*/aarch64/ -+F: tools/testing/selftests/kvm/aarch64/ -+ -+KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips) -+M: Huacai Chen <chenhuacai@kernel.org> -+M: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> -+L: linux-mips@vger.kernel.org -+L: kvm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/virt/kvm/kvm.git -+F: arch/mips/include/asm/kvm* -+F: arch/mips/include/uapi/asm/kvm* -+F: arch/mips/kvm/ -+ -+KERNEL VIRTUAL MACHINE FOR POWERPC (KVM/powerpc) -+M: Paul Mackerras <paulus@ozlabs.org> -+L: kvm-ppc@vger.kernel.org -+S: Supported -+W: http://www.linux-kvm.org/ -+T: git git://github.com/agraf/linux-2.6.git -+F: arch/powerpc/include/asm/kvm* -+F: arch/powerpc/include/uapi/asm/kvm* -+F: arch/powerpc/kernel/kvm* -+F: arch/powerpc/kvm/ -+ -+KERNEL VIRTUAL MACHINE for s390 (KVM/s390) -+M: Christian Borntraeger <borntraeger@de.ibm.com> -+M: Janosch Frank <frankja@linux.ibm.com> -+R: David Hildenbrand <david@redhat.com> -+R: Claudio Imbrenda <imbrenda@linux.ibm.com> -+L: kvm@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git -+F: Documentation/virt/kvm/s390* -+F: arch/s390/include/asm/gmap.h -+F: arch/s390/include/asm/kvm* -+F: arch/s390/include/uapi/asm/kvm* -+F: arch/s390/kernel/uv.c -+F: arch/s390/kvm/ -+F: arch/s390/mm/gmap.c -+F: tools/testing/selftests/kvm/*/s390x/ -+F: tools/testing/selftests/kvm/s390x/ -+ -+KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86) -+M: Paolo Bonzini <pbonzini@redhat.com> -+R: Sean Christopherson <seanjc@google.com> -+R: Vitaly Kuznetsov <vkuznets@redhat.com> -+R: Wanpeng Li <wanpengli@tencent.com> -+R: Jim Mattson <jmattson@google.com> -+R: Joerg Roedel <joro@8bytes.org> -+L: kvm@vger.kernel.org -+S: Supported -+W: http://www.linux-kvm.org -+T: git git://git.kernel.org/pub/scm/virt/kvm/kvm.git -+F: arch/x86/include/asm/kvm* -+F: arch/x86/include/asm/pvclock-abi.h -+F: arch/x86/include/asm/svm.h -+F: arch/x86/include/asm/vmx*.h -+F: arch/x86/include/uapi/asm/kvm* -+F: arch/x86/include/uapi/asm/svm.h -+F: arch/x86/include/uapi/asm/vmx.h -+F: arch/x86/kernel/kvm.c -+F: arch/x86/kernel/kvmclock.c -+F: arch/x86/kvm/ -+F: arch/x86/kvm/*/ -+ -+KERNFS -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+M: Tejun Heo <tj@kernel.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git -+F: fs/kernfs/ -+F: include/linux/kernfs.h -+ -+KEXEC -+M: Eric Biederman <ebiederm@xmission.com> -+L: kexec@lists.infradead.org -+S: Maintained -+W: http://kernel.org/pub/linux/utils/kernel/kexec/ -+F: include/linux/kexec.h -+F: include/uapi/linux/kexec.h -+F: kernel/kexec* -+ -+KEYS-ENCRYPTED -+M: Mimi Zohar <zohar@linux.ibm.com> -+L: linux-integrity@vger.kernel.org -+L: keyrings@vger.kernel.org -+S: Supported -+F: Documentation/security/keys/trusted-encrypted.rst -+F: include/keys/encrypted-type.h -+F: security/keys/encrypted-keys/ -+ -+KEYS-TRUSTED -+M: James Bottomley <jejb@linux.ibm.com> -+M: Jarkko Sakkinen <jarkko@kernel.org> -+M: Mimi Zohar <zohar@linux.ibm.com> -+L: linux-integrity@vger.kernel.org -+L: keyrings@vger.kernel.org -+S: Supported -+F: Documentation/security/keys/trusted-encrypted.rst -+F: include/keys/trusted-type.h -+F: include/keys/trusted_tpm.h -+F: security/keys/trusted-keys/ -+ -+KEYS-TRUSTED-TEE -+M: Sumit Garg <sumit.garg@linaro.org> -+L: linux-integrity@vger.kernel.org -+L: keyrings@vger.kernel.org -+S: Supported -+F: include/keys/trusted_tee.h -+F: security/keys/trusted-keys/trusted_tee.c -+ -+KEYS/KEYRINGS -+M: David Howells <dhowells@redhat.com> -+M: Jarkko Sakkinen <jarkko@kernel.org> -+L: keyrings@vger.kernel.org -+S: Maintained -+F: Documentation/security/keys/core.rst -+F: include/keys/ -+F: include/linux/key-type.h -+F: include/linux/key.h -+F: include/linux/keyctl.h -+F: include/uapi/linux/keyctl.h -+F: security/keys/ -+ -+KFENCE -+M: Alexander Potapenko <glider@google.com> -+M: Marco Elver <elver@google.com> -+R: Dmitry Vyukov <dvyukov@google.com> -+L: kasan-dev@googlegroups.com -+S: Maintained -+F: Documentation/dev-tools/kfence.rst -+F: arch/*/include/asm/kfence.h -+F: include/linux/kfence.h -+F: lib/Kconfig.kfence -+F: mm/kfence/ -+ -+KFIFO -+M: Stefani Seibold <stefani@seibold.net> -+S: Maintained -+F: include/linux/kfifo.h -+F: lib/kfifo.c -+F: samples/kfifo/ -+ -+KGDB / KDB /debug_core -+M: Jason Wessel <jason.wessel@windriver.com> -+M: Daniel Thompson <daniel.thompson@linaro.org> -+R: Douglas Anderson <dianders@chromium.org> -+L: kgdb-bugreport@lists.sourceforge.net -+S: Maintained -+W: http://kgdb.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb.git -+F: Documentation/dev-tools/kgdb.rst -+F: drivers/misc/kgdbts.c -+F: drivers/tty/serial/kgdboc.c -+F: include/linux/kdb.h -+F: include/linux/kgdb.h -+F: kernel/debug/ -+ -+KHADAS MCU MFD DRIVER -+M: Neil Armstrong <narmstrong@baylibre.com> -+L: linux-amlogic@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/khadas,mcu.yaml -+F: drivers/mfd/khadas-mcu.c -+F: include/linux/mfd/khadas-mcu.h -+F: drivers/thermal/khadas_mcu_fan.c -+ -+KMEMLEAK -+M: Catalin Marinas <catalin.marinas@arm.com> -+S: Maintained -+F: Documentation/dev-tools/kmemleak.rst -+F: include/linux/kmemleak.h -+F: mm/kmemleak.c -+F: samples/kmemleak/kmemleak-test.c -+ -+KMOD KERNEL MODULE LOADER - USERMODE HELPER -+M: Luis Chamberlain <mcgrof@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: include/linux/kmod.h -+F: kernel/kmod.c -+F: lib/test_kmod.c -+F: tools/testing/selftests/kmod/ -+ -+KPROBES -+M: Naveen N. Rao <naveen.n.rao@linux.ibm.com> -+M: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com> -+M: "David S. Miller" <davem@davemloft.net> -+M: Masami Hiramatsu <mhiramat@kernel.org> -+S: Maintained -+F: Documentation/trace/kprobes.rst -+F: include/asm-generic/kprobes.h -+F: include/linux/kprobes.h -+F: kernel/kprobes.c -+ -+KS0108 LCD CONTROLLER DRIVER -+M: Miguel Ojeda <ojeda@kernel.org> -+S: Maintained -+F: Documentation/admin-guide/auxdisplay/ks0108.rst -+F: drivers/auxdisplay/ks0108.c -+F: include/linux/ks0108.h -+ -+KTD253 BACKLIGHT DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml -+F: drivers/video/backlight/ktd253-backlight.c -+ -+KTEST -+M: Steven Rostedt <rostedt@goodmis.org> -+M: John Hawley <warthog9@eaglescrag.net> -+S: Maintained -+F: tools/testing/ktest -+ -+L3MDEV -+M: David Ahern <dsahern@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: include/net/l3mdev.h -+F: net/l3mdev -+ -+L7 BPF FRAMEWORK -+M: John Fastabend <john.fastabend@gmail.com> -+M: Daniel Borkmann <daniel@iogearbox.net> -+M: Jakub Sitnicki <jakub@cloudflare.com> -+M: Lorenz Bauer <lmb@cloudflare.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: include/linux/skmsg.h -+F: net/core/skmsg.c -+F: net/core/sock_map.c -+F: net/ipv4/tcp_bpf.c -+F: net/ipv4/udp_bpf.c -+F: net/unix/unix_bpf.c -+ -+LANDLOCK SECURITY MODULE -+M: Mickaël Salaün <mic@digikod.net> -+L: linux-security-module@vger.kernel.org -+S: Supported -+W: https://landlock.io -+T: git https://github.com/landlock-lsm/linux.git -+F: Documentation/security/landlock.rst -+F: Documentation/userspace-api/landlock.rst -+F: include/uapi/linux/landlock.h -+F: samples/landlock/ -+F: security/landlock/ -+F: tools/testing/selftests/landlock/ -+K: landlock -+K: LANDLOCK -+ -+LANTIQ / INTEL Ethernet drivers -+M: Hauke Mehrtens <hauke@hauke-m.de> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/dsa/lantiq_gswip.c -+F: drivers/net/dsa/lantiq_pce.h -+F: drivers/net/ethernet/lantiq_xrx200.c -+F: net/dsa/tag_gswip.c -+ -+LANTIQ MIPS ARCHITECTURE -+M: John Crispin <john@phrozen.org> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/lantiq -+F: drivers/soc/lantiq -+ -+LASI 53c700 driver for PARISC -+M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: Documentation/scsi/53c700.rst -+F: drivers/scsi/53c700* -+ -+LEAKING_ADDRESSES -+M: Tobin C. Harding <me@tobin.cc> -+M: Tycho Andersen <tycho@tycho.pizza> -+L: linux-hardening@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tobin/leaks.git -+F: scripts/leaking_addresses.pl -+ -+LED SUBSYSTEM -+M: Pavel Machek <pavel@ucw.cz> -+L: linux-leds@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git -+F: Documentation/devicetree/bindings/leds/ -+F: drivers/leds/ -+F: include/linux/leds.h -+ -+LEGACY EEPROM DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+S: Maintained -+F: Documentation/misc-devices/eeprom.rst -+F: drivers/misc/eeprom/eeprom.c -+ -+LEGO MINDSTORMS EV3 -+R: David Lechner <david@lechnology.com> -+S: Maintained -+F: Documentation/devicetree/bindings/power/supply/lego,ev3-battery.yaml -+F: arch/arm/boot/dts/da850-lego-ev3.dts -+F: drivers/power/supply/lego_ev3_battery.c -+ -+LEGO USB Tower driver -+M: Juergen Stuber <starblue@users.sourceforge.net> -+L: legousb-devel@lists.sourceforge.net -+S: Maintained -+W: http://legousb.sourceforge.net/ -+F: drivers/usb/misc/legousbtower.c -+ -+LG LAPTOP EXTRAS -+M: Matan Ziv-Av <matan@svgalib.org> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-platform-lg-laptop -+F: Documentation/admin-guide/laptops/lg-laptop.rst -+F: drivers/platform/x86/lg-laptop.c -+ -+LG2160 MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mkrufky/tuners.git -+F: drivers/media/dvb-frontends/lg2160.* -+ -+LGDT3305 MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mkrufky/tuners.git -+F: drivers/media/dvb-frontends/lgdt3305.* -+ -+LIBATA PATA ARASAN COMPACT FLASH CONTROLLER -+M: Viresh Kumar <vireshk@kernel.org> -+L: linux-ide@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git -+F: drivers/ata/pata_arasan_cf.c -+F: include/linux/pata_arasan_cf_data.h -+ -+LIBATA PATA FARADAY FTIDE010 AND GEMINI SATA BRIDGE DRIVERS -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-ide@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git -+F: drivers/ata/pata_ftide010.c -+F: drivers/ata/sata_gemini.c -+F: drivers/ata/sata_gemini.h -+ -+LIBATA SATA AHCI PLATFORM devices support -+M: Hans de Goede <hdegoede@redhat.com> -+M: Jens Axboe <axboe@kernel.dk> -+L: linux-ide@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git -+F: drivers/ata/ahci_platform.c -+F: drivers/ata/libahci_platform.c -+F: include/linux/ahci_platform.h -+ -+LIBATA SATA PROMISE TX2/TX4 CONTROLLER DRIVER -+M: Mikael Pettersson <mikpelinux@gmail.com> -+L: linux-ide@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git -+F: drivers/ata/sata_promise.* -+ -+LIBATA SUBSYSTEM (Serial and Parallel ATA drivers) -+M: Damien Le Moal <damien.lemoal@opensource.wdc.com> -+L: linux-ide@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata.git -+F: Documentation/devicetree/bindings/ata/ -+F: drivers/ata/ -+F: include/linux/ata.h -+F: include/linux/libata.h -+ -+LIBLOCKDEP -+M: Sasha Levin <alexander.levin@microsoft.com> -+S: Maintained -+F: tools/lib/lockdep/ -+ -+LIBNVDIMM BLK: MMIO-APERTURE DRIVER -+M: Dan Williams <dan.j.williams@intel.com> -+M: Vishal Verma <vishal.l.verma@intel.com> -+M: Dave Jiang <dave.jiang@intel.com> -+L: nvdimm@lists.linux.dev -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ -+P: Documentation/nvdimm/maintainer-entry-profile.rst -+F: drivers/nvdimm/blk.c -+F: drivers/nvdimm/region_devs.c -+ -+LIBNVDIMM BTT: BLOCK TRANSLATION TABLE -+M: Vishal Verma <vishal.l.verma@intel.com> -+M: Dan Williams <dan.j.williams@intel.com> -+M: Dave Jiang <dave.jiang@intel.com> -+L: nvdimm@lists.linux.dev -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ -+P: Documentation/nvdimm/maintainer-entry-profile.rst -+F: drivers/nvdimm/btt* -+ -+LIBNVDIMM PMEM: PERSISTENT MEMORY DRIVER -+M: Dan Williams <dan.j.williams@intel.com> -+M: Vishal Verma <vishal.l.verma@intel.com> -+M: Dave Jiang <dave.jiang@intel.com> -+L: nvdimm@lists.linux.dev -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ -+P: Documentation/nvdimm/maintainer-entry-profile.rst -+F: drivers/nvdimm/pmem* -+ -+LIBNVDIMM: DEVICETREE BINDINGS -+M: Oliver O'Halloran <oohall@gmail.com> -+L: nvdimm@lists.linux.dev -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ -+F: Documentation/devicetree/bindings/pmem/pmem-region.txt -+F: drivers/nvdimm/of_pmem.c -+ -+LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM -+M: Dan Williams <dan.j.williams@intel.com> -+M: Vishal Verma <vishal.l.verma@intel.com> -+M: Dave Jiang <dave.jiang@intel.com> -+M: Ira Weiny <ira.weiny@intel.com> -+L: nvdimm@lists.linux.dev -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ -+P: Documentation/nvdimm/maintainer-entry-profile.rst -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git -+F: drivers/acpi/nfit/* -+F: drivers/nvdimm/* -+F: include/linux/libnvdimm.h -+F: include/linux/nd.h -+F: include/uapi/linux/ndctl.h -+F: tools/testing/nvdimm/ -+ -+LICENSES and SPDX stuff -+M: Thomas Gleixner <tglx@linutronix.de> -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: linux-spdx@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx.git -+F: COPYING -+F: Documentation/process/license-rules.rst -+F: LICENSES/ -+F: scripts/spdxcheck-test.sh -+F: scripts/spdxcheck.py -+ -+LINEAR RANGES HELPERS -+M: Mark Brown <broonie@kernel.org> -+R: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> -+F: lib/linear_ranges.c -+F: lib/test_linear_ranges.c -+F: include/linux/linear_range.h -+ -+LINUX FOR POWER MACINTOSH -+M: Benjamin Herrenschmidt <benh@kernel.crashing.org> -+L: linuxppc-dev@lists.ozlabs.org -+S: Odd Fixes -+F: arch/powerpc/platforms/powermac/ -+F: drivers/macintosh/ -+ -+LINUX FOR POWERPC (32-BIT AND 64-BIT) -+M: Michael Ellerman <mpe@ellerman.id.au> -+R: Benjamin Herrenschmidt <benh@kernel.crashing.org> -+R: Paul Mackerras <paulus@samba.org> -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+W: https://github.com/linuxppc/wiki/wiki -+Q: http://patchwork.ozlabs.org/project/linuxppc-dev/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git -+F: Documentation/ABI/stable/sysfs-firmware-opal-* -+F: Documentation/devicetree/bindings/i2c/i2c-opal.txt -+F: Documentation/devicetree/bindings/powerpc/ -+F: Documentation/devicetree/bindings/rtc/rtc-opal.txt -+F: Documentation/powerpc/ -+F: arch/powerpc/ -+F: drivers/*/*/*pasemi* -+F: drivers/*/*pasemi* -+F: drivers/char/tpm/tpm_ibmvtpm* -+F: drivers/crypto/nx/ -+F: drivers/crypto/vmx/ -+F: drivers/i2c/busses/i2c-opal.c -+F: drivers/net/ethernet/ibm/ibmveth.* -+F: drivers/net/ethernet/ibm/ibmvnic.* -+F: drivers/pci/hotplug/pnv_php.c -+F: drivers/pci/hotplug/rpa* -+F: drivers/rtc/rtc-opal.c -+F: drivers/scsi/ibmvscsi/ -+F: drivers/tty/hvc/hvc_opal.c -+F: drivers/watchdog/wdrtas.c -+F: tools/testing/selftests/powerpc -+N: /pmac -+N: powermac -+N: powernv -+N: [^a-z0-9]ps3 -+N: pseries -+ -+LINUX FOR POWERPC EMBEDDED MPC5XXX -+M: Anatolij Gustschin <agust@denx.de> -+L: linuxppc-dev@lists.ozlabs.org -+S: Odd Fixes -+F: arch/powerpc/platforms/512x/ -+F: arch/powerpc/platforms/52xx/ -+ -+LINUX FOR POWERPC EMBEDDED PPC4XX -+L: linuxppc-dev@lists.ozlabs.org -+S: Orphan -+F: arch/powerpc/platforms/40x/ -+F: arch/powerpc/platforms/44x/ -+ -+LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX -+M: Scott Wood <oss@buserror.net> -+L: linuxppc-dev@lists.ozlabs.org -+S: Odd fixes -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux.git -+F: Documentation/devicetree/bindings/powerpc/fsl/ -+F: arch/powerpc/platforms/83xx/ -+F: arch/powerpc/platforms/85xx/ -+ -+LINUX FOR POWERPC EMBEDDED PPC8XX -+M: Christophe Leroy <christophe.leroy@csgroup.eu> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: arch/powerpc/platforms/8xx/ -+ -+LINUX KERNEL DUMP TEST MODULE (LKDTM) -+M: Kees Cook <keescook@chromium.org> -+S: Maintained -+F: drivers/misc/lkdtm/* -+F: tools/testing/selftests/lkdtm/* -+ -+LINUX KERNEL MEMORY CONSISTENCY MODEL (LKMM) -+M: Alan Stern <stern@rowland.harvard.edu> -+M: Andrea Parri <parri.andrea@gmail.com> -+M: Will Deacon <will@kernel.org> -+M: Peter Zijlstra <peterz@infradead.org> -+M: Boqun Feng <boqun.feng@gmail.com> -+M: Nicholas Piggin <npiggin@gmail.com> -+M: David Howells <dhowells@redhat.com> -+M: Jade Alglave <j.alglave@ucl.ac.uk> -+M: Luc Maranget <luc.maranget@inria.fr> -+M: "Paul E. McKenney" <paulmck@kernel.org> -+R: Akira Yokosawa <akiyks@gmail.com> -+R: Daniel Lustig <dlustig@nvidia.com> -+R: Joel Fernandes <joel@joelfernandes.org> -+L: linux-kernel@vger.kernel.org -+L: linux-arch@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev -+F: Documentation/atomic_bitops.txt -+F: Documentation/atomic_t.txt -+F: Documentation/core-api/refcount-vs-atomic.rst -+F: Documentation/litmus-tests/ -+F: Documentation/memory-barriers.txt -+F: tools/memory-model/ -+ -+LIS3LV02D ACCELEROMETER DRIVER -+M: Eric Piel <eric.piel@tremplin-utc.net> -+S: Maintained -+F: Documentation/misc-devices/lis3lv02d.rst -+F: drivers/misc/lis3lv02d/ -+F: drivers/platform/x86/hp_accel.c -+ -+LIST KUNIT TEST -+M: David Gow <davidgow@google.com> -+L: linux-kselftest@vger.kernel.org -+L: kunit-dev@googlegroups.com -+S: Maintained -+F: lib/list-test.c -+ -+LITEX PLATFORM -+M: Karol Gugala <kgugala@antmicro.com> -+M: Mateusz Holenko <mholenko@antmicro.com> -+S: Maintained -+F: Documentation/devicetree/bindings/*/litex,*.yaml -+F: arch/openrisc/boot/dts/or1klitex.dts -+F: drivers/soc/litex/litex_soc_ctrl.c -+F: drivers/tty/serial/liteuart.c -+F: include/linux/litex.h -+ -+LIVE PATCHING -+M: Josh Poimboeuf <jpoimboe@redhat.com> -+M: Jiri Kosina <jikos@kernel.org> -+M: Miroslav Benes <mbenes@suse.cz> -+M: Petr Mladek <pmladek@suse.com> -+R: Joe Lawrence <joe.lawrence@redhat.com> -+L: live-patching@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.git -+F: Documentation/ABI/testing/sysfs-kernel-livepatch -+F: Documentation/livepatch/ -+F: arch/powerpc/include/asm/livepatch.h -+F: arch/s390/include/asm/livepatch.h -+F: arch/x86/include/asm/livepatch.h -+F: include/linux/livepatch.h -+F: kernel/livepatch/ -+F: lib/livepatch/ -+F: samples/livepatch/ -+F: tools/testing/selftests/livepatch/ -+ -+LLC (802.2) -+L: netdev@vger.kernel.org -+S: Odd fixes -+F: include/linux/llc.h -+F: include/net/llc* -+F: include/uapi/linux/llc.h -+F: net/llc/ -+ -+LM73 HARDWARE MONITOR DRIVER -+M: Guillaume Ligneul <guillaume.ligneul@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/lm73.c -+ -+LM78 HARDWARE MONITOR DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/lm78.rst -+F: drivers/hwmon/lm78.c -+ -+LM83 HARDWARE MONITOR DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/lm83.rst -+F: drivers/hwmon/lm83.c -+ -+LM90 HARDWARE MONITOR DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/hwmon/lm90.txt -+F: Documentation/hwmon/lm90.rst -+F: drivers/hwmon/lm90.c -+F: include/dt-bindings/thermal/lm90.h -+ -+LM95234 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/lm95234.rst -+F: drivers/hwmon/lm95234.c -+ -+LME2510 MEDIA DRIVER -+M: Malcolm Priestley <tvboxspy@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/usb/dvb-usb-v2/lmedm04* -+ -+LOADPIN SECURITY MODULE -+M: Kees Cook <keescook@chromium.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin -+F: Documentation/admin-guide/LSM/LoadPin.rst -+F: security/loadpin/ -+ -+LOCKING PRIMITIVES -+M: Peter Zijlstra <peterz@infradead.org> -+M: Ingo Molnar <mingo@redhat.com> -+M: Will Deacon <will@kernel.org> -+R: Waiman Long <longman@redhat.com> -+R: Boqun Feng <boqun.feng@gmail.com> (LOCKDEP) -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core -+F: Documentation/locking/ -+F: arch/*/include/asm/spinlock*.h -+F: include/linux/lockdep.h -+F: include/linux/mutex*.h -+F: include/linux/rwlock*.h -+F: include/linux/rwsem*.h -+F: include/linux/seqlock.h -+F: include/linux/spinlock*.h -+F: kernel/locking/ -+F: lib/locking*.[ch] -+X: kernel/locking/locktorture.c -+ -+LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks) -+M: "Richard Russon (FlatCap)" <ldm@flatcap.org> -+L: linux-ntfs-dev@lists.sourceforge.net -+S: Maintained -+W: http://www.linux-ntfs.org/content/view/19/37/ -+F: Documentation/admin-guide/ldm.rst -+F: block/partitions/ldm.* -+ -+LOGITECH HID GAMING KEYBOARDS -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git -+F: drivers/hid/hid-lg-g15.c -+ -+LONTIUM LT8912B MIPI TO HDMI BRIDGE -+M: Adrien Grassein <adrien.grassein@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/display/bridge/lontium,lt8912b.yaml -+F: drivers/gpu/drm/bridge/lontium-lt8912b.c -+ -+LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI) -+M: Sathya Prakash <sathya.prakash@broadcom.com> -+M: Sreekanth Reddy <sreekanth.reddy@broadcom.com> -+M: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> -+L: MPT-FusionLinux.pdl@broadcom.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+W: http://www.avagotech.com/support/ -+F: drivers/message/fusion/ -+F: drivers/scsi/mpt3sas/ -+ -+LSILOGIC/SYMBIOS/NCR 53C8XX and 53C1010 PCI-SCSI drivers -+M: Matthew Wilcox <willy@infradead.org> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/sym53c8xx_2/ -+ -+LTC1660 DAC DRIVER -+M: Marcus Folkesson <marcus.folkesson@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/dac/lltc,ltc1660.yaml -+F: drivers/iio/dac/ltc1660.c -+ -+LTC2947 HARDWARE MONITOR DRIVER -+M: Nuno Sá <nuno.sa@analog.com> -+L: linux-hwmon@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/hwmon/adi,ltc2947.yaml -+F: drivers/hwmon/ltc2947-core.c -+F: drivers/hwmon/ltc2947-i2c.c -+F: drivers/hwmon/ltc2947-spi.c -+F: drivers/hwmon/ltc2947.h -+ -+LTC2983 IIO TEMPERATURE DRIVER -+M: Nuno Sá <nuno.sa@analog.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml -+F: drivers/iio/temperature/ltc2983.c -+ -+LTC4261 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/ltc4261.rst -+F: drivers/hwmon/ltc4261.c -+ -+LTC4306 I2C MULTIPLEXER DRIVER -+M: Michael Hennerich <michael.hennerich@analog.com> -+L: linux-i2c@vger.kernel.org -+S: Supported -+W: http://ez.analog.com/community/linux-device-drivers -+F: Documentation/devicetree/bindings/i2c/i2c-mux-ltc4306.txt -+F: drivers/i2c/muxes/i2c-mux-ltc4306.c -+ -+LTP (Linux Test Project) -+M: Mike Frysinger <vapier@gentoo.org> -+M: Cyril Hrubis <chrubis@suse.cz> -+M: Wanlong Gao <wanlong.gao@gmail.com> -+M: Jan Stancek <jstancek@redhat.com> -+M: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com> -+M: Alexey Kodanev <alexey.kodanev@oracle.com> -+L: ltp@lists.linux.it (subscribers-only) -+S: Maintained -+W: http://linux-test-project.github.io/ -+T: git git://github.com/linux-test-project/ltp.git -+ -+LYNX PCS MODULE -+M: Ioana Ciornei <ioana.ciornei@nxp.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/pcs/pcs-lynx.c -+F: include/linux/pcs-lynx.h -+ -+M68K ARCHITECTURE -+M: Geert Uytterhoeven <geert@linux-m68k.org> -+L: linux-m68k@lists.linux-m68k.org -+S: Maintained -+W: http://www.linux-m68k.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git -+F: arch/m68k/ -+F: drivers/zorro/ -+ -+M68K ON APPLE MACINTOSH -+M: Joshua Thompson <funaho@jurai.org> -+L: linux-m68k@lists.linux-m68k.org -+S: Maintained -+W: http://www.mac.linux-m68k.org/ -+F: arch/m68k/mac/ -+F: drivers/macintosh/adb-iop.c -+F: drivers/macintosh/via-macii.c -+ -+M68K ON HP9000/300 -+M: Philip Blundell <philb@gnu.org> -+S: Maintained -+W: http://www.tazenda.demon.co.uk/phil/linux-hp -+F: arch/m68k/hp300/ -+ -+M88DS3103 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/m88ds3103* -+ -+M88RS2000 MEDIA DRIVER -+M: Malcolm Priestley <tvboxspy@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/m88rs2000* -+ -+MA901 MASTERKIT USB FM RADIO DRIVER -+M: Alexey Klimov <klimov.linux@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-ma901.c -+ -+MAC80211 -+M: Johannes Berg <johannes@sipsolutions.net> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git -+F: Documentation/networking/mac80211-injection.rst -+F: Documentation/networking/mac80211_hwsim/mac80211_hwsim.rst -+F: drivers/net/wireless/mac80211_hwsim.[ch] -+F: include/net/mac80211.h -+F: net/mac80211/ -+ -+MAILBOX API -+M: Jassi Brar <jassisinghbrar@gmail.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/mailbox/ -+F: include/linux/mailbox_client.h -+F: include/linux/mailbox_controller.h -+F: include/dt-bindings/mailbox/ -+F: Documentation/devicetree/bindings/mailbox/ -+ -+MAILBOX ARM MHUv2 -+M: Viresh Kumar <viresh.kumar@linaro.org> -+M: Tushar Khandelwal <Tushar.Khandelwal@arm.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/mailbox/arm_mhuv2.c -+F: include/linux/mailbox/arm_mhuv2_message.h -+F: Documentation/devicetree/bindings/mailbox/arm,mhuv2.yaml -+ -+MANAGEMENT COMPONENT TRANSPORT PROTOCOL (MCTP) -+M: Jeremy Kerr <jk@codeconstruct.com.au> -+M: Matt Johnston <matt@codeconstruct.com.au> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/networking/mctp.rst -+F: drivers/net/mctp/ -+F: include/net/mctp.h -+F: include/net/mctpdevice.h -+F: include/net/netns/mctp.h -+F: net/mctp/ -+ -+MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7 -+M: Michael Kerrisk <mtk.manpages@gmail.com> -+L: linux-man@vger.kernel.org -+S: Maintained -+W: http://www.kernel.org/doc/man-pages -+ -+MARDUK (CREATOR CI40) DEVICE TREE SUPPORT -+M: Rahul Bedarkar <rahulbedarkar89@gmail.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/boot/dts/img/pistachio* -+ -+MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER -+M: Andrew Lunn <andrew@lunn.ch> -+M: Vivien Didelot <vivien.didelot@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/dsa/marvell.txt -+F: Documentation/networking/devlink/mv88e6xxx.rst -+F: drivers/net/dsa/mv88e6xxx/ -+F: include/linux/dsa/mv88e6xxx.h -+F: include/linux/platform_data/mv88e6xxx.h -+ -+MARVELL ARMADA 3700 PHY DRIVERS -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+S: Maintained -+F: Documentation/devicetree/bindings/phy/phy-mvebu-comphy.txt -+F: Documentation/devicetree/bindings/phy/marvell,armada-3700-utmi-phy.yaml -+F: drivers/phy/marvell/phy-mvebu-a3700-comphy.c -+F: drivers/phy/marvell/phy-mvebu-a3700-utmi.c -+ -+MARVELL ARMADA DRM SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+S: Maintained -+T: git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-armada-devel -+T: git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-armada-fixes -+F: Documentation/devicetree/bindings/display/armada/ -+F: drivers/gpu/drm/armada/ -+F: include/uapi/drm/armada_drm.h -+ -+MARVELL CRYPTO DRIVER -+M: Boris Brezillon <bbrezillon@kernel.org> -+M: Arnaud Ebalard <arno@natisbad.org> -+M: Srujana Challa <schalla@marvell.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: drivers/crypto/marvell/ -+F: include/linux/soc/marvell/octeontx2/ -+ -+MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2) -+M: Mirko Lindner <mlindner@marvell.com> -+M: Stephen Hemminger <stephen@networkplumber.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/marvell/sk* -+ -+MARVELL LIBERTAS WIRELESS DRIVER -+L: libertas-dev@lists.infradead.org -+S: Orphan -+F: drivers/net/wireless/marvell/libertas/ -+ -+MARVELL MACCHIATOBIN SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm64/boot/dts/marvell/armada-8040-mcbin.dts -+ -+MARVELL MV643XX ETHERNET DRIVER -+M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/marvell/mv643xx_eth.* -+F: include/linux/mv643xx.h -+ -+MARVELL MV88X3310 PHY DRIVER -+M: Russell King <linux@armlinux.org.uk> -+M: Marek Behún <kabel@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/phy/marvell10g.c -+ -+MARVELL MVEBU THERMAL DRIVER -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+S: Maintained -+F: drivers/thermal/armada_thermal.c -+ -+MARVELL MVNETA ETHERNET DRIVER -+M: Thomas Petazzoni <thomas.petazzoni@bootlin.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/marvell/mvneta.* -+ -+MARVELL MVPP2 ETHERNET DRIVER -+M: Marcin Wojtas <mw@semihalf.com> -+M: Russell King <linux@armlinux.org.uk> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/marvell-pp2.txt -+F: drivers/net/ethernet/marvell/mvpp2/ -+ -+MARVELL MWIFIEX WIRELESS DRIVER -+M: Amitkumar Karwar <amitkarwar@gmail.com> -+M: Ganapathi Bhat <ganapathi017@gmail.com> -+M: Sharvari Harisangam <sharvari.harisangam@nxp.com> -+M: Xinming Hu <huxinming820@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/marvell/mwifiex/ -+ -+MARVELL MWL8K WIRELESS DRIVER -+M: Lennert Buytenhek <buytenh@wantstofly.org> -+L: linux-wireless@vger.kernel.org -+S: Odd Fixes -+F: drivers/net/wireless/marvell/mwl8k.c -+ -+MARVELL NAND CONTROLLER DRIVER -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/mtd/marvell-nand.txt -+F: drivers/mtd/nand/raw/marvell_nand.c -+ -+MARVELL OCTEONTX2 PHYSICAL FUNCTION DRIVER -+M: Sunil Goutham <sgoutham@marvell.com> -+M: Geetha sowjanya <gakula@marvell.com> -+M: Subbaraya Sundeep <sbhatta@marvell.com> -+M: hariprasad <hkelam@marvell.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/marvell/octeontx2/nic/ -+F: include/linux/soc/marvell/octeontx2/ -+ -+MARVELL OCTEONTX2 RVU ADMIN FUNCTION DRIVER -+M: Sunil Goutham <sgoutham@marvell.com> -+M: Linu Cherian <lcherian@marvell.com> -+M: Geetha sowjanya <gakula@marvell.com> -+M: Jerin Jacob <jerinj@marvell.com> -+M: hariprasad <hkelam@marvell.com> -+M: Subbaraya Sundeep <sbhatta@marvell.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/device_drivers/ethernet/marvell/octeontx2.rst -+F: drivers/net/ethernet/marvell/octeontx2/af/ -+ -+MARVELL PRESTERA ETHERNET SWITCH DRIVER -+M: Taras Chornyi <tchornyi@marvell.com> -+S: Supported -+W: https://github.com/Marvell-switching/switchdev-prestera -+F: drivers/net/ethernet/marvell/prestera/ -+ -+MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER -+M: Nicolas Pitre <nico@fluxnic.net> -+S: Odd Fixes -+F: drivers/mmc/host/mvsdio.* -+ -+MARVELL USB MDIO CONTROLLER DRIVER -+M: Tobias Waldekranz <tobias@waldekranz.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/marvell,mvusb.yaml -+F: drivers/net/mdio/mdio-mvusb.c -+ -+MARVELL XENON MMC/SD/SDIO HOST CONTROLLER DRIVER -+M: Hu Ziji <huziji@marvell.com> -+L: linux-mmc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt -+F: drivers/mmc/host/sdhci-xenon* -+ -+MATROX FRAMEBUFFER DRIVER -+L: linux-fbdev@vger.kernel.org -+S: Orphan -+F: drivers/video/fbdev/matrox/matroxfb_* -+F: include/uapi/linux/matroxfb.h -+ -+MAX15301 DRIVER -+M: Daniel Nilsson <daniel.nilsson@flex.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/max15301.rst -+F: drivers/hwmon/pmbus/max15301.c -+ -+MAX16065 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/max16065.rst -+F: drivers/hwmon/max16065.c -+ -+MAX2175 SDR TUNER DRIVER -+M: Ramesh Shanmugasundaram <rashanmu@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/max2175.txt -+F: Documentation/userspace-api/media/drivers/max2175.rst -+F: drivers/media/i2c/max2175* -+F: include/uapi/linux/max2175.h -+ -+MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER -+L: linux-hwmon@vger.kernel.org -+S: Orphan -+F: Documentation/hwmon/max6650.rst -+F: drivers/hwmon/max6650.c -+ -+MAX6697 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/hwmon/max6697.txt -+F: Documentation/hwmon/max6697.rst -+F: drivers/hwmon/max6697.c -+F: include/linux/platform_data/max6697.h -+ -+MAX9286 QUAD GMSL DESERIALIZER DRIVER -+M: Jacopo Mondi <jacopo+renesas@jmondi.org> -+M: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> -+M: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> -+M: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml -+F: drivers/media/i2c/max9286.c -+ -+MAX9860 MONO AUDIO VOICE CODEC DRIVER -+M: Peter Rosin <peda@axentia.se> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/max9860.txt -+F: sound/soc/codecs/max9860.* -+ -+MAXBOTIX ULTRASONIC RANGER IIO DRIVER -+M: Andreas Klinger <ak@it-klinger.de> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/proximity/maxbotix,mb1232.yaml -+F: drivers/iio/proximity/mb1232.c -+ -+MAXIM MAX77650 PMIC MFD DRIVER -+M: Bartosz Golaszewski <brgl@bgdev.pl> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/*/*max77650.yaml -+F: Documentation/devicetree/bindings/*/max77650*.yaml -+F: drivers/gpio/gpio-max77650.c -+F: drivers/input/misc/max77650-onkey.c -+F: drivers/leds/leds-max77650.c -+F: drivers/mfd/max77650.c -+F: drivers/power/supply/max77650-charger.c -+F: drivers/regulator/max77650-regulator.c -+F: include/linux/mfd/max77650.h -+ -+MAXIM MAX77802 PMIC REGULATOR DEVICE DRIVER -+M: Javier Martinez Canillas <javier@dowhile0.org> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/*/*max77802.txt -+F: drivers/regulator/max77802-regulator.c -+F: include/dt-bindings/*/*max77802.h -+ -+MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> -+L: linux-pm@vger.kernel.org -+S: Supported -+F: drivers/power/supply/max14577_charger.c -+F: drivers/power/supply/max77693_charger.c -+ -+MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS -+M: Chanwoo Choi <cw00.choi@samsung.com> -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/*/max77686.txt -+F: Documentation/devicetree/bindings/clock/maxim,max77686.txt -+F: Documentation/devicetree/bindings/mfd/max14577.txt -+F: Documentation/devicetree/bindings/mfd/max77693.txt -+F: drivers/*/max14577*.c -+F: drivers/*/max77686*.c -+F: drivers/*/max77693*.c -+F: drivers/clk/clk-max77686.c -+F: drivers/extcon/extcon-max14577.c -+F: drivers/extcon/extcon-max77693.c -+F: drivers/rtc/rtc-max77686.c -+F: include/linux/mfd/max14577*.h -+F: include/linux/mfd/max77686*.h -+F: include/linux/mfd/max77693*.h -+ -+MAXIRADIO FM RADIO RECEIVER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-maxiradio* -+ -+MAXLINEAR ETHERNET PHY DRIVER -+M: Xu Liang <lxu@maxlinear.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/phy/mxl-gpy.c -+ -+MCBA MICROCHIP CAN BUS ANALYZER TOOL DRIVER -+R: Yasushi SHOJI <yashi@spacecubics.com> -+L: linux-can@vger.kernel.org -+S: Maintained -+F: drivers/net/can/usb/mcba_usb.c -+ -+MCAN MMIO DEVICE DRIVER -+M: Chandrasekar Ramakrishnan <rcsekar@samsung.com> -+L: linux-can@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/can/bosch,m_can.yaml -+F: drivers/net/can/m_can/m_can.c -+F: drivers/net/can/m_can/m_can.h -+F: drivers/net/can/m_can/m_can_platform.c -+ -+MCP2221A MICROCHIP USB-HID TO I2C BRIDGE DRIVER -+M: Rishi Gupta <gupt21@gmail.com> -+L: linux-i2c@vger.kernel.org -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/hid-mcp2221.c -+ -+MCP251XFD SPI-CAN NETWORK DRIVER -+M: Marc Kleine-Budde <mkl@pengutronix.de> -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+R: Thomas Kopp <thomas.kopp@microchip.com> -+L: linux-can@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/can/microchip,mcp251xfd.yaml -+F: drivers/net/can/spi/mcp251xfd/ -+ -+MCP4018 AND MCP4531 MICROCHIP DIGITAL POTENTIOMETER DRIVERS -+M: Peter Rosin <peda@axentia.se> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-iio-potentiometer-mcp4531 -+F: drivers/iio/potentiometer/mcp4018.c -+F: drivers/iio/potentiometer/mcp4531.c -+ -+MCR20A IEEE-802.15.4 RADIO DRIVER -+M: Xue Liu <liuxuenetmail@gmail.com> -+L: linux-wpan@vger.kernel.org -+S: Maintained -+W: https://github.com/xueliu/mcr20a-linux -+F: Documentation/devicetree/bindings/net/ieee802154/mcr20a.txt -+F: drivers/net/ieee802154/mcr20a.c -+F: drivers/net/ieee802154/mcr20a.h -+ -+MEASUREMENT COMPUTING CIO-DAC IIO DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: drivers/iio/dac/cio-dac.c -+ -+MEDIA CONTROLLER FRAMEWORK -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://www.linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/mc/ -+F: include/media/media-*.h -+F: include/uapi/linux/media.h -+ -+MEDIA DRIVER FOR FREESCALE IMX PXP -+M: Philipp Zabel <p.zabel@pengutronix.de> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/platform/imx-pxp.[ch] -+ -+MEDIA DRIVERS FOR ASCOT2E -+M: Sergey Kozlov <serjk@netup.ru> -+M: Abylay Ospan <aospan@netup.ru> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+W: http://netup.tv/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/ascot2e* -+ -+MEDIA DRIVERS FOR CXD2099AR CI CONTROLLERS -+M: Jasmin Jessich <jasmin@anw.at> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/cxd2099* -+ -+MEDIA DRIVERS FOR CXD2841ER -+M: Sergey Kozlov <serjk@netup.ru> -+M: Abylay Ospan <aospan@netup.ru> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+W: http://netup.tv/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/cxd2841er* -+ -+MEDIA DRIVERS FOR CXD2880 -+M: Yasunari Takiguchi <Yasunari.Takiguchi@sony.com> -+L: linux-media@vger.kernel.org -+S: Supported -+W: http://linuxtv.org/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/cxd2880/* -+F: drivers/media/spi/cxd2880* -+ -+MEDIA DRIVERS FOR DIGITAL DEVICES PCIE DEVICES -+L: linux-media@vger.kernel.org -+S: Orphan -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/pci/ddbridge/* -+ -+MEDIA DRIVERS FOR FREESCALE IMX -+M: Steve Longerbeam <slongerbeam@gmail.com> -+M: Philipp Zabel <p.zabel@pengutronix.de> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/imx.rst -+F: Documentation/devicetree/bindings/media/imx.txt -+F: drivers/staging/media/imx/ -+F: include/linux/imx-media.h -+F: include/media/imx.h -+ -+MEDIA DRIVERS FOR FREESCALE IMX7 -+M: Rui Miguel Silva <rmfrfs@gmail.com> -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/imx7.rst -+F: Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml -+F: Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml -+F: drivers/staging/media/imx/imx7-media-csi.c -+F: drivers/staging/media/imx/imx7-mipi-csis.c -+ -+MEDIA DRIVERS FOR HELENE -+M: Abylay Ospan <aospan@netup.ru> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+W: http://netup.tv/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/helene* -+ -+MEDIA DRIVERS FOR HORUS3A -+M: Sergey Kozlov <serjk@netup.ru> -+M: Abylay Ospan <aospan@netup.ru> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+W: http://netup.tv/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/horus3a* -+ -+MEDIA DRIVERS FOR LNBH25 -+M: Sergey Kozlov <serjk@netup.ru> -+M: Abylay Ospan <aospan@netup.ru> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+W: http://netup.tv/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/lnbh25* -+ -+MEDIA DRIVERS FOR MXL5XX TUNER DEMODULATORS -+L: linux-media@vger.kernel.org -+S: Orphan -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/mxl5xx* -+ -+MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices -+M: Sergey Kozlov <serjk@netup.ru> -+M: Abylay Ospan <aospan@netup.ru> -+L: linux-media@vger.kernel.org -+S: Supported -+W: https://linuxtv.org -+W: http://netup.tv/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/pci/netup_unidvb/* -+ -+MEDIA DRIVERS FOR NVIDIA TEGRA - VDE -+M: Dmitry Osipenko <digetx@gmail.com> -+L: linux-media@vger.kernel.org -+L: linux-tegra@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/nvidia,tegra-vde.txt -+F: drivers/staging/media/tegra-vde/ -+ -+MEDIA DRIVERS FOR RENESAS - CEU -+M: Jacopo Mondi <jacopo@jmondi.org> -+L: linux-media@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/renesas,ceu.yaml -+F: drivers/media/platform/renesas-ceu.c -+F: include/media/drv-intf/renesas-ceu.h -+ -+MEDIA DRIVERS FOR RENESAS - DRIF -+M: Fabrizio Castro <fabrizio.castro.jz@renesas.com> -+L: linux-media@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/renesas,drif.yaml -+F: drivers/media/platform/rcar_drif.c -+ -+MEDIA DRIVERS FOR RENESAS - FCP -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/renesas,fcp.yaml -+F: drivers/media/platform/rcar-fcp.c -+F: include/media/rcar-fcp.h -+ -+MEDIA DRIVERS FOR RENESAS - FDP1 -+M: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> -+L: linux-media@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/renesas,fdp1.yaml -+F: drivers/media/platform/rcar_fdp1.c -+ -+MEDIA DRIVERS FOR RENESAS - VIN -+M: Niklas Söderlund <niklas.soderlund@ragnatech.se> -+L: linux-media@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/renesas,csi2.yaml -+F: Documentation/devicetree/bindings/media/renesas,isp.yaml -+F: Documentation/devicetree/bindings/media/renesas,vin.yaml -+F: drivers/media/platform/rcar-vin/ -+ -+MEDIA DRIVERS FOR RENESAS - VSP1 -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+M: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> -+L: linux-media@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/renesas,vsp1.yaml -+F: drivers/media/platform/vsp1/ -+ -+MEDIA DRIVERS FOR ST STV0910 DEMODULATOR ICs -+L: linux-media@vger.kernel.org -+S: Orphan -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/stv0910* -+ -+MEDIA DRIVERS FOR ST STV6111 TUNER ICs -+L: linux-media@vger.kernel.org -+S: Orphan -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/dvb-frontends/stv6111* -+ -+MEDIA DRIVERS FOR STM32 - DCMI -+M: Hugues Fruchet <hugues.fruchet@foss.st.com> -+L: linux-media@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml -+F: drivers/media/platform/stm32/stm32-dcmi.c -+ -+MEDIA INPUT INFRASTRUCTURE (V4L/DVB) -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.kernel.org/project/linux-media/list/ -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/ -+F: Documentation/devicetree/bindings/media/ -+F: Documentation/driver-api/media/ -+F: Documentation/userspace-api/media/ -+F: drivers/media/ -+F: drivers/staging/media/ -+F: include/linux/platform_data/media/ -+F: include/media/ -+F: include/uapi/linux/dvb/ -+F: include/uapi/linux/ivtv* -+F: include/uapi/linux/media.h -+F: include/uapi/linux/meye.h -+F: include/uapi/linux/uvcvideo.h -+F: include/uapi/linux/v4l2-* -+F: include/uapi/linux/videodev2.h -+ -+MEDIATEK BLUETOOTH DRIVER -+M: Sean Wang <sean.wang@mediatek.com> -+L: linux-bluetooth@vger.kernel.org -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/net/mediatek-bluetooth.txt -+F: drivers/bluetooth/btmtkuart.c -+ -+MEDIATEK BOARD LEVEL SHUTDOWN DRIVERS -+M: Sean Wang <sean.wang@mediatek.com> -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/power/reset/mt6323-poweroff.txt -+F: drivers/power/reset/mt6323-poweroff.c -+ -+MEDIATEK CIR DRIVER -+M: Sean Wang <sean.wang@mediatek.com> -+S: Maintained -+F: drivers/media/rc/mtk-cir.c -+ -+MEDIATEK DMA DRIVER -+M: Sean Wang <sean.wang@mediatek.com> -+L: dmaengine@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/dma/mtk-* -+F: drivers/dma/mediatek/ -+ -+MEDIATEK ETHERNET DRIVER -+M: Felix Fietkau <nbd@nbd.name> -+M: John Crispin <john@phrozen.org> -+M: Sean Wang <sean.wang@mediatek.com> -+M: Mark Lee <Mark-MC.Lee@mediatek.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/mediatek/ -+ -+MEDIATEK I2C CONTROLLER DRIVER -+M: Qii Wang <qii.wang@mediatek.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-mt65xx.txt -+F: drivers/i2c/busses/i2c-mt65xx.c -+ -+MEDIATEK IOMMU DRIVER -+M: Yong Wu <yong.wu@mediatek.com> -+L: iommu@lists.linux-foundation.org -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: Documentation/devicetree/bindings/iommu/mediatek* -+F: drivers/iommu/mtk_iommu* -+F: include/dt-bindings/memory/mt*-port.h -+ -+MEDIATEK JPEG DRIVER -+M: Rick Chang <rick.chang@mediatek.com> -+M: Bin Liu <bin.liu@mediatek.com> -+S: Supported -+F: Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt -+F: drivers/media/platform/mtk-jpeg/ -+ -+MEDIATEK MDP DRIVER -+M: Minghsiu Tsai <minghsiu.tsai@mediatek.com> -+M: Houlong Wei <houlong.wei@mediatek.com> -+M: Andrew-CT Chen <andrew-ct.chen@mediatek.com> -+S: Supported -+F: Documentation/devicetree/bindings/media/mediatek-mdp.txt -+F: drivers/media/platform/mtk-mdp/ -+F: drivers/media/platform/mtk-vpu/ -+ -+MEDIATEK MEDIA DRIVER -+M: Tiffany Lin <tiffany.lin@mediatek.com> -+M: Andrew-CT Chen <andrew-ct.chen@mediatek.com> -+S: Supported -+F: Documentation/devicetree/bindings/media/mediatek-vcodec.txt -+F: Documentation/devicetree/bindings/media/mediatek-vpu.txt -+F: drivers/media/platform/mtk-vcodec/ -+F: drivers/media/platform/mtk-vpu/ -+ -+MEDIATEK MMC/SD/SDIO DRIVER -+M: Chaotian Jing <chaotian.jing@mediatek.com> -+S: Maintained -+F: Documentation/devicetree/bindings/mmc/mtk-sd.yaml -+F: drivers/mmc/host/mtk-sd.c -+ -+MEDIATEK MT76 WIRELESS LAN DRIVER -+M: Felix Fietkau <nbd@nbd.name> -+M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> -+R: Ryder Lee <ryder.lee@mediatek.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/mediatek/mt76/ -+ -+MEDIATEK MT7601U WIRELESS LAN DRIVER -+M: Jakub Kicinski <kubakici@wp.pl> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/mediatek/mt7601u/ -+ -+MEDIATEK MT7621 CLOCK DRIVER -+M: Sergio Paracuellos <sergio.paracuellos@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/clock/mediatek,mt7621-sysc.yaml -+F: drivers/clk/ralink/clk-mt7621.c -+ -+MEDIATEK MT7621/28/88 I2C DRIVER -+M: Stefan Roese <sr@denx.de> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-mt7621.txt -+F: drivers/i2c/busses/i2c-mt7621.c -+ -+MEDIATEK MT7621 PHY PCI DRIVER -+M: Sergio Paracuellos <sergio.paracuellos@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/phy/mediatek,mt7621-pci-phy.yaml -+F: drivers/phy/ralink/phy-mt7621-pci.c -+ -+MEDIATEK NAND CONTROLLER DRIVER -+L: linux-mtd@lists.infradead.org -+S: Orphan -+F: Documentation/devicetree/bindings/mtd/mtk-nand.txt -+F: drivers/mtd/nand/raw/mtk_* -+ -+MEDIATEK PMIC LED DRIVER -+M: Sean Wang <sean.wang@mediatek.com> -+S: Maintained -+F: Documentation/devicetree/bindings/leds/leds-mt6323.txt -+F: drivers/leds/leds-mt6323.c -+ -+MEDIATEK RANDOM NUMBER GENERATOR SUPPORT -+M: Sean Wang <sean.wang@mediatek.com> -+S: Maintained -+F: drivers/char/hw_random/mtk-rng.c -+ -+MEDIATEK SWITCH DRIVER -+M: Sean Wang <sean.wang@mediatek.com> -+M: Landen Chao <Landen.Chao@mediatek.com> -+M: DENG Qingfang <dqfext@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/dsa/mt7530.* -+F: net/dsa/tag_mtk.c -+ -+MEDIATEK USB3 DRD IP DRIVER -+M: Chunfeng Yun <chunfeng.yun@mediatek.com> -+L: linux-usb@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/usb/mediatek,* -+F: drivers/usb/host/xhci-mtk* -+F: drivers/usb/mtu3/ -+ -+MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES -+M: Peter Senna Tschudin <peter.senna@gmail.com> -+M: Martin Donnelly <martin.donnelly@ge.com> -+M: Martyn Welch <martyn.welch@collabora.co.uk> -+S: Maintained -+F: Documentation/devicetree/bindings/display/bridge/megachips-stdpxxxx-ge-b850v3-fw.txt -+F: drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c -+ -+MEGARAID SCSI/SAS DRIVERS -+M: Kashyap Desai <kashyap.desai@broadcom.com> -+M: Sumit Saxena <sumit.saxena@broadcom.com> -+M: Shivasharan S <shivasharan.srikanteshwara@broadcom.com> -+L: megaraidlinux.pdl@broadcom.com -+L: linux-scsi@vger.kernel.org -+S: Maintained -+W: http://www.avagotech.com/support/ -+F: Documentation/scsi/megaraid.rst -+F: drivers/scsi/megaraid.* -+F: drivers/scsi/megaraid/ -+ -+MELEXIS MLX90614 DRIVER -+M: Crt Mori <cmo@melexis.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://www.melexis.com -+F: drivers/iio/temperature/mlx90614.c -+ -+MELEXIS MLX90632 DRIVER -+M: Crt Mori <cmo@melexis.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+W: http://www.melexis.com -+F: drivers/iio/temperature/mlx90632.c -+ -+MELFAS MIP4 TOUCHSCREEN DRIVER -+M: Sangwon Jee <jeesw@melfas.com> -+S: Supported -+W: http://www.melfas.com -+F: Documentation/devicetree/bindings/input/touchscreen/melfas_mip4.txt -+F: drivers/input/touchscreen/melfas_mip4.c -+ -+MELLANOX BLUEFIELD I2C DRIVER -+M: Khalil Blaiech <kblaiech@nvidia.com> -+L: linux-i2c@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/i2c/mellanox,i2c-mlxbf.yaml -+F: drivers/i2c/busses/i2c-mlxbf.c -+ -+MELLANOX ETHERNET DRIVER (mlx4_en) -+M: Tariq Toukan <tariqt@nvidia.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: drivers/net/ethernet/mellanox/mlx4/en_* -+ -+MELLANOX ETHERNET DRIVER (mlx5e) -+M: Saeed Mahameed <saeedm@nvidia.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: drivers/net/ethernet/mellanox/mlx5/core/en_* -+ -+MELLANOX ETHERNET INNOVA DRIVERS -+R: Boris Pismenny <borisp@nvidia.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: drivers/net/ethernet/mellanox/mlx5/core/accel/* -+F: drivers/net/ethernet/mellanox/mlx5/core/en_accel/* -+F: drivers/net/ethernet/mellanox/mlx5/core/fpga/* -+F: include/linux/mlx5/mlx5_ifc_fpga.h -+ -+MELLANOX ETHERNET SWITCH DRIVERS -+M: Jiri Pirko <jiri@nvidia.com> -+M: Ido Schimmel <idosch@nvidia.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: drivers/net/ethernet/mellanox/mlxsw/ -+F: tools/testing/selftests/drivers/net/mlxsw/ -+ -+MELLANOX FIRMWARE FLASH LIBRARY (mlxfw) -+M: mlxsw@nvidia.com -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: drivers/net/ethernet/mellanox/mlxfw/ -+ -+MELLANOX HARDWARE PLATFORM SUPPORT -+M: Hans de Goede <hdegoede@redhat.com> -+M: Mark Gross <mgross@linux.intel.com> -+M: Vadim Pasternak <vadimp@nvidia.com> -+L: platform-driver-x86@vger.kernel.org -+S: Supported -+F: Documentation/ABI/testing/sysfs-platform-mellanox-bootctl -+F: drivers/platform/mellanox/ -+F: include/linux/platform_data/mlxreg.h -+ -+MELLANOX MLX4 core VPI driver -+M: Tariq Toukan <tariqt@nvidia.com> -+L: netdev@vger.kernel.org -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: drivers/net/ethernet/mellanox/mlx4/ -+F: include/linux/mlx4/ -+ -+MELLANOX MLX4 IB driver -+M: Yishai Hadas <yishaih@nvidia.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: http://patchwork.kernel.org/project/linux-rdma/list/ -+F: drivers/infiniband/hw/mlx4/ -+F: include/linux/mlx4/ -+F: include/uapi/rdma/mlx4-abi.h -+ -+MELLANOX MLX5 core VPI driver -+M: Saeed Mahameed <saeedm@nvidia.com> -+M: Leon Romanovsky <leonro@nvidia.com> -+L: netdev@vger.kernel.org -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+F: Documentation/networking/device_drivers/ethernet/mellanox/ -+F: drivers/net/ethernet/mellanox/mlx5/core/ -+F: include/linux/mlx5/ -+ -+MELLANOX MLX5 IB driver -+M: Leon Romanovsky <leonro@nvidia.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+W: http://www.mellanox.com -+Q: http://patchwork.kernel.org/project/linux-rdma/list/ -+F: drivers/infiniband/hw/mlx5/ -+F: include/linux/mlx5/ -+F: include/uapi/rdma/mlx5-abi.h -+ -+MELLANOX MLXCPLD I2C AND MUX DRIVER -+M: Vadim Pasternak <vadimp@nvidia.com> -+M: Michael Shych <michaelsh@nvidia.com> -+L: linux-i2c@vger.kernel.org -+S: Supported -+F: Documentation/i2c/busses/i2c-mlxcpld.rst -+F: drivers/i2c/busses/i2c-mlxcpld.c -+F: drivers/i2c/muxes/i2c-mux-mlxcpld.c -+ -+MELLANOX MLXCPLD LED DRIVER -+M: Vadim Pasternak <vadimp@nvidia.com> -+L: linux-leds@vger.kernel.org -+S: Supported -+F: Documentation/leds/leds-mlxcpld.rst -+F: drivers/leds/leds-mlxcpld.c -+F: drivers/leds/leds-mlxreg.c -+ -+MELLANOX PLATFORM DRIVER -+M: Vadim Pasternak <vadimp@nvidia.com> -+L: platform-driver-x86@vger.kernel.org -+S: Supported -+F: drivers/platform/x86/mlx-platform.c -+ -+MEMBARRIER SUPPORT -+M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -+M: "Paul E. McKenney" <paulmck@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: arch/powerpc/include/asm/membarrier.h -+F: include/uapi/linux/membarrier.h -+F: kernel/sched/membarrier.c -+ -+MEMBLOCK -+M: Mike Rapoport <rppt@linux.ibm.com> -+L: linux-mm@kvack.org -+S: Maintained -+F: Documentation/core-api/boot-time-mm.rst -+F: include/linux/memblock.h -+F: mm/memblock.c -+ -+MEMORY CONTROLLER DRIVERS -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl.git -+F: Documentation/devicetree/bindings/memory-controllers/ -+F: drivers/memory/ -+F: include/dt-bindings/memory/ -+F: include/memory/ -+ -+MEMORY FREQUENCY SCALING DRIVERS FOR NVIDIA TEGRA -+M: Dmitry Osipenko <digetx@gmail.com> -+L: linux-pm@vger.kernel.org -+L: linux-tegra@vger.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git -+S: Maintained -+F: drivers/devfreq/tegra30-devfreq.c -+ -+MEMORY MANAGEMENT -+M: Andrew Morton <akpm@linux-foundation.org> -+L: linux-mm@kvack.org -+S: Maintained -+W: http://www.linux-mm.org -+T: quilt https://ozlabs.org/~akpm/mmotm/ -+T: quilt https://ozlabs.org/~akpm/mmots/ -+T: git git://github.com/hnaz/linux-mm.git -+F: include/linux/gfp.h -+F: include/linux/memory_hotplug.h -+F: include/linux/mm.h -+F: include/linux/mmzone.h -+F: include/linux/pagewalk.h -+F: include/linux/vmalloc.h -+F: mm/ -+F: tools/testing/selftests/vm/ -+ -+MEMORY TECHNOLOGY DEVICES (MTD) -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+M: Richard Weinberger <richard@nod.at> -+M: Vignesh Raghavendra <vigneshr@ti.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+W: http://www.linux-mtd.infradead.org/ -+Q: http://patchwork.ozlabs.org/project/linux-mtd/list/ -+C: irc://irc.oftc.net/mtd -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/fixes -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next -+F: Documentation/devicetree/bindings/mtd/ -+F: drivers/mtd/ -+F: include/linux/mtd/ -+F: include/uapi/mtd/ -+ -+MEN A21 WATCHDOG DRIVER -+M: Johannes Thumshirn <morbidrsa@gmail.com> -+L: linux-watchdog@vger.kernel.org -+S: Maintained -+F: drivers/watchdog/mena21_wdt.c -+ -+MEN CHAMELEON BUS (mcb) -+M: Johannes Thumshirn <morbidrsa@gmail.com> -+S: Maintained -+F: Documentation/driver-api/men-chameleon-bus.rst -+F: drivers/mcb/ -+F: include/linux/mcb.h -+ -+MEN F21BMC (Board Management Controller) -+M: Andreas Werner <andreas.werner@men.de> -+S: Supported -+F: Documentation/hwmon/menf21bmc.rst -+F: drivers/hwmon/menf21bmc_hwmon.c -+F: drivers/leds/leds-menf21bmc.c -+F: drivers/mfd/menf21bmc.c -+F: drivers/watchdog/menf21bmc_wdt.c -+ -+MEN Z069 WATCHDOG DRIVER -+M: Johannes Thumshirn <jth@kernel.org> -+L: linux-watchdog@vger.kernel.org -+S: Maintained -+F: drivers/watchdog/menz69_wdt.c -+ -+MESON AO CEC DRIVER FOR AMLOGIC SOCS -+M: Neil Armstrong <narmstrong@baylibre.com> -+L: linux-media@vger.kernel.org -+L: linux-amlogic@lists.infradead.org -+S: Supported -+W: http://linux-meson.com/ -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/amlogic,meson-gx-ao-cec.yaml -+F: drivers/media/cec/platform/meson/ao-cec-g12a.c -+F: drivers/media/cec/platform/meson/ao-cec.c -+ -+MESON GE2D DRIVER FOR AMLOGIC SOCS -+M: Neil Armstrong <narmstrong@baylibre.com> -+L: linux-media@vger.kernel.org -+L: linux-amlogic@lists.infradead.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/amlogic,axg-ge2d.yaml -+F: drivers/media/platform/meson/ge2d/ -+ -+MESON NAND CONTROLLER DRIVER FOR AMLOGIC SOCS -+M: Liang Yang <liang.yang@amlogic.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt -+F: drivers/mtd/nand/raw/meson_* -+ -+MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS -+M: Neil Armstrong <narmstrong@baylibre.com> -+L: linux-media@vger.kernel.org -+L: linux-amlogic@lists.infradead.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml -+F: drivers/staging/media/meson/vdec/ -+ -+METHODE UDPU SUPPORT -+M: Vladimir Vid <vladimir.vid@sartura.hr> -+S: Maintained -+F: arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts -+ -+MHI BUS -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+M: Hemant Kumar <hemantk@codeaurora.org> -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mani/mhi.git -+F: Documentation/ABI/stable/sysfs-bus-mhi -+F: Documentation/mhi/ -+F: drivers/bus/mhi/ -+F: include/linux/mhi.h -+ -+MICROBLAZE ARCHITECTURE -+M: Michal Simek <monstr@monstr.eu> -+S: Supported -+W: http://www.monstr.eu/fdt/ -+T: git git://git.monstr.eu/linux-2.6-microblaze.git -+F: arch/microblaze/ -+ -+MICROCHIP AT91 DMA DRIVERS -+M: Ludovic Desroches <ludovic.desroches@microchip.com> -+M: Tudor Ambarus <tudor.ambarus@microchip.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: dmaengine@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/dma/atmel-dma.txt -+F: drivers/dma/at_hdmac.c -+F: drivers/dma/at_hdmac_regs.h -+F: drivers/dma/at_xdmac.c -+F: include/dt-bindings/dma/at91.h -+ -+MICROCHIP AT91 SERIAL DRIVER -+M: Richard Genoud <richard.genoud@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/atmel-usart.txt -+F: drivers/tty/serial/atmel_serial.c -+F: drivers/tty/serial/atmel_serial.h -+ -+MICROCHIP AT91 USART MFD DRIVER -+M: Radu Pirea <radu_nicolae.pirea@upb.ro> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/mfd/atmel-usart.txt -+F: drivers/mfd/at91-usart.c -+F: include/dt-bindings/mfd/at91-usart.h -+ -+MICROCHIP AT91 USART SPI DRIVER -+M: Radu Pirea <radu_nicolae.pirea@upb.ro> -+L: linux-spi@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/mfd/atmel-usart.txt -+F: drivers/spi/spi-at91-usart.c -+ -+MICROCHIP AUDIO ASOC DRIVERS -+M: Codrin Ciubotariu <codrin.ciubotariu@microchip.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+F: sound/soc/atmel -+ -+MICROCHIP ECC DRIVER -+M: Tudor Ambarus <tudor.ambarus@microchip.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: drivers/crypto/atmel-ecc.* -+ -+MICROCHIP I2C DRIVER -+M: Codrin Ciubotariu <codrin.ciubotariu@microchip.com> -+L: linux-i2c@vger.kernel.org -+S: Supported -+F: drivers/i2c/busses/i2c-at91-*.c -+F: drivers/i2c/busses/i2c-at91.h -+ -+MICROCHIP ISC DRIVER -+M: Eugen Hristev <eugen.hristev@microchip.com> -+L: linux-media@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/media/atmel,isc.yaml -+F: Documentation/devicetree/bindings/media/microchip,xisc.yaml -+F: drivers/media/platform/atmel/atmel-isc-base.c -+F: drivers/media/platform/atmel/atmel-isc-regs.h -+F: drivers/media/platform/atmel/atmel-isc.h -+F: drivers/media/platform/atmel/atmel-sama5d2-isc.c -+F: drivers/media/platform/atmel/atmel-sama7g5-isc.c -+F: include/linux/atmel-isc-media.h -+ -+MICROCHIP ISI DRIVER -+M: Eugen Hristev <eugen.hristev@microchip.com> -+L: linux-media@vger.kernel.org -+S: Supported -+F: drivers/media/platform/atmel/atmel-isi.c -+F: drivers/media/platform/atmel/atmel-isi.h -+ -+MICROCHIP KSZ SERIES ETHERNET SWITCH DRIVER -+M: Woojung Huh <woojung.huh@microchip.com> -+M: UNGLinuxDriver@microchip.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml -+F: drivers/net/dsa/microchip/* -+F: include/linux/platform_data/microchip-ksz.h -+F: net/dsa/tag_ksz.c -+ -+MICROCHIP LAN743X ETHERNET DRIVER -+M: Bryan Whitehead <bryan.whitehead@microchip.com> -+M: UNGLinuxDriver@microchip.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/microchip/lan743x_* -+ -+MICROCHIP LCDFB DRIVER -+M: Nicolas Ferre <nicolas.ferre@microchip.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/atmel_lcdfb.c -+F: include/video/atmel_lcdc.h -+ -+MICROCHIP MCP16502 PMIC DRIVER -+M: Claudiu Beznea <claudiu.beznea@microchip.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: Documentation/devicetree/bindings/regulator/mcp16502-regulator.txt -+F: drivers/regulator/mcp16502.c -+ -+MICROCHIP MCP3911 ADC DRIVER -+M: Marcus Folkesson <marcus.folkesson@gmail.com> -+M: Kent Gustavsson <kent@minoris.se> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml -+F: drivers/iio/adc/mcp3911.c -+ -+MICROCHIP MMC/SD/SDIO MCI DRIVER -+M: Ludovic Desroches <ludovic.desroches@microchip.com> -+S: Maintained -+F: drivers/mmc/host/atmel-mci.c -+ -+MICROCHIP NAND DRIVER -+M: Tudor Ambarus <tudor.ambarus@microchip.com> -+L: linux-mtd@lists.infradead.org -+S: Supported -+F: Documentation/devicetree/bindings/mtd/atmel-nand.txt -+F: drivers/mtd/nand/raw/atmel/* -+ -+MICROCHIP PWM DRIVER -+M: Claudiu Beznea <claudiu.beznea@microchip.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-pwm@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/pwm/atmel-pwm.txt -+F: drivers/pwm/pwm-atmel.c -+ -+MICROCHIP SAMA5D2-COMPATIBLE ADC DRIVER -+M: Eugen Hristev <eugen.hristev@microchip.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/iio/adc/atmel,sama5d2-adc.yaml -+F: drivers/iio/adc/at91-sama5d2_adc.c -+F: include/dt-bindings/iio/adc/at91-sama5d2_adc.h -+ -+MICROCHIP SAMA5D2-COMPATIBLE SHUTDOWN CONTROLLER -+M: Claudiu Beznea <claudiu.beznea@microchip.com> -+S: Supported -+F: drivers/power/reset/at91-sama5d2_shdwc.c -+ -+MICROCHIP SPI DRIVER -+M: Tudor Ambarus <tudor.ambarus@microchip.com> -+S: Supported -+F: drivers/spi/spi-atmel.* -+ -+MICROCHIP SSC DRIVER -+M: Codrin Ciubotariu <codrin.ciubotariu@microchip.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: drivers/misc/atmel-ssc.c -+F: include/linux/atmel-ssc.h -+ -+MICROCHIP USB251XB DRIVER -+M: Richard Leitner <richard.leitner@skidata.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/usb/usb251xb.txt -+F: drivers/usb/misc/usb251xb.c -+ -+MICROCHIP USBA UDC DRIVER -+M: Cristian Birsan <cristian.birsan@microchip.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: drivers/usb/gadget/udc/atmel_usba_udc.* -+ -+MICROCHIP WILC1000 WIFI DRIVER -+M: Ajay Singh <ajay.kathat@microchip.com> -+M: Claudiu Beznea <claudiu.beznea@microchip.com> -+L: linux-wireless@vger.kernel.org -+S: Supported -+F: drivers/net/wireless/microchip/wilc1000/ -+ -+MICROSEMI MIPS SOCS -+M: Alexandre Belloni <alexandre.belloni@bootlin.com> -+M: UNGLinuxDriver@microchip.com -+L: linux-mips@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/mips/mscc.txt -+F: Documentation/devicetree/bindings/power/reset/ocelot-reset.txt -+F: arch/mips/boot/dts/mscc/ -+F: arch/mips/configs/generic/board-ocelot.config -+F: arch/mips/generic/board-ocelot.c -+ -+MICROSEMI SMART ARRAY SMARTPQI DRIVER (smartpqi) -+M: Don Brace <don.brace@microchip.com> -+L: storagedev@microchip.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: Documentation/scsi/smartpqi.rst -+F: drivers/scsi/smartpqi/Kconfig -+F: drivers/scsi/smartpqi/Makefile -+F: drivers/scsi/smartpqi/smartpqi*.[ch] -+F: include/linux/cciss*.h -+F: include/uapi/linux/cciss*.h -+ -+MICROSOFT SURFACE BATTERY AND AC DRIVERS -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: linux-pm@vger.kernel.org -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/power/supply/surface_battery.c -+F: drivers/power/supply/surface_charger.c -+ -+MICROSOFT SURFACE DTX DRIVER -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: Documentation/driver-api/surface_aggregator/clients/dtx.rst -+F: drivers/platform/surface/surface_dtx.c -+F: include/uapi/linux/surface_aggregator/dtx.h -+ -+MICROSOFT SURFACE GPE LID SUPPORT DRIVER -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/surface/surface_gpe.c -+ -+MICROSOFT SURFACE HARDWARE PLATFORM SUPPORT -+M: Hans de Goede <hdegoede@redhat.com> -+M: Mark Gross <mgross@linux.intel.com> -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git -+F: drivers/platform/surface/ -+ -+MICROSOFT SURFACE HID TRANSPORT DRIVER -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: linux-input@vger.kernel.org -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/hid/surface-hid/ -+ -+MICROSOFT SURFACE HOT-PLUG DRIVER -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/surface/surface_hotplug.c -+ -+MICROSOFT SURFACE PLATFORM PROFILE DRIVER -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/surface/surface_platform_profile.c -+ -+MICROSOFT SURFACE PRO 3 BUTTON DRIVER -+M: Chen Yu <yu.c.chen@intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Supported -+F: drivers/platform/surface/surfacepro3_button.c -+ -+MICROSOFT SURFACE SYSTEM AGGREGATOR SUBSYSTEM -+M: Maximilian Luz <luzmaximilian@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+W: https://github.com/linux-surface/surface-aggregator-module -+C: irc://irc.libera.chat/linux-surface -+F: Documentation/driver-api/surface_aggregator/ -+F: drivers/platform/surface/aggregator/ -+F: drivers/platform/surface/surface_acpi_notify.c -+F: drivers/platform/surface/surface_aggregator_cdev.c -+F: drivers/platform/surface/surface_aggregator_registry.c -+F: include/linux/surface_acpi_notify.h -+F: include/linux/surface_aggregator/ -+F: include/uapi/linux/surface_aggregator/ -+ -+MICROTEK X6 SCANNER -+M: Oliver Neukum <oliver@neukum.org> -+S: Maintained -+F: drivers/usb/image/microtek.* -+ -+MIKROTIK CRS3XX 98DX3236 BOARD SUPPORT -+M: Luka Kovacic <luka.kovacic@sartura.hr> -+M: Luka Perkov <luka.perkov@sartura.hr> -+S: Maintained -+F: arch/arm/boot/dts/armada-xp-crs305-1g-4s-bit.dts -+F: arch/arm/boot/dts/armada-xp-crs305-1g-4s.dts -+F: arch/arm/boot/dts/armada-xp-crs326-24g-2s-bit.dts -+F: arch/arm/boot/dts/armada-xp-crs326-24g-2s.dts -+F: arch/arm/boot/dts/armada-xp-crs328-4c-20s-4s-bit.dts -+F: arch/arm/boot/dts/armada-xp-crs328-4c-20s-4s.dts -+ -+MIPI CCS, SMIA AND SMIA++ IMAGE SENSOR DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml -+F: Documentation/driver-api/media/drivers/ccs/ -+F: Documentation/userspace-api/media/drivers/ccs.rst -+F: drivers/media/i2c/ccs-pll.c -+F: drivers/media/i2c/ccs-pll.h -+F: drivers/media/i2c/ccs/ -+F: include/uapi/linux/ccs.h -+F: include/uapi/linux/smiapp.h -+ -+MIPS -+M: Thomas Bogendoerfer <tsbogend@alpha.franken.de> -+L: linux-mips@vger.kernel.org -+S: Maintained -+W: http://www.linux-mips.org/ -+Q: https://patchwork.kernel.org/project/linux-mips/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git -+F: Documentation/devicetree/bindings/mips/ -+F: Documentation/mips/ -+F: arch/mips/ -+F: drivers/platform/mips/ -+ -+MIPS BOSTON DEVELOPMENT BOARD -+M: Paul Burton <paulburton@kernel.org> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/clock/img,boston-clock.txt -+F: arch/mips/boot/dts/img/boston.dts -+F: arch/mips/configs/generic/board-boston.config -+F: drivers/clk/imgtec/clk-boston.c -+F: include/dt-bindings/clock/boston-clock.h -+ -+MIPS CORE DRIVERS -+M: Thomas Bogendoerfer <tsbogend@alpha.franken.de> -+M: Serge Semin <fancer.lancer@gmail.com> -+L: linux-mips@vger.kernel.org -+S: Supported -+F: drivers/bus/mips_cdmm.c -+F: drivers/clocksource/mips-gic-timer.c -+F: drivers/cpuidle/cpuidle-cps.c -+F: drivers/irqchip/irq-mips-cpu.c -+F: drivers/irqchip/irq-mips-gic.c -+ -+MIPS GENERIC PLATFORM -+M: Paul Burton <paulburton@kernel.org> -+L: linux-mips@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/power/mti,mips-cpc.yaml -+F: arch/mips/generic/ -+F: arch/mips/tools/generic-board-config.sh -+ -+MIPS RINT INSTRUCTION EMULATION -+M: Aleksandar Markovic <aleksandar.markovic@mips.com> -+L: linux-mips@vger.kernel.org -+S: Supported -+F: arch/mips/math-emu/dp_rint.c -+F: arch/mips/math-emu/sp_rint.c -+ -+MIPS/LOONGSON1 ARCHITECTURE -+M: Keguang Zhang <keguang.zhang@gmail.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/include/asm/mach-loongson32/ -+F: arch/mips/loongson32/ -+F: drivers/*/*/*loongson1* -+F: drivers/*/*loongson1* -+ -+MIPS/LOONGSON2EF ARCHITECTURE -+M: Jiaxun Yang <jiaxun.yang@flygoat.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/include/asm/mach-loongson2ef/ -+F: arch/mips/loongson2ef/ -+F: drivers/cpufreq/loongson2_cpufreq.c -+ -+MIPS/LOONGSON64 ARCHITECTURE -+M: Huacai Chen <chenhuacai@kernel.org> -+M: Jiaxun Yang <jiaxun.yang@flygoat.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/include/asm/mach-loongson64/ -+F: arch/mips/loongson64/ -+F: drivers/irqchip/irq-loongson* -+F: drivers/platform/mips/cpu_hwmon.c -+ -+MIROSOUND PCM20 FM RADIO RECEIVER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-miropcm20* -+ -+MMP SUPPORT -+R: Lubomir Rintel <lkundrak@v3.sk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Odd Fixes -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/lkundrak/linux-mmp.git -+F: arch/arm/boot/dts/mmp* -+F: arch/arm/mach-mmp/ -+F: include/linux/soc/mmp/ -+ -+MMP USB PHY DRIVERS -+R: Lubomir Rintel <lkundrak@v3.sk> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/phy/marvell/phy-mmp3-usb.c -+F: drivers/phy/marvell/phy-pxa-usb.c -+ -+MMU GATHER AND TLB INVALIDATION -+M: Will Deacon <will@kernel.org> -+M: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com> -+M: Andrew Morton <akpm@linux-foundation.org> -+M: Nick Piggin <npiggin@gmail.com> -+M: Peter Zijlstra <peterz@infradead.org> -+L: linux-arch@vger.kernel.org -+L: linux-mm@kvack.org -+S: Maintained -+F: arch/*/include/asm/tlb.h -+F: include/asm-generic/tlb.h -+F: mm/mmu_gather.c -+ -+MN88472 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/mn88472* -+ -+MN88473 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/mn88473* -+ -+MODULE SUPPORT -+M: Luis Chamberlain <mcgrof@kernel.org> -+M: Jessica Yu <jeyu@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git modules-next -+F: include/linux/module.h -+F: kernel/module.c -+ -+MONOLITHIC POWER SYSTEM PMIC DRIVER -+M: Saravanan Sekar <sravanhome@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/mps,mp2629.yaml -+F: Documentation/devicetree/bindings/regulator/mps,mp*.yaml -+F: drivers/iio/adc/mp2629_adc.c -+F: drivers/mfd/mp2629.c -+F: drivers/power/supply/mp2629_charger.c -+F: drivers/regulator/mp5416.c -+F: drivers/regulator/mpq7920.c -+F: drivers/regulator/mpq7920.h -+F: include/linux/mfd/mp2629.h -+ -+MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER -+S: Orphan -+W: http://popies.net/meye/ -+F: Documentation/userspace-api/media/drivers/meye* -+F: drivers/media/pci/meye/ -+F: include/uapi/linux/meye.h -+ -+MOTORCOMM PHY DRIVER -+M: Peter Geis <pgwipeout@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/phy/motorcomm.c -+ -+MOXA SMARTIO/INDUSTIO/INTELLIO SERIAL CARD -+M: Jiri Slaby <jirislaby@kernel.org> -+S: Maintained -+F: Documentation/driver-api/serial/moxa-smartio.rst -+F: drivers/tty/mxser.* -+ -+MR800 AVERMEDIA USB FM RADIO DRIVER -+M: Alexey Klimov <klimov.linux@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-mr800.c -+ -+MRF24J40 IEEE 802.15.4 RADIO DRIVER -+M: Alan Ott <alan@signal11.us> -+L: linux-wpan@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/ieee802154/mrf24j40.txt -+F: drivers/net/ieee802154/mrf24j40.c -+ -+MSI LAPTOP SUPPORT -+M: "Lee, Chun-Yi" <jlee@suse.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/msi-laptop.c -+ -+MSI WMI SUPPORT -+L: platform-driver-x86@vger.kernel.org -+S: Orphan -+F: drivers/platform/x86/msi-wmi.c -+ -+MSI001 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/msi001* -+ -+MSI2500 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/usb/msi2500/ -+ -+MSTAR INTERRUPT CONTROLLER DRIVER -+M: Mark-PK Tsai <mark-pk.tsai@mediatek.com> -+M: Daniel Palmer <daniel@thingy.jp> -+S: Maintained -+F: Documentation/devicetree/bindings/interrupt-controller/mstar,mst-intc.yaml -+F: drivers/irqchip/irq-mst-intc.c -+ -+MSYSTEMS DISKONCHIP G3 MTD DRIVER -+M: Robert Jarzmik <robert.jarzmik@free.fr> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: drivers/mtd/devices/docg3* -+ -+MT9M032 APTINA SENSOR DRIVER -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/mt9m032.c -+F: include/media/i2c/mt9m032.h -+ -+MT9P031 APTINA CAMERA SENSOR -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/mt9p031.c -+F: include/media/i2c/mt9p031.h -+ -+MT9T001 APTINA CAMERA SENSOR -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/mt9t001.c -+F: include/media/i2c/mt9t001.h -+ -+MT9T112 APTINA CAMERA SENSOR -+M: Jacopo Mondi <jacopo@jmondi.org> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/mt9t112.c -+F: include/media/i2c/mt9t112.h -+ -+MT9V032 APTINA CAMERA SENSOR -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/mt9v032.txt -+F: drivers/media/i2c/mt9v032.c -+F: include/media/i2c/mt9v032.h -+ -+MT9V111 APTINA CAMERA SENSOR -+M: Jacopo Mondi <jacopo@jmondi.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml -+F: drivers/media/i2c/mt9v111.c -+ -+MULTIFUNCTION DEVICES (MFD) -+M: Lee Jones <lee.jones@linaro.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git -+F: Documentation/devicetree/bindings/mfd/ -+F: drivers/mfd/ -+F: include/dt-bindings/mfd/ -+F: include/linux/mfd/ -+ -+MULTIMEDIA CARD (MMC) ETC. OVER SPI -+S: Orphan -+F: drivers/mmc/host/mmc_spi.c -+F: include/linux/spi/mmc_spi.h -+ -+MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM -+M: Ulf Hansson <ulf.hansson@linaro.org> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git -+F: Documentation/devicetree/bindings/mmc/ -+F: drivers/mmc/ -+F: include/linux/mmc/ -+F: include/uapi/linux/mmc/ -+ -+MULTIPLEXER SUBSYSTEM -+M: Peter Rosin <peda@axentia.se> -+S: Maintained -+F: Documentation/ABI/testing/sysfs-class-mux* -+F: Documentation/devicetree/bindings/mux/ -+F: drivers/mux/ -+F: include/dt-bindings/mux/ -+F: include/linux/mux/ -+ -+MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER -+M: Bin Liu <b-liu@ti.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/musb/ -+ -+MXL301RF MEDIA DRIVER -+M: Akihiro Tsukada <tskd08@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+F: drivers/media/tuners/mxl301rf* -+ -+MXL5007T MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mkrufky/tuners.git -+F: drivers/media/tuners/mxl5007t.* -+ -+MXSFB DRM DRIVER -+M: Marek Vasut <marex@denx.de> -+M: Stefan Agner <stefan@agner.ch> -+L: dri-devel@lists.freedesktop.org -+S: Supported -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/devicetree/bindings/display/fsl,lcdif.yaml -+F: drivers/gpu/drm/mxsfb/ -+ -+MYLEX DAC960 PCI RAID Controller -+M: Hannes Reinecke <hare@kernel.org> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/myrb.* -+F: drivers/scsi/myrs.* -+ -+MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE) -+M: Chris Lee <christopher.lee@cspi.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: https://www.cspi.com/ethernet-products/support/downloads/ -+F: drivers/net/ethernet/myricom/myri10ge/ -+ -+NAND FLASH SUBSYSTEM -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+R: Richard Weinberger <richard@nod.at> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+W: http://www.linux-mtd.infradead.org/ -+Q: http://patchwork.ozlabs.org/project/linux-mtd/list/ -+C: irc://irc.oftc.net/mtd -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next -+F: drivers/mtd/nand/ -+F: include/linux/mtd/*nand*.h -+ -+NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER -+M: Daniel Mack <zonque@gmail.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.native-instruments.com -+F: sound/usb/caiaq/ -+ -+NATSEMI ETHERNET DRIVER (DP8381x) -+S: Orphan -+F: drivers/net/ethernet/natsemi/natsemi.c -+ -+NCR 5380 SCSI DRIVERS -+M: Finn Thain <fthain@linux-m68k.org> -+M: Michael Schmitz <schmitzmic@gmail.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: Documentation/scsi/g_NCR5380.rst -+F: drivers/scsi/NCR5380.* -+F: drivers/scsi/arm/cumana_1.c -+F: drivers/scsi/arm/oak.c -+F: drivers/scsi/atari_scsi.* -+F: drivers/scsi/dmx3191d.c -+F: drivers/scsi/g_NCR5380.* -+F: drivers/scsi/mac_scsi.* -+F: drivers/scsi/sun3_scsi.* -+F: drivers/scsi/sun3_scsi_vme.c -+ -+NCSI LIBRARY -+M: Samuel Mendoza-Jonas <sam@mendozajonas.com> -+S: Maintained -+F: net/ncsi/ -+ -+NCT6775 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/nct6775.rst -+F: drivers/hwmon/nct6775.c -+ -+NETDEVSIM -+M: Jakub Kicinski <kuba@kernel.org> -+S: Maintained -+F: drivers/net/netdevsim/* -+ -+NETEM NETWORK EMULATOR -+M: Stephen Hemminger <stephen@networkplumber.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: net/sched/sch_netem.c -+ -+NETERION 10GbE DRIVERS (s2io/vxge) -+M: Jon Mason <jdmason@kudzu.us> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/device_drivers/ethernet/neterion/s2io.rst -+F: Documentation/networking/device_drivers/ethernet/neterion/vxge.rst -+F: drivers/net/ethernet/neterion/ -+ -+NETFILTER -+M: Pablo Neira Ayuso <pablo@netfilter.org> -+M: Jozsef Kadlecsik <kadlec@netfilter.org> -+M: Florian Westphal <fw@strlen.de> -+L: netfilter-devel@vger.kernel.org -+L: coreteam@netfilter.org -+S: Maintained -+W: http://www.netfilter.org/ -+W: http://www.iptables.org/ -+W: http://www.nftables.org/ -+Q: http://patchwork.ozlabs.org/project/netfilter-devel/list/ -+C: irc://irc.libera.chat/netfilter -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git -+F: include/linux/netfilter* -+F: include/linux/netfilter/ -+F: include/net/netfilter/ -+F: include/uapi/linux/netfilter* -+F: include/uapi/linux/netfilter/ -+F: net/*/netfilter.c -+F: net/*/netfilter/ -+F: net/bridge/br_netfilter*.c -+F: net/netfilter/ -+ -+NETROM NETWORK LAYER -+M: Ralf Baechle <ralf@linux-mips.org> -+L: linux-hams@vger.kernel.org -+S: Maintained -+W: http://www.linux-ax25.org/ -+F: include/net/netrom.h -+F: include/uapi/linux/netrom.h -+F: net/netrom/ -+ -+NETRONIX EMBEDDED CONTROLLER -+M: Jonathan Neuschäfer <j.neuschaefer@gmx.net> -+S: Maintained -+F: Documentation/devicetree/bindings/mfd/netronix,ntxec.yaml -+F: drivers/mfd/ntxec.c -+F: drivers/pwm/pwm-ntxec.c -+F: drivers/rtc/rtc-ntxec.c -+F: include/linux/mfd/ntxec.h -+ -+NETRONOME ETHERNET DRIVERS -+M: Simon Horman <simon.horman@corigine.com> -+R: Jakub Kicinski <kuba@kernel.org> -+L: oss-drivers@corigine.com -+S: Maintained -+F: drivers/net/ethernet/netronome/ -+ -+NETWORK BLOCK DEVICE (NBD) -+M: Josef Bacik <josef@toxicpanda.com> -+L: linux-block@vger.kernel.org -+L: nbd@other.debian.org -+S: Maintained -+F: Documentation/admin-guide/blockdev/nbd.rst -+F: drivers/block/nbd.c -+F: include/trace/events/nbd.h -+F: include/uapi/linux/nbd.h -+ -+NETWORK DROP MONITOR -+M: Neil Horman <nhorman@tuxdriver.com> -+L: netdev@vger.kernel.org -+S: Maintained -+W: https://fedorahosted.org/dropwatch/ -+F: include/uapi/linux/net_dropmon.h -+F: net/core/drop_monitor.c -+ -+NETWORKING DRIVERS -+M: "David S. Miller" <davem@davemloft.net> -+M: Jakub Kicinski <kuba@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git -+F: Documentation/devicetree/bindings/net/ -+F: drivers/connector/ -+F: drivers/net/ -+F: include/linux/etherdevice.h -+F: include/linux/fcdevice.h -+F: include/linux/fddidevice.h -+F: include/linux/hippidevice.h -+F: include/linux/if_* -+F: include/linux/inetdevice.h -+F: include/linux/netdevice.h -+F: include/uapi/linux/if_* -+F: include/uapi/linux/netdevice.h -+ -+NETWORKING DRIVERS (WIRELESS) -+M: Kalle Valo <kvalo@codeaurora.org> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+Q: http://patchwork.kernel.org/project/linux-wireless/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git -+F: Documentation/devicetree/bindings/net/wireless/ -+F: drivers/net/wireless/ -+ -+NETWORKING [DSA] -+M: Andrew Lunn <andrew@lunn.ch> -+M: Vivien Didelot <vivien.didelot@gmail.com> -+M: Florian Fainelli <f.fainelli@gmail.com> -+M: Vladimir Oltean <olteanv@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/net/dsa/ -+F: drivers/net/dsa/ -+F: include/linux/dsa/ -+F: include/linux/platform_data/dsa.h -+F: include/net/dsa.h -+F: net/dsa/ -+ -+NETWORKING [GENERAL] -+M: "David S. Miller" <davem@davemloft.net> -+M: Jakub Kicinski <kuba@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+Q: https://patchwork.kernel.org/project/netdevbpf/list/ -+B: mailto:netdev@vger.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git -+F: Documentation/networking/ -+F: include/linux/in.h -+F: include/linux/net.h -+F: include/linux/netdevice.h -+F: include/net/ -+F: include/uapi/linux/in.h -+F: include/uapi/linux/net.h -+F: include/uapi/linux/net_namespace.h -+F: include/uapi/linux/netdevice.h -+F: lib/net_utils.c -+F: lib/random32.c -+F: net/ -+F: tools/testing/selftests/net/ -+ -+NETWORKING [IPSEC] -+M: Steffen Klassert <steffen.klassert@secunet.com> -+M: Herbert Xu <herbert@gondor.apana.org.au> -+M: "David S. Miller" <davem@davemloft.net> -+L: netdev@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git -+F: include/net/xfrm.h -+F: include/uapi/linux/xfrm.h -+F: net/ipv4/ah4.c -+F: net/ipv4/esp4* -+F: net/ipv4/ip_vti.c -+F: net/ipv4/ipcomp.c -+F: net/ipv4/xfrm* -+F: net/ipv6/ah6.c -+F: net/ipv6/esp6* -+F: net/ipv6/ip6_vti.c -+F: net/ipv6/ipcomp6.c -+F: net/ipv6/xfrm* -+F: net/key/ -+F: net/xfrm/ -+F: tools/testing/selftests/net/ipsec.c -+ -+NETWORKING [IPv4/IPv6] -+M: "David S. Miller" <davem@davemloft.net> -+M: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org> -+M: David Ahern <dsahern@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git -+F: arch/x86/net/* -+F: include/net/ip* -+F: net/ipv4/ -+F: net/ipv6/ -+ -+NETWORKING [LABELED] (NetLabel, Labeled IPsec, SECMARK) -+M: Paul Moore <paul@paul-moore.com> -+L: netdev@vger.kernel.org -+L: linux-security-module@vger.kernel.org -+S: Maintained -+W: https://github.com/netlabel -+F: Documentation/netlabel/ -+F: include/net/calipso.h -+F: include/net/cipso_ipv4.h -+F: include/net/netlabel.h -+F: include/uapi/linux/netfilter/xt_CONNSECMARK.h -+F: include/uapi/linux/netfilter/xt_SECMARK.h -+F: net/ipv4/cipso_ipv4.c -+F: net/ipv6/calipso.c -+F: net/netfilter/xt_CONNSECMARK.c -+F: net/netfilter/xt_SECMARK.c -+F: net/netlabel/ -+ -+NETWORKING [MPTCP] -+M: Mat Martineau <mathew.j.martineau@linux.intel.com> -+M: Matthieu Baerts <matthieu.baerts@tessares.net> -+L: netdev@vger.kernel.org -+L: mptcp@lists.linux.dev -+S: Maintained -+W: https://github.com/multipath-tcp/mptcp_net-next/wiki -+B: https://github.com/multipath-tcp/mptcp_net-next/issues -+F: Documentation/networking/mptcp-sysctl.rst -+F: include/net/mptcp.h -+F: include/trace/events/mptcp.h -+F: include/uapi/linux/mptcp.h -+F: net/mptcp/ -+F: tools/testing/selftests/net/mptcp/ -+ -+NETWORKING [TCP] -+M: Eric Dumazet <edumazet@google.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: include/linux/tcp.h -+F: include/net/tcp.h -+F: include/trace/events/tcp.h -+F: include/uapi/linux/tcp.h -+F: net/ipv4/syncookies.c -+F: net/ipv4/tcp*.c -+F: net/ipv6/syncookies.c -+F: net/ipv6/tcp*.c -+ -+NETWORKING [TLS] -+M: Boris Pismenny <borisp@nvidia.com> -+M: John Fastabend <john.fastabend@gmail.com> -+M: Daniel Borkmann <daniel@iogearbox.net> -+M: Jakub Kicinski <kuba@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: include/net/tls.h -+F: include/uapi/linux/tls.h -+F: net/tls/* -+ -+NETWORKING [WIRELESS] -+L: linux-wireless@vger.kernel.org -+Q: http://patchwork.kernel.org/project/linux-wireless/list/ -+ -+NETXEN (1/10) GbE SUPPORT -+M: Manish Chopra <manishc@marvell.com> -+M: Rahul Verma <rahulv@marvell.com> -+M: GR-Linux-NIC-Dev@marvell.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/qlogic/netxen/ -+ -+NET_FAILOVER MODULE -+M: Sridhar Samudrala <sridhar.samudrala@intel.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/net_failover.rst -+F: drivers/net/net_failover.c -+F: include/net/net_failover.h -+ -+NEXTHOP -+M: David Ahern <dsahern@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: include/net/netns/nexthop.h -+F: include/net/nexthop.h -+F: include/uapi/linux/nexthop.h -+F: net/ipv4/nexthop.c -+ -+NFC SUBSYSTEM -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+L: linux-nfc@lists.01.org (subscribers-only) -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/nfc/ -+F: drivers/nfc/ -+F: include/linux/platform_data/nfcmrvl.h -+F: include/net/nfc/ -+F: include/uapi/linux/nfc.h -+F: net/nfc/ -+ -+NFC VIRTUAL NCI DEVICE DRIVER -+M: Bongsu Jeon <bongsu.jeon@samsung.com> -+L: netdev@vger.kernel.org -+L: linux-nfc@lists.01.org (subscribers-only) -+S: Supported -+F: drivers/nfc/virtual_ncidev.c -+F: tools/testing/selftests/nci/ -+ -+NFS, SUNRPC, AND LOCKD CLIENTS -+M: Trond Myklebust <trond.myklebust@hammerspace.com> -+M: Anna Schumaker <anna.schumaker@netapp.com> -+L: linux-nfs@vger.kernel.org -+S: Maintained -+W: http://client.linux-nfs.org -+T: git git://git.linux-nfs.org/projects/trondmy/linux-nfs.git -+F: fs/lockd/ -+F: fs/nfs/ -+F: fs/nfs_common/ -+F: include/linux/lockd/ -+F: include/linux/nfs* -+F: include/linux/sunrpc/ -+F: include/uapi/linux/nfs* -+F: include/uapi/linux/sunrpc/ -+F: net/sunrpc/ -+F: Documentation/filesystems/nfs/ -+ -+NILFS2 FILESYSTEM -+M: Ryusuke Konishi <konishi.ryusuke@gmail.com> -+L: linux-nilfs@vger.kernel.org -+S: Supported -+W: https://nilfs.sourceforge.io/ -+W: https://nilfs.osdn.jp/ -+T: git git://github.com/konis/nilfs2.git -+F: Documentation/filesystems/nilfs2.rst -+F: fs/nilfs2/ -+F: include/trace/events/nilfs2.h -+F: include/uapi/linux/nilfs2_api.h -+F: include/uapi/linux/nilfs2_ondisk.h -+ -+NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER -+M: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp> -+S: Maintained -+W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ -+F: Documentation/scsi/NinjaSCSI.rst -+F: drivers/scsi/pcmcia/nsp_* -+ -+NINJA SCSI-32Bi/UDE PCI/CARDBUS SCSI HOST ADAPTER DRIVER -+M: GOTO Masanori <gotom@debian.or.jp> -+M: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp> -+S: Maintained -+W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ -+F: Documentation/scsi/NinjaSCSI.rst -+F: drivers/scsi/nsp32* -+ -+NIOS2 ARCHITECTURE -+M: Dinh Nguyen <dinguyen@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux.git -+F: arch/nios2/ -+ -+NITRO ENCLAVES (NE) -+M: Andra Paraschiv <andraprs@amazon.com> -+M: Alexandru Vasile <lexnv@amazon.com> -+M: Alexandru Ciobotaru <alcioa@amazon.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+W: https://aws.amazon.com/ec2/nitro/nitro-enclaves/ -+F: Documentation/virt/ne_overview.rst -+F: drivers/virt/nitro_enclaves/ -+F: include/linux/nitro_enclaves.h -+F: include/uapi/linux/nitro_enclaves.h -+F: samples/nitro_enclaves/ -+ -+NOHZ, DYNTICKS SUPPORT -+M: Frederic Weisbecker <fweisbec@gmail.com> -+M: Thomas Gleixner <tglx@linutronix.de> -+M: Ingo Molnar <mingo@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/nohz -+F: include/linux/sched/nohz.h -+F: include/linux/tick.h -+F: kernel/time/tick*.* -+ -+NOKIA N900 CAMERA SUPPORT (ET8EK8 SENSOR, AD5820 FOCUS) -+M: Pavel Machek <pavel@ucw.cz> -+M: Sakari Ailus <sakari.ailus@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/ad5820.c -+F: drivers/media/i2c/et8ek8 -+ -+NOKIA N900 POWER SUPPLY DRIVERS -+R: Pali Rohár <pali@kernel.org> -+F: drivers/power/supply/bq2415x_charger.c -+F: drivers/power/supply/bq27xxx_battery.c -+F: drivers/power/supply/bq27xxx_battery_i2c.c -+F: drivers/power/supply/isp1704_charger.c -+F: drivers/power/supply/rx51_battery.c -+F: include/linux/power/bq2415x_charger.h -+F: include/linux/power/bq27xxx_battery.h -+ -+NOLIBC HEADER FILE -+M: Willy Tarreau <w@1wt.eu> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git -+F: tools/include/nolibc/ -+ -+NSDEPS -+M: Matthias Maennich <maennich@google.com> -+S: Maintained -+F: Documentation/core-api/symbol-namespaces.rst -+F: scripts/nsdeps -+ -+NTB AMD DRIVER -+M: Sanjay R Mehta <sanju.mehta@amd.com> -+M: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> -+L: linux-ntb@googlegroups.com -+S: Supported -+F: drivers/ntb/hw/amd/ -+ -+NTB DRIVER CORE -+M: Jon Mason <jdmason@kudzu.us> -+M: Dave Jiang <dave.jiang@intel.com> -+M: Allen Hubbe <allenbh@gmail.com> -+L: linux-ntb@googlegroups.com -+S: Supported -+W: https://github.com/jonmason/ntb/wiki -+T: git git://github.com/jonmason/ntb.git -+F: drivers/net/ntb_netdev.c -+F: drivers/ntb/ -+F: include/linux/ntb.h -+F: include/linux/ntb_transport.h -+F: tools/testing/selftests/ntb/ -+ -+NTB IDT DRIVER -+M: Serge Semin <fancer.lancer@gmail.com> -+L: linux-ntb@googlegroups.com -+S: Supported -+F: drivers/ntb/hw/idt/ -+ -+NTB INTEL DRIVER -+M: Dave Jiang <dave.jiang@intel.com> -+L: linux-ntb@googlegroups.com -+S: Supported -+W: https://github.com/davejiang/linux/wiki -+T: git https://github.com/davejiang/linux.git -+F: drivers/ntb/hw/intel/ -+ -+NTFS FILESYSTEM -+M: Anton Altaparmakov <anton@tuxera.com> -+L: linux-ntfs-dev@lists.sourceforge.net -+S: Supported -+W: http://www.tuxera.com/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/aia21/ntfs.git -+F: Documentation/filesystems/ntfs.rst -+F: fs/ntfs/ -+ -+NTFS3 FILESYSTEM -+M: Konstantin Komarov <almaz.alexandrovich@paragon-software.com> -+L: ntfs3@lists.linux.dev -+S: Supported -+W: http://www.paragon-software.com/ -+T: git https://github.com/Paragon-Software-Group/linux-ntfs3.git -+F: Documentation/filesystems/ntfs3.rst -+F: fs/ntfs3/ -+ -+NUBUS SUBSYSTEM -+M: Finn Thain <fthain@linux-m68k.org> -+L: linux-m68k@lists.linux-m68k.org -+S: Maintained -+F: arch/*/include/asm/nubus.h -+F: drivers/nubus/ -+F: include/linux/nubus.h -+F: include/uapi/linux/nubus.h -+ -+NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER -+M: Antonino Daplas <adaplas@gmail.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/nvidia/ -+F: drivers/video/fbdev/riva/ -+ -+NVM EXPRESS DRIVER -+M: Keith Busch <kbusch@kernel.org> -+M: Jens Axboe <axboe@fb.com> -+M: Christoph Hellwig <hch@lst.de> -+M: Sagi Grimberg <sagi@grimberg.me> -+L: linux-nvme@lists.infradead.org -+S: Supported -+W: http://git.infradead.org/nvme.git -+T: git://git.infradead.org/nvme.git -+F: drivers/nvme/host/ -+F: include/linux/nvme.h -+F: include/uapi/linux/nvme_ioctl.h -+ -+NVM EXPRESS FC TRANSPORT DRIVERS -+M: James Smart <james.smart@broadcom.com> -+L: linux-nvme@lists.infradead.org -+S: Supported -+F: drivers/nvme/host/fc.c -+F: drivers/nvme/target/fc.c -+F: drivers/nvme/target/fcloop.c -+F: include/linux/nvme-fc-driver.h -+F: include/linux/nvme-fc.h -+ -+NVM EXPRESS TARGET DRIVER -+M: Christoph Hellwig <hch@lst.de> -+M: Sagi Grimberg <sagi@grimberg.me> -+M: Chaitanya Kulkarni <kch@nvidia.com> -+L: linux-nvme@lists.infradead.org -+S: Supported -+W: http://git.infradead.org/nvme.git -+T: git://git.infradead.org/nvme.git -+F: drivers/nvme/target/ -+ -+NVMEM FRAMEWORK -+M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/srini/nvmem.git -+F: Documentation/ABI/stable/sysfs-bus-nvmem -+F: Documentation/devicetree/bindings/nvmem/ -+F: drivers/nvmem/ -+F: include/linux/nvmem-consumer.h -+F: include/linux/nvmem-provider.h -+ -+NXP C45 TJA11XX PHY DRIVER -+M: Radu Pirea <radu-nicolae.pirea@oss.nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/phy/nxp-c45-tja11xx.c -+ -+NXP FSPI DRIVER -+M: Ashish Kumar <ashish.kumar@nxp.com> -+R: Yogesh Gaur <yogeshgaur.83@gmail.com> -+L: linux-spi@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/spi/spi-nxp-fspi.txt -+F: drivers/spi/spi-nxp-fspi.c -+ -+NXP FXAS21002C DRIVER -+M: Rui Miguel Silva <rmfrfs@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/gyroscope/nxp,fxas21002c.yaml -+F: drivers/iio/gyro/fxas21002c.h -+F: drivers/iio/gyro/fxas21002c_core.c -+F: drivers/iio/gyro/fxas21002c_i2c.c -+F: drivers/iio/gyro/fxas21002c_spi.c -+ -+NXP i.MX CLOCK DRIVERS -+M: Abel Vesa <abel.vesa@nxp.com> -+L: linux-clk@vger.kernel.org -+L: linux-imx@nxp.com -+S: Maintained -+F: drivers/clk/imx/ -+ -+NXP i.MX 8MQ DCSS DRIVER -+M: Laurentiu Palcu <laurentiu.palcu@oss.nxp.com> -+R: Lucas Stach <l.stach@pengutronix.de> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+F: Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml -+F: drivers/gpu/drm/imx/dcss/ -+ -+NXP PF8100/PF8121A/PF8200 PMIC REGULATOR DEVICE DRIVER -+M: Jagan Teki <jagan@amarulasolutions.com> -+S: Maintained -+F: Documentation/devicetree/bindings/regulator/nxp,pf8x00-regulator.yaml -+F: drivers/regulator/pf8x00-regulator.c -+ -+NXP PTN5150A CC LOGIC AND EXTCON DRIVER -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml -+F: drivers/extcon/extcon-ptn5150.c -+ -+NXP SGTL5000 DRIVER -+M: Fabio Estevam <festevam@gmail.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/sgtl5000.yaml -+F: sound/soc/codecs/sgtl5000* -+ -+NXP SJA1105 ETHERNET SWITCH DRIVER -+M: Vladimir Oltean <olteanv@gmail.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/net/dsa/sja1105 -+F: drivers/net/pcs/pcs-xpcs-nxp.c -+ -+NXP TDA998X DRM DRIVER -+M: Russell King <linux@armlinux.org.uk> -+S: Maintained -+T: git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-tda998x-devel -+T: git git://git.armlinux.org.uk/~rmk/linux-arm.git drm-tda998x-fixes -+F: drivers/gpu/drm/i2c/tda998x_drv.c -+F: include/drm/i2c/tda998x.h -+F: include/dt-bindings/display/tda998x.h -+K: "nxp,tda998x" -+ -+NXP TFA9879 DRIVER -+M: Peter Rosin <peda@axentia.se> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/tfa9879.txt -+F: sound/soc/codecs/tfa9879* -+ -+NXP/Goodix TFA989X (TFA1) DRIVER -+M: Stephan Gerhold <stephan@gerhold.net> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/nxp,tfa989x.yaml -+F: sound/soc/codecs/tfa989x.c -+ -+NXP-NCI NFC DRIVER -+R: Charles Gorand <charles.gorand@effinnov.com> -+L: linux-nfc@lists.01.org (subscribers-only) -+S: Supported -+F: drivers/nfc/nxp-nci -+ -+NXP i.MX 8QXP/8QM JPEG V4L2 DRIVER -+M: Mirela Rabulea <mirela.rabulea@nxp.com> -+R: NXP Linux Team <linux-imx@nxp.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/imx8-jpeg.yaml -+F: drivers/media/platform/imx-jpeg -+ -+NZXT-KRAKEN2 HARDWARE MONITORING DRIVER -+M: Jonas Malaco <jonas@protocubo.io> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/nzxt-kraken2.rst -+F: drivers/hwmon/nzxt-kraken2.c -+ -+OBJAGG -+M: Jiri Pirko <jiri@nvidia.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: include/linux/objagg.h -+F: lib/objagg.c -+F: lib/test_objagg.c -+ -+OBJTOOL -+M: Josh Poimboeuf <jpoimboe@redhat.com> -+M: Peter Zijlstra <peterz@infradead.org> -+S: Supported -+F: tools/objtool/ -+F: include/linux/objtool.h -+ -+OCELOT ETHERNET SWITCH DRIVER -+M: Vladimir Oltean <vladimir.oltean@nxp.com> -+M: Claudiu Manoil <claudiu.manoil@nxp.com> -+M: Alexandre Belloni <alexandre.belloni@bootlin.com> -+M: UNGLinuxDriver@microchip.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/dsa/ocelot/* -+F: drivers/net/ethernet/mscc/ -+F: include/soc/mscc/ocelot* -+F: net/dsa/tag_ocelot.c -+F: net/dsa/tag_ocelot_8021q.c -+F: tools/testing/selftests/drivers/net/ocelot/* -+ -+OCXL (Open Coherent Accelerator Processor Interface OpenCAPI) DRIVER -+M: Frederic Barrat <fbarrat@linux.ibm.com> -+M: Andrew Donnellan <ajd@linux.ibm.com> -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+F: Documentation/userspace-api/accelerators/ocxl.rst -+F: arch/powerpc/include/asm/pnv-ocxl.h -+F: arch/powerpc/platforms/powernv/ocxl.c -+F: drivers/misc/ocxl/ -+F: include/misc/ocxl* -+F: include/uapi/misc/ocxl.h -+ -+OMAP AUDIO SUPPORT -+M: Peter Ujfalusi <peter.ujfalusi@gmail.com> -+M: Jarkko Nikula <jarkko.nikula@bitmer.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: sound/soc/ti/n810.c -+F: sound/soc/ti/omap* -+F: sound/soc/ti/rx51.c -+F: sound/soc/ti/sdma-pcm.* -+ -+OMAP CLOCK FRAMEWORK SUPPORT -+M: Paul Walmsley <paul@pwsan.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: arch/arm/*omap*/*clock* -+ -+OMAP DEVICE TREE SUPPORT -+M: Benoît Cousson <bcousson@baylibre.com> -+M: Tony Lindgren <tony@atomide.com> -+L: linux-omap@vger.kernel.org -+L: devicetree@vger.kernel.org -+S: Maintained -+F: arch/arm/boot/dts/*am3* -+F: arch/arm/boot/dts/*am4* -+F: arch/arm/boot/dts/*am5* -+F: arch/arm/boot/dts/*dra7* -+F: arch/arm/boot/dts/*omap* -+F: arch/arm/boot/dts/logicpd-som-lv* -+F: arch/arm/boot/dts/logicpd-torpedo* -+ -+OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2) -+L: linux-omap@vger.kernel.org -+L: linux-fbdev@vger.kernel.org -+S: Orphan -+F: Documentation/arm/omap/dss.rst -+F: drivers/video/fbdev/omap2/ -+ -+OMAP FRAMEBUFFER SUPPORT -+L: linux-fbdev@vger.kernel.org -+L: linux-omap@vger.kernel.org -+S: Orphan -+F: drivers/video/fbdev/omap/ -+ -+OMAP GENERAL PURPOSE MEMORY CONTROLLER SUPPORT -+M: Roger Quadros <rogerq@kernel.org> -+M: Tony Lindgren <tony@atomide.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: arch/arm/mach-omap2/*gpmc* -+F: drivers/memory/omap-gpmc.c -+ -+OMAP GPIO DRIVER -+M: Grygorii Strashko <grygorii.strashko@ti.com> -+M: Santosh Shilimkar <ssantosh@kernel.org> -+M: Kevin Hilman <khilman@kernel.org> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/gpio/ti,omap-gpio.yaml -+F: drivers/gpio/gpio-omap.c -+ -+OMAP HARDWARE SPINLOCK SUPPORT -+M: Ohad Ben-Cohen <ohad@wizery.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: drivers/hwspinlock/omap_hwspinlock.c -+ -+OMAP HS MMC SUPPORT -+L: linux-mmc@vger.kernel.org -+L: linux-omap@vger.kernel.org -+S: Orphan -+F: drivers/mmc/host/omap_hsmmc.c -+ -+OMAP HWMOD DATA -+M: Paul Walmsley <paul@pwsan.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: arch/arm/mach-omap2/omap_hwmod*data* -+ -+OMAP HWMOD SUPPORT -+M: Benoît Cousson <bcousson@baylibre.com> -+M: Paul Walmsley <paul@pwsan.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: arch/arm/mach-omap2/omap_hwmod.* -+ -+OMAP I2C DRIVER -+M: Vignesh R <vigneshr@ti.com> -+L: linux-omap@vger.kernel.org -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/ti,omap4-i2c.yaml -+F: drivers/i2c/busses/i2c-omap.c -+ -+OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS) -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/ti,omap3isp.txt -+F: drivers/media/platform/omap3isp/ -+F: drivers/staging/media/omap4iss/ -+ -+OMAP MMC SUPPORT -+M: Aaro Koskinen <aaro.koskinen@iki.fi> -+L: linux-omap@vger.kernel.org -+S: Odd Fixes -+F: drivers/mmc/host/omap.c -+ -+OMAP POWER MANAGEMENT SUPPORT -+M: Kevin Hilman <khilman@kernel.org> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: arch/arm/*omap*/*pm* -+F: drivers/cpufreq/omap-cpufreq.c -+ -+OMAP POWERDOMAIN SOC ADAPTATION LAYER SUPPORT -+M: Rajendra Nayak <rnayak@codeaurora.org> -+M: Paul Walmsley <paul@pwsan.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: arch/arm/mach-omap2/prm* -+ -+OMAP RANDOM NUMBER GENERATOR SUPPORT -+M: Deepak Saxena <dsaxena@plexity.net> -+S: Maintained -+F: drivers/char/hw_random/omap-rng.c -+ -+OMAP USB SUPPORT -+L: linux-usb@vger.kernel.org -+L: linux-omap@vger.kernel.org -+S: Orphan -+F: arch/arm/*omap*/usb* -+F: drivers/usb/*/*omap* -+ -+OMAP/NEWFLOW NANOBONE MACHINE SUPPORT -+M: Mark Jackson <mpfj@newflow.co.uk> -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: arch/arm/boot/dts/am335x-nano.dts -+ -+OMAP1 SUPPORT -+M: Aaro Koskinen <aaro.koskinen@iki.fi> -+M: Tony Lindgren <tony@atomide.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+Q: http://patchwork.kernel.org/project/linux-omap/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git -+F: arch/arm/configs/omap1_defconfig -+F: arch/arm/mach-omap1/ -+F: arch/arm/plat-omap/ -+F: drivers/i2c/busses/i2c-omap.c -+F: include/linux/platform_data/ams-delta-fiq.h -+F: include/linux/platform_data/i2c-omap.h -+ -+OMAP2+ SUPPORT -+M: Tony Lindgren <tony@atomide.com> -+L: linux-omap@vger.kernel.org -+S: Maintained -+W: http://www.muru.com/linux/omap/ -+W: http://linux.omap.com/ -+Q: http://patchwork.kernel.org/project/linux-omap/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git -+F: arch/arm/configs/omap2plus_defconfig -+F: arch/arm/mach-omap2/ -+F: arch/arm/plat-omap/ -+F: drivers/bus/ti-sysc.c -+F: drivers/i2c/busses/i2c-omap.c -+F: drivers/irqchip/irq-omap-intc.c -+F: drivers/mfd/*omap*.c -+F: drivers/mfd/menelaus.c -+F: drivers/mfd/palmas.c -+F: drivers/mfd/tps65217.c -+F: drivers/mfd/tps65218.c -+F: drivers/mfd/tps65910.c -+F: drivers/mfd/twl-core.[ch] -+F: drivers/mfd/twl4030*.c -+F: drivers/mfd/twl6030*.c -+F: drivers/mfd/twl6040*.c -+F: drivers/regulator/palmas-regulator*.c -+F: drivers/regulator/pbias-regulator.c -+F: drivers/regulator/tps65217-regulator.c -+F: drivers/regulator/tps65218-regulator.c -+F: drivers/regulator/tps65910-regulator.c -+F: drivers/regulator/twl-regulator.c -+F: drivers/regulator/twl6030-regulator.c -+F: include/linux/platform_data/i2c-omap.h -+F: include/linux/platform_data/ti-sysc.h -+ -+OMFS FILESYSTEM -+M: Bob Copeland <me@bobcopeland.com> -+L: linux-karma-devel@lists.sourceforge.net -+S: Maintained -+F: Documentation/filesystems/omfs.rst -+F: fs/omfs/ -+ -+OMNIKEY CARDMAN 4000 DRIVER -+M: Harald Welte <laforge@gnumonks.org> -+S: Maintained -+F: drivers/char/pcmcia/cm4000_cs.c -+F: include/linux/cm4000_cs.h -+F: include/uapi/linux/cm4000_cs.h -+ -+OMNIKEY CARDMAN 4040 DRIVER -+M: Harald Welte <laforge@gnumonks.org> -+S: Maintained -+F: drivers/char/pcmcia/cm4040_cs.* -+ -+OMNIVISION OV02A10 SENSOR DRIVER -+M: Dongchun Zhu <dongchun.zhu@mediatek.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml -+F: drivers/media/i2c/ov02a10.c -+ -+OMNIVISION OV13858 SENSOR DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov13858.c -+ -+OMNIVISION OV2680 SENSOR DRIVER -+M: Rui Miguel Silva <rmfrfs@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml -+F: drivers/media/i2c/ov2680.c -+ -+OMNIVISION OV2685 SENSOR DRIVER -+M: Shunqian Zheng <zhengsq@rock-chips.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov2685.c -+ -+OMNIVISION OV2740 SENSOR DRIVER -+M: Tianshu Qiu <tian.shu.qiu@intel.com> -+R: Shawn Tu <shawnx.tu@intel.com> -+R: Bingbu Cao <bingbu.cao@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov2740.c -+ -+OMNIVISION OV5640 SENSOR DRIVER -+M: Steve Longerbeam <slongerbeam@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov5640.c -+ -+OMNIVISION OV5647 SENSOR DRIVER -+M: Dave Stevenson <dave.stevenson@raspberrypi.com> -+M: Jacopo Mondi <jacopo@jmondi.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml -+F: drivers/media/i2c/ov5647.c -+ -+OMNIVISION OV5670 SENSOR DRIVER -+M: Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com> -+M: Hyungwoo Yang <hyungwoo.yang@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov5670.c -+ -+OMNIVISION OV5675 SENSOR DRIVER -+M: Shawn Tu <shawnx.tu@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov5675.c -+ -+OMNIVISION OV5695 SENSOR DRIVER -+M: Shunqian Zheng <zhengsq@rock-chips.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov5695.c -+ -+OMNIVISION OV7670 SENSOR DRIVER -+L: linux-media@vger.kernel.org -+S: Orphan -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ov7670.txt -+F: drivers/media/i2c/ov7670.c -+ -+OMNIVISION OV772x SENSOR DRIVER -+M: Jacopo Mondi <jacopo@jmondi.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml -+F: drivers/media/i2c/ov772x.c -+F: include/media/i2c/ov772x.h -+ -+OMNIVISION OV7740 SENSOR DRIVER -+M: Wenyou Yang <wenyou.yang@microchip.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ov7740.txt -+F: drivers/media/i2c/ov7740.c -+ -+OMNIVISION OV8856 SENSOR DRIVER -+M: Dongchun Zhu <dongchun.zhu@mediatek.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ov8856.yaml -+F: drivers/media/i2c/ov8856.c -+ -+OMNIVISION OV9282 SENSOR DRIVER -+M: Paul J. Murphy <paul.j.murphy@intel.com> -+M: Daniele Alessandrelli <daniele.alessandrelli@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ovti,ov9282.yaml -+F: drivers/media/i2c/ov9282.c -+ -+OMNIVISION OV9640 SENSOR DRIVER -+M: Petr Cvek <petrcvekcz@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/ov9640.* -+ -+OMNIVISION OV9650 SENSOR DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+R: Akinobu Mita <akinobu.mita@gmail.com> -+R: Sylwester Nawrocki <s.nawrocki@samsung.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/ov9650.txt -+F: drivers/media/i2c/ov9650.c -+ -+OMNIVISION OV9734 SENSOR DRIVER -+M: Tianshu Qiu <tian.shu.qiu@intel.com> -+R: Bingbu Cao <bingbu.cao@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/ov9734.c -+ -+ONENAND FLASH DRIVER -+M: Kyungmin Park <kyungmin.park@samsung.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: drivers/mtd/nand/onenand/ -+F: include/linux/mtd/onenand*.h -+ -+ONION OMEGA2+ BOARD -+M: Harvey Hunt <harveyhuntnexus@gmail.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/boot/dts/ralink/omega2p.dts -+ -+OP-TEE DRIVER -+M: Jens Wiklander <jens.wiklander@linaro.org> -+L: op-tee@lists.trustedfirmware.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-optee-devices -+F: drivers/tee/optee/ -+ -+OP-TEE RANDOM NUMBER GENERATOR (RNG) DRIVER -+M: Sumit Garg <sumit.garg@linaro.org> -+L: op-tee@lists.trustedfirmware.org -+S: Maintained -+F: drivers/char/hw_random/optee-rng.c -+ -+OPA-VNIC DRIVER -+M: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com> -+M: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/ulp/opa_vnic -+ -+OPEN FIRMWARE AND DEVICE TREE OVERLAYS -+M: Pantelis Antoniou <pantelis.antoniou@konsulko.com> -+M: Frank Rowand <frowand.list@gmail.com> -+L: devicetree@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/dynamic-resolution-notes.rst -+F: Documentation/devicetree/overlay-notes.rst -+F: drivers/of/overlay.c -+F: drivers/of/resolver.c -+K: of_overlay_notifier_ -+ -+OPEN FIRMWARE AND FLATTENED DEVICE TREE -+M: Rob Herring <robh+dt@kernel.org> -+M: Frank Rowand <frowand.list@gmail.com> -+L: devicetree@vger.kernel.org -+S: Maintained -+W: http://www.devicetree.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git -+F: Documentation/ABI/testing/sysfs-firmware-ofw -+F: drivers/of/ -+F: include/linux/of*.h -+F: scripts/dtc/ -+ -+OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS -+M: Rob Herring <robh+dt@kernel.org> -+L: devicetree@vger.kernel.org -+S: Maintained -+Q: http://patchwork.ozlabs.org/project/devicetree-bindings/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git -+F: Documentation/devicetree/ -+F: arch/*/boot/dts/ -+F: include/dt-bindings/ -+ -+OPENCOMPUTE PTP CLOCK DRIVER -+M: Jonathan Lemon <jonathan.lemon@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/ptp/ptp_ocp.c -+ -+OPENCORES I2C BUS DRIVER -+M: Peter Korsgaard <peter@korsgaard.com> -+M: Andrew Lunn <andrew@lunn.ch> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-ocores.txt -+F: Documentation/i2c/busses/i2c-ocores.rst -+F: drivers/i2c/busses/i2c-ocores.c -+F: include/linux/platform_data/i2c-ocores.h -+ -+OPENRISC ARCHITECTURE -+M: Jonas Bonn <jonas@southpole.se> -+M: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> -+M: Stafford Horne <shorne@gmail.com> -+L: openrisc@lists.librecores.org -+S: Maintained -+W: http://openrisc.io -+T: git git://github.com/openrisc/linux.git -+F: Documentation/devicetree/bindings/openrisc/ -+F: Documentation/openrisc/ -+F: arch/openrisc/ -+F: drivers/irqchip/irq-ompic.c -+F: drivers/irqchip/irq-or1k-* -+ -+OPENVSWITCH -+M: Pravin B Shelar <pshelar@ovn.org> -+L: netdev@vger.kernel.org -+L: dev@openvswitch.org -+S: Maintained -+W: http://openvswitch.org -+F: include/uapi/linux/openvswitch.h -+F: net/openvswitch/ -+ -+OPERATING PERFORMANCE POINTS (OPP) -+M: Viresh Kumar <vireshk@kernel.org> -+M: Nishanth Menon <nm@ti.com> -+M: Stephen Boyd <sboyd@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git -+F: Documentation/devicetree/bindings/opp/ -+F: Documentation/power/opp.rst -+F: drivers/opp/ -+F: include/linux/pm_opp.h -+ -+OPL4 DRIVER -+M: Clemens Ladisch <clemens@ladisch.de> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: sound/drivers/opl4/ -+ -+ORACLE CLUSTER FILESYSTEM 2 (OCFS2) -+M: Mark Fasheh <mark@fasheh.com> -+M: Joel Becker <jlbec@evilplan.org> -+M: Joseph Qi <joseph.qi@linux.alibaba.com> -+L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers) -+S: Supported -+W: http://ocfs2.wiki.kernel.org -+F: Documentation/filesystems/dlmfs.rst -+F: Documentation/filesystems/ocfs2.rst -+F: fs/ocfs2/ -+ -+ORANGEFS FILESYSTEM -+M: Mike Marshall <hubcap@omnibond.com> -+R: Martin Brandenburg <martin@omnibond.com> -+L: devel@lists.orangefs.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git -+F: Documentation/filesystems/orangefs.rst -+F: fs/orangefs/ -+ -+ORINOCO DRIVER -+L: linux-wireless@vger.kernel.org -+S: Orphan -+W: https://wireless.wiki.kernel.org/en/users/Drivers/orinoco -+W: http://www.nongnu.org/orinoco/ -+F: drivers/net/wireless/intersil/orinoco/ -+ -+OV2659 OMNIVISION SENSOR DRIVER -+M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git -+F: drivers/media/i2c/ov2659.c -+F: include/media/i2c/ov2659.h -+ -+OVERLAY FILESYSTEM -+M: Miklos Szeredi <miklos@szeredi.hu> -+L: linux-unionfs@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git -+F: Documentation/filesystems/overlayfs.rst -+F: fs/overlayfs/ -+ -+P54 WIRELESS DRIVER -+M: Christian Lamparter <chunkeey@googlemail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/en/users/Drivers/p54 -+F: drivers/net/wireless/intersil/p54/ -+ -+PACKING -+M: Vladimir Oltean <olteanv@gmail.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/core-api/packing.rst -+F: include/linux/packing.h -+F: lib/packing.c -+ -+PADATA PARALLEL EXECUTION MECHANISM -+M: Steffen Klassert <steffen.klassert@secunet.com> -+M: Daniel Jordan <daniel.m.jordan@oracle.com> -+L: linux-crypto@vger.kernel.org -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/core-api/padata.rst -+F: include/linux/padata.h -+F: kernel/padata.c -+ -+PAGE POOL -+M: Jesper Dangaard Brouer <hawk@kernel.org> -+M: Ilias Apalodimas <ilias.apalodimas@linaro.org> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/page_pool.rst -+F: include/net/page_pool.h -+F: include/trace/events/page_pool.h -+F: net/core/page_pool.c -+ -+PANASONIC LAPTOP ACPI EXTRAS DRIVER -+M: Kenneth Chan <kenneth.t.chan@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/panasonic-laptop.c -+ -+PARALLAX PING IIO SENSOR DRIVER -+M: Andreas Klinger <ak@it-klinger.de> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/proximity/parallax-ping.yaml -+F: drivers/iio/proximity/ping.c -+ -+PARALLEL LCD/KEYPAD PANEL DRIVER -+M: Willy Tarreau <willy@haproxy.com> -+M: Ksenija Stanojevic <ksenija.stanojevic@gmail.com> -+S: Odd Fixes -+F: Documentation/admin-guide/lcd-panel-cgram.rst -+F: drivers/auxdisplay/panel.c -+ -+PARALLEL PORT SUBSYSTEM -+M: Sudip Mukherjee <sudipm.mukherjee@gmail.com> -+M: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> -+L: linux-parport@lists.infradead.org (subscribers-only) -+S: Maintained -+F: Documentation/driver-api/parport*.rst -+F: drivers/char/ppdev.c -+F: drivers/parport/ -+F: include/linux/parport*.h -+F: include/uapi/linux/ppdev.h -+ -+PARAVIRT_OPS INTERFACE -+M: Juergen Gross <jgross@suse.com> -+M: Deep Shah <sdeep@vmware.com> -+M: "VMware, Inc." <pv-drivers@vmware.com> -+L: virtualization@lists.linux-foundation.org -+S: Supported -+F: Documentation/virt/paravirt_ops.rst -+F: arch/*/include/asm/paravirt*.h -+F: arch/*/kernel/paravirt* -+F: include/linux/hypervisor.h -+ -+PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES -+M: Tim Waugh <tim@cyberelk.net> -+L: linux-parport@lists.infradead.org (subscribers-only) -+S: Maintained -+F: Documentation/admin-guide/blockdev/paride.rst -+F: drivers/block/paride/ -+ -+PARISC ARCHITECTURE -+M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> -+M: Helge Deller <deller@gmx.de> -+L: linux-parisc@vger.kernel.org -+S: Maintained -+W: https://parisc.wiki.kernel.org -+Q: http://patchwork.kernel.org/project/linux-parisc/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git -+F: Documentation/parisc/ -+F: arch/parisc/ -+F: drivers/char/agp/parisc-agp.c -+F: drivers/input/misc/hp_sdc_rtc.c -+F: drivers/input/serio/gscps2.c -+F: drivers/input/serio/hp_sdc* -+F: drivers/parisc/ -+F: drivers/parport/parport_gsc.* -+F: drivers/tty/serial/8250/8250_gsc.c -+F: drivers/video/console/sti* -+F: drivers/video/fbdev/sti* -+F: drivers/video/logo/logo_parisc* -+F: include/linux/hp_sdc.h -+ -+PARMAN -+M: Jiri Pirko <jiri@nvidia.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: include/linux/parman.h -+F: lib/parman.c -+F: lib/test_parman.c -+ -+PC ENGINES APU BOARD DRIVER -+M: Enrico Weigelt, metux IT consult <info@metux.net> -+S: Maintained -+F: drivers/platform/x86/pcengines-apuv2.c -+ -+PC87360 HARDWARE MONITORING DRIVER -+M: Jim Cromie <jim.cromie@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/pc87360.rst -+F: drivers/hwmon/pc87360.c -+ -+PC8736x GPIO DRIVER -+M: Jim Cromie <jim.cromie@gmail.com> -+S: Maintained -+F: drivers/char/pc8736x_gpio.c -+ -+PC87427 HARDWARE MONITORING DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/pc87427.rst -+F: drivers/hwmon/pc87427.c -+ -+PCA9532 LED DRIVER -+M: Riku Voipio <riku.voipio@iki.fi> -+S: Maintained -+F: drivers/leds/leds-pca9532.c -+F: include/linux/leds-pca9532.h -+ -+PCA9541 I2C BUS MASTER SELECTOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/muxes/i2c-mux-pca9541.c -+ -+PCDP - PRIMARY CONSOLE AND DEBUG PORT -+M: Khalid Aziz <khalid@gonehiking.org> -+S: Maintained -+F: drivers/firmware/pcdp.* -+ -+PCI DRIVER FOR AARDVARK (Marvell Armada 3700) -+M: Thomas Petazzoni <thomas.petazzoni@bootlin.com> -+M: Pali Rohár <pali@kernel.org> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/aardvark-pci.txt -+F: drivers/pci/controller/pci-aardvark.c -+ -+PCI DRIVER FOR ALTERA PCIE IP -+M: Joyce Ooi <joyce.ooi@intel.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/pci/altera-pcie.txt -+F: drivers/pci/controller/pcie-altera.c -+ -+PCI DRIVER FOR APPLIEDMICRO XGENE -+M: Toan Le <toan@os.amperecomputing.com> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/xgene-pci.txt -+F: drivers/pci/controller/pci-xgene.c -+ -+PCI DRIVER FOR ARM VERSATILE PLATFORM -+M: Rob Herring <robh@kernel.org> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/versatile.yaml -+F: drivers/pci/controller/pci-versatile.c -+ -+PCI DRIVER FOR ARMADA 8K -+M: Thomas Petazzoni <thomas.petazzoni@bootlin.com> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/pci-armada8k.txt -+F: drivers/pci/controller/dwc/pcie-armada8k.c -+ -+PCI DRIVER FOR CADENCE PCIE IP -+M: Tom Joseph <tjoseph@cadence.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/cdns,* -+F: drivers/pci/controller/cadence/ -+ -+PCI DRIVER FOR FREESCALE LAYERSCAPE -+M: Minghuan Lian <minghuan.Lian@nxp.com> -+M: Mingkai Hu <mingkai.hu@nxp.com> -+M: Roy Zang <roy.zang@nxp.com> -+L: linuxppc-dev@lists.ozlabs.org -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/pci/controller/dwc/*layerscape* -+ -+PCI DRIVER FOR GENERIC OF HOSTS -+M: Will Deacon <will@kernel.org> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/host-generic-pci.yaml -+F: drivers/pci/controller/pci-host-common.c -+F: drivers/pci/controller/pci-host-generic.c -+ -+PCI DRIVER FOR IMX6 -+M: Richard Zhu <hongxing.zhu@nxp.com> -+M: Lucas Stach <l.stach@pengutronix.de> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.yaml -+F: drivers/pci/controller/dwc/*imx6* -+ -+PCI DRIVER FOR FU740 -+M: Paul Walmsley <paul.walmsley@sifive.com> -+M: Greentime Hu <greentime.hu@sifive.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml -+F: drivers/pci/controller/dwc/pcie-fu740.c -+ -+PCI DRIVER FOR INTEL IXP4XX -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+F: Documentation/devicetree/bindings/pci/intel,ixp4xx-pci.yaml -+F: drivers/pci/controller/pci-ixp4xx.c -+ -+PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD) -+M: Nirmal Patel <nirmal.patel@linux.intel.com> -+R: Jonathan Derrick <jonathan.derrick@linux.dev> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: drivers/pci/controller/vmd.c -+ -+PCI DRIVER FOR MICROSEMI SWITCHTEC -+M: Kurt Schwemmer <kurt.schwemmer@microsemi.com> -+M: Logan Gunthorpe <logang@deltatee.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-class-switchtec -+F: Documentation/driver-api/switchtec.rst -+F: drivers/ntb/hw/mscc/ -+F: drivers/pci/switch/switchtec* -+F: include/linux/switchtec.h -+F: include/uapi/linux/switchtec_ioctl.h -+ -+PCI DRIVER FOR MOBIVEIL PCIE IP -+M: Karthikeyan Mitran <m.karthikeyan@mobiveil.co.in> -+M: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/pci/mobiveil-pcie.txt -+F: drivers/pci/controller/mobiveil/pcie-mobiveil* -+ -+PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support) -+M: Thomas Petazzoni <thomas.petazzoni@bootlin.com> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/pci/controller/*mvebu* -+ -+PCI DRIVER FOR NVIDIA TEGRA -+M: Thierry Reding <thierry.reding@gmail.com> -+L: linux-tegra@vger.kernel.org -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt -+F: drivers/pci/controller/pci-tegra.c -+ -+PCI DRIVER FOR NXP LAYERSCAPE GEN4 CONTROLLER -+M: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/layerscape-pcie-gen4.txt -+F: drivers/pci/controller/mobiveil/pcie-layerscape-gen4.c -+ -+PCI DRIVER FOR RENESAS R-CAR -+M: Marek Vasut <marek.vasut+renesas@gmail.com> -+M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> -+L: linux-pci@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/*rcar* -+F: drivers/pci/controller/*rcar* -+ -+PCI DRIVER FOR SAMSUNG EXYNOS -+M: Jingoo Han <jingoohan1@gmail.com> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+F: drivers/pci/controller/dwc/pci-exynos.c -+ -+PCI DRIVER FOR SYNOPSYS DESIGNWARE -+M: Jingoo Han <jingoohan1@gmail.com> -+M: Gustavo Pimentel <gustavo.pimentel@synopsys.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml -+F: Documentation/devicetree/bindings/pci/snps,dw-pcie-ep.yaml -+F: drivers/pci/controller/dwc/*designware* -+ -+PCI DRIVER FOR TI DRA7XX/J721E -+M: Kishon Vijay Abraham I <kishon@ti.com> -+L: linux-omap@vger.kernel.org -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: Documentation/devicetree/bindings/pci/ti-pci.txt -+F: drivers/pci/controller/cadence/pci-j721e.c -+F: drivers/pci/controller/dwc/pci-dra7xx.c -+ -+PCI DRIVER FOR V3 SEMICONDUCTOR V360EPC -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/v3-v360epc-pci.txt -+F: drivers/pci/controller/pci-v3-semi.c -+ -+PCI ENDPOINT SUBSYSTEM -+M: Kishon Vijay Abraham I <kishon@ti.com> -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+R: Krzysztof Wilczyński <kw@linux.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/PCI/endpoint/* -+F: Documentation/misc-devices/pci-endpoint-test.rst -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/pci-endpoint.git -+F: drivers/misc/pci_endpoint_test.c -+F: drivers/pci/endpoint/ -+F: tools/pci/ -+ -+PCI ENHANCED ERROR HANDLING (EEH) FOR POWERPC -+M: Russell Currey <ruscur@russell.cc> -+M: Oliver O'Halloran <oohall@gmail.com> -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+F: Documentation/PCI/pci-error-recovery.rst -+F: Documentation/powerpc/eeh-pci-error-recovery.rst -+F: arch/powerpc/include/*/eeh*.h -+F: arch/powerpc/kernel/eeh*.c -+F: arch/powerpc/platforms/*/eeh*.c -+F: drivers/pci/pcie/aer.c -+F: drivers/pci/pcie/dpc.c -+F: drivers/pci/pcie/err.c -+ -+PCI ERROR RECOVERY -+M: Linas Vepstas <linasvepstas@gmail.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/PCI/pci-error-recovery.rst -+ -+PCI MSI DRIVER FOR ALTERA MSI IP -+M: Joyce Ooi <joyce.ooi@intel.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/pci/altera-pcie-msi.txt -+F: drivers/pci/controller/pcie-altera-msi.c -+ -+PCI MSI DRIVER FOR APPLIEDMICRO XGENE -+M: Toan Le <toan@os.amperecomputing.com> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pci/xgene-pci-msi.txt -+F: drivers/pci/controller/pci-xgene-msi.c -+ -+PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+R: Rob Herring <robh@kernel.org> -+R: Krzysztof Wilczyński <kw@linux.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+Q: http://patchwork.ozlabs.org/project/linux-pci/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git/ -+F: drivers/pci/controller/ -+ -+PCI SUBSYSTEM -+M: Bjorn Helgaas <bhelgaas@google.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+Q: http://patchwork.ozlabs.org/project/linux-pci/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git -+F: Documentation/PCI/ -+F: Documentation/devicetree/bindings/pci/ -+F: arch/x86/kernel/early-quirks.c -+F: arch/x86/kernel/quirks.c -+F: arch/x86/pci/ -+F: drivers/acpi/pci* -+F: drivers/pci/ -+F: include/asm-generic/pci* -+F: include/linux/of_pci.h -+F: include/linux/pci* -+F: include/uapi/linux/pci* -+F: lib/pci* -+ -+PCIE DRIVER FOR AMAZON ANNAPURNA LABS -+M: Jonathan Chocron <jonnyc@amazon.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/pcie-al.txt -+F: drivers/pci/controller/dwc/pcie-al.c -+ -+PCIE DRIVER FOR AMLOGIC MESON -+M: Yue Wang <yue.wang@Amlogic.com> -+L: linux-pci@vger.kernel.org -+L: linux-amlogic@lists.infradead.org -+S: Maintained -+F: drivers/pci/controller/dwc/pci-meson.c -+ -+PCIE DRIVER FOR AXIS ARTPEC -+M: Jesper Nilsson <jesper.nilsson@axis.com> -+L: linux-arm-kernel@axis.com -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/axis,artpec* -+F: drivers/pci/controller/dwc/*artpec* -+ -+PCIE DRIVER FOR CAVIUM THUNDERX -+M: Robert Richter <rric@kernel.org> -+L: linux-pci@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Odd Fixes -+F: drivers/pci/controller/pci-thunder-* -+ -+PCIE DRIVER FOR HISILICON -+M: Zhou Wang <wangzhou1@hisilicon.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: drivers/pci/controller/dwc/pcie-hisi.c -+ -+PCIE DRIVER FOR HISILICON KIRIN -+M: Xiaowei Song <songxiaowei@hisilicon.com> -+M: Binghui Wang <wangbinghui@hisilicon.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml -+F: drivers/pci/controller/dwc/pcie-kirin.c -+ -+PCIE DRIVER FOR HISILICON STB -+M: Shawn Guo <shawn.guo@linaro.org> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/hisilicon-histb-pcie.txt -+F: drivers/pci/controller/dwc/pcie-histb.c -+ -+PCIE DRIVER FOR INTEL KEEM BAY -+M: Srikanth Thokala <srikanth.thokala@intel.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/pci/intel,keembay-pcie* -+F: drivers/pci/controller/dwc/pcie-keembay.c -+ -+PCIE DRIVER FOR INTEL LGM GW SOC -+M: Rahul Tanwar <rtanwar@maxlinear.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml -+F: drivers/pci/controller/dwc/pcie-intel-gw.c -+ -+PCIE DRIVER FOR MEDIATEK -+M: Ryder Lee <ryder.lee@mediatek.com> -+M: Jianjun Wang <jianjun.wang@mediatek.com> -+L: linux-pci@vger.kernel.org -+L: linux-mediatek@lists.infradead.org -+S: Supported -+F: Documentation/devicetree/bindings/pci/mediatek* -+F: drivers/pci/controller/*mediatek* -+ -+PCIE DRIVER FOR MICROCHIP -+M: Daire McNamara <daire.mcnamara@microchip.com> -+L: linux-pci@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/pci/microchip* -+F: drivers/pci/controller/*microchip* -+ -+PCIE DRIVER FOR QUALCOMM MSM -+M: Stanimir Varbanov <svarbanov@mm-sol.com> -+L: linux-pci@vger.kernel.org -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: drivers/pci/controller/dwc/*qcom* -+ -+PCIE DRIVER FOR ROCKCHIP -+M: Shawn Lin <shawn.lin@rock-chips.com> -+L: linux-pci@vger.kernel.org -+L: linux-rockchip@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/rockchip-pcie* -+F: drivers/pci/controller/pcie-rockchip* -+ -+PCIE DRIVER FOR SOCIONEXT UNIPHIER -+M: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pci/uniphier-pcie* -+F: drivers/pci/controller/dwc/pcie-uniphier* -+ -+PCIE DRIVER FOR ST SPEAR13XX -+M: Pratyush Anand <pratyush.anand@gmail.com> -+L: linux-pci@vger.kernel.org -+S: Maintained -+F: drivers/pci/controller/dwc/*spear* -+ -+PCMCIA SUBSYSTEM -+M: Dominik Brodowski <linux@dominikbrodowski.net> -+S: Odd Fixes -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia.git -+F: Documentation/pcmcia/ -+F: drivers/pcmcia/ -+F: include/pcmcia/ -+F: tools/pcmcia/ -+ -+PCNET32 NETWORK DRIVER -+M: Don Fry <pcnet32@frontier.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/amd/pcnet32.c -+ -+PCRYPT PARALLEL CRYPTO ENGINE -+M: Steffen Klassert <steffen.klassert@secunet.com> -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: crypto/pcrypt.c -+F: include/crypto/pcrypt.h -+ -+PEAQ WMI HOTKEYS DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/peaq-wmi.c -+ -+PENSANDO ETHERNET DRIVERS -+M: Shannon Nelson <snelson@pensando.io> -+M: drivers@pensando.io -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/device_drivers/ethernet/pensando/ionic.rst -+F: drivers/net/ethernet/pensando/ -+ -+PER-CPU MEMORY ALLOCATOR -+M: Dennis Zhou <dennis@kernel.org> -+M: Tejun Heo <tj@kernel.org> -+M: Christoph Lameter <cl@linux.com> -+L: linux-mm@kvack.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu.git -+F: arch/*/include/asm/percpu.h -+F: include/linux/percpu*.h -+F: lib/percpu*.c -+F: mm/percpu*.c -+ -+PER-TASK DELAY ACCOUNTING -+M: Balbir Singh <bsingharora@gmail.com> -+S: Maintained -+F: include/linux/delayacct.h -+F: kernel/delayacct.c -+ -+PERFORMANCE EVENTS SUBSYSTEM -+M: Peter Zijlstra <peterz@infradead.org> -+M: Ingo Molnar <mingo@redhat.com> -+M: Arnaldo Carvalho de Melo <acme@kernel.org> -+R: Mark Rutland <mark.rutland@arm.com> -+R: Alexander Shishkin <alexander.shishkin@linux.intel.com> -+R: Jiri Olsa <jolsa@redhat.com> -+R: Namhyung Kim <namhyung@kernel.org> -+L: linux-perf-users@vger.kernel.org -+L: linux-kernel@vger.kernel.org -+S: Supported -+W: https://perf.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core -+F: arch/*/events/* -+F: arch/*/events/*/* -+F: arch/*/include/asm/perf_event.h -+F: arch/*/kernel/*/*/perf_event*.c -+F: arch/*/kernel/*/perf_event*.c -+F: arch/*/kernel/perf_callchain.c -+F: arch/*/kernel/perf_event*.c -+F: include/linux/perf_event.h -+F: include/uapi/linux/perf_event.h -+F: kernel/events/* -+F: tools/lib/perf/ -+F: tools/perf/ -+ -+PERFORMANCE EVENTS TOOLING ARM64 -+R: John Garry <john.garry@huawei.com> -+R: Will Deacon <will@kernel.org> -+R: Mathieu Poirier <mathieu.poirier@linaro.org> -+R: Leo Yan <leo.yan@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: tools/build/feature/test-libopencsd.c -+F: tools/perf/arch/arm*/ -+F: tools/perf/pmu-events/arch/arm64/ -+F: tools/perf/util/arm-spe* -+F: tools/perf/util/cs-etm* -+ -+PERSONALITY HANDLING -+M: Christoph Hellwig <hch@infradead.org> -+L: linux-abi-devel@lists.sourceforge.net -+S: Maintained -+F: include/linux/personality.h -+F: include/uapi/linux/personality.h -+ -+PHOENIX RC FLIGHT CONTROLLER ADAPTER -+M: Marcus Folkesson <marcus.folkesson@gmail.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: Documentation/input/devices/pxrc.rst -+F: drivers/input/joystick/pxrc.c -+ -+PHONET PROTOCOL -+M: Remi Denis-Courmont <courmisch@gmail.com> -+S: Supported -+F: Documentation/networking/phonet.rst -+F: include/linux/phonet.h -+F: include/net/phonet/ -+F: include/uapi/linux/phonet.h -+F: net/phonet/ -+ -+PHRAM MTD DRIVER -+M: Joern Engel <joern@lazybastard.org> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+F: drivers/mtd/devices/phram.c -+ -+PICOLCD HID DRIVER -+M: Bruno Prémont <bonbons@linux-vserver.org> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/hid-picolcd* -+ -+PIDFD API -+M: Christian Brauner <christian@brauner.io> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git -+F: samples/pidfd/ -+F: tools/testing/selftests/clone3/ -+F: tools/testing/selftests/pid_namespace/ -+F: tools/testing/selftests/pidfd/ -+K: (?i)pidfd -+K: (?i)clone3 -+K: \b(clone_args|kernel_clone_args)\b -+ -+PIN CONTROL SUBSYSTEM -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git -+F: Documentation/devicetree/bindings/pinctrl/ -+F: Documentation/driver-api/pin-control.rst -+F: drivers/pinctrl/ -+F: include/linux/pinctrl/ -+ -+PIN CONTROLLER - AMD -+M: Basavaraj Natikar <Basavaraj.Natikar@amd.com> -+M: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> -+S: Maintained -+F: drivers/pinctrl/pinctrl-amd.c -+ -+PIN CONTROLLER - FREESCALE -+M: Dong Aisheng <aisheng.dong@nxp.com> -+M: Fabio Estevam <festevam@gmail.com> -+M: Shawn Guo <shawnguo@kernel.org> -+M: Stefan Agner <stefan@agner.ch> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pinctrl/fsl,* -+F: drivers/pinctrl/freescale/ -+ -+PIN CONTROLLER - INTEL -+M: Mika Westerberg <mika.westerberg@linux.intel.com> -+M: Andy Shevchenko <andy@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git -+F: drivers/pinctrl/intel/ -+ -+PIN CONTROLLER - KEEMBAY -+M: Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com> -+S: Supported -+F: drivers/pinctrl/pinctrl-keembay* -+ -+PIN CONTROLLER - MEDIATEK -+M: Sean Wang <sean.wang@kernel.org> -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/pinctrl/mediatek,mt65xx-pinctrl.yaml -+F: Documentation/devicetree/bindings/pinctrl/mediatek,mt6797-pinctrl.yaml -+F: Documentation/devicetree/bindings/pinctrl/mediatek,mt7622-pinctrl.yaml -+F: Documentation/devicetree/bindings/pinctrl/mediatek,mt8183-pinctrl.yaml -+F: drivers/pinctrl/mediatek/ -+ -+PIN CONTROLLER - MICROCHIP AT91 -+M: Ludovic Desroches <ludovic.desroches@microchip.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-gpio@vger.kernel.org -+S: Supported -+F: drivers/gpio/gpio-sama5d2-piobu.c -+F: drivers/pinctrl/pinctrl-at91* -+ -+PIN CONTROLLER - QUALCOMM -+M: Bjorn Andersson <bjorn.andersson@linaro.org> -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/pinctrl/qcom,*.txt -+F: drivers/pinctrl/qcom/ -+ -+PIN CONTROLLER - RENESAS -+M: Geert Uytterhoeven <geert+renesas@glider.be> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git renesas-pinctrl -+F: Documentation/devicetree/bindings/pinctrl/renesas,* -+F: drivers/pinctrl/renesas/ -+ -+PIN CONTROLLER - SAMSUNG -+M: Tomasz Figa <tomasz.figa@gmail.com> -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Sylwester Nawrocki <s.nawrocki@samsung.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git -+F: Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt -+F: drivers/pinctrl/samsung/ -+F: include/dt-bindings/pinctrl/samsung.h -+ -+PIN CONTROLLER - SINGLE -+M: Tony Lindgren <tony@atomide.com> -+M: Haojian Zhuang <haojian.zhuang@linaro.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: drivers/pinctrl/pinctrl-single.c -+ -+PIN CONTROLLER - ST SPEAR -+M: Viresh Kumar <vireshk@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.st.com/spear -+F: drivers/pinctrl/spear/ -+ -+PKTCDVD DRIVER -+M: linux-block@vger.kernel.org -+S: Orphan -+F: drivers/block/pktcdvd.c -+F: include/linux/pktcdvd.h -+F: include/uapi/linux/pktcdvd.h -+ -+PLANTOWER PMS7003 AIR POLLUTION SENSOR DRIVER -+M: Tomasz Duszynski <tduszyns@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml -+F: drivers/iio/chemical/pms7003.c -+ -+PLDMFW LIBRARY -+M: Jacob Keller <jacob.e.keller@intel.com> -+S: Maintained -+F: Documentation/driver-api/pldmfw/ -+F: include/linux/pldmfw.h -+F: lib/pldmfw/ -+ -+PLX DMA DRIVER -+M: Logan Gunthorpe <logang@deltatee.com> -+S: Maintained -+F: drivers/dma/plx_dma.c -+ -+PM6764TR DRIVER -+M: Charles Hsu <hsu.yungteng@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/pm6764tr.rst -+F: drivers/hwmon/pmbus/pm6764tr.c -+ -+PM-GRAPH UTILITY -+M: "Todd E Brandt" <todd.e.brandt@linux.intel.com> -+L: linux-pm@vger.kernel.org -+S: Supported -+W: https://01.org/pm-graph -+B: https://bugzilla.kernel.org/buglist.cgi?component=pm-graph&product=Tools -+T: git git://github.com/intel/pm-graph -+F: tools/power/pm-graph -+ -+PMBUS HARDWARE MONITORING DRIVERS -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+W: http://hwmon.wiki.kernel.org/ -+W: http://www.roeck-us.net/linux/drivers/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git -+F: Documentation/devicetree/bindings/hwmon/ibm,cffps1.txt -+F: Documentation/devicetree/bindings/hwmon/ltc2978.txt -+F: Documentation/devicetree/bindings/hwmon/max31785.txt -+F: Documentation/hwmon/adm1275.rst -+F: Documentation/hwmon/ibm-cffps.rst -+F: Documentation/hwmon/ir35221.rst -+F: Documentation/hwmon/lm25066.rst -+F: Documentation/hwmon/ltc2978.rst -+F: Documentation/hwmon/ltc3815.rst -+F: Documentation/hwmon/max16064.rst -+F: Documentation/hwmon/max20751.rst -+F: Documentation/hwmon/max31785.rst -+F: Documentation/hwmon/max34440.rst -+F: Documentation/hwmon/max8688.rst -+F: Documentation/hwmon/pmbus-core.rst -+F: Documentation/hwmon/pmbus.rst -+F: Documentation/hwmon/tps40422.rst -+F: Documentation/hwmon/ucd9000.rst -+F: Documentation/hwmon/ucd9200.rst -+F: Documentation/hwmon/zl6100.rst -+F: drivers/hwmon/pmbus/ -+F: include/linux/pmbus.h -+ -+PMC SIERRA MaxRAID DRIVER -+L: linux-scsi@vger.kernel.org -+S: Orphan -+W: http://www.pmc-sierra.com/ -+F: drivers/scsi/pmcraid.* -+ -+PMC SIERRA PM8001 DRIVER -+M: Jack Wang <jinpu.wang@cloud.ionos.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/pm8001/ -+ -+PNI RM3100 IIO DRIVER -+M: Song Qiang <songqiang1304521@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/magnetometer/pni,rm3100.yaml -+F: drivers/iio/magnetometer/rm3100* -+ -+PNP SUPPORT -+M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com> -+L: linux-acpi@vger.kernel.org -+S: Maintained -+F: drivers/pnp/ -+F: include/linux/pnp.h -+ -+POSIX CLOCKS and TIMERS -+M: Thomas Gleixner <tglx@linutronix.de> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core -+F: fs/timerfd.c -+F: include/linux/time_namespace.h -+F: include/linux/timer* -+F: kernel/time/*timer* -+F: kernel/time/namespace.c -+ -+POWER MANAGEMENT CORE -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Supported -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm -+F: drivers/base/power/ -+F: drivers/powercap/ -+F: include/linux/intel_rapl.h -+F: include/linux/pm.h -+F: include/linux/pm_* -+F: include/linux/powercap.h -+F: kernel/configs/nopm.config -+ -+DYNAMIC THERMAL POWER MANAGEMENT (DTPM) -+M: Daniel Lezcano <daniel.lezcano@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Supported -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm -+F: drivers/powercap/dtpm* -+F: include/linux/dtpm.h -+ -+POWER STATE COORDINATION INTERFACE (PSCI) -+M: Mark Rutland <mark.rutland@arm.com> -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/firmware/psci/ -+F: include/linux/psci.h -+F: include/uapi/linux/psci.h -+ -+POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS -+M: Sebastian Reichel <sre@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git -+F: Documentation/ABI/testing/sysfs-class-power -+F: Documentation/devicetree/bindings/power/supply/ -+F: drivers/power/supply/ -+F: include/linux/power/ -+F: include/linux/power_supply.h -+ -+POWERNV OPERATOR PANEL LCD DISPLAY DRIVER -+M: Suraj Jitindar Singh <sjitindarsingh@gmail.com> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/char/powernv-op-panel.c -+ -+PPP OVER ATM (RFC 2364) -+M: Mitchell Blank Jr <mitch@sfgoth.com> -+S: Maintained -+F: include/uapi/linux/atmppp.h -+F: net/atm/pppoatm.c -+ -+PPP OVER ETHERNET -+M: Michal Ostrowski <mostrows@earthlink.net> -+S: Maintained -+F: drivers/net/ppp/pppoe.c -+F: drivers/net/ppp/pppox.c -+ -+PPP OVER L2TP -+M: James Chapman <jchapman@katalix.com> -+S: Maintained -+F: include/linux/if_pppol2tp.h -+F: include/uapi/linux/if_pppol2tp.h -+F: net/l2tp/l2tp_ppp.c -+ -+PPP PROTOCOL DRIVERS AND COMPRESSORS -+M: Paul Mackerras <paulus@samba.org> -+L: linux-ppp@vger.kernel.org -+S: Maintained -+F: drivers/net/ppp/ppp_* -+ -+PPS SUPPORT -+M: Rodolfo Giometti <giometti@enneenne.com> -+L: linuxpps@ml.enneenne.com (subscribers-only) -+S: Maintained -+W: http://wiki.enneenne.com/index.php/LinuxPPS_support -+F: Documentation/ABI/testing/sysfs-pps -+F: Documentation/devicetree/bindings/pps/pps-gpio.txt -+F: Documentation/driver-api/pps.rst -+F: drivers/pps/ -+F: include/linux/pps*.h -+F: include/uapi/linux/pps.h -+ -+PPTP DRIVER -+M: Dmitry Kozlov <xeb@mail.ru> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://sourceforge.net/projects/accel-pptp -+F: drivers/net/ppp/pptp.c -+ -+PRESSURE STALL INFORMATION (PSI) -+M: Johannes Weiner <hannes@cmpxchg.org> -+S: Maintained -+F: include/linux/psi* -+F: kernel/sched/psi.c -+ -+PRINTK -+M: Petr Mladek <pmladek@suse.com> -+M: Sergey Senozhatsky <senozhatsky@chromium.org> -+R: Steven Rostedt <rostedt@goodmis.org> -+R: John Ogness <john.ogness@linutronix.de> -+S: Maintained -+F: include/linux/printk.h -+F: kernel/printk/ -+ -+PRINTK INDEXING -+R: Chris Down <chris@chrisdown.name> -+S: Maintained -+F: kernel/printk/index.c -+ -+PROC FILESYSTEM -+L: linux-kernel@vger.kernel.org -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: Documentation/filesystems/proc.rst -+F: fs/proc/ -+F: include/linux/proc_fs.h -+F: tools/testing/selftests/proc/ -+ -+PROC SYSCTL -+M: Luis Chamberlain <mcgrof@kernel.org> -+M: Kees Cook <keescook@chromium.org> -+M: Iurii Zaikin <yzaikin@google.com> -+L: linux-kernel@vger.kernel.org -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: fs/proc/proc_sysctl.c -+F: include/linux/sysctl.h -+F: kernel/sysctl-test.c -+F: kernel/sysctl.c -+F: tools/testing/selftests/sysctl/ -+ -+PS3 NETWORK SUPPORT -+M: Geoff Levand <geoff@infradead.org> -+L: netdev@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/net/ethernet/toshiba/ps3_gelic_net.* -+ -+PS3 PLATFORM SUPPORT -+M: Geoff Levand <geoff@infradead.org> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: arch/powerpc/boot/ps3* -+F: arch/powerpc/include/asm/lv1call.h -+F: arch/powerpc/include/asm/ps3*.h -+F: arch/powerpc/platforms/ps3/ -+F: drivers/*/ps3* -+F: drivers/ps3/ -+F: drivers/rtc/rtc-ps3.c -+F: drivers/usb/host/*ps3.c -+F: sound/ppc/snd_ps3* -+ -+PS3VRAM DRIVER -+M: Jim Paris <jim@jtan.com> -+M: Geoff Levand <geoff@infradead.org> -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: drivers/block/ps3vram.c -+ -+PSAMPLE PACKET SAMPLING SUPPORT -+M: Yotam Gigi <yotam.gi@gmail.com> -+S: Maintained -+F: include/net/psample.h -+F: include/uapi/linux/psample.h -+F: net/psample -+ -+PSTORE FILESYSTEM -+M: Kees Cook <keescook@chromium.org> -+M: Anton Vorontsov <anton@enomsg.org> -+M: Colin Cross <ccross@android.com> -+M: Tony Luck <tony.luck@intel.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git for-next/pstore -+F: Documentation/admin-guide/ramoops.rst -+F: Documentation/admin-guide/pstore-blk.rst -+F: Documentation/devicetree/bindings/reserved-memory/ramoops.txt -+F: drivers/acpi/apei/erst.c -+F: drivers/firmware/efi/efi-pstore.c -+F: fs/pstore/ -+F: include/linux/pstore* -+K: \b(pstore|ramoops) -+ -+PTP HARDWARE CLOCK SUPPORT -+M: Richard Cochran <richardcochran@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://linuxptp.sourceforge.net/ -+F: Documentation/ABI/testing/sysfs-ptp -+F: Documentation/driver-api/ptp.rst -+F: drivers/net/phy/dp83640* -+F: drivers/ptp/* -+F: include/linux/ptp_cl* -+ -+PTP VIRTUAL CLOCK SUPPORT -+M: Yangbo Lu <yangbo.lu@nxp.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/ptp/ptp_vclock.c -+F: net/ethtool/phc_vclocks.c -+ -+PTRACE SUPPORT -+M: Oleg Nesterov <oleg@redhat.com> -+S: Maintained -+F: arch/*/*/ptrace*.c -+F: arch/*/include/asm/ptrace*.h -+F: arch/*/ptrace*.c -+F: include/asm-generic/syscall.h -+F: include/linux/ptrace.h -+F: include/linux/regset.h -+F: include/linux/tracehook.h -+F: include/uapi/linux/ptrace.h -+F: include/uapi/linux/ptrace.h -+F: kernel/ptrace.c -+ -+PULSE8-CEC DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/pulse8-cec.rst -+F: drivers/media/cec/usb/pulse8/ -+ -+PVRUSB2 VIDEO4LINUX DRIVER -+M: Mike Isely <isely@pobox.com> -+L: pvrusb2@isely.net (subscribers-only) -+L: linux-media@vger.kernel.org -+S: Maintained -+W: http://www.isely.net/pvrusb2/ -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/driver-api/media/drivers/pvrusb2* -+F: drivers/media/usb/pvrusb2/ -+ -+PWC WEBCAM DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/pwc/* -+F: include/trace/events/pwc.h -+ -+PWM FAN DRIVER -+M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> -+L: linux-hwmon@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/hwmon/pwm-fan.txt -+F: Documentation/hwmon/pwm-fan.rst -+F: drivers/hwmon/pwm-fan.c -+ -+PWM IR Transmitter -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/rc/pwm-ir-tx.c -+ -+PWM SUBSYSTEM -+M: Thierry Reding <thierry.reding@gmail.com> -+R: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> -+M: Lee Jones <lee.jones@linaro.org> -+L: linux-pwm@vger.kernel.org -+S: Maintained -+Q: https://patchwork.ozlabs.org/project/linux-pwm/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git -+F: Documentation/devicetree/bindings/gpio/gpio-mvebu.txt -+F: Documentation/devicetree/bindings/pwm/ -+F: Documentation/driver-api/pwm.rst -+F: drivers/gpio/gpio-mvebu.c -+F: drivers/pwm/ -+F: drivers/video/backlight/pwm_bl.c -+F: include/linux/pwm.h -+F: include/linux/pwm_backlight.h -+K: pwm_(config|apply_state|ops) -+ -+PXA GPIO DRIVER -+M: Robert Jarzmik <robert.jarzmik@free.fr> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-pxa.c -+ -+PXA MMCI DRIVER -+S: Orphan -+ -+PXA RTC DRIVER -+M: Robert Jarzmik <robert.jarzmik@free.fr> -+L: linux-rtc@vger.kernel.org -+S: Maintained -+ -+PXA2xx/PXA3xx SUPPORT -+M: Daniel Mack <daniel@zonque.org> -+M: Haojian Zhuang <haojian.zhuang@gmail.com> -+M: Robert Jarzmik <robert.jarzmik@free.fr> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://github.com/hzhuang1/linux.git -+T: git git://github.com/rjarzmik/linux.git -+F: arch/arm/boot/dts/pxa* -+F: arch/arm/mach-pxa/ -+F: drivers/dma/pxa* -+F: drivers/pcmcia/pxa2xx* -+F: drivers/pinctrl/pxa/ -+F: drivers/spi/spi-pxa2xx* -+F: drivers/usb/gadget/udc/pxa2* -+F: include/sound/pxa2xx-lib.h -+F: sound/arm/pxa* -+F: sound/soc/pxa/ -+ -+QAT DRIVER -+M: Giovanni Cabiddu <giovanni.cabiddu@intel.com> -+L: qat-linux@intel.com -+S: Supported -+F: drivers/crypto/qat/ -+ -+QCOM AUDIO (ASoC) DRIVERS -+M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> -+M: Banajit Goswami <bgoswami@codeaurora.org> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+F: sound/soc/codecs/lpass-va-macro.c -+F: sound/soc/codecs/lpass-wsa-macro.* -+F: sound/soc/codecs/msm8916-wcd-analog.c -+F: sound/soc/codecs/msm8916-wcd-digital.c -+F: sound/soc/codecs/wcd9335.* -+F: sound/soc/codecs/wcd934x.c -+F: sound/soc/codecs/wcd-clsh-v2.* -+F: sound/soc/codecs/wsa881x.c -+F: sound/soc/qcom/ -+ -+QCOM IPA DRIVER -+M: Alex Elder <elder@kernel.org> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ipa/ -+ -+QEMU MACHINE EMULATOR AND VIRTUALIZER SUPPORT -+M: Gabriel Somlo <somlo@cmu.edu> -+M: "Michael S. Tsirkin" <mst@redhat.com> -+L: qemu-devel@nongnu.org -+S: Maintained -+F: drivers/firmware/qemu_fw_cfg.c -+F: include/uapi/linux/qemu_fw_cfg.h -+ -+QIB DRIVER -+M: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com> -+M: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/hw/qib/ -+ -+QLOGIC QL41xxx FCOE DRIVER -+M: Saurav Kashyap <skashyap@marvell.com> -+M: Javed Hasan <jhasan@marvell.com> -+M: GR-QLogic-Storage-Upstream@marvell.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/qedf/ -+ -+QLOGIC QL41xxx ISCSI DRIVER -+M: Nilesh Javali <njavali@marvell.com> -+M: Manish Rangankar <mrangankar@marvell.com> -+M: GR-QLogic-Storage-Upstream@marvell.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/qedi/ -+ -+QLOGIC QL4xxx ETHERNET DRIVER -+M: Ariel Elior <aelior@marvell.com> -+M: GR-everest-linux-l2@marvell.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/qlogic/qed/ -+F: drivers/net/ethernet/qlogic/qede/ -+F: include/linux/qed/ -+ -+QLOGIC QL4xxx RDMA DRIVER -+M: Michal Kalderon <mkalderon@marvell.com> -+M: Ariel Elior <aelior@marvell.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/hw/qedr/ -+F: include/uapi/rdma/qedr-abi.h -+ -+QLOGIC QLA1280 SCSI DRIVER -+M: Michael Reed <mdr@sgi.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/qla1280.[ch] -+ -+QLOGIC QLA2XXX FC-SCSI DRIVER -+M: Nilesh Javali <njavali@marvell.com> -+M: GR-QLogic-Storage-Upstream@marvell.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/qla2xxx/ -+ -+QLOGIC QLA3XXX NETWORK DRIVER -+M: GR-Linux-NIC-Dev@marvell.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/qlogic/qla3xxx.* -+ -+QLOGIC QLA4XXX iSCSI DRIVER -+M: Nilesh Javali <njavali@marvell.com> -+M: Manish Rangankar <mrangankar@marvell.com> -+M: GR-QLogic-Storage-Upstream@marvell.com -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/qla4xxx/ -+ -+QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER -+M: Shahed Shaikh <shshaikh@marvell.com> -+M: Manish Chopra <manishc@marvell.com> -+M: GR-Linux-NIC-Dev@marvell.com -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/qlogic/qlcnic/ -+ -+QLOGIC QLGE 10Gb ETHERNET DRIVER -+M: Manish Chopra <manishc@marvell.com> -+M: GR-Linux-NIC-Dev@marvell.com -+M: Coiby Xu <coiby.xu@gmail.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: Documentation/networking/device_drivers/qlogic/qlge.rst -+F: drivers/staging/qlge/ -+ -+QM1D1B0004 MEDIA DRIVER -+M: Akihiro Tsukada <tskd08@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+F: drivers/media/tuners/qm1d1b0004* -+ -+QM1D1C0042 MEDIA DRIVER -+M: Akihiro Tsukada <tskd08@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+F: drivers/media/tuners/qm1d1c0042* -+ -+QNX4 FILESYSTEM -+M: Anders Larsen <al@alarsen.net> -+S: Maintained -+W: http://www.alarsen.net/linux/qnx4fs/ -+F: fs/qnx4/ -+F: include/uapi/linux/qnx4_fs.h -+F: include/uapi/linux/qnxtypes.h -+ -+QORIQ DPAA2 FSL-MC BUS DRIVER -+M: Stuart Yoder <stuyoder@gmail.com> -+M: Laurentiu Tudor <laurentiu.tudor@nxp.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/stable/sysfs-bus-fsl-mc -+F: Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt -+F: Documentation/networking/device_drivers/ethernet/freescale/dpaa2/overview.rst -+F: drivers/bus/fsl-mc/ -+F: include/uapi/linux/fsl_mc.h -+ -+QT1010 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/qt1010* -+ -+QUALCOMM ATHEROS ATH10K WIRELESS DRIVER -+M: Kalle Valo <kvalo@codeaurora.org> -+L: ath10k@lists.infradead.org -+S: Supported -+W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git -+F: drivers/net/wireless/ath/ath10k/ -+ -+QUALCOMM ATHEROS ATH11K WIRELESS DRIVER -+M: Kalle Valo <kvalo@codeaurora.org> -+L: ath11k@lists.infradead.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git -+F: drivers/net/wireless/ath/ath11k/ -+ -+QUALCOMM ATHEROS ATH9K WIRELESS DRIVER -+M: ath9k-devel@qca.qualcomm.com -+L: linux-wireless@vger.kernel.org -+S: Supported -+W: https://wireless.wiki.kernel.org/en/users/Drivers/ath9k -+F: drivers/net/wireless/ath/ath9k/ -+ -+QUALCOMM CAMERA SUBSYSTEM DRIVER -+M: Robert Foss <robert.foss@linaro.org> -+M: Todor Tomov <todor.too@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/admin-guide/media/qcom_camss.rst -+F: Documentation/devicetree/bindings/media/*camss* -+F: drivers/media/platform/qcom/camss/ -+ -+QUALCOMM CORE POWER REDUCTION (CPR) AVS DRIVER -+M: Niklas Cassel <nks@flawful.org> -+L: linux-pm@vger.kernel.org -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/power/avs/qcom,cpr.txt -+F: drivers/soc/qcom/cpr.c -+ -+QUALCOMM CPUFREQ DRIVER MSM8996/APQ8096 -+M: Ilia Lin <ilia.lin@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/opp/qcom-nvmem-cpufreq.txt -+F: drivers/cpufreq/qcom-cpufreq-nvmem.c -+ -+QUALCOMM CRYPTO DRIVERS -+M: Thara Gopinath <thara.gopinath@linaro.org> -+L: linux-crypto@vger.kernel.org -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: drivers/crypto/qce/ -+ -+QUALCOMM EMAC GIGABIT ETHERNET DRIVER -+M: Timur Tabi <timur@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/qualcomm/emac/ -+ -+QUALCOMM ETHQOS ETHERNET DRIVER -+M: Vinod Koul <vkoul@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/qcom,ethqos.txt -+F: drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c -+ -+QUALCOMM GENERIC INTERFACE I2C DRIVER -+M: Akash Asthana <akashast@codeaurora.org> -+M: Mukesh Savaliya <msavaliy@codeaurora.org> -+L: linux-i2c@vger.kernel.org -+L: linux-arm-msm@vger.kernel.org -+S: Supported -+F: drivers/i2c/busses/i2c-qcom-geni.c -+ -+QUALCOMM HEXAGON ARCHITECTURE -+M: Brian Cain <bcain@codeaurora.org> -+L: linux-hexagon@vger.kernel.org -+S: Supported -+F: arch/hexagon/ -+ -+QUALCOMM HIDMA DRIVER -+M: Sinan Kaya <okaya@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+L: linux-arm-msm@vger.kernel.org -+L: dmaengine@vger.kernel.org -+S: Supported -+F: drivers/dma/qcom/hidma* -+ -+QUALCOMM I2C CCI DRIVER -+M: Loic Poulain <loic.poulain@linaro.org> -+M: Robert Foss <robert.foss@linaro.org> -+L: linux-i2c@vger.kernel.org -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-qcom-cci.txt -+F: drivers/i2c/busses/i2c-qcom-cci.c -+ -+QUALCOMM IOMMU -+M: Rob Clark <robdclark@gmail.com> -+L: iommu@lists.linux-foundation.org -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: drivers/iommu/arm/arm-smmu/qcom_iommu.c -+ -+QUALCOMM IPC ROUTER (QRTR) DRIVER -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: include/trace/events/qrtr.h -+F: include/uapi/linux/qrtr.h -+F: net/qrtr/ -+ -+QUALCOMM IPCC MAILBOX DRIVER -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+L: linux-arm-msm@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml -+F: drivers/mailbox/qcom-ipcc.c -+F: include/dt-bindings/mailbox/qcom-ipcc.h -+ -+QUALCOMM IPQ4019 USB PHY DRIVER -+M: Robert Marko <robert.marko@sartura.hr> -+M: Luka Perkov <luka.perkov@sartura.hr> -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/phy/qcom-usb-ipq4019-phy.yaml -+F: drivers/phy/qualcomm/phy-qcom-ipq4019-usb.c -+ -+QUALCOMM IPQ4019 VQMMC REGULATOR DRIVER -+M: Robert Marko <robert.marko@sartura.hr> -+M: Luka Perkov <luka.perkov@sartura.hr> -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/regulator/vqmmc-ipq4019-regulator.yaml -+F: drivers/regulator/vqmmc-ipq4019-regulator.c -+ -+QUALCOMM RMNET DRIVER -+M: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> -+M: Sean Tranchetti <stranche@codeaurora.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/networking/device_drivers/cellular/qualcomm/rmnet.rst -+F: drivers/net/ethernet/qualcomm/rmnet/ -+F: include/linux/if_rmnet.h -+ -+QUALCOMM TSENS THERMAL DRIVER -+M: Amit Kucheria <amitk@kernel.org> -+M: Thara Gopinath <thara.gopinath@linaro.org> -+L: linux-pm@vger.kernel.org -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/thermal/qcom-tsens.yaml -+F: drivers/thermal/qcom/ -+ -+QUALCOMM VENUS VIDEO ACCELERATOR DRIVER -+M: Stanimir Varbanov <stanimir.varbanov@linaro.org> -+L: linux-media@vger.kernel.org -+L: linux-arm-msm@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/*venus* -+F: drivers/media/platform/qcom/venus/ -+ -+QUALCOMM WCN36XX WIRELESS DRIVER -+M: Kalle Valo <kvalo@codeaurora.org> -+L: wcn36xx@lists.infradead.org -+S: Supported -+W: https://wireless.wiki.kernel.org/en/users/Drivers/wcn36xx -+T: git git://github.com/KrasnikovEugene/wcn36xx.git -+F: drivers/net/wireless/ath/wcn36xx/ -+ -+QUANTENNA QTNFMAC WIRELESS DRIVER -+M: Igor Mitsyanko <imitsyanko@quantenna.com> -+R: Sergey Matyukevich <geomatsi@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/quantenna -+ -+RADEON and AMDGPU DRM DRIVERS -+M: Alex Deucher <alexander.deucher@amd.com> -+M: Christian König <christian.koenig@amd.com> -+M: Pan, Xinhui <Xinhui.Pan@amd.com> -+L: amd-gfx@lists.freedesktop.org -+S: Supported -+T: git https://gitlab.freedesktop.org/agd5f/linux.git -+B: https://gitlab.freedesktop.org/drm/amd/-/issues -+C: irc://irc.oftc.net/radeon -+F: drivers/gpu/drm/amd/ -+F: drivers/gpu/drm/radeon/ -+F: include/uapi/drm/amdgpu_drm.h -+F: include/uapi/drm/radeon_drm.h -+ -+RADEON FRAMEBUFFER DISPLAY DRIVER -+M: Benjamin Herrenschmidt <benh@kernel.crashing.org> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/aty/radeon* -+F: include/uapi/linux/radeonfb.h -+ -+RADIOSHARK RADIO DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-shark.c -+ -+RADIOSHARK2 RADIO DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-shark2.c -+F: drivers/media/radio/radio-tea5777.c -+ -+RADOS BLOCK DEVICE (RBD) -+M: Ilya Dryomov <idryomov@gmail.com> -+R: Dongsheng Yang <dongsheng.yang@easystack.cn> -+L: ceph-devel@vger.kernel.org -+S: Supported -+W: http://ceph.com/ -+T: git git://github.com/ceph/ceph-client.git -+F: Documentation/ABI/testing/sysfs-bus-rbd -+F: drivers/block/rbd.c -+F: drivers/block/rbd_types.h -+ -+RAGE128 FRAMEBUFFER DISPLAY DRIVER -+M: Paul Mackerras <paulus@samba.org> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/aty/aty128fb.c -+ -+RAINSHADOW-CEC DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/cec/usb/rainshadow/ -+ -+RALINK MIPS ARCHITECTURE -+M: John Crispin <john@phrozen.org> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/ralink -+ -+RALINK RT2X00 WIRELESS LAN DRIVER -+M: Stanislaw Gruszka <stf_xl@wp.pl> -+M: Helmut Schaa <helmut.schaa@googlemail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/ralink/rt2x00/ -+ -+RAMDISK RAM BLOCK DEVICE DRIVER -+M: Jens Axboe <axboe@kernel.dk> -+S: Maintained -+F: Documentation/admin-guide/blockdev/ramdisk.rst -+F: drivers/block/brd.c -+ -+RANCHU VIRTUAL BOARD FOR MIPS -+M: Miodrag Dinic <miodrag.dinic@mips.com> -+L: linux-mips@vger.kernel.org -+S: Supported -+F: arch/mips/configs/generic/board-ranchu.config -+F: arch/mips/generic/board-ranchu.c -+ -+RANDOM NUMBER DRIVER -+M: "Theodore Ts'o" <tytso@mit.edu> -+S: Maintained -+F: drivers/char/random.c -+ -+RAPIDIO SUBSYSTEM -+M: Matt Porter <mporter@kernel.crashing.org> -+M: Alexandre Bounine <alex.bou9@gmail.com> -+S: Maintained -+F: drivers/rapidio/ -+ -+RAS INFRASTRUCTURE -+M: Tony Luck <tony.luck@intel.com> -+M: Borislav Petkov <bp@alien8.de> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: Documentation/admin-guide/ras.rst -+F: drivers/ras/ -+F: include/linux/ras.h -+F: include/ras/ras_event.h -+ -+RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER -+L: linux-wireless@vger.kernel.org -+S: Orphan -+F: drivers/net/wireless/ray* -+ -+RC-CORE / LIRC FRAMEWORK -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: http://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/driver-api/media/rc-core.rst -+F: Documentation/userspace-api/media/rc/ -+F: drivers/media/rc/ -+F: include/media/rc-map.h -+F: include/media/rc-core.h -+F: include/uapi/linux/lirc.h -+ -+RCMM REMOTE CONTROLS DECODER -+M: Patrick Lerda <patrick9876@free.fr> -+S: Maintained -+F: drivers/media/rc/ir-rcmm-decoder.c -+ -+RCUTORTURE TEST FRAMEWORK -+M: "Paul E. McKenney" <paulmck@kernel.org> -+M: Josh Triplett <josh@joshtriplett.org> -+R: Steven Rostedt <rostedt@goodmis.org> -+R: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -+R: Lai Jiangshan <jiangshanlai@gmail.com> -+L: rcu@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev -+F: tools/testing/selftests/rcutorture -+ -+RDACM20 Camera Sensor -+M: Jacopo Mondi <jacopo+renesas@jmondi.org> -+M: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> -+M: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> -+M: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml -+F: drivers/media/i2c/max9271.c -+F: drivers/media/i2c/max9271.h -+F: drivers/media/i2c/rdacm20.c -+ -+RDACM21 Camera Sensor -+M: Jacopo Mondi <jacopo+renesas@jmondi.org> -+M: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> -+M: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> -+M: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml -+F: drivers/media/i2c/max9271.c -+F: drivers/media/i2c/max9271.h -+F: drivers/media/i2c/rdacm21.c -+ -+RDC R-321X SoC -+M: Florian Fainelli <florian@openwrt.org> -+S: Maintained -+ -+RDC R6040 FAST ETHERNET DRIVER -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/rdc/r6040.c -+ -+RDMAVT - RDMA verbs software -+M: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com> -+M: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/sw/rdmavt -+ -+RDS - RELIABLE DATAGRAM SOCKETS -+M: Santosh Shilimkar <santosh.shilimkar@oracle.com> -+L: netdev@vger.kernel.org -+L: linux-rdma@vger.kernel.org -+L: rds-devel@oss.oracle.com (moderated for non-subscribers) -+S: Supported -+W: https://oss.oracle.com/projects/rds/ -+F: Documentation/networking/rds.rst -+F: net/rds/ -+ -+RDT - RESOURCE ALLOCATION -+M: Fenghua Yu <fenghua.yu@intel.com> -+M: Reinette Chatre <reinette.chatre@intel.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: Documentation/x86/resctrl* -+F: arch/x86/include/asm/resctrl.h -+F: arch/x86/kernel/cpu/resctrl/ -+F: tools/testing/selftests/resctrl/ -+ -+READ-COPY UPDATE (RCU) -+M: "Paul E. McKenney" <paulmck@kernel.org> -+M: Josh Triplett <josh@joshtriplett.org> -+R: Steven Rostedt <rostedt@goodmis.org> -+R: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -+R: Lai Jiangshan <jiangshanlai@gmail.com> -+R: Joel Fernandes <joel@joelfernandes.org> -+L: rcu@vger.kernel.org -+S: Supported -+W: http://www.rdrop.com/users/paulmck/RCU/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev -+F: Documentation/RCU/ -+F: include/linux/rcu* -+F: kernel/rcu/ -+X: Documentation/RCU/torture.rst -+X: include/linux/srcu*.h -+X: kernel/rcu/srcu*.c -+ -+REAL TIME CLOCK (RTC) SUBSYSTEM -+M: Alessandro Zummo <a.zummo@towertech.it> -+M: Alexandre Belloni <alexandre.belloni@bootlin.com> -+L: linux-rtc@vger.kernel.org -+S: Maintained -+Q: http://patchwork.ozlabs.org/project/rtc-linux/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git -+F: Documentation/admin-guide/rtc.rst -+F: Documentation/devicetree/bindings/rtc/ -+F: drivers/rtc/ -+F: include/linux/platform_data/rtc-* -+F: include/linux/rtc.h -+F: include/linux/rtc/ -+F: include/uapi/linux/rtc.h -+F: tools/testing/selftests/rtc/ -+ -+REALTEK AUDIO CODECS -+M: Oder Chiou <oder_chiou@realtek.com> -+S: Maintained -+F: include/sound/rt*.h -+F: sound/soc/codecs/rt* -+ -+REALTEK RTL83xx SMI DSA ROUTER CHIPS -+M: Linus Walleij <linus.walleij@linaro.org> -+S: Maintained -+F: Documentation/devicetree/bindings/net/dsa/realtek-smi.txt -+F: drivers/net/dsa/realtek-smi* -+F: drivers/net/dsa/rtl83* -+ -+REALTEK WIRELESS DRIVER (rtlwifi family) -+M: Ping-Ke Shih <pkshih@realtek.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -+F: drivers/net/wireless/realtek/rtlwifi/ -+ -+REALTEK WIRELESS DRIVER (rtw88) -+M: Yan-Hsuan Chuang <tony0620emma@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/realtek/rtw88/ -+ -+REDPINE WIRELESS DRIVER -+M: Amitkumar Karwar <amitkarwar@gmail.com> -+M: Siva Rebbagondla <siva8118@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/rsi/ -+ -+REGISTER MAP ABSTRACTION -+M: Mark Brown <broonie@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git -+F: Documentation/devicetree/bindings/regmap/ -+F: drivers/base/regmap/ -+F: include/linux/regmap.h -+ -+REISERFS FILE SYSTEM -+L: reiserfs-devel@vger.kernel.org -+S: Supported -+F: fs/reiserfs/ -+ -+REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM -+M: Ohad Ben-Cohen <ohad@wizery.com> -+M: Bjorn Andersson <bjorn.andersson@linaro.org> -+M: Mathieu Poirier <mathieu.poirier@linaro.org> -+L: linux-remoteproc@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git rproc-next -+F: Documentation/ABI/testing/sysfs-class-remoteproc -+F: Documentation/devicetree/bindings/remoteproc/ -+F: Documentation/staging/remoteproc.rst -+F: drivers/remoteproc/ -+F: include/linux/remoteproc.h -+F: include/linux/remoteproc/ -+ -+REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM -+M: Ohad Ben-Cohen <ohad@wizery.com> -+M: Bjorn Andersson <bjorn.andersson@linaro.org> -+M: Mathieu Poirier <mathieu.poirier@linaro.org> -+L: linux-remoteproc@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git rpmsg-next -+F: Documentation/ABI/testing/sysfs-bus-rpmsg -+F: Documentation/staging/rpmsg.rst -+F: drivers/rpmsg/ -+F: include/linux/rpmsg.h -+F: include/linux/rpmsg/ -+F: include/uapi/linux/rpmsg.h -+F: samples/rpmsg/ -+ -+REMOTE PROCESSOR MESSAGING (RPMSG) WWAN CONTROL DRIVER -+M: Stephan Gerhold <stephan@gerhold.net> -+L: netdev@vger.kernel.org -+L: linux-remoteproc@vger.kernel.org -+S: Maintained -+F: drivers/net/wwan/rpmsg_wwan_ctrl.c -+ -+RENESAS CLOCK DRIVERS -+M: Geert Uytterhoeven <geert+renesas@glider.be> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git renesas-clk -+F: Documentation/devicetree/bindings/clock/renesas,* -+F: drivers/clk/renesas/ -+ -+RENESAS EMEV2 I2C DRIVER -+M: Wolfram Sang <wsa+renesas@sang-engineering.com> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml -+F: drivers/i2c/busses/i2c-emev2.c -+ -+RENESAS ETHERNET DRIVERS -+R: Sergey Shtylyov <s.shtylyov@omp.ru> -+L: netdev@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+F: Documentation/devicetree/bindings/net/renesas,*.yaml -+F: drivers/net/ethernet/renesas/ -+F: include/linux/sh_eth.h -+ -+RENESAS R-CAR GYROADC DRIVER -+M: Marek Vasut <marek.vasut@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/iio/adc/renesas,rcar-gyroadc.yaml -+F: drivers/iio/adc/rcar-gyroadc.c -+ -+RENESAS R-CAR I2C DRIVERS -+M: Wolfram Sang <wsa+renesas@sang-engineering.com> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml -+F: Documentation/devicetree/bindings/i2c/renesas,rmobile-iic.yaml -+F: drivers/i2c/busses/i2c-rcar.c -+F: drivers/i2c/busses/i2c-sh_mobile.c -+ -+RENESAS R-CAR THERMAL DRIVERS -+M: Niklas Söderlund <niklas.soderlund@ragnatech.se> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.yaml -+F: Documentation/devicetree/bindings/thermal/rcar-thermal.yaml -+F: drivers/thermal/rcar_gen3_thermal.c -+F: drivers/thermal/rcar_thermal.c -+ -+RENESAS RIIC DRIVER -+M: Chris Brandt <chris.brandt@renesas.com> -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/i2c/renesas,riic.yaml -+F: drivers/i2c/busses/i2c-riic.c -+ -+RENESAS USB PHY DRIVER -+M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> -+L: linux-renesas-soc@vger.kernel.org -+S: Maintained -+F: drivers/phy/renesas/phy-rcar-gen3-usb*.c -+ -+RENESAS RZ/G2L A/D DRIVER -+M: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> -+L: linux-iio@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/iio/adc/renesas,rzg2l-adc.yaml -+F: drivers/iio/adc/rzg2l_adc.c -+ -+RESET CONTROLLER FRAMEWORK -+M: Philipp Zabel <p.zabel@pengutronix.de> -+S: Maintained -+T: git git://git.pengutronix.de/git/pza/linux -+F: Documentation/devicetree/bindings/reset/ -+F: Documentation/driver-api/reset.rst -+F: drivers/reset/ -+F: include/dt-bindings/reset/ -+F: include/linux/reset-controller.h -+F: include/linux/reset.h -+F: include/linux/reset/ -+K: \b(?:devm_|of_)?reset_control(?:ler_[a-z]+|_[a-z_]+)?\b -+ -+RESTARTABLE SEQUENCES SUPPORT -+M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -+M: Peter Zijlstra <peterz@infradead.org> -+M: "Paul E. McKenney" <paulmck@kernel.org> -+M: Boqun Feng <boqun.feng@gmail.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: include/trace/events/rseq.h -+F: include/uapi/linux/rseq.h -+F: kernel/rseq.c -+F: tools/testing/selftests/rseq/ -+ -+RFKILL -+M: Johannes Berg <johannes@sipsolutions.net> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git -+F: Documentation/ABI/stable/sysfs-class-rfkill -+F: Documentation/driver-api/rfkill.rst -+F: include/linux/rfkill.h -+F: include/uapi/linux/rfkill.h -+F: net/rfkill/ -+ -+RHASHTABLE -+M: Thomas Graf <tgraf@suug.ch> -+M: Herbert Xu <herbert@gondor.apana.org.au> -+L: netdev@vger.kernel.org -+S: Maintained -+F: include/linux/rhashtable-types.h -+F: include/linux/rhashtable.h -+F: lib/rhashtable.c -+F: lib/test_rhashtable.c -+ -+RICOH R5C592 MEMORYSTICK DRIVER -+M: Maxim Levitsky <maximlevitsky@gmail.com> -+S: Maintained -+F: drivers/memstick/host/r592.* -+ -+RICOH SMARTMEDIA/XD DRIVER -+M: Maxim Levitsky <maximlevitsky@gmail.com> -+S: Maintained -+F: drivers/mtd/nand/raw/r852.c -+F: drivers/mtd/nand/raw/r852.h -+ -+RISC-V ARCHITECTURE -+M: Paul Walmsley <paul.walmsley@sifive.com> -+M: Palmer Dabbelt <palmer@dabbelt.com> -+M: Albert Ou <aou@eecs.berkeley.edu> -+L: linux-riscv@lists.infradead.org -+S: Supported -+P: Documentation/riscv/patch-acceptance.rst -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git -+F: arch/riscv/ -+N: riscv -+K: riscv -+ -+RISC-V/MICROCHIP POLARFIRE SOC SUPPORT -+M: Lewis Hanly <lewis.hanly@microchip.com> -+L: linux-riscv@lists.infradead.org -+S: Supported -+F: drivers/mailbox/mailbox-mpfs.c -+F: drivers/soc/microchip/ -+F: include/soc/microchip/mpfs.h -+ -+RNBD BLOCK DRIVERS -+M: Md. Haris Iqbal <haris.iqbal@ionos.com> -+M: Jack Wang <jinpu.wang@ionos.com> -+L: linux-block@vger.kernel.org -+S: Maintained -+F: drivers/block/rnbd/ -+ -+ROCCAT DRIVERS -+M: Stefan Achatz <erazor_de@users.sourceforge.net> -+S: Maintained -+W: http://sourceforge.net/projects/roccat/ -+F: Documentation/ABI/*/sysfs-driver-hid-roccat* -+F: drivers/hid/hid-roccat* -+F: include/linux/hid-roccat* -+ -+ROCKCHIP ISP V1 DRIVER -+M: Helen Koike <helen.koike@collabora.com> -+M: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> -+L: linux-media@vger.kernel.org -+L: linux-rockchip@lists.infradead.org -+S: Maintained -+F: Documentation/admin-guide/media/rkisp1.rst -+F: Documentation/devicetree/bindings/media/rockchip-isp1.yaml -+F: Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst -+F: drivers/media/platform/rockchip/rkisp1 -+F: include/uapi/linux/rkisp1-config.h -+ -+ROCKCHIP RASTER 2D GRAPHIC ACCELERATION UNIT DRIVER -+M: Jacob Chen <jacob-chen@iotwrt.com> -+M: Ezequiel Garcia <ezequiel@collabora.com> -+L: linux-media@vger.kernel.org -+L: linux-rockchip@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/rockchip-rga.yaml -+F: drivers/media/platform/rockchip/rga/ -+ -+ROCKCHIP VIDEO DECODER DRIVER -+M: Ezequiel Garcia <ezequiel@collabora.com> -+L: linux-media@vger.kernel.org -+L: linux-rockchip@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/media/rockchip,vdec.yaml -+F: drivers/staging/media/rkvdec/ -+ -+ROCKER DRIVER -+M: Jiri Pirko <jiri@resnulli.us> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/rocker/ -+ -+ROCKETPORT EXPRESS/INFINITY DRIVER -+M: Kevin Cernekee <cernekee@gmail.com> -+L: linux-serial@vger.kernel.org -+S: Odd Fixes -+F: drivers/tty/serial/rp2.* -+ -+ROHM BD99954 CHARGER IC -+R: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> -+L: linux-power@fi.rohmeurope.com -+S: Supported -+F: drivers/power/supply/bd99954-charger.c -+F: drivers/power/supply/bd99954-charger.h -+ -+ROHM BH1750 AMBIENT LIGHT SENSOR DRIVER -+M: Tomasz Duszynski <tduszyns@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/iio/light/bh1750.yaml -+F: drivers/iio/light/bh1750.c -+ -+ROHM MULTIFUNCTION BD9571MWV-M PMIC DEVICE DRIVERS -+M: Marek Vasut <marek.vasut+renesas@gmail.com> -+L: linux-kernel@vger.kernel.org -+L: linux-renesas-soc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/mfd/bd9571mwv.txt -+F: drivers/gpio/gpio-bd9571mwv.c -+F: drivers/mfd/bd9571mwv.c -+F: drivers/regulator/bd9571mwv-regulator.c -+F: include/linux/mfd/bd9571mwv.h -+ -+ROHM POWER MANAGEMENT IC DEVICE DRIVERS -+R: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> -+L: linux-power@fi.rohmeurope.com -+S: Supported -+F: Documentation/devicetree/bindings/mfd/rohm,bd70528-pmic.txt -+F: Documentation/devicetree/bindings/regulator/rohm,bd70528-regulator.txt -+F: drivers/clk/clk-bd718x7.c -+F: drivers/gpio/gpio-bd70528.c -+F: drivers/gpio/gpio-bd71815.c -+F: drivers/gpio/gpio-bd71828.c -+F: drivers/mfd/rohm-bd70528.c -+F: drivers/mfd/rohm-bd71828.c -+F: drivers/mfd/rohm-bd718x7.c -+F: drivers/mfd/rohm-bd9576.c -+F: drivers/power/supply/bd70528-charger.c -+F: drivers/regulator/bd70528-regulator.c -+F: drivers/regulator/bd71815-regulator.c -+F: drivers/regulator/bd71828-regulator.c -+F: drivers/regulator/bd718x7-regulator.c -+F: drivers/regulator/bd9576-regulator.c -+F: drivers/regulator/rohm-regulator.c -+F: drivers/rtc/rtc-bd70528.c -+F: drivers/watchdog/bd70528_wdt.c -+F: drivers/watchdog/bd9576_wdt.c -+F: include/linux/mfd/rohm-bd70528.h -+F: include/linux/mfd/rohm-bd71815.h -+F: include/linux/mfd/rohm-bd71828.h -+F: include/linux/mfd/rohm-bd718x7.h -+F: include/linux/mfd/rohm-bd957x.h -+F: include/linux/mfd/rohm-generic.h -+F: include/linux/mfd/rohm-shared.h -+ -+ROSE NETWORK LAYER -+M: Ralf Baechle <ralf@linux-mips.org> -+L: linux-hams@vger.kernel.org -+S: Maintained -+W: http://www.linux-ax25.org/ -+F: include/net/rose.h -+F: include/uapi/linux/rose.h -+F: net/rose/ -+ -+ROTATION DRIVER FOR ALLWINNER A83T -+M: Jernej Skrabec <jernej.skrabec@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/allwinner,sun8i-a83t-de2-rotate.yaml -+F: drivers/media/platform/sunxi/sun8i-rotate/ -+ -+RTL2830 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/rtl2830* -+ -+RTL2832 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/rtl2832* -+ -+RTL2832_SDR MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/rtl2832_sdr* -+ -+RTL8180 WIRELESS DRIVER -+L: linux-wireless@vger.kernel.org -+S: Orphan -+W: https://wireless.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -+F: drivers/net/wireless/realtek/rtl818x/rtl8180/ -+ -+RTL8187 WIRELESS DRIVER -+M: Herton Ronaldo Krzesinski <herton@canonical.com> -+M: Hin-Tak Leung <htl10@users.sourceforge.net> -+M: Larry Finger <Larry.Finger@lwfinger.net> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+W: https://wireless.wiki.kernel.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -+F: drivers/net/wireless/realtek/rtl818x/rtl8187/ -+ -+RTL8XXXU WIRELESS DRIVER (rtl8xxxu) -+M: Jes Sorensen <Jes.Sorensen@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel -+F: drivers/net/wireless/realtek/rtl8xxxu/ -+ -+RTRS TRANSPORT DRIVERS -+M: Md. Haris Iqbal <haris.iqbal@ionos.com> -+M: Jack Wang <jinpu.wang@ionos.com> -+L: linux-rdma@vger.kernel.org -+S: Maintained -+F: drivers/infiniband/ulp/rtrs/ -+ -+RXRPC SOCKETS (AF_RXRPC) -+M: David Howells <dhowells@redhat.com> -+M: Marc Dionne <marc.dionne@auristor.com> -+L: linux-afs@lists.infradead.org -+S: Supported -+W: https://www.infradead.org/~dhowells/kafs/ -+F: Documentation/networking/rxrpc.rst -+F: include/keys/rxrpc-type.h -+F: include/net/af_rxrpc.h -+F: include/trace/events/rxrpc.h -+F: include/uapi/linux/rxrpc.h -+F: net/rxrpc/ -+ -+S3 SAVAGE FRAMEBUFFER DRIVER -+M: Antonino Daplas <adaplas@gmail.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/savage/ -+ -+S390 -+M: Heiko Carstens <hca@linux.ibm.com> -+M: Vasily Gorbik <gor@linux.ibm.com> -+M: Christian Borntraeger <borntraeger@de.ibm.com> -+R: Alexander Gordeev <agordeev@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git -+F: Documentation/driver-api/s390-drivers.rst -+F: Documentation/s390/ -+F: arch/s390/ -+F: drivers/s390/ -+ -+S390 COMMON I/O LAYER -+M: Vineeth Vijayan <vneethv@linux.ibm.com> -+M: Peter Oberparleiter <oberpar@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: drivers/s390/cio/ -+ -+S390 DASD DRIVER -+M: Stefan Haberland <sth@linux.ibm.com> -+M: Jan Hoeppner <hoeppner@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: block/partitions/ibm.c -+F: drivers/s390/block/dasd* -+F: include/linux/dasd_mod.h -+ -+S390 IOMMU (PCI) -+M: Matthew Rosato <mjrosato@linux.ibm.com> -+M: Gerald Schaefer <gerald.schaefer@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: drivers/iommu/s390-iommu.c -+ -+S390 IUCV NETWORK LAYER -+M: Julian Wiedmann <jwi@linux.ibm.com> -+M: Karsten Graul <kgraul@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: drivers/s390/net/*iucv* -+F: include/net/iucv/ -+F: net/iucv/ -+ -+S390 NETWORK DRIVERS -+M: Julian Wiedmann <jwi@linux.ibm.com> -+M: Karsten Graul <kgraul@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: drivers/s390/net/ -+ -+S390 PCI SUBSYSTEM -+M: Niklas Schnelle <schnelle@linux.ibm.com> -+M: Gerald Schaefer <gerald.schaefer@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: arch/s390/pci/ -+F: drivers/pci/hotplug/s390_pci_hpc.c -+F: Documentation/s390/pci.rst -+ -+S390 VFIO AP DRIVER -+M: Tony Krowiak <akrowiak@linux.ibm.com> -+M: Halil Pasic <pasic@linux.ibm.com> -+M: Jason Herne <jjherne@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: Documentation/s390/vfio-ap.rst -+F: drivers/s390/crypto/vfio_ap_drv.c -+F: drivers/s390/crypto/vfio_ap_ops.c -+F: drivers/s390/crypto/vfio_ap_private.h -+ -+S390 VFIO-CCW DRIVER -+M: Eric Farman <farman@linux.ibm.com> -+M: Matthew Rosato <mjrosato@linux.ibm.com> -+R: Halil Pasic <pasic@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+L: kvm@vger.kernel.org -+S: Supported -+F: Documentation/s390/vfio-ccw.rst -+F: drivers/s390/cio/vfio_ccw* -+F: include/uapi/linux/vfio_ccw.h -+ -+S390 VFIO-PCI DRIVER -+M: Matthew Rosato <mjrosato@linux.ibm.com> -+M: Eric Farman <farman@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+L: kvm@vger.kernel.org -+S: Supported -+F: drivers/vfio/pci/vfio_pci_zdev.c -+F: include/uapi/linux/vfio_zdev.h -+ -+S390 ZCRYPT DRIVER -+M: Harald Freudenberger <freude@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: drivers/s390/crypto/ -+ -+S390 ZFCP DRIVER -+M: Steffen Maier <maier@linux.ibm.com> -+M: Benjamin Block <bblock@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: drivers/s390/scsi/zfcp_* -+ -+S3C ADC BATTERY DRIVER -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+L: linux-samsung-soc@vger.kernel.org -+S: Odd Fixes -+F: drivers/power/supply/s3c_adc_battery.c -+F: include/linux/s3c_adc_battery.h -+ -+S3C24XX SD/MMC Driver -+M: Ben Dooks <ben-linux@fluff.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+F: drivers/mmc/host/s3cmci.* -+ -+SAA6588 RDS RECEIVER DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/saa6588* -+ -+SAA7134 VIDEO4LINUX DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/driver-api/media/drivers/saa7134* -+F: drivers/media/pci/saa7134/ -+ -+SAA7146 VIDEO4LINUX-2 DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/common/saa7146/ -+F: drivers/media/pci/saa7146/ -+F: include/media/drv-intf/saa7146* -+ -+SAFESETID SECURITY MODULE -+M: Micah Morton <mortonm@chromium.org> -+S: Supported -+F: Documentation/admin-guide/LSM/SafeSetID.rst -+F: security/safesetid/ -+ -+SAMSUNG AUDIO (ASoC) DRIVERS -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Sylwester Nawrocki <s.nawrocki@samsung.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+F: Documentation/devicetree/bindings/sound/samsung* -+F: sound/soc/samsung/ -+ -+SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+L: linux-crypto@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/rng/samsung,exynos4-rng.yaml -+F: drivers/crypto/exynos-rng.c -+ -+SAMSUNG EXYNOS TRUE RANDOM NUMBER GENERATOR (TRNG) DRIVER -+M: Łukasz Stelmach <l.stelmach@samsung.com> -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.yaml -+F: drivers/char/hw_random/exynos-trng.c -+ -+SAMSUNG FRAMEBUFFER DRIVER -+M: Jingoo Han <jingoohan1@gmail.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/s3c-fb.c -+ -+SAMSUNG INTERCONNECT DRIVERS -+M: Sylwester Nawrocki <s.nawrocki@samsung.com> -+M: Artur Świgoń <a.swigon@samsung.com> -+L: linux-pm@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Supported -+F: drivers/interconnect/samsung/ -+ -+SAMSUNG LAPTOP DRIVER -+M: Corentin Chary <corentin.chary@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/samsung-laptop.c -+ -+SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> -+L: linux-kernel@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/clock/samsung,s2mps11.txt -+F: Documentation/devicetree/bindings/mfd/samsung,sec-core.txt -+F: Documentation/devicetree/bindings/regulator/samsung,s2m*.txt -+F: Documentation/devicetree/bindings/regulator/samsung,s5m*.txt -+F: drivers/clk/clk-s2mps11.c -+F: drivers/mfd/sec*.c -+F: drivers/regulator/s2m*.c -+F: drivers/regulator/s5m*.c -+F: drivers/rtc/rtc-s5m.c -+F: include/linux/mfd/samsung/ -+ -+SAMSUNG S3C24XX/S3C64XX SOC SERIES CAMIF DRIVER -+M: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> -+L: linux-media@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+F: drivers/media/platform/s3c-camif/ -+F: include/media/drv-intf/s3c_camif.h -+ -+SAMSUNG S3FWRN5 NFC DRIVER -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Krzysztof Opasiak <k.opasiak@samsung.com> -+L: linux-nfc@lists.01.org (subscribers-only) -+S: Maintained -+F: Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml -+F: drivers/nfc/s3fwrn5 -+ -+SAMSUNG S5C73M3 CAMERA DRIVER -+M: Andrzej Hajda <a.hajda@samsung.com> -+L: linux-media@vger.kernel.org -+S: Supported -+F: drivers/media/i2c/s5c73m3/* -+ -+SAMSUNG S5K5BAF CAMERA DRIVER -+M: Andrzej Hajda <a.hajda@samsung.com> -+L: linux-media@vger.kernel.org -+S: Supported -+F: drivers/media/i2c/s5k5baf.c -+ -+SAMSUNG S5P Security SubSystem (SSS) DRIVER -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Vladimir Zapolskiy <vz@mleia.com> -+L: linux-crypto@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/crypto/samsung-slimsss.yaml -+F: Documentation/devicetree/bindings/crypto/samsung-sss.yaml -+F: drivers/crypto/s5p-sss.c -+ -+SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS -+M: Sylwester Nawrocki <s.nawrocki@samsung.com> -+L: linux-media@vger.kernel.org -+S: Supported -+Q: https://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/platform/exynos4-is/ -+ -+SAMSUNG SOC CLOCK DRIVERS -+M: Sylwester Nawrocki <s.nawrocki@samsung.com> -+M: Tomasz Figa <tomasz.figa@gmail.com> -+M: Chanwoo Choi <cw00.choi@samsung.com> -+L: linux-samsung-soc@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git -+F: Documentation/devicetree/bindings/clock/exynos*.txt -+F: Documentation/devicetree/bindings/clock/samsung,*.yaml -+F: Documentation/devicetree/bindings/clock/samsung,s3c* -+F: Documentation/devicetree/bindings/clock/samsung,s5p* -+F: drivers/clk/samsung/ -+F: include/dt-bindings/clock/exynos*.h -+F: include/dt-bindings/clock/s3c*.h -+F: include/dt-bindings/clock/s5p*.h -+F: include/dt-bindings/clock/samsung,*.h -+F: include/linux/clk/samsung.h -+F: include/linux/platform_data/clk-s3c2410.h -+ -+SAMSUNG SPI DRIVERS -+M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> -+M: Andi Shyti <andi@etezian.org> -+L: linux-spi@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/spi/spi-samsung.txt -+F: drivers/spi/spi-s3c* -+F: include/linux/platform_data/spi-s3c64xx.h -+F: include/linux/spi/s3c24xx-fiq.h -+ -+SAMSUNG SXGBE DRIVERS -+M: Byungho An <bh74.an@samsung.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/samsung/sxgbe/ -+ -+SAMSUNG THERMAL DRIVER -+M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> -+L: linux-pm@vger.kernel.org -+L: linux-samsung-soc@vger.kernel.org -+S: Supported -+T: git https://github.com/lmajewski/linux-samsung-thermal.git -+F: drivers/thermal/samsung/ -+ -+SAMSUNG USB2 PHY DRIVER -+M: Sylwester Nawrocki <s.nawrocki@samsung.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/phy/samsung-phy.txt -+F: Documentation/driver-api/phy/samsung-usb2.rst -+F: drivers/phy/samsung/phy-exynos4210-usb2.c -+F: drivers/phy/samsung/phy-exynos4x12-usb2.c -+F: drivers/phy/samsung/phy-exynos5250-usb2.c -+F: drivers/phy/samsung/phy-s5pv210-usb2.c -+F: drivers/phy/samsung/phy-samsung-usb2.c -+F: drivers/phy/samsung/phy-samsung-usb2.h -+ -+SANCLOUD BEAGLEBONE ENHANCED DEVICE TREE -+M: Paul Barker <paul.barker@sancloud.com> -+R: Marc Murphy <marc.murphy@sancloud.com> -+S: Supported -+F: arch/arm/boot/dts/am335x-sancloud* -+ -+SC1200 WDT DRIVER -+M: Zwane Mwaikambo <zwanem@gmail.com> -+S: Maintained -+F: drivers/watchdog/sc1200wdt.c -+ -+SCHEDULER -+M: Ingo Molnar <mingo@redhat.com> -+M: Peter Zijlstra <peterz@infradead.org> -+M: Juri Lelli <juri.lelli@redhat.com> (SCHED_DEADLINE) -+M: Vincent Guittot <vincent.guittot@linaro.org> (SCHED_NORMAL) -+R: Dietmar Eggemann <dietmar.eggemann@arm.com> (SCHED_NORMAL) -+R: Steven Rostedt <rostedt@goodmis.org> (SCHED_FIFO/SCHED_RR) -+R: Ben Segall <bsegall@google.com> (CONFIG_CFS_BANDWIDTH) -+R: Mel Gorman <mgorman@suse.de> (CONFIG_NUMA_BALANCING) -+R: Daniel Bristot de Oliveira <bristot@redhat.com> (SCHED_DEADLINE) -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core -+F: include/linux/preempt.h -+F: include/linux/sched.h -+F: include/linux/wait.h -+F: include/uapi/linux/sched.h -+F: kernel/sched/ -+ -+SCR24X CHIP CARD INTERFACE DRIVER -+M: Lubomir Rintel <lkundrak@v3.sk> -+S: Supported -+F: drivers/char/pcmcia/scr24x_cs.c -+ -+SCSI RDMA PROTOCOL (SRP) INITIATOR -+M: Bart Van Assche <bvanassche@acm.org> -+L: linux-rdma@vger.kernel.org -+S: Supported -+Q: http://patchwork.kernel.org/project/linux-rdma/list/ -+F: drivers/infiniband/ulp/srp/ -+F: include/scsi/srp.h -+ -+SCSI RDMA PROTOCOL (SRP) TARGET -+M: Bart Van Assche <bvanassche@acm.org> -+L: linux-rdma@vger.kernel.org -+L: target-devel@vger.kernel.org -+S: Supported -+Q: http://patchwork.kernel.org/project/linux-rdma/list/ -+F: drivers/infiniband/ulp/srpt/ -+ -+SCSI SG DRIVER -+M: Doug Gilbert <dgilbert@interlog.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+W: http://sg.danny.cz/sg -+F: Documentation/scsi/scsi-generic.rst -+F: drivers/scsi/sg.c -+F: include/scsi/sg.h -+ -+SCSI SUBSYSTEM -+M: "James E.J. Bottomley" <jejb@linux.ibm.com> -+M: "Martin K. Petersen" <martin.petersen@oracle.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+Q: https://patchwork.kernel.org/project/linux-scsi/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git -+F: Documentation/devicetree/bindings/scsi/ -+F: drivers/scsi/ -+F: include/scsi/ -+ -+SCSI TAPE DRIVER -+M: Kai Mäkisara <Kai.Makisara@kolumbus.fi> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: Documentation/scsi/st.rst -+F: drivers/scsi/st.* -+F: drivers/scsi/st_*.h -+ -+SCSI TARGET CORE USER DRIVER -+M: Bodo Stroesser <bostroesser@gmail.com> -+L: linux-scsi@vger.kernel.org -+L: target-devel@vger.kernel.org -+S: Supported -+F: Documentation/target/tcmu-design.rst -+F: drivers/target/target_core_user.c -+F: include/uapi/linux/target_core_user.h -+ -+SCSI TARGET SUBSYSTEM -+M: "Martin K. Petersen" <martin.petersen@oracle.com> -+L: linux-scsi@vger.kernel.org -+L: target-devel@vger.kernel.org -+S: Supported -+W: http://www.linux-iscsi.org -+Q: https://patchwork.kernel.org/project/target-devel/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git -+F: Documentation/target/ -+F: drivers/target/ -+F: include/target/ -+ -+SCTP PROTOCOL -+M: Vlad Yasevich <vyasevich@gmail.com> -+M: Neil Horman <nhorman@tuxdriver.com> -+M: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> -+L: linux-sctp@vger.kernel.org -+S: Maintained -+W: http://lksctp.sourceforge.net -+F: Documentation/networking/sctp.rst -+F: include/linux/sctp.h -+F: include/net/sctp/ -+F: include/uapi/linux/sctp.h -+F: net/sctp/ -+ -+SCx200 CPU SUPPORT -+M: Jim Cromie <jim.cromie@gmail.com> -+S: Odd Fixes -+F: Documentation/i2c/busses/scx200_acb.rst -+F: arch/x86/platform/scx200/ -+F: drivers/i2c/busses/scx200* -+F: drivers/mtd/maps/scx200_docflash.c -+F: drivers/watchdog/scx200_wdt.c -+F: include/linux/scx200.h -+ -+SCx200 GPIO DRIVER -+M: Jim Cromie <jim.cromie@gmail.com> -+S: Maintained -+F: drivers/char/scx200_gpio.c -+F: include/linux/scx200_gpio.h -+ -+SCx200 HRT CLOCKSOURCE DRIVER -+M: Jim Cromie <jim.cromie@gmail.com> -+S: Maintained -+F: drivers/clocksource/scx200_hrt.c -+ -+SDRICOH_CS MMC/SD HOST CONTROLLER INTERFACE DRIVER -+M: Sascha Sommer <saschasommer@freenet.de> -+L: sdricohcs-devel@lists.sourceforge.net (subscribers-only) -+S: Maintained -+F: drivers/mmc/host/sdricoh_cs.c -+ -+SECO BOARDS CEC DRIVER -+M: Ettore Chimenti <ek5.chimenti@gmail.com> -+S: Maintained -+F: drivers/media/cec/platform/seco/seco-cec.c -+F: drivers/media/cec/platform/seco/seco-cec.h -+ -+SECURE COMPUTING -+M: Kees Cook <keescook@chromium.org> -+R: Andy Lutomirski <luto@amacapital.net> -+R: Will Drewry <wad@chromium.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git seccomp -+F: Documentation/userspace-api/seccomp_filter.rst -+F: include/linux/seccomp.h -+F: include/uapi/linux/seccomp.h -+F: kernel/seccomp.c -+F: tools/testing/selftests/kselftest_harness.h -+F: tools/testing/selftests/seccomp/* -+K: \bsecure_computing -+K: \bTIF_SECCOMP\b -+ -+SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) Broadcom BRCMSTB DRIVER -+M: Al Cooper <alcooperx@gmail.com> -+L: linux-mmc@vger.kernel.org -+L: bcm-kernel-feedback-list@broadcom.com -+S: Maintained -+F: drivers/mmc/host/sdhci-brcmstb* -+ -+SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER -+M: Adrian Hunter <adrian.hunter@intel.com> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/sdhci* -+F: include/linux/mmc/sdhci* -+ -+SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) MICROCHIP DRIVER -+M: Eugen Hristev <eugen.hristev@microchip.com> -+L: linux-mmc@vger.kernel.org -+S: Supported -+F: drivers/mmc/host/sdhci-of-at91.c -+ -+SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER -+M: Ben Dooks <ben-linux@fluff.org> -+M: Jaehoon Chung <jh80.chung@samsung.com> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/sdhci-s3c* -+ -+SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER -+M: Viresh Kumar <vireshk@kernel.org> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/sdhci-spear.c -+ -+SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) TI OMAP DRIVER -+M: Kishon Vijay Abraham I <kishon@ti.com> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/sdhci-omap.c -+ -+SECURE ENCRYPTING DEVICE (SED) OPAL DRIVER -+M: Jonathan Derrick <jonathan.derrick@intel.com> -+M: Revanth Rajashekar <revanth.rajashekar@intel.com> -+L: linux-block@vger.kernel.org -+S: Supported -+F: block/opal_proto.h -+F: block/sed* -+F: include/linux/sed* -+F: include/uapi/linux/sed* -+ -+SECURITY CONTACT -+M: Security Officers <security@kernel.org> -+S: Supported -+F: Documentation/admin-guide/security-bugs.rst -+ -+SECURITY SUBSYSTEM -+M: James Morris <jmorris@namei.org> -+M: "Serge E. Hallyn" <serge@hallyn.com> -+L: linux-security-module@vger.kernel.org (suggested Cc:) -+S: Supported -+W: http://kernsec.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git -+F: security/ -+X: security/selinux/ -+ -+SELINUX SECURITY MODULE -+M: Paul Moore <paul@paul-moore.com> -+M: Stephen Smalley <stephen.smalley.work@gmail.com> -+M: Eric Paris <eparis@parisplace.org> -+L: selinux@vger.kernel.org -+S: Supported -+W: https://selinuxproject.org -+W: https://github.com/SELinuxProject -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux.git -+F: Documentation/ABI/obsolete/sysfs-selinux-checkreqprot -+F: Documentation/ABI/obsolete/sysfs-selinux-disable -+F: Documentation/admin-guide/LSM/SELinux.rst -+F: include/trace/events/avc.h -+F: include/uapi/linux/selinux_netlink.h -+F: scripts/selinux/ -+F: security/selinux/ -+ -+SENSABLE PHANTOM -+M: Jiri Slaby <jirislaby@kernel.org> -+S: Maintained -+F: drivers/misc/phantom.c -+F: include/uapi/linux/phantom.h -+ -+SENSIRION SCD30 CARBON DIOXIDE SENSOR DRIVER -+M: Tomasz Duszynski <tomasz.duszynski@octakon.com> -+S: Maintained -+F: Documentation/devicetree/bindings/iio/chemical/sensirion,scd30.yaml -+F: drivers/iio/chemical/scd30.h -+F: drivers/iio/chemical/scd30_core.c -+F: drivers/iio/chemical/scd30_i2c.c -+F: drivers/iio/chemical/scd30_serial.c -+ -+SENSIRION SGP40 GAS SENSOR DRIVER -+M: Andreas Klinger <ak@it-klinger.de> -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-iio-chemical-sgp40 -+F: drivers/iio/chemical/sgp40.c -+ -+SENSIRION SPS30 AIR POLLUTION SENSOR DRIVER -+M: Tomasz Duszynski <tduszyns@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/iio/chemical/sensirion,sps30.yaml -+F: drivers/iio/chemical/sps30.c -+F: drivers/iio/chemical/sps30_i2c.c -+F: drivers/iio/chemical/sps30_serial.c -+ -+SERIAL DEVICE BUS -+M: Rob Herring <robh@kernel.org> -+L: linux-serial@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/serial/serial.yaml -+F: drivers/tty/serdev/ -+F: include/linux/serdev.h -+ -+SERIAL DRIVERS -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: linux-serial@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/serial/ -+F: drivers/tty/serial/ -+ -+SERIAL IR RECEIVER -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/rc/serial_ir.c -+ -+SERIAL LOW-POWER INTER-CHIP MEDIA BUS (SLIMbus) -+M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/slimbus/ -+F: drivers/slimbus/ -+F: include/linux/slimbus.h -+ -+SFC NETWORK DRIVER -+M: Edward Cree <ecree.xilinx@gmail.com> -+M: Martin Habets <habetsm.xilinx@gmail.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/sfc/ -+ -+SFF/SFP/SFP+ MODULE SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/phy/phylink.c -+F: drivers/net/phy/sfp* -+F: include/linux/mdio/mdio-i2c.h -+F: include/linux/phylink.h -+F: include/linux/sfp.h -+K: phylink\.h|struct\s+phylink|\.phylink|>phylink_|phylink_(autoneg|clear|connect|create|destroy|disconnect|ethtool|helper|mac|mii|of|set|start|stop|test|validate) -+ -+SGI GRU DRIVER -+M: Dimitri Sivanich <dimitri.sivanich@hpe.com> -+S: Maintained -+F: drivers/misc/sgi-gru/ -+ -+SGI XP/XPC/XPNET DRIVER -+M: Robin Holt <robinmholt@gmail.com> -+M: Steve Wahl <steve.wahl@hpe.com> -+R: Mike Travis <mike.travis@hpe.com> -+S: Maintained -+F: drivers/misc/sgi-xp/ -+ -+SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS -+M: Karsten Graul <kgraul@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+S: Supported -+W: http://www.ibm.com/developerworks/linux/linux390/ -+F: net/smc/ -+ -+SHARP GP2AP002A00F/GP2AP002S00F SENSOR DRIVER -+M: Linus Walleij <linus.walleij@linaro.org> -+L: linux-iio@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git -+F: Documentation/devicetree/bindings/iio/light/sharp,gp2ap002.yaml -+F: drivers/iio/light/gp2ap002.c -+ -+SHARP RJ54N1CB0C SENSOR DRIVER -+M: Jacopo Mondi <jacopo@jmondi.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/rj54n1cb0c.c -+F: include/media/i2c/rj54n1cb0c.h -+ -+SH_VOU V4L2 OUTPUT DRIVER -+L: linux-media@vger.kernel.org -+S: Orphan -+F: drivers/media/platform/sh_vou.c -+F: include/media/drv-intf/sh_vou.h -+ -+SI2157 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/si2157* -+ -+SI2165 MEDIA DRIVER -+M: Matthias Schwarzott <zzam@gentoo.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/si2165* -+ -+SI2168 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/si2168* -+ -+SI470X FM RADIO RECEIVER I2C DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/si470x/radio-si470x-i2c.c -+ -+SI470X FM RADIO RECEIVER USB DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/si470x/radio-si470x-common.c -+F: drivers/media/radio/si470x/radio-si470x-usb.c -+F: drivers/media/radio/si470x/radio-si470x.h -+ -+SI4713 FM RADIO TRANSMITTER I2C DRIVER -+M: Eduardo Valentin <edubezval@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/si4713/si4713.? -+ -+SI4713 FM RADIO TRANSMITTER PLATFORM DRIVER -+M: Eduardo Valentin <edubezval@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/si4713/radio-platform-si4713.c -+ -+SI4713 FM RADIO TRANSMITTER USB DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/si4713/radio-usb-si4713.c -+ -+SIANO DVB DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/common/siano/ -+F: drivers/media/mmc/siano/ -+F: drivers/media/usb/siano/ -+F: drivers/media/usb/siano/ -+ -+SIFIVE DRIVERS -+M: Palmer Dabbelt <palmer@dabbelt.com> -+M: Paul Walmsley <paul.walmsley@sifive.com> -+L: linux-riscv@lists.infradead.org -+S: Supported -+T: git git://github.com/sifive/riscv-linux.git -+N: sifive -+K: [^@]sifive -+ -+SIFIVE FU540 SYSTEM-ON-CHIP -+M: Paul Walmsley <paul.walmsley@sifive.com> -+M: Palmer Dabbelt <palmer@dabbelt.com> -+L: linux-riscv@lists.infradead.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pjw/sifive.git -+N: fu540 -+K: fu540 -+ -+SIFIVE PDMA DRIVER -+M: Green Wan <green.wan@sifive.com> -+S: Maintained -+F: Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml -+F: drivers/dma/sf-pdma/ -+ -+SILEAD TOUCHSCREEN DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-input@vger.kernel.org -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/input/touchscreen/silead.c -+F: drivers/platform/x86/touchscreen_dmi.c -+ -+SILICON LABS WIRELESS DRIVERS (for WFxxx series) -+M: Jérôme Pouiller <jerome.pouiller@silabs.com> -+S: Supported -+F: drivers/staging/wfx/ -+ -+SILICON MOTION SM712 FRAME BUFFER DRIVER -+M: Sudip Mukherjee <sudipm.mukherjee@gmail.com> -+M: Teddy Wang <teddy.wang@siliconmotion.com> -+M: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: Documentation/fb/sm712fb.rst -+F: drivers/video/fbdev/sm712* -+ -+SILVACO I3C DUAL-ROLE MASTER -+M: Miquel Raynal <miquel.raynal@bootlin.com> -+M: Conor Culhane <conor.culhane@silvaco.com> -+L: linux-i3c@lists.infradead.org -+S: Maintained -+F: Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml -+F: drivers/i3c/master/svc-i3c-master.c -+ -+SIMPLEFB FB DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/display/simple-framebuffer.yaml -+F: drivers/video/fbdev/simplefb.c -+F: include/linux/platform_data/simplefb.h -+ -+SIMTEC EB110ATX (Chalice CATS) -+M: Simtec Linux Team <linux@simtec.co.uk> -+S: Supported -+W: http://www.simtec.co.uk/products/EB110ATX/ -+ -+SIMTEC EB2410ITX (BAST) -+M: Simtec Linux Team <linux@simtec.co.uk> -+S: Supported -+W: http://www.simtec.co.uk/products/EB2410ITX/ -+F: arch/arm/mach-s3c/bast-ide.c -+F: arch/arm/mach-s3c/bast-irq.c -+F: arch/arm/mach-s3c/mach-bast.c -+ -+SIOX -+M: Thorsten Scherer <t.scherer@eckelmann.de> -+M: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> -+R: Pengutronix Kernel Team <kernel@pengutronix.de> -+S: Supported -+F: drivers/gpio/gpio-siox.c -+F: drivers/siox/* -+F: include/trace/events/siox.h -+ -+SIPHASH PRF ROUTINES -+M: Jason A. Donenfeld <Jason@zx2c4.com> -+S: Maintained -+F: include/linux/siphash.h -+F: lib/siphash.c -+F: lib/test_siphash.c -+ -+SIS 190 ETHERNET DRIVER -+M: Francois Romieu <romieu@fr.zoreil.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/sis/sis190.c -+ -+SIS 900/7016 FAST ETHERNET DRIVER -+M: Daniele Venzano <venza@brownhat.org> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://www.brownhat.org/sis900.html -+F: drivers/net/ethernet/sis/sis900.* -+ -+SIS FRAMEBUFFER DRIVER -+M: Thomas Winischhofer <thomas@winischhofer.net> -+S: Maintained -+W: http://www.winischhofer.net/linuxsisvga.shtml -+F: Documentation/fb/sisfb.rst -+F: drivers/video/fbdev/sis/ -+F: include/video/sisfb.h -+ -+SIS I2C TOUCHSCREEN DRIVER -+M: Mika Penttilä <mika.penttila@nextfour.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/input/touchscreen/sis_i2c.txt -+F: drivers/input/touchscreen/sis_i2c.c -+ -+SIS USB2VGA DRIVER -+M: Thomas Winischhofer <thomas@winischhofer.net> -+S: Maintained -+W: http://www.winischhofer.at/linuxsisusbvga.shtml -+F: drivers/usb/misc/sisusbvga/ -+ -+SLAB ALLOCATOR -+M: Christoph Lameter <cl@linux.com> -+M: Pekka Enberg <penberg@kernel.org> -+M: David Rientjes <rientjes@google.com> -+M: Joonsoo Kim <iamjoonsoo.kim@lge.com> -+M: Andrew Morton <akpm@linux-foundation.org> -+M: Vlastimil Babka <vbabka@suse.cz> -+L: linux-mm@kvack.org -+S: Maintained -+F: include/linux/sl?b*.h -+F: mm/sl?b* -+ -+SLEEPABLE READ-COPY UPDATE (SRCU) -+M: Lai Jiangshan <jiangshanlai@gmail.com> -+M: "Paul E. McKenney" <paulmck@kernel.org> -+M: Josh Triplett <josh@joshtriplett.org> -+R: Steven Rostedt <rostedt@goodmis.org> -+R: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> -+L: rcu@vger.kernel.org -+S: Supported -+W: http://www.rdrop.com/users/paulmck/RCU/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev -+F: include/linux/srcu*.h -+F: kernel/rcu/srcu*.c -+ -+SMACK SECURITY MODULE -+M: Casey Schaufler <casey@schaufler-ca.com> -+L: linux-security-module@vger.kernel.org -+S: Maintained -+W: http://schaufler-ca.com -+T: git git://github.com/cschaufler/smack-next -+F: Documentation/admin-guide/LSM/Smack.rst -+F: security/smack/ -+ -+SMC91x ETHERNET DRIVER -+M: Nicolas Pitre <nico@fluxnic.net> -+S: Odd Fixes -+F: drivers/net/ethernet/smsc/smc91x.* -+ -+SECURE MONITOR CALL(SMC) CALLING CONVENTION (SMCCC) -+M: Mark Rutland <mark.rutland@arm.com> -+M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -+M: Sudeep Holla <sudeep.holla@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/firmware/smccc/ -+F: include/linux/arm-smccc.h -+ -+SMM665 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/smm665.rst -+F: drivers/hwmon/smm665.c -+ -+SMSC EMC2103 HARDWARE MONITOR DRIVER -+M: Steve Glendinning <steve.glendinning@shawell.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/emc2103.rst -+F: drivers/hwmon/emc2103.c -+ -+SMSC SCH5627 HARDWARE MONITOR DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-hwmon@vger.kernel.org -+S: Supported -+F: Documentation/hwmon/sch5627.rst -+F: drivers/hwmon/sch5627.c -+ -+SMSC UFX6000 and UFX7000 USB to VGA DRIVER -+M: Steve Glendinning <steve.glendinning@shawell.net> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/smscufx.c -+ -+SMSC47B397 HARDWARE MONITOR DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/smsc47b397.rst -+F: drivers/hwmon/smsc47b397.c -+ -+SMSC911x ETHERNET DRIVER -+M: Steve Glendinning <steve.glendinning@shawell.net> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/smsc/smsc911x.* -+F: include/linux/smsc911x.h -+ -+SMSC9420 PCI ETHERNET DRIVER -+M: Steve Glendinning <steve.glendinning@shawell.net> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/smsc/smsc9420.* -+ -+SOCIONEXT (SNI) AVE NETWORK DRIVER -+M: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/socionext,uniphier-ave4.yaml -+F: drivers/net/ethernet/socionext/sni_ave.c -+ -+SOCIONEXT (SNI) NETSEC NETWORK DRIVER -+M: Jassi Brar <jaswinder.singh@linaro.org> -+M: Ilias Apalodimas <ilias.apalodimas@linaro.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/socionext-netsec.txt -+F: drivers/net/ethernet/socionext/netsec.c -+ -+SOCIONEXT (SNI) Synquacer SPI DRIVER -+M: Masahisa Kojima <masahisa.kojima@linaro.org> -+M: Jassi Brar <jaswinder.singh@linaro.org> -+L: linux-spi@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/spi/spi-synquacer.txt -+F: drivers/spi/spi-synquacer.c -+ -+SOCIONEXT SYNQUACER I2C DRIVER -+M: Ard Biesheuvel <ardb@kernel.org> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/i2c/i2c-synquacer.txt -+F: drivers/i2c/busses/i2c-synquacer.c -+ -+SOCIONEXT UNIPHIER SOUND DRIVER -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Orphan -+F: sound/soc/uniphier/ -+ -+SOEKRIS NET48XX LED SUPPORT -+M: Chris Boot <bootc@bootc.net> -+S: Maintained -+F: drivers/leds/leds-net48xx.c -+ -+SOFT-IWARP DRIVER (siw) -+M: Bernard Metzler <bmt@zurich.ibm.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/sw/siw/ -+F: include/uapi/rdma/siw-abi.h -+ -+SOFT-ROCE DRIVER (rxe) -+M: Zhu Yanjun <zyjzyj2000@gmail.com> -+L: linux-rdma@vger.kernel.org -+S: Supported -+F: drivers/infiniband/sw/rxe/ -+F: include/uapi/rdma/rdma_user_rxe.h -+ -+SOFTLOGIC 6x10 MPEG CODEC -+M: Bluecherry Maintainers <maintainers@bluecherrydvr.com> -+M: Anton Sviridenko <anton@corp.bluecherry.net> -+M: Andrey Utkin <andrey_utkin@fastmail.com> -+M: Ismael Luceno <ismael@iodev.co.uk> -+L: linux-media@vger.kernel.org -+S: Supported -+F: drivers/media/pci/solo6x10/ -+ -+SOFTWARE DELEGATED EXCEPTION INTERFACE (SDEI) -+M: James Morse <james.morse@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/firmware/sdei.txt -+F: drivers/firmware/arm_sdei.c -+F: include/linux/arm_sdei.h -+F: include/uapi/linux/arm_sdei.h -+ -+SOFTWARE NODES -+R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+R: Heikki Krogerus <heikki.krogerus@linux.intel.com> -+L: linux-acpi@vger.kernel.org -+S: Maintained -+F: drivers/base/swnode.c -+ -+SOFTWARE RAID (Multiple Disks) SUPPORT -+M: Song Liu <song@kernel.org> -+L: linux-raid@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git -+F: drivers/md/Kconfig -+F: drivers/md/Makefile -+F: drivers/md/md* -+F: drivers/md/raid* -+F: include/linux/raid/ -+F: include/uapi/linux/raid/ -+ -+SOLIDRUN CLEARFOG SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+S: Maintained -+F: arch/arm/boot/dts/armada-388-clearfog* -+F: arch/arm/boot/dts/armada-38x-solidrun-* -+ -+SOLIDRUN CUBOX-I/HUMMINGBOARD SUPPORT -+M: Russell King <linux@armlinux.org.uk> -+S: Maintained -+F: arch/arm/boot/dts/imx6*-cubox-i* -+F: arch/arm/boot/dts/imx6*-hummingboard* -+F: arch/arm/boot/dts/imx6*-sr-* -+ -+SONIC NETWORK DRIVER -+M: Thomas Bogendoerfer <tsbogend@alpha.franken.de> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/natsemi/sonic.* -+ -+SONICS SILICON BACKPLANE DRIVER (SSB) -+M: Michael Buesch <m@bues.ch> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/ssb/ -+F: include/linux/ssb/ -+ -+SONY IMX208 SENSOR DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/imx208.c -+ -+SONY IMX214 SENSOR DRIVER -+M: Ricardo Ribalda <ribalda@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml -+F: drivers/media/i2c/imx214.c -+ -+SONY IMX219 SENSOR DRIVER -+M: Dave Stevenson <dave.stevenson@raspberrypi.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/imx219.yaml -+F: drivers/media/i2c/imx219.c -+ -+SONY IMX258 SENSOR DRIVER -+M: Sakari Ailus <sakari.ailus@linux.intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/imx258.yaml -+F: drivers/media/i2c/imx258.c -+ -+SONY IMX274 SENSOR DRIVER -+M: Leon Luo <leonl@leopardimaging.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml -+F: drivers/media/i2c/imx274.c -+ -+SONY IMX290 SENSOR DRIVER -+M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/imx290.txt -+F: drivers/media/i2c/imx290.c -+ -+SONY IMX319 SENSOR DRIVER -+M: Bingbu Cao <bingbu.cao@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/imx319.c -+ -+SONY IMX334 SENSOR DRIVER -+M: Paul J. Murphy <paul.j.murphy@intel.com> -+M: Daniele Alessandrelli <daniele.alessandrelli@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/sony,imx334.yaml -+F: drivers/media/i2c/imx334.c -+ -+SONY IMX335 SENSOR DRIVER -+M: Paul J. Murphy <paul.j.murphy@intel.com> -+M: Daniele Alessandrelli <daniele.alessandrelli@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/sony,imx335.yaml -+F: drivers/media/i2c/imx335.c -+ -+SONY IMX355 SENSOR DRIVER -+M: Tianshu Qiu <tian.shu.qiu@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/imx355.c -+ -+SONY IMX412 SENSOR DRIVER -+M: Paul J. Murphy <paul.j.murphy@intel.com> -+M: Daniele Alessandrelli <daniele.alessandrelli@intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml -+F: drivers/media/i2c/imx412.c -+ -+SONY MEMORYSTICK SUBSYSTEM -+M: Maxim Levitsky <maximlevitsky@gmail.com> -+M: Alex Dubov <oakad@yahoo.com> -+M: Ulf Hansson <ulf.hansson@linaro.org> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git -+F: drivers/memstick/ -+F: include/linux/memstick.h -+ -+SONY VAIO CONTROL DEVICE DRIVER -+M: Mattia Dongili <malattia@linux.it> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers -+F: Documentation/admin-guide/laptops/sony-laptop.rst -+F: drivers/char/sonypi.c -+F: drivers/platform/x86/sony-laptop.c -+F: include/linux/sony-laptop.h -+ -+SOUND -+M: Jaroslav Kysela <perex@perex.cz> -+M: Takashi Iwai <tiwai@suse.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.alsa-project.org/ -+Q: http://patchwork.kernel.org/project/alsa-devel/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: Documentation/sound/ -+F: include/sound/ -+F: include/uapi/sound/ -+F: sound/ -+ -+SOUND - COMPRESSED AUDIO -+M: Vinod Koul <vkoul@kernel.org> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: Documentation/sound/designs/compress-offload.rst -+F: include/sound/compress_driver.h -+F: include/uapi/sound/compress_* -+F: sound/core/compress_offload.c -+F: sound/soc/soc-compress.c -+ -+SOUND - DMAENGINE HELPERS -+M: Lars-Peter Clausen <lars@metafoo.de> -+S: Supported -+F: include/sound/dmaengine_pcm.h -+F: sound/core/pcm_dmaengine.c -+F: sound/soc/soc-generic-dmaengine-pcm.c -+ -+SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC) -+M: Liam Girdwood <lgirdwood@gmail.com> -+M: Mark Brown <broonie@kernel.org> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+W: http://alsa-project.org/main/index.php/ASoC -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git -+F: Documentation/devicetree/bindings/sound/ -+F: Documentation/sound/soc/ -+F: include/dt-bindings/sound/ -+F: include/sound/soc* -+F: sound/soc/ -+ -+SOUND - SOUND OPEN FIRMWARE (SOF) DRIVERS -+M: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> -+M: Liam Girdwood <lgirdwood@gmail.com> -+M: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> -+M: Kai Vehmanen <kai.vehmanen@linux.intel.com> -+M: Daniel Baluta <daniel.baluta@nxp.com> -+L: sound-open-firmware@alsa-project.org (moderated for non-subscribers) -+S: Supported -+W: https://github.com/thesofproject/linux/ -+F: sound/soc/sof/ -+ -+SOUNDWIRE SUBSYSTEM -+M: Vinod Koul <vkoul@kernel.org> -+M: Bard Liao <yung-chuan.liao@linux.intel.com> -+R: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> -+R: Sanyog Kale <sanyog.r.kale@intel.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire.git -+F: Documentation/driver-api/soundwire/ -+F: drivers/soundwire/ -+F: include/linux/soundwire/ -+ -+SP2 MEDIA DRIVER -+M: Olli Salonen <olli.salonen@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/sp2* -+ -+SPARC + UltraSPARC (sparc/sparc64) -+M: "David S. Miller" <davem@davemloft.net> -+L: sparclinux@vger.kernel.org -+S: Maintained -+Q: http://patchwork.ozlabs.org/project/sparclinux/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next.git -+F: arch/sparc/ -+F: drivers/sbus/ -+ -+SPARC SERIAL DRIVERS -+M: "David S. Miller" <davem@davemloft.net> -+L: sparclinux@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc.git -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next.git -+F: drivers/tty/serial/suncore.c -+F: drivers/tty/serial/sunhv.c -+F: drivers/tty/serial/sunsab.c -+F: drivers/tty/serial/sunsab.h -+F: drivers/tty/serial/sunsu.c -+F: drivers/tty/serial/sunzilog.c -+F: drivers/tty/serial/sunzilog.h -+F: drivers/tty/vcc.c -+F: include/linux/sunserialcore.h -+ -+SPARSE CHECKER -+M: "Luc Van Oostenryck" <luc.vanoostenryck@gmail.com> -+L: linux-sparse@vger.kernel.org -+S: Maintained -+W: https://sparse.docs.kernel.org/ -+T: git git://git.kernel.org/pub/scm/devel/sparse/sparse.git -+Q: https://patchwork.kernel.org/project/linux-sparse/list/ -+B: https://bugzilla.kernel.org/enter_bug.cgi?component=Sparse&product=Tools -+F: include/linux/compiler.h -+ -+SPEAKUP CONSOLE SPEECH DRIVER -+M: William Hubbs <w.d.hubbs@gmail.com> -+M: Chris Brannon <chris@the-brannons.com> -+M: Kirk Reiser <kirk@reisers.ca> -+M: Samuel Thibault <samuel.thibault@ens-lyon.org> -+L: speakup@linux-speakup.org -+S: Odd Fixes -+W: http://www.linux-speakup.org/ -+W: https://github.com/linux-speakup/speakup -+B: https://github.com/linux-speakup/speakup/issues -+F: drivers/accessibility/speakup/ -+ -+SPEAR CLOCK FRAMEWORK SUPPORT -+M: Viresh Kumar <vireshk@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.st.com/spear -+F: drivers/clk/spear/ -+ -+SPEAR PLATFORM SUPPORT -+M: Viresh Kumar <vireshk@kernel.org> -+M: Shiraz Hashim <shiraz.linux.kernel@gmail.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+W: http://www.st.com/spear -+F: arch/arm/boot/dts/spear* -+F: arch/arm/mach-spear/ -+ -+SPI NOR SUBSYSTEM -+M: Tudor Ambarus <tudor.ambarus@microchip.com> -+R: Michael Walle <michael@walle.cc> -+R: Pratyush Yadav <p.yadav@ti.com> -+L: linux-mtd@lists.infradead.org -+S: Maintained -+W: http://www.linux-mtd.infradead.org/ -+Q: http://patchwork.ozlabs.org/project/linux-mtd/list/ -+C: irc://irc.oftc.net/mtd -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git spi-nor/next -+F: drivers/mtd/spi-nor/ -+F: include/linux/mtd/spi-nor.h -+ -+SPI SUBSYSTEM -+M: Mark Brown <broonie@kernel.org> -+L: linux-spi@vger.kernel.org -+S: Maintained -+Q: http://patchwork.kernel.org/project/spi-devel-general/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git -+F: Documentation/devicetree/bindings/spi/ -+F: Documentation/spi/ -+F: drivers/spi/ -+F: include/linux/spi/ -+F: include/uapi/linux/spi/ -+F: tools/spi/ -+ -+SPIDERNET NETWORK DRIVER for CELL -+M: Ishizaki Kou <kou.ishizaki@toshiba.co.jp> -+M: Geoff Levand <geoff@infradead.org> -+L: netdev@vger.kernel.org -+L: linuxppc-dev@lists.ozlabs.org -+S: Maintained -+F: Documentation/networking/device_drivers/ethernet/toshiba/spider_net.rst -+F: drivers/net/ethernet/toshiba/spider_net* -+ -+SPMI SUBSYSTEM -+M: Stephen Boyd <sboyd@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git -+F: Documentation/devicetree/bindings/spmi/ -+F: drivers/spmi/ -+F: include/dt-bindings/spmi/spmi.h -+F: include/linux/spmi.h -+F: include/trace/events/spmi.h -+ -+SPU FILE SYSTEM -+M: Jeremy Kerr <jk@ozlabs.org> -+L: linuxppc-dev@lists.ozlabs.org -+S: Supported -+W: http://www.ibm.com/developerworks/power/cell/ -+F: Documentation/filesystems/spufs/spufs.rst -+F: arch/powerpc/platforms/cell/spufs/ -+ -+SQUASHFS FILE SYSTEM -+M: Phillip Lougher <phillip@squashfs.org.uk> -+L: squashfs-devel@lists.sourceforge.net (subscribers-only) -+S: Maintained -+W: http://squashfs.org.uk -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-next.git -+F: Documentation/filesystems/squashfs.rst -+F: fs/squashfs/ -+ -+SRM (Alpha) environment access -+M: Jan-Benedict Glaw <jbglaw@lug-owl.de> -+S: Maintained -+F: arch/alpha/kernel/srm_env.c -+ -+ST LSM6DSx IMU IIO DRIVER -+M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+W: http://www.st.com/ -+F: Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml -+F: drivers/iio/imu/st_lsm6dsx/ -+ -+ST MIPID02 CSI-2 TO PARALLEL BRIDGE DRIVER -+M: Mickael Guene <mickael.guene@st.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt -+F: drivers/media/i2c/st-mipid02.c -+ -+ST STM32 I2C/SMBUS DRIVER -+M: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com> -+M: Alain Volmat <alain.volmat@foss.st.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/busses/i2c-stm32* -+ -+ST STM32 SPI DRIVER -+M: Alain Volmat <alain.volmat@foss.st.com> -+L: linux-spi@vger.kernel.org -+S: Maintained -+F: drivers/spi/spi-stm32.c -+ -+ST STPDDC60 DRIVER -+M: Daniel Nilsson <daniel.nilsson@flex.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/stpddc60.rst -+F: drivers/hwmon/pmbus/stpddc60.c -+ -+ST VL53L0X ToF RANGER(I2C) IIO DRIVER -+M: Song Qiang <songqiang1304521@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml -+F: drivers/iio/proximity/vl53l0x-i2c.c -+ -+STABLE BRANCH -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+M: Sasha Levin <sashal@kernel.org> -+L: stable@vger.kernel.org -+S: Supported -+F: Documentation/process/stable-kernel-rules.rst -+ -+STAGING - ATOMISP DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+R: Sakari Ailus <sakari.ailus@linux.intel.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/staging/media/atomisp/ -+ -+STAGING - FIELDBUS SUBSYSTEM -+M: Sven Van Asbroeck <TheSven73@gmail.com> -+S: Maintained -+F: drivers/staging/fieldbus/* -+F: drivers/staging/fieldbus/Documentation/ -+ -+STAGING - HMS ANYBUS-S BUS -+M: Sven Van Asbroeck <TheSven73@gmail.com> -+S: Maintained -+F: drivers/staging/fieldbus/anybuss/ -+ -+STAGING - INDUSTRIAL IO -+M: Jonathan Cameron <jic23@kernel.org> -+L: linux-iio@vger.kernel.org -+S: Odd Fixes -+F: Documentation/devicetree/bindings/staging/iio/ -+F: drivers/staging/iio/ -+ -+STAGING - NVIDIA COMPLIANT EMBEDDED CONTROLLER INTERFACE (nvec) -+M: Marc Dietrich <marvin24@gmx.de> -+L: ac100@lists.launchpad.net (moderated for non-subscribers) -+L: linux-tegra@vger.kernel.org -+S: Maintained -+F: drivers/staging/nvec/ -+ -+STAGING - OLPC SECONDARY DISPLAY CONTROLLER (DCON) -+M: Jens Frederich <jfrederich@gmail.com> -+M: Jon Nettleton <jon.nettleton@gmail.com> -+S: Maintained -+W: http://wiki.laptop.org/go/DCON -+F: drivers/staging/olpc_dcon/ -+ -+STAGING - REALTEK RTL8188EU DRIVERS -+M: Larry Finger <Larry.Finger@lwfinger.net> -+M: Phillip Potter <phil@philpotter.co.uk> -+S: Supported -+F: drivers/staging/r8188eu/ -+ -+STAGING - REALTEK RTL8712U DRIVERS -+M: Larry Finger <Larry.Finger@lwfinger.net> -+M: Florian Schilhabel <florian.c.schilhabel@googlemail.com>. -+S: Odd Fixes -+F: drivers/staging/rtl8712/ -+ -+STAGING - SEPS525 LCD CONTROLLER DRIVERS -+M: Michael Hennerich <michael.hennerich@analog.com> -+L: linux-fbdev@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml -+F: drivers/staging/fbtft/fb_seps525.c -+ -+STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER -+M: Sudip Mukherjee <sudipm.mukherjee@gmail.com> -+M: Teddy Wang <teddy.wang@siliconmotion.com> -+M: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/staging/sm750fb/ -+ -+STAGING - VIA VT665X DRIVERS -+M: Forest Bond <forest@alittletooquiet.net> -+S: Odd Fixes -+F: drivers/staging/vt665?/ -+ -+STAGING SUBSYSTEM -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: linux-staging@lists.linux.dev -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git -+F: drivers/staging/ -+ -+STARFIRE/DURALAN NETWORK DRIVER -+M: Ion Badulescu <ionut@badula.org> -+S: Odd Fixes -+F: drivers/net/ethernet/adaptec/starfire* -+ -+STATIC BRANCH/CALL -+M: Peter Zijlstra <peterz@infradead.org> -+M: Josh Poimboeuf <jpoimboe@redhat.com> -+M: Jason Baron <jbaron@akamai.com> -+R: Steven Rostedt <rostedt@goodmis.org> -+R: Ard Biesheuvel <ardb@kernel.org> -+S: Supported -+F: arch/*/include/asm/jump_label*.h -+F: arch/*/include/asm/static_call*.h -+F: arch/*/kernel/jump_label.c -+F: arch/*/kernel/static_call.c -+F: include/linux/jump_label*.h -+F: include/linux/static_call*.h -+F: kernel/jump_label.c -+F: kernel/static_call.c -+ -+STI AUDIO (ASoC) DRIVERS -+M: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/st,sti-asoc-card.txt -+F: sound/soc/sti/ -+ -+STI CEC DRIVER -+M: Benjamin Gaignard <benjamin.gaignard@linaro.org> -+S: Maintained -+F: Documentation/devicetree/bindings/media/stih-cec.txt -+F: drivers/media/cec/platform/sti/ -+ -+STK1160 USB VIDEO CAPTURE DRIVER -+M: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> -+L: linux-media@vger.kernel.org -+S: Maintained -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/stk1160/ -+ -+STM32 AUDIO (ASoC) DRIVERS -+M: Olivier Moysan <olivier.moysan@foss.st.com> -+M: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml -+F: Documentation/devicetree/bindings/sound/st,stm32-*.yaml -+F: sound/soc/stm/ -+ -+STM32 TIMER/LPTIMER DRIVERS -+M: Fabrice Gasnier <fabrice.gasnier@foss.st.com> -+S: Maintained -+F: Documentation/ABI/testing/*timer-stm32 -+F: Documentation/devicetree/bindings/*/*stm32-*timer* -+F: drivers/*/stm32-*timer* -+F: drivers/pwm/pwm-stm32* -+F: include/linux/*/stm32-*tim* -+ -+STMMAC ETHERNET DRIVER -+M: Giuseppe Cavallaro <peppe.cavallaro@st.com> -+M: Alexandre Torgue <alexandre.torgue@foss.st.com> -+M: Jose Abreu <joabreu@synopsys.com> -+L: netdev@vger.kernel.org -+S: Supported -+W: http://www.stlinux.com -+F: Documentation/networking/device_drivers/ethernet/stmicro/ -+F: drivers/net/ethernet/stmicro/stmmac/ -+ -+SUN3/3X -+M: Sam Creasey <sammy@sammy.net> -+S: Maintained -+W: http://sammy.net/sun3/ -+F: arch/m68k/include/asm/sun3* -+F: arch/m68k/kernel/*sun3* -+F: arch/m68k/sun3*/ -+F: drivers/net/ethernet/i825xx/sun3* -+ -+SUN4I LOW RES ADC ATTACHED TABLET KEYS DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/input/allwinner,sun4i-a10-lradc-keys.yaml -+F: drivers/input/keyboard/sun4i-lradc-keys.c -+ -+SUNDANCE NETWORK DRIVER -+M: Denis Kirjanov <kda@linux-powerpc.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/dlink/sundance.c -+ -+SUPERH -+M: Yoshinori Sato <ysato@users.sourceforge.jp> -+M: Rich Felker <dalias@libc.org> -+L: linux-sh@vger.kernel.org -+S: Maintained -+Q: http://patchwork.kernel.org/project/linux-sh/list/ -+F: Documentation/sh/ -+F: arch/sh/ -+F: drivers/sh/ -+ -+SUSPEND TO RAM -+M: "Rafael J. Wysocki" <rafael@kernel.org> -+M: Len Brown <len.brown@intel.com> -+M: Pavel Machek <pavel@ucw.cz> -+L: linux-pm@vger.kernel.org -+S: Supported -+B: https://bugzilla.kernel.org -+F: Documentation/power/ -+F: arch/x86/kernel/acpi/ -+F: drivers/base/power/ -+F: include/linux/freezer.h -+F: include/linux/pm.h -+F: include/linux/suspend.h -+F: kernel/power/ -+ -+SVGA HANDLING -+M: Martin Mares <mj@ucw.cz> -+L: linux-video@atrey.karlin.mff.cuni.cz -+S: Maintained -+F: Documentation/admin-guide/svga.rst -+F: arch/x86/boot/video* -+ -+SWIOTLB SUBSYSTEM -+M: Christoph Hellwig <hch@infradead.org> -+L: iommu@lists.linux-foundation.org -+S: Supported -+W: http://git.infradead.org/users/hch/dma-mapping.git -+T: git git://git.infradead.org/users/hch/dma-mapping.git -+F: arch/*/kernel/pci-swiotlb.c -+F: include/linux/swiotlb.h -+F: kernel/dma/swiotlb.c -+ -+SWITCHDEV -+M: Jiri Pirko <jiri@resnulli.us> -+M: Ivan Vecera <ivecera@redhat.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: include/net/switchdev.h -+F: net/switchdev/ -+ -+SY8106A REGULATOR DRIVER -+M: Icenowy Zheng <icenowy@aosc.io> -+S: Maintained -+F: Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml -+F: drivers/regulator/sy8106a-regulator.c -+ -+SYNC FILE FRAMEWORK -+M: Sumit Semwal <sumit.semwal@linaro.org> -+R: Gustavo Padovan <gustavo@padovan.org> -+L: linux-media@vger.kernel.org -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/driver-api/sync_file.rst -+F: drivers/dma-buf/dma-fence* -+F: drivers/dma-buf/sw_sync.c -+F: drivers/dma-buf/sync_* -+F: include/linux/sync_file.h -+F: include/uapi/linux/sync_file.h -+ -+SYNOPSYS ARC ARCHITECTURE -+M: Vineet Gupta <vgupta@kernel.org> -+L: linux-snps-arc@lists.infradead.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git -+F: Documentation/devicetree/bindings/arc/* -+F: Documentation/devicetree/bindings/interrupt-controller/snps,arc* -+F: arch/arc/ -+F: drivers/clocksource/arc_timer.c -+F: drivers/tty/serial/arc_uart.c -+ -+SYNOPSYS ARC HSDK SDP pll clock driver -+M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> -+S: Supported -+F: Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt -+F: drivers/clk/clk-hsdk-pll.c -+ -+SYNOPSYS ARC SDP clock driver -+M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> -+S: Supported -+F: Documentation/devicetree/bindings/clock/snps,pll-clock.txt -+F: drivers/clk/axs10x/* -+ -+SYNOPSYS ARC SDP platform support -+M: Alexey Brodkin <abrodkin@synopsys.com> -+S: Supported -+F: Documentation/devicetree/bindings/arc/axs10* -+F: arch/arc/boot/dts/ax* -+F: arch/arc/plat-axs10x -+ -+SYNOPSYS AXS10x RESET CONTROLLER DRIVER -+M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> -+S: Supported -+F: Documentation/devicetree/bindings/reset/snps,axs10x-reset.txt -+F: drivers/reset/reset-axs10x.c -+ -+SYNOPSYS CREG GPIO DRIVER -+M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> -+S: Maintained -+F: Documentation/devicetree/bindings/gpio/snps,creg-gpio.txt -+F: drivers/gpio/gpio-creg-snps.c -+ -+SYNOPSYS DESIGNWARE 8250 UART DRIVER -+R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+S: Maintained -+F: drivers/tty/serial/8250/8250_dw.c -+F: drivers/tty/serial/8250/8250_dwlib.* -+F: drivers/tty/serial/8250/8250_lpss.c -+ -+SYNOPSYS DESIGNWARE APB GPIO DRIVER -+M: Hoan Tran <hoan@os.amperecomputing.com> -+M: Serge Semin <fancer.lancer@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/gpio/snps,dw-apb-gpio.yaml -+F: drivers/gpio/gpio-dwapb.c -+ -+SYNOPSYS DESIGNWARE APB SSI DRIVER -+M: Serge Semin <fancer.lancer@gmail.com> -+L: linux-spi@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml -+F: drivers/spi/spi-dw* -+ -+SYNOPSYS DESIGNWARE AXI DMAC DRIVER -+M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> -+S: Maintained -+F: Documentation/devicetree/bindings/dma/snps,dw-axi-dmac.yaml -+F: drivers/dma/dw-axi-dmac/ -+ -+SYNOPSYS DESIGNWARE DMAC DRIVER -+M: Viresh Kumar <vireshk@kernel.org> -+R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+S: Maintained -+F: Documentation/devicetree/bindings/dma/snps,dma-spear1340.yaml -+F: drivers/dma/dw/ -+F: include/dt-bindings/dma/dw-dmac.h -+F: include/linux/dma/dw.h -+F: include/linux/platform_data/dma-dw.h -+ -+SYNOPSYS DESIGNWARE ENTERPRISE ETHERNET DRIVER -+M: Jose Abreu <Jose.Abreu@synopsys.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/synopsys/ -+ -+SYNOPSYS DESIGNWARE ETHERNET XPCS DRIVER -+M: Jose Abreu <Jose.Abreu@synopsys.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/pcs/pcs-xpcs.c -+F: drivers/net/pcs/pcs-xpcs.h -+F: include/linux/pcs/pcs-xpcs.h -+ -+SYNOPSYS DESIGNWARE I2C DRIVER -+M: Jarkko Nikula <jarkko.nikula@linux.intel.com> -+R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+R: Mika Westerberg <mika.westerberg@linux.intel.com> -+L: linux-i2c@vger.kernel.org -+S: Maintained -+F: drivers/i2c/busses/i2c-designware-* -+ -+SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER -+M: Jaehoon Chung <jh80.chung@samsung.com> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/dw_mmc* -+ -+SYNOPSYS HSDK RESET CONTROLLER DRIVER -+M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> -+S: Supported -+F: Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt -+F: drivers/reset/reset-hsdk.c -+F: include/dt-bindings/reset/snps,hsdk-reset.h -+ -+SYNOPSYS SDHCI COMPLIANT DWC MSHC DRIVER -+M: Prabu Thangamuthu <prabu.t@synopsys.com> -+M: Manjunath M B <manjumb@synopsys.com> -+L: linux-mmc@vger.kernel.org -+S: Maintained -+F: drivers/mmc/host/sdhci-pci-dwc-mshc.c -+ -+SYSTEM CONFIGURATION (SYSCON) -+M: Lee Jones <lee.jones@linaro.org> -+M: Arnd Bergmann <arnd@arndb.de> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git -+F: drivers/mfd/syscon.c -+ -+SYSTEM CONTROL & POWER/MANAGEMENT INTERFACE (SCPI/SCMI) Message Protocol drivers -+M: Sudeep Holla <sudeep.holla@arm.com> -+R: Cristian Marussi <cristian.marussi@arm.com> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/firmware/arm,sc[mp]i.yaml -+F: drivers/clk/clk-sc[mp]i.c -+F: drivers/cpufreq/sc[mp]i-cpufreq.c -+F: drivers/firmware/arm_scmi/ -+F: drivers/firmware/arm_scpi.c -+F: drivers/regulator/scmi-regulator.c -+F: drivers/reset/reset-scmi.c -+F: include/linux/sc[mp]i_protocol.h -+F: include/trace/events/scmi.h -+F: include/uapi/linux/virtio_scmi.h -+ -+SYSTEM RESET/SHUTDOWN DRIVERS -+M: Sebastian Reichel <sre@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git -+F: Documentation/devicetree/bindings/power/reset/ -+F: drivers/power/reset/ -+ -+SYSTEM TRACE MODULE CLASS -+M: Alexander Shishkin <alexander.shishkin@linux.intel.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ash/stm.git -+F: Documentation/trace/stm.rst -+F: drivers/hwtracing/stm/ -+F: include/linux/stm.h -+F: include/uapi/linux/stm.h -+ -+SYSTEM76 ACPI DRIVER -+M: Jeremy Soller <jeremy@system76.com> -+M: System76 Product Development <productdev@system76.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/system76_acpi.c -+ -+SYSV FILESYSTEM -+M: Christoph Hellwig <hch@infradead.org> -+S: Maintained -+F: Documentation/filesystems/sysv-fs.rst -+F: fs/sysv/ -+F: include/linux/sysv_fs.h -+ -+TASKSTATS STATISTICS INTERFACE -+M: Balbir Singh <bsingharora@gmail.com> -+S: Maintained -+F: Documentation/accounting/taskstats* -+F: include/linux/taskstats* -+F: kernel/taskstats.c -+ -+TC subsystem -+M: Jamal Hadi Salim <jhs@mojatatu.com> -+M: Cong Wang <xiyou.wangcong@gmail.com> -+M: Jiri Pirko <jiri@resnulli.us> -+L: netdev@vger.kernel.org -+S: Maintained -+F: include/net/pkt_cls.h -+F: include/net/pkt_sched.h -+F: include/net/tc_act/ -+F: include/uapi/linux/pkt_cls.h -+F: include/uapi/linux/pkt_sched.h -+F: include/uapi/linux/tc_act/ -+F: include/uapi/linux/tc_ematch/ -+F: net/sched/ -+ -+TC90522 MEDIA DRIVER -+M: Akihiro Tsukada <tskd08@gmail.com> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+F: drivers/media/dvb-frontends/tc90522* -+ -+TCP LOW PRIORITY MODULE -+M: "Wong Hoi Sing, Edison" <hswong3i@gmail.com> -+M: "Hung Hing Lun, Mike" <hlhung3i@gmail.com> -+S: Maintained -+W: http://tcp-lp-mod.sourceforge.net/ -+F: net/ipv4/tcp_lp.c -+ -+TDA10071 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/dvb-frontends/tda10071* -+ -+TDA18212 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/tda18212* -+ -+TDA18218 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/tda18218* -+ -+TDA18250 MEDIA DRIVER -+M: Olli Salonen <olli.salonen@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/tuners/tda18250* -+ -+TDA18271 MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mkrufky/tuners.git -+F: drivers/media/tuners/tda18271* -+ -+TDA1997x MEDIA DRIVER -+M: Tim Harvey <tharvey@gateworks.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/i2c/tda1997x.* -+ -+TDA827x MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mkrufky/tuners.git -+F: drivers/media/tuners/tda8290.* -+ -+TDA8290 MEDIA DRIVER -+M: Michael Krufky <mkrufky@linuxtv.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://github.com/mkrufky -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mkrufky/tuners.git -+F: drivers/media/tuners/tda8290.* -+ -+TDA9840 MEDIA DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/tda9840* -+ -+TEA5761 TUNER DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/tuners/tea5761.* -+ -+TEA5767 TUNER DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/tuners/tea5767.* -+ -+TEA6415C MEDIA DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/tea6415c* -+ -+TEA6420 MEDIA DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/i2c/tea6420* -+ -+TEAM DRIVER -+M: Jiri Pirko <jiri@resnulli.us> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/team/ -+F: include/linux/if_team.h -+F: include/uapi/linux/if_team.h -+ -+TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT -+M: "Savoir-faire Linux Inc." <kernel@savoirfairelinux.com> -+S: Maintained -+F: arch/x86/platform/ts5500/ -+ -+TECHNOTREND USB IR RECEIVER -+M: Sean Young <sean@mess.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/rc/ttusbir.c -+ -+TECHWELL TW9910 VIDEO DECODER -+L: linux-media@vger.kernel.org -+S: Orphan -+F: drivers/media/i2c/tw9910.c -+F: include/media/i2c/tw9910.h -+ -+TEE SUBSYSTEM -+M: Jens Wiklander <jens.wiklander@linaro.org> -+R: Sumit Garg <sumit.garg@linaro.org> -+L: op-tee@lists.trustedfirmware.org -+S: Maintained -+F: Documentation/staging/tee.rst -+F: drivers/tee/ -+F: include/linux/tee_drv.h -+F: include/uapi/linux/tee.h -+ -+TEGRA ARCHITECTURE SUPPORT -+M: Thierry Reding <thierry.reding@gmail.com> -+M: Jonathan Hunter <jonathanh@nvidia.com> -+L: linux-tegra@vger.kernel.org -+S: Supported -+Q: http://patchwork.ozlabs.org/project/linux-tegra/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git -+N: [^a-z]tegra -+ -+TEGRA CLOCK DRIVER -+M: Peter De Schrijver <pdeschrijver@nvidia.com> -+M: Prashant Gaikwad <pgaikwad@nvidia.com> -+S: Supported -+F: drivers/clk/tegra/ -+ -+TEGRA DMA DRIVERS -+M: Laxman Dewangan <ldewangan@nvidia.com> -+M: Jon Hunter <jonathanh@nvidia.com> -+S: Supported -+F: drivers/dma/tegra* -+ -+TEGRA I2C DRIVER -+M: Laxman Dewangan <ldewangan@nvidia.com> -+R: Dmitry Osipenko <digetx@gmail.com> -+S: Supported -+F: drivers/i2c/busses/i2c-tegra.c -+ -+TEGRA IOMMU DRIVERS -+M: Thierry Reding <thierry.reding@gmail.com> -+R: Krishna Reddy <vdumpa@nvidia.com> -+L: linux-tegra@vger.kernel.org -+S: Supported -+F: drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c -+F: drivers/iommu/tegra* -+ -+TEGRA KBC DRIVER -+M: Laxman Dewangan <ldewangan@nvidia.com> -+S: Supported -+F: drivers/input/keyboard/tegra-kbc.c -+ -+TEGRA NAND DRIVER -+M: Stefan Agner <stefan@agner.ch> -+M: Lucas Stach <dev@lynxeye.de> -+S: Maintained -+F: Documentation/devicetree/bindings/mtd/nvidia-tegra20-nand.txt -+F: drivers/mtd/nand/raw/tegra_nand.c -+ -+TEGRA PWM DRIVER -+M: Thierry Reding <thierry.reding@gmail.com> -+S: Supported -+F: drivers/pwm/pwm-tegra.c -+ -+TEGRA SERIAL DRIVER -+M: Laxman Dewangan <ldewangan@nvidia.com> -+S: Supported -+F: drivers/tty/serial/serial-tegra.c -+ -+TEGRA SPI DRIVER -+M: Laxman Dewangan <ldewangan@nvidia.com> -+S: Supported -+F: drivers/spi/spi-tegra* -+ -+TEGRA QUAD SPI DRIVER -+M: Thierry Reding <thierry.reding@gmail.com> -+M: Jonathan Hunter <jonathanh@nvidia.com> -+M: Sowjanya Komatineni <skomatineni@nvidia.com> -+L: linux-tegra@vger.kernel.org -+S: Maintained -+F: drivers/spi/spi-tegra210-quad.c -+ -+TEGRA VIDEO DRIVER -+M: Thierry Reding <thierry.reding@gmail.com> -+M: Jonathan Hunter <jonathanh@nvidia.com> -+M: Sowjanya Komatineni <skomatineni@nvidia.com> -+L: linux-media@vger.kernel.org -+L: linux-tegra@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt -+F: drivers/staging/media/tegra-video/ -+ -+TEGRA XUSB PADCTL DRIVER -+M: JC Kuo <jckuo@nvidia.com> -+S: Supported -+F: drivers/phy/tegra/xusb* -+ -+TEHUTI ETHERNET DRIVER -+M: Andy Gospodarek <andy@greyhouse.net> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/ethernet/tehuti/* -+ -+TELECOM CLOCK DRIVER FOR MCPL0010 -+M: Mark Gross <mark.gross@intel.com> -+S: Supported -+F: drivers/char/tlclk.c -+ -+TEMPO SEMICONDUCTOR DRIVERS -+M: Steven Eckhoff <steven.eckhoff.opensource@gmail.com> -+S: Maintained -+F: Documentation/devicetree/bindings/sound/tscs*.txt -+F: sound/soc/codecs/tscs*.c -+F: sound/soc/codecs/tscs*.h -+ -+TENSILICA XTENSA PORT (xtensa) -+M: Chris Zankel <chris@zankel.net> -+M: Max Filippov <jcmvbkbc@gmail.com> -+L: linux-xtensa@linux-xtensa.org -+S: Maintained -+T: git git://github.com/czankel/xtensa-linux.git -+F: arch/xtensa/ -+F: drivers/irqchip/irq-xtensa-* -+ -+TEXAS INSTRUMENTS ASoC DRIVERS -+M: Peter Ujfalusi <peter.ujfalusi@gmail.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: sound/soc/ti/ -+ -+TEXAS INSTRUMENTS' DAC7612 DAC DRIVER -+M: Ricardo Ribalda <ribalda@kernel.org> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/iio/dac/ti,dac7612.yaml -+F: drivers/iio/dac/ti-dac7612.c -+ -+TEXAS INSTRUMENTS DMA DRIVERS -+M: Peter Ujfalusi <peter.ujfalusi@gmail.com> -+L: dmaengine@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/dma/ti-dma-crossbar.txt -+F: Documentation/devicetree/bindings/dma/ti-edma.txt -+F: Documentation/devicetree/bindings/dma/ti/ -+F: drivers/dma/ti/ -+X: drivers/dma/ti/cppi41.c -+F: include/linux/dma/k3-udma-glue.h -+F: include/linux/dma/ti-cppi5.h -+F: include/linux/dma/k3-psil.h -+ -+TEXAS INSTRUMENTS' SYSTEM CONTROL INTERFACE (TISCI) PROTOCOL DRIVER -+M: Nishanth Menon <nm@ti.com> -+M: Tero Kristo <kristo@kernel.org> -+M: Santosh Shilimkar <ssantosh@kernel.org> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/arm/keystone/ti,k3-sci-common.yaml -+F: Documentation/devicetree/bindings/arm/keystone/ti,sci.txt -+F: Documentation/devicetree/bindings/clock/ti,sci-clk.yaml -+F: Documentation/devicetree/bindings/interrupt-controller/ti,sci-inta.yaml -+F: Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.yaml -+F: Documentation/devicetree/bindings/reset/ti,sci-reset.yaml -+F: Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml -+F: drivers/clk/keystone/sci-clk.c -+F: drivers/firmware/ti_sci* -+F: drivers/irqchip/irq-ti-sci-inta.c -+F: drivers/irqchip/irq-ti-sci-intr.c -+F: drivers/reset/reset-ti-sci.c -+F: drivers/soc/ti/ti_sci_inta_msi.c -+F: drivers/soc/ti/ti_sci_pm_domains.c -+F: include/dt-bindings/soc/ti,sci_pm_domain.h -+F: include/linux/soc/ti/ti_sci_inta_msi.h -+F: include/linux/soc/ti/ti_sci_protocol.h -+ -+TEXAS INSTRUMENTS TPS23861 PoE PSE DRIVER -+M: Robert Marko <robert.marko@sartura.hr> -+M: Luka Perkov <luka.perkov@sartura.hr> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml -+F: Documentation/hwmon/tps23861.rst -+F: drivers/hwmon/tps23861.c -+ -+TEXAS INSTRUMENTS' TMP117 TEMPERATURE SENSOR DRIVER -+M: Puranjay Mohan <puranjay12@gmail.com> -+L: linux-iio@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/iio/temperature/ti,tmp117.yaml -+F: drivers/iio/temperature/tmp117.c -+ -+THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/radio/radio-raremono.c -+ -+THERMAL -+M: Rafael J. Wysocki <rafael@kernel.org> -+M: Daniel Lezcano <daniel.lezcano@linaro.org> -+R: Amit Kucheria <amitk@kernel.org> -+R: Zhang Rui <rui.zhang@intel.com> -+L: linux-pm@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-pm/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git thermal -+F: Documentation/devicetree/bindings/thermal/ -+F: drivers/thermal/ -+F: include/linux/cpu_cooling.h -+F: include/linux/thermal.h -+F: include/uapi/linux/thermal.h -+F: tools/thermal/ -+ -+THERMAL DRIVER FOR AMLOGIC SOCS -+M: Guillaume La Roque <glaroque@baylibre.com> -+L: linux-pm@vger.kernel.org -+L: linux-amlogic@lists.infradead.org -+S: Supported -+W: http://linux-meson.com/ -+F: Documentation/devicetree/bindings/thermal/amlogic,thermal.yaml -+F: drivers/thermal/amlogic_thermal.c -+ -+THERMAL/CPU_COOLING -+M: Amit Daniel Kachhap <amit.kachhap@gmail.com> -+M: Daniel Lezcano <daniel.lezcano@linaro.org> -+M: Viresh Kumar <viresh.kumar@linaro.org> -+R: Lukasz Luba <lukasz.luba@arm.com> -+L: linux-pm@vger.kernel.org -+S: Supported -+F: Documentation/driver-api/thermal/cpu-cooling-api.rst -+F: Documentation/driver-api/thermal/cpu-idle-cooling.rst -+F: drivers/thermal/cpufreq_cooling.c -+F: drivers/thermal/cpuidle_cooling.c -+F: include/linux/cpu_cooling.h -+ -+THERMAL/POWER_ALLOCATOR -+M: Lukasz Luba <lukasz.luba@arm.com> -+L: linux-pm@vger.kernel.org -+S: Maintained -+F: Documentation/driver-api/thermal/power_allocator.rst -+F: drivers/thermal/gov_power_allocator.c -+F: include/trace/events/thermal_power_allocator.h -+ -+THINKPAD ACPI EXTRAS DRIVER -+M: Henrique de Moraes Holschuh <hmh@hmh.eng.br> -+L: ibm-acpi-devel@lists.sourceforge.net -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+W: http://ibm-acpi.sourceforge.net -+W: http://thinkwiki.org/wiki/Ibm-acpi -+T: git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git -+F: drivers/platform/x86/thinkpad_acpi.c -+ -+THINKPAD LMI DRIVER -+M: Mark Pearson <markpearson@lenovo.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-class-firmware-attributes -+F: drivers/platform/x86/think-lmi.? -+ -+THUNDERBOLT DMA TRAFFIC TEST DRIVER -+M: Isaac Hazan <isaac.hazan@intel.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/thunderbolt/dma_test.c -+ -+THUNDERBOLT DRIVER -+M: Andreas Noever <andreas.noever@gmail.com> -+M: Michael Jamet <michael.jamet@intel.com> -+M: Mika Westerberg <mika.westerberg@linux.intel.com> -+M: Yehezkel Bernat <YehezkelShB@gmail.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt.git -+F: Documentation/admin-guide/thunderbolt.rst -+F: drivers/thunderbolt/ -+F: include/linux/thunderbolt.h -+ -+THUNDERBOLT NETWORK DRIVER -+M: Michael Jamet <michael.jamet@intel.com> -+M: Mika Westerberg <mika.westerberg@linux.intel.com> -+M: Yehezkel Bernat <YehezkelShB@gmail.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/thunderbolt.c -+ -+THUNDERX GPIO DRIVER -+M: Robert Richter <rric@kernel.org> -+S: Odd Fixes -+F: drivers/gpio/gpio-thunderx.c -+ -+TI ADS131E0X ADC SERIES DRIVER -+M: Tomislav Denis <tomislav.denis@avl.com> -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/adc/ti,ads131e08.yaml -+F: drivers/iio/adc/ti-ads131e08.c -+ -+TI AM437X VPFE DRIVER -+M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git -+F: drivers/media/platform/am437x/ -+ -+TI BANDGAP AND THERMAL DRIVER -+M: Eduardo Valentin <edubezval@gmail.com> -+M: Keerthy <j-keerthy@ti.com> -+L: linux-pm@vger.kernel.org -+L: linux-omap@vger.kernel.org -+S: Maintained -+F: drivers/thermal/ti-soc-thermal/ -+ -+TI BQ27XXX POWER SUPPLY DRIVER -+F: drivers/power/supply/bq27xxx_battery.c -+F: drivers/power/supply/bq27xxx_battery_i2c.c -+F: include/linux/power/bq27xxx_battery.h -+ -+TI CDCE706 CLOCK DRIVER -+M: Max Filippov <jcmvbkbc@gmail.com> -+S: Maintained -+F: drivers/clk/clk-cdce706.c -+ -+TI CLOCK DRIVER -+M: Tero Kristo <kristo@kernel.org> -+L: linux-omap@vger.kernel.org -+S: Odd Fixes -+F: drivers/clk/ti/ -+F: include/linux/clk/ti.h -+ -+TI DAVINCI MACHINE SUPPORT -+M: Sekhar Nori <nsekhar@ti.com> -+R: Bartosz Golaszewski <brgl@bgdev.pl> -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git -+F: Documentation/devicetree/bindings/i2c/i2c-davinci.txt -+F: arch/arm/boot/dts/da850* -+F: arch/arm/mach-davinci/ -+F: drivers/i2c/busses/i2c-davinci.c -+ -+TI DAVINCI SERIES CLOCK DRIVER -+M: David Lechner <david@lechnology.com> -+R: Sekhar Nori <nsekhar@ti.com> -+S: Maintained -+F: Documentation/devicetree/bindings/clock/ti/davinci/ -+F: drivers/clk/davinci/ -+ -+TI DAVINCI SERIES GPIO DRIVER -+M: Keerthy <j-keerthy@ti.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/gpio/gpio-davinci.yaml -+F: drivers/gpio/gpio-davinci.c -+ -+TI DAVINCI SERIES MEDIA DRIVER -+M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git -+F: drivers/media/platform/davinci/ -+F: include/media/davinci/ -+ -+TI ENHANCED QUADRATURE ENCODER PULSE (eQEP) DRIVER -+R: David Lechner <david@lechnology.com> -+L: linux-iio@vger.kernel.org -+F: Documentation/devicetree/bindings/counter/ti-eqep.yaml -+F: drivers/counter/ti-eqep.c -+ -+TI ETHERNET SWITCH DRIVER (CPSW) -+R: Grygorii Strashko <grygorii.strashko@ti.com> -+L: linux-omap@vger.kernel.org -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/ti/cpsw* -+F: drivers/net/ethernet/ti/davinci* -+ -+TI FLASH MEDIA MEMORYSTICK/MMC DRIVERS -+M: Alex Dubov <oakad@yahoo.com> -+S: Maintained -+W: http://tifmxx.berlios.de/ -+F: drivers/memstick/host/tifm_ms.c -+F: drivers/misc/tifm* -+F: drivers/mmc/host/tifm_sd.c -+F: include/linux/tifm.h -+ -+TI KEYSTONE MULTICORE NAVIGATOR DRIVERS -+M: Santosh Shilimkar <ssantosh@kernel.org> -+L: linux-kernel@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git -+F: drivers/soc/ti/* -+ -+TI LM49xxx FAMILY ASoC CODEC DRIVERS -+M: M R Swami Reddy <mr.swami.reddy@ti.com> -+M: Vishwas A Deshpande <vishwas.a.deshpande@ti.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: sound/soc/codecs/isabelle* -+F: sound/soc/codecs/lm49453* -+ -+TI PCM3060 ASoC CODEC DRIVER -+M: Kirill Marinushkin <kmarinushkin@birdec.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: Documentation/devicetree/bindings/sound/pcm3060.txt -+F: sound/soc/codecs/pcm3060* -+ -+TI TAS571X FAMILY ASoC CODEC DRIVER -+M: Kevin Cernekee <cernekee@chromium.org> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Odd Fixes -+F: sound/soc/codecs/tas571x* -+ -+TI TRF7970A NFC DRIVER -+M: Mark Greer <mgreer@animalcreek.com> -+L: linux-wireless@vger.kernel.org -+L: linux-nfc@lists.01.org (subscribers-only) -+S: Supported -+F: Documentation/devicetree/bindings/net/nfc/trf7970a.txt -+F: drivers/nfc/trf7970a.c -+ -+TI TSC2046 ADC DRIVER -+M: Oleksij Rempel <o.rempel@pengutronix.de> -+R: kernel@pengutronix.de -+L: linux-iio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/iio/adc/ti,tsc2046.yaml -+F: drivers/iio/adc/ti-tsc2046.c -+ -+TI TWL4030 SERIES SOC CODEC DRIVER -+M: Peter Ujfalusi <peter.ujfalusi@gmail.com> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: sound/soc/codecs/twl4030* -+ -+TI VPE/CAL DRIVERS -+M: Benoit Parrot <bparrot@ti.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: http://linuxtv.org/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+F: Documentation/devicetree/bindings/media/ti,cal.yaml -+F: Documentation/devicetree/bindings/media/ti,vpe.yaml -+F: drivers/media/platform/ti-vpe/ -+ -+TI WILINK WIRELESS DRIVERS -+L: linux-wireless@vger.kernel.org -+S: Orphan -+W: https://wireless.wiki.kernel.org/en/users/Drivers/wl12xx -+W: https://wireless.wiki.kernel.org/en/users/Drivers/wl1251 -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git -+F: drivers/net/wireless/ti/ -+F: include/linux/wl12xx.h -+ -+TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER -+M: John Stultz <john.stultz@linaro.org> -+M: Thomas Gleixner <tglx@linutronix.de> -+R: Stephen Boyd <sboyd@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core -+F: include/linux/clocksource.h -+F: include/linux/time.h -+F: include/linux/timex.h -+F: include/uapi/linux/time.h -+F: include/uapi/linux/timex.h -+F: kernel/time/alarmtimer.c -+F: kernel/time/clocksource.c -+F: kernel/time/ntp.c -+F: kernel/time/time*.c -+F: tools/testing/selftests/timers/ -+ -+TIPC NETWORK LAYER -+M: Jon Maloy <jmaloy@redhat.com> -+M: Ying Xue <ying.xue@windriver.com> -+L: netdev@vger.kernel.org (core kernel code) -+L: tipc-discussion@lists.sourceforge.net (user apps, general discussion) -+S: Maintained -+W: http://tipc.sourceforge.net/ -+F: include/uapi/linux/tipc*.h -+F: net/tipc/ -+ -+TLAN NETWORK DRIVER -+M: Samuel Chessman <chessman@tux.org> -+L: tlan-devel@lists.sourceforge.net (subscribers-only) -+S: Maintained -+W: http://sourceforge.net/projects/tlan/ -+F: Documentation/networking/device_drivers/ethernet/ti/tlan.rst -+F: drivers/net/ethernet/ti/tlan.* -+ -+TM6000 VIDEO4LINUX DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Odd fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/tm6000* -+F: drivers/media/usb/tm6000/ -+ -+TMIO/SDHI MMC DRIVER -+M: Wolfram Sang <wsa+renesas@sang-engineering.com> -+L: linux-mmc@vger.kernel.org -+S: Supported -+F: drivers/mmc/host/renesas_sdhi* -+F: drivers/mmc/host/tmio_mmc* -+F: include/linux/mfd/tmio.h -+ -+TMP401 HARDWARE MONITOR DRIVER -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/tmp401.rst -+F: drivers/hwmon/tmp401.c -+ -+TMP513 HARDWARE MONITOR DRIVER -+M: Eric Tremblay <etremblay@distech-controls.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/tmp513.rst -+F: drivers/hwmon/tmp513.c -+ -+TMPFS (SHMEM FILESYSTEM) -+M: Hugh Dickins <hughd@google.com> -+L: linux-mm@kvack.org -+S: Maintained -+F: include/linux/shmem_fs.h -+F: mm/shmem.c -+ -+TOMOYO SECURITY MODULE -+M: Kentaro Takeda <takedakn@nttdata.co.jp> -+M: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> -+L: tomoyo-dev-en@lists.osdn.me (subscribers-only, for developers in English) -+L: tomoyo-users-en@lists.osdn.me (subscribers-only, for users in English) -+L: tomoyo-dev@lists.osdn.me (subscribers-only, for developers in Japanese) -+L: tomoyo-users@lists.osdn.me (subscribers-only, for users in Japanese) -+S: Maintained -+W: https://tomoyo.osdn.jp/ -+F: security/tomoyo/ -+ -+TOPSTAR LAPTOP EXTRAS DRIVER -+M: Herton Ronaldo Krzesinski <herton@canonical.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/topstar-laptop.c -+ -+TORTURE-TEST MODULES -+M: Davidlohr Bueso <dave@stgolabs.net> -+M: "Paul E. McKenney" <paulmck@kernel.org> -+M: Josh Triplett <josh@joshtriplett.org> -+L: linux-kernel@vger.kernel.org -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev -+F: Documentation/RCU/torture.rst -+F: kernel/locking/locktorture.c -+F: kernel/rcu/rcuscale.c -+F: kernel/rcu/rcutorture.c -+F: kernel/rcu/refscale.c -+F: kernel/torture.c -+ -+TOSHIBA ACPI EXTRAS DRIVER -+M: Azael Avalos <coproscefalo@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/toshiba_acpi.c -+ -+TOSHIBA BLUETOOTH DRIVER -+M: Azael Avalos <coproscefalo@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/toshiba_bluetooth.c -+ -+TOSHIBA HDD ACTIVE PROTECTION SENSOR DRIVER -+M: Azael Avalos <coproscefalo@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/toshiba_haps.c -+ -+TOSHIBA SMM DRIVER -+M: Jonathan Buzzard <jonathan@buzzard.org.uk> -+S: Maintained -+W: http://www.buzzard.org.uk/toshiba/ -+F: drivers/char/toshiba.c -+F: include/linux/toshiba.h -+F: include/uapi/linux/toshiba.h -+ -+TOSHIBA TC358743 DRIVER -+M: Mats Randgaard <matrandg@cisco.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/tc358743* -+F: include/media/i2c/tc358743.h -+ -+TOSHIBA WMI HOTKEYS DRIVER -+M: Azael Avalos <coproscefalo@gmail.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/toshiba-wmi.c -+ -+TPM DEVICE DRIVER -+M: Peter Huewe <peterhuewe@gmx.de> -+M: Jarkko Sakkinen <jarkko@kernel.org> -+R: Jason Gunthorpe <jgg@ziepe.ca> -+L: linux-integrity@vger.kernel.org -+S: Maintained -+W: https://kernsec.org/wiki/index.php/Linux_Kernel_Integrity -+Q: https://patchwork.kernel.org/project/linux-integrity/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git -+F: drivers/char/tpm/ -+ -+TRACING -+M: Steven Rostedt <rostedt@goodmis.org> -+M: Ingo Molnar <mingo@redhat.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core -+F: Documentation/trace/ftrace.rst -+F: arch/*/*/*/ftrace.h -+F: arch/*/kernel/ftrace.c -+F: fs/tracefs/ -+F: include/*/ftrace.h -+F: include/linux/trace*.h -+F: include/trace/ -+F: kernel/trace/ -+F: tools/testing/selftests/ftrace/ -+ -+TRACING MMIO ACCESSES (MMIOTRACE) -+M: Steven Rostedt <rostedt@goodmis.org> -+M: Ingo Molnar <mingo@kernel.org> -+R: Karol Herbst <karolherbst@gmail.com> -+R: Pekka Paalanen <ppaalanen@gmail.com> -+L: linux-kernel@vger.kernel.org -+L: nouveau@lists.freedesktop.org -+S: Maintained -+F: arch/x86/mm/kmmio.c -+F: arch/x86/mm/mmio-mod.c -+F: arch/x86/mm/testmmiotrace.c -+F: include/linux/mmiotrace.h -+F: kernel/trace/trace_mmiotrace.c -+ -+TRACING OS NOISE / LATENCY TRACERS -+M: Steven Rostedt <rostedt@goodmis.org> -+M: Daniel Bristot de Oliveira <bristot@kernel.org> -+S: Maintained -+F: kernel/trace/trace_osnoise.c -+F: include/trace/events/osnoise.h -+F: kernel/trace/trace_hwlat.c -+F: kernel/trace/trace_irqsoff.c -+F: kernel/trace/trace_sched_wakeup.c -+F: Documentation/trace/osnoise-tracer.rst -+F: Documentation/trace/timerlat-tracer.rst -+F: Documentation/trace/hwlat_detector.rst -+F: arch/*/kernel/trace.c -+ -+TRADITIONAL CHINESE DOCUMENTATION -+M: Hu Haowen <src.res@email.cn> -+L: linux-doc-tw-discuss@lists.sourceforge.net -+S: Maintained -+W: https://github.com/srcres258/linux-doc -+T: git git://github.com/srcres258/linux-doc.git doc-zh-tw -+F: Documentation/translations/zh_TW/ -+ -+TRIVIAL PATCHES -+M: Jiri Kosina <trivial@kernel.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git -+K: ^Subject:.*(?i)trivial -+ -+TTY LAYER -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+M: Jiri Slaby <jirislaby@kernel.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git -+F: Documentation/driver-api/serial/ -+F: drivers/tty/ -+F: drivers/tty/serial/serial_core.c -+F: include/linux/selection.h -+F: include/linux/serial.h -+F: include/linux/serial_core.h -+F: include/linux/sysrq.h -+F: include/linux/tty*.h -+F: include/linux/vt.h -+F: include/linux/vt_*.h -+F: include/uapi/linux/serial.h -+F: include/uapi/linux/serial_core.h -+F: include/uapi/linux/tty.h -+ -+TUA9001 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+W: http://palosaari.fi/linux/ -+Q: http://patchwork.linuxtv.org/project/linux-media/list/ -+T: git git://linuxtv.org/anttip/media_tree.git -+F: drivers/media/tuners/tua9001* -+ -+TULIP NETWORK DRIVERS -+L: netdev@vger.kernel.org -+L: linux-parisc@vger.kernel.org -+S: Orphan -+F: drivers/net/ethernet/dec/tulip/ -+ -+TUN/TAP driver -+M: Maxim Krasnyansky <maxk@qti.qualcomm.com> -+S: Maintained -+W: http://vtun.sourceforge.net/tun -+F: Documentation/networking/tuntap.rst -+F: arch/um/os-Linux/drivers/ -+ -+TURBOCHANNEL SUBSYSTEM -+M: "Maciej W. Rozycki" <macro@orcam.me.uk> -+M: Ralf Baechle <ralf@linux-mips.org> -+L: linux-mips@vger.kernel.org -+S: Maintained -+Q: http://patchwork.linux-mips.org/project/linux-mips/list/ -+F: drivers/tc/ -+F: include/linux/tc.h -+ -+TURBOSTAT UTILITY -+M: "Len Brown" <lenb@kernel.org> -+L: linux-pm@vger.kernel.org -+S: Supported -+Q: https://patchwork.kernel.org/project/linux-pm/list/ -+B: https://bugzilla.kernel.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git turbostat -+F: tools/power/x86/turbostat/ -+ -+TW5864 VIDEO4LINUX DRIVER -+M: Bluecherry Maintainers <maintainers@bluecherrydvr.com> -+M: Anton Sviridenko <anton@corp.bluecherry.net> -+M: Andrey Utkin <andrey.utkin@corp.bluecherry.net> -+M: Andrey Utkin <andrey_utkin@fastmail.com> -+L: linux-media@vger.kernel.org -+S: Supported -+F: drivers/media/pci/tw5864/ -+ -+TW68 VIDEO4LINUX DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Odd Fixes -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/pci/tw68/ -+ -+TW686X VIDEO4LINUX DRIVER -+M: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: http://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/pci/tw686x/ -+ -+UACCE ACCELERATOR FRAMEWORK -+M: Zhangfei Gao <zhangfei.gao@linaro.org> -+M: Zhou Wang <wangzhou1@hisilicon.com> -+L: linux-accelerators@lists.ozlabs.org -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-driver-uacce -+F: Documentation/misc-devices/uacce.rst -+F: drivers/misc/uacce/ -+F: include/linux/uacce.h -+F: include/uapi/misc/uacce/ -+ -+UBI FILE SYSTEM (UBIFS) -+M: Richard Weinberger <richard@nod.at> -+L: linux-mtd@lists.infradead.org -+S: Supported -+W: http://www.linux-mtd.infradead.org/doc/ubifs.html -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git next -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git fixes -+F: Documentation/filesystems/ubifs-authentication.rst -+F: Documentation/filesystems/ubifs.rst -+F: fs/ubifs/ -+ -+UCLINUX (M68KNOMMU AND COLDFIRE) -+M: Greg Ungerer <gerg@linux-m68k.org> -+L: linux-m68k@lists.linux-m68k.org -+L: uclinux-dev@uclinux.org (subscribers-only) -+S: Maintained -+W: http://www.linux-m68k.org/ -+W: http://www.uclinux.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu.git -+F: arch/m68k/*/*_no.* -+F: arch/m68k/68*/ -+F: arch/m68k/coldfire/ -+F: arch/m68k/include/asm/*_no.* -+ -+UDF FILESYSTEM -+M: Jan Kara <jack@suse.com> -+S: Maintained -+F: Documentation/filesystems/udf.rst -+F: fs/udf/ -+ -+UDRAW TABLET -+M: Bastien Nocera <hadess@hadess.net> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/hid-udraw-ps3.c -+ -+UFS FILESYSTEM -+M: Evgeniy Dushistov <dushistov@mail.ru> -+S: Maintained -+F: Documentation/admin-guide/ufs.rst -+F: fs/ufs/ -+ -+UHID USERSPACE HID IO DRIVER -+M: David Rheinsberg <david.rheinsberg@gmail.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/uhid.c -+F: include/uapi/linux/uhid.h -+ -+ULPI BUS -+M: Heikki Krogerus <heikki.krogerus@linux.intel.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/common/ulpi.c -+F: include/linux/ulpi/ -+ -+UNICODE SUBSYSTEM -+M: Gabriel Krisman Bertazi <krisman@collabora.com> -+L: linux-fsdevel@vger.kernel.org -+S: Supported -+F: fs/unicode/ -+ -+UNIFDEF -+M: Tony Finch <dot@dotat.at> -+S: Maintained -+W: http://dotat.at/prog/unifdef -+F: scripts/unifdef.c -+ -+UNIFORM CDROM DRIVER -+M: Phillip Potter <phil@philpotter.co.uk> -+S: Maintained -+F: Documentation/cdrom/ -+F: drivers/cdrom/cdrom.c -+F: include/linux/cdrom.h -+F: include/uapi/linux/cdrom.h -+ -+UNISYS S-PAR DRIVERS -+M: David Kershner <david.kershner@unisys.com> -+L: sparmaintainer@unisys.com (Unisys internal) -+S: Supported -+F: drivers/staging/unisys/ -+F: drivers/visorbus/ -+F: include/linux/visorbus.h -+ -+UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER -+R: Alim Akhtar <alim.akhtar@samsung.com> -+R: Avri Altman <avri.altman@wdc.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: Documentation/scsi/ufs.rst -+F: drivers/scsi/ufs/ -+ -+UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS -+M: Pedro Sousa <pedrom.sousa@synopsys.com> -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/ufs/*dwc* -+ -+UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER MEDIATEK HOOKS -+M: Stanley Chu <stanley.chu@mediatek.com> -+L: linux-scsi@vger.kernel.org -+L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/scsi/ufs/ufs-mediatek* -+ -+UNSORTED BLOCK IMAGES (UBI) -+M: Richard Weinberger <richard@nod.at> -+L: linux-mtd@lists.infradead.org -+S: Supported -+W: http://www.linux-mtd.infradead.org/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git next -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git fixes -+F: drivers/mtd/ubi/ -+F: include/linux/mtd/ubi.h -+F: include/uapi/mtd/ubi-user.h -+ -+USB "USBNET" DRIVER FRAMEWORK -+M: Oliver Neukum <oneukum@suse.com> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://www.linux-usb.org/usbnet -+F: drivers/net/usb/usbnet.c -+F: include/linux/usb/usbnet.h -+ -+USB ACM DRIVER -+M: Oliver Neukum <oneukum@suse.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/usb/acm.rst -+F: drivers/usb/class/cdc-acm.* -+ -+USB APPLE MFI FASTCHARGE DRIVER -+M: Bastien Nocera <hadess@hadess.net> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/misc/apple-mfi-fastcharge.c -+ -+USB AR5523 WIRELESS DRIVER -+M: Pontus Fuchs <pontus.fuchs@gmail.com> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/ath/ar5523/ -+ -+USB ATTACHED SCSI -+M: Oliver Neukum <oneukum@suse.com> -+L: linux-usb@vger.kernel.org -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/usb/storage/uas.c -+ -+USB CDC ETHERNET DRIVER -+M: Oliver Neukum <oliver@neukum.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/net/usb/cdc_*.c -+F: include/uapi/linux/usb/cdc.h -+ -+USB CHAOSKEY DRIVER -+M: Keith Packard <keithp@keithp.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/misc/chaoskey.c -+ -+USB CYPRESS C67X00 DRIVER -+L: linux-usb@vger.kernel.org -+S: Orphan -+F: drivers/usb/c67x00/ -+ -+USB DAVICOM DM9601 DRIVER -+M: Peter Korsgaard <peter@korsgaard.com> -+L: netdev@vger.kernel.org -+S: Maintained -+W: http://www.linux-usb.org/usbnet -+F: drivers/net/usb/dm9601.c -+ -+USB EHCI DRIVER -+M: Alan Stern <stern@rowland.harvard.edu> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/usb/ehci.rst -+F: drivers/usb/host/ehci* -+ -+USB GADGET/PERIPHERAL SUBSYSTEM -+M: Felipe Balbi <balbi@kernel.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+W: http://www.linux-usb.org/gadget -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -+F: drivers/usb/gadget/ -+F: include/linux/usb/gadget* -+ -+USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...) -+M: Jiri Kosina <jikos@kernel.org> -+M: Benjamin Tissoires <benjamin.tissoires@redhat.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git -+F: Documentation/hid/hiddev.rst -+F: drivers/hid/usbhid/ -+ -+USB INTEL XHCI ROLE MUX DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/roles/intel-xhci-usb-role-switch.c -+ -+USB IP DRIVER FOR HISILICON KIRIN 960 -+M: Yu Chen <chenyu56@huawei.com> -+M: Binghui Wang <wangbinghui@hisilicon.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/phy/hisilicon,hi3660-usb3.yaml -+F: drivers/phy/hisilicon/phy-hi3660-usb3.c -+ -+USB IP DRIVER FOR HISILICON KIRIN 970 -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/phy/hisilicon,hi3670-usb3.yaml -+F: drivers/phy/hisilicon/phy-hi3670-usb3.c -+ -+USB ISP116X DRIVER -+M: Olav Kongas <ok@artecdesign.ee> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/host/isp116x* -+F: include/linux/usb/isp116x.h -+ -+USB ISP1760 DRIVER -+M: Rui Miguel Silva <rui.silva@linaro.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/isp1760/* -+F: Documentation/devicetree/bindings/usb/nxp,isp1760.yaml -+ -+USB LAN78XX ETHERNET DRIVER -+M: Woojung Huh <woojung.huh@microchip.com> -+M: UNGLinuxDriver@microchip.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/microchip,lan78xx.txt -+F: drivers/net/usb/lan78xx.* -+F: include/dt-bindings/net/microchip-lan78xx.h -+ -+USB MASS STORAGE DRIVER -+M: Alan Stern <stern@rowland.harvard.edu> -+L: linux-usb@vger.kernel.org -+L: usb-storage@lists.one-eyed-alien.net -+S: Maintained -+F: drivers/usb/storage/ -+ -+USB MIDI DRIVER -+M: Clemens Ladisch <clemens@ladisch.de> -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -+F: sound/usb/midi.* -+ -+USB NETWORKING DRIVERS -+L: linux-usb@vger.kernel.org -+S: Odd Fixes -+F: drivers/net/usb/ -+ -+USB OHCI DRIVER -+M: Alan Stern <stern@rowland.harvard.edu> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/usb/ohci.rst -+F: drivers/usb/host/ohci* -+ -+USB OTG FSM (Finite State Machine) -+M: Peter Chen <peter.chen@kernel.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git -+F: drivers/usb/common/usb-otg-fsm.c -+ -+USB OVER IP DRIVER -+M: Valentina Manea <valentina.manea.m@gmail.com> -+M: Shuah Khan <shuah@kernel.org> -+M: Shuah Khan <skhan@linuxfoundation.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/usb/usbip_protocol.rst -+F: drivers/usb/usbip/ -+F: tools/testing/selftests/drivers/usb/usbip/ -+F: tools/usb/usbip/ -+ -+USB PEGASUS DRIVER -+M: Petko Manolov <petkan@nucleusys.com> -+L: linux-usb@vger.kernel.org -+L: netdev@vger.kernel.org -+S: Maintained -+W: https://github.com/petkan/pegasus -+T: git git://github.com/petkan/pegasus.git -+F: drivers/net/usb/pegasus.* -+ -+USB PHY LAYER -+M: Felipe Balbi <balbi@kernel.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git -+F: drivers/usb/phy/ -+ -+USB PRINTER DRIVER (usblp) -+M: Pete Zaitcev <zaitcev@redhat.com> -+L: linux-usb@vger.kernel.org -+S: Supported -+F: drivers/usb/class/usblp.c -+ -+USB RAW GADGET DRIVER -+R: Andrey Konovalov <andreyknvl@gmail.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/usb/raw-gadget.rst -+F: drivers/usb/gadget/legacy/raw_gadget.c -+F: include/uapi/linux/usb/raw_gadget.h -+ -+USB QMI WWAN NETWORK DRIVER -+M: Bjørn Mork <bjorn@mork.no> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-class-net-qmi -+F: drivers/net/usb/qmi_wwan.c -+ -+USB RTL8150 DRIVER -+M: Petko Manolov <petkan@nucleusys.com> -+L: linux-usb@vger.kernel.org -+L: netdev@vger.kernel.org -+S: Maintained -+W: https://github.com/petkan/rtl8150 -+T: git git://github.com/petkan/rtl8150.git -+F: drivers/net/usb/rtl8150.c -+ -+USB SERIAL SUBSYSTEM -+M: Johan Hovold <johan@kernel.org> -+L: linux-usb@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git -+F: Documentation/usb/usb-serial.rst -+F: drivers/usb/serial/ -+F: include/linux/usb/serial.h -+ -+USB SMSC75XX ETHERNET DRIVER -+M: Steve Glendinning <steve.glendinning@shawell.net> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/usb/smsc75xx.* -+ -+USB SMSC95XX ETHERNET DRIVER -+M: Steve Glendinning <steve.glendinning@shawell.net> -+M: UNGLinuxDriver@microchip.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/usb/smsc95xx.* -+ -+USB SUBSYSTEM -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: linux-usb@vger.kernel.org -+S: Supported -+W: http://www.linux-usb.org -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git -+F: Documentation/devicetree/bindings/usb/ -+F: Documentation/usb/ -+F: drivers/usb/ -+F: include/linux/usb.h -+F: include/linux/usb/ -+ -+USB TYPEC BUS FOR ALTERNATE MODES -+M: Heikki Krogerus <heikki.krogerus@linux.intel.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-bus-typec -+F: Documentation/driver-api/usb/typec_bus.rst -+F: drivers/usb/typec/altmodes/ -+F: include/linux/usb/typec_altmode.h -+ -+USB TYPEC CLASS -+M: Heikki Krogerus <heikki.krogerus@linux.intel.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/ABI/testing/sysfs-class-typec -+F: Documentation/driver-api/usb/typec.rst -+F: drivers/usb/typec/ -+F: include/linux/usb/typec.h -+ -+USB TYPEC INTEL PMC MUX DRIVER -+M: Heikki Krogerus <heikki.krogerus@linux.intel.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: Documentation/firmware-guide/acpi/intel-pmc-mux.rst -+F: drivers/usb/typec/mux/intel_pmc_mux.c -+ -+USB TYPEC PI3USB30532 MUX DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/typec/mux/pi3usb30532.c -+ -+USB TYPEC PORT CONTROLLER DRIVERS -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/typec/tcpm/ -+ -+USB UHCI DRIVER -+M: Alan Stern <stern@rowland.harvard.edu> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/host/uhci* -+ -+USB VIDEO CLASS -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-uvc-devel@lists.sourceforge.net (subscribers-only) -+L: linux-media@vger.kernel.org -+S: Maintained -+W: http://www.ideasonboard.org/uvc/ -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/usb/uvc/ -+F: include/uapi/linux/uvcvideo.h -+ -+USB WEBCAM GADGET -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-usb@vger.kernel.org -+S: Maintained -+F: drivers/usb/gadget/function/*uvc* -+F: drivers/usb/gadget/legacy/webcam.c -+F: include/uapi/linux/usb/g_uvc.h -+ -+USB WIRELESS RNDIS DRIVER (rndis_wlan) -+M: Jussi Kivilinna <jussi.kivilinna@iki.fi> -+L: linux-wireless@vger.kernel.org -+S: Maintained -+F: drivers/net/wireless/rndis_wlan.c -+ -+USB XHCI DRIVER -+M: Mathias Nyman <mathias.nyman@intel.com> -+L: linux-usb@vger.kernel.org -+S: Supported -+F: drivers/usb/host/pci-quirks* -+F: drivers/usb/host/xhci* -+ -+USB ZD1201 DRIVER -+L: linux-wireless@vger.kernel.org -+S: Orphan -+W: http://linux-lc100020.sourceforge.net -+F: drivers/net/wireless/zydas/zd1201.* -+ -+USB ZR364XX DRIVER -+M: Antoine Jacquet <royale@zerezo.com> -+L: linux-usb@vger.kernel.org -+L: linux-media@vger.kernel.org -+S: Maintained -+W: http://royale.zerezo.com/zr364xx/ -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/admin-guide/media/zr364xx* -+F: drivers/media/usb/zr364xx/ -+ -+USER-MODE LINUX (UML) -+M: Jeff Dike <jdike@addtoit.com> -+M: Richard Weinberger <richard@nod.at> -+M: Anton Ivanov <anton.ivanov@cambridgegreys.com> -+L: linux-um@lists.infradead.org -+S: Maintained -+W: http://user-mode-linux.sourceforge.net -+Q: https://patchwork.ozlabs.org/project/linux-um/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml.git -+F: Documentation/virt/uml/ -+F: arch/um/ -+F: arch/x86/um/ -+F: fs/hostfs/ -+ -+USERSPACE COPYIN/COPYOUT (UIOVEC) -+M: Alexander Viro <viro@zeniv.linux.org.uk> -+S: Maintained -+F: include/linux/uio.h -+F: lib/iov_iter.c -+ -+USERSPACE DMA BUFFER DRIVER -+M: Gerd Hoffmann <kraxel@redhat.com> -+L: dri-devel@lists.freedesktop.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/dma-buf/udmabuf.c -+F: include/uapi/linux/udmabuf.h -+ -+USERSPACE I/O (UIO) -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git -+F: Documentation/driver-api/uio-howto.rst -+F: drivers/uio/ -+F: include/linux/uio_driver.h -+ -+UTIL-LINUX PACKAGE -+M: Karel Zak <kzak@redhat.com> -+L: util-linux@vger.kernel.org -+S: Maintained -+W: http://en.wikipedia.org/wiki/Util-linux -+T: git git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git -+ -+UUID HELPERS -+M: Christoph Hellwig <hch@lst.de> -+R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.infradead.org/users/hch/uuid.git -+F: include/linux/uuid.h -+F: include/uapi/linux/uuid.h -+F: lib/test_uuid.c -+F: lib/uuid.c -+ -+UV SYSFS DRIVER -+M: Justin Ernst <justin.ernst@hpe.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+F: drivers/platform/x86/uv_sysfs.c -+ -+UVESAFB DRIVER -+M: Michal Januszewski <spock@gentoo.org> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+W: https://github.com/mjanusz/v86d -+F: Documentation/fb/uvesafb.rst -+F: drivers/video/fbdev/uvesafb.* -+ -+Ux500 CLOCK DRIVERS -+M: Ulf Hansson <ulf.hansson@linaro.org> -+L: linux-clk@vger.kernel.org -+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -+S: Maintained -+F: drivers/clk/ux500/ -+ -+VF610 NAND DRIVER -+M: Stefan Agner <stefan@agner.ch> -+L: linux-mtd@lists.infradead.org -+S: Supported -+F: drivers/mtd/nand/raw/vf610_nfc.c -+ -+VFAT/FAT/MSDOS FILESYSTEM -+M: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> -+S: Maintained -+F: Documentation/filesystems/vfat.rst -+F: fs/fat/ -+ -+VFIO DRIVER -+M: Alex Williamson <alex.williamson@redhat.com> -+R: Cornelia Huck <cohuck@redhat.com> -+L: kvm@vger.kernel.org -+S: Maintained -+T: git git://github.com/awilliam/linux-vfio.git -+F: Documentation/driver-api/vfio.rst -+F: drivers/vfio/ -+F: include/linux/vfio.h -+F: include/linux/vfio_pci_core.h -+F: include/uapi/linux/vfio.h -+ -+VFIO FSL-MC DRIVER -+M: Diana Craciun <diana.craciun@oss.nxp.com> -+L: kvm@vger.kernel.org -+S: Maintained -+F: drivers/vfio/fsl-mc/ -+ -+VFIO MEDIATED DEVICE DRIVERS -+M: Kirti Wankhede <kwankhede@nvidia.com> -+L: kvm@vger.kernel.org -+S: Maintained -+F: Documentation/driver-api/vfio-mediated-device.rst -+F: drivers/vfio/mdev/ -+F: include/linux/mdev.h -+F: samples/vfio-mdev/ -+ -+VFIO PLATFORM DRIVER -+M: Eric Auger <eric.auger@redhat.com> -+L: kvm@vger.kernel.org -+S: Maintained -+F: drivers/vfio/platform/ -+ -+VGA_SWITCHEROO -+R: Lukas Wunner <lukas@wunner.de> -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: Documentation/gpu/vga-switcheroo.rst -+F: drivers/gpu/vga/vga_switcheroo.c -+F: include/linux/vga_switcheroo.h -+ -+VIA RHINE NETWORK DRIVER -+S: Maintained -+M: Kevin Brace <kevinbrace@bracecomputerlab.com> -+F: drivers/net/ethernet/via/via-rhine.c -+ -+VIA SD/MMC CARD CONTROLLER DRIVER -+M: Bruce Chang <brucechang@via.com.tw> -+M: Harald Welte <HaraldWelte@viatech.com> -+S: Maintained -+F: drivers/mmc/host/via-sdmmc.c -+ -+VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER -+M: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> -+L: linux-fbdev@vger.kernel.org -+S: Maintained -+F: drivers/video/fbdev/via/ -+F: include/linux/via-core.h -+F: include/linux/via-gpio.h -+F: include/linux/via_i2c.h -+ -+VIA VELOCITY NETWORK DRIVER -+M: Francois Romieu <romieu@fr.zoreil.com> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/ethernet/via/via-velocity.* -+ -+VICODEC VIRTUAL CODEC DRIVER -+M: Hans Verkuil <hverkuil-cisco@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/test-drivers/vicodec/* -+ -+VIDEO I2C POLLING DRIVER -+M: Matt Ranostay <matt.ranostay@konsulko.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/i2c/video-i2c.c -+ -+VIDEO MULTIPLEXER DRIVER -+M: Philipp Zabel <p.zabel@pengutronix.de> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/platform/video-mux.c -+ -+VIDEOBUF2 FRAMEWORK -+M: Tomasz Figa <tfiga@chromium.org> -+M: Marek Szyprowski <m.szyprowski@samsung.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+F: drivers/media/common/videobuf2/* -+F: include/media/videobuf2-* -+ -+VIMC VIRTUAL MEDIA CONTROLLER DRIVER -+M: Helen Koike <helen.koike@collabora.com> -+R: Shuah Khan <skhan@linuxfoundation.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/test-drivers/vimc/* -+ -+VIRT LIB -+M: Alex Williamson <alex.williamson@redhat.com> -+M: Paolo Bonzini <pbonzini@redhat.com> -+L: kvm@vger.kernel.org -+S: Supported -+F: virt/lib/ -+ -+VIRTIO AND VHOST VSOCK DRIVER -+M: Stefan Hajnoczi <stefanha@redhat.com> -+M: Stefano Garzarella <sgarzare@redhat.com> -+L: kvm@vger.kernel.org -+L: virtualization@lists.linux-foundation.org -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/vhost/vsock.c -+F: include/linux/virtio_vsock.h -+F: include/uapi/linux/virtio_vsock.h -+F: net/vmw_vsock/virtio_transport.c -+F: net/vmw_vsock/virtio_transport_common.c -+ -+VIRTIO BLOCK AND SCSI DRIVERS -+M: "Michael S. Tsirkin" <mst@redhat.com> -+M: Jason Wang <jasowang@redhat.com> -+R: Paolo Bonzini <pbonzini@redhat.com> -+R: Stefan Hajnoczi <stefanha@redhat.com> -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+F: drivers/block/virtio_blk.c -+F: drivers/scsi/virtio_scsi.c -+F: drivers/vhost/scsi.c -+F: include/uapi/linux/virtio_blk.h -+F: include/uapi/linux/virtio_scsi.h -+ -+VIRTIO CONSOLE DRIVER -+M: Amit Shah <amit@kernel.org> -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+F: drivers/char/virtio_console.c -+F: include/linux/virtio_console.h -+F: include/uapi/linux/virtio_console.h -+ -+VIRTIO CORE AND NET DRIVERS -+M: "Michael S. Tsirkin" <mst@redhat.com> -+M: Jason Wang <jasowang@redhat.com> -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+F: Documentation/devicetree/bindings/virtio/ -+F: drivers/block/virtio_blk.c -+F: drivers/crypto/virtio/ -+F: drivers/net/virtio_net.c -+F: drivers/vdpa/ -+F: drivers/virtio/ -+F: include/linux/vdpa.h -+F: include/linux/virtio*.h -+F: include/uapi/linux/virtio_*.h -+F: tools/virtio/ -+ -+VIRTIO BALLOON -+M: "Michael S. Tsirkin" <mst@redhat.com> -+M: David Hildenbrand <david@redhat.com> -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+F: drivers/virtio/virtio_balloon.c -+F: include/uapi/linux/virtio_balloon.h -+F: include/linux/balloon_compaction.h -+F: mm/balloon_compaction.c -+ -+VIRTIO CRYPTO DRIVER -+M: Gonglei <arei.gonglei@huawei.com> -+L: virtualization@lists.linux-foundation.org -+L: linux-crypto@vger.kernel.org -+S: Maintained -+F: drivers/crypto/virtio/ -+F: include/uapi/linux/virtio_crypto.h -+ -+VIRTIO DRIVERS FOR S390 -+M: Cornelia Huck <cohuck@redhat.com> -+M: Halil Pasic <pasic@linux.ibm.com> -+L: linux-s390@vger.kernel.org -+L: virtualization@lists.linux-foundation.org -+L: kvm@vger.kernel.org -+S: Supported -+F: arch/s390/include/uapi/asm/virtio-ccw.h -+F: drivers/s390/virtio/ -+ -+VIRTIO FILE SYSTEM -+M: Vivek Goyal <vgoyal@redhat.com> -+M: Stefan Hajnoczi <stefanha@redhat.com> -+M: Miklos Szeredi <miklos@szeredi.hu> -+L: virtualization@lists.linux-foundation.org -+L: linux-fsdevel@vger.kernel.org -+S: Supported -+W: https://virtio-fs.gitlab.io/ -+F: Documentation/filesystems/virtiofs.rst -+F: fs/fuse/virtio_fs.c -+F: include/uapi/linux/virtio_fs.h -+ -+VIRTIO GPIO DRIVER -+M: Enrico Weigelt, metux IT consult <info@metux.net> -+M: Viresh Kumar <vireshk@kernel.org> -+L: linux-gpio@vger.kernel.org -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+F: drivers/gpio/gpio-virtio.c -+F: include/uapi/linux/virtio_gpio.h -+ -+VIRTIO GPU DRIVER -+M: David Airlie <airlied@linux.ie> -+M: Gerd Hoffmann <kraxel@redhat.com> -+L: dri-devel@lists.freedesktop.org -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+T: git git://anongit.freedesktop.org/drm/drm-misc -+F: drivers/gpu/drm/virtio/ -+F: include/uapi/linux/virtio_gpu.h -+ -+VIRTIO HOST (VHOST) -+M: "Michael S. Tsirkin" <mst@redhat.com> -+M: Jason Wang <jasowang@redhat.com> -+L: kvm@vger.kernel.org -+L: virtualization@lists.linux-foundation.org -+L: netdev@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git -+F: drivers/vhost/ -+F: include/linux/vhost_iotlb.h -+F: include/uapi/linux/vhost.h -+ -+VIRTIO INPUT DRIVER -+M: Gerd Hoffmann <kraxel@redhat.com> -+S: Maintained -+F: drivers/virtio/virtio_input.c -+F: include/uapi/linux/virtio_input.h -+ -+VIRTIO IOMMU DRIVER -+M: Jean-Philippe Brucker <jean-philippe@linaro.org> -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+F: drivers/iommu/virtio-iommu.c -+F: include/uapi/linux/virtio_iommu.h -+ -+VIRTIO MEM DRIVER -+M: David Hildenbrand <david@redhat.com> -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+W: https://virtio-mem.gitlab.io/ -+F: drivers/virtio/virtio_mem.c -+F: include/uapi/linux/virtio_mem.h -+ -+VIRTIO SOUND DRIVER -+M: Anton Yakovlev <anton.yakovlev@opensynergy.com> -+M: "Michael S. Tsirkin" <mst@redhat.com> -+L: virtualization@lists.linux-foundation.org -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Maintained -+F: include/uapi/linux/virtio_snd.h -+F: sound/virtio/* -+ -+VIRTIO I2C DRIVER -+M: Jie Deng <jie.deng@intel.com> -+M: Viresh Kumar <viresh.kumar@linaro.org> -+L: linux-i2c@vger.kernel.org -+L: virtualization@lists.linux-foundation.org -+S: Maintained -+F: drivers/i2c/busses/i2c-virtio.c -+F: include/uapi/linux/virtio_i2c.h -+ -+VIRTUAL BOX GUEST DEVICE DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+M: Arnd Bergmann <arnd@arndb.de> -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+S: Maintained -+F: drivers/virt/vboxguest/ -+F: include/linux/vbox_utils.h -+F: include/uapi/linux/vbox*.h -+ -+VIRTUAL BOX SHARED FOLDER VFS DRIVER -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+F: fs/vboxsf/* -+ -+VIRTUAL SERIO DEVICE DRIVER -+M: Stephen Chandler Paul <thatslyude@gmail.com> -+S: Maintained -+F: drivers/input/serio/userio.c -+F: include/uapi/linux/userio.h -+ -+VIVID VIRTUAL VIDEO DRIVER -+M: Hans Verkuil <hverkuil@xs4all.nl> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/test-drivers/vivid/* -+ -+VIDTV VIRTUAL DIGITAL TV DRIVER -+M: Daniel W. S. Almeida <dwlsalmeida@gmail.com> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/test-drivers/vidtv/* -+ -+VLYNQ BUS -+M: Florian Fainelli <f.fainelli@gmail.com> -+L: openwrt-devel@lists.openwrt.org (subscribers-only) -+S: Maintained -+F: drivers/vlynq/vlynq.c -+F: include/linux/vlynq.h -+ -+VME SUBSYSTEM -+M: Martyn Welch <martyn@welchs.me.uk> -+M: Manohar Vanga <manohar.vanga@gmail.com> -+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git -+F: Documentation/driver-api/vme.rst -+F: drivers/staging/vme/ -+F: drivers/vme/ -+F: include/linux/vme* -+ -+VM SOCKETS (AF_VSOCK) -+M: Stefano Garzarella <sgarzare@redhat.com> -+L: virtualization@lists.linux-foundation.org -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/vsockmon.c -+F: include/net/af_vsock.h -+F: include/uapi/linux/vm_sockets.h -+F: include/uapi/linux/vm_sockets_diag.h -+F: include/uapi/linux/vsockmon.h -+F: net/vmw_vsock/ -+F: tools/testing/vsock/ -+ -+VMWARE BALLOON DRIVER -+M: Nadav Amit <namit@vmware.com> -+M: "VMware, Inc." <pv-drivers@vmware.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: drivers/misc/vmw_balloon.c -+ -+VMWARE HYPERVISOR INTERFACE -+M: Deep Shah <sdeep@vmware.com> -+M: "VMware, Inc." <pv-drivers@vmware.com> -+L: virtualization@lists.linux-foundation.org -+S: Supported -+F: arch/x86/include/asm/vmware.h -+F: arch/x86/kernel/cpu/vmware.c -+ -+VMWARE PVRDMA DRIVER -+M: Adit Ranadive <aditr@vmware.com> -+M: VMware PV-Drivers <pv-drivers@vmware.com> -+L: linux-rdma@vger.kernel.org -+S: Maintained -+F: drivers/infiniband/hw/vmw_pvrdma/ -+ -+VMware PVSCSI driver -+M: Vishal Bhakta <vbhakta@vmware.com> -+M: VMware PV-Drivers <pv-drivers@vmware.com> -+L: linux-scsi@vger.kernel.org -+S: Maintained -+F: drivers/scsi/vmw_pvscsi.c -+F: drivers/scsi/vmw_pvscsi.h -+ -+VMWARE VIRTUAL PTP CLOCK DRIVER -+M: Vivek Thampi <vithampi@vmware.com> -+M: "VMware, Inc." <pv-drivers@vmware.com> -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/ptp/ptp_vmw.c -+ -+VMWARE VMCI DRIVER -+M: Jorgen Hansen <jhansen@vmware.com> -+M: Vishnu Dasa <vdasa@vmware.com> -+L: linux-kernel@vger.kernel.org -+L: pv-drivers@vmware.com (private) -+S: Maintained -+F: drivers/misc/vmw_vmci/ -+ -+VMWARE VMMOUSE SUBDRIVER -+M: "VMware Graphics" <linux-graphics-maintainer@vmware.com> -+M: "VMware, Inc." <pv-drivers@vmware.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/mouse/vmmouse.c -+F: drivers/input/mouse/vmmouse.h -+ -+VMWARE VMXNET3 ETHERNET DRIVER -+M: Ronak Doshi <doshir@vmware.com> -+M: pv-drivers@vmware.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/vmxnet3/ -+ -+VOCORE VOCORE2 BOARD -+M: Harvey Hunt <harveyhuntnexus@gmail.com> -+L: linux-mips@vger.kernel.org -+S: Maintained -+F: arch/mips/boot/dts/ralink/vocore2.dts -+ -+VOLTAGE AND CURRENT REGULATOR FRAMEWORK -+M: Liam Girdwood <lgirdwood@gmail.com> -+M: Mark Brown <broonie@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Supported -+W: http://www.slimlogic.co.uk/?p=48 -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git -+F: Documentation/devicetree/bindings/regulator/ -+F: Documentation/power/regulator/ -+F: drivers/regulator/ -+F: include/dt-bindings/regulator/ -+F: include/linux/regulator/ -+K: regulator_get_optional -+ -+VOLTAGE AND CURRENT REGULATOR IRQ HELPERS -+R: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> -+F: drivers/regulator/irq_helpers.c -+ -+VRF -+M: David Ahern <dsahern@kernel.org> -+L: netdev@vger.kernel.org -+S: Maintained -+F: Documentation/networking/vrf.rst -+F: drivers/net/vrf.c -+ -+VSPRINTF -+M: Petr Mladek <pmladek@suse.com> -+M: Steven Rostedt <rostedt@goodmis.org> -+M: Sergey Senozhatsky <senozhatsky@chromium.org> -+R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> -+R: Rasmus Villemoes <linux@rasmusvillemoes.dk> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk.git -+F: Documentation/core-api/printk-formats.rst -+F: lib/test_printf.c -+F: lib/test_scanf.c -+F: lib/vsprintf.c -+ -+VT1211 HARDWARE MONITOR DRIVER -+M: Juerg Haefliger <juergh@gmail.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/vt1211.rst -+F: drivers/hwmon/vt1211.c -+ -+VT8231 HARDWARE MONITOR DRIVER -+M: Roger Lucas <vt8231@hiddenengine.co.uk> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/vt8231.c -+ -+VUB300 USB to SDIO/SD/MMC bridge chip -+L: linux-mmc@vger.kernel.org -+S: Orphan -+F: drivers/mmc/host/vub300.c -+ -+W1 DALLAS'S 1-WIRE BUS -+M: Evgeniy Polyakov <zbr@ioremap.net> -+S: Maintained -+F: Documentation/devicetree/bindings/w1/ -+F: Documentation/w1/ -+F: drivers/w1/ -+F: include/linux/w1.h -+ -+W83791D HARDWARE MONITORING DRIVER -+M: Marc Hulsman <m.hulsman@tudelft.nl> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/w83791d.rst -+F: drivers/hwmon/w83791d.c -+ -+W83793 HARDWARE MONITORING DRIVER -+M: Rudolf Marek <r.marek@assembler.cz> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: Documentation/hwmon/w83793.rst -+F: drivers/hwmon/w83793.c -+ -+W83795 HARDWARE MONITORING DRIVER -+M: Jean Delvare <jdelvare@suse.com> -+L: linux-hwmon@vger.kernel.org -+S: Maintained -+F: drivers/hwmon/w83795.c -+ -+W83L51xD SD/MMC CARD INTERFACE DRIVER -+M: Pierre Ossman <pierre@ossman.eu> -+S: Maintained -+F: drivers/mmc/host/wbsd.* -+ -+WACOM PROTOCOL 4 SERIAL TABLETS -+M: Julian Squires <julian@cipht.net> -+M: Hans de Goede <hdegoede@redhat.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/input/tablet/wacom_serial4.c -+ -+WATCHDOG DEVICE DRIVERS -+M: Wim Van Sebroeck <wim@linux-watchdog.org> -+M: Guenter Roeck <linux@roeck-us.net> -+L: linux-watchdog@vger.kernel.org -+S: Maintained -+W: http://www.linux-watchdog.org/ -+T: git git://www.linux-watchdog.org/linux-watchdog.git -+F: Documentation/devicetree/bindings/watchdog/ -+F: Documentation/watchdog/ -+F: drivers/watchdog/ -+F: include/linux/watchdog.h -+F: include/uapi/linux/watchdog.h -+ -+WHISKEYCOVE PMIC GPIO DRIVER -+M: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-wcove.c -+ -+WHWAVE RTC DRIVER -+M: Dianlong Li <long17.cool@163.com> -+L: linux-rtc@vger.kernel.org -+S: Maintained -+F: drivers/rtc/rtc-sd3078.c -+ -+WIIMOTE HID DRIVER -+M: David Rheinsberg <david.rheinsberg@gmail.com> -+L: linux-input@vger.kernel.org -+S: Maintained -+F: drivers/hid/hid-wiimote* -+ -+WILOCITY WIL6210 WIRELESS DRIVER -+M: Maya Erez <merez@codeaurora.org> -+L: linux-wireless@vger.kernel.org -+L: wil6210@qti.qualcomm.com -+S: Supported -+W: https://wireless.wiki.kernel.org/en/users/Drivers/wil6210 -+F: drivers/net/wireless/ath/wil6210/ -+ -+WINBOND CIR DRIVER -+M: David Härdeman <david@hardeman.nu> -+S: Maintained -+F: drivers/media/rc/winbond-cir.c -+ -+WINSYSTEMS EBC-C384 WATCHDOG DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-watchdog@vger.kernel.org -+S: Maintained -+F: drivers/watchdog/ebc-c384_wdt.c -+ -+WINSYSTEMS WS16C48 GPIO DRIVER -+M: William Breathitt Gray <vilhelm.gray@gmail.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: drivers/gpio/gpio-ws16c48.c -+ -+WIREGUARD SECURE NETWORK TUNNEL -+M: Jason A. Donenfeld <Jason@zx2c4.com> -+L: wireguard@lists.zx2c4.com -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/wireguard/ -+F: tools/testing/selftests/wireguard/ -+ -+WISTRON LAPTOP BUTTON DRIVER -+M: Miloslav Trmac <mitr@volny.cz> -+S: Maintained -+F: drivers/input/misc/wistron_btns.c -+ -+WL3501 WIRELESS PCMCIA CARD DRIVER -+L: linux-wireless@vger.kernel.org -+S: Odd fixes -+F: drivers/net/wireless/wl3501* -+ -+WOLFSON MICROELECTRONICS DRIVERS -+L: patches@opensource.cirrus.com -+S: Supported -+W: https://github.com/CirrusLogic/linux-drivers/wiki -+T: git https://github.com/CirrusLogic/linux-drivers.git -+F: Documentation/devicetree/bindings/extcon/wlf,arizona.yaml -+F: Documentation/devicetree/bindings/mfd/wlf,arizona.yaml -+F: Documentation/devicetree/bindings/mfd/wm831x.txt -+F: Documentation/devicetree/bindings/regulator/wlf,arizona.yaml -+F: Documentation/devicetree/bindings/sound/wlf,*.yaml -+F: Documentation/devicetree/bindings/sound/wm* -+F: Documentation/hwmon/wm83??.rst -+F: arch/arm/mach-s3c/mach-crag6410* -+F: drivers/clk/clk-wm83*.c -+F: drivers/gpio/gpio-*wm*.c -+F: drivers/gpio/gpio-arizona.c -+F: drivers/hwmon/wm83??-hwmon.c -+F: drivers/input/misc/wm831x-on.c -+F: drivers/input/touchscreen/wm831x-ts.c -+F: drivers/input/touchscreen/wm97*.c -+F: drivers/leds/leds-wm83*.c -+F: drivers/mfd/arizona* -+F: drivers/mfd/cs47l24* -+F: drivers/mfd/wm*.c -+F: drivers/power/supply/wm83*.c -+F: drivers/regulator/arizona* -+F: drivers/regulator/wm8*.c -+F: drivers/rtc/rtc-wm83*.c -+F: drivers/video/backlight/wm83*_bl.c -+F: drivers/watchdog/wm83*_wdt.c -+F: include/linux/mfd/arizona/ -+F: include/linux/mfd/wm831x/ -+F: include/linux/mfd/wm8350/ -+F: include/linux/mfd/wm8400* -+F: include/linux/regulator/arizona* -+F: include/linux/wm97xx.h -+F: include/sound/wm????.h -+F: sound/soc/codecs/arizona* -+F: sound/soc/codecs/cs47l24* -+F: sound/soc/codecs/wm* -+ -+WORKQUEUE -+M: Tejun Heo <tj@kernel.org> -+R: Lai Jiangshan <jiangshanlai@gmail.com> -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git -+F: Documentation/core-api/workqueue.rst -+F: include/linux/workqueue.h -+F: kernel/workqueue.c -+ -+WWAN DRIVERS -+M: Loic Poulain <loic.poulain@linaro.org> -+M: Sergey Ryazanov <ryazanov.s.a@gmail.com> -+R: Johannes Berg <johannes@sipsolutions.net> -+L: netdev@vger.kernel.org -+S: Maintained -+F: drivers/net/wwan/ -+F: include/linux/wwan.h -+F: include/uapi/linux/wwan.h -+ -+X-POWERS AXP288 PMIC DRIVERS -+M: Hans de Goede <hdegoede@redhat.com> -+S: Maintained -+F: drivers/acpi/pmic/intel_pmic_xpower.c -+N: axp288 -+ -+X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS -+M: Chen-Yu Tsai <wens@csie.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+N: axp[128] -+ -+X.25 STACK -+M: Martin Schiller <ms@dev.tdt.de> -+L: linux-x25@vger.kernel.org -+S: Maintained -+F: Documentation/networking/lapb-module.rst -+F: Documentation/networking/x25* -+F: drivers/net/wan/hdlc_x25.c -+F: drivers/net/wan/lapbether.c -+F: include/*/lapb.h -+F: include/net/x25* -+F: include/uapi/linux/x25.h -+F: net/lapb/ -+F: net/x25/ -+ -+X86 ARCHITECTURE (32-BIT AND 64-BIT) -+M: Thomas Gleixner <tglx@linutronix.de> -+M: Ingo Molnar <mingo@redhat.com> -+M: Borislav Petkov <bp@alien8.de> -+M: Dave Hansen <dave.hansen@linux.intel.com> -+M: x86@kernel.org -+R: "H. Peter Anvin" <hpa@zytor.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core -+F: Documentation/devicetree/bindings/x86/ -+F: Documentation/x86/ -+F: arch/x86/ -+ -+X86 ENTRY CODE -+M: Andy Lutomirski <luto@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/asm -+F: arch/x86/entry/ -+ -+X86 MCE INFRASTRUCTURE -+M: Tony Luck <tony.luck@intel.com> -+M: Borislav Petkov <bp@alien8.de> -+L: linux-edac@vger.kernel.org -+S: Maintained -+F: arch/x86/kernel/cpu/mce/* -+ -+X86 MICROCODE UPDATE SUPPORT -+M: Borislav Petkov <bp@alien8.de> -+S: Maintained -+F: arch/x86/kernel/cpu/microcode/* -+ -+X86 MM -+M: Dave Hansen <dave.hansen@linux.intel.com> -+M: Andy Lutomirski <luto@kernel.org> -+M: Peter Zijlstra <peterz@infradead.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm -+F: arch/x86/mm/ -+ -+X86 PLATFORM DRIVERS -+M: Hans de Goede <hdegoede@redhat.com> -+M: Mark Gross <mgross@linux.intel.com> -+L: platform-driver-x86@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git -+F: drivers/platform/olpc/ -+F: drivers/platform/x86/ -+ -+X86 PLATFORM DRIVERS - ARCH -+R: Darren Hart <dvhart@infradead.org> -+R: Andy Shevchenko <andy@infradead.org> -+L: platform-driver-x86@vger.kernel.org -+L: x86@kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core -+F: arch/x86/platform -+ -+X86 PLATFORM UV HPE SUPERDOME FLEX -+M: Steve Wahl <steve.wahl@hpe.com> -+R: Mike Travis <mike.travis@hpe.com> -+R: Dimitri Sivanich <dimitri.sivanich@hpe.com> -+R: Russ Anderson <russ.anderson@hpe.com> -+S: Supported -+F: arch/x86/include/asm/uv/ -+F: arch/x86/kernel/apic/x2apic_uv_x.c -+F: arch/x86/platform/uv/ -+ -+X86 VDSO -+M: Andy Lutomirski <luto@kernel.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/vdso -+F: arch/x86/entry/vdso/ -+ -+XARRAY -+M: Matthew Wilcox <willy@infradead.org> -+L: linux-fsdevel@vger.kernel.org -+S: Supported -+F: Documentation/core-api/xarray.rst -+F: include/linux/idr.h -+F: include/linux/xarray.h -+F: lib/idr.c -+F: lib/xarray.c -+F: tools/testing/radix-tree -+ -+XBOX DVD IR REMOTE -+M: Benjamin Valentin <benpicco@googlemail.com> -+S: Maintained -+F: drivers/media/rc/keymaps/rc-xbox-dvd.c -+F: drivers/media/rc/xbox_remote.c -+ -+XC2028/3028 TUNER DRIVER -+M: Mauro Carvalho Chehab <mchehab@kernel.org> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org -+T: git git://linuxtv.org/media_tree.git -+F: drivers/media/tuners/tuner-xc2028.* -+ -+XDP (eXpress Data Path) -+M: Alexei Starovoitov <ast@kernel.org> -+M: Daniel Borkmann <daniel@iogearbox.net> -+M: David S. Miller <davem@davemloft.net> -+M: Jakub Kicinski <kuba@kernel.org> -+M: Jesper Dangaard Brouer <hawk@kernel.org> -+M: John Fastabend <john.fastabend@gmail.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Supported -+F: include/net/xdp.h -+F: include/net/xdp_priv.h -+F: include/trace/events/xdp.h -+F: kernel/bpf/cpumap.c -+F: kernel/bpf/devmap.c -+F: net/core/xdp.c -+F: samples/bpf/xdp* -+F: tools/testing/selftests/bpf/*xdp* -+F: tools/testing/selftests/bpf/*/*xdp* -+F: drivers/net/ethernet/*/*/*/*/*xdp* -+F: drivers/net/ethernet/*/*/*xdp* -+K: (?:\b|_)xdp(?:\b|_) -+ -+XDP SOCKETS (AF_XDP) -+M: Björn Töpel <bjorn@kernel.org> -+M: Magnus Karlsson <magnus.karlsson@intel.com> -+R: Jonathan Lemon <jonathan.lemon@gmail.com> -+L: netdev@vger.kernel.org -+L: bpf@vger.kernel.org -+S: Maintained -+F: Documentation/networking/af_xdp.rst -+F: include/net/xdp_sock* -+F: include/net/xsk_buff_pool.h -+F: include/uapi/linux/if_xdp.h -+F: include/uapi/linux/xdp_diag.h -+F: include/net/netns/xdp.h -+F: net/xdp/ -+F: samples/bpf/xdpsock* -+F: tools/lib/bpf/xsk* -+ -+XEN BLOCK SUBSYSTEM -+M: Roger Pau Monné <roger.pau@citrix.com> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+S: Supported -+F: drivers/block/xen* -+F: drivers/block/xen-blkback/* -+ -+XEN HYPERVISOR ARM -+M: Stefano Stabellini <sstabellini@kernel.org> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm/include/asm/xen/ -+F: arch/arm/xen/ -+ -+XEN HYPERVISOR ARM64 -+M: Stefano Stabellini <sstabellini@kernel.org> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+S: Maintained -+F: arch/arm64/include/asm/xen/ -+F: arch/arm64/xen/ -+ -+XEN HYPERVISOR INTERFACE -+M: Boris Ostrovsky <boris.ostrovsky@oracle.com> -+M: Juergen Gross <jgross@suse.com> -+R: Stefano Stabellini <sstabellini@kernel.org> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git -+F: Documentation/ABI/stable/sysfs-hypervisor-xen -+F: Documentation/ABI/testing/sysfs-hypervisor-xen -+F: arch/x86/include/asm/pvclock-abi.h -+F: arch/x86/include/asm/xen/ -+F: arch/x86/platform/pvh/ -+F: arch/x86/xen/ -+F: drivers/*/xen-*front.c -+F: drivers/xen/ -+F: include/uapi/xen/ -+F: include/xen/ -+ -+XEN NETWORK BACKEND DRIVER -+M: Wei Liu <wei.liu@kernel.org> -+M: Paul Durrant <paul@xen.org> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+L: netdev@vger.kernel.org -+S: Supported -+F: drivers/net/xen-netback/* -+ -+XEN PCI SUBSYSTEM -+M: Juergen Gross <jgross@suse.com> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+S: Supported -+F: arch/x86/pci/*xen* -+F: drivers/pci/*xen* -+ -+XEN PVSCSI DRIVERS -+M: Juergen Gross <jgross@suse.com> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+L: linux-scsi@vger.kernel.org -+S: Supported -+F: drivers/scsi/xen-scsifront.c -+F: drivers/xen/xen-scsiback.c -+F: include/xen/interface/io/vscsiif.h -+ -+XEN SOUND FRONTEND DRIVER -+M: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+L: alsa-devel@alsa-project.org (moderated for non-subscribers) -+S: Supported -+F: sound/xen/* -+ -+XEN SWIOTLB SUBSYSTEM -+M: Juergen Gross <jgross@suse.com> -+M: Stefano Stabellini <sstabellini@kernel.org> -+L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -+L: iommu@lists.linux-foundation.org -+S: Supported -+F: arch/x86/xen/*swiotlb* -+F: drivers/xen/*swiotlb* -+ -+XFS FILESYSTEM -+C: irc://irc.oftc.net/xfs -+M: Darrick J. Wong <djwong@kernel.org> -+M: linux-xfs@vger.kernel.org -+L: linux-xfs@vger.kernel.org -+S: Supported -+W: http://xfs.org/ -+T: git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git -+F: Documentation/ABI/testing/sysfs-fs-xfs -+F: Documentation/admin-guide/xfs.rst -+F: Documentation/filesystems/xfs-delayed-logging-design.rst -+F: Documentation/filesystems/xfs-self-describing-metadata.rst -+F: fs/xfs/ -+F: include/uapi/linux/dqblk_xfs.h -+F: include/uapi/linux/fsmap.h -+ -+XILINX AXI ETHERNET DRIVER -+M: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com> -+S: Maintained -+F: drivers/net/ethernet/xilinx/xilinx_axienet* -+ -+XILINX CAN DRIVER -+M: Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com> -+R: Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com> -+L: linux-can@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/net/can/xilinx_can.txt -+F: drivers/net/can/xilinx_can.c -+ -+XILINX GPIO DRIVER -+M: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com> -+R: Srinivas Neeli <srinivas.neeli@xilinx.com> -+R: Michal Simek <michal.simek@xilinx.com> -+S: Maintained -+F: Documentation/devicetree/bindings/gpio/gpio-xilinx.txt -+F: Documentation/devicetree/bindings/gpio/gpio-zynq.yaml -+F: drivers/gpio/gpio-xilinx.c -+F: drivers/gpio/gpio-zynq.c -+ -+XILINX SD-FEC IP CORES -+M: Derek Kiernan <derek.kiernan@xilinx.com> -+M: Dragan Cvetic <dragan.cvetic@xilinx.com> -+S: Maintained -+F: Documentation/devicetree/bindings/misc/xlnx,sd-fec.txt -+F: Documentation/misc-devices/xilinx_sdfec.rst -+F: drivers/misc/Kconfig -+F: drivers/misc/Makefile -+F: drivers/misc/xilinx_sdfec.c -+F: include/uapi/misc/xilinx_sdfec.h -+ -+XILINX UARTLITE SERIAL DRIVER -+M: Peter Korsgaard <jacmet@sunsite.dk> -+L: linux-serial@vger.kernel.org -+S: Maintained -+F: drivers/tty/serial/uartlite.c -+ -+XILINX VIDEO IP CORES -+M: Hyun Kwon <hyun.kwon@xilinx.com> -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-media@vger.kernel.org -+S: Supported -+T: git git://linuxtv.org/media_tree.git -+F: Documentation/devicetree/bindings/media/xilinx/ -+F: drivers/media/platform/xilinx/ -+F: include/uapi/linux/xilinx-v4l2-controls.h -+ -+XILINX ZYNQMP DPDMA DRIVER -+M: Hyun Kwon <hyun.kwon@xilinx.com> -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: dmaengine@vger.kernel.org -+S: Supported -+F: Documentation/devicetree/bindings/dma/xilinx/xlnx,zynqmp-dpdma.yaml -+F: drivers/dma/xilinx/xilinx_dpdma.c -+F: include/dt-bindings/dma/xlnx-zynqmp-dpdma.h -+ -+XILINX ZYNQMP PSGTR PHY DRIVER -+M: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com> -+M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+T: git https://github.com/Xilinx/linux-xlnx.git -+F: Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml -+F: drivers/phy/xilinx/phy-zynqmp.c -+ -+XILLYBUS DRIVER -+M: Eli Billauer <eli.billauer@gmail.com> -+L: linux-kernel@vger.kernel.org -+S: Supported -+F: drivers/char/xillybus/ -+ -+XLP9XX I2C DRIVER -+M: George Cherian <gcherian@marvell.com> -+L: linux-i2c@vger.kernel.org -+S: Supported -+W: http://www.marvell.com -+F: Documentation/devicetree/bindings/i2c/i2c-xlp9xx.txt -+F: drivers/i2c/busses/i2c-xlp9xx.c -+ -+XRA1403 GPIO EXPANDER -+M: Nandor Han <nandor.han@ge.com> -+M: Semi Malinen <semi.malinen@ge.com> -+L: linux-gpio@vger.kernel.org -+S: Maintained -+F: Documentation/devicetree/bindings/gpio/gpio-xra1403.txt -+F: drivers/gpio/gpio-xra1403.c -+ -+XTENSA XTFPGA PLATFORM SUPPORT -+M: Max Filippov <jcmvbkbc@gmail.com> -+L: linux-xtensa@linux-xtensa.org -+S: Maintained -+F: drivers/spi/spi-xtensa-xtfpga.c -+F: sound/soc/xtensa/xtfpga-i2s.c -+ -+YAM DRIVER FOR AX.25 -+M: Jean-Paul Roubelat <jpr@f6fbb.org> -+L: linux-hams@vger.kernel.org -+S: Maintained -+F: drivers/net/hamradio/yam* -+F: include/linux/yam.h -+ -+YAMA SECURITY MODULE -+M: Kees Cook <keescook@chromium.org> -+S: Supported -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip -+F: Documentation/admin-guide/LSM/Yama.rst -+F: security/yama/ -+ -+YEALINK PHONE DRIVER -+M: Henk Vergonet <Henk.Vergonet@gmail.com> -+L: usbb2k-api-dev@nongnu.org -+S: Maintained -+F: Documentation/input/devices/yealink.rst -+F: drivers/input/misc/yealink.* -+ -+Z8530 DRIVER FOR AX.25 -+M: Joerg Reuter <jreuter@yaina.de> -+L: linux-hams@vger.kernel.org -+S: Maintained -+W: http://yaina.de/jreuter/ -+W: http://www.qsl.net/dl1bke/ -+F: Documentation/networking/device_drivers/hamradio/z8530drv.rst -+F: drivers/net/hamradio/*scc.c -+F: drivers/net/hamradio/z8530.h -+ -+ZBUD COMPRESSED PAGE ALLOCATOR -+M: Seth Jennings <sjenning@redhat.com> -+M: Dan Streetman <ddstreet@ieee.org> -+L: linux-mm@kvack.org -+S: Maintained -+F: mm/zbud.c -+ -+ZD1211RW WIRELESS DRIVER -+M: Ulrich Kunitz <kune@deine-taler.de> -+L: linux-wireless@vger.kernel.org -+L: zd1211-devs@lists.sourceforge.net (subscribers-only) -+S: Maintained -+W: http://zd1211.ath.cx/wiki/DriverRewrite -+F: drivers/net/wireless/zydas/zd1211rw/ -+ -+ZD1301 MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org/ -+W: http://palosaari.fi/linux/ -+Q: https://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/usb/dvb-usb-v2/zd1301* -+ -+ZD1301_DEMOD MEDIA DRIVER -+M: Antti Palosaari <crope@iki.fi> -+L: linux-media@vger.kernel.org -+S: Maintained -+W: https://linuxtv.org/ -+W: http://palosaari.fi/linux/ -+Q: https://patchwork.linuxtv.org/project/linux-media/list/ -+F: drivers/media/dvb-frontends/zd1301_demod* -+ -+ZHAOXIN PROCESSOR SUPPORT -+M: Tony W Wang-oc <TonyWWang-oc@zhaoxin.com> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: arch/x86/kernel/cpu/zhaoxin.c -+ -+ZONEFS FILESYSTEM -+M: Damien Le Moal <damien.lemoal@wdc.com> -+M: Naohiro Aota <naohiro.aota@wdc.com> -+R: Johannes Thumshirn <jth@kernel.org> -+L: linux-fsdevel@vger.kernel.org -+S: Maintained -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs.git -+F: Documentation/filesystems/zonefs.rst -+F: fs/zonefs/ -+ -+ZPOOL COMPRESSED PAGE STORAGE API -+M: Dan Streetman <ddstreet@ieee.org> -+L: linux-mm@kvack.org -+S: Maintained -+F: include/linux/zpool.h -+F: mm/zpool.c -+ -+ZR36067 VIDEO FOR LINUX DRIVER -+M: Corentin Labbe <clabbe@baylibre.com> -+L: mjpeg-users@lists.sourceforge.net -+L: linux-media@vger.kernel.org -+S: Maintained -+W: http://mjpeg.sourceforge.net/driver-zoran/ -+Q: https://patchwork.linuxtv.org/project/linux-media/list/ -+F: Documentation/driver-api/media/drivers/zoran.rst -+F: drivers/staging/media/zoran/ -+ -+ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER -+M: Minchan Kim <minchan@kernel.org> -+M: Nitin Gupta <ngupta@vflare.org> -+R: Sergey Senozhatsky <senozhatsky@chromium.org> -+L: linux-kernel@vger.kernel.org -+S: Maintained -+F: Documentation/admin-guide/blockdev/zram.rst -+F: drivers/block/zram/ -+ -+ZS DECSTATION Z85C30 SERIAL DRIVER -+M: "Maciej W. Rozycki" <macro@orcam.me.uk> -+S: Maintained -+F: drivers/tty/serial/zs.* -+ -+ZSMALLOC COMPRESSED SLAB MEMORY ALLOCATOR -+M: Minchan Kim <minchan@kernel.org> -+M: Nitin Gupta <ngupta@vflare.org> -+R: Sergey Senozhatsky <senozhatsky@chromium.org> -+L: linux-mm@kvack.org -+S: Maintained -+F: Documentation/vm/zsmalloc.rst -+F: include/linux/zsmalloc.h -+F: mm/zsmalloc.c -+ -+ZSWAP COMPRESSED SWAP CACHING -+M: Seth Jennings <sjenning@redhat.com> -+M: Dan Streetman <ddstreet@ieee.org> -+M: Vitaly Wool <vitaly.wool@konsulko.com> -+L: linux-mm@kvack.org -+S: Maintained -+F: mm/zswap.c -+ -+THE REST -+M: Linus Torvalds <torvalds@linux-foundation.org> -+L: linux-kernel@vger.kernel.org -+S: Buried alive in reporters -+Q: http://patchwork.kernel.org/project/LKML/list/ -+T: git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git -+F: * -+F: */ -diff -urN linux-5.15/crypto/drbg.c linux-5.15-lrng/crypto/drbg.c ---- linux-5.15/crypto/drbg.c 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/crypto/drbg.c 2021-11-29 12:37:31.183279025 +1100 -@@ -114,7 +114,7 @@ - * the SHA256 / AES 256 over other ciphers. Thus, the favored - * DRBGs are the latest entries in this array. - */ --static const struct drbg_core drbg_cores[] = { -+const struct drbg_core drbg_cores[] = { - #ifdef CONFIG_CRYPTO_DRBG_CTR - { - .flags = DRBG_CTR | DRBG_STRENGTH128, -@@ -191,6 +191,7 @@ - }, - #endif /* CONFIG_CRYPTO_DRBG_HMAC */ - }; -+EXPORT_SYMBOL(drbg_cores); - - static int drbg_uninstantiate(struct drbg_state *drbg); - -@@ -206,7 +207,7 @@ - * Return: normalized strength in *bytes* value or 32 as default - * to counter programming errors - */ --static inline unsigned short drbg_sec_strength(drbg_flag_t flags) -+unsigned short drbg_sec_strength(drbg_flag_t flags) - { - switch (flags & DRBG_STRENGTH_MASK) { - case DRBG_STRENGTH128: -@@ -219,6 +220,7 @@ - return 32; - } - } -+EXPORT_SYMBOL(drbg_sec_strength); - - /* - * FIPS 140-2 continuous self test for the noise source -@@ -1215,7 +1217,7 @@ - } - - /* Free all substructures in a DRBG state without the DRBG state structure */ --static inline void drbg_dealloc_state(struct drbg_state *drbg) -+void drbg_dealloc_state(struct drbg_state *drbg) - { - if (!drbg) - return; -@@ -1236,12 +1238,13 @@ - drbg->fips_primed = false; - } - } -+EXPORT_SYMBOL(drbg_dealloc_state); - - /* - * Allocate all sub-structures for a DRBG state. - * The DRBG state structure must already be allocated. - */ --static inline int drbg_alloc_state(struct drbg_state *drbg) -+int drbg_alloc_state(struct drbg_state *drbg) - { - int ret = -ENOMEM; - unsigned int sb_size = 0; -@@ -1322,6 +1325,7 @@ - drbg_dealloc_state(drbg); - return ret; - } -+EXPORT_SYMBOL(drbg_alloc_state); - - /************************************************************************* - * DRBG interface functions -@@ -1891,8 +1895,7 @@ - * - * return: flags - */ --static inline void drbg_convert_tfm_core(const char *cra_driver_name, -- int *coreref, bool *pr) -+void drbg_convert_tfm_core(const char *cra_driver_name, int *coreref, bool *pr) - { - int i = 0; - size_t start = 0; -@@ -1919,6 +1922,7 @@ - } - } - } -+EXPORT_SYMBOL(drbg_convert_tfm_core); - - static int drbg_kcapi_init(struct crypto_tfm *tfm) - { -diff -urN linux-5.15/crypto/jitterentropy-kcapi.c linux-5.15-lrng/crypto/jitterentropy-kcapi.c ---- linux-5.15/crypto/jitterentropy-kcapi.c 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/crypto/jitterentropy-kcapi.c 2021-11-29 12:37:52.903278942 +1100 -@@ -43,8 +43,7 @@ - #include <linux/fips.h> - #include <linux/time.h> - #include <crypto/internal/rng.h> -- --#include "jitterentropy.h" -+#include <crypto/internal/jitterentropy.h> - - /*************************************************************************** - * Helper function -diff -urN linux-5.15/crypto/jitterentropy.c linux-5.15-lrng/crypto/jitterentropy.c ---- linux-5.15/crypto/jitterentropy.c 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/crypto/jitterentropy.c 2021-11-29 12:37:52.903278942 +1100 -@@ -117,7 +117,7 @@ - #define JENT_EHEALTH 9 /* Health test failed during initialization */ - #define JENT_ERCT 10 /* RCT failed during initialization */ - --#include "jitterentropy.h" -+#include <crypto/internal/jitterentropy.h> - - /*************************************************************************** - * Adaptive Proportion Test -diff -urN linux-5.15/crypto/jitterentropy.h linux-5.15-lrng/crypto/jitterentropy.h ---- linux-5.15/crypto/jitterentropy.h 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/crypto/jitterentropy.h 1970-01-01 10:00:00.000000000 +1000 -@@ -1,17 +0,0 @@ --// SPDX-License-Identifier: GPL-2.0-or-later -- --extern void *jent_zalloc(unsigned int len); --extern void jent_zfree(void *ptr); --extern int jent_fips_enabled(void); --extern void jent_panic(char *s); --extern void jent_memcpy(void *dest, const void *src, unsigned int n); --extern void jent_get_nstime(__u64 *out); -- --struct rand_data; --extern int jent_entropy_init(void); --extern int jent_read_entropy(struct rand_data *ec, unsigned char *data, -- unsigned int len); -- --extern struct rand_data *jent_entropy_collector_alloc(unsigned int osr, -- unsigned int flags); --extern void jent_entropy_collector_free(struct rand_data *entropy_collector); -diff -urN linux-5.15/drivers/char/Kconfig linux-5.15-lrng/drivers/char/Kconfig ---- linux-5.15/drivers/char/Kconfig 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/drivers/char/Kconfig 2021-11-29 12:36:52.113279174 +1100 -@@ -451,4 +451,6 @@ - pool. Otherwise, say N here so it will be regarded as device input that - only mixes the entropy pool. - -+source "drivers/char/lrng/Kconfig" -+ - endmenu -diff -urN linux-5.15/drivers/char/Makefile linux-5.15-lrng/drivers/char/Makefile ---- linux-5.15/drivers/char/Makefile 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/drivers/char/Makefile 2021-11-29 12:36:52.113279174 +1100 -@@ -3,7 +3,14 @@ - # Makefile for the kernel character device drivers. - # - --obj-y += mem.o random.o -+obj-y += mem.o -+ -+ifeq ($(CONFIG_LRNG),y) -+ obj-y += lrng/ -+else -+ obj-y += random.o -+endif -+ - obj-$(CONFIG_TTY_PRINTK) += ttyprintk.o - obj-y += misc.o - obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o -diff -urN linux-5.15/drivers/char/lrng/Kconfig linux-5.15-lrng/drivers/char/lrng/Kconfig ---- linux-5.15/drivers/char/lrng/Kconfig 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/Kconfig 2021-11-29 12:38:26.593278813 +1100 -@@ -0,0 +1,589 @@ -+# SPDX-License-Identifier: GPL-2.0 -+# -+# Linux Random Number Generator configuration -+# -+ -+menuconfig LRNG -+ bool "Linux Random Number Generator" -+ select CRYPTO_LIB_SHA256 if CRYPTO -+ help -+ The Linux Random Number Generator (LRNG) is the replacement -+ of the existing /dev/random provided with drivers/char/random.c. -+ It generates entropy from different noise sources and -+ delivers significant entropy during boot. -+ -+if LRNG -+ -+menu "Specific DRNG seeding strategies" -+ -+config LRNG_OVERSAMPLE_ENTROPY_SOURCES -+ bool "Oversample entropy sources" -+ default n -+ help -+ When enabling this option, the entropy sources are -+ over-sampled with the following approach: First, the -+ the entropy sources are requested to provide 64 bits more -+ entropy than the size of the entropy buffer. For example, -+ if the entropy buffer is 256 bits, 320 bits of entropy -+ is requested to fill that buffer. -+ -+ Second, the seed operation of the deterministic RNG -+ requests 128 bits more data from each entropy source than -+ the security strength of the DRNG during initialization. -+ A prerequisite for this operation is that the digest size -+ of the used hash must be at least equally large to generate -+ that buffer. If the prerequisite is not met, this -+ oversampling is not applied. -+ -+ This strategy is intended to offset the asymptotic entropy -+ increase to reach full entropy in a buffer. -+ -+ The strategy is consistent with the requirements in -+ NIST SP800-90C and is only enforced with fips=1. -+ -+ If unsure, say N. -+ -+config LRNG_OVERSAMPLE_ES_BITS -+ int -+ default 0 if !LRNG_OVERSAMPLE_ENTROPY_SOURCES -+ default 64 if LRNG_OVERSAMPLE_ENTROPY_SOURCES -+ -+config LRNG_SEED_BUFFER_INIT_ADD_BITS -+ int -+ default 0 if !LRNG_OVERSAMPLE_ENTROPY_SOURCES -+ default 128 if LRNG_OVERSAMPLE_ENTROPY_SOURCES -+ -+endmenu # "Specific DRNG seeding strategies" -+ -+menu "Entropy Source Configuration" -+ -+comment "Interrupt Entropy Source" -+ -+config LRNG_IRQ -+ bool "Enable Interrupt Entropy Source as LRNG Seed Source" -+ default y -+ help -+ The LRNG models an entropy source based on the timing of the -+ occurrence of interrupts. Enable this option to enable this -+ IRQ entropy source. -+ -+ The IRQ entropy source is triggered every time an interrupt -+ arrives and thus causes the interrupt handler to execute -+ slightly longer. Disabling the IRQ entropy source implies -+ that the performance penalty on the interrupt handler added -+ by the LRNG is eliminated. Yet, this entropy source is -+ considered to be the internal entropy source of the LRNG. -+ Thus, only disable it if you ensured that other entropy -+ sources are available that supply the LRNG with entropy. -+ -+ If you disable the IRQ entropy source, you MUST ensure -+ one or more entropy sources collectively have the -+ capability to deliver sufficient entropy with one invocation -+ at a rate compliant to the security strength of the DRNG -+ (usually 256 bits of entropy). In addition, if those -+ entropy sources do not deliver sufficient entropy during -+ first request, the reseed must be triggered from user -+ space or kernel space when sufficient entropy is considered -+ to be present. -+ -+ If unsure, say Y. -+ -+choice -+ prompt "Continuous entropy compression boot time setting" -+ default LRNG_CONTINUOUS_COMPRESSION_ENABLED -+ depends on LRNG_IRQ -+ help -+ Select the default behavior of the interrupt entropy source -+ continuous compression operation. -+ -+ The Linux RNG collects entropy data during each interrupt. -+ For performance reasons, a amount of entropy data defined by -+ the LRNG entropy collection pool size is concatenated into -+ an array. When that array is filled up, a hash is calculated -+ to compress the entropy. That hash is calculated in -+ interrupt context. -+ -+ In case such hash calculation in interrupt context is deemed -+ too time-consuming, the continuous compression operation -+ can be disabled. If disabled, the collection of entropy will -+ not trigger a hash compression operation in interrupt context. -+ The compression happens only when the DRNG is reseeded which is -+ in process context. This implies that old entropy data -+ collected after the last DRNG-reseed is overwritten with newer -+ entropy data once the collection pool is full instead of -+ retaining its entropy with the compression operation. -+ -+ config LRNG_CONTINUOUS_COMPRESSION_ENABLED -+ bool "Enable continuous compression (default)" -+ -+ config LRNG_CONTINUOUS_COMPRESSION_DISABLED -+ bool "Disable continuous compression" -+endchoice -+ -+config LRNG_ENABLE_CONTINUOUS_COMPRESSION -+ bool -+ default y if LRNG_CONTINUOUS_COMPRESSION_ENABLED -+ default n if LRNG_CONTINUOUS_COMPRESSION_DISABLED -+ -+config LRNG_SWITCHABLE_CONTINUOUS_COMPRESSION -+ bool "Runtime-switchable continuous entropy compression" -+ depends on LRNG_IRQ -+ help -+ Per default, the interrupt entropy source continuous -+ compression operation behavior is hard-wired into the kernel. -+ Enable this option to allow it to be configurable at boot time. -+ -+ To modify the default behavior of the continuous -+ compression operation, use the kernel command line option -+ of lrng_sw_noise.lrng_pcpu_continuous_compression. -+ -+ If unsure, say N. -+ -+choice -+ prompt "LRNG Entropy Collection Pool Size" -+ default LRNG_COLLECTION_SIZE_1024 -+ depends on LRNG_IRQ -+ help -+ Select the size of the LRNG entropy collection pool -+ storing data for the interrupt entropy source without -+ performing a compression operation. The larger the -+ collection size is, the faster the average interrupt -+ handling will be. The collection size represents the -+ number of bytes of the per-CPU memory used to batch -+ up entropy event data. -+ -+ The default value is good for regular operations. Choose -+ larger sizes for servers that have no memory limitations. -+ If runtime memory is precious, choose a smaller size. -+ -+ The collection size is unrelated to the entropy rate -+ or the amount of entropy the LRNG can process. -+ -+ config LRNG_COLLECTION_SIZE_32 -+ depends on LRNG_CONTINUOUS_COMPRESSION_ENABLED -+ depends on !LRNG_SWITCHABLE_CONTINUOUS_COMPRESSION -+ depends on !LRNG_OVERSAMPLE_ENTROPY_SOURCES -+ bool "32 interrupt events" -+ -+ config LRNG_COLLECTION_SIZE_256 -+ depends on !LRNG_OVERSAMPLE_ENTROPY_SOURCES -+ bool "256 interrupt events" -+ -+ config LRNG_COLLECTION_SIZE_512 -+ bool "512 interrupt events" -+ -+ config LRNG_COLLECTION_SIZE_1024 -+ bool "1024 interrupt events (default)" -+ -+ config LRNG_COLLECTION_SIZE_2048 -+ bool "2048 interrupt events" -+ -+ config LRNG_COLLECTION_SIZE_4096 -+ bool "4096 interrupt events" -+ -+ config LRNG_COLLECTION_SIZE_8192 -+ bool "8192 interrupt events" -+ -+endchoice -+ -+config LRNG_COLLECTION_SIZE -+ int -+ default 32 if LRNG_COLLECTION_SIZE_32 -+ default 256 if LRNG_COLLECTION_SIZE_256 -+ default 512 if LRNG_COLLECTION_SIZE_512 -+ default 1024 if LRNG_COLLECTION_SIZE_1024 -+ default 2048 if LRNG_COLLECTION_SIZE_2048 -+ default 4096 if LRNG_COLLECTION_SIZE_4096 -+ default 8192 if LRNG_COLLECTION_SIZE_8192 -+ -+config LRNG_HEALTH_TESTS -+ bool "Enable interrupt entropy source online health tests" -+ depends on LRNG_IRQ -+ help -+ The online health tests applied to the interrupt entropy -+ source validate the noise source at runtime for fatal -+ errors. These tests include SP800-90B compliant tests -+ which are invoked if the system is booted with fips=1. -+ In case of fatal errors during active SP800-90B tests, -+ the issue is logged and the noise data is discarded. -+ These tests are required for full compliance of the -+ interrupt entropy source with SP800-90B. -+ -+ If unsure, say Y. -+ -+config LRNG_RCT_BROKEN -+ bool "SP800-90B RCT with dangerous low cutoff value" -+ depends on LRNG_HEALTH_TESTS -+ depends on BROKEN -+ default n -+ help -+ This option enables a dangerously low SP800-90B repetitive -+ count test (RCT) cutoff value which makes it very likely -+ that the RCT is triggered to raise a self test failure. -+ -+ This option is ONLY intended for developers wanting to -+ test the effectiveness of the SP800-90B RCT health test. -+ -+ If unsure, say N. -+ -+config LRNG_APT_BROKEN -+ bool "SP800-90B APT with dangerous low cutoff value" -+ depends on LRNG_HEALTH_TESTS -+ depends on BROKEN -+ default n -+ help -+ This option enables a dangerously low SP800-90B adaptive -+ proportion test (APT) cutoff value which makes it very -+ likely that the APT is triggered to raise a self test -+ failure. -+ -+ This option is ONLY intended for developers wanting to -+ test the effectiveness of the SP800-90B APT health test. -+ -+ If unsure, say N. -+ -+# Default taken from SP800-90B sec 4.4.1 - significance level 2^-30 -+config LRNG_RCT_CUTOFF -+ int -+ default 31 if !LRNG_RCT_BROKEN -+ default 1 if LRNG_RCT_BROKEN -+ -+# Default taken from SP800-90B sec 4.4.2 - significance level 2^-30 -+config LRNG_APT_CUTOFF -+ int -+ default 325 if !LRNG_APT_BROKEN -+ default 32 if LRNG_APT_BROKEN -+ -+config LRNG_IRQ_ENTROPY_RATE -+ int "Interrupt Entropy Source Entropy Rate" -+ depends on LRNG_IRQ -+ range 256 4294967295 -+ default 256 -+ help -+ The LRNG will collect the configured number of interrupts to -+ obtain 256 bits of entropy. This value can be set to any between -+ 256 and 4294967295. The LRNG guarantees that this value is not -+ lower than 256. This lower limit implies that one interrupt event -+ is credited with one bit of entropy. This value is subject to the -+ increase by the oversampling factor, if no high-resolution timer -+ is found. -+ -+ In order to effectively disable the interrupt entropy source, -+ the option has to be set to 4294967295. In this case, the -+ interrupt entropy source will still deliver data but without -+ being credited with entropy. -+ -+comment "Jitter RNG Entropy Source" -+ -+config LRNG_JENT -+ bool "Enable Jitter RNG as LRNG Seed Source" -+ depends on CRYPTO -+ select CRYPTO_JITTERENTROPY -+ help -+ The Linux RNG may use the Jitter RNG as noise source. Enabling -+ this option enables the use of the Jitter RNG. Its default -+ entropy level is 16 bits of entropy per 256 data bits delivered -+ by the Jitter RNG. This entropy level can be changed at boot -+ time or at runtime with the lrng_base.jitterrng configuration -+ variable. -+ -+config LRNG_JENT_ENTROPY_RATE -+ int "Jitter RNG Entropy Source Entropy Rate" -+ depends on LRNG_JENT -+ range 0 256 -+ default 16 -+ help -+ The option defines the amount of entropy the LRNG applies to 256 -+ bits of data obtained from the Jitter RNG entropy source. The -+ LRNG enforces the limit that this value must be in the range -+ between 0 and 256. -+ -+ When configuring this value to 0, the Jitter RNG entropy source -+ will provide 256 bits of data without being credited to contain -+ entropy. -+ -+comment "CPU Entropy Source" -+ -+config LRNG_CPU -+ bool "Enable CPU Entropy Source as LRNG Seed Source" -+ default y -+ help -+ Current CPUs commonly contain entropy sources which can be -+ used to seed the LRNG. For example, the Intel RDSEED -+ instruction, or the POWER DARN instruction will be sourced -+ to seed the LRNG if this option is enabled. -+ -+ Note, if this option is enabled and the underlying CPU -+ does not offer such entropy source, the LRNG will automatically -+ detect this and ignore the hardware. -+ -+config LRNG_CPU_FULL_ENT_MULTIPLIER -+ int -+ default 1 if !LRNG_TEST_CPU_ES_COMPRESSION -+ default 123 if LRNG_TEST_CPU_ES_COMPRESSION -+ -+config LRNG_CPU_ENTROPY_RATE -+ int "CPU Entropy Source Entropy Rate" -+ depends on LRNG_CPU -+ range 0 256 -+ default 8 -+ help -+ The option defines the amount of entropy the LRNG applies to 256 -+ bits of data obtained from the CPU entropy source. The LRNG -+ enforces the limit that this value must be in the range between -+ 0 and 256. -+ -+ When configuring this value to 0, the CPU entropy source will -+ provide 256 bits of data without being credited to contain -+ entropy. -+ -+ Note, this option is overwritten when the option -+ CONFIG_RANDOM_TRUST_CPU is set. -+ -+endmenu # "Entropy Source Configuration" -+ -+menuconfig LRNG_DRNG_SWITCH -+ bool "Support DRNG runtime switching" -+ help -+ The Linux RNG per default uses a ChaCha20 DRNG that is -+ accessible via the external interfaces. With this configuration -+ option other DRNGs can be selected and loaded at runtime. -+ -+if LRNG_DRNG_SWITCH -+ -+config LRNG_KCAPI_HASH -+ bool -+ select CRYPTO_HASH -+ -+config LRNG_DRBG -+ tristate "SP800-90A support for the LRNG" -+ depends on CRYPTO -+ select CRYPTO_DRBG_MENU -+ select CRYPTO_SHA512 -+ select LRNG_KCAPI_HASH -+ help -+ Enable the SP800-90A DRBG support for the LRNG. Once the -+ module is loaded, output from /dev/random, /dev/urandom, -+ getrandom(2), or get_random_bytes_full is provided by a DRBG. -+ -+config LRNG_KCAPI -+ tristate "Kernel Crypto API support for the LRNG" -+ depends on CRYPTO -+ depends on !LRNG_DRBG -+ select CRYPTO_RNG -+ select LRNG_KCAPI_HASH -+ help -+ Enable the support for generic pseudo-random number -+ generators offered by the kernel crypto API with the -+ LRNG. Once the module is loaded, output from /dev/random, -+ /dev/urandom, getrandom(2), or get_random_bytes is -+ provided by the selected kernel crypto API RNG. -+endif # LRNG_DRNG_SWITCH -+ -+menuconfig LRNG_TESTING_MENU -+ bool "LRNG testing interfaces" -+ depends on DEBUG_FS -+ help -+ Enable one or more of the following test interfaces. -+ -+ If unsure, say N. -+ -+if LRNG_TESTING_MENU -+ -+config LRNG_RAW_HIRES_ENTROPY -+ bool "Enable entropy test interface to hires timer noise source" -+ default y -+ help -+ The test interface allows a privileged process to capture -+ the raw unconditioned high resolution time stamp noise that -+ is collected by the LRNG for statistical analysis. Extracted -+ noise data is not used to seed the LRNG. -+ -+ The raw noise data can be obtained using the lrng_raw_hires -+ debugfs file. Using the option lrng_testing.boot_raw_hires_test=1 -+ the raw noise of the first 1000 entropy events since boot -+ can be sampled. -+ -+config LRNG_RAW_JIFFIES_ENTROPY -+ bool "Enable entropy test interface to Jiffies noise source" -+ help -+ The test interface allows a privileged process to capture -+ the raw unconditioned Jiffies that is collected by -+ the LRNG for statistical analysis. This data is used for -+ seeding the LRNG if a high-resolution time stamp is not -+ available. If a high-resolution time stamp is detected, -+ the Jiffies value is not collected by the LRNG and no -+ data is provided via the test interface. Extracted noise -+ data is not used to seed the random number generator. -+ -+ The raw noise data can be obtained using the lrng_raw_jiffies -+ debugfs file. Using the option lrng_testing.boot_raw_jiffies_test=1 -+ the raw noise of the first 1000 entropy events since boot -+ can be sampled. -+ -+config LRNG_RAW_IRQ_ENTROPY -+ bool "Enable entropy test interface to IRQ number noise source" -+ help -+ The test interface allows a privileged process to capture -+ the raw unconditioned interrupt number that is collected by -+ the LRNG for statistical analysis. This data is used for -+ seeding the random32 PRNG external to the LRNG if a -+ high-resolution time stamp is available or it will be used to -+ seed the LRNG otherwise. Extracted noise data is not used to -+ seed the random number generator. -+ -+ The raw noise data can be obtained using the lrng_raw_irq -+ debugfs file. Using the option lrng_testing.boot_raw_irq_test=1 -+ the raw noise of the first 1000 entropy events since boot -+ can be sampled. -+ -+config LRNG_RAW_IRQFLAGS_ENTROPY -+ bool "Enable entropy test interface to IRQ flags noise source" -+ help -+ The test interface allows a privileged process to capture -+ the raw unconditioned interrupt flags that is collected by -+ the LRNG for statistical analysis. This data is used for -+ seeding the random32 PRNG external to the LRNG if a -+ high-resolution time stamp is available or it will be used to -+ seed the LRNG otherwise. Extracted noise data is not used to -+ seed the random number generator. -+ -+ The raw noise data can be obtained using the lrng_raw_irqflags -+ debugfs file. Using the option lrng_testing.boot_raw_irqflags_test=1 -+ the raw noise of the first 1000 entropy events since boot -+ can be sampled. -+ -+config LRNG_RAW_RETIP_ENTROPY -+ bool "Enable entropy test interface to RETIP value noise source" -+ help -+ The test interface allows a privileged process to capture -+ the raw unconditioned return instruction pointer value -+ that is collected by the LRNG for statistical analysis. -+ This data is used for seeding the random32 PRNG external -+ to the LRNG if a high-resolution time stamp is available or -+ it will be used to seed the LRNG otherwise. Extracted noise -+ data is not used to seed the random number generator. -+ -+ The raw noise data can be obtained using the lrng_raw_retip -+ debugfs file. Using the option lrng_testing.boot_raw_retip_test=1 -+ the raw noise of the first 1000 entropy events since boot -+ can be sampled. -+ -+config LRNG_RAW_REGS_ENTROPY -+ bool "Enable entropy test interface to IRQ register value noise source" -+ help -+ The test interface allows a privileged process to capture -+ the raw unconditioned interrupt register value that is -+ collected by the LRNG for statistical analysis. Extracted noise -+ data is not used to seed the random number generator. -+ -+ The raw noise data can be obtained using the lrng_raw_regs -+ debugfs file. Using the option lrng_testing.boot_raw_regs_test=1 -+ the raw noise of the first 1000 entropy events since boot -+ can be sampled. -+ -+config LRNG_RAW_ARRAY -+ bool "Enable test interface to LRNG raw entropy storage array" -+ help -+ The test interface allows a privileged process to capture -+ the raw noise data that is collected by the LRNG -+ in the per-CPU array for statistical analysis. The purpose -+ of this interface is to verify that the array handling code -+ truly only concatenates data and provides the same entropy -+ rate as the raw unconditioned noise source when assessing -+ the collected data byte-wise. -+ -+ The data can be obtained using the lrng_raw_array debugfs -+ file. Using the option lrng_testing.boot_raw_array=1 -+ the raw noise of the first 1000 entropy events since boot -+ can be sampled. -+ -+config LRNG_IRQ_PERF -+ bool "Enable LRNG interrupt performance monitor" -+ help -+ With this option, the performance monitor of the LRNG -+ interrupt handling code is enabled. The file provides -+ the execution time of the interrupt handler in -+ cycles. -+ -+ The interrupt performance data can be obtained using -+ the lrng_irq_perf debugfs file. Using the option -+ lrng_testing.boot_irq_perf=1 the performance data of -+ the first 1000 entropy events since boot can be sampled. -+ -+config LRNG_ACVT_HASH -+ bool "Enable LRNG ACVT Hash interface" -+ help -+ With this option, the LRNG built-in hash function used for -+ auxiliary pool management and prior to switching the -+ cryptographic backends is made available for ACVT. The -+ interface allows writing of the data to be hashed -+ into the interface. The read operation triggers the hash -+ operation to generate message digest. -+ -+ The ACVT interface is available with the lrng_acvt_hash -+ debugfs file. -+ -+config LRNG_RUNTIME_ES_CONFIG -+ bool "Enable runtime configuration of entropy sources" -+ help -+ When enabling this option, the LRNG provides the mechanism -+ allowing to alter the entropy rate of each entropy source -+ during boot time and runtime. -+ -+ The following interfaces are available: -+ lrng_archrandom.archrandom for the CPU entropy source, -+ lrng_jent.jitterrng for the Jitter RNG entropy source, and -+ lrng_sw_noise.irq_entropy for the interrupt entropy source. -+ -+config LRNG_RUNTIME_MAX_WO_RESEED_CONFIG -+ bool "Enable runtime configuration of max reseed threshold" -+ help -+ When enabling this option, the LRNG provides an interface -+ allowing the setting of the maximum number of DRNG generate -+ operations without a reseed that has full entropy. The -+ interface is lrng_drng.max_wo_reseed. -+ -+config LRNG_TEST_CPU_ES_COMPRESSION -+ bool "Force CPU ES compression operation" -+ help -+ When enabling this option, the CPU ES compression operation -+ is forced by setting an arbitrary value > 1 for the data -+ multiplier even when the CPU ES would deliver full entropy. -+ This allows testing of the compression operation. It -+ therefore forces to pull more data from the CPU ES -+ than what may be required. -+ -+config LRNG_TESTING -+ bool -+ default y if (LRNG_RAW_HIRES_ENTROPY || LRNG_RAW_JIFFIES_ENTROPY ||LRNG_RAW_IRQ_ENTROPY || LRNG_RAW_IRQFLAGS_ENTROPY || LRNG_RAW_RETIP_ENTROPY || LRNG_RAW_REGS_ENTROPY || LRNG_RAW_ARRAY || LRNG_IRQ_PERF || LRNG_ACVT_HASH) -+ -+endif #LRNG_TESTING_MENU -+ -+config LRNG_SELFTEST -+ bool "Enable power-on and on-demand self-tests" -+ help -+ The power-on self-tests are executed during boot time -+ covering the ChaCha20 DRNG, the hash operation used for -+ processing the entropy pools and the auxiliary pool, and -+ the time stamp management of the LRNG. -+ -+ The on-demand self-tests are triggered by writing any -+ value into the SysFS file selftest_status. At the same -+ time, when reading this file, the test status is -+ returned. A zero indicates that all tests were executed -+ successfully. -+ -+ If unsure, say Y. -+ -+if LRNG_SELFTEST -+ -+config LRNG_SELFTEST_PANIC -+ bool "Panic the kernel upon self-test failure" -+ help -+ If the option is enabled, the kernel is terminated if an -+ LRNG power-on self-test failure is detected. -+ -+endif # LRNG_SELFTEST -+ -+endif # LRNG -diff -urN linux-5.15/drivers/char/lrng/Makefile linux-5.15-lrng/drivers/char/lrng/Makefile ---- linux-5.15/drivers/char/lrng/Makefile 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/Makefile 2021-11-29 12:38:26.593278813 +1100 -@@ -0,0 +1,21 @@ -+# SPDX-License-Identifier: GPL-2.0 -+# -+# Makefile for the Linux Random Number Generator. -+# -+ -+obj-y += lrng_es_mgr.o lrng_aux.o \ -+ lrng_drng.o lrng_chacha20.o \ -+ lrng_interfaces.o lrng_es_aux.o -+ -+obj-$(CONFIG_LRNG_IRQ) += lrng_es_irq.o -+obj-$(CONFIG_SYSCTL) += lrng_proc.o -+obj-$(CONFIG_NUMA) += lrng_numa.o -+obj-$(CONFIG_LRNG_CPU) += lrng_es_archrandom.o -+obj-$(CONFIG_LRNG_DRNG_SWITCH) += lrng_switch.o -+obj-$(CONFIG_LRNG_KCAPI_HASH) += lrng_kcapi_hash.o -+obj-$(CONFIG_LRNG_DRBG) += lrng_drbg.o -+obj-$(CONFIG_LRNG_KCAPI) += lrng_kcapi.o -+obj-$(CONFIG_LRNG_JENT) += lrng_es_jent.o -+obj-$(CONFIG_LRNG_HEALTH_TESTS) += lrng_health.o -+obj-$(CONFIG_LRNG_TESTING) += lrng_testing.o -+obj-$(CONFIG_LRNG_SELFTEST) += lrng_selftest.o -diff -urN linux-5.15/drivers/char/lrng/lrng_aux.c linux-5.15-lrng/drivers/char/lrng/lrng_aux.c ---- linux-5.15/drivers/char/lrng/lrng_aux.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_aux.c 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,136 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG auxiliary interfaces -+ * -+ * Copyright (C) 2019 - 2021 Stephan Mueller <smueller@chronox.de> -+ * Copyright (C) 2017 Jason A. Donenfeld <Jason@zx2c4.com>. All -+ * Rights Reserved. -+ * Copyright (C) 2016 Jason Cooper <jason@lakedaemon.net> -+ */ -+ -+#include <linux/mm.h> -+#include <linux/random.h> -+ -+#include "lrng_internal.h" -+ -+struct batched_entropy { -+ union { -+ u64 entropy_u64[LRNG_DRNG_BLOCKSIZE / sizeof(u64)]; -+ u32 entropy_u32[LRNG_DRNG_BLOCKSIZE / sizeof(u32)]; -+ }; -+ unsigned int position; -+ spinlock_t batch_lock; -+}; -+ -+/* -+ * Get a random word for internal kernel use only. The quality of the random -+ * number is as good as /dev/urandom, but there is no backtrack protection, -+ * with the goal of being quite fast and not depleting entropy. -+ */ -+static DEFINE_PER_CPU(struct batched_entropy, batched_entropy_u64) = { -+ .batch_lock = __SPIN_LOCK_UNLOCKED(batched_entropy_u64.lock), -+}; -+ -+u64 get_random_u64(void) -+{ -+ u64 ret; -+ unsigned long flags; -+ struct batched_entropy *batch; -+ -+ lrng_debug_report_seedlevel("get_random_u64"); -+ -+ batch = raw_cpu_ptr(&batched_entropy_u64); -+ spin_lock_irqsave(&batch->batch_lock, flags); -+ if (batch->position % ARRAY_SIZE(batch->entropy_u64) == 0) { -+ lrng_drng_get_atomic((u8 *)batch->entropy_u64, -+ LRNG_DRNG_BLOCKSIZE); -+ batch->position = 0; -+ } -+ ret = batch->entropy_u64[batch->position++]; -+ spin_unlock_irqrestore(&batch->batch_lock, flags); -+ return ret; -+} -+EXPORT_SYMBOL(get_random_u64); -+ -+static DEFINE_PER_CPU(struct batched_entropy, batched_entropy_u32) = { -+ .batch_lock = __SPIN_LOCK_UNLOCKED(batched_entropy_u32.lock), -+}; -+ -+u32 get_random_u32(void) -+{ -+ u32 ret; -+ unsigned long flags; -+ struct batched_entropy *batch; -+ -+ lrng_debug_report_seedlevel("get_random_u32"); -+ -+ batch = raw_cpu_ptr(&batched_entropy_u32); -+ spin_lock_irqsave(&batch->batch_lock, flags); -+ if (batch->position % ARRAY_SIZE(batch->entropy_u32) == 0) { -+ lrng_drng_get_atomic((u8 *)batch->entropy_u32, -+ LRNG_DRNG_BLOCKSIZE); -+ batch->position = 0; -+ } -+ ret = batch->entropy_u32[batch->position++]; -+ spin_unlock_irqrestore(&batch->batch_lock, flags); -+ return ret; -+} -+EXPORT_SYMBOL(get_random_u32); -+ -+/* -+ * It's important to invalidate all potential batched entropy that might -+ * be stored before the crng is initialized, which we can do lazily by -+ * simply resetting the counter to zero so that it's re-extracted on the -+ * next usage. -+ */ -+void invalidate_batched_entropy(void) -+{ -+ int cpu; -+ unsigned long flags; -+ -+ for_each_possible_cpu(cpu) { -+ struct batched_entropy *batched_entropy; -+ -+ batched_entropy = per_cpu_ptr(&batched_entropy_u32, cpu); -+ spin_lock_irqsave(&batched_entropy->batch_lock, flags); -+ batched_entropy->position = 0; -+ spin_unlock(&batched_entropy->batch_lock); -+ -+ batched_entropy = per_cpu_ptr(&batched_entropy_u64, cpu); -+ spin_lock(&batched_entropy->batch_lock); -+ batched_entropy->position = 0; -+ spin_unlock_irqrestore(&batched_entropy->batch_lock, flags); -+ } -+} -+ -+/* -+ * randomize_page - Generate a random, page aligned address -+ * @start: The smallest acceptable address the caller will take. -+ * @range: The size of the area, starting at @start, within which the -+ * random address must fall. -+ * -+ * If @start + @range would overflow, @range is capped. -+ * -+ * NOTE: Historical use of randomize_range, which this replaces, presumed that -+ * @start was already page aligned. We now align it regardless. -+ * -+ * Return: A page aligned address within [start, start + range). On error, -+ * @start is returned. -+ */ -+unsigned long randomize_page(unsigned long start, unsigned long range) -+{ -+ if (!PAGE_ALIGNED(start)) { -+ range -= PAGE_ALIGN(start) - start; -+ start = PAGE_ALIGN(start); -+ } -+ -+ if (start > ULONG_MAX - range) -+ range = ULONG_MAX - start; -+ -+ range >>= PAGE_SHIFT; -+ -+ if (range == 0) -+ return start; -+ -+ return start + (get_random_long() % range << PAGE_SHIFT); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_chacha20.c linux-5.15-lrng/drivers/char/lrng/lrng_chacha20.c ---- linux-5.15/drivers/char/lrng/lrng_chacha20.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_chacha20.c 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,321 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * Backend for the LRNG providing the cryptographic primitives using -+ * ChaCha20 cipher implementations. -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <crypto/chacha.h> -+#include <linux/lrng.h> -+#include <linux/random.h> -+#include <linux/slab.h> -+ -+#include "lrng_chacha20.h" -+#include "lrng_internal.h" -+ -+/******************************* ChaCha20 DRNG *******************************/ -+ -+#define CHACHA_BLOCK_WORDS (CHACHA_BLOCK_SIZE / sizeof(u32)) -+ -+struct chacha20_state { -+ struct chacha20_block block; -+}; -+ -+/* -+ * Have a static memory blocks for the ChaCha20 DRNG instance to avoid calling -+ * kmalloc too early in the boot cycle. For subsequent allocation requests, -+ * such as per-NUMA-node DRNG instances, kmalloc will be used. -+ */ -+struct chacha20_state chacha20 __latent_entropy; -+ -+/* -+ * Update of the ChaCha20 state by either using an unused buffer part or by -+ * generating one ChaCha20 block which is half of the state of the ChaCha20. -+ * The block is XORed into the key part of the state. This shall ensure -+ * backtracking resistance as well as a proper mix of the ChaCha20 state once -+ * the key is injected. -+ */ -+static void lrng_chacha20_update(struct chacha20_state *chacha20_state, -+ __le32 *buf, u32 used_words) -+{ -+ struct chacha20_block *chacha20 = &chacha20_state->block; -+ u32 i; -+ __le32 tmp[CHACHA_BLOCK_WORDS]; -+ -+ BUILD_BUG_ON(sizeof(struct chacha20_block) != CHACHA_BLOCK_SIZE); -+ BUILD_BUG_ON(CHACHA_BLOCK_SIZE != 2 * CHACHA_KEY_SIZE); -+ -+ if (used_words > CHACHA_KEY_SIZE_WORDS) { -+ chacha20_block(&chacha20->constants[0], (u8 *)tmp); -+ for (i = 0; i < CHACHA_KEY_SIZE_WORDS; i++) -+ chacha20->key.u[i] ^= le32_to_cpu(tmp[i]); -+ memzero_explicit(tmp, sizeof(tmp)); -+ } else { -+ for (i = 0; i < CHACHA_KEY_SIZE_WORDS; i++) -+ chacha20->key.u[i] ^= le32_to_cpu(buf[i + used_words]); -+ } -+ -+ /* Deterministic increment of nonce as required in RFC 7539 chapter 4 */ -+ chacha20->nonce[0]++; -+ if (chacha20->nonce[0] == 0) { -+ chacha20->nonce[1]++; -+ if (chacha20->nonce[1] == 0) -+ chacha20->nonce[2]++; -+ } -+ -+ /* Leave counter untouched as it is start value is undefined in RFC */ -+} -+ -+/* -+ * Seed the ChaCha20 DRNG by injecting the input data into the key part of -+ * the ChaCha20 state. If the input data is longer than the ChaCha20 key size, -+ * perform a ChaCha20 operation after processing of key size input data. -+ * This operation shall spread out the entropy into the ChaCha20 state before -+ * new entropy is injected into the key part. -+ */ -+static int lrng_cc20_drng_seed_helper(void *drng, const u8 *inbuf, u32 inbuflen) -+{ -+ struct chacha20_state *chacha20_state = (struct chacha20_state *)drng; -+ struct chacha20_block *chacha20 = &chacha20_state->block; -+ -+ while (inbuflen) { -+ u32 i, todo = min_t(u32, inbuflen, CHACHA_KEY_SIZE); -+ -+ for (i = 0; i < todo; i++) -+ chacha20->key.b[i] ^= inbuf[i]; -+ -+ /* Break potential dependencies between the inbuf key blocks */ -+ lrng_chacha20_update(chacha20_state, NULL, -+ CHACHA_BLOCK_WORDS); -+ inbuf += todo; -+ inbuflen -= todo; -+ } -+ -+ return 0; -+} -+ -+/* -+ * Chacha20 DRNG generation of random numbers: the stream output of ChaCha20 -+ * is the random number. After the completion of the generation of the -+ * stream, the entire ChaCha20 state is updated. -+ * -+ * Note, as the ChaCha20 implements a 32 bit counter, we must ensure -+ * that this function is only invoked for at most 2^32 - 1 ChaCha20 blocks -+ * before a reseed or an update happens. This is ensured by the variable -+ * outbuflen which is a 32 bit integer defining the number of bytes to be -+ * generated by the ChaCha20 DRNG. At the end of this function, an update -+ * operation is invoked which implies that the 32 bit counter will never be -+ * overflown in this implementation. -+ */ -+static int lrng_cc20_drng_generate_helper(void *drng, u8 *outbuf, u32 outbuflen) -+{ -+ struct chacha20_state *chacha20_state = (struct chacha20_state *)drng; -+ struct chacha20_block *chacha20 = &chacha20_state->block; -+ __le32 aligned_buf[CHACHA_BLOCK_WORDS]; -+ u32 ret = outbuflen, used = CHACHA_BLOCK_WORDS; -+ int zeroize_buf = 0; -+ -+ while (outbuflen >= CHACHA_BLOCK_SIZE) { -+ chacha20_block(&chacha20->constants[0], outbuf); -+ outbuf += CHACHA_BLOCK_SIZE; -+ outbuflen -= CHACHA_BLOCK_SIZE; -+ } -+ -+ if (outbuflen) { -+ chacha20_block(&chacha20->constants[0], (u8 *)aligned_buf); -+ memcpy(outbuf, aligned_buf, outbuflen); -+ used = ((outbuflen + sizeof(aligned_buf[0]) - 1) / -+ sizeof(aligned_buf[0])); -+ zeroize_buf = 1; -+ } -+ -+ lrng_chacha20_update(chacha20_state, aligned_buf, used); -+ -+ if (zeroize_buf) -+ memzero_explicit(aligned_buf, sizeof(aligned_buf)); -+ -+ return ret; -+} -+ -+void lrng_cc20_init_state(struct chacha20_state *state) -+{ -+ lrng_cc20_init_rfc7539(&state->block); -+} -+ -+/* -+ * Allocation of the DRNG state -+ */ -+static void *lrng_cc20_drng_alloc(u32 sec_strength) -+{ -+ struct chacha20_state *state = NULL; -+ -+ if (sec_strength > CHACHA_KEY_SIZE) { -+ pr_err("Security strength of ChaCha20 DRNG (%u bits) lower than requested by LRNG (%u bits)\n", -+ CHACHA_KEY_SIZE * 8, sec_strength * 8); -+ return ERR_PTR(-EINVAL); -+ } -+ if (sec_strength < CHACHA_KEY_SIZE) -+ pr_warn("Security strength of ChaCha20 DRNG (%u bits) higher than requested by LRNG (%u bits)\n", -+ CHACHA_KEY_SIZE * 8, sec_strength * 8); -+ -+ state = kmalloc(sizeof(struct chacha20_state), GFP_KERNEL); -+ if (!state) -+ return ERR_PTR(-ENOMEM); -+ pr_debug("memory for ChaCha20 core allocated\n"); -+ -+ lrng_cc20_init_state(state); -+ -+ return state; -+} -+ -+static void lrng_cc20_drng_dealloc(void *drng) -+{ -+ struct chacha20_state *chacha20_state = (struct chacha20_state *)drng; -+ -+ if (drng == &chacha20) { -+ memzero_explicit(chacha20_state, sizeof(*chacha20_state)); -+ pr_debug("static ChaCha20 core zeroized\n"); -+ return; -+ } -+ -+ pr_debug("ChaCha20 core zeroized and freed\n"); -+ kfree_sensitive(chacha20_state); -+} -+ -+/******************************* Hash Operation *******************************/ -+ -+#ifdef CONFIG_CRYPTO_LIB_SHA256 -+ -+#include <crypto/sha2.h> -+ -+static u32 lrng_cc20_hash_digestsize(void *hash) -+{ -+ return SHA256_DIGEST_SIZE; -+} -+ -+static int lrng_cc20_hash_init(struct shash_desc *shash, void *hash) -+{ -+ /* -+ * We do not need a TFM - we only need sufficient space for -+ * struct sha256_state on the stack. -+ */ -+ sha256_init(shash_desc_ctx(shash)); -+ return 0; -+} -+ -+static int lrng_cc20_hash_update(struct shash_desc *shash, -+ const u8 *inbuf, u32 inbuflen) -+{ -+ sha256_update(shash_desc_ctx(shash), inbuf, inbuflen); -+ return 0; -+} -+ -+static int lrng_cc20_hash_final(struct shash_desc *shash, u8 *digest) -+{ -+ sha256_final(shash_desc_ctx(shash), digest); -+ return 0; -+} -+ -+static const char *lrng_cc20_hash_name(void) -+{ -+ return "SHA-256"; -+} -+ -+static void lrng_cc20_hash_desc_zero(struct shash_desc *shash) -+{ -+ memzero_explicit(shash_desc_ctx(shash), sizeof(struct sha256_state)); -+} -+ -+#else /* CONFIG_CRYPTO_LIB_SHA256 */ -+ -+#include <crypto/sha1.h> -+#include <crypto/sha1_base.h> -+ -+/* -+ * If the SHA-256 support is not compiled, we fall back to SHA-1 that is always -+ * compiled and present in the kernel. -+ */ -+static u32 lrng_cc20_hash_digestsize(void *hash) -+{ -+ return SHA1_DIGEST_SIZE; -+} -+ -+static void lrng_sha1_block_fn(struct sha1_state *sctx, const u8 *src, -+ int blocks) -+{ -+ u32 temp[SHA1_WORKSPACE_WORDS]; -+ -+ while (blocks--) { -+ sha1_transform(sctx->state, src, temp); -+ src += SHA1_BLOCK_SIZE; -+ } -+ memzero_explicit(temp, sizeof(temp)); -+} -+ -+static int lrng_cc20_hash_init(struct shash_desc *shash, void *hash) -+{ -+ /* -+ * We do not need a TFM - we only need sufficient space for -+ * struct sha1_state on the stack. -+ */ -+ sha1_base_init(shash); -+ return 0; -+} -+ -+static int lrng_cc20_hash_update(struct shash_desc *shash, -+ const u8 *inbuf, u32 inbuflen) -+{ -+ return sha1_base_do_update(shash, inbuf, inbuflen, lrng_sha1_block_fn); -+} -+ -+static int lrng_cc20_hash_final(struct shash_desc *shash, u8 *digest) -+{ -+ return sha1_base_do_finalize(shash, lrng_sha1_block_fn) ?: -+ sha1_base_finish(shash, digest); -+} -+ -+static const char *lrng_cc20_hash_name(void) -+{ -+ return "SHA-1"; -+} -+ -+static void lrng_cc20_hash_desc_zero(struct shash_desc *shash) -+{ -+ memzero_explicit(shash_desc_ctx(shash), sizeof(struct sha1_state)); -+} -+ -+#endif /* CONFIG_CRYPTO_LIB_SHA256 */ -+ -+static void *lrng_cc20_hash_alloc(void) -+{ -+ pr_info("Hash %s allocated\n", lrng_cc20_hash_name()); -+ return NULL; -+} -+ -+static void lrng_cc20_hash_dealloc(void *hash) -+{ -+} -+ -+static const char *lrng_cc20_drng_name(void) -+{ -+ return "ChaCha20 DRNG"; -+} -+ -+const struct lrng_crypto_cb lrng_cc20_crypto_cb = { -+ .lrng_drng_name = lrng_cc20_drng_name, -+ .lrng_hash_name = lrng_cc20_hash_name, -+ .lrng_drng_alloc = lrng_cc20_drng_alloc, -+ .lrng_drng_dealloc = lrng_cc20_drng_dealloc, -+ .lrng_drng_seed_helper = lrng_cc20_drng_seed_helper, -+ .lrng_drng_generate_helper = lrng_cc20_drng_generate_helper, -+ .lrng_hash_alloc = lrng_cc20_hash_alloc, -+ .lrng_hash_dealloc = lrng_cc20_hash_dealloc, -+ .lrng_hash_digestsize = lrng_cc20_hash_digestsize, -+ .lrng_hash_init = lrng_cc20_hash_init, -+ .lrng_hash_update = lrng_cc20_hash_update, -+ .lrng_hash_final = lrng_cc20_hash_final, -+ .lrng_hash_desc_zero = lrng_cc20_hash_desc_zero, -+}; -diff -urN linux-5.15/drivers/char/lrng/lrng_chacha20.h linux-5.15-lrng/drivers/char/lrng/lrng_chacha20.h ---- linux-5.15/drivers/char/lrng/lrng_chacha20.h 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_chacha20.h 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,25 @@ -+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */ -+/* -+ * LRNG ChaCha20 definitions -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#include <crypto/chacha.h> -+ -+/* State according to RFC 7539 section 2.3 */ -+struct chacha20_block { -+ u32 constants[4]; -+ union { -+#define CHACHA_KEY_SIZE_WORDS (CHACHA_KEY_SIZE / sizeof(u32)) -+ u32 u[CHACHA_KEY_SIZE_WORDS]; -+ u8 b[CHACHA_KEY_SIZE]; -+ } key; -+ u32 counter; -+ u32 nonce[3]; -+}; -+ -+static inline void lrng_cc20_init_rfc7539(struct chacha20_block *chacha20) -+{ -+ chacha_init_consts(chacha20->constants); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_drbg.c linux-5.15-lrng/drivers/char/lrng/lrng_drbg.c ---- linux-5.15/drivers/char/lrng/lrng_drbg.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_drbg.c 2021-11-29 12:37:37.193279002 +1100 -@@ -0,0 +1,198 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * Backend for the LRNG providing the cryptographic primitives using the -+ * kernel crypto API and its DRBG. -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <crypto/drbg.h> -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/lrng.h> -+ -+#include "lrng_kcapi_hash.h" -+ -+/* -+ * Define a DRBG plus a hash / MAC used to extract data from the entropy pool. -+ * For LRNG_HASH_NAME you can use a hash or a MAC (HMAC or CMAC) of your choice -+ * (Note, you should use the suggested selections below -- using SHA-1 or MD5 -+ * is not wise). The idea is that the used cipher primitive can be selected to -+ * be the same as used for the DRBG. I.e. the LRNG only uses one cipher -+ * primitive using the same cipher implementation with the options offered in -+ * the following. This means, if the CTR DRBG is selected and AES-NI is present, -+ * both the CTR DRBG and the selected cmac(aes) use AES-NI. -+ * -+ * The security strengths of the DRBGs are all 256 bits according to -+ * SP800-57 section 5.6.1. -+ * -+ * This definition is allowed to be changed. -+ */ -+#ifdef CONFIG_CRYPTO_DRBG_CTR -+static unsigned int lrng_drbg_type = 0; -+#elif defined CONFIG_CRYPTO_DRBG_HMAC -+static unsigned int lrng_drbg_type = 1; -+#elif defined CONFIG_CRYPTO_DRBG_HASH -+static unsigned int lrng_drbg_type = 2; -+#else -+#error "Unknown DRBG in use" -+#endif -+ -+/* The parameter must be r/o in sysfs as otherwise races appear. */ -+module_param(lrng_drbg_type, uint, 0444); -+MODULE_PARM_DESC(lrng_drbg_type, "DRBG type used for LRNG (0->CTR_DRBG, 1->HMAC_DRBG, 2->Hash_DRBG)"); -+ -+struct lrng_drbg { -+ const char *hash_name; -+ const char *drbg_core; -+}; -+ -+static const struct lrng_drbg lrng_drbg_types[] = { -+ { /* CTR_DRBG with AES-256 using derivation function */ -+ .hash_name = "sha512", -+ .drbg_core = "drbg_nopr_ctr_aes256", -+ }, { /* HMAC_DRBG with SHA-512 */ -+ .hash_name = "sha512", -+ .drbg_core = "drbg_nopr_hmac_sha512", -+ }, { /* Hash_DRBG with SHA-512 using derivation function */ -+ .hash_name = "sha512", -+ .drbg_core = "drbg_nopr_sha512" -+ } -+}; -+ -+static int lrng_drbg_drng_seed_helper(void *drng, const u8 *inbuf, u32 inbuflen) -+{ -+ struct drbg_state *drbg = (struct drbg_state *)drng; -+ LIST_HEAD(seedlist); -+ struct drbg_string data; -+ int ret; -+ -+ drbg_string_fill(&data, inbuf, inbuflen); -+ list_add_tail(&data.list, &seedlist); -+ ret = drbg->d_ops->update(drbg, &seedlist, drbg->seeded); -+ -+ if (ret >= 0) -+ drbg->seeded = true; -+ -+ return ret; -+} -+ -+static int lrng_drbg_drng_generate_helper(void *drng, u8 *outbuf, u32 outbuflen) -+{ -+ struct drbg_state *drbg = (struct drbg_state *)drng; -+ -+ return drbg->d_ops->generate(drbg, outbuf, outbuflen, NULL); -+} -+ -+static void *lrng_drbg_drng_alloc(u32 sec_strength) -+{ -+ struct drbg_state *drbg; -+ int coreref = -1; -+ bool pr = false; -+ int ret; -+ -+ drbg_convert_tfm_core(lrng_drbg_types[lrng_drbg_type].drbg_core, -+ &coreref, &pr); -+ if (coreref < 0) -+ return ERR_PTR(-EFAULT); -+ -+ drbg = kzalloc(sizeof(struct drbg_state), GFP_KERNEL); -+ if (!drbg) -+ return ERR_PTR(-ENOMEM); -+ -+ drbg->core = &drbg_cores[coreref]; -+ drbg->seeded = false; -+ ret = drbg_alloc_state(drbg); -+ if (ret) -+ goto err; -+ -+ if (sec_strength > drbg_sec_strength(drbg->core->flags)) { -+ pr_err("Security strength of DRBG (%u bits) lower than requested by LRNG (%u bits)\n", -+ drbg_sec_strength(drbg->core->flags) * 8, -+ sec_strength * 8); -+ goto dealloc; -+ } -+ -+ if (sec_strength < drbg_sec_strength(drbg->core->flags)) -+ pr_warn("Security strength of DRBG (%u bits) higher than requested by LRNG (%u bits)\n", -+ drbg_sec_strength(drbg->core->flags) * 8, -+ sec_strength * 8); -+ -+ pr_info("DRBG with %s core allocated\n", drbg->core->backend_cra_name); -+ -+ return drbg; -+ -+dealloc: -+ if (drbg->d_ops) -+ drbg->d_ops->crypto_fini(drbg); -+ drbg_dealloc_state(drbg); -+err: -+ kfree(drbg); -+ return ERR_PTR(-EINVAL); -+} -+ -+static void lrng_drbg_drng_dealloc(void *drng) -+{ -+ struct drbg_state *drbg = (struct drbg_state *)drng; -+ -+ if (drbg && drbg->d_ops) -+ drbg->d_ops->crypto_fini(drbg); -+ drbg_dealloc_state(drbg); -+ kfree_sensitive(drbg); -+ pr_info("DRBG deallocated\n"); -+} -+ -+static void *lrng_drbg_hash_alloc(void) -+{ -+ return lrng_kcapi_hash_alloc(lrng_drbg_types[lrng_drbg_type].hash_name); -+} -+ -+static const char *lrng_drbg_name(void) -+{ -+ return lrng_drbg_types[lrng_drbg_type].drbg_core; -+} -+ -+static const char *lrng_hash_name(void) -+{ -+ return lrng_drbg_types[lrng_drbg_type].hash_name; -+} -+ -+static const struct lrng_crypto_cb lrng_drbg_crypto_cb = { -+ .lrng_drng_name = lrng_drbg_name, -+ .lrng_hash_name = lrng_hash_name, -+ .lrng_drng_alloc = lrng_drbg_drng_alloc, -+ .lrng_drng_dealloc = lrng_drbg_drng_dealloc, -+ .lrng_drng_seed_helper = lrng_drbg_drng_seed_helper, -+ .lrng_drng_generate_helper = lrng_drbg_drng_generate_helper, -+ .lrng_hash_alloc = lrng_drbg_hash_alloc, -+ .lrng_hash_dealloc = lrng_kcapi_hash_dealloc, -+ .lrng_hash_digestsize = lrng_kcapi_hash_digestsize, -+ .lrng_hash_init = lrng_kcapi_hash_init, -+ .lrng_hash_update = lrng_kcapi_hash_update, -+ .lrng_hash_final = lrng_kcapi_hash_final, -+ .lrng_hash_desc_zero = lrng_kcapi_hash_zero, -+}; -+ -+static int __init lrng_drbg_init(void) -+{ -+ if (lrng_drbg_type >= ARRAY_SIZE(lrng_drbg_types)) { -+ pr_err("lrng_drbg_type parameter too large (given %u - max: %lu)", -+ lrng_drbg_type, -+ (unsigned long)ARRAY_SIZE(lrng_drbg_types) - 1); -+ return -EAGAIN; -+ } -+ return lrng_set_drng_cb(&lrng_drbg_crypto_cb); -+} -+ -+static void __exit lrng_drbg_exit(void) -+{ -+ lrng_set_drng_cb(NULL); -+} -+ -+late_initcall(lrng_drbg_init); -+module_exit(lrng_drbg_exit); -+MODULE_LICENSE("Dual BSD/GPL"); -+MODULE_AUTHOR("Stephan Mueller <smueller@chronox.de>"); -+MODULE_DESCRIPTION("Linux Random Number Generator - SP800-90A DRBG backend"); -diff -urN linux-5.15/drivers/char/lrng/lrng_drng.c linux-5.15-lrng/drivers/char/lrng/lrng_drng.c ---- linux-5.15/drivers/char/lrng/lrng_drng.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_drng.c 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,451 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG DRNG processing -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/fips.h> -+#include <linux/lrng.h> -+ -+#include "lrng_internal.h" -+ -+/* -+ * Maximum number of seconds between DRNG reseed intervals of the DRNG. Note, -+ * this is enforced with the next request of random numbers from the -+ * DRNG. Setting this value to zero implies a reseeding attempt before every -+ * generated random number. -+ */ -+int lrng_drng_reseed_max_time = 600; -+ -+static atomic_t lrng_avail = ATOMIC_INIT(0); -+ -+DEFINE_MUTEX(lrng_crypto_cb_update); -+ -+/* DRNG for /dev/urandom, getrandom(2), get_random_bytes */ -+static struct lrng_drng lrng_drng_init = { -+ .drng = &chacha20, -+ .crypto_cb = &lrng_cc20_crypto_cb, -+ .lock = __MUTEX_INITIALIZER(lrng_drng_init.lock), -+ .spin_lock = __SPIN_LOCK_UNLOCKED(lrng_drng_init.spin_lock), -+ .hash_lock = __RW_LOCK_UNLOCKED(lrng_drng_init.hash_lock) -+}; -+ -+/* -+ * DRNG for get_random_bytes when called in atomic context. This -+ * DRNG will always use the ChaCha20 DRNG. It will never benefit from a -+ * DRNG switch like the "regular" DRNG. If there was no DRNG switch, the atomic -+ * DRNG is identical to the "regular" DRNG. -+ * -+ * The reason for having this is due to the fact that DRNGs other than -+ * the ChaCha20 DRNG may sleep. -+ */ -+static struct lrng_drng lrng_drng_atomic = { -+ .drng = &chacha20, -+ .crypto_cb = &lrng_cc20_crypto_cb, -+ .spin_lock = __SPIN_LOCK_UNLOCKED(lrng_drng_atomic.spin_lock), -+ .hash_lock = __RW_LOCK_UNLOCKED(lrng_drng_atomic.hash_lock) -+}; -+ -+static u32 max_wo_reseed = LRNG_DRNG_MAX_WITHOUT_RESEED; -+#ifdef CONFIG_LRNG_RUNTIME_MAX_WO_RESEED_CONFIG -+module_param(max_wo_reseed, uint, 0444); -+MODULE_PARM_DESC(max_wo_reseed, -+ "Maximum number of DRNG generate operation without full reseed\n"); -+#endif -+ -+/********************************** Helper ************************************/ -+ -+bool lrng_get_available(void) -+{ -+ return likely(atomic_read(&lrng_avail)); -+} -+ -+void lrng_set_available(void) -+{ -+ atomic_set(&lrng_avail, 1); -+} -+ -+struct lrng_drng *lrng_drng_init_instance(void) -+{ -+ return &lrng_drng_init; -+} -+ -+struct lrng_drng *lrng_drng_atomic_instance(void) -+{ -+ return &lrng_drng_atomic; -+} -+ -+void lrng_drng_reset(struct lrng_drng *drng) -+{ -+ atomic_set(&drng->requests, LRNG_DRNG_RESEED_THRESH); -+ atomic_set(&drng->requests_since_fully_seeded, 0); -+ drng->last_seeded = jiffies; -+ drng->fully_seeded = false; -+ drng->force_reseed = true; -+ pr_debug("reset DRNG\n"); -+} -+ -+/* Initialize the default DRNG during boot */ -+static void lrng_drng_seed(struct lrng_drng *drng); -+void lrng_drngs_init_cc20(bool force_seed) -+{ -+ unsigned long flags = 0; -+ -+ if (lrng_get_available()) -+ return; -+ -+ lrng_drng_lock(&lrng_drng_init, &flags); -+ if (lrng_get_available()) { -+ lrng_drng_unlock(&lrng_drng_init, &flags); -+ if (force_seed) -+ goto seed; -+ return; -+ } -+ -+ lrng_drng_reset(&lrng_drng_init); -+ lrng_cc20_init_state(&chacha20); -+ lrng_drng_unlock(&lrng_drng_init, &flags); -+ -+ lrng_drng_lock(&lrng_drng_atomic, &flags); -+ lrng_drng_reset(&lrng_drng_atomic); -+ /* -+ * We do not initialize the state of the atomic DRNG as it is identical -+ * to the DRNG at this point. -+ */ -+ lrng_drng_unlock(&lrng_drng_atomic, &flags); -+ -+ lrng_set_available(); -+ -+seed: -+ /* Seed the DRNG with any entropy available */ -+ if (!lrng_pool_trylock()) { -+ lrng_drng_seed(&lrng_drng_init); -+ pr_info("ChaCha20 core initialized with first seeding\n"); -+ lrng_pool_unlock(); -+ } else { -+ pr_info("ChaCha20 core initialized without seeding\n"); -+ } -+} -+ -+bool lrng_sp80090c_compliant(void) -+{ -+ if (!IS_ENABLED(CONFIG_LRNG_OVERSAMPLE_ENTROPY_SOURCES)) -+ return false; -+ -+ /* Entropy source hash must be capable of transporting enough entropy */ -+ if (lrng_get_digestsize() < -+ (lrng_security_strength() + CONFIG_LRNG_SEED_BUFFER_INIT_ADD_BITS)) -+ return false; -+ -+ /* SP800-90C only requested in FIPS mode */ -+ return fips_enabled; -+} -+ -+/************************* Random Number Generation ***************************/ -+ -+/* Inject a data buffer into the DRNG */ -+static void lrng_drng_inject(struct lrng_drng *drng, -+ const u8 *inbuf, u32 inbuflen, bool fully_seeded) -+{ -+ const char *drng_type = unlikely(drng == &lrng_drng_atomic) ? -+ "atomic" : "regular"; -+ unsigned long flags = 0; -+ -+ BUILD_BUG_ON(LRNG_DRNG_RESEED_THRESH > INT_MAX); -+ pr_debug("seeding %s DRNG with %u bytes\n", drng_type, inbuflen); -+ lrng_drng_lock(drng, &flags); -+ if (drng->crypto_cb->lrng_drng_seed_helper(drng->drng, -+ inbuf, inbuflen) < 0) { -+ pr_warn("seeding of %s DRNG failed\n", drng_type); -+ drng->force_reseed = true; -+ } else { -+ int gc = LRNG_DRNG_RESEED_THRESH - atomic_read(&drng->requests); -+ -+ pr_debug("%s DRNG stats since last seeding: %lu secs; generate calls: %d\n", -+ drng_type, -+ (time_after(jiffies, drng->last_seeded) ? -+ (jiffies - drng->last_seeded) : 0) / HZ, gc); -+ -+ /* Count the numbers of generate ops since last fully seeded */ -+ if (fully_seeded) -+ atomic_set(&drng->requests_since_fully_seeded, 0); -+ else -+ atomic_add(gc, &drng->requests_since_fully_seeded); -+ -+ drng->last_seeded = jiffies; -+ atomic_set(&drng->requests, LRNG_DRNG_RESEED_THRESH); -+ drng->force_reseed = false; -+ -+ if (!drng->fully_seeded) { -+ drng->fully_seeded = fully_seeded; -+ if (drng->fully_seeded) -+ pr_debug("DRNG fully seeded\n"); -+ } -+ -+ if (drng->drng == lrng_drng_atomic.drng) { -+ lrng_drng_atomic.last_seeded = jiffies; -+ atomic_set(&lrng_drng_atomic.requests, -+ LRNG_DRNG_RESEED_THRESH); -+ lrng_drng_atomic.force_reseed = false; -+ } -+ } -+ lrng_drng_unlock(drng, &flags); -+} -+ -+/* -+ * Perform the seeding of the DRNG with data from noise source -+ */ -+static inline void _lrng_drng_seed(struct lrng_drng *drng) -+{ -+ struct entropy_buf seedbuf __aligned(LRNG_KCAPI_ALIGN); -+ -+ lrng_fill_seed_buffer(&seedbuf, -+ lrng_get_seed_entropy_osr(drng->fully_seeded)); -+ lrng_init_ops(&seedbuf); -+ lrng_drng_inject(drng, (u8 *)&seedbuf, sizeof(seedbuf), -+ lrng_fully_seeded(drng->fully_seeded, &seedbuf)); -+ memzero_explicit(&seedbuf, sizeof(seedbuf)); -+} -+ -+static int lrng_drng_get(struct lrng_drng *drng, u8 *outbuf, u32 outbuflen); -+static void lrng_drng_seed(struct lrng_drng *drng) -+{ -+ _lrng_drng_seed(drng); -+ -+ BUILD_BUG_ON(LRNG_MIN_SEED_ENTROPY_BITS > -+ LRNG_DRNG_SECURITY_STRENGTH_BITS); -+ -+ /* -+ * Reseed atomic DRNG from current DRNG, -+ * -+ * We can obtain random numbers from DRNG as the lock type -+ * chosen by lrng_drng_get is usable with the current caller. -+ */ -+ if ((drng->drng != lrng_drng_atomic.drng) && -+ (lrng_drng_atomic.force_reseed || -+ atomic_read(&lrng_drng_atomic.requests) <= 0 || -+ time_after(jiffies, lrng_drng_atomic.last_seeded + -+ lrng_drng_reseed_max_time * HZ))) { -+ u8 seedbuf[LRNG_DRNG_SECURITY_STRENGTH_BYTES] -+ __aligned(LRNG_KCAPI_ALIGN); -+ int ret = lrng_drng_get(drng, seedbuf, sizeof(seedbuf)); -+ -+ if (ret < 0) { -+ pr_warn("Error generating random numbers for atomic DRNG: %d\n", -+ ret); -+ } else { -+ lrng_drng_inject(&lrng_drng_atomic, seedbuf, ret, true); -+ } -+ memzero_explicit(&seedbuf, sizeof(seedbuf)); -+ } -+} -+ -+static inline void _lrng_drng_seed_work(struct lrng_drng *drng, u32 node) -+{ -+ pr_debug("reseed triggered by interrupt noise source for DRNG on NUMA node %d\n", -+ node); -+ lrng_drng_seed(drng); -+ if (drng->fully_seeded) { -+ /* Prevent reseed storm */ -+ drng->last_seeded += node * 100 * HZ; -+ /* Prevent draining of pool on idle systems */ -+ lrng_drng_reseed_max_time += 100; -+ } -+} -+ -+/* -+ * DRNG reseed trigger: Kernel thread handler triggered by the schedule_work() -+ */ -+void lrng_drng_seed_work(struct work_struct *dummy) -+{ -+ struct lrng_drng **lrng_drng = lrng_drng_instances(); -+ u32 node; -+ -+ if (lrng_drng) { -+ for_each_online_node(node) { -+ struct lrng_drng *drng = lrng_drng[node]; -+ -+ if (drng && !drng->fully_seeded) { -+ _lrng_drng_seed_work(drng, node); -+ goto out; -+ } -+ } -+ } else { -+ if (!lrng_drng_init.fully_seeded) { -+ _lrng_drng_seed_work(&lrng_drng_init, 0); -+ goto out; -+ } -+ } -+ -+ lrng_pool_all_numa_nodes_seeded(true); -+ -+out: -+ /* Allow the seeding operation to be called again */ -+ lrng_pool_unlock(); -+} -+ -+/* Force all DRNGs to reseed before next generation */ -+void lrng_drng_force_reseed(void) -+{ -+ struct lrng_drng **lrng_drng = lrng_drng_instances(); -+ u32 node; -+ -+ /* -+ * If the initial DRNG is over the reseed threshold, allow a forced -+ * reseed only for the initial DRNG as this is the fallback for all. It -+ * must be kept seeded before all others to keep the LRNG operational. -+ */ -+ if (!lrng_drng || -+ (atomic_read_u32(&lrng_drng_init.requests_since_fully_seeded) > -+ LRNG_DRNG_RESEED_THRESH)) { -+ lrng_drng_init.force_reseed = lrng_drng_init.fully_seeded; -+ pr_debug("force reseed of initial DRNG\n"); -+ return; -+ } -+ for_each_online_node(node) { -+ struct lrng_drng *drng = lrng_drng[node]; -+ -+ if (!drng) -+ continue; -+ -+ drng->force_reseed = drng->fully_seeded; -+ pr_debug("force reseed of DRNG on node %u\n", node); -+ } -+ lrng_drng_atomic.force_reseed = lrng_drng_atomic.fully_seeded; -+} -+ -+/* -+ * lrng_drng_get() - Get random data out of the DRNG which is reseeded -+ * frequently. -+ * -+ * @outbuf: buffer for storing random data -+ * @outbuflen: length of outbuf -+ * -+ * Return: -+ * * < 0 in error case (DRNG generation or update failed) -+ * * >=0 returning the returned number of bytes -+ */ -+static int lrng_drng_get(struct lrng_drng *drng, u8 *outbuf, u32 outbuflen) -+{ -+ unsigned long flags = 0; -+ u32 processed = 0; -+ -+ if (!outbuf || !outbuflen) -+ return 0; -+ -+ outbuflen = min_t(size_t, outbuflen, INT_MAX); -+ -+ lrng_drngs_init_cc20(false); -+ -+ /* If DRNG operated without proper reseed for too long, block LRNG */ -+ BUILD_BUG_ON(LRNG_DRNG_MAX_WITHOUT_RESEED < LRNG_DRNG_RESEED_THRESH); -+ if (atomic_read_u32(&drng->requests_since_fully_seeded) > max_wo_reseed) -+ lrng_unset_fully_seeded(drng); -+ -+ while (outbuflen) { -+ u32 todo = min_t(u32, outbuflen, LRNG_DRNG_MAX_REQSIZE); -+ int ret; -+ -+ /* All but the atomic DRNG are seeded during generation */ -+ if (atomic_dec_and_test(&drng->requests) || -+ drng->force_reseed || -+ time_after(jiffies, drng->last_seeded + -+ lrng_drng_reseed_max_time * HZ)) { -+ if (likely(drng != &lrng_drng_atomic)) { -+ if (lrng_pool_trylock()) { -+ drng->force_reseed = true; -+ } else { -+ lrng_drng_seed(drng); -+ lrng_pool_unlock(); -+ } -+ } -+ } -+ -+ lrng_drng_lock(drng, &flags); -+ ret = drng->crypto_cb->lrng_drng_generate_helper( -+ drng->drng, outbuf + processed, todo); -+ lrng_drng_unlock(drng, &flags); -+ if (ret <= 0) { -+ pr_warn("getting random data from DRNG failed (%d)\n", -+ ret); -+ return -EFAULT; -+ } -+ processed += ret; -+ outbuflen -= ret; -+ } -+ -+ return processed; -+} -+ -+int lrng_drng_get_atomic(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_drng_get(&lrng_drng_atomic, outbuf, outbuflen); -+} -+ -+int lrng_drng_get_sleep(u8 *outbuf, u32 outbuflen) -+{ -+ struct lrng_drng **lrng_drng = lrng_drng_instances(); -+ struct lrng_drng *drng = &lrng_drng_init; -+ int node = numa_node_id(); -+ -+ might_sleep(); -+ -+ if (lrng_drng && lrng_drng[node] && lrng_drng[node]->fully_seeded) -+ drng = lrng_drng[node]; -+ -+ return lrng_drng_get(drng, outbuf, outbuflen); -+} -+ -+/* Reset LRNG such that all existing entropy is gone */ -+static void _lrng_reset(struct work_struct *work) -+{ -+ struct lrng_drng **lrng_drng = lrng_drng_instances(); -+ unsigned long flags = 0; -+ -+ if (!lrng_drng) { -+ lrng_drng_lock(&lrng_drng_init, &flags); -+ lrng_drng_reset(&lrng_drng_init); -+ lrng_drng_unlock(&lrng_drng_init, &flags); -+ } else { -+ u32 node; -+ -+ for_each_online_node(node) { -+ struct lrng_drng *drng = lrng_drng[node]; -+ -+ if (!drng) -+ continue; -+ lrng_drng_lock(drng, &flags); -+ lrng_drng_reset(drng); -+ lrng_drng_unlock(drng, &flags); -+ } -+ } -+ lrng_set_entropy_thresh(LRNG_INIT_ENTROPY_BITS); -+ -+ lrng_reset_state(); -+} -+ -+static DECLARE_WORK(lrng_reset_work, _lrng_reset); -+ -+void lrng_reset(void) -+{ -+ schedule_work(&lrng_reset_work); -+} -+ -+/***************************** Initialize LRNG *******************************/ -+ -+static int __init lrng_init(void) -+{ -+ lrng_drngs_init_cc20(false); -+ -+ lrng_drngs_numa_alloc(); -+ return 0; -+} -+ -+late_initcall(lrng_init); -+ -+MODULE_LICENSE("Dual BSD/GPL"); -+MODULE_AUTHOR("Stephan Mueller <smueller@chronox.de>"); -+MODULE_DESCRIPTION("Linux Random Number Generator"); -diff -urN linux-5.15/drivers/char/lrng/lrng_es_archrandom.c linux-5.15-lrng/drivers/char/lrng/lrng_es_archrandom.c ---- linux-5.15/drivers/char/lrng/lrng_es_archrandom.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_es_archrandom.c 2021-11-29 12:37:14.483279088 +1100 -@@ -0,0 +1,226 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG Fast Entropy Source: CPU-based entropy source -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <crypto/hash.h> -+#include <linux/lrng.h> -+#include <linux/random.h> -+ -+#include "lrng_internal.h" -+ -+/* -+ * Estimated entropy of data is a 32th of LRNG_DRNG_SECURITY_STRENGTH_BITS. -+ * As we have no ability to review the implementation of those noise sources, -+ * it is prudent to have a conservative estimate here. -+ */ -+#define LRNG_ARCHRANDOM_DEFAULT_STRENGTH CONFIG_LRNG_CPU_ENTROPY_RATE -+#define LRNG_ARCHRANDOM_TRUST_CPU_STRENGTH LRNG_DRNG_SECURITY_STRENGTH_BITS -+#ifdef CONFIG_RANDOM_TRUST_CPU -+static u32 archrandom = LRNG_ARCHRANDOM_TRUST_CPU_STRENGTH; -+#else -+static u32 archrandom = LRNG_ARCHRANDOM_DEFAULT_STRENGTH; -+#endif -+#ifdef CONFIG_LRNG_RUNTIME_ES_CONFIG -+module_param(archrandom, uint, 0644); -+MODULE_PARM_DESC(archrandom, "Entropy in bits of 256 data bits from CPU noise source (e.g. RDSEED)"); -+#endif -+ -+static int __init lrng_parse_trust_cpu(char *arg) -+{ -+ int ret; -+ bool trust_cpu = false; -+ -+ ret = kstrtobool(arg, &trust_cpu); -+ if (ret) -+ return ret; -+ -+ if (trust_cpu) { -+ archrandom = LRNG_ARCHRANDOM_TRUST_CPU_STRENGTH; -+ lrng_pool_add_entropy(); -+ } else { -+ archrandom = LRNG_ARCHRANDOM_DEFAULT_STRENGTH; -+ } -+ -+ return 0; -+} -+early_param("random.trust_cpu", lrng_parse_trust_cpu); -+ -+u32 lrng_archrandom_entropylevel(u32 requested_bits) -+{ -+ return lrng_fast_noise_entropylevel(archrandom, requested_bits); -+} -+ -+static u32 lrng_get_arch_data(u8 *outbuf, u32 requested_bits) -+{ -+ u32 i; -+ -+ /* operate on full blocks */ -+ BUILD_BUG_ON(LRNG_DRNG_SECURITY_STRENGTH_BYTES % sizeof(unsigned long)); -+ BUILD_BUG_ON(CONFIG_LRNG_SEED_BUFFER_INIT_ADD_BITS % -+ sizeof(unsigned long)); -+ /* ensure we have aligned buffers */ -+ BUILD_BUG_ON(LRNG_KCAPI_ALIGN % sizeof(unsigned long)); -+ -+ for (i = 0; i < (requested_bits >> 3); -+ i += sizeof(unsigned long)) { -+ if (!arch_get_random_seed_long((unsigned long *)(outbuf + i)) && -+ !arch_get_random_long((unsigned long *)(outbuf + i))) { -+ archrandom = 0; -+ return 0; -+ } -+ } -+ -+ return requested_bits; -+} -+ -+static u32 inline lrng_get_arch_data_compress(u8 *outbuf, u32 requested_bits, -+ u32 data_multiplier) -+{ -+ SHASH_DESC_ON_STACK(shash, NULL); -+ const struct lrng_crypto_cb *crypto_cb; -+ struct lrng_drng *drng = lrng_drng_init_instance(); -+ unsigned long flags; -+ u32 ent_bits = 0, i, partial_bits = 0, -+ full_bits = requested_bits * data_multiplier; -+ void *hash; -+ -+ /* Calculate oversampling for SP800-90C */ -+ if (lrng_sp80090c_compliant()) { -+ /* Complete amount of bits to be pulled */ -+ full_bits += CONFIG_LRNG_OVERSAMPLE_ES_BITS * data_multiplier; -+ /* Full blocks that will be pulled */ -+ data_multiplier = full_bits / requested_bits; -+ /* Partial block in bits to be pulled */ -+ partial_bits = full_bits - (data_multiplier * requested_bits); -+ } -+ -+ lrng_hash_lock(drng, &flags); -+ crypto_cb = drng->crypto_cb; -+ hash = drng->hash; -+ -+ if (crypto_cb->lrng_hash_init(shash, hash)) -+ goto out; -+ -+ /* Hash all data from the CPU entropy source */ -+ for (i = 0; i < data_multiplier; i++) { -+ ent_bits = lrng_get_arch_data(outbuf, requested_bits); -+ if (!ent_bits) -+ goto out; -+ -+ if (crypto_cb->lrng_hash_update(shash, outbuf, ent_bits >> 3)) -+ goto err; -+ } -+ -+ /* Hash partial block, if applicable */ -+ ent_bits = lrng_get_arch_data(outbuf, partial_bits); -+ if (ent_bits && -+ crypto_cb->lrng_hash_update(shash, outbuf, ent_bits >> 3)) -+ goto err; -+ -+ pr_debug("pulled %u bits from CPU RNG entropy source\n", full_bits); -+ -+ /* Generate the compressed data to be returned to the caller */ -+ ent_bits = crypto_cb->lrng_hash_digestsize(hash) << 3; -+ if (requested_bits < ent_bits) { -+ u8 digest[LRNG_MAX_DIGESTSIZE]; -+ -+ if (crypto_cb->lrng_hash_final(shash, digest)) -+ goto err; -+ -+ /* Truncate output data to requested size */ -+ memcpy(outbuf, digest, requested_bits >> 3); -+ memzero_explicit(digest, crypto_cb->lrng_hash_digestsize(hash)); -+ ent_bits = requested_bits; -+ } else { -+ if (crypto_cb->lrng_hash_final(shash, outbuf)) -+ goto err; -+ } -+ -+out: -+ crypto_cb->lrng_hash_desc_zero(shash); -+ lrng_hash_unlock(drng, flags); -+ return ent_bits; -+ -+err: -+ ent_bits = 0; -+ goto out; -+} -+ -+/* -+ * If CPU entropy source requires does not return full entropy, return the -+ * multiplier of how much data shall be sampled from it. -+ */ -+static u32 lrng_arch_multiplier(void) -+{ -+ static u32 data_multiplier = 0; -+ -+ if (data_multiplier > 0) { -+ return data_multiplier; -+ } else { -+ unsigned long v; -+ -+ if (IS_ENABLED(CONFIG_X86) && !arch_get_random_seed_long(&v)) { -+ /* -+ * Intel SPEC: pulling 512 blocks from RDRAND ensures -+ * one reseed making it logically equivalent to RDSEED. -+ */ -+ data_multiplier = 512; -+ } else if (IS_ENABLED(CONFIG_PPC)) { -+ /* -+ * PowerISA defines DARN to deliver at least 0.5 bits of -+ * entropy per data bit. -+ */ -+ data_multiplier = 2; -+ } else { -+ /* CPU provides full entropy */ -+ data_multiplier = CONFIG_LRNG_CPU_FULL_ENT_MULTIPLIER; -+ } -+ } -+ return data_multiplier; -+} -+ -+/* -+ * lrng_get_arch() - Get CPU entropy source entropy -+ * -+ * @outbuf: buffer to store entropy of size requested_bits -+ * -+ * Return: -+ * * > 0 on success where value provides the added entropy in bits -+ * * 0 if no fast source was available -+ */ -+u32 lrng_get_arch(u8 *outbuf, u32 requested_bits) -+{ -+ u32 ent_bits, data_multiplier = lrng_arch_multiplier(); -+ -+ if (data_multiplier <= 1) { -+ ent_bits = lrng_get_arch_data(outbuf, requested_bits); -+ } else { -+ ent_bits = lrng_get_arch_data_compress(outbuf, requested_bits, -+ data_multiplier); -+ } -+ -+ ent_bits = lrng_archrandom_entropylevel(ent_bits); -+ pr_debug("obtained %u bits of entropy from CPU RNG entropy source\n", -+ ent_bits); -+ return ent_bits; -+} -+ -+void lrng_arch_es_state(unsigned char *buf, size_t buflen) -+{ -+ const struct lrng_drng *lrng_drng_init = lrng_drng_init_instance(); -+ u32 data_multiplier = lrng_arch_multiplier(); -+ -+ /* Assume the lrng_drng_init lock is taken by caller */ -+ snprintf(buf, buflen, -+ "CPU ES properties:\n" -+ " Hash for compressing data: %s\n" -+ " Data multiplier: %u\n", -+ (data_multiplier <= 1) ? -+ "N/A" : lrng_drng_init->crypto_cb->lrng_hash_name(), -+ data_multiplier); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_es_aux.c linux-5.15-lrng/drivers/char/lrng/lrng_es_aux.c ---- linux-5.15/drivers/char/lrng/lrng_es_aux.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_es_aux.c 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,294 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG Slow Entropy Source: Auxiliary entropy pool -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/lrng.h> -+ -+#include "lrng_internal.h" -+ -+/* -+ * This is the auxiliary pool -+ * -+ * The aux pool array is aligned to 8 bytes to comfort the kernel crypto API -+ * cipher implementations of the hash functions used to read the pool: for some -+ * accelerated implementations, we need an alignment to avoid a realignment -+ * which involves memcpy(). The alignment to 8 bytes should satisfy all crypto -+ * implementations. -+ */ -+struct lrng_pool { -+ u8 aux_pool[LRNG_POOL_SIZE]; /* Aux pool: digest state */ -+ atomic_t aux_entropy_bits; -+ atomic_t digestsize; /* Digest size of used hash */ -+ bool initialized; /* Aux pool initialized? */ -+ -+ /* Serialize read of entropy pool and update of aux pool */ -+ spinlock_t lock; -+}; -+ -+static struct lrng_pool lrng_pool __aligned(LRNG_KCAPI_ALIGN) = { -+ .aux_entropy_bits = ATOMIC_INIT(0), -+ .digestsize = ATOMIC_INIT(LRNG_ATOMIC_DIGEST_SIZE), -+ .initialized = false, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_pool.lock) -+}; -+ -+/********************************** Helper ***********************************/ -+ -+/* Entropy in bits present in aux pool */ -+u32 lrng_avail_aux_entropy(void) -+{ -+ /* Cap available entropy with max entropy */ -+ u32 avail_bits = min_t(u32, lrng_get_digestsize(), -+ atomic_read_u32(&lrng_pool.aux_entropy_bits)); -+ -+ /* Consider oversampling rate due to aux pool conditioning */ -+ return lrng_reduce_by_osr(avail_bits); -+} -+ -+/* Set the digest size of the used hash in bytes */ -+static inline void lrng_set_digestsize(u32 digestsize) -+{ -+ struct lrng_pool *pool = &lrng_pool; -+ u32 ent_bits = atomic_xchg_relaxed(&pool->aux_entropy_bits, 0), -+ old_digestsize = lrng_get_digestsize(); -+ -+ atomic_set(&lrng_pool.digestsize, digestsize); -+ -+ /* -+ * Update the /proc/.../write_wakeup_threshold which must not be larger -+ * than the digest size of the curent conditioning hash. -+ */ -+ digestsize <<= 3; -+ lrng_proc_update_max_write_thresh(digestsize); -+ if (lrng_write_wakeup_bits > digestsize) -+ lrng_write_wakeup_bits = digestsize; -+ -+ /* -+ * In case the new digest is larger than the old one, cap the available -+ * entropy to the old message digest used to process the existing data. -+ */ -+ ent_bits = min_t(u32, ent_bits, old_digestsize); -+ atomic_add(ent_bits, &pool->aux_entropy_bits); -+} -+ -+/* Obtain the digest size provided by the used hash in bits */ -+u32 lrng_get_digestsize(void) -+{ -+ return atomic_read_u32(&lrng_pool.digestsize) << 3; -+} -+ -+/* Set entropy content in user-space controllable aux pool */ -+void lrng_pool_set_entropy(u32 entropy_bits) -+{ -+ atomic_set(&lrng_pool.aux_entropy_bits, entropy_bits); -+} -+ -+/* -+ * Replace old with new hash for auxiliary pool handling -+ * -+ * Assumption: the caller must guarantee that the new_cb is available during the -+ * entire operation (e.g. it must hold the write lock against pointer updating). -+ */ -+int lrng_aux_switch_hash(const struct lrng_crypto_cb *new_cb, void *new_hash, -+ const struct lrng_crypto_cb *old_cb) -+{ -+ struct lrng_pool *pool = &lrng_pool; -+ struct shash_desc *shash = (struct shash_desc *)pool->aux_pool; -+ u8 digest[LRNG_MAX_DIGESTSIZE]; -+ int ret; -+ -+ if (!IS_ENABLED(CONFIG_LRNG_DRNG_SWITCH)) -+ return -EOPNOTSUPP; -+ -+ if (unlikely(!pool->initialized)) -+ return 0; -+ -+ /* Get the aux pool hash with old digest ... */ -+ ret = old_cb->lrng_hash_final(shash, digest) ?: -+ /* ... re-initialize the hash with the new digest ... */ -+ new_cb->lrng_hash_init(shash, new_hash) ?: -+ /* -+ * ... feed the old hash into the new state. We may feed -+ * uninitialized memory into the new state, but this is -+ * considered no issue and even good as we have some more -+ * uncertainty here. -+ */ -+ new_cb->lrng_hash_update(shash, digest, sizeof(digest)); -+ if (!ret) { -+ lrng_set_digestsize(new_cb->lrng_hash_digestsize(new_hash)); -+ pr_debug("Re-initialize aux entropy pool with hash %s\n", -+ new_cb->lrng_hash_name()); -+ } -+ -+ memzero_explicit(digest, sizeof(digest)); -+ return ret; -+} -+ -+/* Insert data into auxiliary pool by using the hash update function. */ -+static int -+lrng_pool_insert_aux_locked(const u8 *inbuf, u32 inbuflen, u32 entropy_bits) -+{ -+ struct lrng_pool *pool = &lrng_pool; -+ struct shash_desc *shash = (struct shash_desc *)pool->aux_pool; -+ struct lrng_drng *drng = lrng_drng_init_instance(); -+ const struct lrng_crypto_cb *crypto_cb; -+ unsigned long flags; -+ void *hash; -+ int ret; -+ -+ entropy_bits = min_t(u32, entropy_bits, inbuflen << 3); -+ -+ lrng_hash_lock(drng, &flags); -+ -+ crypto_cb = drng->crypto_cb; -+ hash = drng->hash; -+ -+ if (unlikely(!pool->initialized)) { -+ ret = crypto_cb->lrng_hash_init(shash, hash); -+ if (ret) -+ goto out; -+ pool->initialized = true; -+ } -+ -+ ret = crypto_cb->lrng_hash_update(shash, inbuf, inbuflen); -+ if (ret) -+ goto out; -+ -+ /* -+ * Cap the available entropy to the hash output size compliant to -+ * SP800-90B section 3.1.5.1 table 1. -+ */ -+ entropy_bits += atomic_read_u32(&pool->aux_entropy_bits); -+ atomic_set(&pool->aux_entropy_bits, -+ min_t(u32, entropy_bits, -+ crypto_cb->lrng_hash_digestsize(hash) << 3)); -+ -+out: -+ lrng_hash_unlock(drng, flags); -+ return ret; -+} -+ -+int lrng_pool_insert_aux(const u8 *inbuf, u32 inbuflen, u32 entropy_bits) -+{ -+ struct lrng_pool *pool = &lrng_pool; -+ unsigned long flags; -+ int ret; -+ -+ spin_lock_irqsave(&pool->lock, flags); -+ ret = lrng_pool_insert_aux_locked(inbuf, inbuflen, entropy_bits); -+ spin_unlock_irqrestore(&pool->lock, flags); -+ -+ lrng_pool_add_entropy(); -+ -+ return ret; -+} -+ -+/************************* Get data from entropy pool *************************/ -+ -+/* -+ * Get auxiliary entropy pool and its entropy content for seed buffer. -+ * Caller must hold lrng_pool.pool->lock. -+ * @outbuf: buffer to store data in with size requested_bits -+ * @requested_bits: Requested amount of entropy -+ * @return: amount of entropy in outbuf in bits. -+ */ -+static inline u32 lrng_get_aux_pool(u8 *outbuf, u32 requested_bits) -+{ -+ struct lrng_pool *pool = &lrng_pool; -+ struct shash_desc *shash = (struct shash_desc *)pool->aux_pool; -+ struct lrng_drng *drng = lrng_drng_init_instance(); -+ const struct lrng_crypto_cb *crypto_cb; -+ unsigned long flags; -+ void *hash; -+ u32 collected_ent_bits, returned_ent_bits, unused_bits = 0, -+ digestsize; -+ u8 aux_output[LRNG_MAX_DIGESTSIZE]; -+ -+ if (unlikely(!pool->initialized)) -+ return 0; -+ -+ lrng_hash_lock(drng, &flags); -+ -+ crypto_cb = drng->crypto_cb; -+ hash = drng->hash; -+ digestsize = crypto_cb->lrng_hash_digestsize(hash); -+ -+ /* Ensure that no more than the size of aux_pool can be requested */ -+ requested_bits = min_t(u32, requested_bits, (LRNG_MAX_DIGESTSIZE << 3)); -+ -+ /* Cap entropy with entropy counter from aux pool and the used digest */ -+ collected_ent_bits = min_t(u32, digestsize << 3, -+ atomic_xchg_relaxed(&pool->aux_entropy_bits, 0)); -+ -+ /* We collected too much entropy and put the overflow back */ -+ if (collected_ent_bits > (requested_bits + lrng_compress_osr())) { -+ /* Amount of bits we collected too much */ -+ unused_bits = collected_ent_bits - requested_bits; -+ /* Put entropy back */ -+ atomic_add(unused_bits, &pool->aux_entropy_bits); -+ /* Fix collected entropy */ -+ collected_ent_bits = requested_bits; -+ } -+ -+ /* Apply oversampling: discount requested oversampling rate */ -+ returned_ent_bits = lrng_reduce_by_osr(collected_ent_bits); -+ -+ pr_debug("obtained %u bits by collecting %u bits of entropy from aux pool, %u bits of entropy remaining\n", -+ returned_ent_bits, collected_ent_bits, unused_bits); -+ -+ /* Get the digest for the aux pool to be returned to the caller ... */ -+ if (crypto_cb->lrng_hash_final(shash, aux_output) || -+ /* -+ * ... and re-initialize the aux state. Do not add the aux pool -+ * digest for backward secrecy as it will be added with the -+ * insertion of the complete seed buffer after it has been filled. -+ */ -+ crypto_cb->lrng_hash_init(shash, hash)) { -+ returned_ent_bits = 0; -+ } else { -+ /* -+ * Do not truncate the output size exactly to collected_ent_bits -+ * as the aux pool may contain data that is not credited with -+ * entropy, but we want to use them to stir the DRNG state. -+ */ -+ memcpy(outbuf, aux_output, requested_bits >> 3); -+ } -+ -+ lrng_hash_unlock(drng, flags); -+ memzero_explicit(aux_output, digestsize); -+ return returned_ent_bits; -+} -+ -+void lrng_get_backtrack_aux(struct entropy_buf *entropy_buf, u32 requested_bits) -+{ -+ struct lrng_pool *pool = &lrng_pool; -+ unsigned long flags; -+ -+ /* Ensure aux pool extraction and backtracking op are atomic */ -+ spin_lock_irqsave(&pool->lock, flags); -+ -+ entropy_buf->a_bits = lrng_get_aux_pool(entropy_buf->a, requested_bits); -+ -+ /* Mix the extracted data back into pool for backtracking resistance */ -+ if (lrng_pool_insert_aux_locked((u8 *)entropy_buf, -+ sizeof(struct entropy_buf), 0)) -+ pr_warn("Backtracking resistance operation failed\n"); -+ -+ spin_unlock_irqrestore(&pool->lock, flags); -+} -+ -+void lrng_aux_es_state(unsigned char *buf, size_t buflen) -+{ -+ const struct lrng_drng *lrng_drng_init = lrng_drng_init_instance(); -+ -+ /* Assume the lrng_drng_init lock is taken by caller */ -+ snprintf(buf, buflen, -+ "Auxiliary ES properties:\n" -+ " Hash for operating entropy pool: %s\n", -+ lrng_drng_init->crypto_cb->lrng_hash_name()); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_es_irq.c linux-5.15-lrng/drivers/char/lrng/lrng_es_irq.c ---- linux-5.15/drivers/char/lrng/lrng_es_irq.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_es_irq.c 2021-11-29 12:36:57.763279152 +1100 -@@ -0,0 +1,823 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG Slow Entropy Source: Interrupt data collection -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <asm/irq_regs.h> -+#include <asm/ptrace.h> -+#include <crypto/hash.h> -+#include <linux/gcd.h> -+#include <linux/lrng.h> -+#include <linux/random.h> -+ -+#include "lrng_internal.h" -+#include "lrng_es_irq.h" -+ -+/* -+ * Number of interrupts to be recorded to assume that DRNG security strength -+ * bits of entropy are received. -+ * Note: a value below the DRNG security strength should not be defined as this -+ * may imply the DRNG can never be fully seeded in case other noise -+ * sources are unavailable. -+ */ -+#define LRNG_IRQ_ENTROPY_BITS CONFIG_LRNG_IRQ_ENTROPY_RATE -+ -+ -+/* Number of interrupts required for LRNG_DRNG_SECURITY_STRENGTH_BITS entropy */ -+static u32 lrng_irq_entropy_bits = LRNG_IRQ_ENTROPY_BITS; -+/* Is high-resolution timer present? */ -+static bool lrng_irq_highres_timer = false; -+ -+static u32 irq_entropy __read_mostly = LRNG_IRQ_ENTROPY_BITS; -+#ifdef CONFIG_LRNG_RUNTIME_ES_CONFIG -+module_param(irq_entropy, uint, 0444); -+MODULE_PARM_DESC(irq_entropy, -+ "How many interrupts must be collected for obtaining 256 bits of entropy\n"); -+#endif -+ -+/* Per-CPU array holding concatenated entropy events */ -+static DEFINE_PER_CPU(u32 [LRNG_DATA_ARRAY_SIZE], lrng_pcpu_array) -+ __aligned(LRNG_KCAPI_ALIGN); -+static DEFINE_PER_CPU(u32, lrng_pcpu_array_ptr) = 0; -+static DEFINE_PER_CPU(atomic_t, lrng_pcpu_array_irqs) = ATOMIC_INIT(0); -+ -+/* -+ * The entropy collection is performed by executing the following steps: -+ * 1. fill up the per-CPU array holding the time stamps -+ * 2. once the per-CPU array is full, a compression of the data into -+ * the entropy pool is performed - this happens in interrupt context -+ * -+ * If step 2 is not desired in interrupt context, the following boolean -+ * needs to be set to false. This implies that old entropy data in the -+ * per-CPU array collected since the last DRNG reseed is overwritten with -+ * new entropy data instead of retaining the entropy with the compression -+ * operation. -+ * -+ * Impact on entropy: -+ * -+ * If continuous compression is enabled, the maximum entropy that is collected -+ * per CPU between DRNG reseeds is equal to the digest size of the used hash. -+ * -+ * If continuous compression is disabled, the maximum number of entropy events -+ * that can be collected per CPU is equal to LRNG_DATA_ARRAY_SIZE. This amount -+ * of events is converted into an entropy statement which then represents the -+ * maximum amount of entropy collectible per CPU between DRNG reseeds. -+ */ -+static bool lrng_pcpu_continuous_compression __read_mostly = -+ IS_ENABLED(CONFIG_LRNG_ENABLE_CONTINUOUS_COMPRESSION); -+ -+#ifdef CONFIG_LRNG_SWITCHABLE_CONTINUOUS_COMPRESSION -+module_param(lrng_pcpu_continuous_compression, bool, 0444); -+MODULE_PARM_DESC(lrng_pcpu_continuous_compression, -+ "Perform entropy compression if per-CPU entropy data array is full\n"); -+#endif -+ -+/* -+ * Per-CPU entropy pool with compressed entropy event -+ * -+ * The per-CPU entropy pool is defined as the hash state. New data is simply -+ * inserted into the entropy pool by performing a hash update operation. -+ * To read the entropy pool, a hash final must be invoked. However, before -+ * the entropy pool is released again after a hash final, the hash init must -+ * be performed. -+ */ -+static DEFINE_PER_CPU(u8 [LRNG_POOL_SIZE], lrng_pcpu_pool) -+ __aligned(LRNG_KCAPI_ALIGN); -+/* -+ * Lock to allow other CPUs to read the pool - as this is only done during -+ * reseed which is infrequent, this lock is hardly contended. -+ */ -+static DEFINE_PER_CPU(spinlock_t, lrng_pcpu_lock); -+static DEFINE_PER_CPU(bool, lrng_pcpu_lock_init) = false; -+ -+/* Number of time stamps analyzed to calculate a GCD */ -+#define LRNG_GCD_WINDOW_SIZE 100 -+static u32 lrng_gcd_history[LRNG_GCD_WINDOW_SIZE]; -+static atomic_t lrng_gcd_history_ptr = ATOMIC_INIT(-1); -+ -+/* The common divisor for all timestamps */ -+static u32 lrng_gcd_timer = 0; -+ -+static inline bool lrng_gcd_tested(void) -+{ -+ return (lrng_gcd_timer != 0); -+} -+ -+/* Set the GCD for use in IRQ ES - if 0, the GCD calculation is restarted. */ -+static inline void _lrng_gcd_set(u32 running_gcd) -+{ -+ lrng_gcd_timer = running_gcd; -+ mb(); -+} -+ -+static void lrng_gcd_set(u32 running_gcd) -+{ -+ if (!lrng_gcd_tested()) { -+ _lrng_gcd_set(running_gcd); -+ pr_debug("Setting GCD to %u\n", running_gcd); -+ } -+} -+ -+u32 lrng_gcd_analyze(u32 *history, size_t nelem) -+{ -+ u32 running_gcd = 0; -+ size_t i; -+ -+ /* Now perform the analysis on the accumulated time data. */ -+ for (i = 0; i < nelem; i++) { -+ /* -+ * NOTE: this would be the place to add more analysis on the -+ * appropriateness of the timer like checking the presence -+ * of sufficient variations in the timer. -+ */ -+ -+ /* -+ * This calculates the gcd of all the time values. that is -+ * gcd(time_1, time_2, ..., time_nelem) -+ * -+ * Some timers increment by a fixed (non-1) amount each step. -+ * This code checks for such increments, and allows the library -+ * to output the number of such changes have occurred. -+ */ -+ running_gcd = (u32)gcd(history[i], running_gcd); -+ -+ /* Zeroize data */ -+ history[i] = 0; -+ } -+ -+ return running_gcd; -+} -+ -+static void lrng_gcd_add_value(u32 time) -+{ -+ u32 ptr = (u32)atomic_inc_return_relaxed(&lrng_gcd_history_ptr); -+ -+ if (ptr < LRNG_GCD_WINDOW_SIZE) { -+ lrng_gcd_history[ptr] = time; -+ } else if (ptr == LRNG_GCD_WINDOW_SIZE) { -+ u32 gcd = lrng_gcd_analyze(lrng_gcd_history, -+ LRNG_GCD_WINDOW_SIZE); -+ -+ if (!gcd) -+ gcd = 1; -+ -+ /* -+ * Ensure that we have variations in the time stamp below the -+ * given value. This is just a safety measure to prevent the GCD -+ * becoming too large. -+ */ -+ if (gcd >= 1000) { -+ pr_warn("calculated GCD is larger than expected: %u\n", -+ gcd); -+ gcd = 1000; -+ } -+ -+ /* Adjust all deltas by the observed (small) common factor. */ -+ lrng_gcd_set(gcd); -+ atomic_set(&lrng_gcd_history_ptr, 0); -+ } -+} -+ -+/* Return boolean whether LRNG identified presence of high-resolution timer */ -+static bool lrng_pool_highres_timer(void) -+{ -+ return lrng_irq_highres_timer; -+} -+ -+/* Convert entropy in bits into number of IRQs with the same entropy content. */ -+static inline u32 lrng_entropy_to_data(u32 entropy_bits) -+{ -+ return ((entropy_bits * lrng_irq_entropy_bits) / -+ LRNG_DRNG_SECURITY_STRENGTH_BITS); -+} -+ -+/* Convert number of IRQs into entropy value. */ -+static inline u32 lrng_data_to_entropy(u32 irqnum) -+{ -+ return ((irqnum * LRNG_DRNG_SECURITY_STRENGTH_BITS) / -+ lrng_irq_entropy_bits); -+} -+ -+static inline bool lrng_pcpu_pool_online(int cpu) -+{ -+ return per_cpu(lrng_pcpu_lock_init, cpu); -+} -+ -+static void lrng_pcpu_check_compression_state(void) -+{ -+ /* One pool must hold sufficient entropy for disabled compression */ -+ if (!lrng_pcpu_continuous_compression) { -+ u32 max_ent = min_t(u32, lrng_get_digestsize(), -+ lrng_data_to_entropy(LRNG_DATA_NUM_VALUES)); -+ if (max_ent < lrng_security_strength()) { -+ pr_warn("Force continuous compression operation to ensure LRNG can hold enough entropy\n"); -+ lrng_pcpu_continuous_compression = true; -+ } -+ } -+} -+ -+static int __init lrng_init_time_source(void) -+{ -+ /* Set a minimum number of interrupts that must be collected */ -+ irq_entropy = max_t(u32, LRNG_IRQ_ENTROPY_BITS, irq_entropy); -+ -+ if ((random_get_entropy() & LRNG_DATA_SLOTSIZE_MASK) || -+ (random_get_entropy() & LRNG_DATA_SLOTSIZE_MASK)) { -+ /* -+ * As the highres timer is identified here, previous interrupts -+ * obtained during boot time are treated like a lowres-timer -+ * would have been present. -+ */ -+ lrng_irq_highres_timer = true; -+ lrng_irq_entropy_bits = irq_entropy; -+ } else { -+ u32 new_entropy = irq_entropy * LRNG_IRQ_OVERSAMPLING_FACTOR; -+ -+ lrng_health_disable(); -+ lrng_irq_highres_timer = false; -+ lrng_irq_entropy_bits = (irq_entropy < new_entropy) ? -+ new_entropy : irq_entropy; -+ pr_warn("operating without high-resolution timer and applying IRQ oversampling factor %u\n", -+ LRNG_IRQ_OVERSAMPLING_FACTOR); -+ lrng_pcpu_check_compression_state(); -+ } -+ mb(); -+ -+ return 0; -+} -+core_initcall(lrng_init_time_source); -+ -+/* -+ * Reset all per-CPU pools - reset entropy estimator but leave the pool data -+ * that may or may not have entropy unchanged. -+ */ -+void lrng_pcpu_reset(void) -+{ -+ int cpu; -+ -+ /* Trigger GCD calculation anew. */ -+ _lrng_gcd_set(0); -+ -+ for_each_online_cpu(cpu) -+ atomic_set(per_cpu_ptr(&lrng_pcpu_array_irqs, cpu), 0); -+} -+ -+u32 lrng_pcpu_avail_pool_size(void) -+{ -+ u32 max_size = 0, max_pool = lrng_get_digestsize(); -+ int cpu; -+ -+ if (!lrng_pcpu_continuous_compression) -+ max_pool = min_t(u32, max_pool, LRNG_DATA_NUM_VALUES); -+ -+ for_each_online_cpu(cpu) { -+ if (lrng_pcpu_pool_online(cpu)) -+ max_size += max_pool; -+ } -+ -+ return max_size; -+} -+ -+/* Return entropy of unused IRQs present in all per-CPU pools. */ -+u32 lrng_pcpu_avail_entropy(void) -+{ -+ u32 digestsize_irqs, irq = 0; -+ int cpu; -+ -+ /* Obtain the cap of maximum numbers of IRQs we count */ -+ digestsize_irqs = lrng_entropy_to_data(lrng_get_digestsize()); -+ if (!lrng_pcpu_continuous_compression) { -+ /* Cap to max. number of IRQs the array can hold */ -+ digestsize_irqs = min_t(u32, digestsize_irqs, -+ LRNG_DATA_NUM_VALUES); -+ } -+ -+ for_each_online_cpu(cpu) { -+ if (!lrng_pcpu_pool_online(cpu)) -+ continue; -+ irq += min_t(u32, digestsize_irqs, -+ atomic_read_u32(per_cpu_ptr(&lrng_pcpu_array_irqs, -+ cpu))); -+ } -+ -+ /* Consider oversampling rate */ -+ return lrng_reduce_by_osr(lrng_data_to_entropy(irq)); -+} -+ -+/* -+ * Trigger a switch of the hash implementation for the per-CPU pool. -+ * -+ * For each per-CPU pool, obtain the message digest with the old hash -+ * implementation, initialize the per-CPU pool again with the new hash -+ * implementation and inject the message digest into the new state. -+ * -+ * Assumption: the caller must guarantee that the new_cb is available during the -+ * entire operation (e.g. it must hold the lock against pointer updating). -+ */ -+int lrng_pcpu_switch_hash(int node, -+ const struct lrng_crypto_cb *new_cb, void *new_hash, -+ const struct lrng_crypto_cb *old_cb) -+{ -+ u8 digest[LRNG_MAX_DIGESTSIZE]; -+ u32 digestsize_irqs, found_irqs; -+ int ret = 0, cpu; -+ -+ if (!IS_ENABLED(CONFIG_LRNG_DRNG_SWITCH)) -+ return -EOPNOTSUPP; -+ -+ for_each_online_cpu(cpu) { -+ struct shash_desc *pcpu_shash; -+ -+ /* -+ * Only switch the per-CPU pools for the current node because -+ * the crypto_cb only applies NUMA-node-wide. -+ */ -+ if (cpu_to_node(cpu) != node || !lrng_pcpu_pool_online(cpu)) -+ continue; -+ -+ pcpu_shash = (struct shash_desc *)per_cpu_ptr(lrng_pcpu_pool, -+ cpu); -+ -+ digestsize_irqs = old_cb->lrng_hash_digestsize(pcpu_shash); -+ digestsize_irqs = lrng_entropy_to_data(digestsize_irqs << 3); -+ -+ if (pcpu_shash->tfm == new_hash) -+ continue; -+ -+ /* Get the per-CPU pool hash with old digest ... */ -+ ret = old_cb->lrng_hash_final(pcpu_shash, digest) ?: -+ /* ... re-initialize the hash with the new digest ... */ -+ new_cb->lrng_hash_init(pcpu_shash, new_hash) ?: -+ /* -+ * ... feed the old hash into the new state. We may feed -+ * uninitialized memory into the new state, but this is -+ * considered no issue and even good as we have some more -+ * uncertainty here. -+ */ -+ new_cb->lrng_hash_update(pcpu_shash, digest, -+ sizeof(digest)); -+ if (ret) -+ goto out; -+ -+ /* -+ * In case the new digest is larger than the old one, cap -+ * the available entropy to the old message digest used to -+ * process the existing data. -+ */ -+ found_irqs = atomic_xchg_relaxed( -+ per_cpu_ptr(&lrng_pcpu_array_irqs, cpu), 0); -+ found_irqs = min_t(u32, found_irqs, digestsize_irqs); -+ atomic_add_return_relaxed(found_irqs, -+ per_cpu_ptr(&lrng_pcpu_array_irqs, cpu)); -+ -+ pr_debug("Re-initialize per-CPU entropy pool for CPU %d on NUMA node %d with hash %s\n", -+ cpu, node, new_cb->lrng_hash_name()); -+ } -+ -+out: -+ memzero_explicit(digest, sizeof(digest)); -+ return ret; -+} -+ -+/* -+ * When reading the per-CPU message digest, make sure we use the crypto -+ * callbacks defined for the NUMA node the per-CPU pool is defined for because -+ * the LRNG crypto switch support is only atomic per NUMA node. -+ */ -+static inline u32 -+lrng_pcpu_pool_hash_one(const struct lrng_crypto_cb *pcpu_crypto_cb, -+ void *pcpu_hash, int cpu, u8 *digest, u32 *digestsize) -+{ -+ struct shash_desc *pcpu_shash = -+ (struct shash_desc *)per_cpu_ptr(lrng_pcpu_pool, cpu); -+ spinlock_t *lock = per_cpu_ptr(&lrng_pcpu_lock, cpu); -+ unsigned long flags; -+ u32 digestsize_irqs, found_irqs; -+ -+ /* Lock guarding against reading / writing to per-CPU pool */ -+ spin_lock_irqsave(lock, flags); -+ -+ *digestsize = pcpu_crypto_cb->lrng_hash_digestsize(pcpu_hash); -+ digestsize_irqs = lrng_entropy_to_data(*digestsize << 3); -+ -+ /* Obtain entropy statement like for the entropy pool */ -+ found_irqs = atomic_xchg_relaxed( -+ per_cpu_ptr(&lrng_pcpu_array_irqs, cpu), 0); -+ /* Cap to maximum amount of data we can hold in hash */ -+ found_irqs = min_t(u32, found_irqs, digestsize_irqs); -+ -+ /* Cap to maximum amount of data we can hold in array */ -+ if (!lrng_pcpu_continuous_compression) -+ found_irqs = min_t(u32, found_irqs, LRNG_DATA_NUM_VALUES); -+ -+ /* Store all not-yet compressed data in data array into hash, ... */ -+ if (pcpu_crypto_cb->lrng_hash_update(pcpu_shash, -+ (u8 *)per_cpu_ptr(lrng_pcpu_array, cpu), -+ LRNG_DATA_ARRAY_SIZE * sizeof(u32)) ?: -+ /* ... get the per-CPU pool digest, ... */ -+ pcpu_crypto_cb->lrng_hash_final(pcpu_shash, digest) ?: -+ /* ... re-initialize the hash, ... */ -+ pcpu_crypto_cb->lrng_hash_init(pcpu_shash, pcpu_hash) ?: -+ /* ... feed the old hash into the new state. */ -+ pcpu_crypto_cb->lrng_hash_update(pcpu_shash, digest, *digestsize)) -+ found_irqs = 0; -+ -+ spin_unlock_irqrestore(lock, flags); -+ return found_irqs; -+} -+ -+/* -+ * Hash all per-CPU pools and return the digest to be used as seed data for -+ * seeding a DRNG. The caller must guarantee backtracking resistance. -+ * The function will only copy as much data as entropy is available into the -+ * caller-provided output buffer. -+ * -+ * This function handles the translation from the number of received interrupts -+ * into an entropy statement. The conversion depends on LRNG_IRQ_ENTROPY_BITS -+ * which defines how many interrupts must be received to obtain 256 bits of -+ * entropy. With this value, the function lrng_data_to_entropy converts a given -+ * data size (received interrupts, requested amount of data, etc.) into an -+ * entropy statement. lrng_entropy_to_data does the reverse. -+ * -+ * @outbuf: buffer to store data in with size requested_bits -+ * @requested_bits: Requested amount of entropy -+ * @fully_seeded: indicator whether LRNG is fully seeded -+ * @return: amount of entropy in outbuf in bits. -+ */ -+u32 lrng_pcpu_pool_hash(u8 *outbuf, u32 requested_bits, bool fully_seeded) -+{ -+ SHASH_DESC_ON_STACK(shash, NULL); -+ const struct lrng_crypto_cb *crypto_cb; -+ struct lrng_drng **lrng_drng = lrng_drng_instances(); -+ struct lrng_drng *drng = lrng_drng_init_instance(); -+ u8 digest[LRNG_MAX_DIGESTSIZE]; -+ unsigned long flags, flags2; -+ u32 found_irqs, collected_irqs = 0, collected_ent_bits, requested_irqs, -+ returned_ent_bits; -+ int ret, cpu; -+ void *hash; -+ -+ /* Lock guarding replacement of per-NUMA hash */ -+ lrng_hash_lock(drng, &flags); -+ -+ crypto_cb = drng->crypto_cb; -+ hash = drng->hash; -+ -+ /* The hash state of filled with all per-CPU pool hashes. */ -+ ret = crypto_cb->lrng_hash_init(shash, hash); -+ if (ret) -+ goto err; -+ -+ requested_irqs = lrng_entropy_to_data(requested_bits + -+ lrng_compress_osr()); -+ -+ /* -+ * Harvest entropy from each per-CPU hash state - even though we may -+ * have collected sufficient entropy, we will hash all per-CPU pools. -+ */ -+ for_each_online_cpu(cpu) { -+ struct lrng_drng *pcpu_drng = drng; -+ u32 digestsize, pcpu_unused_irqs = 0; -+ int node = cpu_to_node(cpu); -+ -+ /* If pool is not online, then no entropy is present. */ -+ if (!lrng_pcpu_pool_online(cpu)) -+ continue; -+ -+ if (lrng_drng && lrng_drng[node]) -+ pcpu_drng = lrng_drng[node]; -+ -+ if (pcpu_drng == drng) { -+ found_irqs = lrng_pcpu_pool_hash_one(crypto_cb, hash, -+ cpu, digest, -+ &digestsize); -+ } else { -+ lrng_hash_lock(pcpu_drng, &flags2); -+ found_irqs = -+ lrng_pcpu_pool_hash_one(pcpu_drng->crypto_cb, -+ pcpu_drng->hash, cpu, -+ digest, &digestsize); -+ lrng_hash_unlock(pcpu_drng, flags2); -+ } -+ -+ /* Inject the digest into the state of all per-CPU pools */ -+ ret = crypto_cb->lrng_hash_update(shash, digest, digestsize); -+ if (ret) -+ goto err; -+ -+ collected_irqs += found_irqs; -+ if (collected_irqs > requested_irqs) { -+ pcpu_unused_irqs = collected_irqs - requested_irqs; -+ atomic_add_return_relaxed(pcpu_unused_irqs, -+ per_cpu_ptr(&lrng_pcpu_array_irqs, cpu)); -+ collected_irqs = requested_irqs; -+ } -+ pr_debug("%u interrupts used from entropy pool of CPU %d, %u interrupts remain unused\n", -+ found_irqs - pcpu_unused_irqs, cpu, pcpu_unused_irqs); -+ } -+ -+ ret = crypto_cb->lrng_hash_final(shash, digest); -+ if (ret) -+ goto err; -+ -+ collected_ent_bits = lrng_data_to_entropy(collected_irqs); -+ /* Cap to maximum entropy that can ever be generated with given hash */ -+ collected_ent_bits = min_t(u32, collected_ent_bits, -+ crypto_cb->lrng_hash_digestsize(hash) << 3); -+ /* Apply oversampling: discount requested oversampling rate */ -+ returned_ent_bits = lrng_reduce_by_osr(collected_ent_bits); -+ -+ pr_debug("obtained %u bits by collecting %u bits of entropy from entropy pool noise source\n", -+ returned_ent_bits, collected_ent_bits); -+ -+ /* -+ * Truncate to available entropy as implicitly allowed by SP800-90B -+ * section 3.1.5.1.1 table 1 which awards truncated hashes full -+ * entropy. -+ * -+ * During boot time, we read requested_bits data with -+ * returned_ent_bits entropy. In case our conservative entropy -+ * estimate underestimates the available entropy we can transport as -+ * much available entropy as possible. -+ */ -+ memcpy(outbuf, digest, fully_seeded ? returned_ent_bits >> 3 : -+ requested_bits >> 3); -+ -+out: -+ crypto_cb->lrng_hash_desc_zero(shash); -+ lrng_hash_unlock(drng, flags); -+ memzero_explicit(digest, sizeof(digest)); -+ return returned_ent_bits; -+ -+err: -+ returned_ent_bits = 0; -+ goto out; -+} -+ -+/* Compress the lrng_pcpu_array array into lrng_pcpu_pool */ -+static inline void lrng_pcpu_array_compress(void) -+{ -+ struct shash_desc *shash = -+ (struct shash_desc *)this_cpu_ptr(lrng_pcpu_pool); -+ struct lrng_drng **lrng_drng = lrng_drng_instances(); -+ struct lrng_drng *drng = lrng_drng_init_instance(); -+ const struct lrng_crypto_cb *crypto_cb; -+ spinlock_t *lock = this_cpu_ptr(&lrng_pcpu_lock); -+ unsigned long flags, flags2; -+ int node = numa_node_id(); -+ void *hash; -+ bool init = false; -+ -+ /* Get NUMA-node local hash instance */ -+ if (lrng_drng && lrng_drng[node]) -+ drng = lrng_drng[node]; -+ -+ lrng_hash_lock(drng, &flags); -+ crypto_cb = drng->crypto_cb; -+ hash = drng->hash; -+ -+ if (unlikely(!this_cpu_read(lrng_pcpu_lock_init))) { -+ init = true; -+ spin_lock_init(lock); -+ this_cpu_write(lrng_pcpu_lock_init, true); -+ pr_debug("Initializing per-CPU entropy pool for CPU %d on NUMA node %d with hash %s\n", -+ raw_smp_processor_id(), node, -+ crypto_cb->lrng_hash_name()); -+ } -+ -+ spin_lock_irqsave(lock, flags2); -+ -+ if (unlikely(init) && crypto_cb->lrng_hash_init(shash, hash)) { -+ this_cpu_write(lrng_pcpu_lock_init, false); -+ pr_warn("Initialization of hash failed\n"); -+ } else if (lrng_pcpu_continuous_compression) { -+ /* Add entire per-CPU data array content into entropy pool. */ -+ if (crypto_cb->lrng_hash_update(shash, -+ (u8 *)this_cpu_ptr(lrng_pcpu_array), -+ LRNG_DATA_ARRAY_SIZE * sizeof(u32))) -+ pr_warn_ratelimited("Hashing of entropy data failed\n"); -+ } -+ -+ spin_unlock_irqrestore(lock, flags2); -+ lrng_hash_unlock(drng, flags); -+} -+ -+/* Compress data array into hash */ -+static inline void lrng_pcpu_array_to_hash(u32 ptr) -+{ -+ u32 *array = this_cpu_ptr(lrng_pcpu_array); -+ -+ /* -+ * During boot time the hash operation is triggered more often than -+ * during regular operation. -+ */ -+ if (unlikely(!lrng_state_fully_seeded())) { -+ if ((ptr & 31) && (ptr < LRNG_DATA_WORD_MASK)) -+ return; -+ } else if (ptr < LRNG_DATA_WORD_MASK) { -+ return; -+ } -+ -+ if (lrng_raw_array_entropy_store(*array)) { -+ u32 i; -+ -+ /* -+ * If we fed even a part of the array to external analysis, we -+ * mark that the entire array and the per-CPU pool to have no -+ * entropy. This is due to the non-IID property of the data as -+ * we do not fully know whether the existing dependencies -+ * diminish the entropy beyond to what we expect it has. -+ */ -+ atomic_set(this_cpu_ptr(&lrng_pcpu_array_irqs), 0); -+ -+ for (i = 1; i < LRNG_DATA_ARRAY_SIZE; i++) -+ lrng_raw_array_entropy_store(*(array + i)); -+ } else { -+ lrng_pcpu_array_compress(); -+ /* Ping pool handler about received entropy */ -+ lrng_pool_add_entropy(); -+ } -+} -+ -+/* -+ * Concatenate full 32 bit word at the end of time array even when current -+ * ptr is not aligned to sizeof(data). -+ */ -+static inline void _lrng_pcpu_array_add_u32(u32 data) -+{ -+ /* Increment pointer by number of slots taken for input value */ -+ u32 pre_ptr, mask, ptr = this_cpu_add_return(lrng_pcpu_array_ptr, -+ LRNG_DATA_SLOTS_PER_UINT); -+ unsigned int pre_array; -+ -+ /* -+ * This function injects a unit into the array - guarantee that -+ * array unit size is equal to data type of input data. -+ */ -+ BUILD_BUG_ON(LRNG_DATA_ARRAY_MEMBER_BITS != (sizeof(data) << 3)); -+ -+ /* -+ * The following logic requires at least two units holding -+ * the data as otherwise the pointer would immediately wrap when -+ * injection an u32 word. -+ */ -+ BUILD_BUG_ON(LRNG_DATA_NUM_VALUES <= LRNG_DATA_SLOTS_PER_UINT); -+ -+ lrng_pcpu_split_u32(&ptr, &pre_ptr, &mask); -+ -+ /* MSB of data go into previous unit */ -+ pre_array = lrng_data_idx2array(pre_ptr); -+ /* zeroization of slot to ensure the following OR adds the data */ -+ this_cpu_and(lrng_pcpu_array[pre_array], ~(0xffffffff & ~mask)); -+ this_cpu_or(lrng_pcpu_array[pre_array], data & ~mask); -+ -+ /* Invoke compression as we just filled data array completely */ -+ if (unlikely(pre_ptr > ptr)) -+ lrng_pcpu_array_to_hash(LRNG_DATA_WORD_MASK); -+ -+ /* LSB of data go into current unit */ -+ this_cpu_write(lrng_pcpu_array[lrng_data_idx2array(ptr)], -+ data & mask); -+ -+ if (likely(pre_ptr <= ptr)) -+ lrng_pcpu_array_to_hash(ptr); -+} -+ -+/* Concatenate a 32-bit word at the end of the per-CPU array */ -+void lrng_pcpu_array_add_u32(u32 data) -+{ -+ /* -+ * Disregard entropy-less data without continuous compression to -+ * avoid it overwriting data with entropy when array ptr wraps. -+ */ -+ if (lrng_pcpu_continuous_compression) -+ _lrng_pcpu_array_add_u32(data); -+} -+ -+/* Concatenate data of max LRNG_DATA_SLOTSIZE_MASK at the end of time array */ -+static inline void lrng_pcpu_array_add_slot(u32 data) -+{ -+ /* Get slot */ -+ u32 ptr = this_cpu_inc_return(lrng_pcpu_array_ptr) & -+ LRNG_DATA_WORD_MASK; -+ unsigned int array = lrng_data_idx2array(ptr); -+ unsigned int slot = lrng_data_idx2slot(ptr); -+ -+ BUILD_BUG_ON(LRNG_DATA_ARRAY_MEMBER_BITS % LRNG_DATA_SLOTSIZE_BITS); -+ /* Ensure consistency of values */ -+ BUILD_BUG_ON(LRNG_DATA_ARRAY_MEMBER_BITS != -+ sizeof(lrng_pcpu_array[0]) << 3); -+ -+ /* zeroization of slot to ensure the following OR adds the data */ -+ this_cpu_and(lrng_pcpu_array[array], -+ ~(lrng_data_slot_val(0xffffffff & LRNG_DATA_SLOTSIZE_MASK, -+ slot))); -+ /* Store data into slot */ -+ this_cpu_or(lrng_pcpu_array[array], lrng_data_slot_val(data, slot)); -+ -+ lrng_pcpu_array_to_hash(ptr); -+} -+ -+static inline void -+lrng_time_process_common(u32 time, void(*add_time)(u32 data)) -+{ -+ enum lrng_health_res health_test; -+ -+ if (lrng_raw_hires_entropy_store(time)) -+ return; -+ -+ health_test = lrng_health_test(time); -+ if (health_test > lrng_health_fail_use) -+ return; -+ -+ if (health_test == lrng_health_pass) -+ atomic_inc_return(this_cpu_ptr(&lrng_pcpu_array_irqs)); -+ -+ add_time(time); -+} -+ -+/* -+ * Batching up of entropy in per-CPU array before injecting into entropy pool. -+ */ -+static inline void lrng_time_process(void) -+{ -+ u32 now_time = random_get_entropy(); -+ -+ if (unlikely(!lrng_gcd_tested())) { -+ /* When GCD is unknown, we process the full time stamp */ -+ lrng_time_process_common(now_time, _lrng_pcpu_array_add_u32); -+ lrng_gcd_add_value(now_time); -+ } else { -+ /* GCD is known and applied */ -+ lrng_time_process_common((now_time / lrng_gcd_timer) & -+ LRNG_DATA_SLOTSIZE_MASK, -+ lrng_pcpu_array_add_slot); -+ } -+ -+ lrng_perf_time(now_time); -+} -+ -+/* Hot code path - Callback for interrupt handler */ -+void add_interrupt_randomness(int irq, int irq_flg) -+{ -+ if (lrng_pool_highres_timer()) { -+ lrng_time_process(); -+ } else { -+ struct pt_regs *regs = get_irq_regs(); -+ static atomic_t reg_idx = ATOMIC_INIT(0); -+ u64 ip; -+ u32 tmp; -+ -+ if (regs) { -+ u32 *ptr = (u32 *)regs; -+ int reg_ptr = atomic_add_return_relaxed(1, ®_idx); -+ size_t n = (sizeof(struct pt_regs) / sizeof(u32)); -+ -+ ip = instruction_pointer(regs); -+ tmp = *(ptr + (reg_ptr % n)); -+ tmp = lrng_raw_regs_entropy_store(tmp) ? 0 : tmp; -+ _lrng_pcpu_array_add_u32(tmp); -+ } else { -+ ip = _RET_IP_; -+ } -+ -+ lrng_time_process(); -+ -+ /* -+ * The XOR operation combining the different values is not -+ * considered to destroy entropy since the entirety of all -+ * processed values delivers the entropy (and not each -+ * value separately of the other values). -+ */ -+ tmp = lrng_raw_jiffies_entropy_store(jiffies) ? 0 : jiffies; -+ tmp ^= lrng_raw_irq_entropy_store(irq) ? 0 : irq; -+ tmp ^= lrng_raw_irqflags_entropy_store(irq_flg) ? 0 : irq_flg; -+ tmp ^= lrng_raw_retip_entropy_store(ip) ? 0 : ip; -+ tmp ^= ip >> 32; -+ _lrng_pcpu_array_add_u32(tmp); -+ } -+} -+EXPORT_SYMBOL(add_interrupt_randomness); -+ -+void lrng_irq_es_state(unsigned char *buf, size_t buflen) -+{ -+ const struct lrng_drng *lrng_drng_init = lrng_drng_init_instance(); -+ -+ /* Assume the lrng_drng_init lock is taken by caller */ -+ snprintf(buf, buflen, -+ "IRQ ES properties:\n" -+ " Hash for operating entropy pool: %s\n" -+ " per-CPU interrupt collection size: %u\n" -+ " Standards compliance: %s\n" -+ " High-resolution timer: %s\n" -+ " Continuous compression: %s\n", -+ lrng_drng_init->crypto_cb->lrng_hash_name(), -+ LRNG_DATA_NUM_VALUES, -+ lrng_sp80090b_compliant() ? "SP800-90B " : "", -+ lrng_pool_highres_timer() ? "true" : "false", -+ lrng_pcpu_continuous_compression ? "true" : "false"); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_es_irq.h linux-5.15-lrng/drivers/char/lrng/lrng_es_irq.h ---- linux-5.15/drivers/char/lrng/lrng_es_irq.h 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_es_irq.h 2021-11-29 12:36:57.773279152 +1100 -@@ -0,0 +1,71 @@ -+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */ -+/* -+ * LRNG Slow Noise Source: Time stamp array handling -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+/* -+ * To limit the impact on the interrupt handling, the LRNG concatenates -+ * entropic LSB parts of the time stamps in a per-CPU array and only -+ * injects them into the entropy pool when the array is full. -+ */ -+ -+/* Store multiple integers in one u32 */ -+#define LRNG_DATA_SLOTSIZE_BITS (8) -+#define LRNG_DATA_SLOTSIZE_MASK ((1 << LRNG_DATA_SLOTSIZE_BITS) - 1) -+#define LRNG_DATA_ARRAY_MEMBER_BITS (4 << 3) /* ((sizeof(u32)) << 3) */ -+#define LRNG_DATA_SLOTS_PER_UINT (LRNG_DATA_ARRAY_MEMBER_BITS / \ -+ LRNG_DATA_SLOTSIZE_BITS) -+ -+/* -+ * Number of time values to store in the array - in small environments -+ * only one atomic_t variable per CPU is used. -+ */ -+#define LRNG_DATA_NUM_VALUES (CONFIG_LRNG_COLLECTION_SIZE) -+/* Mask of LSB of time stamp to store */ -+#define LRNG_DATA_WORD_MASK (LRNG_DATA_NUM_VALUES - 1) -+ -+#define LRNG_DATA_SLOTS_MASK (LRNG_DATA_SLOTS_PER_UINT - 1) -+#define LRNG_DATA_ARRAY_SIZE (LRNG_DATA_NUM_VALUES / \ -+ LRNG_DATA_SLOTS_PER_UINT) -+ -+/* Starting bit index of slot */ -+static inline unsigned int lrng_data_slot2bitindex(unsigned int slot) -+{ -+ return (LRNG_DATA_SLOTSIZE_BITS * slot); -+} -+ -+/* Convert index into the array index */ -+static inline unsigned int lrng_data_idx2array(unsigned int idx) -+{ -+ return idx / LRNG_DATA_SLOTS_PER_UINT; -+} -+ -+/* Convert index into the slot of a given array index */ -+static inline unsigned int lrng_data_idx2slot(unsigned int idx) -+{ -+ return idx & LRNG_DATA_SLOTS_MASK; -+} -+ -+/* Convert value into slot value */ -+static inline unsigned int lrng_data_slot_val(unsigned int val, -+ unsigned int slot) -+{ -+ return val << lrng_data_slot2bitindex(slot); -+} -+ -+/* -+ * Return the pointers for the previous and current units to inject a u32 into. -+ * Also return the mask which the u32 word is to be processed. -+ */ -+static inline void lrng_pcpu_split_u32(u32 *ptr, u32 *pre_ptr, u32 *mask) -+{ -+ /* ptr to previous unit */ -+ *pre_ptr = (*ptr - LRNG_DATA_SLOTS_PER_UINT) & LRNG_DATA_WORD_MASK; -+ *ptr &= LRNG_DATA_WORD_MASK; -+ -+ /* mask to split data into the two parts for the two units */ -+ *mask = ((1 << (*pre_ptr & (LRNG_DATA_SLOTS_PER_UINT - 1)) * -+ LRNG_DATA_SLOTSIZE_BITS)) - 1; -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_es_jent.c linux-5.15-lrng/drivers/char/lrng/lrng_es_jent.c ---- linux-5.15/drivers/char/lrng/lrng_es_jent.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_es_jent.c 2021-11-29 12:38:04.443278898 +1100 -@@ -0,0 +1,97 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG Fast Entropy Source: Jitter RNG -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/types.h> -+#include <crypto/internal/jitterentropy.h> -+ -+#include "lrng_internal.h" -+ -+/* -+ * Estimated entropy of data is a 16th of LRNG_DRNG_SECURITY_STRENGTH_BITS. -+ * Albeit a full entropy assessment is provided for the noise source indicating -+ * that it provides high entropy rates and considering that it deactivates -+ * when it detects insufficient hardware, the chosen under estimation of -+ * entropy is considered to be acceptable to all reviewers. -+ */ -+static u32 jitterrng = CONFIG_LRNG_JENT_ENTROPY_RATE; -+#ifdef CONFIG_LRNG_RUNTIME_ES_CONFIG -+module_param(jitterrng, uint, 0644); -+MODULE_PARM_DESC(jitterrng, "Entropy in bits of 256 data bits from Jitter RNG noise source"); -+#endif -+ -+static bool lrng_jent_initialized = false; -+static struct rand_data *lrng_jent_state; -+ -+static int __init lrng_jent_initialize(void) -+{ -+ /* Initialize the Jitter RNG after the clocksources are initialized. */ -+ if (jent_entropy_init() || -+ (lrng_jent_state = jent_entropy_collector_alloc(1, 0)) == NULL) { -+ jitterrng = 0; -+ pr_info("Jitter RNG unusable on current system\n"); -+ return 0; -+ } -+ lrng_jent_initialized = true; -+ lrng_pool_add_entropy(); -+ pr_debug("Jitter RNG working on current system\n"); -+ -+ return 0; -+} -+device_initcall(lrng_jent_initialize); -+ -+/* -+ * lrng_get_jent() - Get Jitter RNG entropy -+ * -+ * @outbuf: buffer to store entropy -+ * @outbuflen: length of buffer -+ * -+ * Return: -+ * * > 0 on success where value provides the added entropy in bits -+ * * 0 if no fast source was available -+ */ -+u32 lrng_get_jent(u8 *outbuf, u32 requested_bits) -+{ -+ int ret; -+ u32 ent_bits = lrng_jent_entropylevel(requested_bits); -+ unsigned long flags; -+ static DEFINE_SPINLOCK(lrng_jent_lock); -+ -+ spin_lock_irqsave(&lrng_jent_lock, flags); -+ -+ if (!lrng_jent_initialized) { -+ spin_unlock_irqrestore(&lrng_jent_lock, flags); -+ return 0; -+ } -+ -+ ret = jent_read_entropy(lrng_jent_state, outbuf, requested_bits >> 3); -+ spin_unlock_irqrestore(&lrng_jent_lock, flags); -+ -+ if (ret) { -+ pr_debug("Jitter RNG failed with %d\n", ret); -+ return 0; -+ } -+ -+ pr_debug("obtained %u bits of entropy from Jitter RNG noise source\n", -+ ent_bits); -+ -+ return ent_bits; -+} -+ -+u32 lrng_jent_entropylevel(u32 requested_bits) -+{ -+ return lrng_fast_noise_entropylevel((lrng_jent_initialized) ? -+ jitterrng : 0, requested_bits); -+} -+ -+void lrng_jent_es_state(unsigned char *buf, size_t buflen) -+{ -+ snprintf(buf, buflen, -+ "JitterRNG ES properties:\n" -+ " Enabled: %s\n", lrng_jent_initialized ? "true" : "false"); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_es_mgr.c linux-5.15-lrng/drivers/char/lrng/lrng_es_mgr.c ---- linux-5.15/drivers/char/lrng/lrng_es_mgr.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_es_mgr.c 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,373 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG Entropy sources management -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <asm/irq_regs.h> -+#include <linux/percpu.h> -+#include <linux/random.h> -+#include <linux/utsname.h> -+#include <linux/workqueue.h> -+ -+#include "lrng_internal.h" -+ -+struct lrng_state { -+ bool can_invalidate; /* Can invalidate batched entropy? */ -+ bool perform_seedwork; /* Can seed work be performed? */ -+ bool lrng_operational; /* Is DRNG operational? */ -+ bool lrng_fully_seeded; /* Is DRNG fully seeded? */ -+ bool lrng_min_seeded; /* Is DRNG minimally seeded? */ -+ bool all_online_numa_node_seeded;/* All NUMA DRNGs seeded? */ -+ -+ /* -+ * To ensure that external entropy providers cannot dominate the -+ * internal noise sources but yet cannot be dominated by internal -+ * noise sources, the following booleans are intended to allow -+ * external to provide seed once when a DRNG reseed occurs. This -+ * triggering of external noise source is performed even when the -+ * entropy pool has sufficient entropy. -+ */ -+ bool lrng_seed_hw; /* Allow HW to provide seed */ -+ bool lrng_seed_user; /* Allow user space to provide seed */ -+ -+ atomic_t boot_entropy_thresh; /* Reseed threshold */ -+ atomic_t reseed_in_progress; /* Flag for on executing reseed */ -+ struct work_struct lrng_seed_work; /* (re)seed work queue */ -+}; -+ -+static struct lrng_state lrng_state = { -+ false, false, false, false, false, false, true, true, -+ .boot_entropy_thresh = ATOMIC_INIT(LRNG_INIT_ENTROPY_BITS), -+ .reseed_in_progress = ATOMIC_INIT(0), -+}; -+ -+/********************************** Helper ***********************************/ -+ -+/* External entropy provider is allowed to provide seed data */ -+bool lrng_state_exseed_allow(enum lrng_external_noise_source source) -+{ -+ if (source == lrng_noise_source_hw) -+ return lrng_state.lrng_seed_hw; -+ return lrng_state.lrng_seed_user; -+} -+ -+/* Enable / disable external entropy provider to furnish seed */ -+void lrng_state_exseed_set(enum lrng_external_noise_source source, bool type) -+{ -+ if (source == lrng_noise_source_hw) -+ lrng_state.lrng_seed_hw = type; -+ else -+ lrng_state.lrng_seed_user = type; -+} -+ -+static inline void lrng_state_exseed_allow_all(void) -+{ -+ lrng_state_exseed_set(lrng_noise_source_hw, true); -+ lrng_state_exseed_set(lrng_noise_source_user, true); -+} -+ -+/* -+ * Reading of the LRNG pool is only allowed by one caller. The reading is -+ * only performed to (re)seed DRNGs. Thus, if this "lock" is already taken, -+ * the reseeding operation is in progress. The caller is not intended to wait -+ * but continue with its other operation. -+ */ -+int lrng_pool_trylock(void) -+{ -+ return atomic_cmpxchg(&lrng_state.reseed_in_progress, 0, 1); -+} -+ -+void lrng_pool_unlock(void) -+{ -+ atomic_set(&lrng_state.reseed_in_progress, 0); -+} -+ -+/* Set new entropy threshold for reseeding during boot */ -+void lrng_set_entropy_thresh(u32 new_entropy_bits) -+{ -+ atomic_set(&lrng_state.boot_entropy_thresh, new_entropy_bits); -+} -+ -+/* -+ * Reset LRNG state - the entropy counters are reset, but the data that may -+ * or may not have entropy remains in the pools as this data will not hurt. -+ */ -+void lrng_reset_state(void) -+{ -+ lrng_pool_set_entropy(0); -+ lrng_pcpu_reset(); -+ lrng_state.lrng_operational = false; -+ lrng_state.lrng_fully_seeded = false; -+ lrng_state.lrng_min_seeded = false; -+ lrng_state.all_online_numa_node_seeded = false; -+ pr_debug("reset LRNG\n"); -+} -+ -+/* Set flag that all DRNGs are fully seeded */ -+void lrng_pool_all_numa_nodes_seeded(bool set) -+{ -+ lrng_state.all_online_numa_node_seeded = set; -+} -+ -+/* Return boolean whether LRNG reached minimally seed level */ -+bool lrng_state_min_seeded(void) -+{ -+ return lrng_state.lrng_min_seeded; -+} -+ -+/* Return boolean whether LRNG reached fully seed level */ -+bool lrng_state_fully_seeded(void) -+{ -+ return lrng_state.lrng_fully_seeded; -+} -+ -+/* Return boolean whether LRNG is considered fully operational */ -+bool lrng_state_operational(void) -+{ -+ return lrng_state.lrng_operational; -+} -+ -+/* Policy to check whether entropy buffer contains full seeded entropy */ -+bool lrng_fully_seeded(bool fully_seeded, struct entropy_buf *eb) -+{ -+ return ((eb->a_bits + eb->b_bits + eb->c_bits + eb->d_bits) >= -+ lrng_get_seed_entropy_osr(fully_seeded)); -+} -+ -+/* Mark one DRNG as not fully seeded */ -+void lrng_unset_fully_seeded(struct lrng_drng *drng) -+{ -+ drng->fully_seeded = false; -+ lrng_pool_all_numa_nodes_seeded(false); -+ -+ /* -+ * The init DRNG instance must always be fully seeded as this instance -+ * is the fall-back if any of the per-NUMA node DRNG instances is -+ * insufficiently seeded. Thus, we mark the entire LRNG as -+ * non-operational if the initial DRNG becomes not fully seeded. -+ */ -+ if (drng == lrng_drng_init_instance() && lrng_state_operational()) { -+ pr_debug("LRNG set to non-operational\n"); -+ lrng_state.lrng_operational = false; -+ lrng_state.lrng_fully_seeded = false; -+ -+ /* If sufficient entropy is available, reseed now. */ -+ lrng_pool_add_entropy(); -+ } -+} -+ -+/* Policy to enable LRNG operational mode */ -+static inline void lrng_set_operational(u32 external_es) -+{ -+ /* LRNG is operational if the initial DRNG is fully seeded ... */ -+ if (lrng_state.lrng_fully_seeded && -+ /* ... and either internal ES SP800-90B startup is complete ... */ -+ (lrng_sp80090b_startup_complete() || -+ /* ... or the external ES provided sufficient entropy. */ -+ (lrng_get_seed_entropy_osr(lrng_state_fully_seeded()) <= -+ external_es))) { -+ lrng_state.lrng_operational = true; -+ lrng_process_ready_list(); -+ lrng_init_wakeup(); -+ pr_info("LRNG fully operational\n"); -+ } -+} -+ -+/* Available entropy in the entire LRNG considering all entropy sources */ -+u32 lrng_avail_entropy(void) -+{ -+ u32 ent_thresh = lrng_security_strength(); -+ -+ /* -+ * Apply oversampling during initialization according to SP800-90C as -+ * we request a larger buffer from the ES. -+ */ -+ if (lrng_sp80090c_compliant() && -+ !lrng_state.all_online_numa_node_seeded) -+ ent_thresh += CONFIG_LRNG_SEED_BUFFER_INIT_ADD_BITS; -+ -+ return lrng_pcpu_avail_entropy() + lrng_avail_aux_entropy() + -+ lrng_archrandom_entropylevel(ent_thresh) + -+ lrng_jent_entropylevel(ent_thresh); -+} -+ -+/* -+ * lrng_init_ops() - Set seed stages of LRNG -+ * -+ * Set the slow noise source reseed trigger threshold. The initial threshold -+ * is set to the minimum data size that can be read from the pool: a word. Upon -+ * reaching this value, the next seed threshold of 128 bits is set followed -+ * by 256 bits. -+ * -+ * @eb: buffer containing the size of entropy currently injected into DRNG -+ */ -+void lrng_init_ops(struct entropy_buf *eb) -+{ -+ struct lrng_state *state = &lrng_state; -+ u32 requested_bits, seed_bits, external_es; -+ -+ if (state->lrng_operational) -+ return; -+ -+ requested_bits = lrng_get_seed_entropy_osr( -+ state->all_online_numa_node_seeded); -+ -+ /* -+ * Entropy provided by external entropy sources - if they provide -+ * the requested amount of entropy, unblock the interface. -+ */ -+ external_es = eb->a_bits + eb->c_bits + eb->d_bits; -+ seed_bits = external_es + eb->b_bits; -+ -+ /* DRNG is seeded with full security strength */ -+ if (state->lrng_fully_seeded) { -+ lrng_set_operational(external_es); -+ lrng_set_entropy_thresh(requested_bits); -+ } else if (lrng_fully_seeded(state->all_online_numa_node_seeded, eb)) { -+ if (state->can_invalidate) -+ invalidate_batched_entropy(); -+ -+ state->lrng_fully_seeded = true; -+ lrng_set_operational(external_es); -+ state->lrng_min_seeded = true; -+ pr_info("LRNG fully seeded with %u bits of entropy\n", -+ seed_bits); -+ lrng_set_entropy_thresh(requested_bits); -+ } else if (!state->lrng_min_seeded) { -+ -+ /* DRNG is seeded with at least 128 bits of entropy */ -+ if (seed_bits >= LRNG_MIN_SEED_ENTROPY_BITS) { -+ if (state->can_invalidate) -+ invalidate_batched_entropy(); -+ -+ state->lrng_min_seeded = true; -+ pr_info("LRNG minimally seeded with %u bits of entropy\n", -+ seed_bits); -+ lrng_set_entropy_thresh(requested_bits); -+ lrng_init_wakeup(); -+ -+ /* DRNG is seeded with at least LRNG_INIT_ENTROPY_BITS bits */ -+ } else if (seed_bits >= LRNG_INIT_ENTROPY_BITS) { -+ pr_info("LRNG initial entropy level %u bits of entropy\n", -+ seed_bits); -+ lrng_set_entropy_thresh(LRNG_MIN_SEED_ENTROPY_BITS); -+ } -+ } -+} -+ -+int __init rand_initialize(void) -+{ -+ struct seed { -+ ktime_t time; -+ unsigned long data[(LRNG_MAX_DIGESTSIZE / -+ sizeof(unsigned long))]; -+ struct new_utsname utsname; -+ } seed __aligned(LRNG_KCAPI_ALIGN); -+ unsigned int i; -+ -+ BUILD_BUG_ON(LRNG_MAX_DIGESTSIZE % sizeof(unsigned long)); -+ -+ seed.time = ktime_get_real(); -+ -+ for (i = 0; i < ARRAY_SIZE(seed.data); i++) { -+ if (!arch_get_random_seed_long_early(&(seed.data[i])) && -+ !arch_get_random_long_early(&seed.data[i])) -+ seed.data[i] = random_get_entropy(); -+ } -+ memcpy(&seed.utsname, utsname(), sizeof(*(utsname()))); -+ -+ lrng_pool_insert_aux((u8 *)&seed, sizeof(seed), 0); -+ memzero_explicit(&seed, sizeof(seed)); -+ -+ /* Initialize the seed work queue */ -+ INIT_WORK(&lrng_state.lrng_seed_work, lrng_drng_seed_work); -+ lrng_state.perform_seedwork = true; -+ -+ lrng_drngs_init_cc20(true); -+ invalidate_batched_entropy(); -+ -+ lrng_state.can_invalidate = true; -+ -+ return 0; -+} -+ -+/* Interface requesting a reseed of the DRNG */ -+void lrng_pool_add_entropy(void) -+{ -+ /* -+ * Once all DRNGs are fully seeded, the interrupt noise -+ * sources will not trigger any reseeding any more. -+ */ -+ if (likely(lrng_state.all_online_numa_node_seeded)) -+ return; -+ -+ /* Only try to reseed if the DRNG is alive. */ -+ if (!lrng_get_available()) -+ return; -+ -+ /* Only trigger the DRNG reseed if we have collected entropy. */ -+ if (lrng_avail_entropy() < -+ atomic_read_u32(&lrng_state.boot_entropy_thresh)) -+ return; -+ -+ /* Ensure that the seeding only occurs once at any given time. */ -+ if (lrng_pool_trylock()) -+ return; -+ -+ /* Seed the DRNG with any available noise. */ -+ if (lrng_state.perform_seedwork) -+ schedule_work(&lrng_state.lrng_seed_work); -+ else -+ lrng_drng_seed_work(NULL); -+} -+ -+/* Fill the seed buffer with data from the noise sources */ -+void lrng_fill_seed_buffer(struct entropy_buf *entropy_buf, u32 requested_bits) -+{ -+ struct lrng_state *state = &lrng_state; -+ u32 req_ent = lrng_sp80090c_compliant() ? -+ lrng_security_strength() : LRNG_MIN_SEED_ENTROPY_BITS; -+ -+ /* Guarantee that requested bits is a multiple of bytes */ -+ BUILD_BUG_ON(LRNG_DRNG_SECURITY_STRENGTH_BITS % 8); -+ -+ /* always reseed the DRNG with the current time stamp */ -+ entropy_buf->now = random_get_entropy(); -+ -+ /* -+ * Require at least 128 bits of entropy for any reseed. If the LRNG is -+ * operated SP800-90C compliant we want to comply with SP800-90A section -+ * 9.2 mandating that DRNG is reseeded with the security strength. -+ */ -+ if (state->lrng_fully_seeded && (lrng_avail_entropy() < req_ent)) { -+ entropy_buf->a_bits = entropy_buf->b_bits = 0; -+ entropy_buf->c_bits = entropy_buf->d_bits = 0; -+ goto wakeup; -+ } -+ -+ /* Concatenate the output of the entropy sources. */ -+ entropy_buf->b_bits = lrng_pcpu_pool_hash(entropy_buf->b, -+ requested_bits, -+ state->lrng_fully_seeded); -+ entropy_buf->c_bits = lrng_get_arch(entropy_buf->c, requested_bits); -+ entropy_buf->d_bits = lrng_get_jent(entropy_buf->d, requested_bits); -+ lrng_get_backtrack_aux(entropy_buf, requested_bits); -+ -+ /* allow external entropy provider to provide seed */ -+ lrng_state_exseed_allow_all(); -+ -+wakeup: -+ /* -+ * Shall we wake up user space writers? This location covers -+ * ensures that the user space provider does not dominate the internal -+ * noise sources since in case the first call of this function finds -+ * sufficient entropy in the entropy pool, it will not trigger the -+ * wakeup. This implies that when the next /dev/urandom read happens, -+ * the entropy pool is drained. -+ */ -+ lrng_writer_wakeup(); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_health.c linux-5.15-lrng/drivers/char/lrng/lrng_health.c ---- linux-5.15/drivers/char/lrng/lrng_health.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_health.c 2021-11-29 12:38:11.793278870 +1100 -@@ -0,0 +1,410 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * Linux Random Number Generator (LRNG) Health Testing -+ * -+ * Copyright (C) 2019 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/fips.h> -+#include <linux/module.h> -+ -+#include "lrng_internal.h" -+ -+/* Stuck Test */ -+struct lrng_stuck_test { -+ u32 last_time; /* Stuck test: time of previous IRQ */ -+ u32 last_delta; /* Stuck test: delta of previous IRQ */ -+ u32 last_delta2; /* Stuck test: 2. time derivation of prev IRQ */ -+}; -+ -+/* Repetition Count Test */ -+struct lrng_rct { -+ atomic_t rct_count; /* Number of stuck values */ -+}; -+ -+/* Adaptive Proportion Test */ -+struct lrng_apt { -+ /* Data window size */ -+#define LRNG_APT_WINDOW_SIZE 512 -+ /* LSB of time stamp to process */ -+#define LRNG_APT_LSB 16 -+#define LRNG_APT_WORD_MASK (LRNG_APT_LSB - 1) -+ atomic_t apt_count; /* APT counter */ -+ atomic_t apt_base; /* APT base reference */ -+ -+ atomic_t apt_trigger; -+ bool apt_base_set; /* Is APT base set? */ -+}; -+ -+/* The health test code must operate lock-less */ -+struct lrng_health { -+ struct lrng_rct rct; -+ struct lrng_apt apt; -+ -+ bool health_test_enabled; -+ -+ /* SP800-90B startup health tests */ -+#define LRNG_SP80090B_STARTUP_SAMPLES 1024 -+#define LRNG_SP80090B_STARTUP_BLOCKS ((LRNG_SP80090B_STARTUP_SAMPLES + \ -+ LRNG_APT_WINDOW_SIZE - 1) / \ -+ LRNG_APT_WINDOW_SIZE) -+ bool sp80090b_startup_done; -+ atomic_t sp80090b_startup_blocks; -+}; -+ -+static struct lrng_health lrng_health = { -+ .rct.rct_count = ATOMIC_INIT(0), -+ -+ .apt.apt_count = ATOMIC_INIT(0), -+ .apt.apt_base = ATOMIC_INIT(-1), -+ .apt.apt_trigger = ATOMIC_INIT(LRNG_APT_WINDOW_SIZE), -+ .apt.apt_base_set = false, -+ -+ .health_test_enabled = true, -+ -+ .sp80090b_startup_blocks = ATOMIC_INIT(LRNG_SP80090B_STARTUP_BLOCKS), -+ .sp80090b_startup_done = false, -+}; -+ -+static DEFINE_PER_CPU(struct lrng_stuck_test, lrng_stuck_test); -+ -+static inline bool lrng_sp80090b_health_requested(void) -+{ -+ /* Health tests are only requested in FIPS mode */ -+ return fips_enabled; -+} -+ -+static inline bool lrng_sp80090b_health_enabled(void) -+{ -+ struct lrng_health *health = &lrng_health; -+ -+ return lrng_sp80090b_health_requested() && health->health_test_enabled; -+} -+ -+/*************************************************************************** -+ * SP800-90B Compliance -+ * -+ * If the Linux-RNG is booted into FIPS mode, the following interfaces -+ * provide an SP800-90B compliant noise source: -+ * -+ * * /dev/random -+ * * getrandom(2) -+ * * get_random_bytes when using it in conjunction with -+ * add_random_ready_callback -+ * -+ * All other interfaces, including /dev/urandom or get_random_bytes without -+ * the add_random_ready_callback cannot claim to use an SP800-90B compliant -+ * noise source. -+ ***************************************************************************/ -+ -+/* -+ * Perform SP800-90B startup testing -+ */ -+static inline void lrng_sp80090b_startup(struct lrng_health *health) -+{ -+ if (!health->sp80090b_startup_done && -+ atomic_dec_and_test(&health->sp80090b_startup_blocks)) { -+ struct entropy_buf eb; -+ -+ health->sp80090b_startup_done = true; -+ pr_info("SP800-90B startup health tests completed\n"); -+ memset(&eb, 0, sizeof(eb)); -+ lrng_init_ops(&eb); -+ -+ /* -+ * Force a reseed of DRNGs to ensure they are seeded with -+ * entropy that passed the SP800-90B health tests. -+ * As the DRNG always will reseed before generating -+ * random numbers, it does not need a reseed trigger. -+ */ -+ lrng_drng_force_reseed(); -+ } -+} -+ -+/* -+ * Handle failure of SP800-90B startup testing -+ */ -+static inline void lrng_sp80090b_startup_failure(struct lrng_health *health) -+{ -+ /* Reset of LRNG and its entropy - NOTE: we are in atomic context */ -+ lrng_reset(); -+ -+ /* -+ * Reset the SP800-90B startup test. -+ * -+ * NOTE SP800-90B section 4.3 bullet 4 does not specify what -+ * exactly is to be done in case of failure! Thus, we do what -+ * makes sense, i.e. restarting the health test and thus gating -+ * the output function of /dev/random and getrandom(2). -+ */ -+ atomic_set(&health->sp80090b_startup_blocks, -+ LRNG_SP80090B_STARTUP_BLOCKS); -+} -+ -+/* -+ * Handle failure of SP800-90B runtime testing -+ */ -+static inline void lrng_sp80090b_runtime_failure(struct lrng_health *health) -+{ -+ lrng_sp80090b_startup_failure(health); -+ health->sp80090b_startup_done = false; -+} -+ -+static inline void lrng_sp80090b_failure(struct lrng_health *health) -+{ -+ if (health->sp80090b_startup_done) { -+ pr_err("SP800-90B runtime health test failure - invalidating all existing entropy and initiate SP800-90B startup\n"); -+ lrng_sp80090b_runtime_failure(health); -+ } else { -+ pr_err("SP800-90B startup test failure - resetting\n"); -+ lrng_sp80090b_startup_failure(health); -+ } -+} -+ -+/* -+ * Is the SP800-90B startup testing complete? -+ * -+ * This function is called by the LRNG to determine whether to unblock -+ * a certain user interface. Therefore, only the potentially blocking -+ * user interfaces are considered SP800-90B compliant. -+ */ -+bool lrng_sp80090b_startup_complete(void) -+{ -+ struct lrng_health *health = &lrng_health; -+ -+ return (lrng_sp80090b_health_enabled()) ? health->sp80090b_startup_done: -+ true; -+} -+ -+bool lrng_sp80090b_compliant(void) -+{ -+ struct lrng_health *health = &lrng_health; -+ -+ return lrng_sp80090b_health_enabled() && health->sp80090b_startup_done; -+} -+ -+/*************************************************************************** -+ * Adaptive Proportion Test -+ * -+ * This test complies with SP800-90B section 4.4.2. -+ ***************************************************************************/ -+ -+/* -+ * Reset the APT counter -+ * -+ * @health [in] Reference to health state -+ */ -+static inline void lrng_apt_reset(struct lrng_health *health, -+ unsigned int time_masked) -+{ -+ struct lrng_apt *apt = &health->apt; -+ -+ pr_debug("APT value %d for base %d\n", -+ atomic_read(&apt->apt_count), atomic_read(&apt->apt_base)); -+ -+ /* Reset APT */ -+ atomic_set(&apt->apt_count, 0); -+ atomic_set(&apt->apt_base, time_masked); -+} -+ -+static inline void lrng_apt_restart(struct lrng_health *health) -+{ -+ struct lrng_apt *apt = &health->apt; -+ -+ atomic_set(&apt->apt_trigger, LRNG_APT_WINDOW_SIZE); -+} -+ -+/* -+ * Insert a new entropy event into APT -+ * -+ * This function does is void as it does not decide about the fate of a time -+ * stamp. An APT failure can only happen at the same time of a stuck test -+ * failure. Thus, the stuck failure will already decide how the time stamp -+ * is handled. -+ * -+ * @health [in] Reference to health state -+ * @now_time [in] Time stamp to process -+ */ -+static inline void lrng_apt_insert(struct lrng_health *health, -+ unsigned int now_time) -+{ -+ struct lrng_apt *apt = &health->apt; -+ -+ if (!lrng_sp80090b_health_requested()) -+ return; -+ -+ now_time &= LRNG_APT_WORD_MASK; -+ -+ /* Initialization of APT */ -+ if (!apt->apt_base_set) { -+ atomic_set(&apt->apt_base, now_time); -+ apt->apt_base_set = true; -+ return; -+ } -+ -+ if (now_time == (unsigned int)atomic_read(&apt->apt_base)) { -+ u32 apt_val = (u32)atomic_inc_return_relaxed(&apt->apt_count); -+ -+ if (apt_val >= CONFIG_LRNG_APT_CUTOFF) -+ lrng_sp80090b_failure(health); -+ } -+ -+ if (atomic_dec_and_test(&apt->apt_trigger)) { -+ lrng_apt_restart(health); -+ lrng_apt_reset(health, now_time); -+ lrng_sp80090b_startup(health); -+ } -+} -+ -+/*************************************************************************** -+ * Repetition Count Test -+ * -+ * The LRNG uses an enhanced version of the Repetition Count Test -+ * (RCT) specified in SP800-90B section 4.4.1. Instead of counting identical -+ * back-to-back values, the input to the RCT is the counting of the stuck -+ * values while filling the entropy pool. -+ * -+ * The RCT is applied with an alpha of 2^-30 compliant to FIPS 140-2 IG 9.8. -+ * -+ * During the counting operation, the LRNG always calculates the RCT -+ * cut-off value of C. If that value exceeds the allowed cut-off value, -+ * the LRNG will invalidate all entropy for the entropy pool which implies -+ * that no data can be extracted from the entropy pool unless new entropy -+ * is received. -+ ***************************************************************************/ -+ -+/* -+ * Hot code path - Insert data for Repetition Count Test -+ * -+ * @health: Reference to health information -+ * @stuck: Decision of stuck test -+ */ -+static inline void lrng_rct(struct lrng_health *health, int stuck) -+{ -+ struct lrng_rct *rct = &health->rct; -+ -+ if (!lrng_sp80090b_health_requested()) -+ return; -+ -+ if (stuck) { -+ u32 rct_count = atomic_add_return_relaxed(1, &rct->rct_count); -+ -+ pr_debug("RCT count: %u\n", rct_count); -+ -+ /* -+ * The cutoff value is based on the following consideration: -+ * alpha = 2^-30 as recommended in FIPS 140-2 IG 9.8. -+ * In addition, we imply an entropy value H of 1 bit as this -+ * is the minimum entropy required to provide full entropy. -+ * -+ * Note, rct_count (which equals to value B in the -+ * pseudo code of SP800-90B section 4.4.1) starts with zero. -+ * Hence we need to subtract one from the cutoff value as -+ * calculated following SP800-90B. -+ */ -+ if (rct_count >= CONFIG_LRNG_RCT_CUTOFF) { -+ atomic_set(&rct->rct_count, 0); -+ -+ /* -+ * APT must start anew as we consider all previously -+ * recorded data to contain no entropy. -+ */ -+ lrng_apt_restart(health); -+ -+ lrng_sp80090b_failure(health); -+ } -+ } else { -+ atomic_set(&rct->rct_count, 0); -+ } -+} -+ -+/*************************************************************************** -+ * Stuck Test -+ * -+ * Checking the: -+ * 1st derivative of the event occurrence (time delta) -+ * 2nd derivative of the event occurrence (delta of time deltas) -+ * 3rd derivative of the event occurrence (delta of delta of time deltas) -+ * -+ * All values must always be non-zero. The stuck test is only valid disabled if -+ * high-resolution time stamps are identified after initialization. -+ ***************************************************************************/ -+ -+static inline u32 lrng_delta(u32 prev, u32 next) -+{ -+ /* -+ * Note that this (unsigned) subtraction does yield the correct value -+ * in the wraparound-case, i.e. when next < prev. -+ */ -+ return (next - prev); -+} -+ -+/* -+ * Hot code path -+ * -+ * @health: Reference to health information -+ * @now: Event time -+ * @return: 0 event occurrence not stuck (good time stamp) -+ * != 0 event occurrence stuck (reject time stamp) -+ */ -+static inline int lrng_irq_stuck(struct lrng_stuck_test *stuck, u32 now_time) -+{ -+ u32 delta = lrng_delta(stuck->last_time, now_time); -+ u32 delta2 = lrng_delta(stuck->last_delta, delta); -+ u32 delta3 = lrng_delta(stuck->last_delta2, delta2); -+ -+ stuck->last_time = now_time; -+ stuck->last_delta = delta; -+ stuck->last_delta2 = delta2; -+ -+ if (!delta || !delta2 || !delta3) -+ return 1; -+ -+ return 0; -+} -+ -+/*************************************************************************** -+ * Health test interfaces -+ ***************************************************************************/ -+ -+/* -+ * Disable all health tests -+ */ -+void lrng_health_disable(void) -+{ -+ struct lrng_health *health = &lrng_health; -+ -+ health->health_test_enabled = false; -+ -+ if (lrng_sp80090b_health_requested()) -+ pr_warn("SP800-90B compliance requested but the Linux RNG is NOT SP800-90B compliant\n"); -+} -+ -+/* -+ * Hot code path - Perform health test on time stamp received from an event -+ * -+ * @now_time Time stamp -+ */ -+enum lrng_health_res lrng_health_test(u32 now_time) -+{ -+ struct lrng_health *health = &lrng_health; -+ struct lrng_stuck_test *stuck_test = this_cpu_ptr(&lrng_stuck_test); -+ int stuck; -+ -+ if (!health->health_test_enabled) -+ return lrng_health_pass; -+ -+ lrng_apt_insert(health, now_time); -+ -+ stuck = lrng_irq_stuck(stuck_test, now_time); -+ lrng_rct(health, stuck); -+ if (stuck) { -+ /* SP800-90B disallows using a failing health test time stamp */ -+ return lrng_sp80090b_health_requested() ? -+ lrng_health_fail_drop : lrng_health_fail_use; -+ } -+ -+ return lrng_health_pass; -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_interfaces.c linux-5.15-lrng/drivers/char/lrng/lrng_interfaces.c ---- linux-5.15/drivers/char/lrng/lrng_interfaces.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_interfaces.c 2021-11-29 12:37:03.083279132 +1100 -@@ -0,0 +1,654 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG User and kernel space interfaces -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/freezer.h> -+#include <linux/fs.h> -+#include <linux/genhd.h> -+#include <linux/hw_random.h> -+#include <linux/kthread.h> -+#include <linux/poll.h> -+#include <linux/preempt.h> -+#include <linux/random.h> -+#include <linux/slab.h> -+#include <linux/syscalls.h> -+#include <linux/timex.h> -+ -+#define CREATE_TRACE_POINTS -+#include <trace/events/random.h> -+ -+#include "lrng_internal.h" -+ -+/* -+ * If the entropy count falls under this number of bits, then we -+ * should wake up processes which are selecting or polling on write -+ * access to /dev/random. -+ */ -+u32 lrng_write_wakeup_bits = (LRNG_WRITE_WAKEUP_ENTROPY << 3); -+ -+static LIST_HEAD(lrng_ready_list); -+static DEFINE_SPINLOCK(lrng_ready_list_lock); -+ -+static DECLARE_WAIT_QUEUE_HEAD(lrng_write_wait); -+static DECLARE_WAIT_QUEUE_HEAD(lrng_init_wait); -+static struct fasync_struct *fasync; -+ -+/********************************** Helper ***********************************/ -+ -+/* Is the DRNG seed level too low? */ -+static inline bool lrng_need_entropy(void) -+{ -+ return (lrng_avail_aux_entropy() < lrng_write_wakeup_bits); -+} -+ -+void lrng_writer_wakeup(void) -+{ -+ if (lrng_need_entropy() && wq_has_sleeper(&lrng_write_wait)) { -+ wake_up_interruptible(&lrng_write_wait); -+ kill_fasync(&fasync, SIGIO, POLL_OUT); -+ } -+} -+ -+void lrng_init_wakeup(void) -+{ -+ wake_up_all(&lrng_init_wait); -+ kill_fasync(&fasync, SIGIO, POLL_IN); -+} -+ -+/** -+ * lrng_process_ready_list() - Ping all kernel internal callers waiting until -+ * the DRNG is completely initialized to inform that the DRNG reached that -+ * seed level. -+ * -+ * When the SP800-90B testing is enabled, the ping only happens if the SP800-90B -+ * startup health tests are completed. This implies that kernel internal -+ * callers always have an SP800-90B compliant noise source when being -+ * pinged. -+ */ -+void lrng_process_ready_list(void) -+{ -+ unsigned long flags; -+ struct random_ready_callback *rdy, *tmp; -+ -+ if (!lrng_state_operational()) -+ return; -+ -+ spin_lock_irqsave(&lrng_ready_list_lock, flags); -+ list_for_each_entry_safe(rdy, tmp, &lrng_ready_list, list) { -+ struct module *owner = rdy->owner; -+ -+ list_del_init(&rdy->list); -+ rdy->func(rdy); -+ module_put(owner); -+ } -+ spin_unlock_irqrestore(&lrng_ready_list_lock, flags); -+} -+ -+void lrng_debug_report_seedlevel(const char *name) -+{ -+#ifdef CONFIG_WARN_ALL_UNSEEDED_RANDOM -+ static void *previous = NULL; -+ void *caller = (void *) _RET_IP_; -+ -+ if (READ_ONCE(previous) == caller) -+ return; -+ -+ if (!lrng_state_min_seeded()) -+ pr_notice("%pS %s called without reaching minimally seeded level (available entropy %u)\n", -+ caller, name, lrng_avail_entropy()); -+ -+ WRITE_ONCE(previous, caller); -+#endif -+} -+ -+/************************ LRNG kernel input interfaces ************************/ -+ -+/* -+ * add_hwgenerator_randomness() - Interface for in-kernel drivers of true -+ * hardware RNGs. -+ * -+ * Those devices may produce endless random bits and will be throttled -+ * when our pool is full. -+ * -+ * @buffer: buffer holding the entropic data from HW noise sources to be used to -+ * insert into entropy pool. -+ * @count: length of buffer -+ * @entropy_bits: amount of entropy in buffer (value is in bits) -+ */ -+void add_hwgenerator_randomness(const char *buffer, size_t count, -+ size_t entropy_bits) -+{ -+ /* -+ * Suspend writing if we are fully loaded with entropy. -+ * We'll be woken up again once below lrng_write_wakeup_thresh, -+ * or when the calling thread is about to terminate. -+ */ -+ wait_event_interruptible(lrng_write_wait, -+ lrng_need_entropy() || -+ lrng_state_exseed_allow(lrng_noise_source_hw) || -+ kthread_should_stop()); -+ lrng_state_exseed_set(lrng_noise_source_hw, false); -+ lrng_pool_insert_aux(buffer, count, entropy_bits); -+} -+EXPORT_SYMBOL_GPL(add_hwgenerator_randomness); -+ -+/* -+ * add_bootloader_randomness() - Handle random seed passed by bootloader. -+ * -+ * If the seed is trustworthy, it would be regarded as hardware RNGs. Otherwise -+ * it would be regarded as device data. -+ * The decision is controlled by CONFIG_RANDOM_TRUST_BOOTLOADER. -+ * -+ * @buf: buffer holding the entropic data from HW noise sources to be used to -+ * insert into entropy pool. -+ * @size: length of buffer -+ */ -+void add_bootloader_randomness(const void *buf, unsigned int size) -+{ -+ lrng_pool_insert_aux(buf, size, -+ IS_ENABLED(CONFIG_RANDOM_TRUST_BOOTLOADER) ? -+ size * 8 : 0); -+} -+EXPORT_SYMBOL_GPL(add_bootloader_randomness); -+ -+/* -+ * Callback for HID layer -- use the HID event values to stir the entropy pool -+ */ -+void add_input_randomness(unsigned int type, unsigned int code, -+ unsigned int value) -+{ -+ static unsigned char last_value; -+ -+ /* ignore autorepeat and the like */ -+ if (value == last_value) -+ return; -+ -+ last_value = value; -+ -+ lrng_pcpu_array_add_u32((type << 4) ^ code ^ (code >> 4) ^ value); -+} -+EXPORT_SYMBOL_GPL(add_input_randomness); -+ -+/* -+ * add_device_randomness() - Add device- or boot-specific data to the entropy -+ * pool to help initialize it. -+ * -+ * None of this adds any entropy; it is meant to avoid the problem of -+ * the entropy pool having similar initial state across largely -+ * identical devices. -+ * -+ * @buf: buffer holding the entropic data from HW noise sources to be used to -+ * insert into entropy pool. -+ * @size: length of buffer -+ */ -+void add_device_randomness(const void *buf, unsigned int size) -+{ -+ lrng_pool_insert_aux((u8 *)buf, size, 0); -+} -+EXPORT_SYMBOL(add_device_randomness); -+ -+#ifdef CONFIG_BLOCK -+void rand_initialize_disk(struct gendisk *disk) { } -+void add_disk_randomness(struct gendisk *disk) { } -+EXPORT_SYMBOL(add_disk_randomness); -+#endif -+ -+#ifndef CONFIG_LRNG_IRQ -+void add_interrupt_randomness(int irq, int irq_flg) { } -+EXPORT_SYMBOL(add_interrupt_randomness); -+#endif -+ -+/* -+ * del_random_ready_callback() - Delete a previously registered readiness -+ * callback function. -+ * -+ * @rdy: callback definition that was registered initially -+ */ -+void del_random_ready_callback(struct random_ready_callback *rdy) -+{ -+ unsigned long flags; -+ struct module *owner = NULL; -+ -+ spin_lock_irqsave(&lrng_ready_list_lock, flags); -+ if (!list_empty(&rdy->list)) { -+ list_del_init(&rdy->list); -+ owner = rdy->owner; -+ } -+ spin_unlock_irqrestore(&lrng_ready_list_lock, flags); -+ -+ module_put(owner); -+} -+EXPORT_SYMBOL(del_random_ready_callback); -+ -+/* -+ * add_random_ready_callback() - Add a callback function that will be invoked -+ * when the DRNG is fully initialized and seeded. -+ * -+ * @rdy: callback definition to be invoked when the LRNG is seeded -+ * -+ * Return: -+ * * 0 if callback is successfully added -+ * * -EALREADY if pool is already initialised (callback not called) -+ * * -ENOENT if module for callback is not alive -+ */ -+int add_random_ready_callback(struct random_ready_callback *rdy) -+{ -+ struct module *owner; -+ unsigned long flags; -+ int err = -EALREADY; -+ -+ if (likely(lrng_state_operational())) -+ return err; -+ -+ owner = rdy->owner; -+ if (!try_module_get(owner)) -+ return -ENOENT; -+ -+ spin_lock_irqsave(&lrng_ready_list_lock, flags); -+ if (lrng_state_operational()) -+ goto out; -+ -+ owner = NULL; -+ -+ list_add(&rdy->list, &lrng_ready_list); -+ err = 0; -+ -+out: -+ spin_unlock_irqrestore(&lrng_ready_list_lock, flags); -+ -+ module_put(owner); -+ -+ return err; -+} -+EXPORT_SYMBOL(add_random_ready_callback); -+ -+/*********************** LRNG kernel output interfaces ************************/ -+ -+/* -+ * get_random_bytes() - Provider of cryptographic strong random numbers for -+ * kernel-internal usage. -+ * -+ * This function is appropriate for all in-kernel use cases. However, -+ * it will always use the ChaCha20 DRNG. -+ * -+ * @buf: buffer to store the random bytes -+ * @nbytes: size of the buffer -+ */ -+void get_random_bytes(void *buf, int nbytes) -+{ -+ lrng_drng_get_atomic((u8 *)buf, (u32)nbytes); -+ lrng_debug_report_seedlevel("get_random_bytes"); -+} -+EXPORT_SYMBOL(get_random_bytes); -+ -+/* -+ * get_random_bytes_full() - Provider of cryptographic strong random numbers -+ * for kernel-internal usage. -+ * -+ * This function is appropriate only for non-atomic use cases as this -+ * function may sleep. Though, it provides access to the full functionality -+ * of LRNG including the switchable DRNG support, that may support other -+ * DRNGs such as the SP800-90A DRBG. -+ * -+ * @buf: buffer to store the random bytes -+ * @nbytes: size of the buffer -+ */ -+void get_random_bytes_full(void *buf, int nbytes) -+{ -+ lrng_drng_get_sleep((u8 *)buf, (u32)nbytes); -+ lrng_debug_report_seedlevel("get_random_bytes_full"); -+} -+EXPORT_SYMBOL(get_random_bytes_full); -+ -+/* -+ * wait_for_random_bytes() - Wait for the LRNG to be seeded and thus -+ * guaranteed to supply cryptographically secure random numbers. -+ * -+ * This applies to: the /dev/urandom device, the get_random_bytes function, -+ * and the get_random_{u32,u64,int,long} family of functions. Using any of -+ * these functions without first calling this function forfeits the guarantee -+ * of security. -+ * -+ * Return: -+ * * 0 if the LRNG has been seeded. -+ * * -ERESTARTSYS if the function was interrupted by a signal. -+ */ -+int wait_for_random_bytes(void) -+{ -+ if (likely(lrng_state_min_seeded())) -+ return 0; -+ return wait_event_interruptible(lrng_init_wait, -+ lrng_state_min_seeded()); -+} -+EXPORT_SYMBOL(wait_for_random_bytes); -+ -+/* -+ * get_random_bytes_arch() - This function will use the architecture-specific -+ * hardware random number generator if it is available. -+ * -+ * The arch-specific hw RNG will almost certainly be faster than what we can -+ * do in software, but it is impossible to verify that it is implemented -+ * securely (as opposed, to, say, the AES encryption of a sequence number using -+ * a key known by the NSA). So it's useful if we need the speed, but only if -+ * we're willing to trust the hardware manufacturer not to have put in a back -+ * door. -+ * -+ * @buf: buffer allocated by caller to store the random data in -+ * @nbytes: length of outbuf -+ * -+ * Return: number of bytes filled in. -+ */ -+int __must_check get_random_bytes_arch(void *buf, int nbytes) -+{ -+ u8 *p = buf; -+ -+ while (nbytes) { -+ unsigned long v; -+ int chunk = min_t(int, nbytes, sizeof(unsigned long)); -+ -+ if (!arch_get_random_long(&v)) -+ break; -+ -+ memcpy(p, &v, chunk); -+ p += chunk; -+ nbytes -= chunk; -+ } -+ -+ if (nbytes) -+ lrng_drng_get_atomic((u8 *)p, (u32)nbytes); -+ -+ return nbytes; -+} -+EXPORT_SYMBOL(get_random_bytes_arch); -+ -+/* -+ * Returns whether or not the LRNG has been seeded. -+ * -+ * Returns: true if the urandom pool has been seeded. -+ * false if the urandom pool has not been seeded. -+ */ -+bool rng_is_initialized(void) -+{ -+ return lrng_state_operational(); -+} -+EXPORT_SYMBOL(rng_is_initialized); -+ -+/************************ LRNG user output interfaces *************************/ -+ -+static ssize_t lrng_read_common(char __user *buf, size_t nbytes) -+{ -+ ssize_t ret = 0; -+ u8 tmpbuf[LRNG_DRNG_BLOCKSIZE] __aligned(LRNG_KCAPI_ALIGN); -+ u8 *tmp_large = NULL, *tmp = tmpbuf; -+ u32 tmplen = sizeof(tmpbuf); -+ -+ if (nbytes == 0) -+ return 0; -+ -+ /* -+ * Satisfy large read requests -- as the common case are smaller -+ * request sizes, such as 16 or 32 bytes, avoid a kmalloc overhead for -+ * those by using the stack variable of tmpbuf. -+ */ -+ if (!CONFIG_BASE_SMALL && (nbytes > sizeof(tmpbuf))) { -+ tmplen = min_t(u32, nbytes, LRNG_DRNG_MAX_REQSIZE); -+ tmp_large = kmalloc(tmplen + LRNG_KCAPI_ALIGN, GFP_KERNEL); -+ if (!tmp_large) -+ tmplen = sizeof(tmpbuf); -+ else -+ tmp = PTR_ALIGN(tmp_large, LRNG_KCAPI_ALIGN); -+ } -+ -+ while (nbytes) { -+ u32 todo = min_t(u32, nbytes, tmplen); -+ int rc = 0; -+ -+ /* Reschedule if we received a large request. */ -+ if ((tmp_large) && need_resched()) { -+ if (signal_pending(current)) { -+ if (ret == 0) -+ ret = -ERESTARTSYS; -+ break; -+ } -+ schedule(); -+ } -+ -+ rc = lrng_drng_get_sleep(tmp, todo); -+ if (rc <= 0) { -+ if (rc < 0) -+ ret = rc; -+ break; -+ } -+ if (copy_to_user(buf, tmp, rc)) { -+ ret = -EFAULT; -+ break; -+ } -+ -+ nbytes -= rc; -+ buf += rc; -+ ret += rc; -+ } -+ -+ /* Wipe data just returned from memory */ -+ if (tmp_large) -+ kfree_sensitive(tmp_large); -+ else -+ memzero_explicit(tmpbuf, sizeof(tmpbuf)); -+ -+ return ret; -+} -+ -+static ssize_t -+lrng_read_common_block(int nonblock, char __user *buf, size_t nbytes) -+{ -+ if (nbytes == 0) -+ return 0; -+ -+ if (unlikely(!lrng_state_operational())) { -+ int ret; -+ -+ if (nonblock) -+ return -EAGAIN; -+ -+ ret = wait_event_interruptible(lrng_init_wait, -+ lrng_state_operational()); -+ if (unlikely(ret)) -+ return ret; -+ } -+ -+ return lrng_read_common(buf, nbytes); -+} -+ -+static ssize_t lrng_drng_read_block(struct file *file, char __user *buf, -+ size_t nbytes, loff_t *ppos) -+{ -+ return lrng_read_common_block(file->f_flags & O_NONBLOCK, buf, nbytes); -+} -+ -+static __poll_t lrng_random_poll(struct file *file, poll_table *wait) -+{ -+ __poll_t mask; -+ -+ poll_wait(file, &lrng_init_wait, wait); -+ poll_wait(file, &lrng_write_wait, wait); -+ mask = 0; -+ if (lrng_state_operational()) -+ mask |= EPOLLIN | EPOLLRDNORM; -+ if (lrng_need_entropy() || -+ lrng_state_exseed_allow(lrng_noise_source_user)) { -+ lrng_state_exseed_set(lrng_noise_source_user, false); -+ mask |= EPOLLOUT | EPOLLWRNORM; -+ } -+ return mask; -+} -+ -+static ssize_t lrng_drng_write_common(const char __user *buffer, size_t count, -+ u32 entropy_bits) -+{ -+ ssize_t ret = 0; -+ u8 buf[64] __aligned(LRNG_KCAPI_ALIGN); -+ const char __user *p = buffer; -+ u32 orig_entropy_bits = entropy_bits; -+ -+ if (!lrng_get_available()) -+ return -EAGAIN; -+ -+ count = min_t(size_t, count, INT_MAX); -+ while (count > 0) { -+ size_t bytes = min_t(size_t, count, sizeof(buf)); -+ u32 ent = min_t(u32, bytes<<3, entropy_bits); -+ -+ if (copy_from_user(&buf, p, bytes)) -+ return -EFAULT; -+ /* Inject data into entropy pool */ -+ lrng_pool_insert_aux(buf, bytes, ent); -+ -+ count -= bytes; -+ p += bytes; -+ ret += bytes; -+ entropy_bits -= ent; -+ -+ cond_resched(); -+ } -+ -+ /* Force reseed of DRNG during next data request. */ -+ if (!orig_entropy_bits) -+ lrng_drng_force_reseed(); -+ -+ return ret; -+} -+ -+static ssize_t lrng_drng_read(struct file *file, char __user *buf, -+ size_t nbytes, loff_t *ppos) -+{ -+ if (!lrng_state_min_seeded()) -+ pr_notice_ratelimited("%s - use of insufficiently seeded DRNG (%zu bytes read)\n", -+ current->comm, nbytes); -+ else if (!lrng_state_operational()) -+ pr_debug_ratelimited("%s - use of not fully seeded DRNG (%zu bytes read)\n", -+ current->comm, nbytes); -+ -+ return lrng_read_common(buf, nbytes); -+} -+ -+static ssize_t lrng_drng_write(struct file *file, const char __user *buffer, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_drng_write_common(buffer, count, 0); -+} -+ -+static long lrng_ioctl(struct file *f, unsigned int cmd, unsigned long arg) -+{ -+ u32 digestsize_bits; -+ int size, ent_count_bits; -+ int __user *p = (int __user *)arg; -+ -+ switch (cmd) { -+ case RNDGETENTCNT: -+ ent_count_bits = lrng_avail_entropy(); -+ if (put_user(ent_count_bits, p)) -+ return -EFAULT; -+ return 0; -+ case RNDADDTOENTCNT: -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EPERM; -+ if (get_user(ent_count_bits, p)) -+ return -EFAULT; -+ ent_count_bits = (int)lrng_avail_aux_entropy() + ent_count_bits; -+ if (ent_count_bits < 0) -+ ent_count_bits = 0; -+ digestsize_bits = lrng_get_digestsize(); -+ if (ent_count_bits > digestsize_bits) -+ ent_count_bits = digestsize_bits; -+ lrng_pool_set_entropy(ent_count_bits); -+ return 0; -+ case RNDADDENTROPY: -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EPERM; -+ if (get_user(ent_count_bits, p++)) -+ return -EFAULT; -+ if (ent_count_bits < 0) -+ return -EINVAL; -+ if (get_user(size, p++)) -+ return -EFAULT; -+ if (size < 0) -+ return -EINVAL; -+ /* there cannot be more entropy than data */ -+ ent_count_bits = min(ent_count_bits, size<<3); -+ return lrng_drng_write_common((const char __user *)p, size, -+ ent_count_bits); -+ case RNDZAPENTCNT: -+ case RNDCLEARPOOL: -+ /* Clear the entropy pool counter. */ -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EPERM; -+ lrng_pool_set_entropy(0); -+ return 0; -+ case RNDRESEEDCRNG: -+ /* -+ * We leave the capability check here since it is present -+ * in the upstream's RNG implementation. Yet, user space -+ * can trigger a reseed as easy as writing into /dev/random -+ * or /dev/urandom where no privilege is needed. -+ */ -+ if (!capable(CAP_SYS_ADMIN)) -+ return -EPERM; -+ /* Force a reseed of all DRNGs */ -+ lrng_drng_force_reseed(); -+ return 0; -+ default: -+ return -EINVAL; -+ } -+} -+ -+static int lrng_fasync(int fd, struct file *filp, int on) -+{ -+ return fasync_helper(fd, filp, on, &fasync); -+} -+ -+const struct file_operations random_fops = { -+ .read = lrng_drng_read_block, -+ .write = lrng_drng_write, -+ .poll = lrng_random_poll, -+ .unlocked_ioctl = lrng_ioctl, -+ .compat_ioctl = compat_ptr_ioctl, -+ .fasync = lrng_fasync, -+ .llseek = noop_llseek, -+}; -+ -+const struct file_operations urandom_fops = { -+ .read = lrng_drng_read, -+ .write = lrng_drng_write, -+ .unlocked_ioctl = lrng_ioctl, -+ .compat_ioctl = compat_ptr_ioctl, -+ .fasync = lrng_fasync, -+ .llseek = noop_llseek, -+}; -+ -+SYSCALL_DEFINE3(getrandom, char __user *, buf, size_t, count, -+ unsigned int, flags) -+{ -+ if (flags & ~(GRND_NONBLOCK|GRND_RANDOM|GRND_INSECURE)) -+ return -EINVAL; -+ -+ /* -+ * Requesting insecure and blocking randomness at the same time makes -+ * no sense. -+ */ -+ if ((flags & -+ (GRND_INSECURE|GRND_RANDOM)) == (GRND_INSECURE|GRND_RANDOM)) -+ return -EINVAL; -+ -+ if (count > INT_MAX) -+ count = INT_MAX; -+ -+ if (flags & GRND_INSECURE) -+ return lrng_drng_read(NULL, buf, count, NULL); -+ -+ return lrng_read_common_block(flags & GRND_NONBLOCK, buf, count); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_internal.h linux-5.15-lrng/drivers/char/lrng/lrng_internal.h ---- linux-5.15/drivers/char/lrng/lrng_internal.h 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_internal.h 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,485 @@ -+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */ -+/* -+ * Copyright (C) 2018 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#ifndef _LRNG_INTERNAL_H -+#define _LRNG_INTERNAL_H -+ -+#include <crypto/sha1.h> -+#include <crypto/sha2.h> -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/mutex.h> -+#include <linux/rwlock.h> -+#include <linux/slab.h> -+#include <linux/spinlock.h> -+ -+/*************************** General LRNG parameter ***************************/ -+ -+/* Security strength of LRNG -- this must match DRNG security strength */ -+#define LRNG_DRNG_SECURITY_STRENGTH_BYTES 32 -+#define LRNG_DRNG_SECURITY_STRENGTH_BITS (LRNG_DRNG_SECURITY_STRENGTH_BYTES * 8) -+#define LRNG_DRNG_BLOCKSIZE 64 /* Maximum of DRNG block sizes */ -+#define LRNG_DRNG_INIT_SEED_SIZE_BITS (LRNG_DRNG_SECURITY_STRENGTH_BITS + \ -+ CONFIG_LRNG_SEED_BUFFER_INIT_ADD_BITS) -+#define LRNG_DRNG_INIT_SEED_SIZE_BYTES (LRNG_DRNG_INIT_SEED_SIZE_BITS >> 3) -+ -+/* -+ * SP800-90A defines a maximum request size of 1<<16 bytes. The given value is -+ * considered a safer margin. -+ * -+ * This value is allowed to be changed. -+ */ -+#define LRNG_DRNG_MAX_REQSIZE (1<<12) -+ -+/* -+ * SP800-90A defines a maximum number of requests between reseeds of 2^48. -+ * The given value is considered a much safer margin, balancing requests for -+ * frequent reseeds with the need to conserve entropy. This value MUST NOT be -+ * larger than INT_MAX because it is used in an atomic_t. -+ * -+ * This value is allowed to be changed. -+ */ -+#define LRNG_DRNG_RESEED_THRESH (1<<20) -+ -+/* -+ * Maximum DRNG generation operations without reseed having full entropy -+ * This value defines the absolute maximum value of DRNG generation operations -+ * without a reseed holding full entropy. LRNG_DRNG_RESEED_THRESH is the -+ * threshold when a new reseed is attempted. But it is possible that this fails -+ * to deliver full entropy. In this case the DRNG will continue to provide data -+ * even though it was not reseeded with full entropy. To avoid in the extreme -+ * case that no reseed is performed for too long, this threshold is enforced. -+ * If that absolute low value is reached, the LRNG is marked as not operational. -+ * -+ * This value is allowed to be changed. -+ */ -+#define LRNG_DRNG_MAX_WITHOUT_RESEED (1<<30) -+ -+/* -+ * Min required seed entropy is 128 bits covering the minimum entropy -+ * requirement of SP800-131A and the German BSI's TR02102. -+ * -+ * This value is allowed to be changed. -+ */ -+#define LRNG_FULL_SEED_ENTROPY_BITS LRNG_DRNG_SECURITY_STRENGTH_BITS -+#define LRNG_MIN_SEED_ENTROPY_BITS 128 -+#define LRNG_INIT_ENTROPY_BITS 32 -+ -+/* -+ * Wakeup value -+ * -+ * This value is allowed to be changed but must not be larger than the -+ * digest size of the hash operation used update the aux_pool. -+ */ -+#ifdef CONFIG_CRYPTO_LIB_SHA256 -+# define LRNG_ATOMIC_DIGEST_SIZE SHA256_DIGEST_SIZE -+#else -+# define LRNG_ATOMIC_DIGEST_SIZE SHA1_DIGEST_SIZE -+#endif -+#define LRNG_WRITE_WAKEUP_ENTROPY LRNG_ATOMIC_DIGEST_SIZE -+ -+/* -+ * If the switching support is configured, we must provide support up to -+ * the largest digest size. Without switching support, we know it is only -+ * the built-in digest size. -+ */ -+#ifdef CONFIG_LRNG_DRNG_SWITCH -+# define LRNG_MAX_DIGESTSIZE 64 -+#else -+# define LRNG_MAX_DIGESTSIZE LRNG_ATOMIC_DIGEST_SIZE -+#endif -+ -+/* -+ * Oversampling factor of IRQ events to obtain -+ * LRNG_DRNG_SECURITY_STRENGTH_BYTES. This factor is used when a -+ * high-resolution time stamp is not available. In this case, jiffies and -+ * register contents are used to fill the entropy pool. These noise sources -+ * are much less entropic than the high-resolution timer. The entropy content -+ * is the entropy content assumed with LRNG_IRQ_ENTROPY_BITS divided by -+ * LRNG_IRQ_OVERSAMPLING_FACTOR. -+ * -+ * This value is allowed to be changed. -+ */ -+#define LRNG_IRQ_OVERSAMPLING_FACTOR 10 -+ -+/* Alignmask that is intended to be identical to CRYPTO_MINALIGN */ -+#define LRNG_KCAPI_ALIGN ARCH_KMALLOC_MINALIGN -+ -+/* -+ * This definition must provide a buffer that is equal to SHASH_DESC_ON_STACK -+ * as it will be casted into a struct shash_desc. -+ */ -+#define LRNG_POOL_SIZE (sizeof(struct shash_desc) + HASH_MAX_DESCSIZE) -+ -+/************************ Default DRNG implementation *************************/ -+ -+extern struct chacha20_state chacha20; -+extern const struct lrng_crypto_cb lrng_cc20_crypto_cb; -+void lrng_cc20_init_state(struct chacha20_state *state); -+ -+/********************************** /proc *************************************/ -+ -+#ifdef CONFIG_SYSCTL -+void lrng_pool_inc_numa_node(void); -+void lrng_proc_update_max_write_thresh(u32 new_digestsize); -+#else -+static inline void lrng_pool_inc_numa_node(void) { } -+static inline void lrng_proc_update_max_write_thresh(u32 new_digestsize) { } -+#endif -+ -+/****************************** LRNG interfaces *******************************/ -+ -+extern u32 lrng_write_wakeup_bits; -+extern int lrng_drng_reseed_max_time; -+ -+void lrng_writer_wakeup(void); -+void lrng_init_wakeup(void); -+void lrng_debug_report_seedlevel(const char *name); -+void lrng_process_ready_list(void); -+ -+/* External interface to use of the switchable DRBG inside the kernel */ -+void get_random_bytes_full(void *buf, int nbytes); -+ -+/************************* Jitter RNG Entropy Source **************************/ -+ -+#ifdef CONFIG_LRNG_JENT -+u32 lrng_get_jent(u8 *outbuf, u32 requested_bits); -+u32 lrng_jent_entropylevel(u32 requested_bits); -+void lrng_jent_es_state(unsigned char *buf, size_t buflen); -+#else /* CONFIG_LRNG_JENT */ -+static inline u32 lrng_get_jent(u8 *outbuf, u32 requested_bits) { return 0; } -+static inline u32 lrng_jent_entropylevel(u32 requested_bits) { return 0; } -+static inline void lrng_jent_es_state(unsigned char *buf, size_t buflen) { } -+#endif /* CONFIG_LRNG_JENT */ -+ -+/************************** CPU-based Entropy Source **************************/ -+ -+static inline u32 lrng_fast_noise_entropylevel(u32 ent_bits, u32 requested_bits) -+{ -+ /* Obtain entropy statement */ -+ ent_bits = ent_bits * requested_bits / LRNG_DRNG_SECURITY_STRENGTH_BITS; -+ /* Cap entropy to buffer size in bits */ -+ ent_bits = min_t(u32, ent_bits, requested_bits); -+ return ent_bits; -+} -+ -+#ifdef CONFIG_LRNG_CPU -+u32 lrng_get_arch(u8 *outbuf, u32 requested_bits); -+u32 lrng_archrandom_entropylevel(u32 requested_bits); -+void lrng_arch_es_state(unsigned char *buf, size_t buflen); -+#else /* CONFIG_LRNG_CPU */ -+static inline u32 lrng_get_arch(u8 *outbuf, u32 requested_bits) { return 0; } -+static inline u32 lrng_archrandom_entropylevel(u32 requested_bits) { return 0; } -+static inline void lrng_arch_es_state(unsigned char *buf, size_t buflen) { } -+#endif /* CONFIG_LRNG_CPU */ -+ -+/************************** Interrupt Entropy Source **************************/ -+ -+#ifdef CONFIG_LRNG_IRQ -+void lrng_pcpu_reset(void); -+u32 lrng_pcpu_avail_pool_size(void); -+u32 lrng_pcpu_avail_entropy(void); -+int lrng_pcpu_switch_hash(int node, -+ const struct lrng_crypto_cb *new_cb, void *new_hash, -+ const struct lrng_crypto_cb *old_cb); -+u32 lrng_pcpu_pool_hash(u8 *outbuf, u32 requested_bits, bool fully_seeded); -+void lrng_pcpu_array_add_u32(u32 data); -+u32 lrng_gcd_analyze(u32 *history, size_t nelem); -+void lrng_irq_es_state(unsigned char *buf, size_t buflen); -+#else /* CONFIG_LRNG_IRQ */ -+static inline void lrng_pcpu_reset(void) { } -+static inline u32 lrng_pcpu_avail_pool_size(void) { return 0; } -+static inline u32 lrng_pcpu_avail_entropy(void) { return 0; } -+static inline int lrng_pcpu_switch_hash(int node, -+ const struct lrng_crypto_cb *new_cb, void *new_hash, -+ const struct lrng_crypto_cb *old_cb) -+{ -+ return 0; -+} -+static inline u32 lrng_pcpu_pool_hash(u8 *outbuf, u32 requested_bits, -+ bool fully_seeded) -+{ -+ return 0; -+} -+static inline void lrng_pcpu_array_add_u32(u32 data) { } -+static inline void lrng_irq_es_state(unsigned char *buf, size_t buflen) { } -+#endif /* CONFIG_LRNG_IRQ */ -+ -+/****************************** DRNG processing *******************************/ -+ -+/* DRNG state handle */ -+struct lrng_drng { -+ void *drng; /* DRNG handle */ -+ void *hash; /* Hash handle */ -+ const struct lrng_crypto_cb *crypto_cb; /* Crypto callbacks */ -+ atomic_t requests; /* Number of DRNG requests */ -+ atomic_t requests_since_fully_seeded; /* Number DRNG requests since -+ last fully seeded */ -+ unsigned long last_seeded; /* Last time it was seeded */ -+ bool fully_seeded; /* Is DRNG fully seeded? */ -+ bool force_reseed; /* Force a reseed */ -+ -+ /* Lock write operations on DRNG state, DRNG replacement of crypto_cb */ -+ struct mutex lock; -+ spinlock_t spin_lock; -+ /* Lock *hash replacement - always take before DRNG lock */ -+ rwlock_t hash_lock; -+}; -+ -+extern struct mutex lrng_crypto_cb_update; -+ -+struct lrng_drng *lrng_drng_init_instance(void); -+struct lrng_drng *lrng_drng_atomic_instance(void); -+ -+static __always_inline bool lrng_drng_is_atomic(struct lrng_drng *drng) -+{ -+ return (drng->drng == lrng_drng_atomic_instance()->drng); -+} -+ -+/* Lock the DRNG */ -+static __always_inline void lrng_drng_lock(struct lrng_drng *drng, -+ unsigned long *flags) -+ __acquires(&drng->spin_lock) -+{ -+ /* Use spin lock in case the atomic DRNG context is used */ -+ if (lrng_drng_is_atomic(drng)) { -+ spin_lock_irqsave(&drng->spin_lock, *flags); -+ -+ /* -+ * In case a lock transition happened while we were spinning, -+ * catch this case and use the new lock type. -+ */ -+ if (!lrng_drng_is_atomic(drng)) { -+ spin_unlock_irqrestore(&drng->spin_lock, *flags); -+ __acquire(&drng->spin_lock); -+ mutex_lock(&drng->lock); -+ } -+ } else { -+ __acquire(&drng->spin_lock); -+ mutex_lock(&drng->lock); -+ } -+} -+ -+/* Unlock the DRNG */ -+static __always_inline void lrng_drng_unlock(struct lrng_drng *drng, -+ unsigned long *flags) -+ __releases(&drng->spin_lock) -+{ -+ if (lrng_drng_is_atomic(drng)) { -+ spin_unlock_irqrestore(&drng->spin_lock, *flags); -+ } else { -+ mutex_unlock(&drng->lock); -+ __release(&drng->spin_lock); -+ } -+} -+ -+void lrng_reset(void); -+void lrng_drngs_init_cc20(bool force_seed); -+bool lrng_sp80090c_compliant(void); -+ -+static inline u32 lrng_compress_osr(void) -+{ -+ return lrng_sp80090c_compliant() ? CONFIG_LRNG_OVERSAMPLE_ES_BITS : 0; -+} -+ -+static inline u32 lrng_reduce_by_osr(u32 entropy_bits) -+{ -+ u32 osr_bits = lrng_compress_osr(); -+ return (entropy_bits >= osr_bits) ? (entropy_bits - osr_bits) : 0; -+} -+ -+bool lrng_get_available(void); -+void lrng_set_available(void); -+void lrng_drng_reset(struct lrng_drng *drng); -+int lrng_drng_get_atomic(u8 *outbuf, u32 outbuflen); -+int lrng_drng_get_sleep(u8 *outbuf, u32 outbuflen); -+void lrng_drng_force_reseed(void); -+void lrng_drng_seed_work(struct work_struct *dummy); -+ -+#ifdef CONFIG_NUMA -+struct lrng_drng **lrng_drng_instances(void); -+void lrng_drngs_numa_alloc(void); -+#else /* CONFIG_NUMA */ -+static inline struct lrng_drng **lrng_drng_instances(void) { return NULL; } -+static inline void lrng_drngs_numa_alloc(void) { return; } -+#endif /* CONFIG_NUMA */ -+ -+/************************* Entropy sources management *************************/ -+ -+enum lrng_external_noise_source { -+ lrng_noise_source_hw, -+ lrng_noise_source_user -+}; -+ -+void lrng_set_entropy_thresh(u32 new); -+u32 lrng_avail_entropy(void); -+void lrng_reset_state(void); -+ -+bool lrng_state_exseed_allow(enum lrng_external_noise_source source); -+void lrng_state_exseed_set(enum lrng_external_noise_source source, bool type); -+bool lrng_state_min_seeded(void); -+bool lrng_state_fully_seeded(void); -+bool lrng_state_operational(void); -+ -+int lrng_pool_trylock(void); -+void lrng_pool_unlock(void); -+void lrng_pool_all_numa_nodes_seeded(bool set); -+void lrng_pool_add_entropy(void); -+ -+struct entropy_buf { -+ u8 a[LRNG_DRNG_INIT_SEED_SIZE_BYTES]; -+ u8 b[LRNG_DRNG_INIT_SEED_SIZE_BYTES]; -+ u8 c[LRNG_DRNG_INIT_SEED_SIZE_BYTES]; -+ u8 d[LRNG_DRNG_INIT_SEED_SIZE_BYTES]; -+ u32 now, a_bits, b_bits, c_bits, d_bits; -+}; -+ -+bool lrng_fully_seeded(bool fully_seeded, struct entropy_buf *eb); -+void lrng_unset_fully_seeded(struct lrng_drng *drng); -+void lrng_fill_seed_buffer(struct entropy_buf *entropy_buf, u32 requested_bits); -+void lrng_init_ops(struct entropy_buf *eb); -+ -+/*********************** Auxiliary Pool Entropy Source ************************/ -+ -+u32 lrng_avail_aux_entropy(void); -+void lrng_aux_es_state(unsigned char *buf, size_t buflen); -+u32 lrng_get_digestsize(void); -+void lrng_pool_set_entropy(u32 entropy_bits); -+int lrng_aux_switch_hash(const struct lrng_crypto_cb *new_cb, void *new_hash, -+ const struct lrng_crypto_cb *old_cb); -+int lrng_pool_insert_aux(const u8 *inbuf, u32 inbuflen, u32 entropy_bits); -+void lrng_get_backtrack_aux(struct entropy_buf *entropy_buf, -+ u32 requested_bits); -+ -+/* Obtain the security strength of the LRNG in bits */ -+static inline u32 lrng_security_strength(void) -+{ -+ /* -+ * We use a hash to read the entropy in the entropy pool. According to -+ * SP800-90B table 1, the entropy can be at most the digest size. -+ * Considering this together with the last sentence in section 3.1.5.1.2 -+ * the security strength of a (approved) hash is equal to its output -+ * size. On the other hand the entropy cannot be larger than the -+ * security strength of the used DRBG. -+ */ -+ return min_t(u32, LRNG_FULL_SEED_ENTROPY_BITS, lrng_get_digestsize()); -+} -+ -+static inline u32 lrng_get_seed_entropy_osr(bool fully_seeded) -+{ -+ u32 requested_bits = lrng_security_strength(); -+ -+ /* Apply oversampling during initialization according to SP800-90C */ -+ if (lrng_sp80090c_compliant() && !fully_seeded) -+ requested_bits += CONFIG_LRNG_SEED_BUFFER_INIT_ADD_BITS; -+ return requested_bits; -+} -+ -+/************************** Health Test linking code **************************/ -+ -+enum lrng_health_res { -+ lrng_health_pass, /* Health test passes on time stamp */ -+ lrng_health_fail_use, /* Time stamp unhealthy, but mix in */ -+ lrng_health_fail_drop /* Time stamp unhealthy, drop it */ -+}; -+ -+#ifdef CONFIG_LRNG_HEALTH_TESTS -+bool lrng_sp80090b_startup_complete(void); -+bool lrng_sp80090b_compliant(void); -+ -+enum lrng_health_res lrng_health_test(u32 now_time); -+void lrng_health_disable(void); -+ -+#else /* CONFIG_LRNG_HEALTH_TESTS */ -+static inline bool lrng_sp80090b_startup_complete(void) { return true; } -+static inline bool lrng_sp80090b_compliant(void) { return false; } -+ -+static inline enum lrng_health_res -+lrng_health_test(u32 now_time) { return lrng_health_pass; } -+static inline void lrng_health_disable(void) { } -+#endif /* CONFIG_LRNG_HEALTH_TESTS */ -+ -+/****************************** Helper code ***********************************/ -+ -+static inline u32 atomic_read_u32(atomic_t *v) -+{ -+ return (u32)atomic_read(v); -+} -+ -+/******************** Crypto Primitive Switching Support **********************/ -+ -+#ifdef CONFIG_LRNG_DRNG_SWITCH -+static inline void lrng_hash_lock(struct lrng_drng *drng, unsigned long *flags) -+{ -+ read_lock_irqsave(&drng->hash_lock, *flags); -+} -+ -+static inline void lrng_hash_unlock(struct lrng_drng *drng, unsigned long flags) -+{ -+ read_unlock_irqrestore(&drng->hash_lock, flags); -+} -+#else /* CONFIG_LRNG_DRNG_SWITCH */ -+static inline void lrng_hash_lock(struct lrng_drng *drng, unsigned long *flags) -+{ } -+ -+static inline void lrng_hash_unlock(struct lrng_drng *drng, unsigned long flags) -+{ } -+#endif /* CONFIG_LRNG_DRNG_SWITCH */ -+ -+/*************************** Auxiliary functions ******************************/ -+ -+void invalidate_batched_entropy(void); -+ -+/***************************** Testing code ***********************************/ -+ -+#ifdef CONFIG_LRNG_RAW_HIRES_ENTROPY -+bool lrng_raw_hires_entropy_store(u32 value); -+#else /* CONFIG_LRNG_RAW_HIRES_ENTROPY */ -+static inline bool lrng_raw_hires_entropy_store(u32 value) { return false; } -+#endif /* CONFIG_LRNG_RAW_HIRES_ENTROPY */ -+ -+#ifdef CONFIG_LRNG_RAW_JIFFIES_ENTROPY -+bool lrng_raw_jiffies_entropy_store(u32 value); -+#else /* CONFIG_LRNG_RAW_JIFFIES_ENTROPY */ -+static inline bool lrng_raw_jiffies_entropy_store(u32 value) { return false; } -+#endif /* CONFIG_LRNG_RAW_JIFFIES_ENTROPY */ -+ -+#ifdef CONFIG_LRNG_RAW_IRQ_ENTROPY -+bool lrng_raw_irq_entropy_store(u32 value); -+#else /* CONFIG_LRNG_RAW_IRQ_ENTROPY */ -+static inline bool lrng_raw_irq_entropy_store(u32 value) { return false; } -+#endif /* CONFIG_LRNG_RAW_IRQ_ENTROPY */ -+ -+#ifdef CONFIG_LRNG_RAW_IRQFLAGS_ENTROPY -+bool lrng_raw_irqflags_entropy_store(u32 value); -+#else /* CONFIG_LRNG_RAW_IRQFLAGS_ENTROPY */ -+static inline bool lrng_raw_irqflags_entropy_store(u32 value) { return false; } -+#endif /* CONFIG_LRNG_RAW_IRQFLAGS_ENTROPY */ -+ -+#ifdef CONFIG_LRNG_RAW_RETIP_ENTROPY -+bool lrng_raw_retip_entropy_store(u32 value); -+#else /* CONFIG_LRNG_RAW_RETIP_ENTROPY */ -+static inline bool lrng_raw_retip_entropy_store(u32 value) { return false; } -+#endif /* CONFIG_LRNG_RAW_RETIP_ENTROPY */ -+ -+#ifdef CONFIG_LRNG_RAW_REGS_ENTROPY -+bool lrng_raw_regs_entropy_store(u32 value); -+#else /* CONFIG_LRNG_RAW_REGS_ENTROPY */ -+static inline bool lrng_raw_regs_entropy_store(u32 value) { return false; } -+#endif /* CONFIG_LRNG_RAW_REGS_ENTROPY */ -+ -+#ifdef CONFIG_LRNG_RAW_ARRAY -+bool lrng_raw_array_entropy_store(u32 value); -+#else /* CONFIG_LRNG_RAW_ARRAY */ -+static inline bool lrng_raw_array_entropy_store(u32 value) { return false; } -+#endif /* CONFIG_LRNG_RAW_ARRAY */ -+ -+#ifdef CONFIG_LRNG_IRQ_PERF -+bool lrng_perf_time(u32 start); -+#else /* CONFIG_LRNG_IRQ_PERF */ -+static inline bool lrng_perf_time(u32 start) { return false; } -+#endif /*CONFIG_LRNG_IRQ_PERF */ -+ -+#endif /* _LRNG_INTERNAL_H */ -diff -urN linux-5.15/drivers/char/lrng/lrng_kcapi.c linux-5.15-lrng/drivers/char/lrng/lrng_kcapi.c ---- linux-5.15/drivers/char/lrng/lrng_kcapi.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_kcapi.c 2021-11-29 12:37:45.153278971 +1100 -@@ -0,0 +1,227 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * Backend for the LRNG providing the cryptographic primitives using the -+ * kernel crypto API. -+ * -+ * Copyright (C) 2018 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <crypto/hash.h> -+#include <crypto/rng.h> -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/lrng.h> -+ -+#include "lrng_kcapi_hash.h" -+ -+static char *drng_name = NULL; -+module_param(drng_name, charp, 0444); -+MODULE_PARM_DESC(drng_name, "Kernel crypto API name of DRNG"); -+ -+static char *pool_hash = "sha512"; -+module_param(pool_hash, charp, 0444); -+MODULE_PARM_DESC(pool_hash, -+ "Kernel crypto API name of hash or keyed message digest to read the entropy pool"); -+ -+static char *seed_hash = NULL; -+module_param(seed_hash, charp, 0444); -+MODULE_PARM_DESC(seed_hash, -+ "Kernel crypto API name of hash with output size equal to seedsize of DRNG to bring seed string to the size required by the DRNG"); -+ -+struct lrng_drng_info { -+ struct crypto_rng *kcapi_rng; -+ void *lrng_hash; -+}; -+ -+static void *lrng_kcapi_drng_hash_alloc(void) -+{ -+ return lrng_kcapi_hash_alloc(pool_hash); -+} -+ -+static int lrng_kcapi_drng_seed_helper(void *drng, const u8 *inbuf, -+ u32 inbuflen) -+{ -+ SHASH_DESC_ON_STACK(shash, NULL); -+ struct lrng_drng_info *lrng_drng_info = (struct lrng_drng_info *)drng; -+ struct crypto_rng *kcapi_rng = lrng_drng_info->kcapi_rng; -+ void *hash = lrng_drng_info->lrng_hash; -+ u32 digestsize = lrng_kcapi_hash_digestsize(hash); -+ u8 digest[64] __aligned(8); -+ int ret; -+ -+ if (!hash) -+ return crypto_rng_reset(kcapi_rng, inbuf, inbuflen); -+ -+ BUG_ON(digestsize > sizeof(digest)); -+ -+ ret = lrng_kcapi_hash_init(shash, hash) ?: -+ lrng_kcapi_hash_update(shash, inbuf, inbuflen) ?: -+ lrng_kcapi_hash_final(shash, digest); -+ lrng_kcapi_hash_zero(shash); -+ if (ret) -+ return ret; -+ -+ ret = crypto_rng_reset(kcapi_rng, digest, digestsize); -+ if (ret) -+ return ret; -+ -+ memzero_explicit(digest, digestsize); -+ return 0; -+} -+ -+static int lrng_kcapi_drng_generate_helper(void *drng, u8 *outbuf, -+ u32 outbuflen) -+{ -+ struct lrng_drng_info *lrng_drng_info = (struct lrng_drng_info *)drng; -+ struct crypto_rng *kcapi_rng = lrng_drng_info->kcapi_rng; -+ int ret = crypto_rng_get_bytes(kcapi_rng, outbuf, outbuflen); -+ -+ if (ret < 0) -+ return ret; -+ -+ return outbuflen; -+} -+ -+static void *lrng_kcapi_drng_alloc(u32 sec_strength) -+{ -+ struct lrng_drng_info *lrng_drng_info; -+ struct crypto_rng *kcapi_rng; -+ int seedsize; -+ void *ret = ERR_PTR(-ENOMEM); -+ -+ if (!drng_name) { -+ pr_err("DRNG name missing\n"); -+ return ERR_PTR(-EINVAL); -+ } -+ -+ if (!memcmp(drng_name, "drbg", 4) || -+ !memcmp(drng_name, "stdrng", 6) || -+ !memcmp(drng_name, "jitterentropy_rng", 17)) { -+ pr_err("Refusing to load the requested random number generator\n"); -+ return ERR_PTR(-EINVAL); -+ } -+ -+ lrng_drng_info = kmalloc(sizeof(*lrng_drng_info), GFP_KERNEL); -+ if (!lrng_drng_info) -+ return ERR_PTR(-ENOMEM); -+ -+ kcapi_rng = crypto_alloc_rng(drng_name, 0, 0); -+ if (IS_ERR(kcapi_rng)) { -+ pr_err("DRNG %s cannot be allocated\n", drng_name); -+ ret = ERR_CAST(kcapi_rng); -+ goto free; -+ } -+ lrng_drng_info->kcapi_rng = kcapi_rng; -+ -+ seedsize = crypto_rng_seedsize(kcapi_rng); -+ -+ if (sec_strength > seedsize) -+ pr_info("Seedsize DRNG (%u bits) lower than security strength of LRNG noise source (%u bits)\n", -+ crypto_rng_seedsize(kcapi_rng) * 8, sec_strength * 8); -+ -+ if (seedsize) { -+ void *lrng_hash; -+ -+ if (!seed_hash) { -+ switch (seedsize) { -+ case 32: -+ seed_hash = "sha256"; -+ break; -+ case 48: -+ seed_hash = "sha384"; -+ break; -+ case 64: -+ seed_hash = "sha512"; -+ break; -+ default: -+ pr_err("Seed size %d cannot be processed\n", -+ seedsize); -+ goto dealloc; -+ } -+ } -+ -+ lrng_hash = lrng_kcapi_hash_alloc(seed_hash); -+ if (IS_ERR(lrng_hash)) { -+ ret = ERR_CAST(lrng_hash); -+ goto dealloc; -+ } -+ -+ if (seedsize != lrng_kcapi_hash_digestsize(lrng_hash)) { -+ pr_err("Seed hash output size not equal to DRNG seed size\n"); -+ lrng_kcapi_hash_dealloc(lrng_hash); -+ ret = ERR_PTR(-EINVAL); -+ goto dealloc; -+ } -+ -+ lrng_drng_info->lrng_hash = lrng_hash; -+ -+ pr_info("Seed hash %s allocated\n", seed_hash); -+ } else { -+ lrng_drng_info->lrng_hash = NULL; -+ } -+ -+ pr_info("Kernel crypto API DRNG %s allocated\n", drng_name); -+ -+ return lrng_drng_info; -+ -+dealloc: -+ crypto_free_rng(kcapi_rng); -+free: -+ kfree(lrng_drng_info); -+ return ret; -+} -+ -+static void lrng_kcapi_drng_dealloc(void *drng) -+{ -+ struct lrng_drng_info *lrng_drng_info = (struct lrng_drng_info *)drng; -+ struct crypto_rng *kcapi_rng = lrng_drng_info->kcapi_rng; -+ -+ crypto_free_rng(kcapi_rng); -+ if (lrng_drng_info->lrng_hash) -+ lrng_kcapi_hash_dealloc(lrng_drng_info->lrng_hash); -+ kfree(lrng_drng_info); -+ pr_info("DRNG %s deallocated\n", drng_name); -+} -+ -+static const char *lrng_kcapi_drng_name(void) -+{ -+ return drng_name; -+} -+ -+static const char *lrng_kcapi_pool_hash(void) -+{ -+ return pool_hash; -+} -+ -+static const struct lrng_crypto_cb lrng_kcapi_crypto_cb = { -+ .lrng_drng_name = lrng_kcapi_drng_name, -+ .lrng_hash_name = lrng_kcapi_pool_hash, -+ .lrng_drng_alloc = lrng_kcapi_drng_alloc, -+ .lrng_drng_dealloc = lrng_kcapi_drng_dealloc, -+ .lrng_drng_seed_helper = lrng_kcapi_drng_seed_helper, -+ .lrng_drng_generate_helper = lrng_kcapi_drng_generate_helper, -+ .lrng_hash_alloc = lrng_kcapi_drng_hash_alloc, -+ .lrng_hash_dealloc = lrng_kcapi_hash_dealloc, -+ .lrng_hash_digestsize = lrng_kcapi_hash_digestsize, -+ .lrng_hash_init = lrng_kcapi_hash_init, -+ .lrng_hash_update = lrng_kcapi_hash_update, -+ .lrng_hash_final = lrng_kcapi_hash_final, -+ .lrng_hash_desc_zero = lrng_kcapi_hash_zero, -+}; -+ -+static int __init lrng_kcapi_init(void) -+{ -+ return lrng_set_drng_cb(&lrng_kcapi_crypto_cb); -+} -+static void __exit lrng_kcapi_exit(void) -+{ -+ lrng_set_drng_cb(NULL); -+} -+ -+late_initcall(lrng_kcapi_init); -+module_exit(lrng_kcapi_exit); -+MODULE_LICENSE("Dual BSD/GPL"); -+MODULE_AUTHOR("Stephan Mueller <smueller@chronox.de>"); -+MODULE_DESCRIPTION("Linux Random Number Generator - kernel crypto API DRNG backend"); -diff -urN linux-5.15/drivers/char/lrng/lrng_kcapi_hash.c linux-5.15-lrng/drivers/char/lrng/lrng_kcapi_hash.c ---- linux-5.15/drivers/char/lrng/lrng_kcapi_hash.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_kcapi_hash.c 2021-11-29 12:37:24.863279049 +1100 -@@ -0,0 +1,103 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * Backend for providing the hash primitive using the kernel crypto API. -+ * -+ * Copyright (C) 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <crypto/hash.h> -+ -+#include "lrng_kcapi_hash.h" -+ -+struct lrng_hash_info { -+ struct crypto_shash *tfm; -+}; -+ -+static inline void _lrng_kcapi_hash_free(struct lrng_hash_info *lrng_hash) -+{ -+ struct crypto_shash *tfm = lrng_hash->tfm; -+ -+ crypto_free_shash(tfm); -+ kfree(lrng_hash); -+} -+ -+void *lrng_kcapi_hash_alloc(const char *name) -+{ -+ struct lrng_hash_info *lrng_hash; -+ struct crypto_shash *tfm; -+ int ret; -+ -+ if (!name) { -+ pr_err("Hash name missing\n"); -+ return ERR_PTR(-EINVAL); -+ } -+ -+ tfm = crypto_alloc_shash(name, 0, 0); -+ if (IS_ERR(tfm)) { -+ pr_err("could not allocate hash %s\n", name); -+ return ERR_CAST(tfm); -+ } -+ -+ ret = sizeof(struct lrng_hash_info); -+ lrng_hash = kmalloc(ret, GFP_KERNEL); -+ if (!lrng_hash) { -+ crypto_free_shash(tfm); -+ return ERR_PTR(-ENOMEM); -+ } -+ -+ lrng_hash->tfm = tfm; -+ -+ pr_info("Hash %s allocated\n", name); -+ -+ return lrng_hash; -+} -+EXPORT_SYMBOL(lrng_kcapi_hash_alloc); -+ -+u32 lrng_kcapi_hash_digestsize(void *hash) -+{ -+ struct lrng_hash_info *lrng_hash = (struct lrng_hash_info *)hash; -+ struct crypto_shash *tfm = lrng_hash->tfm; -+ -+ return crypto_shash_digestsize(tfm); -+} -+EXPORT_SYMBOL(lrng_kcapi_hash_digestsize); -+ -+void lrng_kcapi_hash_dealloc(void *hash) -+{ -+ struct lrng_hash_info *lrng_hash = (struct lrng_hash_info *)hash; -+ -+ _lrng_kcapi_hash_free(lrng_hash); -+ pr_info("Hash deallocated\n"); -+} -+EXPORT_SYMBOL(lrng_kcapi_hash_dealloc); -+ -+int lrng_kcapi_hash_init(struct shash_desc *shash, void *hash) -+{ -+ struct lrng_hash_info *lrng_hash = (struct lrng_hash_info *)hash; -+ struct crypto_shash *tfm = lrng_hash->tfm; -+ -+ shash->tfm = tfm; -+ return crypto_shash_init(shash); -+} -+EXPORT_SYMBOL(lrng_kcapi_hash_init); -+ -+int lrng_kcapi_hash_update(struct shash_desc *shash, const u8 *inbuf, -+ u32 inbuflen) -+{ -+ return crypto_shash_update(shash, inbuf, inbuflen); -+} -+EXPORT_SYMBOL(lrng_kcapi_hash_update); -+ -+int lrng_kcapi_hash_final(struct shash_desc *shash, u8 *digest) -+{ -+ return crypto_shash_final(shash, digest); -+} -+EXPORT_SYMBOL(lrng_kcapi_hash_final); -+ -+void lrng_kcapi_hash_zero(struct shash_desc *shash) -+{ -+ shash_desc_zero(shash); -+} -+EXPORT_SYMBOL(lrng_kcapi_hash_zero); -diff -urN linux-5.15/drivers/char/lrng/lrng_kcapi_hash.h linux-5.15-lrng/drivers/char/lrng/lrng_kcapi_hash.h ---- linux-5.15/drivers/char/lrng/lrng_kcapi_hash.h 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_kcapi_hash.h 2021-11-29 12:37:24.863279049 +1100 -@@ -0,0 +1,20 @@ -+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */ -+/* -+ * Copyright (C) 2020 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#ifndef _LRNG_KCAPI_HASH_H -+#define _LRNG_KCAPI_HASH_H -+ -+#include <linux/module.h> -+ -+void *lrng_kcapi_hash_alloc(const char *name); -+u32 lrng_kcapi_hash_digestsize(void *hash); -+void lrng_kcapi_hash_dealloc(void *hash); -+int lrng_kcapi_hash_init(struct shash_desc *shash, void *hash); -+int lrng_kcapi_hash_update(struct shash_desc *shash, const u8 *inbuf, -+ u32 inbuflen); -+int lrng_kcapi_hash_final(struct shash_desc *shash, u8 *digest); -+void lrng_kcapi_hash_zero(struct shash_desc *shash); -+ -+#endif /* _LRNG_KCAPI_HASH_H */ -diff -urN linux-5.15/drivers/char/lrng/lrng_numa.c linux-5.15-lrng/drivers/char/lrng/lrng_numa.c ---- linux-5.15/drivers/char/lrng/lrng_numa.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_numa.c 2021-11-29 12:37:08.753279110 +1100 -@@ -0,0 +1,122 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG NUMA support -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/lrng.h> -+#include <linux/slab.h> -+ -+#include "lrng_internal.h" -+ -+static struct lrng_drng **lrng_drng __read_mostly = NULL; -+ -+struct lrng_drng **lrng_drng_instances(void) -+{ -+ return smp_load_acquire(&lrng_drng); -+} -+ -+/* Allocate the data structures for the per-NUMA node DRNGs */ -+static void _lrng_drngs_numa_alloc(struct work_struct *work) -+{ -+ struct lrng_drng **drngs; -+ struct lrng_drng *lrng_drng_init = lrng_drng_init_instance(); -+ u32 node; -+ bool init_drng_used = false; -+ -+ mutex_lock(&lrng_crypto_cb_update); -+ -+ /* per-NUMA-node DRNGs are already present */ -+ if (lrng_drng) -+ goto unlock; -+ -+ drngs = kcalloc(nr_node_ids, sizeof(void *), GFP_KERNEL|__GFP_NOFAIL); -+ for_each_online_node(node) { -+ struct lrng_drng *drng; -+ -+ if (!init_drng_used) { -+ drngs[node] = lrng_drng_init; -+ init_drng_used = true; -+ continue; -+ } -+ -+ drng = kmalloc_node(sizeof(struct lrng_drng), -+ GFP_KERNEL|__GFP_NOFAIL, node); -+ memset(drng, 0, sizeof(lrng_drng)); -+ -+ drng->crypto_cb = lrng_drng_init->crypto_cb; -+ drng->drng = drng->crypto_cb->lrng_drng_alloc( -+ LRNG_DRNG_SECURITY_STRENGTH_BYTES); -+ if (IS_ERR(drng->drng)) { -+ kfree(drng); -+ goto err; -+ } -+ -+ drng->hash = drng->crypto_cb->lrng_hash_alloc(); -+ if (IS_ERR(drng->hash)) { -+ drng->crypto_cb->lrng_drng_dealloc(drng->drng); -+ kfree(drng); -+ goto err; -+ } -+ -+ mutex_init(&drng->lock); -+ spin_lock_init(&drng->spin_lock); -+ rwlock_init(&drng->hash_lock); -+ -+ /* -+ * Switch the hash used by the per-CPU pool. -+ * We do not need to lock the new hash as it is not usable yet -+ * due to **drngs not yet being initialized. -+ */ -+ if (lrng_pcpu_switch_hash(node, drng->crypto_cb, drng->hash, -+ &lrng_cc20_crypto_cb)) -+ goto err; -+ -+ /* -+ * No reseeding of NUMA DRNGs from previous DRNGs as this -+ * would complicate the code. Let it simply reseed. -+ */ -+ lrng_drng_reset(drng); -+ drngs[node] = drng; -+ -+ lrng_pool_inc_numa_node(); -+ pr_info("DRNG and entropy pool read hash for NUMA node %d allocated\n", -+ node); -+ } -+ -+ /* counterpart to smp_load_acquire in lrng_drng_instances */ -+ if (!cmpxchg_release(&lrng_drng, NULL, drngs)) { -+ lrng_pool_all_numa_nodes_seeded(false); -+ goto unlock; -+ } -+ -+err: -+ for_each_online_node(node) { -+ struct lrng_drng *drng = drngs[node]; -+ -+ if (drng == lrng_drng_init) -+ continue; -+ -+ if (drng) { -+ lrng_pcpu_switch_hash(node, &lrng_cc20_crypto_cb, NULL, -+ drng->crypto_cb); -+ drng->crypto_cb->lrng_hash_dealloc(drng->hash); -+ drng->crypto_cb->lrng_drng_dealloc(drng->drng); -+ kfree(drng); -+ } -+ } -+ kfree(drngs); -+ -+unlock: -+ mutex_unlock(&lrng_crypto_cb_update); -+} -+ -+static DECLARE_WORK(lrng_drngs_numa_alloc_work, _lrng_drngs_numa_alloc); -+ -+void lrng_drngs_numa_alloc(void) -+{ -+ schedule_work(&lrng_drngs_numa_alloc_work); -+} -diff -urN linux-5.15/drivers/char/lrng/lrng_proc.c linux-5.15-lrng/drivers/char/lrng/lrng_proc.c ---- linux-5.15/drivers/char/lrng/lrng_proc.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_proc.c 2021-11-29 12:37:03.083279132 +1100 -@@ -0,0 +1,199 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG proc and sysctl interfaces -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#include <linux/lrng.h> -+#include <linux/proc_fs.h> -+#include <linux/seq_file.h> -+#include <linux/sysctl.h> -+#include <linux/uuid.h> -+ -+#include "lrng_internal.h" -+ -+/* -+ * This function is used to return both the bootid UUID, and random -+ * UUID. The difference is in whether table->data is NULL; if it is, -+ * then a new UUID is generated and returned to the user. -+ * -+ * If the user accesses this via the proc interface, the UUID will be -+ * returned as an ASCII string in the standard UUID format; if via the -+ * sysctl system call, as 16 bytes of binary data. -+ */ -+static int lrng_proc_do_uuid(struct ctl_table *table, int write, -+ void *buffer, size_t *lenp, loff_t *ppos) -+{ -+ struct ctl_table fake_table; -+ unsigned char buf[64], tmp_uuid[16], *uuid; -+ -+ uuid = table->data; -+ if (!uuid) { -+ uuid = tmp_uuid; -+ generate_random_uuid(uuid); -+ } else { -+ static DEFINE_SPINLOCK(bootid_spinlock); -+ -+ spin_lock(&bootid_spinlock); -+ if (!uuid[8]) -+ generate_random_uuid(uuid); -+ spin_unlock(&bootid_spinlock); -+ } -+ -+ sprintf(buf, "%pU", uuid); -+ -+ fake_table.data = buf; -+ fake_table.maxlen = sizeof(buf); -+ -+ return proc_dostring(&fake_table, write, buffer, lenp, ppos); -+} -+ -+static int lrng_proc_do_entropy(struct ctl_table *table, int write, -+ void *buffer, size_t *lenp, loff_t *ppos) -+{ -+ struct ctl_table fake_table; -+ int entropy_count; -+ -+ entropy_count = lrng_avail_entropy(); -+ -+ fake_table.data = &entropy_count; -+ fake_table.maxlen = sizeof(entropy_count); -+ -+ return proc_dointvec(&fake_table, write, buffer, lenp, ppos); -+} -+ -+static int lrng_proc_do_poolsize(struct ctl_table *table, int write, -+ void *buffer, size_t *lenp, loff_t *ppos) -+{ -+ struct ctl_table fake_table; -+ int entropy_count; -+ -+ /* LRNG can at most retain entropy in per-CPU pools and aux pool */ -+ entropy_count = lrng_get_digestsize() + lrng_pcpu_avail_pool_size(); -+ -+ fake_table.data = &entropy_count; -+ fake_table.maxlen = sizeof(entropy_count); -+ -+ return proc_dointvec(&fake_table, write, buffer, lenp, ppos); -+} -+ -+static int lrng_min_write_thresh; -+static int lrng_max_write_thresh = (LRNG_WRITE_WAKEUP_ENTROPY << 3); -+static char lrng_sysctl_bootid[16]; -+static int lrng_drng_reseed_max_min; -+ -+void lrng_proc_update_max_write_thresh(u32 new_digestsize) -+{ -+ lrng_max_write_thresh = (int)new_digestsize; -+ mb(); -+} -+ -+struct ctl_table random_table[] = { -+ { -+ .procname = "poolsize", -+ .maxlen = sizeof(int), -+ .mode = 0444, -+ .proc_handler = lrng_proc_do_poolsize, -+ }, -+ { -+ .procname = "entropy_avail", -+ .maxlen = sizeof(int), -+ .mode = 0444, -+ .proc_handler = lrng_proc_do_entropy, -+ }, -+ { -+ .procname = "write_wakeup_threshold", -+ .data = &lrng_write_wakeup_bits, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = proc_dointvec_minmax, -+ .extra1 = &lrng_min_write_thresh, -+ .extra2 = &lrng_max_write_thresh, -+ }, -+ { -+ .procname = "boot_id", -+ .data = &lrng_sysctl_bootid, -+ .maxlen = 16, -+ .mode = 0444, -+ .proc_handler = lrng_proc_do_uuid, -+ }, -+ { -+ .procname = "uuid", -+ .maxlen = 16, -+ .mode = 0444, -+ .proc_handler = lrng_proc_do_uuid, -+ }, -+ { -+ .procname = "urandom_min_reseed_secs", -+ .data = &lrng_drng_reseed_max_time, -+ .maxlen = sizeof(int), -+ .mode = 0644, -+ .proc_handler = proc_dointvec, -+ .extra1 = &lrng_drng_reseed_max_min, -+ }, -+ { } -+}; -+ -+/* Number of online DRNGs */ -+static u32 numa_drngs = 1; -+ -+void lrng_pool_inc_numa_node(void) -+{ -+ numa_drngs++; -+} -+ -+static int lrng_proc_type_show(struct seq_file *m, void *v) -+{ -+ struct lrng_drng *lrng_drng_init = lrng_drng_init_instance(); -+ unsigned long flags = 0; -+ unsigned char buf[250], irq[200], aux[100], cpu[90], jent[45]; -+ -+ lrng_drng_lock(lrng_drng_init, &flags); -+ snprintf(buf, sizeof(buf), -+ "DRNG name: %s\n" -+ "LRNG security strength in bits: %d\n" -+ "number of DRNG instances: %u\n" -+ "Standards compliance: %s\n" -+ "Entropy Sources: %s%s%sAuxiliary\n" -+ "LRNG minimally seeded: %s\n" -+ "LRNG fully seeded: %s\n", -+ lrng_drng_init->crypto_cb->lrng_drng_name(), -+ lrng_security_strength(), -+ numa_drngs, -+ lrng_sp80090c_compliant() ? "SP800-90C " : "", -+ IS_ENABLED(CONFIG_LRNG_IRQ) ? "IRQ " : "", -+ IS_ENABLED(CONFIG_LRNG_JENT) ? "JitterRNG " : "", -+ IS_ENABLED(CONFIG_LRNG_CPU) ? "CPU " : "", -+ lrng_state_min_seeded() ? "true" : "false", -+ lrng_state_fully_seeded() ? "true" : "false"); -+ -+ lrng_aux_es_state(aux, sizeof(aux)); -+ -+ irq[0] = '\0'; -+ lrng_irq_es_state(irq, sizeof(irq)); -+ -+ jent[0] = '\0'; -+ lrng_jent_es_state(jent, sizeof(jent)); -+ -+ cpu[0] = '\0'; -+ lrng_arch_es_state(cpu, sizeof(cpu)); -+ -+ lrng_drng_unlock(lrng_drng_init, &flags); -+ -+ seq_write(m, buf, strlen(buf)); -+ seq_write(m, aux, strlen(aux)); -+ seq_write(m, irq, strlen(irq)); -+ seq_write(m, jent, strlen(jent)); -+ seq_write(m, cpu, strlen(cpu)); -+ -+ return 0; -+} -+ -+static int __init lrng_proc_type_init(void) -+{ -+ proc_create_single("lrng_type", 0444, NULL, &lrng_proc_type_show); -+ return 0; -+} -+ -+module_init(lrng_proc_type_init); -diff -urN linux-5.15/drivers/char/lrng/lrng_selftest.c linux-5.15-lrng/drivers/char/lrng/lrng_selftest.c ---- linux-5.15/drivers/char/lrng/lrng_selftest.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_selftest.c 2021-11-29 12:38:26.603278813 +1100 -@@ -0,0 +1,386 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG power-on and on-demand self-test -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+/* -+ * In addition to the self-tests below, the following LRNG components -+ * are covered with self-tests during regular operation: -+ * -+ * * power-on self-test: SP800-90A DRBG provided by the Linux kernel crypto API -+ * * power-on self-test: PRNG provided by the Linux kernel crypto API -+ * * runtime test: Raw noise source data testing including SP800-90B compliant -+ * tests when enabling CONFIG_LRNG_HEALTH_TESTS -+ * -+ * Additional developer tests present with LRNG code: -+ * * SP800-90B APT and RCT test enforcement validation when enabling -+ * CONFIG_LRNG_APT_BROKEN or CONFIG_LRNG_RCT_BROKEN. -+ * * Collection of raw entropy from the interrupt noise source when enabling -+ * CONFIG_LRNG_TESTING and pulling the data from the kernel with the provided -+ * interface. -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/module.h> -+#include <linux/lrng.h> -+#include <linux/slab.h> -+ -+#include "lrng_chacha20.h" -+#include "lrng_internal.h" -+ -+#define LRNG_SELFTEST_PASSED 0 -+#define LRNG_SEFLTEST_ERROR_TIME (1 << 0) -+#define LRNG_SEFLTEST_ERROR_CHACHA20 (1 << 1) -+#define LRNG_SEFLTEST_ERROR_HASH (1 << 2) -+#define LRNG_SEFLTEST_ERROR_GCD (1 << 3) -+#define LRNG_SELFTEST_NOT_EXECUTED 0xffffffff -+ -+#ifdef CONFIG_LRNG_IRQ -+ -+#include "lrng_es_irq.h" -+ -+static u32 lrng_data_selftest_ptr = 0; -+static u32 lrng_data_selftest[LRNG_DATA_ARRAY_SIZE]; -+ -+static inline void lrng_data_process_selftest_insert(u32 time) -+{ -+ u32 ptr = lrng_data_selftest_ptr++ & LRNG_DATA_WORD_MASK; -+ unsigned int array = lrng_data_idx2array(ptr); -+ unsigned int slot = lrng_data_idx2slot(ptr); -+ -+ /* zeroization of slot to ensure the following OR adds the data */ -+ lrng_data_selftest[array] &= -+ ~(lrng_data_slot_val(0xffffffff & LRNG_DATA_SLOTSIZE_MASK, -+ slot)); -+ lrng_data_selftest[array] |= -+ lrng_data_slot_val(time & LRNG_DATA_SLOTSIZE_MASK, slot); -+} -+ -+static inline void lrng_data_process_selftest_u32(u32 data) -+{ -+ u32 pre_ptr, ptr, mask; -+ unsigned int pre_array; -+ -+ /* Increment pointer by number of slots taken for input value */ -+ lrng_data_selftest_ptr += LRNG_DATA_SLOTS_PER_UINT; -+ -+ /* ptr to current unit */ -+ ptr = lrng_data_selftest_ptr; -+ -+ lrng_pcpu_split_u32(&ptr, &pre_ptr, &mask); -+ -+ /* MSB of data go into previous unit */ -+ pre_array = lrng_data_idx2array(pre_ptr); -+ /* zeroization of slot to ensure the following OR adds the data */ -+ lrng_data_selftest[pre_array] &= ~(0xffffffff & ~mask); -+ lrng_data_selftest[pre_array] |= data & ~mask; -+ -+ /* LSB of data go into current unit */ -+ lrng_data_selftest[lrng_data_idx2array(ptr)] = data & mask; -+} -+ -+static unsigned int lrng_data_process_selftest(void) -+{ -+ u32 time; -+ u32 idx_zero_compare = (0 << 0) | (1 << 8) | (2 << 16) | (3 << 24); -+ u32 idx_one_compare = (4 << 0) | (5 << 8) | (6 << 16) | (7 << 24); -+ u32 idx_last_compare = -+ (((LRNG_DATA_NUM_VALUES - 4) & LRNG_DATA_SLOTSIZE_MASK) << 0) | -+ (((LRNG_DATA_NUM_VALUES - 3) & LRNG_DATA_SLOTSIZE_MASK) << 8) | -+ (((LRNG_DATA_NUM_VALUES - 2) & LRNG_DATA_SLOTSIZE_MASK) << 16) | -+ (((LRNG_DATA_NUM_VALUES - 1) & LRNG_DATA_SLOTSIZE_MASK) << 24); -+ -+ (void)idx_one_compare; -+ -+ /* "poison" the array to verify the operation of the zeroization */ -+ lrng_data_selftest[0] = 0xffffffff; -+ lrng_data_selftest[1] = 0xffffffff; -+ -+ lrng_data_process_selftest_insert(0); -+ /* -+ * Note, when using lrng_data_process_u32() on unaligned ptr, -+ * the first slots will go into next word, and the last slots go -+ * into the previous word. -+ */ -+ lrng_data_process_selftest_u32((4 << 0) | (1 << 8) | (2 << 16) | -+ (3 << 24)); -+ lrng_data_process_selftest_insert(5); -+ lrng_data_process_selftest_insert(6); -+ lrng_data_process_selftest_insert(7); -+ -+ if ((lrng_data_selftest[0] != idx_zero_compare) || -+ (lrng_data_selftest[1] != idx_one_compare)) -+ goto err; -+ -+ /* Reset for next test */ -+ lrng_data_selftest[0] = 0; -+ lrng_data_selftest[1] = 0; -+ lrng_data_selftest_ptr = 0; -+ -+ for (time = 0; time < LRNG_DATA_NUM_VALUES; time++) -+ lrng_data_process_selftest_insert(time); -+ -+ if ((lrng_data_selftest[0] != idx_zero_compare) || -+ (lrng_data_selftest[1] != idx_one_compare) || -+ (lrng_data_selftest[LRNG_DATA_ARRAY_SIZE - 1] != idx_last_compare)) -+ goto err; -+ -+ return LRNG_SELFTEST_PASSED; -+ -+err: -+ pr_err("LRNG data array self-test FAILED\n"); -+ return LRNG_SEFLTEST_ERROR_TIME; -+} -+ -+static unsigned int lrng_gcd_selftest(void) -+{ -+ u32 history[10]; -+ unsigned int i; -+ -+#define LRNG_GCD_SELFTEST 3 -+ for (i = 0; i < ARRAY_SIZE(history); i++) -+ history[i] = i * LRNG_GCD_SELFTEST; -+ -+ if (lrng_gcd_analyze(history, ARRAY_SIZE(history)) == LRNG_GCD_SELFTEST) -+ return LRNG_SELFTEST_PASSED; -+ -+ pr_err("LRNG GCD self-test FAILED\n"); -+ return LRNG_SEFLTEST_ERROR_GCD; -+} -+ -+#else /* CONFIG_LRNG_IRQ */ -+ -+static unsigned int lrng_data_process_selftest(void) -+{ -+ return LRNG_SELFTEST_PASSED; -+} -+ -+static unsigned int lrng_gcd_selftest(void) -+{ -+ return LRNG_SELFTEST_PASSED; -+} -+ -+#endif /* CONFIG_LRNG_IRQ */ -+ -+static inline void lrng_selftest_bswap32(u32 *ptr, u32 words) -+{ -+ u32 i; -+ -+ /* Byte-swap data which is an LE representation */ -+ for (i = 0; i < words; i++) { -+ __le32 *p = (__le32 *)ptr; -+ -+ *p = cpu_to_le32(*ptr); -+ ptr++; -+ } -+} -+ -+/* The test vectors are taken from crypto/testmgr.h */ -+static unsigned int lrng_hash_selftest(void) -+{ -+ SHASH_DESC_ON_STACK(shash, NULL); -+ const struct lrng_crypto_cb *crypto_cb = &lrng_cc20_crypto_cb; -+ static const u8 lrng_hash_selftest_result[] = -+#ifdef CONFIG_CRYPTO_LIB_SHA256 -+ { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, -+ 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, -+ 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, -+ 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad }; -+#else /* CONFIG_CRYPTO_LIB_SHA256 */ -+ { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e, -+ 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, 0x9c, 0xd0, 0xd8, 0x9d }; -+#endif /* CONFIG_CRYPTO_LIB_SHA256 */ -+ static const u8 hash_input[] = { 0x61, 0x62, 0x63 }; /* "abc" */ -+ u8 digest[sizeof(lrng_hash_selftest_result)] __aligned(sizeof(u32)); -+ -+ BUG_ON(sizeof(digest) != crypto_cb->lrng_hash_digestsize(NULL)); -+ -+ if (!crypto_cb->lrng_hash_init(shash, NULL) && -+ !crypto_cb->lrng_hash_update(shash, hash_input, -+ sizeof(hash_input)) && -+ !crypto_cb->lrng_hash_final(shash, digest) && -+ !memcmp(digest, lrng_hash_selftest_result, sizeof(digest))) -+ return 0; -+ -+ pr_err("LRNG %s Hash self-test FAILED\n", crypto_cb->lrng_hash_name()); -+ return LRNG_SEFLTEST_ERROR_HASH; -+} -+ -+/* -+ * The test vectors were generated using the ChaCha20 DRNG from -+ * https://www.chronox.de/chacha20.html -+ */ -+static unsigned int lrng_chacha20_drng_selftest(void) -+{ -+ const struct lrng_crypto_cb *crypto_cb = &lrng_cc20_crypto_cb; -+ u8 seed[CHACHA_KEY_SIZE * 2] = { -+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, -+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, -+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, -+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, -+ 0x20, 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, -+ }; -+ struct chacha20_block chacha20; -+ int ret; -+ u8 outbuf[CHACHA_KEY_SIZE * 2] __aligned(sizeof(u32)); -+ -+ /* -+ * Expected result when ChaCha20 DRNG state is zero: -+ * * constants are set to "expand 32-byte k" -+ * * remaining state is 0 -+ * and pulling one half ChaCha20 DRNG block. -+ */ -+ static const u8 expected_halfblock[CHACHA_KEY_SIZE] = { -+ 0x76, 0xb8, 0xe0, 0xad, 0xa0, 0xf1, 0x3d, 0x90, -+ 0x40, 0x5d, 0x6a, 0xe5, 0x53, 0x86, 0xbd, 0x28, -+ 0xbd, 0xd2, 0x19, 0xb8, 0xa0, 0x8d, 0xed, 0x1a, -+ 0xa8, 0x36, 0xef, 0xcc, 0x8b, 0x77, 0x0d, 0xc7 }; -+ -+ /* -+ * Expected result when ChaCha20 DRNG state is zero: -+ * * constants are set to "expand 32-byte k" -+ * * remaining state is 0 -+ * followed by a reseed with two keyblocks -+ * 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, -+ * 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, -+ * 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, -+ * 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, -+ * 0x20, 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 -+ * and pulling one ChaCha20 DRNG block. -+ */ -+ static const u8 expected_oneblock[CHACHA_KEY_SIZE * 2] = { -+ 0xe3, 0xb0, 0x8a, 0xcc, 0x34, 0xc3, 0x17, 0x0e, -+ 0xc3, 0xd8, 0xc3, 0x40, 0xe7, 0x73, 0xe9, 0x0d, -+ 0xd1, 0x62, 0xa3, 0x5d, 0x7d, 0xf2, 0xf1, 0x4a, -+ 0x24, 0x42, 0xb7, 0x1e, 0xb0, 0x05, 0x17, 0x07, -+ 0xb9, 0x35, 0x10, 0x69, 0x8b, 0x46, 0xfb, 0x51, -+ 0xe9, 0x91, 0x3f, 0x46, 0xf2, 0x4d, 0xea, 0xd0, -+ 0x81, 0xc1, 0x1b, 0xa9, 0x5d, 0x52, 0x91, 0x5f, -+ 0xcd, 0xdc, 0xc6, 0xd6, 0xc3, 0x7c, 0x50, 0x23 }; -+ -+ /* -+ * Expected result when ChaCha20 DRNG state is zero: -+ * * constants are set to "expand 32-byte k" -+ * * remaining state is 0 -+ * followed by a reseed with one key block plus one byte -+ * 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, -+ * 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, -+ * 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, -+ * 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, -+ * 0x20 -+ * and pulling less than one ChaCha20 DRNG block. -+ */ -+ static const u8 expected_block_nonalinged[CHACHA_KEY_SIZE + 4] = { -+ 0x9c, 0xfc, 0x5e, 0x31, 0x21, 0x62, 0x11, 0x85, -+ 0xd3, 0x77, 0xd3, 0x69, 0x0f, 0xa8, 0x16, 0x55, -+ 0xb4, 0x4c, 0xf6, 0x52, 0xf3, 0xa8, 0x37, 0x99, -+ 0x38, 0x76, 0xa0, 0x66, 0xec, 0xbb, 0xce, 0xa9, -+ 0x9c, 0x95, 0xa1, 0xfd }; -+ -+ BUILD_BUG_ON(sizeof(seed) % sizeof(u32)); -+ -+ memset(&chacha20, 0, sizeof(chacha20)); -+ lrng_cc20_init_rfc7539(&chacha20); -+ lrng_selftest_bswap32((u32 *)seed, sizeof(seed) / sizeof(u32)); -+ -+ /* Generate with zero state */ -+ ret = crypto_cb->lrng_drng_generate_helper(&chacha20, outbuf, -+ sizeof(expected_halfblock)); -+ if (ret != sizeof(expected_halfblock)) -+ goto err; -+ if (memcmp(outbuf, expected_halfblock, sizeof(expected_halfblock))) -+ goto err; -+ -+ /* Clear state of DRNG */ -+ memset(&chacha20.key.u[0], 0, 48); -+ -+ /* Reseed with 2 key blocks */ -+ ret = crypto_cb->lrng_drng_seed_helper(&chacha20, seed, -+ sizeof(expected_oneblock)); -+ if (ret < 0) -+ goto err; -+ ret = crypto_cb->lrng_drng_generate_helper(&chacha20, outbuf, -+ sizeof(expected_oneblock)); -+ if (ret != sizeof(expected_oneblock)) -+ goto err; -+ if (memcmp(outbuf, expected_oneblock, sizeof(expected_oneblock))) -+ goto err; -+ -+ /* Clear state of DRNG */ -+ memset(&chacha20.key.u[0], 0, 48); -+ -+ /* Reseed with 1 key block and one byte */ -+ ret = crypto_cb->lrng_drng_seed_helper(&chacha20, seed, -+ sizeof(expected_block_nonalinged)); -+ if (ret < 0) -+ goto err; -+ ret = crypto_cb->lrng_drng_generate_helper(&chacha20, outbuf, -+ sizeof(expected_block_nonalinged)); -+ if (ret != sizeof(expected_block_nonalinged)) -+ goto err; -+ if (memcmp(outbuf, expected_block_nonalinged, -+ sizeof(expected_block_nonalinged))) -+ goto err; -+ -+ return LRNG_SELFTEST_PASSED; -+ -+err: -+ pr_err("LRNG ChaCha20 DRNG self-test FAILED\n"); -+ return LRNG_SEFLTEST_ERROR_CHACHA20; -+} -+ -+static unsigned int lrng_selftest_status = LRNG_SELFTEST_NOT_EXECUTED; -+ -+static int lrng_selftest(void) -+{ -+ unsigned int ret = lrng_data_process_selftest(); -+ -+ ret |= lrng_chacha20_drng_selftest(); -+ ret |= lrng_hash_selftest(); -+ ret |= lrng_gcd_selftest(); -+ -+ if (ret) { -+ if (IS_ENABLED(CONFIG_LRNG_SELFTEST_PANIC)) -+ panic("LRNG self-tests failed: %u\n", ret); -+ } else { -+ pr_info("LRNG self-tests passed\n"); -+ } -+ -+ lrng_selftest_status = ret; -+ -+ if (lrng_selftest_status) -+ return -EFAULT; -+ return 0; -+} -+ -+#ifdef CONFIG_SYSFS -+/* Re-perform self-test when any value is written to the sysfs file. */ -+static int lrng_selftest_sysfs_set(const char *val, -+ const struct kernel_param *kp) -+{ -+ return lrng_selftest(); -+} -+ -+static const struct kernel_param_ops lrng_selftest_sysfs = { -+ .set = lrng_selftest_sysfs_set, -+ .get = param_get_uint, -+}; -+module_param_cb(selftest_status, &lrng_selftest_sysfs, &lrng_selftest_status, -+ 0644); -+#endif /* CONFIG_SYSFS */ -+ -+static int __init lrng_selftest_init(void) -+{ -+ return lrng_selftest(); -+} -+ -+module_init(lrng_selftest_init); -diff -urN linux-5.15/drivers/char/lrng/lrng_switch.c linux-5.15-lrng/drivers/char/lrng/lrng_switch.c ---- linux-5.15/drivers/char/lrng/lrng_switch.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_switch.c 2021-11-29 12:37:19.323279070 +1100 -@@ -0,0 +1,226 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * LRNG DRNG switching support -+ * -+ * Copyright (C) 2016 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/lrng.h> -+ -+#include "lrng_internal.h" -+ -+static int lrng_drng_switch(struct lrng_drng *drng_store, -+ const struct lrng_crypto_cb *cb, int node) -+{ -+ const struct lrng_crypto_cb *old_cb; -+ unsigned long flags = 0, flags2 = 0; -+ int ret; -+ u8 seed[LRNG_DRNG_SECURITY_STRENGTH_BYTES]; -+ void *new_drng = cb->lrng_drng_alloc(LRNG_DRNG_SECURITY_STRENGTH_BYTES); -+ void *old_drng, *new_hash, *old_hash; -+ u32 current_security_strength; -+ bool sl = false, reset_drng = !lrng_get_available(); -+ -+ if (IS_ERR(new_drng)) { -+ pr_warn("could not allocate new DRNG for NUMA node %d (%ld)\n", -+ node, PTR_ERR(new_drng)); -+ return PTR_ERR(new_drng); -+ } -+ -+ new_hash = cb->lrng_hash_alloc(); -+ if (IS_ERR(new_hash)) { -+ pr_warn("could not allocate new LRNG pool hash (%ld)\n", -+ PTR_ERR(new_hash)); -+ cb->lrng_drng_dealloc(new_drng); -+ return PTR_ERR(new_hash); -+ } -+ -+ if (cb->lrng_hash_digestsize(new_hash) > LRNG_MAX_DIGESTSIZE) { -+ pr_warn("digest size of newly requested hash too large\n"); -+ cb->lrng_hash_dealloc(new_hash); -+ cb->lrng_drng_dealloc(new_drng); -+ return -EINVAL; -+ } -+ -+ current_security_strength = lrng_security_strength(); -+ lrng_drng_lock(drng_store, &flags); -+ -+ /* -+ * Pull from existing DRNG to seed new DRNG regardless of seed status -+ * of old DRNG -- the entropy state for the DRNG is left unchanged which -+ * implies that als the new DRNG is reseeded when deemed necessary. This -+ * seeding of the new DRNG shall only ensure that the new DRNG has the -+ * same entropy as the old DRNG. -+ */ -+ ret = drng_store->crypto_cb->lrng_drng_generate_helper( -+ drng_store->drng, seed, sizeof(seed)); -+ lrng_drng_unlock(drng_store, &flags); -+ -+ if (ret < 0) { -+ reset_drng = true; -+ pr_warn("getting random data from DRNG failed for NUMA node %d (%d)\n", -+ node, ret); -+ } else { -+ /* seed new DRNG with data */ -+ ret = cb->lrng_drng_seed_helper(new_drng, seed, ret); -+ memzero_explicit(seed, sizeof(seed)); -+ if (ret < 0) { -+ reset_drng = true; -+ pr_warn("seeding of new DRNG failed for NUMA node %d (%d)\n", -+ node, ret); -+ } else { -+ pr_debug("seeded new DRNG of NUMA node %d instance from old DRNG instance\n", -+ node); -+ } -+ } -+ -+ mutex_lock(&drng_store->lock); -+ write_lock_irqsave(&drng_store->hash_lock, flags2); -+ /* -+ * If we switch the DRNG from the initial ChaCha20 DRNG to something -+ * else, there is a lock transition from spin lock to mutex (see -+ * lrng_drng_is_atomic and how the lock is taken in lrng_drng_lock). -+ * Thus, we need to take both locks during the transition phase. -+ */ -+ if (lrng_drng_is_atomic(drng_store)) { -+ spin_lock_irqsave(&drng_store->spin_lock, flags); -+ sl = true; -+ } else { -+ __acquire(&drng_store->spin_lock); -+ } -+ -+ /* Trigger the switch of the aux entropy pool for current node. */ -+ if (drng_store == lrng_drng_init_instance()) { -+ ret = lrng_aux_switch_hash(cb, new_hash, drng_store->crypto_cb); -+ if (ret) -+ goto err; -+ } -+ -+ /* Trigger the switch of the per-CPU entropy pools for current node. */ -+ ret = lrng_pcpu_switch_hash(node, cb, new_hash, drng_store->crypto_cb); -+ if (ret) { -+ /* Switch the crypto operation back to be consistent */ -+ WARN_ON(lrng_aux_switch_hash(drng_store->crypto_cb, -+ drng_store->hash, cb)); -+ } else { -+ if (reset_drng) -+ lrng_drng_reset(drng_store); -+ -+ old_drng = drng_store->drng; -+ old_cb = drng_store->crypto_cb; -+ drng_store->drng = new_drng; -+ drng_store->crypto_cb = cb; -+ -+ old_hash = drng_store->hash; -+ drng_store->hash = new_hash; -+ pr_info("Entropy pool read-hash allocated for DRNG for NUMA node %d\n", -+ node); -+ -+ /* Reseed if previous LRNG security strength was insufficient */ -+ if (current_security_strength < lrng_security_strength()) -+ drng_store->force_reseed = true; -+ -+ /* Force oversampling seeding as we initialize DRNG */ -+ if (IS_ENABLED(CONFIG_LRNG_OVERSAMPLE_ENTROPY_SOURCES)) -+ lrng_unset_fully_seeded(drng_store); -+ -+ if (lrng_state_min_seeded()) -+ lrng_set_entropy_thresh(lrng_get_seed_entropy_osr( -+ drng_store->fully_seeded)); -+ -+ /* ChaCha20 serves as atomic instance left untouched. */ -+ if (old_drng != &chacha20) { -+ old_cb->lrng_drng_dealloc(old_drng); -+ old_cb->lrng_hash_dealloc(old_hash); -+ } -+ -+ pr_info("DRNG of NUMA node %d switched\n", node); -+ } -+ -+err: -+ if (sl) -+ spin_unlock_irqrestore(&drng_store->spin_lock, flags); -+ else -+ __release(&drng_store->spin_lock); -+ write_unlock_irqrestore(&drng_store->hash_lock, flags2); -+ mutex_unlock(&drng_store->lock); -+ -+ return ret; -+} -+ -+/* -+ * Switch the existing DRNG instances with new using the new crypto callbacks. -+ * The caller must hold the lrng_crypto_cb_update lock. -+ */ -+static int lrng_drngs_switch(const struct lrng_crypto_cb *cb) -+{ -+ struct lrng_drng **lrng_drng = lrng_drng_instances(); -+ struct lrng_drng *lrng_drng_init = lrng_drng_init_instance(); -+ int ret = 0; -+ -+ /* Update DRNG */ -+ if (lrng_drng) { -+ u32 node; -+ -+ for_each_online_node(node) { -+ if (lrng_drng[node]) -+ ret = lrng_drng_switch(lrng_drng[node], cb, -+ node); -+ } -+ } else { -+ ret = lrng_drng_switch(lrng_drng_init, cb, 0); -+ } -+ -+ if (!ret) -+ lrng_set_available(); -+ -+ return 0; -+} -+ -+/* -+ * lrng_set_drng_cb - Register new cryptographic callback functions for DRNG -+ * The registering implies that all old DRNG states are replaced with new -+ * DRNG states. -+ * -+ * @cb: Callback functions to be registered -- if NULL, use the default -+ * callbacks pointing to the ChaCha20 DRNG. -+ * -+ * Return: -+ * * 0 on success -+ * * < 0 on error -+ */ -+int lrng_set_drng_cb(const struct lrng_crypto_cb *cb) -+{ -+ struct lrng_drng *lrng_drng_init = lrng_drng_init_instance(); -+ int ret; -+ -+ if (!cb) -+ cb = &lrng_cc20_crypto_cb; -+ -+ mutex_lock(&lrng_crypto_cb_update); -+ -+ /* -+ * If a callback other than the default is set, allow it only to be -+ * set back to the default callback. This ensures that multiple -+ * different callbacks can be registered at the same time. If a -+ * callback different from the current callback and the default -+ * callback shall be set, the current callback must be deregistered -+ * (e.g. the kernel module providing it must be unloaded) and the new -+ * implementation can be registered. -+ */ -+ if ((cb != &lrng_cc20_crypto_cb) && -+ (lrng_drng_init->crypto_cb != &lrng_cc20_crypto_cb)) { -+ pr_warn("disallow setting new cipher callbacks, unload the old callbacks first!\n"); -+ ret = -EINVAL; -+ goto out; -+ } -+ -+ ret = lrng_drngs_switch(cb); -+ -+out: -+ mutex_unlock(&lrng_crypto_cb_update); -+ return ret; -+} -+EXPORT_SYMBOL(lrng_set_drng_cb); -diff -urN linux-5.15/drivers/char/lrng/lrng_testing.c linux-5.15-lrng/drivers/char/lrng/lrng_testing.c ---- linux-5.15/drivers/char/lrng/lrng_testing.c 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/drivers/char/lrng/lrng_testing.c 2021-11-29 12:38:19.263278841 +1100 -@@ -0,0 +1,689 @@ -+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause -+/* -+ * Linux Random Number Generator (LRNG) testing interfaces -+ * -+ * Copyright (C) 2019 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -+ -+#include <linux/atomic.h> -+#include <linux/bug.h> -+#include <linux/debugfs.h> -+#include <linux/lrng.h> -+#include <linux/module.h> -+#include <linux/sched.h> -+#include <linux/sched/signal.h> -+#include <linux/slab.h> -+#include <linux/string.h> -+#include <linux/types.h> -+#include <linux/uaccess.h> -+#include <linux/workqueue.h> -+#include <asm/errno.h> -+ -+#include "lrng_internal.h" -+ -+#define LRNG_TESTING_RINGBUFFER_SIZE 1024 -+#define LRNG_TESTING_RINGBUFFER_MASK (LRNG_TESTING_RINGBUFFER_SIZE - 1) -+ -+struct lrng_testing { -+ u32 lrng_testing_rb[LRNG_TESTING_RINGBUFFER_SIZE]; -+ u32 rb_reader; -+ u32 rb_writer; -+ atomic_t lrng_testing_enabled; -+ spinlock_t lock; -+ wait_queue_head_t read_wait; -+}; -+ -+/*************************** Generic Data Handling ****************************/ -+ -+/* -+ * boot variable: -+ * 0 ==> No boot test, gathering of runtime data allowed -+ * 1 ==> Boot test enabled and ready for collecting data, gathering runtime -+ * data is disabled -+ * 2 ==> Boot test completed and disabled, gathering of runtime data is -+ * disabled -+ */ -+ -+static inline void lrng_testing_reset(struct lrng_testing *data) -+{ -+ unsigned long flags; -+ -+ spin_lock_irqsave(&data->lock, flags); -+ data->rb_reader = 0; -+ data->rb_writer = 0; -+ spin_unlock_irqrestore(&data->lock, flags); -+} -+ -+static inline void lrng_testing_init(struct lrng_testing *data, u32 boot) -+{ -+ /* -+ * The boot time testing implies we have a running test. If the -+ * caller wants to clear it, he has to unset the boot_test flag -+ * at runtime via sysfs to enable regular runtime testing -+ */ -+ if (boot) -+ return; -+ -+ lrng_testing_reset(data); -+ atomic_set(&data->lrng_testing_enabled, 1); -+ pr_warn("Enabling data collection\n"); -+} -+ -+static inline void lrng_testing_fini(struct lrng_testing *data, u32 boot) -+{ -+ /* If we have boot data, we do not reset yet to allow data to be read */ -+ if (boot) -+ return; -+ -+ atomic_set(&data->lrng_testing_enabled, 0); -+ lrng_testing_reset(data); -+ pr_warn("Disabling data collection\n"); -+} -+ -+static inline bool lrng_testing_store(struct lrng_testing *data, u32 value, -+ u32 *boot) -+{ -+ unsigned long flags; -+ -+ if (!atomic_read(&data->lrng_testing_enabled) && (*boot != 1)) -+ return false; -+ -+ spin_lock_irqsave(&data->lock, flags); -+ -+ /* -+ * Disable entropy testing for boot time testing after ring buffer -+ * is filled. -+ */ -+ if (*boot) { -+ if (data->rb_writer > LRNG_TESTING_RINGBUFFER_SIZE) { -+ *boot = 2; -+ pr_warn_once("One time data collection test disabled\n"); -+ spin_unlock_irqrestore(&data->lock, flags); -+ return false; -+ } -+ -+ if (data->rb_writer == 1) -+ pr_warn("One time data collection test enabled\n"); -+ } -+ -+ data->lrng_testing_rb[data->rb_writer & LRNG_TESTING_RINGBUFFER_MASK] = -+ value; -+ data->rb_writer++; -+ -+ spin_unlock_irqrestore(&data->lock, flags); -+ -+ if (wq_has_sleeper(&data->read_wait)) -+ wake_up_interruptible(&data->read_wait); -+ -+ return true; -+} -+ -+static inline bool lrng_testing_have_data(struct lrng_testing *data) -+{ -+ return ((data->rb_writer & LRNG_TESTING_RINGBUFFER_MASK) != -+ (data->rb_reader & LRNG_TESTING_RINGBUFFER_MASK)); -+} -+ -+static inline int lrng_testing_reader(struct lrng_testing *data, u32 *boot, -+ u8 *outbuf, u32 outbuflen) -+{ -+ unsigned long flags; -+ int collected_data = 0; -+ -+ lrng_testing_init(data, *boot); -+ -+ while (outbuflen) { -+ spin_lock_irqsave(&data->lock, flags); -+ -+ /* We have no data or reached the writer. */ -+ if (!data->rb_writer || -+ (data->rb_writer == data->rb_reader)) { -+ -+ spin_unlock_irqrestore(&data->lock, flags); -+ -+ /* -+ * Now we gathered all boot data, enable regular data -+ * collection. -+ */ -+ if (*boot) { -+ *boot = 0; -+ goto out; -+ } -+ -+ wait_event_interruptible(data->read_wait, -+ lrng_testing_have_data(data)); -+ if (signal_pending(current)) { -+ collected_data = -ERESTARTSYS; -+ goto out; -+ } -+ -+ continue; -+ } -+ -+ /* We copy out word-wise */ -+ if (outbuflen < sizeof(u32)) { -+ spin_unlock_irqrestore(&data->lock, flags); -+ goto out; -+ } -+ -+ memcpy(outbuf, &data->lrng_testing_rb[data->rb_reader], -+ sizeof(u32)); -+ data->rb_reader++; -+ -+ spin_unlock_irqrestore(&data->lock, flags); -+ -+ outbuf += sizeof(u32); -+ outbuflen -= sizeof(u32); -+ collected_data += sizeof(u32); -+ } -+ -+out: -+ lrng_testing_fini(data, *boot); -+ return collected_data; -+} -+ -+static int lrng_testing_extract_user(struct file *file, char __user *buf, -+ size_t nbytes, loff_t *ppos, -+ int (*reader)(u8 *outbuf, u32 outbuflen)) -+{ -+ u8 *tmp, *tmp_aligned; -+ int ret = 0, large_request = (nbytes > 256); -+ -+ if (!nbytes) -+ return 0; -+ -+ /* -+ * The intention of this interface is for collecting at least -+ * 1000 samples due to the SP800-90B requirements. So, we make no -+ * effort in avoiding allocating more memory that actually needed -+ * by the user. Hence, we allocate sufficient memory to always hold -+ * that amount of data. -+ */ -+ tmp = kmalloc(LRNG_TESTING_RINGBUFFER_SIZE + sizeof(u32), GFP_KERNEL); -+ if (!tmp) -+ return -ENOMEM; -+ -+ tmp_aligned = PTR_ALIGN(tmp, sizeof(u32)); -+ -+ while (nbytes) { -+ int i; -+ -+ if (large_request && need_resched()) { -+ if (signal_pending(current)) { -+ if (ret == 0) -+ ret = -ERESTARTSYS; -+ break; -+ } -+ schedule(); -+ } -+ -+ i = min_t(int, nbytes, LRNG_TESTING_RINGBUFFER_SIZE); -+ i = reader(tmp_aligned, i); -+ if (i <= 0) { -+ if (i < 0) -+ ret = i; -+ break; -+ } -+ if (copy_to_user(buf, tmp_aligned, i)) { -+ ret = -EFAULT; -+ break; -+ } -+ -+ nbytes -= i; -+ buf += i; -+ ret += i; -+ } -+ -+ kfree_sensitive(tmp); -+ -+ if (ret > 0) -+ *ppos += ret; -+ -+ return ret; -+} -+ -+/************** Raw High-Resolution Timer Entropy Data Handling ***************/ -+ -+#ifdef CONFIG_LRNG_RAW_HIRES_ENTROPY -+ -+static u32 boot_raw_hires_test = 0; -+module_param(boot_raw_hires_test, uint, 0644); -+MODULE_PARM_DESC(boot_raw_hires_test, "Enable gathering boot time high resolution timer entropy of the first entropy events"); -+ -+static struct lrng_testing lrng_raw_hires = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_raw_hires.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_raw_hires.read_wait) -+}; -+ -+bool lrng_raw_hires_entropy_store(u32 value) -+{ -+ return lrng_testing_store(&lrng_raw_hires, value, &boot_raw_hires_test); -+} -+ -+static int lrng_raw_hires_entropy_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_raw_hires, &boot_raw_hires_test, -+ outbuf, outbuflen); -+} -+ -+static ssize_t lrng_raw_hires_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_raw_hires_entropy_reader); -+} -+ -+static const struct file_operations lrng_raw_hires_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_raw_hires_read, -+}; -+ -+#endif /* CONFIG_LRNG_RAW_HIRES_ENTROPY */ -+ -+/********************* Raw Jiffies Entropy Data Handling **********************/ -+ -+#ifdef CONFIG_LRNG_RAW_JIFFIES_ENTROPY -+ -+static u32 boot_raw_jiffies_test = 0; -+module_param(boot_raw_jiffies_test, uint, 0644); -+MODULE_PARM_DESC(boot_raw_jiffies_test, "Enable gathering boot time high resolution timer entropy of the first entropy events"); -+ -+static struct lrng_testing lrng_raw_jiffies = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_raw_jiffies.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_raw_jiffies.read_wait) -+}; -+ -+bool lrng_raw_jiffies_entropy_store(u32 value) -+{ -+ return lrng_testing_store(&lrng_raw_jiffies, value, -+ &boot_raw_jiffies_test); -+} -+ -+static int lrng_raw_jiffies_entropy_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_raw_jiffies, &boot_raw_jiffies_test, -+ outbuf, outbuflen); -+} -+ -+static ssize_t lrng_raw_jiffies_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_raw_jiffies_entropy_reader); -+} -+ -+static const struct file_operations lrng_raw_jiffies_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_raw_jiffies_read, -+}; -+ -+#endif /* CONFIG_LRNG_RAW_JIFFIES_ENTROPY */ -+ -+/************************** Raw IRQ Data Handling ****************************/ -+ -+#ifdef CONFIG_LRNG_RAW_IRQ_ENTROPY -+ -+static u32 boot_raw_irq_test = 0; -+module_param(boot_raw_irq_test, uint, 0644); -+MODULE_PARM_DESC(boot_raw_irq_test, "Enable gathering boot time entropy of the first IRQ entropy events"); -+ -+static struct lrng_testing lrng_raw_irq = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_raw_irq.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_raw_irq.read_wait) -+}; -+ -+bool lrng_raw_irq_entropy_store(u32 value) -+{ -+ return lrng_testing_store(&lrng_raw_irq, value, &boot_raw_irq_test); -+} -+ -+static int lrng_raw_irq_entropy_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_raw_irq, &boot_raw_irq_test, outbuf, -+ outbuflen); -+} -+ -+static ssize_t lrng_raw_irq_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_raw_irq_entropy_reader); -+} -+ -+static const struct file_operations lrng_raw_irq_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_raw_irq_read, -+}; -+ -+#endif /* CONFIG_LRNG_RAW_IRQ_ENTROPY */ -+ -+/************************ Raw IRQFLAGS Data Handling **************************/ -+ -+#ifdef CONFIG_LRNG_RAW_IRQFLAGS_ENTROPY -+ -+static u32 boot_raw_irqflags_test = 0; -+module_param(boot_raw_irqflags_test, uint, 0644); -+MODULE_PARM_DESC(boot_raw_irqflags_test, "Enable gathering boot time entropy of the first IRQ flags entropy events"); -+ -+static struct lrng_testing lrng_raw_irqflags = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_raw_irqflags.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_raw_irqflags.read_wait) -+}; -+ -+bool lrng_raw_irqflags_entropy_store(u32 value) -+{ -+ return lrng_testing_store(&lrng_raw_irqflags, value, -+ &boot_raw_irqflags_test); -+} -+ -+static int lrng_raw_irqflags_entropy_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_raw_irqflags, &boot_raw_irqflags_test, -+ outbuf, outbuflen); -+} -+ -+static ssize_t lrng_raw_irqflags_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_raw_irqflags_entropy_reader); -+} -+ -+static const struct file_operations lrng_raw_irqflags_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_raw_irqflags_read, -+}; -+ -+#endif /* CONFIG_LRNG_RAW_IRQFLAGS_ENTROPY */ -+ -+/************************ Raw _RET_IP_ Data Handling **************************/ -+ -+#ifdef CONFIG_LRNG_RAW_RETIP_ENTROPY -+ -+static u32 boot_raw_retip_test = 0; -+module_param(boot_raw_retip_test, uint, 0644); -+MODULE_PARM_DESC(boot_raw_retip_test, "Enable gathering boot time entropy of the first return instruction pointer entropy events"); -+ -+static struct lrng_testing lrng_raw_retip = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_raw_retip.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_raw_retip.read_wait) -+}; -+ -+bool lrng_raw_retip_entropy_store(u32 value) -+{ -+ return lrng_testing_store(&lrng_raw_retip, value, &boot_raw_retip_test); -+} -+ -+static int lrng_raw_retip_entropy_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_raw_retip, &boot_raw_retip_test, -+ outbuf, outbuflen); -+} -+ -+static ssize_t lrng_raw_retip_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_raw_retip_entropy_reader); -+} -+ -+static const struct file_operations lrng_raw_retip_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_raw_retip_read, -+}; -+ -+#endif /* CONFIG_LRNG_RAW_RETIP_ENTROPY */ -+ -+/********************** Raw IRQ register Data Handling ************************/ -+ -+#ifdef CONFIG_LRNG_RAW_REGS_ENTROPY -+ -+static u32 boot_raw_regs_test = 0; -+module_param(boot_raw_regs_test, uint, 0644); -+MODULE_PARM_DESC(boot_raw_regs_test, "Enable gathering boot time entropy of the first interrupt register entropy events"); -+ -+static struct lrng_testing lrng_raw_regs = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_raw_regs.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_raw_regs.read_wait) -+}; -+ -+bool lrng_raw_regs_entropy_store(u32 value) -+{ -+ return lrng_testing_store(&lrng_raw_regs, value, &boot_raw_regs_test); -+} -+ -+static int lrng_raw_regs_entropy_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_raw_regs, &boot_raw_regs_test, -+ outbuf, outbuflen); -+} -+ -+static ssize_t lrng_raw_regs_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_raw_regs_entropy_reader); -+} -+ -+static const struct file_operations lrng_raw_regs_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_raw_regs_read, -+}; -+ -+#endif /* CONFIG_LRNG_RAW_REGS_ENTROPY */ -+ -+/********************** Raw Entropy Array Data Handling ***********************/ -+ -+#ifdef CONFIG_LRNG_RAW_ARRAY -+ -+static u32 boot_raw_array = 0; -+module_param(boot_raw_array, uint, 0644); -+MODULE_PARM_DESC(boot_raw_array, "Enable gathering boot time raw noise array data of the first entropy events"); -+ -+static struct lrng_testing lrng_raw_array = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_raw_array.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_raw_array.read_wait) -+}; -+ -+bool lrng_raw_array_entropy_store(u32 value) -+{ -+ return lrng_testing_store(&lrng_raw_array, value, &boot_raw_array); -+} -+ -+static int lrng_raw_array_entropy_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_raw_array, &boot_raw_array, outbuf, -+ outbuflen); -+} -+ -+static ssize_t lrng_raw_array_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_raw_array_entropy_reader); -+} -+ -+static const struct file_operations lrng_raw_array_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_raw_array_read, -+}; -+ -+#endif /* CONFIG_LRNG_RAW_ARRAY */ -+ -+/******************** Interrupt Performance Data Handling *********************/ -+ -+#ifdef CONFIG_LRNG_IRQ_PERF -+ -+static u32 boot_irq_perf = 0; -+module_param(boot_irq_perf, uint, 0644); -+MODULE_PARM_DESC(boot_irq_perf, "Enable gathering boot time interrupt performance data of the first entropy events"); -+ -+static struct lrng_testing lrng_irq_perf = { -+ .rb_reader = 0, -+ .rb_writer = 0, -+ .lock = __SPIN_LOCK_UNLOCKED(lrng_irq_perf.lock), -+ .read_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lrng_irq_perf.read_wait) -+}; -+ -+bool lrng_perf_time(u32 start) -+{ -+ return lrng_testing_store(&lrng_irq_perf, random_get_entropy() - start, -+ &boot_irq_perf); -+} -+ -+static int lrng_irq_perf_reader(u8 *outbuf, u32 outbuflen) -+{ -+ return lrng_testing_reader(&lrng_irq_perf, &boot_irq_perf, outbuf, -+ outbuflen); -+} -+ -+static ssize_t lrng_irq_perf_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ return lrng_testing_extract_user(file, to, count, ppos, -+ lrng_irq_perf_reader); -+} -+ -+static const struct file_operations lrng_irq_perf_fops = { -+ .owner = THIS_MODULE, -+ .read = lrng_irq_perf_read, -+}; -+ -+#endif /* CONFIG_LRNG_IRQ_PERF */ -+ -+/*********************************** ACVT ************************************/ -+ -+#ifdef CONFIG_LRNG_ACVT_HASH -+ -+/* maximum amount of data to be hashed as defined by ACVP */ -+#define LRNG_ACVT_MAX_SHA_MSG (65536 >> 3) -+ -+/* -+ * As we use static variables to store the data, it is clear that the -+ * test interface is only able to handle single threaded testing. This is -+ * considered to be sufficient for testing. If multi-threaded use of the -+ * ACVT test interface would be performed, the caller would get garbage -+ * but the kernel operation is unaffected by this. -+ */ -+static u8 lrng_acvt_hash_data[LRNG_ACVT_MAX_SHA_MSG] -+ __aligned(LRNG_KCAPI_ALIGN); -+static atomic_t lrng_acvt_hash_data_size = ATOMIC_INIT(0); -+static u8 lrng_acvt_hash_digest[LRNG_ATOMIC_DIGEST_SIZE]; -+ -+static ssize_t lrng_acvt_hash_write(struct file *file, const char __user *buf, -+ size_t nbytes, loff_t *ppos) -+{ -+ if (nbytes > LRNG_ACVT_MAX_SHA_MSG) -+ return -EINVAL; -+ -+ atomic_set(&lrng_acvt_hash_data_size, (int)nbytes); -+ -+ return simple_write_to_buffer(lrng_acvt_hash_data, -+ LRNG_ACVT_MAX_SHA_MSG, ppos, buf, nbytes); -+} -+ -+static ssize_t lrng_acvt_hash_read(struct file *file, char __user *to, -+ size_t count, loff_t *ppos) -+{ -+ SHASH_DESC_ON_STACK(shash, NULL); -+ const struct lrng_crypto_cb *crypto_cb = &lrng_cc20_crypto_cb; -+ ssize_t ret; -+ -+ if (count > LRNG_ATOMIC_DIGEST_SIZE) -+ return -EINVAL; -+ -+ ret = crypto_cb->lrng_hash_init(shash, NULL) ?: -+ crypto_cb->lrng_hash_update(shash, lrng_acvt_hash_data, -+ atomic_read_u32(&lrng_acvt_hash_data_size)) ?: -+ crypto_cb->lrng_hash_final(shash, lrng_acvt_hash_digest); -+ if (ret) -+ return ret; -+ -+ return simple_read_from_buffer(to, count, ppos, lrng_acvt_hash_digest, -+ sizeof(lrng_acvt_hash_digest)); -+} -+ -+static const struct file_operations lrng_acvt_hash_fops = { -+ .owner = THIS_MODULE, -+ .open = simple_open, -+ .llseek = default_llseek, -+ .read = lrng_acvt_hash_read, -+ .write = lrng_acvt_hash_write, -+}; -+ -+#endif /* CONFIG_LRNG_ACVT_DRNG */ -+ -+/************************************************************************** -+ * Debugfs interface -+ **************************************************************************/ -+ -+static int __init lrng_raw_init(void) -+{ -+ struct dentry *lrng_raw_debugfs_root; -+ -+ lrng_raw_debugfs_root = debugfs_create_dir(KBUILD_MODNAME, NULL); -+ -+#ifdef CONFIG_LRNG_RAW_HIRES_ENTROPY -+ debugfs_create_file_unsafe("lrng_raw_hires", 0400, -+ lrng_raw_debugfs_root, NULL, -+ &lrng_raw_hires_fops); -+#endif -+#ifdef CONFIG_LRNG_RAW_JIFFIES_ENTROPY -+ debugfs_create_file_unsafe("lrng_raw_jiffies", 0400, -+ lrng_raw_debugfs_root, NULL, -+ &lrng_raw_jiffies_fops); -+#endif -+#ifdef CONFIG_LRNG_RAW_IRQ_ENTROPY -+ debugfs_create_file_unsafe("lrng_raw_irq", 0400, lrng_raw_debugfs_root, -+ NULL, &lrng_raw_irq_fops); -+#endif -+#ifdef CONFIG_LRNG_RAW_IRQFLAGS_ENTROPY -+ debugfs_create_file_unsafe("lrng_raw_irqflags", 0400, -+ lrng_raw_debugfs_root, NULL, -+ &lrng_raw_irqflags_fops); -+#endif -+#ifdef CONFIG_LRNG_RAW_RETIP_ENTROPY -+ debugfs_create_file_unsafe("lrng_raw_retip", 0400, -+ lrng_raw_debugfs_root, NULL, -+ &lrng_raw_retip_fops); -+#endif -+#ifdef CONFIG_LRNG_RAW_REGS_ENTROPY -+ debugfs_create_file_unsafe("lrng_raw_regs", 0400, -+ lrng_raw_debugfs_root, NULL, -+ &lrng_raw_regs_fops); -+#endif -+#ifdef CONFIG_LRNG_RAW_ARRAY -+ debugfs_create_file_unsafe("lrng_raw_array", 0400, -+ lrng_raw_debugfs_root, NULL, -+ &lrng_raw_array_fops); -+#endif -+#ifdef CONFIG_LRNG_IRQ_PERF -+ debugfs_create_file_unsafe("lrng_irq_perf", 0400, lrng_raw_debugfs_root, -+ NULL, &lrng_irq_perf_fops); -+#endif -+#ifdef CONFIG_LRNG_ACVT_HASH -+ debugfs_create_file_unsafe("lrng_acvt_hash", 0600, -+ lrng_raw_debugfs_root, NULL, -+ &lrng_acvt_hash_fops); -+#endif -+ -+ return 0; -+} -+ -+module_init(lrng_raw_init); -diff -urN linux-5.15/include/crypto/drbg.h linux-5.15-lrng/include/crypto/drbg.h ---- linux-5.15/include/crypto/drbg.h 2021-11-01 07:53:10.000000000 +1100 -+++ linux-5.15-lrng/include/crypto/drbg.h 2021-11-29 12:37:31.183279025 +1100 -@@ -278,4 +278,11 @@ - DRBG_PREFIX3 - }; - -+extern int drbg_alloc_state(struct drbg_state *drbg); -+extern void drbg_dealloc_state(struct drbg_state *drbg); -+extern void drbg_convert_tfm_core(const char *cra_driver_name, int *coreref, -+ bool *pr); -+extern const struct drbg_core drbg_cores[]; -+extern unsigned short drbg_sec_strength(drbg_flag_t flags); -+ - #endif /* _DRBG_H */ -diff -urN linux-5.15/include/crypto/internal/jitterentropy.h linux-5.15-lrng/include/crypto/internal/jitterentropy.h ---- linux-5.15/include/crypto/internal/jitterentropy.h 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/include/crypto/internal/jitterentropy.h 2021-11-29 12:37:52.903278942 +1100 -@@ -0,0 +1,17 @@ -+// SPDX-License-Identifier: GPL-2.0-or-later -+ -+extern void *jent_zalloc(unsigned int len); -+extern void jent_zfree(void *ptr); -+extern int jent_fips_enabled(void); -+extern void jent_panic(char *s); -+extern void jent_memcpy(void *dest, const void *src, unsigned int n); -+extern void jent_get_nstime(__u64 *out); -+ -+struct rand_data; -+extern int jent_entropy_init(void); -+extern int jent_read_entropy(struct rand_data *ec, unsigned char *data, -+ unsigned int len); -+ -+extern struct rand_data *jent_entropy_collector_alloc(unsigned int osr, -+ unsigned int flags); -+extern void jent_entropy_collector_free(struct rand_data *entropy_collector); -diff -urN linux-5.15/include/linux/lrng.h linux-5.15-lrng/include/linux/lrng.h ---- linux-5.15/include/linux/lrng.h 1970-01-01 10:00:00.000000000 +1000 -+++ linux-5.15-lrng/include/linux/lrng.h 2021-11-29 12:36:52.113279174 +1100 -@@ -0,0 +1,81 @@ -+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */ -+/* -+ * Copyright (C) 2018 - 2021, Stephan Mueller <smueller@chronox.de> -+ */ -+ -+#ifndef _LRNG_H -+#define _LRNG_H -+ -+#include <crypto/hash.h> -+#include <linux/errno.h> -+#include <linux/types.h> -+ -+/* -+ * struct lrng_crypto_cb - cryptographic callback functions -+ * @lrng_drng_name Name of DRNG -+ * @lrng_hash_name Name of Hash used for reading entropy pool -+ * @lrng_drng_alloc: Allocate DRNG -- the provided integer should be -+ * used for sanity checks. -+ * return: allocated data structure or PTR_ERR on -+ * error -+ * @lrng_drng_dealloc: Deallocate DRNG -+ * @lrng_drng_seed_helper: Seed the DRNG with data of arbitrary length -+ * drng: is pointer to data structure allocated -+ * with lrng_drng_alloc -+ * return: >= 0 on success, < 0 on error -+ * @lrng_drng_generate_helper: Generate random numbers from the DRNG with -+ * arbitrary length -+ * @lrng_hash_alloc: Allocate the hash for reading the entropy pool -+ * return: allocated data structure (NULL is -+ * success too) or ERR_PTR on error -+ * @lrng_hash_dealloc: Deallocate Hash -+ * @lrng_hash_digestsize: Return the digestsize for the used hash to read -+ * out entropy pool -+ * hash: is pointer to data structure allocated -+ * with lrng_hash_alloc -+ * return: size of digest of hash in bytes -+ * @lrng_hash_init: Initialize hash -+ * hash: is pointer to data structure allocated -+ * with lrng_hash_alloc -+ * return: 0 on success, < 0 on error -+ * @lrng_hash_update: Update hash operation -+ * hash: is pointer to data structure allocated -+ * with lrng_hash_alloc -+ * return: 0 on success, < 0 on error -+ * @lrng_hash_final Final hash operation -+ * hash: is pointer to data structure allocated -+ * with lrng_hash_alloc -+ * return: 0 on success, < 0 on error -+ * @lrng_hash_desc_zero Zeroization of hash state buffer -+ * -+ * Assumptions: -+ * -+ * 1. Hash operation will not sleep -+ * 2. The hash' volatile state information is provided with *shash by caller. -+ */ -+struct lrng_crypto_cb { -+ const char *(*lrng_drng_name)(void); -+ const char *(*lrng_hash_name)(void); -+ void *(*lrng_drng_alloc)(u32 sec_strength); -+ void (*lrng_drng_dealloc)(void *drng); -+ int (*lrng_drng_seed_helper)(void *drng, const u8 *inbuf, u32 inbuflen); -+ int (*lrng_drng_generate_helper)(void *drng, u8 *outbuf, u32 outbuflen); -+ void *(*lrng_hash_alloc)(void); -+ void (*lrng_hash_dealloc)(void *hash); -+ u32 (*lrng_hash_digestsize)(void *hash); -+ int (*lrng_hash_init)(struct shash_desc *shash, void *hash); -+ int (*lrng_hash_update)(struct shash_desc *shash, const u8 *inbuf, -+ u32 inbuflen); -+ int (*lrng_hash_final)(struct shash_desc *shash, u8 *digest); -+ void (*lrng_hash_desc_zero)(struct shash_desc *shash); -+}; -+ -+/* Register cryptographic backend */ -+#ifdef CONFIG_LRNG_DRNG_SWITCH -+int lrng_set_drng_cb(const struct lrng_crypto_cb *cb); -+#else /* CONFIG_LRNG_DRNG_SWITCH */ -+static inline int -+lrng_set_drng_cb(const struct lrng_crypto_cb *cb) { return -EOPNOTSUPP; } -+#endif /* CONFIG_LRNG_DRNG_SWITCH */ -+ -+#endif /* _LRNG_H */ |