summaryrefslogtreecommitdiff
path: root/system/test-kernel/0130-lrng.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/test-kernel/0130-lrng.patch')
-rw-r--r--system/test-kernel/0130-lrng.patch28362
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, &reg_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 */