diff options
258 files changed, 5683 insertions, 4609 deletions
@@ -249,6 +249,7 @@ Sakari Ailus <sakari.ailus@linux.intel.com> <sakari.ailus@iki.fi> Sean Nyekjaer <sean@geanix.com> <sean.nyekjaer@prevas.dk> Sebastian Reichel <sre@kernel.org> <sre@debian.org> Sebastian Reichel <sre@kernel.org> <sebastian.reichel@collabora.co.uk> +Sedat Dilek <sedat.dilek@gmail.com> <sedat.dilek@credativ.de> Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com> Shuah Khan <shuah@kernel.org> <shuahkhan@gmail.com> Shuah Khan <shuah@kernel.org> <shuah.khan@hp.com> diff --git a/Documentation/admin-guide/sysctl/user.rst b/Documentation/admin-guide/sysctl/user.rst index 650eaa03f15e..c45824589339 100644 --- a/Documentation/admin-guide/sysctl/user.rst +++ b/Documentation/admin-guide/sysctl/user.rst @@ -65,6 +65,12 @@ max_pid_namespaces The maximum number of pid namespaces that any user in the current user namespace may create. +max_time_namespaces +=================== + + The maximum number of time namespaces that any user in the current + user namespace may create. + max_user_namespaces =================== diff --git a/Documentation/devicetree/bindings/fpga/fpga-region.txt b/Documentation/devicetree/bindings/fpga/fpga-region.txt index 90c44694a30b..8ab19d1d3f9a 100644 --- a/Documentation/devicetree/bindings/fpga/fpga-region.txt +++ b/Documentation/devicetree/bindings/fpga/fpga-region.txt @@ -263,7 +263,7 @@ Overlay contains: gpio@10040 { compatible = "altr,pio-1.0"; reg = <0x10040 0x20>; - altr,gpio-bank-width = <4>; + altr,ngpio = <4>; #gpio-cells = <2>; clocks = <2>; gpio-controller; @@ -468,8 +468,7 @@ programming is the FPGA based bridge of fpga_region1. compatible = "altr,pio-1.0"; reg = <0x10040 0x20>; clocks = <0x2>; - altr,gpio-bank-width = <0x4>; - resetvalue = <0x0>; + altr,ngpio = <0x4>; #gpio-cells = <0x2>; gpio-controller; }; diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Documentation/devicetree/bindings/net/ethernet-phy.yaml index 8927941c74bb..5aa141ccc113 100644 --- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml +++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml @@ -45,6 +45,9 @@ properties: bits of a vendor specific ID. - items: - pattern: "^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$" + - const: ethernet-phy-ieee802.3-c22 + - items: + - pattern: "^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$" - const: ethernet-phy-ieee802.3-c45 reg: diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt index 5b88fae0307d..ff8b0f211aa1 100644 --- a/Documentation/devicetree/bindings/net/fsl-fec.txt +++ b/Documentation/devicetree/bindings/net/fsl-fec.txt @@ -22,6 +22,8 @@ Optional properties: - fsl,err006687-workaround-present: If present indicates that the system has the hardware workaround for ERR006687 applied and does not need a software workaround. +- gpr: phandle of SoC general purpose register mode. Required for wake on LAN + on some SoCs -interrupt-names: names of the interrupts listed in interrupts property in the same order. The defaults if not specified are __Number of interrupts__ __Default__ diff --git a/Documentation/kbuild/kbuild.rst b/Documentation/kbuild/kbuild.rst index 510f38d7e78a..2d1fc03d346e 100644 --- a/Documentation/kbuild/kbuild.rst +++ b/Documentation/kbuild/kbuild.rst @@ -262,3 +262,8 @@ KBUILD_BUILD_USER, KBUILD_BUILD_HOST These two variables allow to override the user@host string displayed during boot and in /proc/version. The default value is the output of the commands whoami and host, respectively. + +LLVM +---- +If this variable is set to 1, Kbuild will use Clang and LLVM utilities instead +of GCC and GNU binutils to build the kernel. diff --git a/Documentation/kbuild/llvm.rst b/Documentation/kbuild/llvm.rst index d6c79eb4e23e..c776b6eee969 100644 --- a/Documentation/kbuild/llvm.rst +++ b/Documentation/kbuild/llvm.rst @@ -47,14 +47,21 @@ example: LLVM Utilities -------------- -LLVM has substitutes for GNU binutils utilities. These can be invoked as -additional parameters to `make`. +LLVM has substitutes for GNU binutils utilities. Kbuild supports `LLVM=1` +to enable them. - make CC=clang AS=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \\ - OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-objsize \\ + make LLVM=1 + +They can be enabled individually. The full list of the parameters: + + make CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \\ + OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size \\ READELF=llvm-readelf HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar \\ HOSTLD=ld.lld +Currently, the integrated assembler is disabled by default. You can pass +`LLVM_IAS=1` to enable it. + Getting Help ------------ diff --git a/Documentation/networking/devlink/devlink-trap.rst b/Documentation/networking/devlink/devlink-trap.rst index a09971c2115c..fe089acb7783 100644 --- a/Documentation/networking/devlink/devlink-trap.rst +++ b/Documentation/networking/devlink/devlink-trap.rst @@ -257,6 +257,8 @@ drivers: * :doc:`netdevsim` * :doc:`mlxsw` +.. _Generic-Packet-Trap-Groups: + Generic Packet Trap Groups ========================== diff --git a/Documentation/networking/index.rst b/Documentation/networking/index.rst index 50133d9761c9..6538ede29661 100644 --- a/Documentation/networking/index.rst +++ b/Documentation/networking/index.rst @@ -22,6 +22,7 @@ Contents: z8530book msg_zerocopy failover + net_dim net_failover phy sfp-phylink diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index ee961d322d93..6fcfd313dbe4 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt @@ -812,7 +812,7 @@ tcp_limit_output_bytes - INTEGER tcp_challenge_ack_limit - INTEGER Limits number of Challenge ACK sent per second, as recommended in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) - Default: 100 + Default: 1000 tcp_rx_skb_cache - BOOLEAN Controls a per TCP socket cache of one skb, that might help diff --git a/Documentation/networking/net_dim.txt b/Documentation/networking/net_dim.rst index 9bdb7d5a3ba3..3bed9fd95336 100644 --- a/Documentation/networking/net_dim.txt +++ b/Documentation/networking/net_dim.rst @@ -1,28 +1,20 @@ +====================================================== Net DIM - Generic Network Dynamic Interrupt Moderation ====================================================== -Author: - Tal Gilboa <talgi@mellanox.com> - - -Contents -========= +:Author: Tal Gilboa <talgi@mellanox.com> -- Assumptions -- Introduction -- The Net DIM Algorithm -- Registering a Network Device to DIM -- Example +.. contents:: :depth: 2 -Part 0: Assumptions -====================== +Assumptions +=========== This document assumes the reader has basic knowledge in network drivers and in general interrupt moderation. -Part I: Introduction -====================== +Introduction +============ Dynamic Interrupt Moderation (DIM) (in networking) refers to changing the interrupt moderation configuration of a channel in order to optimize packet @@ -41,14 +33,15 @@ number of wanted packets per event. The Net DIM algorithm ascribes importance to increase bandwidth over reducing interrupt rate. -Part II: The Net DIM Algorithm -=============================== +Net DIM Algorithm +================= Each iteration of the Net DIM algorithm follows these steps: -1. Calculates new data sample. -2. Compares it to previous sample. -3. Makes a decision - suggests interrupt moderation configuration fields. -4. Applies a schedule work function, which applies suggested configuration. + +#. Calculates new data sample. +#. Compares it to previous sample. +#. Makes a decision - suggests interrupt moderation configuration fields. +#. Applies a schedule work function, which applies suggested configuration. The first two steps are straightforward, both the new and the previous data are supplied by the driver registered to Net DIM. The previous data is the new data @@ -89,19 +82,21 @@ manoeuvre as it may provide partial data or ignore the algorithm suggestion under some conditions. -Part III: Registering a Network Device to DIM -============================================== +Registering a Network Device to DIM +=================================== -Net DIM API exposes the main function net_dim(struct dim *dim, -struct dim_sample end_sample). This function is the entry point to the Net +Net DIM API exposes the main function net_dim(). +This function is the entry point to the Net DIM algorithm and has to be called every time the driver would like to check if it should change interrupt moderation parameters. The driver should provide two -data structures: struct dim and struct dim_sample. Struct dim +data structures: :c:type:`struct dim <dim>` and +:c:type:`struct dim_sample <dim_sample>`. :c:type:`struct dim <dim>` describes the state of DIM for a specific object (RX queue, TX queue, other queues, etc.). This includes the current selected profile, previous data samples, the callback function provided by the driver and more. -Struct dim_sample describes a data sample, which will be compared to the -data sample stored in struct dim in order to decide on the algorithm's next +:c:type:`struct dim_sample <dim_sample>` describes a data sample, +which will be compared to the data sample stored in :c:type:`struct dim <dim>` +in order to decide on the algorithm's next step. The sample should include bytes, packets and interrupts, measured by the driver. @@ -110,9 +105,10 @@ main net_dim() function. The recommended method is to call net_dim() on each interrupt. Since Net DIM has a built-in moderation and it might decide to skip iterations under certain conditions, there is no need to moderate the net_dim() calls as well. As mentioned above, the driver needs to provide an object of type -struct dim to the net_dim() function call. It is advised for each entity -using Net DIM to hold a struct dim as part of its data structure and use it -as the main Net DIM API object. The struct dim_sample should hold the latest +:c:type:`struct dim <dim>` to the net_dim() function call. It is advised for +each entity using Net DIM to hold a :c:type:`struct dim <dim>` as part of its +data structure and use it as the main Net DIM API object. +The :c:type:`struct dim_sample <dim_sample>` should hold the latest bytes, packets and interrupts count. No need to perform any calculations, just include the raw data. @@ -124,19 +120,19 @@ the data flow. After the work is done, Net DIM algorithm needs to be set to the proper state in order to move to the next iteration. -Part IV: Example -================= +Example +======= The following code demonstrates how to register a driver to Net DIM. The actual usage is not complete but it should make the outline of the usage clear. -my_driver.c: +.. code-block:: c -#include <linux/dim.h> + #include <linux/dim.h> -/* Callback for net DIM to schedule on a decision to change moderation */ -void my_driver_do_dim_work(struct work_struct *work) -{ + /* Callback for net DIM to schedule on a decision to change moderation */ + void my_driver_do_dim_work(struct work_struct *work) + { /* Get struct dim from struct work_struct */ struct dim *dim = container_of(work, struct dim, work); @@ -145,11 +141,11 @@ void my_driver_do_dim_work(struct work_struct *work) /* Signal net DIM work is done and it should move to next iteration */ dim->state = DIM_START_MEASURE; -} + } -/* My driver's interrupt handler */ -int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...) -{ + /* My driver's interrupt handler */ + int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...) + { ... /* A struct to hold current measured data */ struct dim_sample dim_sample; @@ -162,13 +158,19 @@ int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...) /* Call net DIM */ net_dim(&my_entity->dim, dim_sample); ... -} + } -/* My entity's initialization function (my_entity was already allocated) */ -int my_driver_init_my_entity(struct my_driver_entity *my_entity, ...) -{ + /* My entity's initialization function (my_entity was already allocated) */ + int my_driver_init_my_entity(struct my_driver_entity *my_entity, ...) + { ... /* Initiate struct work_struct with my driver's callback function */ INIT_WORK(&my_entity->dim.work, my_driver_do_dim_work); ... -} + } + +Dynamic Interrupt Moderation (DIM) library API +============================================== + +.. kernel-doc:: include/linux/dim.h + :internal: diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst index e47863575917..91c5ff8e161e 100644 --- a/Documentation/process/changes.rst +++ b/Documentation/process/changes.rst @@ -31,7 +31,7 @@ you probably needn't concern yourself with pcmciautils. ====================== =============== ======================================== GNU C 4.6 gcc --version GNU make 3.81 make --version -binutils 2.21 ld -v +binutils 2.23 ld -v flex 2.5.35 flex --version bison 2.0 bison --version util-linux 2.10o fdformat --version @@ -76,7 +76,7 @@ You will need GNU make 3.81 or later to build the kernel. Binutils -------- -Binutils 2.21 or newer is needed to build the kernel. +Binutils 2.23 or newer is needed to build the kernel. pkg-config ---------- diff --git a/Documentation/x86/boot.rst b/Documentation/x86/boot.rst index fa7ddc0428c8..5325c71ca877 100644 --- a/Documentation/x86/boot.rst +++ b/Documentation/x86/boot.rst @@ -1399,8 +1399,8 @@ must have read/write permission; CS must be __BOOT_CS and DS, ES, SS must be __BOOT_DS; interrupt must be disabled; %rsi must hold the base address of the struct boot_params. -EFI Handover Protocol -===================== +EFI Handover Protocol (deprecated) +================================== This protocol allows boot loaders to defer initialisation to the EFI boot stub. The boot loader is required to load the kernel/initrd(s) @@ -1408,6 +1408,12 @@ from the boot media and jump to the EFI handover protocol entry point which is hdr->handover_offset bytes from the beginning of startup_{32,64}. +The boot loader MUST respect the kernel's PE/COFF metadata when it comes +to section alignment, the memory footprint of the executable image beyond +the size of the file itself, and any other aspect of the PE/COFF header +that may affect correct operation of the image as a PE/COFF binary in the +execution context provided by the EFI firmware. + The function prototype for the handover entry point looks like this:: efi_main(void *handle, efi_system_table_t *table, struct boot_params *bp) @@ -1419,9 +1425,18 @@ UEFI specification. 'bp' is the boot loader-allocated boot params. The boot loader *must* fill out the following fields in bp:: - - hdr.code32_start - hdr.cmd_line_ptr - hdr.ramdisk_image (if applicable) - hdr.ramdisk_size (if applicable) All other fields should be zero. + +NOTE: The EFI Handover Protocol is deprecated in favour of the ordinary PE/COFF + entry point, combined with the LINUX_EFI_INITRD_MEDIA_GUID based initrd + loading protocol (refer to [0] for an example of the bootloader side of + this), which removes the need for any knowledge on the part of the EFI + bootloader regarding the internal representation of boot_params or any + requirements/limitations regarding the placement of the command line + and ramdisk in memory, or the placement of the kernel image itself. + +[0] https://github.com/u-boot/u-boot/commit/ec80b4735a593961fe701cc3a5d717d4739b0fd0 diff --git a/MAINTAINERS b/MAINTAINERS index ff043097ea0e..6851ef7cf1bd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -159,8 +159,8 @@ 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 -W: http://www.lsi.com S: Supported +W: http://www.lsi.com F: drivers/scsi/3w-* 53C700 AND 53C700-66 SCSI DRIVER @@ -175,9 +175,9 @@ M: Jukka Rissanen <jukka.rissanen@linux.intel.com> L: linux-bluetooth@vger.kernel.org L: linux-wpan@vger.kernel.org S: Maintained -F: net/6lowpan/ -F: include/net/6lowpan.h 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> @@ -185,6 +185,23 @@ 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: http://wireless.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.txt +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: Realtek linux nic maintainers <nic_swsd@realtek.com> M: Heiner Kallweit <hkallweit1@gmail.com> @@ -210,33 +227,33 @@ 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 -S: Maintained F: Documentation/filesystems/9p.rst F: fs/9p/ -F: net/9p/ F: include/net/9p/ -F: include/uapi/linux/virtio_9p.h 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 -S: Maintained F: drivers/media/dvb-frontends/a8293* AACRAID SCSI RAID DRIVER M: Adaptec OEM Raid Solutions <aacraid@microsemi.com> L: linux-scsi@vger.kernel.org -W: http://www.adaptec.com/ S: Supported +W: http://www.adaptec.com/ F: Documentation/scsi/aacraid.rst F: drivers/scsi/aacraid/ @@ -320,9 +337,9 @@ M: Len Brown <lenb@kernel.org> L: linux-acpi@vger.kernel.org S: Supported W: https://01.org/linux-acpi -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm 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/ @@ -353,10 +370,10 @@ L: devel@acpica.org S: Supported W: https://acpica.org/ W: https://github.com/acpica/acpica/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm 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/ @@ -391,9 +408,9 @@ R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> R: Mika Westerberg <mika.westerberg@linux.intel.com> L: linux-acpi@vger.kernel.org S: Supported -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm 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 @@ -419,44 +436,44 @@ F: drivers/platform/x86/wmi.c F: include/uapi/linux/wmi.h AD1889 ALSA SOUND DRIVER -W: https://parisc.wiki.kernel.org/index.php/AD1889 L: linux-parisc@vger.kernel.org S: Maintained +W: https://parisc.wiki.kernel.org/index.php/AD1889 F: sound/pci/ad1889.* 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 -S: Supported 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 -S: Supported 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 -S: Supported 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 -S: Supported 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 -S: Supported F: drivers/input/touchscreen/ad7879.c ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR) @@ -465,12 +482,12 @@ S: Maintained ADF7242 IEEE 802.15.4 RADIO DRIVER M: Michael Hennerich <michael.hennerich@analog.com> -W: https://wiki.analog.com/ADF7242 -W: http://ez.analog.com/community/linux-device-drivers L: linux-wpan@vger.kernel.org S: Supported -F: drivers/net/ieee802154/adf7242.c +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> @@ -487,8 +504,8 @@ F: drivers/hwmon/adm1029.c ADM8211 WIRELESS DRIVER L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/ S: Orphan +W: http://wireless.kernel.org/ F: drivers/net/wireless/admtek/adm8211.* ADP1653 FLASH CONTROLLER DRIVER @@ -500,28 +517,28 @@ 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 -S: Supported -F: drivers/mfd/adp5520.c -F: drivers/video/backlight/adp5520_bl.c -F: drivers/leds/leds-adp5520.c 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 -S: Supported -F: drivers/input/keyboard/adp5588-keys.c 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 -S: Supported F: drivers/video/backlight/adp8860_bl.c ADT746X FAN DRIVER @@ -546,39 +563,39 @@ F: drivers/scsi/advansys.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 -S: Supported -F: drivers/input/misc/adxl34x.c F: Documentation/devicetree/bindings/iio/accel/adi,adxl345.yaml +F: drivers/input/misc/adxl34x.c ADXL372 THREE-AXIS DIGITAL ACCELEROMETER DRIVER M: Stefan Popa <stefan.popa@analog.com> -W: http://ez.analog.com/community/linux-device-drivers 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_spi.c F: drivers/iio/accel/adxl372_i2c.c -F: Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml +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 -S: Maintained 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 -S: Maintained F: drivers/media/dvb-frontends/af9033* AFFS FILE SYSTEM @@ -592,15 +609,15 @@ AFS FILESYSTEM M: David Howells <dhowells@redhat.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 -F: Documentation/filesystems/afs.rst -W: https://www.infradead.org/~dhowells/kafs/ AGPGART DRIVER M: David Airlie <airlied@linux.ie> -T: git git://anongit.freedesktop.org/drm/drm S: Maintained +T: git git://anongit.freedesktop.org/drm/drm F: drivers/char/agp/ F: include/linux/agp* F: include/uapi/linux/agp* @@ -621,9 +638,9 @@ F: drivers/scsi/aic7xxx/ AIMSLAB FM RADIO RECEIVER DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/radio/radio-aimslab* AIO @@ -636,11 +653,11 @@ 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 -S: Maintained F: drivers/media/usb/airspy/ ALACRITECH GIGABIT ETHERNET DRIVER @@ -648,18 +665,11 @@ M: Lino Sanfilippo <LinoSanfilippo@gmx.de> S: Maintained F: drivers/net/ethernet/alacritech/* -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/* - ALCATEL SPEEDTOUCH USB DRIVER M: Duncan Sands <duncan.sands@free.fr> L: linux-usb@vger.kernel.org -W: http://www.linux-usb.org/SpeedTouch/ S: Maintained +W: http://www.linux-usb.org/SpeedTouch/ F: drivers/usb/atm/speedtch.c F: drivers/usb/atm/usbatm.c @@ -677,11 +687,11 @@ F: drivers/i2c/busses/i2c-ali1563.c ALL SENSORS DLH SERIES PRESSURE SENSORS DRIVER M: Tomislav Denis <tomislav.denis@avl.com> -W: http://www.allsensors.com/ -S: Maintained L: linux-iio@vger.kernel.org -F: drivers/iio/pressure/dlhl60d.c +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> @@ -690,6 +700,14 @@ L: linux-media@vger.kernel.org S: Maintained F: drivers/staging/media/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 @@ -722,8 +740,8 @@ ALPHA PORT M: Richard Henderson <rth@twiddle.net> M: Ivan Kokshaysky <ink@jurassic.park.msu.ru> M: Matt Turner <mattst88@gmail.com> -S: Odd Fixes L: linux-alpha@vger.kernel.org +S: Odd Fixes F: arch/alpha/ ALPS PS/2 TOUCHPAD DRIVER @@ -738,7 +756,6 @@ F: drivers/i2c/busses/i2c-altera.c ALTERA MAILBOX DRIVER M: Ley Foon Tan <ley.foon.tan@intel.com> -L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) S: Maintained F: drivers/mailbox/mailbox-altera.c @@ -760,25 +777,29 @@ S: Maintained F: drivers/gpio/gpio-altera-a10sr.c F: drivers/mfd/altera-a10sr.c F: drivers/reset/reset-a10sr.c -F: include/linux/mfd/altera-a10sr.h F: include/dt-bindings/reset/altr,rst-mgr-a10sr.h +F: include/linux/mfd/altera-a10sr.h ALTERA TRIPLE SPEED ETHERNET DRIVER M: Thor Thayer <thor.thayer@linux.intel.com> L: netdev@vger.kernel.org -L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) 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 -L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) S: Maintained -F: drivers/tty/serial/altera_uart.c F: drivers/tty/serial/altera_jtaguart.c -F: include/linux/altera_uart.h +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 THERMAL MMIO DRIVER M: Talel Shenhar <talel@amazon.com> @@ -801,8 +822,8 @@ AMAZON RDMA EFA DRIVER M: Gal Pressman <galpress@amazon.com> R: Yossi Leybovich <sleybo@amazon.com> L: linux-rdma@vger.kernel.org -Q: https://patchwork.kernel.org/project/linux-rdma/list/ S: Supported +Q: https://patchwork.kernel.org/project/linux-rdma/list/ F: drivers/infiniband/hw/efa/ F: include/uapi/rdma/efa-abi.h @@ -817,8 +838,8 @@ AMD DISPLAY CORE M: Harry Wentland <harry.wentland@amd.com> M: Leo Li <sunpeng.li@amd.com> L: amd-gfx@lists.freedesktop.org -T: git git://people.freedesktop.org/~agd5f/linux S: Supported +T: git git://people.freedesktop.org/~agd5f/linux F: drivers/gpu/drm/amd/display/ AMD FAM15H PROCESSOR POWER MONITORING DRIVER @@ -843,32 +864,32 @@ 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) -W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html 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/ -F: arch/x86/include/asm/geode.h AMD IOMMU (AMD-VI) M: Joerg Roedel <joro@8bytes.org> L: iommu@lists.linux-foundation.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git F: drivers/iommu/amd_iommu*.[ch] F: include/linux/amd-iommu.h AMD KFD M: Felix Kuehling <Felix.Kuehling@amd.com> L: amd-gfx@lists.freedesktop.org -T: git git://people.freedesktop.org/~agd5f/linux S: Supported +T: git git://people.freedesktop.org/~agd5f/linux 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/vi_structs.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 MP2 I2C DRIVER @@ -883,8 +904,8 @@ AMD POWERPLAY M: Evan Quan <evan.quan@amd.com> L: amd-gfx@lists.freedesktop.org S: Supported -F: drivers/gpu/drm/amd/powerplay/ T: git git://people.freedesktop.org/~agd5f/linux +F: drivers/gpu/drm/amd/powerplay/ AMD SEATTLE DEVICE TREE SUPPORT M: Brijesh Singh <brijeshkumar.singh@amd.com> @@ -897,82 +918,82 @@ AMD XGBE DRIVER M: Tom Lendacky <thomas.lendacky@amd.com> L: netdev@vger.kernel.org S: Supported -F: drivers/net/ethernet/amd/xgbe/ F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi +F: drivers/net/ethernet/amd/xgbe/ ANALOG DEVICES INC AD5686 DRIVER M: Stefan Popa <stefan.popa@analog.com> L: linux-pm@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported +W: http://ez.analog.com/community/linux-device-drivers F: drivers/iio/dac/ad5686* F: drivers/iio/dac/ad5696* ANALOG DEVICES INC AD5758 DRIVER M: Stefan Popa <stefan.popa@analog.com> L: linux-iio@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/dac/ad5758.c +W: http://ez.analog.com/community/linux-device-drivers F: Documentation/devicetree/bindings/iio/dac/ad5758.txt +F: drivers/iio/dac/ad5758.c ANALOG DEVICES INC AD7091R5 DRIVER M: Beniamin Bia <beniamin.bia@analog.com> L: linux-iio@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/adc/ad7091r5.c +W: http://ez.analog.com/community/linux-device-drivers F: Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml +F: drivers/iio/adc/ad7091r5.c ANALOG DEVICES INC AD7124 DRIVER M: Stefan Popa <stefan.popa@analog.com> L: linux-iio@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/adc/ad7124.c +W: http://ez.analog.com/community/linux-device-drivers F: Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml +F: drivers/iio/adc/ad7124.c ANALOG DEVICES INC AD7192 DRIVER M: Alexandru Tachici <alexandru.tachici@analog.com> L: linux-iio@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/adc/ad7192.c +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 -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/adc/ad7292.c +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 AD7606 DRIVER M: Stefan Popa <stefan.popa@analog.com> M: Beniamin Bia <beniamin.bia@analog.com> L: linux-iio@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/adc/ad7606.c +W: http://ez.analog.com/community/linux-device-drivers F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml +F: drivers/iio/adc/ad7606.c ANALOG DEVICES INC AD7768-1 DRIVER M: Stefan Popa <stefan.popa@analog.com> L: linux-iio@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/adc/ad7768-1.c +W: http://ez.analog.com/community/linux-device-drivers F: Documentation/devicetree/bindings/iio/adc/adi,ad7768-1.txt +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 -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/iio/adc/ad7780.c +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> @@ -983,53 +1004,53 @@ F: drivers/media/i2c/ad9389b* ANALOG DEVICES INC ADGS1408 DRIVER M: Mircea Caprioru <mircea.caprioru@analog.com> S: Supported -F: drivers/mux/adgs1408.c F: Documentation/devicetree/bindings/mux/adi,adgs1408.txt +F: drivers/mux/adgs1408.c ANALOG DEVICES INC ADIN DRIVER M: Alexandru Ardelean <alexaundru.ardelean@analog.com> L: netdev@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/net/phy/adin.c +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: Alexandru Ardelean <alexandru.ardelean@analog.com> -S: Supported L: linux-iio@vger.kernel.org -F: include/linux/iio/imu/adis.h +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> -S: Supported L: linux-iio@vger.kernel.org +S: Supported W: http://ez.analog.com/community/linux-device-drivers -F: drivers/iio/imu/adis16460.c F: Documentation/devicetree/bindings/iio/imu/adi,adis16460.yaml +F: drivers/iio/imu/adis16460.c ANALOG DEVICES INC ADM1177 DRIVER M: Beniamin Bia <beniamin.bia@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com> L: linux-hwmon@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers S: Supported -F: drivers/hwmon/adm1177.c +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: Stefan Popa <stefan.popa@analog.com> L: linux-pm@vger.kernel.org -W: http://ez.analog.com/community/linux-device-drivers 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 -W: http://ez.analog.com/community/linux-device-drivers S: Supported +W: http://ez.analog.com/community/linux-device-drivers F: drivers/media/i2c/adv7180.c ANALOG DEVICES INC ADV748X DRIVER @@ -1060,44 +1081,44 @@ 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 -S: Supported -F: sound/soc/codecs/adau* -F: sound/soc/codecs/adav* F: sound/soc/codecs/ad1* F: sound/soc/codecs/ad7* -F: sound/soc/codecs/ssm* +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> -W: http://ez.analog.com/community/linux-device-drivers S: Supported +W: http://ez.analog.com/community/linux-device-drivers F: drivers/dma/dma-axi-dmac.c +ANALOG DEVICES INC HMC425A DRIVER +M: Beniamin Bia <beniamin.bia@analog.com> +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/amplifiers/adi,hmc425a.yaml +F: drivers/iio/amplifiers/hmc425a.c + ANALOG DEVICES INC IIO DRIVERS M: Lars-Peter Clausen <lars@metafoo.de> M: Michael Hennerich <Michael.Hennerich@analog.com> M: Stefan Popa <stefan.popa@analog.com> +S: Supported W: http://wiki.analog.com/ W: http://ez.analog.com/community/linux-device-drivers -S: Supported F: Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 F: Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 F: drivers/iio/*/ad* F: drivers/iio/adc/ltc249* -X: drivers/iio/*/adjd* F: drivers/staging/iio/*/ad* - -ANALOG DEVICES INC HMC425A DRIVER -M: Beniamin Bia <beniamin.bia@analog.com> -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/amplifiers/adi,hmc425a.yaml -F: drivers/iio/amplifiers/hmc425a.c +X: drivers/iio/*/adjd* ANALOGBITS PLL LIBRARIES M: Paul Walmsley <paul.walmsley@sifive.com> @@ -1109,13 +1130,13 @@ ANDES ARCHITECTURE M: Nick Hu <nickhu@andestech.com> M: Greentime Hu <green.hu@gmail.com> M: Vincent Chen <deanbo422@gmail.com> -T: git https://git.kernel.org/pub/scm/linux/kernel/git/greentime/linux.git S: Supported -F: arch/nds32/ +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/ -K: nds32 +F: arch/nds32/ N: nds32 +K: nds32 ANDROID CONFIG FRAGMENTS M: Rob Herring <robh@kernel.org> @@ -1129,9 +1150,9 @@ M: Todd Kjos <tkjos@android.com> M: Martijn Coenen <maco@android.com> M: Joel Fernandes <joel@joelfernandes.org> M: Christian Brauner <christian@brauner.io> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git L: devel@driverdev.osuosl.org S: Supported +T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git F: drivers/android/ F: drivers/staging/android/ @@ -1175,18 +1196,18 @@ 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 -F: drivers/char/apm-emulation.c 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 -S: Supported -F: security/apparmor/ F: Documentation/admin-guide/LSM/apparmor.rst +F: security/apparmor/ APPLE BCM5974 MULTITOUCH DRIVER M: Henrik Rydberg <rydberg@bitmath.org> @@ -1204,9 +1225,9 @@ APPLETALK NETWORK LAYER L: netdev@vger.kernel.org S: Odd fixes F: drivers/net/appletalk/ -F: 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> @@ -1216,8 +1237,8 @@ F: arch/arm64/boot/dts/apm/ APPLIED MICRO (APM) X-GENE SOC EDAC M: Khuong Dinh <khuong@os.amperecomputing.com> S: Supported -F: drivers/edac/xgene_edac.c 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> @@ -1230,17 +1251,17 @@ M: Iyappan Subramanian <iyappan@os.amperecomputing.com> M: Keyur Chudgar <keyur@os.amperecomputing.com> M: Quan Nguyen <quan@os.amperecomputing.com> S: Supported -F: drivers/net/ethernet/apm/xgene/ -F: drivers/net/phy/mdio-xgene.c 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/phy/mdio-xgene.c APPLIED MICRO (APM) X-GENE SOC PMU M: Khuong Dinh <khuong@os.amperecomputing.com> S: Supported -F: drivers/perf/xgene_pmu.c 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> @@ -1254,8 +1275,8 @@ L: netdev@vger.kernel.org S: Supported W: https://www.marvell.com/ Q: http://patchwork.ozlabs.org/project/netdev/list/ -F: drivers/net/ethernet/aquantia/atlantic/ F: Documentation/networking/device_drivers/aquantia/atlantic.txt +F: drivers/net/ethernet/aquantia/atlantic/ AQUANTIA ETHERNET DRIVER PTP SUBSYSTEM M: Egor Pomozov <epomozov@marvell.com> @@ -1273,8 +1294,8 @@ F: drivers/video/fbdev/core/fb_defio.c ARC PGU DRM DRIVER M: Alexey Brodkin <abrodkin@synopsys.com> S: Supported -F: drivers/gpu/drm/arc/ F: Documentation/devicetree/bindings/display/snps,arcpgu.txt +F: drivers/gpu/drm/arc/ ARCNET NETWORK LAYER M: Michael Grzeschik <m.grzeschik@pengutronix.de> @@ -1292,6 +1313,12 @@ 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) @@ -1302,13 +1329,13 @@ 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: arch/arm/boot/dts/arm-realview-* -F: arch/arm/boot/dts/integrator* -F: arch/arm/boot/dts/versatile* F: drivers/clk/versatile/ F: drivers/i2c/busses/i2c-versatile.c F: drivers/irqchip/irq-versatile-fpga.c @@ -1316,12 +1343,6 @@ F: drivers/mtd/maps/physmap_of_versatile.c F: drivers/power/reset/arm-versatile-reboot.c F: drivers/soc/versatile/ -ARM HDLCD DRM DRIVER -M: Liviu Dudau <liviu.dudau@arm.com> -S: Supported -F: drivers/gpu/drm/arm/hdlcd_* -F: Documentation/devicetree/bindings/display/arm,hdlcd.txt - ARM KOMEDA DRM-KMS DRIVER M: James (Qian) Wang <james.qian.wang@arm.com> M: Liviu Dudau <liviu.dudau@arm.com> @@ -1329,20 +1350,10 @@ 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: drivers/gpu/drm/arm/display/include/ -F: drivers/gpu/drm/arm/display/komeda/ F: Documentation/devicetree/bindings/display/arm,komeda.txt F: Documentation/gpu/komeda-kms.rst - -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: drivers/gpu/drm/arm/ -F: Documentation/devicetree/bindings/display/arm,malidp.txt -F: Documentation/gpu/afbc.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> @@ -1355,32 +1366,42 @@ 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/mach-rpc/floppydma.S 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> -S: Maintained L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -F: arch/arm*/kernel/perf_* -F: arch/arm/oprofile/common.c -F: arch/arm*/kernel/hw_breakpoint.c +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: arch/arm/oprofile/common.c F: drivers/perf/* F: include/linux/perf/arm_pmu.h -F: Documentation/devicetree/bindings/arm/pmu.yaml -F: Documentation/devicetree/bindings/perf/ ARM PORT M: Russell King <linux@armlinux.org.uk> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.armlinux.org.uk/ 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/ @@ -1433,12 +1454,6 @@ S: Maintained F: Documentation/devicetree/bindings/interrupt-controller/arm,vic.txt F: drivers/irqchip/irq-vic.c -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 - ARM SMMU DRIVERS M: Will Deacon <will@kernel.org> R: Robin Murphy <robin.murphy@arm.com> @@ -1446,24 +1461,31 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained F: Documentation/devicetree/bindings/iommu/arm,smmu* F: drivers/iommu/arm-smmu* -F: drivers/iommu/io-pgtable-arm.c F: drivers/iommu/io-pgtable-arm-v7s.c +F: drivers/iommu/io-pgtable-arm.c 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/arm/arm-soc.git F: arch/arm/mach-*/ F: arch/arm/plat-*/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git 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) S: Maintained -N: owl -F: arch/arm/mach-actions/ +F: Documentation/devicetree/bindings/arm/actions.yaml +F: Documentation/devicetree/bindings/clock/actions,owl-cmu.txt +F: Documentation/devicetree/bindings/dma/owl-dma.txt +F: Documentation/devicetree/bindings/i2c/i2c-owl.txt +F: Documentation/devicetree/bindings/mmc/owl-mmc.yaml +F: Documentation/devicetree/bindings/pinctrl/actions,s900-pinctrl.txt +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* @@ -1474,14 +1496,7 @@ F: drivers/pinctrl/actions/* F: drivers/soc/actions/ F: include/dt-bindings/power/owl-* F: include/linux/soc/actions/ -F: Documentation/devicetree/bindings/arm/actions.yaml -F: Documentation/devicetree/bindings/clock/actions,owl-cmu.txt -F: Documentation/devicetree/bindings/dma/owl-dma.txt -F: Documentation/devicetree/bindings/i2c/i2c-owl.txt -F: Documentation/devicetree/bindings/mmc/owl-mmc.yaml -F: Documentation/devicetree/bindings/pinctrl/actions,s900-pinctrl.txt -F: Documentation/devicetree/bindings/power/actions,owl-sps.txt -F: Documentation/devicetree/bindings/timer/actions,owl-timer.txt +N: owl ARM/ADS SPHERE MACHINE SUPPORT M: Lennert Buytenhek <kernel@wantstofly.org> @@ -1508,85 +1523,77 @@ M: Maxime Ripard <mripard@kernel.org> M: Chen-Yu Tsai <wens@csie.org> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained -N: sun[x456789]i -N: sun50i +T: git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git F: arch/arm/mach-sunxi/ F: arch/arm64/boot/dts/allwinner/ F: drivers/clk/sunxi-ng/ F: drivers/pinctrl/sunxi/ F: drivers/soc/sunxi/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git - -Allwinner A10 CSI driver -M: Maxime Ripard <mripard@kernel.org> -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -F: drivers/media/platform/sunxi/sun4i-csi/ -F: Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml -S: Maintained +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/meson* F: include/dt-bindings/clock/gxbb* -F: Documentation/devicetree/bindings/clock/amlogic* - -ARM/Amlogic Meson SoC support -M: Kevin Hilman <khilman@baylibre.com> -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -L: linux-amlogic@lists.infradead.org -W: http://linux-meson.com/ -S: Maintained -F: arch/arm/mach-meson/ -F: arch/arm/boot/dts/meson* -F: arch/arm64/boot/dts/amlogic/ -F: drivers/pinctrl/meson/ -F: drivers/mmc/host/meson* -F: drivers/soc/amlogic/ -F: drivers/rtc/rtc-meson* -N: meson +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: drivers/crypto/amlogic/ 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: sound/soc/meson/ F: Documentation/devicetree/bindings/sound/amlogic* +F: sound/soc/meson/ + +ARM/Amlogic Meson SoC support +M: Kevin Hilman <khilman@baylibre.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 <antoine.tenart@bootlin.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained -F: arch/arm/mach-alpine/ F: arch/arm/boot/dts/alpine* +F: arch/arm/mach-alpine/ F: arch/arm64/boot/dts/al/ F: drivers/*/*alpine* ARM/ARTPEC MACHINE SUPPORT M: Jesper Nilsson <jesper.nilsson@axis.com> M: Lars Persson <lars.persson@axis.com> -S: Maintained L: linux-arm-kernel@axis.com -F: arch/arm/mach-artpec +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* -F: Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt ARM/ASPEED I2C DRIVER M: Brendan Higgins <brendanhiggins@google.com> @@ -1595,41 +1602,41 @@ 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: drivers/irqchip/irq-aspeed-i2c-ic.c -F: drivers/i2c/busses/i2c-aspeed.c -F: Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt 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) -Q: https://patchwork.ozlabs.org/project/linux-aspeed/list/ 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/mach-aspeed/ 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: arch/arm64/boot/dts/bitmain/ -F: drivers/clk/clk-bm1880.c -F: drivers/pinctrl/pinctrl-bm1880.c 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/mach-highbank/ -F: arch/arm/boot/dts/highbank.dts 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> @@ -1698,19 +1705,19 @@ R: Suzuki K Poulose <suzuki.poulose@arm.com> R: Mike Leach <mike.leach@linaro.org> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained -F: drivers/hwtracing/coresight/* -F: include/dt-bindings/arm/coresight-cti-dt.h -F: Documentation/trace/coresight/* -F: Documentation/devicetree/bindings/arm/coresight.txt +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/ABI/testing/sysfs-bus-coresight-devices-* -F: tools/perf/arch/arm/util/pmu.c +F: Documentation/devicetree/bindings/arm/coresight.txt +F: Documentation/trace/coresight/* +F: drivers/hwtracing/coresight/* +F: include/dt-bindings/arm/coresight-cti-dt.h 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/util/cs-etm.* +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> @@ -1720,11 +1727,11 @@ 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) -T: git git://github.com/ulli-kroll/linux.git S: Maintained +T: git git://github.com/ulli-kroll/linux.git F: Documentation/devicetree/bindings/arm/gemini.txt -F: Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.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/mach-gemini/ F: drivers/net/ethernet/cortina/ @@ -1734,36 +1741,36 @@ F: drivers/rtc/rtc-ftrtc010.c ARM/CSR SIRFPRIMA2 MACHINE SUPPORT M: Barry Song <baohua@kernel.org> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git F: arch/arm/boot/dts/prima2* F: arch/arm/mach-prima2/ F: drivers/clk/sirf/ -F: drivers/clocksource/timer-prima2.c F: drivers/clocksource/timer-atlas7.c -N: [^a-z]sirf +F: drivers/clocksource/timer-prima2.c X: drivers/gnss +N: [^a-z]sirf ARM/CZ.NIC TURRIS MOX SUPPORT M: Marek Behun <marek.behun@nic.cz> -W: http://mox.turris.cz S: Maintained +W: http://mox.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: include/linux/moxtet.h F: drivers/bus/moxtet.c F: drivers/firmware/turris-mox-rwtm.c F: drivers/gpio/gpio-moxtet.c +F: include/linux/moxtet.h ARM/EBSA110 MACHINE SUPPORT M: Russell King <linux@armlinux.org.uk> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.armlinux.org.uk/ S: Maintained +W: http://www.armlinux.org.uk/ F: arch/arm/mach-ebsa110/ F: drivers/net/ethernet/amd/am79c961a.* @@ -1790,8 +1797,8 @@ 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) -W: http://www.armlinux.org.uk/ S: Maintained +W: http://www.armlinux.org.uk/ F: arch/arm/include/asm/hardware/dec21285.h F: arch/arm/mach-footbridge/ @@ -1804,20 +1811,9 @@ 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 -X: drivers/media/i2c/ - -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/mach-imx/*vf610* -F: arch/arm/boot/dts/vf* ARM/FREESCALE LAYERSCAPE ARM ARCHITECTURE M: Shawn Guo <shawnguo@kernel.org> @@ -1829,6 +1825,17 @@ 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) @@ -1851,22 +1858,22 @@ 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) -W: http://www.hisilicon.com S: Supported +W: http://www.hisilicon.com T: git git://github.com/hisilicon/linux-hisi.git -F: arch/arm/mach-hisi/ 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> -W: www.jlime.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/jornada720.c 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> @@ -1958,8 +1965,8 @@ ARM/LPC32XX SOC SUPPORT M: Vladimir Zapolskiy <vz@mleia.com> M: Sylvain Lemieux <slemieux.tyco@gmail.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://github.com/vzapolskiy/linux-lpc32xx.git 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/ @@ -1980,14 +1987,14 @@ 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.infradead.org/linux-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: arch/arm/boot/dts/dove* -F: arch/arm/boot/dts/orion5x* -T: git git://git.infradead.org/linux-mvebu.git ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K, CN9130 SOC support M: Jason Cooper <jason@lakedaemon.net> @@ -1996,6 +2003,7 @@ 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.infradead.org/linux-mvebu.git F: arch/arm/boot/dts/armada* F: arch/arm/boot/dts/kirkwood* F: arch/arm/configs/mvebu_*_defconfig @@ -2009,7 +2017,6 @@ F: drivers/irqchip/irq-armada-370-xp.c F: drivers/irqchip/irq-mvebu-* F: drivers/pinctrl/mvebu/ F: drivers/rtc/rtc-armada38x.c -T: git git://git.infradead.org/linux-mvebu.git ARM/Mediatek RTC DRIVER M: Eddie Huang <eddie.huang@mediatek.com> @@ -2027,9 +2034,9 @@ 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.bcnfs.org/ C: irc://chat.freenode.net/linux-mediatek -S: Maintained F: arch/arm/boot/dts/mt6* F: arch/arm/boot/dts/mt7* F: arch/arm/boot/dts/mt8* @@ -2045,36 +2052,36 @@ 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: drivers/phy/mediatek/ F: Documentation/devicetree/bindings/phy/phy-mtk-* +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 -S: Supported -N: at91 -N: atmel -F: arch/arm/mach-at91/ -F: include/soc/at91/ 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/MIOA701 MACHINE SUPPORT M: Robert Jarzmik <robert.jarzmik@free.fr> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -F: arch/arm/mach-pxa/mioa701.c S: Maintained +F: arch/arm/mach-pxa/mioa701.c ARM/NEC MOBILEPRO 900/c MACHINE SUPPORT M: Michael Petchkovsky <mkpetch@internode.on.net> @@ -2084,13 +2091,16 @@ ARM/NOMADIK/U300/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: Documentation/devicetree/bindings/i2c/i2c-stu300.txt +F: arch/arm/boot/dts/ste-* F: arch/arm/mach-nomadik/ F: arch/arm/mach-u300/ F: arch/arm/mach-ux500/ -F: drivers/soc/ux500/ -F: arch/arm/boot/dts/ste-* F: drivers/clk/clk-nomadik.c F: drivers/clk/clk-u300.c F: drivers/clocksource/clksrc-dbx500-prcmu.c @@ -2104,8 +2114,8 @@ F: drivers/iio/adc/ab8500-gpadc.c F: drivers/mfd/ab3100* F: drivers/mfd/ab8500* F: drivers/mfd/abx500* -F: drivers/mfd/dbx500* F: drivers/mfd/db8500* +F: drivers/mfd/dbx500* F: drivers/pinctrl/nomadik/ F: drivers/pinctrl/pinctrl-coh901* F: drivers/pinctrl/pinctrl-u300.c @@ -2113,11 +2123,8 @@ F: drivers/rtc/rtc-ab3100.c F: drivers/rtc/rtc-ab8500.c F: drivers/rtc/rtc-coh901331.c F: drivers/rtc/rtc-pl031.c +F: drivers/soc/ux500/ F: drivers/watchdog/coh901327_wdt.c -F: Documentation/devicetree/bindings/arm/ste-* -F: Documentation/devicetree/bindings/arm/ux500/ -F: Documentation/devicetree/bindings/arm/ux500.yaml -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik.git ARM/NUVOTON NPCM ARCHITECTURE M: Avi Fishman <avifishman70@gmail.com> @@ -2128,25 +2135,25 @@ R: Nancy Yuen <yuenn@google.com> R: Benjamin Fair <benjaminfair@google.com> L: openbmc@lists.ozlabs.org (moderated for non-subscribers) S: Supported -F: arch/arm/mach-npcm/ +F: Documentation/devicetree/bindings/*/*/*npcm* +F: Documentation/devicetree/bindings/*/*npcm* F: arch/arm/boot/dts/nuvoton-npcm* -F: include/dt-bindings/clock/nuvoton,npcm7xx-clock.h +F: arch/arm/mach-npcm/ F: drivers/*/*npcm* -F: Documentation/devicetree/bindings/*/*npcm* -F: Documentation/devicetree/bindings/*/*/*npcm* +F: include/dt-bindings/clock/nuvoton,npcm7xx-clock.h ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT L: openmoko-kernel@lists.openmoko.org (subscribers-only) -W: http://wiki.openmoko.org/wiki/Neo_FreeRunner S: Orphan -F: arch/arm/mach-s3c24xx/mach-gta02.c +W: http://wiki.openmoko.org/wiki/Neo_FreeRunner F: arch/arm/mach-s3c24xx/gta02.h +F: arch/arm/mach-s3c24xx/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) -W: http://www.digriz.org.uk/ts78xx/kernel S: Maintained +W: http://www.digriz.org.uk/ts78xx/kernel F: arch/arm/mach-orion5x/ts78xx-* ARM/OXNAS platform support @@ -2154,71 +2161,72 @@ 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/mach-oxnas/ F: arch/arm/boot/dts/ox8*.dts* +F: arch/arm/mach-oxnas/ N: oxnas ARM/PALM TREO SUPPORT M: Tomas Cech <sleep_walker@suse.com> L: linux-arm-kernel@lists.infradead.org -W: http://hackndev.com 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 -W: http://hackndev.com S: Maintained -F: arch/arm/mach-pxa/include/mach/palmtx.h -F: arch/arm/mach-pxa/palmtx.c -F: arch/arm/mach-pxa/palmt5.* +W: http://hackndev.com F: arch/arm/mach-pxa/include/mach/palmld.h -F: arch/arm/mach-pxa/palmld.c -F: arch/arm/mach-pxa/palmte2.* 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 -W: http://hackndev.com S: Maintained +W: http://hackndev.com F: arch/arm/mach-pxa/palmz72.* ARM/PLEB SUPPORT M: Peter Chubb <pleb@gelato.unsw.edu.au> -W: http://www.disy.cse.unsw.edu.au/Hardware/PLEB 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) -W: http://www.armlinux.org.uk/ 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 -F: Documentation/devicetree/bindings/soc/qcom/ +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/*/*/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/extcon/extcon-qcom* -F: drivers/iommu/msm* -F: drivers/i2c/busses/i2c-qup.c 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 @@ -2227,14 +2235,13 @@ F: drivers/phy/qualcomm/ F: drivers/power/*/msm* F: drivers/reset/reset-qcom-* F: drivers/scsi/ufs/ufs-qcom.* -F: drivers/spi/spi-qup.c 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* -T: git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git ARM/RADISYS ENP2611 MACHINE SUPPORT M: Lennert Buytenhek <kernel@wantstofly.org> @@ -2246,42 +2253,42 @@ 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: 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 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: arch/arm64/boot/dts/realtek/ F: Documentation/devicetree/bindings/arm/realtek.yaml +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 -S: Supported -F: arch/arm64/boot/dts/renesas/ 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) -W: http://www.armlinux.org.uk/ 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 @@ -2296,18 +2303,18 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git 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: drivers/*/*rockchip* -F: drivers/*/*/*rockchip* F: sound/soc/rockchip/ N: rockchip @@ -2316,28 +2323,28 @@ M: Kukjin Kim <kgene@kernel.org> M: Krzysztof Kozlowski <krzk@kernel.org> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) -Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/ 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/boot/dts/exynos* -F: arch/arm64/boot/dts/exynos/ -F: arch/arm/plat-samsung/ +F: arch/arm/mach-exynos*/ F: arch/arm/mach-s3c24*/ F: arch/arm/mach-s3c64xx/ F: arch/arm/mach-s5p*/ -F: arch/arm/mach-exynos*/ -F: drivers/*/*s3c24* +F: arch/arm/plat-samsung/ +F: arch/arm64/boot/dts/exynos/ F: drivers/*/*/*s3c24* +F: drivers/*/*s3c24* F: drivers/*/*s3c64xx* F: drivers/*/*s5pv210* F: drivers/memory/samsung/ F: drivers/soc/samsung/ F: drivers/tty/serial/samsung* F: include/linux/soc/samsung/ -F: Documentation/arm/samsung/ -F: Documentation/devicetree/bindings/arm/samsung/ -F: Documentation/devicetree/bindings/power/pd-samsung.yaml N: exynos ARM/SAMSUNG MOBILE MACHINE SUPPORT @@ -2360,8 +2367,8 @@ M: Marek Szyprowski <m.szyprowski@samsung.com> L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) L: linux-media@vger.kernel.org S: Maintained -F: drivers/media/platform/s5p-cec/ F: Documentation/devicetree/bindings/media/s5p-cec.txt +F: drivers/media/platform/s5p-cec/ ARM/SAMSUNG S5P SERIES JPEG CODEC SUPPORT M: Andrzej Pietrasiewicz <andrzejtp2010@gmail.com> @@ -2386,9 +2393,10 @@ 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 -S: Supported +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* @@ -2399,20 +2407,19 @@ 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: Documentation/devicetree/bindings/arm/renesas.yaml F: drivers/soc/renesas/ F: include/linux/soc/renesas/ ARM/SOCFPGA ARCHITECTURE M: Dinh Nguyen <dinguyen@kernel.org> S: Maintained -F: arch/arm/mach-socfpga/ +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/ -W: http://www.rocketboards.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux.git ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT M: Dinh Nguyen <dinguyen@kernel.org> @@ -2437,19 +2444,20 @@ N: sc2731 ARM/STI ARCHITECTURE M: Patrice Chotard <patrice.chotard@st.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.stlinux.com S: Maintained +W: http://www.stlinux.com F: Documentation/devicetree/bindings/i2c/i2c-st.txt -F: arch/arm/mach-sti/ 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/rc/st_rc.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 @@ -2463,7 +2471,6 @@ 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: drivers/ata/ahci_st.c F: include/linux/remoteproc/st_slim_rproc.h ARM/STM32 ARCHITECTURE @@ -2473,19 +2480,19 @@ 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 -N: stm32 -N: stm 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/mach-berlin/ F: arch/arm/boot/dts/berlin* +F: arch/arm/mach-berlin/ F: arch/arm64/boot/dts/synaptics/ ARM/TANGO ARCHITECTURE @@ -2505,8 +2512,8 @@ M: Hans Verkuil <hverkuil-cisco@xs4all.nl> L: linux-tegra@vger.kernel.org L: linux-media@vger.kernel.org S: Maintained -F: drivers/media/platform/tegra-cec/ F: Documentation/devicetree/bindings/media/tegra-cec.txt +F: drivers/media/platform/tegra-cec/ ARM/TETON BGA MACHINE SUPPORT M: "Mark F. Brown" <mark.brown314@gmail.com> @@ -2519,23 +2526,13 @@ L: linux-kernel@vger.kernel.org S: Maintained F: drivers/memory/*emif* -ARM/TEXAS INSTRUMENTS K3 ARCHITECTURE -M: Tero Kristo <t-kristo@ti.com> -M: Nishanth Menon <nm@ti.com> -L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -S: Supported -F: Documentation/devicetree/bindings/arm/ti/k3.txt -F: arch/arm64/boot/dts/ti/Makefile -F: arch/arm64/boot/dts/ti/k3-* -F: include/dt-bindings/pinctrl/k3.h - ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE M: Santosh Shilimkar <ssantosh@kernel.org> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained -F: arch/arm/mach-keystone/ -F: arch/arm/boot/dts/keystone-* 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> @@ -2556,6 +2553,16 @@ L: linux-kernel@vger.kernel.org S: Maintained F: drivers/power/reset/keystone-reset.c +ARM/TEXAS INSTRUMENTS K3 ARCHITECTURE +M: Tero Kristo <t-kristo@ti.com> +M: Nishanth Menon <nm@ti.com> +L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) +S: Supported +F: Documentation/devicetree/bindings/arm/ti/k3.txt +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) @@ -2569,8 +2576,8 @@ S: Maintained ARM/UNIPHIER ARCHITECTURE M: Masahiro Yamada <yamada.masahiro@socionext.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.git 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 @@ -2591,24 +2598,17 @@ F: drivers/reset/reset-uniphier.c F: drivers/tty/serial/8250/8250_uniphier.c N: uniphier -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/ - 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/arm64/boot/dts/arm/ F: arch/arm/mach-vexpress/ -F: */*/vexpress* -F: */*/*/vexpress* +F: arch/arm64/boot/dts/arm/ F: drivers/clk/versatile/clk-vexpress-osc.c F: drivers/clocksource/timer-versatile.c N: mps2 @@ -2616,16 +2616,16 @@ N: mps2 ARM/VFP SUPPORT M: Russell King <linux@armlinux.org.uk> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.armlinux.org.uk/ 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/vpac270.c F: arch/arm/mach-pxa/include/mach/vpac270.h +F: arch/arm/mach-pxa/vpac270.c ARM/VT8500 ARM ARCHITECTURE M: Tony Prisk <linux@prisktech.co.nz> @@ -2649,26 +2649,14 @@ 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/z2.c F: arch/arm/mach-pxa/include/mach/z2.h +F: arch/arm/mach-pxa/z2.c ARM/ZTE ARCHITECTURE M: Jun Nie <jun.nie@linaro.org> M: Shawn Guo <shawnguo@kernel.org> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained -F: arch/arm/boot/dts/zx2967* -F: arch/arm/mach-zx/ -F: arch/arm64/boot/dts/zte/ -F: drivers/clk/zte/ -F: drivers/dma/zx_dma.c -F: drivers/gpio/gpio-zx.c -F: drivers/i2c/busses/i2c-zx2967.c -F: drivers/mmc/host/dw_mmc-zx.* -F: drivers/pinctrl/zte/ -F: drivers/soc/zte/ -F: drivers/thermal/zx2967_thermal.c -F: drivers/watchdog/zx2967_wdt.c F: Documentation/devicetree/bindings/arm/zte.yaml F: Documentation/devicetree/bindings/clock/zx2967*.txt F: Documentation/devicetree/bindings/dma/zxdma.txt @@ -2681,6 +2669,18 @@ F: Documentation/devicetree/bindings/soc/zte/ F: Documentation/devicetree/bindings/sound/zte,*.txt F: Documentation/devicetree/bindings/thermal/zx2967-thermal.txt F: Documentation/devicetree/bindings/watchdog/zte,zx2967-wdt.txt +F: arch/arm/boot/dts/zx2967* +F: arch/arm/mach-zx/ +F: arch/arm64/boot/dts/zte/ +F: drivers/clk/zte/ +F: drivers/dma/zx_dma.c +F: drivers/gpio/gpio-zx.c +F: drivers/i2c/busses/i2c-zx2967.c +F: drivers/mmc/host/dw_mmc-zx.* +F: drivers/pinctrl/zte/ +F: drivers/soc/zte/ +F: drivers/thermal/zx2967_thermal.c +F: drivers/watchdog/zx2967_wdt.c F: include/dt-bindings/clock/zx2967*.h F: include/dt-bindings/soc/zte,*.h F: sound/soc/codecs/zx_aud96p22.c @@ -2689,32 +2689,32 @@ F: sound/soc/zte/ 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 -S: Supported -F: arch/arm/mach-zynq/ -F: drivers/cpuidle/cpuidle-zynq.c -F: drivers/block/xsysace.c -N: zynq -N: xilinx F: Documentation/devicetree/bindings/i2c/i2c-cadence.txt F: Documentation/devicetree/bindings/i2c/i2c-xiic.txt +F: arch/arm/mach-zynq/ +F: drivers/block/xsysace.c F: drivers/clocksource/timer-cadence-ttc.c -F: drivers/i2c/busses/i2c-cadence.c -F: drivers/mmc/host/sdhci-of-arasan.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) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git S: Maintained -F: arch/arm64/ -X: arch/arm64/boot/dts/ +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/ AS3645A LED FLASH CONTROLLER DRIVER M: Sakari Ailus <sakari.ailus@iki.fi> @@ -2725,16 +2725,16 @@ F: drivers/leds/leds-as3645a.c ASAHI KASEI AK7375 LENS VOICE COIL DRIVER M: Tianshu Qiu <tian.shu.qiu@intel.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/ak7375.c +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 -W: http://www.akm.com/ S: Supported +W: http://www.akm.com/ F: drivers/iio/magnetometer/ak8974.c ASC7621 HARDWARE MONITOR DRIVER @@ -2766,8 +2766,8 @@ 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: drivers/media/platform/aspeed-video.c 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> @@ -2789,33 +2789,33 @@ M: David Howells <dhowells@redhat.com> L: keyrings@vger.kernel.org S: Maintained F: Documentation/crypto/asymmetric-keys.txt -F: include/linux/verification.h -F: include/crypto/public_key.h -F: include/crypto/pkcs7.h 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> -W: http://sourceforge.net/projects/xscaleiop S: Odd fixes +W: http://sourceforge.net/projects/xscaleiop F: Documentation/crypto/async-tx-api.txt F: crypto/async_tx/ F: drivers/dma/ -F: include/linux/dmaengine.h F: include/linux/async_tx.h +F: include/linux/dmaengine.h AT24 EEPROM DRIVER M: Bartosz Golaszewski <bgolaszewski@baylibre.com> L: linux-i2c@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git 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> -W: http://www.openaoe.org/ S: Supported +W: http://www.openaoe.org/ F: Documentation/admin-guide/aoe/ F: drivers/block/aoe/ @@ -2829,11 +2829,11 @@ 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 -S: Maintained -F: drivers/phy/qualcomm/phy-ath79-usb.c 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> @@ -2846,16 +2846,16 @@ M: Jiri Slaby <jirislaby@gmail.com> M: Nick Kossifidis <mickflemm@gmail.com> M: Luis Chamberlain <mcgrof@kernel.org> L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/ath5k S: Maintained +W: http://wireless.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: http://wireless.kernel.org/en/users/Drivers/ath6kl T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git -S: Supported F: drivers/net/wireless/ath/ath6kl/ ATI_REMOTE2 DRIVER @@ -2873,17 +2873,17 @@ ATLX ETHERNET DRIVERS M: Jay Cliburn <jcliburn@gmail.com> 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 -S: Maintained 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 -W: http://linux-atm.sourceforge.net S: Maintained +W: http://linux-atm.sourceforge.net F: drivers/atm/ F: include/linux/atm* F: include/uapi/linux/atm* @@ -2895,17 +2895,17 @@ F: drivers/net/ethernet/cadence/ ATMEL MAXTOUCH DRIVER M: Nick Dyer <nick@shmanahar.org> -T: git git://github.com/ndyer/linux.git S: Maintained +T: git git://github.com/ndyer/linux.git F: Documentation/devicetree/bindings/input/atmel,maxtouch.txt 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/ -S: Maintained F: drivers/net/wireless/atmel/atmel* ATOMIC INFRASTRUCTURE @@ -2921,25 +2921,25 @@ F: scripts/atomic/ ATTO EXPRESSSAS SAS/SATA RAID SCSI DRIVER M: Bradley Grove <linuxdrivers@attotech.com> L: linux-scsi@vger.kernel.org -W: http://www.attotech.com 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 -F: drivers/net/ieee802154/at86rf230.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 -S: Supported F: include/linux/audit.h F: include/uapi/linux/audit.h F: kernel/audit* @@ -2960,10 +2960,10 @@ F: drivers/iio/adc/hx711.c AX.25 NETWORK LAYER M: Ralf Baechle <ralf@linux-mips.org> L: linux-hams@vger.kernel.org -W: http://www.linux-ax25.org/ S: Maintained -F: include/uapi/linux/ax25.h +W: http://www.linux-ax25.org/ F: include/net/ax25.h +F: include/uapi/linux/ax25.h F: net/ax25/ AXENTIA ARM DEVICES @@ -2984,11 +2984,11 @@ F: sound/soc/atmel/tse850-pcm5142.c AXI-FAN-CONTROL HARDWARE MONITOR DRIVER M: Nuno Sá <nuno.sa@analog.com> -W: http://ez.analog.com/community/linux-device-drivers L: linux-hwmon@vger.kernel.org S: Supported -F: drivers/hwmon/axi-fan-control.c +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> @@ -3000,32 +3000,32 @@ 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 -S: Maintained 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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -W: http://wireless.kernel.org/en/users/Drivers/b43 S: Odd Fixes +W: http://wireless.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 -W: http://wireless.kernel.org/en/users/Drivers/b43 S: Maintained +W: http://wireless.kernel.org/en/users/Drivers/b43 F: drivers/net/wireless/broadcom/b43legacy/ BACKLIGHT CLASS/SUBSYSTEM @@ -3033,14 +3033,14 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git 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 -F: Documentation/devicetree/bindings/leds/backlight -F: Documentation/ABI/stable/sysfs-class-backlight -F: Documentation/ABI/testing/sysfs-class-backlight BATMAN ADVANCED M: Marek Lindner <mareklindner@neomailbox.ch> @@ -3048,12 +3048,12 @@ 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: irc://chat.freenode.net/batman -Q: https://patchwork.open-mesh.org/project/batman/list/ T: git https://git.open-mesh.org/linux-merge.git -S: Maintained F: Documentation/ABI/obsolete/sysfs-class-net-batman-adv F: Documentation/ABI/obsolete/sysfs-class-net-mesh F: Documentation/networking/batman-adv.rst @@ -3064,25 +3064,25 @@ F: net/batman-adv/ BAYCOM/HDLCDRV DRIVERS FOR AX.25 M: Thomas Sailer <t.sailer@alumni.ethz.ch> L: linux-hams@vger.kernel.org -W: http://www.baycom.org/~tom/ham/ham.html 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 -S: Maintained F: drivers/md/bcache/ BDISP ST MEDIA DRIVER M: Fabien Dessenne <fabien.dessenne@st.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 @@ -3104,8 +3104,8 @@ M: Paolo Valente <paolo.valente@linaro.org> M: Jens Axboe <axboe@kernel.dk> L: linux-block@vger.kernel.org S: Maintained -F: block/bfq-* F: Documentation/block/bfq-iosched.rst +F: block/bfq-* BFS FILE SYSTEM M: "Tigran A. Aivazian" <aivazian.tigran@gmail.com> @@ -3122,8 +3122,8 @@ F: drivers/leds/leds-blinkm.c BLOCK LAYER M: Jens Axboe <axboe@kernel.dk> L: linux-block@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git F: block/ F: drivers/block/ F: kernel/trace/blktrace.c @@ -3139,30 +3139,30 @@ BLUETOOTH DRIVERS M: Marcel Holtmann <marcel@holtmann.org> M: Johan Hedberg <johan.hedberg@gmail.com> L: linux-bluetooth@vger.kernel.org +S: Maintained 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 -S: Maintained F: drivers/bluetooth/ BLUETOOTH SUBSYSTEM M: Marcel Holtmann <marcel@holtmann.org> M: Johan Hedberg <johan.hedberg@gmail.com> L: linux-bluetooth@vger.kernel.org +S: Maintained 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 -S: Maintained -F: net/bluetooth/ 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 -W: http://sourceforge.net/projects/bonding/ S: Supported +W: http://sourceforge.net/projects/bonding/ F: drivers/net/bonding/ F: include/uapi/linux/if_bonding.h @@ -3170,8 +3170,8 @@ BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER M: Dan Robertson <dan@dlrobertson.com> L: linux-iio@vger.kernel.org S: Maintained -F: drivers/iio/accel/bma400* 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> @@ -3184,13 +3184,13 @@ R: John Fastabend <john.fastabend@gmail.com> R: KP Singh <kpsingh@chromium.org> L: netdev@vger.kernel.org L: bpf@vger.kernel.org +S: Supported +Q: https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147 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 -Q: https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147 -S: Supported -F: arch/*/net/* -F: Documentation/networking/filter.txt F: Documentation/bpf/ +F: Documentation/networking/filter.txt +F: arch/*/net/* F: include/linux/bpf* F: include/linux/filter.h F: include/trace/events/xdp.h @@ -3207,8 +3207,8 @@ F: samples/bpf/ F: tools/bpf/ F: tools/lib/bpf/ F: tools/testing/selftests/bpf/ -K: bpf N: bpf +K: bpf BPF JIT for ARM M: Shubham Bansal <illusionist.neo@gmail.com> @@ -3312,31 +3312,31 @@ S: Supported F: drivers/net/dsa/b53/* F: include/linux/platform_data/b53.h +BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE +M: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> +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://github.com/anholt/linux +F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml +F: drivers/pci/controller/pcie-brcmstb.c +F: drivers/staging/vc04_services +N: bcm2711 +N: bcm2835 + 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 -T: git git://github.com/broadcom/mach-bcm S: Maintained +T: git git://github.com/broadcom/mach-bcm +F: arch/arm/mach-bcm/ N: bcm281* N: bcm113* N: bcm216* N: kona -F: arch/arm/mach-bcm/ - -BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE -M: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -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) -T: git git://github.com/anholt/linux -S: Maintained -N: bcm2711 -N: bcm2835 -F: drivers/staging/vc04_services -F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml -F: drivers/pci/controller/pcie-brcmstb.c BROADCOM BCM47XX MIPS ARCHITECTURE M: Hauke Mehrtens <hauke@hauke-m.de> @@ -3353,25 +3353,25 @@ M: Rafał Miłecki <zajec5@gmail.com> M: bcm-kernel-feedback-list@broadcom.com L: linux-arm-kernel@lists.infradead.org S: Maintained -F: arch/arm/mach-bcm/bcm_5301x.c -F: arch/arm/boot/dts/bcm5301x*.dtsi F: arch/arm/boot/dts/bcm470* +F: arch/arm/boot/dts/bcm5301x*.dtsi 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 S: Maintained -F: arch/arm/boot/dts/bcm53573* 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) -T: git git://github.com/broadcom/stblinux.git S: Maintained +T: git git://github.com/broadcom/stblinux.git N: bcm63xx BROADCOM BCM63XX/BCM33XX UDC DRIVER @@ -3384,16 +3384,16 @@ 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) -T: git git://github.com/broadcom/stblinux.git S: Maintained -F: arch/arm/mach-bcm/*brcmstb* +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: drivers/bus/brcmstb_gisb.c -F: arch/arm/mm/cache-b15-rac.c F: arch/arm/include/asm/hardware/cache-b15-rac.h -N: brcmstb -F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml +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 BMIPS CPUFREQ DRIVER M: Markus Mayer <mmayer@broadcom.com> @@ -3406,12 +3406,12 @@ BROADCOM BMIPS MIPS ARCHITECTURE M: Florian Fainelli <f.fainelli@gmail.com> L: bcm-kernel-feedback-list@broadcom.com L: linux-mips@vger.kernel.org -T: git git://github.com/broadcom/stblinux.git 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: arch/mips/boot/dts/brcm/bcm*.dts* F: drivers/irqchip/irq-bcm63* F: drivers/irqchip/irq-bcm7* F: drivers/irqchip/irq-brcmstb* @@ -3476,8 +3476,8 @@ M: Kamal Dasu <kdasu.kdev@gmail.com> L: linux-i2c@vger.kernel.org L: bcm-kernel-feedback-list@broadcom.com S: Supported -F: drivers/i2c/busses/i2c-brcmstb.c F: Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml +F: drivers/i2c/busses/i2c-brcmstb.c BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER M: Al Cooper <alcooperx@gmail.com> @@ -3499,8 +3499,14 @@ 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) -T: git git://github.com/broadcom/cygnus-linux.git 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 @@ -3516,12 +3522,6 @@ N: bcm586* N: bcm88312 N: hr2 N: stingray -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* BROADCOM KONA GPIO DRIVER M: Ray Jui <rjui@broadcom.com> @@ -3536,8 +3536,8 @@ M: Devesh Sharma <devesh.sharma@broadcom.com> M: Somnath Kotur <somnath.kotur@broadcom.com> M: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com> L: linux-rdma@vger.kernel.org -W: http://www.broadcom.com S: Supported +W: http://www.broadcom.com F: drivers/infiniband/hw/bnxt_re/ F: include/uapi/rdma/bnxt_re-abi.h @@ -3554,6 +3554,15 @@ 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.txt +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 @@ -3570,14 +3579,6 @@ S: Maintained F: Documentation/devicetree/bindings/thermal/brcm,avs-tmon.txt F: drivers/thermal/broadcom/brcmstb* -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 DPFE DRIVER M: Markus Mayer <mmayer@broadcom.com> M: bcm-kernel-feedback-list@broadcom.com @@ -3586,14 +3587,13 @@ S: Maintained F: Documentation/devicetree/bindings/memory-controllers/brcm,dpfe-cpu.txt F: drivers/memory/brcmstb_dpfe.c -BROADCOM SPI DRIVER +BROADCOM STB NAND FLASH DRIVER +M: Brian Norris <computersforpeace@gmail.com> M: Kamal Dasu <kdasu.kdev@gmail.com> -M: bcm-kernel-feedback-list@broadcom.com +L: linux-mtd@lists.infradead.org +L: bcm-kernel-feedback-list@broadcom.com S: Maintained -F: Documentation/devicetree/bindings/spi/brcm,spi-bcm-qspi.txt -F: drivers/spi/spi-bcm-qspi.* -F: drivers/spi/spi-brcmstb-qspi.c -F: drivers/spi/spi-iproc-qspi.c +F: drivers/mtd/nand/raw/brcmnand/ BROADCOM SYSTEMPORT ETHERNET DRIVER M: Florian Fainelli <f.fainelli@gmail.com> @@ -3636,8 +3636,8 @@ 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) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git 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 @@ -3652,10 +3652,10 @@ 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/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs.git -S: Maintained F: Documentation/filesystems/btrfs.rst F: fs/btrfs/ F: include/linux/btrfs* @@ -3664,9 +3664,9 @@ 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 -S: Odd fixes F: Documentation/media/v4l-drivers/bttv* F: drivers/media/pci/bt8xx/bttv* @@ -3674,10 +3674,10 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git S: Maintained -F: drivers/devfreq/exynos-bus.c +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> @@ -3689,40 +3689,40 @@ F: drivers/scsi/FlashPoint.* C-MEDIA CMI8788 DRIVER M: Clemens Ladisch <clemens@ladisch.de> L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git 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 -T: git https://github.com/c-sky/csky-linux.git S: Supported -F: arch/csky/ +T: git https://github.com/c-sky/csky-linux.git F: Documentation/devicetree/bindings/csky/ -F: drivers/irqchip/irq-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: Documentation/devicetree/bindings/timer/csky,* -K: csky +F: drivers/irqchip/irq-csky-* N: csky +K: csky C6X ARCHITECTURE M: Mark Salter <msalter@redhat.com> M: Aurelien Jacquiot <jacquiot.aurelien@gmail.com> L: linux-c6x-dev@linux-c6x.org -W: http://www.linux-c6x.org/wiki/index.php/Main_Page S: Maintained +W: http://www.linux-c6x.org/wiki/index.php/Main_Page F: arch/c6x/ CA8210 IEEE-802.15.4 RADIO DRIVER M: Harry Morris <h.morris@cascoda.com> L: linux-wpan@vger.kernel.org -W: https://github.com/Cascoda/ca8210-linux.git S: Maintained -F: drivers/net/ieee802154/ca8210.c +W: https://github.com/Cascoda/ca8210-linux.git F: Documentation/devicetree/bindings/net/ieee802154/ca8210.txt +F: drivers/net/ieee802154/ca8210.c CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS M: David Howells <dhowells@redhat.com> @@ -3742,22 +3742,22 @@ CADENCE NAND DRIVER M: Piotr Sroka <piotrs@cadence.com> L: linux-mtd@lists.infradead.org S: Maintained -F: drivers/mtd/nand/raw/cadence-nand-controller.c F: Documentation/devicetree/bindings/mtd/cadence-nand-controller.txt +F: drivers/mtd/nand/raw/cadence-nand-controller.c CADET FM/AM RADIO RECEIVER DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 M: Jonathan Corbet <corbet@lwn.net> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: Documentation/media/v4l-drivers/cafe_ccic* F: drivers/media/platform/marvell-ccic/ @@ -3766,8 +3766,8 @@ L: netdev@vger.kernel.org S: Orphan F: Documentation/networking/caif/ F: drivers/net/caif/ -F: include/uapi/linux/caif/ F: include/net/caif/ +F: include/uapi/linux/caif/ F: net/caif/ CAKE QDISC @@ -3780,16 +3780,16 @@ 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 -S: Maintained F: Documentation/devicetree/bindings/net/can/ F: drivers/net/can/ F: include/linux/can/dev.h F: include/linux/can/led.h -F: include/linux/can/rx-offload.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 @@ -3798,19 +3798,19 @@ 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 -S: Maintained F: Documentation/networking/can.rst -F: net/can/ 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/raw.h F: include/uapi/linux/can/gw.h +F: include/uapi/linux/can/raw.h +F: net/can/ CAN-J1939 NETWORK LAYER M: Robin van der Gracht <robin@protonic.nl> @@ -3819,8 +3819,8 @@ R: Pengutronix Kernel Team <kernel@pengutronix.de> L: linux-can@vger.kernel.org S: Maintained F: Documentation/networking/j1939.rst -F: net/can/j1939/ F: include/uapi/linux/can/j1939.h +F: net/can/j1939/ CAPABILITIES M: Serge Hallyn <serge@hallyn.com> @@ -3828,8 +3828,8 @@ L: linux-security-module@vger.kernel.org S: Supported F: include/linux/capability.h F: include/uapi/linux/capability.h -F: security/commoncap.c F: kernel/capability.c +F: security/commoncap.c CAPELLA MICROSYSTEMS LIGHT SENSOR DRIVER M: Kevin Tsai <ktsai@capellamicro.com> @@ -3839,14 +3839,14 @@ F: drivers/iio/light/cm* CARL9170 LINUX COMMUNITY WIRELESS DRIVER M: Christian Lamparter <chunkeey@googlemail.com> L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/carl9170 S: Maintained +W: http://wireless.kernel.org/en/users/Drivers/carl9170 F: drivers/net/wireless/ath/carl9170/ CAVIUM I2C DRIVER M: Robert Richter <rrichter@marvell.com> -W: http://www.marvell.com S: Supported +W: http://www.marvell.com F: drivers/i2c/busses/i2c-octeon* F: drivers/i2c/busses/i2c-thunderx* @@ -3855,76 +3855,76 @@ M: Derek Chickles <dchickles@marvell.com> M: Satanand Burla <sburla@marvell.com> M: Felix Manlunas <fmanlunas@marvell.com> L: netdev@vger.kernel.org -W: http://www.marvell.com S: Supported +W: http://www.marvell.com F: drivers/net/ethernet/cavium/liquidio/ CAVIUM MMC DRIVER M: Robert Richter <rrichter@marvell.com> -W: http://www.marvell.com S: Supported +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 -W: http://www.marvell.com S: Supported +W: http://www.marvell.com F: drivers/crypto/cavium/cpt/ CAVIUM THUNDERX2 ARM64 SOC M: Robert Richter <rrichter@marvell.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained -F: arch/arm64/boot/dts/cavium/thunder2-99xx* F: Documentation/devicetree/bindings/arm/cavium-thunder2.txt +F: arch/arm64/boot/dts/cavium/thunder2-99xx* 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 -F: Documentation/devicetree/bindings/net/ieee802154/cc2520.txt CCREE ARM TRUSTZONE CRYPTOCELL REE DRIVER M: Gilad Ben-Yossef <gilad@benyossef.com> L: linux-crypto@vger.kernel.org S: Supported -F: drivers/crypto/ccree/ W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family +F: drivers/crypto/ccree/ CEC FRAMEWORK M: Hans Verkuil <hverkuil-cisco@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.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/media/kapi/cec-core.rst F: Documentation/media/uapi/cec F: drivers/media/cec/ F: drivers/media/rc/keymaps/rc-cec.c -F: include/media/cec.h F: include/media/cec-notifier.h -F: include/uapi/linux/cec.h +F: include/media/cec.h F: include/uapi/linux/cec-funcs.h -F: Documentation/devicetree/bindings/media/cec.txt -F: Documentation/ABI/testing/debugfs-cec-error-inj +F: include/uapi/linux/cec.h CEC GPIO DRIVER M: Hans Verkuil <hverkuil-cisco@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org S: Supported -F: drivers/media/platform/cec-gpio/ +W: http://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/cec-gpio.txt +F: drivers/media/platform/cec-gpio/ CELL BROADBAND ENGINE ARCHITECTURE M: Arnd Bergmann <arnd@arndb.de> L: linuxppc-dev@lists.ozlabs.org -W: http://www.ibm.com/developerworks/power/cell/ 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 @@ -3936,23 +3936,23 @@ M: Ilya Dryomov <idryomov@gmail.com> M: Jeff Layton <jlayton@kernel.org> M: Sage Weil <sage@redhat.com> L: ceph-devel@vger.kernel.org +S: Supported W: http://ceph.com/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git T: git git://github.com/ceph/ceph-client.git -S: Supported -F: net/ceph/ F: include/linux/ceph/ F: include/linux/crush/ +F: net/ceph/ CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH) M: Jeff Layton <jlayton@kernel.org> M: Sage Weil <sage@redhat.com> M: Ilya Dryomov <idryomov@gmail.com> L: ceph-devel@vger.kernel.org +S: Supported W: http://ceph.com/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git T: git git://github.com/ceph/ceph-client.git -S: Supported F: Documentation/filesystems/ceph.rst F: fs/ceph/ @@ -3963,8 +3963,8 @@ L: keyrings@vger.kernel.org S: Maintained F: Documentation/admin-guide/module-signing.rst F: certs/ -F: scripts/sign-file.c F: scripts/extract-cert.c +F: scripts/sign-file.c CFAG12864B LCD DRIVER M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com> @@ -3978,28 +3978,11 @@ S: Maintained F: drivers/auxdisplay/cfag12864bfb.c F: include/linux/cfag12864b.h -802.11 (including CFG80211/NL80211) -M: Johannes Berg <johannes@sipsolutions.net> -L: linux-wireless@vger.kernel.org -W: http://wireless.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 -S: Maintained -F: net/wireless/ -F: include/uapi/linux/nl80211.h -F: include/linux/ieee80211.h -F: include/net/wext.h -F: include/net/cfg80211.h -F: include/net/iw_handler.h -F: include/net/ieee80211_radiotap.h -F: Documentation/driver-api/80211/cfg80211.rst -F: Documentation/networking/regulatory.txt - CHAR and MISC DRIVERS M: Arnd Bergmann <arnd@arndb.de> M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git 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 @@ -4019,9 +4002,9 @@ F: Documentation/translations/zh_CN/ CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER M: Peter Chen <Peter.Chen@nxp.com> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git 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 @@ -4044,22 +4027,22 @@ 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 -F: drivers/power/supply/cros_usbpd-charger.c - -CHROMEOS EC CODEC DRIVER -M: Cheng-Yi Chiang <cychiang@chromium.org> -S: Maintained -R: Enric Balletbo i Serra <enric.balletbo@collabora.com> -R: Guenter Roeck <groeck@chromium.org> -F: Documentation/devicetree/bindings/sound/google,cros-ec-codec.yaml -F: sound/soc/codecs/cros_ec_codec.* CIRRUS LOGIC AUDIO CODEC DRIVERS M: James Schulman <james.schulman@cirrus.com> @@ -4079,22 +4062,45 @@ 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.txt +F: Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.txt +F: Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt +F: Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt +F: Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt +F: Documentation/devicetree/bindings/sound/cirrus,lochnagar.txt +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: sound/soc/codecs/lochnagar-sc.c F: include/dt-bindings/clk/lochnagar.h F: include/dt-bindings/pinctrl/lochnagar.h F: include/linux/mfd/lochnagar* -F: Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt -F: Documentation/devicetree/bindings/clock/cirrus,lochnagar.txt -F: Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.txt -F: Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt -F: Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt -F: Documentation/devicetree/bindings/sound/cirrus,lochnagar.txt -F: Documentation/hwmon/lochnagar.rst +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/madera.txt +F: Documentation/devicetree/bindings/pinctrl/cirrus,madera-pinctrl.txt +F: Documentation/devicetree/bindings/sound/madera.txt +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> @@ -4124,29 +4130,6 @@ M: Parvi Kaustubhi <pkaustub@cisco.com> S: Supported F: drivers/infiniband/hw/usnic/ -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 -T: git https://github.com/CirrusLogic/linux-drivers.git -W: https://github.com/CirrusLogic/linux-drivers/wiki -S: Supported -F: Documentation/devicetree/bindings/mfd/madera.txt -F: Documentation/devicetree/bindings/pinctrl/cirrus,madera-pinctrl.txt -F: Documentation/devicetree/bindings/sound/madera.txt -F: include/dt-bindings/sound/madera* -F: include/linux/irqchip/irq-madera* -F: include/linux/mfd/madera/* -F: include/sound/madera* -F: drivers/gpio/gpio-madera* -F: drivers/irqchip/irq-madera* -F: drivers/mfd/madera* -F: drivers/mfd/cs47l* -F: drivers/pinctrl/cirrus/* -F: sound/soc/codecs/cs47l* -F: sound/soc/codecs/madera* - CLANG-FORMAT FILE M: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> S: Maintained @@ -4154,19 +4137,19 @@ F: .clang-format CLANG/LLVM BUILD SUPPORT L: clang-built-linux@googlegroups.com +S: Supported W: https://clangbuiltlinux.github.io/ B: https://github.com/ClangBuiltLinux/linux/issues C: irc://chat.freenode.net/clangbuiltlinux -S: Supported -K: \b(?i:clang|llvm)\b F: Documentation/kbuild/llvm.rst +K: \b(?i:clang|llvm)\b CLEANCACHE API M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> L: linux-kernel@vger.kernel.org S: Maintained -F: mm/cleancache.c F: include/linux/cleancache.h +F: mm/cleancache.c CLK API M: Russell King <linux@armlinux.org.uk> @@ -4178,10 +4161,10 @@ CLOCKSOURCE, CLOCKEVENT DRIVERS M: Daniel Lezcano <daniel.lezcano@linaro.org> M: Thomas Gleixner <tglx@linutronix.de> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core S: Supported -F: drivers/clocksource/ +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> @@ -4193,9 +4176,9 @@ F: drivers/platform/x86/classmate-laptop.c COBALT MEDIA DRIVER M: Hans Verkuil <hverkuil-cisco@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Supported +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/pci/cobalt/ COCCINELLE/Semantic Patches (SmPL) @@ -4204,19 +4187,19 @@ M: Gilles Muller <Gilles.Muller@lip6.fr> M: Nicolas Palix <nicolas.palix@imag.fr> M: Michal Marek <michal.lkml@markovi.net> L: cocci@systeme.lip6.fr (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc -W: http://coccinelle.lip6.fr/ 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/coccinelle/ 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 -W: http://www.coda.cs.cmu.edu/ S: Maintained +W: http://www.coda.cs.cmu.edu/ F: Documentation/filesystems/coda.txt F: fs/coda/ F: include/linux/coda*.h @@ -4232,30 +4215,30 @@ F: drivers/media/platform/coda/ CODE OF CONDUCT M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> S: Supported -F: Documentation/process/code-of-conduct.rst F: Documentation/process/code-of-conduct-interpretation.rst +F: Documentation/process/code-of-conduct.rst 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 -S: Maintained F: Documentation/devicetree/bindings/clock/ F: drivers/clk/ -X: drivers/clk/clkdev.c F: include/linux/clk-pr* F: include/linux/clk/ F: include/linux/of_clk.h +X: drivers/clk/clkdev.c COMMON INTERNET FILE SYSTEM (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 -S: Supported F: Documentation/admin-guide/cifs/ F: fs/cifs/ @@ -4290,15 +4273,15 @@ F: include/linux/compiler_attributes.h CONEXANT ACCESSRUNNER USB DRIVER L: accessrunner-general@lists.sourceforge.net -W: http://accessrunner.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> -T: git git://git.infradead.org/users/hch/configfs.git S: Supported +T: git git://git.infradead.org/users/hch/configfs.git F: fs/configfs/ F: include/linux/configfs.h @@ -4313,20 +4296,33 @@ M: Tejun Heo <tj@kernel.org> M: Li Zefan <lizefan@huawei.com> M: Johannes Weiner <hannes@cmpxchg.org> L: cgroups@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git S: Maintained -F: Documentation/admin-guide/cgroup-v2.rst +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: Li Zefan <lizefan@huawei.com> L: cgroups@vger.kernel.org +S: Maintained W: http://www.bullopensource.org/cpuset/ W: http://oss.sgi.com/projects/cpusets/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git -S: Maintained F: Documentation/admin-guide/cgroup-v1/cpusets.rst F: include/linux/cpuset.h F: kernel/cgroup/cpuset.c @@ -4341,19 +4337,6 @@ S: Maintained F: mm/memcontrol.c F: mm/swap_cgroup.c -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/blk-cgroup.c -F: include/linux/blk-cgroup.h -F: block/blk-throttle.c -F: block/blk-iolatency.c -F: block/bfq-cgroup.c - CORETEMP HARDWARE MONITORING DRIVER M: Fenghua Yu <fenghua.yu@intel.com> L: linux-hwmon@vger.kernel.org @@ -4363,8 +4346,8 @@ F: drivers/hwmon/coretemp.c COSA/SRP SYNC SERIAL DRIVER M: Jan "Yenya" Kasprzak <kas@fi.muni.cz> -W: http://www.fi.muni.cz/~kas/cosa/ S: Maintained +W: http://www.fi.muni.cz/~kas/cosa/ F: drivers/net/wan/cosa* COUNTER SUBSYSTEM @@ -4383,31 +4366,43 @@ 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" <rjw@rjwysocki.net> 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) -B: https://bugzilla.kernel.org 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: kernel/sched/cpufreq*.c F: include/linux/cpufreq.h F: include/linux/sched/cpufreq.h +F: kernel/sched/cpufreq*.c F: tools/testing/selftests/cpufreq/ -CPU FREQUENCY DRIVERS - VEXPRESS SPC ARM BIG LITTLE -M: Viresh Kumar <viresh.kumar@linaro.org> -M: Sudeep Holla <sudeep.holla@arm.com> +CPU IDLE TIME MANAGEMENT FRAMEWORK +M: "Rafael J. Wysocki" <rjw@rjwysocki.net> +M: Daniel Lezcano <daniel.lezcano@linaro.org> L: linux-pm@vger.kernel.org -W: http://www.arm.com/products/processors/technologies/biglittleprocessing.php S: Maintained -F: drivers/cpufreq/vexpress-spc-cpufreq.c +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> @@ -4428,8 +4423,8 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git 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 @@ -4439,8 +4434,8 @@ M: Kukjin Kim <kgene@kernel.org> L: linux-pm@vger.kernel.org L: linux-samsung-soc@vger.kernel.org S: Supported -F: drivers/cpuidle/cpuidle-exynos.c F: arch/arm/mach-exynos/pm.c +F: drivers/cpuidle/cpuidle-exynos.c CPUIDLE DRIVER - ARM PSCI M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> @@ -4450,18 +4445,6 @@ L: linux-arm-kernel@lists.infradead.org S: Supported F: drivers/cpuidle/cpuidle-psci.c -CPU IDLE TIME MANAGEMENT FRAMEWORK -M: "Rafael J. Wysocki" <rjw@rjwysocki.net> -M: Daniel Lezcano <daniel.lezcano@linaro.org> -L: linux-pm@vger.kernel.org -S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git -B: https://bugzilla.kernel.org -F: Documentation/admin-guide/pm/cpuidle.rst -F: Documentation/driver-api/pm/cpuidle.rst -F: drivers/cpuidle/* -F: include/linux/cpuidle.h - CRAMFS FILESYSTEM M: Nicolas Pitre <nico@fluxnic.net> S: Maintained @@ -4478,9 +4461,9 @@ 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 -S: Maintained F: Documentation/crypto/ F: Documentation/devicetree/bindings/crypto/ F: arch/*/crypto/ @@ -4500,9 +4483,9 @@ F: crypto/rng.c CS3308 MEDIA DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.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 @@ -4513,10 +4496,10 @@ F: sound/pci/cs5535audio/ CSI DRIVERS FOR ALLWINNER V3s M: Yong Deng <yong.deng@magewell.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/platform/sunxi/sun6i-csi/ +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> @@ -4526,18 +4509,18 @@ F: drivers/net/wireless/st/cw1200/ CX18 VIDEO4LINUX DRIVER M: Andy Walls <awalls@md.metrocast.net> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 @@ -4545,42 +4528,42 @@ 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/ -S: Maintained 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 -S: Odd fixes F: Documentation/media/v4l-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 -S: Maintained F: drivers/media/dvb-frontends/cxd2820r* CXGB3 ETHERNET DRIVER (CXGB3) M: Vishal Kulkarni <vishal@chelsio.com> L: netdev@vger.kernel.org -W: http://www.chelsio.com 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 -W: http://www.chelsio.com S: Supported +W: http://www.chelsio.com F: drivers/scsi/cxgbi/cxgb3i CXGB4 CRYPTO DRIVER (chcr) @@ -4588,37 +4571,37 @@ 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 -W: http://www.chelsio.com S: Supported +W: http://www.chelsio.com F: drivers/crypto/chelsio CXGB4 ETHERNET DRIVER (CXGB4) M: Vishal Kulkarni <vishal@chelsio.com> L: netdev@vger.kernel.org -W: http://www.chelsio.com 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 -W: http://www.chelsio.com 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 -W: http://www.openfabrics.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: Vishal Kulkarni <vishal@gmail.com> L: netdev@vger.kernel.org -W: http://www.chelsio.com S: Supported +W: http://www.chelsio.com F: drivers/net/ethernet/chelsio/cxgb4vf/ CXL (IBM Coherent Accelerator Processor Interface CAPI) DRIVER @@ -4626,12 +4609,12 @@ 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 -F: Documentation/powerpc/cxl.rst -F: Documentation/ABI/testing/sysfs-class-cxl CXLFLASH (IBM Coherent Accelerator Processor Interface CAPI Flash) SCSI DRIVER M: Manoj N. Kumar <manoj@linux.ibm.com> @@ -4639,37 +4622,37 @@ 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 -F: Documentation/powerpc/cxlflash.rst CYBERPRO FB DRIVER M: Russell King <linux@armlinux.org.uk> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.armlinux.org.uk/ S: Maintained +W: http://www.armlinux.org.uk/ F: drivers/video/fbdev/cyber2000fb.* CYCLADES ASYNC MUX DRIVER -W: http://www.cyclades.com/ S: Orphan +W: http://www.cyclades.com/ F: drivers/tty/cyclades.c F: include/linux/cyclades.h F: include/uapi/linux/cyclades.h CYCLADES PC300 DRIVER -W: http://www.cyclades.com/ S: Orphan +W: http://www.cyclades.com/ 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 -S: Maintained F: drivers/media/common/cypress_firmware* CYTTSP TOUCHSCREEN DRIVER @@ -4693,10 +4676,10 @@ F: include/linux/rtc/ds1685.h DAMA SLAVE for AX.25 M: Joerg Reuter <jreuter@yaina.de> -W: http://yaina.de/jreuter/ -W: http://www.qsl.net/dl1bke/ 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_* @@ -4722,34 +4705,34 @@ 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/ -S: Maintained F: Documentation/scsi/dc395x.rst F: drivers/scsi/dc395x.* DCCP PROTOCOL M: Gerrit Renker <gerrit@erg.abdn.ac.uk> L: dccp@vger.kernel.org -W: http://www.linuxfoundation.org/collaborate/workgroups/networking/dccp S: Maintained +W: http://www.linuxfoundation.org/collaborate/workgroups/networking/dccp F: include/linux/dccp.h -F: include/uapi/linux/dccp.h F: include/linux/tfrc.h +F: include/uapi/linux/dccp.h F: net/dccp/ DECnet NETWORK LAYER -W: http://linux-decnet.sourceforge.net L: linux-decnet-user@lists.sourceforge.net S: Orphan +W: http://linux-decnet.sourceforge.net F: Documentation/networking/decnet.txt F: net/decnet/ DECSTATION PLATFORM SUPPORT M: "Maciej W. Rozycki" <macro@linux-mips.org> L: linux-mips@vger.kernel.org -W: http://www.linux-mips.org/wiki/DECstation 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/ @@ -4759,18 +4742,18 @@ M: "Maciej W. Rozycki" <macro@linux-mips.org> S: Maintained F: drivers/net/fddi/defxx.* +DEFZA FDDI NETWORK DRIVER +M: "Maciej W. Rozycki" <macro@linux-mips.org> +S: Maintained +F: drivers/net/fddi/defza.* + DEINTERLACE DRIVERS FOR ALLWINNER H3 M: Jernej Skrabec <jernej.skrabec@siol.net> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/platform/sunxi/sun8i-di/ +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/allwinner,sun8i-h3-deinterlace.yaml - -DEFZA FDDI NETWORK DRIVER -M: "Maciej W. Rozycki" <macro@linux-mips.org> -S: Maintained -F: drivers/net/fddi/defza.* +F: drivers/media/platform/sunxi/sun8i-di/ DELL LAPTOP DRIVER M: Matthew Garrett <mjg59@srcf.ucam.org> @@ -4842,9 +4825,9 @@ F: drivers/platform/x86/dell-wmi.c DELTA ST MEDIA DRIVER M: Hugues Fruchet <hugues.fruchet@st.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Supported +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/platform/sti/delta DENALI NAND DRIVER @@ -4863,15 +4846,15 @@ F: include/linux/dma/edma.h DESIGNWARE USB2 DRD IP DRIVER M: Minas Harutyunyan <hminas@synopsys.com> L: linux-usb@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git 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 @@ -4888,47 +4871,55 @@ S: Maintained F: drivers/base/devcoredump.c F: include/linux/devcoredump.h +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: linux-nvdimm@lists.01.org +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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git 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: Documentation/devicetree/bindings/devfreq/ F: include/trace/events/devfreq.h DEVICE FREQUENCY EVENT (DEVFREQ-EVENT) M: Chanwoo Choi <cw00.choi@samsung.com> L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git S: Supported -F: drivers/devfreq/event/ +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 -F: Documentation/devicetree/bindings/devfreq/event/ DEVICE NUMBER REGISTRY M: Torben Mathiasen <device@lanana.org> -W: http://lanana.org/docs/device-list/index.html S: Maintained +W: http://lanana.org/docs/device-list/index.html 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/ -S: Maintained F: Documentation/admin-guide/device-mapper/ -F: drivers/md/Makefile F: drivers/md/Kconfig +F: drivers/md/Makefile F: drivers/md/dm* F: drivers/md/persistent-data/ F: include/linux/device-mapper.h @@ -4939,23 +4930,23 @@ DEVLINK M: Jiri Pirko <jiri@mellanox.com> L: netdev@vger.kernel.org S: Supported -F: net/core/devlink.c +F: Documentation/networking/devlink F: include/net/devlink.h F: include/uapi/linux/devlink.h -F: Documentation/networking/devlink +F: net/core/devlink.c DIALOG SEMICONDUCTOR DRIVERS M: Support Opensource <support.opensource@diasemi.com> -W: http://www.dialog-semiconductor.com/products S: Supported -F: Documentation/hwmon/da90??.rst -F: Documentation/devicetree/bindings/mfd/da90*.txt +W: http://www.dialog-semiconductor.com/products F: Documentation/devicetree/bindings/input/da90??-onkey.txt -F: Documentation/devicetree/bindings/thermal/da90??-thermal.txt +F: Documentation/devicetree/bindings/mfd/da90*.txt F: Documentation/devicetree/bindings/regulator/da92*.txt F: Documentation/devicetree/bindings/regulator/slg51000.txt -F: Documentation/devicetree/bindings/watchdog/da90??-wdt.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 @@ -4971,8 +4962,8 @@ F: drivers/power/supply/da91??-*.c F: drivers/regulator/da903x.c F: drivers/regulator/da9???-regulator.[ch] F: drivers/regulator/slg51000-regulator.[ch] -F: drivers/thermal/da90??-thermal.c 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/linux/mfd/da903x.h @@ -4997,25 +4988,6 @@ L: linux-i2c@vger.kernel.org S: Maintained F: drivers/i2c/busses/i2c-diolan-u2c.c -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: linux-nvdimm@lists.01.org -S: Supported -F: fs/dax.c -F: include/linux/dax.h -F: include/trace/events/fs_dax.h - -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: linux-nvdimm@lists.01.org -S: Supported -F: drivers/dax/ - DIRECTORY NOTIFICATION (DNOTIFY) M: Jan Kara <jack@suse.cz> R: Amir Goldstein <amir73il@gmail.com> @@ -5027,10 +4999,10 @@ 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 -S: Maintained DISKQUOTA M: Jan Kara <jack@suse.com> @@ -5045,84 +5017,84 @@ 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 -F: Documentation/fb/udlfb.rst 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 -S: Supported F: fs/dlm/ DMA BUFFER SHARING FRAMEWORK M: Sumit Semwal <sumit.semwal@linaro.org> -S: Maintained 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 -F: include/linux/*fence.h -F: Documentation/driver-api/dma-buf.rst K: dma_(buf|fence|resv) -T: git git://anongit.freedesktop.org/drm/drm-misc - -DMA-BUF HEAPS FRAMEWORK -M: Sumit Semwal <sumit.semwal@linaro.org> -R: Andrew F. Davis <afd@ti.com> -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> -S: Maintained -L: linux-media@vger.kernel.org -L: dri-devel@lists.freedesktop.org -L: linaro-mm-sig@lists.linaro.org (moderated for non-subscribers) -F: include/uapi/linux/dma-heap.h -F: include/linux/dma-heap.h -F: drivers/dma-buf/dma-heap.c -F: drivers/dma-buf/heaps/* -T: git git://anongit.freedesktop.org/drm/drm-misc DMA GENERIC OFFLOAD ENGINE SUBSYSTEM M: Vinod Koul <vkoul@kernel.org> L: dmaengine@vger.kernel.org -Q: https://patchwork.kernel.org/project/linux-dmaengine/list/ S: Maintained +Q: https://patchwork.kernel.org/project/linux-dmaengine/list/ +T: git git://git.infradead.org/users/vkoul/slave-dma.git +F: Documentation/devicetree/bindings/dma/ +F: Documentation/driver-api/dmaengine/ F: drivers/dma/ F: include/linux/dmaengine.h F: include/linux/of_dma.h -F: Documentation/devicetree/bindings/dma/ -F: Documentation/driver-api/dmaengine/ -T: git git://git.infradead.org/users/vkoul/slave-dma.git 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 -T: git git://git.infradead.org/users/hch/dma-mapping.git -W: http://git.infradead.org/users/hch/dma-mapping.git S: Supported -F: kernel/dma/ +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-noncoherent.h +F: kernel/dma/ + +DMA-BUF HEAPS FRAMEWORK +M: Sumit Semwal <sumit.semwal@linaro.org> +R: Andrew F. Davis <afd@ti.com> +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: drivers/memory/samsung/exynos5422-dmc.c F: Documentation/devicetree/bindings/memory-controllers/exynos5422-dmc.txt +F: drivers/memory/samsung/exynos5422-dmc.c DME1737 HARDWARE MONITOR DRIVER M: Juerg Haefliger <juergh@gmail.com> @@ -5144,48 +5116,48 @@ DOCUMENTATION M: Jonathan Corbet <corbet@lwn.net> L: linux-doc@vger.kernel.org S: Maintained +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/firmware-guide/acpi/ X: Documentation/devicetree/ +X: Documentation/firmware-guide/acpi/ X: Documentation/i2c/ X: Documentation/media/ X: Documentation/power/ X: Documentation/spi/ -T: git git://git.lwn.net/linux.git docs-next - -DOCUMENTATION/ITALIAN -M: Federico Vaga <federico.vaga@vaga.pv.it> -L: linux-doc@vger.kernel.org -S: Maintained -F: Documentation/translations/it_IT 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 -F: Documentation/sphinx/parse-headers.pl + +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 -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/dw9714.c +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.txt +F: drivers/media/i2c/dw9714.c DONGWOON DW9807 LENS VOICE COIL DRIVER M: Sakari Ailus <sakari.ailus@linux.intel.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/dw9807-vcm.c +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> @@ -5204,15 +5176,15 @@ DPAA2 ETHERNET DRIVER M: Ioana Radulescu <ruxandra.radulescu@nxp.com> L: netdev@vger.kernel.org S: Maintained +F: Documentation/networking/device_drivers/freescale/dpaa2/ethernet-driver.rst +F: Documentation/networking/device_drivers/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/dpni* -F: drivers/net/ethernet/freescale/dpaa2/dpmac* F: drivers/net/ethernet/freescale/dpaa2/dpkg.h -F: drivers/net/ethernet/freescale/dpaa2/Makefile -F: drivers/net/ethernet/freescale/dpaa2/Kconfig -F: Documentation/networking/device_drivers/freescale/dpaa2/ethernet-driver.rst -F: Documentation/networking/device_drivers/freescale/dpaa2/mac-phy-support.rst +F: drivers/net/ethernet/freescale/dpaa2/dpmac* +F: drivers/net/ethernet/freescale/dpaa2/dpni* DPAA2 ETHERNET SWITCH DRIVER M: Ioana Radulescu <ruxandra.radulescu@nxp.com> @@ -5224,8 +5196,8 @@ F: drivers/staging/fsl-dpaa2/ethsw DPT_I2O SCSI RAID DRIVER M: Adaptec OEM Raid Solutions <aacraid@microsemi.com> L: linux-scsi@vger.kernel.org -W: http://www.adaptec.com/ S: Maintained +W: http://www.adaptec.com/ F: drivers/scsi/dpt* F: drivers/scsi/dpt/ @@ -5233,19 +5205,19 @@ 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 -S: Supported +F: Documentation/admin-guide/blockdev/ F: drivers/block/drbd/ F: lib/lru_cache.c -F: Documentation/admin-guide/blockdev/ DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> R: "Rafael J. Wysocki" <rafael@kernel.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git 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/ @@ -5257,94 +5229,103 @@ F: lib/kobj* DRIVERS FOR ADAPTIVE VOLTAGE SCALING (AVS) M: Kevin Hilman <khilman@kernel.org> M: Nishanth Menon <nm@ti.com> +L: linux-pm@vger.kernel.org S: Maintained F: drivers/power/avs/ F: include/linux/power/smartreflex.h -L: linux-pm@vger.kernel.org + +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@siol.net> +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: Eric Anholt <eric@anholt.net> -T: git git://anongit.freedesktop.org/drm/drm-misc 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> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/panel/panel-arm-versatile.c +T: git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.txt - -DRM DRIVER FOR AST SERVER GRAPHICS CHIPS -M: Dave Airlie <airlied@redhat.com> -S: Odd Fixes -F: drivers/gpu/drm/ast/ +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 -T: git git://anongit.freedesktop.org/drm/drm-misc S: Supported -F: drivers/gpu/drm/aspeed/ +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> +S: Odd Fixes +F: drivers/gpu/drm/ast/ DRM DRIVER FOR BOCHS VIRTUAL GPU M: Gerd Hoffmann <kraxel@redhat.com> L: virtualization@lists.linux-foundation.org -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained +T: git git://anongit.freedesktop.org/drm/drm-misc F: drivers/gpu/drm/bochs/ DRM DRIVER FOR BOE HIMAX8279D PANELS M: Jerry Han <hanxu5@huaqin.corp-partner.google.com> S: Maintained -F: drivers/gpu/drm/panel/panel-boe-himax8279d.c F: Documentation/devicetree/bindings/display/panel/boe,himax8279d.txt +F: drivers/gpu/drm/panel/panel-boe-himax8279d.c DRM DRIVER FOR FARADAY TVE200 TV ENCODER M: Linus Walleij <linus.walleij@linaro.org> -T: git git://anongit.freedesktop.org/drm/drm-misc 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: drivers/gpu/drm/panel/panel-feixin-k101-im2ba02.c 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: drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c F: Documentation/devicetree/bindings/display/panel/feiyang,fy07024di26a30d.txt +F: drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c DRM DRIVER FOR GRAIN MEDIA GM12U320 PROJECTORS M: Hans de Goede <hdegoede@redhat.com> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained +T: git git://anongit.freedesktop.org/drm/drm-misc F: drivers/gpu/drm/tiny/gm12u320.c +DRM DRIVER FOR HX8357D PANELS +M: Eric Anholt <eric@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> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/tiny/ili9225.c +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> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/tiny/ili9486.c -F: Documentation/devicetree/bindings/display/ilitek,ili9486.yaml - -DRM DRIVER FOR HX8357D PANELS -M: Eric Anholt <eric@anholt.net> T: git git://anongit.freedesktop.org/drm/drm-misc -S: Maintained -F: drivers/gpu/drm/tiny/hx8357d.c -F: Documentation/devicetree/bindings/display/himax,hx8357d.txt +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 @@ -5363,10 +5344,10 @@ F: drivers/gpu/drm/mgag200/ DRM DRIVER FOR MI0283QT M: Noralf Trønnes <noralf@tronnes.org> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/tiny/mi0283qt.c +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> @@ -5374,48 +5355,48 @@ M: Sean Paul <sean@poorly.run> L: linux-arm-msm@vger.kernel.org L: dri-devel@lists.freedesktop.org L: freedreno@lists.freedesktop.org -T: git https://gitlab.freedesktop.org/drm/msm.git 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 -F: Documentation/devicetree/bindings/display/msm/ DRM DRIVER FOR NOVATEK NT35510 PANELS M: Linus Walleij <linus.walleij@linaro.org> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/panel/panel-novatek-nt35510.c +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 NVIDIA GEFORCE/QUADRO GPUS M: Ben Skeggs <bskeggs@redhat.com> L: dri-devel@lists.freedesktop.org L: nouveau@lists.freedesktop.org -T: git git://github.com/skeggsb/linux 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: drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c F: Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.txt +F: drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS M: Noralf Trønnes <noralf@tronnes.org> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/tiny/repaper.c +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 -T: git git://anongit.freedesktop.org/drm/drm-misc 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/cirrus/ DRM DRIVER FOR QXL VIRTUAL GPU @@ -5423,28 +5404,28 @@ M: Dave Airlie <airlied@redhat.com> M: Gerd Hoffmann <kraxel@redhat.com> L: virtualization@lists.linux-foundation.org L: spice-devel@lists.freedesktop.org -T: git git://anongit.freedesktop.org/drm/drm-misc 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 RAYDIUM RM67191 PANELS -M: Robert Chiras <robert.chiras@nxp.com> -S: Maintained -F: drivers/gpu/drm/panel/panel-raydium-rm67191.c -F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.txt - 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.txt +F: drivers/gpu/drm/panel/panel-raydium-rm67191.c + DRM DRIVER FOR ROCKTECH JH057N00900 PANELS M: Guido Günther <agx@sigxcpu.org> R: Purism Kernel Team <kernel@puri.sm> S: Maintained -F: drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c F: Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.txt +F: drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c DRM DRIVER FOR SAVAGE VIDEO CARDS S: Orphan / Obsolete @@ -5456,38 +5437,38 @@ S: Orphan / Obsolete F: drivers/gpu/drm/sis/ F: include/uapi/drm/sis_drm.h -DRM DRIVER FOR SITRONIX ST7701 PANELS -M: Jagan Teki <jagan@amarulasolutions.com> -S: Maintained -F: drivers/gpu/drm/panel/panel-sitronix-st7701.c -F: Documentation/devicetree/bindings/display/panel/sitronix,st7701.txt - DRM DRIVER FOR SITRONIX ST7586 PANELS M: David Lechner <david@lechnology.com> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/tiny/st7586.c +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.txt +F: drivers/gpu/drm/panel/panel-sitronix-st7701.c DRM DRIVER FOR SITRONIX ST7735R PANELS M: David Lechner <david@lechnology.com> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/tiny/st7735r.c +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> -T: git git://anongit.freedesktop.org/drm/drm-misc 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> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/mcde/ +T: git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/ste,mcde.txt +F: drivers/gpu/drm/mcde/ DRM DRIVER FOR TDFX VIDEO CARDS S: Orphan / Obsolete @@ -5495,42 +5476,42 @@ F: drivers/gpu/drm/tdfx/ DRM DRIVER FOR TPO TPG110 PANELS M: Linus Walleij <linus.walleij@linaro.org> -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/panel/panel-tpo-tpg110.c +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> L: dri-devel@lists.freedesktop.org S: Odd Fixes -F: drivers/gpu/drm/udl/ -T: git git://anongit.freedesktop.org/drm/drm-misc - -DRM DRIVER FOR VIRTUALBOX VIRTUAL GPU -M: Hans de Goede <hdegoede@redhat.com> -L: dri-devel@lists.freedesktop.org -S: Maintained -F: drivers/gpu/drm/vboxvideo/ 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> R: Haneen Mohammed <hamohammed.sa@gmail.com> R: Daniel Vetter <daniel@ffwll.ch> -T: git git://anongit.freedesktop.org/drm/drm-misc -S: Maintained L: dri-devel@lists.freedesktop.org -F: drivers/gpu/drm/vkms/ +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: Thomas Hellstrom <thellstrom@vmware.com> L: dri-devel@lists.freedesktop.org -T: git git://people.freedesktop.org/~thomash/linux S: Supported +T: git git://people.freedesktop.org/~thomash/linux F: drivers/gpu/drm/vmwgfx/ F: include/uapi/drm/vmwgfx_drm.h @@ -5538,71 +5519,62 @@ DRM DRIVERS M: David Airlie <airlied@linux.ie> M: Daniel Vetter <daniel@ffwll.ch> L: dri-devel@lists.freedesktop.org -T: git git://anongit.freedesktop.org/drm/drm +S: Maintained B: https://bugs.freedesktop.org/ C: irc://chat.freenode.net/dri-devel -S: Maintained -F: drivers/gpu/drm/ -F: drivers/gpu/vga/ +T: git git://anongit.freedesktop.org/drm/drm F: Documentation/devicetree/bindings/display/ F: Documentation/devicetree/bindings/gpu/ F: Documentation/gpu/ +F: drivers/gpu/drm/ +F: drivers/gpu/vga/ F: include/drm/ -F: include/uapi/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> -W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html 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/vga/ F: drivers/gpu/drm/* +F: drivers/gpu/vga/ F: include/drm/drm* -F: include/uapi/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 -F: drivers/gpu/drm/sun4i/ -F: Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt -T: git git://anongit.freedesktop.org/drm/drm-misc - -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@siol.net> -L: dri-devel@lists.freedesktop.org -S: Supported -F: drivers/gpu/drm/sun4i/sun8i* T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +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 -W: http://linux-meson.com/ S: Supported -F: drivers/gpu/drm/meson/ -F: Documentation/devicetree/bindings/display/amlogic,meson-vpu.yaml +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 -T: git git://anongit.freedesktop.org/drm/drm-misc +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 -F: drivers/gpu/drm/atmel-hlcdc/ -F: Documentation/devicetree/bindings/display/atmel/ 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> @@ -5620,35 +5592,35 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git 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 -F: Documentation/devicetree/bindings/display/exynos/ 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 -F: drivers/gpu/drm/fsl-dcu/ +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 -T: git git://anongit.freedesktop.org/drm/drm-misc +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/ -F: Documentation/devicetree/bindings/display/imx/ DRM DRIVERS FOR GMA500 (Poulsbo, Moorestown and derivative chipsets) M: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> L: dri-devel@lists.freedesktop.org -T: git git://github.com/patjak/drm-gma500 S: Maintained +T: git git://github.com/patjak/drm-gma500 F: drivers/gpu/drm/gma500/ DRM DRIVERS FOR HISILICON @@ -5658,71 +5630,71 @@ 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 -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/hisilicon/ +T: git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/hisilicon/ +F: drivers/gpu/drm/hisilicon/ 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 -T: git git://anongit.freedesktop.org/drm/drm-misc 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 S: Supported -F: drivers/gpu/drm/mediatek/ F: Documentation/devicetree/bindings/display/mediatek/ +F: drivers/gpu/drm/mediatek/ DRM DRIVERS FOR NVIDIA TEGRA M: Thierry Reding <thierry.reding@gmail.com> L: dri-devel@lists.freedesktop.org L: linux-tegra@vger.kernel.org -T: git git://anongit.freedesktop.org/tegra/linux.git 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 -F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt 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 -T: git git://linuxtv.org/pinchartl/media drm/du/next S: Supported -F: drivers/gpu/drm/rcar-du/ -F: drivers/gpu/drm/shmobile/ -F: include/linux/platform_data/shmob_drm.h +T: git git://linuxtv.org/pinchartl/media drm/du/next F: Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt F: Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt F: Documentation/devicetree/bindings/display/renesas,du.txt +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 -F: drivers/gpu/drm/rockchip/ -F: Documentation/devicetree/bindings/display/rockchip/ 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> M: Vincent Abriou <vincent.abriou@st.com> L: dri-devel@lists.freedesktop.org -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/sti +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@st.com> @@ -5730,53 +5702,53 @@ M: Philippe Cornu <philippe.cornu@st.com> M: Benjamin Gaignard <benjamin.gaignard@linaro.org> M: Vincent Abriou <vincent.abriou@st.com> L: dri-devel@lists.freedesktop.org -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained -F: drivers/gpu/drm/stm +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 <jsarha@ti.com> +M: Tomi Valkeinen <tomi.valkeinen@ti.com> +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 <jsarha@ti.com> R: Tomi Valkeinen <tomi.valkeinen@ti.com> L: dri-devel@lists.freedesktop.org S: Maintained -F: drivers/gpu/drm/tilcdc/ F: Documentation/devicetree/bindings/display/tilcdc/ +F: drivers/gpu/drm/tilcdc/ DRM DRIVERS FOR TI OMAP M: Tomi Valkeinen <tomi.valkeinen@ti.com> L: dri-devel@lists.freedesktop.org S: Maintained -F: drivers/gpu/drm/omapdrm/ F: Documentation/devicetree/bindings/display/ti/ - -DRM DRIVERS FOR TI KEYSTONE -M: Jyri Sarha <jsarha@ti.com> -M: Tomi Valkeinen <tomi.valkeinen@ti.com> -L: dri-devel@lists.freedesktop.org -S: Maintained -F: drivers/gpu/drm/tidss/ -F: Documentation/devicetree/bindings/display/ti/ti,k2g-dss.yaml -F: Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml -F: Documentation/devicetree/bindings/display/ti/ti,j721e-dss.yaml -T: git git://anongit.freedesktop.org/drm/drm-misc +F: drivers/gpu/drm/omapdrm/ DRM DRIVERS FOR V3D M: Eric Anholt <eric@anholt.net> S: Supported +T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.txt F: drivers/gpu/drm/v3d/ F: include/uapi/drm/v3d_drm.h -F: Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.txt -T: git git://anongit.freedesktop.org/drm/drm-misc DRM DRIVERS FOR VC4 M: Eric Anholt <eric@anholt.net> -T: git git://github.com/anholt/linux S: Supported +T: git git://github.com/anholt/linux +T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt F: drivers/gpu/drm/vc4/ F: include/uapi/drm/vc4_drm.h -F: Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt -T: git git://anongit.freedesktop.org/drm/drm-misc DRM DRIVERS FOR VIVANTE GPU IP M: Lucas Stach <l.stach@pengutronix.de> @@ -5785,183 +5757,184 @@ 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 -F: Documentation/devicetree/bindings/gpu/vivante,gc.yaml + +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 ZTE ZX M: Shawn Guo <shawnguo@kernel.org> L: dri-devel@lists.freedesktop.org S: Maintained -F: drivers/gpu/drm/zte/ -F: Documentation/devicetree/bindings/display/zte,vou.txt T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/display/zte,vou.txt +F: drivers/gpu/drm/zte/ DRM PANEL DRIVERS M: Thierry Reding <thierry.reding@gmail.com> R: Sam Ravnborg <sam@ravnborg.org> L: dri-devel@lists.freedesktop.org -T: git git://anongit.freedesktop.org/drm/drm-misc 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 -F: Documentation/devicetree/bindings/display/panel/ - -DRM DRIVERS FOR XEN -M: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com> -T: git git://anongit.freedesktop.org/drm/drm-misc -L: dri-devel@lists.freedesktop.org -L: xen-devel@lists.xenproject.org (moderated for non-subscribers) -S: Supported -F: drivers/gpu/drm/xen/ -F: Documentation/gpu/xen-front.rst DRM TTM SUBSYSTEM M: Christian Koenig <christian.koenig@amd.com> M: Huang Rui <ray.huang@amd.com> -T: git git://people.freedesktop.org/~agd5f/linux -S: Maintained L: dri-devel@lists.freedesktop.org -F: include/drm/ttm/ +S: Maintained +T: git git://people.freedesktop.org/~agd5f/linux 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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: lib/dynamic_debug.c F: include/linux/dynamic_debug.h +F: lib/dynamic_debug.c DYNAMIC INTERRUPT MODERATION M: Tal Gilboa <talgi@mellanox.com> S: Maintained F: include/linux/dim.h F: lib/dim/ +F: Documentation/networking/net_dim.rst DZ DECSTATION DZ11 SERIAL DRIVER M: "Maciej W. Rozycki" <macro@linux-mips.org> @@ -5971,19 +5944,19 @@ F: drivers/tty/serial/dz.* E3X0 POWER BUTTON DRIVER M: Moritz Fischer <moritz.fischer@ettus.com> L: usrp-users@lists.ettus.com -W: http://www.ettus.com S: Supported -F: drivers/input/misc/e3x0-button.c +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 -S: Maintained F: drivers/media/tuners/e4000* EARTH_PT1 MEDIA DRIVER @@ -6001,20 +5974,20 @@ 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 -S: Maintained 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 -S: Odd Fixes F: Documentation/filesystems/ecryptfs.rst F: fs/ecryptfs/ @@ -6033,8 +6006,8 @@ F: drivers/edac/armada_xp_* EDAC-AST2500 M: Stefan Schaeckeler <sschaeck@cisco.com> S: Supported -F: drivers/edac/aspeed_edac.c F: Documentation/devicetree/bindings/edac/aspeed-sdram-edac.txt +F: drivers/edac/aspeed_edac.c EDAC-BLUEFIELD M: Shravan Kumar Ramani <sramani@mellanox.com> @@ -6068,8 +6041,8 @@ M: Tony Luck <tony.luck@intel.com> R: James Morse <james.morse@arm.com> R: Robert Richter <rrichter@marvell.com> L: linux-edac@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next 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/ @@ -6174,6 +6147,14 @@ 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 @@ -6206,25 +6187,17 @@ L: linux-edac@vger.kernel.org S: Maintained F: drivers/edac/ti_edac.c -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 - EDIROL UA-101/UA-1000 DRIVER M: Clemens Ladisch <clemens@ladisch.de> L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git 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 -L: linux-efi@vger.kernel.org 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/ @@ -6232,20 +6205,20 @@ EFI VARIABLE FILESYSTEM M: Matthew Garrett <matthew.garrett@nebula.com> M: Jeremy Kerr <jk@ozlabs.org> M: Ard Biesheuvel <ardb@kernel.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git 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 -L: linux-fbdev@vger.kernel.org M: Peter Jones <pjones@redhat.com> +L: linux-fbdev@vger.kernel.org S: Maintained F: drivers/video/fbdev/efifb.c EFS FILESYSTEM -W: http://aeschi.ch.eu.org/efs/ S: Orphan +W: http://aeschi.ch.eu.org/efs/ F: fs/efs/ EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER @@ -6257,11 +6230,11 @@ 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 -S: Maintained -F: drivers/media/usb/em28xx/ F: Documentation/media/v4l-drivers/em28xx* +F: drivers/media/usb/em28xx/ EMBEDDED LINUX M: Paul Gortmaker <paul.gortmaker@windriver.com> @@ -6270,30 +6243,38 @@ M: David Woodhouse <dwmw2@infradead.org> L: linux-embedded@vger.kernel.org S: Maintained -Emulex 10Gbps iSCSI - OneConnect DRIVER +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 -W: http://www.broadcom.com S: Supported +W: http://www.broadcom.com F: drivers/scsi/be2iscsi/ -Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER (be2net) +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 -W: http://www.emulex.com S: Supported +W: http://www.emulex.com F: drivers/net/ethernet/emulex/benet/ EMULEX ONECONNECT ROCE DRIVER M: Selvin Xavier <selvin.xavier@broadcom.com> M: Devesh Sharma <devesh.sharma@broadcom.com> L: linux-rdma@vger.kernel.org -W: http://www.broadcom.com S: Odd Fixes +W: http://www.broadcom.com F: drivers/infiniband/hw/ocrdma/ F: include/uapi/rdma/ocrdma-abi.h @@ -6301,8 +6282,8 @@ 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 -W: http://www.broadcom.com S: Supported +W: http://www.broadcom.com F: drivers/scsi/lpfc/ ENE CB710 FLASH CARD READER DRIVER @@ -6343,8 +6324,8 @@ F: include/trace/events/erofs.h ERRSEQ ERROR TRACKING INFRASTRUCTURE M: Jeff Layton <jlayton@kernel.org> S: Maintained -F: lib/errseq.c F: include/linux/errseq.h +F: lib/errseq.c ET131X NETWORK DRIVER M: Mark Einon <mark.einon@gmail.com> @@ -6356,8 +6337,8 @@ M: Roopa Prabhu <roopa@cumulusnetworks.com> M: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> L: bridge@lists.linux-foundation.org (moderated for non-subscribers) L: netdev@vger.kernel.org -W: http://www.linuxfoundation.org/en/Net:Bridge S: Maintained +W: http://www.linuxfoundation.org/en/Net:Bridge F: include/linux/netfilter_bridge/ F: net/bridge/ @@ -6406,10 +6387,10 @@ 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 -S: Maintained F: Documentation/filesystems/ext4/ F: fs/ext4/ @@ -6422,28 +6403,37 @@ F: security/integrity/evm/ EXTENSIBLE FIRMWARE INTERFACE (EFI) M: Ard Biesheuvel <ardb@kernel.org> L: linux-efi@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git 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/*/kernel/efi.c 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 -F: arch/arm/boot/compressed/efi-header.S -F: arch/arm64/kernel/efi-entry.S EXTERNAL CONNECTOR SUBSYSTEM (EXTCON) M: MyungJoo Ham <myungjoo.ham@samsung.com> M: Chanwoo Choi <cw00.choi@samsung.com> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon.git 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/ F: include/linux/extcon.h -F: Documentation/firmware-guide/acpi/extcon-intel-int3496.rst -F: Documentation/devicetree/bindings/extcon/ +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/* EXYNOS DP DRIVER M: Jingoo Han <jingoohan1@gmail.com> @@ -6461,18 +6451,18 @@ EZchip NPS platform support M: Vineet Gupta <vgupta@synopsys.com> M: Ofer Levi <oferle@mellanox.com> S: Supported -F: arch/arc/plat-eznps F: arch/arc/boot/dts/eznps.dts +F: arch/arc/plat-eznps F2FS FILE SYSTEM M: Jaegeuk Kim <jaegeuk@kernel.org> M: Chao Yu <yuchao0@huawei.com> 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 -S: Maintained -F: Documentation/filesystems/f2fs.rst 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 @@ -6493,9 +6483,9 @@ FAILOVER MODULE M: Sridhar Samudrala <sridhar.samudrala@intel.com> L: netdev@vger.kernel.org S: Supported -F: net/core/failover.c -F: include/net/failover.h F: Documentation/networking/failover.rst +F: include/net/failover.h +F: net/core/failover.c FANOTIFY M: Jan Kara <jack@suse.cz> @@ -6508,8 +6498,8 @@ F: include/uapi/linux/fanotify.h FARSYNC SYNCHRONOUS DRIVER M: Kevin Curtis <kevin.curtis@farsite.co.uk> -W: http://www.farsite.co.uk/ S: Supported +W: http://www.farsite.co.uk/ F: drivers/net/wan/farsync.* FAULT INJECTION SUPPORT @@ -6519,35 +6509,35 @@ F: Documentation/fault-injection/ F: lib/fault-inject.c FBTFT Framebuffer drivers -S: Orphan 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.h 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 -S: Maintained F: drivers/media/tuners/fc2580* FCOE SUBSYSTEM (libfc, libfcoe, fcoe) M: Hannes Reinecke <hare@suse.de> L: linux-scsi@vger.kernel.org -W: www.Open-FCoE.org S: Supported -F: drivers/scsi/libfc/ +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 @@ -6558,10 +6548,21 @@ M: Jeff Layton <jlayton@kernel.org> M: "J. Bruce Fields" <bfields@fieldses.org> L: linux-fsdevel@vger.kernel.org S: Maintained -F: include/linux/fcntl.h -F: include/uapi/linux/fcntl.h 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: linux-nvdimm@lists.01.org +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> @@ -6584,17 +6585,17 @@ 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) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git S: Maintained -F: sound/firewire/ +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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git 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 @@ -6602,16 +6603,16 @@ M: Chris Boot <bootc@bootc.net> L: linux-scsi@vger.kernel.org L: target-devel@vger.kernel.org L: linux1394-devel@lists.sourceforge.net -T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git master 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 -S: Maintained F: drivers/firewire/ F: include/linux/firewire.h F: include/uapi/linux/firewire*.h @@ -6641,35 +6642,48 @@ F: drivers/counter/ftm-quaddec.c FLOPPY DRIVER M: Denis Efremov <efremov@linux.com> -S: Odd Fixes L: linux-block@vger.kernel.org +S: Odd Fixes F: drivers/block/floppy.c -FPGA MANAGER FRAMEWORK -M: Moritz Fischer <mdf@kernel.org> -L: linux-fpga@vger.kernel.org +FLYSKY FSIA6B RC RECEIVER +M: Markus Koch <markus@notsyncing.net> +L: linux-input@vger.kernel.org S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mdf/linux-fpga.git -Q: http://patchwork.kernel.org/project/linux-fpga/list/ -F: Documentation/fpga/ -F: Documentation/driver-api/fpga/ -F: Documentation/devicetree/bindings/fpga/ -F: drivers/fpga/ -F: include/linux/fpga/ -W: http://www.rocketboards.org +F: drivers/input/joystick/fsia6b.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> L: linux-fpga@vger.kernel.org S: Maintained F: Documentation/fpga/dfl.rst -F: include/uapi/linux/fpga-dfl.h F: drivers/fpga/dfl* +F: include/uapi/linux/fpga-dfl.h + +FPGA MANAGER FRAMEWORK +M: Moritz Fischer <mdf@kernel.org> +L: linux-fpga@vger.kernel.org +S: Maintained +W: http://www.rocketboards.org +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> -W: http://floatingpoint.sourceforge.net/emulator/index.html S: Maintained +W: http://floatingpoint.sourceforge.net/emulator/index.html F: arch/x86/math-emu/ FRAME RELAY DLCI/FRAD (Sangoma drivers too) @@ -6682,23 +6696,23 @@ FRAMEBUFFER LAYER M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> L: dri-devel@lists.freedesktop.org L: linux-fbdev@vger.kernel.org -T: git git://anongit.freedesktop.org/drm/drm-misc -Q: http://patchwork.kernel.org/project/linux-fbdev/list/ S: Maintained +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/video/ F: include/linux/fb.h -F: include/uapi/video/ 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: Aymen Sghaier <aymen.sghaier@nxp.com> L: linux-crypto@vger.kernel.org S: Maintained -F: drivers/crypto/caam/ F: Documentation/devicetree/bindings/crypto/fsl-sec4.txt +F: drivers/crypto/caam/ FREESCALE DIU FRAMEBUFFER DRIVER M: Timur Tabi <timur@kernel.org> @@ -6723,8 +6737,8 @@ FREESCALE eTSEC ETHERNET DRIVER (GIANFAR) M: Claudiu Manoil <claudiu.manoil@nxp.com> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/ethernet/freescale/gianfar* 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> @@ -6739,47 +6753,47 @@ L: linux-i2c@vger.kernel.org S: Maintained F: drivers/i2c/busses/i2c-cpm.c +FREESCALE IMX / MXC FEC DRIVER +M: Fugang Duan <fugang.duan@nxp.com> +L: netdev@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/net/fsl-fec.txt +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 S: Maintained -F: drivers/perf/fsl_imx8_ddr_perf.c F: Documentation/admin-guide/perf/imx-ddr.rst F: Documentation/devicetree/bindings/perf/fsl-imx-ddr.txt +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: drivers/i2c/busses/i2c-imx.c F: Documentation/devicetree/bindings/i2c/i2c-imx.txt +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: drivers/i2c/busses/i2c-imx-lpi2c.c F: Documentation/devicetree/bindings/i2c/i2c-imx-lpi2c.txt - -FREESCALE IMX / MXC FEC DRIVER -M: Fugang Duan <fugang.duan@nxp.com> -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/freescale/fec_main.c -F: drivers/net/ethernet/freescale/fec_ptp.c -F: drivers/net/ethernet/freescale/fec.h -F: Documentation/devicetree/bindings/net/fsl-fec.txt - -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: include/linux/platform_data/video-imxfb.h -F: drivers/video/fbdev/imxfb.c +F: drivers/i2c/busses/i2c-imx-lpi2c.c FREESCALE QORIQ DPAA ETHERNET DRIVER M: Madalin Bucur <madalin.bucur@nxp.com> @@ -6791,20 +6805,20 @@ FREESCALE QORIQ DPAA FMAN DRIVER M: Madalin Bucur <madalin.bucur@nxp.com> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/ethernet/freescale/fman 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 -F: Documentation/devicetree/bindings/ptp/ptp-qoriq.txt FREESCALE QUAD SPI DRIVER M: Han Xu <han.xu@nxp.com> @@ -6879,8 +6893,8 @@ F: drivers/usb/gadget/udc/fsl* FREEVXFS FILESYSTEM M: Christoph Hellwig <hch@infradead.org> -W: ftp://ftp.openlinux.org/pub/people/hch/vxfs S: Maintained +W: ftp://ftp.openlinux.org/pub/people/hch/vxfs F: fs/freevxfs/ FREEZER @@ -6896,8 +6910,8 @@ FRONTSWAP API M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> L: linux-kernel@vger.kernel.org S: Maintained -F: mm/frontswap.c F: include/linux/frontswap.h +F: mm/frontswap.c FS-CACHE: LOCAL CACHING FOR NETWORK FILESYSTEMS M: David Howells <dhowells@redhat.com> @@ -6912,13 +6926,13 @@ 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 -S: Supported +F: Documentation/filesystems/fscrypt.rst F: fs/crypto/ F: include/linux/fscrypt*.h F: include/uapi/linux/fscrypt.h -F: Documentation/filesystems/fscrypt.rst FSI SUBSYSTEM M: Jeremy Kerr <jk@ozlabs.org> @@ -6926,9 +6940,9 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/joel/fsi.git -Q: http://patchwork.ozlabs.org/project/linux-fsi/list/ 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 @@ -6938,22 +6952,22 @@ 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: drivers/i2c/busses/i2c-fsi.c 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: drivers/spi/spi-fsi.c 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git fsnotify 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 @@ -6961,13 +6975,13 @@ 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 -S: Supported +F: Documentation/filesystems/fsverity.rst F: fs/verity/ F: include/linux/fsverity.h F: include/uapi/linux/fsverity.h -F: Documentation/filesystems/fsverity.rst FUJITSU LAPTOP EXTRAS M: Jonathan Woithe <jwoithe@just42.net> @@ -6992,12 +7006,12 @@ 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: http://fuse.sourceforge.net/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git -S: Maintained +F: Documentation/filesystems/fuse.rst F: fs/fuse/ F: include/uapi/linux/fuse.h -F: Documentation/filesystems/fuse.rst FUTEX SUBSYSTEM M: Thomas Gleixner <tglx@linutronix.de> @@ -7005,25 +7019,15 @@ M: Ingo Molnar <mingo@redhat.com> R: Peter Zijlstra <peterz@infradead.org> R: Darren Hart <dvhart@infradead.org> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core S: Maintained -F: kernel/futex.c +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core +F: Documentation/*futex* F: include/asm-generic/futex.h F: include/linux/futex.h F: include/uapi/linux/futex.h -F: tools/testing/selftests/futex/ +F: kernel/futex.c F: tools/perf/bench/futex* -F: Documentation/*futex* - -GCC PLUGINS -M: Kees Cook <keescook@chromium.org> -R: Emese Revfy <re.emese@gmail.com> -L: kernel-hardening@lists.openwall.com -S: Maintained -F: scripts/gcc-plugins/ -F: scripts/gcc-plugin.sh -F: scripts/Makefile.gcc-plugins -F: Documentation/kbuild/gcc-plugins.rst +F: tools/testing/selftests/futex/ GASKET DRIVER FRAMEWORK M: Rob Springer <rspringer@google.com> @@ -7032,11 +7036,21 @@ M: Ben Chan <benchan@chromium.org> S: Maintained F: drivers/staging/gasket/ +GCC PLUGINS +M: Kees Cook <keescook@chromium.org> +R: Emese Revfy <re.emese@gmail.com> +L: kernel-hardening@lists.openwall.com +S: Maintained +F: Documentation/kbuild/gcc-plugins.rst +F: scripts/Makefile.gcc-plugins +F: scripts/gcc-plugin.sh +F: scripts/gcc-plugins/ + GCOV BASED KERNEL PROFILING M: Peter Oberparleiter <oberpar@linux.ibm.com> S: Maintained -F: kernel/gcov/ F: Documentation/dev-tools/gcov.rst +F: kernel/gcov/ GDB KERNEL DEBUGGING HELPER SCRIPTS M: Jan Kiszka <jan.kiszka@siemens.com> @@ -7047,16 +7061,16 @@ F: scripts/gdb/ GDT SCSI DISK ARRAY CONTROLLER DRIVER M: Achim Leubner <achim_leubner@adaptec.com> L: linux-scsi@vger.kernel.org -W: http://www.icp-vortex.com/ S: Supported +W: http://www.icp-vortex.com/ F: drivers/scsi/gdt* GEMTEK FM RADIO RECEIVER DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/radio/radio-gemtek* GENERIC ARCHITECTURE TOPOLOGY @@ -7076,14 +7090,14 @@ 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 -F: Documentation/i2c/muxes/i2c-mux-gpio.rst GENERIC HDLC (WAN) DRIVERS M: Krzysztof Halasa <khc@pm.waw.pl> -W: http://www.kernel.org/pub/linux/utils/net/hdlc/ 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* @@ -7095,19 +7109,19 @@ F: drivers/net/wan/wanxl* GENERIC INCLUDE/ASM HEADER FILES M: Arnd Bergmann <arnd@arndb.de> L: linux-arch@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git 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> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git S: Supported +T: git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git +F: Documentation/devicetree/bindings/phy/ F: drivers/phy/ F: include/linux/phy/ -F: Documentation/devicetree/bindings/phy/ GENERIC PINCTRL I2C DEMULTIPLEXER DRIVER M: Wolfram Sang <wsa+renesas@sang-engineering.com> @@ -7120,9 +7134,9 @@ 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 -F: Documentation/devicetree/bindings/power/power?domain* GENERIC RESISTIVE TOUCHSCREEN ADC DRIVER M: Eugen Hristev <eugen.hristev@microchip.com> @@ -7141,12 +7155,12 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/vdso S: Maintained -F: lib/vdso/ -F: kernel/time/vsyscall.c -F: include/vdso/ +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> @@ -7162,17 +7176,17 @@ GFS2 FILE SYSTEM M: Bob Peterson <rpeterso@redhat.com> M: Andreas Gruenbacher <agruenba@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/gfs2/linux-gfs2.git -S: Supported F: Documentation/filesystems/gfs2*.txt F: fs/gfs2/ F: include/uapi/linux/gfs2_ondisk.h GNSS SUBSYSTEM M: Johan Hovold <johan@kernel.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss.git 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/ @@ -7241,8 +7255,8 @@ F: Documentation/devicetree/bindings/gpio/ F: Documentation/driver-api/gpio/ F: drivers/gpio/ F: include/asm-generic/gpio.h -F: include/linux/gpio/ F: include/linux/gpio.h +F: include/linux/gpio/ F: include/linux/of_gpio.h F: include/uapi/linux/gpio.h F: tools/gpio/ @@ -7251,9 +7265,9 @@ 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 -F: include/net/gre.h GRETH 10/100/1G Ethernet MAC device driver M: Andreas Larsson <andreas@gaisler.com> @@ -7303,17 +7317,17 @@ F: drivers/staging/greybus/loopback.c GREYBUS PLATFORM DRIVERS M: Vaibhav Hiremath <hvaibhav.linux@gmail.com> S: Maintained -F: drivers/staging/greybus/arche-platform.c 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/sdio.c -F: drivers/staging/greybus/light.c 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 @@ -7321,81 +7335,81 @@ 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/staging/greybus/ F: drivers/greybus/ +F: drivers/staging/greybus/ F: include/linux/greybus.h F: include/linux/greybus/ -L: greybus-dev@lists.linaro.org (moderated for non-subscribers) GREYBUS UART PROTOCOLS DRIVERS M: David Lin <dtwlin@gmail.com> S: Maintained -F: drivers/staging/greybus/uart.c 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/pablo/gtp.git 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) @@ -7407,33 +7421,43 @@ 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 -S: Maintained F: arch/h8300/ -F: drivers/clocksource/h8300_*.c F: drivers/clk/h8300/ +F: drivers/clocksource/h8300_*.c F: drivers/irqchip/irq-renesas-h8*.c HABANALABS PCI DRIVER M: Oded Gabbay <oded.gabbay@gmail.com> -T: git https://github.com/HabanaAI/linux.git S: Supported +T: git https://github.com/HabanaAI/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 -F: Documentation/ABI/testing/sysfs-driver-habanalabs -F: Documentation/ABI/testing/debugfs-driver-habanalabs 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 -S: Maintained 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.txt +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 @@ -7445,9 +7469,9 @@ 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 -S: Maintained F: Documentation/devicetree/bindings/hwmon/ F: Documentation/hwmon/ F: drivers/hwmon/ @@ -7459,16 +7483,11 @@ 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/devicetree/bindings/rng/ F: Documentation/admin-guide/hw_random.rst +F: Documentation/devicetree/bindings/rng/ F: drivers/char/hw_random/ F: include/linux/hw_random.h -HARDWARE TRACING FACILITIES -M: Alexander Shishkin <alexander.shishkin@linux.intel.com> -S: Maintained -F: drivers/hwtracing/ - HARDWARE SPINLOCK CORE M: Ohad Ben-Cohen <ohad@wizery.com> M: Bjorn Andersson <bjorn.andersson@linaro.org> @@ -7481,6 +7500,11 @@ F: Documentation/hwspinlock.txt 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 @@ -7489,9 +7513,9 @@ F: sound/parisc/harmony.* HDPVR USB VIDEO ENCODER DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 NMI WATCHDOG DRIVER @@ -7532,30 +7556,30 @@ F: fs/hfsplus/ HGA FRAMEBUFFER DRIVER M: Ferenc Bakonyi <fero@drama.obuda.kando.hu> L: linux-nvidia@lists.surfsouth.com -W: http://drama.obuda.kando.hu/~fero/cgi-bin/hgafb.shtml 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" <rjw@rjwysocki.net> M: Pavel Machek <pavel@ucw.cz> L: linux-pm@vger.kernel.org -B: https://bugzilla.kernel.org S: Supported +B: https://bugzilla.kernel.org +F: arch/*/include/asm/suspend*.h F: arch/x86/power/ F: drivers/base/power/ -F: kernel/power/ -F: include/linux/suspend.h F: include/linux/freezer.h F: include/linux/pm.h -F: arch/*/include/asm/suspend*.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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git 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* @@ -7575,14 +7599,14 @@ F: include/linux/hid-sensor-* HIGH-RESOLUTION TIMERS, CLOCKEVENTS M: Thomas Gleixner <tglx@linutronix.de> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core F: Documentation/timers/ -F: kernel/time/hrtimer.c -F: kernel/time/clockevents.c -F: kernel/time/timer_*.c 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 @@ -7592,8 +7616,8 @@ F: drivers/net/hamradio/scc.c HIGHPOINT ROCKETRAID 3xxx RAID DRIVER M: HighPoint Linux Team <linux@highpoint-tech.com> -W: http://www.highpoint-tech.com S: Supported +W: http://www.highpoint-tech.com F: Documentation/scsi/hptiop.rst F: drivers/scsi/hptiop.c @@ -7601,10 +7625,10 @@ 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 -F: drivers/net/hippi/ HISILICON DMA DRIVER M: Zhou Wang <wangzhou1@hisilicon.com> @@ -7612,60 +7636,55 @@ L: dmaengine@vger.kernel.org S: Maintained F: drivers/dma/hisi_dma.c -HISILICON SECURITY ENGINE V2 DRIVER (SEC2) -M: Zaibo Xu <xuzaibo@huawei.com> -L: linux-crypto@vger.kernel.org -S: Maintained -F: drivers/crypto/hisilicon/sec2/sec_crypto.c -F: drivers/crypto/hisilicon/sec2/sec_main.c -F: drivers/crypto/hisilicon/sec2/sec_crypto.h -F: drivers/crypto/hisilicon/sec2/sec.h -F: Documentation/ABI/testing/debugfs-hisi-sec - 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 -F: drivers/crypto/hisilicon/hpre/hpre.h -F: Documentation/ABI/testing/debugfs-hisi-hpre + +HISILICON LPC BUS DRIVER +M: john.garry@huawei.com +S: Maintained +W: http://www.hisilicon.com +F: Documentation/devicetree/bindings/arm/hisilicon/hisilicon-low-pin-count.txt +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 -W: http://www.hisilicon.com -S: Maintained -F: drivers/net/ethernet/hisilicon/hns3/ - -HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT -M: Zaibo Xu <xuzaibo@huawei.com> S: Maintained -F: drivers/char/hw_random/hisi-trng-v2.c - -HISILICON LPC BUS DRIVER -M: john.garry@huawei.com W: http://www.hisilicon.com -S: Maintained -F: drivers/bus/hisi_lpc.c -F: Documentation/devicetree/bindings/arm/hisilicon/hisilicon-low-pin-count.txt +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 -W: http://www.hisilicon.com S: Maintained -F: drivers/net/ethernet/hisilicon/ +W: http://www.hisilicon.com F: Documentation/devicetree/bindings/net/hisilicon*.txt +F: drivers/net/ethernet/hisilicon/ HISILICON PMU DRIVER M: Shaokun Zhang <zhangshaokun@hisilicon.com> -W: http://www.hisilicon.com S: Supported -F: drivers/perf/hisilicon +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: Lijun Ou <oulijun@huawei.com> @@ -7673,45 +7692,50 @@ M: Wei Hu(Xavier) <huwei87@hisilicon.com> M: Weihang Li <liweihang@huawei.com> L: linux-rdma@vger.kernel.org S: Maintained -F: drivers/infiniband/hw/hns/ F: Documentation/devicetree/bindings/infiniband/hisilicon-hns-roce.txt +F: drivers/infiniband/hw/hns/ HISILICON SAS Controller M: John Garry <john.garry@huawei.com> -W: http://www.hisilicon.com S: Supported -F: drivers/scsi/hisi_sas/ +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 TRUE RANDOM NUMBER GENERATOR V2 SUPPORT +M: Zaibo Xu <xuzaibo@huawei.com> +S: Maintained +F: drivers/char/hw_random/hisi-trng-v2.c HISILICON V3XX SPI NOR FLASH Controller Driver M: John Garry <john.garry@huawei.com> -W: http://www.hisilicon.com S: Maintained +W: http://www.hisilicon.com F: drivers/spi/spi-hisi-sfc-v3xx.c -HISILICON QM AND ZIP Controller DRIVER -M: Zhou Wang <wangzhou1@hisilicon.com> -L: linux-crypto@vger.kernel.org -S: Maintained -F: drivers/crypto/hisilicon/qm.c -F: drivers/crypto/hisilicon/qm.h -F: drivers/crypto/hisilicon/sgl.c -F: drivers/crypto/hisilicon/zip/ -F: Documentation/ABI/testing/debugfs-hisi-zip - HMM - Heterogeneous Memory Management M: Jérôme Glisse <jglisse@redhat.com> L: linux-mm@kvack.org S: Maintained -F: mm/hmm* -F: include/linux/hmm* F: Documentation/vm/hmm.rst +F: include/linux/hmm* +F: mm/hmm* HOST AP DRIVER M: Jouni Malinen <j@w1.fi> L: linux-wireless@vger.kernel.org -W: http://w1.fi/hostap-driver.html S: Obsolete +W: http://w1.fi/hostap-driver.html F: drivers/net/wireless/intersil/hostap/ HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER @@ -7734,19 +7758,19 @@ F: include/uapi/linux/hpet.h HPET: x86 S: Orphan -F: arch/x86/kernel/hpet.c F: arch/x86/include/asm/hpet.h +F: arch/x86/kernel/hpet.c HPFS FILESYSTEM M: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz> -W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi 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> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi.git 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/ @@ -7766,8 +7790,8 @@ F: net/hsr/ HT16K33 LED CONTROLLER DRIVER M: Robin van der Gracht <robin@protonic.nl> S: Maintained -F: drivers/auxdisplay/ht16k33.c F: Documentation/devicetree/bindings/display/ht16k33.txt +F: drivers/auxdisplay/ht16k33.c HTCPEN TOUCHSCREEN DRIVER M: Pau Oliva Fora <pof@eslack.org> @@ -7778,10 +7802,10 @@ F: drivers/input/touchscreen/htcpen.c HTS221 TEMPERATURE-HUMIDITY IIO DRIVER M: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> L: linux-iio@vger.kernel.org -W: http://www.st.com/ S: Maintained -F: drivers/iio/humidity/hts221* +W: http://www.st.com/ F: Documentation/devicetree/bindings/iio/humidity/hts221.txt +F: drivers/iio/humidity/hts221* HUAWEI ETHERNET DRIVER M: Aviad Krawczyk <aviad.krawczyk@huawei.com> @@ -7794,27 +7818,27 @@ HUGETLB FILESYSTEM M: Mike Kravetz <mike.kravetz@oracle.com> L: linux-mm@kvack.org S: Maintained -F: fs/hugetlbfs/ -F: mm/hugetlb.c -F: include/linux/hugetlb.h +F: Documentation/ABI/testing/sysfs-kernel-mm-hugepages F: Documentation/admin-guide/mm/hugetlbpage.rst F: Documentation/vm/hugetlbfs_reserv.rst -F: Documentation/ABI/testing/sysfs-kernel-mm-hugepages +F: fs/hugetlbfs/ +F: include/linux/hugetlb.h +F: mm/hugetlb.c HVA ST MEDIA DRIVER M: Jean-Christophe Trotin <jean-christophe.trotin@st.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 <n-horiguchi@ah.jp.nec.com> L: linux-mm@kvack.org S: Maintained -F: mm/memory-failure.c F: mm/hwpoison-inject.c +F: mm/memory-failure.c HYGON PROCESSOR SUPPORT M: Pu Wen <puwen@hygon.cn> @@ -7825,8 +7849,8 @@ F: arch/x86/kernel/cpu/hygon.c HYNIX HI556 SENSOR DRIVER M: Shawn Tu <shawnx.tu@intel.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/hi556.c Hyper-V CORE AND DRIVERS @@ -7834,46 +7858,46 @@ 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> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git 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/microsoft/netvsc.txt +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/include/asm/hyperv-tlfs.h F: arch/x86/kernel/cpu/mshyperv.c -F: arch/x86/hyperv F: drivers/clocksource/hyperv_timer.c F: drivers/hid/hid-hyperv.c F: drivers/hv/ F: drivers/input/serio/hyperv-keyboard.c -F: drivers/pci/controller/pci-hyperv.c -F: drivers/pci/controller/pci-hyperv-intf.c +F: drivers/iommu/hyperv-iommu.c 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: drivers/iommu/hyperv-iommu.c -F: net/vmw_vsock/hyperv_transport.c +F: include/asm-generic/mshyperv.h F: include/clocksource/hyperv_timer.h F: include/linux/hyperv.h F: include/uapi/linux/hyperv.h -F: include/asm-generic/mshyperv.h +F: net/vmw_vsock/hyperv_transport.c F: tools/hv/ -F: Documentation/ABI/stable/sysfs-bus-vmbus -F: Documentation/ABI/testing/debugfs-hyperv 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/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git cfi/next C: irc://irc.oftc.net/mtd -S: Supported -F: drivers/mtd/hyperbus/ -F: include/linux/mtd/hyperbus.h +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 @@ -7898,11 +7922,11 @@ I2C MUXES M: Peter Rosin <peda@axentia.se> L: linux-i2c@vger.kernel.org S: Maintained -F: Documentation/i2c/i2c-topology.rst -F: Documentation/i2c/muxes/ -F: Documentation/devicetree/bindings/i2c/i2c-mux* 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 @@ -7924,25 +7948,25 @@ F: drivers/i2c/busses/i2c-parport.c I2C SUBSYSTEM M: Wolfram Sang <wsa@the-dreams.de> 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 -S: Maintained F: Documentation/devicetree/bindings/i2c/i2c.txt F: Documentation/i2c/ F: drivers/i2c/* -F: include/linux/i2c.h F: include/linux/i2c-dev.h F: include/linux/i2c-smbus.h -F: include/uapi/linux/i2c.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 -S: Odd Fixes F: Documentation/devicetree/bindings/i2c/ F: drivers/i2c/algos/ F: drivers/i2c/busses/ @@ -7957,8 +7981,8 @@ F: drivers/i2c/busses/i2c-taos-evm.c I2C-TINY-USB DRIVER M: Till Harbaum <till@harbaum.org> L: linux-i2c@vger.kernel.org -W: http://www.harbaum.org/till/i2c_tiny_usb 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 @@ -7981,13 +8005,13 @@ 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.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.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 @@ -8005,8 +8029,8 @@ I2C/SMBUS ISMT DRIVER M: Seth Heasley <seth.heasley@intel.com> M: Neil Horman <nhorman@tuxdriver.com> L: linux-i2c@vger.kernel.org -F: drivers/i2c/busses/i2c-ismt.c F: Documentation/i2c/busses/i2c-ismt.rst +F: drivers/i2c/busses/i2c-ismt.c I2C/SMBUS STUB DRIVER M: Jean Delvare <jdelvare@suse.com> @@ -8014,47 +8038,47 @@ 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: Boris Brezillon <bbrezillon@kernel.org> 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 -S: Maintained F: Documentation/ABI/testing/sysfs-bus-i3c F: Documentation/devicetree/bindings/i3c/ F: Documentation/driver-api/i3c F: drivers/i3c/ F: include/linux/i3c/ -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 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 - IA64 (Itanium) PLATFORM M: Tony Luck <tony.luck@intel.com> M: Fenghua Yu <fenghua.yu@intel.com> L: linux-ia64@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git S: Maintained -F: arch/ia64/ +T: git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git F: Documentation/ia64/ +F: arch/ia64/ IBM Power 842 compression accelerator M: Haren Myneni <haren@us.ibm.com> S: Supported -F: drivers/crypto/nx/Makefile +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: crypto/842.c F: lib/842/ IBM Power in-Nest Crypto Acceleration @@ -8063,19 +8087,33 @@ 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/Makefile 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: Thomas Falcon <tlfalcon@linux.ibm.com> M: John Allen <jallen@linux.ibm.com> @@ -8087,9 +8125,9 @@ IBM Power Virtual Accelerator Switchboard M: Sukadev Bhattiprolu <sukadev@linux.ibm.com> L: linuxppc-dev@lists.ozlabs.org S: Supported -F: arch/powerpc/platforms/powernv/vas* -F: arch/powerpc/platforms/powernv/copy-paste.h 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: Thomas Falcon <tlfalcon@linux.ibm.com> @@ -8128,26 +8166,12 @@ 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/Makefile F: drivers/crypto/vmx/Kconfig -F: drivers/crypto/vmx/vmx.c +F: drivers/crypto/vmx/Makefile F: drivers/crypto/vmx/aes* F: drivers/crypto/vmx/ghash* F: drivers/crypto/vmx/ppc-xlate.pl - -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 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* +F: drivers/crypto/vmx/vmx.c IBM ServeRAID RAID DRIVER S: Orphan @@ -8168,9 +8192,9 @@ F: drivers/i2c/busses/i2c-icy.c IDE SUBSYSTEM M: "David S. Miller" <davem@davemloft.net> L: linux-ide@vger.kernel.org +S: Maintained Q: http://patchwork.ozlabs.org/project/linux-ide/list/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide.git -S: Maintained F: Documentation/ide/ F: drivers/ide/ F: include/linux/ide.h @@ -8205,28 +8229,28 @@ 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: http://wpan.cakelab.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 -S: Maintained -F: net/ieee802154/ -F: net/mac802154/ +F: Documentation/networking/ieee802154.rst F: drivers/net/ieee802154/ -F: include/linux/nl802154.h F: include/linux/ieee802154.h -F: include/net/nl802154.h -F: include/net/mac802154.h +F: include/linux/nl802154.h F: include/net/af_ieee802154.h F: include/net/cfg802154.h F: include/net/ieee802154_netdev.h -F: Documentation/networking/ieee802154.rst +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: net/ife F: include/net/ife.h F: include/uapi/linux/ife.h +F: net/ife IGORPLUG-USB IR RECEIVER M: Sean Young <sean@mess.org> @@ -8269,8 +8293,8 @@ R: Hartmut Knaack <knaack.h@gmx.de> R: Lars-Peter Clausen <lars@metafoo.de> R: Peter Meerwald-Stadler <pmeerw@pmeerw.net> L: linux-iio@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git 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/ @@ -8308,8 +8332,8 @@ IMON SOUNDGRAPH USB IR RECEIVER M: Sean Young <sean@mess.org> L: linux-media@vger.kernel.org S: Maintained -F: drivers/media/rc/imon_raw.c F: drivers/media/rc/imon.c +F: drivers/media/rc/imon_raw.c IMS TWINTURBO FRAMEBUFFER DRIVER L: linux-fbdev@vger.kernel.org @@ -8320,8 +8344,8 @@ INA209 HARDWARE MONITOR DRIVER M: Guenter Roeck <linux@roeck-us.net> L: linux-hwmon@vger.kernel.org S: Maintained -F: Documentation/hwmon/ina209.rst F: Documentation/devicetree/bindings/hwmon/ina2xx.txt +F: Documentation/hwmon/ina209.rst F: drivers/hwmon/ina209.c INA2XX HARDWARE MONITOR DRIVER @@ -8337,32 +8361,32 @@ 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 -W: http://industrypack.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 -F: drivers/iio/pressure/dps310.c S: Maintained +F: drivers/iio/pressure/dps310.c INFINIBAND SUBSYSTEM M: Doug Ledford <dledford@redhat.com> M: Jason Gunthorpe <jgg@mellanox.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 -S: Supported F: Documentation/devicetree/bindings/infiniband/ F: Documentation/infiniband/ F: drivers/infiniband/ -F: include/uapi/linux/if_infiniband.h -F: include/uapi/rdma/ 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 @@ -8401,8 +8425,8 @@ 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/jz4740/ F: sound/soc/codecs/jz47* +F: sound/soc/jz4740/ INOTIFY M: Jan Kara <jack@suse.cz> @@ -8417,17 +8441,17 @@ 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 -S: Maintained -F: drivers/input/ -F: include/linux/input.h -F: include/uapi/linux/input.h -F: include/uapi/linux/input-event-codes.h -F: include/linux/input/ 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> @@ -8439,16 +8463,16 @@ K: \b(ABS|SYN)_MT_ INSIDE SECURE CRYPTO DRIVER M: Antoine Tenart <antoine.tenart@bootlin.com> -F: drivers/crypto/inside-secure/ -S: Maintained 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity.git 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 @@ -8476,8 +8500,8 @@ INTEL C600 SERIES SAS CONTROLLER DRIVER M: Intel SCU Linux support <intel-linux-scu@intel.com> M: Artur Paszkiewicz <artur.paszkiewicz@intel.com> L: linux-scsi@vger.kernel.org -T: git git://git.code.sf.net/p/intel-sas/isci S: Supported +T: git git://git.code.sf.net/p/intel-sas/isci F: drivers/scsi/isci/ INTEL CPU family model numbers @@ -8492,38 +8516,38 @@ 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://chat.freenode.net/intel-gfx -Q: http://patchwork.freedesktop.org/project/intel-gfx/ T: git git://anongit.freedesktop.org/drm-intel -S: Supported +F: Documentation/gpu/i915.rst F: drivers/gpu/drm/i915/ F: include/drm/i915* F: include/uapi/drm/i915_drm.h -F: Documentation/gpu/i915.rst INTEL ETHERNET DRIVERS M: Jeff Kirsher <jeffrey.t.kirsher@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/jkirsher/net-queue.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git -S: Supported F: Documentation/networking/device_drivers/intel/e100.rst F: Documentation/networking/device_drivers/intel/e1000.rst F: Documentation/networking/device_drivers/intel/e1000e.rst F: Documentation/networking/device_drivers/intel/fm10k.rst +F: Documentation/networking/device_drivers/intel/i40e.rst +F: Documentation/networking/device_drivers/intel/iavf.rst +F: Documentation/networking/device_drivers/intel/ice.rst F: Documentation/networking/device_drivers/intel/igb.rst F: Documentation/networking/device_drivers/intel/igbvf.rst F: Documentation/networking/device_drivers/intel/ixgb.rst F: Documentation/networking/device_drivers/intel/ixgbe.rst F: Documentation/networking/device_drivers/intel/ixgbevf.rst -F: Documentation/networking/device_drivers/intel/i40e.rst -F: Documentation/networking/device_drivers/intel/iavf.rst -F: Documentation/networking/device_drivers/intel/ice.rst F: drivers/net/ethernet/intel/ F: drivers/net/ethernet/intel/*/ F: include/linux/avf/virtchnl.h @@ -8553,9 +8577,9 @@ 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 -S: Supported F: drivers/gpu/drm/i915/gvt/ INTEL HID EVENT DRIVER @@ -8568,8 +8592,8 @@ 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 -Q: https://patchwork.kernel.org/project/linux-dmaengine/list/ S: Supported +Q: https://patchwork.kernel.org/project/linux-dmaengine/list/ F: drivers/dma/ioat* INTEL IADX DRIVER @@ -8583,9 +8607,9 @@ INTEL IDLE DRIVER M: Jacob Pan <jacob.jun.pan@linux.intel.com> M: Len Brown <lenb@kernel.org> L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git -B: https://bugzilla.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 @@ -8599,8 +8623,8 @@ INTEL IOMMU (VT-d) M: David Woodhouse <dwmw2@infradead.org> M: Lu Baolu <baolu.lu@linux.intel.com> L: iommu@lists.linux-foundation.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git S: Supported +T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git F: drivers/iommu/dmar.c F: drivers/iommu/intel*.[ch] F: include/linux/intel-iommu.h @@ -8618,27 +8642,27 @@ M: Bingbu Cao <bingbu.cao@intel.com> R: Tian Shu Qiu <tian.shu.qiu@intel.com> L: linux-media@vger.kernel.org S: Maintained -F: drivers/media/pci/intel/ipu3/ F: Documentation/media/uapi/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> L: linux-media@vger.kernel.org S: Maintained -F: drivers/staging/media/ipu3/ F: Documentation/media/uapi/v4l/pixfmt-meta-intel-ipu3.rst F: Documentation/media/v4l-drivers/ipu3.rst F: Documentation/media/v4l-drivers/ipu3_rcb.svg +F: drivers/staging/media/ipu3/ INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT M: Krzysztof Halasa <khalasa@piap.pl> S: Maintained -F: include/linux/soc/ixp4xx/qmgr.h -F: include/linux/soc/ixp4xx/npe.h -F: drivers/soc/ixp4xx/ixp4xx-qmgr.c -F: drivers/soc/ixp4xx/ixp4xx-npe.c 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> @@ -8649,11 +8673,11 @@ INTEL MANAGEMENT ENGINE (mei) M: Tomas Winkler <tomas.winkler@intel.com> L: linux-kernel@vger.kernel.org S: Supported -F: include/uapi/linux/mei.h -F: include/linux/mei_cl_bus.h +F: Documentation/driver-api/mei/* F: drivers/misc/mei/* F: drivers/watchdog/mei_wdt.c -F: Documentation/driver-api/mei/* +F: include/linux/mei_cl_bus.h +F: include/uapi/linux/mei.h F: samples/mei/* INTEL MENLOW THERMAL DRIVER @@ -8745,12 +8769,12 @@ INTEL STRATIX10 FIRMWARE DRIVERS M: Richard Gong <richard.gong@linux.intel.com> 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 -F: Documentation/ABI/testing/sysfs-devices-platform-stratix10-rsu -F: Documentation/devicetree/bindings/firmware/intel,stratix10-svc.txt INTEL TELEMETRY DRIVER M: Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com> @@ -8784,9 +8808,9 @@ M: Emmanuel Grumbach <emmanuel.grumbach@intel.com> M: Luca Coelho <luciano.coelho@intel.com> M: Intel Linux Wireless <linuxwifi@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 -S: Supported F: drivers/net/wireless/intel/iwlwifi/ INTEL WIRELESS WIMAX CONNECTION 2400 @@ -8814,19 +8838,19 @@ 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 -S: Supported F: Documentation/x86/intel_txt.rst -F: include/linux/tboot.h F: arch/x86/kernel/tboot.c +F: include/linux/tboot.h INTERCONNECT API M: Georgi Djakov <georgi.djakov@linaro.org> L: linux-pm@vger.kernel.org S: Maintained -F: Documentation/driver-api/interconnect.rst 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 @@ -8836,8 +8860,8 @@ INVENSENSE MPU-3050 GYROSCOPE DRIVER M: Linus Walleij <linus.walleij@linaro.org> L: linux-iio@vger.kernel.org S: Maintained -F: drivers/iio/gyro/mpu3050* F: Documentation/devicetree/bindings/iio/gyroscope/invensense,mpu3050.txt +F: drivers/iio/gyro/mpu3050* IOC3 ETHERNET DRIVER M: Ralf Baechle <ralf@linux-mips.org> @@ -8852,40 +8876,40 @@ M: linux-xfs@vger.kernel.org M: linux-fsdevel@vger.kernel.org L: linux-xfs@vger.kernel.org L: linux-fsdevel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git 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> L: iommu@lists.linux-foundation.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git F: Documentation/devicetree/bindings/iommu/ F: drivers/iommu/ F: include/linux/iommu.h -F: include/linux/of_iommu.h F: include/linux/iova.h +F: include/linux/of_iommu.h IO_URING M: Jens Axboe <axboe@kernel.dk> L: io-uring@vger.kernel.org +S: Maintained T: git git://git.kernel.dk/linux-block T: git git://git.kernel.dk/liburing -S: Maintained -F: fs/io_uring.c F: fs/io-wq.c F: fs/io-wq.h +F: fs/io_uring.c F: include/uapi/linux/io_uring.h IPMI SUBSYSTEM M: Corey Minyard <minyard@acm.org> L: openipmi-developer@lists.sourceforge.net (moderated for non-subscribers) -W: http://openipmi.sourceforge.net/ S: Supported -F: Documentation/devicetree/bindings/ipmi/ +W: http://openipmi.sourceforge.net/ F: Documentation/IPMI.txt +F: Documentation/devicetree/bindings/ipmi/ F: drivers/char/ipmi/ F: include/linux/ipmi* F: include/uapi/linux/ipmi* @@ -8893,8 +8917,8 @@ F: include/uapi/linux/ipmi* IPS SCSI RAID DRIVER M: Adaptec OEM Raid Solutions <aacraid@microsemi.com> L: linux-scsi@vger.kernel.org -W: http://www.adaptec.com/ S: Maintained +W: http://www.adaptec.com/ F: drivers/scsi/ips* IPVS @@ -8958,9 +8982,9 @@ F: include/linux/isa.h ISA RADIO MODULE M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/radio/radio-isa* ISAPNP @@ -8975,8 +8999,8 @@ M: Lee Duncan <lduncan@suse.com> M: Chris Leech <cleech@redhat.com> L: open-iscsi@googlegroups.com L: linux-scsi@vger.kernel.org -W: www.open-iscsi.com S: Maintained +W: www.open-iscsi.com F: drivers/scsi/*iscsi* F: include/scsi/*iscsi* @@ -8998,35 +9022,35 @@ F: drivers/infiniband/ulp/iser/ ISCSI EXTENSIONS FOR RDMA (ISER) TARGET M: Sagi Grimberg <sagi@grimberg.me> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git master 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/mISDN SUBSYSTEM -M: Karsten Keil <isdn@linux-pingi.de> -L: isdn4linux@listserv.isdn4linux.de (subscribers-only) -L: netdev@vger.kernel.org -W: http://www.isdn4linux.de -S: Maintained -F: drivers/isdn/mISDN/ -F: drivers/isdn/hardware/ -F: drivers/isdn/Kconfig -F: drivers/isdn/Makefile - ISDN/CMTP OVER BLUETOOTH M: Karsten Keil <isdn@linux-pingi.de> L: isdn4linux@listserv.isdn4linux.de (subscribers-only) L: netdev@vger.kernel.org -W: http://www.isdn4linux.de S: Odd Fixes +W: http://www.isdn4linux.de F: Documentation/isdn/ F: drivers/isdn/capi/ -F: net/bluetooth/cmtp/ 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> @@ -9038,19 +9062,19 @@ 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 -S: Maintained F: drivers/media/tuners/it913x* IVTV VIDEO4LINUX DRIVER M: Andy Walls <awalls@md.metrocast.net> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: Documentation/media/v4l-drivers/ivtv* F: drivers/media/pci/ivtv/ F: include/uapi/linux/ivtv* @@ -9058,31 +9082,31 @@ 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/ -S: Maintained 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/kernel/jailhouse.c 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: drivers/hwmon/jc42.c 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 -S: Maintained F: Documentation/admin-guide/jfs.rst F: fs/jfs/ @@ -9096,9 +9120,9 @@ 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 -S: Odd Fixes F: fs/jffs2/ F: include/uapi/linux/jffs2.h @@ -9141,9 +9165,9 @@ R: Alexander Potapenko <glider@google.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: Documentation/dev-tools/kasan.rst F: include/linux/kasan*.h F: lib/test_kasan.c F: mm/kasan/ @@ -9151,28 +9175,28 @@ F: scripts/Makefile.kasan KCONFIG M: Masahiro Yamada <masahiroy@kernel.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig 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/ F: scripts/Kconfig.include +F: scripts/kconfig/ KDUMP M: Dave Young <dyoung@redhat.com> M: Baoquan He <bhe@redhat.com> R: Vivek Goyal <vgoyal@redhat.com> L: kexec@lists.infradead.org -W: http://lse.sourceforge.net/kdump/ S: Maintained +W: http://lse.sourceforge.net/kdump/ F: Documentation/admin-guide/kdump/ KEENE FM RADIO TRANSMITTER DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/radio/radio-keene* KERNEL AUTOMOUNTER @@ -9184,56 +9208,56 @@ F: fs/autofs/ KERNEL BUILD + files below scripts/ (unless maintained elsewhere) M: Masahiro Yamada <masahiroy@kernel.org> M: Michal Marek <michal.lkml@markovi.net> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git 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/mk* -F: scripts/*vmlinux* F: scripts/mod/ F: scripts/package/ KERNEL JANITORS L: kernel-janitors@vger.kernel.org -W: http://kernelnewbies.org/KernelJanitors 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 -S: Supported -F: fs/nfsd/ -F: include/uapi/linux/nfsd/ F: fs/lockd/ F: fs/nfs_common/ -F: net/sunrpc/ +F: fs/nfsd/ F: include/linux/lockd/ F: include/linux/sunrpc/ +F: include/uapi/linux/nfsd/ F: include/uapi/linux/sunrpc/ +F: net/sunrpc/ KERNEL SELFTEST FRAMEWORK M: Shuah Khan <shuah@kernel.org> M: Shuah Khan <skhan@linuxfoundation.org> L: linux-kselftest@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git -Q: https://patchwork.kernel.org/project/linux-kselftest/list/ S: Maintained -F: tools/testing/selftests/ +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 UNIT TESTING FRAMEWORK (KUnit) M: Brendan Higgins <brendanhiggins@google.com> L: linux-kselftest@vger.kernel.org L: kunit-dev@googlegroups.com -W: https://google.github.io/kunit-docs/third_party/kernel/docs/ S: Maintained +W: https://google.github.io/kunit-docs/third_party/kernel/docs/ F: Documentation/dev-tools/kunit/ F: include/kunit/ F: lib/kunit/ @@ -9243,25 +9267,25 @@ KERNEL USERMODE HELPER M: Luis Chamberlain <mcgrof@kernel.org> L: linux-kernel@vger.kernel.org S: Maintained -F: kernel/umh.c 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 -S: Supported 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: include/asm-generic/kvm* -F: include/linux/kvm* -F: include/kvm/iodev.h -F: virt/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> @@ -9270,32 +9294,32 @@ R: Julien Thierry <julien.thierry.kdev@gmail.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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git S: Maintained -F: arch/arm64/include/uapi/asm/kvm* +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: virt/kvm/arm/ F: include/kvm/arm_* +F: virt/kvm/arm/ KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips) L: linux-mips@vger.kernel.org L: kvm@vger.kernel.org S: Orphan -F: arch/mips/include/uapi/asm/kvm* 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 -S: Supported -F: arch/powerpc/include/uapi/asm/kvm* F: arch/powerpc/include/asm/kvm* -F: arch/powerpc/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> @@ -9303,17 +9327,17 @@ M: Janosch Frank <frankja@linux.ibm.com> R: David Hildenbrand <david@redhat.com> R: Cornelia Huck <cohuck@redhat.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 -S: Supported F: Documentation/virt/kvm/s390* -F: arch/s390/include/uapi/asm/kvm* F: arch/s390/include/asm/gmap.h F: arch/s390/include/asm/kvm* +F: arch/s390/include/uapi/asm/kvm* F: arch/s390/kvm/ F: arch/s390/mm/gmap.c -F: tools/testing/selftests/kvm/s390x/ 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> @@ -9323,34 +9347,34 @@ 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 -S: Supported -F: arch/x86/kvm/ -F: arch/x86/kvm/*/ -F: arch/x86/include/uapi/asm/kvm* -F: arch/x86/include/uapi/asm/vmx.h -F: arch/x86/include/uapi/asm/svm.h 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> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git S: Supported -F: include/linux/kernfs.h +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> -W: http://kernel.org/pub/linux/utils/kernel/kexec/ 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* @@ -9382,21 +9406,21 @@ M: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> L: keyrings@vger.kernel.org S: Maintained F: Documentation/security/keys/core.rst -F: include/linux/key.h +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: include/keys/ F: security/keys/ KGDB / KDB /debug_core M: Jason Wessel <jason.wessel@windriver.com> M: Daniel Thompson <daniel.thompson@linaro.org> R: Douglas Anderson <dianders@chromium.org> -W: http://kgdb.wiki.kernel.org/ L: kgdb-bugreport@lists.sourceforge.net -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb.git 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 @@ -9409,15 +9433,15 @@ 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: mm/kmemleak-test.c +F: mm/kmemleak.c KMOD KERNEL MODULE LOADER - USERMODE HELPER M: Luis Chamberlain <mcgrof@kernel.org> L: linux-kernel@vger.kernel.org S: Maintained -F: kernel/kmod.c F: include/linux/kmod.h +F: kernel/kmod.c F: lib/test_kmod.c F: tools/testing/selftests/kmod/ @@ -9428,8 +9452,8 @@ M: "David S. Miller" <davem@davemloft.net> M: Masami Hiramatsu <mhiramat@kernel.org> S: Maintained F: Documentation/kprobes.txt -F: include/linux/kprobes.h F: include/asm-generic/kprobes.h +F: include/linux/kprobes.h F: kernel/kprobes.c KS0108 LCD CONTROLLER DRIVER @@ -9443,8 +9467,8 @@ L3MDEV M: David Ahern <dsahern@kernel.org> L: netdev@vger.kernel.org S: Maintained -F: net/l3mdev F: include/net/l3mdev.h +F: net/l3mdev L7 BPF FRAMEWORK M: John Fastabend <john.fastabend@gmail.com> @@ -9464,10 +9488,10 @@ LANTIQ / INTEL Ethernet drivers M: Hauke Mehrtens <hauke@hauke-m.de> L: netdev@vger.kernel.org S: Maintained -F: net/dsa/tag_gswip.c -F: drivers/net/ethernet/lantiq_xrx200.c -F: drivers/net/dsa/lantiq_pce.h 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> @@ -9503,9 +9527,9 @@ M: Jacek Anaszewski <jacek.anaszewski@gmail.com> M: Pavel Machek <pavel@ucw.cz> R: Dan Murphy <dmurphy@ti.com> L: linux-leds@vger.kernel.org +S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git -S: Maintained F: Documentation/devicetree/bindings/leds/ F: drivers/leds/ F: include/linux/leds.h @@ -9519,15 +9543,15 @@ F: drivers/misc/eeprom/eeprom.c LEGO MINDSTORMS EV3 R: David Lechner <david@lechnology.com> S: Maintained -F: arch/arm/boot/dts/da850-lego-ev3.dts F: Documentation/devicetree/bindings/power/supply/lego_ev3_battery.txt +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 -W: http://legousb.sourceforge.net/ S: Maintained +W: http://legousb.sourceforge.net/ F: drivers/usb/misc/legousbtower.c LG LAPTOP EXTRAS @@ -9541,45 +9565,45 @@ 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 -S: Maintained 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 -S: Maintained F: drivers/media/dvb-frontends/lgdt3305.* LIBATA PATA ARASAN COMPACT FLASH CONTROLLER M: Viresh Kumar <vireshk@kernel.org> L: linux-ide@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git S: Maintained -F: include/linux/pata_arasan_cf_data.h +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 DRIVERS M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> M: Jens Axboe <axboe@kernel.dk> L: linux-ide@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git S: Maintained -F: drivers/ata/pata_*.c +T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git F: drivers/ata/ata_generic.c +F: drivers/ata/pata_*.c LIBATA PATA FARADAY FTIDE010 AND GEMINI SATA BRIDGE DRIVERS M: Linus Walleij <linus.walleij@linaro.org> L: linux-ide@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git 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 @@ -9588,8 +9612,8 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git 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 @@ -9597,19 +9621,19 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git 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: Jens Axboe <axboe@kernel.dk> L: linux-ide@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git +F: Documentation/devicetree/bindings/ata/ F: drivers/ata/ F: include/linux/ata.h F: include/linux/libata.h -F: Documentation/devicetree/bindings/ata/ LIBLOCKDEP M: Sasha Levin <alexander.levin@microsoft.com> @@ -9621,9 +9645,9 @@ M: Dan Williams <dan.j.williams@intel.com> M: Vishal Verma <vishal.l.verma@intel.com> M: Dave Jiang <dave.jiang@intel.com> L: linux-nvdimm@lists.01.org -P: Documentation/nvdimm/maintainer-entry-profile.rst -Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ 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 @@ -9632,9 +9656,9 @@ M: Vishal Verma <vishal.l.verma@intel.com> M: Dan Williams <dan.j.williams@intel.com> M: Dave Jiang <dave.jiang@intel.com> L: linux-nvdimm@lists.01.org -P: Documentation/nvdimm/maintainer-entry-profile.rst -Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ 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 @@ -9642,18 +9666,18 @@ M: Dan Williams <dan.j.williams@intel.com> M: Vishal Verma <vishal.l.verma@intel.com> M: Dave Jiang <dave.jiang@intel.com> L: linux-nvdimm@lists.01.org -P: Documentation/nvdimm/maintainer-entry-profile.rst -Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ 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: linux-nvdimm@lists.01.org -Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ S: Supported -F: drivers/nvdimm/of_pmem.c +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> @@ -9661,14 +9685,14 @@ M: Vishal Verma <vishal.l.verma@intel.com> M: Dave Jiang <dave.jiang@intel.com> M: Ira Weiny <ira.weiny@intel.com> L: linux-nvdimm@lists.01.org -P: Documentation/nvdimm/maintainer-entry-profile.rst +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 -S: Supported -F: drivers/nvdimm/* F: drivers/acpi/nfit/* -F: include/linux/nd.h +F: drivers/nvdimm/* F: include/linux/libnvdimm.h +F: include/linux/nd.h F: include/uapi/linux/ndctl.h F: tools/testing/nvdimm/ @@ -9686,9 +9710,9 @@ F: scripts/spdxcheck.py LIGHTNVM PLATFORM SUPPORT M: Matias Bjorling <mb@lightnvm.io> -W: http://github/OpenChannelSSD L: linux-block@vger.kernel.org S: Maintained +W: http://github/OpenChannelSSD F: drivers/lightnvm/ F: include/linux/lightnvm.h F: include/uapi/linux/lightnvm.h @@ -9704,25 +9728,25 @@ 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> -W: https://github.com/linuxppc/wiki/wiki 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 -S: Supported 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/devicetree/bindings/i2c/i2c-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/*/*/*pasemi* -F: drivers/*/*pasemi* F: drivers/pci/hotplug/pnv_php.c F: drivers/pci/hotplug/rpa* F: drivers/rtc/rtc-opal.c @@ -9752,11 +9776,11 @@ F: arch/powerpc/platforms/44x/ LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX M: Scott Wood <oss@buserror.net> L: linuxppc-dev@lists.ozlabs.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux.git 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/ -F: Documentation/devicetree/bindings/powerpc/fsl/ LINUX FOR POWERPC EMBEDDED PPC8XX M: Christophe Leroy <christophe.leroy@c-s.fr> @@ -9787,12 +9811,12 @@ 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: tools/memory-model/ F: Documentation/atomic_bitops.txt F: Documentation/atomic_t.txt F: Documentation/core-api/atomic_ops.rst F: Documentation/core-api/refcount-vs-atomic.rst F: Documentation/memory-barriers.txt +F: tools/memory-model/ LIS3LV02D ACCELEROMETER DRIVER M: Eric Piel <eric.piel@tremplin-utc.net> @@ -9814,24 +9838,24 @@ 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 -F: kernel/livepatch/ -F: include/linux/livepatch.h +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/x86/include/asm/livepatch.h F: arch/x86/kernel/livepatch.c -F: Documentation/livepatch/ -F: Documentation/ABI/testing/sysfs-kernel-livepatch +F: include/linux/livepatch.h +F: kernel/livepatch/ F: samples/livepatch/ F: tools/testing/selftests/livepatch/ -L: live-patching@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.git LLC (802.2) L: netdev@vger.kernel.org S: Odd fixes F: include/linux/llc.h -F: include/uapi/linux/llc.h F: include/net/llc* +F: include/uapi/linux/llc.h F: net/llc/ LM73 HARDWARE MONITOR DRIVER @@ -9858,8 +9882,8 @@ LM90 HARDWARE MONITOR DRIVER M: Jean Delvare <jdelvare@suse.com> L: linux-hwmon@vger.kernel.org S: Maintained -F: Documentation/hwmon/lm90.rst F: Documentation/devicetree/bindings/hwmon/lm90.txt +F: Documentation/hwmon/lm90.rst F: drivers/hwmon/lm90.c F: include/dt-bindings/thermal/lm90.h @@ -9873,50 +9897,50 @@ 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/ -S: Maintained F: drivers/media/usb/dvb-usb-v2/lmedm04* LOADPIN SECURITY MODULE M: Kees Cook <keescook@chromium.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin S: Supported -F: security/loadpin/ +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> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core F: Documentation/locking/ -F: include/linux/lockdep.h -F: include/linux/spinlock*.h F: arch/*/include/asm/spinlock*.h -F: include/linux/rwlock*.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: lib/locking*.[ch] +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 -W: http://www.linux-ntfs.org/content/view/19/37/ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git F: drivers/hid/hid-lg-g15.c LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI) @@ -9925,8 +9949,8 @@ M: Chaitra P B <chaitra.basappa@broadcom.com> M: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com> L: MPT-FusionLinux.pdl@broadcom.com L: linux-scsi@vger.kernel.org -W: http://www.avagotech.com/support/ S: Supported +W: http://www.avagotech.com/support/ F: drivers/message/fusion/ F: drivers/scsi/mpt3sas/ @@ -9943,13 +9967,24 @@ S: Maintained F: Documentation/devicetree/bindings/iio/dac/lltc,ltc1660.yaml F: drivers/iio/dac/ltc1660.c -LTC2983 IIO TEMPERATURE DRIVER +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 -F: drivers/iio/temperature/ltc2983.c +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> @@ -9958,24 +9993,13 @@ S: Maintained F: Documentation/hwmon/ltc4261.rst F: drivers/hwmon/ltc4261.c -LTC2947 HARDWARE MONITOR DRIVER -M: Nuno Sá <nuno.sa@analog.com> -W: http://ez.analog.com/community/linux-device-drivers -L: linux-hwmon@vger.kernel.org -S: Supported -F: drivers/hwmon/ltc2947-core.c -F: drivers/hwmon/ltc2947-spi.c -F: drivers/hwmon/ltc2947-i2c.c -F: drivers/hwmon/ltc2947.h -F: Documentation/devicetree/bindings/hwmon/adi,ltc2947.yaml - LTC4306 I2C MULTIPLEXER DRIVER M: Michael Hennerich <michael.hennerich@analog.com> -W: http://ez.analog.com/community/linux-device-drivers L: linux-i2c@vger.kernel.org S: Supported -F: drivers/i2c/muxes/i2c-mux-ltc4306.c +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> @@ -9985,69 +10009,69 @@ 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 -S: Maintained 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 -S: Maintained F: arch/m68k/ F: drivers/zorro/ M68K ON APPLE MACINTOSH M: Joshua Thompson <funaho@jurai.org> -W: http://www.mac.linux-m68k.org/ L: linux-m68k@lists.linux-m68k.org S: Maintained +W: http://www.mac.linux-m68k.org/ F: arch/m68k/mac/ M68K ON HP9000/300 M: Philip Blundell <philb@gnu.org> -W: http://www.tazenda.demon.co.uk/phil/linux-hp 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 -S: Maintained 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/ -S: Maintained 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 -T: git git://linuxtv.org/media_tree.git 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: http://wireless.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 -S: Maintained F: Documentation/networking/mac80211-injection.txt +F: Documentation/networking/mac80211_hwsim/mac80211_hwsim.rst +F: drivers/net/wireless/mac80211_hwsim.[ch] F: include/net/mac80211.h F: net/mac80211/ -F: drivers/net/wireless/mac80211_hwsim.[ch] -F: Documentation/networking/mac80211_hwsim/mac80211_hwsim.rst MAILBOX API M: Jassi Brar <jassisinghbrar@gmail.com> @@ -10059,9 +10083,9 @@ F: include/linux/mailbox_controller.h MAN-PAGES: MANUAL PAGES FOR LINUX -- Sections 2, 3, 4, 5, and 7 M: Michael Kerrisk <mtk.manpages@gmail.com> -W: http://www.kernel.org/doc/man-pages 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> @@ -10074,35 +10098,35 @@ M: Andrew Lunn <andrew@lunn.ch> M: Vivien Didelot <vivien.didelot@gmail.com> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/dsa/mv88e6xxx/ -F: include/linux/platform_data/mv88e6xxx.h F: Documentation/devicetree/bindings/net/dsa/marvell.txt F: Documentation/networking/devlink/mv88e6xxx.rst +F: drivers/net/dsa/mv88e6xxx/ +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/phy-mvebu-utmi.txt +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 -F: Documentation/devicetree/bindings/display/armada/ - -MARVELL ARMADA 3700 PHY DRIVERS -M: Miquel Raynal <miquel.raynal@bootlin.com> -S: Maintained -F: drivers/phy/marvell/phy-mvebu-a3700-comphy.c -F: drivers/phy/marvell/phy-mvebu-a3700-utmi.c -F: Documentation/devicetree/bindings/phy/phy-mvebu-comphy.txt -F: Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt MARVELL CRYPTO DRIVER M: Boris Brezillon <bbrezillon@kernel.org> M: Arnaud Ebalard <arno@natisbad.org> M: Srujana Challa <schalla@marvell.com> -F: drivers/crypto/marvell/ -S: Maintained L: linux-crypto@vger.kernel.org +S: Maintained +F: drivers/crypto/marvell/ MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2) M: Mirko Lindner <mlindner@marvell.com> @@ -10164,8 +10188,27 @@ MARVELL NAND CONTROLLER DRIVER M: Miquel Raynal <miquel.raynal@bootlin.com> L: linux-mtd@lists.infradead.org S: Maintained -F: drivers/mtd/nand/raw/marvell_nand.c 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/ + +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> +L: netdev@vger.kernel.org +S: Supported +F: Documentation/networking/device_drivers/marvell/octeontx2.rst +F: drivers/net/ethernet/marvell/octeontx2/af/ MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER M: Nicolas Pitre <nico@fluxnic.net> @@ -10176,34 +10219,15 @@ MARVELL USB MDIO CONTROLLER DRIVER M: Tobias Waldekranz <tobias@waldekranz.com> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/phy/mdio-mvusb.c F: Documentation/devicetree/bindings/net/marvell,mvusb.yaml +F: drivers/net/phy/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: drivers/mmc/host/sdhci-xenon* F: Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.txt - -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> -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/marvell/octeontx2/af/ -F: Documentation/networking/device_drivers/marvell/octeontx2.rst - -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: drivers/mmc/host/sdhci-xenon* MATROX FRAMEBUFFER DRIVER L: linux-fbdev@vger.kernel.org @@ -10221,8 +10245,8 @@ F: drivers/hwmon/max16065.c MAX2175 SDR TUNER DRIVER M: Ramesh Shanmugasundaram <rashanmu@gmail.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/max2175.txt F: Documentation/media/v4l-drivers/max2175.rst F: drivers/media/i2c/max2175* @@ -10238,8 +10262,8 @@ MAX6697 HARDWARE MONITOR DRIVER M: Guenter Roeck <linux@roeck-us.net> L: linux-hwmon@vger.kernel.org S: Maintained -F: Documentation/hwmon/max6697.rst F: Documentation/devicetree/bindings/hwmon/max6697.txt +F: Documentation/hwmon/max6697.rst F: drivers/hwmon/max6697.c F: include/linux/platform_data/max6697.h @@ -10263,20 +10287,20 @@ L: linux-kernel@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/*/*max77650.yaml F: Documentation/devicetree/bindings/*/max77650*.yaml -F: include/linux/mfd/max77650.h -F: drivers/mfd/max77650.c -F: drivers/regulator/max77650-regulator.c -F: drivers/power/supply/max77650-charger.c +F: drivers/gpio/gpio-max77650.c F: drivers/input/misc/max77650-onkey.c F: drivers/leds/leds-max77650.c -F: drivers/gpio/gpio-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: drivers/regulator/max77802-regulator.c 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 @@ -10293,17 +10317,17 @@ M: Krzysztof Kozlowski <krzk@kernel.org> 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: drivers/clk/clk-max77686.c -F: Documentation/devicetree/bindings/mfd/max14577.txt -F: Documentation/devicetree/bindings/*/max77686.txt -F: Documentation/devicetree/bindings/mfd/max77693.txt -F: Documentation/devicetree/bindings/clock/maxim,max77686.txt F: include/linux/mfd/max14577*.h F: include/linux/mfd/max77686*.h F: include/linux/mfd/max77693*.h @@ -10311,9 +10335,9 @@ F: include/linux/mfd/max77693*.h MAXIRADIO FM RADIO RECEIVER DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/radio/radio-maxiradio* MCAN MMIO DEVICE DRIVER @@ -10344,11 +10368,11 @@ 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 -W: https://github.com/xueliu/mcr20a-linux 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 -F: Documentation/devicetree/bindings/net/ieee802154/mcr20a.txt MEASUREMENT COMPUTING CIO-DAC IIO DRIVER M: William Breathitt Gray <vilhelm.gray@gmail.com> @@ -10360,81 +10384,81 @@ 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 -S: Supported 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 -S: Supported 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 -S: Maintained 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 -S: Supported 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 -S: Supported 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 -S: Orphan 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 -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/imx.txt F: Documentation/media/v4l-drivers/imx.rst F: drivers/staging/media/imx/ F: include/linux/imx-media.h F: include/media/imx.h -MEDIA DRIVER FOR FREESCALE IMX PXP -M: Philipp Zabel <p.zabel@pengutronix.de> -L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: drivers/media/platform/imx-pxp.[ch] - MEDIA DRIVERS FOR FREESCALE IMX7 M: Rui Miguel Silva <rmfrfs@gmail.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/imx7-csi.txt F: Documentation/devicetree/bindings/media/imx7-mipi-csi2.txt F: Documentation/media/v4l-drivers/imx7.rst @@ -10444,55 +10468,64 @@ 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 -S: Supported 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 -S: Supported 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 -S: Supported 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 -S: Orphan 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 -S: Supported 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 -T: git git://linuxtv.org/media_tree.git 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 @@ -10501,8 +10534,8 @@ MEDIA DRIVERS FOR RENESAS - DRIF M: Ramesh Shanmugasundaram <rashanmu@gmail.com> L: linux-media@vger.kernel.org L: linux-renesas-soc@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Supported +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/renesas,drif.txt F: drivers/media/platform/rcar_drif.c @@ -10510,8 +10543,8 @@ 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 -T: git git://linuxtv.org/media_tree.git S: Supported +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/renesas,fcp.txt F: drivers/media/platform/rcar-fcp.c F: include/media/rcar-fcp.h @@ -10520,8 +10553,8 @@ 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 -T: git git://linuxtv.org/media_tree.git S: Supported +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/renesas,fdp1.txt F: drivers/media/platform/rcar_fdp1.c @@ -10529,8 +10562,8 @@ 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 -T: git git://linuxtv.org/media_tree.git S: Supported +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/renesas,csi2.yaml F: Documentation/devicetree/bindings/media/renesas,vin.yaml F: drivers/media/platform/rcar-vin/ @@ -10540,49 +10573,40 @@ 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 -T: git git://linuxtv.org/media_tree.git S: Supported +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/renesas,vsp1.txt 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 -S: Orphan 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 -S: Orphan F: drivers/media/dvb-frontends/stv6111* MEDIA DRIVERS FOR STM32 - DCMI M: Hugues Fruchet <hugues.fruchet@st.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git 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 DRIVERS FOR NVIDIA TEGRA - VDE -M: Dmitry Osipenko <digetx@gmail.com> -L: linux-media@vger.kernel.org -L: linux-tegra@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -S: Maintained -F: Documentation/devicetree/bindings/media/nvidia,tegra-vde.txt -F: drivers/staging/media/tegra-vde/ - 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 -S: Maintained F: Documentation/devicetree/bindings/media/ F: Documentation/media/ F: drivers/media/ @@ -10590,12 +10614,12 @@ F: drivers/staging/media/ F: include/linux/platform_data/media/ F: include/media/ F: include/uapi/linux/dvb/ -F: include/uapi/linux/videodev2.h +F: include/uapi/linux/ivtv* F: include/uapi/linux/media.h -F: include/uapi/linux/v4l2-* F: include/uapi/linux/meye.h -F: include/uapi/linux/ivtv* 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> @@ -10605,6 +10629,13 @@ 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 @@ -10619,12 +10650,6 @@ S: Maintained F: Documentation/devicetree/bindings/dma/mtk-* F: drivers/dma/mediatek/ -MEDIATEK PMIC LED DRIVER -M: Sean Wang <sean.wang@mediatek.com> -S: Maintained -F: drivers/leds/leds-mt6323.c -F: Documentation/devicetree/bindings/leds/leds-mt6323.txt - MEDIATEK ETHERNET DRIVER M: Felix Fietkau <nbd@openwrt.org> M: John Crispin <john@phrozen.org> @@ -10634,50 +10659,36 @@ L: netdev@vger.kernel.org S: Maintained F: drivers/net/ethernet/mediatek/ -MEDIATEK SWITCH DRIVER -M: Sean Wang <sean.wang@mediatek.com> -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/dsa/mt7530.* -F: net/dsa/tag_mtk.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 JPEG DRIVER M: Rick Chang <rick.chang@mediatek.com> M: Bin Liu <bin.liu@mediatek.com> S: Supported -F: drivers/media/platform/mtk-jpeg/ 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/ -F: Documentation/devicetree/bindings/media/mediatek-mdp.txt MEDIATEK MEDIA DRIVER M: Tiffany Lin <tiffany.lin@mediatek.com> M: Andrew-CT Chen <andrew-ct.chen@mediatek.com> S: Supported -F: drivers/media/platform/mtk-vcodec/ -F: drivers/media/platform/mtk-vpu/ 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: drivers/mmc/host/mtk-sd.c F: Documentation/devicetree/bindings/mmc/mtk-sd.txt +F: drivers/mmc/host/mtk-sd.c MEDIATEK MT76 WIRELESS LAN DRIVER M: Felix Fietkau <nbd@nbd.name> @@ -10698,21 +10709,34 @@ MEDIATEK MT7621/28/88 I2C DRIVER M: Stefan Roese <sr@denx.de> L: linux-i2c@vger.kernel.org S: Maintained -F: drivers/i2c/busses/i2c-mt7621.c F: Documentation/devicetree/bindings/i2c/i2c-mt7621.txt +F: drivers/i2c/busses/i2c-mt7621.c MEDIATEK NAND CONTROLLER DRIVER M: Xiaolei Li <xiaolei.li@mediatek.com> L: linux-mtd@lists.infradead.org S: Maintained -F: drivers/mtd/nand/raw/mtk_* 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> +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 (moderated for non-subscribers) @@ -10726,8 +10750,8 @@ 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: drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c 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> @@ -10735,8 +10759,8 @@ 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 -W: http://www.avagotech.com/support/ S: Maintained +W: http://www.avagotech.com/support/ F: Documentation/scsi/megaraid.rst F: drivers/scsi/megaraid.* F: drivers/scsi/megaraid/ @@ -10744,23 +10768,23 @@ F: drivers/scsi/megaraid/ MELEXIS MLX90614 DRIVER M: Crt Mori <cmo@melexis.com> L: linux-iio@vger.kernel.org -W: http://www.melexis.com 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 -W: http://www.melexis.com S: Supported +W: http://www.melexis.com F: drivers/iio/temperature/mlx90632.c MELFAS MIP4 TOUCHSCREEN DRIVER M: Sangwon Jee <jeesw@melfas.com> -W: http://www.melfas.com S: Supported -F: drivers/input/touchscreen/melfas_mip4.c +W: http://www.melfas.com F: Documentation/devicetree/bindings/input/touchscreen/melfas_mip4.txt +F: drivers/input/touchscreen/melfas_mip4.c MELLANOX ETHERNET DRIVER (mlx4_en) M: Tariq Toukan <tariqt@mellanox.com> @@ -10784,8 +10808,8 @@ L: netdev@vger.kernel.org S: Supported W: http://www.mellanox.com Q: http://patchwork.ozlabs.org/project/netdev/list/ -F: drivers/net/ethernet/mellanox/mlx5/core/en_accel/* 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 @@ -10821,18 +10845,18 @@ MELLANOX MLX4 core VPI driver M: Tariq Toukan <tariqt@mellanox.com> L: netdev@vger.kernel.org L: linux-rdma@vger.kernel.org +S: Supported W: http://www.mellanox.com Q: http://patchwork.ozlabs.org/project/netdev/list/ -S: Supported F: drivers/net/ethernet/mellanox/mlx4/ F: include/linux/mlx4/ MELLANOX MLX4 IB driver M: Yishai Hadas <yishaih@mellanox.com> L: linux-rdma@vger.kernel.org +S: Supported W: http://www.mellanox.com Q: http://patchwork.kernel.org/project/linux-rdma/list/ -S: Supported F: drivers/infiniband/hw/mlx4/ F: include/linux/mlx4/ F: include/uapi/rdma/mlx4-abi.h @@ -10842,19 +10866,19 @@ M: Saeed Mahameed <saeedm@mellanox.com> M: Leon Romanovsky <leonro@mellanox.com> L: netdev@vger.kernel.org L: linux-rdma@vger.kernel.org +S: Supported W: http://www.mellanox.com Q: http://patchwork.ozlabs.org/project/netdev/list/ -S: Supported +F: Documentation/networking/device_drivers/mellanox/ F: drivers/net/ethernet/mellanox/mlx5/core/ F: include/linux/mlx5/ -F: Documentation/networking/device_drivers/mellanox/ MELLANOX MLX5 IB driver M: Leon Romanovsky <leonro@mellanox.com> L: linux-rdma@vger.kernel.org +S: Supported W: http://www.mellanox.com Q: http://patchwork.kernel.org/project/linux-rdma/list/ -S: Supported F: drivers/infiniband/hw/mlx5/ F: include/linux/mlx5/ F: include/uapi/rdma/mlx5-abi.h @@ -10864,17 +10888,17 @@ M: Vadim Pasternak <vadimp@mellanox.com> M: Michael Shych <michaelsh@mellanox.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 -F: Documentation/i2c/busses/i2c-mlxcpld.rst MELLANOX MLXCPLD LED DRIVER M: Vadim Pasternak <vadimp@mellanox.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 -F: Documentation/leds/leds-mlxcpld.rst MELLANOX PLATFORM DRIVER M: Vadim Pasternak <vadimp@mellanox.com> @@ -10887,30 +10911,30 @@ M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> M: "Paul E. McKenney" <paulmck@kernel.org> L: linux-kernel@vger.kernel.org S: Supported -F: kernel/sched/membarrier.c -F: include/uapi/linux/membarrier.h 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 -F: Documentation/core-api/boot-time-mm.rst 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 -S: Maintained -F: include/linux/mm.h F: include/linux/gfp.h -F: include/linux/mmzone.h F: include/linux/memory_hotplug.h +F: include/linux/mm.h +F: include/linux/mmzone.h F: include/linux/vmalloc.h F: mm/ @@ -10919,12 +10943,12 @@ 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 -S: Maintained F: Documentation/devicetree/bindings/mtd/ F: drivers/mtd/ F: include/linux/mtd/ @@ -10939,18 +10963,18 @@ 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 -F: Documentation/driver-api/men-chameleon-bus.rst 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 -F: drivers/leds/leds-menf21bmc.c -F: drivers/hwmon/menf21bmc_hwmon.c -F: Documentation/hwmon/menf21bmc.rst MEN Z069 WATCHDOG DRIVER M: Johannes Thumshirn <jth@kernel.org> @@ -10962,27 +10986,27 @@ 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 -W: http://linux-meson.com/ S: Supported -F: drivers/media/platform/meson/ao-cec.c -F: drivers/media/platform/meson/ao-cec-g12a.c -F: Documentation/devicetree/bindings/media/amlogic,meson-gx-ao-cec.yaml +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/platform/meson/ao-cec-g12a.c +F: drivers/media/platform/meson/ao-cec.c MESON NAND CONTROLLER DRIVER FOR AMLOGIC SOCS M: Liang Yang <liang.yang@amlogic.com> L: linux-mtd@lists.infradead.org S: Maintained -F: drivers/mtd/nand/raw/meson_* F: Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt +F: drivers/mtd/nand/raw/meson_* MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS M: Maxime Jourdan <mjourdan@baylibre.com> L: linux-media@vger.kernel.org L: linux-amlogic@lists.infradead.org S: Supported -F: drivers/staging/media/meson/vdec/ T: git git://linuxtv.org/media_tree.git +F: drivers/staging/media/meson/vdec/ METHODE UDPU SUPPORT M: Vladimir Vid <vladimir.vid@sartura.hr> @@ -11001,17 +11025,32 @@ 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 -S: Supported F: arch/microblaze/ 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> @@ -11024,11 +11063,11 @@ M: Ludovic Desroches <ludovic.desroches@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: include/linux/platform_data/dma-atmel.h -F: Documentation/devicetree/bindings/dma/atmel-dma.txt F: include/dt-bindings/dma/at91.h +F: include/linux/platform_data/dma-atmel.h MICROCHIP ECC DRIVER M: Tudor Ambarus <tudor.ambarus@microchip.com> @@ -11040,18 +11079,18 @@ MICROCHIP I2C DRIVER M: Ludovic Desroches <ludovic.desroches@microchip.com> L: linux-i2c@vger.kernel.org S: Supported -F: drivers/i2c/busses/i2c-at91.h 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: drivers/media/platform/atmel/atmel-sama5d2-isc.c -F: drivers/media/platform/atmel/atmel-isc.h +F: Documentation/devicetree/bindings/media/atmel-isc.txt F: drivers/media/platform/atmel/atmel-isc-base.c F: drivers/media/platform/atmel/atmel-isc-regs.h -F: Documentation/devicetree/bindings/media/atmel-isc.txt +F: drivers/media/platform/atmel/atmel-isc.h +F: drivers/media/platform/atmel/atmel-sama5d2-isc.c F: include/linux/atmel-isc-media.h MICROCHIP ISI DRIVER @@ -11061,30 +11100,15 @@ S: Supported F: drivers/media/platform/atmel/atmel-isi.c F: drivers/media/platform/atmel/atmel-isi.h -MICROCHIP AT91 USART MFD DRIVER -M: Radu Pirea <radu_nicolae.pirea@upb.ro> -L: linux-kernel@vger.kernel.org -S: Supported -F: drivers/mfd/at91-usart.c -F: include/dt-bindings/mfd/at91-usart.h -F: Documentation/devicetree/bindings/mfd/atmel-usart.txt - -MICROCHIP AT91 USART SPI DRIVER -M: Radu Pirea <radu_nicolae.pirea@upb.ro> -L: linux-spi@vger.kernel.org -S: Supported -F: drivers/spi/spi-at91-usart.c -F: Documentation/devicetree/bindings/mfd/atmel-usart.txt - MICROCHIP KSZ SERIES ETHERNET SWITCH DRIVER M: Woojung Huh <woojung.huh@microchip.com> M: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com> L: netdev@vger.kernel.org S: Maintained -F: net/dsa/tag_ksz.c +F: Documentation/devicetree/bindings/net/dsa/ksz.txt F: drivers/net/dsa/microchip/* F: include/linux/platform_data/microchip-ksz.h -F: Documentation/devicetree/bindings/net/dsa/ksz.txt +F: net/dsa/tag_ksz.c MICROCHIP LAN743X ETHERNET DRIVER M: Bryan Whitehead <bryan.whitehead@microchip.com> @@ -11100,11 +11124,6 @@ S: Maintained F: drivers/video/fbdev/atmel_lcdfb.c F: include/video/atmel_lcdc.h -MICROCHIP MMC/SD/SDIO MCI DRIVER -M: Ludovic Desroches <ludovic.desroches@microchip.com> -S: Maintained -F: drivers/mmc/host/atmel-mci.c - MICROCHIP MCP16502 PMIC DRIVER M: Andrei Stefanescu <andrei.stefanescu@microchip.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) @@ -11117,31 +11136,36 @@ M: Marcus Folkesson <marcus.folkesson@gmail.com> M: Kent Gustavsson <kent@minoris.se> L: linux-iio@vger.kernel.org S: Supported -F: drivers/iio/adc/mcp3911.c 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: drivers/mtd/nand/raw/atmel/* 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: drivers/pwm/pwm-atmel.c F: Documentation/devicetree/bindings/pwm/atmel-pwm.txt +F: drivers/pwm/pwm-atmel.c MICROCHIP SAMA5D2-COMPATIBLE ADC DRIVER M: Ludovic Desroches <ludovic.desroches@microchip.com> M: Eugen Hristev <eugen.hristev@microchip.com> L: linux-iio@vger.kernel.org S: Supported -F: drivers/iio/adc/at91-sama5d2_adc.c F: Documentation/devicetree/bindings/iio/adc/at91-sama5d2_adc.txt +F: drivers/iio/adc/at91-sama5d2_adc.c F: include/dt-bindings/iio/adc/at91-sama5d2_adc.h MICROCHIP SAMA5D2-COMPATIBLE SHUTDOWN CONTROLLER @@ -11161,18 +11185,18 @@ S: Supported F: drivers/misc/atmel-ssc.c F: include/linux/atmel-ssc.h -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 USB251XB DRIVER M: Richard Leitner <richard.leitner@skidata.com> L: linux-usb@vger.kernel.org S: Maintained -F: drivers/usb/misc/usb251xb.c 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 XDMA DRIVER M: Ludovic Desroches <ludovic.desroches@microchip.com> @@ -11181,35 +11205,35 @@ L: dmaengine@vger.kernel.org S: Supported F: drivers/dma/at_xdmac.c +MICROSEMI ETHERNET SWITCH DRIVER +M: Alexandre Belloni <alexandre.belloni@bootlin.com> +M: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com> +L: netdev@vger.kernel.org +S: Supported +F: drivers/net/ethernet/mscc/ +F: include/soc/mscc/ocelot* + MICROSEMI MIPS SOCS M: Alexandre Belloni <alexandre.belloni@bootlin.com> M: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com> L: linux-mips@vger.kernel.org S: Supported -F: arch/mips/generic/board-ocelot.c -F: arch/mips/configs/generic/board-ocelot.config -F: arch/mips/boot/dts/mscc/ F: Documentation/devicetree/bindings/mips/mscc.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@microsemi.com> L: esc.storagedev@microsemi.com L: linux-scsi@vger.kernel.org S: Supported -F: drivers/scsi/smartpqi/smartpqi*.[ch] +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 -F: Documentation/scsi/smartpqi.rst - -MICROSEMI ETHERNET SWITCH DRIVER -M: Alexandre Belloni <alexandre.belloni@bootlin.com> -M: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com> -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/ethernet/mscc/ -F: include/soc/mscc/ocelot* MICROSOFT SURFACE PRO 3 BUTTON DRIVER M: Chen Yu <yu.c.chen@intel.com> @@ -11225,10 +11249,10 @@ F: drivers/usb/image/microtek.* MIPS M: Thomas Bogendoerfer <tsbogend@alpha.franken.de> L: linux-mips@vger.kernel.org +S: Maintained W: http://www.linux-mips.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git Q: https://patchwork.kernel.org/project/linux-mips/list/ -S: Maintained +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/ @@ -11252,56 +11276,56 @@ F: Documentation/devicetree/bindings/power/mti,mips-cpc.txt 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/loongson32/ F: arch/mips/include/asm/mach-loongson32/ -F: drivers/*/*loongson1* +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/loongson2ef/ F: arch/mips/include/asm/mach-loongson2ef/ -F: drivers/*/*loongson2* +F: arch/mips/loongson2ef/ F: drivers/*/*/*loongson2* +F: drivers/*/*loongson2* MIPS/LOONGSON64 ARCHITECTURE M: Huacai Chen <chenhc@lemote.com> M: Jiaxun Yang <jiaxun.yang@flygoat.com> L: linux-mips@vger.kernel.org S: Maintained -F: arch/mips/loongson64/ F: arch/mips/include/asm/mach-loongson64/ -F: drivers/platform/mips/cpu_hwmon.c -F: drivers/irqchip/irq-loongson* -F: drivers/*/*loongson3* +F: arch/mips/loongson64/ F: drivers/*/*/*loongson3* - -MIPS RINT INSTRUCTION EMULATION -M: Aleksandar Markovic <aleksandar.markovic@mips.com> -L: linux-mips@vger.kernel.org -S: Supported -F: arch/mips/math-emu/sp_rint.c -F: arch/mips/math-emu/dp_rint.c +F: drivers/*/*loongson3* +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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lkundrak/linux-mmp.git 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: linux/soc/mmp/ @@ -11329,31 +11353,39 @@ 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/ -S: Maintained 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/ -S: Maintained F: drivers/media/dvb-frontends/mn88473* MODULE SUPPORT M: Jessica Yu <jeyu@kernel.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git modules-next 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/regulator/mps,mp*.yaml +F: drivers/regulator/mp5416.c +F: drivers/regulator/mpq7920.c +F: drivers/regulator/mpq7920.h + MOTION EYE VAIO PICTUREBOOK CAMERA DRIVER -W: http://popies.net/meye/ S: Orphan +W: http://popies.net/meye/ F: Documentation/media/v4l-drivers/meye* F: drivers/media/pci/meye/ F: include/uapi/linux/meye.h @@ -11364,27 +11396,19 @@ S: Maintained F: Documentation/driver-api/serial/moxa-smartio.rst F: drivers/tty/mxser.* -MONOLITHIC POWER SYSTEM PMIC DRIVER -M: Saravanan Sekar <sravanhome@gmail.com> -S: Maintained -F: Documentation/devicetree/bindings/regulator/mps,mp*.yaml -F: drivers/regulator/mp5416.c -F: drivers/regulator/mpq7920.c -F: drivers/regulator/mpq7920.h - MR800 AVERMEDIA USB FM RADIO DRIVER M: Alexey Klimov <klimov.linux@gmail.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git 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: drivers/net/ieee802154/mrf24j40.c F: Documentation/devicetree/bindings/net/ieee802154/mrf24j40.txt +F: drivers/net/ieee802154/mrf24j40.c MSI LAPTOP SUPPORT M: "Lee, Chun-Yi" <jlee@suse.com> @@ -11400,21 +11424,21 @@ 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 -S: Maintained 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 -S: Maintained F: drivers/media/usb/msi2500/ MSYSTEMS DISKONCHIP G3 MTD DRIVER @@ -11426,40 +11450,40 @@ F: drivers/mtd/devices/docg3* MT9M032 APTINA SENSOR DRIVER M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 @@ -11467,19 +11491,19 @@ F: include/media/i2c/mt9v032.h MT9V111 APTINA CAMERA SENSOR M: Jacopo Mondi <jacopo@jmondi.org> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.txt F: drivers/media/i2c/mt9v111.c MULTIFUNCTION DEVICES (MFD) M: Lee Jones <lee.jones@linaro.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git 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/linux/mfd/ F: include/dt-bindings/mfd/ +F: include/linux/mfd/ MULTIMEDIA CARD (MMC) ETC. OVER SPI S: Orphan @@ -11489,8 +11513,8 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git 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/ @@ -11501,9 +11525,9 @@ 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/ -F: drivers/mux/ MULTITECH MULTIPORT CARD (ISICOM) S: Orphan @@ -11525,11 +11549,11 @@ 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 -S: Maintained F: drivers/media/tuners/mxl5007t.* MXSFB DRM DRIVER @@ -11537,9 +11561,9 @@ M: Marek Vasut <marex@denx.de> M: Stefan Agner <stefan@agner.ch> L: dri-devel@lists.freedesktop.org S: Supported -F: drivers/gpu/drm/mxsfb/ -F: Documentation/devicetree/bindings/display/mxsfb.txt T: git git://anongit.freedesktop.org/drm/drm-misc +F: Documentation/devicetree/bindings/display/mxsfb.txt +F: drivers/gpu/drm/mxsfb/ MYLEX DAC960 PCI RAID Controller M: Hannes Reinecke <hare@kernel.org> @@ -11551,26 +11575,26 @@ F: drivers/scsi/myrs.* MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE) M: Chris Lee <christopher.lee@cspi.com> L: netdev@vger.kernel.org -W: https://www.cspi.com/ethernet-products/support/downloads/ 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/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next C: irc://irc.oftc.net/mtd -S: Maintained +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> -S: Maintained L: alsa-devel@alsa-project.org (moderated for non-subscribers) +S: Maintained W: http://www.native-instruments.com F: sound/usb/caiaq/ @@ -11606,13 +11630,10 @@ S: Maintained F: Documentation/hwmon/nct6775.rst F: drivers/hwmon/nct6775.c -NET_FAILOVER MODULE -M: Sridhar Samudrala <sridhar.samudrala@intel.com> -L: netdev@vger.kernel.org -S: Supported -F: drivers/net/net_failover.c -F: include/net/net_failover.h -F: Documentation/networking/net_failover.rst +NETDEVSIM +M: Jakub Kicinski <kuba@kernel.org> +S: Maintained +F: drivers/net/netdevsim/* NETEM NETWORK EMULATOR M: Stephen Hemminger <stephen@networkplumber.org> @@ -11634,13 +11655,13 @@ 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/ 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 -S: Maintained F: include/linux/netfilter* F: include/linux/netfilter/ F: include/net/netfilter/ @@ -11648,14 +11669,14 @@ F: include/uapi/linux/netfilter* F: include/uapi/linux/netfilter/ F: net/*/netfilter.c F: net/*/netfilter/ -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 -W: http://www.linux-ax25.org/ S: Maintained +W: http://www.linux-ax25.org/ F: include/net/netrom.h F: include/uapi/linux/netrom.h F: net/netrom/ @@ -11668,9 +11689,9 @@ F: drivers/net/ethernet/netronome/ NETWORK BLOCK DEVICE (NBD) M: Josef Bacik <josef@toxicpanda.com> -S: Maintained 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 @@ -11681,37 +11702,37 @@ M: Neil Horman <nhorman@tuxdriver.com> L: netdev@vger.kernel.org S: Maintained W: https://fedorahosted.org/dropwatch/ -F: net/core/drop_monitor.c -F: include/uapi/linux/net_dropmon.h F: include/net/drop_monitor.h +F: include/uapi/linux/net_dropmon.h +F: net/core/drop_monitor.c NETWORKING DRIVERS M: "David S. Miller" <davem@davemloft.net> L: netdev@vger.kernel.org +S: Odd Fixes W: http://www.linuxfoundation.org/en/Net Q: http://patchwork.ozlabs.org/project/netdev/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 -S: Odd Fixes F: Documentation/devicetree/bindings/net/ F: drivers/net/ -F: include/linux/if_* -F: include/linux/netdevice.h 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 -S: Maintained F: Documentation/devicetree/bindings/net/wireless/ F: drivers/net/wireless/ @@ -11721,97 +11742,97 @@ M: Vivien Didelot <vivien.didelot@gmail.com> M: Florian Fainelli <f.fainelli@gmail.com> S: Maintained F: Documentation/devicetree/bindings/net/dsa/ -F: net/dsa/ -F: include/net/dsa.h +F: drivers/net/dsa/ F: include/linux/dsa/ F: include/linux/platform_data/dsa.h -F: drivers/net/dsa/ +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 W: http://www.linuxfoundation.org/en/Net Q: http://patchwork.ozlabs.org/project/netdev/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 -B: mailto:netdev@vger.kernel.org -S: Maintained -F: net/ -F: include/net/ +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/netdevice.h F: include/uapi/linux/net_namespace.h -F: tools/testing/selftests/net/ +F: include/uapi/linux/netdevice.h F: lib/net_utils.c F: lib/random32.c -F: Documentation/networking/ +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 -S: Maintained -F: net/xfrm/ -F: net/key/ -F: net/ipv4/xfrm* -F: net/ipv4/esp4* +F: include/net/xfrm.h +F: include/uapi/linux/xfrm.h F: net/ipv4/ah4.c -F: net/ipv4/ipcomp.c +F: net/ipv4/esp4* F: net/ipv4/ip_vti.c -F: net/ipv6/xfrm* -F: net/ipv6/esp6* +F: net/ipv4/ipcomp.c +F: net/ipv4/xfrm* F: net/ipv6/ah6.c -F: net/ipv6/ipcomp6.c +F: net/ipv6/esp6* F: net/ipv6/ip6_vti.c -F: include/uapi/linux/xfrm.h -F: include/net/xfrm.h +F: net/ipv6/ipcomp6.c +F: net/ipv6/xfrm* +F: net/key/ +F: net/xfrm/ NETWORKING [IPv4/IPv6] M: "David S. Miller" <davem@davemloft.net> M: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru> M: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org> L: netdev@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git 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/ -F: include/net/ip* -F: arch/x86/net/* NETWORKING [LABELED] (NetLabel, Labeled IPsec, SECMARK) M: Paul Moore <paul@paul-moore.com> -W: https://github.com/netlabel 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_SECMARK.h F: include/uapi/linux/netfilter/xt_CONNSECMARK.h -F: net/netlabel/ +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.01.org +S: Maintained W: https://github.com/multipath-tcp/mptcp_net-next/wiki B: https://github.com/multipath-tcp/mptcp_net-next/issues -S: Maintained F: include/net/mptcp.h F: include/uapi/linux/mptcp.h F: net/mptcp/ @@ -11821,14 +11842,14 @@ NETWORKING [TCP] M: Eric Dumazet <edumazet@google.com> L: netdev@vger.kernel.org S: Maintained -F: net/ipv4/tcp*.c -F: net/ipv4/syncookies.c -F: net/ipv6/tcp*.c -F: net/ipv6/syncookies.c -F: include/uapi/linux/tcp.h -F: include/net/tcp.h 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@mellanox.com> @@ -11838,19 +11859,14 @@ M: Daniel Borkmann <daniel@iogearbox.net> M: Jakub Kicinski <kuba@kernel.org> L: netdev@vger.kernel.org S: Maintained -F: net/tls/* -F: include/uapi/linux/tls.h 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/ -NETDEVSIM -M: Jakub Kicinski <kuba@kernel.org> -S: Maintained -F: drivers/net/netdevsim/* - NETXEN (1/10) GbE SUPPORT M: Manish Chopra <manishc@marvell.com> M: Rahul Verma <rahulv@marvell.com> @@ -11859,49 +11875,57 @@ 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: include/net/netns/nexthop.h F: net/ipv4/nexthop.c NFC SUBSYSTEM L: netdev@vger.kernel.org S: Orphan -F: net/nfc/ -F: include/net/nfc/ -F: include/uapi/linux/nfc.h +F: Documentation/devicetree/bindings/net/nfc/ F: drivers/nfc/ F: include/linux/platform_data/nfcmrvl.h -F: Documentation/devicetree/bindings/net/nfc/ +F: include/net/nfc/ +F: include/uapi/linux/nfc.h +F: net/nfc/ 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 -S: Maintained F: fs/lockd/ F: fs/nfs/ F: fs/nfs_common/ -F: net/sunrpc/ 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/ 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 -S: Supported F: Documentation/filesystems/nilfs2.rst F: fs/nilfs2/ F: include/trace/events/nilfs2.h @@ -11910,24 +11934,23 @@ 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> -W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ 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> -W: http://www.netlab.is.tsukuba.ac.jp/~yokota/izumi/ninja/ 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: Ley Foon Tan <ley.foon.tan@intel.com> -L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2.git F: arch/nios2/ NOHZ, DYNTICKS SUPPORT @@ -11935,29 +11958,29 @@ M: Frederic Weisbecker <fweisbec@gmail.com> M: Thomas Gleixner <tglx@linutronix.de> M: Ingo Molnar <mingo@kernel.org> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/nohz S: Maintained -F: kernel/time/tick*.* -F: include/linux/tick.h +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/et8ek8 F: drivers/media/i2c/ad5820.c +F: drivers/media/i2c/et8ek8 NOKIA N900 POWER SUPPLY DRIVERS R: Pali Rohár <pali@kernel.org> -F: include/linux/power/bq2415x_charger.h -F: include/linux/power/bq27xxx_battery.h 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> @@ -11968,8 +11991,8 @@ F: tools/include/nolibc/ NSDEPS M: Matthias Maennich <maennich@google.com> S: Maintained -F: scripts/nsdeps F: Documentation/core-api/symbol-namespaces.rst +F: scripts/nsdeps NTB AMD DRIVER M: Sanjay R Mehta <sanju.mehta@amd.com> @@ -11986,8 +12009,8 @@ L: linux-ntb@googlegroups.com S: Supported W: https://github.com/jonmason/ntb/wiki T: git git://github.com/jonmason/ntb.git -F: drivers/ntb/ 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/ @@ -12009,9 +12032,9 @@ 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 -S: Supported F: Documentation/filesystems/ntfs.rst F: fs/ntfs/ @@ -12028,8 +12051,8 @@ NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER M: Antonino Daplas <adaplas@gmail.com> L: linux-fbdev@vger.kernel.org S: Maintained -F: drivers/video/fbdev/riva/ F: drivers/video/fbdev/nvidia/ +F: drivers/video/fbdev/riva/ NVM EXPRESS DRIVER M: Keith Busch <kbusch@kernel.org> @@ -12037,9 +12060,9 @@ M: Jens Axboe <axboe@fb.com> M: Christoph Hellwig <hch@lst.de> M: Sagi Grimberg <sagi@grimberg.me> L: linux-nvme@lists.infradead.org -T: git://git.infradead.org/nvme.git -W: http://git.infradead.org/nvme.git 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 @@ -12048,38 +12071,46 @@ NVM EXPRESS FC TRANSPORT DRIVERS M: James Smart <james.smart@broadcom.com> L: linux-nvme@lists.infradead.org S: Supported -F: include/linux/nvme-fc.h -F: include/linux/nvme-fc-driver.h 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 <chaitanya.kulkarni@wdc.com> L: linux-nvme@lists.infradead.org -T: git://git.infradead.org/nvme.git -W: http://git.infradead.org/nvme.git 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 -F: drivers/nvmem/ -F: Documentation/devicetree/bindings/nvmem/ 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 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.txt -F: drivers/iio/gyro/fxas21002c_core.c 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 @@ -12124,17 +12155,9 @@ OBJAGG M: Jiri Pirko <jiri@mellanox.com> L: netdev@vger.kernel.org S: Supported +F: include/linux/objagg.h F: lib/objagg.c F: lib/test_objagg.c -F: include/linux/objagg.h - -NXP FSPI DRIVER -R: Yogesh Gaur <yogeshgaur.83@gmail.com> -M: Ashish Kumar <ashish.kumar@nxp.com> -L: linux-spi@vger.kernel.org -S: Maintained -F: drivers/spi/spi-nxp-fspi.c -F: Documentation/devicetree/bindings/spi/spi-nxp-fspi.txt OBJTOOL M: Josh Poimboeuf <jpoimboe@redhat.com> @@ -12147,12 +12170,12 @@ M: Frederic Barrat <fbarrat@linux.ibm.com> M: Andrew Donnellan <ajd@linux.ibm.com> L: linuxppc-dev@lists.ozlabs.org S: Supported -F: arch/powerpc/platforms/powernv/ocxl.c +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 -F: Documentation/userspace-api/accelerators/ocxl.rst OMAP AUDIO SUPPORT M: Peter Ujfalusi <peter.ujfalusi@ti.com> @@ -12160,9 +12183,9 @@ 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/n810.c F: sound/soc/ti/sdma-pcm.* OMAP CLOCK FRAMEWORK SUPPORT @@ -12177,11 +12200,11 @@ M: Tony Lindgren <tony@atomide.com> L: linux-omap@vger.kernel.org L: devicetree@vger.kernel.org S: Maintained -F: arch/arm/boot/dts/*omap* 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* @@ -12189,8 +12212,8 @@ OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2) L: linux-omap@vger.kernel.org L: linux-fbdev@vger.kernel.org S: Orphan -F: drivers/video/fbdev/omap2/ F: Documentation/arm/omap/dss.rst +F: drivers/video/fbdev/omap2/ OMAP FRAMEBUFFER SUPPORT L: linux-fbdev@vger.kernel.org @@ -12203,8 +12226,8 @@ M: Roger Quadros <rogerq@ti.com> M: Tony Lindgren <tony@atomide.com> L: linux-omap@vger.kernel.org S: Maintained -F: drivers/memory/omap-gpmc.c F: arch/arm/mach-omap2/*gpmc* +F: drivers/memory/omap-gpmc.c OMAP GPIO DRIVER M: Grygorii Strashko <grygorii.strashko@ti.com> @@ -12291,8 +12314,8 @@ OMAP USB SUPPORT L: linux-usb@vger.kernel.org L: linux-omap@vger.kernel.org S: Orphan -F: drivers/usb/*/*omap* F: arch/arm/*omap*/usb* +F: drivers/usb/*/*omap* OMAP/NEWFLOW NANOBONE MACHINE SUPPORT M: Mark Jackson <mpfj@newflow.co.uk> @@ -12304,27 +12327,27 @@ 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 -S: Maintained +F: arch/arm/configs/omap1_defconfig F: arch/arm/mach-omap1/ F: arch/arm/plat-omap/ -F: arch/arm/configs/omap1_defconfig F: drivers/i2c/busses/i2c-omap.c -F: include/linux/platform_data/i2c-omap.h 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 -S: Maintained +F: arch/arm/configs/omap2plus_defconfig F: arch/arm/mach-omap2/ F: arch/arm/plat-omap/ -F: arch/arm/configs/omap2plus_defconfig F: drivers/bus/ti-sysc.c F: drivers/i2c/busses/i2c-omap.c F: drivers/irqchip/irq-omap-intc.c @@ -12348,12 +12371,6 @@ F: drivers/regulator/twl6030-regulator.c F: include/linux/platform_data/i2c-omap.h F: include/linux/platform_data/ti-sysc.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 - OMFS FILESYSTEM M: Bob Copeland <me@bobcopeland.com> L: linux-karma-devel@lists.sourceforge.net @@ -12376,108 +12393,108 @@ F: drivers/char/pcmcia/cm4040_cs.* OMNIVISION OV13858 SENSOR DRIVER M: Sakari Ailus <sakari.ailus@linux.intel.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/ov2680.c +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/ov2680.txt +F: drivers/media/i2c/ov2680.c OMNIVISION OV2685 SENSOR DRIVER M: Shunqian Zheng <zhengsq@rock-chips.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/ov2685.c OMNIVISION OV5640 SENSOR DRIVER M: Steve Longerbeam <slongerbeam@gmail.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/ov5640.c OMNIVISION OV5647 SENSOR DRIVER M: Luis Oliveira <lolivei@synopsys.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/ov5695.c OMNIVISION OV7670 SENSOR DRIVER M: Jonathan Corbet <corbet@lwn.net> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/ov7670.c +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 -T: git git://linuxtv.org/media_tree.git S: Odd fixes +T: git git://linuxtv.org/media_tree.git +F: Documentation/devicetree/bindings/media/i2c/ov772x.txt F: drivers/media/i2c/ov772x.c F: include/media/i2c/ov772x.h -F: Documentation/devicetree/bindings/media/i2c/ov772x.txt OMNIVISION OV7740 SENSOR DRIVER M: Wenyou Yang <wenyou.yang@microchip.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/ov7740.c +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/ov7740.txt - -OMNIVISION OV9640 SENSOR DRIVER -M: Petr Cvek <petrcvekcz@gmail.com> -L: linux-media@vger.kernel.org -S: Maintained -F: drivers/media/i2c/ov9640.* +F: drivers/media/i2c/ov7740.c OMNIVISION OV8856 SENSOR DRIVER M: Ben Kao <ben.kao@intel.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/ov8856.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 -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/ov9650.c +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/ov9650.txt +F: drivers/media/i2c/ov9650.c ONENAND FLASH DRIVER M: Kyungmin Park <kyungmin.park@samsung.com> @@ -12486,6 +12503,12 @@ 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: tee-dev@lists.linaro.org @@ -12520,20 +12543,20 @@ 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 -S: Maintained +F: Documentation/ABI/testing/sysfs-firmware-ofw F: drivers/of/ F: include/linux/of*.h F: scripts/dtc/ -F: Documentation/ABI/testing/sysfs-firmware-ofw OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS M: Rob Herring <robh+dt@kernel.org> L: devicetree@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git -Q: http://patchwork.ozlabs.org/project/devicetree-bindings/list/ 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/ @@ -12552,10 +12575,10 @@ OPENRISC ARCHITECTURE M: Jonas Bonn <jonas@southpole.se> M: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi> M: Stafford Horne <shorne@gmail.com> -T: git git://github.com/openrisc/linux.git L: openrisc@lists.librecores.org -W: http://openrisc.io 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/ @@ -12566,10 +12589,10 @@ OPENVSWITCH M: Pravin B Shelar <pshelar@ovn.org> L: netdev@vger.kernel.org L: dev@openvswitch.org -W: http://openvswitch.org S: Maintained -F: net/openvswitch/ +W: http://openvswitch.org F: include/uapi/linux/openvswitch.h +F: net/openvswitch/ OPERATING PERFORMANCE POINTS (OPP) M: Viresh Kumar <vireshk@kernel.org> @@ -12578,16 +12601,16 @@ 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 -F: Documentation/power/opp.rst -F: Documentation/devicetree/bindings/opp/ OPL4 DRIVER M: Clemens Ladisch <clemens@ladisch.de> L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git F: sound/drivers/opl4/ OPROFILE @@ -12604,76 +12627,76 @@ 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) -W: http://ocfs2.wiki.kernel.org S: Supported -F: Documentation/filesystems/ocfs2.rst +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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git S: Supported -F: fs/orangefs/ +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: http://wireless.kernel.org/en/users/Drivers/orinoco W: http://www.nongnu.org/orinoco/ -S: Orphan 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 -S: Maintained 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git S: Supported -F: fs/overlayfs/ +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 -W: http://wireless.kernel.org/en/users/Drivers/p54 S: Maintained +W: http://wireless.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: lib/packing.c -F: include/linux/packing.h 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> L: linux-crypto@vger.kernel.org S: Maintained -F: kernel/padata.c -F: include/linux/padata.h 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: net/core/page_pool.c F: include/net/page_pool.h +F: net/core/page_pool.c PANASONIC LAPTOP ACPI EXTRAS DRIVER M: Harald Welte <laforge@gnumonks.org> @@ -12700,11 +12723,11 @@ 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: drivers/char/ppdev.c F: include/uapi/linux/ppdev.h -F: Documentation/driver-api/parport*.rst PARAVIRT_OPS INTERFACE M: Juergen Gross <jgross@suse.com> @@ -12713,8 +12736,8 @@ M: "VMware, Inc." <pv-drivers@vmware.com> L: virtualization@lists.linux-foundation.org S: Supported F: Documentation/virt/paravirt_ops.rst -F: arch/*/kernel/paravirt* F: arch/*/include/asm/paravirt*.h +F: arch/*/kernel/paravirt* F: include/linux/hypervisor.h PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES @@ -12728,22 +12751,22 @@ 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: http://www.parisc-linux.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 -S: Maintained -F: arch/parisc/ F: Documentation/parisc/ -F: drivers/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/fbdev/sti* F: drivers/video/console/sti* +F: drivers/video/fbdev/sti* F: drivers/video/logo/logo_parisc* F: include/linux/hp_sdc.h @@ -12751,9 +12774,9 @@ PARMAN M: Jiri Pirko <jiri@mellanox.com> L: netdev@vger.kernel.org S: Supported +F: include/linux/parman.h F: lib/parman.c F: lib/test_parman.c -F: include/linux/parman.h PC ENGINES APU BOARD DRIVER M: Enrico Weigelt, metux IT consult <info@metux.net> @@ -12853,14 +12876,6 @@ L: linux-arm-kernel@lists.infradead.org S: Maintained F: drivers/pci/controller/dwc/*layerscape* -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 -S: Maintained -F: Documentation/devicetree/bindings/pci/layerscape-pcie-gen4.txt -F: drivers/pci/controller/mobibeil/pcie-layerscape-gen4.c - PCI DRIVER FOR GENERIC OF HOSTS M: Will Deacon <will@kernel.org> L: linux-pci@vger.kernel.org @@ -12890,12 +12905,12 @@ M: Kurt Schwemmer <kurt.schwemmer@microsemi.com> M: Logan Gunthorpe <logang@deltatee.com> L: linux-pci@vger.kernel.org S: Maintained -F: Documentation/driver-api/switchtec.rst 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/uapi/linux/switchtec_ioctl.h F: include/linux/switchtec.h -F: drivers/ntb/hw/mscc/ +F: include/uapi/linux/switchtec_ioctl.h PCI DRIVER FOR MOBIVEIL PCIE IP M: Karthikeyan Mitran <m.karthikeyan@mobiveil.co.in> @@ -12921,6 +12936,14 @@ 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 +S: Maintained +F: Documentation/devicetree/bindings/pci/layerscape-pcie-gen4.txt +F: drivers/pci/controller/mobibeil/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> @@ -12960,14 +12983,21 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) S: Maintained F: drivers/pci/controller/dwc/pci-keystone.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> L: linux-pci@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/pci-endpoint.git S: Supported -F: drivers/pci/endpoint/ +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 @@ -12977,13 +13007,13 @@ M: Oliver O'Halloran <oohall@gmail.com> L: linuxppc-dev@lists.ozlabs.org S: Supported F: Documentation/PCI/pci-error-recovery.rst -F: drivers/pci/pcie/aer.c -F: drivers/pci/pcie/dpc.c -F: drivers/pci/pcie/err.c 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: arch/powerpc/include/*/eeh*.h +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> @@ -13007,33 +13037,33 @@ 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: Andrew Murray <amurray@thegoodpenguin.co.uk> +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 -S: Supported -F: Documentation/devicetree/bindings/pci/ 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/pci* F: include/linux/of_pci.h +F: include/linux/pci* F: include/uapi/linux/pci* F: lib/pci* -F: arch/x86/pci/ -F: arch/x86/kernel/quirks.c -F: arch/x86/kernel/early-quirks.c - -PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS -M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> -R: Andrew Murray <amurray@thegoodpenguin.co.uk> -L: linux-pci@vger.kernel.org -Q: http://patchwork.ozlabs.org/project/linux-pci/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lpieralisi/pci.git/ -S: Supported -F: drivers/pci/controller/ PCIE DRIVER FOR AMAZON ANNAPURNA LABS M: Jonathan Chocron <jonnyc@amazon.com> @@ -13109,13 +13139,6 @@ S: Maintained F: Documentation/devicetree/bindings/pci/rockchip-pcie* F: drivers/pci/controller/pcie-rockchip* -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 - PCIE DRIVER FOR SOCIONEXT UNIPHIER M: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> L: linux-pci@vger.kernel.org @@ -13131,12 +13154,12 @@ F: drivers/pci/controller/dwc/*spear* PCMCIA SUBSYSTEM M: Dominik Brodowski <linux@dominikbrodowski.net> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia.git S: Odd Fixes +T: git git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia.git F: Documentation/pcmcia/ -F: tools/pcmcia/ F: drivers/pcmcia/ F: include/pcmcia/ +F: tools/pcmcia/ PCNET32 NETWORK DRIVER M: Don Fry <pcnet32@frontier.com> @@ -13169,11 +13192,11 @@ PER-CPU MEMORY ALLOCATOR M: Dennis Zhou <dennis@kernel.org> M: Tejun Heo <tj@kernel.org> M: Christoph Lameter <cl@linux.com> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu.git 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: mm/percpu*.c -F: arch/*/include/asm/percpu.h PER-TASK DELAY ACCOUNTING M: Balbir Singh <bsingharora@gmail.com> @@ -13190,18 +13213,18 @@ R: Alexander Shishkin <alexander.shishkin@linux.intel.com> R: Jiri Olsa <jolsa@redhat.com> R: Namhyung Kim <namhyung@kernel.org> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core S: Supported -F: kernel/events/* -F: include/linux/perf_event.h -F: include/uapi/linux/perf_event.h -F: arch/*/kernel/perf_event*.c -F: arch/*/kernel/*/perf_event*.c -F: arch/*/kernel/*/*/perf_event*.c -F: arch/*/include/asm/perf_event.h -F: arch/*/kernel/perf_callchain.c +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/perf/ PERFORMANCE EVENTS SUBSYSTEM ARM64 PMU EVENTS @@ -13225,12 +13248,6 @@ S: Maintained F: Documentation/input/devices/pxrc.rst F: drivers/input/joystick/pxrc.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 - PHONET PROTOCOL M: Remi Denis-Courmont <courmisch@gmail.com> S: Supported @@ -13255,8 +13272,8 @@ F: drivers/hid/hid-picolcd* PICOXCELL SUPPORT M: Jamie Iles <jamie@jamieiles.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://github.com/jamieiles/linux-2.6-ji.git S: Supported +T: git git://github.com/jamieiles/linux-2.6-ji.git F: arch/arm/boot/dts/picoxcell* F: arch/arm/mach-picoxcell/ F: drivers/crypto/picoxcell* @@ -13267,9 +13284,9 @@ 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/pidfd/ -F: tools/testing/selftests/pid_namespace/ 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 @@ -13340,8 +13357,8 @@ 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 (moderated for non-subscribers) S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git 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 @@ -13365,49 +13382,58 @@ PISTACHIO SOC SUPPORT M: James Hartley <james.hartley@sondrel.com> L: linux-mips@vger.kernel.org S: Odd Fixes -F: arch/mips/pistachio/ -F: arch/mips/include/asm/mach-pistachio/ F: arch/mips/boot/dts/img/pistachio* F: arch/mips/configs/pistachio*_defconfig +F: arch/mips/include/asm/mach-pistachio/ +F: arch/mips/pistachio/ PKTCDVD DRIVER -S: Orphan M: linux-block@vger.kernel.org +S: Orphan F: drivers/block/pktcdvd.c F: include/linux/pktcdvd.h F: include/uapi/linux/pktcdvd.h PKUNITY SOC DRIVERS M: Guan Xuetao <gxt@pku.edu.cn> -W: http://mprc.pku.edu.cn/~guanxuetao/linux S: Maintained +W: http://mprc.pku.edu.cn/~guanxuetao/linux T: git git://github.com/gxt/linux.git -F: drivers/input/serio/i8042-unicore32io.h F: drivers/i2c/busses/i2c-puv3.c -F: drivers/video/fbdev/fb-puv3.c +F: drivers/input/serio/i8042-unicore32io.h F: drivers/rtc/rtc-puv3.c +F: drivers/video/fbdev/fb-puv3.c PLANTOWER PMS7003 AIR POLLUTION SENSOR DRIVER M: Tomasz Duszynski <tduszyns@gmail.com> S: Maintained -F: drivers/iio/chemical/pms7003.c F: Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml +F: drivers/iio/chemical/pms7003.c PLX DMA DRIVER M: Logan Gunthorpe <logang@deltatee.com> S: Maintained F: drivers/dma/plx_dma.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 -S: Maintained F: Documentation/devicetree/bindings/hwmon/ibm,cffps1.txt -F: Documentation/devicetree/bindings/hwmon/max31785.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 @@ -13419,8 +13445,8 @@ F: Documentation/hwmon/max20751.rst F: Documentation/hwmon/max31785.rst F: Documentation/hwmon/max34440.rst F: Documentation/hwmon/max8688.rst -F: Documentation/hwmon/pmbus.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 @@ -13430,8 +13456,8 @@ F: include/linux/pmbus.h PMC SIERRA MaxRAID DRIVER L: linux-scsi@vger.kernel.org -W: http://www.pmc-sierra.com/ S: Orphan +W: http://www.pmc-sierra.com/ F: drivers/scsi/pmcraid.* PMC SIERRA PM8001 DRIVER @@ -13440,52 +13466,43 @@ L: linux-scsi@vger.kernel.org S: Supported F: drivers/scsi/pm8001/ -PM-GRAPH UTILITY -M: "Todd E Brandt" <todd.e.brandt@linux.intel.com> -L: linux-pm@vger.kernel.org -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 -S: Supported -F: tools/power/pm-graph - PNI RM3100 IIO DRIVER M: Song Qiang <songqiang1304521@gmail.com> L: linux-iio@vger.kernel.org S: Maintained -F: drivers/iio/magnetometer/rm3100* F: Documentation/devicetree/bindings/iio/magnetometer/pni,rm3100.txt +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: include/linux/pnp.h F: drivers/pnp/ +F: include/linux/pnp.h POSIX CLOCKS and TIMERS M: Thomas Gleixner <tglx@linutronix.de> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core 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/timer* F: include/linux/time_namespace.h -F: kernel/time/namespace.c +F: include/linux/timer* F: kernel/time/*timer* +F: kernel/time/namespace.c POWER MANAGEMENT CORE M: "Rafael J. Wysocki" <rjw@rjwysocki.net> L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm -B: https://bugzilla.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: include/linux/intel_rapl.h -F: drivers/powercap/ F: kernel/configs/nopm.config POWER STATE COORDINATION INTERFACE (PSCI) @@ -13500,12 +13517,12 @@ F: include/uapi/linux/psci.h POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS M: Sebastian Reichel <sre@kernel.org> L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git 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: include/linux/power_supply.h F: drivers/power/supply/ +F: include/linux/power_supply.h POWERNV OPERATOR PANEL LCD DISPLAY DRIVER M: Suraj Jitindar Singh <sjitindarsingh@gmail.com> @@ -13516,8 +13533,8 @@ F: drivers/char/powernv-op-panel.c PPP OVER ATM (RFC 2364) M: Mitchell Blank Jr <mitch@sfgoth.com> S: Maintained -F: net/atm/pppoatm.c F: include/uapi/linux/atmppp.h +F: net/atm/pppoatm.c PPP OVER ETHERNET M: Michal Ostrowski <mostrows@earthlink.net> @@ -13528,9 +13545,9 @@ F: drivers/net/ppp/pppox.c PPP OVER L2TP M: James Chapman <jchapman@katalix.com> S: Maintained -F: net/l2tp/l2tp_ppp.c 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> @@ -13540,12 +13557,12 @@ F: drivers/net/ppp/ppp_* PPS SUPPORT M: Rodolfo Giometti <giometti@enneenne.com> -W: http://wiki.enneenne.com/index.php/LinuxPPS_support L: linuxpps@ml.enneenne.com (subscribers-only) S: Maintained -F: Documentation/driver-api/pps.rst -F: Documentation/devicetree/bindings/pps/pps-gpio.txt +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 @@ -13554,22 +13571,28 @@ PPTP DRIVER M: Dmitry Kozlov <xeb@mail.ru> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/ppp/pptp.c 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 <sergey.senozhatsky@gmail.com> R: Steven Rostedt <rostedt@goodmis.org> S: Maintained -F: kernel/printk/ F: include/linux/printk.h +F: kernel/printk/ PRISM54 WIRELESS DRIVER M: Luis Chamberlain <mcgrof@kernel.org> L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/p54 S: Obsolete +W: http://wireless.kernel.org/en/users/Drivers/p54 F: drivers/net/wireless/intersil/prism54/ PROC FILESYSTEM @@ -13577,10 +13600,10 @@ R: Alexey Dobriyan <adobriyan@gmail.com> 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/ -F: Documentation/filesystems/proc.rst PROC SYSCTL M: Luis Chamberlain <mcgrof@kernel.org> @@ -13591,8 +13614,8 @@ L: linux-fsdevel@vger.kernel.org S: Maintained F: fs/proc/proc_sysctl.c F: include/linux/sysctl.h -F: kernel/sysctl.c F: kernel/sysctl-test.c +F: kernel/sysctl.c F: tools/testing/selftests/sysctl/ PS3 NETWORK SUPPORT @@ -13626,15 +13649,9 @@ F: drivers/block/ps3vram.c PSAMPLE PACKET SAMPLING SUPPORT M: Yotam Gigi <yotam.gi@gmail.com> S: Maintained -F: net/psample F: include/net/psample.h F: include/uapi/linux/psample.h - -PRESSURE STALL INFORMATION (PSI) -M: Johannes Weiner <hannes@cmpxchg.org> -S: Maintained -F: kernel/sched/psi.c -F: include/linux/psi* +F: net/psample PSTORE FILESYSTEM M: Kees Cook <keescook@chromium.org> @@ -13643,12 +13660,12 @@ 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: fs/pstore/ -F: include/linux/pstore* -F: drivers/firmware/efi/efi-pstore.c -F: drivers/acpi/apei/erst.c F: Documentation/admin-guide/ramoops.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 @@ -13665,6 +13682,9 @@ F: include/linux/ptp_cl* 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 @@ -13672,33 +13692,30 @@ F: include/linux/tracehook.h F: include/uapi/linux/ptrace.h F: include/uapi/linux/ptrace.h F: kernel/ptrace.c -F: arch/*/ptrace*.c -F: arch/*/*/ptrace*.c -F: arch/*/include/asm/ptrace*.h PULSE8-CEC DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/usb/pulse8-cec/* +T: git git://linuxtv.org/media_tree.git F: Documentation/media/cec-drivers/pulse8-cec.rst +F: drivers/media/usb/pulse8-cec/* 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 -S: Maintained F: Documentation/media/v4l-drivers/pvrusb2* F: drivers/media/usb/pvrusb2/ PWC WEBCAM DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Odd Fixes +T: git git://linuxtv.org/media_tree.git F: drivers/media/usb/pwc/* F: include/trace/events/pwc.h @@ -13722,16 +13739,16 @@ M: Thierry Reding <thierry.reding@gmail.com> R: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> L: linux-pwm@vger.kernel.org S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git Q: https://patchwork.ozlabs.org/project/linux-pwm/list/ -F: Documentation/driver-api/pwm.rst +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: include/linux/pwm.h +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 -F: drivers/gpio/gpio-mvebu.c -F: Documentation/devicetree/bindings/gpio/gpio-mvebu.txt K: pwm_(config|apply_state|ops) PXA GPIO DRIVER @@ -13753,9 +13770,9 @@ 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 -S: Maintained F: arch/arm/boot/dts/pxa* F: arch/arm/mach-pxa/ F: drivers/dma/pxa* @@ -13819,8 +13836,8 @@ M: GR-everest-linux-l2@marvell.com L: netdev@vger.kernel.org S: Supported F: drivers/net/ethernet/qlogic/qed/ -F: include/linux/qed/ F: drivers/net/ethernet/qlogic/qede/ +F: include/linux/qed/ QLOGIC QL4xxx RDMA DRIVER M: Michal Kalderon <mkalderon@marvell.com> @@ -13886,8 +13903,8 @@ F: drivers/media/tuners/qm1d1c0042* QNX4 FILESYSTEM M: Anders Larsen <al@alarsen.net> -W: http://www.alarsen.net/linux/qnx4fs/ 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 @@ -13897,40 +13914,40 @@ M: Stuart Yoder <stuyoder@gmail.com> M: Laurentiu Tudor <laurentiu.tudor@nxp.com> L: linux-kernel@vger.kernel.org S: Maintained -F: drivers/bus/fsl-mc/ F: Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt F: Documentation/networking/device_drivers/freescale/dpaa2/overview.rst +F: drivers/bus/fsl-mc/ 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 -S: Maintained F: drivers/media/tuners/qt1010* QUALCOMM ATHEROS ATH10K WIRELESS DRIVER M: Kalle Valo <kvalo@codeaurora.org> L: ath10k@lists.infradead.org +S: Supported W: http://wireless.kernel.org/en/users/Drivers/ath10k T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git -S: Supported F: drivers/net/wireless/ath/ath10k/ QUALCOMM ATHEROS ATH11K WIRELESS DRIVER M: Kalle Valo <kvalo@codeaurora.org> L: ath11k@lists.infradead.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 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: QCA ath9k Development <ath9k-devel@qca.qualcomm.com> L: linux-wireless@vger.kernel.org -W: http://wireless.kernel.org/en/users/Drivers/ath9k S: Supported +W: http://wireless.kernel.org/en/users/Drivers/ath9k F: drivers/net/wireless/ath/ath9k/ QUALCOMM CAMERA SUBSYSTEM DRIVER @@ -13941,13 +13958,6 @@ F: Documentation/devicetree/bindings/media/qcom,camss.txt F: Documentation/media/v4l-drivers/qcom_camss.rst F: drivers/media/platform/qcom/camss/ -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 CORE POWER REDUCTION (CPR) AVS DRIVER M: Niklas Cassel <nks@flawful.org> L: linux-pm@vger.kernel.org @@ -13956,6 +13966,13 @@ S: Maintained F: Documentation/devicetree/bindings/power/avs/qcom,cpr.txt F: drivers/power/avs/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 EMAC GIGABIT ETHERNET DRIVER M: Timur Tabi <timur@kernel.org> L: netdev@vger.kernel.org @@ -13966,8 +13983,8 @@ QUALCOMM ETHQOS ETHERNET DRIVER M: Vinod Koul <vkoul@kernel.org> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c F: Documentation/devicetree/bindings/net/qcom,ethqos.txt +F: drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c QUALCOMM GENERIC INTERFACE I2C DRIVER M: Alok Chauhan <alokc@codeaurora.org> @@ -14002,8 +14019,8 @@ M: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> M: Sean Tranchetti <stranche@codeaurora.org> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/ethernet/qualcomm/rmnet/ F: Documentation/networking/device_drivers/qualcomm/rmnet.txt +F: drivers/net/ethernet/qualcomm/rmnet/ F: include/linux/if_rmnet.h QUALCOMM TSENS THERMAL DRIVER @@ -14011,24 +14028,24 @@ M: Amit Kucheria <amit.kucheria@linaro.org> L: linux-pm@vger.kernel.org L: linux-arm-msm@vger.kernel.org S: Maintained -F: drivers/thermal/qcom/ 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 -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/platform/qcom/venus/ +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: http://wireless.kernel.org/en/users/Drivers/wcn36xx T: git git://github.com/KrasnikovEugene/wcn36xx.git -S: Supported F: drivers/net/wireless/ath/wcn36xx/ QUANTENNA QTNFMAC WIRELESS DRIVER @@ -14044,12 +14061,12 @@ M: Alex Deucher <alexander.deucher@amd.com> M: Christian König <christian.koenig@amd.com> M: David (ChunMing) Zhou <David1.Zhou@amd.com> L: amd-gfx@lists.freedesktop.org -T: git git://people.freedesktop.org/~agd5f/linux S: Supported -F: drivers/gpu/drm/radeon/ -F: include/uapi/drm/radeon_drm.h +T: git git://people.freedesktop.org/~agd5f/linux 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> @@ -14061,15 +14078,15 @@ F: include/uapi/linux/radeonfb.h RADIOSHARK RADIO DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git 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 -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/radio/radio-shark2.c F: drivers/media/radio/radio-tea5777.c @@ -14078,10 +14095,10 @@ M: Ilya Dryomov <idryomov@gmail.com> M: Sage Weil <sage@redhat.com> R: Dongsheng Yang <dongsheng.yang@easystack.cn> L: ceph-devel@vger.kernel.org +S: Supported W: http://ceph.com/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git T: git git://github.com/ceph/ceph-client.git -S: Supported F: Documentation/ABI/testing/sysfs-bus-rbd F: drivers/block/rbd.c F: drivers/block/rbd_types.h @@ -14095,8 +14112,8 @@ F: drivers/video/fbdev/aty/aty128fb.c RAINSHADOW-CEC DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/usb/rainshadow-cec/* RALINK MIPS ARCHITECTURE @@ -14122,8 +14139,8 @@ RANCHU VIRTUAL BOARD FOR MIPS M: Miodrag Dinic <miodrag.dinic@mips.com> L: linux-mips@vger.kernel.org S: Supported -F: arch/mips/generic/board-ranchu.c 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> @@ -14141,16 +14158,21 @@ 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 -F: Documentation/admin-guide/ras.rst RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER L: linux-wireless@vger.kernel.org S: Orphan F: drivers/net/wireless/ray* +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> @@ -14184,19 +14206,19 @@ 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) -W: https://oss.oracle.com/projects/rds/ S: Supported -F: net/rds/ +W: https://oss.oracle.com/projects/rds/ F: Documentation/networking/rds.txt +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: arch/x86/kernel/cpu/resctrl/ -F: arch/x86/include/asm/resctrl_sched.h F: Documentation/x86/resctrl* +F: arch/x86/include/asm/resctrl_sched.h +F: arch/x86/kernel/cpu/resctrl/ F: tools/testing/selftests/resctrl/ READ-COPY UPDATE (RCU) @@ -14207,37 +14229,37 @@ R: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> R: Lai Jiangshan <jiangshanlai@gmail.com> R: Joel Fernandes <joel@joelfernandes.org> L: rcu@vger.kernel.org -W: http://www.rdrop.com/users/paulmck/RCU/ 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/ -X: Documentation/RCU/torture.txt F: include/linux/rcu* -X: include/linux/srcu*.h F: kernel/rcu/ +X: Documentation/RCU/torture.txt +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 -S: Maintained -F: Documentation/devicetree/bindings/rtc/ 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/uapi/linux/rtc.h F: include/linux/rtc/ -F: include/linux/platform_data/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: sound/soc/codecs/rt* F: include/sound/rt*.h +F: sound/soc/codecs/rt* REALTEK RTL83xx SMI DSA ROUTER CHIPS M: Linus Walleij <linus.walleij@linaro.org> @@ -14246,6 +14268,20 @@ 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: http://wireless.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 <yhchuang@realtek.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> @@ -14256,8 +14292,8 @@ F: drivers/net/wireless/rsi/ REGISTER MAP ABSTRACTION M: Mark Brown <broonie@kernel.org> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git 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 @@ -14271,10 +14307,10 @@ REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM M: Ohad Ben-Cohen <ohad@wizery.com> M: Bjorn Andersson <bjorn.andersson@linaro.org> L: linux-remoteproc@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git rproc-next S: Maintained -F: Documentation/devicetree/bindings/remoteproc/ +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/remoteproc.txt F: drivers/remoteproc/ F: include/linux/remoteproc.h @@ -14284,11 +14320,11 @@ REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM M: Ohad Ben-Cohen <ohad@wizery.com> M: Bjorn Andersson <bjorn.andersson@linaro.org> L: linux-remoteproc@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git rpmsg-next S: Maintained -F: drivers/rpmsg/ -F: Documentation/rpmsg.txt +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/rpmsg.txt +F: drivers/rpmsg/ F: include/linux/rpmsg.h F: include/linux/rpmsg/ F: include/uapi/linux/rpmsg.h @@ -14297,8 +14333,8 @@ F: samples/rpmsg/ RENESAS CLOCK DRIVERS M: Geert Uytterhoeven <geert+renesas@glider.be> L: linux-renesas-soc@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git clk-renesas S: Supported +T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git clk-renesas F: drivers/clk/renesas/ RENESAS EMEV2 I2C DRIVER @@ -14345,14 +14381,14 @@ F: drivers/phy/renesas/phy-rcar-gen3-usb*.c RESET CONTROLLER FRAMEWORK M: Philipp Zabel <p.zabel@pengutronix.de> -T: git git://git.pengutronix.de/git/pza/linux S: Maintained -F: drivers/reset/ +T: git git://git.pengutronix.de/git/pza/linux F: Documentation/devicetree/bindings/reset/ +F: drivers/reset/ F: include/dt-bindings/reset/ +F: include/linux/reset-controller.h F: include/linux/reset.h F: include/linux/reset/ -F: include/linux/reset-controller.h K: \b(?:devm_|of_)?reset_control(?:ler_[a-z]+|_[a-z_]+)?\b RESTARTABLE SEQUENCES SUPPORT @@ -14362,33 +14398,33 @@ M: "Paul E. McKenney" <paulmck@kernel.org> M: Boqun Feng <boqun.feng@gmail.com> L: linux-kernel@vger.kernel.org S: Supported -F: kernel/rseq.c -F: include/uapi/linux/rseq.h 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: http://wireless.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 -S: Maintained -F: Documentation/driver-api/rfkill.rst F: Documentation/ABI/stable/sysfs-class-rfkill -F: net/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 -F: include/linux/rhashtable.h -F: include/linux/rhashtable-types.h RICOH R5C592 MEMORYSTICK DRIVER M: Maxim Levitsky <maximlevitsky@gmail.com> @@ -14406,20 +14442,20 @@ 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 -S: Supported F: arch/riscv/ -K: riscv N: riscv +K: riscv ROCCAT DRIVERS M: Stefan Achatz <erazor_de@users.sourceforge.net> -W: http://sourceforge.net/projects/roccat/ 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* -F: Documentation/ABI/*/sysfs-driver-hid-roccat* ROCKCHIP ISP V1 DRIVER M: Helen Koike <helen.koike@collabora.com> @@ -14432,18 +14468,8 @@ M: Jacob Chen <jacob-chen@iotwrt.com> M: Ezequiel Garcia <ezequiel@collabora.com> L: linux-media@vger.kernel.org S: Maintained -F: drivers/media/platform/rockchip/rga/ F: Documentation/devicetree/bindings/media/rockchip-rga.txt - -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: drivers/staging/media/hantro/ -F: Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml -F: Documentation/devicetree/bindings/media/rockchip-vpu.txt +F: drivers/media/platform/rockchip/rga/ ROCKER DRIVER M: Jiri Pirko <jiri@resnulli.us> @@ -14452,8 +14478,8 @@ S: Supported F: drivers/net/ethernet/rocker/ ROCKETPORT DRIVER -W: http://www.comtrol.com S: Maintained +W: http://www.comtrol.com F: Documentation/driver-api/serial/rocket.rst F: drivers/tty/rocket* @@ -14466,25 +14492,25 @@ F: drivers/tty/serial/rp2.* ROHM BH1750 AMBIENT LIGHT SENSOR DRIVER M: Tomasz Duszynski <tduszyns@gmail.com> S: Maintained -F: drivers/iio/light/bh1750.c 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: drivers/gpio/gpio-bd9571mwv.c F: include/linux/mfd/bd9571mwv.h -F: Documentation/devicetree/bindings/mfd/bd9571mwv.txt ROSE NETWORK LAYER M: Ralf Baechle <ralf@linux-mips.org> L: linux-hams@vger.kernel.org -W: http://www.linux-ax25.org/ S: Maintained +W: http://www.linux-ax25.org/ F: include/net/rose.h F: include/uapi/linux/rose.h F: net/rose/ @@ -14492,46 +14518,46 @@ F: net/rose/ ROTATION DRIVER FOR ALLWINNER A83T M: Jernej Skrabec <jernej.skrabec@siol.net> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/platform/sunxi/sun8i-rotate/ +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 -S: Maintained 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 -S: Maintained 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 -S: Maintained F: drivers/media/dvb-frontends/rtl2832_sdr* RTL8180 WIRELESS DRIVER L: linux-wireless@vger.kernel.org +S: Orphan W: http://wireless.kernel.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -S: Orphan F: drivers/net/wireless/realtek/rtl818x/rtl8180/ RTL8187 WIRELESS DRIVER @@ -14539,43 +14565,29 @@ 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 -W: http://wireless.kernel.org/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git S: Maintained -F: drivers/net/wireless/realtek/rtl818x/rtl8187/ - -REALTEK WIRELESS DRIVER (rtlwifi family) -M: Ping-Ke Shih <pkshih@realtek.com> -L: linux-wireless@vger.kernel.org W: http://wireless.kernel.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git -S: Maintained -F: drivers/net/wireless/realtek/rtlwifi/ - -REALTEK WIRELESS DRIVER (rtw88) -M: Yan-Hsuan Chuang <yhchuang@realtek.com> -L: linux-wireless@vger.kernel.org -S: Maintained -F: drivers/net/wireless/realtek/rtw88/ +F: drivers/net/wireless/realtek/rtl818x/rtl8187/ RTL8XXXU WIRELESS DRIVER (rtl8xxxu) M: Jes Sorensen <Jes.Sorensen@gmail.com> L: linux-wireless@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-devel F: drivers/net/wireless/realtek/rtl8xxxu/ RXRPC SOCKETS (AF_RXRPC) M: David Howells <dhowells@redhat.com> L: linux-afs@lists.infradead.org S: Supported -F: net/rxrpc/ +W: https://www.infradead.org/~dhowells/kafs/ +F: Documentation/networking/rxrpc.txt 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: Documentation/networking/rxrpc.txt -W: https://www.infradead.org/~dhowells/kafs/ +F: net/rxrpc/ S3 SAVAGE FRAMEBUFFER DRIVER M: Antonino Daplas <adaplas@gmail.com> @@ -14588,44 +14600,44 @@ M: Heiko Carstens <heiko.carstens@de.ibm.com> M: Vasily Gorbik <gor@linux.ibm.com> M: Christian Borntraeger <borntraeger@de.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 -S: Supported +F: Documentation/driver-api/s390-drivers.rst +F: Documentation/s390/ F: arch/s390/ F: drivers/s390/ -F: Documentation/s390/ -F: Documentation/driver-api/s390-drivers.rst 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 -W: http://www.ibm.com/developerworks/linux/linux390/ 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 -W: http://www.ibm.com/developerworks/linux/linux390/ S: Supported -F: drivers/s390/block/dasd* +W: http://www.ibm.com/developerworks/linux/linux390/ F: block/partitions/ibm.c +F: drivers/s390/block/dasd* S390 IOMMU (PCI) M: Gerald Schaefer <gerald.schaefer@de.ibm.com> L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ 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: Ursula Braun <ubraun@linux.ibm.com> L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ S: Supported +W: http://www.ibm.com/developerworks/linux/linux390/ F: drivers/s390/net/*iucv* F: include/net/iucv/ F: net/iucv/ @@ -14634,19 +14646,31 @@ S390 NETWORK DRIVERS M: Julian Wiedmann <jwi@linux.ibm.com> M: Ursula Braun <ubraun@linux.ibm.com> L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ 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@de.ibm.com> L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ S: Supported +W: http://www.ibm.com/developerworks/linux/linux390/ F: arch/s390/pci/ F: drivers/pci/hotplug/s390_pci_hpc.c +S390 VFIO AP DRIVER +M: Tony Krowiak <akrowiak@linux.ibm.com> +M: Pierre Morel <pmorel@linux.ibm.com> +M: Halil Pasic <pasic@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: Cornelia Huck <cohuck@redhat.com> M: Eric Farman <farman@linux.ibm.com> @@ -14654,35 +14678,23 @@ R: Halil Pasic <pasic@linux.ibm.com> L: linux-s390@vger.kernel.org L: kvm@vger.kernel.org S: Supported -F: drivers/s390/cio/vfio_ccw* F: Documentation/s390/vfio-ccw.rst +F: drivers/s390/cio/vfio_ccw* F: include/uapi/linux/vfio_ccw.h S390 ZCRYPT DRIVER M: Harald Freudenberger <freude@linux.ibm.com> L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ S: Supported -F: drivers/s390/crypto/ - -S390 VFIO AP DRIVER -M: Tony Krowiak <akrowiak@linux.ibm.com> -M: Pierre Morel <pmorel@linux.ibm.com> -M: Halil Pasic <pasic@linux.ibm.com> -L: linux-s390@vger.kernel.org W: http://www.ibm.com/developerworks/linux/linux390/ -S: Supported -F: drivers/s390/crypto/vfio_ap_drv.c -F: drivers/s390/crypto/vfio_ap_private.h -F: drivers/s390/crypto/vfio_ap_ops.c -F: Documentation/s390/vfio-ap.rst +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 -W: http://www.ibm.com/developerworks/linux/linux390/ S: Supported +W: http://www.ibm.com/developerworks/linux/linux390/ F: drivers/s390/scsi/zfcp_* S3C24XX SD/MMC Driver @@ -14694,25 +14706,25 @@ F: drivers/mmc/host/s3cmci.* SAA6588 RDS RECEIVER DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -S: Odd fixes F: Documentation/media/v4l-drivers/saa7134* F: drivers/media/pci/saa7134/ SAA7146 VIDEO4LINUX-2 DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git 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* @@ -14720,8 +14732,8 @@ F: include/media/drv-intf/saa7146* SAFESETID SECURITY MODULE M: Micah Morton <mortonm@chromium.org> S: Supported -F: security/safesetid/ F: Documentation/admin-guide/LSM/SafeSetID.rst +F: security/safesetid/ SAMSUNG AUDIO (ASoC) DRIVERS M: Krzysztof Kozlowski <krzk@kernel.org> @@ -14729,23 +14741,23 @@ M: Sangbeom Kim <sbkim73@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com> L: alsa-devel@alsa-project.org (moderated for non-subscribers) S: Supported -F: sound/soc/samsung/ F: Documentation/devicetree/bindings/sound/samsung* +F: sound/soc/samsung/ SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER M: Krzysztof Kozlowski <krzk@kernel.org> L: linux-crypto@vger.kernel.org L: linux-samsung-soc@vger.kernel.org S: Maintained -F: drivers/crypto/exynos-rng.c 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: drivers/char/hw_random/exynos-trng.c F: Documentation/devicetree/bindings/rng/samsung,exynos5250-trng.txt +F: drivers/char/hw_random/exynos-trng.c SAMSUNG FRAMEBUFFER DRIVER M: Jingoo Han <jingoohan1@gmail.com> @@ -14766,16 +14778,16 @@ 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/clk/clk-s2mps11.c F: drivers/rtc/rtc-s5m.c F: include/linux/mfd/samsung/ -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: Documentation/devicetree/bindings/clock/samsung,s2mps11.txt SAMSUNG S3C24XX/S3C64XX SOC SERIES CAMIF DRIVER M: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> @@ -14821,22 +14833,22 @@ SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS M: Kyungmin Park <kyungmin.park@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com> L: linux-media@vger.kernel.org -Q: https://patchwork.linuxtv.org/project/linux-media/list/ 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> -S: Supported L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) +S: Supported T: git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git -F: drivers/clk/samsung/ -F: include/dt-bindings/clock/exynos*.h F: Documentation/devicetree/bindings/clock/exynos*.txt 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 SAMSUNG SPI DRIVERS M: Kukjin Kim <kgene@kernel.org> @@ -14851,8 +14863,8 @@ F: include/linux/platform_data/spi-s3c64xx.h SAMSUNG SXGBE DRIVERS M: Byungho An <bh74.an@samsung.com> -S: Supported L: netdev@vger.kernel.org +S: Supported F: drivers/net/ethernet/samsung/sxgbe/ SAMSUNG THERMAL DRIVER @@ -14892,13 +14904,13 @@ 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) L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core S: Maintained -F: kernel/sched/ +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/uapi/linux/sched.h F: include/linux/wait.h -F: include/linux/preempt.h +F: include/uapi/linux/sched.h +F: kernel/sched/ SCR24X CHIP CARD INTERFACE DRIVER M: Lubomir Rintel <lkundrak@v3.sk> @@ -14908,8 +14920,8 @@ F: drivers/char/pcmcia/scr24x_cs.c SCSI CDROM DRIVER M: Jens Axboe <axboe@kernel.dk> L: linux-scsi@vger.kernel.org -W: http://www.kernel.dk S: Maintained +W: http://www.kernel.dk F: drivers/scsi/sr* SCSI RDMA PROTOCOL (SRP) INITIATOR @@ -14931,20 +14943,20 @@ F: drivers/infiniband/ulp/srpt/ SCSI SG DRIVER M: Doug Gilbert <dgilbert@interlog.com> L: linux-scsi@vger.kernel.org -W: http://sg.danny.cz/sg 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> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git M: "Martin K. Petersen" <martin.petersen@oracle.com> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git -Q: https://patchwork.kernel.org/project/linux-scsi/list/ 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/ @@ -14961,25 +14973,25 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git Q: https://patchwork.kernel.org/project/target-devel/list/ -S: Supported +T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git +F: Documentation/target/ F: drivers/target/ F: include/target/ -F: Documentation/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 -W: http://lksctp.sourceforge.net S: Maintained +W: http://lksctp.sourceforge.net F: Documentation/networking/sctp.txt F: include/linux/sctp.h -F: include/uapi/linux/sctp.h F: include/net/sctp/ +F: include/uapi/linux/sctp.h F: net/sctp/ SCx200 CPU SUPPORT @@ -14987,9 +14999,9 @@ M: Jim Cromie <jim.cromie@gmail.com> S: Odd Fixes F: Documentation/i2c/busses/scx200_acb.rst F: arch/x86/platform/scx200/ -F: drivers/watchdog/scx200_wdt.c 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 @@ -15019,14 +15031,14 @@ SECURE COMPUTING M: Kees Cook <keescook@chromium.org> R: Andy Lutomirski <luto@amacapital.net> R: Will Drewry <wad@chromium.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git seccomp S: Supported -F: kernel/seccomp.c -F: include/uapi/linux/seccomp.h +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: tools/testing/selftests/seccomp/* +F: include/uapi/linux/seccomp.h +F: kernel/seccomp.c F: tools/testing/selftests/kselftest_harness.h -F: Documentation/userspace-api/seccomp_filter.rst +F: tools/testing/selftests/seccomp/* K: \bsecure_computing K: \bTIF_SECCOMP\b @@ -15044,21 +15056,6 @@ S: Maintained F: drivers/mmc/host/sdhci* F: include/linux/mmc/sdhci* -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* - -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 - SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) MICROCHIP DRIVER M: Ludovic Desroches <ludovic.desroches@microchip.com> L: linux-mmc@vger.kernel.org @@ -15089,8 +15086,8 @@ M: Jonathan Derrick <jonathan.derrick@intel.com> M: Revanth Rajashekar <revanth.rajashekar@intel.com> L: linux-block@vger.kernel.org S: Supported -F: block/sed* F: block/opal_proto.h +F: block/sed* F: include/linux/sed* F: include/uapi/linux/sed* @@ -15102,9 +15099,9 @@ SECURITY SUBSYSTEM M: James Morris <jmorris@namei.org> M: "Serge E. Hallyn" <serge@hallyn.com> L: linux-security-module@vger.kernel.org (suggested Cc:) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git -W: http://kernsec.org/ 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/ @@ -15113,16 +15110,16 @@ 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 -S: Supported +F: Documentation/ABI/obsolete/sysfs-selinux-checkreqprot +F: Documentation/ABI/obsolete/sysfs-selinux-disable +F: Documentation/admin-guide/LSM/SELinux.rst F: include/uapi/linux/selinux_netlink.h -F: security/selinux/ F: scripts/selinux/ -F: Documentation/admin-guide/LSM/SELinux.rst -F: Documentation/ABI/obsolete/sysfs-selinux-disable -F: Documentation/ABI/obsolete/sysfs-selinux-checkreqprot +F: security/selinux/ SENSABLE PHANTOM M: Jiri Slaby <jirislaby@gmail.com> @@ -15133,8 +15130,8 @@ F: include/uapi/linux/phantom.h SENSIRION SPS30 AIR POLLUTION SENSOR DRIVER M: Tomasz Duszynski <tduszyns@gmail.com> S: Maintained -F: drivers/iio/chemical/sps30.c F: Documentation/devicetree/bindings/iio/chemical/sensirion,sps30.yaml +F: drivers/iio/chemical/sps30.c SERIAL DEVICE BUS M: Rob Herring <robh@kernel.org> @@ -15157,6 +15154,14 @@ 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: Solarflare linux maintainers <linux-net-drivers@solarflare.com> M: Edward Cree <ecree@solarflare.com> @@ -15190,23 +15195,23 @@ SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS M: Ursula Braun <ubraun@linux.ibm.com> M: Karsten Graul <kgraul@linux.ibm.com> L: linux-s390@vger.kernel.org -W: http://www.ibm.com/developerworks/linux/linux390/ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git S: Maintained -F: drivers/iio/light/gp2ap002.c +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 -T: git git://linuxtv.org/media_tree.git S: Odd fixes +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/rj54n1cb0c.c F: include/media/i2c/rj54n1cb0c.h @@ -15224,107 +15229,107 @@ 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 -S: Maintained 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/ -S: Maintained 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 -S: Maintained F: drivers/media/dvb-frontends/si2168* SI470X FM RADIO RECEIVER I2C DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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.h 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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -S: Odd fixes F: drivers/media/common/siano/ +F: drivers/media/mmc/siano/ F: drivers/media/usb/siano/ F: drivers/media/usb/siano/ -F: drivers/media/mmc/siano/ - -SIFIVE PDMA DRIVER -M: Green Wan <green.wan@sifive.com> -S: Maintained -F: drivers/dma/sf-pdma/ -F: Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml SIFIVE DRIVERS M: Palmer Dabbelt <palmer@dabbelt.com> M: Paul Walmsley <paul.walmsley@sifive.com> L: linux-riscv@lists.infradead.org -T: git git://github.com/sifive/riscv-linux.git S: Supported -K: [^@]sifive +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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/pjw/sifive.git S: Supported -K: fu540 +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> @@ -15345,12 +15350,12 @@ 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/video/fbdev/sm712* F: Documentation/fb/sm712fb.rst +F: drivers/video/fbdev/sm712* SIMPLE FIRMWARE INTERFACE (SFI) -W: http://simplefirmware.org/ S: Obsolete +W: http://simplefirmware.org/ F: arch/x86/platform/sfi/ F: drivers/sfi/ F: include/linux/sfi*.h @@ -15366,34 +15371,34 @@ F: include/linux/platform_data/simplefb.h SIMTEC EB110ATX (Chalice CATS) M: Vincent Sanders <vince@simtec.co.uk> M: Simtec Linux Team <linux@simtec.co.uk> -W: http://www.simtec.co.uk/products/EB110ATX/ S: Supported +W: http://www.simtec.co.uk/products/EB110ATX/ SIMTEC EB2410ITX (BAST) M: Vincent Sanders <vince@simtec.co.uk> M: Simtec Linux Team <linux@simtec.co.uk> -W: http://www.simtec.co.uk/products/EB2410ITX/ S: Supported -F: arch/arm/mach-s3c24xx/mach-bast.c +W: http://www.simtec.co.uk/products/EB2410ITX/ F: arch/arm/mach-s3c24xx/bast-ide.c F: arch/arm/mach-s3c24xx/bast-irq.c - -SIPHASH PRF ROUTINES -M: Jason A. Donenfeld <Jason@zx2c4.com> -S: Maintained -F: lib/siphash.c -F: lib/test_siphash.c -F: include/linux/siphash.h +F: arch/arm/mach-s3c24xx/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/siox/* 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 @@ -15402,23 +15407,23 @@ F: drivers/net/ethernet/sis/sis190.c SIS 900/7016 FAST ETHERNET DRIVER M: Daniele Venzano <venza@brownhat.org> -W: http://www.brownhat.org/sis900.html 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> -W: http://www.winischhofer.net/linuxsisvga.shtml 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 USB2VGA DRIVER M: Thomas Winischhofer <thomas@winischhofer.net> -W: http://www.winischhofer.at/linuxsisusbvga.shtml S: Maintained +W: http://www.winischhofer.at/linuxsisusbvga.shtml F: drivers/usb/misc/sisusbvga/ SLAB ALLOCATOR @@ -15439,26 +15444,18 @@ M: Josh Triplett <josh@joshtriplett.org> R: Steven Rostedt <rostedt@goodmis.org> R: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> L: rcu@vger.kernel.org -W: http://www.rdrop.com/users/paulmck/RCU/ 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 -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: drivers/slimbus/ -F: Documentation/devicetree/bindings/slimbus/ -F: include/linux/slimbus.h - 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 -S: Maintained F: Documentation/admin-guide/LSM/Smack.rst F: security/smack/ @@ -15471,11 +15468,11 @@ SMIA AND SMIA++ IMAGE SENSOR DRIVER M: Sakari Ailus <sakari.ailus@linux.intel.com> L: linux-media@vger.kernel.org S: Maintained -F: drivers/media/i2c/smiapp/ +F: Documentation/devicetree/bindings/media/i2c/nokia,smia.txt F: drivers/media/i2c/smiapp-pll.c F: drivers/media/i2c/smiapp-pll.h +F: drivers/media/i2c/smiapp/ F: include/uapi/linux/smiapp.h -F: Documentation/devicetree/bindings/media/i2c/nokia,smia.txt SMM665 HARDWARE MONITOR DRIVER M: Guenter Roeck <linux@roeck-us.net> @@ -15515,8 +15512,8 @@ SMSC911x ETHERNET DRIVER M: Steve Glendinning <steve.glendinning@shawell.net> L: netdev@vger.kernel.org S: Maintained -F: include/linux/smsc911x.h F: drivers/net/ethernet/smsc/smsc911x.* +F: include/linux/smsc911x.h SMSC9420 PCI ETHERNET DRIVER M: Steve Glendinning <steve.glendinning@shawell.net> @@ -15526,17 +15523,40 @@ F: drivers/net/ethernet/smsc/smsc9420.* SOC-CAMERA V4L2 SUBSYSTEM L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Orphan -F: include/media/soc_camera.h +T: git git://linuxtv.org/media_tree.git F: drivers/staging/media/soc_camera/ +F: include/media/soc_camera.h + +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.txt +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: drivers/i2c/busses/i2c-synquacer.c 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) @@ -15584,38 +15604,15 @@ F: include/uapi/linux/arm_sdei.h SOFTWARE RAID (Multiple Disks) SUPPORT M: Song Liu <song@kernel.org> L: linux-raid@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git S: Supported -F: drivers/md/Makefile +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/ -SOCIONEXT (SNI) AVE NETWORK DRIVER -M: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> -L: netdev@vger.kernel.org -S: Maintained -F: drivers/net/ethernet/socionext/sni_ave.c -F: Documentation/devicetree/bindings/net/socionext,uniphier-ave4.txt - -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: drivers/net/ethernet/socionext/netsec.c -F: Documentation/devicetree/bindings/net/socionext-netsec.txt - -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: drivers/spi/spi-synquacer.c -F: Documentation/devicetree/bindings/spi/spi-synquacer.txt - SOLIDRUN CLEARFOG SUPPORT M: Russell King <linux@armlinux.org.uk> S: Maintained @@ -15645,54 +15642,54 @@ F: include/linux/ssb/ SONY IMX214 SENSOR DRIVER M: Ricardo Ribalda <ricardo.ribalda@gmail.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/imx214.c +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/sony,imx214.txt +F: drivers/media/i2c/imx214.c SONY IMX219 SENSOR DRIVER M: Dave Stevenson <dave.stevenson@raspberrypi.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/imx219.c +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 -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/imx258.c SONY IMX274 SENSOR DRIVER M: Leon Luo <leonl@leopardimaging.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/imx274.c +T: git git://linuxtv.org/media_tree.git F: Documentation/devicetree/bindings/media/i2c/imx274.txt +F: drivers/media/i2c/imx274.c SONY IMX290 SENSOR DRIVER M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/imx290.c +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 -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/imx319.c SONY IMX355 SENSOR DRIVER M: Tianshu Qiu <tian.shu.qiu@intel.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/imx355.c SONY MEMORYSTICK SUBSYSTEM @@ -15700,8 +15697,8 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git F: drivers/memstick/ F: include/linux/memstick.h @@ -15719,10 +15716,10 @@ 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/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git Q: http://patchwork.kernel.org/project/alsa-devel/list/ -S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git F: Documentation/sound/ F: include/sound/ F: include/uapi/sound/ @@ -15731,8 +15728,8 @@ F: sound/ SOUND - COMPRESSED AUDIO M: Vinod Koul <vkoul@kernel.org> L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git 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_* @@ -15749,15 +15746,15 @@ 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> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git L: alsa-devel@alsa-project.org (moderated for non-subscribers) -W: http://alsa-project.org/main/index.php/ASoC 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: 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> @@ -15766,8 +15763,8 @@ 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) -W: https://github.com/thesofproject/linux/ S: Supported +W: https://github.com/thesofproject/linux/ F: sound/soc/sof/ SOUNDWIRE SUBSYSTEM @@ -15783,28 +15780,27 @@ 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/ -S: Maintained 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 -S: Maintained 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 -S: Maintained -F: include/linux/sunserialcore.h F: drivers/tty/serial/suncore.c F: drivers/tty/serial/sunhv.c F: drivers/tty/serial/sunsab.c @@ -15813,48 +15809,49 @@ 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.wiki.kernel.org/ T: git git://git.kernel.org/pub/scm/devel/sparse/sparse.git -S: Maintained F: include/linux/compiler.h SPEAR CLOCK FRAMEWORK SUPPORT M: Viresh Kumar <vireshk@kernel.org> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -W: http://www.st.com/spear 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) -W: http://www.st.com/spear 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> L: linux-mtd@lists.infradead.org +S: Maintained W: http://www.linux-mtd.infradead.org/ Q: http://patchwork.ozlabs.org/project/linux-mtd/list/ -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git spi-nor/next C: irc://irc.oftc.net/mtd -S: Maintained +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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git -Q: http://patchwork.kernel.org/project/spi-devel-general/list/ 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/ @@ -15881,17 +15878,17 @@ F: include/trace/events/spmi.h SPU FILE SYSTEM M: Jeremy Kerr <jk@ozlabs.org> L: linuxppc-dev@lists.ozlabs.org -W: http://www.ibm.com/developerworks/power/cell/ S: Supported +W: http://www.ibm.com/developerworks/power/cell/ F: Documentation/filesystems/spufs.txt 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 -S: Maintained F: Documentation/filesystems/squashfs.rst F: fs/squashfs/ @@ -15903,18 +15900,18 @@ 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 -W: http://www.st.com/ S: Maintained -F: drivers/iio/imu/st_lsm6dsx/ +W: http://www.st.com/ F: Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt +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 -T: git git://linuxtv.org/media_tree.git S: Maintained -F: drivers/media/i2c/st-mipid02.c +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@st.com> @@ -15926,8 +15923,8 @@ ST VL53L0X ToF RANGER(I2C) IIO DRIVER M: Song Qiang <songqiang1304521@gmail.com> L: linux-iio@vger.kernel.org S: Maintained -F: drivers/iio/proximity/vl53l0x-i2c.c F: Documentation/devicetree/bindings/iio/proximity/vl53l0x.txt +F: drivers/iio/proximity/vl53l0x-i2c.c STABLE BRANCH M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> @@ -15971,20 +15968,28 @@ STAGING - OLPC SECONDARY DISPLAY CONTROLLER (DCON) M: Jens Frederich <jfrederich@gmail.com> M: Daniel Drake <dsd@laptop.org> M: Jon Nettleton <jon.nettleton@gmail.com> -W: http://wiki.laptop.org/go/DCON 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> +S: Odd Fixes +F: drivers/staging/rtl8188eu/ + 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 - REALTEK RTL8188EU DRIVERS -M: Larry Finger <Larry.Finger@lwfinger.net> -S: Odd Fixes -F: drivers/staging/rtl8188eu/ +STAGING - SEPS525 LCD CONTROLLER DRIVERS +M: Michael Hennerich <michael.hennerich@analog.com> +M: Beniamin Bia <beniamin.bia@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> @@ -16000,8 +16005,8 @@ 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 -W: http://www.linux-speakup.org/ S: Odd Fixes +W: http://www.linux-speakup.org/ F: drivers/staging/speakup/ STAGING - VIA VT665X DRIVERS @@ -16016,19 +16021,11 @@ L: linux-wireless@vger.kernel.org S: Supported F: drivers/staging/wilc1000/ -STAGING - SEPS525 LCD CONTROLLER DRIVERS -M: Michael Hennerich <michael.hennerich@analog.com> -M: Beniamin Bia <beniamin.bia@analog.com> -L: linux-fbdev@vger.kernel.org -S: Supported -F: drivers/staging/fbtft/fb_seps525.c -F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml - STAGING SUBSYSTEM M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git L: devel@driverdev.osuosl.org S: Supported +T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git F: drivers/staging/ STARFIRE/DURALAN NETWORK DRIVER @@ -16052,14 +16049,14 @@ F: sound/soc/sti/ STI CEC DRIVER M: Benjamin Gaignard <benjamin.gaignard@linaro.org> S: Maintained -F: drivers/media/platform/sti/cec/ F: Documentation/devicetree/bindings/media/stih-cec.txt +F: drivers/media/platform/sti/cec/ STK1160 USB VIDEO CAPTURE DRIVER M: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git S: Maintained +T: git git://linuxtv.org/media_tree.git F: drivers/media/usb/stk1160/ STM32 AUDIO (ASoC) DRIVERS @@ -16073,38 +16070,29 @@ F: sound/soc/stm/ STM32 TIMER/LPTIMER DRIVERS M: Fabrice Gasnier <fabrice.gasnier@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* -F: Documentation/ABI/testing/*timer-stm32 -F: Documentation/devicetree/bindings/*/*stm32-*timer* STMMAC ETHERNET DRIVER M: Giuseppe Cavallaro <peppe.cavallaro@st.com> M: Alexandre Torgue <alexandre.torgue@st.com> M: Jose Abreu <joabreu@synopsys.com> L: netdev@vger.kernel.org -W: http://www.stlinux.com S: Supported +W: http://www.stlinux.com F: Documentation/networking/device_drivers/stmicro/ F: drivers/net/ethernet/stmicro/stmmac/ -EXTRA BOOT CONFIG -M: Masami Hiramatsu <mhiramat@kernel.org> -S: Maintained -F: lib/bootconfig.c -F: fs/proc/bootconfig.c -F: include/linux/bootconfig.h -F: tools/bootconfig/* -F: Documentation/admin-guide/bootconfig.rst - SUN3/3X M: Sam Creasey <sammy@sammy.net> -W: http://sammy.net/sun3/ S: Maintained +W: http://sammy.net/sun3/ +F: arch/m68k/include/asm/sun3* F: arch/m68k/kernel/*sun3* F: arch/m68k/sun3*/ -F: arch/m68k/include/asm/sun3* F: drivers/net/ethernet/i825xx/sun3* SUN4I LOW RES ADC ATTACHED TABLET KEYS DRIVER @@ -16124,8 +16112,8 @@ SUPERH M: Yoshinori Sato <ysato@users.sourceforge.jp> M: Rich Felker <dalias@libc.org> L: linux-sh@vger.kernel.org -Q: http://patchwork.kernel.org/project/linux-sh/list/ S: Maintained +Q: http://patchwork.kernel.org/project/linux-sh/list/ F: Documentation/sh/ F: arch/sh/ F: drivers/sh/ @@ -16135,15 +16123,15 @@ M: "Rafael J. Wysocki" <rjw@rjwysocki.net> M: Len Brown <len.brown@intel.com> M: Pavel Machek <pavel@ucw.cz> L: linux-pm@vger.kernel.org -B: https://bugzilla.kernel.org S: Supported +B: https://bugzilla.kernel.org F: Documentation/power/ F: arch/x86/kernel/acpi/ F: drivers/base/power/ -F: kernel/power/ -F: include/linux/suspend.h 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> @@ -16155,75 +16143,75 @@ F: arch/x86/boot/video* SWIOTLB SUBSYSTEM M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> L: iommu@lists.linux-foundation.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb.git S: Supported -F: kernel/dma/swiotlb.c +T: git git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb.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: net/switchdev/ F: include/net/switchdev.h +F: net/switchdev/ SY8106A REGULATOR DRIVER M: Icenowy Zheng <icenowy@aosc.io> S: Maintained -F: drivers/regulator/sy8106a-regulator.c F: Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt +F: drivers/regulator/sy8106a-regulator.c SYNC FILE FRAMEWORK M: Sumit Semwal <sumit.semwal@linaro.org> R: Gustavo Padovan <gustavo@padovan.org> -S: Maintained L: linux-media@vger.kernel.org L: dri-devel@lists.freedesktop.org -F: drivers/dma-buf/sync_* +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 -F: Documentation/driver-api/sync_file.rst -T: git git://anongit.freedesktop.org/drm/drm-misc SYNOPSYS ARC ARCHITECTURE M: Vineet Gupta <vgupta@synopsys.com> L: linux-snps-arc@lists.infradead.org S: Supported -F: arch/arc/ +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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git SYNOPSYS ARC HSDK SDP pll clock driver M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> S: Supported -F: drivers/clk/clk-hsdk-pll.c 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: drivers/clk/axs10x/* 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: arch/arc/plat-axs10x -F: arch/arc/boot/dts/ax* 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: drivers/reset/reset-axs10x.c 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> @@ -16248,8 +16236,8 @@ F: drivers/gpio/gpio-dwapb.c SYNOPSYS DESIGNWARE AXI DMAC DRIVER M: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> S: Maintained -F: drivers/dma/dw-axi-dmac/ F: Documentation/devicetree/bindings/dma/snps,dw-axi-dmac.txt +F: drivers/dma/dw-axi-dmac/ SYNOPSYS DESIGNWARE DMAC DRIVER M: Viresh Kumar <vireshk@kernel.org> @@ -16292,15 +16280,22 @@ 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 -F: Documentation/devicetree/bindings/reset/snps,hsdk-reset.txt + +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> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git 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 @@ -16310,8 +16305,8 @@ S: Maintained F: Documentation/devicetree/bindings/arm/arm,sc[mp]i.txt F: drivers/clk/clk-sc[mp]i.c F: drivers/cpufreq/sc[mp]i-cpufreq.c -F: drivers/firmware/arm_scpi.c F: drivers/firmware/arm_scmi/ +F: drivers/firmware/arm_scpi.c F: drivers/reset/reset-scmi.c F: include/linux/sc[mp]i_protocol.h F: include/trace/events/scmi.h @@ -16319,8 +16314,8 @@ F: include/trace/events/scmi.h SYSTEM RESET/SHUTDOWN DRIVERS M: Sebastian Reichel <sre@kernel.org> L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git 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/ @@ -16378,125 +16373,125 @@ 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> -W: http://tcp-lp-mod.sourceforge.net/ 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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 -S: Maintained 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/ -S: Maintained 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 -S: Maintained 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 -S: Maintained F: drivers/media/tuners/tda8290.* TDA9840 MEDIA DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -S: Odd fixes 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 -S: Maintained F: drivers/media/tuners/tea5767.* TEA6415C MEDIA DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/tea6420* TEAM DRIVER @@ -16528,18 +16523,18 @@ TEE SUBSYSTEM M: Jens Wiklander <jens.wiklander@linaro.org> L: tee-dev@lists.linaro.org S: Maintained +F: Documentation/tee.txt +F: drivers/tee/ F: include/linux/tee_drv.h F: include/uapi/linux/tee.h -F: drivers/tee/ -F: Documentation/tee.txt 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 -S: Supported N: [^a-z]tegra TEGRA CLOCK DRIVER @@ -16604,62 +16599,69 @@ L: netdev@vger.kernel.org S: Supported F: drivers/net/ethernet/tehuti/* -Telecom Clock Driver for MCPL0010 +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 -T: git git://github.com/czankel/xtensa-linux.git S: Maintained +T: git git://github.com/czankel/xtensa-linux.git F: arch/xtensa/ F: drivers/irqchip/irq-xtensa-* -Texas Instruments' System Control Interface (TISCI) Protocol Driver +TEXAS INSTRUMENTS ASoC DRIVERS +M: Peter Ujfalusi <peter.ujfalusi@ti.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 <ricardo@ribalda.com> +L: linux-iio@vger.kernel.org +S: Supported +F: Documentation/devicetree/bindings/iio/dac/ti,dac7612.txt +F: drivers/iio/dac/ti-dac7612.c + +TEXAS INSTRUMENTS' SYSTEM CONTROL INTERFACE (TISCI) PROTOCOL DRIVER M: Nishanth Menon <nm@ti.com> M: Tero Kristo <t-kristo@ti.com> M: Santosh Shilimkar <ssantosh@kernel.org> L: linux-arm-kernel@lists.infradead.org S: Maintained F: Documentation/devicetree/bindings/arm/keystone/ti,sci.txt -F: drivers/firmware/ti_sci* -F: include/linux/soc/ti/ti_sci_protocol.h -F: Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt -F: drivers/soc/ti/ti_sci_pm_domains.c -F: include/dt-bindings/soc/ti,sci_pm_domain.h -F: Documentation/devicetree/bindings/reset/ti,sci-reset.txt F: Documentation/devicetree/bindings/clock/ti,sci-clk.txt -F: drivers/clk/keystone/sci-clk.c -F: drivers/reset/reset-ti-sci.c -F: Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt F: Documentation/devicetree/bindings/interrupt-controller/ti,sci-inta.txt -F: drivers/irqchip/irq-ti-sci-intr.c +F: Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt +F: Documentation/devicetree/bindings/reset/ti,sci-reset.txt +F: Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt +F: drivers/clk/keystone/sci-clk.c +F: drivers/firmware/ti_sci* F: drivers/irqchip/irq-ti-sci-inta.c -F: include/linux/soc/ti/ti_sci_inta_msi.h +F: drivers/irqchip/irq-ti-sci-intr.c +F: drivers/reset/reset-ti-sci.c F: drivers/soc/ti/ti_sci_inta_msi.c - -Texas Instruments ASoC drivers -M: Peter Ujfalusi <peter.ujfalusi@ti.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 <ricardo@ribalda.com> -L: linux-iio@vger.kernel.org -S: Supported -F: drivers/iio/dac/ti-dac7612.c -F: Documentation/devicetree/bindings/iio/dac/ti,dac7612.txt +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 THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/radio/radio-raremono.c THERMAL @@ -16667,14 +16669,23 @@ M: Zhang Rui <rui.zhang@intel.com> M: Daniel Lezcano <daniel.lezcano@linaro.org> R: Amit Kucheria <amit.kucheria@verdurent.com> L: linux-pm@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git -Q: https://patchwork.kernel.org/project/linux-pm/list/ S: Supported +Q: https://patchwork.kernel.org/project/linux-pm/list/ +T: git git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git +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: include/linux/cpu_cooling.h -F: Documentation/devicetree/bindings/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> @@ -16689,15 +16700,6 @@ F: drivers/thermal/cpufreq_cooling.c F: drivers/thermal/cpuidle_cooling.c F: include/linux/cpu_cooling.h -THERMAL DRIVER FOR AMLOGIC SOCS -M: Guillaume La Roque <glaroque@baylibre.com> -L: linux-pm@vger.kernel.org -L: linux-amlogic@lists.infradead.org -W: http://linux-meson.com/ -S: Supported -F: drivers/thermal/amlogic_thermal.c -F: Documentation/devicetree/bindings/thermal/amlogic,thermal.yaml - THINKPAD ACPI EXTRAS DRIVER M: Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br> L: ibm-acpi-devel@lists.sourceforge.net @@ -16736,10 +16738,10 @@ F: drivers/gpio/gpio-thunderx.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 -S: Maintained F: drivers/media/platform/am437x/ TI BANDGAP AND THERMAL DRIVER @@ -16752,9 +16754,9 @@ F: drivers/thermal/ti-soc-thermal/ TI BQ27XXX POWER SUPPLY DRIVER R: Andrew F. Davis <afd@ti.com> -F: include/linux/power/bq27xxx_battery.h 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> @@ -16772,12 +16774,12 @@ TI DAVINCI MACHINE SUPPORT M: Sekhar Nori <nsekhar@ti.com> R: Bartosz Golaszewski <bgolaszewski@baylibre.com> L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git 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 -F: arch/arm/boot/dts/da850* TI DAVINCI SERIES CLOCK DRIVER M: David Lechner <david@lechnology.com> @@ -16796,10 +16798,10 @@ 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 -S: Maintained F: drivers/media/platform/davinci/ F: include/media/davinci/ @@ -16831,16 +16833,16 @@ 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 -F: drivers/soc/ti/* 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/lm49453* F: sound/soc/codecs/isabelle* +F: sound/soc/codecs/lm49453* TI LP855x BACKLIGHT DRIVER M: Milo Kim <milo.kim@ti.com> @@ -16897,8 +16899,8 @@ M: Mark Greer <mgreer@animalcreek.com> L: linux-wireless@vger.kernel.org L: linux-nfc@lists.01.org (moderated for non-subscribers) S: Supported -F: drivers/nfc/trf7970a.c F: Documentation/devicetree/bindings/net/nfc/trf7970a.txt +F: drivers/nfc/trf7970a.c TI TWL4030 SERIES SOC CODEC DRIVER M: Peter Ujfalusi <peter.ujfalusi@ti.com> @@ -16918,10 +16920,10 @@ F: drivers/media/platform/ti-vpe/ TI WILINK WIRELESS DRIVERS L: linux-wireless@vger.kernel.org +S: Orphan W: http://wireless.kernel.org/en/users/Drivers/wl12xx W: http://wireless.kernel.org/en/users/Drivers/wl1251 T: git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git -S: Orphan F: drivers/net/wireless/ti/ F: include/linux/wl12xx.h @@ -16930,17 +16932,17 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core 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/clocksource.c -F: kernel/time/time*.c 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 @@ -16948,34 +16950,34 @@ 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) -W: http://tipc.sourceforge.net/ 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) -W: http://sourceforge.net/projects/tlan/ S: Maintained +W: http://sourceforge.net/projects/tlan/ F: Documentation/networking/device_drivers/ti/tlan.txt 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 -S: Odd fixes -F: drivers/media/usb/tm6000/ F: Documentation/media/v4l-drivers/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/tmio_mmc* F: drivers/mmc/host/renesas_sdhi* +F: drivers/mmc/host/tmio_mmc* F: include/linux/mfd/tmio.h TMP401 HARDWARE MONITOR DRIVER @@ -17006,8 +17008,8 @@ 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) -W: https://tomoyo.osdn.jp/ S: Maintained +W: https://tomoyo.osdn.jp/ F: security/tomoyo/ TOPSTAR LAPTOP EXTRAS DRIVER @@ -17024,10 +17026,10 @@ 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.txt -F: kernel/torture.c -F: kernel/rcu/rcutorture.c -F: kernel/rcu/rcuperf.c F: kernel/locking/locktorture.c +F: kernel/rcu/rcuperf.c +F: kernel/rcu/rcutorture.c +F: kernel/torture.c TOSHIBA ACPI EXTRAS DRIVER M: Azael Avalos <coproscefalo@gmail.com> @@ -17049,8 +17051,8 @@ F: drivers/platform/x86/toshiba_haps.c TOSHIBA SMM DRIVER M: Jonathan Buzzard <jonathan@buzzard.org.uk> -W: http://www.buzzard.org.uk/toshiba/ 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 @@ -17073,17 +17075,17 @@ M: Peter Huewe <peterhuewe@gmx.de> M: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> R: Jason Gunthorpe <jgg@ziepe.ca> L: linux-integrity@vger.kernel.org -Q: https://patchwork.kernel.org/project/linux-integrity/list/ +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.infradead.org/users/jjs/linux-tpmdd.git -S: Maintained F: drivers/char/tpm/ TRACING M: Steven Rostedt <rostedt@goodmis.org> M: Ingo Molnar <mingo@redhat.com> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core 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 @@ -17098,28 +17100,21 @@ M: Steven Rostedt <rostedt@goodmis.org> M: Ingo Molnar <mingo@kernel.org> R: Karol Herbst <karolherbst@gmail.com> R: Pekka Paalanen <ppaalanen@gmail.com> -S: Maintained L: linux-kernel@vger.kernel.org L: nouveau@lists.freedesktop.org -F: kernel/trace/trace_mmiotrace.c -F: include/linux/mmiotrace.h +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 TRIVIAL PATCHES M: Jiri Kosina <trivial@kernel.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git K: ^Subject:.*(?i)trivial -TEMPO SEMICONDUCTOR DRIVERS -M: Steven Eckhoff <steven.eckhoff.opensource@gmail.com> -S: Maintained -F: sound/soc/codecs/tscs*.c -F: sound/soc/codecs/tscs*.h -F: Documentation/devicetree/bindings/sound/tscs*.txt - TTY LAYER M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> M: Jiri Slaby <jslaby@suse.com> @@ -17128,21 +17123,21 @@ 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/serial_core.h F: include/linux/serial.h +F: include/linux/serial_core.h F: include/linux/tty.h -F: include/uapi/linux/serial_core.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 -S: Maintained F: drivers/media/tuners/tua9001* TULIP NETWORK DRIVERS @@ -17153,8 +17148,8 @@ F: drivers/net/ethernet/dec/tulip/ TUN/TAP driver M: Maxim Krasnyansky <maxk@qti.qualcomm.com> -W: http://vtun.sourceforge.net/tun S: Maintained +W: http://vtun.sourceforge.net/tun F: Documentation/networking/tuntap.txt F: arch/um/os-Linux/drivers/ @@ -17162,18 +17157,18 @@ TURBOCHANNEL SUBSYSTEM M: "Maciej W. Rozycki" <macro@linux-mips.org> M: Ralf Baechle <ralf@linux-mips.org> L: linux-mips@vger.kernel.org -Q: http://patchwork.linux-mips.org/project/linux-mips/list/ 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 -B: https://bugzilla.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 -S: Supported F: tools/power/x86/turbostat/ TW5864 VIDEO4LINUX DRIVER @@ -17188,17 +17183,17 @@ F: drivers/media/pci/tw5864/ TW68 VIDEO4LINUX DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.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 -T: git git://linuxtv.org/media_tree.git -W: http://linuxtv.org S: Maintained +W: http://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/pci/tw686x/ UACCE ACCELERATOR FRAMEWORK @@ -17216,24 +17211,24 @@ 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 -W: http://www.linux-mtd.infradead.org/doc/ubifs.html -S: Supported F: Documentation/filesystems/ubifs.rst F: fs/ubifs/ UCLINUX (M68KNOMMU AND COLDFIRE) M: Greg Ungerer <gerg@linux-m68k.org> -W: http://www.linux-m68k.org/ -W: http://www.uclinux.org/ L: linux-m68k@lists.linux-m68k.org L: uclinux-dev@uclinux.org (subscribers-only) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu.git S: Maintained -F: arch/m68k/coldfire/ -F: arch/m68k/68*/ +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 @@ -17276,21 +17271,21 @@ F: fs/unicode/ UNICORE32 ARCHITECTURE M: Guan Xuetao <gxt@pku.edu.cn> -W: http://mprc.pku.edu.cn/~guanxuetao/linux S: Maintained +W: http://mprc.pku.edu.cn/~guanxuetao/linux T: git git://github.com/gxt/linux.git F: arch/unicore32/ UNIFDEF M: Tony Finch <dot@dotat.at> -W: http://dotat.at/prog/unifdef S: Maintained +W: http://dotat.at/prog/unifdef F: scripts/unifdef.c UNIFORM CDROM DRIVER M: Jens Axboe <axboe@kernel.dk> -W: http://www.kernel.dk S: Maintained +W: http://www.kernel.dk F: Documentation/cdrom/ F: drivers/cdrom/cdrom.c F: include/linux/cdrom.h @@ -17300,9 +17295,9 @@ UNISYS S-PAR DRIVERS M: David Kershner <david.kershner@unisys.com> L: sparmaintainer@unisys.com (Unisys internal) S: Supported -F: include/linux/visorbus.h -F: drivers/visorbus/ 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> @@ -17327,11 +17322,11 @@ F: drivers/scsi/ufs/ufs-mediatek* UNSORTED BLOCK IMAGES (UBI) M: Richard Weinberger <richard@nod.at> -W: http://www.linux-mtd.infradead.org/ 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 -S: Supported F: drivers/mtd/ubi/ F: include/linux/mtd/ubi.h F: include/uapi/mtd/ubi-user.h @@ -17339,8 +17334,8 @@ F: include/uapi/mtd/ubi-user.h USB "USBNET" DRIVER FRAMEWORK M: Oliver Neukum <oneukum@suse.com> L: netdev@vger.kernel.org -W: http://www.linux-usb.org/usbnet S: Maintained +W: http://www.linux-usb.org/usbnet F: drivers/net/usb/usbnet.c F: include/linux/usb/usbnet.h @@ -17392,8 +17387,8 @@ F: drivers/usb/c67x00/ USB DAVICOM DM9601 DRIVER M: Peter Korsgaard <jacmet@sunsite.dk> L: netdev@vger.kernel.org -W: http://www.linux-usb.org/usbnet S: Maintained +W: http://www.linux-usb.org/usbnet F: drivers/net/usb/dm9601.c USB EHCI DRIVER @@ -17406,9 +17401,9 @@ 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 -S: Maintained F: drivers/usb/gadget/ F: include/linux/usb/gadget* @@ -17416,8 +17411,8 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git 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/ @@ -17461,8 +17456,8 @@ F: drivers/usb/storage/ USB MIDI DRIVER M: Clemens Ladisch <clemens@ladisch.de> L: alsa-devel@alsa-project.org (moderated for non-subscribers) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git F: sound/usb/midi.* USB NETWORKING DRIVERS @@ -17479,9 +17474,9 @@ F: drivers/usb/host/ohci* USB OTG FSM (Finite State Machine) M: Peter Chen <Peter.Chen@nxp.com> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb.git 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 @@ -17492,23 +17487,23 @@ L: linux-usb@vger.kernel.org S: Maintained F: Documentation/usb/usbip_protocol.rst F: drivers/usb/usbip/ -F: tools/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 -T: git git://github.com/petkan/pegasus.git -W: https://github.com/petkan/pegasus 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git F: drivers/usb/phy/ USB PRINTER DRIVER (usblp) @@ -17528,16 +17523,16 @@ USB RTL8150 DRIVER M: Petko Manolov <petkan@nucleusys.com> L: linux-usb@vger.kernel.org L: netdev@vger.kernel.org -T: git git://github.com/petkan/rtl8150.git -W: https://github.com/petkan/rtl8150 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git 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 @@ -17558,9 +17553,9 @@ 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 -S: Supported F: Documentation/devicetree/bindings/usb/ F: Documentation/usb/ F: drivers/usb/ @@ -17607,18 +17602,18 @@ 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 -T: git git://linuxtv.org/media_tree.git -W: http://www.ideasonboard.org/uvc/ 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 VISION DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Odd Fixes +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/staging/media/usbvision/ USB WEBCAM GADGET @@ -17639,22 +17634,22 @@ USB XHCI DRIVER M: Mathias Nyman <mathias.nyman@intel.com> L: linux-usb@vger.kernel.org S: Supported -F: drivers/usb/host/xhci* F: drivers/usb/host/pci-quirks* +F: drivers/usb/host/xhci* USB ZD1201 DRIVER L: linux-wireless@vger.kernel.org -W: http://linux-lc100020.sourceforge.net 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 -T: git git://linuxtv.org/media_tree.git -W: http://royale.zerezo.com/zr364xx/ S: Maintained +W: http://royale.zerezo.com/zr364xx/ +T: git git://linuxtv.org/media_tree.git F: Documentation/media/v4l-drivers/zr364xx* F: drivers/media/usb/zr364xx/ @@ -17663,10 +17658,10 @@ 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 -S: Maintained F: Documentation/virt/uml/ F: arch/um/ F: arch/x86/um/ @@ -17675,16 +17670,16 @@ F: fs/hostfs/ USERSPACE COPYIN/COPYOUT (UIOVEC) M: Alexander Viro <viro@zeniv.linux.org.uk> S: Maintained -F: lib/iov_iter.c F: include/linux/uio.h +F: lib/iov_iter.c USERSPACE DMA BUFFER DRIVER M: Gerd Hoffmann <kraxel@redhat.com> -S: Maintained 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 -T: git git://anongit.freedesktop.org/drm/drm-misc USERSPACE I/O (UIO) M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> @@ -17697,29 +17692,36 @@ 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 -S: Maintained 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: lib/uuid.c -F: lib/test_uuid.c F: include/linux/uuid.h F: include/uapi/linux/uuid.h -S: Maintained +F: lib/test_uuid.c +F: lib/uuid.c UVESAFB DRIVER M: Michal Januszewski <spock@gentoo.org> L: linux-fbdev@vger.kernel.org -W: https://github.com/mjanusz/v86d 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 @@ -17736,8 +17738,8 @@ VFIO DRIVER M: Alex Williamson <alex.williamson@redhat.com> R: Cornelia Huck <cohuck@redhat.com> L: kvm@vger.kernel.org -T: git git://github.com/awilliam/linux-vfio.git 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 @@ -17761,10 +17763,10 @@ 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 -T: git git://anongit.freedesktop.org/drm/drm-misc VIA RHINE NETWORK DRIVER S: Orphan @@ -17780,10 +17782,10 @@ 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 -F: drivers/video/fbdev/via/ VIA VELOCITY NETWORK DRIVER M: Francois Romieu <romieu@fr.zoreil.com> @@ -17794,23 +17796,23 @@ F: drivers/net/ethernet/via/via-velocity.* VICODEC VIRTUAL CODEC DRIVER M: Hans Verkuil <hverkuil-cisco@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/platform/vicodec/* -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 - 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: Pawel Osciak <pawel@osciak.com> M: Marek Szyprowski <m.szyprowski@samsung.com> @@ -17825,9 +17827,9 @@ VIMC VIRTUAL MEDIA CONTROLLER DRIVER M: Helen Koike <helen.koike@collabora.com> R: Shuah Khan <skhan@linuxfoundation.org> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/platform/vimc/* VIRT LIB @@ -17844,19 +17846,32 @@ L: kvm@vger.kernel.org L: virtualization@lists.linux-foundation.org L: netdev@vger.kernel.org S: Maintained +F: drivers/net/vsockmon.c +F: drivers/vhost/vsock.c F: include/linux/virtio_vsock.h F: include/uapi/linux/virtio_vsock.h -F: include/uapi/linux/vsockmon.h F: include/uapi/linux/vm_sockets_diag.h -F: net/vmw_vsock/diag.c +F: include/uapi/linux/vsockmon.h F: net/vmw_vsock/af_vsock_tap.c -F: net/vmw_vsock/virtio_transport_common.c +F: net/vmw_vsock/diag.c F: net/vmw_vsock/virtio_transport.c +F: net/vmw_vsock/virtio_transport_common.c F: net/vmw_vsock/vsock_loopback.c -F: drivers/net/vsockmon.c -F: drivers/vhost/vsock.c F: tools/testing/vsock/ +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 @@ -17871,29 +17886,16 @@ M: Jason Wang <jasowang@redhat.com> L: virtualization@lists.linux-foundation.org S: Maintained F: Documentation/devicetree/bindings/virtio/ -F: drivers/virtio/ -F: drivers/vdpa/ -F: tools/virtio/ -F: drivers/net/virtio_net.c F: drivers/block/virtio_blk.c -F: include/linux/virtio*.h +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: drivers/crypto/virtio/ F: mm/balloon_compaction.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: include/uapi/linux/virtio_blk.h -F: include/uapi/linux/virtio_scsi.h -F: drivers/vhost/scsi.c +F: tools/virtio/ VIRTIO CRYPTO DRIVER M: Gonglei <arei.gonglei@huawei.com> @@ -17910,8 +17912,8 @@ L: linux-s390@vger.kernel.org L: virtualization@lists.linux-foundation.org L: kvm@vger.kernel.org S: Supported -F: drivers/s390/virtio/ F: arch/s390/include/uapi/asm/virtio-ccw.h +F: drivers/s390/virtio/ VIRTIO FILE SYSTEM M: Vivek Goyal <vgoyal@redhat.com> @@ -17919,19 +17921,19 @@ M: Stefan Hajnoczi <stefanha@redhat.com> M: Miklos Szeredi <miklos@szeredi.hu> L: virtualization@lists.linux-foundation.org L: linux-fsdevel@vger.kernel.org -W: https://virtio-fs.gitlab.io/ 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 -F: Documentation/filesystems/virtiofs.rst 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 -T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained +T: git git://anongit.freedesktop.org/drm/drm-misc F: drivers/gpu/drm/virtio/ F: include/uapi/linux/virtio_gpu.h @@ -17941,11 +17943,11 @@ M: Jason Wang <jasowang@redhat.com> L: kvm@vger.kernel.org L: virtualization@lists.linux-foundation.org L: netdev@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git F: drivers/vhost/ -F: include/uapi/linux/vhost.h F: include/linux/vhost_iotlb.h +F: include/uapi/linux/vhost.h VIRTIO INPUT DRIVER M: Gerd Hoffmann <kraxel@redhat.com> @@ -17965,9 +17967,9 @@ 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 -F: drivers/virt/vboxguest/ VIRTUAL BOX SHARED FOLDER VFS DRIVER M: Hans de Goede <hdegoede@redhat.com> @@ -17992,9 +17994,9 @@ F: net/dsa/tag_ocelot.c VIVID VIRTUAL VIDEO DRIVER M: Hans Verkuil <hverkuil@xs4all.nl> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git -W: https://linuxtv.org S: Maintained +W: https://linuxtv.org +T: git git://linuxtv.org/media_tree.git F: drivers/media/platform/vivid/* VLYNQ BUS @@ -18028,15 +18030,8 @@ M: Thomas Hellstrom <thellstrom@vmware.com> M: "VMware, Inc." <pv-drivers@vmware.com> L: virtualization@lists.linux-foundation.org S: Supported -F: arch/x86/kernel/cpu/vmware.c F: arch/x86/include/asm/vmware.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 +F: arch/x86/kernel/cpu/vmware.c VMWARE PVRDMA DRIVER M: Adit Ranadive <aditr@vmware.com> @@ -18053,6 +18048,13 @@ 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 VMMOUSE SUBDRIVER M: "VMware Graphics" <linux-graphics-maintainer@vmware.com> M: "VMware, Inc." <pv-drivers@vmware.com> @@ -18078,9 +18080,9 @@ 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 -S: Supported F: Documentation/devicetree/bindings/regulator/ F: Documentation/power/regulator/ F: drivers/regulator/ @@ -18093,8 +18095,8 @@ M: David Ahern <dsahern@kernel.org> M: Shrijeet Mukherjee <shrijeet@gmail.com> L: netdev@vger.kernel.org S: Maintained -F: drivers/net/vrf.c F: Documentation/networking/vrf.txt +F: drivers/net/vrf.c VSPRINTF M: Petr Mladek <pmladek@suse.com> @@ -18102,11 +18104,11 @@ M: Steven Rostedt <rostedt@goodmis.org> M: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> R: Andy Shevchenko <andriy.shevchenko@linux.intel.com> R: Rasmus Villemoes <linux@rasmusvillemoes.dk> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk.git S: Maintained -F: lib/vsprintf.c -F: lib/test_printf.c +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/vsprintf.c VT1211 HARDWARE MONITOR DRIVER M: Juerg Haefliger <juergh@gmail.com> @@ -18170,9 +18172,9 @@ 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 -S: Maintained F: Documentation/devicetree/bindings/watchdog/ F: Documentation/watchdog/ F: drivers/watchdog/ @@ -18222,11 +18224,6 @@ M: David Härdeman <david@hardeman.nu> S: Maintained F: drivers/media/rc/winbond-cir.c -RCMM REMOTE CONTROLS DECODER -M: Patrick Lerda <patrick9876@free.fr> -S: Maintained -F: drivers/media/rc/ir-rcmm-decoder.c - WINSYSTEMS EBC-C384 WATCHDOG DRIVER M: William Breathitt Gray <vilhelm.gray@gmail.com> L: linux-watchdog@vger.kernel.org @@ -18241,11 +18238,11 @@ 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/ -L: wireguard@lists.zx2c4.com -L: netdev@vger.kernel.org WISTRON LAPTOP BUTTON DRIVER M: Miloslav Trmac <mitr@volny.cz> @@ -18259,32 +18256,32 @@ F: drivers/net/wireless/wl3501* WOLFSON MICROELECTRONICS DRIVERS L: patches@opensource.cirrus.com -T: git https://github.com/CirrusLogic/linux-drivers.git -W: https://github.com/CirrusLogic/linux-drivers/wiki S: Supported -F: Documentation/hwmon/wm83??.rst +W: https://github.com/CirrusLogic/linux-drivers/wiki +T: git https://github.com/CirrusLogic/linux-drivers.git F: Documentation/devicetree/bindings/extcon/extcon-arizona.txt -F: Documentation/devicetree/bindings/regulator/arizona-regulator.txt F: Documentation/devicetree/bindings/mfd/arizona.txt F: Documentation/devicetree/bindings/mfd/wm831x.txt +F: Documentation/devicetree/bindings/regulator/arizona-regulator.txt F: Documentation/devicetree/bindings/sound/wlf,arizona.txt +F: Documentation/hwmon/wm83??.rst F: arch/arm/mach-s3c64xx/mach-crag6410* F: drivers/clk/clk-wm83*.c F: drivers/extcon/extcon-arizona.c -F: drivers/leds/leds-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/wm*.c F: drivers/mfd/cs47l24* +F: drivers/mfd/wm*.c F: drivers/power/supply/wm83*.c -F: drivers/rtc/rtc-wm83*.c -F: drivers/regulator/wm8*.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/ @@ -18295,17 +18292,17 @@ F: include/linux/regulator/arizona* F: include/linux/wm97xx.h F: include/sound/wm????.h F: sound/soc/codecs/arizona.? -F: sound/soc/codecs/wm* F: sound/soc/codecs/cs47l24* +F: sound/soc/codecs/wm* WORKQUEUE M: Tejun Heo <tj@kernel.org> R: Lai Jiangshan <jiangshanlai@gmail.com> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git 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 -F: Documentation/core-api/workqueue.rst X-POWERS AXP288 PMIC DRIVERS M: Hans de Goede <hdegoede@redhat.com> @@ -18331,11 +18328,11 @@ 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> -R: "H. Peter Anvin" <hpa@zytor.com> M: x86@kernel.org +R: "H. Peter Anvin" <hpa@zytor.com> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core 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/ @@ -18343,8 +18340,8 @@ F: arch/x86/ X86 ENTRY CODE M: Andy Lutomirski <luto@kernel.org> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/asm 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 @@ -18364,8 +18361,8 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm 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 @@ -18382,15 +18379,15 @@ R: Darren Hart <dvhart@infradead.org> R: Andy Shevchenko <andy@infradead.org> L: platform-driver-x86@vger.kernel.org L: x86@kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core F: arch/x86/platform X86 VDSO M: Andy Lutomirski <luto@kernel.org> L: linux-kernel@vger.kernel.org -T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/vdso S: Maintained +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/vdso F: arch/x86/entry/vdso/ XARRAY @@ -18398,24 +18395,24 @@ M: Matthew Wilcox <willy@infradead.org> L: linux-fsdevel@vger.kernel.org S: Supported F: Documentation/core-api/xarray.rst -F: lib/idr.c -F: lib/xarray.c 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/xbox_remote.c 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 -S: Maintained F: drivers/media/tuners/tuner-xc2028.* XDP (eXpress Data Path) @@ -18428,13 +18425,13 @@ M: John Fastabend <john.fastabend@gmail.com> L: netdev@vger.kernel.org L: bpf@vger.kernel.org S: Supported -F: net/core/xdp.c F: include/net/xdp.h -F: kernel/bpf/devmap.c -F: kernel/bpf/cpumap.c F: include/trace/events/xdp.h -K: xdp +F: kernel/bpf/cpumap.c +F: kernel/bpf/devmap.c +F: net/core/xdp.c N: xdp +K: xdp XDP SOCKETS (AF_XDP) M: Björn Töpel <bjorn.topel@intel.com> @@ -18451,40 +18448,40 @@ M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> M: Roger Pau Monné <roger.pau@citrix.com> L: xen-devel@lists.xenproject.org (moderated for non-subscribers) S: Supported -F: drivers/block/xen-blkback/* 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/xen/ 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/xen/ 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) -T: git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git S: Supported -F: arch/x86/xen/ +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: arch/x86/include/asm/xen/ -F: arch/x86/include/asm/pvclock-abi.h -F: include/xen/ F: include/uapi/xen/ -F: Documentation/ABI/stable/sysfs-hypervisor-xen -F: Documentation/ABI/testing/sysfs-hypervisor-xen +F: include/xen/ XEN NETWORK BACKEND DRIVER M: Wei Liu <wei.liu@kernel.org> @@ -18510,6 +18507,13 @@ 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: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> L: xen-devel@lists.xenproject.org (moderated for non-subscribers) @@ -18518,22 +18522,15 @@ S: Supported F: arch/x86/xen/*swiotlb* F: drivers/xen/*swiotlb* -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/* - XFS FILESYSTEM M: Darrick J. Wong <darrick.wong@oracle.com> 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 -S: Supported -F: Documentation/admin-guide/xfs.rst F: Documentation/ABI/testing/sysfs-fs-xfs +F: Documentation/admin-guide/xfs.rst F: Documentation/filesystems/xfs-delayed-logging-design.txt F: Documentation/filesystems/xfs-self-describing-metadata.txt F: fs/xfs/ @@ -18553,6 +18550,17 @@ S: Maintained F: Documentation/devicetree/bindings/net/can/xilinx_can.txt F: drivers/net/can/xilinx_can.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 @@ -18563,23 +18571,12 @@ XILINX VIDEO IP CORES M: Hyun Kwon <hyun.kwon@xilinx.com> M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> L: linux-media@vger.kernel.org -T: git git://linuxtv.org/media_tree.git 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 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/xilinx_sdfec.c -F: drivers/misc/Kconfig -F: drivers/misc/Makefile -F: include/uapi/misc/xilinx_sdfec.h - XILLYBUS DRIVER M: Eli Billauer <eli.billauer@gmail.com> L: linux-kernel@vger.kernel.org @@ -18589,8 +18586,8 @@ F: drivers/char/xillybus/ XLP9XX I2C DRIVER M: George Cherian <gcherian@marvell.com> L: linux-i2c@vger.kernel.org -W: http://www.marvell.com S: Supported +W: http://www.marvell.com F: Documentation/devicetree/bindings/i2c/i2c-xlp9xx.txt F: drivers/i2c/busses/i2c-xlp9xx.c @@ -18618,10 +18615,10 @@ F: include/linux/yam.h YAMA SECURITY MODULE M: Kees Cook <keescook@chromium.org> -T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip S: Supported -F: security/yama/ +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> @@ -18632,10 +18629,10 @@ F: drivers/input/misc/yealink.* Z8530 DRIVER FOR AX.25 M: Joerg Reuter <jreuter@yaina.de> -W: http://yaina.de/jreuter/ -W: http://www.qsl.net/dl1bke/ L: linux-hams@vger.kernel.org S: Maintained +W: http://yaina.de/jreuter/ +W: http://www.qsl.net/dl1bke/ F: Documentation/networking/z8530drv.txt F: drivers/net/hamradio/*scc.c F: drivers/net/hamradio/z8530.h @@ -18645,34 +18642,34 @@ M: Seth Jennings <sjenning@redhat.com> M: Dan Streetman <ddstreet@ieee.org> L: linux-mm@kvack.org S: Maintained -F: mm/zbud.c F: include/linux/zbud.h +F: mm/zbud.c ZD1211RW WIRELESS DRIVER M: Daniel Drake <dsd@gentoo.org> M: Ulrich Kunitz <kune@deine-taler.de> -W: http://zd1211.ath.cx/wiki/DriverRewrite 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/ -S: Maintained 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/ -S: Maintained F: drivers/media/dvb-frontends/zd1301_demod* ZHAOXIN PROCESSOR SUPPORT @@ -18686,17 +18683,17 @@ 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 -T: git git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs.git S: Maintained -F: fs/zonefs/ +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: mm/zpool.c F: include/linux/zpool.h +F: mm/zpool.c ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER M: Minchan Kim <minchan@kernel.org> @@ -18704,8 +18701,8 @@ M: Nitin Gupta <ngupta@vflare.org> R: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> L: linux-kernel@vger.kernel.org S: Maintained -F: drivers/block/zram/ F: Documentation/admin-guide/blockdev/zram.rst +F: drivers/block/zram/ ZS DECSTATION Z85C30 SERIAL DRIVER M: "Maciej W. Rozycki" <macro@linux-mips.org> @@ -18718,9 +18715,9 @@ M: Nitin Gupta <ngupta@vflare.org> R: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> L: linux-mm@kvack.org S: Maintained -F: mm/zsmalloc.c -F: include/linux/zsmalloc.h F: Documentation/vm/zsmalloc.rst +F: include/linux/zsmalloc.h +F: mm/zsmalloc.c ZSWAP COMPRESSED SWAP CACHING M: Seth Jennings <sjenning@redhat.com> @@ -18733,8 +18730,8 @@ 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 -S: Buried alive in reporters F: * F: */ @@ -1,8 +1,8 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 -PATCHLEVEL = 6 +PATCHLEVEL = 7 SUBLEVEL = 0 -EXTRAVERSION = +EXTRAVERSION = -rc1 NAME = Kleptomaniac Octopus # *DOCUMENTATION* @@ -399,8 +399,13 @@ HOST_LFS_CFLAGS := $(shell getconf LFS_CFLAGS 2>/dev/null) HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null) HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null) -HOSTCC = gcc -HOSTCXX = g++ +ifneq ($(LLVM),) +HOSTCC = clang +HOSTCXX = clang++ +else +HOSTCC = gcc +HOSTCXX = g++ +endif KBUILD_HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) \ $(HOSTCFLAGS) @@ -409,16 +414,28 @@ KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS) KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS) # Make variables (CC, etc...) -LD = $(CROSS_COMPILE)ld -CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E +ifneq ($(LLVM),) +CC = clang +LD = ld.lld +AR = llvm-ar +NM = llvm-nm +OBJCOPY = llvm-objcopy +OBJDUMP = llvm-objdump +READELF = llvm-readelf +OBJSIZE = llvm-size +STRIP = llvm-strip +else +CC = $(CROSS_COMPILE)gcc +LD = $(CROSS_COMPILE)ld AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm -STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump -OBJSIZE = $(CROSS_COMPILE)size READELF = $(CROSS_COMPILE)readelf +OBJSIZE = $(CROSS_COMPILE)size +STRIP = $(CROSS_COMPILE)strip +endif PAHOLE = pahole LEX = flex YACC = bison @@ -538,7 +555,7 @@ endif ifneq ($(GCC_TOOLCHAIN),) CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN) endif -ifeq ($(if $(AS),$(shell $(AS) --version 2>&1 | head -n 1 | grep clang)),) +ifneq ($(LLVM_IAS),1) CLANG_FLAGS += -no-integrated-as endif CLANG_FLAGS += -Werror=unknown-warning-option @@ -747,8 +764,6 @@ ifdef CONFIG_CC_IS_CLANG KBUILD_CPPFLAGS += -Qunused-arguments KBUILD_CFLAGS += -Wno-format-invalid-specifier KBUILD_CFLAGS += -Wno-gnu -# Quiet clang warning: comparison of unsigned expression < 0 is always false -KBUILD_CFLAGS += -Wno-tautological-compare # CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the # source of a reference will be _MergedGlobals and not on of the whitelisted names. # See modpost pattern 2 @@ -1036,8 +1051,13 @@ init-y := $(patsubst %/, %/built-in.a, $(init-y)) core-y := $(patsubst %/, %/built-in.a, $(core-y)) drivers-y := $(patsubst %/, %/built-in.a, $(drivers-y)) net-y := $(patsubst %/, %/built-in.a, $(net-y)) +libs-y2 := $(patsubst %/, %/built-in.a, $(filter %/, $(libs-y))) +ifdef CONFIG_MODULES +libs-y1 := $(filter-out %/, $(libs-y)) +libs-y2 += $(patsubst %/, %/lib.a, $(filter %/, $(libs-y))) +else libs-y1 := $(patsubst %/, %/lib.a, $(libs-y)) -libs-y2 := $(patsubst %/, %/built-in.a, $(filter-out %.a, $(libs-y))) +endif virt-y := $(patsubst %/, %/built-in.a, $(virt-y)) # Externally visible symbols (used by link-vmlinux.sh) diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index cabdd8f4a248..e8e1c866e413 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -1450,7 +1450,8 @@ ENTRY(efi_enter_kernel) @ running beyond the PoU, and so calling cache_off below from @ inside the PE/COFF loader allocated region is unsafe unless @ we explicitly clean it to the PoC. - adr r0, call_cache_fn @ region of code we will + ARM( adrl r0, call_cache_fn ) + THUMB( adr r0, call_cache_fn ) @ region of code we will adr r1, 0f @ run with MMU off bl cache_clean_flush bl cache_off diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi index 47982889d774..98da446aa0f2 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi @@ -1039,13 +1039,13 @@ compatible = "fsl,imx6q-fec"; reg = <0x02188000 0x4000>; interrupt-names = "int0", "pps"; - interrupts-extended = - <&intc 0 118 IRQ_TYPE_LEVEL_HIGH>, - <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>, + <0 119 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clks IMX6QDL_CLK_ENET>, <&clks IMX6QDL_CLK_ENET>, <&clks IMX6QDL_CLK_ENET_REF>; clock-names = "ipg", "ahb", "ptp"; + gpr = <&gpr>; status = "disabled"; }; diff --git a/arch/arm/boot/dts/imx6qp.dtsi b/arch/arm/boot/dts/imx6qp.dtsi index 93b89dc1f53b..b310f13a53f2 100644 --- a/arch/arm/boot/dts/imx6qp.dtsi +++ b/arch/arm/boot/dts/imx6qp.dtsi @@ -77,7 +77,6 @@ }; &fec { - /delete-property/interrupts-extended; interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>, <0 119 IRQ_TYPE_LEVEL_HIGH>; }; diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c index cc29869d12a3..bf85d6db4931 100644 --- a/arch/arm/net/bpf_jit_32.c +++ b/arch/arm/net/bpf_jit_32.c @@ -929,7 +929,11 @@ static inline void emit_a32_rsh_i64(const s8 dst[], rd = arm_bpf_get_reg64(dst, tmp, ctx); /* Do LSR operation */ - if (val < 32) { + if (val == 0) { + /* An immediate value of 0 encodes a shift amount of 32 + * for LSR. To shift by 0, don't do anything. + */ + } else if (val < 32) { emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx); emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx); emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_LSR, val), ctx); @@ -955,7 +959,11 @@ static inline void emit_a32_arsh_i64(const s8 dst[], rd = arm_bpf_get_reg64(dst, tmp, ctx); /* Do ARSH operation */ - if (val < 32) { + if (val == 0) { + /* An immediate value of 0 encodes a shift amount of 32 + * for ASR. To shift by 0, don't do anything. + */ + } else if (val < 32) { emit(ARM_MOV_SI(tmp2[1], rd[1], SRTYPE_LSR, val), ctx); emit(ARM_ORR_SI(rd[1], tmp2[1], rd[0], SRTYPE_ASL, 32 - val), ctx); emit(ARM_MOV_SI(rd[0], rd[0], SRTYPE_ASR, val), ctx); @@ -992,21 +1000,35 @@ static inline void emit_a32_mul_r64(const s8 dst[], const s8 src[], arm_bpf_put_reg32(dst_hi, rd[0], ctx); } +static bool is_ldst_imm(s16 off, const u8 size) +{ + s16 off_max = 0; + + switch (size) { + case BPF_B: + case BPF_W: + off_max = 0xfff; + break; + case BPF_H: + off_max = 0xff; + break; + case BPF_DW: + /* Need to make sure off+4 does not overflow. */ + off_max = 0xfff - 4; + break; + } + return -off_max <= off && off <= off_max; +} + /* *(size *)(dst + off) = src */ static inline void emit_str_r(const s8 dst, const s8 src[], - s32 off, struct jit_ctx *ctx, const u8 sz){ + s16 off, struct jit_ctx *ctx, const u8 sz){ const s8 *tmp = bpf2a32[TMP_REG_1]; - s32 off_max; s8 rd; rd = arm_bpf_get_reg32(dst, tmp[1], ctx); - if (sz == BPF_H) - off_max = 0xff; - else - off_max = 0xfff; - - if (off < 0 || off > off_max) { + if (!is_ldst_imm(off, sz)) { emit_a32_mov_i(tmp[0], off, ctx); emit(ARM_ADD_R(tmp[0], tmp[0], rd), ctx); rd = tmp[0]; @@ -1035,18 +1057,12 @@ static inline void emit_str_r(const s8 dst, const s8 src[], /* dst = *(size*)(src + off) */ static inline void emit_ldx_r(const s8 dst[], const s8 src, - s32 off, struct jit_ctx *ctx, const u8 sz){ + s16 off, struct jit_ctx *ctx, const u8 sz){ const s8 *tmp = bpf2a32[TMP_REG_1]; const s8 *rd = is_stacked(dst_lo) ? tmp : dst; s8 rm = src; - s32 off_max; - - if (sz == BPF_H) - off_max = 0xff; - else - off_max = 0xfff; - if (off < 0 || off > off_max) { + if (!is_ldst_imm(off, sz)) { emit_a32_mov_i(tmp[0], off, ctx); emit(ARM_ADD_R(tmp[0], tmp[0], src), ctx); rm = tmp[0]; diff --git a/arch/h8300/include/uapi/asm/bitsperlong.h b/arch/h8300/include/uapi/asm/bitsperlong.h deleted file mode 100644 index a33e358f1c1b..000000000000 --- a/arch/h8300/include/uapi/asm/bitsperlong.h +++ /dev/null @@ -1,15 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#ifndef _UAPI__ASM_H8300_BITS_PER_LONG -#define _UAPI__ASM_H8300_BITS_PER_LONG - -#include <asm-generic/bitsperlong.h> - -#if !defined(__ASSEMBLY__) -/* h8300-unknown-linux required long */ -#define __kernel_size_t __kernel_size_t -typedef unsigned long __kernel_size_t; -typedef long __kernel_ssize_t; -typedef long __kernel_ptrdiff_t; -#endif - -#endif /* _UAPI__ASM_H8300_BITS_PER_LONG */ diff --git a/arch/h8300/include/uapi/asm/posix_types.h b/arch/h8300/include/uapi/asm/posix_types.h new file mode 100644 index 000000000000..3efc9dd59476 --- /dev/null +++ b/arch/h8300/include/uapi/asm/posix_types.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ +#ifndef _UAPI_ASM_POSIX_TYPES_H +#define _UAPI_ASM_POSIX_TYPES_H + +/* h8300-unknown-linux required long */ +#define __kernel_size_t __kernel_size_t +typedef unsigned long __kernel_size_t; +typedef long __kernel_ssize_t; +typedef long __kernel_ptrdiff_t; + +#include <asm-generic/posix_types.h> + +#endif /* _UAPI_ASM_POSIX_TYPES_H */ diff --git a/arch/m68k/include/asm/Kbuild b/arch/m68k/include/asm/Kbuild index a0765aa60ea9..1bff55aa2d54 100644 --- a/arch/m68k/include/asm/Kbuild +++ b/arch/m68k/include/asm/Kbuild @@ -1,7 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 generated-y += syscall_table.h generic-y += extable.h -generic-y += hardirq.h generic-y += kvm_para.h generic-y += local64.h generic-y += mcs_spinlock.h diff --git a/arch/mips/fw/arc/memory.c b/arch/mips/fw/arc/memory.c index dbbcddc82823..89fa6e62a3b3 100644 --- a/arch/mips/fw/arc/memory.c +++ b/arch/mips/fw/arc/memory.c @@ -117,7 +117,7 @@ static int __init prom_memtype_classify(union linux_memtypes type) return memtype_classify_arc(type); } -void __init prom_meminit(void) +void __weak __init prom_meminit(void) { struct linux_mdesc *p; @@ -162,7 +162,7 @@ void __weak __init prom_cleanup(void) { } -void __init prom_free_prom_memory(void) +void __weak __init prom_free_prom_memory(void) { int i; diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig index 2fc4ed210b5f..c6645141bb2a 100644 --- a/arch/nios2/Kconfig +++ b/arch/nios2/Kconfig @@ -7,6 +7,7 @@ config NIOS2 select ARCH_HAS_SYNC_DMA_FOR_DEVICE select ARCH_HAS_DMA_SET_UNCACHED select ARCH_NO_SWAP + select COMMON_CLK select TIMER_OF select GENERIC_ATOMIC64 select GENERIC_CLOCKEVENTS diff --git a/arch/nios2/boot/dts/10m50_devboard.dts b/arch/nios2/boot/dts/10m50_devboard.dts index 5e4ab032c1e8..56339bef3247 100644 --- a/arch/nios2/boot/dts/10m50_devboard.dts +++ b/arch/nios2/boot/dts/10m50_devboard.dts @@ -179,8 +179,7 @@ led_pio: gpio@180014d0 { compatible = "altr,pio-1.0"; reg = <0x180014d0 0x00000010>; - altr,gpio-bank-width = <4>; - resetvalue = <15>; + altr,ngpio = <4>; #gpio-cells = <2>; gpio-controller; }; @@ -190,11 +189,10 @@ reg = <0x180014c0 0x00000010>; interrupt-parent = <&cpu>; interrupts = <6>; - altr,gpio-bank-width = <3>; + altr,ngpio = <3>; altr,interrupt-type = <2>; edge_type = <1>; level_trigger = <0>; - resetvalue = <0>; #gpio-cells = <2>; gpio-controller; }; diff --git a/arch/nios2/platform/platform.c b/arch/nios2/platform/platform.c index 2a35154ca153..9737a87121fa 100644 --- a/arch/nios2/platform/platform.c +++ b/arch/nios2/platform/platform.c @@ -15,6 +15,12 @@ #include <linux/slab.h> #include <linux/sys_soc.h> #include <linux/io.h> +#include <linux/clk-provider.h> + +static const struct of_device_id clk_match[] __initconst = { + { .compatible = "fixed-clock", .data = of_fixed_clk_setup, }, + {} +}; static int __init nios2_soc_device_init(void) { @@ -38,6 +44,8 @@ static int __init nios2_soc_device_init(void) } } + of_clk_init(clk_match); + return 0; } diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index a197258595ef..62f7bfeb709e 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -55,7 +55,7 @@ config RISCV select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_MMIOWB select ARCH_HAS_DEBUG_VIRTUAL - select HAVE_EBPF_JIT + select HAVE_EBPF_JIT if MMU select EDAC_SUPPORT select ARCH_HAS_GIGANTIC_PAGE select ARCH_HAS_SET_DIRECT_MAP diff --git a/arch/riscv/net/bpf_jit_comp64.c b/arch/riscv/net/bpf_jit_comp64.c index cc1985d8750a..d208a9fd6c52 100644 --- a/arch/riscv/net/bpf_jit_comp64.c +++ b/arch/riscv/net/bpf_jit_comp64.c @@ -110,6 +110,16 @@ static bool is_32b_int(s64 val) return -(1L << 31) <= val && val < (1L << 31); } +static bool in_auipc_jalr_range(s64 val) +{ + /* + * auipc+jalr can reach any signed PC-relative offset in the range + * [-2^31 - 2^11, 2^31 - 2^11). + */ + return (-(1L << 31) - (1L << 11)) <= val && + val < ((1L << 31) - (1L << 11)); +} + static void emit_imm(u8 rd, s64 val, struct rv_jit_context *ctx) { /* Note that the immediate from the add is sign-extended, @@ -380,20 +390,24 @@ static void emit_sext_32_rd(u8 *rd, struct rv_jit_context *ctx) *rd = RV_REG_T2; } -static void emit_jump_and_link(u8 rd, s64 rvoff, bool force_jalr, - struct rv_jit_context *ctx) +static int emit_jump_and_link(u8 rd, s64 rvoff, bool force_jalr, + struct rv_jit_context *ctx) { s64 upper, lower; if (rvoff && is_21b_int(rvoff) && !force_jalr) { emit(rv_jal(rd, rvoff >> 1), ctx); - return; + return 0; + } else if (in_auipc_jalr_range(rvoff)) { + upper = (rvoff + (1 << 11)) >> 12; + lower = rvoff & 0xfff; + emit(rv_auipc(RV_REG_T1, upper), ctx); + emit(rv_jalr(rd, RV_REG_T1, lower), ctx); + return 0; } - upper = (rvoff + (1 << 11)) >> 12; - lower = rvoff & 0xfff; - emit(rv_auipc(RV_REG_T1, upper), ctx); - emit(rv_jalr(rd, RV_REG_T1, lower), ctx); + pr_err("bpf-jit: target offset 0x%llx is out of range\n", rvoff); + return -ERANGE; } static bool is_signed_bpf_cond(u8 cond) @@ -407,18 +421,16 @@ static int emit_call(bool fixed, u64 addr, struct rv_jit_context *ctx) s64 off = 0; u64 ip; u8 rd; + int ret; if (addr && ctx->insns) { ip = (u64)(long)(ctx->insns + ctx->ninsns); off = addr - ip; - if (!is_32b_int(off)) { - pr_err("bpf-jit: target call addr %pK is out of range\n", - (void *)addr); - return -ERANGE; - } } - emit_jump_and_link(RV_REG_RA, off, !fixed, ctx); + ret = emit_jump_and_link(RV_REG_RA, off, !fixed, ctx); + if (ret) + return ret; rd = bpf_to_rv_reg(BPF_REG_0, ctx); emit(rv_addi(rd, RV_REG_A0, 0), ctx); return 0; @@ -429,7 +441,7 @@ int bpf_jit_emit_insn(const struct bpf_insn *insn, struct rv_jit_context *ctx, { bool is64 = BPF_CLASS(insn->code) == BPF_ALU64 || BPF_CLASS(insn->code) == BPF_JMP; - int s, e, rvoff, i = insn - ctx->prog->insnsi; + int s, e, rvoff, ret, i = insn - ctx->prog->insnsi; struct bpf_prog_aux *aux = ctx->prog->aux; u8 rd = -1, rs = -1, code = insn->code; s16 off = insn->off; @@ -699,7 +711,9 @@ out_be: /* JUMP off */ case BPF_JMP | BPF_JA: rvoff = rv_offset(i, off, ctx); - emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); + ret = emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); + if (ret) + return ret; break; /* IF (dst COND src) JUMP off */ @@ -801,7 +815,6 @@ out_be: case BPF_JMP | BPF_CALL: { bool fixed; - int ret; u64 addr; mark_call(ctx); @@ -826,7 +839,9 @@ out_be: break; rvoff = epilogue_offset(ctx); - emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); + ret = emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); + if (ret) + return ret; break; /* dst = imm64 */ diff --git a/arch/sh/include/asm/bitops-op32.h b/arch/sh/include/asm/bitops-op32.h index 466880362ad1..cfe5465acce7 100644 --- a/arch/sh/include/asm/bitops-op32.h +++ b/arch/sh/include/asm/bitops-op32.h @@ -16,11 +16,9 @@ #define BYTE_OFFSET(nr) ((nr) % BITS_PER_BYTE) #endif -#define IS_IMMEDIATE(nr) (__builtin_constant_p(nr)) - static inline void __set_bit(int nr, volatile unsigned long *addr) { - if (IS_IMMEDIATE(nr)) { + if (__builtin_constant_p(nr)) { __asm__ __volatile__ ( "bset.b %1, @(%O2,%0) ! __set_bit\n\t" : "+r" (addr) @@ -37,7 +35,7 @@ static inline void __set_bit(int nr, volatile unsigned long *addr) static inline void __clear_bit(int nr, volatile unsigned long *addr) { - if (IS_IMMEDIATE(nr)) { + if (__builtin_constant_p(nr)) { __asm__ __volatile__ ( "bclr.b %1, @(%O2,%0) ! __clear_bit\n\t" : "+r" (addr) @@ -64,7 +62,7 @@ static inline void __clear_bit(int nr, volatile unsigned long *addr) */ static inline void __change_bit(int nr, volatile unsigned long *addr) { - if (IS_IMMEDIATE(nr)) { + if (__builtin_constant_p(nr)) { __asm__ __volatile__ ( "bxor.b %1, @(%O2,%0) ! __change_bit\n\t" : "+r" (addr) diff --git a/arch/sh/include/uapi/asm/setup.h b/arch/sh/include/uapi/asm/setup.h deleted file mode 100644 index 4bd19f80f9b0..000000000000 --- a/arch/sh/include/uapi/asm/setup.h +++ /dev/null @@ -1,2 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#include <asm-generic/setup.h> diff --git a/arch/sh/include/uapi/asm/types.h b/arch/sh/include/uapi/asm/types.h deleted file mode 100644 index 68100e108ea6..000000000000 --- a/arch/sh/include/uapi/asm/types.h +++ /dev/null @@ -1,2 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -#include <asm-generic/types.h> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 0163d764ade4..1d6104ea8af0 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -2932,3 +2932,5 @@ config HAVE_ATOMIC_IOMAP source "drivers/firmware/Kconfig" source "arch/x86/kvm/Kconfig" + +source "arch/x86/Kconfig.assembler" diff --git a/arch/x86/Kconfig.assembler b/arch/x86/Kconfig.assembler new file mode 100644 index 000000000000..13de0db38d4e --- /dev/null +++ b/arch/x86/Kconfig.assembler @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. + +config AS_AVX512 + def_bool $(as-instr,vpmovm2b %k1$(comma)%zmm5) + help + Supported by binutils >= 2.25 and LLVM integrated assembler + +config AS_SHA1_NI + def_bool $(as-instr,sha1msg1 %xmm0$(comma)%xmm1) + help + Supported by binutils >= 2.24 and LLVM integrated assembler + +config AS_SHA256_NI + def_bool $(as-instr,sha256msg1 %xmm0$(comma)%xmm1) + help + Supported by binutils >= 2.24 and LLVM integrated assembler diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 513a55562d75..b65ec63c7db7 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -177,28 +177,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -# Stackpointer is addressed different for 32 bit and 64 bit x86 -sp-$(CONFIG_X86_32) := esp -sp-$(CONFIG_X86_64) := rsp - -# do binutils support CFI? -cfi := $(call as-instr,.cfi_startproc\n.cfi_rel_offset $(sp-y)$(comma)0\n.cfi_endproc,-DCONFIG_AS_CFI=1) -# is .cfi_signal_frame supported too? -cfi-sigframe := $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1) -cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1) - -# does binutils support specific instructions? -asinstr += $(call as-instr,pshufb %xmm0$(comma)%xmm0,-DCONFIG_AS_SSSE3=1) -avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1) -avx2_instr :=$(call as-instr,vpbroadcastb %xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1) -avx512_instr :=$(call as-instr,vpmovm2b %k1$(comma)%zmm5,-DCONFIG_AS_AVX512=1) -sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI=1) -sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) -adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) - -KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) - KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE) # diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile index 8c2e9eadee8a..a31de0c6ccde 100644 --- a/arch/x86/crypto/Makefile +++ b/arch/x86/crypto/Makefile @@ -1,131 +1,97 @@ # SPDX-License-Identifier: GPL-2.0 # -# Arch-specific CryptoAPI modules. -# +# x86 crypto algorithms OBJECT_FILES_NON_STANDARD := y -avx_supported := $(call as-instr,vpxor %xmm0$(comma)%xmm0$(comma)%xmm0,yes,no) -avx2_supported := $(call as-instr,vpgatherdd %ymm0$(comma)(%eax$(comma)%ymm1\ - $(comma)4)$(comma)%ymm2,yes,no) -avx512_supported :=$(call as-instr,vpmovm2b %k1$(comma)%zmm5,yes,no) -sha1_ni_supported :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,yes,no) -sha256_ni_supported :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,yes,no) -adx_supported := $(call as-instr,adox %r10$(comma)%r10,yes,no) - obj-$(CONFIG_CRYPTO_GLUE_HELPER_X86) += glue_helper.o obj-$(CONFIG_CRYPTO_TWOFISH_586) += twofish-i586.o +twofish-i586-y := twofish-i586-asm_32.o twofish_glue.o +obj-$(CONFIG_CRYPTO_TWOFISH_X86_64) += twofish-x86_64.o +twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o +obj-$(CONFIG_CRYPTO_TWOFISH_X86_64_3WAY) += twofish-x86_64-3way.o +twofish-x86_64-3way-y := twofish-x86_64-asm_64-3way.o twofish_glue_3way.o +obj-$(CONFIG_CRYPTO_TWOFISH_AVX_X86_64) += twofish-avx-x86_64.o +twofish-avx-x86_64-y := twofish-avx-x86_64-asm_64.o twofish_avx_glue.o + obj-$(CONFIG_CRYPTO_SERPENT_SSE2_586) += serpent-sse2-i586.o +serpent-sse2-i586-y := serpent-sse2-i586-asm_32.o serpent_sse2_glue.o +obj-$(CONFIG_CRYPTO_SERPENT_SSE2_X86_64) += serpent-sse2-x86_64.o +serpent-sse2-x86_64-y := serpent-sse2-x86_64-asm_64.o serpent_sse2_glue.o +obj-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o +serpent-avx-x86_64-y := serpent-avx-x86_64-asm_64.o serpent_avx_glue.o +obj-$(CONFIG_CRYPTO_SERPENT_AVX2_X86_64) += serpent-avx2.o +serpent-avx2-y := serpent-avx2-asm_64.o serpent_avx2_glue.o obj-$(CONFIG_CRYPTO_DES3_EDE_X86_64) += des3_ede-x86_64.o +des3_ede-x86_64-y := des3_ede-asm_64.o des3_ede_glue.o + obj-$(CONFIG_CRYPTO_CAMELLIA_X86_64) += camellia-x86_64.o +camellia-x86_64-y := camellia-x86_64-asm_64.o camellia_glue.o +obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64) += camellia-aesni-avx-x86_64.o +camellia-aesni-avx-x86_64-y := camellia-aesni-avx-asm_64.o camellia_aesni_avx_glue.o +obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64) += camellia-aesni-avx2.o +camellia-aesni-avx2-y := camellia-aesni-avx2-asm_64.o camellia_aesni_avx2_glue.o + obj-$(CONFIG_CRYPTO_BLOWFISH_X86_64) += blowfish-x86_64.o -obj-$(CONFIG_CRYPTO_TWOFISH_X86_64) += twofish-x86_64.o -obj-$(CONFIG_CRYPTO_TWOFISH_X86_64_3WAY) += twofish-x86_64-3way.o -obj-$(CONFIG_CRYPTO_CHACHA20_X86_64) += chacha-x86_64.o -obj-$(CONFIG_CRYPTO_SERPENT_SSE2_X86_64) += serpent-sse2-x86_64.o -obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o -obj-$(CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL) += ghash-clmulni-intel.o +blowfish-x86_64-y := blowfish-x86_64-asm_64.o blowfish_glue.o -obj-$(CONFIG_CRYPTO_CRC32C_INTEL) += crc32c-intel.o -obj-$(CONFIG_CRYPTO_SHA1_SSSE3) += sha1-ssse3.o -obj-$(CONFIG_CRYPTO_CRC32_PCLMUL) += crc32-pclmul.o -obj-$(CONFIG_CRYPTO_SHA256_SSSE3) += sha256-ssse3.o -obj-$(CONFIG_CRYPTO_SHA512_SSSE3) += sha512-ssse3.o -obj-$(CONFIG_CRYPTO_CRCT10DIF_PCLMUL) += crct10dif-pclmul.o -obj-$(CONFIG_CRYPTO_POLY1305_X86_64) += poly1305-x86_64.o +obj-$(CONFIG_CRYPTO_CAST5_AVX_X86_64) += cast5-avx-x86_64.o +cast5-avx-x86_64-y := cast5-avx-x86_64-asm_64.o cast5_avx_glue.o + +obj-$(CONFIG_CRYPTO_CAST6_AVX_X86_64) += cast6-avx-x86_64.o +cast6-avx-x86_64-y := cast6-avx-x86_64-asm_64.o cast6_avx_glue.o obj-$(CONFIG_CRYPTO_AEGIS128_AESNI_SSE2) += aegis128-aesni.o +aegis128-aesni-y := aegis128-aesni-asm.o aegis128-aesni-glue.o -obj-$(CONFIG_CRYPTO_NHPOLY1305_SSE2) += nhpoly1305-sse2.o -obj-$(CONFIG_CRYPTO_NHPOLY1305_AVX2) += nhpoly1305-avx2.o +obj-$(CONFIG_CRYPTO_CHACHA20_X86_64) += chacha-x86_64.o +chacha-x86_64-y := chacha-avx2-x86_64.o chacha-ssse3-x86_64.o chacha_glue.o +chacha-x86_64-$(CONFIG_AS_AVX512) += chacha-avx512vl-x86_64.o -# These modules require the assembler to support ADX. -ifeq ($(adx_supported),yes) - obj-$(CONFIG_CRYPTO_CURVE25519_X86) += curve25519-x86_64.o -endif - -# These modules require assembler to support AVX. -ifeq ($(avx_supported),yes) - obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64) += \ - camellia-aesni-avx-x86_64.o - obj-$(CONFIG_CRYPTO_CAST5_AVX_X86_64) += cast5-avx-x86_64.o - obj-$(CONFIG_CRYPTO_CAST6_AVX_X86_64) += cast6-avx-x86_64.o - obj-$(CONFIG_CRYPTO_TWOFISH_AVX_X86_64) += twofish-avx-x86_64.o - obj-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o - obj-$(CONFIG_CRYPTO_BLAKE2S_X86) += blake2s-x86_64.o -endif - -# These modules require assembler to support AVX2. -ifeq ($(avx2_supported),yes) - obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64) += camellia-aesni-avx2.o - obj-$(CONFIG_CRYPTO_SERPENT_AVX2_X86_64) += serpent-avx2.o -endif +obj-$(CONFIG_CRYPTO_AES_NI_INTEL) += aesni-intel.o +aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o +aesni-intel-$(CONFIG_64BIT) += aesni-intel_avx-x86_64.o aes_ctrby8_avx-x86_64.o -twofish-i586-y := twofish-i586-asm_32.o twofish_glue.o -serpent-sse2-i586-y := serpent-sse2-i586-asm_32.o serpent_sse2_glue.o +obj-$(CONFIG_CRYPTO_SHA1_SSSE3) += sha1-ssse3.o +sha1-ssse3-y := sha1_avx2_x86_64_asm.o sha1_ssse3_asm.o sha1_ssse3_glue.o +sha1-ssse3-$(CONFIG_AS_SHA1_NI) += sha1_ni_asm.o -des3_ede-x86_64-y := des3_ede-asm_64.o des3_ede_glue.o -camellia-x86_64-y := camellia-x86_64-asm_64.o camellia_glue.o -blowfish-x86_64-y := blowfish-x86_64-asm_64.o blowfish_glue.o -twofish-x86_64-y := twofish-x86_64-asm_64.o twofish_glue.o -twofish-x86_64-3way-y := twofish-x86_64-asm_64-3way.o twofish_glue_3way.o -chacha-x86_64-y := chacha-ssse3-x86_64.o chacha_glue.o -serpent-sse2-x86_64-y := serpent-sse2-x86_64-asm_64.o serpent_sse2_glue.o +obj-$(CONFIG_CRYPTO_SHA256_SSSE3) += sha256-ssse3.o +sha256-ssse3-y := sha256-ssse3-asm.o sha256-avx-asm.o sha256-avx2-asm.o sha256_ssse3_glue.o +sha256-ssse3-$(CONFIG_AS_SHA256_NI) += sha256_ni_asm.o -aegis128-aesni-y := aegis128-aesni-asm.o aegis128-aesni-glue.o +obj-$(CONFIG_CRYPTO_SHA512_SSSE3) += sha512-ssse3.o +sha512-ssse3-y := sha512-ssse3-asm.o sha512-avx-asm.o sha512-avx2-asm.o sha512_ssse3_glue.o -nhpoly1305-sse2-y := nh-sse2-x86_64.o nhpoly1305-sse2-glue.o +obj-$(CONFIG_CRYPTO_BLAKE2S_X86) += blake2s-x86_64.o blake2s-x86_64-y := blake2s-core.o blake2s-glue.o -poly1305-x86_64-y := poly1305-x86_64-cryptogams.o poly1305_glue.o -ifneq ($(CONFIG_CRYPTO_POLY1305_X86_64),) -targets += poly1305-x86_64-cryptogams.S -endif - -ifeq ($(avx_supported),yes) - camellia-aesni-avx-x86_64-y := camellia-aesni-avx-asm_64.o \ - camellia_aesni_avx_glue.o - cast5-avx-x86_64-y := cast5-avx-x86_64-asm_64.o cast5_avx_glue.o - cast6-avx-x86_64-y := cast6-avx-x86_64-asm_64.o cast6_avx_glue.o - twofish-avx-x86_64-y := twofish-avx-x86_64-asm_64.o \ - twofish_avx_glue.o - serpent-avx-x86_64-y := serpent-avx-x86_64-asm_64.o \ - serpent_avx_glue.o -endif - -ifeq ($(avx2_supported),yes) - camellia-aesni-avx2-y := camellia-aesni-avx2-asm_64.o camellia_aesni_avx2_glue.o - chacha-x86_64-y += chacha-avx2-x86_64.o - serpent-avx2-y := serpent-avx2-asm_64.o serpent_avx2_glue.o - - nhpoly1305-avx2-y := nh-avx2-x86_64.o nhpoly1305-avx2-glue.o -endif - -ifeq ($(avx512_supported),yes) - chacha-x86_64-y += chacha-avx512vl-x86_64.o -endif -aesni-intel-y := aesni-intel_asm.o aesni-intel_glue.o -aesni-intel-$(CONFIG_64BIT) += aesni-intel_avx-x86_64.o aes_ctrby8_avx-x86_64.o +obj-$(CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL) += ghash-clmulni-intel.o ghash-clmulni-intel-y := ghash-clmulni-intel_asm.o ghash-clmulni-intel_glue.o -sha1-ssse3-y := sha1_ssse3_asm.o sha1_ssse3_glue.o -ifeq ($(avx2_supported),yes) -sha1-ssse3-y += sha1_avx2_x86_64_asm.o -endif -ifeq ($(sha1_ni_supported),yes) -sha1-ssse3-y += sha1_ni_asm.o -endif + +obj-$(CONFIG_CRYPTO_CRC32C_INTEL) += crc32c-intel.o crc32c-intel-y := crc32c-intel_glue.o crc32c-intel-$(CONFIG_64BIT) += crc32c-pcl-intel-asm_64.o + +obj-$(CONFIG_CRYPTO_CRC32_PCLMUL) += crc32-pclmul.o crc32-pclmul-y := crc32-pclmul_asm.o crc32-pclmul_glue.o -sha256-ssse3-y := sha256-ssse3-asm.o sha256-avx-asm.o sha256-avx2-asm.o sha256_ssse3_glue.o -ifeq ($(sha256_ni_supported),yes) -sha256-ssse3-y += sha256_ni_asm.o -endif -sha512-ssse3-y := sha512-ssse3-asm.o sha512-avx-asm.o sha512-avx2-asm.o sha512_ssse3_glue.o + +obj-$(CONFIG_CRYPTO_CRCT10DIF_PCLMUL) += crct10dif-pclmul.o crct10dif-pclmul-y := crct10dif-pcl-asm_64.o crct10dif-pclmul_glue.o +obj-$(CONFIG_CRYPTO_POLY1305_X86_64) += poly1305-x86_64.o +poly1305-x86_64-y := poly1305-x86_64-cryptogams.o poly1305_glue.o +targets += poly1305-x86_64-cryptogams.S + +obj-$(CONFIG_CRYPTO_NHPOLY1305_SSE2) += nhpoly1305-sse2.o +nhpoly1305-sse2-y := nh-sse2-x86_64.o nhpoly1305-sse2-glue.o +obj-$(CONFIG_CRYPTO_NHPOLY1305_AVX2) += nhpoly1305-avx2.o +nhpoly1305-avx2-y := nh-avx2-x86_64.o nhpoly1305-avx2-glue.o + +obj-$(CONFIG_CRYPTO_CURVE25519_X86) += curve25519-x86_64.o + quiet_cmd_perlasm = PERLASM $@ cmd_perlasm = $(PERL) $< > $@ $(obj)/%.S: $(src)/%.pl FORCE diff --git a/arch/x86/crypto/aesni-intel_avx-x86_64.S b/arch/x86/crypto/aesni-intel_avx-x86_64.S index bfa1c0b3e5b4..0cea33295287 100644 --- a/arch/x86/crypto/aesni-intel_avx-x86_64.S +++ b/arch/x86/crypto/aesni-intel_avx-x86_64.S @@ -886,7 +886,6 @@ _less_than_8_bytes_left_\@: _partial_block_done_\@: .endm # PARTIAL_BLOCK -#ifdef CONFIG_AS_AVX ############################################################################### # GHASH_MUL MACRO to implement: Data*HashKey mod (128,127,126,121,0) # Input: A and B (128-bits each, bit-reflected) @@ -1869,9 +1868,6 @@ key_256_finalize: ret SYM_FUNC_END(aesni_gcm_finalize_avx_gen2) -#endif /* CONFIG_AS_AVX */ - -#ifdef CONFIG_AS_AVX2 ############################################################################### # GHASH_MUL MACRO to implement: Data*HashKey mod (128,127,126,121,0) # Input: A and B (128-bits each, bit-reflected) @@ -2839,5 +2835,3 @@ key_256_finalize4: FUNC_RESTORE ret SYM_FUNC_END(aesni_gcm_finalize_avx_gen4) - -#endif /* CONFIG_AS_AVX2 */ diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c index 75b6ea20491e..ad8a7188a2bf 100644 --- a/arch/x86/crypto/aesni-intel_glue.c +++ b/arch/x86/crypto/aesni-intel_glue.c @@ -185,7 +185,6 @@ static const struct aesni_gcm_tfm_s aesni_gcm_tfm_sse = { .finalize = &aesni_gcm_finalize, }; -#ifdef CONFIG_AS_AVX asmlinkage void aes_ctr_enc_128_avx_by8(const u8 *in, u8 *iv, void *keys, u8 *out, unsigned int num_bytes); asmlinkage void aes_ctr_enc_192_avx_by8(const u8 *in, u8 *iv, @@ -234,9 +233,6 @@ static const struct aesni_gcm_tfm_s aesni_gcm_tfm_avx_gen2 = { .finalize = &aesni_gcm_finalize_avx_gen2, }; -#endif - -#ifdef CONFIG_AS_AVX2 /* * asmlinkage void aesni_gcm_init_avx_gen4() * gcm_data *my_ctx_data, context data @@ -279,8 +275,6 @@ static const struct aesni_gcm_tfm_s aesni_gcm_tfm_avx_gen4 = { .finalize = &aesni_gcm_finalize_avx_gen4, }; -#endif - static inline struct aesni_rfc4106_gcm_ctx *aesni_rfc4106_gcm_ctx_get(struct crypto_aead *tfm) { @@ -476,7 +470,6 @@ static void ctr_crypt_final(struct crypto_aes_ctx *ctx, crypto_inc(ctrblk, AES_BLOCK_SIZE); } -#ifdef CONFIG_AS_AVX static void aesni_ctr_enc_avx_tfm(struct crypto_aes_ctx *ctx, u8 *out, const u8 *in, unsigned int len, u8 *iv) { @@ -493,7 +486,6 @@ static void aesni_ctr_enc_avx_tfm(struct crypto_aes_ctx *ctx, u8 *out, else aes_ctr_enc_256_avx_by8(in, iv, (void *)ctx, out, len); } -#endif static int ctr_crypt(struct skcipher_request *req) { @@ -711,14 +703,10 @@ static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req, if (!enc) left -= auth_tag_len; -#ifdef CONFIG_AS_AVX2 if (left < AVX_GEN4_OPTSIZE && gcm_tfm == &aesni_gcm_tfm_avx_gen4) gcm_tfm = &aesni_gcm_tfm_avx_gen2; -#endif -#ifdef CONFIG_AS_AVX if (left < AVX_GEN2_OPTSIZE && gcm_tfm == &aesni_gcm_tfm_avx_gen2) gcm_tfm = &aesni_gcm_tfm_sse; -#endif /* Linearize assoc, if not already linear */ if (req->src->length >= assoclen && req->src->length && @@ -1076,31 +1064,24 @@ static int __init aesni_init(void) if (!x86_match_cpu(aesni_cpu_id)) return -ENODEV; #ifdef CONFIG_X86_64 -#ifdef CONFIG_AS_AVX2 if (boot_cpu_has(X86_FEATURE_AVX2)) { pr_info("AVX2 version of gcm_enc/dec engaged.\n"); aesni_gcm_tfm = &aesni_gcm_tfm_avx_gen4; } else -#endif -#ifdef CONFIG_AS_AVX if (boot_cpu_has(X86_FEATURE_AVX)) { pr_info("AVX version of gcm_enc/dec engaged.\n"); aesni_gcm_tfm = &aesni_gcm_tfm_avx_gen2; - } else -#endif - { + } else { pr_info("SSE version of gcm_enc/dec engaged.\n"); aesni_gcm_tfm = &aesni_gcm_tfm_sse; } aesni_ctr_enc_tfm = aesni_ctr_enc; -#ifdef CONFIG_AS_AVX if (boot_cpu_has(X86_FEATURE_AVX)) { /* optimize performance of ctr mode encryption transform */ aesni_ctr_enc_tfm = aesni_ctr_enc_avx_tfm; pr_info("AES CTR mode by8 optimization enabled\n"); } #endif -#endif err = crypto_register_alg(&aesni_cipher_alg); if (err) diff --git a/arch/x86/crypto/blake2s-core.S b/arch/x86/crypto/blake2s-core.S index 24910b766bdd..2ca79974f819 100644 --- a/arch/x86/crypto/blake2s-core.S +++ b/arch/x86/crypto/blake2s-core.S @@ -46,7 +46,6 @@ SIGMA2: #endif /* CONFIG_AS_AVX512 */ .text -#ifdef CONFIG_AS_SSSE3 SYM_FUNC_START(blake2s_compress_ssse3) testq %rdx,%rdx je .Lendofloop @@ -174,7 +173,6 @@ SYM_FUNC_START(blake2s_compress_ssse3) .Lendofloop: ret SYM_FUNC_END(blake2s_compress_ssse3) -#endif /* CONFIG_AS_SSSE3 */ #ifdef CONFIG_AS_AVX512 SYM_FUNC_START(blake2s_compress_avx512) diff --git a/arch/x86/crypto/chacha_glue.c b/arch/x86/crypto/chacha_glue.c index 68a74953efaf..b412c21ee06e 100644 --- a/arch/x86/crypto/chacha_glue.c +++ b/arch/x86/crypto/chacha_glue.c @@ -79,8 +79,7 @@ static void chacha_dosimd(u32 *state, u8 *dst, const u8 *src, } } - if (IS_ENABLED(CONFIG_AS_AVX2) && - static_branch_likely(&chacha_use_avx2)) { + if (static_branch_likely(&chacha_use_avx2)) { while (bytes >= CHACHA_BLOCK_SIZE * 8) { chacha_8block_xor_avx2(state, dst, src, bytes, nrounds); bytes -= CHACHA_BLOCK_SIZE * 8; @@ -288,8 +287,7 @@ static int __init chacha_simd_mod_init(void) static_branch_enable(&chacha_use_simd); - if (IS_ENABLED(CONFIG_AS_AVX2) && - boot_cpu_has(X86_FEATURE_AVX) && + if (boot_cpu_has(X86_FEATURE_AVX) && boot_cpu_has(X86_FEATURE_AVX2) && cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM, NULL)) { static_branch_enable(&chacha_use_avx2); diff --git a/arch/x86/crypto/poly1305-x86_64-cryptogams.pl b/arch/x86/crypto/poly1305-x86_64-cryptogams.pl index 7a6b5380a46f..137edcf038cb 100644 --- a/arch/x86/crypto/poly1305-x86_64-cryptogams.pl +++ b/arch/x86/crypto/poly1305-x86_64-cryptogams.pl @@ -404,10 +404,6 @@ ___ &end_function("poly1305_emit_x86_64"); if ($avx) { -if($kernel) { - $code .= "#ifdef CONFIG_AS_AVX\n"; -} - ######################################################################## # Layout of opaque area is following. # @@ -1516,16 +1512,8 @@ $code.=<<___; ___ &end_function("poly1305_emit_avx"); -if ($kernel) { - $code .= "#endif\n"; -} - if ($avx>1) { -if ($kernel) { - $code .= "#ifdef CONFIG_AS_AVX2\n"; -} - my ($H0,$H1,$H2,$H3,$H4, $MASK, $T4,$T0,$T1,$T2,$T3, $D0,$D1,$D2,$D3,$D4) = map("%ymm$_",(0..15)); my $S4=$MASK; @@ -2816,10 +2804,6 @@ ___ poly1305_blocks_avxN(0); &end_function("poly1305_blocks_avx2"); -if($kernel) { - $code .= "#endif\n"; -} - ####################################################################### if ($avx>2) { # On entry we have input length divisible by 64. But since inner loop diff --git a/arch/x86/crypto/poly1305_glue.c b/arch/x86/crypto/poly1305_glue.c index 79bb58737d52..6dfec19f7d57 100644 --- a/arch/x86/crypto/poly1305_glue.c +++ b/arch/x86/crypto/poly1305_glue.c @@ -94,7 +94,7 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len, BUILD_BUG_ON(PAGE_SIZE < POLY1305_BLOCK_SIZE || PAGE_SIZE % POLY1305_BLOCK_SIZE); - if (!IS_ENABLED(CONFIG_AS_AVX) || !static_branch_likely(&poly1305_use_avx) || + if (!static_branch_likely(&poly1305_use_avx) || (len < (POLY1305_BLOCK_SIZE * 18) && !state->is_base2_26) || !crypto_simd_usable()) { convert_to_base2_64(ctx); @@ -108,7 +108,7 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len, kernel_fpu_begin(); if (IS_ENABLED(CONFIG_AS_AVX512) && static_branch_likely(&poly1305_use_avx512)) poly1305_blocks_avx512(ctx, inp, bytes, padbit); - else if (IS_ENABLED(CONFIG_AS_AVX2) && static_branch_likely(&poly1305_use_avx2)) + else if (static_branch_likely(&poly1305_use_avx2)) poly1305_blocks_avx2(ctx, inp, bytes, padbit); else poly1305_blocks_avx(ctx, inp, bytes, padbit); @@ -123,7 +123,7 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len, static void poly1305_simd_emit(void *ctx, u8 mac[POLY1305_DIGEST_SIZE], const u32 nonce[4]) { - if (!IS_ENABLED(CONFIG_AS_AVX) || !static_branch_likely(&poly1305_use_avx)) + if (!static_branch_likely(&poly1305_use_avx)) poly1305_emit_x86_64(ctx, mac, nonce); else poly1305_emit_avx(ctx, mac, nonce); @@ -261,11 +261,10 @@ static struct shash_alg alg = { static int __init poly1305_simd_mod_init(void) { - if (IS_ENABLED(CONFIG_AS_AVX) && boot_cpu_has(X86_FEATURE_AVX) && + if (boot_cpu_has(X86_FEATURE_AVX) && cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM, NULL)) static_branch_enable(&poly1305_use_avx); - if (IS_ENABLED(CONFIG_AS_AVX2) && boot_cpu_has(X86_FEATURE_AVX) && - boot_cpu_has(X86_FEATURE_AVX2) && + if (boot_cpu_has(X86_FEATURE_AVX) && boot_cpu_has(X86_FEATURE_AVX2) && cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM, NULL)) static_branch_enable(&poly1305_use_avx2); if (IS_ENABLED(CONFIG_AS_AVX512) && boot_cpu_has(X86_FEATURE_AVX) && diff --git a/arch/x86/crypto/sha1_ssse3_asm.S b/arch/x86/crypto/sha1_ssse3_asm.S index 12e2d19d7402..d25668d2a1e9 100644 --- a/arch/x86/crypto/sha1_ssse3_asm.S +++ b/arch/x86/crypto/sha1_ssse3_asm.S @@ -467,8 +467,6 @@ W_PRECALC_SSSE3 */ SHA1_VECTOR_ASM sha1_transform_ssse3 -#ifdef CONFIG_AS_AVX - .macro W_PRECALC_AVX .purgem W_PRECALC_00_15 @@ -553,5 +551,3 @@ W_PRECALC_AVX * const u8 *data, int blocks); */ SHA1_VECTOR_ASM sha1_transform_avx - -#endif diff --git a/arch/x86/crypto/sha1_ssse3_glue.c b/arch/x86/crypto/sha1_ssse3_glue.c index d70b40ad594c..a801ffc10cbb 100644 --- a/arch/x86/crypto/sha1_ssse3_glue.c +++ b/arch/x86/crypto/sha1_ssse3_glue.c @@ -114,7 +114,6 @@ static void unregister_sha1_ssse3(void) crypto_unregister_shash(&sha1_ssse3_alg); } -#ifdef CONFIG_AS_AVX asmlinkage void sha1_transform_avx(struct sha1_state *state, const u8 *data, int blocks); @@ -175,13 +174,6 @@ static void unregister_sha1_avx(void) crypto_unregister_shash(&sha1_avx_alg); } -#else /* CONFIG_AS_AVX */ -static inline int register_sha1_avx(void) { return 0; } -static inline void unregister_sha1_avx(void) { } -#endif /* CONFIG_AS_AVX */ - - -#if defined(CONFIG_AS_AVX2) && (CONFIG_AS_AVX) #define SHA1_AVX2_BLOCK_OPTSIZE 4 /* optimal 4*64 bytes of SHA1 blocks */ asmlinkage void sha1_transform_avx2(struct sha1_state *state, @@ -253,11 +245,6 @@ static void unregister_sha1_avx2(void) crypto_unregister_shash(&sha1_avx2_alg); } -#else -static inline int register_sha1_avx2(void) { return 0; } -static inline void unregister_sha1_avx2(void) { } -#endif - #ifdef CONFIG_AS_SHA1_NI asmlinkage void sha1_ni_transform(struct sha1_state *digest, const u8 *data, int rounds); diff --git a/arch/x86/crypto/sha256-avx-asm.S b/arch/x86/crypto/sha256-avx-asm.S index fcbc30f58c38..4739cd31b9db 100644 --- a/arch/x86/crypto/sha256-avx-asm.S +++ b/arch/x86/crypto/sha256-avx-asm.S @@ -47,7 +47,6 @@ # This code schedules 1 block at a time, with 4 lanes per block ######################################################################## -#ifdef CONFIG_AS_AVX #include <linux/linkage.h> ## assume buffers not aligned @@ -498,5 +497,3 @@ _SHUF_00BA: # shuffle xDxC -> DC00 _SHUF_DC00: .octa 0x0b0a090803020100FFFFFFFFFFFFFFFF - -#endif diff --git a/arch/x86/crypto/sha256-avx2-asm.S b/arch/x86/crypto/sha256-avx2-asm.S index 499d9ec129de..11ff60c29c8b 100644 --- a/arch/x86/crypto/sha256-avx2-asm.S +++ b/arch/x86/crypto/sha256-avx2-asm.S @@ -48,7 +48,6 @@ # This code schedules 2 blocks at a time, with 4 lanes per block ######################################################################## -#ifdef CONFIG_AS_AVX2 #include <linux/linkage.h> ## assume buffers not aligned @@ -767,5 +766,3 @@ _SHUF_00BA: .align 32 _SHUF_DC00: .octa 0x0b0a090803020100FFFFFFFFFFFFFFFF,0x0b0a090803020100FFFFFFFFFFFFFFFF - -#endif diff --git a/arch/x86/crypto/sha256_ssse3_glue.c b/arch/x86/crypto/sha256_ssse3_glue.c index 03ad657c04bd..6394b5fe8db6 100644 --- a/arch/x86/crypto/sha256_ssse3_glue.c +++ b/arch/x86/crypto/sha256_ssse3_glue.c @@ -144,7 +144,6 @@ static void unregister_sha256_ssse3(void) ARRAY_SIZE(sha256_ssse3_algs)); } -#ifdef CONFIG_AS_AVX asmlinkage void sha256_transform_avx(struct sha256_state *state, const u8 *data, int blocks); @@ -221,12 +220,6 @@ static void unregister_sha256_avx(void) ARRAY_SIZE(sha256_avx_algs)); } -#else -static inline int register_sha256_avx(void) { return 0; } -static inline void unregister_sha256_avx(void) { } -#endif - -#if defined(CONFIG_AS_AVX2) && defined(CONFIG_AS_AVX) asmlinkage void sha256_transform_rorx(struct sha256_state *state, const u8 *data, int blocks); @@ -301,11 +294,6 @@ static void unregister_sha256_avx2(void) ARRAY_SIZE(sha256_avx2_algs)); } -#else -static inline int register_sha256_avx2(void) { return 0; } -static inline void unregister_sha256_avx2(void) { } -#endif - #ifdef CONFIG_AS_SHA256_NI asmlinkage void sha256_ni_transform(struct sha256_state *digest, const u8 *data, int rounds); diff --git a/arch/x86/crypto/sha512-avx-asm.S b/arch/x86/crypto/sha512-avx-asm.S index 90ea945ba5e6..63470fd6ae32 100644 --- a/arch/x86/crypto/sha512-avx-asm.S +++ b/arch/x86/crypto/sha512-avx-asm.S @@ -47,7 +47,6 @@ # ######################################################################## -#ifdef CONFIG_AS_AVX #include <linux/linkage.h> .text @@ -424,4 +423,3 @@ K512: .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 -#endif diff --git a/arch/x86/crypto/sha512-avx2-asm.S b/arch/x86/crypto/sha512-avx2-asm.S index 3dd886b14e7d..3a44bdcfd583 100644 --- a/arch/x86/crypto/sha512-avx2-asm.S +++ b/arch/x86/crypto/sha512-avx2-asm.S @@ -49,7 +49,6 @@ # This code schedules 1 blocks at a time, with 4 lanes per block ######################################################################## -#ifdef CONFIG_AS_AVX2 #include <linux/linkage.h> .text @@ -749,5 +748,3 @@ PSHUFFLE_BYTE_FLIP_MASK: MASK_YMM_LO: .octa 0x00000000000000000000000000000000 .octa 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - -#endif diff --git a/arch/x86/crypto/sha512_ssse3_glue.c b/arch/x86/crypto/sha512_ssse3_glue.c index 1c444f41037c..82cc1b3ced1d 100644 --- a/arch/x86/crypto/sha512_ssse3_glue.c +++ b/arch/x86/crypto/sha512_ssse3_glue.c @@ -142,7 +142,6 @@ static void unregister_sha512_ssse3(void) ARRAY_SIZE(sha512_ssse3_algs)); } -#ifdef CONFIG_AS_AVX asmlinkage void sha512_transform_avx(struct sha512_state *state, const u8 *data, int blocks); static bool avx_usable(void) @@ -218,12 +217,7 @@ static void unregister_sha512_avx(void) crypto_unregister_shashes(sha512_avx_algs, ARRAY_SIZE(sha512_avx_algs)); } -#else -static inline int register_sha512_avx(void) { return 0; } -static inline void unregister_sha512_avx(void) { } -#endif -#if defined(CONFIG_AS_AVX2) && defined(CONFIG_AS_AVX) asmlinkage void sha512_transform_rorx(struct sha512_state *state, const u8 *data, int blocks); @@ -298,10 +292,6 @@ static void unregister_sha512_avx2(void) crypto_unregister_shashes(sha512_avx2_algs, ARRAY_SIZE(sha512_avx2_algs)); } -#else -static inline int register_sha512_avx2(void) { return 0; } -static inline void unregister_sha512_avx2(void) { } -#endif static int __init sha512_ssse3_mod_init(void) { diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c index 1ba72c563313..cf76d6631afa 100644 --- a/arch/x86/events/intel/uncore.c +++ b/arch/x86/events/intel/uncore.c @@ -1476,6 +1476,12 @@ static const struct intel_uncore_init_fun tgl_l_uncore_init __initconst = { .mmio_init = tgl_l_uncore_mmio_init, }; +static const struct intel_uncore_init_fun icx_uncore_init __initconst = { + .cpu_init = icx_uncore_cpu_init, + .pci_init = icx_uncore_pci_init, + .mmio_init = icx_uncore_mmio_init, +}; + static const struct intel_uncore_init_fun snr_uncore_init __initconst = { .cpu_init = snr_uncore_cpu_init, .pci_init = snr_uncore_pci_init, @@ -1511,6 +1517,8 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = { X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_L, &icl_uncore_init), X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_NNPI, &icl_uncore_init), X86_MATCH_INTEL_FAM6_MODEL(ICELAKE, &icl_uncore_init), + X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_D, &icx_uncore_init), + X86_MATCH_INTEL_FAM6_MODEL(ICELAKE_X, &icx_uncore_init), X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE_L, &tgl_l_uncore_init), X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE, &tgl_uncore_init), X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &snr_uncore_init), diff --git a/arch/x86/events/intel/uncore.h b/arch/x86/events/intel/uncore.h index b30429f8a53a..0da4a4605536 100644 --- a/arch/x86/events/intel/uncore.h +++ b/arch/x86/events/intel/uncore.h @@ -550,6 +550,9 @@ void skx_uncore_cpu_init(void); int snr_uncore_pci_init(void); void snr_uncore_cpu_init(void); void snr_uncore_mmio_init(void); +int icx_uncore_pci_init(void); +void icx_uncore_cpu_init(void); +void icx_uncore_mmio_init(void); /* uncore_nhmex.c */ void nhmex_uncore_cpu_init(void); diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c index 01023f0d935b..07652fa20ebb 100644 --- a/arch/x86/events/intel/uncore_snbep.c +++ b/arch/x86/events/intel/uncore_snbep.c @@ -382,6 +382,42 @@ #define SNR_IMC_MMIO_MEM0_OFFSET 0xd8 #define SNR_IMC_MMIO_MEM0_MASK 0x7FF +/* ICX CHA */ +#define ICX_C34_MSR_PMON_CTR0 0xb68 +#define ICX_C34_MSR_PMON_CTL0 0xb61 +#define ICX_C34_MSR_PMON_BOX_CTL 0xb60 +#define ICX_C34_MSR_PMON_BOX_FILTER0 0xb65 + +/* ICX IIO */ +#define ICX_IIO_MSR_PMON_CTL0 0xa58 +#define ICX_IIO_MSR_PMON_CTR0 0xa51 +#define ICX_IIO_MSR_PMON_BOX_CTL 0xa50 + +/* ICX IRP */ +#define ICX_IRP0_MSR_PMON_CTL0 0xa4d +#define ICX_IRP0_MSR_PMON_CTR0 0xa4b +#define ICX_IRP0_MSR_PMON_BOX_CTL 0xa4a + +/* ICX M2PCIE */ +#define ICX_M2PCIE_MSR_PMON_CTL0 0xa46 +#define ICX_M2PCIE_MSR_PMON_CTR0 0xa41 +#define ICX_M2PCIE_MSR_PMON_BOX_CTL 0xa40 + +/* ICX UPI */ +#define ICX_UPI_PCI_PMON_CTL0 0x350 +#define ICX_UPI_PCI_PMON_CTR0 0x320 +#define ICX_UPI_PCI_PMON_BOX_CTL 0x318 +#define ICX_UPI_CTL_UMASK_EXT 0xffffff + +/* ICX M3UPI*/ +#define ICX_M3UPI_PCI_PMON_CTL0 0xd8 +#define ICX_M3UPI_PCI_PMON_CTR0 0xa8 +#define ICX_M3UPI_PCI_PMON_BOX_CTL 0xa0 + +/* ICX IMC */ +#define ICX_NUMBER_IMC_CHN 2 +#define ICX_IMC_MEM_STRIDE 0x4 + DEFINE_UNCORE_FORMAT_ATTR(event, event, "config:0-7"); DEFINE_UNCORE_FORMAT_ATTR(event2, event, "config:0-6"); DEFINE_UNCORE_FORMAT_ATTR(event_ext, event, "config:0-7,21"); @@ -390,6 +426,7 @@ DEFINE_UNCORE_FORMAT_ATTR(umask, umask, "config:8-15"); DEFINE_UNCORE_FORMAT_ATTR(umask_ext, umask, "config:8-15,32-43,45-55"); DEFINE_UNCORE_FORMAT_ATTR(umask_ext2, umask, "config:8-15,32-57"); DEFINE_UNCORE_FORMAT_ATTR(umask_ext3, umask, "config:8-15,32-39"); +DEFINE_UNCORE_FORMAT_ATTR(umask_ext4, umask, "config:8-15,32-55"); DEFINE_UNCORE_FORMAT_ATTR(qor, qor, "config:16"); DEFINE_UNCORE_FORMAT_ATTR(edge, edge, "config:18"); DEFINE_UNCORE_FORMAT_ATTR(tid_en, tid_en, "config:19"); @@ -4551,3 +4588,477 @@ void snr_uncore_mmio_init(void) } /* end of SNR uncore support */ + +/* ICX uncore support */ + +static unsigned icx_cha_msr_offsets[] = { + 0x2a0, 0x2ae, 0x2bc, 0x2ca, 0x2d8, 0x2e6, 0x2f4, 0x302, 0x310, + 0x31e, 0x32c, 0x33a, 0x348, 0x356, 0x364, 0x372, 0x380, 0x38e, + 0x3aa, 0x3b8, 0x3c6, 0x3d4, 0x3e2, 0x3f0, 0x3fe, 0x40c, 0x41a, + 0x428, 0x436, 0x444, 0x452, 0x460, 0x46e, 0x47c, 0x0, 0xe, + 0x1c, 0x2a, 0x38, 0x46, +}; + +static int icx_cha_hw_config(struct intel_uncore_box *box, struct perf_event *event) +{ + struct hw_perf_event_extra *reg1 = &event->hw.extra_reg; + bool tie_en = !!(event->hw.config & SNBEP_CBO_PMON_CTL_TID_EN); + + if (tie_en) { + reg1->reg = ICX_C34_MSR_PMON_BOX_FILTER0 + + icx_cha_msr_offsets[box->pmu->pmu_idx]; + reg1->config = event->attr.config1 & SKX_CHA_MSR_PMON_BOX_FILTER_TID; + reg1->idx = 0; + } + + return 0; +} + +static struct intel_uncore_ops icx_uncore_chabox_ops = { + .init_box = ivbep_uncore_msr_init_box, + .disable_box = snbep_uncore_msr_disable_box, + .enable_box = snbep_uncore_msr_enable_box, + .disable_event = snbep_uncore_msr_disable_event, + .enable_event = snr_cha_enable_event, + .read_counter = uncore_msr_read_counter, + .hw_config = icx_cha_hw_config, +}; + +static struct intel_uncore_type icx_uncore_chabox = { + .name = "cha", + .num_counters = 4, + .perf_ctr_bits = 48, + .event_ctl = ICX_C34_MSR_PMON_CTL0, + .perf_ctr = ICX_C34_MSR_PMON_CTR0, + .box_ctl = ICX_C34_MSR_PMON_BOX_CTL, + .msr_offsets = icx_cha_msr_offsets, + .event_mask = HSWEP_S_MSR_PMON_RAW_EVENT_MASK, + .event_mask_ext = SNR_CHA_RAW_EVENT_MASK_EXT, + .constraints = skx_uncore_chabox_constraints, + .ops = &icx_uncore_chabox_ops, + .format_group = &snr_uncore_chabox_format_group, +}; + +static unsigned icx_msr_offsets[] = { + 0x0, 0x20, 0x40, 0x90, 0xb0, 0xd0, +}; + +static struct event_constraint icx_uncore_iio_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x02, 0x3), + UNCORE_EVENT_CONSTRAINT(0x03, 0x3), + UNCORE_EVENT_CONSTRAINT(0x83, 0x3), + UNCORE_EVENT_CONSTRAINT(0xc0, 0xc), + UNCORE_EVENT_CONSTRAINT(0xc5, 0xc), + EVENT_CONSTRAINT_END +}; + +static struct intel_uncore_type icx_uncore_iio = { + .name = "iio", + .num_counters = 4, + .num_boxes = 6, + .perf_ctr_bits = 48, + .event_ctl = ICX_IIO_MSR_PMON_CTL0, + .perf_ctr = ICX_IIO_MSR_PMON_CTR0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .event_mask_ext = SNR_IIO_PMON_RAW_EVENT_MASK_EXT, + .box_ctl = ICX_IIO_MSR_PMON_BOX_CTL, + .msr_offsets = icx_msr_offsets, + .constraints = icx_uncore_iio_constraints, + .ops = &skx_uncore_iio_ops, + .format_group = &snr_uncore_iio_format_group, +}; + +static struct intel_uncore_type icx_uncore_irp = { + .name = "irp", + .num_counters = 2, + .num_boxes = 6, + .perf_ctr_bits = 48, + .event_ctl = ICX_IRP0_MSR_PMON_CTL0, + .perf_ctr = ICX_IRP0_MSR_PMON_CTR0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .box_ctl = ICX_IRP0_MSR_PMON_BOX_CTL, + .msr_offsets = icx_msr_offsets, + .ops = &ivbep_uncore_msr_ops, + .format_group = &ivbep_uncore_format_group, +}; + +static struct event_constraint icx_uncore_m2pcie_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x14, 0x3), + UNCORE_EVENT_CONSTRAINT(0x23, 0x3), + UNCORE_EVENT_CONSTRAINT(0x2d, 0x3), + EVENT_CONSTRAINT_END +}; + +static struct intel_uncore_type icx_uncore_m2pcie = { + .name = "m2pcie", + .num_counters = 4, + .num_boxes = 6, + .perf_ctr_bits = 48, + .event_ctl = ICX_M2PCIE_MSR_PMON_CTL0, + .perf_ctr = ICX_M2PCIE_MSR_PMON_CTR0, + .box_ctl = ICX_M2PCIE_MSR_PMON_BOX_CTL, + .msr_offsets = icx_msr_offsets, + .constraints = icx_uncore_m2pcie_constraints, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .ops = &ivbep_uncore_msr_ops, + .format_group = &ivbep_uncore_format_group, +}; + +enum perf_uncore_icx_iio_freerunning_type_id { + ICX_IIO_MSR_IOCLK, + ICX_IIO_MSR_BW_IN, + + ICX_IIO_FREERUNNING_TYPE_MAX, +}; + +static unsigned icx_iio_clk_freerunning_box_offsets[] = { + 0x0, 0x20, 0x40, 0x90, 0xb0, 0xd0, +}; + +static unsigned icx_iio_bw_freerunning_box_offsets[] = { + 0x0, 0x10, 0x20, 0x90, 0xa0, 0xb0, +}; + +static struct freerunning_counters icx_iio_freerunning[] = { + [ICX_IIO_MSR_IOCLK] = { 0xa55, 0x1, 0x20, 1, 48, icx_iio_clk_freerunning_box_offsets }, + [ICX_IIO_MSR_BW_IN] = { 0xaa0, 0x1, 0x10, 8, 48, icx_iio_bw_freerunning_box_offsets }, +}; + +static struct uncore_event_desc icx_uncore_iio_freerunning_events[] = { + /* Free-Running IIO CLOCKS Counter */ + INTEL_UNCORE_EVENT_DESC(ioclk, "event=0xff,umask=0x10"), + /* Free-Running IIO BANDWIDTH IN Counters */ + INTEL_UNCORE_EVENT_DESC(bw_in_port0, "event=0xff,umask=0x20"), + INTEL_UNCORE_EVENT_DESC(bw_in_port0.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port0.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port1, "event=0xff,umask=0x21"), + INTEL_UNCORE_EVENT_DESC(bw_in_port1.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port1.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port2, "event=0xff,umask=0x22"), + INTEL_UNCORE_EVENT_DESC(bw_in_port2.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port2.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port3, "event=0xff,umask=0x23"), + INTEL_UNCORE_EVENT_DESC(bw_in_port3.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port3.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port4, "event=0xff,umask=0x24"), + INTEL_UNCORE_EVENT_DESC(bw_in_port4.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port4.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port5, "event=0xff,umask=0x25"), + INTEL_UNCORE_EVENT_DESC(bw_in_port5.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port5.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port6, "event=0xff,umask=0x26"), + INTEL_UNCORE_EVENT_DESC(bw_in_port6.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port6.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(bw_in_port7, "event=0xff,umask=0x27"), + INTEL_UNCORE_EVENT_DESC(bw_in_port7.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(bw_in_port7.unit, "MiB"), + { /* end: all zeroes */ }, +}; + +static struct intel_uncore_type icx_uncore_iio_free_running = { + .name = "iio_free_running", + .num_counters = 9, + .num_boxes = 6, + .num_freerunning_types = ICX_IIO_FREERUNNING_TYPE_MAX, + .freerunning = icx_iio_freerunning, + .ops = &skx_uncore_iio_freerunning_ops, + .event_descs = icx_uncore_iio_freerunning_events, + .format_group = &skx_uncore_iio_freerunning_format_group, +}; + +static struct intel_uncore_type *icx_msr_uncores[] = { + &skx_uncore_ubox, + &icx_uncore_chabox, + &icx_uncore_iio, + &icx_uncore_irp, + &icx_uncore_m2pcie, + &skx_uncore_pcu, + &icx_uncore_iio_free_running, + NULL, +}; + +/* + * To determine the number of CHAs, it should read CAPID6(Low) and CAPID7 (High) + * registers which located at Device 30, Function 3 + */ +#define ICX_CAPID6 0x9c +#define ICX_CAPID7 0xa0 + +static u64 icx_count_chabox(void) +{ + struct pci_dev *dev = NULL; + u64 caps = 0; + + dev = pci_get_device(PCI_VENDOR_ID_INTEL, 0x345b, dev); + if (!dev) + goto out; + + pci_read_config_dword(dev, ICX_CAPID6, (u32 *)&caps); + pci_read_config_dword(dev, ICX_CAPID7, (u32 *)&caps + 1); +out: + pci_dev_put(dev); + return hweight64(caps); +} + +void icx_uncore_cpu_init(void) +{ + u64 num_boxes = icx_count_chabox(); + + if (WARN_ON(num_boxes > ARRAY_SIZE(icx_cha_msr_offsets))) + return; + icx_uncore_chabox.num_boxes = num_boxes; + uncore_msr_uncores = icx_msr_uncores; +} + +static struct intel_uncore_type icx_uncore_m2m = { + .name = "m2m", + .num_counters = 4, + .num_boxes = 4, + .perf_ctr_bits = 48, + .perf_ctr = SNR_M2M_PCI_PMON_CTR0, + .event_ctl = SNR_M2M_PCI_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .box_ctl = SNR_M2M_PCI_PMON_BOX_CTL, + .ops = &snr_m2m_uncore_pci_ops, + .format_group = &skx_uncore_format_group, +}; + +static struct attribute *icx_upi_uncore_formats_attr[] = { + &format_attr_event.attr, + &format_attr_umask_ext4.attr, + &format_attr_edge.attr, + &format_attr_inv.attr, + &format_attr_thresh8.attr, + NULL, +}; + +static const struct attribute_group icx_upi_uncore_format_group = { + .name = "format", + .attrs = icx_upi_uncore_formats_attr, +}; + +static struct intel_uncore_type icx_uncore_upi = { + .name = "upi", + .num_counters = 4, + .num_boxes = 3, + .perf_ctr_bits = 48, + .perf_ctr = ICX_UPI_PCI_PMON_CTR0, + .event_ctl = ICX_UPI_PCI_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .event_mask_ext = ICX_UPI_CTL_UMASK_EXT, + .box_ctl = ICX_UPI_PCI_PMON_BOX_CTL, + .ops = &skx_upi_uncore_pci_ops, + .format_group = &icx_upi_uncore_format_group, +}; + +static struct event_constraint icx_uncore_m3upi_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x1c, 0x1), + UNCORE_EVENT_CONSTRAINT(0x1d, 0x1), + UNCORE_EVENT_CONSTRAINT(0x1e, 0x1), + UNCORE_EVENT_CONSTRAINT(0x1f, 0x1), + UNCORE_EVENT_CONSTRAINT(0x40, 0x7), + UNCORE_EVENT_CONSTRAINT(0x4e, 0x7), + UNCORE_EVENT_CONSTRAINT(0x4f, 0x7), + UNCORE_EVENT_CONSTRAINT(0x50, 0x7), + EVENT_CONSTRAINT_END +}; + +static struct intel_uncore_type icx_uncore_m3upi = { + .name = "m3upi", + .num_counters = 4, + .num_boxes = 3, + .perf_ctr_bits = 48, + .perf_ctr = ICX_M3UPI_PCI_PMON_CTR0, + .event_ctl = ICX_M3UPI_PCI_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .box_ctl = ICX_M3UPI_PCI_PMON_BOX_CTL, + .constraints = icx_uncore_m3upi_constraints, + .ops = &ivbep_uncore_pci_ops, + .format_group = &skx_uncore_format_group, +}; + +enum { + ICX_PCI_UNCORE_M2M, + ICX_PCI_UNCORE_UPI, + ICX_PCI_UNCORE_M3UPI, +}; + +static struct intel_uncore_type *icx_pci_uncores[] = { + [ICX_PCI_UNCORE_M2M] = &icx_uncore_m2m, + [ICX_PCI_UNCORE_UPI] = &icx_uncore_upi, + [ICX_PCI_UNCORE_M3UPI] = &icx_uncore_m3upi, + NULL, +}; + +static const struct pci_device_id icx_uncore_pci_ids[] = { + { /* M2M 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x344a), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(12, 0, ICX_PCI_UNCORE_M2M, 0), + }, + { /* M2M 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x344a), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(13, 0, ICX_PCI_UNCORE_M2M, 1), + }, + { /* M2M 2 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x344a), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(14, 0, ICX_PCI_UNCORE_M2M, 2), + }, + { /* M2M 3 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x344a), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(15, 0, ICX_PCI_UNCORE_M2M, 3), + }, + { /* UPI Link 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3441), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(2, 1, ICX_PCI_UNCORE_UPI, 0), + }, + { /* UPI Link 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3441), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(3, 1, ICX_PCI_UNCORE_UPI, 1), + }, + { /* UPI Link 2 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3441), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(4, 1, ICX_PCI_UNCORE_UPI, 2), + }, + { /* M3UPI Link 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3446), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(5, 1, ICX_PCI_UNCORE_M3UPI, 0), + }, + { /* M3UPI Link 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3446), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(6, 1, ICX_PCI_UNCORE_M3UPI, 1), + }, + { /* M3UPI Link 2 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x3446), + .driver_data = UNCORE_PCI_DEV_FULL_DATA(7, 1, ICX_PCI_UNCORE_M3UPI, 2), + }, + { /* end: all zeroes */ } +}; + +static struct pci_driver icx_uncore_pci_driver = { + .name = "icx_uncore", + .id_table = icx_uncore_pci_ids, +}; + +int icx_uncore_pci_init(void) +{ + /* ICX UBOX DID */ + int ret = snbep_pci2phy_map_init(0x3450, SKX_CPUNODEID, + SKX_GIDNIDMAP, true); + + if (ret) + return ret; + + uncore_pci_uncores = icx_pci_uncores; + uncore_pci_driver = &icx_uncore_pci_driver; + return 0; +} + +static void icx_uncore_imc_init_box(struct intel_uncore_box *box) +{ + unsigned int box_ctl = box->pmu->type->box_ctl + + box->pmu->type->mmio_offset * (box->pmu->pmu_idx % ICX_NUMBER_IMC_CHN); + int mem_offset = (box->pmu->pmu_idx / ICX_NUMBER_IMC_CHN) * ICX_IMC_MEM_STRIDE + + SNR_IMC_MMIO_MEM0_OFFSET; + + __snr_uncore_mmio_init_box(box, box_ctl, mem_offset); +} + +static struct intel_uncore_ops icx_uncore_mmio_ops = { + .init_box = icx_uncore_imc_init_box, + .exit_box = uncore_mmio_exit_box, + .disable_box = snr_uncore_mmio_disable_box, + .enable_box = snr_uncore_mmio_enable_box, + .disable_event = snr_uncore_mmio_disable_event, + .enable_event = snr_uncore_mmio_enable_event, + .read_counter = uncore_mmio_read_counter, +}; + +static struct intel_uncore_type icx_uncore_imc = { + .name = "imc", + .num_counters = 4, + .num_boxes = 8, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .fixed_ctr = SNR_IMC_MMIO_PMON_FIXED_CTR, + .fixed_ctl = SNR_IMC_MMIO_PMON_FIXED_CTL, + .event_descs = hswep_uncore_imc_events, + .perf_ctr = SNR_IMC_MMIO_PMON_CTR0, + .event_ctl = SNR_IMC_MMIO_PMON_CTL0, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .box_ctl = SNR_IMC_MMIO_PMON_BOX_CTL, + .mmio_offset = SNR_IMC_MMIO_OFFSET, + .ops = &icx_uncore_mmio_ops, + .format_group = &skx_uncore_format_group, +}; + +enum perf_uncore_icx_imc_freerunning_type_id { + ICX_IMC_DCLK, + ICX_IMC_DDR, + ICX_IMC_DDRT, + + ICX_IMC_FREERUNNING_TYPE_MAX, +}; + +static struct freerunning_counters icx_imc_freerunning[] = { + [ICX_IMC_DCLK] = { 0x22b0, 0x0, 0, 1, 48 }, + [ICX_IMC_DDR] = { 0x2290, 0x8, 0, 2, 48 }, + [ICX_IMC_DDRT] = { 0x22a0, 0x8, 0, 2, 48 }, +}; + +static struct uncore_event_desc icx_uncore_imc_freerunning_events[] = { + INTEL_UNCORE_EVENT_DESC(dclk, "event=0xff,umask=0x10"), + + INTEL_UNCORE_EVENT_DESC(read, "event=0xff,umask=0x20"), + INTEL_UNCORE_EVENT_DESC(read.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(read.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(write, "event=0xff,umask=0x21"), + INTEL_UNCORE_EVENT_DESC(write.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(write.unit, "MiB"), + + INTEL_UNCORE_EVENT_DESC(ddrt_read, "event=0xff,umask=0x30"), + INTEL_UNCORE_EVENT_DESC(ddrt_read.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(ddrt_read.unit, "MiB"), + INTEL_UNCORE_EVENT_DESC(ddrt_write, "event=0xff,umask=0x31"), + INTEL_UNCORE_EVENT_DESC(ddrt_write.scale, "3.814697266e-6"), + INTEL_UNCORE_EVENT_DESC(ddrt_write.unit, "MiB"), + { /* end: all zeroes */ }, +}; + +static void icx_uncore_imc_freerunning_init_box(struct intel_uncore_box *box) +{ + int mem_offset = box->pmu->pmu_idx * ICX_IMC_MEM_STRIDE + + SNR_IMC_MMIO_MEM0_OFFSET; + + __snr_uncore_mmio_init_box(box, uncore_mmio_box_ctl(box), mem_offset); +} + +static struct intel_uncore_ops icx_uncore_imc_freerunning_ops = { + .init_box = icx_uncore_imc_freerunning_init_box, + .exit_box = uncore_mmio_exit_box, + .read_counter = uncore_mmio_read_counter, + .hw_config = uncore_freerunning_hw_config, +}; + +static struct intel_uncore_type icx_uncore_imc_free_running = { + .name = "imc_free_running", + .num_counters = 5, + .num_boxes = 4, + .num_freerunning_types = ICX_IMC_FREERUNNING_TYPE_MAX, + .freerunning = icx_imc_freerunning, + .ops = &icx_uncore_imc_freerunning_ops, + .event_descs = icx_uncore_imc_freerunning_events, + .format_group = &skx_uncore_iio_freerunning_format_group, +}; + +static struct intel_uncore_type *icx_mmio_uncores[] = { + &icx_uncore_imc, + &icx_uncore_imc_free_running, + NULL, +}; + +void icx_uncore_mmio_init(void) +{ + uncore_mmio_uncores = icx_mmio_uncores; +} + +/* end of ICX uncore support */ diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index b0da5320bcff..624f5d9b0f79 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -20,6 +20,7 @@ #include <linux/mm.h> #include <linux/hyperv.h> #include <linux/slab.h> +#include <linux/kernel.h> #include <linux/cpuhotplug.h> #include <linux/syscore_ops.h> #include <clocksource/hyperv_timer.h> @@ -419,11 +420,14 @@ void hyperv_cleanup(void) } EXPORT_SYMBOL_GPL(hyperv_cleanup); -void hyperv_report_panic(struct pt_regs *regs, long err) +void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) { static bool panic_reported; u64 guest_id; + if (in_die && !panic_on_oops) + return; + /* * We prefer to report panic on 'die' chain as we have proper * registers to report, but if we miss it (e.g. on BUG()) we need diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h index ff6f3ca649b3..dd17c2da1af5 100644 --- a/arch/x86/include/asm/cpu.h +++ b/arch/x86/include/asm/cpu.h @@ -44,6 +44,7 @@ unsigned int x86_stepping(unsigned int sig); extern void __init cpu_set_core_cap_bits(struct cpuinfo_x86 *c); extern void switch_to_sld(unsigned long tifn); extern bool handle_user_split_lock(struct pt_regs *regs, long error_code); +extern bool handle_guest_split_lock(unsigned long ip); #else static inline void __init cpu_set_core_cap_bits(struct cpuinfo_x86 *c) {} static inline void switch_to_sld(unsigned long tifn) {} @@ -51,5 +52,10 @@ static inline bool handle_user_split_lock(struct pt_regs *regs, long error_code) { return false; } + +static inline bool handle_guest_split_lock(unsigned long ip) +{ + return false; +} #endif #endif /* _ASM_X86_CPU_H */ diff --git a/arch/x86/include/asm/dwarf2.h b/arch/x86/include/asm/dwarf2.h index f71a0cce9373..430fca13bb56 100644 --- a/arch/x86/include/asm/dwarf2.h +++ b/arch/x86/include/asm/dwarf2.h @@ -6,15 +6,6 @@ #warning "asm/dwarf2.h should be only included in pure assembly files" #endif -/* - * Macros for dwarf2 CFI unwind table entries. - * See "as.info" for details on these pseudo ops. Unfortunately - * they are only supported in very new binutils, so define them - * away for older version. - */ - -#ifdef CONFIG_AS_CFI - #define CFI_STARTPROC .cfi_startproc #define CFI_ENDPROC .cfi_endproc #define CFI_DEF_CFA .cfi_def_cfa @@ -30,13 +21,6 @@ #define CFI_UNDEFINED .cfi_undefined #define CFI_ESCAPE .cfi_escape -#ifdef CONFIG_AS_CFI_SIGNAL_FRAME -#define CFI_SIGNAL_FRAME .cfi_signal_frame -#else -#define CFI_SIGNAL_FRAME -#endif - -#if defined(CONFIG_AS_CFI_SECTIONS) && defined(__ASSEMBLY__) #ifndef BUILD_VDSO /* * Emit CFI data in .debug_frame sections, not .eh_frame sections. @@ -53,33 +37,5 @@ */ .cfi_sections .eh_frame, .debug_frame #endif -#endif - -#else - -/* - * Due to the structure of pre-exisiting code, don't use assembler line - * comment character # to ignore the arguments. Instead, use a dummy macro. - */ -.macro cfi_ignore a=0, b=0, c=0, d=0 -.endm - -#define CFI_STARTPROC cfi_ignore -#define CFI_ENDPROC cfi_ignore -#define CFI_DEF_CFA cfi_ignore -#define CFI_DEF_CFA_REGISTER cfi_ignore -#define CFI_DEF_CFA_OFFSET cfi_ignore -#define CFI_ADJUST_CFA_OFFSET cfi_ignore -#define CFI_OFFSET cfi_ignore -#define CFI_REL_OFFSET cfi_ignore -#define CFI_REGISTER cfi_ignore -#define CFI_RESTORE cfi_ignore -#define CFI_REMEMBER_STATE cfi_ignore -#define CFI_RESTORE_STATE cfi_ignore -#define CFI_UNDEFINED cfi_ignore -#define CFI_ESCAPE cfi_ignore -#define CFI_SIGNAL_FRAME cfi_ignore - -#endif #endif /* _ASM_X86_DWARF2_H */ diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h index cdcf48d52a12..8391c115c0ec 100644 --- a/arch/x86/include/asm/efi.h +++ b/arch/x86/include/asm/efi.h @@ -178,8 +178,10 @@ extern void efi_free_boot_services(void); extern pgd_t * __init efi_uv1_memmap_phys_prolog(void); extern void __init efi_uv1_memmap_phys_epilog(pgd_t *save_pgd); +/* kexec external ABI */ struct efi_setup_data { u64 fw_vendor; + u64 __unused; u64 tables; u64 smbios; u64 reserved[8]; diff --git a/arch/x86/include/asm/xor_avx.h b/arch/x86/include/asm/xor_avx.h index d61ddf3d052b..0c4e5b5e3852 100644 --- a/arch/x86/include/asm/xor_avx.h +++ b/arch/x86/include/asm/xor_avx.h @@ -11,8 +11,6 @@ * Based on Ingo Molnar and Zach Brown's respective MMX and SSE routines */ -#ifdef CONFIG_AS_AVX - #include <linux/compiler.h> #include <asm/fpu/api.h> @@ -170,11 +168,4 @@ do { \ #define AVX_SELECT(FASTEST) \ (boot_cpu_has(X86_FEATURE_AVX) && boot_cpu_has(X86_FEATURE_OSXSAVE) ? &xor_block_avx : FASTEST) -#else - -#define AVX_XOR_SPEED {} - -#define AVX_SELECT(FASTEST) (FASTEST) - -#endif #endif diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 9a26e972cdea..bf08d4508ecb 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c @@ -21,6 +21,7 @@ #include <asm/elf.h> #include <asm/cpu_device_id.h> #include <asm/cmdline.h> +#include <asm/traps.h> #ifdef CONFIG_X86_64 #include <linux/topology.h> @@ -1066,13 +1067,10 @@ static void split_lock_init(void) split_lock_verify_msr(sld_state != sld_off); } -bool handle_user_split_lock(struct pt_regs *regs, long error_code) +static void split_lock_warn(unsigned long ip) { - if ((regs->flags & X86_EFLAGS_AC) || sld_state == sld_fatal) - return false; - pr_warn_ratelimited("#AC: %s/%d took a split_lock trap at address: 0x%lx\n", - current->comm, current->pid, regs->ip); + current->comm, current->pid, ip); /* * Disable the split lock detection for this task so it can make @@ -1081,6 +1079,31 @@ bool handle_user_split_lock(struct pt_regs *regs, long error_code) */ sld_update_msr(false); set_tsk_thread_flag(current, TIF_SLD); +} + +bool handle_guest_split_lock(unsigned long ip) +{ + if (sld_state == sld_warn) { + split_lock_warn(ip); + return true; + } + + pr_warn_once("#AC: %s/%d %s split_lock trap at address: 0x%lx\n", + current->comm, current->pid, + sld_state == sld_fatal ? "fatal" : "bogus", ip); + + current->thread.error_code = 0; + current->thread.trap_nr = X86_TRAP_AC; + force_sig_fault(SIGBUS, BUS_ADRALN, NULL); + return false; +} +EXPORT_SYMBOL_GPL(handle_guest_split_lock); + +bool handle_user_split_lock(struct pt_regs *regs, long error_code) +{ + if ((regs->flags & X86_EFLAGS_AC) || sld_state == sld_fatal) + return false; + split_lock_warn(regs->ip); return true; } diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index caa032ce3fe3..ebf34c7bc8bc 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -227,8 +227,8 @@ static void __init ms_hyperv_init_platform(void) ms_hyperv.misc_features = cpuid_edx(HYPERV_CPUID_FEATURES); ms_hyperv.hints = cpuid_eax(HYPERV_CPUID_ENLIGHTMENT_INFO); - pr_info("Hyper-V: features 0x%x, hints 0x%x\n", - ms_hyperv.features, ms_hyperv.hints); + pr_info("Hyper-V: features 0x%x, hints 0x%x, misc 0x%x\n", + ms_hyperv.features, ms_hyperv.hints, ms_hyperv.misc_features); ms_hyperv.max_vp_index = cpuid_eax(HYPERV_CPUID_IMPLEMENT_LIMITS); ms_hyperv.max_lp_index = cpuid_ebx(HYPERV_CPUID_IMPLEMENT_LIMITS); @@ -263,6 +263,16 @@ static void __init ms_hyperv_init_platform(void) cpuid_eax(HYPERV_CPUID_NESTED_FEATURES); } + /* + * Hyper-V expects to get crash register data or kmsg when + * crash enlightment is available and system crashes. Set + * crash_kexec_post_notifiers to be true to make sure that + * calling crash enlightment interface before running kdump + * kernel. + */ + if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) + crash_kexec_post_notifiers = true; + #ifdef CONFIG_X86_LOCAL_APIC if (ms_hyperv.features & HV_X64_ACCESS_FREQUENCY_MSRS && ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) { diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 8959514eaf0f..83050977490c 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -4588,6 +4588,26 @@ static int handle_machine_check(struct kvm_vcpu *vcpu) return 1; } +/* + * If the host has split lock detection disabled, then #AC is + * unconditionally injected into the guest, which is the pre split lock + * detection behaviour. + * + * If the host has split lock detection enabled then #AC is + * only injected into the guest when: + * - Guest CPL == 3 (user mode) + * - Guest has #AC detection enabled in CR0 + * - Guest EFLAGS has AC bit set + */ +static inline bool guest_inject_ac(struct kvm_vcpu *vcpu) +{ + if (!boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT)) + return true; + + return vmx_get_cpl(vcpu) == 3 && kvm_read_cr0_bits(vcpu, X86_CR0_AM) && + (kvm_get_rflags(vcpu) & X86_EFLAGS_AC); +} + static int handle_exception_nmi(struct kvm_vcpu *vcpu) { struct vcpu_vmx *vmx = to_vmx(vcpu); @@ -4653,9 +4673,6 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu) return handle_rmode_exception(vcpu, ex_no, error_code); switch (ex_no) { - case AC_VECTOR: - kvm_queue_exception_e(vcpu, AC_VECTOR, error_code); - return 1; case DB_VECTOR: dr6 = vmcs_readl(EXIT_QUALIFICATION); if (!(vcpu->guest_debug & @@ -4684,6 +4701,20 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu) kvm_run->debug.arch.pc = vmcs_readl(GUEST_CS_BASE) + rip; kvm_run->debug.arch.exception = ex_no; break; + case AC_VECTOR: + if (guest_inject_ac(vcpu)) { + kvm_queue_exception_e(vcpu, AC_VECTOR, error_code); + return 1; + } + + /* + * Handle split lock. Depending on detection mode this will + * either warn and disable split lock detection for this + * task or force SIGBUS on it. + */ + if (handle_guest_split_lock(kvm_rip_read(vcpu))) + return 1; + fallthrough; default: kvm_run->exit_reason = KVM_EXIT_EXCEPTION; kvm_run->ex.exception = ex_no; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 027dfd278a97..3bf2ecafd027 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5839,6 +5839,7 @@ static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt, { struct kvm_host_map map; struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); + u64 page_line_mask; gpa_t gpa; char *kaddr; bool exchanged; @@ -5853,7 +5854,16 @@ static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt, (gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE) goto emul_write; - if (((gpa + bytes - 1) & PAGE_MASK) != (gpa & PAGE_MASK)) + /* + * Emulate the atomic as a straight write to avoid #AC if SLD is + * enabled in the host and the access splits a cache line. + */ + if (boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT)) + page_line_mask = ~(cache_line_size() - 1); + else + page_line_mask = PAGE_MASK; + + if (((gpa + bytes - 1) & page_line_mask) != (gpa & page_line_mask)) goto emul_write; if (kvm_vcpu_map(vcpu, gpa_to_gfn(gpa), &map)) diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index 211bb9358b73..c5e393f8bb3f 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c @@ -202,7 +202,7 @@ virt_to_phys_or_null_size(void *va, unsigned long size) int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) { - unsigned long pfn, text, pf; + unsigned long pfn, text, pf, rodata; struct page *page; unsigned npages; pgd_t *pgd = efi_mm.pgd; @@ -256,7 +256,7 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) efi_scratch.phys_stack = page_to_phys(page + 1); /* stack grows down */ - npages = (__end_rodata_aligned - _text) >> PAGE_SHIFT; + npages = (_etext - _text) >> PAGE_SHIFT; text = __pa(_text); pfn = text >> PAGE_SHIFT; @@ -266,6 +266,14 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages) return 1; } + npages = (__end_rodata - __start_rodata) >> PAGE_SHIFT; + rodata = __pa(__start_rodata); + pfn = rodata >> PAGE_SHIFT; + if (kernel_map_pages_in_pgd(pgd, pfn, rodata, npages, pf)) { + pr_err("Failed to map kernel rodata 1:1\n"); + return 1; + } + return 0; } @@ -638,7 +646,7 @@ efi_thunk_set_variable(efi_char16_t *name, efi_guid_t *vendor, phys_vendor = virt_to_phys_or_null(vnd); phys_data = virt_to_phys_or_null_size(data, data_size); - if (!phys_name || !phys_data) + if (!phys_name || (data && !phys_data)) status = EFI_INVALID_PARAMETER; else status = efi_thunk(set_variable, phys_name, phys_vendor, @@ -669,7 +677,7 @@ efi_thunk_set_variable_nonblocking(efi_char16_t *name, efi_guid_t *vendor, phys_vendor = virt_to_phys_or_null(vnd); phys_data = virt_to_phys_or_null_size(data, data_size); - if (!phys_name || !phys_data) + if (!phys_name || (data && !phys_data)) status = EFI_INVALID_PARAMETER; else status = efi_thunk(set_variable, phys_name, phys_vendor, diff --git a/block/blk-mq.c b/block/blk-mq.c index 8e56884fd2e9..a7785df2c944 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -1222,8 +1222,10 @@ bool blk_mq_dispatch_rq_list(struct request_queue *q, struct list_head *list, rq = list_first_entry(list, struct request, queuelist); hctx = rq->mq_hctx; - if (!got_budget && !blk_mq_get_dispatch_budget(hctx)) + if (!got_budget && !blk_mq_get_dispatch_budget(hctx)) { + blk_mq_put_driver_tag(rq); break; + } if (!blk_mq_get_driver_tag(rq)) { /* diff --git a/block/blk-wbt.c b/block/blk-wbt.c index 8641ba9793c5..9cb082f38b93 100644 --- a/block/blk-wbt.c +++ b/block/blk-wbt.c @@ -313,7 +313,7 @@ static void scale_up(struct rq_wb *rwb) calc_wb_limits(rwb); rwb->unknown_cnt = 0; rwb_wake_all(rwb); - rwb_trace_step(rwb, "scale up"); + rwb_trace_step(rwb, tracepoint_string("scale up")); } static void scale_down(struct rq_wb *rwb, bool hard_throttle) @@ -322,7 +322,7 @@ static void scale_down(struct rq_wb *rwb, bool hard_throttle) return; calc_wb_limits(rwb); rwb->unknown_cnt = 0; - rwb_trace_step(rwb, "scale down"); + rwb_trace_step(rwb, tracepoint_string("scale down")); } static void rwb_arm_timer(struct rq_wb *rwb) diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 0101b65250cb..0c0a736eb861 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -410,6 +410,7 @@ static const struct pci_device_id ahci_pci_tbl[] = { { PCI_VDEVICE(INTEL, 0x22a3), board_ahci_mobile }, /* Cherry Tr. AHCI */ { PCI_VDEVICE(INTEL, 0x5ae3), board_ahci_mobile }, /* ApolloLake AHCI */ { PCI_VDEVICE(INTEL, 0x34d3), board_ahci_mobile }, /* Ice Lake LP AHCI */ + { PCI_VDEVICE(INTEL, 0x02d3), board_ahci_mobile }, /* Comet Lake PCH-U AHCI */ { PCI_VDEVICE(INTEL, 0x02d7), board_ahci_mobile }, /* Comet Lake PCH RAID */ /* JMicron 360/1/3/5/6, match class to avoid IDE function */ diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 1e0a6b19ae0d..67d65ac785e9 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -3754,11 +3754,7 @@ static int __rbd_notify_op_lock(struct rbd_device *rbd_dev, static void rbd_notify_op_lock(struct rbd_device *rbd_dev, enum rbd_notify_op notify_op) { - struct page **reply_pages; - size_t reply_len; - - __rbd_notify_op_lock(rbd_dev, notify_op, &reply_pages, &reply_len); - ceph_release_page_vector(reply_pages, calc_pages_for(0, reply_len)); + __rbd_notify_op_lock(rbd_dev, notify_op, NULL, NULL); } static void rbd_notify_acquired_lock(struct work_struct *work) @@ -4527,6 +4523,10 @@ static void cancel_tasks_sync(struct rbd_device *rbd_dev) cancel_work_sync(&rbd_dev->unlock_work); } +/* + * header_rwsem must not be held to avoid a deadlock with + * rbd_dev_refresh() when flushing notifies. + */ static void rbd_unregister_watch(struct rbd_device *rbd_dev) { cancel_tasks_sync(rbd_dev); @@ -6894,9 +6894,10 @@ static void rbd_print_dne(struct rbd_device *rbd_dev, bool is_snap) static void rbd_dev_image_release(struct rbd_device *rbd_dev) { - rbd_dev_unprobe(rbd_dev); - if (rbd_dev->opts) + if (!rbd_is_ro(rbd_dev)) rbd_unregister_watch(rbd_dev); + + rbd_dev_unprobe(rbd_dev); rbd_dev->image_format = 0; kfree(rbd_dev->spec->image_id); rbd_dev->spec->image_id = NULL; @@ -6907,6 +6908,9 @@ static void rbd_dev_image_release(struct rbd_device *rbd_dev) * device. If this image is the one being mapped (i.e., not a * parent), initiate a watch on its header object before using that * object to get detailed information about the rbd image. + * + * On success, returns with header_rwsem held for write if called + * with @depth == 0. */ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth) { @@ -6936,11 +6940,14 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth) } } + if (!depth) + down_write(&rbd_dev->header_rwsem); + ret = rbd_dev_header_info(rbd_dev); if (ret) { if (ret == -ENOENT && !need_watch) rbd_print_dne(rbd_dev, false); - goto err_out_watch; + goto err_out_probe; } /* @@ -6985,10 +6992,11 @@ static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth) return 0; err_out_probe: - rbd_dev_unprobe(rbd_dev); -err_out_watch: + if (!depth) + up_write(&rbd_dev->header_rwsem); if (need_watch) rbd_unregister_watch(rbd_dev); + rbd_dev_unprobe(rbd_dev); err_out_format: rbd_dev->image_format = 0; kfree(rbd_dev->spec->image_id); @@ -7050,12 +7058,9 @@ static ssize_t do_rbd_add(struct bus_type *bus, goto err_out_rbd_dev; } - down_write(&rbd_dev->header_rwsem); rc = rbd_dev_image_probe(rbd_dev, 0); - if (rc < 0) { - up_write(&rbd_dev->header_rwsem); + if (rc < 0) goto err_out_rbd_dev; - } if (rbd_dev->opts->alloc_size > rbd_dev->layout.object_size) { rbd_warn(rbd_dev, "alloc_size adjusted to %u", diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c index b1af0de2e100..9d2512913d25 100644 --- a/drivers/firmware/efi/cper.c +++ b/drivers/firmware/efi/cper.c @@ -101,7 +101,7 @@ void cper_print_bits(const char *pfx, unsigned int bits, if (!len) len = snprintf(buf, sizeof(buf), "%s%s", pfx, str); else - len += snprintf(buf+len, sizeof(buf)-len, ", %s", str); + len += scnprintf(buf+len, sizeof(buf)-len, ", %s", str); } if (len) printk("%s\n", buf); diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h index cc90a748bcf0..67d26949fd26 100644 --- a/drivers/firmware/efi/libstub/efistub.h +++ b/drivers/firmware/efi/libstub/efistub.h @@ -25,7 +25,7 @@ #define EFI_ALLOC_ALIGN EFI_PAGE_SIZE #endif -#ifdef CONFIG_ARM +#if defined(CONFIG_ARM) || defined(CONFIG_X86) #define __efistub_global __section(.data) #else #define __efistub_global diff --git a/drivers/firmware/efi/libstub/file.c b/drivers/firmware/efi/libstub/file.c index d4c7e5f59d2c..ea66b1f16a79 100644 --- a/drivers/firmware/efi/libstub/file.c +++ b/drivers/firmware/efi/libstub/file.c @@ -29,30 +29,31 @@ */ #define EFI_READ_CHUNK_SIZE SZ_1M +struct finfo { + efi_file_info_t info; + efi_char16_t filename[MAX_FILENAME_SIZE]; +}; + static efi_status_t efi_open_file(efi_file_protocol_t *volume, - efi_char16_t *filename_16, + struct finfo *fi, efi_file_protocol_t **handle, unsigned long *file_size) { - struct { - efi_file_info_t info; - efi_char16_t filename[MAX_FILENAME_SIZE]; - } finfo; efi_guid_t info_guid = EFI_FILE_INFO_ID; efi_file_protocol_t *fh; unsigned long info_sz; efi_status_t status; - status = volume->open(volume, &fh, filename_16, EFI_FILE_MODE_READ, 0); + status = volume->open(volume, &fh, fi->filename, EFI_FILE_MODE_READ, 0); if (status != EFI_SUCCESS) { pr_efi_err("Failed to open file: "); - efi_char16_printk(filename_16); + efi_char16_printk(fi->filename); efi_printk("\n"); return status; } - info_sz = sizeof(finfo); - status = fh->get_info(fh, &info_guid, &info_sz, &finfo); + info_sz = sizeof(struct finfo); + status = fh->get_info(fh, &info_guid, &info_sz, fi); if (status != EFI_SUCCESS) { pr_efi_err("Failed to get file info\n"); fh->close(fh); @@ -60,7 +61,7 @@ static efi_status_t efi_open_file(efi_file_protocol_t *volume, } *handle = fh; - *file_size = finfo.info.file_size; + *file_size = fi->info.file_size; return EFI_SUCCESS; } @@ -146,13 +147,13 @@ static efi_status_t handle_cmdline_files(efi_loaded_image_t *image, alloc_addr = alloc_size = 0; do { - efi_char16_t filename[MAX_FILENAME_SIZE]; + struct finfo fi; unsigned long size; void *addr; offset = find_file_option(cmdline, cmdline_len, optstr, optstr_size, - filename, ARRAY_SIZE(filename)); + fi.filename, ARRAY_SIZE(fi.filename)); if (!offset) break; @@ -166,7 +167,7 @@ static efi_status_t handle_cmdline_files(efi_loaded_image_t *image, return status; } - status = efi_open_file(volume, filename, &file, &size); + status = efi_open_file(volume, &fi, &file, &size); if (status != EFI_SUCCESS) goto err_close_volume; diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c index 8d3a707789de..05ccb229fb45 100644 --- a/drivers/firmware/efi/libstub/x86-stub.c +++ b/drivers/firmware/efi/libstub/x86-stub.c @@ -20,7 +20,7 @@ /* Maximum physical address for 64-bit kernel with 4-level paging */ #define MAXMEM_X86_64_4LEVEL (1ull << 46) -static efi_system_table_t *sys_table; +static efi_system_table_t *sys_table __efistub_global; extern const bool efi_is64; extern u32 image_offset; @@ -392,8 +392,6 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle, image_base = efi_table_attr(image, image_base); image_offset = (void *)startup_32 - image_base; - hdr = &((struct boot_params *)image_base)->hdr; - status = efi_allocate_pages(0x4000, (unsigned long *)&boot_params, ULONG_MAX); if (status != EFI_SUCCESS) { efi_printk("Failed to allocate lowmem for boot params\n"); @@ -742,8 +740,15 @@ unsigned long efi_main(efi_handle_t handle, * now use KERNEL_IMAGE_SIZE, which will be 512MiB, the same as what * KASLR uses. * - * Also relocate it if image_offset is zero, i.e. we weren't loaded by - * LoadImage, but we are not aligned correctly. + * Also relocate it if image_offset is zero, i.e. the kernel wasn't + * loaded by LoadImage, but rather by a bootloader that called the + * handover entry. The reason we must always relocate in this case is + * to handle the case of systemd-boot booting a unified kernel image, + * which is a PE executable that contains the bzImage and an initrd as + * COFF sections. The initrd section is placed after the bzImage + * without ensuring that there are at least init_size bytes available + * for the bzImage, and thus the compressed kernel's startup code may + * overwrite the initrd unless it is moved out of the way. */ buffer_start = ALIGN(bzimage_addr - image_offset, @@ -753,8 +758,7 @@ unsigned long efi_main(efi_handle_t handle, if ((buffer_start < LOAD_PHYSICAL_ADDR) || (IS_ENABLED(CONFIG_X86_32) && buffer_end > KERNEL_IMAGE_SIZE) || (IS_ENABLED(CONFIG_X86_64) && buffer_end > MAXMEM_X86_64_4LEVEL) || - (image_offset == 0 && !IS_ALIGNED(bzimage_addr, - hdr->kernel_alignment))) { + (image_offset == 0)) { status = efi_relocate_kernel(&bzimage_addr, hdr->init_size, hdr->init_size, hdr->pref_address, diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index 9f887a86e555..6cd1f6253814 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -28,9 +28,6 @@ subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror CFLAGS_i915_pci.o = $(call cc-disable-warning, override-init) CFLAGS_display/intel_fbdev.o = $(call cc-disable-warning, override-init) -subdir-ccflags-y += \ - $(call as-instr,movntdqa (%eax)$(comma)%xmm0,-DCONFIG_AS_MOVNTDQA) - subdir-ccflags-y += -I$(srctree)/$(src) # Please keep these build lists sorted! diff --git a/drivers/gpu/drm/i915/i915_memcpy.c b/drivers/gpu/drm/i915/i915_memcpy.c index fdd550405fd3..7b3b83bd5ab8 100644 --- a/drivers/gpu/drm/i915/i915_memcpy.c +++ b/drivers/gpu/drm/i915/i915_memcpy.c @@ -35,7 +35,6 @@ static DEFINE_STATIC_KEY_FALSE(has_movntdqa); -#ifdef CONFIG_AS_MOVNTDQA static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) { kernel_fpu_begin(); @@ -93,10 +92,6 @@ static void __memcpy_ntdqu(void *dst, const void *src, unsigned long len) kernel_fpu_end(); } -#else -static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) {} -static void __memcpy_ntdqu(void *dst, const void *src, unsigned long len) {} -#endif /** * i915_memcpy_from_wc: perform an accelerated *aligned* read from WC diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index 0370364169c4..501c43c5851d 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -839,6 +839,9 @@ void vmbus_initiate_unload(bool crash) { struct vmbus_channel_message_header hdr; + if (xchg(&vmbus_connection.conn_state, DISCONNECTED) == DISCONNECTED) + return; + /* Pre-Win2012R2 hosts don't support reconnect */ if (vmbus_proto_version < VERSION_WIN8_1) return; diff --git a/drivers/hv/hv_debugfs.c b/drivers/hv/hv_debugfs.c index 8a2878573582..ccf752b6659a 100644 --- a/drivers/hv/hv_debugfs.c +++ b/drivers/hv/hv_debugfs.c @@ -11,7 +11,7 @@ #include "hyperv_vmbus.h" -struct dentry *hv_debug_root; +static struct dentry *hv_debug_root; static int hv_debugfs_delay_get(void *data, u64 *val) { diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h index f5fa3b3c9baf..70b30e223a57 100644 --- a/drivers/hv/hyperv_vmbus.h +++ b/drivers/hv/hyperv_vmbus.h @@ -292,7 +292,7 @@ struct vmbus_msginfo { struct list_head msglist_entry; /* The message itself */ - unsigned char msg[0]; + unsigned char msg[]; }; diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index 029378c27421..a68bce4d0ddb 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -31,6 +31,7 @@ #include <linux/kdebug.h> #include <linux/efi.h> #include <linux/random.h> +#include <linux/kernel.h> #include <linux/syscore_ops.h> #include <clocksource/hyperv_timer.h> #include "hyperv_vmbus.h" @@ -48,14 +49,35 @@ static int hyperv_cpuhp_online; static void *hv_panic_page; +/* + * Boolean to control whether to report panic messages over Hyper-V. + * + * It can be set via /proc/sys/kernel/hyperv/record_panic_msg + */ +static int sysctl_record_panic_msg = 1; + +static int hyperv_report_reg(void) +{ + return !sysctl_record_panic_msg || !hv_panic_page; +} + static int hyperv_panic_event(struct notifier_block *nb, unsigned long val, void *args) { struct pt_regs *regs; - regs = current_pt_regs(); + vmbus_initiate_unload(true); - hyperv_report_panic(regs, val); + /* + * Hyper-V should be notified only once about a panic. If we will be + * doing hyperv_report_panic_msg() later with kmsg data, don't do + * the notification here. + */ + if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE + && hyperv_report_reg()) { + regs = current_pt_regs(); + hyperv_report_panic(regs, val, false); + } return NOTIFY_DONE; } @@ -65,7 +87,13 @@ static int hyperv_die_event(struct notifier_block *nb, unsigned long val, struct die_args *die = (struct die_args *)args; struct pt_regs *regs = die->regs; - hyperv_report_panic(regs, val); + /* + * Hyper-V should be notified only once about a panic. If we will be + * doing hyperv_report_panic_msg() later with kmsg data, don't do + * the notification here. + */ + if (hyperv_report_reg()) + hyperv_report_panic(regs, val, true); return NOTIFY_DONE; } @@ -1253,13 +1281,6 @@ static void vmbus_isr(void) } /* - * Boolean to control whether to report panic messages over Hyper-V. - * - * It can be set via /proc/sys/kernel/hyperv/record_panic_msg - */ -static int sysctl_record_panic_msg = 1; - -/* * Callback from kmsg_dump. Grab as much as possible from the end of the kmsg * buffer and call into Hyper-V to transfer the data. */ @@ -1382,19 +1403,29 @@ static int vmbus_bus_init(void) hv_panic_page = (void *)hv_alloc_hyperv_zeroed_page(); if (hv_panic_page) { ret = kmsg_dump_register(&hv_kmsg_dumper); - if (ret) + if (ret) { pr_err("Hyper-V: kmsg dump register " "error 0x%x\n", ret); + hv_free_hyperv_page( + (unsigned long)hv_panic_page); + hv_panic_page = NULL; + } } else pr_err("Hyper-V: panic message page memory " "allocation failed"); } register_die_notifier(&hyperv_die_block); - atomic_notifier_chain_register(&panic_notifier_list, - &hyperv_panic_block); } + /* + * Always register the panic notifier because we need to unload + * the VMbus channel connection to prevent any VMbus + * activity after the VM panics. + */ + atomic_notifier_chain_register(&panic_notifier_list, + &hyperv_panic_block); + vmbus_request_offers(); return 0; @@ -1407,7 +1438,6 @@ err_alloc: hv_remove_vmbus_irq(); bus_unregister(&hv_bus); - hv_free_hyperv_page((unsigned long)hv_panic_page); unregister_sysctl_table(hv_ctl_table_hdr); hv_ctl_table_hdr = NULL; return ret; @@ -2204,8 +2234,6 @@ static int vmbus_bus_suspend(struct device *dev) vmbus_initiate_unload(false); - vmbus_connection.conn_state = DISCONNECTED; - /* Reset the event for the next resume. */ reinit_completion(&vmbus_connection.ready_for_resume_event); @@ -2289,7 +2317,6 @@ static void hv_kexec_handler(void) { hv_stimer_global_cleanup(); vmbus_initiate_unload(false); - vmbus_connection.conn_state = DISCONNECTED; /* Make sure conn_state is set as hv_synic_cleanup checks for it */ mb(); cpuhp_remove_state(hyperv_cpuhp_online); @@ -2306,7 +2333,6 @@ static void hv_crash_handler(struct pt_regs *regs) * doing the cleanup for current CPU only. This should be sufficient * for kdump. */ - vmbus_connection.conn_state = DISCONNECTED; cpu = smp_processor_id(); hv_stimer_cleanup(cpu); hv_synic_disable_regs(cpu); diff --git a/drivers/isdn/hardware/mISDN/mISDNisar.c b/drivers/isdn/hardware/mISDN/mISDNisar.c index e325e87c0593..11e8c7d8b6e8 100644 --- a/drivers/isdn/hardware/mISDN/mISDNisar.c +++ b/drivers/isdn/hardware/mISDN/mISDNisar.c @@ -743,10 +743,10 @@ check_send(struct isar_hw *isar, u8 rdm) } } -const char *dmril[] = {"NO SPEED", "1200/75", "NODEF2", "75/1200", "NODEF4", +static const char *dmril[] = {"NO SPEED", "1200/75", "NODEF2", "75/1200", "NODEF4", "300", "600", "1200", "2400", "4800", "7200", "9600nt", "9600t", "12000", "14400", "WRONG"}; -const char *dmrim[] = {"NO MOD", "NO DEF", "V32/V32b", "V22", "V21", +static const char *dmrim[] = {"NO MOD", "NO DEF", "V32/V32b", "V22", "V21", "Bell103", "V23", "Bell202", "V17", "V29", "V27ter"}; static void diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 2d0d91db0ddb..5c444cd722bd 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -67,58 +67,6 @@ static const struct mt7530_mib_desc mt7530_mib[] = { }; static int -mt7623_trgmii_write(struct mt7530_priv *priv, u32 reg, u32 val) -{ - int ret; - - ret = regmap_write(priv->ethernet, TRGMII_BASE(reg), val); - if (ret < 0) - dev_err(priv->dev, - "failed to priv write register\n"); - return ret; -} - -static u32 -mt7623_trgmii_read(struct mt7530_priv *priv, u32 reg) -{ - int ret; - u32 val; - - ret = regmap_read(priv->ethernet, TRGMII_BASE(reg), &val); - if (ret < 0) { - dev_err(priv->dev, - "failed to priv read register\n"); - return ret; - } - - return val; -} - -static void -mt7623_trgmii_rmw(struct mt7530_priv *priv, u32 reg, - u32 mask, u32 set) -{ - u32 val; - - val = mt7623_trgmii_read(priv, reg); - val &= ~mask; - val |= set; - mt7623_trgmii_write(priv, reg, val); -} - -static void -mt7623_trgmii_set(struct mt7530_priv *priv, u32 reg, u32 val) -{ - mt7623_trgmii_rmw(priv, reg, 0, val); -} - -static void -mt7623_trgmii_clear(struct mt7530_priv *priv, u32 reg, u32 val) -{ - mt7623_trgmii_rmw(priv, reg, val, 0); -} - -static int core_read_mmd_indirect(struct mt7530_priv *priv, int prtad, int devad) { struct mii_bus *bus = priv->bus; @@ -530,27 +478,6 @@ mt7530_pad_clk_setup(struct dsa_switch *ds, int mode) for (i = 0 ; i < NUM_TRGMII_CTRL; i++) mt7530_rmw(priv, MT7530_TRGMII_RD(i), RD_TAP_MASK, RD_TAP(16)); - else - if (priv->id != ID_MT7621) - mt7623_trgmii_set(priv, GSW_INTF_MODE, - INTF_MODE_TRGMII); - - return 0; -} - -static int -mt7623_pad_clk_setup(struct dsa_switch *ds) -{ - struct mt7530_priv *priv = ds->priv; - int i; - - for (i = 0 ; i < NUM_TRGMII_CTRL; i++) - mt7623_trgmii_write(priv, GSW_TRGMII_TD_ODT(i), - TD_DM_DRVP(8) | TD_DM_DRVN(8)); - - mt7623_trgmii_set(priv, GSW_TRGMII_RCK_CTRL, RX_RST | RXC_DQSISEL); - mt7623_trgmii_clear(priv, GSW_TRGMII_RCK_CTRL, RX_RST); - return 0; } @@ -846,8 +773,9 @@ mt7530_port_set_vlan_unaware(struct dsa_switch *ds, int port) */ mt7530_rmw(priv, MT7530_PCR_P(port), PCR_PORT_VLAN_MASK, MT7530_PORT_MATRIX_MODE); - mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK, - VLAN_ATTR(MT7530_VLAN_TRANSPARENT)); + mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK | PVC_EG_TAG_MASK, + VLAN_ATTR(MT7530_VLAN_TRANSPARENT) | + PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT)); for (i = 0; i < MT7530_NUM_PORTS; i++) { if (dsa_is_user_port(ds, i) && @@ -863,8 +791,8 @@ mt7530_port_set_vlan_unaware(struct dsa_switch *ds, int port) if (all_user_ports_removed) { mt7530_write(priv, MT7530_PCR_P(MT7530_CPU_PORT), PCR_MATRIX(dsa_user_ports(priv->ds))); - mt7530_write(priv, MT7530_PVC_P(MT7530_CPU_PORT), - PORT_SPEC_TAG); + mt7530_write(priv, MT7530_PVC_P(MT7530_CPU_PORT), PORT_SPEC_TAG + | PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT)); } } @@ -890,8 +818,9 @@ mt7530_port_set_vlan_aware(struct dsa_switch *ds, int port) /* Set the port as a user port which is to be able to recognize VID * from incoming packets before fetching entry within the VLAN table. */ - mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK, - VLAN_ATTR(MT7530_VLAN_USER)); + mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK | PVC_EG_TAG_MASK, + VLAN_ATTR(MT7530_VLAN_USER) | + PVC_EG_TAG(MT7530_VLAN_EG_DISABLED)); } static void @@ -1303,10 +1232,6 @@ mt7530_setup(struct dsa_switch *ds) dn = dsa_to_port(ds, MT7530_CPU_PORT)->master->dev.of_node->parent; if (priv->id == ID_MT7530) { - priv->ethernet = syscon_node_to_regmap(dn); - if (IS_ERR(priv->ethernet)) - return PTR_ERR(priv->ethernet); - regulator_set_voltage(priv->core_pwr, 1000000, 1000000); ret = regulator_enable(priv->core_pwr); if (ret < 0) { @@ -1380,6 +1305,10 @@ mt7530_setup(struct dsa_switch *ds) mt7530_cpu_port_enable(priv, i); else mt7530_port_disable(ds, i); + + /* Enable consistent egress tag */ + mt7530_rmw(priv, MT7530_PVC_P(i), PVC_EG_TAG_MASK, + PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT)); } /* Setup port 5 */ @@ -1468,14 +1397,6 @@ static void mt7530_phylink_mac_config(struct dsa_switch *ds, int port, /* Setup TX circuit incluing relevant PAD and driving */ mt7530_pad_clk_setup(ds, state->interface); - if (priv->id == ID_MT7530) { - /* Setup RX circuit, relevant PAD and driving on the - * host which must be placed after the setup on the - * device side is all finished. - */ - mt7623_pad_clk_setup(ds); - } - priv->p6_interface = state->interface; break; default: diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h index ef9b52f3152b..979bb6374678 100644 --- a/drivers/net/dsa/mt7530.h +++ b/drivers/net/dsa/mt7530.h @@ -172,9 +172,16 @@ enum mt7530_port_mode { /* Register for port vlan control */ #define MT7530_PVC_P(x) (0x2010 + ((x) * 0x100)) #define PORT_SPEC_TAG BIT(5) +#define PVC_EG_TAG(x) (((x) & 0x7) << 8) +#define PVC_EG_TAG_MASK PVC_EG_TAG(7) #define VLAN_ATTR(x) (((x) & 0x3) << 6) #define VLAN_ATTR_MASK VLAN_ATTR(3) +enum mt7530_vlan_port_eg_tag { + MT7530_VLAN_EG_DISABLED = 0, + MT7530_VLAN_EG_CONSISTENT = 1, +}; + enum mt7530_vlan_port_attr { MT7530_VLAN_USER = 0, MT7530_VLAN_TRANSPARENT = 3, @@ -277,7 +284,6 @@ enum mt7530_vlan_port_attr { /* Registers for TRGMII on the both side */ #define MT7530_TRGMII_RCK_CTRL 0x7a00 -#define GSW_TRGMII_RCK_CTRL 0x300 #define RX_RST BIT(31) #define RXC_DQSISEL BIT(30) #define DQSI1_TAP_MASK (0x7f << 8) @@ -286,31 +292,24 @@ enum mt7530_vlan_port_attr { #define DQSI0_TAP(x) ((x) & 0x7f) #define MT7530_TRGMII_RCK_RTT 0x7a04 -#define GSW_TRGMII_RCK_RTT 0x304 #define DQS1_GATE BIT(31) #define DQS0_GATE BIT(30) #define MT7530_TRGMII_RD(x) (0x7a10 + (x) * 8) -#define GSW_TRGMII_RD(x) (0x310 + (x) * 8) #define BSLIP_EN BIT(31) #define EDGE_CHK BIT(30) #define RD_TAP_MASK 0x7f #define RD_TAP(x) ((x) & 0x7f) -#define GSW_TRGMII_TXCTRL 0x340 #define MT7530_TRGMII_TXCTRL 0x7a40 #define TRAIN_TXEN BIT(31) #define TXC_INV BIT(30) #define TX_RST BIT(28) #define MT7530_TRGMII_TD_ODT(i) (0x7a54 + 8 * (i)) -#define GSW_TRGMII_TD_ODT(i) (0x354 + 8 * (i)) #define TD_DM_DRVP(x) ((x) & 0xf) #define TD_DM_DRVN(x) (((x) & 0xf) << 4) -#define GSW_INTF_MODE 0x390 -#define INTF_MODE_TRGMII BIT(1) - #define MT7530_TRGMII_TCK_CTRL 0x7a78 #define TCK_TAP(x) (((x) & 0xf) << 8) @@ -443,7 +442,6 @@ static const char *p5_intf_modes(unsigned int p5_interface) * @ds: The pointer to the dsa core structure * @bus: The bus used for the device and built-in PHY * @rstc: The pointer to reset control used by MCM - * @ethernet: The regmap used for access TRGMII-based registers * @core_pwr: The power supplied into the core * @io_pwr: The power supplied into the I/O * @reset: The descriptor for GPIO line tied to its reset pin @@ -460,7 +458,6 @@ struct mt7530_priv { struct dsa_switch *ds; struct mii_bus *bus; struct reset_control *rstc; - struct regmap *ethernet; struct regulator *core_pwr; struct regulator *io_pwr; struct gpio_desc *reset; diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 221593261e8f..dd8a5666a584 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -709,7 +709,8 @@ static void mv88e6xxx_mac_link_down(struct dsa_switch *ds, int port, ops = chip->info->ops; mv88e6xxx_reg_lock(chip); - if (!mv88e6xxx_port_ppu_updates(chip, port) && ops->port_set_link) + if ((!mv88e6xxx_port_ppu_updates(chip, port) || + mode == MLO_AN_FIXED) && ops->port_set_link) err = ops->port_set_link(chip, port, LINK_FORCED_DOWN); mv88e6xxx_reg_unlock(chip); @@ -731,7 +732,7 @@ static void mv88e6xxx_mac_link_up(struct dsa_switch *ds, int port, ops = chip->info->ops; mv88e6xxx_reg_lock(chip); - if (!mv88e6xxx_port_ppu_updates(chip, port)) { + if (!mv88e6xxx_port_ppu_updates(chip, port) || mode == MLO_AN_FIXED) { /* FIXME: for an automedia port, should we force the link * down here - what if the link comes up due to "other" media * while we're bringing the port up, how is the exclusivity diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c index 79ca3aadb864..d0a3764ff0cf 100644 --- a/drivers/net/dsa/ocelot/felix.c +++ b/drivers/net/dsa/ocelot/felix.c @@ -46,11 +46,8 @@ static int felix_fdb_add(struct dsa_switch *ds, int port, const unsigned char *addr, u16 vid) { struct ocelot *ocelot = ds->priv; - bool vlan_aware; - vlan_aware = dsa_port_is_vlan_filtering(dsa_to_port(ds, port)); - - return ocelot_fdb_add(ocelot, port, addr, vid, vlan_aware); + return ocelot_fdb_add(ocelot, port, addr, vid); } static int felix_fdb_del(struct dsa_switch *ds, int port, diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c index b71f9b04a51e..a87264f95f1a 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -514,7 +514,7 @@ static void xgbe_isr_task(unsigned long data) xgbe_disable_rx_tx_ints(pdata); /* Turn on polling */ - __napi_schedule_irqoff(&pdata->napi); + __napi_schedule(&pdata->napi); } } else { /* Don't clear Rx/Tx status if doing per channel DMA diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c index 239f678a94ed..2a3480fc1d91 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c +++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c @@ -3742,7 +3742,7 @@ int t4_phy_fw_ver(struct adapter *adap, int *phy_fw_ver) FW_PARAMS_PARAM_Z_V(FW_PARAMS_PARAM_DEV_PHYFW_VERSION)); ret = t4_query_params(adap, adap->mbox, adap->pf, 0, 1, ¶m, &val); - if (ret < 0) + if (ret) return ret; *phy_fw_ver = val; return 0; diff --git a/drivers/net/ethernet/dec/tulip/tulip_core.c b/drivers/net/ethernet/dec/tulip/tulip_core.c index 48ea658aa1a6..15efc294f513 100644 --- a/drivers/net/ethernet/dec/tulip/tulip_core.c +++ b/drivers/net/ethernet/dec/tulip/tulip_core.c @@ -1277,7 +1277,7 @@ static const struct net_device_ops tulip_netdev_ops = { #endif }; -const struct pci_device_id early_486_chipsets[] = { +static const struct pci_device_id early_486_chipsets[] = { { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82424) }, { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_496) }, { }, diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h index bd898f5b4da5..e74dd1f86bba 100644 --- a/drivers/net/ethernet/freescale/fec.h +++ b/drivers/net/ethernet/freescale/fec.h @@ -488,6 +488,12 @@ struct fec_enet_priv_rx_q { struct sk_buff *rx_skbuff[RX_RING_SIZE]; }; +struct fec_stop_mode_gpr { + struct regmap *gpr; + u8 reg; + u8 bit; +}; + /* The FEC buffer descriptors track the ring buffers. The rx_bd_base and * tx_bd_base always point to the base of the buffer descriptors. The * cur_rx and cur_tx point to the currently available buffer. @@ -562,6 +568,7 @@ struct fec_enet_private { int hwts_tx_en; struct delayed_work time_keep; struct regulator *reg_phy; + struct fec_stop_mode_gpr stop_gpr; unsigned int tx_align; unsigned int rx_align; diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index c1c267b61647..dc6f8763a5d4 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -62,6 +62,8 @@ #include <linux/if_vlan.h> #include <linux/pinctrl/consumer.h> #include <linux/prefetch.h> +#include <linux/mfd/syscon.h> +#include <linux/regmap.h> #include <soc/imx/cpuidle.h> #include <asm/cacheflush.h> @@ -84,6 +86,56 @@ static void fec_enet_itr_coal_init(struct net_device *ndev); #define FEC_ENET_OPD_V 0xFFF0 #define FEC_MDIO_PM_TIMEOUT 100 /* ms */ +struct fec_devinfo { + u32 quirks; + u8 stop_gpr_reg; + u8 stop_gpr_bit; +}; + +static const struct fec_devinfo fec_imx25_info = { + .quirks = FEC_QUIRK_USE_GASKET | FEC_QUIRK_MIB_CLEAR | + FEC_QUIRK_HAS_FRREG, +}; + +static const struct fec_devinfo fec_imx27_info = { + .quirks = FEC_QUIRK_MIB_CLEAR | FEC_QUIRK_HAS_FRREG, +}; + +static const struct fec_devinfo fec_imx28_info = { + .quirks = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME | + FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC | + FEC_QUIRK_HAS_FRREG, +}; + +static const struct fec_devinfo fec_imx6q_info = { + .quirks = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | + FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | + FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR006358 | + FEC_QUIRK_HAS_RACC, + .stop_gpr_reg = 0x34, + .stop_gpr_bit = 27, +}; + +static const struct fec_devinfo fec_mvf600_info = { + .quirks = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_RACC, +}; + +static const struct fec_devinfo fec_imx6x_info = { + .quirks = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | + FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | + FEC_QUIRK_HAS_VLAN | FEC_QUIRK_HAS_AVB | + FEC_QUIRK_ERR007885 | FEC_QUIRK_BUG_CAPTURE | + FEC_QUIRK_HAS_RACC | FEC_QUIRK_HAS_COALESCE, +}; + +static const struct fec_devinfo fec_imx6ul_info = { + .quirks = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | + FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | + FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR007885 | + FEC_QUIRK_BUG_CAPTURE | FEC_QUIRK_HAS_RACC | + FEC_QUIRK_HAS_COALESCE, +}; + static struct platform_device_id fec_devtype[] = { { /* keep it for coldfire */ @@ -91,39 +143,25 @@ static struct platform_device_id fec_devtype[] = { .driver_data = 0, }, { .name = "imx25-fec", - .driver_data = FEC_QUIRK_USE_GASKET | FEC_QUIRK_MIB_CLEAR | - FEC_QUIRK_HAS_FRREG, + .driver_data = (kernel_ulong_t)&fec_imx25_info, }, { .name = "imx27-fec", - .driver_data = FEC_QUIRK_MIB_CLEAR | FEC_QUIRK_HAS_FRREG, + .driver_data = (kernel_ulong_t)&fec_imx27_info, }, { .name = "imx28-fec", - .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME | - FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC | - FEC_QUIRK_HAS_FRREG, + .driver_data = (kernel_ulong_t)&fec_imx28_info, }, { .name = "imx6q-fec", - .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | - FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | - FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR006358 | - FEC_QUIRK_HAS_RACC, + .driver_data = (kernel_ulong_t)&fec_imx6q_info, }, { .name = "mvf600-fec", - .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_RACC, + .driver_data = (kernel_ulong_t)&fec_mvf600_info, }, { .name = "imx6sx-fec", - .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | - FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | - FEC_QUIRK_HAS_VLAN | FEC_QUIRK_HAS_AVB | - FEC_QUIRK_ERR007885 | FEC_QUIRK_BUG_CAPTURE | - FEC_QUIRK_HAS_RACC | FEC_QUIRK_HAS_COALESCE, + .driver_data = (kernel_ulong_t)&fec_imx6x_info, }, { .name = "imx6ul-fec", - .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT | - FEC_QUIRK_HAS_BUFDESC_EX | FEC_QUIRK_HAS_CSUM | - FEC_QUIRK_HAS_VLAN | FEC_QUIRK_ERR007885 | - FEC_QUIRK_BUG_CAPTURE | FEC_QUIRK_HAS_RACC | - FEC_QUIRK_HAS_COALESCE, + .driver_data = (kernel_ulong_t)&fec_imx6ul_info, }, { /* sentinel */ } @@ -1092,11 +1130,28 @@ fec_restart(struct net_device *ndev) } +static void fec_enet_stop_mode(struct fec_enet_private *fep, bool enabled) +{ + struct fec_platform_data *pdata = fep->pdev->dev.platform_data; + struct fec_stop_mode_gpr *stop_gpr = &fep->stop_gpr; + + if (stop_gpr->gpr) { + if (enabled) + regmap_update_bits(stop_gpr->gpr, stop_gpr->reg, + BIT(stop_gpr->bit), + BIT(stop_gpr->bit)); + else + regmap_update_bits(stop_gpr->gpr, stop_gpr->reg, + BIT(stop_gpr->bit), 0); + } else if (pdata && pdata->sleep_mode_enable) { + pdata->sleep_mode_enable(enabled); + } +} + static void fec_stop(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(ndev); - struct fec_platform_data *pdata = fep->pdev->dev.platform_data; u32 rmii_mode = readl(fep->hwp + FEC_R_CNTRL) & (1 << 8); u32 val; @@ -1125,9 +1180,7 @@ fec_stop(struct net_device *ndev) val = readl(fep->hwp + FEC_ECNTRL); val |= (FEC_ECR_MAGICEN | FEC_ECR_SLEEP); writel(val, fep->hwp + FEC_ECNTRL); - - if (pdata && pdata->sleep_mode_enable) - pdata->sleep_mode_enable(true); + fec_enet_stop_mode(fep, true); } writel(fep->phy_speed, fep->hwp + FEC_MII_SPEED); @@ -3398,6 +3451,37 @@ static int fec_enet_get_irq_cnt(struct platform_device *pdev) return irq_cnt; } +static int fec_enet_init_stop_mode(struct fec_enet_private *fep, + struct fec_devinfo *dev_info, + struct device_node *np) +{ + struct device_node *gpr_np; + int ret = 0; + + if (!dev_info) + return 0; + + gpr_np = of_parse_phandle(np, "gpr", 0); + if (!gpr_np) + return 0; + + fep->stop_gpr.gpr = syscon_node_to_regmap(gpr_np); + if (IS_ERR(fep->stop_gpr.gpr)) { + dev_err(&fep->pdev->dev, "could not find gpr regmap\n"); + ret = PTR_ERR(fep->stop_gpr.gpr); + fep->stop_gpr.gpr = NULL; + goto out; + } + + fep->stop_gpr.reg = dev_info->stop_gpr_reg; + fep->stop_gpr.bit = dev_info->stop_gpr_bit; + +out: + of_node_put(gpr_np); + + return ret; +} + static int fec_probe(struct platform_device *pdev) { @@ -3413,6 +3497,7 @@ fec_probe(struct platform_device *pdev) int num_rx_qs; char irq_name[8]; int irq_cnt; + struct fec_devinfo *dev_info; fec_enet_get_queue_num(pdev, &num_tx_qs, &num_rx_qs); @@ -3430,7 +3515,9 @@ fec_probe(struct platform_device *pdev) of_id = of_match_device(fec_dt_ids, &pdev->dev); if (of_id) pdev->id_entry = of_id->data; - fep->quirks = pdev->id_entry->driver_data; + dev_info = (struct fec_devinfo *)pdev->id_entry->driver_data; + if (dev_info) + fep->quirks = dev_info->quirks; fep->netdev = ndev; fep->num_rx_queues = num_rx_qs; @@ -3464,6 +3551,10 @@ fec_probe(struct platform_device *pdev) if (of_get_property(np, "fsl,magic-packet", NULL)) fep->wol_flag |= FEC_WOL_HAS_MAGIC_PACKET; + ret = fec_enet_init_stop_mode(fep, dev_info, np); + if (ret) + goto failed_stop_mode; + phy_node = of_parse_phandle(np, "phy-handle", 0); if (!phy_node && of_phy_is_fixed_link(np)) { ret = of_phy_register_fixed_link(np); @@ -3632,6 +3723,7 @@ failed_clk: if (of_phy_is_fixed_link(np)) of_phy_deregister_fixed_link(np); of_node_put(phy_node); +failed_stop_mode: failed_phy: dev_id--; failed_ioremap: @@ -3709,7 +3801,6 @@ static int __maybe_unused fec_resume(struct device *dev) { struct net_device *ndev = dev_get_drvdata(dev); struct fec_enet_private *fep = netdev_priv(ndev); - struct fec_platform_data *pdata = fep->pdev->dev.platform_data; int ret; int val; @@ -3727,8 +3818,8 @@ static int __maybe_unused fec_resume(struct device *dev) goto failed_clk; } if (fep->wol_flag & FEC_WOL_FLAG_ENABLE) { - if (pdata && pdata->sleep_mode_enable) - pdata->sleep_mode_enable(false); + fec_enet_stop_mode(fep, false); + val = readl(fep->hwp + FEC_ECNTRL); val &= ~(FEC_ECR_MAGICEN | FEC_ECR_SLEEP); writel(val, fep->hwp + FEC_ECNTRL); diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index 5be61f73b6ab..51889770958d 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -5383,7 +5383,7 @@ static int __init mvneta_driver_init(void) { int ret; - ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, "net/mvmeta:online", + ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, "net/mvneta:online", mvneta_cpu_online, mvneta_cpu_down_prepare); if (ret < 0) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 8d28f90acfe7..09047109d0da 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -65,6 +65,17 @@ u32 mtk_r32(struct mtk_eth *eth, unsigned reg) return __raw_readl(eth->base + reg); } +u32 mtk_m32(struct mtk_eth *eth, u32 mask, u32 set, unsigned reg) +{ + u32 val; + + val = mtk_r32(eth, reg); + val &= ~mask; + val |= set; + mtk_w32(eth, val, reg); + return reg; +} + static int mtk_mdio_busy_wait(struct mtk_eth *eth) { unsigned long t_start = jiffies; @@ -193,7 +204,7 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode, struct mtk_mac *mac = container_of(config, struct mtk_mac, phylink_config); struct mtk_eth *eth = mac->hw; - u32 mcr_cur, mcr_new, sid; + u32 mcr_cur, mcr_new, sid, i; int val, ge_mode, err; /* MT76x8 has no hardware settings between for the MAC */ @@ -255,6 +266,17 @@ static void mtk_mac_config(struct phylink_config *config, unsigned int mode, PHY_INTERFACE_MODE_TRGMII) mtk_gmac0_rgmii_adjust(mac->hw, state->speed); + + /* mt7623_pad_clk_setup */ + for (i = 0 ; i < NUM_TRGMII_CTRL; i++) + mtk_w32(mac->hw, + TD_DM_DRVP(8) | TD_DM_DRVN(8), + TRGMII_TD_ODT(i)); + + /* Assert/release MT7623 RXC reset */ + mtk_m32(mac->hw, 0, RXC_RST | RXC_DQSISEL, + TRGMII_RCK_CTRL); + mtk_m32(mac->hw, RXC_RST, 0, TRGMII_RCK_CTRL); } } diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h index 85830fe14a1b..454cfcd465fd 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h @@ -352,10 +352,13 @@ #define DQSI0(x) ((x << 0) & GENMASK(6, 0)) #define DQSI1(x) ((x << 8) & GENMASK(14, 8)) #define RXCTL_DMWTLAT(x) ((x << 16) & GENMASK(18, 16)) +#define RXC_RST BIT(31) #define RXC_DQSISEL BIT(30) #define RCK_CTRL_RGMII_1000 (RXC_DQSISEL | RXCTL_DMWTLAT(2) | DQSI1(16)) #define RCK_CTRL_RGMII_10_100 RXCTL_DMWTLAT(2) +#define NUM_TRGMII_CTRL 5 + /* TRGMII RXC control register */ #define TRGMII_TCK_CTRL 0x10340 #define TXCTL_DMWTLAT(x) ((x << 16) & GENMASK(18, 16)) @@ -363,6 +366,11 @@ #define TCK_CTRL_RGMII_1000 TXCTL_DMWTLAT(2) #define TCK_CTRL_RGMII_10_100 (TXC_INV | TXCTL_DMWTLAT(2)) +/* TRGMII TX Drive Strength */ +#define TRGMII_TD_ODT(i) (0x10354 + 8 * (i)) +#define TD_DM_DRVP(x) ((x) & 0xf) +#define TD_DM_DRVN(x) (((x) & 0xf) << 4) + /* TRGMII Interface mode register */ #define INTF_MODE 0x10390 #define TRGMII_INTF_DIS BIT(0) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c index bdeb291f6b67..e94f0c4d74a7 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c @@ -23,7 +23,10 @@ static int mlx5_devlink_flash_update(struct devlink *devlink, if (err) return err; - return mlx5_firmware_flash(dev, fw, extack); + err = mlx5_firmware_flash(dev, fw, extack); + release_firmware(fw); + + return err; } static u8 mlx5_fw_ver_major(u32 version) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index ad3e3a65d403..16416eaac39e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -67,11 +67,9 @@ struct mlx5_ct_ft { struct nf_flowtable *nf_ft; struct mlx5_tc_ct_priv *ct_priv; struct rhashtable ct_entries_ht; - struct list_head ct_entries_list; }; struct mlx5_ct_entry { - struct list_head list; u16 zone; struct rhash_head node; struct flow_rule *flow_rule; @@ -617,8 +615,6 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft, if (err) goto err_insert; - list_add(&entry->list, &ft->ct_entries_list); - return 0; err_insert: @@ -646,7 +642,6 @@ mlx5_tc_ct_block_flow_offload_del(struct mlx5_ct_ft *ft, WARN_ON(rhashtable_remove_fast(&ft->ct_entries_ht, &entry->node, cts_ht_params)); - list_del(&entry->list); kfree(entry); return 0; @@ -818,7 +813,6 @@ mlx5_tc_ct_add_ft_cb(struct mlx5_tc_ct_priv *ct_priv, u16 zone, ft->zone = zone; ft->nf_ft = nf_ft; ft->ct_priv = ct_priv; - INIT_LIST_HEAD(&ft->ct_entries_list); refcount_set(&ft->refcount, 1); err = rhashtable_init(&ft->ct_entries_ht, &cts_ht_params); @@ -847,12 +841,12 @@ err_init: } static void -mlx5_tc_ct_flush_ft(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_ct_ft *ft) +mlx5_tc_ct_flush_ft_entry(void *ptr, void *arg) { - struct mlx5_ct_entry *entry; + struct mlx5_tc_ct_priv *ct_priv = arg; + struct mlx5_ct_entry *entry = ptr; - list_for_each_entry(entry, &ft->ct_entries_list, list) - mlx5_tc_ct_entry_del_rules(ft->ct_priv, entry); + mlx5_tc_ct_entry_del_rules(ct_priv, entry); } static void @@ -863,9 +857,10 @@ mlx5_tc_ct_del_ft_cb(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_ct_ft *ft) nf_flow_table_offload_del_cb(ft->nf_ft, mlx5_tc_ct_block_flow_offload, ft); - mlx5_tc_ct_flush_ft(ct_priv, ft); rhashtable_remove_fast(&ct_priv->zone_ht, &ft->node, zone_params); - rhashtable_destroy(&ft->ct_entries_ht); + rhashtable_free_and_destroy(&ft->ct_entries_ht, + mlx5_tc_ct_flush_ft_entry, + ct_priv); kfree(ft); } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index dd7f338425eb..f02150a97ac8 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -5526,8 +5526,8 @@ static void mlx5e_remove(struct mlx5_core_dev *mdev, void *vpriv) #ifdef CONFIG_MLX5_CORE_EN_DCB mlx5e_dcbnl_delete_app(priv); #endif - mlx5e_devlink_port_unregister(priv); unregister_netdev(priv->netdev); + mlx5e_devlink_port_unregister(priv); mlx5e_detach(mdev, vpriv); mlx5e_destroy_netdev(priv); } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c index 2a0243e4af75..55457f268495 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -2050,29 +2050,30 @@ static int register_devlink_port(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep = rpriv->rep; struct netdev_phys_item_id ppid = {}; unsigned int dl_port_index = 0; + u16 pfnum; if (!is_devlink_port_supported(dev, rpriv)) return 0; mlx5e_rep_get_port_parent_id(rpriv->netdev, &ppid); + pfnum = PCI_FUNC(dev->pdev->devfn); if (rep->vport == MLX5_VPORT_UPLINK) { devlink_port_attrs_set(&rpriv->dl_port, DEVLINK_PORT_FLAVOUR_PHYSICAL, - PCI_FUNC(dev->pdev->devfn), false, 0, + pfnum, false, 0, &ppid.id[0], ppid.id_len); dl_port_index = vport_to_devlink_port_index(dev, rep->vport); } else if (rep->vport == MLX5_VPORT_PF) { devlink_port_attrs_pci_pf_set(&rpriv->dl_port, &ppid.id[0], ppid.id_len, - dev->pdev->devfn); + pfnum); dl_port_index = rep->vport; } else if (mlx5_eswitch_is_vf_vport(dev->priv.eswitch, rpriv->rep->vport)) { devlink_port_attrs_pci_vf_set(&rpriv->dl_port, &ppid.id[0], ppid.id_len, - dev->pdev->devfn, - rep->vport - 1); + pfnum, rep->vport - 1); dl_port_index = vport_to_devlink_port_index(dev, rep->vport); } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 438128dde187..a574c588269a 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -1343,7 +1343,8 @@ mlx5e_tc_add_fdb_flow(struct mlx5e_priv *priv, if (err) return err; - if (attr->action & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR) { + if (attr->action & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR && + !(attr->ct_attr.ct_action & TCA_CT_ACT_CLEAR)) { err = mlx5e_attach_mod_hdr(priv, flow, parse_attr); dealloc_mod_hdr_actions(&parse_attr->mod_hdr_acts); if (err) @@ -3558,12 +3559,13 @@ static int add_vlan_pop_action(struct mlx5e_priv *priv, struct mlx5_esw_flow_attr *attr, u32 *action) { - int nest_level = attr->parse_attr->filter_dev->lower_level; struct flow_action_entry vlan_act = { .id = FLOW_ACTION_VLAN_POP, }; - int err = 0; + int nest_level, err = 0; + nest_level = attr->parse_attr->filter_dev->lower_level - + priv->netdev->lower_level; while (nest_level--) { err = parse_tc_vlan_action(priv, &vlan_act, attr, action); if (err) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h index 39f42f985fbd..c1848b57f61c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h @@ -403,7 +403,6 @@ enum { MLX5_ESW_ATTR_FLAG_VLAN_HANDLED = BIT(0), MLX5_ESW_ATTR_FLAG_SLOW_PATH = BIT(1), MLX5_ESW_ATTR_FLAG_NO_IN_PORT = BIT(2), - MLX5_ESW_ATTR_FLAG_HAIRPIN = BIT(3), }; struct mlx5_esw_flow_attr { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c index f171eb2234b0..b2e38e0cde97 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c @@ -300,7 +300,6 @@ mlx5_eswitch_add_offloaded_rule(struct mlx5_eswitch *esw, bool split = !!(attr->split_count); struct mlx5_flow_handle *rule; struct mlx5_flow_table *fdb; - bool hairpin = false; int j, i = 0; if (esw->mode != MLX5_ESWITCH_OFFLOADS) @@ -398,21 +397,16 @@ mlx5_eswitch_add_offloaded_rule(struct mlx5_eswitch *esw, goto err_esw_get; } - if (mlx5_eswitch_termtbl_required(esw, attr, &flow_act, spec)) { + if (mlx5_eswitch_termtbl_required(esw, attr, &flow_act, spec)) rule = mlx5_eswitch_add_termtbl_rule(esw, fdb, spec, attr, &flow_act, dest, i); - hairpin = true; - } else { + else rule = mlx5_add_flow_rules(fdb, spec, &flow_act, dest, i); - } if (IS_ERR(rule)) goto err_add_rule; else atomic64_inc(&esw->offloads.num_flows); - if (hairpin) - attr->flags |= MLX5_ESW_ATTR_FLAG_HAIRPIN; - return rule; err_add_rule: @@ -501,7 +495,7 @@ __mlx5_eswitch_del_rule(struct mlx5_eswitch *esw, mlx5_del_flow_rules(rule); - if (attr->flags & MLX5_ESW_ATTR_FLAG_HAIRPIN) { + if (!(attr->flags & MLX5_ESW_ATTR_FLAG_SLOW_PATH)) { /* unref the term table */ for (i = 0; i < MLX5_MAX_FLOW_FWD_VPORTS; i++) { if (attr->dests[i].termtbl) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/health.c b/drivers/net/ethernet/mellanox/mlx5/core/health.c index fa1665caac46..f99e1752d4e5 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/health.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/health.c @@ -243,7 +243,7 @@ recover_from_sw_reset: if (mlx5_get_nic_state(dev) == MLX5_NIC_IFC_DISABLED) break; - cond_resched(); + msleep(20); } while (!time_after(jiffies, end)); if (mlx5_get_nic_state(dev) != MLX5_NIC_IFC_DISABLED) { diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c index b4731df186f4..a8c48a4a708f 100644 --- a/drivers/net/ethernet/mscc/ocelot.c +++ b/drivers/net/ethernet/mscc/ocelot.c @@ -183,44 +183,47 @@ static void ocelot_vlan_mode(struct ocelot *ocelot, int port, ocelot_write(ocelot, val, ANA_VLANMASK); } -void ocelot_port_vlan_filtering(struct ocelot *ocelot, int port, - bool vlan_aware) +static int ocelot_port_set_native_vlan(struct ocelot *ocelot, int port, + u16 vid) { struct ocelot_port *ocelot_port = ocelot->ports[port]; - u32 val; + u32 val = 0; - if (vlan_aware) - val = ANA_PORT_VLAN_CFG_VLAN_AWARE_ENA | - ANA_PORT_VLAN_CFG_VLAN_POP_CNT(1); - else - val = 0; - ocelot_rmw_gix(ocelot, val, - ANA_PORT_VLAN_CFG_VLAN_AWARE_ENA | - ANA_PORT_VLAN_CFG_VLAN_POP_CNT_M, - ANA_PORT_VLAN_CFG, port); + if (ocelot_port->vid != vid) { + /* Always permit deleting the native VLAN (vid = 0) */ + if (ocelot_port->vid && vid) { + dev_err(ocelot->dev, + "Port already has a native VLAN: %d\n", + ocelot_port->vid); + return -EBUSY; + } + ocelot_port->vid = vid; + } + + ocelot_rmw_gix(ocelot, REW_PORT_VLAN_CFG_PORT_VID(vid), + REW_PORT_VLAN_CFG_PORT_VID_M, + REW_PORT_VLAN_CFG, port); - if (vlan_aware && !ocelot_port->vid) + if (ocelot_port->vlan_aware && !ocelot_port->vid) /* If port is vlan-aware and tagged, drop untagged and priority * tagged frames. */ val = ANA_PORT_DROP_CFG_DROP_UNTAGGED_ENA | ANA_PORT_DROP_CFG_DROP_PRIO_S_TAGGED_ENA | ANA_PORT_DROP_CFG_DROP_PRIO_C_TAGGED_ENA; - else - val = 0; ocelot_rmw_gix(ocelot, val, ANA_PORT_DROP_CFG_DROP_UNTAGGED_ENA | ANA_PORT_DROP_CFG_DROP_PRIO_S_TAGGED_ENA | ANA_PORT_DROP_CFG_DROP_PRIO_C_TAGGED_ENA, ANA_PORT_DROP_CFG, port); - if (vlan_aware) { + if (ocelot_port->vlan_aware) { if (ocelot_port->vid) /* Tag all frames except when VID == DEFAULT_VLAN */ - val |= REW_TAG_CFG_TAG_CFG(1); + val = REW_TAG_CFG_TAG_CFG(1); else /* Tag all frames */ - val |= REW_TAG_CFG_TAG_CFG(3); + val = REW_TAG_CFG_TAG_CFG(3); } else { /* Port tagging disabled. */ val = REW_TAG_CFG_TAG_CFG(0); @@ -228,31 +231,31 @@ void ocelot_port_vlan_filtering(struct ocelot *ocelot, int port, ocelot_rmw_gix(ocelot, val, REW_TAG_CFG_TAG_CFG_M, REW_TAG_CFG, port); + + return 0; } -EXPORT_SYMBOL(ocelot_port_vlan_filtering); -static int ocelot_port_set_native_vlan(struct ocelot *ocelot, int port, - u16 vid) +void ocelot_port_vlan_filtering(struct ocelot *ocelot, int port, + bool vlan_aware) { struct ocelot_port *ocelot_port = ocelot->ports[port]; + u32 val; - if (ocelot_port->vid != vid) { - /* Always permit deleting the native VLAN (vid = 0) */ - if (ocelot_port->vid && vid) { - dev_err(ocelot->dev, - "Port already has a native VLAN: %d\n", - ocelot_port->vid); - return -EBUSY; - } - ocelot_port->vid = vid; - } + ocelot_port->vlan_aware = vlan_aware; - ocelot_rmw_gix(ocelot, REW_PORT_VLAN_CFG_PORT_VID(vid), - REW_PORT_VLAN_CFG_PORT_VID_M, - REW_PORT_VLAN_CFG, port); + if (vlan_aware) + val = ANA_PORT_VLAN_CFG_VLAN_AWARE_ENA | + ANA_PORT_VLAN_CFG_VLAN_POP_CNT(1); + else + val = 0; + ocelot_rmw_gix(ocelot, val, + ANA_PORT_VLAN_CFG_VLAN_AWARE_ENA | + ANA_PORT_VLAN_CFG_VLAN_POP_CNT_M, + ANA_PORT_VLAN_CFG, port); - return 0; + ocelot_port_set_native_vlan(ocelot, port, ocelot_port->vid); } +EXPORT_SYMBOL(ocelot_port_vlan_filtering); /* Default vlan to clasify for untagged frames (may be zero) */ static void ocelot_port_set_pvid(struct ocelot *ocelot, int port, u16 pvid) @@ -873,12 +876,12 @@ static void ocelot_get_stats64(struct net_device *dev, } int ocelot_fdb_add(struct ocelot *ocelot, int port, - const unsigned char *addr, u16 vid, bool vlan_aware) + const unsigned char *addr, u16 vid) { struct ocelot_port *ocelot_port = ocelot->ports[port]; if (!vid) { - if (!vlan_aware) + if (!ocelot_port->vlan_aware) /* If the bridge is not VLAN aware and no VID was * provided, set it to pvid to ensure the MAC entry * matches incoming untagged packets @@ -905,7 +908,7 @@ static int ocelot_port_fdb_add(struct ndmsg *ndm, struct nlattr *tb[], struct ocelot *ocelot = priv->port.ocelot; int port = priv->chip_port; - return ocelot_fdb_add(ocelot, port, addr, vid, priv->vlan_aware); + return ocelot_fdb_add(ocelot, port, addr, vid); } int ocelot_fdb_del(struct ocelot *ocelot, int port, @@ -1496,8 +1499,8 @@ static int ocelot_port_attr_set(struct net_device *dev, ocelot_port_attr_ageing_set(ocelot, port, attr->u.ageing_time); break; case SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING: - priv->vlan_aware = attr->u.vlan_filtering; - ocelot_port_vlan_filtering(ocelot, port, priv->vlan_aware); + ocelot_port_vlan_filtering(ocelot, port, + attr->u.vlan_filtering); break; case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED: ocelot_port_attr_mc_set(ocelot, port, !attr->u.mc_disabled); @@ -1868,7 +1871,6 @@ static int ocelot_netdevice_port_event(struct net_device *dev, } else { err = ocelot_port_bridge_leave(ocelot, port, info->upper_dev); - priv->vlan_aware = false; } } if (netif_is_lag_master(info->upper_dev)) { diff --git a/drivers/net/ethernet/mscc/ocelot.h b/drivers/net/ethernet/mscc/ocelot.h index e34ef8380eb3..641af929497f 100644 --- a/drivers/net/ethernet/mscc/ocelot.h +++ b/drivers/net/ethernet/mscc/ocelot.h @@ -56,8 +56,6 @@ struct ocelot_port_private { struct phy_device *phy; u8 chip_port; - u8 vlan_aware; - struct phy *serdes; struct ocelot_port_tc tc; diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c index 0ec6b8e8b549..67e62603fe3b 100644 --- a/drivers/net/ethernet/neterion/s2io.c +++ b/drivers/net/ethernet/neterion/s2io.c @@ -5155,7 +5155,7 @@ static int do_s2io_delete_unicast_mc(struct s2io_nic *sp, u64 addr) /* read mac entries from CAM */ static u64 do_s2io_read_unicast_mc(struct s2io_nic *sp, int offset) { - u64 tmp64 = 0xffffffffffff0000ULL, val64; + u64 tmp64, val64; struct XENA_dev_config __iomem *bar0 = sp->bar0; /* read mac addr */ diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c index 4b8a76098ca3..5acf4f46c268 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -2127,6 +2127,8 @@ static void ionic_lif_handle_fw_up(struct ionic_lif *lif) if (lif->registered) ionic_lif_set_netdev_info(lif); + ionic_rx_filter_replay(lif); + if (netif_running(lif->netdev)) { err = ionic_txrx_alloc(lif); if (err) @@ -2206,9 +2208,9 @@ static void ionic_lif_deinit(struct ionic_lif *lif) if (!test_bit(IONIC_LIF_F_FW_RESET, lif->state)) { cancel_work_sync(&lif->deferred.work); cancel_work_sync(&lif->tx_timeout_work); + ionic_rx_filters_deinit(lif); } - ionic_rx_filters_deinit(lif); if (lif->netdev->features & NETIF_F_RXHASH) ionic_lif_rss_deinit(lif); @@ -2339,24 +2341,30 @@ static int ionic_station_set(struct ionic_lif *lif) err = ionic_adminq_post_wait(lif, &ctx); if (err) return err; - + netdev_dbg(lif->netdev, "found initial MAC addr %pM\n", + ctx.comp.lif_getattr.mac); if (is_zero_ether_addr(ctx.comp.lif_getattr.mac)) return 0; - memcpy(addr.sa_data, ctx.comp.lif_getattr.mac, netdev->addr_len); - addr.sa_family = AF_INET; - err = eth_prepare_mac_addr_change(netdev, &addr); - if (err) { - netdev_warn(lif->netdev, "ignoring bad MAC addr from NIC %pM - err %d\n", - addr.sa_data, err); - return 0; - } + if (!ether_addr_equal(ctx.comp.lif_getattr.mac, netdev->dev_addr)) { + memcpy(addr.sa_data, ctx.comp.lif_getattr.mac, netdev->addr_len); + addr.sa_family = AF_INET; + err = eth_prepare_mac_addr_change(netdev, &addr); + if (err) { + netdev_warn(lif->netdev, "ignoring bad MAC addr from NIC %pM - err %d\n", + addr.sa_data, err); + return 0; + } - netdev_dbg(lif->netdev, "deleting station MAC addr %pM\n", - netdev->dev_addr); - ionic_lif_addr(lif, netdev->dev_addr, false); + if (!is_zero_ether_addr(netdev->dev_addr)) { + netdev_dbg(lif->netdev, "deleting station MAC addr %pM\n", + netdev->dev_addr); + ionic_lif_addr(lif, netdev->dev_addr, false); + } + + eth_commit_mac_addr_change(netdev, &addr); + } - eth_commit_mac_addr_change(netdev, &addr); netdev_dbg(lif->netdev, "adding station MAC addr %pM\n", netdev->dev_addr); ionic_lif_addr(lif, netdev->dev_addr, true); @@ -2421,9 +2429,11 @@ static int ionic_lif_init(struct ionic_lif *lif) if (err) goto err_out_notifyq_deinit; - err = ionic_rx_filters_init(lif); - if (err) - goto err_out_notifyq_deinit; + if (!test_bit(IONIC_LIF_F_FW_RESET, lif->state)) { + err = ionic_rx_filters_init(lif); + if (err) + goto err_out_notifyq_deinit; + } err = ionic_station_set(lif); if (err) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c index 7a093f148ee5..80eeb7696e01 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c @@ -2,6 +2,7 @@ /* Copyright(c) 2017 - 2019 Pensando Systems, Inc */ #include <linux/netdevice.h> +#include <linux/dynamic_debug.h> #include <linux/etherdevice.h> #include "ionic.h" @@ -17,17 +18,49 @@ void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f) devm_kfree(dev, f); } -int ionic_rx_filter_del(struct ionic_lif *lif, struct ionic_rx_filter *f) +void ionic_rx_filter_replay(struct ionic_lif *lif) { - struct ionic_admin_ctx ctx = { - .work = COMPLETION_INITIALIZER_ONSTACK(ctx.work), - .cmd.rx_filter_del = { - .opcode = IONIC_CMD_RX_FILTER_DEL, - .filter_id = cpu_to_le32(f->filter_id), - }, - }; - - return ionic_adminq_post_wait(lif, &ctx); + struct ionic_rx_filter_add_cmd *ac; + struct ionic_admin_ctx ctx; + struct ionic_rx_filter *f; + struct hlist_head *head; + struct hlist_node *tmp; + unsigned int i; + int err; + + ac = &ctx.cmd.rx_filter_add; + + for (i = 0; i < IONIC_RX_FILTER_HLISTS; i++) { + head = &lif->rx_filters.by_id[i]; + hlist_for_each_entry_safe(f, tmp, head, by_id) { + ctx.work = COMPLETION_INITIALIZER_ONSTACK(ctx.work); + memcpy(ac, &f->cmd, sizeof(f->cmd)); + dev_dbg(&lif->netdev->dev, "replay filter command:\n"); + dynamic_hex_dump("cmd ", DUMP_PREFIX_OFFSET, 16, 1, + &ctx.cmd, sizeof(ctx.cmd), true); + + err = ionic_adminq_post_wait(lif, &ctx); + if (err) { + switch (le16_to_cpu(ac->match)) { + case IONIC_RX_FILTER_MATCH_VLAN: + netdev_info(lif->netdev, "Replay failed - %d: vlan %d\n", + err, + le16_to_cpu(ac->vlan.vlan)); + break; + case IONIC_RX_FILTER_MATCH_MAC: + netdev_info(lif->netdev, "Replay failed - %d: mac %pM\n", + err, ac->mac.addr); + break; + case IONIC_RX_FILTER_MATCH_MAC_VLAN: + netdev_info(lif->netdev, "Replay failed - %d: vlan %d mac %pM\n", + err, + le16_to_cpu(ac->vlan.vlan), + ac->mac.addr); + break; + } + } + } + } } int ionic_rx_filters_init(struct ionic_lif *lif) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h index b6aec9c19918..cf8f4c0a961c 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.h @@ -24,7 +24,7 @@ struct ionic_rx_filters { }; void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f); -int ionic_rx_filter_del(struct ionic_lif *lif, struct ionic_rx_filter *f); +void ionic_rx_filter_replay(struct ionic_lif *lif); int ionic_rx_filters_init(struct ionic_lif *lif); void ionic_rx_filters_deinit(struct ionic_lif *lif); int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index, diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c index e0212d2fc2a1..fa32cd5b418e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c @@ -241,6 +241,8 @@ static int socfpga_set_phy_mode_common(int phymode, u32 *val) switch (phymode) { case PHY_INTERFACE_MODE_RGMII: case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: *val = SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII; break; case PHY_INTERFACE_MODE_MII: diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c index 7d40760e9ba8..0e1ca2cba3c7 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c @@ -150,6 +150,8 @@ static int sun7i_gmac_probe(struct platform_device *pdev) plat_dat->init = sun7i_gmac_init; plat_dat->exit = sun7i_gmac_exit; plat_dat->fix_mac_speed = sun7i_fix_speed; + plat_dat->tx_fifo_size = 4096; + plat_dat->rx_fifo_size = 16384; ret = sun7i_gmac_init(pdev, plat_dat->bsp_priv); if (ret) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index f71c15c39492..2bf56733ba94 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -1372,7 +1372,7 @@ static int am65_cpsw_nuss_init_tx_chns(struct am65_cpsw_common *common) err: i = devm_add_action(dev, am65_cpsw_nuss_free_tx_chns, common); if (i) { - dev_err(dev, "failed to add free_tx_chns action %d", i); + dev_err(dev, "Failed to add free_tx_chns action %d\n", i); return i; } @@ -1481,7 +1481,7 @@ static int am65_cpsw_nuss_init_rx_chns(struct am65_cpsw_common *common) err: i = devm_add_action(dev, am65_cpsw_nuss_free_rx_chns, common); if (i) { - dev_err(dev, "failed to add free_rx_chns action %d", i); + dev_err(dev, "Failed to add free_rx_chns action %d\n", i); return i; } @@ -1691,7 +1691,7 @@ static int am65_cpsw_nuss_init_ndev_2g(struct am65_cpsw_common *common) ret = devm_add_action_or_reset(dev, am65_cpsw_pcpu_stats_free, ndev_priv->stats); if (ret) { - dev_err(dev, "failed to add percpu stat free action %d", ret); + dev_err(dev, "Failed to add percpu stat free action %d\n", ret); return ret; } diff --git a/drivers/net/ipa/ipa_modem.c b/drivers/net/ipa/ipa_modem.c index 55c9329a4b1d..ed10818dd99f 100644 --- a/drivers/net/ipa/ipa_modem.c +++ b/drivers/net/ipa/ipa_modem.c @@ -297,14 +297,13 @@ static void ipa_modem_crashed(struct ipa *ipa) ret = ipa_endpoint_modem_exception_reset_all(ipa); if (ret) - dev_err(dev, "error %d resetting exception endpoint", - ret); + dev_err(dev, "error %d resetting exception endpoint\n", ret); ipa_endpoint_modem_pause_all(ipa, false); ret = ipa_modem_stop(ipa); if (ret) - dev_err(dev, "error %d stopping modem", ret); + dev_err(dev, "error %d stopping modem\n", ret); /* Now prepare for the next modem boot */ ret = ipa_mem_zero_modem(ipa); diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 0d580d81d910..a183250ff66a 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -3809,7 +3809,7 @@ static int macsec_changelink(struct net_device *dev, struct nlattr *tb[], struct netlink_ext_ack *extack) { struct macsec_dev *macsec = macsec_priv(dev); - struct macsec_tx_sa tx_sc; + struct macsec_tx_sc tx_sc; struct macsec_secy secy; int ret; diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c index 4714ca0e0d4b..7fc8e10c5f33 100644 --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c @@ -1263,6 +1263,30 @@ static int marvell_read_status_page_an(struct phy_device *phydev, int lpa; int err; + if (!(status & MII_M1011_PHY_STATUS_RESOLVED)) { + phydev->link = 0; + return 0; + } + + if (status & MII_M1011_PHY_STATUS_FULLDUPLEX) + phydev->duplex = DUPLEX_FULL; + else + phydev->duplex = DUPLEX_HALF; + + switch (status & MII_M1011_PHY_STATUS_SPD_MASK) { + case MII_M1011_PHY_STATUS_1000: + phydev->speed = SPEED_1000; + break; + + case MII_M1011_PHY_STATUS_100: + phydev->speed = SPEED_100; + break; + + default: + phydev->speed = SPEED_10; + break; + } + if (!fiber) { err = genphy_read_lpa(phydev); if (err < 0) @@ -1291,28 +1315,6 @@ static int marvell_read_status_page_an(struct phy_device *phydev, } } - if (!(status & MII_M1011_PHY_STATUS_RESOLVED)) - return 0; - - if (status & MII_M1011_PHY_STATUS_FULLDUPLEX) - phydev->duplex = DUPLEX_FULL; - else - phydev->duplex = DUPLEX_HALF; - - switch (status & MII_M1011_PHY_STATUS_SPD_MASK) { - case MII_M1011_PHY_STATUS_1000: - phydev->speed = SPEED_1000; - break; - - case MII_M1011_PHY_STATUS_100: - phydev->speed = SPEED_100; - break; - - default: - phydev->speed = SPEED_10; - break; - } - return 0; } diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c index 7621badae64d..95e3f4644aeb 100644 --- a/drivers/net/phy/marvell10g.c +++ b/drivers/net/phy/marvell10g.c @@ -33,6 +33,8 @@ #define MV_PHY_ALASKA_NBT_QUIRK_REV (MARVELL_PHY_ID_88X3310 | 0xa) enum { + MV_PMA_FW_VER0 = 0xc011, + MV_PMA_FW_VER1 = 0xc012, MV_PMA_BOOT = 0xc050, MV_PMA_BOOT_FATAL = BIT(0), @@ -73,7 +75,8 @@ enum { /* Vendor2 MMD registers */ MV_V2_PORT_CTRL = 0xf001, - MV_V2_PORT_CTRL_PWRDOWN = 0x0800, + MV_V2_PORT_CTRL_SWRST = BIT(15), + MV_V2_PORT_CTRL_PWRDOWN = BIT(11), MV_V2_TEMP_CTRL = 0xf08a, MV_V2_TEMP_CTRL_MASK = 0xc000, MV_V2_TEMP_CTRL_SAMPLE = 0x0000, @@ -83,6 +86,8 @@ enum { }; struct mv3310_priv { + u32 firmware_ver; + struct device *hwmon_dev; char *hwmon_name; }; @@ -235,8 +240,17 @@ static int mv3310_power_down(struct phy_device *phydev) static int mv3310_power_up(struct phy_device *phydev) { - return phy_clear_bits_mmd(phydev, MDIO_MMD_VEND2, MV_V2_PORT_CTRL, - MV_V2_PORT_CTRL_PWRDOWN); + struct mv3310_priv *priv = dev_get_drvdata(&phydev->mdio.dev); + int ret; + + ret = phy_clear_bits_mmd(phydev, MDIO_MMD_VEND2, MV_V2_PORT_CTRL, + MV_V2_PORT_CTRL_PWRDOWN); + + if (priv->firmware_ver < 0x00030000) + return ret; + + return phy_set_bits_mmd(phydev, MDIO_MMD_VEND2, MV_V2_PORT_CTRL, + MV_V2_PORT_CTRL_SWRST); } static int mv3310_reset(struct phy_device *phydev, u32 unit) @@ -355,6 +369,22 @@ static int mv3310_probe(struct phy_device *phydev) dev_set_drvdata(&phydev->mdio.dev, priv); + ret = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MV_PMA_FW_VER0); + if (ret < 0) + return ret; + + priv->firmware_ver = ret << 16; + + ret = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MV_PMA_FW_VER1); + if (ret < 0) + return ret; + + priv->firmware_ver |= ret; + + phydev_info(phydev, "Firmware version %u.%u.%u.%u\n", + priv->firmware_ver >> 24, (priv->firmware_ver >> 16) & 255, + (priv->firmware_ver >> 8) & 255, priv->firmware_ver & 255); + /* Powering down the port when not in use saves about 600mW */ ret = mv3310_power_down(phydev); if (ret) diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 522760c8bca6..7a4eb3f2cb74 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -464,7 +464,7 @@ static struct class mdio_bus_class = { /** * mdio_find_bus - Given the name of a mdiobus, find the mii_bus. - * @mdio_bus_np: Pointer to the mii_bus. + * @mdio_name: The name of a mdiobus. * * Returns a reference to the mii_bus, or NULL if none found. The * embedded struct device will have its reference count incremented, diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index 05d20343b816..3a4d83fa52dc 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -1204,7 +1204,7 @@ static struct phy_driver ksphy_driver[] = { .driver_data = &ksz9021_type, .probe = kszphy_probe, .config_init = ksz9131_config_init, - .read_status = ksz9031_read_status, + .read_status = genphy_read_status, .ack_interrupt = kszphy_ack_interrupt, .config_intr = kszphy_config_intr, .get_sset_count = kszphy_get_sset_count, diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 07476c6510f2..44889eba1dbc 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1888,6 +1888,7 @@ drop: skb_reset_network_header(skb); skb_probe_transport_header(skb); + skb_record_rx_queue(skb, tfile->queue_index); if (skb_xdp) { struct bpf_prog *xdp_prog; @@ -2459,6 +2460,7 @@ build: skb->protocol = eth_type_trans(skb, tun->dev); skb_reset_network_header(skb); skb_probe_transport_header(skb); + skb_record_rx_queue(skb, tfile->queue_index); if (skb_xdp) { err = do_xdp_generic(xdp_prog, skb); @@ -2470,7 +2472,6 @@ build: !tfile->detached) rxhash = __skb_get_hash_symmetric(skb); - skb_record_rx_queue(skb, tfile->queue_index); netif_receive_skb(skb); /* No need for get_cpu_ptr() here since this function is diff --git a/drivers/net/wireless/ath/ath11k/thermal.h b/drivers/net/wireless/ath/ath11k/thermal.h index 459b8d49c184..f9af55f3682d 100644 --- a/drivers/net/wireless/ath/ath11k/thermal.h +++ b/drivers/net/wireless/ath/ath11k/thermal.h @@ -36,12 +36,13 @@ static inline int ath11k_thermal_register(struct ath11k_base *sc) return 0; } -static inline void ath11k_thermal_unregister(struct ath11k *ar) +static inline void ath11k_thermal_unregister(struct ath11k_base *sc) { } static inline int ath11k_thermal_set_throttling(struct ath11k *ar, u32 throttle_state) { + return 0; } static inline void ath11k_thermal_event_temperature(struct ath11k *ar, diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 23627c953a5e..436f501be937 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -729,9 +729,18 @@ static int brcmf_net_mon_stop(struct net_device *ndev) return err; } +static netdev_tx_t brcmf_net_mon_start_xmit(struct sk_buff *skb, + struct net_device *ndev) +{ + dev_kfree_skb_any(skb); + + return NETDEV_TX_OK; +} + static const struct net_device_ops brcmf_netdev_ops_mon = { .ndo_open = brcmf_net_mon_open, .ndo_stop = brcmf_net_mon_stop, + .ndo_start_xmit = brcmf_net_mon_start_xmit, }; int brcmf_net_mon_attach(struct brcmf_if *ifp) diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 7fe8207db6ae..7c4b7c31d07a 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -3669,9 +3669,9 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info) } if (info->attrs[HWSIM_ATTR_RADIO_NAME]) { - hwname = kasprintf(GFP_KERNEL, "%.*s", - nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]), - (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME])); + hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]), + nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]), + GFP_KERNEL); if (!hwname) return -ENOMEM; param.hwname = hwname; @@ -3691,9 +3691,9 @@ static int hwsim_del_radio_nl(struct sk_buff *msg, struct genl_info *info) if (info->attrs[HWSIM_ATTR_RADIO_ID]) { idx = nla_get_u32(info->attrs[HWSIM_ATTR_RADIO_ID]); } else if (info->attrs[HWSIM_ATTR_RADIO_NAME]) { - hwname = kasprintf(GFP_KERNEL, "%.*s", - nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]), - (char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME])); + hwname = kstrndup((char *)nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]), + nla_len(info->attrs[HWSIM_ATTR_RADIO_NAME]), + GFP_KERNEL); if (!hwname) return -ENOMEM; } else diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c index e37c71495c0d..1af87eb2e53a 100644 --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c @@ -1338,22 +1338,17 @@ static void rtw_pci_phy_cfg(struct rtw_dev *rtwdev) rtw_pci_link_cfg(rtwdev); } -#ifdef CONFIG_PM -static int rtw_pci_suspend(struct device *dev) +static int __maybe_unused rtw_pci_suspend(struct device *dev) { return 0; } -static int rtw_pci_resume(struct device *dev) +static int __maybe_unused rtw_pci_resume(struct device *dev) { return 0; } static SIMPLE_DEV_PM_OPS(rtw_pm_ops, rtw_pci_suspend, rtw_pci_resume); -#define RTW_PM_OPS (&rtw_pm_ops) -#else -#define RTW_PM_OPS NULL -#endif static int rtw_pci_claim(struct rtw_dev *rtwdev, struct pci_dev *pdev) { @@ -1582,7 +1577,7 @@ static struct pci_driver rtw_pci_driver = { .id_table = rtw_pci_id_table, .probe = rtw_pci_probe, .remove = rtw_pci_remove, - .driver.pm = RTW_PM_OPS, + .driver.pm = &rtw_pm_ops, }; module_pci_driver(rtw_pci_driver); diff --git a/drivers/opp/core.c b/drivers/opp/core.c index ba43e6a3dc0a..e4f01e7771a2 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -819,6 +819,8 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) if (unlikely(!target_freq)) { if (opp_table->required_opp_tables) { ret = _set_required_opps(dev, opp_table, NULL); + } else if (!_get_opp_count(opp_table)) { + return 0; } else { dev_err(dev, "target frequency can't be 0\n"); ret = -EINVAL; @@ -849,6 +851,18 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) goto put_opp_table; } + /* + * For IO devices which require an OPP on some platforms/SoCs + * while just needing to scale the clock on some others + * we look for empty OPP tables with just a clock handle and + * scale only the clk. This makes dev_pm_opp_set_rate() + * equivalent to a clk_set_rate() + */ + if (!_get_opp_count(opp_table)) { + ret = _generic_set_opp_clk_only(dev, clk, freq); + goto put_opp_table; + } + temp_freq = old_freq; old_opp = _find_freq_ceil(opp_table, &temp_freq); if (IS_ERR(old_opp)) { diff --git a/drivers/platform/chrome/cros_ec_sensorhub_ring.c b/drivers/platform/chrome/cros_ec_sensorhub_ring.c index 230e6cf3da2f..c48e5b38a441 100644 --- a/drivers/platform/chrome/cros_ec_sensorhub_ring.c +++ b/drivers/platform/chrome/cros_ec_sensorhub_ring.c @@ -40,7 +40,7 @@ cros_sensorhub_send_sample(struct cros_ec_sensorhub *sensorhub, int id = sample->sensor_id; struct iio_dev *indio_dev; - if (id > sensorhub->sensor_num) + if (id >= sensorhub->sensor_num) return -EINVAL; cb = sensorhub->push_data[id].push_data_cb; @@ -820,7 +820,7 @@ static void cros_ec_sensorhub_ring_handler(struct cros_ec_sensorhub *sensorhub) if (fifo_info->count > sensorhub->fifo_size || fifo_info->size != sensorhub->fifo_size) { dev_warn(sensorhub->dev, - "Mismatch EC data: count %d, size %d - expected %d", + "Mismatch EC data: count %d, size %d - expected %d\n", fifo_info->count, fifo_info->size, sensorhub->fifo_size); goto error; @@ -851,14 +851,14 @@ static void cros_ec_sensorhub_ring_handler(struct cros_ec_sensorhub *sensorhub) } if (number_data > fifo_info->count - i) { dev_warn(sensorhub->dev, - "Invalid EC data: too many entry received: %d, expected %d", + "Invalid EC data: too many entry received: %d, expected %d\n", number_data, fifo_info->count - i); break; } if (out + number_data > sensorhub->ring + fifo_info->count) { dev_warn(sensorhub->dev, - "Too many samples: %d (%zd data) to %d entries for expected %d entries", + "Too many samples: %d (%zd data) to %d entries for expected %d entries\n", i, out - sensorhub->ring, i + number_data, fifo_info->count); break; diff --git a/drivers/s390/block/Kconfig b/drivers/s390/block/Kconfig index a8682f69effc..376f1efbbb86 100644 --- a/drivers/s390/block/Kconfig +++ b/drivers/s390/block/Kconfig @@ -26,7 +26,6 @@ config DASD def_tristate y prompt "Support for DASD devices" depends on CCW && BLOCK - select IOSCHED_DEADLINE help Enable this option if you want to access DASDs directly utilizing S/390s channel subsystem commands. This is necessary for running diff --git a/fs/afs/dir.c b/fs/afs/dir.c index 5c794f4b051a..d1e1caa23c8b 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c @@ -1032,7 +1032,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags) struct dentry *parent; struct inode *inode; struct key *key; - afs_dataversion_t dir_version; + afs_dataversion_t dir_version, invalid_before; long de_version; int ret; @@ -1084,8 +1084,8 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags) if (de_version == (long)dir_version) goto out_valid_noupdate; - dir_version = dir->invalid_before; - if (de_version - (long)dir_version >= 0) + invalid_before = dir->invalid_before; + if (de_version - (long)invalid_before >= 0) goto out_valid; _debug("dir modified"); @@ -1275,6 +1275,7 @@ static int afs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) struct afs_fs_cursor fc; struct afs_vnode *dvnode = AFS_FS_I(dir); struct key *key; + afs_dataversion_t data_version; int ret; mode |= S_IFDIR; @@ -1295,7 +1296,7 @@ static int afs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) ret = -ERESTARTSYS; if (afs_begin_vnode_operation(&fc, dvnode, key, true)) { - afs_dataversion_t data_version = dvnode->status.data_version + 1; + data_version = dvnode->status.data_version + 1; while (afs_select_fileserver(&fc)) { fc.cb_break = afs_calc_vnode_cb_break(dvnode); @@ -1316,10 +1317,14 @@ static int afs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) goto error_key; } - if (ret == 0 && - test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) - afs_edit_dir_add(dvnode, &dentry->d_name, &iget_data.fid, - afs_edit_dir_for_create); + if (ret == 0) { + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == data_version) + afs_edit_dir_add(dvnode, &dentry->d_name, &iget_data.fid, + afs_edit_dir_for_create); + up_write(&dvnode->validate_lock); + } key_put(key); kfree(scb); @@ -1360,6 +1365,7 @@ static int afs_rmdir(struct inode *dir, struct dentry *dentry) struct afs_fs_cursor fc; struct afs_vnode *dvnode = AFS_FS_I(dir), *vnode = NULL; struct key *key; + afs_dataversion_t data_version; int ret; _enter("{%llx:%llu},{%pd}", @@ -1391,7 +1397,7 @@ static int afs_rmdir(struct inode *dir, struct dentry *dentry) ret = -ERESTARTSYS; if (afs_begin_vnode_operation(&fc, dvnode, key, true)) { - afs_dataversion_t data_version = dvnode->status.data_version + 1; + data_version = dvnode->status.data_version + 1; while (afs_select_fileserver(&fc)) { fc.cb_break = afs_calc_vnode_cb_break(dvnode); @@ -1404,9 +1410,12 @@ static int afs_rmdir(struct inode *dir, struct dentry *dentry) ret = afs_end_vnode_operation(&fc); if (ret == 0) { afs_dir_remove_subdir(dentry); - if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == data_version) afs_edit_dir_remove(dvnode, &dentry->d_name, afs_edit_dir_for_rmdir); + up_write(&dvnode->validate_lock); } } @@ -1544,10 +1553,15 @@ static int afs_unlink(struct inode *dir, struct dentry *dentry) ret = afs_end_vnode_operation(&fc); if (ret == 0 && !(scb[1].have_status || scb[1].have_error)) ret = afs_dir_remove_link(dvnode, dentry, key); - if (ret == 0 && - test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) - afs_edit_dir_remove(dvnode, &dentry->d_name, - afs_edit_dir_for_unlink); + + if (ret == 0) { + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == data_version) + afs_edit_dir_remove(dvnode, &dentry->d_name, + afs_edit_dir_for_unlink); + up_write(&dvnode->validate_lock); + } } if (need_rehash && ret < 0 && ret != -ENOENT) @@ -1573,6 +1587,7 @@ static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, struct afs_status_cb *scb; struct afs_vnode *dvnode = AFS_FS_I(dir); struct key *key; + afs_dataversion_t data_version; int ret; mode |= S_IFREG; @@ -1597,7 +1612,7 @@ static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, ret = -ERESTARTSYS; if (afs_begin_vnode_operation(&fc, dvnode, key, true)) { - afs_dataversion_t data_version = dvnode->status.data_version + 1; + data_version = dvnode->status.data_version + 1; while (afs_select_fileserver(&fc)) { fc.cb_break = afs_calc_vnode_cb_break(dvnode); @@ -1618,9 +1633,12 @@ static int afs_create(struct inode *dir, struct dentry *dentry, umode_t mode, goto error_key; } - if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == data_version) afs_edit_dir_add(dvnode, &dentry->d_name, &iget_data.fid, afs_edit_dir_for_create); + up_write(&dvnode->validate_lock); kfree(scb); key_put(key); @@ -1648,6 +1666,7 @@ static int afs_link(struct dentry *from, struct inode *dir, struct afs_vnode *dvnode = AFS_FS_I(dir); struct afs_vnode *vnode = AFS_FS_I(d_inode(from)); struct key *key; + afs_dataversion_t data_version; int ret; _enter("{%llx:%llu},{%llx:%llu},{%pd}", @@ -1672,7 +1691,7 @@ static int afs_link(struct dentry *from, struct inode *dir, ret = -ERESTARTSYS; if (afs_begin_vnode_operation(&fc, dvnode, key, true)) { - afs_dataversion_t data_version = dvnode->status.data_version + 1; + data_version = dvnode->status.data_version + 1; if (mutex_lock_interruptible_nested(&vnode->io_lock, 1) < 0) { afs_end_vnode_operation(&fc); @@ -1702,9 +1721,12 @@ static int afs_link(struct dentry *from, struct inode *dir, goto error_key; } - if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == data_version) afs_edit_dir_add(dvnode, &dentry->d_name, &vnode->fid, afs_edit_dir_for_link); + up_write(&dvnode->validate_lock); key_put(key); kfree(scb); @@ -1732,6 +1754,7 @@ static int afs_symlink(struct inode *dir, struct dentry *dentry, struct afs_status_cb *scb; struct afs_vnode *dvnode = AFS_FS_I(dir); struct key *key; + afs_dataversion_t data_version; int ret; _enter("{%llx:%llu},{%pd},%s", @@ -1759,7 +1782,7 @@ static int afs_symlink(struct inode *dir, struct dentry *dentry, ret = -ERESTARTSYS; if (afs_begin_vnode_operation(&fc, dvnode, key, true)) { - afs_dataversion_t data_version = dvnode->status.data_version + 1; + data_version = dvnode->status.data_version + 1; while (afs_select_fileserver(&fc)) { fc.cb_break = afs_calc_vnode_cb_break(dvnode); @@ -1780,9 +1803,12 @@ static int afs_symlink(struct inode *dir, struct dentry *dentry, goto error_key; } - if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == data_version) afs_edit_dir_add(dvnode, &dentry->d_name, &iget_data.fid, afs_edit_dir_for_symlink); + up_write(&dvnode->validate_lock); key_put(key); kfree(scb); @@ -1812,6 +1838,8 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, struct dentry *tmp = NULL, *rehash = NULL; struct inode *new_inode; struct key *key; + afs_dataversion_t orig_data_version; + afs_dataversion_t new_data_version; bool new_negative = d_is_negative(new_dentry); int ret; @@ -1890,10 +1918,6 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, ret = -ERESTARTSYS; if (afs_begin_vnode_operation(&fc, orig_dvnode, key, true)) { - afs_dataversion_t orig_data_version; - afs_dataversion_t new_data_version; - struct afs_status_cb *new_scb = &scb[1]; - orig_data_version = orig_dvnode->status.data_version + 1; if (orig_dvnode != new_dvnode) { @@ -1904,7 +1928,6 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, new_data_version = new_dvnode->status.data_version + 1; } else { new_data_version = orig_data_version; - new_scb = &scb[0]; } while (afs_select_fileserver(&fc)) { @@ -1912,7 +1935,7 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, fc.cb_break_2 = afs_calc_vnode_cb_break(new_dvnode); afs_fs_rename(&fc, old_dentry->d_name.name, new_dvnode, new_dentry->d_name.name, - &scb[0], new_scb); + &scb[0], &scb[1]); } afs_vnode_commit_status(&fc, orig_dvnode, fc.cb_break, @@ -1930,18 +1953,25 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, if (ret == 0) { if (rehash) d_rehash(rehash); - if (test_bit(AFS_VNODE_DIR_VALID, &orig_dvnode->flags)) - afs_edit_dir_remove(orig_dvnode, &old_dentry->d_name, - afs_edit_dir_for_rename_0); + down_write(&orig_dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &orig_dvnode->flags) && + orig_dvnode->status.data_version == orig_data_version) + afs_edit_dir_remove(orig_dvnode, &old_dentry->d_name, + afs_edit_dir_for_rename_0); + if (orig_dvnode != new_dvnode) { + up_write(&orig_dvnode->validate_lock); - if (!new_negative && - test_bit(AFS_VNODE_DIR_VALID, &new_dvnode->flags)) - afs_edit_dir_remove(new_dvnode, &new_dentry->d_name, - afs_edit_dir_for_rename_1); + down_write(&new_dvnode->validate_lock); + } + if (test_bit(AFS_VNODE_DIR_VALID, &new_dvnode->flags) && + orig_dvnode->status.data_version == new_data_version) { + if (!new_negative) + afs_edit_dir_remove(new_dvnode, &new_dentry->d_name, + afs_edit_dir_for_rename_1); - if (test_bit(AFS_VNODE_DIR_VALID, &new_dvnode->flags)) afs_edit_dir_add(new_dvnode, &new_dentry->d_name, &vnode->fid, afs_edit_dir_for_rename_2); + } new_inode = d_inode(new_dentry); if (new_inode) { @@ -1957,14 +1987,10 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry, * Note that if we ever implement RENAME_EXCHANGE, we'll have * to update both dentries with opposing dir versions. */ - if (new_dvnode != orig_dvnode) { - afs_update_dentry_version(&fc, old_dentry, &scb[1]); - afs_update_dentry_version(&fc, new_dentry, &scb[1]); - } else { - afs_update_dentry_version(&fc, old_dentry, &scb[0]); - afs_update_dentry_version(&fc, new_dentry, &scb[0]); - } + afs_update_dentry_version(&fc, old_dentry, &scb[1]); + afs_update_dentry_version(&fc, new_dentry, &scb[1]); d_move(old_dentry, new_dentry); + up_write(&new_dvnode->validate_lock); goto error_tmp; } diff --git a/fs/afs/dir_silly.c b/fs/afs/dir_silly.c index 361088a5edb9..d94e2b7cddff 100644 --- a/fs/afs/dir_silly.c +++ b/fs/afs/dir_silly.c @@ -21,6 +21,7 @@ static int afs_do_silly_rename(struct afs_vnode *dvnode, struct afs_vnode *vnode { struct afs_fs_cursor fc; struct afs_status_cb *scb; + afs_dataversion_t dir_data_version; int ret = -ERESTARTSYS; _enter("%pd,%pd", old, new); @@ -31,7 +32,7 @@ static int afs_do_silly_rename(struct afs_vnode *dvnode, struct afs_vnode *vnode trace_afs_silly_rename(vnode, false); if (afs_begin_vnode_operation(&fc, dvnode, key, true)) { - afs_dataversion_t dir_data_version = dvnode->status.data_version + 1; + dir_data_version = dvnode->status.data_version + 1; while (afs_select_fileserver(&fc)) { fc.cb_break = afs_calc_vnode_cb_break(dvnode); @@ -54,12 +55,15 @@ static int afs_do_silly_rename(struct afs_vnode *dvnode, struct afs_vnode *vnode dvnode->silly_key = key_get(key); } - if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == dir_data_version) { afs_edit_dir_remove(dvnode, &old->d_name, afs_edit_dir_for_silly_0); - if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) afs_edit_dir_add(dvnode, &new->d_name, &vnode->fid, afs_edit_dir_for_silly_1); + } + up_write(&dvnode->validate_lock); } kfree(scb); @@ -181,10 +185,14 @@ static int afs_do_silly_unlink(struct afs_vnode *dvnode, struct afs_vnode *vnode clear_bit(AFS_VNODE_CB_PROMISED, &vnode->flags); } } - if (ret == 0 && - test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags)) - afs_edit_dir_remove(dvnode, &dentry->d_name, - afs_edit_dir_for_unlink); + if (ret == 0) { + down_write(&dvnode->validate_lock); + if (test_bit(AFS_VNODE_DIR_VALID, &dvnode->flags) && + dvnode->status.data_version == dir_data_version) + afs_edit_dir_remove(dvnode, &dentry->d_name, + afs_edit_dir_for_unlink); + up_write(&dvnode->validate_lock); + } } kfree(scb); diff --git a/fs/afs/fsclient.c b/fs/afs/fsclient.c index 1f9c5d8e6fe5..68fc46634346 100644 --- a/fs/afs/fsclient.c +++ b/fs/afs/fsclient.c @@ -65,6 +65,7 @@ static int xdr_decode_AFSFetchStatus(const __be32 **_bp, bool inline_error = (call->operation_ID == afs_FS_InlineBulkStatus); u64 data_version, size; u32 type, abort_code; + int ret; abort_code = ntohl(xdr->abort_code); @@ -78,7 +79,7 @@ static int xdr_decode_AFSFetchStatus(const __be32 **_bp, */ status->abort_code = abort_code; scb->have_error = true; - return 0; + goto good; } pr_warn("Unknown AFSFetchStatus version %u\n", ntohl(xdr->if_version)); @@ -87,7 +88,8 @@ static int xdr_decode_AFSFetchStatus(const __be32 **_bp, if (abort_code != 0 && inline_error) { status->abort_code = abort_code; - return 0; + scb->have_error = true; + goto good; } type = ntohl(xdr->type); @@ -123,13 +125,16 @@ static int xdr_decode_AFSFetchStatus(const __be32 **_bp, data_version |= (u64)ntohl(xdr->data_version_hi) << 32; status->data_version = data_version; scb->have_status = true; - +good: + ret = 0; +advance: *_bp = (const void *)*_bp + sizeof(*xdr); - return 0; + return ret; bad: xdr_dump_bad(*_bp); - return afs_protocol_error(call, -EBADMSG, afs_eproto_bad_status); + ret = afs_protocol_error(call, -EBADMSG, afs_eproto_bad_status); + goto advance; } static time64_t xdr_decode_expiry(struct afs_call *call, u32 expiry) @@ -981,16 +986,16 @@ static int afs_deliver_fs_rename(struct afs_call *call) if (ret < 0) return ret; - /* unmarshall the reply once we've received all of it */ + /* If the two dirs are the same, we have two copies of the same status + * report, so we just decode it twice. + */ bp = call->buffer; ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_dir_scb); if (ret < 0) return ret; - if (call->out_dir_scb != call->out_scb) { - ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); - if (ret < 0) - return ret; - } + ret = xdr_decode_AFSFetchStatus(&bp, call, call->out_scb); + if (ret < 0) + return ret; xdr_decode_AFSVolSync(&bp, call->out_volsync); _leave(" = 0 [done]"); diff --git a/fs/afs/yfsclient.c b/fs/afs/yfsclient.c index a26126ac7bf1..b5b45c57e1b1 100644 --- a/fs/afs/yfsclient.c +++ b/fs/afs/yfsclient.c @@ -165,15 +165,15 @@ static void xdr_dump_bad(const __be32 *bp) int i; pr_notice("YFS XDR: Bad status record\n"); - for (i = 0; i < 5 * 4 * 4; i += 16) { + for (i = 0; i < 6 * 4 * 4; i += 16) { memcpy(x, bp, 16); bp += 4; pr_notice("%03x: %08x %08x %08x %08x\n", i, ntohl(x[0]), ntohl(x[1]), ntohl(x[2]), ntohl(x[3])); } - memcpy(x, bp, 4); - pr_notice("0x50: %08x\n", ntohl(x[0])); + memcpy(x, bp, 8); + pr_notice("0x60: %08x %08x\n", ntohl(x[0]), ntohl(x[1])); } /* @@ -186,13 +186,14 @@ static int xdr_decode_YFSFetchStatus(const __be32 **_bp, const struct yfs_xdr_YFSFetchStatus *xdr = (const void *)*_bp; struct afs_file_status *status = &scb->status; u32 type; + int ret; status->abort_code = ntohl(xdr->abort_code); if (status->abort_code != 0) { if (status->abort_code == VNOVNODE) status->nlink = 0; scb->have_error = true; - return 0; + goto good; } type = ntohl(xdr->type); @@ -220,13 +221,16 @@ static int xdr_decode_YFSFetchStatus(const __be32 **_bp, status->size = xdr_to_u64(xdr->size); status->data_version = xdr_to_u64(xdr->data_version); scb->have_status = true; - +good: + ret = 0; +advance: *_bp += xdr_size(xdr); - return 0; + return ret; bad: xdr_dump_bad(*_bp); - return afs_protocol_error(call, -EBADMSG, afs_eproto_bad_status); + ret = afs_protocol_error(call, -EBADMSG, afs_eproto_bad_status); + goto advance; } /* @@ -1153,11 +1157,9 @@ static int yfs_deliver_fs_rename(struct afs_call *call) ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_dir_scb); if (ret < 0) return ret; - if (call->out_dir_scb != call->out_scb) { - ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); - if (ret < 0) - return ret; - } + ret = xdr_decode_YFSFetchStatus(&bp, call, call->out_scb); + if (ret < 0) + return ret; xdr_decode_YFSVolSync(&bp, call->out_volsync); _leave(" = 0 [done]"); diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c index 786849fcc319..47f66c6a7d7f 100644 --- a/fs/btrfs/block-group.c +++ b/fs/btrfs/block-group.c @@ -3370,6 +3370,7 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info) space_info->bytes_reserved > 0 || space_info->bytes_may_use > 0)) btrfs_dump_space_info(info, space_info, 0, 0); + WARN_ON(space_info->reclaim_size > 0); list_del(&space_info->list); btrfs_sysfs_remove_space_info(space_info); } diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 8a144f9cb7ac..719e68ab552c 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -2098,6 +2098,21 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) atomic_inc(&root->log_batch); /* + * If the inode needs a full sync, make sure we use a full range to + * avoid log tree corruption, due to hole detection racing with ordered + * extent completion for adjacent ranges and races between logging and + * completion of ordered extents for adjancent ranges - both races + * could lead to file extent items in the log with overlapping ranges. + * Do this while holding the inode lock, to avoid races with other + * tasks. + */ + if (test_bit(BTRFS_INODE_NEEDS_FULL_SYNC, + &BTRFS_I(inode)->runtime_flags)) { + start = 0; + end = LLONG_MAX; + } + + /* * Before we acquired the inode's lock, someone may have dirtied more * pages in the target range. We need to make sure that writeback for * any such pages does not start while we are logging the inode, because diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c index d1973141d3bb..040009d1cc31 100644 --- a/fs/btrfs/reflink.c +++ b/fs/btrfs/reflink.c @@ -264,6 +264,7 @@ copy_inline_extent: size); inode_add_bytes(dst, datal); set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &BTRFS_I(dst)->runtime_flags); + ret = btrfs_inode_set_file_extent_range(BTRFS_I(dst), 0, aligned_end); out: if (!ret && !trans) { /* diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index f65595602aa8..d35936c934ab 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -611,8 +611,8 @@ static int should_ignore_root(struct btrfs_root *root) if (!reloc_root) return 0; - if (btrfs_root_last_snapshot(&reloc_root->root_item) == - root->fs_info->running_transaction->transid - 1) + if (btrfs_header_generation(reloc_root->commit_root) == + root->fs_info->running_transaction->transid) return 0; /* * if there is reloc tree and it was created in previous @@ -1527,8 +1527,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans, int clear_rsv = 0; int ret; - if (!rc || !rc->create_reloc_tree || - root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) + if (!rc) return 0; /* @@ -1538,12 +1537,28 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans, if (reloc_root_is_dead(root)) return 0; + /* + * This is subtle but important. We do not do + * record_root_in_transaction for reloc roots, instead we record their + * corresponding fs root, and then here we update the last trans for the + * reloc root. This means that we have to do this for the entire life + * of the reloc root, regardless of which stage of the relocation we are + * in. + */ if (root->reloc_root) { reloc_root = root->reloc_root; reloc_root->last_trans = trans->transid; return 0; } + /* + * We are merging reloc roots, we do not need new reloc trees. Also + * reloc trees never need their own reloc tree. + */ + if (!rc->create_reloc_tree || + root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) + return 0; + if (!trans->reloc_reserved) { rsv = trans->block_rsv; trans->block_rsv = rc->block_rsv; diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 8b0fe053a25d..ff17a4420358 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -361,6 +361,16 @@ int btrfs_can_overcommit(struct btrfs_fs_info *fs_info, return 0; } +static void remove_ticket(struct btrfs_space_info *space_info, + struct reserve_ticket *ticket) +{ + if (!list_empty(&ticket->list)) { + list_del_init(&ticket->list); + ASSERT(space_info->reclaim_size >= ticket->bytes); + space_info->reclaim_size -= ticket->bytes; + } +} + /* * This is for space we already have accounted in space_info->bytes_may_use, so * basically when we're returning space from block_rsv's. @@ -388,9 +398,7 @@ again: btrfs_space_info_update_bytes_may_use(fs_info, space_info, ticket->bytes); - list_del_init(&ticket->list); - ASSERT(space_info->reclaim_size >= ticket->bytes); - space_info->reclaim_size -= ticket->bytes; + remove_ticket(space_info, ticket); ticket->bytes = 0; space_info->tickets_id++; wake_up(&ticket->wait); @@ -899,7 +907,7 @@ static bool maybe_fail_all_tickets(struct btrfs_fs_info *fs_info, btrfs_info(fs_info, "failing ticket with %llu bytes", ticket->bytes); - list_del_init(&ticket->list); + remove_ticket(space_info, ticket); ticket->error = -ENOSPC; wake_up(&ticket->wait); @@ -1063,7 +1071,7 @@ static void wait_reserve_ticket(struct btrfs_fs_info *fs_info, * despite getting an error, resulting in a space leak * (bytes_may_use counter of our space_info). */ - list_del_init(&ticket->list); + remove_ticket(space_info, ticket); ticket->error = -EINTR; break; } @@ -1121,7 +1129,7 @@ static int handle_reserve_ticket(struct btrfs_fs_info *fs_info, * either the async reclaim job deletes the ticket from the list * or we delete it ourselves at wait_reserve_ticket(). */ - list_del_init(&ticket->list); + remove_ticket(space_info, ticket); if (!ret) ret = -ENOSPC; } diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 58c111474ba5..ec36a7c6ba3d 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -96,8 +96,8 @@ enum { static int btrfs_log_inode(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct btrfs_inode *inode, int inode_only, - u64 start, - u64 end, + const loff_t start, + const loff_t end, struct btrfs_log_ctx *ctx); static int link_to_fixup_dir(struct btrfs_trans_handle *trans, struct btrfs_root *root, @@ -4533,15 +4533,13 @@ static int btrfs_log_all_xattrs(struct btrfs_trans_handle *trans, static int btrfs_log_holes(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct btrfs_inode *inode, - struct btrfs_path *path, - const u64 start, - const u64 end) + struct btrfs_path *path) { struct btrfs_fs_info *fs_info = root->fs_info; struct btrfs_key key; const u64 ino = btrfs_ino(inode); const u64 i_size = i_size_read(&inode->vfs_inode); - u64 prev_extent_end = start; + u64 prev_extent_end = 0; int ret; if (!btrfs_fs_incompat(fs_info, NO_HOLES) || i_size == 0) @@ -4549,21 +4547,14 @@ static int btrfs_log_holes(struct btrfs_trans_handle *trans, key.objectid = ino; key.type = BTRFS_EXTENT_DATA_KEY; - key.offset = start; + key.offset = 0; ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); if (ret < 0) return ret; - if (ret > 0 && path->slots[0] > 0) { - btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0] - 1); - if (key.objectid == ino && key.type == BTRFS_EXTENT_DATA_KEY) - path->slots[0]--; - } - while (true) { struct extent_buffer *leaf = path->nodes[0]; - u64 extent_end; if (path->slots[0] >= btrfs_header_nritems(path->nodes[0])) { ret = btrfs_next_leaf(root, path); @@ -4580,18 +4571,9 @@ static int btrfs_log_holes(struct btrfs_trans_handle *trans, if (key.objectid != ino || key.type != BTRFS_EXTENT_DATA_KEY) break; - extent_end = btrfs_file_extent_end(path); - if (extent_end <= start) - goto next_slot; - /* We have a hole, log it. */ if (prev_extent_end < key.offset) { - u64 hole_len; - - if (key.offset >= end) - hole_len = end - prev_extent_end; - else - hole_len = key.offset - prev_extent_end; + const u64 hole_len = key.offset - prev_extent_end; /* * Release the path to avoid deadlocks with other code @@ -4621,20 +4603,16 @@ static int btrfs_log_holes(struct btrfs_trans_handle *trans, leaf = path->nodes[0]; } - prev_extent_end = min(extent_end, end); - if (extent_end >= end) - break; -next_slot: + prev_extent_end = btrfs_file_extent_end(path); path->slots[0]++; cond_resched(); } - if (prev_extent_end < end && prev_extent_end < i_size) { + if (prev_extent_end < i_size) { u64 hole_len; btrfs_release_path(path); - hole_len = min(ALIGN(i_size, fs_info->sectorsize), end); - hole_len -= prev_extent_end; + hole_len = ALIGN(i_size - prev_extent_end, fs_info->sectorsize); ret = btrfs_insert_file_extent(trans, root->log_root, ino, prev_extent_end, 0, 0, hole_len, 0, hole_len, @@ -4971,8 +4949,6 @@ static int copy_inode_items_to_log(struct btrfs_trans_handle *trans, const u64 logged_isize, const bool recursive_logging, const int inode_only, - const u64 start, - const u64 end, struct btrfs_log_ctx *ctx, bool *need_log_inode_item) { @@ -4981,21 +4957,6 @@ static int copy_inode_items_to_log(struct btrfs_trans_handle *trans, int ins_nr = 0; int ret; - /* - * We must make sure we don't copy extent items that are entirely out of - * the range [start, end - 1]. This is not just an optimization to avoid - * copying but also needed to avoid a corruption where we end up with - * file extent items in the log tree that have overlapping ranges - this - * can happen if we race with ordered extent completion for ranges that - * are outside our target range. For example we copy an extent item and - * when we move to the next leaf, that extent was trimmed and a new one - * covering a subrange of it, but with a higher key, was inserted - we - * would then copy this other extent too, resulting in a log tree with - * 2 extent items that represent overlapping ranges. - * - * We can copy the entire extents at the range bondaries however, even - * if they cover an area outside the target range. That's ok. - */ while (1) { ret = btrfs_search_forward(root, min_key, path, trans->transid); if (ret < 0) @@ -5063,29 +5024,6 @@ again: goto next_slot; } - if (min_key->type == BTRFS_EXTENT_DATA_KEY) { - const u64 extent_end = btrfs_file_extent_end(path); - - if (extent_end <= start) { - if (ins_nr > 0) { - ret = copy_items(trans, inode, dst_path, - path, ins_start_slot, - ins_nr, inode_only, - logged_isize); - if (ret < 0) - return ret; - ins_nr = 0; - } - goto next_slot; - } - if (extent_end >= end) { - ins_nr++; - if (ins_nr == 1) - ins_start_slot = path->slots[0]; - break; - } - } - if (ins_nr && ins_start_slot + ins_nr == path->slots[0]) { ins_nr++; goto next_slot; @@ -5151,8 +5089,8 @@ next_key: static int btrfs_log_inode(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct btrfs_inode *inode, int inode_only, - u64 start, - u64 end, + const loff_t start, + const loff_t end, struct btrfs_log_ctx *ctx) { struct btrfs_fs_info *fs_info = root->fs_info; @@ -5180,9 +5118,6 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans, return -ENOMEM; } - start = ALIGN_DOWN(start, fs_info->sectorsize); - end = ALIGN(end, fs_info->sectorsize); - min_key.objectid = ino; min_key.type = BTRFS_INODE_ITEM_KEY; min_key.offset = 0; @@ -5298,8 +5233,8 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans, err = copy_inode_items_to_log(trans, inode, &min_key, &max_key, path, dst_path, logged_isize, - recursive_logging, inode_only, - start, end, ctx, &need_log_inode_item); + recursive_logging, inode_only, ctx, + &need_log_inode_item); if (err) goto out_unlock; @@ -5312,7 +5247,7 @@ static int btrfs_log_inode(struct btrfs_trans_handle *trans, if (max_key.type >= BTRFS_EXTENT_DATA_KEY && !fast_search) { btrfs_release_path(path); btrfs_release_path(dst_path); - err = btrfs_log_holes(trans, root, inode, path, start, end); + err = btrfs_log_holes(trans, root, inode, path); if (err) goto out_unlock; } diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index d594c2627430..4c4202c93b71 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -1051,8 +1051,8 @@ static void ceph_async_unlink_cb(struct ceph_mds_client *mdsc, /* If op failed, mark everyone involved for errors */ if (result) { - int pathlen; - u64 base; + int pathlen = 0; + u64 base = 0; char *path = ceph_mdsc_build_path(req->r_dentry, &pathlen, &base, 0); diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 4a5ccbb7e808..afdfca965a7f 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -527,8 +527,8 @@ static void ceph_async_create_cb(struct ceph_mds_client *mdsc, if (result) { struct dentry *dentry = req->r_dentry; - int pathlen; - u64 base; + int pathlen = 0; + u64 base = 0; char *path = ceph_mdsc_build_path(req->r_dentry, &pathlen, &base, 0); diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index 4e5be79bf080..903d9edfd4bf 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -521,7 +521,7 @@ extern void ceph_mdsc_pre_umount(struct ceph_mds_client *mdsc); static inline void ceph_mdsc_free_path(char *path, int len) { - if (path) + if (!IS_ERR_OR_NULL(path)) __putname(path - (PATH_MAX - 1 - len)); } diff --git a/fs/cifs/Kconfig b/fs/cifs/Kconfig index 22cf04fb32d3..604f65f4b6c5 100644 --- a/fs/cifs/Kconfig +++ b/fs/cifs/Kconfig @@ -202,7 +202,7 @@ config CIFS_SMB_DIRECT help Enables SMB Direct support for SMB 3.0, 3.02 and 3.1.1. SMB Direct allows transferring SMB packets over RDMA. If unsure, - say N. + say Y. config CIFS_FSCACHE bool "Provide CIFS client caching support" diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c index 276e4b5ea8e0..916567d770f5 100644 --- a/fs/cifs/cifs_debug.c +++ b/fs/cifs/cifs_debug.c @@ -323,10 +323,8 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v) atomic_read(&server->smbd_conn->send_credits), atomic_read(&server->smbd_conn->receive_credits), server->smbd_conn->receive_credit_target); - seq_printf(m, "\nPending send_pending: %x " - "send_payload_pending: %x", - atomic_read(&server->smbd_conn->send_pending), - atomic_read(&server->smbd_conn->send_payload_pending)); + seq_printf(m, "\nPending send_pending: %x ", + atomic_read(&server->smbd_conn->send_pending)); seq_printf(m, "\nReceive buffers count_receive_queue: %x " "count_empty_packet_queue: %x", server->smbd_conn->count_receive_queue, diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 94e3ed4850b5..c31f362fa098 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -1208,6 +1208,10 @@ static ssize_t cifs_copy_file_range(struct file *src_file, loff_t off, { unsigned int xid = get_xid(); ssize_t rc; + struct cifsFileInfo *cfile = dst_file->private_data; + + if (cfile->swapfile) + return -EOPNOTSUPP; rc = cifs_file_copychunk_range(xid, src_file, off, dst_file, destoff, len, flags); diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 0d956360e984..05dd3dea684b 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -426,7 +426,8 @@ struct smb_version_operations { /* generate new lease key */ void (*new_lease_key)(struct cifs_fid *); int (*generate_signingkey)(struct cifs_ses *); - int (*calc_signature)(struct smb_rqst *, struct TCP_Server_Info *); + int (*calc_signature)(struct smb_rqst *, struct TCP_Server_Info *, + bool allocate_crypto); int (*set_integrity)(const unsigned int, struct cifs_tcon *tcon, struct cifsFileInfo *src_file); int (*enum_snapshots)(const unsigned int xid, struct cifs_tcon *tcon, @@ -1312,6 +1313,7 @@ struct cifsFileInfo { struct tcon_link *tlink; unsigned int f_flags; bool invalidHandle:1; /* file closed via session abend */ + bool swapfile:1; bool oplock_break_cancelled:1; unsigned int oplock_epoch; /* epoch from the lease break */ __u32 oplock_level; /* oplock/lease level from the lease break */ diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 5920820bfbd0..0b1528edebcf 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c @@ -4808,6 +4808,60 @@ cifs_direct_io(struct kiocb *iocb, struct iov_iter *iter) return -EINVAL; } +static int cifs_swap_activate(struct swap_info_struct *sis, + struct file *swap_file, sector_t *span) +{ + struct cifsFileInfo *cfile = swap_file->private_data; + struct inode *inode = swap_file->f_mapping->host; + unsigned long blocks; + long long isize; + + cifs_dbg(FYI, "swap activate\n"); + + spin_lock(&inode->i_lock); + blocks = inode->i_blocks; + isize = inode->i_size; + spin_unlock(&inode->i_lock); + if (blocks*512 < isize) { + pr_warn("swap activate: swapfile has holes\n"); + return -EINVAL; + } + *span = sis->pages; + + printk_once(KERN_WARNING "Swap support over SMB3 is experimental\n"); + + /* + * TODO: consider adding ACL (or documenting how) to prevent other + * users (on this or other systems) from reading it + */ + + + /* TODO: add sk_set_memalloc(inet) or similar */ + + if (cfile) + cfile->swapfile = true; + /* + * TODO: Since file already open, we can't open with DENY_ALL here + * but we could add call to grab a byte range lock to prevent others + * from reading or writing the file + */ + + return 0; +} + +static void cifs_swap_deactivate(struct file *file) +{ + struct cifsFileInfo *cfile = file->private_data; + + cifs_dbg(FYI, "swap deactivate\n"); + + /* TODO: undo sk_set_memalloc(inet) will eventually be needed */ + + if (cfile) + cfile->swapfile = false; + + /* do we need to unpin (or unlock) the file */ +} const struct address_space_operations cifs_addr_ops = { .readpage = cifs_readpage, @@ -4821,6 +4875,13 @@ const struct address_space_operations cifs_addr_ops = { .direct_IO = cifs_direct_io, .invalidatepage = cifs_invalidate_page, .launder_page = cifs_launder_page, + /* + * TODO: investigate and if useful we could add an cifs_migratePage + * helper (under an CONFIG_MIGRATION) in the future, and also + * investigate and add an is_dirty_writeback helper if needed + */ + .swap_activate = cifs_swap_activate, + .swap_deactivate = cifs_swap_deactivate, }; /* diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 8d01ec2dca66..8fbbdcdad8ff 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -2026,6 +2026,10 @@ cifs_revalidate_mapping(struct inode *inode) int rc; unsigned long *flags = &CIFS_I(inode)->flags; + /* swapfiles are not supposed to be shared */ + if (IS_SWAPFILE(inode)) + return 0; + rc = wait_on_bit_lock_action(flags, CIFS_INO_LOCK, cifs_wait_bit_killable, TASK_KILLABLE); if (rc) diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c index 19e4a5d3b4ca..50f776a8d4ba 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c @@ -246,7 +246,7 @@ cifs_posix_to_fattr(struct cifs_fattr *fattr, struct smb2_posix_info *info, */ fattr->cf_mode = le32_to_cpu(info->Mode) & ~S_IFMT; - cifs_dbg(VFS, "XXX dev %d, reparse %d, mode %o", + cifs_dbg(FYI, "posix fattr: dev %d, reparse %d, mode %o", le32_to_cpu(info->DeviceId), le32_to_cpu(info->ReparseTag), le32_to_cpu(info->Mode)); diff --git a/fs/cifs/smb2misc.c b/fs/cifs/smb2misc.c index 0511aaf451d4..497afb0b9960 100644 --- a/fs/cifs/smb2misc.c +++ b/fs/cifs/smb2misc.c @@ -766,6 +766,20 @@ smb2_handle_cancelled_close(struct cifs_tcon *tcon, __u64 persistent_fid, cifs_dbg(FYI, "%s: tc_count=%d\n", __func__, tcon->tc_count); spin_lock(&cifs_tcp_ses_lock); + if (tcon->tc_count <= 0) { + struct TCP_Server_Info *server = NULL; + + WARN_ONCE(tcon->tc_count < 0, "tcon refcount is negative"); + spin_unlock(&cifs_tcp_ses_lock); + + if (tcon->ses) + server = tcon->ses->server; + + cifs_server_dbg(FYI, "tid=%u: tcon is closing, skipping async close retry of fid %llu %llu\n", + tcon->tid, persistent_fid, volatile_fid); + + return 0; + } tcon->tc_count++; spin_unlock(&cifs_tcp_ses_lock); diff --git a/fs/cifs/smb2proto.h b/fs/cifs/smb2proto.h index 4d1ff7b66fdc..087d5f14320b 100644 --- a/fs/cifs/smb2proto.h +++ b/fs/cifs/smb2proto.h @@ -55,9 +55,11 @@ extern struct cifs_ses *smb2_find_smb_ses(struct TCP_Server_Info *server, extern struct cifs_tcon *smb2_find_smb_tcon(struct TCP_Server_Info *server, __u64 ses_id, __u32 tid); extern int smb2_calc_signature(struct smb_rqst *rqst, - struct TCP_Server_Info *server); + struct TCP_Server_Info *server, + bool allocate_crypto); extern int smb3_calc_signature(struct smb_rqst *rqst, - struct TCP_Server_Info *server); + struct TCP_Server_Info *server, + bool allocate_crypto); extern void smb2_echo_request(struct work_struct *work); extern __le32 smb2_get_lease_state(struct cifsInodeInfo *cinode); extern bool smb2_is_valid_oplock_break(char *buffer, diff --git a/fs/cifs/smb2transport.c b/fs/cifs/smb2transport.c index 20cc79e5c15d..1a6c227ada8f 100644 --- a/fs/cifs/smb2transport.c +++ b/fs/cifs/smb2transport.c @@ -41,14 +41,6 @@ #include "smb2glob.h" static int -smb2_crypto_shash_allocate(struct TCP_Server_Info *server) -{ - return cifs_alloc_hash("hmac(sha256)", - &server->secmech.hmacsha256, - &server->secmech.sdeschmacsha256); -} - -static int smb3_crypto_shash_allocate(struct TCP_Server_Info *server) { struct cifs_secmech *p = &server->secmech; @@ -219,7 +211,8 @@ smb2_find_smb_tcon(struct TCP_Server_Info *server, __u64 ses_id, __u32 tid) } int -smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) +smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server, + bool allocate_crypto) { int rc; unsigned char smb2_signature[SMB2_HMACSHA256_SIZE]; @@ -228,6 +221,8 @@ smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) struct smb2_sync_hdr *shdr = (struct smb2_sync_hdr *)iov[0].iov_base; struct cifs_ses *ses; struct shash_desc *shash; + struct crypto_shash *hash; + struct sdesc *sdesc = NULL; struct smb_rqst drqst; ses = smb2_find_smb_ses(server, shdr->SessionId); @@ -239,24 +234,32 @@ smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) memset(smb2_signature, 0x0, SMB2_HMACSHA256_SIZE); memset(shdr->Signature, 0x0, SMB2_SIGNATURE_SIZE); - rc = smb2_crypto_shash_allocate(server); - if (rc) { - cifs_server_dbg(VFS, "%s: sha256 alloc failed\n", __func__); - return rc; + if (allocate_crypto) { + rc = cifs_alloc_hash("hmac(sha256)", &hash, &sdesc); + if (rc) { + cifs_server_dbg(VFS, + "%s: sha256 alloc failed\n", __func__); + return rc; + } + shash = &sdesc->shash; + } else { + hash = server->secmech.hmacsha256; + shash = &server->secmech.sdeschmacsha256->shash; } - rc = crypto_shash_setkey(server->secmech.hmacsha256, - ses->auth_key.response, SMB2_NTLMV2_SESSKEY_SIZE); + rc = crypto_shash_setkey(hash, ses->auth_key.response, + SMB2_NTLMV2_SESSKEY_SIZE); if (rc) { - cifs_server_dbg(VFS, "%s: Could not update with response\n", __func__); - return rc; + cifs_server_dbg(VFS, + "%s: Could not update with response\n", + __func__); + goto out; } - shash = &server->secmech.sdeschmacsha256->shash; rc = crypto_shash_init(shash); if (rc) { cifs_server_dbg(VFS, "%s: Could not init sha256", __func__); - return rc; + goto out; } /* @@ -271,9 +274,10 @@ smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) rc = crypto_shash_update(shash, iov[0].iov_base, iov[0].iov_len); if (rc) { - cifs_server_dbg(VFS, "%s: Could not update with payload\n", - __func__); - return rc; + cifs_server_dbg(VFS, + "%s: Could not update with payload\n", + __func__); + goto out; } drqst.rq_iov++; drqst.rq_nvec--; @@ -283,6 +287,9 @@ smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) if (!rc) memcpy(shdr->Signature, sigptr, SMB2_SIGNATURE_SIZE); +out: + if (allocate_crypto) + cifs_free_hash(&hash, &sdesc); return rc; } @@ -504,14 +511,17 @@ generate_smb311signingkey(struct cifs_ses *ses) } int -smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) +smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server, + bool allocate_crypto) { int rc; unsigned char smb3_signature[SMB2_CMACAES_SIZE]; unsigned char *sigptr = smb3_signature; struct kvec *iov = rqst->rq_iov; struct smb2_sync_hdr *shdr = (struct smb2_sync_hdr *)iov[0].iov_base; - struct shash_desc *shash = &server->secmech.sdesccmacaes->shash; + struct shash_desc *shash; + struct crypto_shash *hash; + struct sdesc *sdesc = NULL; struct smb_rqst drqst; u8 key[SMB3_SIGN_KEY_SIZE]; @@ -519,14 +529,24 @@ smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) if (rc) return 0; + if (allocate_crypto) { + rc = cifs_alloc_hash("cmac(aes)", &hash, &sdesc); + if (rc) + return rc; + + shash = &sdesc->shash; + } else { + hash = server->secmech.cmacaes; + shash = &server->secmech.sdesccmacaes->shash; + } + memset(smb3_signature, 0x0, SMB2_CMACAES_SIZE); memset(shdr->Signature, 0x0, SMB2_SIGNATURE_SIZE); - rc = crypto_shash_setkey(server->secmech.cmacaes, - key, SMB2_CMACAES_SIZE); + rc = crypto_shash_setkey(hash, key, SMB2_CMACAES_SIZE); if (rc) { cifs_server_dbg(VFS, "%s: Could not set key for cmac aes\n", __func__); - return rc; + goto out; } /* @@ -537,7 +557,7 @@ smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) rc = crypto_shash_init(shash); if (rc) { cifs_server_dbg(VFS, "%s: Could not init cmac aes\n", __func__); - return rc; + goto out; } /* @@ -554,7 +574,7 @@ smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) if (rc) { cifs_server_dbg(VFS, "%s: Could not update with payload\n", __func__); - return rc; + goto out; } drqst.rq_iov++; drqst.rq_nvec--; @@ -564,6 +584,9 @@ smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) if (!rc) memcpy(shdr->Signature, sigptr, SMB2_SIGNATURE_SIZE); +out: + if (allocate_crypto) + cifs_free_hash(&hash, &sdesc); return rc; } @@ -593,7 +616,7 @@ smb2_sign_rqst(struct smb_rqst *rqst, struct TCP_Server_Info *server) return 0; } - rc = server->ops->calc_signature(rqst, server); + rc = server->ops->calc_signature(rqst, server, false); return rc; } @@ -631,9 +654,7 @@ smb2_verify_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server) memset(shdr->Signature, 0, SMB2_SIGNATURE_SIZE); - mutex_lock(&server->srv_mutex); - rc = server->ops->calc_signature(rqst, server); - mutex_unlock(&server->srv_mutex); + rc = server->ops->calc_signature(rqst, server, true); if (rc) return rc; diff --git a/fs/cifs/smbdirect.c b/fs/cifs/smbdirect.c index 8da43a500686..1a5834a5d597 100644 --- a/fs/cifs/smbdirect.c +++ b/fs/cifs/smbdirect.c @@ -284,13 +284,10 @@ static void send_done(struct ib_cq *cq, struct ib_wc *wc) request->sge[i].length, DMA_TO_DEVICE); - if (request->has_payload) { - if (atomic_dec_and_test(&request->info->send_payload_pending)) - wake_up(&request->info->wait_send_payload_pending); - } else { - if (atomic_dec_and_test(&request->info->send_pending)) - wake_up(&request->info->wait_send_pending); - } + if (atomic_dec_and_test(&request->info->send_pending)) + wake_up(&request->info->wait_send_pending); + + wake_up(&request->info->wait_post_send); mempool_free(request, request->info->request_mempool); } @@ -383,27 +380,6 @@ static bool process_negotiation_response( return true; } -/* - * Check and schedule to send an immediate packet - * This is used to extend credtis to remote peer to keep the transport busy - */ -static void check_and_send_immediate(struct smbd_connection *info) -{ - if (info->transport_status != SMBD_CONNECTED) - return; - - info->send_immediate = true; - - /* - * Promptly send a packet if our peer is running low on receive - * credits - */ - if (atomic_read(&info->receive_credits) < - info->receive_credit_target - 1) - queue_delayed_work( - info->workqueue, &info->send_immediate_work, 0); -} - static void smbd_post_send_credits(struct work_struct *work) { int ret = 0; @@ -453,10 +429,16 @@ static void smbd_post_send_credits(struct work_struct *work) info->new_credits_offered += ret; spin_unlock(&info->lock_new_credits_offered); - atomic_add(ret, &info->receive_credits); - - /* Check if we can post new receive and grant credits to peer */ - check_and_send_immediate(info); + /* Promptly send an immediate packet as defined in [MS-SMBD] 3.1.1.1 */ + info->send_immediate = true; + if (atomic_read(&info->receive_credits) < + info->receive_credit_target - 1) { + if (info->keep_alive_requested == KEEP_ALIVE_PENDING || + info->send_immediate) { + log_keep_alive(INFO, "send an empty message\n"); + smbd_post_send_empty(info); + } + } } /* Called from softirq, when recv is done */ @@ -551,12 +533,6 @@ static void recv_done(struct ib_cq *cq, struct ib_wc *wc) info->keep_alive_requested = KEEP_ALIVE_PENDING; } - /* - * Check if we need to send something to remote peer to - * grant more credits or respond to KEEP_ALIVE packet - */ - check_and_send_immediate(info); - return; default: @@ -749,7 +725,6 @@ static int smbd_post_send_negotiate_req(struct smbd_connection *info) request->sge[0].addr, request->sge[0].length, request->sge[0].lkey); - request->has_payload = false; atomic_inc(&info->send_pending); rc = ib_post_send(info->id->qp, &send_wr, NULL); if (!rc) @@ -806,45 +781,96 @@ static int manage_keep_alive_before_sending(struct smbd_connection *info) return 0; } -/* - * Build and prepare the SMBD packet header - * This function waits for avaialbe send credits and build a SMBD packet - * header. The caller then optional append payload to the packet after - * the header - * intput values - * size: the size of the payload - * remaining_data_length: remaining data to send if this is part of a - * fragmented packet - * output values - * request_out: the request allocated from this function - * return values: 0 on success, otherwise actual error code returned - */ -static int smbd_create_header(struct smbd_connection *info, - int size, int remaining_data_length, - struct smbd_request **request_out) +/* Post the send request */ +static int smbd_post_send(struct smbd_connection *info, + struct smbd_request *request) +{ + struct ib_send_wr send_wr; + int rc, i; + + for (i = 0; i < request->num_sge; i++) { + log_rdma_send(INFO, + "rdma_request sge[%d] addr=%llu length=%u\n", + i, request->sge[i].addr, request->sge[i].length); + ib_dma_sync_single_for_device( + info->id->device, + request->sge[i].addr, + request->sge[i].length, + DMA_TO_DEVICE); + } + + request->cqe.done = send_done; + + send_wr.next = NULL; + send_wr.wr_cqe = &request->cqe; + send_wr.sg_list = request->sge; + send_wr.num_sge = request->num_sge; + send_wr.opcode = IB_WR_SEND; + send_wr.send_flags = IB_SEND_SIGNALED; + + rc = ib_post_send(info->id->qp, &send_wr, NULL); + if (rc) { + log_rdma_send(ERR, "ib_post_send failed rc=%d\n", rc); + smbd_disconnect_rdma_connection(info); + rc = -EAGAIN; + } else + /* Reset timer for idle connection after packet is sent */ + mod_delayed_work(info->workqueue, &info->idle_timer_work, + info->keep_alive_interval*HZ); + + return rc; +} + +static int smbd_post_send_sgl(struct smbd_connection *info, + struct scatterlist *sgl, int data_length, int remaining_data_length) { + int num_sgs; + int i, rc; + int header_length; struct smbd_request *request; struct smbd_data_transfer *packet; - int header_length; - int rc; + int new_credits; + struct scatterlist *sg; +wait_credit: /* Wait for send credits. A SMBD packet needs one credit */ rc = wait_event_interruptible(info->wait_send_queue, atomic_read(&info->send_credits) > 0 || info->transport_status != SMBD_CONNECTED); if (rc) - return rc; + goto err_wait_credit; + + if (info->transport_status != SMBD_CONNECTED) { + log_outgoing(ERR, "disconnected not sending on wait_credit\n"); + rc = -EAGAIN; + goto err_wait_credit; + } + if (unlikely(atomic_dec_return(&info->send_credits) < 0)) { + atomic_inc(&info->send_credits); + goto wait_credit; + } + +wait_send_queue: + wait_event(info->wait_post_send, + atomic_read(&info->send_pending) < info->send_credit_target || + info->transport_status != SMBD_CONNECTED); if (info->transport_status != SMBD_CONNECTED) { - log_outgoing(ERR, "disconnected not sending\n"); - return -EAGAIN; + log_outgoing(ERR, "disconnected not sending on wait_send_queue\n"); + rc = -EAGAIN; + goto err_wait_send_queue; + } + + if (unlikely(atomic_inc_return(&info->send_pending) > + info->send_credit_target)) { + atomic_dec(&info->send_pending); + goto wait_send_queue; } - atomic_dec(&info->send_credits); request = mempool_alloc(info->request_mempool, GFP_KERNEL); if (!request) { rc = -ENOMEM; - goto err; + goto err_alloc; } request->info = info; @@ -852,8 +878,11 @@ static int smbd_create_header(struct smbd_connection *info, /* Fill in the packet header */ packet = smbd_request_payload(request); packet->credits_requested = cpu_to_le16(info->send_credit_target); - packet->credits_granted = - cpu_to_le16(manage_credits_prior_sending(info)); + + new_credits = manage_credits_prior_sending(info); + atomic_add(new_credits, &info->receive_credits); + packet->credits_granted = cpu_to_le16(new_credits); + info->send_immediate = false; packet->flags = 0; @@ -861,11 +890,11 @@ static int smbd_create_header(struct smbd_connection *info, packet->flags |= cpu_to_le16(SMB_DIRECT_RESPONSE_REQUESTED); packet->reserved = 0; - if (!size) + if (!data_length) packet->data_offset = 0; else packet->data_offset = cpu_to_le32(24); - packet->data_length = cpu_to_le32(size); + packet->data_length = cpu_to_le32(data_length); packet->remaining_data_length = cpu_to_le32(remaining_data_length); packet->padding = 0; @@ -880,7 +909,7 @@ static int smbd_create_header(struct smbd_connection *info, /* Map the packet to DMA */ header_length = sizeof(struct smbd_data_transfer); /* If this is a packet without payload, don't send padding */ - if (!size) + if (!data_length) header_length = offsetof(struct smbd_data_transfer, padding); request->num_sge = 1; @@ -889,102 +918,15 @@ static int smbd_create_header(struct smbd_connection *info, header_length, DMA_TO_DEVICE); if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) { - mempool_free(request, info->request_mempool); rc = -EIO; - goto err; + request->sge[0].addr = 0; + goto err_dma; } request->sge[0].length = header_length; request->sge[0].lkey = info->pd->local_dma_lkey; - *request_out = request; - return 0; - -err: - atomic_inc(&info->send_credits); - return rc; -} - -static void smbd_destroy_header(struct smbd_connection *info, - struct smbd_request *request) -{ - - ib_dma_unmap_single(info->id->device, - request->sge[0].addr, - request->sge[0].length, - DMA_TO_DEVICE); - mempool_free(request, info->request_mempool); - atomic_inc(&info->send_credits); -} - -/* Post the send request */ -static int smbd_post_send(struct smbd_connection *info, - struct smbd_request *request, bool has_payload) -{ - struct ib_send_wr send_wr; - int rc, i; - - for (i = 0; i < request->num_sge; i++) { - log_rdma_send(INFO, - "rdma_request sge[%d] addr=%llu length=%u\n", - i, request->sge[i].addr, request->sge[i].length); - ib_dma_sync_single_for_device( - info->id->device, - request->sge[i].addr, - request->sge[i].length, - DMA_TO_DEVICE); - } - - request->cqe.done = send_done; - - send_wr.next = NULL; - send_wr.wr_cqe = &request->cqe; - send_wr.sg_list = request->sge; - send_wr.num_sge = request->num_sge; - send_wr.opcode = IB_WR_SEND; - send_wr.send_flags = IB_SEND_SIGNALED; - - if (has_payload) { - request->has_payload = true; - atomic_inc(&info->send_payload_pending); - } else { - request->has_payload = false; - atomic_inc(&info->send_pending); - } - - rc = ib_post_send(info->id->qp, &send_wr, NULL); - if (rc) { - log_rdma_send(ERR, "ib_post_send failed rc=%d\n", rc); - if (has_payload) { - if (atomic_dec_and_test(&info->send_payload_pending)) - wake_up(&info->wait_send_payload_pending); - } else { - if (atomic_dec_and_test(&info->send_pending)) - wake_up(&info->wait_send_pending); - } - smbd_disconnect_rdma_connection(info); - rc = -EAGAIN; - } else - /* Reset timer for idle connection after packet is sent */ - mod_delayed_work(info->workqueue, &info->idle_timer_work, - info->keep_alive_interval*HZ); - - return rc; -} - -static int smbd_post_send_sgl(struct smbd_connection *info, - struct scatterlist *sgl, int data_length, int remaining_data_length) -{ - int num_sgs; - int i, rc; - struct smbd_request *request; - struct scatterlist *sg; - - rc = smbd_create_header( - info, data_length, remaining_data_length, &request); - if (rc) - return rc; - + /* Fill in the packet data payload */ num_sgs = sgl ? sg_nents(sgl) : 0; for_each_sg(sgl, sg, num_sgs, i) { request->sge[i+1].addr = @@ -994,25 +936,41 @@ static int smbd_post_send_sgl(struct smbd_connection *info, info->id->device, request->sge[i+1].addr)) { rc = -EIO; request->sge[i+1].addr = 0; - goto dma_mapping_failure; + goto err_dma; } request->sge[i+1].length = sg->length; request->sge[i+1].lkey = info->pd->local_dma_lkey; request->num_sge++; } - rc = smbd_post_send(info, request, data_length); + rc = smbd_post_send(info, request); if (!rc) return 0; -dma_mapping_failure: - for (i = 1; i < request->num_sge; i++) +err_dma: + for (i = 0; i < request->num_sge; i++) if (request->sge[i].addr) ib_dma_unmap_single(info->id->device, request->sge[i].addr, request->sge[i].length, DMA_TO_DEVICE); - smbd_destroy_header(info, request); + mempool_free(request, info->request_mempool); + + /* roll back receive credits and credits to be offered */ + spin_lock(&info->lock_new_credits_offered); + info->new_credits_offered += new_credits; + spin_unlock(&info->lock_new_credits_offered); + atomic_sub(new_credits, &info->receive_credits); + +err_alloc: + if (atomic_dec_and_test(&info->send_pending)) + wake_up(&info->wait_send_pending); + +err_wait_send_queue: + /* roll back send credits and pending */ + atomic_inc(&info->send_credits); + +err_wait_credit: return rc; } @@ -1334,25 +1292,6 @@ static void destroy_receive_buffers(struct smbd_connection *info) mempool_free(response, info->response_mempool); } -/* - * Check and send an immediate or keep alive packet - * The condition to send those packets are defined in [MS-SMBD] 3.1.1.1 - * Connection.KeepaliveRequested and Connection.SendImmediate - * The idea is to extend credits to server as soon as it becomes available - */ -static void send_immediate_work(struct work_struct *work) -{ - struct smbd_connection *info = container_of( - work, struct smbd_connection, - send_immediate_work.work); - - if (info->keep_alive_requested == KEEP_ALIVE_PENDING || - info->send_immediate) { - log_keep_alive(INFO, "send an empty message\n"); - smbd_post_send_empty(info); - } -} - /* Implement idle connection timer [MS-SMBD] 3.1.6.2 */ static void idle_connection_timer(struct work_struct *work) { @@ -1407,14 +1346,10 @@ void smbd_destroy(struct TCP_Server_Info *server) log_rdma_event(INFO, "cancelling idle timer\n"); cancel_delayed_work_sync(&info->idle_timer_work); - log_rdma_event(INFO, "cancelling send immediate work\n"); - cancel_delayed_work_sync(&info->send_immediate_work); log_rdma_event(INFO, "wait for all send posted to IB to finish\n"); wait_event(info->wait_send_pending, atomic_read(&info->send_pending) == 0); - wait_event(info->wait_send_payload_pending, - atomic_read(&info->send_payload_pending) == 0); /* It's not posssible for upper layer to get to reassembly */ log_rdma_event(INFO, "drain the reassembly queue\n"); @@ -1744,15 +1679,13 @@ static struct smbd_connection *_smbd_get_connection( init_waitqueue_head(&info->wait_send_queue); INIT_DELAYED_WORK(&info->idle_timer_work, idle_connection_timer); - INIT_DELAYED_WORK(&info->send_immediate_work, send_immediate_work); queue_delayed_work(info->workqueue, &info->idle_timer_work, info->keep_alive_interval*HZ); init_waitqueue_head(&info->wait_send_pending); atomic_set(&info->send_pending, 0); - init_waitqueue_head(&info->wait_send_payload_pending); - atomic_set(&info->send_payload_pending, 0); + init_waitqueue_head(&info->wait_post_send); INIT_WORK(&info->disconnect_work, smbd_disconnect_rdma_work); INIT_WORK(&info->post_send_credits_work, smbd_post_send_credits); @@ -2226,8 +2159,8 @@ done: * that means all the I/Os have been out and we are good to return */ - wait_event(info->wait_send_payload_pending, - atomic_read(&info->send_payload_pending) == 0); + wait_event(info->wait_send_pending, + atomic_read(&info->send_pending) == 0); return rc; } diff --git a/fs/cifs/smbdirect.h b/fs/cifs/smbdirect.h index 8ede915f2b24..a87fca82a796 100644 --- a/fs/cifs/smbdirect.h +++ b/fs/cifs/smbdirect.h @@ -114,8 +114,7 @@ struct smbd_connection { /* Activity accoutning */ atomic_t send_pending; wait_queue_head_t wait_send_pending; - atomic_t send_payload_pending; - wait_queue_head_t wait_send_payload_pending; + wait_queue_head_t wait_post_send; /* Receive queue */ struct list_head receive_queue; @@ -154,7 +153,6 @@ struct smbd_connection { struct workqueue_struct *workqueue; struct delayed_work idle_timer_work; - struct delayed_work send_immediate_work; /* Memory pool for preallocating buffers */ /* request pool for RDMA send */ @@ -234,9 +232,6 @@ struct smbd_request { struct smbd_connection *info; struct ib_cqe cqe; - /* true if this request carries upper layer payload */ - bool has_payload; - /* the SGE entries for this packet */ struct ib_sge sge[SMBDIRECT_MAX_SGE]; int num_sge; diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index f2dc35c22964..b8d78f393365 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -2023,6 +2023,7 @@ lookup_again: goto lookup_again; } + spin_unlock(&ino->i_lock); first = true; status = nfs4_select_rw_stateid(ctx->state, iomode == IOMODE_RW ? FMODE_WRITE : FMODE_READ, @@ -2032,12 +2033,12 @@ lookup_again: trace_pnfs_update_layout(ino, pos, count, iomode, lo, lseg, PNFS_UPDATE_LAYOUT_INVALID_OPEN); - spin_unlock(&ino->i_lock); nfs4_schedule_stateid_recovery(server, ctx->state); pnfs_clear_first_layoutget(lo); pnfs_put_layout_hdr(lo); goto lookup_again; } + spin_lock(&ino->i_lock); } else { nfs4_stateid_copy(&stateid, &lo->plh_stateid); } diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c index 25f135572fc8..e7ddbce48321 100644 --- a/fs/nfs/pnfs_nfs.c +++ b/fs/nfs/pnfs_nfs.c @@ -501,6 +501,7 @@ pnfs_alloc_ds_commits_list(struct list_head *list, rcu_read_lock(); pnfs_put_commit_array(array, cinfo->inode); } + rcu_read_unlock(); return ret; } diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index b3f1082cc435..1c4fd950f091 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -163,7 +163,7 @@ static inline int cpumask_to_vpset(struct hv_vpset *vpset, return nr_bank; } -void hyperv_report_panic(struct pt_regs *regs, long err); +void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die); void hyperv_report_panic_msg(phys_addr_t pa, size_t size); bool hv_is_hyperv_initialized(void); bool hv_is_hibernation_supported(void); diff --git a/include/crypto/curve25519.h b/include/crypto/curve25519.h index 9ecb3c1f0f15..4e6dc840b159 100644 --- a/include/crypto/curve25519.h +++ b/include/crypto/curve25519.h @@ -33,8 +33,7 @@ bool __must_check curve25519(u8 mypublic[CURVE25519_KEY_SIZE], const u8 secret[CURVE25519_KEY_SIZE], const u8 basepoint[CURVE25519_KEY_SIZE]) { - if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519) && - (!IS_ENABLED(CONFIG_CRYPTO_CURVE25519_X86) || IS_ENABLED(CONFIG_AS_ADX))) + if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519)) curve25519_arch(mypublic, secret, basepoint); else curve25519_generic(mypublic, secret, basepoint); @@ -50,8 +49,7 @@ __must_check curve25519_generate_public(u8 pub[CURVE25519_KEY_SIZE], CURVE25519_KEY_SIZE))) return false; - if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519) && - (!IS_ENABLED(CONFIG_CRYPTO_CURVE25519_X86) || IS_ENABLED(CONFIG_AS_ADX))) + if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519)) curve25519_base_arch(pub, secret); else curve25519_generic(pub, secret, curve25519_base_point); diff --git a/include/linux/refcount.h b/include/linux/refcount.h index 0ac50cf62d06..0e3ee25eb156 100644 --- a/include/linux/refcount.h +++ b/include/linux/refcount.h @@ -38,11 +38,24 @@ * atomic operations, then the count will continue to edge closer to 0. If it * reaches a value of 1 before /any/ of the threads reset it to the saturated * value, then a concurrent refcount_dec_and_test() may erroneously free the - * underlying object. Given the precise timing details involved with the - * round-robin scheduling of each thread manipulating the refcount and the need - * to hit the race multiple times in succession, there doesn't appear to be a - * practical avenue of attack even if using refcount_add() operations with - * larger increments. + * underlying object. + * Linux limits the maximum number of tasks to PID_MAX_LIMIT, which is currently + * 0x400000 (and can't easily be raised in the future beyond FUTEX_TID_MASK). + * With the current PID limit, if no batched refcounting operations are used and + * the attacker can't repeatedly trigger kernel oopses in the middle of refcount + * operations, this makes it impossible for a saturated refcount to leave the + * saturation range, even if it is possible for multiple uses of the same + * refcount to nest in the context of a single task: + * + * (UINT_MAX+1-REFCOUNT_SATURATED) / PID_MAX_LIMIT = + * 0x40000000 / 0x400000 = 0x100 = 256 + * + * If hundreds of references are added/removed with a single refcounting + * operation, it may potentially be possible to leave the saturation range; but + * given the precise timing details involved with the round-robin scheduling of + * each thread manipulating the refcount and the need to hit the race multiple + * times in succession, there doesn't appear to be a practical avenue of attack + * even if using refcount_add() operations with larger increments. * * Memory ordering * =============== diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index c78bd4ff9e33..70e48f66dac8 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -905,6 +905,8 @@ struct survey_info { * protocol frames. * @control_port_over_nl80211: TRUE if userspace expects to exchange control * port frames over NL80211 instead of the network interface. + * @control_port_no_preauth: disables pre-auth rx over the nl80211 control + * port for mac80211 * @wep_keys: static WEP keys, if not NULL points to an array of * CFG80211_MAX_WEP_KEYS WEP keys * @wep_tx_key: key index (0..3) of the default TX static WEP key @@ -1222,6 +1224,7 @@ struct sta_txpwr { * @he_capa: HE capabilities of station * @he_capa_len: the length of the HE capabilities * @airtime_weight: airtime scheduler weight for this station + * @txpwr: transmit power for an associated station */ struct station_parameters { const u8 *supported_rates; @@ -4666,6 +4669,9 @@ struct wiphy_iftype_akm_suites { * @txq_memory_limit: configuration internal TX queue memory limit * @txq_quantum: configuration of internal TX queue scheduler quantum * + * @tx_queue_len: allow setting transmit queue len for drivers not using + * wake_tx_queue + * * @support_mbssid: can HW support association with nontransmitted AP * @support_only_he_mbssid: don't parse MBSSID elements if it is not * HE AP, in order to avoid compatibility issues. @@ -4681,6 +4687,10 @@ struct wiphy_iftype_akm_suites { * supported by the driver for each peer * @tid_config_support.max_retry: maximum supported retry count for * long/short retry configuration + * + * @max_data_retry_count: maximum supported per TID retry count for + * configuration through the %NL80211_TID_CONFIG_ATTR_RETRY_SHORT and + * %NL80211_TID_CONFIG_ATTR_RETRY_LONG attributes */ struct wiphy { /* assign these fields before you register the wiphy */ diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index f7543c095b33..9947eb1e9eb6 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -254,6 +254,7 @@ static inline bool ipv6_anycast_destination(const struct dst_entry *dst, return rt->rt6i_flags & RTF_ANYCAST || (rt->rt6i_dst.plen < 127 && + !(rt->rt6i_flags & (RTF_GATEWAY | RTF_NONEXTHOP)) && ipv6_addr_equal(&rt->rt6i_dst.addr, daddr)); } diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 6eb627b3c99b..4ff7c81e6717 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h @@ -901,7 +901,7 @@ static inline void nft_set_elem_update_expr(const struct nft_set_ext *ext, { struct nft_expr *expr; - if (nft_set_ext_exists(ext, NFT_SET_EXT_EXPR)) { + if (__nft_set_ext_exists(ext, NFT_SET_EXT_EXPR)) { expr = nft_set_ext_expr(ext); expr->ops->eval(expr, regs, pkt); } diff --git a/include/net/sock.h b/include/net/sock.h index 6d84784d33fa..3e8c6d4b4b59 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2553,9 +2553,9 @@ sk_is_refcounted(struct sock *sk) } /** - * skb_steal_sock - * @skb to steal the socket from - * @refcounted is set to true if the socket is reference-counted + * skb_steal_sock - steal a socket from an sk_buff + * @skb: sk_buff to steal the socket from + * @refcounted: is set to true if the socket is reference-counted */ static inline struct sock * skb_steal_sock(struct sk_buff *skb, bool *refcounted) diff --git a/include/soc/mscc/ocelot.h b/include/soc/mscc/ocelot.h index ebffcb36a7e3..6d6a3947c8b7 100644 --- a/include/soc/mscc/ocelot.h +++ b/include/soc/mscc/ocelot.h @@ -476,6 +476,8 @@ struct ocelot_port { void __iomem *regs; + bool vlan_aware; + /* Ingress default VLAN (pvid) */ u16 pvid; @@ -610,7 +612,7 @@ int ocelot_port_bridge_leave(struct ocelot *ocelot, int port, int ocelot_fdb_dump(struct ocelot *ocelot, int port, dsa_fdb_dump_cb_t *cb, void *data); int ocelot_fdb_add(struct ocelot *ocelot, int port, - const unsigned char *addr, u16 vid, bool vlan_aware); + const unsigned char *addr, u16 vid); int ocelot_fdb_del(struct ocelot *ocelot, int port, const unsigned char *addr, u16 vid); int ocelot_vlan_add(struct ocelot *ocelot, int port, u16 vid, bool pvid, diff --git a/include/sound/hda_codec.h b/include/sound/hda_codec.h index 3ee8036f5436..225154a4f2ed 100644 --- a/include/sound/hda_codec.h +++ b/include/sound/hda_codec.h @@ -494,6 +494,11 @@ void snd_hda_update_power_acct(struct hda_codec *codec); static inline void snd_hda_set_power_save(struct hda_bus *bus, int delay) {} #endif +static inline bool hda_codec_need_resume(struct hda_codec *codec) +{ + return !codec->relaxed_resume && codec->jacktbl.used; +} + #ifdef CONFIG_SND_HDA_PATCH_LOADER /* * patch firmware diff --git a/include/trace/events/wbt.h b/include/trace/events/wbt.h index 37342a13c9cb..784814160197 100644 --- a/include/trace/events/wbt.h +++ b/include/trace/events/wbt.h @@ -46,7 +46,7 @@ TRACE_EVENT(wbt_stat, ), TP_printk("%s: rmean=%llu, rmin=%llu, rmax=%llu, rsamples=%llu, " - "wmean=%llu, wmin=%llu, wmax=%llu, wsamples=%llu\n", + "wmean=%llu, wmin=%llu, wmax=%llu, wsamples=%llu", __entry->name, __entry->rmean, __entry->rmin, __entry->rmax, __entry->rnr_samples, __entry->wmean, __entry->wmin, __entry->wmax, __entry->wnr_samples) @@ -73,7 +73,7 @@ TRACE_EVENT(wbt_lat, __entry->lat = div_u64(lat, 1000); ), - TP_printk("%s: latency %lluus\n", __entry->name, + TP_printk("%s: latency %lluus", __entry->name, (unsigned long long) __entry->lat) ); @@ -115,7 +115,7 @@ TRACE_EVENT(wbt_step, __entry->max = max; ), - TP_printk("%s: %s: step=%d, window=%luus, background=%u, normal=%u, max=%u\n", + TP_printk("%s: %s: step=%d, window=%luus, background=%u, normal=%u, max=%u", __entry->name, __entry->msg, __entry->step, __entry->window, __entry->bg, __entry->normal, __entry->max) ); @@ -148,7 +148,7 @@ TRACE_EVENT(wbt_timer, __entry->inflight = inflight; ), - TP_printk("%s: status=%u, step=%d, inflight=%u\n", __entry->name, + TP_printk("%s: status=%u, step=%d, inflight=%u", __entry->name, __entry->status, __entry->step, __entry->inflight) ); diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h index 8134924cfc17..e6b6cb0f8bc6 100644 --- a/include/uapi/linux/btrfs.h +++ b/include/uapi/linux/btrfs.h @@ -36,12 +36,10 @@ struct btrfs_ioctl_vol_args { #define BTRFS_DEVICE_PATH_NAME_MAX 1024 #define BTRFS_SUBVOL_NAME_MAX 4039 -/* - * Deprecated since 5.7: - * - * BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0) - */ - +#ifndef __KERNEL__ +/* Deprecated since 5.7 */ +# define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0) +#endif #define BTRFS_SUBVOL_RDONLY (1ULL << 1) #define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2) diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h index 30f2a87270dc..4565456c0ef4 100644 --- a/include/uapi/linux/netfilter/nf_tables.h +++ b/include/uapi/linux/netfilter/nf_tables.h @@ -276,6 +276,7 @@ enum nft_rule_compat_attributes { * @NFT_SET_TIMEOUT: set uses timeouts * @NFT_SET_EVAL: set can be updated from the evaluation path * @NFT_SET_OBJECT: set contains stateful objects + * @NFT_SET_CONCAT: set contains a concatenation */ enum nft_set_flags { NFT_SET_ANONYMOUS = 0x1, @@ -285,6 +286,7 @@ enum nft_set_flags { NFT_SET_TIMEOUT = 0x10, NFT_SET_EVAL = 0x20, NFT_SET_OBJECT = 0x40, + NFT_SET_CONCAT = 0x80, }; /** diff --git a/include/uapi/linux/netfilter/xt_IDLETIMER.h b/include/uapi/linux/netfilter/xt_IDLETIMER.h index 434e6506abaa..49ddcdc61c09 100644 --- a/include/uapi/linux/netfilter/xt_IDLETIMER.h +++ b/include/uapi/linux/netfilter/xt_IDLETIMER.h @@ -48,6 +48,7 @@ struct idletimer_tg_info_v1 { char label[MAX_IDLETIMER_LABEL_SIZE]; + __u8 send_nl_msg; /* unused: for compatibility with Android */ __u8 timer_type; /* for kernel module internal use only */ diff --git a/init/Makefile b/init/Makefile index 6246a06364d0..d45e967483b2 100644 --- a/init/Makefile +++ b/init/Makefile @@ -35,4 +35,4 @@ include/generated/compile.h: FORCE @$($(quiet)chk_compile.h) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" \ - "$(CONFIG_PREEMPT_RT)" "$(CC) $(KBUILD_CFLAGS)" + "$(CONFIG_PREEMPT_RT)" "$(CC)" "$(LD)" diff --git a/kernel/bpf/bpf_lru_list.h b/kernel/bpf/bpf_lru_list.h index f02504640e18..6b12f06ee18c 100644 --- a/kernel/bpf/bpf_lru_list.h +++ b/kernel/bpf/bpf_lru_list.h @@ -30,7 +30,7 @@ struct bpf_lru_node { struct bpf_lru_list { struct list_head lists[NR_BPF_LRU_LIST_T]; unsigned int counts[NR_BPF_LRU_LIST_COUNT]; - /* The next inacitve list rotation starts from here */ + /* The next inactive list rotation starts from here */ struct list_head *next_inactive_rotation; raw_spinlock_t lock ____cacheline_aligned_in_smp; diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 64783da34202..d85f37239540 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -586,9 +586,7 @@ static void bpf_map_mmap_open(struct vm_area_struct *vma) { struct bpf_map *map = vma->vm_file->private_data; - bpf_map_inc_with_uref(map); - - if (vma->vm_flags & VM_WRITE) { + if (vma->vm_flags & VM_MAYWRITE) { mutex_lock(&map->freeze_mutex); map->writecnt++; mutex_unlock(&map->freeze_mutex); @@ -600,13 +598,11 @@ static void bpf_map_mmap_close(struct vm_area_struct *vma) { struct bpf_map *map = vma->vm_file->private_data; - if (vma->vm_flags & VM_WRITE) { + if (vma->vm_flags & VM_MAYWRITE) { mutex_lock(&map->freeze_mutex); map->writecnt--; mutex_unlock(&map->freeze_mutex); } - - bpf_map_put_with_uref(map); } static const struct vm_operations_struct bpf_map_default_vmops = { @@ -635,14 +631,16 @@ static int bpf_map_mmap(struct file *filp, struct vm_area_struct *vma) /* set default open/close callbacks */ vma->vm_ops = &bpf_map_default_vmops; vma->vm_private_data = map; + vma->vm_flags &= ~VM_MAYEXEC; + if (!(vma->vm_flags & VM_WRITE)) + /* disallow re-mapping with PROT_WRITE */ + vma->vm_flags &= ~VM_MAYWRITE; err = map->ops->map_mmap(map, vma); if (err) goto out; - bpf_map_inc_with_uref(map); - - if (vma->vm_flags & VM_WRITE) + if (vma->vm_flags & VM_MAYWRITE) map->writecnt++; out: mutex_unlock(&map->freeze_mutex); diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 04c6630cc18f..38cfcf701eeb 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -1255,8 +1255,7 @@ static void __mark_reg_unknown(const struct bpf_verifier_env *env, reg->type = SCALAR_VALUE; reg->var_off = tnum_unknown; reg->frameno = 0; - reg->precise = env->subprog_cnt > 1 || !env->allow_ptr_leaks ? - true : false; + reg->precise = env->subprog_cnt > 1 || !env->allow_ptr_leaks; __mark_reg_unbounded(reg); } diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c index 2031ed1ad7fa..9e1777c81f55 100644 --- a/kernel/dma/debug.c +++ b/kernel/dma/debug.c @@ -137,9 +137,12 @@ static const char *const maperr2str[] = { [MAP_ERR_CHECKED] = "dma map error checked", }; -static const char *type2name[5] = { "single", "page", - "scather-gather", "coherent", - "resource" }; +static const char *type2name[] = { + [dma_debug_single] = "single", + [dma_debug_sg] = "scather-gather", + [dma_debug_coherent] = "coherent", + [dma_debug_resource] = "resource", +}; static const char *dir2name[4] = { "DMA_BIDIRECTIONAL", "DMA_TO_DEVICE", "DMA_FROM_DEVICE", "DMA_NONE" }; diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index a8560052a915..8f4bbdaf965e 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -39,7 +39,8 @@ static inline struct page *dma_direct_to_page(struct device *dev, u64 dma_direct_get_required_mask(struct device *dev) { - u64 max_dma = phys_to_dma_direct(dev, (max_pfn - 1) << PAGE_SHIFT); + phys_addr_t phys = (phys_addr_t)(max_pfn - 1) << PAGE_SHIFT; + u64 max_dma = phys_to_dma_direct(dev, phys); return (1ULL << (fls64(max_dma) - 1)) * 2 - 1; } diff --git a/kernel/events/core.c b/kernel/events/core.c index 55e44417f66d..bc9b98a9af9a 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -983,16 +983,10 @@ perf_cgroup_set_shadow_time(struct perf_event *event, u64 now) event->shadow_ctx_time = now - t->timestamp; } -/* - * Update cpuctx->cgrp so that it is set when first cgroup event is added and - * cleared when last cgroup event is removed. - */ static inline void -list_update_cgroup_event(struct perf_event *event, - struct perf_event_context *ctx, bool add) +perf_cgroup_event_enable(struct perf_event *event, struct perf_event_context *ctx) { struct perf_cpu_context *cpuctx; - struct list_head *cpuctx_entry; if (!is_cgroup_event(event)) return; @@ -1009,28 +1003,41 @@ list_update_cgroup_event(struct perf_event *event, * because if the first would mismatch, the second would not try again * and we would leave cpuctx->cgrp unset. */ - if (add && !cpuctx->cgrp) { + if (ctx->is_active && !cpuctx->cgrp) { struct perf_cgroup *cgrp = perf_cgroup_from_task(current, ctx); if (cgroup_is_descendant(cgrp->css.cgroup, event->cgrp->css.cgroup)) cpuctx->cgrp = cgrp; } - if (add && ctx->nr_cgroups++) + if (ctx->nr_cgroups++) return; - else if (!add && --ctx->nr_cgroups) + + list_add(&cpuctx->cgrp_cpuctx_entry, + per_cpu_ptr(&cgrp_cpuctx_list, event->cpu)); +} + +static inline void +perf_cgroup_event_disable(struct perf_event *event, struct perf_event_context *ctx) +{ + struct perf_cpu_context *cpuctx; + + if (!is_cgroup_event(event)) + return; + + /* + * Because cgroup events are always per-cpu events, + * @ctx == &cpuctx->ctx. + */ + cpuctx = container_of(ctx, struct perf_cpu_context, ctx); + + if (--ctx->nr_cgroups) return; - /* no cgroup running */ - if (!add) + if (ctx->is_active && cpuctx->cgrp) cpuctx->cgrp = NULL; - cpuctx_entry = &cpuctx->cgrp_cpuctx_entry; - if (add) - list_add(cpuctx_entry, - per_cpu_ptr(&cgrp_cpuctx_list, event->cpu)); - else - list_del(cpuctx_entry); + list_del(&cpuctx->cgrp_cpuctx_entry); } #else /* !CONFIG_CGROUP_PERF */ @@ -1096,11 +1103,14 @@ static inline u64 perf_cgroup_event_time(struct perf_event *event) } static inline void -list_update_cgroup_event(struct perf_event *event, - struct perf_event_context *ctx, bool add) +perf_cgroup_event_enable(struct perf_event *event, struct perf_event_context *ctx) { } +static inline void +perf_cgroup_event_disable(struct perf_event *event, struct perf_event_context *ctx) +{ +} #endif /* @@ -1791,13 +1801,14 @@ list_add_event(struct perf_event *event, struct perf_event_context *ctx) add_event_to_groups(event, ctx); } - list_update_cgroup_event(event, ctx, true); - list_add_rcu(&event->event_entry, &ctx->event_list); ctx->nr_events++; if (event->attr.inherit_stat) ctx->nr_stat++; + if (event->state > PERF_EVENT_STATE_OFF) + perf_cgroup_event_enable(event, ctx); + ctx->generation++; } @@ -1976,8 +1987,6 @@ list_del_event(struct perf_event *event, struct perf_event_context *ctx) event->attach_state &= ~PERF_ATTACH_CONTEXT; - list_update_cgroup_event(event, ctx, false); - ctx->nr_events--; if (event->attr.inherit_stat) ctx->nr_stat--; @@ -1994,8 +2003,10 @@ list_del_event(struct perf_event *event, struct perf_event_context *ctx) * of error state is by explicit re-enabling * of the event */ - if (event->state > PERF_EVENT_STATE_OFF) + if (event->state > PERF_EVENT_STATE_OFF) { + perf_cgroup_event_disable(event, ctx); perf_event_set_state(event, PERF_EVENT_STATE_OFF); + } ctx->generation++; } @@ -2226,6 +2237,7 @@ event_sched_out(struct perf_event *event, if (READ_ONCE(event->pending_disable) >= 0) { WRITE_ONCE(event->pending_disable, -1); + perf_cgroup_event_disable(event, ctx); state = PERF_EVENT_STATE_OFF; } perf_event_set_state(event, state); @@ -2363,6 +2375,7 @@ static void __perf_event_disable(struct perf_event *event, event_sched_out(event, cpuctx, ctx); perf_event_set_state(event, PERF_EVENT_STATE_OFF); + perf_cgroup_event_disable(event, ctx); } /* @@ -2746,7 +2759,7 @@ static int __perf_install_in_context(void *info) } #ifdef CONFIG_CGROUP_PERF - if (is_cgroup_event(event)) { + if (event->state > PERF_EVENT_STATE_OFF && is_cgroup_event(event)) { /* * If the current cgroup doesn't match the event's * cgroup, we should not try to schedule it. @@ -2906,6 +2919,7 @@ static void __perf_event_enable(struct perf_event *event, ctx_sched_out(ctx, cpuctx, EVENT_TIME); perf_event_set_state(event, PERF_EVENT_STATE_INACTIVE); + perf_cgroup_event_enable(event, ctx); if (!ctx->is_active) return; @@ -3508,7 +3522,8 @@ static void cpu_ctx_sched_out(struct perf_cpu_context *cpuctx, static bool perf_less_group_idx(const void *l, const void *r) { - const struct perf_event *le = l, *re = r; + const struct perf_event *le = *(const struct perf_event **)l; + const struct perf_event *re = *(const struct perf_event **)r; return le->group_index < re->group_index; } @@ -3616,8 +3631,10 @@ static int merge_sched_in(struct perf_event *event, void *data) } if (event->state == PERF_EVENT_STATE_INACTIVE) { - if (event->attr.pinned) + if (event->attr.pinned) { + perf_cgroup_event_disable(event, ctx); perf_event_set_state(event, PERF_EVENT_STATE_ERROR); + } *can_add_hw = 0; ctx->rotate_necessary = 1; @@ -6917,9 +6934,12 @@ static u64 perf_virt_to_phys(u64 virt) * Try IRQ-safe __get_user_pages_fast first. * If failed, leave phys_addr as 0. */ - if ((current->mm != NULL) && - (__get_user_pages_fast(virt, 1, 0, &p) == 1)) - phys_addr = page_to_phys(p) + virt % PAGE_SIZE; + if (current->mm != NULL) { + pagefault_disable(); + if (__get_user_pages_fast(virt, 1, 0, &p) == 1) + phys_addr = page_to_phys(p) + virt % PAGE_SIZE; + pagefault_enable(); + } if (p) put_page(p); diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 1511690e4de7..ac10db66cc63 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -3952,10 +3952,36 @@ static int mark_lock(struct task_struct *curr, struct held_lock *this, return ret; } +static inline short task_wait_context(struct task_struct *curr) +{ + /* + * Set appropriate wait type for the context; for IRQs we have to take + * into account force_irqthread as that is implied by PREEMPT_RT. + */ + if (curr->hardirq_context) { + /* + * Check if force_irqthreads will run us threaded. + */ + if (curr->hardirq_threaded || curr->irq_config) + return LD_WAIT_CONFIG; + + return LD_WAIT_SPIN; + } else if (curr->softirq_context) { + /* + * Softirqs are always threaded. + */ + return LD_WAIT_CONFIG; + } + + return LD_WAIT_MAX; +} + static int print_lock_invalid_wait_context(struct task_struct *curr, struct held_lock *hlock) { + short curr_inner; + if (!debug_locks_off()) return 0; if (debug_locks_silent) @@ -3971,6 +3997,10 @@ print_lock_invalid_wait_context(struct task_struct *curr, print_lock(hlock); pr_warn("other info that might help us debug this:\n"); + + curr_inner = task_wait_context(curr); + pr_warn("context-{%d:%d}\n", curr_inner, curr_inner); + lockdep_print_held_locks(curr); pr_warn("stack backtrace:\n"); @@ -4017,26 +4047,7 @@ static int check_wait_context(struct task_struct *curr, struct held_lock *next) } depth++; - /* - * Set appropriate wait type for the context; for IRQs we have to take - * into account force_irqthread as that is implied by PREEMPT_RT. - */ - if (curr->hardirq_context) { - /* - * Check if force_irqthreads will run us threaded. - */ - if (curr->hardirq_threaded || curr->irq_config) - curr_inner = LD_WAIT_CONFIG; - else - curr_inner = LD_WAIT_SPIN; - } else if (curr->softirq_context) { - /* - * Softirqs are always threaded. - */ - curr_inner = LD_WAIT_CONFIG; - } else { - curr_inner = LD_WAIT_MAX; - } + curr_inner = task_wait_context(curr); for (; depth < curr->lockdep_depth; depth++) { struct held_lock *prev = curr->held_locks + depth; diff --git a/kernel/locking/percpu-rwsem.c b/kernel/locking/percpu-rwsem.c index a008a1ba21a7..8bbafe3e5203 100644 --- a/kernel/locking/percpu-rwsem.c +++ b/kernel/locking/percpu-rwsem.c @@ -118,14 +118,15 @@ static int percpu_rwsem_wake_function(struct wait_queue_entry *wq_entry, unsigned int mode, int wake_flags, void *key) { - struct task_struct *p = get_task_struct(wq_entry->private); bool reader = wq_entry->flags & WQ_FLAG_CUSTOM; struct percpu_rw_semaphore *sem = key; + struct task_struct *p; /* concurrent against percpu_down_write(), can get stolen */ if (!__percpu_rwsem_trylock(sem, reader)) return 1; + p = get_task_struct(wq_entry->private); list_del_init(&wq_entry->entry); smp_store_release(&wq_entry->private, NULL); diff --git a/kernel/sched/core.c b/kernel/sched/core.c index a2694ba82874..3a61a3b8eaa9 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2119,12 +2119,6 @@ int select_task_rq(struct task_struct *p, int cpu, int sd_flags, int wake_flags) return cpu; } -static void update_avg(u64 *avg, u64 sample) -{ - s64 diff = sample - *avg; - *avg += diff >> 3; -} - void sched_set_stop_task(int cpu, struct task_struct *stop) { struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 }; @@ -4126,7 +4120,8 @@ static inline void sched_submit_work(struct task_struct *tsk) * it wants to wake up a task to maintain concurrency. * As this function is called inside the schedule() context, * we disable preemption to avoid it calling schedule() again - * in the possible wakeup of a kworker. + * in the possible wakeup of a kworker and because wq_worker_sleeping() + * requires it. */ if (tsk->flags & (PF_WQ_WORKER | PF_IO_WORKER)) { preempt_disable(); @@ -6699,7 +6694,6 @@ void __init sched_init(void) rq_attach_root(rq, &def_root_domain); #ifdef CONFIG_NO_HZ_COMMON - rq->last_load_update_tick = jiffies; rq->last_blocked_load_update_tick = jiffies; atomic_set(&rq->nohz_flags, 0); #endif diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 8331bc04aea2..a562df57a86e 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -816,10 +816,12 @@ static int __init init_sched_debug_procfs(void) __initcall(init_sched_debug_procfs); -#define __P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F) -#define P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F) -#define __PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F)) -#define PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F)) +#define __PS(S, F) SEQ_printf(m, "%-45s:%21Ld\n", S, (long long)(F)) +#define __P(F) __PS(#F, F) +#define P(F) __PS(#F, p->F) +#define __PSN(S, F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", S, SPLIT_NS((long long)(F))) +#define __PN(F) __PSN(#F, F) +#define PN(F) __PSN(#F, p->F) #ifdef CONFIG_NUMA_BALANCING @@ -868,18 +870,9 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, SEQ_printf(m, "---------------------------------------------------------" "----------\n"); -#define __P(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F) -#define P(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F) -#define P_SCHEDSTAT(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)schedstat_val(p->F)) -#define __PN(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F)) -#define PN(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F)) -#define PN_SCHEDSTAT(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)schedstat_val(p->F))) + +#define P_SCHEDSTAT(F) __PS(#F, schedstat_val(p->F)) +#define PN_SCHEDSTAT(F) __PSN(#F, schedstat_val(p->F)) PN(se.exec_start); PN(se.vruntime); @@ -939,10 +932,8 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, } __P(nr_switches); - SEQ_printf(m, "%-45s:%21Ld\n", - "nr_voluntary_switches", (long long)p->nvcsw); - SEQ_printf(m, "%-45s:%21Ld\n", - "nr_involuntary_switches", (long long)p->nivcsw); + __PS("nr_voluntary_switches", p->nvcsw); + __PS("nr_involuntary_switches", p->nivcsw); P(se.load.weight); #ifdef CONFIG_SMP @@ -956,6 +947,12 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, P(se.avg.util_est.ewma); P(se.avg.util_est.enqueued); #endif +#ifdef CONFIG_UCLAMP_TASK + __PS("uclamp.min", p->uclamp[UCLAMP_MIN].value); + __PS("uclamp.max", p->uclamp[UCLAMP_MAX].value); + __PS("effective uclamp.min", uclamp_eff_value(p, UCLAMP_MIN)); + __PS("effective uclamp.max", uclamp_eff_value(p, UCLAMP_MAX)); +#endif P(policy); P(prio); if (task_has_dl_policy(p)) { @@ -963,11 +960,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, P(dl.deadline); } #undef PN_SCHEDSTAT -#undef PN -#undef __PN #undef P_SCHEDSTAT -#undef P -#undef __P { unsigned int this_cpu = raw_smp_processor_id(); @@ -975,8 +968,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, t0 = cpu_clock(this_cpu); t1 = cpu_clock(this_cpu); - SEQ_printf(m, "%-45s:%21Ld\n", - "clock-delta", (long long)(t1-t0)); + __PS("clock-delta", t1-t0); } sched_show_numa(p, m); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 1ea3dddafe69..02f323b85b6d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4836,11 +4836,10 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) resched_curr(rq); } -static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) +static void distribute_cfs_runtime(struct cfs_bandwidth *cfs_b) { struct cfs_rq *cfs_rq; - u64 runtime; - u64 starting_runtime = remaining; + u64 runtime, remaining = 1; rcu_read_lock(); list_for_each_entry_rcu(cfs_rq, &cfs_b->throttled_cfs_rq, @@ -4855,10 +4854,13 @@ static u64 distribute_cfs_runtime(struct cfs_bandwidth *cfs_b, u64 remaining) /* By the above check, this should never be true */ SCHED_WARN_ON(cfs_rq->runtime_remaining > 0); + raw_spin_lock(&cfs_b->lock); runtime = -cfs_rq->runtime_remaining + 1; - if (runtime > remaining) - runtime = remaining; - remaining -= runtime; + if (runtime > cfs_b->runtime) + runtime = cfs_b->runtime; + cfs_b->runtime -= runtime; + remaining = cfs_b->runtime; + raw_spin_unlock(&cfs_b->lock); cfs_rq->runtime_remaining += runtime; @@ -4873,8 +4875,6 @@ next: break; } rcu_read_unlock(); - - return starting_runtime - remaining; } /* @@ -4885,7 +4885,6 @@ next: */ static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun, unsigned long flags) { - u64 runtime; int throttled; /* no need to continue the timer with no bandwidth constraint */ @@ -4914,24 +4913,17 @@ static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun, u cfs_b->nr_throttled += overrun; /* - * This check is repeated as we are holding onto the new bandwidth while - * we unthrottle. This can potentially race with an unthrottled group - * trying to acquire new bandwidth from the global pool. This can result - * in us over-using our runtime if it is all used during this loop, but - * only by limited amounts in that extreme case. + * This check is repeated as we release cfs_b->lock while we unthrottle. */ while (throttled && cfs_b->runtime > 0 && !cfs_b->distribute_running) { - runtime = cfs_b->runtime; cfs_b->distribute_running = 1; raw_spin_unlock_irqrestore(&cfs_b->lock, flags); /* we can't nest cfs_b->lock while distributing bandwidth */ - runtime = distribute_cfs_runtime(cfs_b, runtime); + distribute_cfs_runtime(cfs_b); raw_spin_lock_irqsave(&cfs_b->lock, flags); cfs_b->distribute_running = 0; throttled = !list_empty(&cfs_b->throttled_cfs_rq); - - lsub_positive(&cfs_b->runtime, runtime); } /* @@ -5065,10 +5057,9 @@ static void do_sched_cfs_slack_timer(struct cfs_bandwidth *cfs_b) if (!runtime) return; - runtime = distribute_cfs_runtime(cfs_b, runtime); + distribute_cfs_runtime(cfs_b); raw_spin_lock_irqsave(&cfs_b->lock, flags); - lsub_positive(&cfs_b->runtime, runtime); cfs_b->distribute_running = 0; raw_spin_unlock_irqrestore(&cfs_b->lock, flags); } @@ -6080,8 +6071,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_idle_mask); struct sched_domain *this_sd; u64 avg_cost, avg_idle; - u64 time, cost; - s64 delta; + u64 time; int this = smp_processor_id(); int cpu, nr = INT_MAX; @@ -6119,9 +6109,7 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t } time = cpu_clock(this) - time; - cost = this_sd->avg_scan_cost; - delta = (s64)(time - cost) / 8; - this_sd->avg_scan_cost += delta; + update_avg(&this_sd->avg_scan_cost, time); return cpu; } @@ -9048,6 +9036,14 @@ static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *s sds->avg_load = (sds->total_load * SCHED_CAPACITY_SCALE) / sds->total_capacity; + /* + * If the local group is more loaded than the selected + * busiest group don't try to pull any tasks. + */ + if (local->avg_load >= busiest->avg_load) { + env->imbalance = 0; + return; + } } /* diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 0f616bf7bce3..db3a57675ccf 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -195,6 +195,12 @@ static inline int task_has_dl_policy(struct task_struct *p) #define cap_scale(v, s) ((v)*(s) >> SCHED_CAPACITY_SHIFT) +static inline void update_avg(u64 *avg, u64 sample) +{ + s64 diff = sample - *avg; + *avg += diff / 8; +} + /* * !! For sched_setattr_nocheck() (kernel) only !! * @@ -882,7 +888,6 @@ struct rq { #endif #ifdef CONFIG_NO_HZ_COMMON #ifdef CONFIG_SMP - unsigned long last_load_update_tick; unsigned long last_blocked_load_update_tick; unsigned int has_blocked_load; #endif /* CONFIG_SMP */ diff --git a/kernel/time/namespace.c b/kernel/time/namespace.c index e6ba064ce773..3b30288793fe 100644 --- a/kernel/time/namespace.c +++ b/kernel/time/namespace.c @@ -447,6 +447,7 @@ const struct proc_ns_operations timens_operations = { const struct proc_ns_operations timens_for_children_operations = { .name = "time_for_children", + .real_ns_name = "time", .type = CLONE_NEWTIME, .get = timens_for_children_get, .put = timens_put, diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c index dd34a1b46a86..3a74736da363 100644 --- a/kernel/trace/trace_events_trigger.c +++ b/kernel/trace/trace_events_trigger.c @@ -1088,14 +1088,10 @@ register_snapshot_trigger(char *glob, struct event_trigger_ops *ops, struct event_trigger_data *data, struct trace_event_file *file) { - int ret = register_trigger(glob, ops, data, file); - - if (ret > 0 && tracing_alloc_snapshot_instance(file->tr) != 0) { - unregister_trigger(glob, ops, data, file); - ret = 0; - } + if (tracing_alloc_snapshot_instance(file->tr) != 0) + return 0; - return ret; + return register_trigger(glob, ops, data, file); } static int diff --git a/kernel/ucount.c b/kernel/ucount.c index a53cc2b4179c..11b1596e2542 100644 --- a/kernel/ucount.c +++ b/kernel/ucount.c @@ -69,6 +69,7 @@ static struct ctl_table user_table[] = { UCOUNT_ENTRY("max_net_namespaces"), UCOUNT_ENTRY("max_mnt_namespaces"), UCOUNT_ENTRY("max_cgroup_namespaces"), + UCOUNT_ENTRY("max_time_namespaces"), #ifdef CONFIG_INOTIFY_USER UCOUNT_ENTRY("max_inotify_instances"), UCOUNT_ENTRY("max_inotify_watches"), @@ -81,6 +82,8 @@ bool setup_userns_sysctls(struct user_namespace *ns) { #ifdef CONFIG_SYSCTL struct ctl_table *tbl; + + BUILD_BUG_ON(ARRAY_SIZE(user_table) != UCOUNT_COUNTS + 1); setup_sysctl_set(&ns->set, &set_root, set_is_seen); tbl = kmemdup(user_table, sizeof(user_table), GFP_KERNEL); if (tbl) { diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 3816a18c251e..891ccad5f271 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -858,7 +858,8 @@ void wq_worker_running(struct task_struct *task) * @task: task going to sleep * * This function is called from schedule() when a busy worker is - * going to sleep. + * going to sleep. Preemption needs to be disabled to protect ->sleeping + * assignment. */ void wq_worker_sleeping(struct task_struct *task) { @@ -875,7 +876,8 @@ void wq_worker_sleeping(struct task_struct *task) pool = worker->pool; - if (WARN_ON_ONCE(worker->sleeping)) + /* Return if preempted before wq_worker_running() was reached */ + if (worker->sleeping) return; worker->sleeping = 1; diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 50c1f5f08e6f..21d9c5f6e7ec 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -242,6 +242,8 @@ config DEBUG_INFO_DWARF4 config DEBUG_INFO_BTF bool "Generate BTF typeinfo" depends on DEBUG_INFO + depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED + depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST help Generate deduplicated BTF type information from DWARF debug info. Turning this on expects presence of pahole tool, which will convert diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c index bf1b4765c8f6..6d5e5000fdd7 100644 --- a/lib/raid6/algos.c +++ b/lib/raid6/algos.c @@ -34,10 +34,8 @@ const struct raid6_calls * const raid6_algos[] = { &raid6_avx512x2, &raid6_avx512x1, #endif -#ifdef CONFIG_AS_AVX2 &raid6_avx2x2, &raid6_avx2x1, -#endif &raid6_sse2x2, &raid6_sse2x1, &raid6_sse1x2, @@ -51,11 +49,9 @@ const struct raid6_calls * const raid6_algos[] = { &raid6_avx512x2, &raid6_avx512x1, #endif -#ifdef CONFIG_AS_AVX2 &raid6_avx2x4, &raid6_avx2x2, &raid6_avx2x1, -#endif &raid6_sse2x4, &raid6_sse2x2, &raid6_sse2x1, @@ -97,13 +93,11 @@ void (*raid6_datap_recov)(int, size_t, int, void **); EXPORT_SYMBOL_GPL(raid6_datap_recov); const struct raid6_recov_calls *const raid6_recov_algos[] = { +#ifdef CONFIG_X86 #ifdef CONFIG_AS_AVX512 &raid6_recov_avx512, #endif -#ifdef CONFIG_AS_AVX2 &raid6_recov_avx2, -#endif -#ifdef CONFIG_AS_SSSE3 &raid6_recov_ssse3, #endif #ifdef CONFIG_S390 diff --git a/lib/raid6/avx2.c b/lib/raid6/avx2.c index 87184b6da28a..f299476e1d76 100644 --- a/lib/raid6/avx2.c +++ b/lib/raid6/avx2.c @@ -13,8 +13,6 @@ * */ -#ifdef CONFIG_AS_AVX2 - #include <linux/raid/pq.h> #include "x86.h" @@ -470,5 +468,3 @@ const struct raid6_calls raid6_avx2x4 = { 1 /* Has cache hints */ }; #endif - -#endif /* CONFIG_AS_AVX2 */ diff --git a/lib/raid6/recov_avx2.c b/lib/raid6/recov_avx2.c index 7a3b5e7f66ee..4e8095403ee2 100644 --- a/lib/raid6/recov_avx2.c +++ b/lib/raid6/recov_avx2.c @@ -4,8 +4,6 @@ * Author: Jim Kukunas <james.t.kukunas@linux.intel.com> */ -#ifdef CONFIG_AS_AVX2 - #include <linux/raid/pq.h> #include "x86.h" @@ -313,7 +311,3 @@ const struct raid6_recov_calls raid6_recov_avx2 = { #endif .priority = 2, }; - -#else -#warning "your version of binutils lacks AVX2 support" -#endif diff --git a/lib/raid6/recov_ssse3.c b/lib/raid6/recov_ssse3.c index 1de97d2405d0..4bfa3c6b60de 100644 --- a/lib/raid6/recov_ssse3.c +++ b/lib/raid6/recov_ssse3.c @@ -3,8 +3,6 @@ * Copyright (C) 2012 Intel Corporation */ -#ifdef CONFIG_AS_SSSE3 - #include <linux/raid/pq.h> #include "x86.h" @@ -328,7 +326,3 @@ const struct raid6_recov_calls raid6_recov_ssse3 = { #endif .priority = 1, }; - -#else -#warning "your version of binutils lacks SSSE3 support" -#endif diff --git a/lib/raid6/test/Makefile b/lib/raid6/test/Makefile index 3ab8720aa2f8..a4c7cd74cff5 100644 --- a/lib/raid6/test/Makefile +++ b/lib/raid6/test/Makefile @@ -34,14 +34,9 @@ endif ifeq ($(IS_X86),yes) OBJS += mmx.o sse1.o sse2.o avx2.o recov_ssse3.o recov_avx2.o avx512.o recov_avx512.o - CFLAGS += $(shell echo "pshufb %xmm0, %xmm0" | \ - gcc -c -x assembler - >&/dev/null && \ - rm ./-.o && echo -DCONFIG_AS_SSSE3=1) - CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1" | \ - gcc -c -x assembler - >&/dev/null && \ - rm ./-.o && echo -DCONFIG_AS_AVX2=1) + CFLAGS += -DCONFIG_X86 CFLAGS += $(shell echo "vpmovm2b %k1, %zmm5" | \ - gcc -c -x assembler - >&/dev/null && \ + gcc -c -x assembler - >/dev/null 2>&1 && \ rm ./-.o && echo -DCONFIG_AS_AVX512=1) else ifeq ($(HAS_NEON),yes) OBJS += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o diff --git a/net/core/dev.c b/net/core/dev.c index 9c9e763bfe0e..522288177bbd 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4140,7 +4140,8 @@ EXPORT_SYMBOL(netdev_max_backlog); int netdev_tstamp_prequeue __read_mostly = 1; int netdev_budget __read_mostly = 300; -unsigned int __read_mostly netdev_budget_usecs = 2000; +/* Must be at least 2 jiffes to guarantee 1 jiffy timeout */ +unsigned int __read_mostly netdev_budget_usecs = 2 * USEC_PER_SEC / HZ; int weight_p __read_mostly = 64; /* old backlog weight */ int dev_weight_rx_bias __read_mostly = 1; /* bias for backlog weight */ int dev_weight_tx_bias __read_mostly = 1; /* bias for output_queue quota */ @@ -8666,8 +8667,8 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, const struct net_device_ops *ops = dev->netdev_ops; enum bpf_netdev_command query; u32 prog_id, expected_id = 0; - struct bpf_prog *prog = NULL; bpf_op_t bpf_op, bpf_chk; + struct bpf_prog *prog; bool offload; int err; @@ -8733,6 +8734,7 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, } else { if (!prog_id) return 0; + prog = NULL; } err = dev_xdp_install(dev, bpf_op, extack, flags, prog); diff --git a/net/core/filter.c b/net/core/filter.c index 7628b947dbc3..7d6ceaa54d21 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -5925,7 +5925,7 @@ BPF_CALL_3(bpf_sk_assign, struct sk_buff *, skb, struct sock *, sk, u64, flags) return -EOPNOTSUPP; if (unlikely(dev_net(skb->dev) != sock_net(sk))) return -ENETUNREACH; - if (unlikely(sk->sk_reuseport)) + if (unlikely(sk_fullsock(sk) && sk->sk_reuseport)) return -ESOCKTNOSUPPORT; if (sk_is_refcounted(sk) && unlikely(!refcount_inc_not_zero(&sk->sk_refcnt))) diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index cf0215734ceb..4773ad6ec111 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -80,7 +80,7 @@ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr, struct net_device *netdev = to_net_dev(dev); struct net *net = dev_net(netdev); unsigned long new; - int ret = -EINVAL; + int ret; if (!ns_capable(net->user_ns, CAP_NET_ADMIN)) return -EPERM; diff --git a/net/core/sock.c b/net/core/sock.c index ce1d8dce9b7a..90509c37d291 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1872,7 +1872,7 @@ struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority) * as not suitable for copying when cloning. */ if (sk_user_data_is_nocopy(newsk)) - RCU_INIT_POINTER(newsk->sk_user_data, NULL); + newsk->sk_user_data = NULL; newsk->sk_err = 0; newsk->sk_err_soft = 0; diff --git a/net/dsa/port.c b/net/dsa/port.c index 231b2d494f1c..a58fdd362574 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -670,11 +670,16 @@ int dsa_port_link_register_of(struct dsa_port *dp) { struct dsa_switch *ds = dp->ds; struct device_node *phy_np; + int port = dp->index; if (!ds->ops->adjust_link) { phy_np = of_parse_phandle(dp->dn, "phy-handle", 0); - if (of_phy_is_fixed_link(dp->dn) || phy_np) + if (of_phy_is_fixed_link(dp->dn) || phy_np) { + if (ds->ops->phylink_mac_link_down) + ds->ops->phylink_mac_link_down(ds, port, + MLO_AN_FIXED, PHY_INTERFACE_MODE_NA); return dsa_port_phylink_register(dp); + } return 0; } diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c index 5465a395da04..1decb25f6764 100644 --- a/net/hsr/hsr_netlink.c +++ b/net/hsr/hsr_netlink.c @@ -69,10 +69,16 @@ static int hsr_newlink(struct net *src_net, struct net_device *dev, else multicast_spec = nla_get_u8(data[IFLA_HSR_MULTICAST_SPEC]); - if (!data[IFLA_HSR_VERSION]) + if (!data[IFLA_HSR_VERSION]) { hsr_version = 0; - else + } else { hsr_version = nla_get_u8(data[IFLA_HSR_VERSION]); + if (hsr_version > 1) { + NL_SET_ERR_MSG_MOD(extack, + "Only versions 0..1 are supported"); + return -EINVAL; + } + } return hsr_dev_finalize(dev, link, multicast_spec, hsr_version, extack); } diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 30fa42f5997d..c0dd561aa190 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -614,12 +614,15 @@ struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix, return NULL; } -static int ip_mc_config(struct sock *sk, bool join, const struct in_ifaddr *ifa) +static int ip_mc_autojoin_config(struct net *net, bool join, + const struct in_ifaddr *ifa) { +#if defined(CONFIG_IP_MULTICAST) struct ip_mreqn mreq = { .imr_multiaddr.s_addr = ifa->ifa_address, .imr_ifindex = ifa->ifa_dev->dev->ifindex, }; + struct sock *sk = net->ipv4.mc_autojoin_sk; int ret; ASSERT_RTNL(); @@ -632,6 +635,9 @@ static int ip_mc_config(struct sock *sk, bool join, const struct in_ifaddr *ifa) release_sock(sk); return ret; +#else + return -EOPNOTSUPP; +#endif } static int inet_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh, @@ -675,7 +681,7 @@ static int inet_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh, continue; if (ipv4_is_multicast(ifa->ifa_address)) - ip_mc_config(net->ipv4.mc_autojoin_sk, false, ifa); + ip_mc_autojoin_config(net, false, ifa); __inet_del_ifa(in_dev, ifap, 1, nlh, NETLINK_CB(skb).portid); return 0; } @@ -940,8 +946,7 @@ static int inet_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh, */ set_ifa_lifetime(ifa, valid_lft, prefered_lft); if (ifa->ifa_flags & IFA_F_MCAUTOJOIN) { - int ret = ip_mc_config(net->ipv4.mc_autojoin_sk, - true, ifa); + int ret = ip_mc_autojoin_config(net, true, ifa); if (ret < 0) { inet_free_ifa(ifa); diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index 2688f3e82165..fc5000370030 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c @@ -229,6 +229,25 @@ static bool icmpv6_xrlim_allow(struct sock *sk, u8 type, return res; } +static bool icmpv6_rt_has_prefsrc(struct sock *sk, u8 type, + struct flowi6 *fl6) +{ + struct net *net = sock_net(sk); + struct dst_entry *dst; + bool res = false; + + dst = ip6_route_output(net, sk, fl6); + if (!dst->error) { + struct rt6_info *rt = (struct rt6_info *)dst; + struct in6_addr prefsrc; + + rt6_get_prefsrc(rt, &prefsrc); + res = !ipv6_addr_any(&prefsrc); + } + dst_release(dst); + return res; +} + /* * an inline helper for the "simple" if statement below * checks if parameter problem report is caused by an @@ -527,7 +546,7 @@ static void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info, saddr = force_saddr; if (saddr) { fl6.saddr = *saddr; - } else { + } else if (!icmpv6_rt_has_prefsrc(sk, type, &fl6)) { /* select a more meaningful saddr from input if */ struct net_device *in_netdev; diff --git a/net/ipv6/seg6.c b/net/ipv6/seg6.c index 75421a472d25..4c7e0a27fa9c 100644 --- a/net/ipv6/seg6.c +++ b/net/ipv6/seg6.c @@ -434,7 +434,7 @@ static struct genl_family seg6_genl_family __ro_after_init = { int __init seg6_init(void) { - int err = -ENOMEM; + int err; err = genl_register_family(&seg6_genl_family); if (err) diff --git a/net/l2tp/l2tp_netlink.c b/net/l2tp/l2tp_netlink.c index f5a9bdc4980c..ebb381c3f1b9 100644 --- a/net/l2tp/l2tp_netlink.c +++ b/net/l2tp/l2tp_netlink.c @@ -920,51 +920,51 @@ static const struct genl_ops l2tp_nl_ops[] = { .cmd = L2TP_CMD_TUNNEL_CREATE, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_tunnel_create, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, { .cmd = L2TP_CMD_TUNNEL_DELETE, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_tunnel_delete, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, { .cmd = L2TP_CMD_TUNNEL_MODIFY, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_tunnel_modify, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, { .cmd = L2TP_CMD_TUNNEL_GET, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_tunnel_get, .dumpit = l2tp_nl_cmd_tunnel_dump, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, { .cmd = L2TP_CMD_SESSION_CREATE, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_session_create, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, { .cmd = L2TP_CMD_SESSION_DELETE, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_session_delete, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, { .cmd = L2TP_CMD_SESSION_MODIFY, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_session_modify, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, { .cmd = L2TP_CMD_SESSION_GET, .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, .doit = l2tp_nl_cmd_session_get, .dumpit = l2tp_nl_cmd_session_dump, - .flags = GENL_ADMIN_PERM, + .flags = GENL_UNS_ADMIN_PERM, }, }; diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 8345926193de..0e9ad60fb2b3 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -1069,7 +1069,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) local->hw.wiphy->signal_type = CFG80211_SIGNAL_TYPE_UNSPEC; if (hw->max_signal <= 0) { result = -EINVAL; - goto fail_wiphy_register; + goto fail_workqueue; } } @@ -1135,7 +1135,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) result = ieee80211_init_cipher_suites(local); if (result < 0) - goto fail_wiphy_register; + goto fail_workqueue; if (!local->ops->remain_on_channel) local->hw.wiphy->max_remain_on_channel_duration = 5000; @@ -1161,10 +1161,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) local->hw.wiphy->max_num_csa_counters = IEEE80211_MAX_CSA_COUNTERS_NUM; - result = wiphy_register(local->hw.wiphy); - if (result < 0) - goto fail_wiphy_register; - /* * We use the number of queues for feature tests (QoS, HT) internally * so restrict them appropriately. @@ -1217,9 +1213,9 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) goto fail_flows; rtnl_lock(); - result = ieee80211_init_rate_ctrl_alg(local, hw->rate_control_algorithm); + rtnl_unlock(); if (result < 0) { wiphy_debug(local->hw.wiphy, "Failed to initialize rate control algorithm\n"); @@ -1273,6 +1269,12 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) local->sband_allocated |= BIT(band); } + result = wiphy_register(local->hw.wiphy); + if (result < 0) + goto fail_wiphy_register; + + rtnl_lock(); + /* add one default STA interface if supported */ if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_STATION) && !ieee80211_hw_check(hw, NO_AUTO_VIF)) { @@ -1312,17 +1314,17 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) #if defined(CONFIG_INET) || defined(CONFIG_IPV6) fail_ifa: #endif + wiphy_unregister(local->hw.wiphy); + fail_wiphy_register: rtnl_lock(); rate_control_deinitialize(local); ieee80211_remove_interfaces(local); - fail_rate: rtnl_unlock(); + fail_rate: fail_flows: ieee80211_led_exit(local); destroy_workqueue(local->workqueue); fail_workqueue: - wiphy_unregister(local->hw.wiphy); - fail_wiphy_register: if (local->wiphy_ciphers_allocated) kfree(local->hw.wiphy->cipher_suites); kfree(local->int_scan_req); @@ -1372,8 +1374,8 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw) skb_queue_purge(&local->skb_queue_unreliable); skb_queue_purge(&local->skb_queue_tdls_chsw); - destroy_workqueue(local->workqueue); wiphy_unregister(local->hw.wiphy); + destroy_workqueue(local->workqueue); ieee80211_led_exit(local); kfree(local->int_scan_req); } diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c index d09b3c789314..36978a0e5000 100644 --- a/net/mac80211/mesh.c +++ b/net/mac80211/mesh.c @@ -1257,15 +1257,15 @@ static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, sdata->u.mesh.mshcfg.rssi_threshold < rx_status->signal) mesh_neighbour_update(sdata, mgmt->sa, &elems, rx_status); + + if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT && + !sdata->vif.csa_active) + ieee80211_mesh_process_chnswitch(sdata, &elems, true); } if (ifmsh->sync_ops) ifmsh->sync_ops->rx_bcn_presp(sdata, stype, mgmt, &elems, rx_status); - - if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT && - !sdata->vif.csa_active) - ieee80211_mesh_process_chnswitch(sdata, &elems, true); } int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata) @@ -1373,6 +1373,9 @@ static void mesh_rx_csa_frame(struct ieee80211_sub_if_data *sdata, ieee802_11_parse_elems(pos, len - baselen, true, &elems, mgmt->bssid, NULL); + if (!mesh_matches_local(sdata, &elems)) + return; + ifmsh->chsw_ttl = elems.mesh_chansw_params_ie->mesh_ttl; if (!--ifmsh->chsw_ttl) fwd_csa = false; diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 939a5045181a..9936e33ac351 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -97,12 +97,7 @@ static struct socket *__mptcp_tcp_fallback(struct mptcp_sock *msk) if (likely(!__mptcp_needs_tcp_fallback(msk))) return NULL; - if (msk->subflow) { - release_sock((struct sock *)msk); - return msk->subflow; - } - - return NULL; + return msk->subflow; } static bool __mptcp_can_create_subflow(const struct mptcp_sock *msk) @@ -734,9 +729,10 @@ static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) goto out; } +fallback: ssock = __mptcp_tcp_fallback(msk); if (unlikely(ssock)) { -fallback: + release_sock(sk); pr_debug("fallback passthrough"); ret = sock_sendmsg(ssock, msg); return ret >= 0 ? ret + copied : (copied ? copied : ret); @@ -769,8 +765,14 @@ fallback: if (ret < 0) break; if (ret == 0 && unlikely(__mptcp_needs_tcp_fallback(msk))) { + /* Can happen for passive sockets: + * 3WHS negotiated MPTCP, but first packet after is + * plain TCP (e.g. due to middlebox filtering unknown + * options). + * + * Fall back to TCP. + */ release_sock(ssk); - ssock = __mptcp_tcp_fallback(msk); goto fallback; } @@ -883,6 +885,7 @@ static int mptcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, ssock = __mptcp_tcp_fallback(msk); if (unlikely(ssock)) { fallback: + release_sock(sk); pr_debug("fallback-read subflow=%p", mptcp_subflow_ctx(ssock->sk)); copied = sock_recvmsg(ssock, msg, flags); @@ -1467,12 +1470,11 @@ static int mptcp_setsockopt(struct sock *sk, int level, int optname, */ lock_sock(sk); ssock = __mptcp_tcp_fallback(msk); + release_sock(sk); if (ssock) return tcp_setsockopt(ssock->sk, level, optname, optval, optlen); - release_sock(sk); - return -EOPNOTSUPP; } @@ -1492,12 +1494,11 @@ static int mptcp_getsockopt(struct sock *sk, int level, int optname, */ lock_sock(sk); ssock = __mptcp_tcp_fallback(msk); + release_sock(sk); if (ssock) return tcp_getsockopt(ssock->sk, level, optname, optval, option); - release_sock(sk); - return -EOPNOTSUPP; } diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile index 292e71dc7ba4..0e0ded87e27b 100644 --- a/net/netfilter/Makefile +++ b/net/netfilter/Makefile @@ -83,7 +83,7 @@ nf_tables-objs := nf_tables_core.o nf_tables_api.o nft_chain_filter.o \ nft_set_pipapo.o ifdef CONFIG_X86_64 -ifneq (,$(findstring -DCONFIG_AS_AVX2=1,$(KBUILD_CFLAGS))) +ifndef CONFIG_UML nf_tables-objs += nft_set_pipapo_avx2.o endif endif diff --git a/net/netfilter/ipset/ip_set_core.c b/net/netfilter/ipset/ip_set_core.c index 8dd17589217d..340cb955af25 100644 --- a/net/netfilter/ipset/ip_set_core.c +++ b/net/netfilter/ipset/ip_set_core.c @@ -86,7 +86,8 @@ find_set_type(const char *name, u8 family, u8 revision) { struct ip_set_type *type; - list_for_each_entry_rcu(type, &ip_set_type_list, list) + list_for_each_entry_rcu(type, &ip_set_type_list, list, + lockdep_is_held(&ip_set_type_mutex)) if (STRNCMP(type->name, name) && (type->family == family || type->family == NFPROTO_UNSPEC) && diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index d0ab5ffa1e2c..9780bd93b7e4 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -3291,7 +3291,7 @@ static const struct nft_set_type *nft_set_types[] = { &nft_set_rhash_type, &nft_set_bitmap_type, &nft_set_rbtree_type, -#if defined(CONFIG_X86_64) && defined(CONFIG_AS_AVX2) +#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) &nft_set_pipapo_avx2_type, #endif &nft_set_pipapo_type, @@ -3542,6 +3542,7 @@ cont: continue; if (!strcmp(set->name, i->name)) { kfree(set->name); + set->name = NULL; return -ENFILE; } } @@ -3961,8 +3962,8 @@ static int nf_tables_newset(struct net *net, struct sock *nlsk, if (flags & ~(NFT_SET_ANONYMOUS | NFT_SET_CONSTANT | NFT_SET_INTERVAL | NFT_SET_TIMEOUT | NFT_SET_MAP | NFT_SET_EVAL | - NFT_SET_OBJECT)) - return -EINVAL; + NFT_SET_OBJECT | NFT_SET_CONCAT)) + return -EOPNOTSUPP; /* Only one of these operations is supported */ if ((flags & (NFT_SET_MAP | NFT_SET_OBJECT)) == (NFT_SET_MAP | NFT_SET_OBJECT)) @@ -4000,7 +4001,7 @@ static int nf_tables_newset(struct net *net, struct sock *nlsk, objtype = ntohl(nla_get_be32(nla[NFTA_SET_OBJ_TYPE])); if (objtype == NFT_OBJECT_UNSPEC || objtype > NFT_OBJECT_MAX) - return -EINVAL; + return -EOPNOTSUPP; } else if (flags & NFT_SET_OBJECT) return -EINVAL; else diff --git a/net/netfilter/nft_lookup.c b/net/netfilter/nft_lookup.c index 1e70359d633c..f1363b8aabba 100644 --- a/net/netfilter/nft_lookup.c +++ b/net/netfilter/nft_lookup.c @@ -29,7 +29,7 @@ void nft_lookup_eval(const struct nft_expr *expr, { const struct nft_lookup *priv = nft_expr_priv(expr); const struct nft_set *set = priv->set; - const struct nft_set_ext *ext; + const struct nft_set_ext *ext = NULL; bool found; found = set->ops->lookup(nft_net(pkt), set, ®s->data[priv->sreg], @@ -39,11 +39,13 @@ void nft_lookup_eval(const struct nft_expr *expr, return; } - if (set->flags & NFT_SET_MAP) - nft_data_copy(®s->data[priv->dreg], - nft_set_ext_data(ext), set->dlen); + if (ext) { + if (set->flags & NFT_SET_MAP) + nft_data_copy(®s->data[priv->dreg], + nft_set_ext_data(ext), set->dlen); - nft_set_elem_update_expr(ext, regs, pkt); + nft_set_elem_update_expr(ext, regs, pkt); + } } static const struct nla_policy nft_lookup_policy[NFTA_LOOKUP_MAX + 1] = { diff --git a/net/netfilter/nft_set_bitmap.c b/net/netfilter/nft_set_bitmap.c index 32f0fc8be3a4..2a81ea421819 100644 --- a/net/netfilter/nft_set_bitmap.c +++ b/net/netfilter/nft_set_bitmap.c @@ -81,7 +81,6 @@ static bool nft_bitmap_lookup(const struct net *net, const struct nft_set *set, u32 idx, off; nft_bitmap_location(set, key, &idx, &off); - *ext = NULL; return nft_bitmap_active(priv->bitmap, idx, off, genmask); } diff --git a/net/netfilter/nft_set_pipapo.c b/net/netfilter/nft_set_pipapo.c index 87aabf651cfe..8b5acc6910fd 100644 --- a/net/netfilter/nft_set_pipapo.c +++ b/net/netfilter/nft_set_pipapo.c @@ -2201,7 +2201,7 @@ const struct nft_set_type nft_set_pipapo_type = { }, }; -#if defined(CONFIG_X86_64) && defined(CONFIG_AS_AVX2) +#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) const struct nft_set_type nft_set_pipapo_avx2_type = { .features = NFT_SET_INTERVAL | NFT_SET_MAP | NFT_SET_OBJECT | NFT_SET_TIMEOUT, diff --git a/net/netfilter/nft_set_pipapo_avx2.h b/net/netfilter/nft_set_pipapo_avx2.h index 396caf7bfca8..394bcb704db7 100644 --- a/net/netfilter/nft_set_pipapo_avx2.h +++ b/net/netfilter/nft_set_pipapo_avx2.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #ifndef _NFT_SET_PIPAPO_AVX2_H -#ifdef CONFIG_AS_AVX2 +#if defined(CONFIG_X86_64) && !defined(CONFIG_UML) #include <asm/fpu/xstate.h> #define NFT_PIPAPO_ALIGN (XSAVE_YMM_SIZE / BITS_PER_BYTE) @@ -9,6 +9,6 @@ bool nft_pipapo_avx2_lookup(const struct net *net, const struct nft_set *set, const u32 *key, const struct nft_set_ext **ext); bool nft_pipapo_avx2_estimate(const struct nft_set_desc *desc, u32 features, struct nft_set_estimate *est); -#endif /* CONFIG_AS_AVX2 */ +#endif /* defined(CONFIG_X86_64) && !defined(CONFIG_UML) */ #endif /* _NFT_SET_PIPAPO_AVX2_H */ diff --git a/net/netfilter/nft_set_rbtree.c b/net/netfilter/nft_set_rbtree.c index 3a5552e14f75..3ffef454d469 100644 --- a/net/netfilter/nft_set_rbtree.c +++ b/net/netfilter/nft_set_rbtree.c @@ -218,27 +218,26 @@ static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set, /* Detect overlaps as we descend the tree. Set the flag in these cases: * - * a1. |__ _ _? >|__ _ _ (insert start after existing start) - * a2. _ _ __>| ?_ _ __| (insert end before existing end) - * a3. _ _ ___| ?_ _ _>| (insert end after existing end) - * a4. >|__ _ _ _ _ __| (insert start before existing end) + * a1. _ _ __>| ?_ _ __| (insert end before existing end) + * a2. _ _ ___| ?_ _ _>| (insert end after existing end) + * a3. _ _ ___? >|_ _ __| (insert start before existing end) * * and clear it later on, as we eventually reach the points indicated by * '?' above, in the cases described below. We'll always meet these * later, locally, due to tree ordering, and overlaps for the intervals * that are the closest together are always evaluated last. * - * b1. |__ _ _! >|__ _ _ (insert start after existing end) - * b2. _ _ __>| !_ _ __| (insert end before existing start) - * b3. !_____>| (insert end after existing start) + * b1. _ _ __>| !_ _ __| (insert end before existing start) + * b2. _ _ ___| !_ _ _>| (insert end after existing start) + * b3. _ _ ___! >|_ _ __| (insert start after existing end) * - * Case a4. resolves to b1.: + * Case a3. resolves to b3.: * - if the inserted start element is the leftmost, because the '0' * element in the tree serves as end element * - otherwise, if an existing end is found. Note that end elements are * always inserted after corresponding start elements. * - * For a new, rightmost pair of elements, we'll hit cases b1. and b3., + * For a new, rightmost pair of elements, we'll hit cases b3. and b2., * in that order. * * The flag is also cleared in two special cases: @@ -262,9 +261,9 @@ static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set, p = &parent->rb_left; if (nft_rbtree_interval_start(new)) { - overlap = nft_rbtree_interval_start(rbe) && - nft_set_elem_active(&rbe->ext, - genmask); + if (nft_rbtree_interval_end(rbe) && + nft_set_elem_active(&rbe->ext, genmask)) + overlap = false; } else { overlap = nft_rbtree_interval_end(rbe) && nft_set_elem_active(&rbe->ext, diff --git a/net/netfilter/xt_IDLETIMER.c b/net/netfilter/xt_IDLETIMER.c index 75bd0e5dd312..7b2f359bfce4 100644 --- a/net/netfilter/xt_IDLETIMER.c +++ b/net/netfilter/xt_IDLETIMER.c @@ -346,6 +346,9 @@ static int idletimer_tg_checkentry_v1(const struct xt_tgchk_param *par) pr_debug("checkentry targinfo%s\n", info->label); + if (info->send_nl_msg) + return -EOPNOTSUPP; + ret = idletimer_tg_helper((struct idletimer_tg_info *)info); if(ret < 0) { diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index e22092e4a783..7ed31b5e77e4 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c @@ -906,20 +906,21 @@ static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) node = NULL; if (addr->sq_node == QRTR_NODE_BCAST) { - enqueue_fn = qrtr_bcast_enqueue; - if (addr->sq_port != QRTR_PORT_CTRL) { + if (addr->sq_port != QRTR_PORT_CTRL && + qrtr_local_nid != QRTR_NODE_BCAST) { release_sock(sk); return -ENOTCONN; } + enqueue_fn = qrtr_bcast_enqueue; } else if (addr->sq_node == ipc->us.sq_node) { enqueue_fn = qrtr_local_enqueue; } else { - enqueue_fn = qrtr_node_enqueue; node = qrtr_node_lookup(addr->sq_node); if (!node) { release_sock(sk); return -ECONNRESET; } + enqueue_fn = qrtr_node_enqueue; } plen = (len + 3) & ~3; diff --git a/net/rds/message.c b/net/rds/message.c index 50f13f1d4ae0..071a261fdaab 100644 --- a/net/rds/message.c +++ b/net/rds/message.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006 Oracle. All rights reserved. + * Copyright (c) 2006, 2020 Oracle and/or its affiliates. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -162,12 +162,12 @@ static void rds_message_purge(struct rds_message *rm) if (rm->rdma.op_active) rds_rdma_free_op(&rm->rdma); if (rm->rdma.op_rdma_mr) - rds_mr_put(rm->rdma.op_rdma_mr); + kref_put(&rm->rdma.op_rdma_mr->r_kref, __rds_put_mr_final); if (rm->atomic.op_active) rds_atomic_free_op(&rm->atomic); if (rm->atomic.op_rdma_mr) - rds_mr_put(rm->atomic.op_rdma_mr); + kref_put(&rm->atomic.op_rdma_mr->r_kref, __rds_put_mr_final); } void rds_message_put(struct rds_message *rm) @@ -308,26 +308,20 @@ out: /* * RDS ops use this to grab SG entries from the rm's sg pool. */ -struct scatterlist *rds_message_alloc_sgs(struct rds_message *rm, int nents, - int *ret) +struct scatterlist *rds_message_alloc_sgs(struct rds_message *rm, int nents) { struct scatterlist *sg_first = (struct scatterlist *) &rm[1]; struct scatterlist *sg_ret; - if (WARN_ON(!ret)) - return NULL; - if (nents <= 0) { pr_warn("rds: alloc sgs failed! nents <= 0\n"); - *ret = -EINVAL; - return NULL; + return ERR_PTR(-EINVAL); } if (rm->m_used_sgs + nents > rm->m_total_sgs) { pr_warn("rds: alloc sgs failed! total %d used %d nents %d\n", rm->m_total_sgs, rm->m_used_sgs, nents); - *ret = -ENOMEM; - return NULL; + return ERR_PTR(-ENOMEM); } sg_ret = &sg_first[rm->m_used_sgs]; @@ -343,7 +337,6 @@ struct rds_message *rds_message_map_pages(unsigned long *page_addrs, unsigned in unsigned int i; int num_sgs = DIV_ROUND_UP(total_len, PAGE_SIZE); int extra_bytes = num_sgs * sizeof(struct scatterlist); - int ret; rm = rds_message_alloc(extra_bytes, GFP_NOWAIT); if (!rm) @@ -352,10 +345,10 @@ struct rds_message *rds_message_map_pages(unsigned long *page_addrs, unsigned in set_bit(RDS_MSG_PAGEVEC, &rm->m_flags); rm->m_inc.i_hdr.h_len = cpu_to_be32(total_len); rm->data.op_nents = DIV_ROUND_UP(total_len, PAGE_SIZE); - rm->data.op_sg = rds_message_alloc_sgs(rm, num_sgs, &ret); - if (!rm->data.op_sg) { + rm->data.op_sg = rds_message_alloc_sgs(rm, num_sgs); + if (IS_ERR(rm->data.op_sg)) { rds_message_put(rm); - return ERR_PTR(ret); + return ERR_CAST(rm->data.op_sg); } for (i = 0; i < rm->data.op_nents; ++i) { diff --git a/net/rds/rdma.c b/net/rds/rdma.c index 585e6b3b69ce..a7ae11846cd7 100644 --- a/net/rds/rdma.c +++ b/net/rds/rdma.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2017 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2020 Oracle and/or its affiliates. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -84,7 +84,7 @@ static struct rds_mr *rds_mr_tree_walk(struct rb_root *root, u64 key, if (insert) { rb_link_node(&insert->r_rb_node, parent, p); rb_insert_color(&insert->r_rb_node, root); - refcount_inc(&insert->r_refcount); + kref_get(&insert->r_kref); } return NULL; } @@ -99,10 +99,7 @@ static void rds_destroy_mr(struct rds_mr *mr) unsigned long flags; rdsdebug("RDS: destroy mr key is %x refcnt %u\n", - mr->r_key, refcount_read(&mr->r_refcount)); - - if (test_and_set_bit(RDS_MR_DEAD, &mr->r_state)) - return; + mr->r_key, kref_read(&mr->r_kref)); spin_lock_irqsave(&rs->rs_rdma_lock, flags); if (!RB_EMPTY_NODE(&mr->r_rb_node)) @@ -115,8 +112,10 @@ static void rds_destroy_mr(struct rds_mr *mr) mr->r_trans->free_mr(trans_private, mr->r_invalidate); } -void __rds_put_mr_final(struct rds_mr *mr) +void __rds_put_mr_final(struct kref *kref) { + struct rds_mr *mr = container_of(kref, struct rds_mr, r_kref); + rds_destroy_mr(mr); kfree(mr); } @@ -140,8 +139,7 @@ void rds_rdma_drop_keys(struct rds_sock *rs) rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); RB_CLEAR_NODE(&mr->r_rb_node); spin_unlock_irqrestore(&rs->rs_rdma_lock, flags); - rds_destroy_mr(mr); - rds_mr_put(mr); + kref_put(&mr->r_kref, __rds_put_mr_final); spin_lock_irqsave(&rs->rs_rdma_lock, flags); } spin_unlock_irqrestore(&rs->rs_rdma_lock, flags); @@ -242,7 +240,7 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args, goto out; } - refcount_set(&mr->r_refcount, 1); + kref_init(&mr->r_kref); RB_CLEAR_NODE(&mr->r_rb_node); mr->r_trans = rs->rs_transport; mr->r_sock = rs; @@ -343,7 +341,7 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args, rdsdebug("RDS: get_mr key is %x\n", mr->r_key); if (mr_ret) { - refcount_inc(&mr->r_refcount); + kref_get(&mr->r_kref); *mr_ret = mr; } @@ -351,7 +349,7 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args, out: kfree(pages); if (mr) - rds_mr_put(mr); + kref_put(&mr->r_kref, __rds_put_mr_final); return ret; } @@ -434,13 +432,7 @@ int rds_free_mr(struct rds_sock *rs, char __user *optval, int optlen) if (!mr) return -EINVAL; - /* - * call rds_destroy_mr() ourselves so that we're sure it's done by the time - * we return. If we let rds_mr_put() do it it might not happen until - * someone else drops their ref. - */ - rds_destroy_mr(mr); - rds_mr_put(mr); + kref_put(&mr->r_kref, __rds_put_mr_final); return 0; } @@ -464,6 +456,14 @@ void rds_rdma_unuse(struct rds_sock *rs, u32 r_key, int force) return; } + /* Get a reference so that the MR won't go away before calling + * sync_mr() below. + */ + kref_get(&mr->r_kref); + + /* If it is going to be freed, remove it from the tree now so + * that no other thread can find it and free it. + */ if (mr->r_use_once || force) { rb_erase(&mr->r_rb_node, &rs->rs_rdma_keys); RB_CLEAR_NODE(&mr->r_rb_node); @@ -477,12 +477,13 @@ void rds_rdma_unuse(struct rds_sock *rs, u32 r_key, int force) if (mr->r_trans->sync_mr) mr->r_trans->sync_mr(mr->r_trans_private, DMA_FROM_DEVICE); + /* Release the reference held above. */ + kref_put(&mr->r_kref, __rds_put_mr_final); + /* If the MR was marked as invalidate, this will * trigger an async flush. */ - if (zot_me) { - rds_destroy_mr(mr); - rds_mr_put(mr); - } + if (zot_me) + kref_put(&mr->r_kref, __rds_put_mr_final); } void rds_rdma_free_op(struct rm_rdma_op *ro) @@ -490,7 +491,7 @@ void rds_rdma_free_op(struct rm_rdma_op *ro) unsigned int i; if (ro->op_odp_mr) { - rds_mr_put(ro->op_odp_mr); + kref_put(&ro->op_odp_mr->r_kref, __rds_put_mr_final); } else { for (i = 0; i < ro->op_nents; i++) { struct page *page = sg_page(&ro->op_sg[i]); @@ -664,9 +665,11 @@ int rds_cmsg_rdma_args(struct rds_sock *rs, struct rds_message *rm, op->op_odp_mr = NULL; WARN_ON(!nr_pages); - op->op_sg = rds_message_alloc_sgs(rm, nr_pages, &ret); - if (!op->op_sg) + op->op_sg = rds_message_alloc_sgs(rm, nr_pages); + if (IS_ERR(op->op_sg)) { + ret = PTR_ERR(op->op_sg); goto out_pages; + } if (op->op_notify || op->op_recverr) { /* We allocate an uninitialized notifier here, because @@ -730,7 +733,7 @@ int rds_cmsg_rdma_args(struct rds_sock *rs, struct rds_message *rm, goto out_pages; } RB_CLEAR_NODE(&local_odp_mr->r_rb_node); - refcount_set(&local_odp_mr->r_refcount, 1); + kref_init(&local_odp_mr->r_kref); local_odp_mr->r_trans = rs->rs_transport; local_odp_mr->r_sock = rs; local_odp_mr->r_trans_private = @@ -827,7 +830,7 @@ int rds_cmsg_rdma_dest(struct rds_sock *rs, struct rds_message *rm, if (!mr) err = -EINVAL; /* invalid r_key */ else - refcount_inc(&mr->r_refcount); + kref_get(&mr->r_kref); spin_unlock_irqrestore(&rs->rs_rdma_lock, flags); if (mr) { @@ -905,9 +908,11 @@ int rds_cmsg_atomic(struct rds_sock *rs, struct rds_message *rm, rm->atomic.op_silent = !!(args->flags & RDS_RDMA_SILENT); rm->atomic.op_active = 1; rm->atomic.op_recverr = rs->rs_recverr; - rm->atomic.op_sg = rds_message_alloc_sgs(rm, 1, &ret); - if (!rm->atomic.op_sg) + rm->atomic.op_sg = rds_message_alloc_sgs(rm, 1); + if (IS_ERR(rm->atomic.op_sg)) { + ret = PTR_ERR(rm->atomic.op_sg); goto err; + } /* verify 8 byte-aligned */ if (args->local_addr & 0x7) { diff --git a/net/rds/rds.h b/net/rds/rds.h index e4a603523083..6019b0c004a9 100644 --- a/net/rds/rds.h +++ b/net/rds/rds.h @@ -291,7 +291,7 @@ struct rds_incoming { struct rds_mr { struct rb_node r_rb_node; - refcount_t r_refcount; + struct kref r_kref; u32 r_key; /* A copy of the creation flags */ @@ -299,19 +299,11 @@ struct rds_mr { unsigned int r_invalidate:1; unsigned int r_write:1; - /* This is for RDS_MR_DEAD. - * It would be nice & consistent to make this part of the above - * bit field here, but we need to use test_and_set_bit. - */ - unsigned long r_state; struct rds_sock *r_sock; /* back pointer to the socket that owns us */ struct rds_transport *r_trans; void *r_trans_private; }; -/* Flags for mr->r_state */ -#define RDS_MR_DEAD 0 - static inline rds_rdma_cookie_t rds_rdma_make_cookie(u32 r_key, u32 offset) { return r_key | (((u64) offset) << 32); @@ -852,8 +844,7 @@ rds_conn_connecting(struct rds_connection *conn) /* message.c */ struct rds_message *rds_message_alloc(unsigned int nents, gfp_t gfp); -struct scatterlist *rds_message_alloc_sgs(struct rds_message *rm, int nents, - int *ret); +struct scatterlist *rds_message_alloc_sgs(struct rds_message *rm, int nents); int rds_message_copy_from_user(struct rds_message *rm, struct iov_iter *from, bool zcopy); struct rds_message *rds_message_map_pages(unsigned long *page_addrs, unsigned int total_len); @@ -946,12 +937,7 @@ void rds_atomic_send_complete(struct rds_message *rm, int wc_status); int rds_cmsg_atomic(struct rds_sock *rs, struct rds_message *rm, struct cmsghdr *cmsg); -void __rds_put_mr_final(struct rds_mr *mr); -static inline void rds_mr_put(struct rds_mr *mr) -{ - if (refcount_dec_and_test(&mr->r_refcount)) - __rds_put_mr_final(mr); -} +void __rds_put_mr_final(struct kref *kref); static inline bool rds_destroy_pending(struct rds_connection *conn) { diff --git a/net/rds/send.c b/net/rds/send.c index 82dcd8b84fe7..68e2bdb08fd0 100644 --- a/net/rds/send.c +++ b/net/rds/send.c @@ -1274,9 +1274,11 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len) /* Attach data to the rm */ if (payload_len) { - rm->data.op_sg = rds_message_alloc_sgs(rm, num_sgs, &ret); - if (!rm->data.op_sg) + rm->data.op_sg = rds_message_alloc_sgs(rm, num_sgs); + if (IS_ERR(rm->data.op_sg)) { + ret = PTR_ERR(rm->data.op_sg); goto out; + } ret = rds_message_copy_from_user(rm, &msg->msg_iter, zcopy); if (ret) goto out; diff --git a/net/rxrpc/local_object.c b/net/rxrpc/local_object.c index a6c1349e965d..01135e54d95d 100644 --- a/net/rxrpc/local_object.c +++ b/net/rxrpc/local_object.c @@ -165,15 +165,6 @@ static int rxrpc_open_socket(struct rxrpc_local *local, struct net *net) goto error; } - /* we want to set the don't fragment bit */ - opt = IPV6_PMTUDISC_DO; - ret = kernel_setsockopt(local->socket, SOL_IPV6, IPV6_MTU_DISCOVER, - (char *) &opt, sizeof(opt)); - if (ret < 0) { - _debug("setsockopt failed"); - goto error; - } - /* Fall through and set IPv4 options too otherwise we don't get * errors from IPv4 packets sent through the IPv6 socket. */ diff --git a/net/rxrpc/output.c b/net/rxrpc/output.c index bad3d2420344..90e263c6aa69 100644 --- a/net/rxrpc/output.c +++ b/net/rxrpc/output.c @@ -474,41 +474,21 @@ send_fragmentable: skb->tstamp = ktime_get_real(); switch (conn->params.local->srx.transport.family) { + case AF_INET6: case AF_INET: opt = IP_PMTUDISC_DONT; - ret = kernel_setsockopt(conn->params.local->socket, - SOL_IP, IP_MTU_DISCOVER, - (char *)&opt, sizeof(opt)); - if (ret == 0) { - ret = kernel_sendmsg(conn->params.local->socket, &msg, - iov, 2, len); - conn->params.peer->last_tx_at = ktime_get_seconds(); - - opt = IP_PMTUDISC_DO; - kernel_setsockopt(conn->params.local->socket, SOL_IP, - IP_MTU_DISCOVER, - (char *)&opt, sizeof(opt)); - } - break; - -#ifdef CONFIG_AF_RXRPC_IPV6 - case AF_INET6: - opt = IPV6_PMTUDISC_DONT; - ret = kernel_setsockopt(conn->params.local->socket, - SOL_IPV6, IPV6_MTU_DISCOVER, - (char *)&opt, sizeof(opt)); - if (ret == 0) { - ret = kernel_sendmsg(conn->params.local->socket, &msg, - iov, 2, len); - conn->params.peer->last_tx_at = ktime_get_seconds(); - - opt = IPV6_PMTUDISC_DO; - kernel_setsockopt(conn->params.local->socket, - SOL_IPV6, IPV6_MTU_DISCOVER, - (char *)&opt, sizeof(opt)); - } + kernel_setsockopt(conn->params.local->socket, + SOL_IP, IP_MTU_DISCOVER, + (char *)&opt, sizeof(opt)); + ret = kernel_sendmsg(conn->params.local->socket, &msg, + iov, 2, len); + conn->params.peer->last_tx_at = ktime_get_seconds(); + + opt = IP_PMTUDISC_DO; + kernel_setsockopt(conn->params.local->socket, + SOL_IP, IP_MTU_DISCOVER, + (char *)&opt, sizeof(opt)); break; -#endif default: BUG(); diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index f6a3b969ead0..55bd1429678f 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -1667,6 +1667,7 @@ int tcf_classify_ingress(struct sk_buff *skb, skb_ext_del(skb, TC_SKB_EXT); tp = rcu_dereference_bh(fchain->filter_chain); + last_executed_chain = fchain->index; } ret = __tcf_classify(skb, tp, orig_tp, res, compat_mode, diff --git a/net/tipc/link.c b/net/tipc/link.c index 467c53a1fb5c..d4675e922a8f 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c @@ -1065,7 +1065,7 @@ static void tipc_link_update_cwin(struct tipc_link *l, int released, /* Enter fast recovery */ if (unlikely(retransmitted)) { l->ssthresh = max_t(u16, l->window / 2, 300); - l->window = l->ssthresh; + l->window = min_t(u16, l->ssthresh, l->window); return; } /* Enter slow start */ diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c index 156efce50dbd..0e989005bdc2 100644 --- a/net/tls/tls_main.c +++ b/net/tls/tls_main.c @@ -56,9 +56,9 @@ enum { TLS_NUM_PROTS, }; -static struct proto *saved_tcpv6_prot; +static const struct proto *saved_tcpv6_prot; static DEFINE_MUTEX(tcpv6_prot_mutex); -static struct proto *saved_tcpv4_prot; +static const struct proto *saved_tcpv4_prot; static DEFINE_MUTEX(tcpv4_prot_mutex); static struct proto tls_prots[TLS_NUM_PROTS][TLS_NUM_CONFIG][TLS_NUM_CONFIG]; static struct proto_ops tls_sw_proto_ops; diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 5fa402144cda..692bcd35f809 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -644,10 +644,8 @@ const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { [NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY, .len = NL80211_HE_MAX_CAPABILITY_LEN }, - [NL80211_ATTR_FTM_RESPONDER] = { - .type = NLA_NESTED, - .validation_data = nl80211_ftm_responder_policy, - }, + [NL80211_ATTR_FTM_RESPONDER] = + NLA_POLICY_NESTED(nl80211_ftm_responder_policy), [NL80211_ATTR_TIMEOUT] = NLA_POLICY_MIN(NLA_U32, 1), [NL80211_ATTR_PEER_MEASUREMENTS] = NLA_POLICY_NESTED(nl80211_pmsr_attr_policy), diff --git a/net/xdp/xdp_umem.c b/net/xdp/xdp_umem.c index fa7bb5e060d0..ed7a6060f73c 100644 --- a/net/xdp/xdp_umem.c +++ b/net/xdp/xdp_umem.c @@ -343,7 +343,7 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr) u32 chunk_size = mr->chunk_size, headroom = mr->headroom; unsigned int chunks, chunks_per_page; u64 addr = mr->addr, size = mr->len; - int size_chk, err; + int err; if (chunk_size < XDP_UMEM_MIN_CHUNK_SIZE || chunk_size > PAGE_SIZE) { /* Strictly speaking we could support this, if: @@ -382,8 +382,7 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr) return -EINVAL; } - size_chk = chunk_size - headroom - XDP_PACKET_HEADROOM; - if (size_chk < 0) + if (headroom >= chunk_size - XDP_PACKET_HEADROOM) return -EINVAL; umem->address = (unsigned long)addr; diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c index 356f90e4522b..c350108aa38d 100644 --- a/net/xdp/xsk.c +++ b/net/xdp/xsk.c @@ -131,8 +131,9 @@ static void __xsk_rcv_memcpy(struct xdp_umem *umem, u64 addr, void *from_buf, u64 page_start = addr & ~(PAGE_SIZE - 1); u64 first_len = PAGE_SIZE - (addr - page_start); - memcpy(to_buf, from_buf, first_len + metalen); - memcpy(next_pg_addr, from_buf + first_len, len - first_len); + memcpy(to_buf, from_buf, first_len); + memcpy(next_pg_addr, from_buf + first_len, + len + metalen - first_len); return; } diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include index 8074f14d9d0d..c264da2b9b30 100644 --- a/scripts/Kconfig.include +++ b/scripts/Kconfig.include @@ -48,9 +48,6 @@ $(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found) # Fail if the linker is gold as it's not capable of linking the kernel proper $(error-if,$(success, $(LD) -v | grep -q gold), gold linker '$(LD)' not supported) -# gcc version including patch level -gcc-version := $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) - # machine bit flags # $(m32-flag): -m32 if the compiler supports it, or an empty string otherwise. # $(m64-flag): -m64 if the compiler supports it, or an empty string otherwise. diff --git a/scripts/Makefile b/scripts/Makefile index 5e75802b1a44..95ecf970c74c 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -2,10 +2,6 @@ ### # scripts contains sources for various helper programs used throughout # the kernel for the build process. -# --------------------------------------------------------------------------- -# kallsyms: Find all symbols in vmlinux - -HOST_EXTRACFLAGS += -I$(srctree)/tools/include always-$(CONFIG_BUILD_BIN2C) += bin2c always-$(CONFIG_KALLSYMS) += kallsyms diff --git a/scripts/Makefile.build b/scripts/Makefile.build index a1730d42e5f3..9fcbfac15d1d 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -46,7 +46,7 @@ include $(kbuild-file) include scripts/Makefile.lib # Do not include host rules unless needed -ifneq ($(hostprogs)$(hostlibs-y)$(hostlibs-m)$(hostcxxlibs-y)$(hostcxxlibs-m),) +ifneq ($(hostprogs)$(hostcxxlibs-y)$(hostcxxlibs-m),) include scripts/Makefile.host endif @@ -65,7 +65,6 @@ endif ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),) lib-target := $(obj)/lib.a -real-obj-y += $(obj)/lib-ksyms.o endif ifdef need-builtin @@ -410,22 +409,6 @@ $(lib-target): $(lib-y) FORCE targets += $(lib-target) -dummy-object = $(obj)/.lib_exports.o -ksyms-lds = $(dot-target).lds - -quiet_cmd_export_list = EXPORTS $@ -cmd_export_list = $(OBJDUMP) -h $< | \ - sed -ne '/___ksymtab/s/.*+\([^ ]*\).*/EXTERN(\1)/p' >$(ksyms-lds);\ - rm -f $(dummy-object);\ - echo | $(CC) $(a_flags) -c -o $(dummy-object) -x assembler -;\ - $(LD) $(ld_flags) -r -o $@ -T $(ksyms-lds) $(dummy-object);\ - rm $(dummy-object) $(ksyms-lds) - -$(obj)/lib-ksyms.o: $(lib-target) FORCE - $(call if_changed,export_list) - -targets += $(obj)/lib-ksyms.o - endif # NOTE: diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean index 1e4206566a82..075f0cc2d8d7 100644 --- a/scripts/Makefile.clean +++ b/scripts/Makefile.clean @@ -30,7 +30,6 @@ subdir-ymn := $(addprefix $(obj)/,$(subdir-ymn)) __clean-files := $(extra-y) $(extra-m) $(extra-) \ $(always) $(always-y) $(always-m) $(always-) $(targets) $(clean-files) \ $(hostprogs) $(hostprogs-y) $(hostprogs-m) $(hostprogs-) \ - $(hostlibs-y) $(hostlibs-m) $(hostlibs-) \ $(hostcxxlibs-y) $(hostcxxlibs-m) __clean-files := $(filter-out $(no-clean-files), $(__clean-files)) diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn index ca08f2fe7c34..4aea7cf71d11 100644 --- a/scripts/Makefile.extrawarn +++ b/scripts/Makefile.extrawarn @@ -49,6 +49,7 @@ KBUILD_CFLAGS += -Wno-format KBUILD_CFLAGS += -Wno-sign-compare KBUILD_CFLAGS += -Wno-format-zero-length KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) +KBUILD_CFLAGS += -Wno-tautological-constant-out-of-range-compare endif endif diff --git a/scripts/Makefile.host b/scripts/Makefile.host index 3b7121d43324..2045855d0b75 100644 --- a/scripts/Makefile.host +++ b/scripts/Makefile.host @@ -39,7 +39,6 @@ $(obj)/%.tab.c $(obj)/%.tab.h: $(src)/%.y FORCE # They are linked as C++ code to the executable qconf __hostprogs := $(sort $(hostprogs)) -host-cshlib := $(sort $(hostlibs-y) $(hostlibs-m)) host-cxxshlib := $(sort $(hostcxxlibs-y) $(hostcxxlibs-m)) # C code @@ -63,7 +62,6 @@ host-cxxmulti := $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m))) host-cxxobjs := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs))) # Object (.o) files used by the shared libaries -host-cshobjs := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs)))) host-cxxshobjs := $(sort $(foreach m,$(host-cxxshlib),$($(m:.so=-objs)))) host-csingle := $(addprefix $(obj)/,$(host-csingle)) @@ -71,9 +69,7 @@ host-cmulti := $(addprefix $(obj)/,$(host-cmulti)) host-cobjs := $(addprefix $(obj)/,$(host-cobjs)) host-cxxmulti := $(addprefix $(obj)/,$(host-cxxmulti)) host-cxxobjs := $(addprefix $(obj)/,$(host-cxxobjs)) -host-cshlib := $(addprefix $(obj)/,$(host-cshlib)) host-cxxshlib := $(addprefix $(obj)/,$(host-cxxshlib)) -host-cshobjs := $(addprefix $(obj)/,$(host-cshobjs)) host-cxxshobjs := $(addprefix $(obj)/,$(host-cxxshobjs)) ##### @@ -141,13 +137,6 @@ $(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE $(call if_changed_dep,host-cxxobjs) # Compile .c file, create position independent .o file -# host-cshobjs -> .o -quiet_cmd_host-cshobjs = HOSTCC -fPIC $@ - cmd_host-cshobjs = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $< -$(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE - $(call if_changed_dep,host-cshobjs) - -# Compile .c file, create position independent .o file # Note that plugin capable gcc versions can be either C or C++ based # therefore plugin source files have to be compilable in both C and C++ mode. # This is why a C++ compiler is invoked on a .c file. @@ -158,16 +147,6 @@ $(host-cxxshobjs): $(obj)/%.o: $(src)/%.c FORCE $(call if_changed_dep,host-cxxshobjs) # Link a shared library, based on position independent .o files -# *.o -> .so shared library (host-cshlib) -quiet_cmd_host-cshlib = HOSTLLD -shared $@ - cmd_host-cshlib = $(HOSTCC) $(KBUILD_HOSTLDFLAGS) -shared -o $@ \ - $(addprefix $(obj)/, $($(target-stem)-objs)) \ - $(KBUILD_HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem).so) -$(host-cshlib): FORCE - $(call if_changed,host-cshlib) -$(call multi_depend, $(host-cshlib), .so, -objs) - -# Link a shared library, based on position independent .o files # *.o -> .so shared library (host-cxxshlib) quiet_cmd_host-cxxshlib = HOSTLLD -shared $@ cmd_host-cxxshlib = $(HOSTCXX) $(KBUILD_HOSTLDFLAGS) -shared -o $@ \ @@ -178,4 +157,4 @@ $(host-cxxshlib): FORCE $(call multi_depend, $(host-cxxshlib), .so, -objs) targets += $(host-csingle) $(host-cmulti) $(host-cobjs)\ - $(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs) + $(host-cxxmulti) $(host-cxxobjs) $(host-cxxshlib) $(host-cxxshobjs) diff --git a/scripts/dummy-tools/gcc b/scripts/dummy-tools/gcc new file mode 100755 index 000000000000..33487e99d83e --- /dev/null +++ b/scripts/dummy-tools/gcc @@ -0,0 +1,91 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only +# +# Staring v4.18, Kconfig evaluates compiler capabilities, and hides CONFIG +# options your compiler does not support. This works well if you configure and +# build the kernel on the same host machine. +# +# It is inconvenient if you prepare the .config that is carried to a different +# build environment (typically this happens when you package the kernel for +# distros) because using a different compiler potentially produces different +# CONFIG options than the real build environment. So, you probably want to make +# as many options visible as possible. In other words, you need to create a +# super-set of CONFIG options that cover any build environment. If some of the +# CONFIG options turned out to be unsupported on the build machine, they are +# automatically disabled by the nature of Kconfig. +# +# However, it is not feasible to get a full-featured compiler for every arch. +# Hence these dummy toolchains to make all compiler tests pass. +# +# Usage: +# +# From the top directory of the source tree, run +# +# $ make CROSS_COMPILE=scripts/dummy-tools/ oldconfig +# +# Most of compiler features are tested by cc-option, which simply checks the +# exit code of $(CC). This script does nothing and just exits with 0 in most +# cases. So, $(cc-option, ...) is evaluated as 'y'. +# +# This scripts caters to more checks; handle --version and pre-process __GNUC__ +# etc. to pretend to be GCC, and also do right things to satisfy some scripts. + +# Check if the first parameter appears in the rest. Succeeds if found. +# This helper is useful if a particular option was passed to this script. +# Typically used like this: +# arg_contain <word-you-are-searching-for> "$@" +arg_contain () +{ + search="$1" + shift + + while [ $# -gt 0 ] + do + if [ "$search" = "$1" ]; then + return 0 + fi + shift + done + + return 1 +} + +# To set CONFIG_CC_IS_GCC=y +if arg_contain --version "$@"; then + echo "gcc (scripts/dummy-tools/gcc)" + exit 0 +fi + +if arg_contain -E "$@"; then + # For scripts/gcc-version.sh; This emulates GCC 20.0.0 + if arg_contain - "$@"; then + sed 's/^__GNUC__$/20/; s/^__GNUC_MINOR__$/0/; s/^__GNUC_PATCHLEVEL__$/0/' + exit 0 + else + echo "no input files" >&2 + exit 1 + fi +fi + +if arg_contain -S "$@"; then + # For scripts/gcc-x86-*-has-stack-protector.sh + if arg_contain -fstack-protector "$@"; then + echo "%gs" + exit 0 + fi +fi + +# For scripts/gcc-plugin.sh +if arg_contain -print-file-name=plugin "$@"; then + plugin_dir=$(mktemp -d) + + sed -n 's/.*#include "\(.*\)"/\1/p' $(dirname $0)/../gcc-plugins/gcc-common.h | + while read header + do + mkdir -p $plugin_dir/include/$(dirname $header) + touch $plugin_dir/include/$header + done + + echo $plugin_dir + exit 0 +fi diff --git a/scripts/dummy-tools/ld b/scripts/dummy-tools/ld new file mode 100755 index 000000000000..f68233050405 --- /dev/null +++ b/scripts/dummy-tools/ld @@ -0,0 +1,30 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-only + +# Dummy script that always succeeds. + +# Check if the first parameter appears in the rest. Succeeds if found. +# This helper is useful if a particular option was passed to this script. +# Typically used like this: +# arg_contain <word-you-are-searching-for> "$@" +arg_contain () +{ + search="$1" + shift + + while [ $# -gt 0 ] + do + if [ "$search" = "$1" ]; then + return 0 + fi + shift + done + + return 1 +} + +if arg_contain --version "$@" || arg_contain -v "$@"; then + progname=$(basename $0) + echo "GNU $progname (scripts/dummy-tools/$progname) 2.50" + exit 0 +fi diff --git a/scripts/dummy-tools/nm b/scripts/dummy-tools/nm new file mode 120000 index 000000000000..c0648b38dd42 --- /dev/null +++ b/scripts/dummy-tools/nm @@ -0,0 +1 @@ +ld
\ No newline at end of file diff --git a/scripts/dummy-tools/objcopy b/scripts/dummy-tools/objcopy new file mode 120000 index 000000000000..c0648b38dd42 --- /dev/null +++ b/scripts/dummy-tools/objcopy @@ -0,0 +1 @@ +ld
\ No newline at end of file diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh index d3caefe53eab..b79fd0bea838 100755 --- a/scripts/gcc-plugin.sh +++ b/scripts/gcc-plugin.sh @@ -1,49 +1,14 @@ #!/bin/sh # SPDX-License-Identifier: GPL-2.0 -srctree=$(dirname "$0") - -SHOW_ERROR= -if [ "$1" = "--show-error" ] ; then - SHOW_ERROR=1 - shift || true -fi - -gccplugins_dir=$($3 -print-file-name=plugin) -plugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF -#include "gcc-common.h" -#if BUILDING_GCC_VERSION >= 4008 || defined(ENABLE_BUILD_WITH_CXX) -#warning $2 CXX -#else -#warning $1 CC -#endif -EOF -) -if [ $? -ne 0 ] -then - if [ -n "$SHOW_ERROR" ] ; then - echo "${plugincc}" >&2 - fi - exit 1 -fi +set -e -case "$plugincc" in - *"$1 CC"*) - echo "$1" - exit 0 - ;; - - *"$2 CXX"*) - # the c++ compiler needs another test, see below - ;; +srctree=$(dirname "$0") - *) - exit 1 - ;; -esac +gccplugins_dir=$($* -print-file-name=plugin) # we need a c++ compiler that supports the designated initializer GNU extension -plugincc=$($2 -c -x c++ -std=gnu++98 - -fsyntax-only -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF +$HOSTCC -c -x c++ -std=gnu++98 - -fsyntax-only -I $srctree/gcc-plugins -I $gccplugins_dir/include 2>/dev/null <<EOF #include "gcc-common.h" class test { public: @@ -52,15 +17,3 @@ public: .test = 1 }; EOF -) - -if [ $? -eq 0 ] -then - echo "$2" - exit 0 -fi - -if [ -n "$SHOW_ERROR" ] ; then - echo "${plugincc}" >&2 -fi -exit 1 diff --git a/scripts/gcc-plugins/Kconfig b/scripts/gcc-plugins/Kconfig index f8ca236d6165..013ba3a57669 100644 --- a/scripts/gcc-plugins/Kconfig +++ b/scripts/gcc-plugins/Kconfig @@ -1,13 +1,4 @@ # SPDX-License-Identifier: GPL-2.0-only -preferred-plugin-hostcc := $(if-success,[ $(gcc-version) -ge 40800 ],$(HOSTCXX),$(HOSTCC)) - -config PLUGIN_HOSTCC - string - default "$(shell,$(srctree)/scripts/gcc-plugin.sh "$(preferred-plugin-hostcc)" "$(HOSTCXX)" "$(CC)")" if CC_IS_GCC - help - Host compiler used to build GCC plugins. This can be $(HOSTCXX), - $(HOSTCC), or a null string if GCC plugin is unsupported. - config HAVE_GCC_PLUGINS bool help @@ -17,7 +8,8 @@ config HAVE_GCC_PLUGINS menuconfig GCC_PLUGINS bool "GCC plugins" depends on HAVE_GCC_PLUGINS - depends on PLUGIN_HOSTCC != "" + depends on CC_IS_GCC && GCC_VERSION >= 40800 + depends on $(success,$(srctree)/scripts/gcc-plugin.sh $(CC)) default y help GCC plugins are loadable modules that provide extra features to the diff --git a/scripts/gcc-plugins/Makefile b/scripts/gcc-plugins/Makefile index efff00959a9c..f22858b2c3d6 100644 --- a/scripts/gcc-plugins/Makefile +++ b/scripts/gcc-plugins/Makefile @@ -1,18 +1,9 @@ # SPDX-License-Identifier: GPL-2.0 -PLUGINCC := $(CONFIG_PLUGIN_HOSTCC:"%"=%) GCC_PLUGINS_DIR := $(shell $(CC) -print-file-name=plugin) -ifeq ($(PLUGINCC),$(HOSTCC)) - HOSTLIBS := hostlibs - HOST_EXTRACFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu99 -ggdb - export HOST_EXTRACFLAGS -else - HOSTLIBS := hostcxxlibs - HOST_EXTRACXXFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti - HOST_EXTRACXXFLAGS += -fno-exceptions -fasynchronous-unwind-tables -ggdb - HOST_EXTRACXXFLAGS += -Wno-narrowing -Wno-unused-variable -Wno-c++11-compat - export HOST_EXTRACXXFLAGS -endif +HOST_EXTRACXXFLAGS += -I$(GCC_PLUGINS_DIR)/include -I$(src) -std=gnu++98 -fno-rtti +HOST_EXTRACXXFLAGS += -fno-exceptions -fasynchronous-unwind-tables -ggdb +HOST_EXTRACXXFLAGS += -Wno-narrowing -Wno-unused-variable -Wno-c++11-compat $(obj)/randomize_layout_plugin.o: $(objtree)/$(obj)/randomize_layout_seed.h quiet_cmd_create_randomize_layout_seed = GENSEED $@ @@ -22,9 +13,9 @@ $(objtree)/$(obj)/randomize_layout_seed.h: FORCE $(call if_changed,create_randomize_layout_seed) targets = randomize_layout_seed.h randomize_layout_hash.h -$(HOSTLIBS)-y := $(foreach p,$(GCC_PLUGIN),$(if $(findstring /,$(p)),,$(p))) -always-y := $($(HOSTLIBS)-y) +hostcxxlibs-y := $(foreach p,$(GCC_PLUGIN),$(if $(findstring /,$(p)),,$(p))) +always-y := $(hostcxxlibs-y) -$(foreach p,$($(HOSTLIBS)-y:%.so=%),$(eval $(p)-objs := $(p).o)) +$(foreach p,$(hostcxxlibs-y:%.so=%),$(eval $(p)-objs := $(p).o)) clean-files += *.so diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index 50a5245d87bb..c0ac8f7b5f1a 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc @@ -154,9 +154,9 @@ void ConfigItem::updateMenu(void) if (!sym_is_changeable(sym) && list->optMode == normalOpt) { setPixmap(promptColIdx, QIcon()); - setText(noColIdx, QString::null); - setText(modColIdx, QString::null); - setText(yesColIdx, QString::null); + setText(noColIdx, QString()); + setText(modColIdx, QString()); + setText(yesColIdx, QString()); break; } expr = sym_get_tristate_value(sym); @@ -276,7 +276,7 @@ void ConfigLineEdit::show(ConfigItem* i) if (sym_get_string_value(item->menu->sym)) setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); else - setText(QString::null); + setText(QString()); Parent::show(); setFocus(); } @@ -316,7 +316,10 @@ ConfigList::ConfigList(ConfigView* p, const char *name) setVerticalScrollMode(ScrollPerPixel); setHorizontalScrollMode(ScrollPerPixel); - setHeaderLabels(QStringList() << "Option" << "Name" << "N" << "M" << "Y" << "Value"); + if (mode == symbolMode) + setHeaderLabels(QStringList() << "Item" << "Name" << "N" << "M" << "Y" << "Value"); + else + setHeaderLabels(QStringList() << "Option" << "Name" << "N" << "M" << "Y" << "Value"); connect(this, SIGNAL(itemSelectionChanged(void)), SLOT(updateSelection(void))); @@ -397,6 +400,11 @@ void ConfigList::updateSelection(void) struct menu *menu; enum prop_type type; + if (mode == symbolMode) + setHeaderLabels(QStringList() << "Item" << "Name" << "N" << "M" << "Y" << "Value"); + else + setHeaderLabels(QStringList() << "Option" << "Name" << "N" << "M" << "Y" << "Value"); + if (selectedItems().count() == 0) return; @@ -625,7 +633,7 @@ void ConfigList::updateMenuList(ConfigItem *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { last = parent->firstChild(); if (last == item) @@ -690,7 +698,7 @@ void ConfigList::updateMenuList(ConfigList *parent, struct menu* menu) last = item; continue; } - hide: +hide: if (item && item->menu == child) { last = (ConfigItem*)parent->topLevelItem(0); if (last == item) @@ -734,7 +742,10 @@ void ConfigList::keyPressEvent(QKeyEvent* ev) type = menu->prompt ? menu->prompt->type : P_UNKNOWN; if (type == P_MENU && rootEntry != menu && mode != fullMode && mode != menuMode) { - emit menuSelected(menu); + if (mode == menuMode) + emit menuSelected(menu); + else + emit itemSelected(menu); break; } case Qt::Key_Space: @@ -826,7 +837,7 @@ void ConfigList::mouseMoveEvent(QMouseEvent* e) void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) { - QPoint p = e->pos(); // TODO: Check if this works(was contentsToViewport). + QPoint p = e->pos(); ConfigItem* item = (ConfigItem*)itemAt(p); struct menu *menu; enum prop_type ptype; @@ -841,9 +852,12 @@ void ConfigList::mouseDoubleClickEvent(QMouseEvent* e) if (!menu) goto skip; ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; - if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) - emit menuSelected(menu); - else if (menu->sym) + if (ptype == P_MENU) { + if (mode == singleMode) + emit itemSelected(menu); + else if (mode == symbolMode) + emit menuSelected(menu); + } else if (menu->sym) changeValue(item); skip: @@ -1223,10 +1237,11 @@ QMenu* ConfigInfoView::createStandardContextMenu(const QPoint & pos) { QMenu* popup = Parent::createStandardContextMenu(pos); QAction* action = new QAction("Show Debug Info", popup); - action->setCheckable(true); - connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); - connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); - action->setChecked(showDebug()); + + action->setCheckable(true); + connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool))); + connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool))); + action->setChecked(showDebug()); popup->addSeparator(); popup->addAction(action); return popup; @@ -1352,21 +1367,32 @@ ConfigMainWindow::ConfigMainWindow(void) if ((x.isValid())&&(y.isValid())) move(x.toInt(), y.toInt()); - split1 = new QSplitter(this); + QWidget *widget = new QWidget(this); + QVBoxLayout *layout = new QVBoxLayout(widget); + setCentralWidget(widget); + + split1 = new QSplitter(widget); split1->setOrientation(Qt::Horizontal); - setCentralWidget(split1); + split1->setChildrenCollapsible(false); - menuView = new ConfigView(split1, "menu"); + menuView = new ConfigView(widget, "menu"); menuList = menuView->list; - split2 = new QSplitter(split1); + split2 = new QSplitter(widget); + split2->setChildrenCollapsible(false); split2->setOrientation(Qt::Vertical); // create config tree - configView = new ConfigView(split2, "config"); + configView = new ConfigView(widget, "config"); configList = configView->list; - helpText = new ConfigInfoView(split2, "help"); + helpText = new ConfigInfoView(widget, "help"); + + layout->addWidget(split2); + split2->addWidget(split1); + split1->addWidget(configView); + split1->addWidget(menuView); + split2->addWidget(helpText); setTabOrder(configList, helpText); configList->setFocus(); @@ -1484,6 +1510,8 @@ ConfigMainWindow::ConfigMainWindow(void) helpText, SLOT(setInfo(struct menu *))); connect(configList, SIGNAL(menuSelected(struct menu *)), SLOT(changeMenu(struct menu *))); + connect(configList, SIGNAL(itemSelected(struct menu *)), + SLOT(changeItens(struct menu *))); connect(configList, SIGNAL(parentSelected()), SLOT(goBack())); connect(menuList, SIGNAL(menuChanged(struct menu *)), @@ -1580,15 +1608,26 @@ void ConfigMainWindow::searchConfig(void) searchWindow->show(); } -void ConfigMainWindow::changeMenu(struct menu *menu) +void ConfigMainWindow::changeItens(struct menu *menu) { configList->setRootMenu(menu); + if (configList->rootEntry->parent == &rootmenu) backAction->setEnabled(false); else backAction->setEnabled(true); } +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + menuList->setRootMenu(menu); + + if (menuList->rootEntry->parent == &rootmenu) + backAction->setEnabled(false); + else + backAction->setEnabled(true); +} + void ConfigMainWindow::setMenuLink(struct menu *menu) { struct menu *parent; @@ -1698,14 +1737,14 @@ void ConfigMainWindow::showSplitView(void) fullViewAction->setEnabled(true); fullViewAction->setChecked(false); - configList->mode = symbolMode; + configList->mode = menuMode; if (configList->rootEntry == &rootmenu) configList->updateListAll(); else configList->setRootMenu(&rootmenu); configList->setAllOpen(true); configApp->processEvents(); - menuList->mode = menuMode; + menuList->mode = symbolMode; menuList->setRootMenu(&rootmenu); menuList->setAllOpen(true); menuView->show(); @@ -1733,7 +1772,6 @@ void ConfigMainWindow::showFullView(void) /* * ask for saving configuration before quitting - * TODO ask only when something changed */ void ConfigMainWindow::closeEvent(QCloseEvent* e) { diff --git a/scripts/kconfig/qconf.h b/scripts/kconfig/qconf.h index 45bfe9b2b966..c879d79ce817 100644 --- a/scripts/kconfig/qconf.h +++ b/scripts/kconfig/qconf.h @@ -71,6 +71,7 @@ public slots: signals: void menuChanged(struct menu *menu); void menuSelected(struct menu *menu); + void itemSelected(struct menu *menu); void parentSelected(void); void gotFocus(struct menu *); @@ -298,6 +299,7 @@ public: ConfigMainWindow(void); public slots: void changeMenu(struct menu *); + void changeItens(struct menu *); void setMenuLink(struct menu *); void listFocusChanged(void); void goBack(void); diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h index 3ff26e5b2eac..5b80a4699740 100755 --- a/scripts/mkcompile_h +++ b/scripts/mkcompile_h @@ -7,6 +7,7 @@ SMP=$3 PREEMPT=$4 PREEMPT_RT=$5 CC=$6 +LD=$7 vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; } @@ -61,7 +62,10 @@ UTS_VERSION="$(echo $UTS_VERSION $CONFIG_FLAGS $TIMESTAMP | cut -b -$UTS_LEN)" printf '#define LINUX_COMPILE_BY "%s"\n' "$LINUX_COMPILE_BY" echo \#define LINUX_COMPILE_HOST \"$LINUX_COMPILE_HOST\" - echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | grep ' version ' | sed 's/[[:space:]]*$//'`\" + CC_VERSION=$($CC -v 2>&1 | grep ' version ' | sed 's/[[:space:]]*$//') + LD_VERSION=$($LD -v | head -n1 | sed 's/(compatible with [^)]*)//' \ + | sed 's/[[:space:]]*$//') + printf '#define LINUX_COMPILER "%s"\n' "$CC_VERSION, $LD_VERSION" } > .tmpcompile # Only replace the real compile.h if the new one is different, diff --git a/security/keys/proc.c b/security/keys/proc.c index 415f3f1c2da0..d0cde6685627 100644 --- a/security/keys/proc.c +++ b/security/keys/proc.c @@ -139,6 +139,8 @@ static void *proc_keys_next(struct seq_file *p, void *v, loff_t *_pos) n = key_serial_next(p, v); if (n) *_pos = key_node_serial(n); + else + (*_pos)++; return n; } diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c index 70ecdc78efbd..c21b922e5ebe 100644 --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c @@ -1035,14 +1035,14 @@ static int str_read(char **strp, gfp_t flags, void *fp, u32 len) if (!str) return -ENOMEM; - /* it's expected the caller should free the str */ - *strp = str; - rc = next_entry(str, fp, len); - if (rc) + if (rc) { + kfree(str); return rc; + } str[len] = '\0'; + *strp = str; return 0; } diff --git a/sound/hda/Kconfig b/sound/hda/Kconfig index 4ca6b09056f3..3bc9224d5e4f 100644 --- a/sound/hda/Kconfig +++ b/sound/hda/Kconfig @@ -21,16 +21,17 @@ config SND_HDA_EXT_CORE select SND_HDA_CORE config SND_HDA_PREALLOC_SIZE - int "Pre-allocated buffer size for HD-audio driver" if !SND_DMA_SGBUF + int "Pre-allocated buffer size for HD-audio driver" range 0 32768 - default 0 if SND_DMA_SGBUF + default 2048 if SND_DMA_SGBUF default 64 if !SND_DMA_SGBUF help Specifies the default pre-allocated buffer-size in kB for the HD-audio driver. A larger buffer (e.g. 2048) is preferred for systems using PulseAudio. The default 64 is chosen just for compatibility reasons. - On x86 systems, the default is zero as we need no preallocation. + On x86 systems, the default is 2048 as a reasonable value for + most of modern systems. Note that the pre-allocation size can be changed dynamically via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too. diff --git a/sound/pci/ctxfi/cthw20k1.c b/sound/pci/ctxfi/cthw20k1.c index 6e3177bcc709..015c0d676897 100644 --- a/sound/pci/ctxfi/cthw20k1.c +++ b/sound/pci/ctxfi/cthw20k1.c @@ -168,7 +168,7 @@ static int src_get_rsc_ctrl_blk(void **rblk) static int src_put_rsc_ctrl_blk(void *blk) { - kfree((struct src_rsc_ctrl_blk *)blk); + kfree(blk); return 0; } @@ -494,7 +494,7 @@ static int src_mgr_get_ctrl_blk(void **rblk) static int src_mgr_put_ctrl_blk(void *blk) { - kfree((struct src_mgr_ctrl_blk *)blk); + kfree(blk); return 0; } @@ -515,7 +515,7 @@ static int srcimp_mgr_get_ctrl_blk(void **rblk) static int srcimp_mgr_put_ctrl_blk(void *blk) { - kfree((struct srcimp_mgr_ctrl_blk *)blk); + kfree(blk); return 0; } @@ -702,7 +702,7 @@ static int amixer_rsc_get_ctrl_blk(void **rblk) static int amixer_rsc_put_ctrl_blk(void *blk) { - kfree((struct amixer_rsc_ctrl_blk *)blk); + kfree(blk); return 0; } @@ -909,7 +909,7 @@ static int dai_get_ctrl_blk(void **rblk) static int dai_put_ctrl_blk(void *blk) { - kfree((struct dai_ctrl_blk *)blk); + kfree(blk); return 0; } @@ -958,7 +958,7 @@ static int dao_get_ctrl_blk(void **rblk) static int dao_put_ctrl_blk(void *blk) { - kfree((struct dao_ctrl_blk *)blk); + kfree(blk); return 0; } @@ -1156,7 +1156,7 @@ static int daio_mgr_get_ctrl_blk(struct hw *hw, void **rblk) static int daio_mgr_put_ctrl_blk(void *blk) { - kfree((struct daio_mgr_ctrl_blk *)blk); + kfree(blk); return 0; } diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index a34a2c9f4bcf..86a632bf4d50 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c @@ -2951,7 +2951,7 @@ static int hda_codec_runtime_resume(struct device *dev) static int hda_codec_force_resume(struct device *dev) { struct hda_codec *codec = dev_to_hda_codec(dev); - bool forced_resume = !codec->relaxed_resume && codec->jacktbl.used; + bool forced_resume = hda_codec_need_resume(codec); int ret; /* The get/put pair below enforces the runtime resume even if the diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index bd093593f8fb..a5fab12defde 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1027,7 +1027,7 @@ static int azx_suspend(struct device *dev) chip = card->private_data; bus = azx_bus(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); - __azx_runtime_suspend(chip); + pm_runtime_force_suspend(dev); if (bus->irq >= 0) { free_irq(bus->irq, chip); bus->irq = -1; @@ -1044,7 +1044,9 @@ static int azx_suspend(struct device *dev) static int azx_resume(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); + struct hda_codec *codec; struct azx *chip; + bool forced_resume = false; if (!azx_is_pm_ready(card)) return 0; @@ -1055,7 +1057,20 @@ static int azx_resume(struct device *dev) chip->msi = 0; if (azx_acquire_irq(chip, 1) < 0) return -EIO; - __azx_runtime_resume(chip, false); + + /* check for the forced resume */ + list_for_each_codec(codec, &chip->bus) { + if (hda_codec_need_resume(codec)) { + forced_resume = true; + break; + } + } + + if (forced_resume) + pm_runtime_get_noresume(dev); + pm_runtime_force_resume(dev); + if (forced_resume) + pm_runtime_put(dev); snd_power_change_state(card, SNDRV_CTL_POWER_D0); trace_azx_resume(chip); @@ -1071,6 +1086,8 @@ static int azx_freeze_noirq(struct device *dev) struct azx *chip = card->private_data; struct pci_dev *pci = to_pci_dev(dev); + if (!azx_is_pm_ready(card)) + return 0; if (chip->driver_type == AZX_DRIVER_SKL) pci_set_power_state(pci, PCI_D3hot); @@ -1083,6 +1100,8 @@ static int azx_thaw_noirq(struct device *dev) struct azx *chip = card->private_data; struct pci_dev *pci = to_pci_dev(dev); + if (!azx_is_pm_ready(card)) + return 0; if (chip->driver_type == AZX_DRIVER_SKL) pci_set_power_state(pci, PCI_D0); @@ -1098,12 +1117,12 @@ static int azx_runtime_suspend(struct device *dev) if (!azx_is_pm_ready(card)) return 0; chip = card->private_data; - if (!azx_has_pm_runtime(chip)) - return 0; /* enable controller wake up event */ - azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) | - STATESTS_INT_MASK); + if (snd_power_get_state(card) == SNDRV_CTL_POWER_D0) { + azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) | + STATESTS_INT_MASK); + } __azx_runtime_suspend(chip); trace_azx_runtime_suspend(chip); @@ -1114,17 +1133,18 @@ static int azx_runtime_resume(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); struct azx *chip; + bool from_rt = snd_power_get_state(card) == SNDRV_CTL_POWER_D0; if (!azx_is_pm_ready(card)) return 0; chip = card->private_data; - if (!azx_has_pm_runtime(chip)) - return 0; - __azx_runtime_resume(chip, true); + __azx_runtime_resume(chip, from_rt); /* disable controller Wake Up event*/ - azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) & - ~STATESTS_INT_MASK); + if (from_rt) { + azx_writew(chip, WAKEEN, azx_readw(chip, WAKEEN) & + ~STATESTS_INT_MASK); + } trace_azx_runtime_resume(chip); return 0; @@ -1199,10 +1219,8 @@ static void azx_vs_set_state(struct pci_dev *pci, if (!disabled) { dev_info(chip->card->dev, "Start delayed initialization\n"); - if (azx_probe_continue(chip) < 0) { + if (azx_probe_continue(chip) < 0) dev_err(chip->card->dev, "initialization error\n"); - hda->init_failed = true; - } } } else { dev_info(chip->card->dev, "%s via vga_switcheroo\n", @@ -1335,12 +1353,15 @@ static int register_vga_switcheroo(struct azx *chip) /* * destructor */ -static int azx_free(struct azx *chip) +static void azx_free(struct azx *chip) { struct pci_dev *pci = chip->pci; struct hda_intel *hda = container_of(chip, struct hda_intel, chip); struct hdac_bus *bus = azx_bus(chip); + if (hda->freed) + return; + if (azx_has_pm_runtime(chip) && chip->running) pm_runtime_get_noresume(&pci->dev); chip->running = 0; @@ -1384,9 +1405,8 @@ static int azx_free(struct azx *chip) if (chip->driver_caps & AZX_DCAPS_I915_COMPONENT) snd_hdac_i915_exit(bus); - kfree(hda); - return 0; + hda->freed = 1; } static int azx_dev_disconnect(struct snd_device *device) @@ -1402,7 +1422,8 @@ static int azx_dev_disconnect(struct snd_device *device) static int azx_dev_free(struct snd_device *device) { - return azx_free(device->device_data); + azx_free(device->device_data); + return 0; } #ifdef SUPPORT_VGA_SWITCHEROO @@ -1769,7 +1790,7 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci, if (err < 0) return err; - hda = kzalloc(sizeof(*hda), GFP_KERNEL); + hda = devm_kzalloc(&pci->dev, sizeof(*hda), GFP_KERNEL); if (!hda) { pci_disable_device(pci); return -ENOMEM; @@ -1810,7 +1831,6 @@ static int azx_create(struct snd_card *card, struct pci_dev *pci, err = azx_bus_init(chip, model[dev]); if (err < 0) { - kfree(hda); pci_disable_device(pci); return err; } @@ -2005,7 +2025,7 @@ static int azx_first_init(struct azx *chip) /* codec detection */ if (!azx_bus(chip)->codec_mask) { dev_err(card->dev, "no codecs found!\n"); - return -ENODEV; + /* keep running the rest for the runtime PM */ } if (azx_acquire_irq(chip, 0) < 0) @@ -2027,24 +2047,15 @@ static void azx_firmware_cb(const struct firmware *fw, void *context) { struct snd_card *card = context; struct azx *chip = card->private_data; - struct pci_dev *pci = chip->pci; - - if (!fw) { - dev_err(card->dev, "Cannot load firmware, aborting\n"); - goto error; - } - chip->fw = fw; + if (fw) + chip->fw = fw; + else + dev_err(card->dev, "Cannot load firmware, continue without patching\n"); if (!chip->disabled) { /* continue probing */ - if (azx_probe_continue(chip)) - goto error; + azx_probe_continue(chip); } - return; /* OK */ - - error: - snd_card_free(card); - pci_set_drvdata(pci, NULL); } #endif @@ -2308,9 +2319,11 @@ static int azx_probe_continue(struct azx *chip) #endif /* create codec instances */ - err = azx_probe_codecs(chip, azx_max_codecs[chip->driver_type]); - if (err < 0) - goto out_free; + if (bus->codec_mask) { + err = azx_probe_codecs(chip, azx_max_codecs[chip->driver_type]); + if (err < 0) + goto out_free; + } #ifdef CONFIG_SND_HDA_PATCH_LOADER if (chip->fw) { @@ -2324,7 +2337,7 @@ static int azx_probe_continue(struct azx *chip) #endif } #endif - if ((probe_only[dev] & 1) == 0) { + if (bus->codec_mask && !(probe_only[dev] & 1)) { err = azx_codec_configure(chip); if (err < 0) goto out_free; @@ -2341,17 +2354,23 @@ static int azx_probe_continue(struct azx *chip) set_default_power_save(chip); - if (azx_has_pm_runtime(chip)) + if (azx_has_pm_runtime(chip)) { + pm_runtime_use_autosuspend(&pci->dev); + pm_runtime_allow(&pci->dev); pm_runtime_put_autosuspend(&pci->dev); + } out_free: - if (err < 0 || !hda->need_i915_power) + if (err < 0) { + azx_free(chip); + return err; + } + + if (!hda->need_i915_power) display_power(chip, false); - if (err < 0) - hda->init_failed = 1; complete_all(&hda->probe_wait); to_hda_bus(bus)->bus_probing = 0; - return err; + return 0; } static void azx_remove(struct pci_dev *pci) diff --git a/sound/pci/hda/hda_intel.h b/sound/pci/hda/hda_intel.h index 2acfff3da1a0..3fb119f09040 100644 --- a/sound/pci/hda/hda_intel.h +++ b/sound/pci/hda/hda_intel.h @@ -27,6 +27,7 @@ struct hda_intel { unsigned int use_vga_switcheroo:1; unsigned int vga_switcheroo_registered:1; unsigned int init_failed:1; /* delayed init failed */ + unsigned int freed:1; /* resources already released */ bool need_i915_power:1; /* the hda controller needs i915 power */ }; diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index de2826f90d34..dc5557d79c43 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -7378,6 +7378,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_DUAL_SPK), SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC), + SND_PCI_QUIRK(0x1043, 0x18f1, "Asus FX505DT", ALC256_FIXUP_ASUS_HEADSET_MIC), SND_PCI_QUIRK(0x1043, 0x19ce, "ASUS B9450FA", ALC294_FIXUP_ASUS_HPE), SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC), diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 721d12130d0c..e7b9040a54e6 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1457,7 +1457,7 @@ error: usb_audio_err(chip, "cannot get connectors status: req = %#x, wValue = %#x, wIndex = %#x, type = %d\n", UAC_GET_CUR, validx, idx, cval->val_type); - return ret; + return filter_error(cval, ret); } ucontrol->value.integer.value[0] = val; @@ -1771,11 +1771,15 @@ static void get_connector_control_name(struct usb_mixer_interface *mixer, /* Build a mixer control for a UAC connector control (jack-detect) */ static void build_connector_control(struct usb_mixer_interface *mixer, + const struct usbmix_name_map *imap, struct usb_audio_term *term, bool is_input) { struct snd_kcontrol *kctl; struct usb_mixer_elem_info *cval; + if (check_ignored_ctl(find_map(imap, term->id, 0))) + return; + cval = kzalloc(sizeof(*cval), GFP_KERNEL); if (!cval) return; @@ -2109,8 +2113,9 @@ static int parse_audio_input_terminal(struct mixer_build *state, int unitid, check_input_term(state, term_id, &iterm); /* Check for jack detection. */ - if (uac_v2v3_control_is_readable(bmctls, control)) - build_connector_control(state->mixer, &iterm, true); + if ((iterm.type & 0xff00) != 0x0100 && + uac_v2v3_control_is_readable(bmctls, control)) + build_connector_control(state->mixer, state->map, &iterm, true); return 0; } @@ -3071,13 +3076,13 @@ static int snd_usb_mixer_controls_badd(struct usb_mixer_interface *mixer, memset(&iterm, 0, sizeof(iterm)); iterm.id = UAC3_BADD_IT_ID4; iterm.type = UAC_BIDIR_TERMINAL_HEADSET; - build_connector_control(mixer, &iterm, true); + build_connector_control(mixer, map->map, &iterm, true); /* Output Term - Insertion control */ memset(&oterm, 0, sizeof(oterm)); oterm.id = UAC3_BADD_OT_ID3; oterm.type = UAC_BIDIR_TERMINAL_HEADSET; - build_connector_control(mixer, &oterm, false); + build_connector_control(mixer, map->map, &oterm, false); } return 0; @@ -3106,7 +3111,7 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer) if (map->id == state.chip->usb_id) { state.map = map->map; state.selector_map = map->selector_map; - mixer->ignore_ctl_error = map->ignore_ctl_error; + mixer->ignore_ctl_error |= map->ignore_ctl_error; break; } } @@ -3149,10 +3154,11 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer) if (err < 0 && err != -EINVAL) return err; - if (uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls), + if ((state.oterm.type & 0xff00) != 0x0100 && + uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls), UAC2_TE_CONNECTOR)) { - build_connector_control(state.mixer, &state.oterm, - false); + build_connector_control(state.mixer, state.map, + &state.oterm, false); } } else { /* UAC_VERSION_3 */ struct uac3_output_terminal_descriptor *desc = p; @@ -3174,10 +3180,11 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer) if (err < 0 && err != -EINVAL) return err; - if (uac_v2v3_control_is_readable(le32_to_cpu(desc->bmControls), + if ((state.oterm.type & 0xff00) != 0x0100 && + uac_v2v3_control_is_readable(le32_to_cpu(desc->bmControls), UAC3_TE_INSERTION)) { - build_connector_control(state.mixer, &state.oterm, - false); + build_connector_control(state.mixer, state.map, + &state.oterm, false); } } } diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c index 72b575c34860..b4e77000f441 100644 --- a/sound/usb/mixer_maps.c +++ b/sound/usb/mixer_maps.c @@ -360,9 +360,11 @@ static const struct usbmix_name_map corsair_virtuoso_map[] = { }; /* Some mobos shipped with a dummy HD-audio show the invalid GET_MIN/GET_MAX - * response for Input Gain Pad (id=19, control=12). Skip it. + * response for Input Gain Pad (id=19, control=12) and the connector status + * for SPDIF terminal (id=18). Skip them. */ static const struct usbmix_name_map asus_rog_map[] = { + { 18, NULL }, /* OT, connector control */ { 19, NULL, 12 }, /* FU, Input Gain Pad */ {} }; diff --git a/tools/bpf/bpftool/struct_ops.c b/tools/bpf/bpftool/struct_ops.c index 2a7befbd11ad..0fe0d584c57e 100644 --- a/tools/bpf/bpftool/struct_ops.c +++ b/tools/bpf/bpftool/struct_ops.c @@ -591,6 +591,8 @@ int do_struct_ops(int argc, char **argv) err = cmd_select(cmds, argc, argv, do_help); - btf__free(btf_vmlinux); + if (!IS_ERR(btf_vmlinux)) + btf__free(btf_vmlinux); + return err; } diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index ff9174282a8c..8f480e29a6b0 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -178,6 +178,8 @@ struct bpf_capabilities { __u32 array_mmap:1; /* BTF_FUNC_GLOBAL is supported */ __u32 btf_func_global:1; + /* kernel support for expected_attach_type in BPF_PROG_LOAD */ + __u32 exp_attach_type:1; }; enum reloc_type { @@ -194,6 +196,22 @@ struct reloc_desc { int sym_off; }; +struct bpf_sec_def; + +typedef struct bpf_link *(*attach_fn_t)(const struct bpf_sec_def *sec, + struct bpf_program *prog); + +struct bpf_sec_def { + const char *sec; + size_t len; + enum bpf_prog_type prog_type; + enum bpf_attach_type expected_attach_type; + bool is_exp_attach_type_optional; + bool is_attachable; + bool is_attach_btf; + attach_fn_t attach_fn; +}; + /* * bpf_prog should be a better name but it has been used in * linux/filter.h. @@ -204,6 +222,7 @@ struct bpf_program { char *name; int prog_ifindex; char *section_name; + const struct bpf_sec_def *sec_def; /* section_name with / replaced by _; makes recursive pinning * in bpf_object__pin_programs easier */ @@ -3316,6 +3335,37 @@ static int bpf_object__probe_array_mmap(struct bpf_object *obj) } static int +bpf_object__probe_exp_attach_type(struct bpf_object *obj) +{ + struct bpf_load_program_attr attr; + struct bpf_insn insns[] = { + BPF_MOV64_IMM(BPF_REG_0, 0), + BPF_EXIT_INSN(), + }; + int fd; + + memset(&attr, 0, sizeof(attr)); + /* use any valid combination of program type and (optional) + * non-zero expected attach type (i.e., not a BPF_CGROUP_INET_INGRESS) + * to see if kernel supports expected_attach_type field for + * BPF_PROG_LOAD command + */ + attr.prog_type = BPF_PROG_TYPE_CGROUP_SOCK; + attr.expected_attach_type = BPF_CGROUP_INET_SOCK_CREATE; + attr.insns = insns; + attr.insns_cnt = ARRAY_SIZE(insns); + attr.license = "GPL"; + + fd = bpf_load_program_xattr(&attr, NULL, 0); + if (fd >= 0) { + obj->caps.exp_attach_type = 1; + close(fd); + return 1; + } + return 0; +} + +static int bpf_object__probe_caps(struct bpf_object *obj) { int (*probe_fn[])(struct bpf_object *obj) = { @@ -3325,6 +3375,7 @@ bpf_object__probe_caps(struct bpf_object *obj) bpf_object__probe_btf_func_global, bpf_object__probe_btf_datasec, bpf_object__probe_array_mmap, + bpf_object__probe_exp_attach_type, }; int i, ret; @@ -4861,7 +4912,12 @@ load_program(struct bpf_program *prog, struct bpf_insn *insns, int insns_cnt, memset(&load_attr, 0, sizeof(struct bpf_load_program_attr)); load_attr.prog_type = prog->type; - load_attr.expected_attach_type = prog->expected_attach_type; + /* old kernels might not support specifying expected_attach_type */ + if (!prog->caps->exp_attach_type && prog->sec_def && + prog->sec_def->is_exp_attach_type_optional) + load_attr.expected_attach_type = 0; + else + load_attr.expected_attach_type = prog->expected_attach_type; if (prog->caps->name) load_attr.name = prog->name; load_attr.insns = insns; @@ -5062,6 +5118,8 @@ bpf_object__load_progs(struct bpf_object *obj, int log_level) return 0; } +static const struct bpf_sec_def *find_sec_def(const char *sec_name); + static struct bpf_object * __bpf_object__open(const char *path, const void *obj_buf, size_t obj_buf_sz, const struct bpf_object_open_opts *opts) @@ -5117,24 +5175,17 @@ __bpf_object__open(const char *path, const void *obj_buf, size_t obj_buf_sz, bpf_object__elf_finish(obj); bpf_object__for_each_program(prog, obj) { - enum bpf_prog_type prog_type; - enum bpf_attach_type attach_type; - - if (prog->type != BPF_PROG_TYPE_UNSPEC) - continue; - - err = libbpf_prog_type_by_name(prog->section_name, &prog_type, - &attach_type); - if (err == -ESRCH) + prog->sec_def = find_sec_def(prog->section_name); + if (!prog->sec_def) /* couldn't guess, but user might manually specify */ continue; - if (err) - goto out; - bpf_program__set_type(prog, prog_type); - bpf_program__set_expected_attach_type(prog, attach_type); - if (prog_type == BPF_PROG_TYPE_TRACING || - prog_type == BPF_PROG_TYPE_EXT) + bpf_program__set_type(prog, prog->sec_def->prog_type); + bpf_program__set_expected_attach_type(prog, + prog->sec_def->expected_attach_type); + + if (prog->sec_def->prog_type == BPF_PROG_TYPE_TRACING || + prog->sec_def->prog_type == BPF_PROG_TYPE_EXT) prog->attach_prog_fd = OPTS_GET(opts, attach_prog_fd, 0); } @@ -6223,23 +6274,32 @@ void bpf_program__set_expected_attach_type(struct bpf_program *prog, prog->expected_attach_type = type; } -#define BPF_PROG_SEC_IMPL(string, ptype, eatype, is_attachable, btf, atype) \ - { string, sizeof(string) - 1, ptype, eatype, is_attachable, btf, atype } +#define BPF_PROG_SEC_IMPL(string, ptype, eatype, eatype_optional, \ + attachable, attach_btf) \ + { \ + .sec = string, \ + .len = sizeof(string) - 1, \ + .prog_type = ptype, \ + .expected_attach_type = eatype, \ + .is_exp_attach_type_optional = eatype_optional, \ + .is_attachable = attachable, \ + .is_attach_btf = attach_btf, \ + } /* Programs that can NOT be attached. */ #define BPF_PROG_SEC(string, ptype) BPF_PROG_SEC_IMPL(string, ptype, 0, 0, 0, 0) /* Programs that can be attached. */ #define BPF_APROG_SEC(string, ptype, atype) \ - BPF_PROG_SEC_IMPL(string, ptype, 0, 1, 0, atype) + BPF_PROG_SEC_IMPL(string, ptype, atype, true, 1, 0) /* Programs that must specify expected attach type at load time. */ #define BPF_EAPROG_SEC(string, ptype, eatype) \ - BPF_PROG_SEC_IMPL(string, ptype, eatype, 1, 0, eatype) + BPF_PROG_SEC_IMPL(string, ptype, eatype, false, 1, 0) /* Programs that use BTF to identify attach point */ #define BPF_PROG_BTF(string, ptype, eatype) \ - BPF_PROG_SEC_IMPL(string, ptype, eatype, 0, 1, 0) + BPF_PROG_SEC_IMPL(string, ptype, eatype, false, 0, 1) /* Programs that can be attached but attach type can't be identified by section * name. Kept for backward compatibility. @@ -6253,11 +6313,6 @@ void bpf_program__set_expected_attach_type(struct bpf_program *prog, __VA_ARGS__ \ } -struct bpf_sec_def; - -typedef struct bpf_link *(*attach_fn_t)(const struct bpf_sec_def *sec, - struct bpf_program *prog); - static struct bpf_link *attach_kprobe(const struct bpf_sec_def *sec, struct bpf_program *prog); static struct bpf_link *attach_tp(const struct bpf_sec_def *sec, @@ -6269,17 +6324,6 @@ static struct bpf_link *attach_trace(const struct bpf_sec_def *sec, static struct bpf_link *attach_lsm(const struct bpf_sec_def *sec, struct bpf_program *prog); -struct bpf_sec_def { - const char *sec; - size_t len; - enum bpf_prog_type prog_type; - enum bpf_attach_type expected_attach_type; - bool is_attachable; - bool is_attach_btf; - enum bpf_attach_type attach_type; - attach_fn_t attach_fn; -}; - static const struct bpf_sec_def section_defs[] = { BPF_PROG_SEC("socket", BPF_PROG_TYPE_SOCKET_FILTER), BPF_PROG_SEC("sk_reuseport", BPF_PROG_TYPE_SK_REUSEPORT), @@ -6713,7 +6757,7 @@ int libbpf_attach_type_by_name(const char *name, continue; if (!section_defs[i].is_attachable) return -EINVAL; - *attach_type = section_defs[i].attach_type; + *attach_type = section_defs[i].expected_attach_type; return 0; } pr_debug("failed to guess attach type based on ELF section name '%s'\n", name); @@ -7542,7 +7586,6 @@ static struct bpf_link *attach_lsm(const struct bpf_sec_def *sec, struct bpf_link * bpf_program__attach_cgroup(struct bpf_program *prog, int cgroup_fd) { - const struct bpf_sec_def *sec_def; enum bpf_attach_type attach_type; char errmsg[STRERR_BUFSIZE]; struct bpf_link *link; @@ -7561,11 +7604,6 @@ bpf_program__attach_cgroup(struct bpf_program *prog, int cgroup_fd) link->detach = &bpf_link__detach_fd; attach_type = bpf_program__get_expected_attach_type(prog); - if (!attach_type) { - sec_def = find_sec_def(bpf_program__title(prog, false)); - if (sec_def) - attach_type = sec_def->attach_type; - } link_fd = bpf_link_create(prog_fd, cgroup_fd, attach_type, NULL); if (link_fd < 0) { link_fd = -errno; diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 44df1d3e7287..f1dacecb1619 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -458,7 +458,7 @@ struct xdp_link_info { struct bpf_xdp_set_link_opts { size_t sz; - __u32 old_fd; + int old_fd; }; #define bpf_xdp_set_link_opts__last_field old_fd diff --git a/tools/lib/bpf/netlink.c b/tools/lib/bpf/netlink.c index 18b5319025e1..0b709fd10bba 100644 --- a/tools/lib/bpf/netlink.c +++ b/tools/lib/bpf/netlink.c @@ -142,7 +142,7 @@ static int __bpf_set_link_xdp_fd_replace(int ifindex, int fd, int old_fd, struct ifinfomsg ifinfo; char attrbuf[64]; } req; - __u32 nl_pid; + __u32 nl_pid = 0; sock = libbpf_netlink_open(&nl_pid); if (sock < 0) @@ -288,7 +288,7 @@ int bpf_get_link_xdp_info(int ifindex, struct xdp_link_info *info, { struct xdp_id_md xdp_id = {}; int sock, ret; - __u32 nl_pid; + __u32 nl_pid = 0; __u32 mask; if (flags & ~XDP_FLAGS_MASK || !info_size) @@ -321,7 +321,7 @@ int bpf_get_link_xdp_info(int ifindex, struct xdp_link_info *info, static __u32 get_xdp_id(struct xdp_link_info *info, __u32 flags) { - if (info->attach_mode != XDP_ATTACHED_MULTI) + if (info->attach_mode != XDP_ATTACHED_MULTI && !flags) return info->prog_id; if (flags & XDP_FLAGS_DRV_MODE) return info->drv_prog_id; diff --git a/tools/objtool/Makefile b/tools/objtool/Makefile index ee08aeff30a1..f591c4d1b6fe 100644 --- a/tools/objtool/Makefile +++ b/tools/objtool/Makefile @@ -3,9 +3,15 @@ include ../scripts/Makefile.include include ../scripts/Makefile.arch # always use the host compiler +ifneq ($(LLVM),) +HOSTAR ?= llvm-ar +HOSTCC ?= clang +HOSTLD ?= ld.lld +else HOSTAR ?= ar HOSTCC ?= gcc HOSTLD ?= ld +endif AR = $(HOSTAR) CC = $(HOSTCC) LD = $(HOSTLD) diff --git a/tools/testing/selftests/bpf/prog_tests/mmap.c b/tools/testing/selftests/bpf/prog_tests/mmap.c index 16a814eb4d64..56d80adcf4bd 100644 --- a/tools/testing/selftests/bpf/prog_tests/mmap.c +++ b/tools/testing/selftests/bpf/prog_tests/mmap.c @@ -19,15 +19,16 @@ void test_mmap(void) const size_t map_sz = roundup_page(sizeof(struct map_data)); const int zero = 0, one = 1, two = 2, far = 1500; const long page_size = sysconf(_SC_PAGE_SIZE); - int err, duration = 0, i, data_map_fd; + int err, duration = 0, i, data_map_fd, data_map_id, tmp_fd; struct bpf_map *data_map, *bss_map; void *bss_mmaped = NULL, *map_mmaped = NULL, *tmp1, *tmp2; struct test_mmap__bss *bss_data; + struct bpf_map_info map_info; + __u32 map_info_sz = sizeof(map_info); struct map_data *map_data; struct test_mmap *skel; __u64 val = 0; - skel = test_mmap__open_and_load(); if (CHECK(!skel, "skel_open_and_load", "skeleton open/load failed\n")) return; @@ -36,6 +37,14 @@ void test_mmap(void) data_map = skel->maps.data_map; data_map_fd = bpf_map__fd(data_map); + /* get map's ID */ + memset(&map_info, 0, map_info_sz); + err = bpf_obj_get_info_by_fd(data_map_fd, &map_info, &map_info_sz); + if (CHECK(err, "map_get_info", "failed %d\n", errno)) + goto cleanup; + data_map_id = map_info.id; + + /* mmap BSS map */ bss_mmaped = mmap(NULL, bss_sz, PROT_READ | PROT_WRITE, MAP_SHARED, bpf_map__fd(bss_map), 0); if (CHECK(bss_mmaped == MAP_FAILED, "bss_mmap", @@ -98,6 +107,10 @@ void test_mmap(void) "data_map freeze succeeded: err=%d, errno=%d\n", err, errno)) goto cleanup; + err = mprotect(map_mmaped, map_sz, PROT_READ); + if (CHECK(err, "mprotect_ro", "mprotect to r/o failed %d\n", errno)) + goto cleanup; + /* unmap R/W mapping */ err = munmap(map_mmaped, map_sz); map_mmaped = NULL; @@ -111,6 +124,12 @@ void test_mmap(void) map_mmaped = NULL; goto cleanup; } + err = mprotect(map_mmaped, map_sz, PROT_WRITE); + if (CHECK(!err, "mprotect_wr", "mprotect() succeeded unexpectedly!\n")) + goto cleanup; + err = mprotect(map_mmaped, map_sz, PROT_EXEC); + if (CHECK(!err, "mprotect_ex", "mprotect() succeeded unexpectedly!\n")) + goto cleanup; map_data = map_mmaped; /* map/unmap in a loop to test ref counting */ @@ -197,6 +216,45 @@ void test_mmap(void) CHECK_FAIL(map_data->val[far] != 3 * 321); munmap(tmp2, 4 * page_size); + + tmp1 = mmap(NULL, map_sz, PROT_READ, MAP_SHARED, data_map_fd, 0); + if (CHECK(tmp1 == MAP_FAILED, "last_mmap", "failed %d\n", errno)) + goto cleanup; + + test_mmap__destroy(skel); + skel = NULL; + CHECK_FAIL(munmap(bss_mmaped, bss_sz)); + bss_mmaped = NULL; + CHECK_FAIL(munmap(map_mmaped, map_sz)); + map_mmaped = NULL; + + /* map should be still held by active mmap */ + tmp_fd = bpf_map_get_fd_by_id(data_map_id); + if (CHECK(tmp_fd < 0, "get_map_by_id", "failed %d\n", errno)) { + munmap(tmp1, map_sz); + goto cleanup; + } + close(tmp_fd); + + /* this should release data map finally */ + munmap(tmp1, map_sz); + + /* we need to wait for RCU grace period */ + for (i = 0; i < 10000; i++) { + __u32 id = data_map_id - 1; + if (bpf_map_get_next_id(id, &id) || id > data_map_id) + break; + usleep(1); + } + + /* should fail to get map FD by non-existing ID */ + tmp_fd = bpf_map_get_fd_by_id(data_map_id); + if (CHECK(tmp_fd >= 0, "get_map_by_id_after", + "unexpectedly succeeded %d\n", tmp_fd)) { + close(tmp_fd); + goto cleanup; + } + cleanup: if (bss_mmaped) CHECK_FAIL(munmap(bss_mmaped, bss_sz)); diff --git a/tools/testing/selftests/bpf/prog_tests/section_names.c b/tools/testing/selftests/bpf/prog_tests/section_names.c index 9d9351dc2ded..713167449c98 100644 --- a/tools/testing/selftests/bpf/prog_tests/section_names.c +++ b/tools/testing/selftests/bpf/prog_tests/section_names.c @@ -43,18 +43,18 @@ static struct sec_name_test tests[] = { {"lwt_seg6local", {0, BPF_PROG_TYPE_LWT_SEG6LOCAL, 0}, {-EINVAL, 0} }, { "cgroup_skb/ingress", - {0, BPF_PROG_TYPE_CGROUP_SKB, 0}, + {0, BPF_PROG_TYPE_CGROUP_SKB, BPF_CGROUP_INET_INGRESS}, {0, BPF_CGROUP_INET_INGRESS}, }, { "cgroup_skb/egress", - {0, BPF_PROG_TYPE_CGROUP_SKB, 0}, + {0, BPF_PROG_TYPE_CGROUP_SKB, BPF_CGROUP_INET_EGRESS}, {0, BPF_CGROUP_INET_EGRESS}, }, {"cgroup/skb", {0, BPF_PROG_TYPE_CGROUP_SKB, 0}, {-EINVAL, 0} }, { "cgroup/sock", - {0, BPF_PROG_TYPE_CGROUP_SOCK, 0}, + {0, BPF_PROG_TYPE_CGROUP_SOCK, BPF_CGROUP_INET_SOCK_CREATE}, {0, BPF_CGROUP_INET_SOCK_CREATE}, }, { @@ -69,26 +69,38 @@ static struct sec_name_test tests[] = { }, { "cgroup/dev", - {0, BPF_PROG_TYPE_CGROUP_DEVICE, 0}, + {0, BPF_PROG_TYPE_CGROUP_DEVICE, BPF_CGROUP_DEVICE}, {0, BPF_CGROUP_DEVICE}, }, - {"sockops", {0, BPF_PROG_TYPE_SOCK_OPS, 0}, {0, BPF_CGROUP_SOCK_OPS} }, + { + "sockops", + {0, BPF_PROG_TYPE_SOCK_OPS, BPF_CGROUP_SOCK_OPS}, + {0, BPF_CGROUP_SOCK_OPS}, + }, { "sk_skb/stream_parser", - {0, BPF_PROG_TYPE_SK_SKB, 0}, + {0, BPF_PROG_TYPE_SK_SKB, BPF_SK_SKB_STREAM_PARSER}, {0, BPF_SK_SKB_STREAM_PARSER}, }, { "sk_skb/stream_verdict", - {0, BPF_PROG_TYPE_SK_SKB, 0}, + {0, BPF_PROG_TYPE_SK_SKB, BPF_SK_SKB_STREAM_VERDICT}, {0, BPF_SK_SKB_STREAM_VERDICT}, }, {"sk_skb", {0, BPF_PROG_TYPE_SK_SKB, 0}, {-EINVAL, 0} }, - {"sk_msg", {0, BPF_PROG_TYPE_SK_MSG, 0}, {0, BPF_SK_MSG_VERDICT} }, - {"lirc_mode2", {0, BPF_PROG_TYPE_LIRC_MODE2, 0}, {0, BPF_LIRC_MODE2} }, + { + "sk_msg", + {0, BPF_PROG_TYPE_SK_MSG, BPF_SK_MSG_VERDICT}, + {0, BPF_SK_MSG_VERDICT}, + }, + { + "lirc_mode2", + {0, BPF_PROG_TYPE_LIRC_MODE2, BPF_LIRC_MODE2}, + {0, BPF_LIRC_MODE2}, + }, { "flow_dissector", - {0, BPF_PROG_TYPE_FLOW_DISSECTOR, 0}, + {0, BPF_PROG_TYPE_FLOW_DISSECTOR, BPF_FLOW_DISSECTOR}, {0, BPF_FLOW_DISSECTOR}, }, { @@ -158,17 +170,17 @@ static void test_prog_type_by_name(const struct sec_name_test *test) &expected_attach_type); CHECK(rc != test->expected_load.rc, "check_code", - "prog: unexpected rc=%d for %s", rc, test->sec_name); + "prog: unexpected rc=%d for %s\n", rc, test->sec_name); if (rc) return; CHECK(prog_type != test->expected_load.prog_type, "check_prog_type", - "prog: unexpected prog_type=%d for %s", + "prog: unexpected prog_type=%d for %s\n", prog_type, test->sec_name); CHECK(expected_attach_type != test->expected_load.expected_attach_type, - "check_attach_type", "prog: unexpected expected_attach_type=%d for %s", + "check_attach_type", "prog: unexpected expected_attach_type=%d for %s\n", expected_attach_type, test->sec_name); } @@ -180,13 +192,13 @@ static void test_attach_type_by_name(const struct sec_name_test *test) rc = libbpf_attach_type_by_name(test->sec_name, &attach_type); CHECK(rc != test->expected_attach.rc, "check_ret", - "attach: unexpected rc=%d for %s", rc, test->sec_name); + "attach: unexpected rc=%d for %s\n", rc, test->sec_name); if (rc) return; CHECK(attach_type != test->expected_attach.attach_type, - "check_attach_type", "attach: unexpected attach_type=%d for %s", + "check_attach_type", "attach: unexpected attach_type=%d for %s\n", attach_type, test->sec_name); } diff --git a/tools/testing/selftests/bpf/prog_tests/test_lsm.c b/tools/testing/selftests/bpf/prog_tests/test_lsm.c index 1e4c258de09d..b17eb2045c1d 100644 --- a/tools/testing/selftests/bpf/prog_tests/test_lsm.c +++ b/tools/testing/selftests/bpf/prog_tests/test_lsm.c @@ -15,7 +15,10 @@ char *CMD_ARGS[] = {"true", NULL}; -int heap_mprotect(void) +#define GET_PAGE_ADDR(ADDR, PAGE_SIZE) \ + (char *)(((unsigned long) (ADDR + PAGE_SIZE)) & ~(PAGE_SIZE-1)) + +int stack_mprotect(void) { void *buf; long sz; @@ -25,12 +28,9 @@ int heap_mprotect(void) if (sz < 0) return sz; - buf = memalign(sz, 2 * sz); - if (buf == NULL) - return -ENOMEM; - - ret = mprotect(buf, sz, PROT_READ | PROT_WRITE | PROT_EXEC); - free(buf); + buf = alloca(sz * 3); + ret = mprotect(GET_PAGE_ADDR(buf, sz), sz, + PROT_READ | PROT_WRITE | PROT_EXEC); return ret; } @@ -73,8 +73,8 @@ void test_test_lsm(void) skel->bss->monitored_pid = getpid(); - err = heap_mprotect(); - if (CHECK(errno != EPERM, "heap_mprotect", "want errno=EPERM, got %d\n", + err = stack_mprotect(); + if (CHECK(errno != EPERM, "stack_mprotect", "want err=EPERM, got %d\n", errno)) goto close_prog; diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_attach.c b/tools/testing/selftests/bpf/prog_tests/xdp_attach.c index 05b294d6b923..15ef3531483e 100644 --- a/tools/testing/selftests/bpf/prog_tests/xdp_attach.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_attach.c @@ -6,19 +6,34 @@ void test_xdp_attach(void) { + __u32 duration = 0, id1, id2, id0 = 0, len; struct bpf_object *obj1, *obj2, *obj3; const char *file = "./test_xdp.o"; + struct bpf_prog_info info = {}; int err, fd1, fd2, fd3; - __u32 duration = 0; DECLARE_LIBBPF_OPTS(bpf_xdp_set_link_opts, opts, .old_fd = -1); + len = sizeof(info); + err = bpf_prog_load(file, BPF_PROG_TYPE_XDP, &obj1, &fd1); if (CHECK_FAIL(err)) return; + err = bpf_obj_get_info_by_fd(fd1, &info, &len); + if (CHECK_FAIL(err)) + goto out_1; + id1 = info.id; + err = bpf_prog_load(file, BPF_PROG_TYPE_XDP, &obj2, &fd2); if (CHECK_FAIL(err)) goto out_1; + + memset(&info, 0, sizeof(info)); + err = bpf_obj_get_info_by_fd(fd2, &info, &len); + if (CHECK_FAIL(err)) + goto out_2; + id2 = info.id; + err = bpf_prog_load(file, BPF_PROG_TYPE_XDP, &obj3, &fd3); if (CHECK_FAIL(err)) goto out_2; @@ -28,6 +43,11 @@ void test_xdp_attach(void) if (CHECK(err, "load_ok", "initial load failed")) goto out_close; + err = bpf_get_link_xdp_id(IFINDEX_LO, &id0, 0); + if (CHECK(err || id0 != id1, "id1_check", + "loaded prog id %u != id1 %u, err %d", id0, id1, err)) + goto out_close; + err = bpf_set_link_xdp_fd_opts(IFINDEX_LO, fd2, XDP_FLAGS_REPLACE, &opts); if (CHECK(!err, "load_fail", "load with expected id didn't fail")) @@ -37,6 +57,10 @@ void test_xdp_attach(void) err = bpf_set_link_xdp_fd_opts(IFINDEX_LO, fd2, 0, &opts); if (CHECK(err, "replace_ok", "replace valid old_fd failed")) goto out; + err = bpf_get_link_xdp_id(IFINDEX_LO, &id0, 0); + if (CHECK(err || id0 != id2, "id2_check", + "loaded prog id %u != id2 %u, err %d", id0, id2, err)) + goto out_close; err = bpf_set_link_xdp_fd_opts(IFINDEX_LO, fd3, 0, &opts); if (CHECK(!err, "replace_fail", "replace invalid old_fd didn't fail")) @@ -51,6 +75,10 @@ void test_xdp_attach(void) if (CHECK(err, "remove_ok", "remove valid old_fd failed")) goto out; + err = bpf_get_link_xdp_id(IFINDEX_LO, &id0, 0); + if (CHECK(err || id0 != 0, "unload_check", + "loaded prog id %u != 0, err %d", id0, err)) + goto out_close; out: bpf_set_link_xdp_fd(IFINDEX_LO, -1, 0); out_close: diff --git a/tools/testing/selftests/bpf/prog_tests/xdp_info.c b/tools/testing/selftests/bpf/prog_tests/xdp_info.c new file mode 100644 index 000000000000..d2d7a283d72f --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/xdp_info.c @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <linux/if_link.h> +#include <test_progs.h> + +#define IFINDEX_LO 1 + +void test_xdp_info(void) +{ + __u32 len = sizeof(struct bpf_prog_info), duration = 0, prog_id; + const char *file = "./xdp_dummy.o"; + struct bpf_prog_info info = {}; + struct bpf_object *obj; + int err, prog_fd; + + /* Get prog_id for XDP_ATTACHED_NONE mode */ + + err = bpf_get_link_xdp_id(IFINDEX_LO, &prog_id, 0); + if (CHECK(err, "get_xdp_none", "errno=%d\n", errno)) + return; + if (CHECK(prog_id, "prog_id_none", "unexpected prog_id=%u\n", prog_id)) + return; + + err = bpf_get_link_xdp_id(IFINDEX_LO, &prog_id, XDP_FLAGS_SKB_MODE); + if (CHECK(err, "get_xdp_none_skb", "errno=%d\n", errno)) + return; + if (CHECK(prog_id, "prog_id_none_skb", "unexpected prog_id=%u\n", + prog_id)) + return; + + /* Setup prog */ + + err = bpf_prog_load(file, BPF_PROG_TYPE_XDP, &obj, &prog_fd); + if (CHECK_FAIL(err)) + return; + + err = bpf_obj_get_info_by_fd(prog_fd, &info, &len); + if (CHECK(err, "get_prog_info", "errno=%d\n", errno)) + goto out_close; + + err = bpf_set_link_xdp_fd(IFINDEX_LO, prog_fd, XDP_FLAGS_SKB_MODE); + if (CHECK(err, "set_xdp_skb", "errno=%d\n", errno)) + goto out_close; + + /* Get prog_id for single prog mode */ + + err = bpf_get_link_xdp_id(IFINDEX_LO, &prog_id, 0); + if (CHECK(err, "get_xdp", "errno=%d\n", errno)) + goto out; + if (CHECK(prog_id != info.id, "prog_id", "prog_id not available\n")) + goto out; + + err = bpf_get_link_xdp_id(IFINDEX_LO, &prog_id, XDP_FLAGS_SKB_MODE); + if (CHECK(err, "get_xdp_skb", "errno=%d\n", errno)) + goto out; + if (CHECK(prog_id != info.id, "prog_id_skb", "prog_id not available\n")) + goto out; + + err = bpf_get_link_xdp_id(IFINDEX_LO, &prog_id, XDP_FLAGS_DRV_MODE); + if (CHECK(err, "get_xdp_drv", "errno=%d\n", errno)) + goto out; + if (CHECK(prog_id, "prog_id_drv", "unexpected prog_id=%u\n", prog_id)) + goto out; + +out: + bpf_set_link_xdp_fd(IFINDEX_LO, -1, 0); +out_close: + bpf_object__close(obj); +} diff --git a/tools/testing/selftests/bpf/progs/lsm.c b/tools/testing/selftests/bpf/progs/lsm.c index a4e3c223028d..b4598d4bc4f7 100644 --- a/tools/testing/selftests/bpf/progs/lsm.c +++ b/tools/testing/selftests/bpf/progs/lsm.c @@ -23,12 +23,12 @@ int BPF_PROG(test_int_hook, struct vm_area_struct *vma, return ret; __u32 pid = bpf_get_current_pid_tgid() >> 32; - int is_heap = 0; + int is_stack = 0; - is_heap = (vma->vm_start >= vma->vm_mm->start_brk && - vma->vm_end <= vma->vm_mm->brk); + is_stack = (vma->vm_start <= vma->vm_mm->start_stack && + vma->vm_end >= vma->vm_mm->start_stack); - if (is_heap && monitored_pid == pid) { + if (is_stack && monitored_pid == pid) { mprotect_count++; ret = -EPERM; } diff --git a/tools/testing/selftests/bpf/verifier/bounds.c b/tools/testing/selftests/bpf/verifier/bounds.c index 4d0d09574bf4..a253a064e6e0 100644 --- a/tools/testing/selftests/bpf/verifier/bounds.c +++ b/tools/testing/selftests/bpf/verifier/bounds.c @@ -501,7 +501,7 @@ .result = REJECT }, { - "bounds check mixed 32bit and 64bit arithmatic. test1", + "bounds check mixed 32bit and 64bit arithmetic. test1", .insns = { BPF_MOV64_IMM(BPF_REG_0, 0), BPF_MOV64_IMM(BPF_REG_1, -1), @@ -520,7 +520,7 @@ .result = ACCEPT }, { - "bounds check mixed 32bit and 64bit arithmatic. test2", + "bounds check mixed 32bit and 64bit arithmetic. test2", .insns = { BPF_MOV64_IMM(BPF_REG_0, 0), BPF_MOV64_IMM(BPF_REG_1, -1), diff --git a/tools/testing/selftests/tc-testing/tdc.py b/tools/testing/selftests/tc-testing/tdc.py index e566c70e64a1..a3e43189d940 100755 --- a/tools/testing/selftests/tc-testing/tdc.py +++ b/tools/testing/selftests/tc-testing/tdc.py @@ -713,9 +713,8 @@ def set_operation_mode(pm, parser, args, remaining): exit(0) if args.list: - if args.list: - list_test_cases(alltests) - exit(0) + list_test_cases(alltests) + exit(0) if len(alltests): req_plugins = pm.get_required_plugins(alltests) diff --git a/usr/include/Makefile b/usr/include/Makefile index a339ef325aa5..b568a95d1f62 100644 --- a/usr/include/Makefile +++ b/usr/include/Makefile @@ -93,7 +93,7 @@ no-header-test += asm-generic/% extra-y := $(patsubst $(obj)/%.h,%.hdrtest, $(shell find $(obj) -name '*.h' 2>/dev/null)) -# Include the header to detect missing include guard. +# Include the header twice to detect missing include guard. quiet_cmd_hdrtest = HDRTEST $< cmd_hdrtest = \ $(CC) $(c_flags) -S -o /dev/null -x c /dev/null \ |