You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kernel_samsung_sm7125/drivers/base/firmware_class.c

1857 lines
44 KiB

/*
* firmware_class.c - Multi purpose firmware loading support
*
* Copyright (c) 2003 Manuel Estrada Sainz
*
* Please see Documentation/firmware_class/ for more information.
*
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/capability.h>
#include <linux/device.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/timer.h>
#include <linux/vmalloc.h>
#include <linux/interrupt.h>
#include <linux/bitops.h>
#include <linux/mutex.h>
#include <linux/workqueue.h>
#include <linux/highmem.h>
#include <linux/firmware.h>
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h percpu.h is included by sched.h and module.h and thus ends up being included when building most .c files. percpu.h includes slab.h which in turn includes gfp.h making everything defined by the two files universally available and complicating inclusion dependencies. percpu.h -> slab.h dependency is about to be removed. Prepare for this change by updating users of gfp and slab facilities include those headers directly instead of assuming availability. As this conversion needs to touch large number of source files, the following script is used as the basis of conversion. http://userweb.kernel.org/~tj/misc/slabh-sweep.py The script does the followings. * Scan files for gfp and slab usages and update includes such that only the necessary includes are there. ie. if only gfp is used, gfp.h, if slab is used, slab.h. * When the script inserts a new include, it looks at the include blocks and try to put the new include such that its order conforms to its surrounding. It's put in the include block which contains core kernel includes, in the same order that the rest are ordered - alphabetical, Christmas tree, rev-Xmas-tree or at the end if there doesn't seem to be any matching order. * If the script can't find a place to put a new include (mostly because the file doesn't have fitting include block), it prints out an error message indicating which .h file needs to be added to the file. The conversion was done in the following steps. 1. The initial automatic conversion of all .c files updated slightly over 4000 files, deleting around 700 includes and adding ~480 gfp.h and ~3000 slab.h inclusions. The script emitted errors for ~400 files. 2. Each error was manually checked. Some didn't need the inclusion, some needed manual addition while adding it to implementation .h or embedding .c file was more appropriate for others. This step added inclusions to around 150 files. 3. The script was run again and the output was compared to the edits from #2 to make sure no file was left behind. 4. Several build tests were done and a couple of problems were fixed. e.g. lib/decompress_*.c used malloc/free() wrappers around slab APIs requiring slab.h to be added manually. 5. The script was run on all .h files but without automatically editing them as sprinkling gfp.h and slab.h inclusions around .h files could easily lead to inclusion dependency hell. Most gfp.h inclusion directives were ignored as stuff from gfp.h was usually wildly available and often used in preprocessor macros. Each slab.h inclusion directive was examined and added manually as necessary. 6. percpu.h was updated not to include slab.h. 7. Build test were done on the following configurations and failures were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my distributed build env didn't work with gcov compiles) and a few more options had to be turned off depending on archs to make things build (like ipr on powerpc/64 which failed due to missing writeq). * x86 and x86_64 UP and SMP allmodconfig and a custom test config. * powerpc and powerpc64 SMP allmodconfig * sparc and sparc64 SMP allmodconfig * ia64 SMP allmodconfig * s390 SMP allmodconfig * alpha SMP allmodconfig * um on x86_64 SMP allmodconfig 8. percpu.h modifications were reverted so that it could be applied as a separate patch and serve as bisection point. Given the fact that I had only a couple of failures from tests on step 6, I'm fairly confident about the coverage of this conversion patch. If there is a breakage, it's likely to be something in one of the arch headers which should be easily discoverable easily on most builds of the specific arch. Signed-off-by: Tejun Heo <tj@kernel.org> Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
15 years ago
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/file.h>
#include <linux/list.h>
#include <linux/fs.h>
#include <linux/async.h>
#include <linux/pm.h>
#include <linux/suspend.h>
#include <linux/syscore_ops.h>
#include <linux/reboot.h>
#include <linux/security.h>
#include <generated/utsrelease.h>
#include "base.h"
MODULE_AUTHOR("Manuel Estrada Sainz");
MODULE_DESCRIPTION("Multi purpose firmware loading support");
MODULE_LICENSE("GPL");
/* Builtin firmware support */
#ifdef CONFIG_FW_LOADER
extern struct builtin_fw __start_builtin_fw[];
extern struct builtin_fw __end_builtin_fw[];
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
static bool fw_get_builtin_firmware(struct firmware *fw, const char *name,
void *buf, size_t size)
{
struct builtin_fw *b_fw;
for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++) {
if (strcmp(name, b_fw->name) == 0) {
fw->size = b_fw->size;
fw->data = b_fw->data;
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
if (buf && fw->size <= size)
memcpy(buf, fw->data, fw->size);
return true;
}
}
return false;
}
static bool fw_is_builtin_firmware(const struct firmware *fw)
{
struct builtin_fw *b_fw;
for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++)
if (fw->data == b_fw->data)
return true;
return false;
}
#else /* Module case - no builtin firmware support */
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
static inline bool fw_get_builtin_firmware(struct firmware *fw,
const char *name, void *buf,
size_t size)
{
return false;
}
static inline bool fw_is_builtin_firmware(const struct firmware *fw)
{
return false;
}
#endif
enum fw_status {
FW_STATUS_UNKNOWN,
FW_STATUS_LOADING,
FW_STATUS_DONE,
FW_STATUS_ABORTED,
};
static int loading_timeout = 60; /* In seconds */
static inline long firmware_loading_timeout(void)
{
return loading_timeout > 0 ? loading_timeout * HZ : MAX_JIFFY_OFFSET;
}
/*
* Concurrent request_firmware() for the same firmware need to be
* serialized. struct fw_state is simple state machine which hold the
* state of the firmware loading.
*/
struct fw_state {
firmware: fix batched requests - wake all waiters The firmware cache mechanism serves two purposes, the secondary purpose is not well documented nor understood. This fixes a regression with the secondary purpose of the firmware cache mechanism: batched requests on successful lookups. Without this fix *any* time a batched request is triggered, secondary requests for which the batched request mechanism was designed for will seem to last forver and seem to never return. This issue is present for all kernel builds possible, and a hard reset is required. The firmware cache is used for: 1) Addressing races with file lookups during the suspend/resume cycle by keeping firmware in memory during the suspend/resume cycle 2) Batched requests for the same file rely only on work from the first file lookup, which keeps the firmware in memory until the last release_firmware() is called Batched requests *only* take effect if secondary requests come in prior to the first user calling release_firmware(). The devres name used for the internal firmware cache is used as a hint other pending requests are ongoing, the firmware buffer data is kept in memory until the last user of the buffer calls release_firmware(), therefore serializing requests and delaying the release until all requests are done. Batched requests wait for a wakup or signal so we can rely on the first file fetch to write to the pending secondary requests. Commit 5b029624948d ("firmware: do not use fw_lock for fw_state protection") ported the firmware API to use swait, and in doing so failed to convert complete_all() to swake_up_all() -- it used swake_up(), loosing the ability for *some* batched requests to take effect. We *could* fix this by just using swake_up_all() *but* swait is now known to be very special use case, so its best to just move away from it. So we just go back to using completions as before commit 5b029624948d ("firmware: do not use fw_lock for fw_state protection") given this was using complete_all(). Without this fix it has been reported plugging in two Intel 6260 Wifi cards on a system will end up enumerating the two devices only 50% of the time [0]. The ported swake_up() should have actually handled the case with two devices, however, *if more than two cards are used* the swake_up() would not have sufficed. This change is only part of the required fixes for batched requests. Another fix is provided in the next patch. This particular change should fix the cases where more than three requests with the same firmware name is used, otherwise batched requests will wait for MAX_SCHEDULE_TIMEOUT and just timeout eventually. Below is a summary of tests triggering batched requests on different kernel builds. Before this patch: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ After this patch: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 CC: <stable@vger.kernel.org> [4.10+] Cc: Ming Lei <ming.lei@redhat.com> Fixes: 5b029624948d ("firmware: do not use fw_lock for fw_state protection") Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
struct completion completion;
enum fw_status status;
};
static void fw_state_init(struct fw_state *fw_st)
{
firmware: fix batched requests - wake all waiters The firmware cache mechanism serves two purposes, the secondary purpose is not well documented nor understood. This fixes a regression with the secondary purpose of the firmware cache mechanism: batched requests on successful lookups. Without this fix *any* time a batched request is triggered, secondary requests for which the batched request mechanism was designed for will seem to last forver and seem to never return. This issue is present for all kernel builds possible, and a hard reset is required. The firmware cache is used for: 1) Addressing races with file lookups during the suspend/resume cycle by keeping firmware in memory during the suspend/resume cycle 2) Batched requests for the same file rely only on work from the first file lookup, which keeps the firmware in memory until the last release_firmware() is called Batched requests *only* take effect if secondary requests come in prior to the first user calling release_firmware(). The devres name used for the internal firmware cache is used as a hint other pending requests are ongoing, the firmware buffer data is kept in memory until the last user of the buffer calls release_firmware(), therefore serializing requests and delaying the release until all requests are done. Batched requests wait for a wakup or signal so we can rely on the first file fetch to write to the pending secondary requests. Commit 5b029624948d ("firmware: do not use fw_lock for fw_state protection") ported the firmware API to use swait, and in doing so failed to convert complete_all() to swake_up_all() -- it used swake_up(), loosing the ability for *some* batched requests to take effect. We *could* fix this by just using swake_up_all() *but* swait is now known to be very special use case, so its best to just move away from it. So we just go back to using completions as before commit 5b029624948d ("firmware: do not use fw_lock for fw_state protection") given this was using complete_all(). Without this fix it has been reported plugging in two Intel 6260 Wifi cards on a system will end up enumerating the two devices only 50% of the time [0]. The ported swake_up() should have actually handled the case with two devices, however, *if more than two cards are used* the swake_up() would not have sufficed. This change is only part of the required fixes for batched requests. Another fix is provided in the next patch. This particular change should fix the cases where more than three requests with the same firmware name is used, otherwise batched requests will wait for MAX_SCHEDULE_TIMEOUT and just timeout eventually. Below is a summary of tests triggering batched requests on different kernel builds. Before this patch: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ After this patch: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 CC: <stable@vger.kernel.org> [4.10+] Cc: Ming Lei <ming.lei@redhat.com> Fixes: 5b029624948d ("firmware: do not use fw_lock for fw_state protection") Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
init_completion(&fw_st->completion);
fw_st->status = FW_STATUS_UNKNOWN;
}
static inline bool __fw_state_is_done(enum fw_status status)
{
return status == FW_STATUS_DONE || status == FW_STATUS_ABORTED;
}
static int __fw_state_wait_common(struct fw_state *fw_st, long timeout)
{
long ret;
firmware: avoid invalid fallback aborts by using killable wait Commit 0cb64249ca500 ("firmware_loader: abort request if wait_for_completion is interrupted") added via 4.0 added support to abort the fallback mechanism when a signal was detected and wait_for_completion_interruptible() returned -ERESTARTSYS -- for instance when a user hits CTRL-C. The abort was overly *too* effective. When a child process terminates (successful or not) the signal SIGCHLD can be sent to the parent process which ran the child in the background and later triggered a sync request for firmware through a sysfs interface which relies on the fallback mechanism. This signal in turn can be recieved by the interruptible wait we constructed on firmware_class and detects it as an abort *before* userspace could get a chance to write the firmware. Upon failure -EAGAIN is returned, so userspace is also kept in the dark about exactly what happened. We can reproduce the issue with the fw_fallback.sh selftest: Before this patch: $ sudo tools/testing/selftests/firmware/fw_fallback.sh ... tools/testing/selftests/firmware/fw_fallback.sh: error - sync firmware request cancelled due to SIGCHLD After this patch: $ sudo tools/testing/selftests/firmware/fw_fallback.sh ... tools/testing/selftests/firmware/fw_fallback.sh: SIGCHLD on sync ignored as expected Fix this by making the wait killable -- only killable by SIGKILL (kill -9). We loose the ability to allow userspace to cancel a write with CTRL-C (SIGINT), however its been decided the compromise to require SIGKILL is worth the gains. Chances of this issue occuring are low due to the number of drivers upstream exclusively relying on the fallback mechanism for firmware (2 drivers), however this is observed in the field with custom drivers with sysfs triggers to load firmware. Only distributions relying on the fallback mechanism are impacted as well. An example reported issue was on Android, as follows: 1) Android init (pid=1) fork()s (say pid=42) [this child process is totally unrelated to firmware loading, it could be sleep 2; for all we care ] 2) Android init (pid=1) does a write() on a (driver custom) sysfs file which ends up calling request_firmware() kernel side 3) The firmware loading fallback mechanism is used, the request is sent to userspace and pid 1 waits in the kernel on wait_* 4) before firmware loading completes pid 42 dies (for any reason, even normal termination) 5) Kernel delivers SIGCHLD to pid=1 to tell it a child has died, which causes -ERESTARTSYS to be returned from wait_* 6) The kernel's wait aborts and return -EAGAIN for the request_firmware() caller. Cc: stable <stable@vger.kernel.org> # 4.0 Fixes: 0cb64249ca500 ("firmware_loader: abort request if wait_for_completion is interrupted") Suggested-by: "Eric W. Biederman" <ebiederm@xmission.com> Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Tested-by: Martin Fuzzey <mfuzzey@parkeon.com> Reported-by: Martin Fuzzey <mfuzzey@parkeon.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
ret = wait_for_completion_killable_timeout(&fw_st->completion, timeout);
if (ret != 0 && fw_st->status == FW_STATUS_ABORTED)
return -ENOENT;
if (!ret)
return -ETIMEDOUT;
return ret < 0 ? ret : 0;
}
static void __fw_state_set(struct fw_state *fw_st,
enum fw_status status)
{
WRITE_ONCE(fw_st->status, status);
if (status == FW_STATUS_DONE || status == FW_STATUS_ABORTED)
firmware: fix batched requests - wake all waiters The firmware cache mechanism serves two purposes, the secondary purpose is not well documented nor understood. This fixes a regression with the secondary purpose of the firmware cache mechanism: batched requests on successful lookups. Without this fix *any* time a batched request is triggered, secondary requests for which the batched request mechanism was designed for will seem to last forver and seem to never return. This issue is present for all kernel builds possible, and a hard reset is required. The firmware cache is used for: 1) Addressing races with file lookups during the suspend/resume cycle by keeping firmware in memory during the suspend/resume cycle 2) Batched requests for the same file rely only on work from the first file lookup, which keeps the firmware in memory until the last release_firmware() is called Batched requests *only* take effect if secondary requests come in prior to the first user calling release_firmware(). The devres name used for the internal firmware cache is used as a hint other pending requests are ongoing, the firmware buffer data is kept in memory until the last user of the buffer calls release_firmware(), therefore serializing requests and delaying the release until all requests are done. Batched requests wait for a wakup or signal so we can rely on the first file fetch to write to the pending secondary requests. Commit 5b029624948d ("firmware: do not use fw_lock for fw_state protection") ported the firmware API to use swait, and in doing so failed to convert complete_all() to swake_up_all() -- it used swake_up(), loosing the ability for *some* batched requests to take effect. We *could* fix this by just using swake_up_all() *but* swait is now known to be very special use case, so its best to just move away from it. So we just go back to using completions as before commit 5b029624948d ("firmware: do not use fw_lock for fw_state protection") given this was using complete_all(). Without this fix it has been reported plugging in two Intel 6260 Wifi cards on a system will end up enumerating the two devices only 50% of the time [0]. The ported swake_up() should have actually handled the case with two devices, however, *if more than two cards are used* the swake_up() would not have sufficed. This change is only part of the required fixes for batched requests. Another fix is provided in the next patch. This particular change should fix the cases where more than three requests with the same firmware name is used, otherwise batched requests will wait for MAX_SCHEDULE_TIMEOUT and just timeout eventually. Below is a summary of tests triggering batched requests on different kernel builds. Before this patch: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL FAIL request_firmware_direct() FAIL FAIL request_firmware_nowait(uevent=true) FAIL FAIL request_firmware_nowait(uevent=false) FAIL FAIL ============================================================================ After this patch: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 CC: <stable@vger.kernel.org> [4.10+] Cc: Ming Lei <ming.lei@redhat.com> Fixes: 5b029624948d ("firmware: do not use fw_lock for fw_state protection") Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
complete_all(&fw_st->completion);
}
#define fw_state_start(fw_st) \
__fw_state_set(fw_st, FW_STATUS_LOADING)
#define fw_state_done(fw_st) \
__fw_state_set(fw_st, FW_STATUS_DONE)
firmware: fix batched requests - send wake up on failure on direct lookups Fix batched requests from waiting forever on failure. The firmware API batched requests feature has been broken since the API call request_firmware_direct() was introduced on commit bba3a87e982ad ("firmware: Introduce request_firmware_direct()"), added on v3.14 *iff* the firmware being requested was not present in *certain kernel builds* [0]. When no firmware is found the worker which goes on to finish never informs waiters queued up of this, so any batched request will stall in what seems to be forever (MAX_SCHEDULE_TIMEOUT). Sadly, a reboot will also stall, as the reboot notifier was only designed to kill custom fallback workers. The issue seems to the user as a type of soft lockup, what *actually* happens underneath the hood is a wait call which never completes as we failed to issue a completion on error. For device drivers with optional firmware schemes (ie, Intel iwlwifi, or Netronome -- even though it uses request_firmware() and not request_firmware_direct()), this could mean that when you boot a system with multiple cards the firmware will seem to never load on the system, or that the card is just not responsive even the driver initialization. Due to differences in scheduling possible this should not always trigger -- one would need to to ensure that multiple requests are in place at the right time for this to work, also release_firmware() must not be called prior to any other incoming request. The complexity may not be worth supporting batched requests in the future given the wait mechanism is only used also for the fallback mechanism. We'll keep it for now and just fix it. Its reported that at least with the Intel WiFi cards on one system this issue was creeping up 50% of the boots [0]. Before this commit batched requests testing revealed: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ Ater this commit batched testing results: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 Cc: stable <stable@vger.kernel.org> # v3.14 Fixes: bba3a87e982ad ("firmware: Introduce request_firmware_direct()" Reported-by: Nicolas <nbroeking@me.com> Reported-by: John Ewalt <jewalt@lgsinnovations.com> Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
#define fw_state_aborted(fw_st) \
__fw_state_set(fw_st, FW_STATUS_ABORTED)
#define fw_state_wait(fw_st) \
__fw_state_wait_common(fw_st, MAX_SCHEDULE_TIMEOUT)
static int __fw_state_check(struct fw_state *fw_st, enum fw_status status)
{
return fw_st->status == status;
}
firmware: fix batched requests - send wake up on failure on direct lookups Fix batched requests from waiting forever on failure. The firmware API batched requests feature has been broken since the API call request_firmware_direct() was introduced on commit bba3a87e982ad ("firmware: Introduce request_firmware_direct()"), added on v3.14 *iff* the firmware being requested was not present in *certain kernel builds* [0]. When no firmware is found the worker which goes on to finish never informs waiters queued up of this, so any batched request will stall in what seems to be forever (MAX_SCHEDULE_TIMEOUT). Sadly, a reboot will also stall, as the reboot notifier was only designed to kill custom fallback workers. The issue seems to the user as a type of soft lockup, what *actually* happens underneath the hood is a wait call which never completes as we failed to issue a completion on error. For device drivers with optional firmware schemes (ie, Intel iwlwifi, or Netronome -- even though it uses request_firmware() and not request_firmware_direct()), this could mean that when you boot a system with multiple cards the firmware will seem to never load on the system, or that the card is just not responsive even the driver initialization. Due to differences in scheduling possible this should not always trigger -- one would need to to ensure that multiple requests are in place at the right time for this to work, also release_firmware() must not be called prior to any other incoming request. The complexity may not be worth supporting batched requests in the future given the wait mechanism is only used also for the fallback mechanism. We'll keep it for now and just fix it. Its reported that at least with the Intel WiFi cards on one system this issue was creeping up 50% of the boots [0]. Before this commit batched requests testing revealed: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ Ater this commit batched testing results: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 Cc: stable <stable@vger.kernel.org> # v3.14 Fixes: bba3a87e982ad ("firmware: Introduce request_firmware_direct()" Reported-by: Nicolas <nbroeking@me.com> Reported-by: John Ewalt <jewalt@lgsinnovations.com> Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
#define fw_state_is_aborted(fw_st) \
__fw_state_check(fw_st, FW_STATUS_ABORTED)
#ifdef CONFIG_FW_LOADER_USER_HELPER
#define fw_state_aborted(fw_st) \
__fw_state_set(fw_st, FW_STATUS_ABORTED)
#define fw_state_is_done(fw_st) \
__fw_state_check(fw_st, FW_STATUS_DONE)
#define fw_state_is_loading(fw_st) \
__fw_state_check(fw_st, FW_STATUS_LOADING)
#define fw_state_wait_timeout(fw_st, timeout) \
__fw_state_wait_common(fw_st, timeout)
#endif /* CONFIG_FW_LOADER_USER_HELPER */
/* firmware behavior options */
#define FW_OPT_UEVENT (1U << 0)
#define FW_OPT_NOWAIT (1U << 1)
#ifdef CONFIG_FW_LOADER_USER_HELPER
firmware loader: allow disabling of udev as firmware loader [The patch was originally proposed by Tom Gundersen, and rewritten afterwards by me; most of changelogs below borrowed from Tom's original patch -- tiwai] Currently (at least) the dell-rbu driver selects FW_LOADER_USER_HELPER, which means that distros can't really stop loading firmware through udev without breaking other users (though some have). Ideally we would remove/disable the udev firmware helper in both the kernel and in udev, but if we were to disable it in udev and not the kernel, the result would be (seemingly) hung kernels as no one would be around to cancel firmware requests. This patch allows udev firmware loading to be disabled while still allowing non-udev firmware loading, as done by the dell-rbu driver, to continue working. This is achieved by only using the fallback mechanism when the uevent is suppressed. The patch renames the user-selectable Kconfig from FW_LOADER_USER_HELPER to FW_LOADER_USER_HELPER_FALLBACK, and the former is reverse-selected by the latter or the drivers that need userhelper like dell-rbu. Also, the "default y" is removed together with this change, since it's been deprecated in udev upstream, thus rather better to disable it nowadays. Tested with FW_LOADER_USER_HELPER=n LATTICE_ECP3_CONFIG=y DELL_RBU=y and udev without the firmware loading support, but I don't have the hardware to test the lattice/dell drivers, so additional testing would be appreciated. Reviewed-by: Tom Gundersen <teg@jklm.no> Cc: Ming Lei <ming.lei@canonical.com> Cc: Abhay Salunke <Abhay_Salunke@dell.com> Cc: Stefan Roese <sr@denx.de> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Kay Sievers <kay@vrfy.org> Tested-by: Balaji Singh <B_B_Singh@DELL.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years ago
#define FW_OPT_USERHELPER (1U << 2)
#else
firmware loader: allow disabling of udev as firmware loader [The patch was originally proposed by Tom Gundersen, and rewritten afterwards by me; most of changelogs below borrowed from Tom's original patch -- tiwai] Currently (at least) the dell-rbu driver selects FW_LOADER_USER_HELPER, which means that distros can't really stop loading firmware through udev without breaking other users (though some have). Ideally we would remove/disable the udev firmware helper in both the kernel and in udev, but if we were to disable it in udev and not the kernel, the result would be (seemingly) hung kernels as no one would be around to cancel firmware requests. This patch allows udev firmware loading to be disabled while still allowing non-udev firmware loading, as done by the dell-rbu driver, to continue working. This is achieved by only using the fallback mechanism when the uevent is suppressed. The patch renames the user-selectable Kconfig from FW_LOADER_USER_HELPER to FW_LOADER_USER_HELPER_FALLBACK, and the former is reverse-selected by the latter or the drivers that need userhelper like dell-rbu. Also, the "default y" is removed together with this change, since it's been deprecated in udev upstream, thus rather better to disable it nowadays. Tested with FW_LOADER_USER_HELPER=n LATTICE_ECP3_CONFIG=y DELL_RBU=y and udev without the firmware loading support, but I don't have the hardware to test the lattice/dell drivers, so additional testing would be appreciated. Reviewed-by: Tom Gundersen <teg@jklm.no> Cc: Ming Lei <ming.lei@canonical.com> Cc: Abhay Salunke <Abhay_Salunke@dell.com> Cc: Stefan Roese <sr@denx.de> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Kay Sievers <kay@vrfy.org> Tested-by: Balaji Singh <B_B_Singh@DELL.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years ago
#define FW_OPT_USERHELPER 0
#endif
#ifdef CONFIG_FW_LOADER_USER_HELPER_FALLBACK
#define FW_OPT_FALLBACK FW_OPT_USERHELPER
#else
#define FW_OPT_FALLBACK 0
#endif
#define FW_OPT_NO_WARN (1U << 3)
#define FW_OPT_NOCACHE (1U << 4)
struct firmware_cache {
/* firmware_buf instance will be added into the below list */
spinlock_t lock;
struct list_head head;
int state;
#ifdef CONFIG_PM_SLEEP
/*
* Names of firmware images which have been cached successfully
* will be added into the below list so that device uncache
* helper can trace which firmware images have been cached
* before.
*/
spinlock_t name_lock;
struct list_head fw_names;
struct delayed_work work;
struct notifier_block pm_notify;
#endif
};
struct firmware_buf {
struct kref ref;
struct list_head list;
struct firmware_cache *fwc;
struct fw_state fw_st;
void *data;
size_t size;
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
size_t allocated_size;
#ifdef CONFIG_FW_LOADER_USER_HELPER
bool is_paged_buf;
bool need_uevent;
struct page **pages;
int nr_pages;
int page_array_size;
struct list_head pending_list;
#endif
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
const char *fw_id;
};
struct fw_cache_entry {
struct list_head list;
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
const char *name;
};
struct fw_name_devm {
unsigned long magic;
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
const char *name;
};
#define to_fwbuf(d) container_of(d, struct firmware_buf, ref)
#define FW_LOADER_NO_CACHE 0
#define FW_LOADER_START_CACHE 1
static int fw_cache_piggyback_on_request(const char *name);
/* fw_lock could be moved to 'struct firmware_priv' but since it is just
* guarding for corner cases a global lock should be OK */
static DEFINE_MUTEX(fw_lock);
static struct firmware_cache fw_cache;
static struct firmware_buf *__allocate_fw_buf(const char *fw_name,
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
struct firmware_cache *fwc,
void *dbuf, size_t size)
{
struct firmware_buf *buf;
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
buf = kzalloc(sizeof(*buf), GFP_ATOMIC);
if (!buf)
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
return NULL;
buf->fw_id = kstrdup_const(fw_name, GFP_ATOMIC);
if (!buf->fw_id) {
kfree(buf);
return NULL;
}
kref_init(&buf->ref);
buf->fwc = fwc;
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
buf->data = dbuf;
buf->allocated_size = size;
fw_state_init(&buf->fw_st);
INIT_LIST_HEAD(&buf->list);
#ifdef CONFIG_FW_LOADER_USER_HELPER
INIT_LIST_HEAD(&buf->pending_list);
#endif
pr_debug("%s: fw-%s buf=%p\n", __func__, fw_name, buf);
return buf;
}
static struct firmware_buf *__fw_lookup_buf(const char *fw_name)
{
struct firmware_buf *tmp;
struct firmware_cache *fwc = &fw_cache;
list_for_each_entry(tmp, &fwc->head, list)
if (!strcmp(tmp->fw_id, fw_name))
return tmp;
return NULL;
}
/* Returns 1 for batching firmware requests with the same name */
static int fw_lookup_and_allocate_buf(const char *fw_name,
struct firmware_cache *fwc,
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
struct firmware_buf **buf, void *dbuf,
size_t size, unsigned int opt_flags)
{
struct firmware_buf *tmp;
spin_lock(&fwc->lock);
if (!(opt_flags & FW_OPT_NOCACHE)) {
tmp = __fw_lookup_buf(fw_name);
if (tmp) {
kref_get(&tmp->ref);
spin_unlock(&fwc->lock);
*buf = tmp;
return 1;
}
}
Merge remote-tracking branch 'origin/tmp-2bd6bf0' into msm-next * origin/tmp-2bd6bf0: Linux 4.14-rc1 firmware: Restore support for built-in firmware mlxsw: spectrum_router: Only handle IPv4 and IPv6 events Documentation: link in networking docs tcp: fix data delivery rate bpf/verifier: reject BPF_ALU64|BPF_END sctp: do not mark sk dumped when inet_sctp_diag_fill returns err sctp: fix an use-after-free issue in sctp_sock_dump netvsc: increase default receive buffer size tcp: update skb->skb_mstamp more carefully net: ipv4: fix l3slave check for index returned in IP_PKTINFO net: smsc911x: Quieten netif during suspend net: systemport: Fix 64-bit stats deadlock net: vrf: avoid gcc-4.6 warning qed: remove unnecessary call to memset Input: i8042 - add Gigabyte P57 to the keyboard reset table kvm: nVMX: Handle deferred early VMLAUNCH/VMRESUME failure properly kvm: vmx: Handle VMLAUNCH/VMRESUME failure properly kvm: nVMX: Remove nested_vmx_succeed after successful VM-entry kvm,mips: Fix potential swait_active() races kvm,powerpc: Serialize wq active checks in ops->vcpu_kick kvm: Serialize wq active checks in kvm_vcpu_wake_up() kvm,x86: Fix apf_task_wake_one() wq serialization kvm,lapic: Justify use of swait_active() kvm,async_pf: Use swq_has_sleeper() sched/wait: Add swq_has_sleeper() KVM: VMX: Do not BUG() on out-of-bounds guest IRQ KVM: Don't accept obviously wrong gsi values via KVM_IRQFD nios2: time: Read timer in get_cycles only if initialized nios2: add earlycon support to 3c120 devboard DTS kvm: nVMX: Don't allow L2 to access the hardware CR8 Revert "PCI: Avoid race while enabling upstream bridges" vfs: constify path argument to kernel_read_file_from_path powerpc: Fix handling of alignment interrupt on dcbz instruction firmware: delete in-kernel firmware orangefs: Adjust three checks for null pointers orangefs: Use kcalloc() in orangefs_prepare_cdm_array() orangefs: Delete error messages for a failed memory allocation in five functions orangefs: constify xattr_handler structure orangefs: don't call filemap_write_and_wait from fsync orangefs: off by ones in xattr size checks orangefs: documentation clean up orangefs: react properly to posix_acl_update_mode's aftermath. orangefs: Don't clear SGID when inheriting ACLs tg3: clean up redundant initialization of tnapi sched/wait: Introduce wakeup boomark in wake_up_page_bit sched/wait: Break up long wake list walk tls: make tls_sw_free_resources static KVM: trace events: update list of exit reasons KVM: async_pf: Fix #DF due to inject "Page not Present" and "Page Ready" exceptions simultaneously i2c: i2c-stm32f7: add driver i2c: i2c-stm32f4: use generic definition of speed enum dt-bindings: i2c-stm32: Document the STM32F7 I2C bindings KVM: X86: Don't block vCPU if there is pending exception KVM: SVM: Add irqchip_split() checks before enabling AVIC dmi: Mark all struct dmi_system_id instances const mm, page_owner: skip unnecessary stack_trace entries arm64: stacktrace: avoid listing stacktrace functions in stacktrace mm: treewide: remove GFP_TEMPORARY allocation flag IB/mlx4: fix sprintf format warning fscache: fix fscache_objlist_show format processing lib/test_bitmap.c: use ULL suffix for 64-bit constants procfs: remove unused variable drivers/media/cec/cec-adap.c: fix build with gcc-4.4.4 idr: remove WARN_ON_ONCE() when trying to replace negative ID sctp: potential read out of bounds in sctp_ulpevent_type_enabled() i2c: altera: Add Altera I2C Controller driver dt-bindings: i2c: Add Altera I2C Controller MAINTAINERS: review Renesas DT bindings as well um: return negative in tuntap_open_tramp() um: remove a stray tab um: Use relative modversions with LD_SCRIPT_DYN um: link vmlinux with -no-pie um: Fix CONFIG_GCOV for modules. Fix minor typos and grammar in UML start_up help um: defconfig: Cleanup from old Kconfig options net_sched: gen_estimator: fix scaling error in bytes/packets samples nfp: wait for the NSP resource to appear on boot nfp: wait for board state before talking to the NSP nfp: add whitelist of supported flow dissector um: Fix FP register size for XSTATE/XSAVE UBI: Fix two typos in comments ubi: fastmap: fix spelling mistake: "invalidiate" -> "invalidate" ubi: pr_err() strings should end with newlines ubi: pr_err() strings should end with newlines ubi: pr_err() strings should end with newlines Fix up MAINTAINERS file sorting net: sched: fix use-after-free in tcf_action_destroy and tcf_del_walker KVM: Add struct kvm_vcpu pointer parameter to get_enable_apicv() KVM: SVM: Refactor AVIC vcpu initialization into avic_init_vcpu() be2net: fix TSO6/GSO issue causing TX-stall on Lancer/BEx KVM: x86: fix clang build KVM: fix rcu warning on VM_CREATE errors KVM: x86: Fix immediate_exit handling for uninitialized AP KVM: x86: Fix handling of pending signal on uninitialized AP KVM: SVM: Add a missing 'break' statement KVM: x86: Remove .get_pkru() from kvm_x86_ops x86/hyper-v: Remove duplicated HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED definition x86/hyper-V: Allocate the IDT entry early in boot paravirt: Switch maintainer x86/paravirt: Remove no longer used paravirt functions x86/mm/64: Initialize CR4.PCIDE early x86/hibernate/64: Mask off CR3's PCID bits in the saved CR3 x86/mm: Get rid of VM_BUG_ON in switch_tlb_irqs_off() w90p910_ether: include linux/interrupt.h net: bonding: fix tlb_dynamic_lb default value ip6_tunnel: fix ip6 tunnel lookup in collect_md mode ip_tunnel: fix ip tunnel lookup in collect_md mode mlxsw: spectrum: Prevent mirred-related crash on removal net_sched: carefully handle tcf_block_put() net_sched: fix reference counting of tc filter chain net_sched: get rid of tcfa_rcu tcp/dccp: remove reqsk_put() from inet_child_forget() openvswitch: Fix an error handling path in 'ovs_nla_init_match_and_action()' smsc95xx: Configure pause time to 0xffff when tx flow control enabled xfs: XFS_IS_REALTIME_INODE() should be false if no rt device present drm/amdgpu: revert "fix deadlock of reservation between cs and gpu reset v2" Input: xpad - validate USB endpoint type during probe f2fs: hurry up to issue discard after io interruption f2fs: fix to show correct discard_granularity in sysfs f2fs: detect dirty inode in evict_inode perf stat: Wait for the correct child perf tools: Support running perf binaries with a dash in their name sched/debug: Add debugfs knob for "sched_debug" sched/core: WARN() when migrating to an offline CPU sched/fair: Plug hole between hotplug and active_load_balance() sched/fair: Avoid newidle balance for !active CPUs perf config: Check not only section->from_system_config but also item's perf ui progress: Fix progress update perf ui progress: Make sure we always define step value perf tools: Open perf.data with O_CLOEXEC flag tools lib api: Fix make DEBUG=1 build perf tests: Fix compile when libunwind's unwind.h is available tools include linux: Guard against redefinition of some macros ovl: fix false positive ESTALE on lookup kbuild: buildtar: do not print successful message if tar returns error kbuild: buildtar: fix tar error when CONFIG_MODULES is disabled fuse: getattr cleanup fuse: honor iocb sync flags on write fuse: allow server to run in different pid_ns pinctrl/amd: save pin registers over suspend/resume ALSA: seq: Cancel pending autoload work at unbinding device pinctrl: armada-37xx: Fix gpio interrupt setup pinctrl: sprd: fix off by one bugs pinctrl: sprd: check for allocation failure pinctrl: sprd: Restrict PINCTRL_SPRD to ARCH_SPRD or COMPILE_TEST pinctrl: sprd: fix build errors and dependencies pinctrl: sprd: make three local functions static pinctrl: uniphier: include <linux/build_bug.h> instead of <linux/bug.h> ALSA: firewire: Use common error handling code in snd_motu_stream_start_duplex() KVM: PPC: Book3S HV: Fix bug causing host SLB to be restored incorrectly KVM: PPC: Book3S HV: Hold kvm->lock around call to kvmppc_update_lpcr KVM: PPC: Book3S HV: Don't access XIVE PIPR register using byte accesses f2fs: clear radix tree dirty tag of pages whose dirty flag is cleared NFS: various changes relating to reporting IO errors. NFS: Add static NFS I/O tracepoints pNFS: Use the standard I/O stateid when calling LAYOUTGET f2fs: speed up gc_urgent mode with SSR f2fs: better to wait for fstrim completion block: directly insert blk-mq request from blk_insert_cloned_request() net/sched: fix pointer check in gen_handle ipv6: sr: remove duplicate routing header type check xdp: implement xdp_redirect_map for generic XDP perf/bpf: fix a clang compilation issue net: bonding: Fix transmit load balancing in balance-alb mode if specified by sysfs Input: ucb1400_ts - fix suspend and resume handling Input: edt-ft5x06 - fix access to non-existing register Input: elantech - make arrays debounce_packet static, reduces object code size Input: surface3_spi - make const array header static, reduces object code size Input: goodix - add support for capacitive home button hv_netvsc: avoid unnecessary wakeups on subchannel creation hv_netvsc: fix deadlock on hotplug mm/backing-dev.c: fix an error handling path in 'cgwb_create()' mlxsw: spectrum: Fix EEPROM access in case of SFP/SFP+ string.h: un-fortify memcpy_and_pad nvme-pci: implement the HMB entry number and size limitations nvme-pci: propagate (some) errors from host memory buffer setup nvme-pci: use appropriate initial chunk size for HMB allocation nvme-pci: fix host memory buffer allocation fallback nvme: fix lightnvm check block: fix integer overflow in __blkdev_sectors_to_bio_pages() block: sed-opal: Set MBRDone on S3 resume path if TPER is MBREnabled block: tolerate tracing of NULL bio dax: remove the pmem_dax_ops->flush abstraction dm integrity: use init_completion instead of COMPLETION_INITIALIZER_ONSTACK dm integrity: make blk_integrity_profile structure const dm integrity: do not check integrity for failed read operations dm log writes: fix >512b sectorsize support dm log writes: don't use all the cpu while waiting to log blocks x86/cpu: Remove unused and undefined __generic_processor_info() declaration sched/fair: Fix nuisance kernel-doc warning Revert "firmware: add sanity check on shutdown/suspend" openrisc: add forward declaration for struct vm_area_struct m68k: Add braces to __pmd(x) initializer to kill compiler warning x86/mm/64: Fix an incorrect warning with CONFIG_DEBUG_VM=y, !PCID sparc64: Handle additional cases of no fault loads sparc64: speed up etrap/rtrap on NG2 and later processors Bluetooth: Properly check L2CAP config option output buffer length net: qualcomm: rmnet: Fix a double free NFS: Count the bytes of skipped subrequests in nfs_lock_and_join_requests() NFS: Don't hold the group lock when calling nfs_release_request() watchdog: mei_wdt: constify mei_cl_device_id watchdog: sp805: constify amba_id watchdog: ziirave: constify i2c_device_id watchdog: sc1200: constify pnp_device_id dt-bindings: watchdog: renesas-wdt: Add support for the r8a77995 wdt watchdog: renesas_wdt: update copyright dates watchdog: renesas_wdt: make 'clk' a variable local to probe() watchdog: renesas_wdt: consistently use RuntimePM for clock management watchdog: aspeed: Support configuration of external signal properties dt-bindings: watchdog: aspeed: External reset signal properties drivers/watchdog: Add optional ASPEED device tree properties drivers/watchdog: ASPEED reference dev tree properties for config watchdog: da9063_wdt: Simplify by removing unneeded struct... watchdog: bcm7038: Check the return value from clk_prepare_enable() watchdog: qcom: Check for platform_get_resource() failure watchdog: of_xilinx_wdt: Add suspend/resume support watchdog: of_xilinx_wdt: Add support for reading freq via CCF dt-bindings: watchdog: mediatek: add support for MediaTek MT7623 and MT7622 SoC watchdog: max77620_wdt: constify platform_device_id watchdog: pcwd_usb: constify usb_device_id watchdog: cadence_wdt: Show information when driver is probed watchdog: cadence_wdt: Enable access to module parameters libnvdimm, btt: fix format string warnings watchdog: constify watchdog_ops and watchdog_info structures watchdog: asm9260_wdt: don't round closest with get_timeleft watchdog: renesas_wdt: add another divider option watchdog: renesas_wdt: apply better precision watchdog: renesas_wdt: don't round closest with get_timeleft watchdog: renesas_wdt: check rate also for upper limit watchdog: renesas_wdt: avoid (theoretical) type overflow watchdog: mt7621: explicitly request exclusive reset control watchdog: rt2880: explicitly request exclusive reset control watchdog: zx2967: explicitly request exclusive reset control watchdog: asm9260: explicitly request exclusive reset control watchdog: meson-wdt: add support for the watchdog on Meson8 and Meson8m2 watchdog: w83627hf: make const array chip_name static watchdog: coh901327_wdt: constify watchdog_ops structure watchdog: stm32_iwdg: constify watchdog_ops structure watchdog: it87_wdt: constify watchdog_ops structure watchdog: ts72xx_wdt: constify watchdog_ops structure remove gperf left-overs from build system NFS: Remove pnfs_generic_transfer_commit_list() NFS: nfs_lock_and_join_requests and nfs_scan_commit_list can deadlock watchdog: Revert "iTCO_wdt: all versions count down twice" ARM: 8691/1: Export save_stack_trace_tsk() bpf: make error reporting in bpf_warn_invalid_xdp_action more clear Revert "mdio_bus: Remove unneeded gpiod NULL check" bpf: devmap, use cond_resched instead of cpu_relax bpf: add support for sockmap detach programs net: rcu lock and preempt disable missing around generic xdp bpf: don't select potentially stale ri->map from buggy xdp progs net: tulip: Constify tulip_tbl net: ethernet: ti: netcp_core: no need in netif_napi_del davicom: Display proper debug level up to 6 net: phy: sfp: rename dt properties to match the binding dt-binding: net: sfp binding documentation dt-bindings: add SFF vendor prefix dt-bindings: net: don't confuse with generic PHY property ip6_tunnel: fix setting hop_limit value for ipv6 tunnel ip_tunnel: fix setting ttl and tos value in collect_md mode squashfs: Add zstd support NFS: Fix 2 use after free issues in the I/O code ipc: optimize semget/shmget/msgget for lots of keys ipc/sem: play nicer with large nsops allocations ipc/sem: drop sem_checkid helper ipc: convert kern_ipc_perm.refcount from atomic_t to refcount_t ipc: convert sem_undo_list.refcnt from atomic_t to refcount_t ipc: convert ipc_namespace.count from atomic_t to refcount_t kcov: support compat processes sh: defconfig: cleanup from old Kconfig options mn10300: defconfig: cleanup from old Kconfig options m32r: defconfig: cleanup from old Kconfig options drivers/pps: use surrounding "if PPS" to remove numerous dependency checks drivers/pps: aesthetic tweaks to PPS-related content cpumask: make cpumask_next() out-of-line kmod: move #ifdef CONFIG_MODULES wrapper to Makefile kmod: split off umh headers into its own file MAINTAINERS: clarify kmod is just a kernel module loader kmod: split out umh code into its own file test_kmod: flip INT checks to be consistent test_kmod: remove paranoid UINT_MAX check on uint range processing vfat: deduplicate hex2bin() autofs: use unsigned int/long instead of uint/ulong for ioctl args autofs: drop wrong comment autofs: use AUTOFS_DEV_IOCTL_SIZE autofs: non functional header inclusion cleanup autofs: remove unused AUTOFS_IOC_EXPIRE_DIRECT/INDIRECT autofs: make dev ioctl version and ismountpoint user accessible autofs: make disc device user accessible autofs: fix AT_NO_AUTOMOUNT not being honored init/main.c: extract early boot entropy from the passed cmdline init: move stack canary initialization after setup_arch binfmt_flat: delete two error messages for a failed memory allocation in decompress_exec() checkpatch: add 6 missing types to --list-types checkpatch: rename variables to avoid confusion checkpatch: fix typo in comment checkpatch: add --strict check for ifs with unnecessary parentheses lib/oid_registry.c: X.509: fix the buffer overflow in the utility function for OID string radix-tree: must check __radix_tree_preload() return value lib/cmdline.c: remove meaningless comment lib/string.c: check for kmalloc() failure lib/rhashtable: fix comment on locks_mul default value bitmap: introduce BITMAP_FROM_U64() lib/test_bitmap.c: add test for bitmap_parselist() lib/bitmap.c: make bitmap_parselist() thread-safe and much faster lib: add test module for CONFIG_DEBUG_VIRTUAL lib/hexdump.c: return -EINVAL in case of error in hex2bin() block/cfq: cache rightmost rb_node mem/memcg: cache rightmost node fs/epoll: use faster rb_first_cached() procfs: use faster rb_first_cached() lib/interval-tree: correct comment wrt generic flavor lib/interval_tree: fast overlap detection block/cfq: replace cfq_rb_root leftmost caching locking/rtmutex: replace top-waiter and pi_waiters leftmost caching sched/deadline: replace earliest dl and rq leftmost caching sched/fair: replace cfs_rq->rb_leftmost lib/rbtree_test.c: support rb_root_cached lib/rbtree_test.c: add (inorder) traversal test lib/rbtree_test.c: make input module parameters rbtree: add some additional comments for rebalancing cases rbtree: optimize root-check during rebalancing loop rbtree: cache leftmost node internally bitops: avoid integer overflow in GENMASK(_ULL) include: warn for inconsistent endian config definition arch/microblaze: add choice for endianness and update Makefile arch: define CPU_BIG_ENDIAN for all fixed big endian archs treewide: make "nr_cpu_ids" unsigned vga: optimise console scrolling drivers/scsi/sym53c8xx_2/sym_hipd.c: convert to use memset32 drivers/block/zram/zram_drv.c: convert to using memset_l alpha: add support for memset16 ARM: implement memset32 & memset64 x86: implement memset16, memset32 & memset64 lib/string.c: add testcases for memset16/32/64 lib/string.c: add multibyte memset functions linux/kernel.h: move DIV_ROUND_DOWN_ULL() macro fs, proc: unconditional cond_resched when reading smaps proc: uninline proc_create() fs, proc: remove priv argument from is_stack mm/mempolicy.c: remove BUG_ON() checks for VMA inside mpol_misplaced() mm/swapfile.c: fix swapon frontswap_map memory leak on error mm: kvfree the swap cluster info if the swap file is unsatisfactory mm/page_alloc.c: apply gfp_allowed_mask before the first allocation attempt tools/testing/selftests/kcmp/kcmp_test.c: add KCMP_EPOLL_TFD testing mm/sparse.c: fix typo in online_mem_sections mm/memory.c: fix mem_cgroup_oom_disable() call missing mm: memcontrol: use per-cpu stocks for socket memory uncharging mm: fadvise: avoid fadvise for fs without backing device mm/zsmalloc.c: change stat type parameter to int mm/mlock.c: use page_zone() instead of page_zone_id() mm: consider the number in local CPUs when reading NUMA stats mm: update NUMA counter threshold size mm: change the call sites of numa statistics items mm/memory.c: remove reduntant check for write access userfaultfd: non-cooperative: closing the uffd without triggering SIGBUS mm: remove useless vma parameter to offset_il_node mm/hmm: fix build when HMM is disabled mm/hmm: avoid bloating arch that do not make use of HMM mm/hmm: add new helper to hotplug CDM memory region mm/device-public-memory: device memory cache coherent with CPU mm/migrate: allow migrate_vma() to alloc new page on empty entry mm/migrate: support un-addressable ZONE_DEVICE page in migration mm/migrate: migrate_vma() unmap page from vma while collecting pages mm/migrate: new memory migration helper for use with device memory mm/migrate: new migrate mode MIGRATE_SYNC_NO_COPY mm/hmm/devmem: dummy HMM device for ZONE_DEVICE memory mm/hmm/devmem: device memory hotplug using ZONE_DEVICE mm/memcontrol: support MEMORY_DEVICE_PRIVATE mm/memcontrol: allow to uncharge page without using page->lru field mm/ZONE_DEVICE: special case put_page() for device private pages mm/ZONE_DEVICE: new type of ZONE_DEVICE for unaddressable memory mm/memory_hotplug: introduce add_pages mm/hmm/mirror: device page fault handler mm/hmm/mirror: helper to snapshot CPU page table mm/hmm/mirror: mirror process address space on device with HMM helpers mm/hmm: heterogeneous memory management (HMM for short) hmm: heterogeneous memory management documentation mm: memory_hotplug: memory hotremove supports thp migration mm: migrate: move_pages() supports thp migration mm: mempolicy: mbind and migrate_pages support thp migration mm: soft-dirty: keep soft-dirty bits over thp migration mm: thp: check pmd migration entry in common path mm: thp: enable thp migration in generic path mm: thp: introduce CONFIG_ARCH_ENABLE_THP_MIGRATION mm: thp: introduce separate TTU flag for thp freezing mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 1 mm: mempolicy: add queue_pages_required() ipv6: fix typo in fib6_net_exit() tcp: fix a request socket leak genksyms: fix gperf removal conversion RDMA/netlink: clean up message validity array initializer sctp: fix missing wake ups in some situations RDAM/netlink: Fix out-of-bound access while checking message validity netfilter: xt_hashlimit: fix build error caused by 64bit division netfilter: xt_hashlimit: alloc hashtable with right size netfilter: core: remove erroneous warn_on netfilter: nat: use keyed locks netfilter: nat: Revert "netfilter: nat: convert nat bysrc hash to rhashtable" netfilter: xtables: add scheduling opportunity in get_counters netfilter: nf_nat: don't bug when mapping already exists ipv6: fix memory leak with multiple tables during netns destruction kokr/memory-barriers.txt: Apply atomic_t.txt change kokr/doc: Update memory-barriers.txt for read-to-write dependencies docs-rst: don't require adjustbox anymore docs-rst: conf.py: only setup notice box colors if Sphinx < 1.6 docs-rst: conf.py: remove lscape from LaTeX preamble s390/dasd: blk-mq conversion netfilter: ipvs: do not create conn for ABORT packet in sctp_conn_schedule netfilter: ipvs: fix the issue that sctp_conn_schedule drops non-INIT packet brcmfmac: feature check for multi-scheduled scan fails on bcm4345 devices f2fs: avoid race in between read xattr & write xattr f2fs: make get_lock_data_page to handle encrypted inode rds: Fix incorrect statistics counting isdn: isdnloop: fix logic error in isdnloop_sendbuf udp: drop head states only when all skb references are gone ip6_gre: update mtu properly in ip6gre_err net: sched: fix memleak for chain zero bcache: initialize dirty stripes in flash_dev_run() libnvdimm, btt: clean up warning and error messages iwlwifi: mvm: only send LEDS_CMD when the FW supports it fs: aio: fix the increment of aio-nr and counting against aio-max-nr NFS: Sync the correct byte range during synchronous writes PCI: xgene: Clean up whitespace PCI: xgene: Define XGENE_PCI_EXP_CAP and use generic PCI_EXP_RTCTL offset PCI: xgene: Fix platform_get_irq() error handling rtlwifi: btcoexist: Fix antenna selection code rtlwifi: btcoexist: Fix breakage of ant_sel for rtl8723be video/console: Update BIOS dates list for GPD win console rotation DMI quirk x86/mm: Make the SME mask a u64 sched/cpuset/pm: Fix cpuset vs. suspend-resume bugs ALSA: asihpi: Kill BUG_ON() usages ALSA: core: Use %pS printk format for direct addresses ALSA: ymfpci: Use common error handling code in snd_ymfpci_create() ALSA: ymfpci: Use common error handling code in snd_card_ymfpci_probe() ALSA: 6fire: Use common error handling code in usb6fire_chip_probe() ALSA: usx2y: Use common error handling code in submit_urbs() ALSA: us122l: Use common error handling code in us122l_create_card() ALSA: hdspm: Use common error handling code in snd_hdspm_probe() ALSA: rme9652: Use common code in hdsp_get_iobox_version() ALSA: maestro3: Use common error handling code in two functions genirq: Make sparse_irq_lock protect what it should protect sched/fair: Fix wake_affine_llc() balancing rules tipc: remove unnecessary call to dev_net() netlink: access nlk groups safely in netlink bind and getname netlink: fix an use-after-free issue for nlk groups sched: Use __qdisc_drop instead of kfree_skb in sch_prio and sch_qfq dt-binding: phy: don't confuse with Ethernet phy properties x86/mm: Document how CR4.PCIDE restore works x86/mm: Reinitialize TLB state on hotplug and resume tracing: Apply trace_clock changes to instance max buffer mm,fork: introduce MADV_WIPEONFORK x86,mpx: make mpx depend on x86-64 to free up VMA flag mm: add /proc/pid/smaps_rollup mm: hugetlb: clear target sub-page last when clearing huge page mm: oom: let oom_reap_task and exit_mmap run concurrently swap: choose swap device according to numa node mm: replace TIF_MEMDIE checks by tsk_is_oom_victim mm, oom: do not rely on TIF_MEMDIE for memory reserves access z3fold: use per-cpu unbuddied lists mm, swap: don't use VMA based swap readahead if HDD is used as swap mm, swap: add sysfs interface for VMA based swap readahead mm, swap: VMA based swap readahead mm, swap: fix swap readahead marking mm, swap: add swap readahead hit statistics mm/vmalloc.c: don't reinvent the wheel but use existing llist API mm/vmstat.c: fix wrong comment selftests/memfd: add memfd_create hugetlbfs selftest mm/shmem: add hugetlbfs support to memfd_create() mm, devm_memremap_pages: use multi-order radix for ZONE_DEVICE lookups mm/vmalloc.c: halve the number of comparisons performed in pcpu_get_vm_areas() mm/vmstat: fix divide error at __fragmentation_index mm, hugetlb: do not allocate non-migrateable gigantic pages from movable zones userfaultfd: provide pid in userfault msg - add feat union userfaultfd: provide pid in userfault msg userfaultfd: call userfaultfd_unmap_prep only if __split_vma succeeds userfaultfd: selftest: explicit failure if the SIGBUS test failed userfaultfd: selftest: exercise UFFDIO_COPY/ZEROPAGE -EEXIST userfaultfd: selftest: add tests for UFFD_FEATURE_SIGBUS feature mm: userfaultfd: add feature to request for a signal delivery mm: rename global_page_state to global_zone_page_state mm: shm: use new hugetlb size encoding definitions mm: arch: consolidate mmap hugetlb size encodings mm: hugetlb: define system call hugetlb size encodings in single file include/linux/fs.h: remove unneeded forward definition of mm_struct fs/sync.c: remove unnecessary NULL f_mapping check in sync_file_range userfaultfd: selftest: enable testing of UFFDIO_ZEROPAGE for shmem userfaultfd: report UFFDIO_ZEROPAGE as available for shmem VMAs userfaultfd: shmem: wire up shmem_mfill_zeropage_pte userfaultfd: mcopy_atomic: introduce mfill_atomic_pte helper userfaultfd: shmem: add shmem_mfill_zeropage_pte for userfaultfd support shmem: introduce shmem_inode_acct_block shmem: shmem_charge: verify max_block is not exceeded before inode update mm, THP, swap: add THP swapping out fallback counting mm, THP, swap: delay splitting THP after swapped out memcg, THP, swap: make mem_cgroup_swapout() support THP memcg, THP, swap: avoid to duplicated charge THP in swap cache memcg, THP, swap: support move mem cgroup charge for THP swapped out mm, THP, swap: support splitting THP for THP swap out mm: test code to write THP to swap device as a whole block, THP: make block_device_operations.rw_page support THP mm, THP, swap: don't allocate huge cluster for file backed swap device mm, THP, swap: make reuse_swap_page() works for THP swapped out mm, THP, swap: support to reclaim swap space for THP swapped out mm, THP, swap: support to clear swap cache flag for THP swapped out mm: memcontrol: use int for event/state parameter in several functions mm/hugetlb.c: constify attribute_group structures mm/huge_memory.c: constify attribute_group structures mm/page_idle.c: constify attribute_group structures mm/slub.c: constify attribute_group structures mm/ksm.c: constify attribute_group structures cgroup: revert fa06235b8eb0 ("cgroup: reset css on destruction") mm, memcg: reset memory.low during memcg offlining mm: remove nr_pages argument from pagevec_lookup{,_range}() mm: use find_get_pages_range() in filemap_range_has_page() fs: use pagevec_lookup_range() in page_cache_seek_hole_data() hugetlbfs: use pagevec_lookup_range() in remove_inode_hugepages() ext4: use pagevec_lookup_range() in writeback code ext4: use pagevec_lookup_range() in ext4_find_unwritten_pgoff() fs: fix performance regression in clean_bdev_aliases() mm: implement find_get_pages_range() mm: make pagevec_lookup() update index fscache: remove unused ->now_uncached callback mm, vmscan: do not loop on too_many_isolated for ever zsmalloc: zs_page_migrate: skip unnecessary loops but not return -EBUSY if zspage is not inuse mm: always flush VMA ranges affected by zap_page_range mm/hugetlb.c: make huge_pte_offset() consistent and document behaviour mm/gup: make __gup_device_* require THP mm/mremap: fail map duplication attempts for private mappings mm, page_owner: don't grab zone->lock for init_pages_in_zone() mm, page_ext: periodically reschedule during page_ext_init() mm, page_owner: make init_pages_in_zone() faster mm, sparse, page_ext: drop ugly N_HIGH_MEMORY branches for allocations mm, memory_hotplug: get rid of zonelists_mutex mm, page_alloc: remove stop_machine from build_all_zonelists mm, page_alloc: simplify zonelist initialization mm, memory_hotplug: remove explicit build_all_zonelists from try_online_node mm, memory_hotplug: drop zone from build_all_zonelists mm, page_alloc: do not set_cpu_numa_mem on empty nodes initialization mm, page_alloc: remove boot pageset initialization from memory hotplug mm, page_alloc: rip out ZONELIST_ORDER_ZONE zram: add config and doc file for writeback feature zram: read page from backing device zram: write incompressible pages to backing device zram: identify asynchronous IO's return value zram: add free space management in backing device zram: add interface to specif backing device zram: rename zram_decompress_page to __zram_bvec_read zram: inline zram_compress zram: clean up duplicated codes in __zram_bvec_write mm, memory_hotplug: remove zone restrictions mm, memory_hotplug: display allowed zones in the preferred ordering mm/memory_hotplug: just build zonelist for newly added node drm/i915: wire up shrinkctl->nr_scanned mm: track actual nr_scanned during shrink_slab() mm/slub.c: add a naive detection of double free or corruption mm: add SLUB free list pointer obfuscation slub: tidy up initialization ordering ocfs2: clean up some dead code ocfs2: make ocfs2_set_acl() static modpost: simplify sec_name() dax: initialize variable pfn before using it dax: use PG_PMD_COLOUR instead of open coding dax: explain how read(2)/write(2) addresses are validated dax: move all DAX radix tree defs to fs/dax.c dax: remove DAX code from page_cache_tree_insert() dax: use common 4k zero page for dax mmap reads dax: relocate some dax functions mm: add vm_insert_mixed_mkwrite() metag/numa: remove the unused parent_node() macro ceph: stop on-going cached readdir if mds revokes FILE_SHARED cap ceph: wait on writeback after writing snapshot data ceph: fix capsnap dirty pages accounting ceph: ignore wbc->range_{start,end} when write back snapshot data ceph: fix "range cyclic" mode writepages ceph: cleanup local variables in ceph_writepages_start() ceph: optimize pagevec iterating in ceph_writepages_start() ceph: make writepage_nounlock() invalidate page that beyonds EOF ceph: properly get capsnap's size in get_oldest_context() ceph: remove stale check in ceph_invalidatepage() ceph: queue cap snap only when snap realm's context changes ceph: handle race between vmtruncate and queuing cap snap ceph: fix message order check in handle_cap_export() ceph: fix NULL pointer dereference in ceph_flush_snaps() ceph: adjust 36 checks for NULL pointers ceph: delete an unnecessary return statement in update_dentry_lease() ceph: ENOMEM pr_err in __get_or_create_frag() is redundant ceph: check negative offsets in ceph_llseek() ceph: more accurate statfs ceph: properly set snap follows for cap reconnect ceph: don't use CEPH_OSD_FLAG_ORDERSNAP ceph: include snapc in debug message of write ceph: make sure flushsnap messages are sent in proper order ceph: fix -EOLDSNAPC handling ceph: send LSSNAP request to auth mds of directory inode ceph: don't fill readdir cache for LSSNAP reply ceph: cleanup ceph_readdir_prepopulate() ceph: use errseq_t for writeback error reporting ceph: new cap message flags indicate if there is pending capsnap ceph: nuke startsync op rbd: silence bogus uninitialized use warning in rbd_acquire_lock() ceph: validate correctness of some mount options ceph: limit osd write size ceph: limit osd read size to CEPH_MSG_MAX_DATA_LEN ceph: remove unused cap_release_safety mount option drm/i915: Re-enable GTT following a device reset drm/i915: Annotate user relocs with __user loop: set physical block size to logical block size lockd: Delete an error message for a failed memory allocation in reclaimer() NFS: remove jiffies field from access cache NFS: flush data when locking a file to ensure cache coherence for mmap. SUNRPC: remove some dead code. NFS: don't expect errors from mempool_alloc(). libata: zpodd: make arrays cdb static, reduces object code size ahci: don't use MSI for devices with the silly Intel NVMe remapping scheme bcache: fix bch_hprint crash and improve output bcache: Update continue_at() documentation bcache: silence static checker warning bcache: fix for gc and write-back race bcache: increase the number of open buckets bcache: Correct return value for sysfs attach errors bcache: correct cache_dirty_target in __update_writeback_rate() bcache: gc does not work when triggering by manual command bcache: Don't reinvent the wheel but use existing llist API bcache: do not subtract sectors_to_gc for bypassed IO bcache: fix sequential large write IO bypass bcache: Fix leak of bdev reference mac80211: fix deadlock in driver-managed RX BA session start mac80211: Complete ampdu work schedule during session tear down MIPS: Refactor handling of stack pointer in get_frame_info MIPS: Stacktrace: Fix microMIPS stack unwinding on big endian systems MIPS: microMIPS: Fix decoding of swsp16 instruction MIPS: microMIPS: Fix decoding of addiusp instruction MIPS: microMIPS: Fix detection of addiusp instruction MIPS: Handle non word sized instructions when examining frame cfg80211: honor NL80211_RRF_NO_HT40{MINUS,PLUS} MIPS: ralink: allow NULL clock for clk_get_rate MIPS: Loongson 2F: allow NULL clock for clk_get_rate MIPS: BCM63XX: allow NULL clock for clk_get_rate MIPS: AR7: allow NULL clock for clk_get_rate MIPS: BCM63XX: fix ENETDMA_6345_MAXBURST_REG offset genirq/msi: Fix populating multiple interrupts mips: Save all registers when saving the frame MIPS: Add DWARF unwinding to assembly MIPS: Make SAVE_SOME more standard MIPS: Fix issues in backtraces MIPS: jz4780: DTS: Probe the jz4740-rtc driver from devicetree MIPS: Ci20: Enable RTC driver s390/mm: use a single lock for the fields in mm_context_t s390/mm: fix race on mm->context.flush_mm s390/mm: fix local TLB flushing vs. detach of an mm address space s390/zcrypt: externalize AP queue interrupt control s390/zcrypt: externalize AP config info query s390/zcrypt: externalize test AP queue s390/mm: use VM_BUG_ON in crst_table_[upgrade|downgrade] f2fs: use generic terms used for encrypted block management f2fs: introduce f2fs_encrypted_file for clean-up selftests: Enhance kselftest_harness.h to print which assert failed i40e: point wb_desc at the nvm_wb_desc during i40e_read_nvm_aq i40e: avoid NVM acquire deadlock during NVM update xprtrdma: Use xprt_pin_rqst in rpcrdma_reply_handler drivers: net: xgene: Remove return statement from void function drivers: net: xgene: Configure tx/rx delay for ACPI drivers: net: xgene: Read tx/rx delay for ACPI rocker: fix kcalloc parameter order rds: Fix non-atomic operation on shared flag variable net: sched: don't use GFP_KERNEL under spin lock vhost_net: correctly check tx avail during rx busy polling net: mdio-mux: add mdio_mux parameter to mdio_mux_init() rxrpc: Make service connection lookup always check for retry net: stmmac: Delete dead code for MDIO registration gianfar: Fix Tx flow control deactivation cxgb4: Ignore MPS_TX_INT_CAUSE[Bubble] for T6 cxgb4: Fix pause frame count in t4_get_port_stats cxgb4: fix memory leak tun: rename generic_xdp to skb_xdp tun: reserve extra headroom only when XDP is set media: leds: as3645a: add V4L2_FLASH_LED_CLASS dependency svcrdma: Estimate Send Queue depth properly rdma core: Add rdma_rw_mr_payload() svcrdma: Limit RQ depth svcrdma: Populate tail iovec when receiving nfsd: Incoming xdr_bufs may have content in tail buffer net: dsa: bcm_sf2: Configure IMP port TC2QOS mapping net: dsa: bcm_sf2: Advertise number of egress queues net: dsa: tag_brcm: Set output queue from skb queue mapping net: dsa: Allow switch drivers to indicate number of TX queues bridge: switchdev: Use an helper to clear forward mark net/mlx4_core: Use ARRAY_SIZE macro PCI: xilinx-nwl: Fix platform_get_irq() error handling flow_dissector: Add limit for number of headers to dissect flow_dissector: Cleanup control flow PCI: rockchip: Fix platform_get_irq() error handling PCI: altera: Fix platform_get_irq() error handling PCI: spear13xx: Fix platform_get_irq() error handling PCI: artpec6: Fix platform_get_irq() error handling PCI: armada8k: Fix platform_get_irq() error handling PCI: dra7xx: Fix platform_get_irq() error handling PCI: exynos: Fix platform_get_irq() error handling Revert "f2fs: add a new function get_ssr_cost" f2fs: constify super_operations f2fs: fix to wake up all sleeping flusher f2fs: avoid race in between atomic_read & atomic_inc f2fs: remove unneeded parameter of change_curseg f2fs: update i_flags correctly f2fs: don't check inode's checksum if it was dirtied or writebacked f2fs: don't need to update inode checksum for recovery PCI: iproc: Clean up whitespace PCI: iproc: Rename PCI_EXP_CAP to IPROC_PCI_EXP_CAP PCI: iproc: Add 500ms delay during device shutdown ext4: fix null pointer dereference on sbi drm/i915: Silence sparse by using gfp_t drm/i915: Add __rcu to radix tree slot pointer drm/i915: Fix the missing PPAT cache attributes on CNL soc: ti/knav_dma: include dmaengine header net/ncsi: fix ncsi_vlan_rx_{add,kill}_vid references bpf: fix numa_node validation tracing: Fix clear of RECORDED_TGID flag when disabling trace event tracing: Add barrier to trace_printk() buffer nesting modification KVM: arm/arm64: Support uaccess of GICC_APRn KVM: arm/arm64: Extract GICv3 max APRn index calculation KVM: arm/arm64: vITS: Drop its_ite->lpi field KVM: arm/arm64: vgic: constify seq_operations and file_operations KVM: arm/arm64: Fix guest external abort matching devicetree: Adjust status "ok" -> "okay" under drivers/of/ dt-bindings: Remove "status" from examples nl80211: look for HT/VHT capabilities in beacon's tail mac80211: flush hw_roc_start work before cancelling the ROC mac80211: agg-tx: call drv_wake_tx_queue in proper context audit: update the function comments selinux: remove AVC init audit log message audit: update the audit info in MAINTAINERS audit: Reduce overhead using a coarse clock workqueue: Fix flag collision video/console: Add rotated LCD-panel DMI quirk for the VIOS LTH17 media: get rid of removed DMX_GET_CAPS and DMX_SET_SOURCE leftovers scsi: scsi_transport_sas: select BLK_DEV_BSGLIB scsi: Remove Scsi_Host.uspace_req_q media: Revert "[media] v4l: async: make v4l2 coexist with devicetree nodes in a dt overlay" media: staging: atomisp: sh_css_calloc shall return a pointer to the allocated space media: Revert "[media] lirc_dev: remove superfluous get/put_device() calls" media: add qcom_camss.rst to v4l-drivers rst file dma-coherent: fix dma_declare_coherent_memory() logic error media: dvb headers: make checkpatch happier media: dvb uapi: move frontend legacy API to another part of the book ovl: don't allow writing ioctl on lower layer ovl: fix relatime for directories media: pixfmt-srggb12p.rst: better format the table for PDF output media: docs-rst: media: Don't use \small for V4L2_PIX_FMT_SRGGB10 documentation media: index.rst: don't write "Contents:" on PDF output media: pixfmt*.rst: replace a two dots by a comma media: vidioc-g-fmt.rst: adjust table format media: vivid.rst: add a blank line to correct ReST format media: v4l2 uapi book: get rid of driver programming's chapter media: format.rst: use the right markup for important notes media: docs-rst: cardlists: change their format to flat-tables media: em28xx-cardlist.rst: update to reflect last changes media: v4l2-event.rst: adjust table to fit on PDF output media: docs: don't show ToC for each part on PDF output media: cec uapi: Adjust table sizes for PDF output media: mc uapi: adjust some table sizes for PDF output media: rc-sysfs-nodes.rst: better use literals media: docs: fix PDF build with Sphinx 1.4 media: v4l uAPI docs: adjust some tables for PDF output media: vidioc-g-tuner.rst: Fix table number of cols media: vidioc-querycap: use a more realistic value for KERNEL_VERSION media: v4l uAPI: add descriptions for arguments to all ioctls media: ca.h: document ca_msg and the corresponding ioctls media: ca docs: document CA_SET_DESCR ioctl and structs media: net.h: add kernel-doc and use it at Documentation/ media: frontend.h: Avoid the term DVB when doesn't refer to a delivery system media: intro.rst: don't assume audio and video codecs to be MPEG2 media: dvbstb.svg: use dots for the optional parts of the hardware media: dmx-get-pes-pids.rst: document the ioctl media: dvb uAPI docs: minor editorial changes media: dvbapi.rst: add an entry to DVB revision history media: dvb-frontend-parameters.rst: fix the name of a struct media: dmx-fread.rst: specify how DMX_CHECK_CRC works media: dvb uAPI docs: Prefer use "Digital TV instead of "DVB" media: ca-fopen.rst: Fixes the device node name for CA media: dvb uAPI docs: adjust return value ioctl descriptions media: gen-errors.rst: document ENXIO error code media: gen-errors.rst: remove row number comments media: dvb uapi docs: better organize header files media: dst_ca: remove CA_SET_DESCR boilerplate media: dvb rst: identify the documentation gap at the API media: dvb CA docs: place undocumented data together with ioctls media: ca-get-descr-info.rst: document this ioctl media: ca-get-slot-info.rst: document this ioctl media: ca-get-cap.rst: document this ioctl media: ca-reset.rst: add some description to this ioctl media: dst_ca: return a proper error code from CA errors media: ca.h: document most CA data types media: ca.h: get rid of CA_SET_PID media: net.rst: Fix the level of a section of the net chapter media: dmx.h: add kernel-doc markups and use it at Documentation/ media: dmx.h: get rid of GET_DMX_EVENT media: dmx.h: get rid of DMX_SET_SOURCE media: dmx.h: get rid of DMX_GET_CAPS media: dmx.h: get rid of unused DMX_KERNEL_CLIENT media: fe_property_parameters.rst: better document bandwidth media: fe_property_parameters.rst: better define properties usage media: dvb frontend docs: use kernel-doc documentation media: dvb/frontend.h: document the uAPI file media: dvb/frontend.h: move out a private internal structure media: dvb/intro: adjust the notices about optional hardware media: dvb/intro: update the history part of the document media: dvb/intro: update references for TV standards media: dvb/intro: use the term Digital TV to refer to the system media: dmx.h: split typedefs from structs media: ca.h: split typedefs from structs mac80211_hwsim: Use proper TX power mac80211: Fix null pointer dereference with iTXQ support mac80211: add MESH IE in the correct order mac80211: shorten debug prints using ht_dbg() to avoid warning mac80211: fix VLAN handling with TXQs rtc: ds1307: use octal permissions rtc: ds1307: fix braces rtc: ds1307: fix alignments and blank lines rtc: ds1307: use BIT rtc: ds1307: use u32 rtc: ds1307: use sizeof rtc: ds1307: remove regs member rtc: Add Realtek RTD1295 mfd: intel_soc_pmic: Differentiate between Bay and Cherry Trail CRC variants mfd: intel_soc_pmic: Export separate mfd-cell configs for BYT and CHT dt-bindings: mfd: Add bindings for ZII RAVE devices mfd: omap-usb-tll: Fix register offsets mfd: da9052: Constify spi_device_id mfd: intel-lpss: Put I2C and SPI controllers into reset state on suspend mfd: da9055: Constify i2c_device_id mfd: intel-lpss: Add missing PCI ID for Intel Sunrise Point LPSS devices mfd: t7l66xb: Handle return value of clk_prepare_enable mfd: Add ROHM BD9571MWV-M PMIC DT bindings mfd: intel_soc_pmic_chtwc: Turn Kconfig option into a bool mfd: lp87565: Convert to use devm_mfd_add_devices() mfd: Add support for TPS68470 device mfd: lpc_ich: Do not touch SPI-NOR write protection bit on Haswell/Broadwell mfd: syscon: atmel-smc: Add helper to retrieve register layout mfd: axp20x: Use correct platform device ID for many PEK dt-bindings: mfd: axp20x: Introduce bindings for AXP813 mfd: axp20x: Add support for AXP813 PMIC dt-bindings: mfd: axp20x: Add AXP806 to supported list of chips mfd: Add ROHM BD9571MWV-M MFD PMIC driver mfd: hi6421-pmic: Add support for HiSilicon Hi6421v530 mfd: hi6421-pmic: Update dev_err messages mfd: hi6421-pmic: Change license text to shorter form mfd: Kconfig: Add missing Kconfig dependency for TPS65086 mfd: syscon: Update Atmel SMC binding doc mfd: ab8500-core: Constify attribute_group structures dt-bindings: mfd: da9052: Support TSI as ADC mfd: max8998: Fix potential NULL pointer dereference mfd: max8925-i2c: Drop unnecessary static mfd: da9052: Fix manual ADC read after timed out read mfd: rtsx: Make arrays depth and cd_mask static const mfd: twl-core: Improve the documentation dt-bindings: rtc: Add Realtek RTD1295 mac80211: fix incorrect assignment of reassoc value dmaengine: sun6i: support V3s SoC variant dmaengine: sun6i: make gate bit in sun8i's DMA engines a common quirk dmaengine: rcar-dmac: document R8A77970 bindings dmaengine: xilinx_dma: Fix error code format specifier drm/i915/gvt: Remove one duplicated MMIO cifs: Check for timeout on Negotiate stage fs: unexport vfs_readv and vfs_writev fs: unexport vfs_read and vfs_write fs: unexport __vfs_read/__vfs_write lustre: switch to kernel_write gadget/f_mass_storage: stop messing with the address limit mconsole: switch to kernel_read btrfs: switch write_buf to kernel_write net/9p: switch p9_fd_read to kernel_write mm/nommu: switch do_mmap_private to kernel_read serial2002: switch serial2002_tty_write to kernel_{read/write} fs: make the buf argument to __kernel_write a void pointer fs: fix kernel_write prototype fs: fix kernel_read prototype fs: move kernel_read to fs/read_write.c fs: move kernel_write to fs/read_write.c autofs4: switch autofs4_write to __kernel_write ashmem: switch to ->read_iter block_dev: support RFW_NOWAIT on block device nodes fs: support RWF_NOWAIT for buffered reads fs: support IOCB_NOWAIT in generic_file_buffered_read fs: pass iocb to do_generic_file_read vfs: add flags to d_real() watchdog: octeon-wdt: Add support for 78XX SOCs. watchdog: octeon-wdt: Add support for cn68XX SOCs. watchdog: octeon-wdt: File cleaning. MIPS: Octeon: Allow access to CIU3 IRQ domains. MIPS: Octeon: Make CSR functions node aware. MIPS: Octeon: Watchdog registers for 70xx, 73xx, 78xx, F75xx. watchdog: octeon-wdt: Remove old boot vector code. MIPS: Octeon: Add support for accessing the boot vector. MIPS: lantiq: Remove the arch/mips/lantiq/xway/reset.c implementation MIPS: lantiq: remove old USB PHY initialisation phy: Add an USB PHY driver for the Lantiq SoCs using the RCU module MIPS: lantiq: remove old GPHY loader code MIPS: lantiq: Add a GPHY driver which uses the RCU syscon-mfd MIPS: lantiq: remove old reset controller implementation reset: Add a reset controller driver for the Lantiq XWAY based SoCs MIPS: lantiq: Replace ltq_boot_select() with dummy implementation. MIPS: lantiq: remove ltq_reset_cause() and ltq_boot_select() MIPS: lantiq: Convert the fpi bus driver to a platform_driver Input: add a driver for PWM controllable vibrators Documentation: DT: MIPS: lantiq: Add docs for the RCU bindings alpha: math-emu: Fix modular build alpha: Restore symbol versions for symbols exported from assembly alpha: defconfig: Cleanup from old Kconfig options alpha: use kobj_to_dev() alpha: squash lines for immediate return alpha: kernel: Use vma_pages() alpha: silence a buffer overflow warning alpha: marvel: make use of raw_spinlock variants alpha: cleanup: remove __NR_sys_epoll_*, leave __NR_epoll_* alpha: use generic fb.h cifs: Add support for writing attributes on SMB2+ cifs: Add support for reading attributes on SMB2+ libnvdimm, nfit: move the check on nd_reserved2 to the endpoint rpmsg: glink: initialize ret to zero to ensure error status check is correct rpmsg: glink: fix null pointer dereference on a null intent Input: adi - make array seq static, reduces object code size fix the __user misannotations in asm-generic get_user/put_user ALSA: hda/ca0132 - Fix memory leak at error path netfilter: nf_tables: support for recursive chain deletion netfilter: nf_tables: use NLM_F_NONREC for deletion requests netlink: add NLM_F_NONREC flag for deletion requests netfilter: nf_tables: add nf_tables_addchain() netfilter: nf_tables: add nf_tables_updchain() ALSA: hda: Fix forget to free resource in error handling code path in hda_codec_driver_probe ARM: imx: mx31moboard: Remove unused 'dma' variable ASoC: cs43130: Fix unused compiler warnings for PM runtime ASoC: cs43130: Fix possible Oops with invalid dev_id ovl: cleanup d_real for negative video: fbdev: sis: fix duplicated code for different branches video: fbdev: make fb_var_screeninfo const video: fbdev: aty: do not leak uninitialized padding in clk to userspace vgacon: Prevent faulty bootparams.screeninfo from causing harm video: fbdev: make fb_videomode const video/console: Add new BIOS date for GPD pocket to dmi quirk table fbcon: remove restriction on margin color video: ARM CLCD: constify amba_id video: fm2fb: constify zorro_device_id video: fbdev: annotate fb_fix_screeninfo with const and __initconst iio: adc: stm32: add support for lptimer triggers iio: counter: Add support for STM32 LPTimer dt-bindings: iio: Add STM32 LPTimer quadrature encoder and counter iio: trigger: Add STM32 LPTimer trigger driver dt-bindings: iio: Add STM32 LPTimer trigger binding dt-bindings: pwm: Add STM32 LPTimer PWM binding pwm: Add STM32 LPTimer PWM driver mfd: Add STM32 LPTimer driver dt-bindings: mfd: Add STM32 LPTimer binding mfd: twl: Move header file out of I2C realm ASoC: cs43130: fix spelling mistake: "irq_occurrance" -> "irq_occurrence" MIPS: lantiq: Enable MFD_SYSCON to be able to use it for the RCU MFD watchdog: lantiq: add device tree binding documentation watchdog: lantiq: access boot cause register through regmap mtd: lantiq-flash: drop check of boot select MIPS: lantiq: Use of_platform_default_populate instead of __dt_register_buses irqchip: mips-gic: Let the core set struct irq_common_data affinity irqchip: mips-gic: Use cpumask_first_and() in gic_set_affinity() irqchip: mips-gic: Clean up mti, reserved-cpu-vectors handling irqchip: mips-gic: Use pcpu_masks to avoid reading GIC_SH_MASK* irqchip: mips-gic: Make pcpu_masks a per-cpu variable irqchip: mips-gic: Inline gic_basic_init() irqchip: mips-gic: Inline __gic_init() irqchip: mips-gic: Remove linux/irqchip/mips-gic.h MIPS: Remove unnecessary inclusions of linux/irqchip/mips-gic.h MIPS: VDSO: Avoid use of linux/irqchip/mips-gic.h irqchip: mips-gic: Move gic_get_c0_*_int() to asm/mips-gic.h irqchip: mips-gic: Remove gic_present MIPS: Use mips_gic_present() in place of gic_present irqchip: mips-gic: Remove gic_init() irqchip: mips-gic: Remove __gic_irq_dispatch() forward declaration irqchip: mips-gic: Remove gic_get_usm_range() MIPS: VDSO: Drop gic_get_usm_range() usage irqchip: mips-gic: Move various definitions to the driver irqchip: mips-gic: Remove GIC_CPU_INT* macros MIPS: GIC: Move GIC_LOCAL_INT_* to asm/mips-gic.h irqchip: mips-gic: Convert remaining local reg access to new accessors irqchip: mips-gic: Convert local int mask access to new accessors irqchip: mips-gic: Convert remaining shared reg access to new accessors irqchip: mips-gic: Remove gic_map_to_vpe() irqchip: mips-gic: Remove gic_map_to_pin() irqchip: mips-gic: Remove gic_set_dual_edge() irqchip: mips-gic: Remove gic_set_trigger() irqchip: mips-gic: Remove gic_set_polarity() irqchip: mips-gic: Drop gic_(re)set_mask() functions irqchip: mips-gic: Simplify gic_local_irq_domain_map() irqchip: mips-gic: Simplify shared interrupt pending/mask reads MIPS: Add __ioread64_copy irqchip: mips-gic: Remove gic_read_local_vp_id() MIPS: CPS: Read GIC_VL_IDENT directly, not via irqchip driver irqchip: mips-gic: Remove counter access functions net: Remove CONFIG_NETFILTER_DEBUG and _ASSERT() macros. net: Replace NF_CT_ASSERT() with WARN_ON(). netfilter: remove unused hooknum arg from packet functions netfilter: nft_limit: add stateful object type netfilter: nft_limit: replace pkt_bytes with bytes netfilter: nf_tables: add select_ops for stateful objects netfilter: xt_hashlimit: add rate match mode ALSA: atmel: Remove leftovers of AVR32 removal ALSA: atmel: convert AC97c driver to GPIO descriptor API ALSA: hda/realtek - Enable jack detection function for Intel ALC700 powerpc/xive: Fix section __init warning powerpc: Fix kernel crash in emulation of vector loads and stores dma-coherent: remove an unused variable net: qualcomm: rmnet: Rename real_dev_info to port net: qualcomm: rmnet: Implement ndo_get_iflink net: qualcomm: rmnet: Refactor the new rmnet dev creation net: qualcomm: rmnet: Move the device creation log net: qualcomm: rmnet: Remove the unused endpoint -1 net: qualcomm: rmnet: Fix memory corruption if mux_id is greater than 32 nfp: flower: restore RTNL locking around representor updates nfp: build the flower offload by default nfp: be drop monitor friendly nfp: move the start/stop app callbacks back nfp: flower: base lifetime of representors on existence of lower vNIC nfp: separate app vNIC init/clean from alloc/free mlxsw: spectrum_router: Support GRE tunnels mlxsw: spectrum_router: Add loopback accessors mlxsw: spectrum: Register for IPIP_DECAP_ERROR trap mlxsw: spectrum_router: Use existing decap route mlxsw: spectrum_router: Support IPv4 underlay decap mlxsw: spectrum_router: Support IPv6 overlay encap mlxsw: spectrum_router: Support IPv4 overlay encap mlxsw: spectrum_router: Make nexthops typed mlxsw: spectrum_router: Extract mlxsw_sp_rt6_is_gateway() mlxsw: spectrum_router: Extract mlxsw_sp_fi_is_gateway() mlxsw: spectrum_router: Introduce loopback RIFs mlxsw: spectrum_router: Support FID-less RIFs mlxsw: spectrum_router: Add mlxsw_sp_ipip_ops mlxsw: spectrum_router: Publish mlxsw_sp_l3proto mlxsw: reg: Give mlxsw_reg_ratr_pack a type parameter mlxsw: reg: Extract mlxsw_reg_ritr_mac_pack() mlxsw: reg: Add Routing Tunnel Decap Properties Register mlxsw: reg: Add mlxsw_reg_ralue_act_ip2me_tun_pack() mlxsw: reg: Move enum mlxsw_reg_ratr_trap_id mlxsw: reg: Update RATR to support IP-in-IP tunnels mlxsw: reg: Update RITR to support loopback device net: dsa: loop: Do not unregister invalid fixed PHY net: mvpp2: fallback using h/w and random mac if the dt one isn't valid net: mvpp2: fix use of the random mac address for PPv2.2 net: mvpp2: move the mac retrieval/copy logic into its own function utimes: Make utimes y2038 safe ipc: shm: Make shmid_kernel timestamps y2038 safe ipc: sem: Make sem_array timestamps y2038 safe ipc: msg: Make msg_queue timestamps y2038 safe ipc: mqueue: Replace timespec with timespec64 ipc: Make sys_semtimedop() y2038 safe l2tp: pass tunnel pointer to ->session_create() l2tp: prevent creation of sessions on terminated tunnels Revert "net: fix percpu memory leaks" Revert "net: use lib/percpu_counter API for fragmentation mem accounting" net/mlx4_core: fix incorrect size allocation for dev->caps.spec_qps net/mlx4_core: fix memory leaks on error exit path ipv4: Don't override return code from ip_route_input_noref() xfs: use kmem_free to free return value of kmem_zalloc xfs: open code end_buffer_async_write in xfs_finish_page_writeback dax: fix FS_DAX=n BLOCK=y compilation ALSA: hda: Fix regression of hdmi eld control created based on invalid pcm net/mlx5e: Distribute RSS table among all RX rings net/mlx5e: Stop NAPI when irq balancer changes affinity net/mlx5e: Use kernel's mechanism to avoid missing NAPIs net/mlx5e: Slightly increase RX page-cache size net/mlx5e: Don't recycle page if moved to far NUMA net/mlx5e: Remove unnecessary fields in ICO SQ net/mlx5e: Type-specific optimizations for RX post WQEs function net/mlx5e: Non-atomic RQ state indicator for UMR WQE in progress net/mlx5e: Non-atomic indicator for ring enabled state net/mlx5e: Refactor data-path lro header function net/mlx5e: Early-return on empty completion queues net/mlx5e: NAPI busy-poll when UMR post is in progress net/mlx5e: Small enhancements for RX MPWQE allocation and free net/mlx5e: Use memset to init skbs_frags array to zeros net/mlx5e: Remove unnecessary wqe_sz field from RQ buffer net/mlx5e: Replace multiplication by stride size with a shift net/mlx5e: Reorganize struct mlx5e_rq xfs: don't set v3 xflags for v2 inodes xfs: fix compiler warnings powerpc/xive: improve debugging macros powerpc/xive: add XIVE Exploitation Mode to CAS powerpc/xive: introduce H_INT_ESB hcall powerpc/xive: add the HW IRQ number under xive_irq_data powerpc/xive: introduce xive_esb_write() powerpc/xive: rename xive_poke_esb() in xive_esb_read() powerpc/xive: guest exploitation of the XIVE interrupt controller powerpc/xive: introduce a common routine xive_queue_page_alloc() kbuild: Use KCONFIG_CONFIG in buildtar hv_netvsc: Fix the channel limit in netvsc_set_rxfh() hv_netvsc: Simplify the limit check in netvsc_set_channels() hv_netvsc: Simplify num_chn checking in rndis_filter_device_add() hv_netvsc: Clean up an unused parameter in rndis_filter_set_rss_param() net: Add module reference to FIB notifiers netvsc: allow driver to be removed even if VF is present netvsc: cleanup datapath switch bpf: sockmap update/simplify memory accounting scheme net: convert (struct ubuf_info)->refcnt to refcount_t net: prepare (struct ubuf_info)->refcnt conversion net: systemport: Correctly set TSB endian for host tcp_diag: report TCP MD5 signing keys and addresses inet_diag: allow protocols to provide additional data ipv6: sr: Use ARRAY_SIZE macro net: qualcomm: rmnet: remove unused variable priv net: phy: bcm7xxx: make array bcm7xxx_suspend_cfg static, reduces object code size fsl/fman: make arrays port_ids static, reduces object code size inetpeer: fix RCU lookup() ARM: multi_v7_defconfig: make eSDHC driver built-in clk: si5351: fix PLL reset remoteproc: Introduce rproc handle accessor for children ASoC: atmel-classd: remove aclk clock ASoC: atmel-classd: remove aclk clock from DT binding clk: at91: clk-generated: make gclk determine audio_pll rate clk: at91: clk-generated: create function to find best_diff clk: at91: add audio pll clock drivers dt-bindings: clk: at91: add audio plls to the compatible list clk: at91: clk-generated: remove useless divisor loop remoteproc: qcom: Make ssr_notifiers local dt-bindings: soc: qcom: Extend GLINK to cover SMEM remoteproc: qcom: adsp: Allow defining GLINK edge powerpc/sstep: Avoid used uninitialized error PCI: Fix typos and whitespace errors PCI: Remove unused "res" variable from pci_resource_io() PCI: Correct kernel-doc of pci_vpd_srdt_size(), pci_vpd_srdt_tag() Bluetooth: make baswap src const MIPS: Malta: Use new GIC accessor functions clk: mb86s7x: Drop non-building driver fsmap: fix documentation of FMR_OF_LAST xfs: simplify the rmap code in xfs_bmse_merge xfs: remove unused flags arg from xfs_file_iomap_begin_delay xfs: fix incorrect log_flushed on fsync xfs: disable per-inode DAX flag xfs: replace xfs_qm_get_rtblks with a direct call to xfs_bmap_count_leaves xfs: rewrite xfs_bmap_count_leaves using xfs_iext_get_extent xfs: use xfs_iext_*_extent helpers in xfs_bmap_split_extent_at xfs: use xfs_iext_*_extent helpers in xfs_bmap_shift_extents xfs: move some code around inside xfs_bmap_shift_extents block/loop: remove unused field block/loop: fix use after free Introduce v3 namespaced file capabilities bfq: Use icq_to_bic() consistently bfq: Suppress compiler warnings about comparisons bfq: Check kstrtoul() return value bfq: Declare local functions static bfq: Annotate fall-through in a switch statement ARC: Re-enable MMU upon Machine Check exception ARC: Show fault information passed to show_kernel_fault_diag() ARC: [plat-hsdk] initial port for HSDK board ARC: mm: Decouple RAM base address from kernel link address ARCv2: IOC: Tighten up the contraints (specifically base / size alignment) ARC: [plat-axs103] refactor the DT fudging code ARC: [plat-axs103] use clk driver #2: Add core pll node to DT to manage cpu clk ARC: [plat-axs103] use clk driver #1: Get rid of platform specific cpu clk setting ftrace: Fix memleak when unregistering dynamic ops when tracing disabled perf annotate browser: Help for cycling thru hottest instructions with TAB/shift+TAB xfs: use xfs_iext_get_extent in xfs_bmap_first_unused xfs: switch xfs_bmap_local_to_extents to use xfs_iext_insert xfs: add a xfs_iext_update_extent helper xfs: consolidate the various page fault handlers iomap: return VM_FAULT_* codes from iomap_page_mkwrite xfs: relog dirty buffers during swapext bmbt owner change xfs: disallow marking previously dirty buffers as ordered xfs: move bmbt owner change to last step of extent swap xfs: skip bmbt block ino validation during owner change xfs: don't log dirty ranges for ordered buffers xfs: refactor buffer logging into buffer dirtying helper xfs: ordered buffer log items are never formatted xfs: remove unnecessary dirty bli format check for ordered bufs xfs: open-code xfs_buf_item_dirty() xfs: remove the ip argument to xfs_defer_finish xfs: rename xfs_defer_join to xfs_defer_ijoin xfs: refactor xfs_trans_roll xfs: check for race with xfs_reclaim_inode() in xfs_ifree_cluster() xfs: evict all inodes involved with log redo item perf stat: Only auto-merge events that are PMU aliases perf test: Add test case for PERF_SAMPLE_PHYS_ADDR perf script: Support physical address perf mem: Support physical address perf sort: Add sort option for physical address perf tools: Support new sample type for physical address perf vendor events powerpc: Remove duplicate events perf intel-pt: Fix syntax in documentation of config option perf test powerpc: Fix 'Object code reading' test perf trace: Support syscall name globbing perf syscalltbl: Support glob matching on syscall names selftests: correct define in msg_zerocopy.c doc: document MSG_ZEROCOPY bpf: Collapse offset checks in sock_filter_is_valid_access mvneta: Driver and hardware supports IPv6 offload, so enable it qlcnic: remove redundant zero check on retries counter drm/i915: Fix enum pipe vs. enum transcoder for the PCH transcoder drm/i915: Make i2c lock ops static drm/i915: Make i9xx_load_ycbcr_conversion_matrix() static drm/i915/edp: Increase T12 panel delay to 900 ms to fix DP AUX CH timeouts net: mdio-mux: fix unbalanced put_device net: mdio-mux-mmioreg: Can handle 8/16/32 bits registers net: mdio-mux: printing driver version is useless net: mdio-mux: Remove unnecessary 'out of memory' message net: mdio-mux: Fix NULL Comparison style dt-bindings: pinctrl: sh-pfc: Use generic node name dt-bindings: Add vendor Mellanox staging:rtl8188eu:core Fix remove unneccessary else block Documentation/bindings: net: marvell-pp2: add the link interrupt net: mvpp2: use the GoP interrupt for link status changes net: mvpp2: make the phy optional net: mvpp2: take advantage of the is_rgmii helper staging: typec: fusb302: make structure fusb302_psy_desc static staging: unisys: visorbus: make two functions static mlxsw: spectrum_router: Set abort trap in all virtual routers mlxsw: spectrum_router: Trap packets hitting anycast routes bpf: Only set node->ref = 1 if it has not been set bpf: Inline LRU map lookup bpf: Add lru_hash_lookup performance test ftrace: Fix selftest goto location on error block/loop: allow request merge for directio mode block/loop: set hw_sectors hwmon: (ltq-cputemp) add cpu temp sensor driver hwmon: (ltq-cputemp) add devicetree bindings documentation kernfs: checking for IS_ERR() instead of NULL staging: fsl-dpaa2/eth: fix off-by-one FD ctrl bitmaks mmc: renesas_sdhi: Add r8a7743/5 support ASoC: Intel: Skylake: Add IPC to configure the copier secondary pins ASoC: add missing compile rule for max98371 ASoC: add missing compile rule for sirf-audio-codec ASoC: add missing compile rule for max98371 ASoC: cs43130: Add devicetree bindings for CS43130 ASoC: cs43130: Add support for CS43130 codec ASoC: make clock direction configurable in asoc-simple spi: spi-falcon: drop check of boot select MAINTAINERS: use the iommu list for the dma-mapping subsystem dma-coherent: remove the DMA_MEMORY_MAP and DMA_MEMORY_IO flags iommu/vt-d: Don't be too aggressive when clearing one context entry x86/idt: Fix the X86_TRAP_BP gate dma-coherent: remove the DMA_MEMORY_INCLUDES_CHILDREN flag of: restrict DMA configuration nvme-fabrics: generate spec-compliant UUID NQNs ANDROID: binder: don't queue async transactions to thread. ANDROID: binder: don't enqueue death notifications to thread todo. ANDROID: binder: Don't BUG_ON(!spin_is_locked()). ANDROID: binder: Add BINDER_GET_NODE_DEBUG_INFO ioctl ANDROID: binder: push new transactions to waiting threads. ANDROID: binder: remove proc waitqueue android: binder: Add page usage in binder stats android: binder: fixup crash introduced by moving buffer hdr axonram: Return directly after a failed kzalloc() in axon_ram_probe() axonram: Improve a size determination in axon_ram_probe() axonram: Delete an error message for a failed memory allocation in axon_ram_probe() powerpc/powernv/npu: Move tlb flush before launching ATSD powerpc/macintosh: constify wf_sensor_ops structures powerpc/iommu: Use permission-specific DEVICE_ATTR variants powerpc/eeh: Delete an error out of memory message at init time powerpc/mm: Use seq_putc() in two functions macintosh: Convert to using %pOF instead of full_name ide: pmac: Convert to using %pOF instead of full_name crypto/nx: Add P9 NX support for 842 compression engine crypto/nx: Add P9 NX specific error codes for 842 engine crypto/nx: Use kzalloc for workmem allocation crypto/nx: Add nx842_add_coprocs_list function crypto/nx: Create nx842_delete_coprocs function crypto/nx: Create nx842_configure_crb function crypto/nx: Rename nx842_powernv_function as icswx function powerpc/32: remove a NOP from memset() powerpc/32: optimise memset() powerpc: fix location of two EXPORT_SYMBOL powerpc/32: add memset16() powerpc: Wrap register number correctly for string load/store instructions powerpc: Emulate load/store floating point as integer word instructions powerpc: Use instruction emulation infrastructure to handle alignment faults powerpc: Separate out load/store emulation into its own function powerpc: Handle opposite-endian processes in emulation code powerpc: Set regs->dar if memory access fails in emulate_step() powerpc: Emulate the dcbz instruction powerpc: Emulate load/store floating double pair instructions powerpc: Emulate vector element load/store instructions powerpc: Emulate FP/vector/VSX loads/stores correctly when regs not live powerpc: Make load/store emulation use larger memory accesses powerpc: Add emulation for the addpcis instruction powerpc: Don't update CR0 in emulation of popcnt, prty, bpermd instructions powerpc: Fix emulation of the isel instruction powerpc/64: Fix update forms of loads and stores to write 64-bit EA powerpc: Handle most loads and stores in instruction emulation code powerpc: Don't check MSR FP/VMX/VSX enable bits in analyse_instr() powerpc: Change analyse_instr so it doesn't modify *regs md/bitmap: disable bitmap_resize for file-backed bitmaps. samples/bpf: Update cgroup socket examples to use uid gid helper samples/bpf: Update cgrp2 socket tests samples/bpf: Add option to dump socket settings samples/bpf: Add detach option to test_cgrp2_sock samples/bpf: Update sock test to allow setting mark and priority bpf: Allow cgroup sock filters to use get_current_uid_gid helper bpf: Add mark and priority to sock options that can be set scsi: scsi-mq: Always unprepare before requeuing a request scsi: Show .retries and .jiffies_at_alloc in debugfs scsi: Improve requeuing behavior scsi: Call scsi_initialize_rq() for filesystem requests clk: ti: check for null return in strrchr to avoid null dereferencing clk: Don't write error code into divider register clk: uniphier: add video input subsystem clock clk: uniphier: add audio system clock clk: stm32h7: Add stm32h743 clock driver clk: gate: expose clk_gate_ops::is_enabled clk: nxp: clk-lpc32xx: rename clk_gate_is_enabled() clk: uniphier: add PXs3 clock data clk: hi6220: change watchdog clock source Input: byd - make array seq static, reduces object code size Thermal: int3406_thermal: fix thermal sysfs I/F KVM: PPC: Book3S HV: Fix memory leak in kvm_vm_ioctl_get_htab_fd rpmsg: glink: Export symbols from common code ftrace: Zero out ftrace hashes when a module is removed Kbuild: enable -Wunused-macros warning for "make W=2" kbuild: use $(abspath ...) instead of $(shell cd ... && /bin/pwd) clk: Kconfig: Name RK805 in Kconfig for COMMON_CLK_RK808 rtc: sun6i: Add support for the external oscillator gate rtc: goldfish: Add RTC driver for Android emulator dt-bindings: Add device tree binding for Goldfish RTC driver rtc: ds1307: add basic support for ds1341 chip rtc: ds1307: remove member nvram_offset from struct ds1307 rtc: ds1307: factor out offset to struct chip_desc rtc: ds1307: factor out rtc_ops to struct chip_desc rtc: ds1307: factor out irq_handler to struct chip_desc rtc: ds1307: improve irq setup rtc: ds1307: constify struct chip_desc variables rtc: ds1307: improve trickle charger initialization rtc: ds1307: factor out bbsqi bit to struct chip_desc rtc: ds1307: remove member irq from struct ds1307 rtc: rk808: Name RK805 in Kconfig for RTC_DRV_RK808 rtc: constify i2c_device_id libnvdimm: fix integer overflow static analysis warning libnvdimm, nd_blk: remove mmio_flush_range() libnvdimm, btt: rework error clearing libnvdimm: fix potential deadlock while clearing errors libnvdimm, btt: cache sector_size in arena_info libnvdimm, btt: ensure that flags were also unchanged during a map_read libnvdimm, btt: refactor map entry operations with macros Input: xilinx_ps2 - fix multiline comment style tracing: Only have rmmod clear buffers that its events were active in mlxsw: spectrum_dpipe: Add support for controlling IPv6 neighbor counters mlxsw: spectrum_router: Add support for setting counters on IPv6 neighbors mlxsw: spectrum_dpipe: Add support for IPv6 host table dump mlxsw: spectrum_dpipe: Make host entry fill handler more generic mlxsw: spectrum_router: Add IPv6 neighbor access helper mlxsw: spectrum_dpipe: Add IPv6 host table initial support mlxsw: spectrum_router: Export IPv6 link local address check helper devlink: Add IPv6 header for dpipe binfmt_flat: fix arch/m32r and arch/microblaze flat_put_addr_at_rp() compat_hdio_ioctl: Fix a declaration <linux/uaccess.h>: Fix copy_in_user() declaration annotate RWF_... flags teach SYSCALL_DEFINE/COMPAT_SYSCALL_DEFINE to handle __bitwise arguments libnvdimm, btt: fix a missed NVDIMM_IO_ATOMIC case in the write path doc, block, bfq: better describe how to properly configure bfq doc, block, bfq: fix some typos and remove stale stuff libnvdimm, nfit: export an 'ecc_unit_size' sysfs attribute loop: fold loop_switch() into callers loop: add ioctl for changing logical block size loop: set physical block size to PAGE_SIZE loop: get rid of lo_blocksize ftrace: Fix debug preempt config name in stack_tracer_{en,dis}able alarmtimer: Ensure RTC module is not unloaded Documentation/sphinx: fix kernel-doc decode for non-utf-8 locale x86/xen: Get rid of paravirt op adjust_exception_frame x86/eisa: Add missing include PCI/AER: Reformat AER register definitions x86: bpf_jit: small optimization in emit_bpf_tail_call() Input: pxa27x_keypad - handle return value of clk_prepare_enable Input: tegra-kbc - handle return value of clk_prepare_enable samples/bpf: Fix compilation issue in redirect dummy program net: fix two typos in net_device_ops documentation. net: dccp: Add handling of IPV6_PKTOPTIONS to dccp_v6_do_rcv() bridge: add tracepoint in br_fdb_update net_sched: add reverse binding for tc class i2c: sprd: Fix undefined reference errors clk: cs2000: Add cs2000_set_saved_rate clk: imx51: propagate rate across ipu_di*_sel ath10k: configure and enable the wakeup capability ath10k: add the PCI PM core suspend/resume ops ext4: perform dax_device lookup at mount ALSA: ctxfi: Remove null check before kfree tty: goldfish: Implement support for kernel 'earlycon' parameter tty: goldfish: Use streaming DMA for r/w operations on Ranchu platforms tty: goldfish: Refactor constants to better reflect their nature driver core: bus: Fix a potential double free drivers: w1: add hwmon temp support for w1_therm drivers: w1: refactor w1_slave_show to make the temp reading functionality separate drivers: w1: add hwmon support structures eeprom: idt_89hpesx: Support both ACPI and OF probing mcb: Fix an error handling path in 'chameleon_parse_cells()' MCB: add support for SC31 to mcb-lpc serial: 8250_port: Remove useless NULL checks earlycon: initialise baud field of earlycon device structure ext2: perform dax_device lookup at mount xfs: perform dax_device lookup at mount staging: r8822be: Simplify deinit_priv() staging: r8822be: Remove some dead code staging: vboxvideo: Use CONFIG_DRM_KMS_FB_HELPER to check for fbdefio availability staging:rtl8188eu Fix comparison to NULL staging: rts5208: rename mmc_ddr_tunning_rx_cmd to mmc_ddr_tuning_rx_cmd Staging: Pi433: style fix - tabs and spaces staging: pi433: fix spelling mistake: "preample" -> "preamble" staging:rtl8188eu:core Fix Code Indent staging: typec: fusb302: Export current-limit through a power_supply class dev staging: typec: fusb302: Add support for USB2 charger detection through extcon staging: typec: fusb302: Use client->irq as irq if set staging: typec: fusb302: Get max snk mv/ma/mw from device-properties staging: typec: fusb302: Set max supply voltage to 5V staging: typec: tcpm: Add get_current_limit tcpc_dev callback staging:rtl8188eu Use __func__ instead of function name staging: lustre: coding style fixes found by checkpatch.pl staging: goldfish: (Coding Style) Fixed parenthesis alignment. staging: unisys: change pr_err to dev_err in visor_check_channel staging: unisys: visorbus: remove EXPORT_SYMBOL_GPL for visor_check_channel staging: unisys: visorbus: Fix up GUID definition staging: unisys: visorbus: just check for GUID staging: unisys: Use size of channel defined in the channel. staging: unisys: visornic: Remove unnecessary return values staging: unisys: visorbus: use all 80 characters for multi-line messages staging: unisys: visorchipset: Shorten parser_init_byte_stream. staging: unisys: visorbus: Move parser functions location in file. staging: unisys: visorbus: remove uneeded initializations staging: unisys: visorbus: Remove useless else clause in visorutil_spar_detect. staging: unisys: Change data to point to visor_controlvm_parameters_header. staging: unisys: visorbus: Split else if blocks into multiple if. staging: unisys: visorbus: Remove check for valid parm_addr. staging: unisys: visorbus: Remove useless initialization. staging: unisys: visorbus: Remove useless comment. staging: unisys: visorbus: Consolidate controlvm channel creation. staging: unisys: include: Add comment next to mutex. staging: unisys: Don't check for null before getting driver device. staging: unisys: visorbus: Use __func__ instead of name. staging: unisys: visorbus: Convert macros to functions. staging: unisys: visorbus: Fix parameter alignment. staging: unisys: visorbus: Clean up vmcall address function. staging: unisys: visornic: Fix miscellaneous block comment format issues. staging: unisys: visornic: Fix up existing function comments. staging: unisys: visorbus: visorbus_main.c: Fix return values for checks in visorbus_register_visor_driver. staging: unisys: visorbus: visorchipset.c: Fix bug in parser_init_byte_stream. staging: unisys: use the kernel min define staging: ks7010: Fix coding style and remove checkpatch.pl warnings. usbip: vhci-hcd: make vhci_hc_driver const usb: phy: Avoid unchecked dereference warning usb: imx21-hcd: make imx21_hc_driver const usb: host: make ehci_fsl_overrides const and __initconst dt-bindings: mt8173-mtu3: add generic compatible and rename file dt-bindings: mt8173-xhci: add generic compatible and rename file usb: xhci-mtk: add generic compatible string usbip: auto retry for concurrent attach genalloc: Fix an incorrect kerneldoc comment irqchip/ls-scfg-msi: Add MSI affinity support irqchip/ls-scfg-msi: Add LS1043a v1.1 MSI support irqchip/ls-scfg-msi: Add LS1046a MSI support arm64: dts: ls1046a: Add MSI dts node arm64: dts: ls1043a: Share all MSIs arm: dts: ls1021a: Share all MSIs arm64: dts: ls1043a: Fix typo of MSI compatible string arm: dts: ls1021a: Fix typo of MSI compatible string irqchip/ls-scfg-msi: Fix typo of MSI compatible strings ext4: avoid Y2038 overflow in recently_deleted() irqchip/irq-bcm7120-l2: Use correct I/O accessors for irq_fwd_mask irqchip/mmp: Make mmp_intc_conf const irqchip/gic: Make irq_chip const irqchip/gic-v3: Advertise GICv4 support to KVM irqchip/gic-v4: Enable low-level GICv4 operations irqchip/gic-v4: Add some basic documentation irqchip/gic-v4: Add VLPI configuration interface irqchip/gic-v4: Add VPE command interface irqchip/gic-v4: Add per-VM VPE domain creation irqchip/gic-v3-its: Set implementation defined bit to enable VLPIs irqchip/gic-v3-its: Allow doorbell interrupts to be injected/cleared irqchip/gic-v3-its: Move pending doorbell after VMOVP irqchip/gic-v3-its: Add device proxy for VPE management if !DirectLpi irqchip/gic-v3-its: Make LPI allocation optional on device creation irqchip/gic-v3-its: Add VPE interrupt masking irqchip/gic-v3-its: Add VPE affinity changes irqchip/gic-v3-its: Add VPE invalidation hook irqchip/gic-v3-its: Add VPE scheduling irqchip/gic-v3-its: Add VPENDBASER/VPROPBASER accessors irqchip/gic-v3-its: Add VPE irq domain [de]activation irqchip/gic-v3-its: Add VPE irq domain allocation/teardown irqchip/gic-v3-its: Add VPE domain infrastructure irqchip/gic-v3-its: Add VLPI configuration handling irqchip/gic-v3-its: Add VLPI map/unmap operations irqchip/gic-v3-its: Add VLPI configuration hook irqchip/gic-v3-its: Add GICv4 ITS command definitions irqchip/gic-v4: Add management structure definitions block, bfq: guarantee update_next_in_service always returns an eligible entity block, bfq: remove direct switch to an entity in higher class block, bfq: make lookup_next_entity push up vtime on expirations clocksource: Convert to using %pOF instead of full_name Revert "pinctrl: sunxi: Don't enforce bias disable (for now)" pinctrl: uniphier: fix members of rmii group for Pro4 x86/idt: Remove superfluous ALIGNment xen/mmu: set MMU_NORMAL_PT_UPDATE in remap_area_mfn_pte_fn xen: Don't try to call xen_alloc_p2m_entry() on autotranslating guests xen/events: events_fifo: Don't use {get,put}_cpu() in xen_evtchn_fifo_init() xen/pvcalls: use WARN_ON(1) instead of __WARN() xen: remove not used trace functions xen: remove unused function xen_set_domain_pte() xen: remove tests for pvh mode in pure pv paths xen-platform: constify pci_device_id. xen: cleanup xen.h xen: introduce a Kconfig option to enable the pvcalls backend xen/pvcalls: implement write xen/pvcalls: implement read xen/pvcalls: implement the ioworker functions xen/pvcalls: disconnect and module_exit xen/pvcalls: implement release command xen/pvcalls: implement poll command xen/pvcalls: implement accept command xen/pvcalls: implement listen command xen/pvcalls: implement bind command xen/pvcalls: implement connect command xen/pvcalls: implement socket command xen/pvcalls: handle commands from the frontend xen/pvcalls: connect to a frontend xen/pvcalls: xenbus state handling xen/pvcalls: initialize the module and register the xenbus backend xen/pvcalls: introduce the pvcalls xenbus backend xen: introduce the pvcalls interface header pinctrl: Delete an error message pinctrl: core: Delete an error message pinctrl: intel: Read back TX buffer state pinctrl: rockchip: Add rv1108 recalculated iomux support gpio: mockup: remove unused variable gc thermal: mediatek: minor mtk_thermal.c cleanups thermal: mediatek: extend calibration data for mt2712 chip thermal: mediatek: add Mediatek thermal driver for mt2712 dt-bindings: thermal: Add binding document for Mediatek thermal controller rtlwifi: rtl8723be: fix duplicated code for different branches brcmfmac: Log chip id and revision qtnfmac: implement 64-bit dma support qtnfmac: fix free_xfer_buffer cleanup qtnfmac: modify qtnf_map_bar not to return NULL qtnfmac: module param sanity check qtnfmac: drop -D__CHECK_ENDIAN from cflags gfs2: preserve i_mode if __gfs2_set_acl() fails pinctrl: intel: Decrease indentation in intel_gpio_set() pinctrl: rza1: Remove suffix from gpiochip label gfs2: don't return ENODATA in __gfs2_xattr_set unless replacing IB/core: Expose ioctl interface through experimental Kconfig IB/core: Assign root to all drivers IB/core: Add completion queue (cq) object actions IB/core: Add legacy driver's user-data IB/core: Export ioctl enum types to user-space IB/core: Explicitly destroy an object while keeping uobject IB/core: Add macros for declaring methods and attributes IB/core: Add uverbs merge trees functionality IB/core: Add DEVICE object and root tree structure IB/core: Declare an object instead of declaring only type attributes IB/core: Add new ioctl interface RDMA/vmw_pvrdma: Fix a signedness RDMA/vmw_pvrdma: Report network header type in WC IB/core: Add might_sleep() annotation to ib_init_ah_from_wc() IB/cm: Fix sleeping in atomic when RoCE is used tracing/hyper-v: Trace hyperv_mmu_flush_tlb_others() x86/hyper-v: Support extended CPU ranges for TLB flush hypercalls wil6210: ensure P2P device is stopped before removing interface wil6210: increase connect timeout wil6210: clear PAL_UNIT_ICR part of device reset wil6210: move pre-FW configuration to separate function wil6210: align to latest auto generated wmi.h wil6210: make debugfs compilation optional wil6210: ratelimit errors in TX/RX interrupts ath10k: activate user space firmware loading again ath10k: sdio: remove unused struct member ath10k: fix napi_poll budget overflow powerpc: Correct instruction code for xxlor instruction powerpc: Fix DAR reporting when alignment handler faults pinctrl: qcom: spmi-gpio: Correct power_source range check gpio: pl061: constify amba_id pinctrl: freescale: make mxs_regs const KVM: s390: vsie: cleanup mcck reinjection KVM: s390: use WARN_ON_ONCE only for checking KVM: s390: guestdbg: fix range check ASoC: max98927: Changed device property read function ASoC: max98927: Modified DAPM widget and map to enable/disable VI sense path ASoC: max98927: Added PM suspend and resume function ASoC: max98927: Modified chip default register values ASoC: max98927: Added missing \n to end of dev_err messages ASoC: max98927: Updated volatile register list pinctrl: aspeed: Rework strap register write logic for the AST2500 pinctrl: rza1: off by one in rza1_parse_gpiochip() ALSA: ac97c: Fix an error handling path in 'atmel_ac97c_probe()' mmc: meson-gx: fix __ffsdi2 undefined on arm32 powerpc/pseries: Don't attempt to acquire drc during memory hot add for assigned lmbs x86/boot/KASLR: Work around firmware bugs by excluding EFI_BOOT_SERVICES_* and EFI_LOADER_* from KASLR's choice powerpc/4xx: Constify cpm_suspend_ops media: serial_ir: fix tx timing calculation on 32-bit media: rc: gpio-ir-tx: use ktime accessor functions media: rc: use ktime accessor functions pinctrl: qcom: General Purpose clocks for apq8064 ASoC: rt5645: Add jack detection workaround for MINIX Z83-4 based devices ASoC: tlv320aic3x: Support for OCMV configuration x86/apic: Silence "FW_BUG TSC_DEADLINE disabled due to Errata" on CPUs without the feature x86/mm: Enable RCU based page table freeing (CONFIG_HAVE_RCU_TABLE_FREE=y) ALSA: sh: Put missing KERN_* prefix ALSA: usx2y: Put missing KERN_CONT prefix ALSA: usb-audio: Put missing KERN_CONT prefix x86/mm: Use pr_cont() in dump_pagetable() ALSA: asihpi: Put missing KERN_CONT prefix ALSA: vx: Put missing KERN_CONT prefix ALSA: opl3: Put missing KERN_CONT prefix x86/idt: Remove the tracing IDT leftovers xfrm: Fix return value check of copy_sec_ctx. power: supply: bq27xxx: enable writing capacity values for bq27421 powerpc/smp: Add Power9 scheduler topology pinctrl: sprd: Add Spreadtrum pin control driver dt-bindings: pinctrl: Add DT bindings for Spreadtrum SC9860 pinctrl: Add sleep related state to indicate sleep related configs pinctrl: mediatek: update PCIe mux data for MT7623 Revert "gpiolib: request the gpio before querying its direction" xfrm: Add support for network devices capable of removing the ESP trailer clk: sunxi: fix uninitialized access clk: versatile: make clk_ops const ARC: clk: introduce HSDK pll driver clk: zte: constify clk_div_table clk: imx: constify clk_div_table clk: uniphier: add ethernet clock control support clk: gemini: hands off PCI OE bit clk: ux500: prcc: constify clk_ops. clk: ux500: sysctrl: constify clk_ops. clk: ux500: prcmu: constify clk_ops. liquidio: fix crash in presence of zeroed-out base address regs devlink: Maintain consistency in mac field name powerpc/smp: Add cpu_l2_cache_map powerpc/smp: Rework CPU topology construction powerpc/smp: Use cpu_to_chip_id() to find core siblings cxl: Fix driver use count selftests/powerpc: Force ptrace tests to build -fno-pie powerpc: conditionally compile platform-specific serial drivers powerpc/asm: Convert .llong directives to .8byte powerpc/configs: Enable THP and 64K for ppc64(le)_defconfig MAINTAINERS: Add drivers/watchdog/wdrtas.c to powerpc section powerpc/configs: Enable function trace by default powerpc/xmon: Add ISA v3.0 SPRs to SPR dump powerpc/xmon: Add AMR, UAMOR, AMOR, IAMR to SPR dump powerpc/xmon: Dump all 64 bits of HDEC powerpc: Squash lines for simple wrapper functions powerpc/mm/radix: Prettify mapped memory range print out powerpc/mm/radix: Add pr_fmt() to pgtable-radix.c powerpc/kernel: Change retrieval of pci_dn powerpc/mm/cxl: Add barrier when setting mm cpumask powerpc/powernv/vas: Define copy/paste interfaces powerpc/powernv/vas: Define vas_tx_win_open() powerpc/powernv/vas: Define vas_win_close() interface powerpc/powernv/vas: Define vas_rx_win_open() interface powerpc/powernv/vas: Define helpers to alloc/free windows powerpc/powernv/vas: Define helpers to init window context powerpc/powernv/vas: Define helpers to access MMIO regions powerpc/powernv/vas: Define vas_init() and vas_exit() powerpc/powernv: Move GET_FIELD/SET_FIELD to vas.h powerpc/powernv/vas: Define macros, register fields and structures powerpc/xmon: Fix display of SPRs powerpc/pci: Remove OF node back pointer from pci_dn powerpc/eeh: Reduce use of pci_dn::node powerpc/eeh: Remove unnecessary config_addr from eeh_dev powerpc/eeh: Remove unnecessary pointer to phb from eeh_dev powerpc/eeh: Reduce to one the number of places where edev is allocated powerpc/pci: Remove unused parameter from add_one_dev_pci_data() powerpc/512x: Constify clk_div_tables powerpc/44x: Fix mask and shift to zero bug powerpc/83xx: Use sizeof correct type when ioremapping powerpc: Machine check interrupt is a non-maskable interrupt powerpc/powernv: Use kernel crash path for machine checks powerpc/powernv: Flush console before platform error reboot powerpc: Do not send system reset request through the oops path powerpc/pseries/le: Work around a firmware quirk powerpc: Do not call ppc_md.panic in fadump panic notifier powerpc/64: Fix watchdog configuration regressions powerpc/64s/radix: Do not allocate SLB shadow structures powerpc/64s/radix: Remove bolted-SLB address limit for per-cpu stacks powerpc/powernv: powernv platform is not constrained by RMA mailbox: bcm-flexrm-mailbox: Use txdone_ack instead of txdone_poll mailbox: bcm-flexrm-mailbox: Use bitmap instead of IDA mailbox: bcm-flexrm-mailbox: Fix mask used in CMPL_START_ADDR_VALUE() mailbox: bcm-flexrm-mailbox: Add debugfs support mailbox: bcm-flexrm-mailbox: Set IRQ affinity hint for FlexRM ring IRQs KVM: PPC: Book3S HV: Report storage key support to userspace KVM: PPC: Book3S HV: Fix case where HDEC is treated as 32-bit on POWER9 KVM: PPC: Book3S HV: Fix invalid use of register expression KVM: PPC: Book3S HV: Fix H_REGISTER_VPA VPA size validation KVM: PPC: Book3S HV: Fix setting of storage key in H_ENTER KVM: PPC: e500mc: Fix a NULL dereference KVM: PPC: e500: Fix some NULL dereferences on error scsi: qla2xxx: Reset the logo flag, after target re-login. scsi: qla2xxx: Fix slow mem alloc behind lock scsi: qla2xxx: Clear fc4f_nvme flag scsi: qla2xxx: add missing includes for qla_isr scsi: qla2xxx: Fix an integer overflow in sysfs code scsi: aacraid: report -ENOMEM to upper layer from aac_convert_sgraw2() scsi: aacraid: get rid of one level of indentation scsi: aacraid: fix indentation errors scsi: storvsc: fix memory leak on ring buffer busy hwmon: (pmbus) Add support for Texas Instruments tps53679 device remoteproc: Stop subdevices in reverse order rpmsg: glink: Release idr lock before returning on error remoteproc: imx_rproc: add a NXP/Freescale imx_rproc driver remoteproc: dt: Provide bindings for iMX6SX/7D Remote Processor Controller driver hv_netvsc: Fix typos in the document of UDP hashing xen-netfront: be more drop monitor friendly net/mlx5e: Support RSS for GRE tunneled packets net/mlx5e: Support TSO and TX checksum offloads for GRE tunnels net/mlx5e: Use IP version matching to classify IP traffic doc: Add documentation for the genalloc subsystem assoc_array: fix path to assoc_array documentation bpf: test_maps: fix typos, "conenct" and "listeen" qed: fix spelling mistake: "calescing" -> "coalescing" net: hns3: Fixes the wrong IS_ERR check on the returned phydev value net: bcm63xx_enet: make bcm_enetsw_ethtool_ops const ipv6: sr: fix get_srh() to comply with IPv6 standard "RFC 8200" kernel-doc parser mishandles declarations split into lines net: mvpp2: dynamic reconfiguration of the comphy/GoP/MAC net: mvpp2: do not set GMAC autoneg when using XLG MAC net: mvpp2: improve the link management function net: mvpp2: simplify the link_event function net: mvpp2: initialize the comphy Documentation/bindings: phy: document the Marvell comphy driver phy: add the mvebu cp110 comphy driver phy: add sgmii and 10gkr modes to the phy_mode enum dp83640: don't hold spinlock while calling netif_rx_ni iommu/vt-d: Prevent VMD child devices from being remapping targets x86/PCI: Use is_vmd() rather than relying on the domain number x86/PCI: Move VMD quirk to x86 fixups MAINTAINERS: Add Jonathan Derrick as VMD maintainer net/sched: Change act_api and act_xxx modules to use IDR net/sched: Change cls_flower to use IDR idr: Add new APIs to support unsigned long docs: ReSTify table of contents in core.rst docs: process: drop git snapshots from applying-patches.rst PCI: vmd: Remove IRQ affinity so we can allocate more IRQs Documentation:input: fix typo ASoC: add Component level set_jack ASoC: add Component level set_pll ASoC: add Component level set_sysclk vfio: platform: constify amba_id vfio: Stall vfio_del_group_dev() for container group detach vfio: fix noiommu vfio_iommu_group_get reference count leds: pca955x: check for I2C errors PCI: rcar: Add device tree support for r8a7743/5 drm/i915: Ignore duplicate VMA stored within the per-object handle LUT drm/i915: Skip fence alignemnt check for the CCS plane drm/i915: Treat fb->offsets[] as a raw byte offset instead of a linear offset drm/i915: Always wake the device to flush the GTT drm/i915: Recreate vmapping even when the object is pinned drm/i915: Quietly cancel FBC activation if CRTC is turned off before worker Bluetooth: Add option for disabling legacy ioctl interfaces ALSA: pcm: Unify ioctl functions for playback and capture streams ALSA: Get rid of card power_lock drivers: net: ethernet: qualcomm: rmnet: Initial implementation net: arp: Add support for raw IP device net: ether: Add support for multiplexing and aggregation type GFS2: Fix non-recursive truncate bug tcp: Revert "tcp: remove header prediction" tcp: Revert "tcp: remove CA_ACK_SLOWPATH" ASoC: hdmi-codec: Use different name for playback streams regulator: Add support for stm32-vrefbuf regulator: Add STM32 Voltage Reference Buffer staging: irda: fix init level for irda core rsi: remove memset before memcpy rt2800: fix TX_PIN_CFG setting for non MT7620 chips rsi: missing unlocks on error paths rsi: update some comments ARM: dts: at91: at91sam9g45: add AC97 ARCv2: SLC: provide a line based flush routine for debugging ARC: Hardcode ARCH_DMA_MINALIGN to max line length we may have dax: introduce a fs_dax_get_by_bdev() helper iommu: Introduce Interface for IOMMU TLB Flushing power: supply: bq24190_charger: Get input_current_limit from our supplier iommu/s390: Constify iommu_ops iommu/vt-d: Avoid calling virt_to_phys() on null pointer iommu/vt-d: IOMMU Page Request needs to check if address is canonical. power: supply: bq24190_charger: Export 5V boost converter as regulator arm/tegra: Call bus_set_iommu() after iommu_device_register() ASoC: rsnd: Drop unit-addresses without reg properties ASoC: rockchip: constify snd_soc_ops structures regulator: pv88090: Exception handling for out of bounds ASoC: rt5663: Add delay for jack plug in ASoC: rt274: add acpi id regulator: da9063: Return an error code on probe failure IB/core: Add support to finalize objects in one transaction IB/core: Add a generic way to execute an operation on a uobject libnvdimm, btt: check memory allocation failure drbd: remove BIOSET_NEED_RESCUER flag from drbd_{md_,}io_bio_set drbd: Fix allyesconfig build, fix recent commit fsnotify: make dnotify_fsnotify_ops const mmc: sdhci-xenon: add runtime pm support and reimplement standby hwmon: (asc7621) make several arrays static const hwmon: (pmbus/lm25066) Add support for TI LM5066I hwmon: (pmbus/lm25066) Offset coefficient depends on CL hwmon: (pmbus) Add support for Intel VID protocol VR13 PCI: mediatek: Use PCI_NUM_INTX PCI: mediatek: Add MSI support for MT2712 and MT7622 PCI: mediatek: Use bus->sysdata to get host private data dt-bindings: PCI: Add support for MT2712 and MT7622 PCI: mediatek: Add controller support for MT2712 and MT7622 dt-bindings: PCI: Cleanup MediaTek binding text dt-bindings: PCI: Rename MediaTek binding PCI: mediatek: Switch to use platform_get_resource_byname() PCI: mediatek: Add a structure to abstract the controller generations PCI: mediatek: Rename port->index and mtk_pcie_parse_ports() PCI: mediatek: Use readl_poll_timeout() to wait for Gen2 training PCI: mediatek: Explicitly request exclusive reset control gfs2: constify rhashtable_params GFS2: Fix gl_object warnings iommu/exynos: Constify iommu_ops iommu/ipmmu-vmsa: Make ipmmu_gather_ops const iommu/ipmmu-vmsa: Rereserving a free context before setting up a pagetable nvmet: add support for reporting the host identifier mmc: core: Move mmc_start_areq() declaration mmc: mmci: stop building qcom dml as module mmc: sunxi: Reset the device at probe time clk: sunxi-ng: Provide a default reset hook mmc: meson-gx: rework tuning function mmc: meson-gx: change default tx phase mmc: meson-gx: implement voltage switch callback mmc: meson-gx: use CCF to handle the clock phases mmc: meson-gx: implement card_busy callback mmc: meson-gx: simplify interrupt handler mmc: meson-gx: work around clk-stop issue mmc: meson-gx: fix dual data rate mode frequencies mmc: meson-gx: rework clock init function mmc: meson-gx: rework clk_set function mmc: meson-gx: rework set_ios function mmc: meson-gx: cfg init overwrite values mmc: meson-gx: initialize sane clk default before clock register mmc: mmci: constify amba_id mmc: block: cast a informative log for no devidx available mmc: sdhci-pltfm: export sdhci_pltfm_suspend/resume mmc: sdhci: enable/disable the clock in sdhci_pltfm_suspend/resume mmc: sdhci-pxav2: switch to managed clk and sdhci_pltfm_unregister() mmc: sdhci-cadence: add suspend / resume support mmc: sdhci-xenon: Support HS400 Enhanced Strobe feature mmc: sdhci: Add quirk to indicate MMC_RSP_136 has CRC mmc: sdhci: Tidy reading 136-bit responses mmc: meson-gx: clean up some constants mmc: meson-gx: remove CLK_DIVIDER_ALLOW_ZERO clock flag mmc: meson-gx: fix mux mask definition mmc: block: Reparametrize mmc_blk_ioctl_[multi]_cmd() mmc: block: Refactor mmc_blk_part_switch() mmc: block: Move duplicate check mmc: debugfs: Move block debugfs into block module mmc: ops: export mmc_get_status() mmc: block: Anonymize the drv op data pointer mmc: cavium-octeon: Convert to use module_platform_driver dt-bindings: mmc: sh_mmcif: Document r8a7745 DT bindings mmc: test: reduce stack usage in mmc_test_nonblock_transfer mmc: sdhci-of-esdhc: support ESDHC_CAPABILITIES_1 accessing mmc: sdhci: fix SDHCI_QUIRK_NO_HISPD_BIT handling mmc: sdhci-s3c: use generic sdhci_set_bus_width() mmc: sdhci-pci: use generic sdhci_set_bus_width() mmc: sdhci-tegra: use generic sdhci_set_bus_width() mmc: sdhci: key 8BITBUS bit off MMC_CAP_8_BIT_DATA mmc: renesas_sdhi: Add r8a7743/5 support mmc: core: Turn off CQE before sending commands mmc: host: Add CQE interface perf report: Calculate the average cycles of iterations nvme: Use metadata for passthrough commands nvme: Make nvme user functions static nvme/pci: Use req_op to determine DIF remapping nvme: factor metadata handling out of __nvme_submit_user_cmd nvme-fabrics: Convert nvmf_transports_mutex to an rwsem efi: switch to use new generic UUID API clocksource: mips-gic-timer: Use new GIC accessor functions MIPS: GIC: Introduce asm/mips-gic.h with accessor functions mmc: core: Add members to mmc_request and mmc_data for CQE's mmc: core: Add mmc_retune_hold_now() mmc: core: Remove unused MMC_CAP2_PACKED_CMD mmc: sunxi: Fix clock rate passed to sunxi_mmc_clk_set_phase mmc: sdhi: use maximum width for the sdbuf register mmc: renesas_sdhi: document version of RZ/A1 instance mmc: renesas_sdhi: enably CBSY bit for RZ platform mmc: renesas_sdhi: use extra flag for CBSY usage mmc: vub300: constify usb_device_id mmc: sdhci-xenon: Add Xenon SDHCI specific system-level PM support mmc: dw_mmc: introduce timer for broken command transfer over scheme mmc: dw_mmc-k3: add sd support for hi3660 mmc: dw_mmc: move controller reset before driver init mmc: mxcmmc: Handle return value of clk_prepare_enable mmc: wmt-sdmmc: Handle return value of clk_prepare_enable mmc: sdhci-msm: set sdma_boundary to zero mmc: sdhci: add sdma_boundary member to struct sdhci_host mmc: renesas-sdhi: constify renesas_sdhi_internal_dmac_dma_ops mmc: sdhci-brcmstb: constify sdhci_pltfm_data structures mmc: sdhci-of-arasan: constify sdhci_pltfm_data and sdhci_ops structures mmc: sdhci-sirf: constify sdhci_pltfm_data and sdhci_ops structures mmc: sdhci-bcm-kona: constify sdhci_pltfm_data and sdhci_ops structures mmc: sdhci: constify sdhci_pltfm_data structures mmc: core: remove the check of mmc_card_blockaddr for SD cards mmc: sdhci: ignore restoring the I/O state if MMC_POWER_OFF mmc: sunxi: fix support for new timings mode only SoCs mmc: sunxi: Fix NULL pointer reference on clk_delays mmc: sunxi: Add support for A83T eMMC (MMC2) mmc: sunxi: Support MMC DDR52 transfer mode with new timing mode mmc: sunxi: Support controllers that can use both old and new timings clk: sunxi-ng: a83t: Support new timing mode for mmc2 clock clk: sunxi-ng: Add MP_MMC clocks that support MMC timing modes switching clk: sunxi-ng: Add interface to query or configure MMC timing modes. mmc: renesas-sdhi: provide a whitelist for Gen3 SoC ES versions mmc: core: correct taac parameter according to the specification mmc: sdhci-msm: add static to local functions mmc: of_mmc_spi: fix restricted cast warning of sparse mmc: bcm2835: constify mmc_host_ops structures mmc: mediatek: constify mmc_host_ops structures mmc: sdricoh_cs: constify mmc_host_ops structures mmc: sunxi: constify mmc_host_ops structures mmc: vub300: constify mmc_host_ops structures mmc: usdhi6rol0: constify mmc_host_ops structures mmc: toshsd: constify mmc_host_ops structures mmc: sh_mmcif: constify mmc_host_ops structures mmc: moxart: constify mmc_host_ops structures mmc: davinci: constify mmc_host_ops structures mmc: s3cmci: constify mmc_host_ops structures mmc: wmt-sdmmc: constify mmc_host_ops structures sdhci: pci: Fix up power if device has ACPI companion sdhci: acpi: Use new method to get ACPI companion mmc: sdhci-xenon: ignore timing DDR52 in tuning mmc: tegra: explicitly request exclusive reset control mmc: sunxi: explicitly request exclusive reset control mmc: sdhci-st: explicitly request exclusive reset control mmc: dw_mmc: explicitly request exclusive reset control mmc: Convert to using %pOF instead of full_name MMC: Remove HIGHMEM dependency from mmc-spi driver mmc: host: via-sdmmc: constify pci_device_id. mmc: sdhci: remove CONFIG_MMC_DEBUG from the driver mmc: wbsd: remove CONFIG_MMC_DEBUG from the driver mmc: Kconfig: downgrade CONFIG_MMC_DEBUG for host drivers only mmc: core: turn the pr_info under CONFIG_MMC_DEBUG into pr_debug mmc: core: always check the length of sglist with total data size mmc: core: remove check of host->removed for rescan routine mmc: sdhci-acpi: remove unused struct sdhci_host variable mmc: sdhci-of-arasan: use io functions from sdhci.h arc: remove num-slots from arc platforms mmc: atmel-mci: add missing of_node_put mmc: sdhci-of-at91: set clocks and presets after resume from deepest PM mmc: sdhci-of-at91: factor out clks and presets setting dt-bindings: mmc: sh_mmcif: Document r8a7743 DT bindings mmc: atmel-mci: remove unused sg_len variable mmc: sdhci-xenon: remove pointless struct xenon_priv *priv mmc: block: remove unused struct mmc_card *card mmc: mxcmmc: check the return value of mxcmci_finish_data mmc: mmc_ops: fix a typo for comment of mmc_start_bkops mmc: mediatek: add ops->get_cd() support mmc: rtsx_usb_sdmmc: make array 'width' static const mmc: renesas_sdhi_core: on R-Car 2+, make use of CBSY bit mmc: tmio: don't wait on R-Car2+ when handling the clock mmc: tmio: no magic values when enabling DMA mmc: tmio: add references to bit defines in the header mmc: tmio: remove obsolete TMIO_BBS mmc: tmio: fix CMD12 (STOP) handling mmc: mxcmmc: fix error return code in mxcmci_probe() mmc: android-goldfish: remove logically dead code in goldfish_mmc_irq() mmc: sdhci-st: add FSP2(ppc476fpe) into depends for sdhci-st mmc: omap_hsmmc: Reduce max_segs for reliability Documentation: rockchip-dw-mshc: add description for rk3228 mmc: renesas-sdhi: add support for R-Car Gen3 SDHI DMAC mmc: tmio, renesas-sdhi: add dataend to DMA ops mmc: tmio, renesas-sdhi: add max_{segs, blk_count} to tmio_mmc_data mmc: omap_hsmmc: constify dev_pm_ops structures mmc: sdhci-st: Handle return value of clk_prepare_enable irqchip: mips-gic: SYNC after enabling GIC region arm64: dts: marvell: mcbin: enable more networking ports arm64: dts: marvell: add a reference to the sysctrl syscon in the ppv2 node iwlwifi: mvm: bump API to 34 for 8000 and up iwlwifi: mvm: Avoid deferring non bufferable frames iwlwifi: fix long debug print arm64: dts: marvell: add TX interrupts for PPv2.2 objtool: Handle GCC stack pointer adjustment bug USB: serial: option: simplify 3 D-Link device entries USB: serial: option: add support for D-Link DWM-157 C1 net: bcmgenet: Do not return from void function arm64: defconfig: enable rockchip graphics MAINTAINERS: Update Cavium ThunderX2 entry KVM: PPC: Book3S HV: Protect updates to spapr_tce_tables list rpmsg: glink: Handle remote rx done command rpmsg: glink: Request for intents when unavailable rpmsg: glink: Use the intents passed by remote rpmsg: glink: Receive and store the remote intent buffers rpmsg: glink: Add announce_create ops and preallocate intents rpmsg: glink: Add rx done command rpmsg: glink: Make RX FIFO peak accessor to take an offset rpmsg: glink: Use the local intents when receiving data rpmsg: glink: Add support for TX intents rpmsg: glink: Fix idr_lock from mutex to spinlock rpmsg: glink: Add support for transport version negotiation rpmsg: glink: Introduce glink smem based transport PCI: layerscape: Add support for ls1088a scsi: scsi_transport_sas: switch to bsg-lib for SMP passthrough scsi: smartpqi: remove the smp_handler stub scsi: hpsa: remove the smp_handler stub scsi: bsg-lib: pass the release callback through bsg_setup_queue scsi: Rework handling of scsi_device.vpd_pg8[03] scsi: Rework the code for caching Vital Product Data (VPD) scsi: rcu: Introduce rcu_swap_protected() scsi: aacraid: Fix command send race condition libnvdimm, label: fix index block size calculation ACPI / APEI: Suppress message if HEST not present Documentation: hwmon: Document the IBM CFF power supply cpuidle: Make drivers initialize polling state cpuidle: Move polling state initialization code to separate file hwmon: (pmbus) Add IBM Common Form Factor (CFF) power supply driver cpuidle: Eliminate the CPUIDLE_DRIVER_STATE_START symbol dt-bindings: hwmon: Document the IBM CCF power supply version 1 hwmon: (ftsteutates) constify i2c_device_id neigh: increase queue_len_bytes to match wmem_default net: remove dmaengine.h inclusion from netdevice.h net: bcmgenet: Use correct I/O accessors liquidio: show NIC's U-Boot version in a dev_info() message net: dsa: make some structures const MIPS: Don't use dma_cache_sync to implement fd_cacheflush MIPS: generic: Bump default NR_CPUS to 16 MIPS: generic: Don't explicitly disable CONFIG_USB_SUPPORT MIPS: Make CONFIG_MIPS_MT_SMP default y MIPS: Prevent direct use of generic_defconfig MIPS: NI 169445: Only include in 32r2el kernels MIPS: SEAD-3: Only include in 32 bit kernels by default MIPS: generic: Allow filtering enabled boards by requirements MIPS: CPS: Detect CPUs in secondary clusters MIPS: CPS: Cluster support for topology functions MIPS: CPS: Have asm/mips-cps.h include CM & CPC headers MIPS: SMP: Allow boot_secondary SMP op to return errors MIPS: CM: Add cluster & block args to mips_cm_lock_other() MIPS: Add CPU cluster number accessors MIPS: Unify checks for sibling CPUs MIPS: Store core & VP IDs in GlobalNumber-style variable MIPS: Abstract CPU core & VP(E) ID access through accessor functions MIPS: CPS: Use GlobalNumber macros rather than magic numbers MIPS: Add accessor & bit definitions for GlobalNumber MIPS: CPS: Add CM/CPC 3.5 register definitions MIPS: CPS: Use change_*, set_* & clear_* where appropriate MIPS: CPS: Introduce register modify (set/clear/change) accessors MIPS: CPC: Use BIT/GENMASK for register fields, order & drop shifts MIPS: CPC: Use common CPS accessor generation macros remoteproc: qcom: Use PTR_ERR_OR_ZERO ipv6: Use rt6i_idev index for echo replies to a local address amd-xgbe: Interrupt summary bits are h/w version dependent PCI: Disable VF decoding before pcibios_sriov_disable() updates resources PCI: layerscape: Add support for ls2088a nsh: add GSO support net: add NSH header structures and helpers vxlan: factor out VXLAN-GPE next protocol ether: add NSH ethertype tc-testing: add test for testing ife type act_ife: use registered ife_type as fallback if_ether: add forces ife lfb type Documentation: networking: Add blurb about patches in patchwork sparc64: vcc: make ktermios const net/mlx4: Add user mac FW update support net/mlx4_core: Fix misplaced brackets of sizeof net/mlx4_core: Make explicit conversion to 64bit value net/mlx4_core: Dynamically allocate structs at mlx4_slave_cap bridge: fdb add and delete tracepoints net: phy: mdio-bcm-unimac: Use correct I/O accessors net: systemport: Set correct RSB endian bits based on host net: dsa: bcm_sf2: Use correct I/O accessors net: systemport: Use correct I/O accessors PCI: artpec6: Stop enabling writes to DBI read-only registers PCI: layerscape: Remove unnecessary class code fixup drbd: switch from kmalloc() to kmalloc_array() drbd: abort drbd_start_resync if there is no connection drbd: move global variables to drbd namespace and make some static drbd: rename "usermode_helper" to "drbd_usermode_helper" drbd: fix race between handshake and admin disconnect/down drbd: fix potential deadlock when trying to detach during handshake drbd: A single dot should be put into a sequence. drbd: fix rmmod cleanup, remove _all_ debugfs entries drbd: Use setup_timer() instead of init_timer() to simplify the code. drbd: fix potential get_ldev/put_ldev refcount imbalance during attach drbd: new disk-option disable-write-same drbd: Fix resource role for newly created resources in events2 drbd: mark symbols static where possible drbd: Send P_NEG_ACK upon write error in protocol != C drbd: add explicit plugging when submitting batches drbd: change list_for_each_safe to while(list_first_entry_or_null) drbd: introduce drbd_recv_header_maybe_unplug rpmsg: glink: Do a mbox_free_channel in remove rpmsg: glink: Return -EAGAIN when there is no FIFO space rpmsg: glink: Allow unaligned data access rpmsg: glink: Move the common glink protocol implementation to glink_native.c rpmsg: glink: Split rpm_probe to reuse the common code rpmsg: glink: Associate indirections for pipe fifo accessor's rpmsg: glink: Rename glink_rpm_xx functions to qcom_glink_xx PCI: dwc: Enable write permission for Class Code, Interrupt Pin updates PCI: dwc: Add accessors for write permission of DBI read-only registers PCI: layerscape: Disable outbound windows configured by bootloader PCI: layerscape: Refactor ls1021_pcie_host_init() power: supply: bq24190_charger: Add power_supply_battery_info support power: supply: bq24190_charger: Add property system-minimum-microvolt power: supply: bq24190_charger: Enable devicetree config dt-bindings: power: supply: Add docs for TI BQ24190 battery charger power: supply: bq27xxx: Remove duplicate chip data arrays tools: PCI: Add a missing option help line misc: pci_endpoint_test: Enable/Disable MSI using module param misc: pci_endpoint_test: Avoid using hard-coded BAR sizes misc: pci_endpoint_test: Add support to not enable MSI interrupts misc: pci_endpoint_test: Add support to provide aligned buffer addresses misc: pci_endpoint_test: Add support for PCI_ENDPOINT_TEST regs to be mapped to any BAR PCI: designware-ep: Do not disable BARs during initialization PCI: dra7xx: Reset all BARs during initialization PCI: dwc: designware: Provide page_size to pci_epc_mem PCI: endpoint: Remove the ->remove() callback PCI: endpoint: Add support to poll early for host commands PCI: endpoint: Add support to use _any_ BAR to map PCI_ENDPOINT_TEST regs PCI: endpoint: Do not reset *command* inadvertently PCI: endpoint: Add "volatile" to pci_epf_test_reg PCI: endpoint: Add support for configurable page size PCI: endpoint: Make ->remove() callback optional i2c: nomadik: constify amba_id i2c: versatile: Make i2c_algo_bit_data const i2c: busses: make i2c_adapter_quirks const PCI: layerscape: Move generic init functions earlier in file PCI: layerscape: Add class code and multifunction fixups for ls1021a PCI: layerscape: Move STRFMR1 access out from the DBI write-enable bracket i2c: busses: make i2c_adapter const i2c: busses: make i2c_algorithm const PCI: layerscape: Call dw_pcie_setup_rc() from ls_pcie_host_init() spi: imx: fix use of native chip-selects with devicetree ASoC: tas2552: Fix fraction overflow in PLL calculation PCI: Warn periodically while waiting for non-CRS ("device ready") status PCI: Wait up to 60 seconds for device to become ready after FLR PCI: Factor out pci_bus_wait_crs() PCI: Add pci_bus_crs_vendor_id() to detect CRS response data PCI: Always check for non-CRS response before timeout ASoC: rockchip: Update description of rockchip, codec ASoC: rockchip: Add support for DMIC codec leds: gpio: Allow LED to retain state at shutdown dt-bindings: leds: gpio: Add optional retain-state-shutdown property leds: powernv: Delete an error message for a failed memory allocation in powernv_led_create() leds: lp8501: make several arrays static const leds: lp5562: make several arrays static const leds: lp5521: make several arrays static const leds: aat1290: make array max_mm_current_percent static const leds: pca955x: Prevent crippled LED device name leds: lm3533: constify attribute_group structure dt-bindings: leds: add pca955x ASoC: rockchip: Add support for DP codec ASoC: rockchip: Parse dai links from dts ASoC: rockchip: Use codec of_node and dai_name for rt5514 dsp ASoC: Intel: kbl: Add map for Maxim IV Feedback ASoC: rt5514: Guard Hotword Model bytes loading ASoC: fsl_dma: remove dma_object path member ASoC: Intel: kbl: Add jack port initialize in kbl machine drivers ASoC: Intel: kbl: Add MST route change to kbl machine drivers PCI: rockchip: Umap IO space if probe fails PCI: rockchip: Remove IRQ domain if probe fails PCI: rockchip: Disable vpcie0v9 if resume_noirq fails PCI: rockchip: Clean up PHY if driver probe or resume fails PCI: rockchip: Factor out rockchip_pcie_deinit_phys() PCI: rockchip: Factor out rockchip_pcie_disable_clocks() PCI: rockchip: Factor out rockchip_pcie_enable_clocks() PCI: rockchip: Factor out rockchip_pcie_setup_irq() PCI: rockchip: Use gpiod_set_value_cansleep() to allow reset via expanders PCI: rockchip: Use PCI_NUM_INTX PCI: rockchip: Explicitly request exclusive reset control dt-bindings: phy-rockchip-pcie: Convert to per-lane PHY model dt-bindings: PCI: rockchip: Convert to per-lane PHY model arm64: dts: rockchip: convert PCIe to use per-lane PHYs for rk3339 net: stmmac: constify clk_div_table samples/bpf: xdp_monitor tool based on tracepoints samples/bpf: xdp_redirect load XDP dummy prog on TX device xdp: separate xdp_redirect tracepoint in map case xdp: separate xdp_redirect tracepoint in error case xdp: make xdp tracepoints report bpf prog id instead of prog_tag xdp: tracepoint xdp_redirect also need a map argument xdp: remove redundant argument to trace_xdp_redirect dt-binding: net/phy: fix interrupts description f2fs: trigger fdatasync for non-atomic_write file f2fs: fix to avoid race in between aio and gc f2fs: wake up discard_thread iff there is a candidate f2fs: return error when accessing insane flie offset f2fs: trigger normal fsync for non-atomic_write file f2fs: clear FI_HOT_DATA correctly f2fs: fix out-of-order execution in f2fs_issue_flush f2fs: issue discard commands if gc_urgent is set bsg: remove #if 0'ed code mq-deadline: Enable auto-loading when built as module bfq: Re-enable auto-loading when built as a module addrlabel: add/delete/get can run without rtnl selftests: add addrlabel add/delete to rtnetlink.sh staging: irda: update MAINTAINERS bnxt_en: add a dummy definition for bnxt_vf_rep_get_fid() mtd: nand: complain loudly when chip->bits_per_cell is not correctly initialized mtd: nand: make Samsung SLC NAND usable again block: Make blk_dequeue_request() static skd: Let the block layer core choose .nr_requests skd: Remove blk_queue_bounce_limit() call KVM: s390: we are always in czam mode perf symbols: Fix plt entry calculation for ARM and AARCH64 s390/mm: avoid empty zero pages for KVM guests to avoid postcopy hangs s390/dasd: Add discard support for FBA devices s390/zcrypt: make CPRBX const s390/uaccess: avoid mvcos jump label s390/mm: use generic mm_hooks s390/facilities: fix typo s390/vmcp: simplify vmcp_response_free() dt-bindings: ata: add DT bindings for MediaTek SATA controller perf probe: Fix kprobe blacklist checking condition virt: Convert to using %pOF instead of full_name macintosh: Convert to using %pOF instead of full_name ide: pmac: Convert to using %pOF instead of full_name microblaze: Convert to using %pOF instead of full_name clocksource/drivers/bcm2835: Remove message for a memory allocation failure MIPS: CM: Use BIT/GENMASK for register fields, order & drop shifts MIPS: CM: Specify register size when generating accessors MIPS: CM: Rename mips_cm_base to mips_gcr_base MIPS: math-emu: Add FP emu debugfs stats for individual instructions MIPS: math-emu: Add FP emu debugfs clear functionality MIPS: math-emu: Add FP emu debugfs statistics for branches MIPS: math-emu: CLASS.D: Zero bits 32-63 of the result MIPS: math-emu: RINT.<D|S>: Fix several problems by reimplementation MIPS: math-emu: CMP.Sxxx.<D|S>: Prevent occurrences of SIGILL crashes MIPS: math-emu: <MADDF|MSUBF>.D: Fix accuracy (64-bit case) MIPS: math-emu: <MADDF|MSUBF>.S: Fix accuracy (32-bit case) MIPS: math-emu: <MADDF|MSUBF>.<D|S>: Clean up "maddf_flags" enumeration MIPS: math-emu: <MADDF|MSUBF>.<D|S>: Fix some cases of zero inputs MIPS: math-emu: <MADDF|MSUBF>.<D|S>: Fix some cases of infinite inputs MIPS: math-emu: <MADDF|MSUBF>.<D|S>: Fix NaN propagation MIPS: math-emu: MINA.<D|S>: Fix some cases of infinity and zero inputs MIPS: math-emu: <MAXA|MINA>.<D|S>: Fix cases of both infinite inputs MIPS: math-emu: <MAXA|MINA>.<D|S>: Fix cases of input values with opposite signs MIPS: math-emu: <MAX|MIN>.<D|S>: Fix cases of both inputs negative MIPS: math-emu: <MAX|MAXA|MIN|MINA>.<D|S>: Fix cases of both inputs zero MIPS: math-emu: <MAX|MAXA|MIN|MINA>.<D|S>: Fix quiet NaN propagation MIPS: Declare various variables & functions static MIPS: Remove plat_timer_setup() MIPS: Remove __invalidate_kernel_vmap_range MIPS: math-emu: Correct user fault_addr type MIPS: Include linux/initrd.h for free_initrd_mem() MIPS: Include elf-randomize.h for arch_mmap_rnd() & arch_randomize_brk() MIPS: Include asm/delay.h for __{,n,u}delay() MIPS: Include linux/cpu.h for arch_cpu_idle() MIPS: Include asm/setup.h for cpu_cache_init() MIPS: generic: Include asm/time.h for get_c0_*_int() MIPS: generic: Include asm/bootinfo.h for plat_fdt_relocated() MIPS: Consolidate coherent and non-coherent dma_alloc code MIPS: configs: Add Onion Omega2+ defconfig MIPS: Add Onion Omega2+ board MIPS: configs: Add VoCore2 defconfig MIPS: dts: Add Vocore2 board dt-bindings: vendors: Add VoCore as a vendor MIPS: dts: ralink: Add Mediatek MT7628A SoC MIPS: Alchemy: Threaded carddetect irqs for devboards MIPS: Alchemy: update cpu feature overrides MIPS: Alchemy: Add devboard machine type to cpuinfo MIPS: math-emu: do not use bools for arithmetic MIPS: dts: Ci20: Add ethernet and fixed-regulator nodes MIPS: Ci20: Enable GPIO driver MIPS: generic: Move NI 169445 FIT image source to its own file MIPS: generic: Move Boston FIT image source to its own file MIPS: Allow platform to specify multiple its.S files MIPS: Octeon: Expose support for mips32r1, mips32r2 and mips64r1 MIPS: signal: Remove unreachable code from force_fcr31_sig(). MIPS: NI 169445 board support MIPS: pci-mt7620: explicitly request exclusive reset control MIPS: pistachio: Enable Root FS on NFS in defconfig MIPS: NUMA: Remove the unused parent_node() macro MIPS: Octeon: cavium_octeon_defconfig: Enable more drivers MIPS: Remove unused ST_OFF from r2300_switch.S MIPS: Move r2300 FP code from r2300_switch.S to r2300_fpu.S MIPS: Move r4k FP code from r4k_switch.S to r4k_fpu.S MIPS: Remove unused R6000 support MIPS: R6: Constify r2_decoder_tables MIPS: SMP: Constify smp ops MIPS: defconfig: Cleanup from non-existing options MIPS: Convert to using %pOF instead of full_name KVM: s390: expose no-DAT to guest and migration support KVM: s390: sthyi: remove invalid guest write access KVM: s390: Multiple Epoch Facility support locking/lockdep/selftests: Fix mixed read-write ABBA tests sched/completion: Avoid unnecessary stack allocation for COMPLETION_INITIALIZER_ONSTACK() acpi/nfit: Fix COMPLETION_INITIALIZER_ONSTACK() abuse locking/pvqspinlock: Relax cmpxchg's to improve performance on some architectures smp: Avoid using two cache lines for struct call_single_data locking/lockdep: Untangle xhlock history save/restore from task independence perf/x86: Fix caps/ for !Intel perf/core, x86: Add PERF_SAMPLE_PHYS_ADDR perf/core, pt, bts: Get rid of itrace_started ALSA: aoa: Convert to using %pOF instead of full_name Documentation: Hardware tag matching IB/mlx5: Support IB_SRQT_TM net/mlx5: Add XRQ support IB/mlx5: Fill XRQ capabilities IB/uverbs: Expose XRQ capabilities IB/uverbs: Add new SRQ type IB_SRQT_TM IB/uverbs: Add XRQ creation parameter to UAPI IB/core: Add new SRQ type IB_SRQT_TM IB/core: Separate CQ handle in SRQ context IB/core: Add XRQ capabilities net/mlx5: Update HW layout definitions ARM: 8692/1: mm: abort uaccess retries upon fatal signal ARM: 8690/1: lpae: build TTB control register value from scratch in v7_ttb_setup mux: make device_type const powerpc/64s: idle POWER9 can execute stop in virtual mode powerpc/64s: Drop no longer used IDLE_STATE_ENTER_SEQ powerpc/64s: POWER9 can execute stop without a sync sequence powerpc/64s: Move IDLE_STATE_ENTER_SEQ[_NORET] into idle_book3s.S x86/platform/intel-mid: Make several arrays static, to make code smaller x86/entry/64: Use ENTRY() instead of ALIGN+GLOBAL for stub32_clone() x86/fpu/math-emu: Add ENDPROC to functions x86/boot/64: Extract efi_pe_entry() from startup_64() x86/boot/32: Extract efi_pe_entry() from startup_32() locking/refcounts, x86/asm: Disable CONFIG_ARCH_HAS_REFCOUNT for the time being power: supply: bq27xxx: Enable data memory update for certain chips power: supply: bq27xxx: Add chip IDs for previously shadowed chips power: supply: bq27xxx: Create single chip data table power: supply: bq24190_charger: Add ti,bq24192i to devicetree table power: supply: bq24190_charger: Add input_current_limit property power: supply: Add power_supply_set_input_current_limit_from_supplier helper i2c: Add Spreadtrum I2C controller driver dt-bindings: i2c: Add Spreadtrum I2C controller documentation i2c-cht-wc: make cht_wc_i2c_adap_driver static x86/idt: Hide set_intr_gate() x86/idt: Simplify alloc_intr_gate() x86/idt: Deinline setup functions x86/idt: Remove unused functions/inlines x86/idt: Move interrupt gate initialization to IDT code x86/idt: Move APIC gate initialization to tables x86/idt: Move regular trap init to tables x86/idt: Move IST stack based traps to table init x86/idt: Move debug stack init to table based x86/idt: Switch early trap init to IDT tables x86/idt: Prepare for table based init x86/idt: Move early IDT setup out of 32-bit asm x86/idt: Move early IDT handler setup to IDT code x86/idt: Consolidate IDT invalidation x86/idt: Remove unused set_trap_gate() x86/idt: Move 32-bit idt_descr to C code x86/idt: Create file for IDT related code x86/ldttss: Clean up 32-bit descriptors x86/gdt: Use bitfields for initialization x86/asm: Replace access to desc_struct:a/b fields x86/fpu: Use bitfield accessors for desc_struct x86/percpu: Use static initializer for GDT entry x86/idt: Unify gate_struct handling for 32/64-bit kernels x86/tracing: Build tracepoints only when they are used MAINTAINERS: Add entry for drivers/i2c/busses/i2c-cht-wc.c power: supply: max17042_battery: Fix compiler warning rxrpc: Allow failed client calls to be retried rxrpc: Add notification of end-of-Tx phase rxrpc: Remove some excess whitespace rxrpc: Don't negate call->error before returning it rxrpc: Fix IPv6 support rxrpc: Use correct timestamp from Kerberos 5 ticket x86/irq_work: Make it depend on APIC x86/ipi: Make platform IPI depend on APIC x86/tracing: Disentangle pagefault and resched IPI tracing key x86/idt: Clean up the i386 low level entry macros x86/idt: Remove the tracing IDT completely x86/smp: Use static key for reschedule interrupt tracing x86/smp: Remove pointless duplicated interrupt code x86/mce: Remove duplicated tracing interrupt code x86/irqwork: Get rid of duplicated tracing interrupt code x86/apic: Remove the duplicated tracing versions of interrupts x86/irq: Get rid of duplicated trace_x86_platform_ipi() code x86/apic: Use this_cpu_ptr() in local_timer_interrupt() x86/apic: Remove the duplicated tracing version of local_timer_interrupt() x86/traps: Simplify pagefault tracing logic x86/tracing: Introduce a static key for exception tracing x86/boot: Move EISA setup to a separate file x86/irq: Remove duplicated used_vectors definition x86/irq: Get rid of the 'first_system_vector' indirection bogosity x86/irq: Unexport used_vectors[] x86/irq: Remove vector_used_by_percpu_irq() net: rxrpc: Replace time_t type with time64_t type devicetree: bindings: Remove deprecated properties devicetree: bindings: Remove unused 32-bit CMT bindings devicetree: bindings: Deprecate property, update example devicetree: bindings: r8a73a4 and R-Car Gen2 CMT bindings devicetree: bindings: R-Car Gen2 CMT0 and CMT1 bindings devicetree: bindings: Remove sh7372 CMT binding clocksource/drivers/imx-tpm: Add imx tpm timer support dt-bindings: timer: Add nxp tpm timer binding doc x86/microcode/intel: Improve microcode patches saving flow x86/mm: Fix SME encryption stack ptr handling nvme: don't blindly overwrite identifiers on disk revalidate nvme: remove nvme_revalidate_ns nvme: remove unused struct nvme_ns fields nvme: allow calling nvme_change_ctrl_state from irq context nvme: report more detailed status codes to the block layer dma-mapping: remove dma_alloc_noncoherent and dma_free_noncoherent i825xx: switch to switch to dma_alloc_attrs au1000_eth: switch to dma_alloc_attrs sgiseeq: switch to dma_alloc_attrs tty: hvcs: make ktermios const usb: core: usbport: fix "BUG: key not in .data" when lockdep is enabled staging: comedi: coding style fixes found by checkpatch.pl Staging: ks7010: Fix alignment should match open parenthesis. staging: rtl8723bs: hal: remove cast to void pointer staging: rtl8723bs: os_dep: remove cast to void pointer staging: rtl8723bs: core: remove cast to void pointer staging: rtl8188eu: remove unnecessary call to memset staging: rtlwifi: remove memset before memcpy staging: typec: tcpm: Switch to PORT_RESET instead of SNK_UNATTACHED staging: typec: tcpm: Do not send PING msgs in TCPM staging: typec: tcpm: typec: tcpm: Wait for CC debounce before PD excg staging: typec: tcpm: add cc change handling in src states staging: typec: tcpm: Consider port_type while determining unattached_state staging: typec: tcpm: Comply with TryWait.SNK State staging: typec: tcpm: Follow Try.SRC exit requirements staging: typec: tcpm: Check for Rp for tPDDebounce staging: typec: tcpm: Prevent TCPM from looping in SRC_TRYWAIT staging: typec: tcpm: Check for port type for Try.SRC/Try.SNK staging: typec: tcpm: set port type callback KVM: PPC: Book3S HV: POWER9 does not require secondary thread management hinic: don't build the module by default dmaengine: altera: Use macros instead of structs to describe the registers scsi: qlogicpti: fixup qlogicpti_reset() definition scsi: qedi: off by one in qedi_get_cmd_from_tid() drm/syncobj: Add a signal ioctl (v3) drm/syncobj: Add a reset ioctl (v3) bnxt_en: add code to query TC flower offload stats bnxt_en: add TC flower offload flow_alloc/free FW cmds bnxt_en: bnxt: add TC flower filter offload support bnxt_en: fix clearing devlink ptr from bnxt struct bnxt_en: Reduce default rings on multi-port cards. bnxt_en: Improve -ENOMEM logic in NAPI poll loop. bnxt: initialize board_info values with proper enums bnxt: Add PCIe device IDs for bcm58802/bcm58808 bnxt_en: assign CPU affinity hints to bnxt_en IRQs bnxt_en: Improve tx ring reservation logic. bnxt_en: Update firmware interface spec. to 1.8.1.4. ftgmac100: Support NCSI VLAN filtering when available net/ncsi: Configure VLAN tag filter net/ncsi: Fix several packet definitions net-next/hinic: fix comparison of a uint16_t type with -1 net-next/hinic: Fix MTU limitation staging: irda: add a TODO file. irda: move include/net/irda into staging subdirectory irda: move drivers/net/irda to drivers/staging/irda/drivers irda: move net/irda/ to drivers/staging/irda/net/ intel_pstate: convert to use acpi_match_platform_list() ACPI / blacklist: add acpi_match_platform_list() dpaa_eth: check allocation result Documentation: networking: add RSS information dpaa_eth: add NETIF_F_RXHASH dpaa_eth: enable Rx hashing control dpaa_eth: use multiple Rx frame queues fsl/fman: enable FMan Keygen fsl/fman: move struct fman to header file IB/rxe: Handle NETDEV_CHANGE events IB/rxe: Avoid ICRC errors by copying into the skb first IB/rxe: Another fix for broken receive queue draining IB/rxe: Remove unneeded initialization in prepare6() IB/rxe: Fix up rxe_qp_cleanup() IB/rxe: Add dst_clone() in prepare_ipv6_hdr() IB/rxe: Fix destination cache for IPv6 IB/rxe: Fix up the responder's find_resources() function IB/rxe: Remove dangling prototype IB/rxe: Disable completion upcalls when a CQ is destroyed IB/rxe: Move refcounting earlier in rxe_send() IB/rdmavt: Handle dereg of inuse MRs properly IB/qib: Convert qp_stats debugfs interface to use new iterator API IB/hfi1: Convert qp_stats debugfs interface to use new iterator API IB/hfi1: Convert hfi1_error_port_qps() to use new QP iterator IB/rdmavt: Add QP iterator API for QPs IB/hfi1: Use accessor to determine ring size IB/qib: Stricter bounds checking for copy to buffer IB/hif1: Remove static tracing from SDMA hot path IB/hfi1: Acquire QSFP cable information on loopback i40iw: make some structures const IB/hfi1: constify vm_operations_struct RDMA/bnxt_re: remove unnecessary call to memset IB/usnic: check for allocation failure IB/hfi1: Add opcode states to qp_stats IB/hfi1: Add received request info to qp_stats IB/hfi1: Fix whitespace alignment issue for MAD IB/hfi1: Move structure and MACRO definitions in user_sdma.c to user_sdma.h IB/hfi1: Move structure definitions from user_exp_rcv.c to user_exp_rcv.h IB/hfi1: Remove duplicate definitions of num_user_pages() function IB/hfi1: Fix the bail out code in pin_vector_pages() function IB/hfi1: Clean up pin_vector_pages() function IB/hfi1: Clean up user_sdma_send_pkts() function IB/hfi1: Clean up hfi1_user_exp_rcv_setup function IB/hfi1: Improve local kmem_cache_alloc performance IB/hfi1: Ratelimit prints from sdma_interrupt IB/qib: Stricter bounds checking for copy and array access IB/qib: Remove unnecessary memory allocation for boardname IB/{qib, hfi1}: Avoid flow control testing for RDMA write operation IB/rdmavt: Use rvt_put_swqe() in rvt_clear_mr_ref() net: ethernet: broadcom: Remove null check before kfree sched: sfq: drop packets after root qdisc lock is released sparc: leon: grpci1: constify of_device_id sparc: leon: grpci2: constify of_device_id mlxsw: spectrum_dpipe: Fix host table dump mlxsw: spectrum: compile-in dpipe support only if devlink is enabled sparc64: vcc: Check for IS_ERR() instead of NULL hv_sock: implements Hyper-V transport for Virtual Sockets (AF_VSOCK) selftests/bpf: check the instruction dumps are populated ACPI, APEI, EINJ: Subtract any matching Register Region from Trigger resources bpf: fix oops on allocation failure cpufreq: imx6q: Fix imx6sx low frequency support cpufreq: speedstep-lib: make several arrays static, makes code smaller ARC: [plat-eznps] handle extra aux regs #2: kernel/entry exit ARC: [plat-eznps] handle extra aux regs #1: save/restore on context switch ARC: [plat-eznps] avoid toggling of DPC register ARC: [plat-eznps] Update the init sequence of aux regs per cpu. ARC: [plat-eznps] new command line argument for HW scheduler at MTM ARC: set boot print log level to PR_INFO ARC: [plat-eznps] Handle user memory error same in simulation and silicon ARC: [plat-eznps] use schd.wft instruction instead of sleep at idle task ARC: create cpu specific version of arch_cpu_idle() ARC: [plat-eznps] spinlock aware for MTM ARC: spinlock: Document the EX based spin_unlock ARC: [plat-eznps] disabled stall counter due to a HW bug ARC: [plat-eznps] Fix TLB Errata ARC: [plat-eznps] typo fix at Kconfig ARC: typos fix in kernel/entry-compact.S ARC: typo fix in mm/fault.c net: Add comment that early_demux can change via sysctl PM: docs: Delete the obsolete states.txt document PM: docs: Describe high-level PM strategies and sleep states xen-netback: update ubuf_info initialization to anonymous union samples/bpf: extend test_tunnel_bpf.sh with ERSPAN gre: add collect_md mode to ERSPAN tunnel gre: refactor the gre_fb_xmit PCI: iproc: Work around Stingray CRS defects PCI: iproc: Factor out memory-mapped config access address calculation selinux: constify nf_hook_ops Revert "ipv4: make net_protocol const" nbd: make device_attribute const null_blk: use available 'dev' in nullb_device_power_store() block/nullb: delete unnecessary memory free drm/syncobj: Add a syncobj_array_find helper drm/syncobj: Allow wait for submit and signal behavior (v5) drm/syncobj: Add a CREATE_SIGNALED flag drm/syncobj: Add a callback mechanism for replace_fence (v3) drm/syncobj: add sync obj wait interface. (v8) i915: Use drm_syncobj_fence_get drm/syncobj: Add a race-free drm_syncobj_fence_get helper (v2) drm/syncobj: Rename fence_get to find_fence nvme: honor RTD3 Entry Latency for shutdowns nvme: fix uninitialized prp2 value on small transfers nvme-rdma: Use unlikely macro in the fast path nvmet: use memcpy_and_pad for identify sn/fr string.h: add memcpy_and_pad() nvmet-fc: simplify sg list handling nvme-fc: Reattach to localports on re-registration nvme: rename AMS symbolic constants to fit specification nvme: add symbolic constants for CC identifiers nvme: fix identify namespace logging nvme-fabrics: log a warning if hostid is invalid nvme-rdma: call ops->reg_read64 instead of nvmf_reg_read64 nvme-rdma: cleanup error path in controller reset nvme-rdma: introduce nvme_rdma_start_queue nvme-rdma: rename nvme_rdma_init_queue to nvme_rdma_alloc_queue nvme-rdma: stop queues instead of simply flipping their state nvme-rdma: introduce configure/destroy io queues nvme-rdma: reuse configure/destroy_admin_queue nvme-rdma: don't free tagset on resets perf trace beauty: Beautify pkey_{alloc,free,mprotect} arguments tools headers: Sync cpu features kernel ABI headers with tooling headers perf tools: Pass full path of FEATURES_DUMP perf tools: Robustify detection of clang binary tools lib: Allow external definition of CC, AR and LD perf tools: Allow external definition of flex and bison binary names tools build tests: Don't hardcode gcc name perf report: Group stat values on global event id perf values: Zero value buffers perf values: Fix allocation check perf values: Fix thread index bug perf report: Add dump_read function nvme-rdma: disable the controller on resets nvme-rdma: move tagset allocation to a dedicated routine nvme: Add admin_tagset pointer to nvme_ctrl nvme-rdma: move nvme_rdma_configure_admin_queue code location nvme-rdma: remove NVME_RDMA_MAX_SEGMENT_SIZE nvmet-fcloop: remove ALL_OPTS define nvmet: fix the return error code of target if host is not allowed nvmet: use NVME_NSID_ALL nvme: add support for NVMe 1.3 Timestamp Feature nvme: define NVME_NSID_ALL nvme: add support for FW activation without reset drm: kirin: Add mode_valid logic to avoid mode clocks we can't generate pty: show associative slave of ptmx in fdinfo tty: n_gsm: Add compat_ioctl tty: hvcs: constify vio_device_id tty: hvc_vio: constify vio_device_id tty: mips_ejtag_fdc: constify mips_cdmm_device_id Introduce 8250_men_mcb mcb: introduce mcb_get_resource() serial: imx: Avoid post-PIO cleanup if TX DMA is started tty: serial: imx: disable irq after suspend serial: 8250_uniphier: add suspend/resume support serial: 8250_uniphier: use CHAR register for canary to detect power-off serial: 8250_uniphier: fix serial port index in private data serial: 8250: of: Add new port type for MediaTek BTIF controller on MT7622/23 SoC dt-bindings: serial: 8250: Add MediaTek BTIF controller bindings serial: earlycon: Only try fdt when specify 'earlycon' exactly serial: mux: constify uart_ops structures serial: sunsu: constify uart_ops structures serial: mpc52xx: constify uart_ops structures serial: m32r_sio: constify uart_ops structures serial: cpm_uart: constify uart_ops structures serial: apbuart: constify uart_ops structures serial: sunsab: constify uart_ops structures serial: 21285: constify uart_ops structures serial: uuc_uart: constify uart_ops structures tty: mux: constify parisc_device_id tty: 8250: constify parisc_device_id serial: 8250_of: Add basic PM runtime support serial: 8250_of: use of_property_read_bool() serial: 8250: Use hrtimers for rs485 delays serial: core: Consider rs485 settings to drive RTS tty: serial: 8250_mtk: Use PTR_ERR_OR_ZERO dt-bindings: serial: sh-sci: Add support for r8a77995 (H)SCIF serial: sh-sci: use of_property_read_bool() serial: Fix port type numbering for TI DA8xx serial: Remove unused port type serial: pch_uart: Make port type explicit serial: core: remove unneeded irq_wake flag serial: stm32-usart: Avoid using irq_wake flag serial: st-asc: Avoid using irq_wake flag serial: fsl_lpuart: Avoid using irq_wake flag tty: serial: msm: Move request_irq to the end of startup serial: pch_uart: Remove unneeded NULL check tty: serial: sprd: fix error return code in sprd_probe() serial: meson: constify uart_ops structures serial: owl: constify uart_ops structures serial: stm32: fix pio transmit timeout serial: pl011: constify amba_id serial: pl010: constify amba_id tty: amba-pl011: constify vendor_data structures PCI: rockchip: Idle inactive PHY(s) phy: rockchip-pcie: Reconstruct driver to support per-lane PHYs PCI: rockchip: Add per-lane PHY support RDS: make rhashtable_params const ipv4: make net_protocol const bridge: make ebt_table const bpf: test_maps add sockmap stress test bpf: sockmap requires STREAM_PARSER add Kconfig entry bpf: sockmap indicate sock events to listeners bpf: harden sockmap program attach to ensure correct map type bpf: more SK_SKB selftests bpf: additional sockmap self tests bpf: sockmap add missing rcu_read_(un)lock in smap_data_ready bpf: sockmap, remove STRPARSER map_flags and add multi-map support bpf: convert sockmap field attach_bpf_fd2 to type ata: mediatek: add support for MediaTek SATA controller pata_octeon_cf: use of_property_read_{bool|u32}() Input: PS/2 gpio bit banging driver for serio bus Input: xen-kbdfront - enable auto repeat for xen keyboard frontend driver block: fix warning when I/O elevator is changed as request_queue is being removed power: supply: core: Delete two error messages for a failed memory allocation in power_supply_check_supplies() power: supply: make device_attribute const dmaengine: ti-dma-crossbar: Fix dra7 reserve function power: supply: max17042_battery: Fix ACPI interrupt issues power: supply: max17042_battery: Add support for ACPI enumeration netfilter: rt: account for tcp header size too netfilter: conntrack: remove unused code in nf_conntrack_proto_generic.c netfilter: Remove NFDEBUG() i2c: aspeed: Retain delay/setup/hold values when configuring bus frequency Do not disable driver and bus shutdown hook when class shutdown hook is set. block, scheduler: convert xxx_var_store to void char: virtio: constify attribute_group structures. Documentation/ABI: document the nvmem sysfs files netfilter: conntrack: don't log "invalid" icmpv6 connections drm/vmwgfx: Bump the version for fence FD support drm/vmwgfx: Add export fence to file descriptor support drm/vmwgfx: Add support for imported Fence File Descriptor drm/vmwgfx: Prepare to support fence fd base: topology: constify attribute_group structures. base: Convert to using %pOF instead of full_name dm ioctl: constify ioctl lookup table dm: constify argument arrays dm integrity: count and display checksum failures dm integrity: optimize writing dm-bufio buffers that are partially changed lkdtm: fix spelling mistake: "incremeted" -> "incremented" netfilter: core: batch nf_unregister_net_hooks synchronize_net calls netfilter: debug: check for sorted array netfilter: convert hook list to an array netfilter: fix a few (harmless) sparse warnings dmaengine: pl330: constify amba_id dmaengine: pl08x: constify amba_id drm/vmwgfx: Fix incorrect command header offset at restart drm/vmwgfx: Support the NOP_ERROR command drm/vmwgfx: Restart command buffers after errors drm/vmwgfx: Move irq bottom half processing to threads drm/vmwgfx: Don't use drm_irq_[un]install dt-bindings: i2c: eeprom: Document vendor to be used and deprecated ones perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file nvmem: include linux/err.h from header nvmem: core: remove unneeded NULL check nvmem: core: Add nvmem_cell_read_u32 nvmem: Convert to using %pOF instead of full_name nvmem: lpc18xx-eeprom: explicitly request exclusive reset control i2c: i801: Restore the presence state of P2SB PCI device after reading BAR parport: use release_mem_region instead of release_resource parport: cleanup statics initialization to NULL or 0 parport_pc: use pr_cont drivers: w1: Add 1w slave driver for DS28E05 EEPROM drivers: w1: Extend 1W master driver DS2482 with module option to support PPM/SPU/1WS features w1: ds2438: make several functions static w1: ds1wm: add messages to make incorporation in mfd-drivers easier w1: ds1wm: silence interrupts on HW before claiming the interrupt w1: ds1wm: add level interrupt modes w1: ds1wm: make endian clean and use standard io memory accessors w1: ds1wm: fix register offset (bus shift) calculation w1: ds2490: constify usb_device_id and fix space before '[' error char: tlclk: constify attribute_group structures. w1: constify attribute_group structures. drivers/fsi/scom: Remove reset before every putscom drivers/fsi: add const to bin_attribute structures arm64: dts: uniphier: add PXs3 SoC support mux: zap mux- prefix from the source files mux: include compiler.h from mux/consumer.h mux: convert to using %pOF instead of full_name applicom: constify pci_device_id. char: xilinx_hwicap: Fix warnings in the driver char: xilinx_hwicap: Fix kernel doc warnings ARM: dts: uniphier: add pinctrl groups of ethernet phy mode ARM: dts: uniphier: fix size of sdctrl nodes ARM: dts: uniphier: add AIDET nodes arm64: dts: uniphier: fix size of sdctrl node arm64: dts: uniphier: add AIDET nodes vmci: fix duplicated code for different branches misc: apds9802als: constify i2c_device_id misc: hmc6352: constify i2c_device_id misc: isl29020: constify i2c_device_id misc: Convert to using %pOF instead of full_name misc: apds9802als: constify attribute_group structures. misc: apds990x: constify attribute_group structures. misc: bh1770glc: constify attribute_group structures. misc: isl29020: constify attribute_group structures. misc: lis3lv02d: constify attribute_group structures. misc: ti-st: constify attribute_group structures. MISC: add const to bin_attribute structures misc: pch_phub: constify pci_device_id. misc: hpilo: constify pci_device_id. misc: tifm: constify pci_device_id. misc: ioc4: constify pci_device_id. misc: eeprom_93xx46: Include <linux/gpio/consumer.h> misc: eeprom_93xx46: Simplify the usage of gpiod API firmware: vpd: use memunmap instead of iounmap kernfs: Clarify lockdep name for kn->count android: binder: Add shrinker tracepoints android: binder: Add global lru shrinker to binder android: binder: Move buffer out of area shared with user space android: binder: Add allocator selftest android: binder: Refactor prev and next buffer into a helper function raid5-ppl: Recovery support for multiple partial parity logs md: Runtime support for multiple ppls fbdev: uvesafb: remove DRIVER_ATTR() usage xen: xen-pciback: remove DRIVER_ATTR() usage driver core: Document struct device:dma_ops KVM: s390: Support Configuration z/Architecture Mode drivers/fmc: carrier can program FPGA on registration drivers/fmc: change registration prototype drivers/fmc: The only way to dump the SDB is from debugfs drivers/fmc: hide fmc operations behind helpers drivers/fmc: remove unused variable dm rq: do not update rq partially in each ending bio thunderbolt: Fix reset response_type thunderbolt: Allow clearing the key thunderbolt: Make key root-only accessible thunderbolt: Remove superfluous check mod_devicetable: Remove excess description from structured comment tty: undo export of tty_open_by_driver staging: speakup: use tty_kopen and tty_kclose tty: resolve tty contention between kernel and user space coresight: constify amba_id coresight: etb10: constify amba_id coresight: etm3x: constify amba_id coresight: etm4x: constify amba_id coresight: funnel: constify amba_id coresight: replicator: constify amba_id coresight: stm: constify amba_id coresight: tmc: constify amba_id coresight: tpiu: constify amba_id coresight: STM: Clean up __iomem type usage coresight: Add support for Coresight SoC 600 components coresight tmc: Add support for Coresight SoC 600 TMC coresight tmc: Support for save-restore in ETR coresight tmc etr: Setup AXI cache encoding for read transfers coresight tmc etr: Cleanup AXICTL register handling coresight tmc etr: Detect address width at runtime coresight tmc: Detect support for scatter gather coresight tmc etr: Add capabilitiy information coresight tmc: Handle configuration types properly coresight replicator: Expose replicator management registers coresight tmc: Expose DBA and AXICTL coresight tmc: Add helpers for accessing 64bit registers coresight: Use the new helper for defining registers coresight: Add support for reading 64bit registers coresight replicator: Cleanup programmable replicator naming coresight: etm4x: Adds trace return stack option programming for ETMv4. coresight: ptm: Adds trace return stack option programming for PTM. coresight: pmu: Adds return stack option to perf coresight pmu hwtracing: coresight: constify attribute_group structures. coresight: etm3x: Set synchronisation frequencty to TRM default coresight: etb10: Move etb_disable_hw() outside of lock coresight: Add barrier packet for synchronisation coresight: etb10: Remove useless conversion to LE coresight: Correct buffer lost increment perf record: Set read_format for inherit_stat perf c2c: Fix remote HITM detection for Skylake perf tools: Fix static build with newer toolchains perf stat: Fix path to PMU formats in documentation dm rq: make dm-sq requeuing behavior consistent with dm-mq behavior dm mpath: complain about unsupported __multipath_map_bio() return values dm mpath: avoid that building with W=1 causes gcc 7 to complain about fall-through powerpc/configs/6xx: Drop removed CONFIG_USB_LED powerpc/configs/6xx: Drop no longer selectable CONFIG_BT_HCIUART_LL powerpc/configs/c2k: Switch CONFIG_GEN_RTC from =m to =y powerpc/configs/6xx: Switch CONFIG_USB_EHCI_FSL to =m powerpc/configs/6xx: Drop no longer needed CONFIG_BT_HCIUART_H4 powerpc/configs/6xx: Drop no longer needed CONFIG_NETFILTER_XT_MATCH_SOCKET powerpc/configs/6xx: Reinstate CONFIG_CPU_FREQ_STAT powerpc/configs/6xx: Drop no longer needed CONFIG_NF_CONNTRACK_PROC_COMPAT powerpc/configs/6xx: Drop removed CONFIG_BLK_DEV_HD powerpc/configs/6xx: Clean up duplicate CONFIG_EXT4 values powerpc/configs/6xx: Drop no longer needed CONFIG_TIMER_STATS powerpc/configs/6xx: Turn CONFIG_DRM_RADEON back on powerpc/configs/mpc5200: Drop no longer needed CONFIG_FB powerpc/configs: Update for CONFIG_INPUT_MOUSEDEV=n powerpc/configs: Drop removed CONFIG_LOGFS powerpc/configs: Turn CONFIG_R128 back in pmac32_defconfig powerpc/configs: Drop no longer needed CONFIG_LIBCRC32C powerpc/configs: Drop unnecessary CONFIG_EDAC from ppc64e powerpc/configs: Drop no longer needed CONFIG_SCSI powerpc/configs: Drop no longer needed CONFIG_IPV6 powerpc/configs: Add CONFIG_RAS now required for CONFIG_EDAC powerpc/configs: Drop no longer needed CONFIG_AUDITSYSCALL powerpc/configs: Drop CONFIG_SERIAL_TXX9_* from cell/ppc64 powerpc/configs: Drop MEMORY_HOTREMOVE from ppc64/cell powerpc/configs: Drop unnecessary CONFIG_POWERNV_OP_PANEL powerpc/configs: Drop no longer needed PCI_MSI on powernv powerpc/configs: Drop no longer needed CONFIG_SMP for pseries/ppc64/powernv powerpc/configs: Drop unnecessary CONFIG_UPROBE_EVENT powerpc/configs: Drop unnecessary CONFIG_NUMA_BALANCING_DEFAULT_ENABLED powerpc/configs: Drop no longer needed CONFIG_DEVPTS_MULTIPLE_INSTANCES powerpc/configs: Drop no longer needed CONFIG_CRYPTO_GCM powerpc/configs: Drop no longer needed CONFIG_CRYPTO_NULL in g5 / c2k powerpc/configs: Drop no longer needed CONFIG_CRYPTO_NULL powerpc/configs: Drop no longer needed CONFIG_CRYPTO_SHA256 powerpc/configs: Drop no longer needed CONFIG_CRYPTO_ECB powerpc/configs: Drop no longer needed CONFIG_CRYPTO_HMAC powerpc/configs: Drop no longer needed CONFIG_CRYPTO_DEV_VMX_ENCRYPT powerpc/configs: Update for CONFIG_NF_CT_PROTO_(SCTP|UDPLITE)=y powerpc/configs: Update for CONFIG_FIXED_PHY being selected by CONFIG_OF_MDIO powerpc/configs: Update for CONFIG_DEBUG_FS being selected via CONFIG_RCU_TRACE powerpc/configs: Drop no longer needed CONFIG_DEVKMEM powerpc/configs: Drop no longer needed CONFIG_FHANDLE powerpc/configs: Explicitly drop CONFIG_INPUT_MOUSEDEV powerpc/configs: Drop unneeded CONFIG_CRYPTO_ANSI_CPRNG powerpc/configs: Update for symbol movement only powerpc/oops: Line up NIP & MSR with other rows powerpc/oops: Print CR/XER on same line as MSR powerpc/oops: Use IS_ENABLED() for oops markers powerpc/oops: Print the kernel's endian in the oops powerpc/oops: Fix the oops markers to use pr_cont() powerpc/powernv: Fix build error in opal-imc.c when NUMA=n Add documentation for the powerpc memtrace debugfs files spmi: pmic-arb: Move the ownership check to irq_chip callback spmi: Convert to using %pOF instead of full_name spmi: pmic-arb: Remove checking opc value not less than 0 spmi: pmic-arb: add support for HW version 5 spmi: pmic-arb: fix a possible null pointer dereference spmi: pmic-arb: return __iomem pointer instead of offset spmi: pmic-arb: use irq_chip callback to set spmi irq wakeup capability spmi: pmic-arb: return the value instead of passing by pointer spmi: pmic-arb: replace the writel_relaxed with __raw_writel spmi: pmic-arb: fix memory allocation for mapping_table spmi: pmic-arb: optimize qpnpint_irq_set_type function spmi: pmic-arb: clean up pmic_arb_find_apid function spmi: pmic-arb: rename pa_xx to pmic_arb_xx and other cleanup spmi: pmic-arb: remove the read/write access checks dmaengine: bcm-sba-raid: Remove redundant SBA_REQUEST_STATE_COMPLETED dmaengine: bcm-sba-raid: Explicitly ACK mailbox message after sending dmaengine: bcm-sba-raid: Add debugfs support dmaengine: bcm-sba-raid: Remove redundant SBA_REQUEST_STATE_RECEIVED dmaengine: bcm-sba-raid: Re-factor sba_process_deferred_requests() dmaengine: bcm-sba-raid: Pre-ack async tx descriptor dmaengine: bcm-sba-raid: Peek mbox when we have no free requests dmaengine: bcm-sba-raid: Alloc resources before registering DMA device dmaengine: bcm-sba-raid: Improve sba_issue_pending() run duration dmaengine: bcm-sba-raid: Increase number of free sba_request dmaengine: bcm-sba-raid: Allow arbitrary number free sba_request dmaengine: bcm-sba-raid: Remove reqs_free_count from sba_device dmaengine: bcm-sba-raid: Remove redundant resp_dma from sba_request dmaengine: bcm-sba-raid: Remove redundant next_count from sba_request dmaengine: bcm-sba-raid: Common flags for sba_request state and fence dmaengine: bcm-sba-raid: Reduce locking context in sba_alloc_request() dmaengine: bcm-sba-raid: Minor improvments in comments dmaengine: qcom: bam_dma: add command descriptor flag dmaengine: qcom: bam_dma: wrapper functions for command descriptor dmaengine: add DMA_PREP_CMD for non-Data descriptors. mei: make device_type const usb: chipidea: usb2: check memory allocation failure usb: Add device quirk for Logitech HD Pro Webcam C920-C usb: misc: lvstest: add entry to place port in compliance mode usb: xhci: Support enabling of compliance mode for xhci 1.1 usb:xhci:Fix regression when ATI chipsets detected usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard usb: gadget: make snd_pcm_hardware const usb: common: use of_property_read_bool() USB: core: constify vm_operations_struct iommu/amd: Rename a few flush functions iommu/amd: Check if domain is NULL in get_domain() and return -EBUSY iommu/mediatek: Fix a build warning of BIT(32) in ARM iommu/mediatek: Fix a build fail of m4u_type iommu: qcom: annotate PM functions as __maybe_unused usb: misc: ftdi-elan: fix duplicated code for different branches USB: core: Avoid race of async_completed() w/ usbdev_release() usb: make device_type const Revert "ARM: dts: sun8i: h3: Enable dwmac-sun8i on the Beelink X2" USB: musb: dsps: add explicit runtime resume at suspend USB: musb: fix external abort on suspend usb: musb: fix endpoint fifo allocation for 4KB fifo memory usb: musb: print an error message when high bandwidth is unsupported usb: musb: print an error message when hwep alloc failed usb: musb: add helper function musb_ep_xfertype_string Revert "staging: Fix build issues with new binder API" staging: bcm2835-camera: make video_device const staging: vboxvideo: Use fbdev helpers where possible staging: typec: Add __printf verification staging: unisys: visorinput: Add module_driver driver registration staging: r8822be: remove some dead code staging: pi433: fix interrupt handler signatures staging: olpc_dcon: remove pointless debug printk in dcon_freeze_store() staging: r8822be: fix null pointer dereference with a null driver_adapter staging: r8822be: fix memory leak of eeprom_map on error exit return staging: lustre: obdclass: fix checking for obd_init_checks() staging: lustre: obdclass: return -EFAULT if copy_from_user() fails staging: lustre: obdclass: return -EFAULT if copy_to_user() fails staging: rtl8723bs: remove memset before memcpy staging: rtlwifi: Improve debugging by using debugfs staging: rtlwifi: check for array overflow staging:rtl8188eu:core Fix add spaces around & staging:rtl8188eu:core Fix coding style Issues remoteproc: st: explicitly request exclusive reset control remoteproc: qcom: explicitly request exclusive reset control remoteproc/keystone: explicitly request exclusive reset control fput: Don't reinvent the wheel but use existing llist API namespace.c: Don't reinvent the wheel but use existing llist API dmaengine: remove BUG_ON while registering devices PM / devfreq: Fix memory leak when fail to register device PM / devfreq: Add dependency on PM_OPP PM / devfreq: Move private devfreq_update_stats() into devfreq m68knommu: remove dead code m68k: allow NULL clock for clk_get_rate PM / devfreq: Convert to using %pOF instead of full_name ARM: dts: rk3228-evb: Fix the compiling error i40e/i40evf: avoid dynamic ITR updates when polling or low packet rate i40e/i40evf: remove ULTRA latency mode i40e: invert logic for checking incorrect cpu vs irq affinity i40e: initialize our affinity_mask based on cpu_possible_mask i40e: move enabling icr0 into i40e_update_enable_itr i40e: remove workaround for resetting XPS i40e: Fix for unused value issue found by static analysis i40e: 25G FEC status improvements i40e/i40evf: support for VF VLAN tag stripping control i40e: force VMDQ device name truncation i40evf: fix possible snprintf truncation of q_vector->name i40e: Use correct flag to enable egress traffic for unicast promisc i40e: prevent snprintf format specifier truncation i40e: Store the requested FEC information i40e: Update state variable for adminq subtask media: max2175: Propagate the real error on devm_clk_get() failure media: cx23885: Explicitly list Hauppauge model numbers of HVR-4400 and HVR-5500 media: i2c: adv748x: Export I2C device table entries as module aliases media: staging/imx: always select VIDEOBUF2_DMA_CONTIG media: dw2102: make dvb_usb_device_description structures const media: mn88473: reset stream ID reg if no PLP given media: mn88472: reset stream ID reg if no PLP given media: dvb_frontend: initialize variable s with FE_NONE instead of 0 media: docs-next: update the fe_status documentation for FE_NONE media: dvb_frontend: ensure that inital front end status initialized staging: rtl8723bs: remove null check before kfree staging: r8822be: remove unnecessary call to memset staging: most: hdm_usb: Driver registration with module_driver macro regulator: rn5t618: add RC5T619 PMIC support MAINTAINERS: drop entry for Blackfin I2C and Sonic's email blackfin: merge the two TWI header files i2c: davinci: Preserve return value of devm_clk_get i2c: mediatek: Add i2c compatible for MediaTek MT7622 dt-bindings: i2c: Add MediaTek MT7622 i2c binding dt-bindings: i2c: modify information formats media: dvbproperty.rst: minor editorial changes media: dvbproperty.rst: improve notes about legacy frontend calls media: frontend.rst: mention MMT at the documentation media: frontend.rst: convert SEC note into footnote media: frontend.rst: fix supported delivery systems media: dvb/intro.rst: Use verbatim font where needed media: usbvision: Improve a size determination in usbvision_alloc() media: usbvision: Adjust eight checks for null pointers media: usbvision: Delete an error message for a failed memory allocation in usbvision_probe() media: Staging: media: radio-bcm2048: make video_device const media: radio: make video_device const media: dib8000: remove some bogus dead code media: dib9000: delete some unused broken code media: staging: omap4iss: make v4l2_file_operations const media: usbtv: make v4l2_file_operations const media: cx18: make v4l2_file_operations const media: usb: make video_device const media: pci: make video_device const media: platform: make video_device const media: au0828: fix RC_CORE dependency ASoC: davinci-mcasp: check memory allocation failure media: dib0090: fix duplicated code for different branches media: mx2_emmaprp: Check for platform_get_irq() error media: docs-rst: media: Document broken frame handling in stream stop for CSI-2 media: dvb-frontends/stv0367: remove QAM_AUTO from ddb_fe_ops media: imx: use setup_timer media: mxl111sf: Fix potential null pointer dereference media: au0828: fix unbalanced lock/unlock in au0828_usb_probe media: dvb-usb: Add memory free on error path in dw2102_probe() media: dvb-frontends/stv0910: change minsymrate to 100Ksyms/s media: staging/cxd2099: Add module parameter for buffer mode media: ddbridge: fix sparse warnings media: ddbridge: fix teardown/deregistration order in ddb_input_detach() media: dvb-frontends/stv0910: release lock on gate_ctrl() failure media: cx231xx: fix use-after-free when unregistering the i2c_client for the dvb demod media: cx23885: Fix use-after-free when unregistering the i2c_client for the dvb demod media: staging: atomisp: fix bounds checking in mt9m114_s_exposure_selection() media: staging: media: atomisp: ap1302: Remove FSF postal address media: staging: atomisp: imx: remove dead code media: arm: dts: omap3: N9/N950: Add AS3645A camera flash media: leds: as3645a: Add LED flash class driver media: dt: bindings: Document DT bindings for Analog devices as3645a media: v4l2-flash-led-class: Document v4l2_flash_init() references media: v4l2-flash-led-class: Create separate sub-devices for indicators media: staging: greybus: light: fix memory leak in v4l2 register media: uapi book: Fix a few Sphinx warnings media: smiapp: check memory allocation failure media: omap3isp: fix uninitialized variable use media: fix pdf build with Spinx 1.6 swap: Remove obsolete sentence sphinx.rst: Allow Sphinx version 1.6 at the docs docs-rst: fix verbatim font size on tables media: qcom: don't go past the array media: qcom: mark long long consts as such media: camss: Add abbreviations explanation media: doc: media/v4l-drivers/qcom_camss: Add abbreviations explanation media: doc: media/v4l-drivers: Qualcomm Camera Subsystem - Media graph media: camss: Use optimal clock frequency rates media: doc: media/v4l-drivers: Qualcomm Camera Subsystem - Scale and crop media: camss: vfe: Configure crop module in VFE media: camss: vfe: Add interface for cropping media: camss: vfe: Configure scaler module in VFE media: camss: vfe: Add interface for scaling media: camss: vfe: Support for frame padding media: doc: media/v4l-drivers: Qualcomm Camera Subsystem - PIX Interface media: camss: vfe: Format conversion support using PIX interface media: camss: Enable building media: camms: Add core files media: camss: Add files which handle the video device nodes media: camss: Add VFE files media: camss: Add ISPIF files media: camss: Add CSID files media: camss: Add CSIPHY files media: doc: media/v4l-drivers: Add Qualcomm Camera Subsystem driver document media: MAINTAINERS: Add Qualcomm Camera subsystem driver media: dt-bindings: media: Binding document for Qualcomm Camera subsystem driver media: v4l: Add packed Bayer raw12 pixel formats media: venus: fix copy/paste error in return_buf_error media: em28xx: calculate left volume level correctly media: platform: constify videobuf_queue_ops structures media: pci: constify videobuf_queue_ops structures media: saa7146: constify videobuf_queue_ops structures media: cx18: Make i2c_algo_bit_data const media: bt8xx: Make i2c_algo_bit_data const media: venus: venc: set correct resolution on compressed stream media: vb2: add bidirectional flag in vb2_queue media: stm32-dcmi: g_/s_selection crop support media: stm32-dcmi: cleanup variable/fields namings media: stm32-dcmi: revisit control register handling media: stm32-dcmi: catch dma submission error media: v4l: fwnode: Use a less clash-prone name for MAX_DATA_LANES macro media: v4l: fwnode: The clock lane is the first lane in lane_polarities media: v4l: fwnode: Fix lane-polarities property parsing media: dw9714: Remove ACPI match tables, convert to use probe_new media: dw9714: Add Devicetree support media: dt-bindings: Add bindings for Dongwoon DW9714 voice coil media: venus: venc: drop VP9 codec support media: venus: use helper function to check supported codecs media: venus: add helper to check supported codecs media: venus: fill missing video_device name media: venus: mark venc and vdec PM functions as __maybe_unused media: ths8200: constify i2c_device_id media: tc358743: constify i2c_device_id media: saa7127: constify i2c_device_id media: adv7842: constify i2c_device_id media: adv7511: constify i2c_device_id media: ad9389b: constify i2c_device_id media: usb: make i2c_adapter const media: radio-usb-si4713: make i2c_adapter const media: pci: make i2c_adapter const media: i2c: make device_type const media: usb: make i2c_algorithm const media: stm32-cec: use CEC_CAP_DEFAULTS media: stih-cec: use CEC_CAP_DEFAULTS media: vivid: fix incorrect HDMI input/output CEC logging media: vivid: add CEC pin monitoring emulation media: cec: replace pin->cur_value by adap->cec_pin_is_high media: cec: ensure that adap_enable(false) is called from cec_delete_adapter() kvm/x86: Avoid clearing the C-bit in rsvd_bits() efi/bgrt: Use efi_mem_type() efi: Move efi_mem_type() to common code efi/reboot: Make function pointer orig_pm_power_off static efi/random: Increase size of firmware supplied randomness efi/libstub: Enable reset attack mitigation net: mvpp2: fix the packet size configuration for 10G nfp: add basic SR-IOV ndo functions to representors nfp: add basic SR-IOV ndo functions tcp: fix hang in tcp_sendpage_locked() net_sched: kill u32_node pointer in Qdisc net_sched: remove tc class reference counting net_sched: introduce tclass_del_notify() net_sched: get rid of more forward declarations hinic: skb_pad() frees on error ipv6: sr: implement additional seg6local actions ipv6: sr: add helper functions for seg6local ipv6: sr: enforce IPv6 packets for seg6local lwt ipv6: sr: add support for encapsulation of L2 frames ipv6: sr: add support for ip4ip6 encapsulation GFS2: Fix up some sparse warnings scsi: lpfc: avoid false-positive gcc-8 warning scsi: lpfc: avoid an unused function warning scsi: cxlflash: Fix vlun resize failure in the shrink path scsi: cxlflash: Avoid double mutex unlock scsi: cxlflash: Remove unnecessary existence check dt-bindings: usb: musb: Grammar s/the/to/, s/is/are/ i40e: synchronize nvmupdate command and adminq subtask i40e: prevent changing ITR if adaptive-rx/tx enabled i40e: use cpumask_copy instead of direct assignment i40evf: use netdev variable in reset task i40e/i40evf: rename vf_offload_flags to vf_cap_flags in struct virtchnl_vf_resource i40e: move check for avoiding VID=0 filters into i40e_vsi_add_vlan i40e/i40evf: use cmpxchg64 when updating private flags in ethtool i40e: Detect ATR HW Evict NVM issue and disable the feature i40e: remove workaround for Open Firmware MAC address i40e: separate hw_features from runtime changing flags i40e: Fix a bug with VMDq RSS queue allocation i40evf: prevent VF close returning before state transitions to DOWN i40e/i40evf: adjust packet size to account for double VLANs scsi: ibmvfc: ibmvscsi: ibmvscsi_tgt: constify vio_device_id scsi: Fix the kerneldoc for scsi_initialize_rq() scsi: ses: Fix racy cleanup of /sys in remove_dev() scsi: mptsas: Fixup device hotplug for VMWare ESXi skd: Remove SKD_ID_INCR skd: Make it easier for static analyzers to analyze skd_free_disk() skd: Inline skd_end_request() skd: Rename skd_softirq_done() into skd_complete_rq() scsi: make device_type const scsi: sd: remove duplicated setting of gd->minors scsi: eata: remove 'arg_done' from eata2x_eh_host_reset() scsi: visorhba: sanitze private device data allocation scsi: megaraid_mbox: drop duplicate bus reset and device reset function scsi: bnx2fc: remove obsolete bnx2fc_eh_host_reset() definition scsi: 53c700: move bus reset to host reset scsi: aha152x: drop host reset scsi: nsp32: drop bus reset scsi: qedf: drop bus reset handler scsi: ppa: drop duplicate bus_reset handler scsi: imm: drop duplicate bus_reset handler scsi: qlogicfas: move bus_reset to host_reset scsi: NCR5380: Move bus reset to host reset scsi: acornscsi: move bus reset to host reset scsi: qlogicpti: move bus reset to host reset scsi: rtsx: drop bus reset function scsi: drop bus reset for wd33c93-compatible boards scsi: fdomain: move bus reset to host reset scsi: hptiop: Simplify reset handling scsi: bfa: move bus reset to target reset scsi: libsas: move bus_reset_handler() to target_reset_handler() scsi: uas: move eh_bus_reset_handler to eh_device_reset_handler scsi: fnic: do not call host reset from command abort scsi: fc_fcp: do not call fc_block_scsi_eh() from host reset scsi: ibmvfc: Do not call fc_block_scsi_eh() on host reset scsi: mptfc: Do not call fc_block_scsi_eh() on host reset scsi: fix comment in scsi_device_set_state() scsi: iscsi_tcp: Remove a set-but-not-used variable scsi: scsi_debug: Remove a set-but-not-used variable scsi: scsi_transport_srp: Suppress a W=1 compiler warning scsi: scsi_transport_sas: Check kzalloc() return value scsi: libsas: Annotate fall-through in a switch statement scsi: libsas: Remove a set-but-not-used variable scsi: libiscsi: Fix indentation scsi: sg: Fix type of last blk_trace_setup() argument scsi: sd: Remove a useless comparison scsi: sd: Fix indentation scsi: sd: sr: Convert two assignments into warning statements scsi: Use blk_mq_rq_to_pdu() to convert a request to a SCSI command pointer scsi: Document which queue type a function is intended for scsi: Convert a strncmp() call into a strcmp() call scsi: Suppress gcc 7 fall-through warnings reported with W=1 scsi: Avoid sign extension of scsi_device.type scsi: Remove an obsolete function declaration block/nullb: fix NULL dereference futex: Remove duplicated code and fix undefined behaviour genirq/proc: Avoid uninitalized variable warning irqdomain: Prevent potential NULL pointer dereference in irq_domain_push_irq() genirq: Fix semicolon.cocci warnings x86/intel_rdt: Turn off most RDT features on Skylake x86/intel_rdt: Add command line options for resource director technology x86/intel_rdt: Move special case code for Haswell to a quirk function blkcg: avoid free blkcg_root when failed to alloc blkcg policy null_blk: update email adress md/raid0: attach correct cgroup info in bio lib/raid6: align AVX512 constants to 512 bits, not bytes raid5: remove raid5_build_block md/r5cache: call mddev_lock/unlock() in r5c_journal_mode_show md: replace seq_release_private with seq_release md: notify about new spare disk in the container md/raid1/10: reset bio allocated from mempool block: update comments to reflect REQ_FLUSH -> REQ_PREFLUSH rename selftests: lib.mk: change RUN_TESTS to print messages in TAP13 format selftests: change lib.mk RUN_TESTS to take test list as an argument ieee802154: 6lowpan: make header_ops const selftests: lib.mk: suppress "cd" output from run_tests target selftests: kselftest framework: change skip exit code to 0 selftests/timers: make loop consistent with array size gfs2: Silence gcc format-truncation warning GFS2: Withdraw for IO errors writing to the journal or statfs of: Use PLATFORM_DEVID_NONE definition intel_th: Perform time resync on capture start intel_th: Add global activate/deactivate callbacks for the glue layers intel_th: pci: Use drvdata for quirks intel_th: pci: Add Cannon Lake PCH-LP support intel_th: pci: Add Cannon Lake PCH-H support intel_th: pti: Support Low Power Path output port type intel_th: Enumerate Low Power Path output port type intel_th: msu: Use the real device in case of IOMMU domain allocation intel_th: Make the switch allocate its subdevices arm64: dts: uniphier: add reset controller node of analog amplifier intel_th: Make SOURCE devices children of the root device intel_th: Streamline the subdevice tree accessors intel_th: Output devices without ports don't need assigning intel_th: pci: Enable bus mastering stm class: Document the stm_ftrace stm: Potential read overflow in stm_char_policy_set_ioctl() dma-mapping: reduce dma_mapping_error inline bloat ASoC: remove duplicate definition of dapm_routes/num_dapm_routes ASoC: remove duplicate definition of dapm_widgets/num_dapm_widgets ASoC: remove duplicate definition of controls/num_controls ASoC: nau8825: correct typo of semaphore comment ASoC: use snd_soc_component_get_dapm() ASoC: Intel: Skylake: Update module id in pin connections ASoC: Intel: Skylake: Parse and update module config structure ASoC: Intel: Skylake: Populate module data from topology manifest ASoC: Intel: Skylake: Add driver structures to be filled from topology manifest ASoC: Intel: Skylake: Commonize parsing of format tokens ASoC: Intel: uapi: Add new tokens for module common data ASoC: Intel: Skylake: Parse multiple manifest data blocks ASoC: Add a sanity check before using dai driver name kvm: nVMX: Validate the virtual-APIC address on nested VM-entry sched/debug: Optimize sched_domain sysctl generation sched/topology: Avoid pointless rebuild sched/topology, cpuset: Avoid spurious/wrong domain rebuilds sched/topology: Improve comments sched/topology: Fix memory leak in __sdt_alloc() drm: rename u32 in __u32 in uapi Documentation/locking/atomic: Finish the document... locking/lockdep: Fix workqueue crossrelease annotation workqueue/lockdep: 'Fix' flush_work() annotation locking/lockdep/selftests: Add mixed read-write ABBA tests mm, locking/barriers: Clarify tlb_flush_pending() barriers perf/x86: Export some PMU attributes in caps/ directory perf/x86: Only show format attributes when supported tracing, perf: Adjust code layout in get_recursion_context() perf/core: Don't report zero PIDs for exiting tasks perf/x86: Fix data source decoding for Skylake perf/x86: Move Nehalem PEBS code to flag perf/aux: Ensure aux_wakeup represents most recent wakeup index perf/aux: Make aux_{head,wakeup} ring_buffer members long dmaengine: rcar-dmac: initialize all data before registering IRQ handler dmaengine: k3dma: remove useless ON_WARN_ONCE() dmaengine: k3dma: fix double free of descriptor dmaengine: k3dma: fix non-cyclic mode drm/exynos: simplify set_pixfmt() in DECON and FIMD drivers drm/exynos: consistent use of cpp strparser: initialize all callbacks hv_netvsc: Fix rndis_filter_close error during netvsc_remove hinic: uninitialized variable in hinic_api_cmd_init() net: mv643xx_eth: Be drop monitor friendly drm/exynos: mixer: remove src offset from mixer_graph_buffer() drm/exynos: mixer: simplify mixer_graph_buffer() drm/exynos: mixer: simplify vp_video_buffer() drm/exynos: mixer: enable NV12MT support for the video plane drm/exynos: mixer: fix chroma comment in vp_video_buffer() arm64: dts: exynos: remove i80-if-timings nodes dt-bindings: exynos5433-decon: remove i80-if-timings property drm/exynos/decon5433: use mode info stored in CRTC to detect i80 mode drm/exynos: add mode_valid callback to exynos_drm drm/exynos/decon5433: refactor irq requesting code drm/exynos/mic: use mode info stored in CRTC to detect i80 mode scsi: ufs: reqs and tasks were put in the wrong order scsi: lpfc: lpfc version bump 11.4.0.3 scsi: lpfc: fix "integer constant too large" error on 32bit archs scsi: lpfc: Add Buffer to Buffer credit recovery support scsi: lpfc: remove console log clutter scsi: lpfc: Fix bad sgl reposting after 2nd adapter reset scsi: lpfc: Fix nvme target failure after 2nd adapter reset scsi: lpfc: Fix relative offset error on large nvmet target ios scsi: lpfc: Fix MRQ > 1 context list handling scsi: lpfc: Limit amount of work processed in IRQ scsi: lpfc: Correct issues with FAWWN and FDISCs scsi: lpfc: Fix NVME PRLI handling during RSCN scsi: lpfc: Fix crash in lpfc nvmet when fc port is reset scsi: lpfc: Fix duplicate NVME rport entries and namespaces. scsi: lpfc: Fix handling of FCP and NVME FC4 types in Pt2Pt topology scsi: lpfc: Correct return error codes to align with nvme_fc transport scsi: lpfc: convert info messages to standard messages scsi: lpfc: Fix oops when NVME Target is discovered in a nonNVME environment scsi: lpfc: Fix rediscovery on switch blade pull scsi: lpfc: Fix loop mode target discovery scsi: lpfc: Fix plogi collision that causes illegal state transition scsi: qla2xxx: Update driver version to 10.00.00.01-k scsi: qla2xxx: Do not call abort handler function during chip reset scsi: qla2xxx: Ability to process multiple SGEs in Command SGL for CT passthrough commands. scsi: qla2xxx: Skip zero queue count entry during FW dump capture scsi: qla2xxx: Recheck session state after RSCN scsi: qla2xxx: Increase ql2xmaxqdepth to 64 scsi: qla2xxx: Enable Async TMF processing scsi: qla2xxx: Cleanup NPIV host in target mode during config teardown scsi: qla2xxx: Add LR distance support from nvram bit scsi: qla2xxx: Add support for minimum link speed scsi: qla2xxx: Remove potential macro parameter side-effect in ql_dump_regs() scsi: qla2xxx: Print correct mailbox registers in failed summary scsi: qla2xxx: Fix task mgmt handling for NPIV scsi: qla2xxx: Allow SNS fabric login to be retried scsi: qla2xxx: Add timeout ability to wait_for_sess_deletion(). scsi: qla2xxx: Move logging default mask to execute once only. scsi: qla2xxx: Use sp->free instead of hard coded call. scsi: qla2xxx: Prevent sp->free null/uninitialized pointer dereference. scsi: qla2xxx: Add ability to autodetect SFP type scsi: qla2xxx: Use fabric name for Get Port Speed command scsi: qla2xxx: Change ha->wq max_active value to default scsi: qla2xxx: Remove extra register read scsi: qla2xxx: Fix NPIV host enable after chip reset scsi: qla2xxx: Use BIT_6 to acquire FAWWPN from switch scsi: qla2xxx: Fix system panic due to pointer access problem scsi: qla2xxx: Handle PCIe error for driver scsi: qla2xxx: Fix WWPN/WWNN in debug message scsi: qla2xxx: Add command completion for error path scsi: qla2xxx: Update fw_started flags at qpair creation. scsi: qla2xxx: Fix target multiqueue configuration scsi: qla2xxx: Correction to vha->vref_count timeout scsi: megaraid_sas: driver version upgrade scsi: megaraid_sas: call megasas_dump_frame with correct IO frame size scsi: megaraid_sas: modified few prints in OCR and IOC INIT path scsi: megaraid_sas: replace internal FALSE/TRUE definitions with false/true scsi: megaraid_sas: Return pended IOCTLs with cmd_status MFI_STAT_WRONG_STATE in case adapter is dead scsi: megaraid_sas: use vmalloc for crash dump buffers and driver's local RAID map scsi: megaraid_sas: Use SMID for Task abort case only scsi: megaraid_sas: Check valid aen class range to avoid kernel panic scsi: megaraid_sas: Fix endianness issues in DCMD handling scsi: megaraid_sas: Do not re-fire shutdown DCMD after OCR scsi: megaraid_sas: Call megasas_complete_cmd_dpc_fusion every 1 second while there are pending commands scsi: megaraid_sas: Use synchronize_irq in target reset case scsi: megaraid_sas: set minimum value of resetwaittime to be 1 secs scsi: megaraid_sas: mismatch of allocated MFI frame size and length exposed in MFI MPT pass through command scsi: lpfc: remove useless code in lpfc_sli4_bsg_link_diag_test scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE scsi: sg: recheck MMAP_IO request length with lock held scsi: hpsa: fix the device_id in hpsa_update_device_info() scsi: aha1542: constify pnp_device_id scsi: scsi-sysfs: Adjust error returned for adapter reset request scsi: ch: add refcounting scsi: pmcraid: fix duplicated code for different branches scsi: ncr5380: constify pnp_device_id scsi: qedf: Update driver version to 8.20.5.0. scsi: qedf: Fix up modinfo parameter name for 'debug' in modinfo output. scsi: qedf: Covert single-threaded workqueues to regular workqueues. scsi: qedf: Corrent VLAN tag insertion in fallback VLAN case. scsi: qedf: Use granted MAC from the FCF for the FCoE source address if it is available. scsi: qedf: Set WWNN and WWPN based on values from qed. scsi: qla2xxx: fix spelling mistake of variable sfp_additonal_info scsi: osst: silence underflow warning in osst_verify_frame() scsi: osst: add missing indent on a for loop statement scsi: mpt3sas: fix pr_info message continuation scsi: ses: make page2 support optional scsi: ses: Fixup error message 'failed to get diagnostic page 0xffffffea' scsi: ses: check return code from ses_recv_diag() scsi: hpsa: Remove 'hpsa_allow_any' module option scsi: cciss: Drop obsolete driver scsi: hpsa: do not print errors for unsupported report luns format scsi: hpsa: Ignore errors for unsupported LV_DEVICE_ID VPD page scsi: hpsa: disable volume status check for legacy boards scsi: hpsa: add support for legacy boards scsi: cxlflash: Fix an error handling path in 'cxlflash_disk_attach()' scsi: sym53c8xx: Avoid undefined behaviour scsi: make 'state' device attribute pollable scsi: scsi_lib: rework scsi_internal_device_unblock_nowait() scsi: esas2r: constify pci_device_id. scsi: virtio: virtio_scsi: Set can_queue to the length of the virtqueue. scsi: virtio: Reduce BUG if total_sg > virtqueue size to WARN. scsi: qedi: Limit number for CQ queues. scsi: hisi_sas: remove driver versioning scsi: hisi_sas: replace kfree with scsi_host_put scsi: hisi_sas: remove phy_down_v3_hw() res variable scsi: hisi_sas: add phy_set_linkrate_v3_hw() scsi: hisi_sas: update some v3 register init settings scsi: hisi_sas: add reset handler for v3 hw drm/exynos/dsi: propagate info about command mode from panel drm/exynos/dsi: refactor panel detection logic drm/exynos: use helper to set possible crtcs drm/exynos/decon5433: use readl_poll_timeout helpers svcrdma: Clean up svc_rdma_build_read_chunk() sunrpc: Const-ify struct sv_serv_ops nfsd: Const-ify NFSv4 encoding and decoding ops arrays sunrpc: Const-ify instances of struct svc_xprt_ops nfsd4: individual encoders no longer see error cases nfsd4: skip encoder in trivial error cases nfsd4: define ->op_release for compound ops tg3: Be drop monitor friendly ipv6: Use multipath hash from flow info if available ipv6: Fold rt6_info_hash_nhsfn() into its only caller ipv6: Compute multipath hash for ICMP errors from offending packet net: Extend struct flowi6 with multipath hash nfsd4: opdesc will be useful outside nfs4proc.c devlink: Fix devlink_dpipe_table_register() stub signature. ipv6: Add sysctl for per namespace flow label reflection extcon: max77693: Allow MHL attach notifier phy: ralink: fix 64-bit build warning PM / AVS: rockchip-io: add io selectors and supplies for RV1108 cpufreq: ti: Fix 'of_node_put' being called twice in error handling path cpufreq: dt-platdev: Drop few entries from whitelist cpufreq: dt-platdev: Automatically create cpufreq device with OPP v2 ARM: ux500: don't select CPUFREQ_DT cpuidle: Convert to using %pOF instead of full_name cpufreq: Convert to using %pOF instead of full_name PM / Domains: Convert to using %pOF instead of full_name Input: ambakmi - constify amba_id rpmsg: virtio_rpmsg_bus: fix sg_set_buf() when addr is not a valid kernel address rpmsg: virtio_rpmsg: set rpmsg_buf_size customizable ALSA: pcm: Correct broken procfs set up IB/mlx5: Report mlx5 enhanced multi packet WQE capability IB/mlx5: Allow posting multi packet send WQEs if hardware supports IB/mlx5: Add support for multi underlay QP IB/mlx5: Fix integer overflow when page_shift == 31 IB/mlx5: Fix memory leak in clean_mr error path IB/mlx5: Decouple MR allocation and population flows IB/mlx5: Enable UMR for MRs created with reg_create IB/mlx5: Expose software parsing for Raw Ethernet QP RDMA/i40iw: Remove unused argument RDMA/qedr: fix spelling mistake: "invlaid" -> "invalid" IB: Avoid ib_modify_port() failure for RoCE devices RDMA/vmw_pvrdma: Update device query parameters and port caps RDMA/vmw_pvrdma: Add RoCEv2 support IB/ipoib: Enable ioctl for to IPoIB rdma netdevs RDMA/nes: Remove zeroed parameter from port query callback RDMA/mlx4: Properly annotate link layer variable RDMA/mlx5: Limit scope of get vector affinity local function IB/rxe: Make rxe_counter_name static IB/ipoib: Sync between remove_one to sysfs calls that use rtnl_lock IB/mlx4: Check that reserved fields in mlx4_ib_create_qp_rss are zero IB/mlx4: Remove redundant attribute in mlx4_ib_create_qp_rss struct IB/mlx4: Fix struct mlx4_ib_create_wq alignment IB/mlx4: Fix RSS QP type in creation verb IB/mlx5: Add necessary delay drop assignment IB/mlx5: Fix some spelling mistakes IB/mlx4: Fix some spelling mistakes RDMA/mthca: Make explicit conversion to 64bit value RDMA/usnic: Fix remove address space warning RDMA/mlx4: Remove gfp_mask argument from acquire_group call RDMA/core: Refactor get link layer wrapper RDMA/core: Delete BUG() from unreachable flow RDMA/core: Cleanup device capability enum RDMA/(core, ulp): Convert register/unregister event handler to be void RDMA/mlx4: Fix create qp command alignment RDMA/mlx4: Don't use uninitialized variable IB/uverbs: Introduce and use helper functions to copy ah attributes IB/cma: Fix erroneous validation of supported default GID type Documentation: stable-kernel-rules: fix broken git urls rtmutex: update rt-mutex rtmutex: update rt-mutex-design net/mlx5e: make mlx5e_profile const net/mlx4_core: make mlx4_profile const docs: fix minimal sphinx version in conf.py docs: fix nested numbering in the TOC NVMEM documentation fix: A minor typo ext4: fix fault handling when mounted with -o dax,ro docs-rst: pdf: use same vertical margin on all Sphinx versions ext4: fix quota inconsistency during orphan cleanup for read-only mounts ext4: fix incorrect quotaoff if the quota feature is enabled doc: Makefile: if sphinx is not found, run a check script ext4: remove useless test and assignment in strtohash functions docs: Fix paths in security/keys remoteproc/keystone: Add support for Keystone 66AK2G SOCs remoteproc/davinci: Add device tree support for OMAP-L138 DSP dt-bindings: remoteproc: Add bindings for Davinci DSP processors remoteproc/davinci: Add support to parse internal memories remoteproc/davinci: Switch to platform_get_resource_byname() xdp: get tracepoints xdp_exception and xdp_redirect in sync xdp: remove net_device names from xdp_redirect tracepoint ixgbe: use return codes from ndo_xdp_xmit that are distinguishable xdp: make generic xdp redirect use tracepoint trace_xdp_redirect xdp: remove bpf_warn_invalid_xdp_redirect drm/amdgpu: remove duplicate return statement drm/amdgpu: check memory allocation failure ext4: backward compatibility support for Lustre ea_inode implementation ext4: remove timebomb in ext4_decode_extra_time() ext4: use sizeof(*ptr) remoteproc: make device_type const ext4: in ext4_seek_{hole,data}, return -ENXIO for negative offsets md/raid5: release/flush io in raid5_do_work() md/bitmap: copy correct data for bitmap super ext4: reduce lock contention in __ext4_new_inode netfilter: ebtables: fix indent on if statements of/device: Fix of_device_get_modalias() buffer handling of/device: Prevent buffer overflow in of_device_modalias() netfilter: conntrack: make protocol tracker pointers const netfilter: conntrack: print_conntrack only needed if CONFIG_NF_CONNTRACK_PROCFS netfilter: conntrack: place print_tuple in procfs part netfilter: conntrack: reduce size of l4protocol trackers netfilter: conntrack: remove protocol name from l4proto struct netfilter: conntrack: remove protocol name from l3proto struct netfilter: conntrack: compute l3proto nla size at compile time printk-formats.txt: Add examples for %pF and %pS usage netfilter: nf_nat_h323: fix logical-not-parentheses warning parisc: Fix up devices below a PCI-PCI MegaRAID controller bridge drm/amd/amdgpu: fix BANK_SELECT on Vega10 (v2) mlxsw: spectrum_dpipe: Add support for controlling neighbor counters mlxsw: spectrum_dpipe: Add support for IPv4 host table dump mlxsw: spectrum_router: Add support for setting counters on neighbors mlxsw: reg: Make flow counter set type enum to be shared mlxsw: spectrum_dpipe: Add IPv4 host table initial support mlxsw: spectrum_dpipe: Fix label name mlxsw: spectrum_router: Add helpers for neighbor access devlink: Move dpipe entry clear function into devlink devlink: Add support for dynamic table size mlxsw: spectrum_dpipe: Fix erif table op name space devlink: Add IPv4 header for dpipe devlink: Add Ethernet header for dpipe PCI/DPC: Add local struct device pointers PCI/DPC: Add eDPC support PCI: Fix PCIe capability sizes PCI: Convert to using %pOF instead of full_name() PCI: Constify endpoint pci_epf_type device_type KVM: nVMX: Fix trying to cancel vmlauch/vmresume PCI: qcom: Add support for IPQ8074 PCIe controller dt-bindings: PCI: qcom: Add support for IPQ8074 PCI: qcom: Use block IP version for operations PCI: qcom: Explicitly request exclusive reset control KVM: X86: Fix loss of exception which has not yet been injected KVM: VMX: use kvm_event_needs_reinjection KVM: MMU: speedup update_permission_bitmask PCI: qcom: Use gpiod_set_value_cansleep() to allow reset via expanders KVM: MMU: Expose the LA57 feature to VM. KVM: MMU: Add 5 level EPT & Shadow page table support. KVM: MMU: Rename PT64_ROOT_LEVEL to PT64_ROOT_4LEVEL. KVM: MMU: check guest CR3 reserved bits based on its physical address width. KVM: x86: Add return value to kvm_cpuid(). kvm: vmx: Raise #UD on unsupported XSAVES/XRSTORS ext4: cleanup goto next group ext4: do not unnecessarily allocate buffer in recently_deleted() drm/amdgpu: inline amdgpu_ttm_do_bind again drm/amdgpu: fix amdgpu_ttm_bind drm/amdgpu: remove the GART copy hack drm/ttm:fix wrong decoding of bo_count drm/ttm: fix missing inc bo_count drm/amdgpu: set sched_hw_submission higher for KIQ (v3) drm/amdgpu: move default gart size setting into gmc modules drm/amdgpu: refine default gart size drm/amd/powerplay: ACG frequency added in PPTable drm/amdgpu: discard commands of killed processes drm/amdgpu: fix and cleanup shadow handling drm/amdgpu: add automatic per asic settings for gart_size drm/amdgpu/gfx8: fix spelling typo in mqd allocation compat_hdio_ioctl: Fix a declaration rtc: remove .open() and .release() block: remove blk_free_devt in add_partition rtc: mxc: avoid disabling interrupts on device close bio-integrity: Fix regression if profile verify_fn is NULL kvm: vmx: Raise #UD on unsupported RDSEED kvm: vmx: Raise #UD on unsupported RDRAND KVM: VMX: cache secondary exec controls net/mlx5: Add tracepoints net/mlx5: Add hash table for flow groups in flow table net/mlx5: Add hash table to search FTEs in a flow-group net/mlx5: Don't store reserved part in FTEs and FGs net/mlx5: Convert linear search for free index to ida net/mlx5e: Fix wrong code indentation in conditional statement net/mlx5: Remove a leftover unused variable net/mlx5: Add a blank line after declarations V2 ARM: OMAP2+: fix missing variable declaration powerpc/powernv: Enable removal of memory for in memory tracing ASoC: rt5514: expose Hotword Model control ASoC: codecs: msm8916-wcd-analog: always true condition wireless: ipw2x00: make iw_handler_def const net: rsi: mac80211: constify ieee80211_ops wireless: ipw2200: Replace PCI pool old API rtlwifi: rtl8821ae: fix spelling mistake: "faill" -> "failed" mt7601u: check memory allocation failure rtlwifi: make a couple arrays larger rtlwifi: btcoex: 23b 1ant: fix duplicated code for different branches wlcore: add missing nvs file name info for wilink8 usb: chipidea: Add support for Tegra20/30/114/124 usb: chipidea: udc: Support SKB alignment quirk rtc: vr41xx: make alarms useful rtc: sa1100: make alarms useful rtc: sa1100: fix unbalanced clk_prepare_enable/clk_disable_unprepare rtc: pxa: fix possible race condition rtc: m41t80: remove debug sysfs attribute rtc: m41t80: enable wakealarm when "wakeup-source" is specified clk: sunxi-ng: Add sun4i/sun7i CCU driver dt-bindings: List devicetree binding for the CCU of Allwinner A10 dt-bindings: List devicetree binding for the CCU of Allwinner A20 x86/lguest: Remove lguest support x86/paravirt/xen: Remove xen_patch() arm64: dts: marvell: add Device Tree files for Armada-8KP ALSA: control: TLV data is unavailable at initial state of user-defined element set ALSA: control: queue TLV event for a set of user-defined element ALSA: control: delegate TLV eventing to each driver ALSA: nm256: constify snd_ac97_res_table powerpc/uprobes: Implement arch_uretprobe_is_alive() powerpc/kprobes: Don't save/restore DAR/DSISR to/from pt_regs for optprobes bpf: netdev is never null in __dev_map_flush bpf, doc: Add arm32 as arch supporting eBPF JIT bpf/verifier: document liveness analysis bpf/verifier: remove varlen_map_value_access flag selftests/bpf: add a test for a pruning bug in the verifier bpf/verifier: when pruning a branch, ignore its write marks selftests/bpf: add a test for a bug in liveness-based pruning gre: remove duplicated assignment of iph net: tipc: constify genl_ops net: hinic: make functions set_ctrl0 and set_ctrl1 static powerpc/xive: Fix the size of the cpumask used in xive_find_target_in_mask() net/sock: allow the user to set negative peek offset mlxsw: spectrum_flower: Offload goto_chain termination action mlxsw: spectrum_acl: Provide helper to lookup ruleset mlxsw: spectrum_acl: Allow to get group_id value for a ruleset net: sched: add couple of goto_chain helpers mlxsw: spectrum: Offload multichain TC rules net: mvpp2: software tso support net: mvpp2: unify the txq size define use net: define the TSO header size in net/tso.h ipv4: do metrics match when looking up and deleting a route selftests/net: Add a test to validate behavior of rx timestamps tcp: Extend SOF_TIMESTAMPING_RX_SOFTWARE to TCP recvmsg liquidio: change manner of detecting whether or not NIC firmware is loaded ACPI: make device_attribute const ACPI / sysfs: Extend ACPI sysfs to provide access to boot error region ACPI: APEI: fix the wrong iteration of generic error status block ACPI / processor: make function acpi_processor_check_duplicates() static staging: rtlwifi: add MAC80211 dependency staging: rtlwifi: simplify logical operation staging: rtlwifi: shut up -Wmaybe-uninitialized warning Staging: comedi: comedi_fops: fix dev_err() warning style staging: ccree: save ciphertext for CTS IV staging: fsl-mc: be consistent when checking strcmp() returns clk: msm8996-gcc: add missing smmu clks clk: tegra: Fix Tegra210 PLLU initialization clk: tegra: Correct Tegra210 UTMIPLL poweron delay clk: tegra: Fix T210 PLLRE registration clk: tegra: Update T210 PLLSS (D2/DP) registration clk: tegra: Re-factor T210 PLLX registration clk: tegra: don't warn for pll_d2 defaults unnecessarily clk: tegra: change post IDDQ release delay to 5us clk: tegra: Add TEGRA_PERIPH_ON_APB flag to I2C clk: tegra: Fix T210 effective NDIV calculation clk: tegra: Init cfg structure in _get_pll_mnp clk: tegra210: remove non-existing VFIR clock clk: tegra: disable SSC for PLL_D2 clk: tegra: Enable PLL_SS for Tegra210 clk: tegra: fix SS control on PLL enable/disable clk: qcom: msm8916: Fix bimc gpu clock ops clk: ti: make clk_ops const clk: rockchip: Mark rockchip_fractional_approximation static block, bfq: fix error handle in bfq_init drm/amd/powerplay: unhalt mec after loading drm/amdgpu/virtual_dce: Virtual display doesn't support disable vblank immediately drm/amdgpu: Fix huge page updates with CPU block: replace bi_bdev with a gendisk pointer and partitions index block: cache the partition index in struct block_device block: add a __disk_get_part helper block: reject attempts to allocate more than DISK_MAX_PARTS partitions raid5: remove a call to get_start_sect btrfs: index check-integrity state hash by a dev_t skd: Change default interrupt mode to MSI-X skd: Avoid double completions in case of a timeout skd: Inline skd_process_request() skd: Report completion mismatches once block: Warn if blk_queue_rq_timed_out() is called for a blk-mq queue isofs: Delete an unnecessary variable initialisation in isofs_read_inode() isofs: Adjust four checks for null pointers KVM: SVM: Enable Virtual GIF feature KVM: SVM: Add Virtual GIF feature definition spi: pl022: constify amba_id dmaengine: ioatdma: Add intr_coalesce sysfs entry spi: imx: fix little-endian build ASoC: Intel: Skylake: Fix uninitialized return ASoC: rt5645: make rt5645_platform_data const firmware: arm_scpi: fix endianness of dev_id in struct dev_pstate_set nullb: badbblocks support nullb: emulate cache nullb: bandwidth control nullb: support discard nullb: support memory backed store nullb: use ida to manage index nullb: add interface to power on disk nullb: add configfs interface nullb: factor disk parameters selftests: timers: remove rtctest_setdate from run_destructive_tests mtd: nand: tmio: Register partitions using the parsers mfd: tmio: Add partition parsers platform data mtd: nand: sharpsl: Register partitions using the parsers mtd: nand: sharpsl: Add partition parsers platform data mtd: nand: qcom: Support for IPQ8074 QPIC NAND controller mtd: nand: qcom: support for IPQ4019 QPIC NAND controller dt-bindings: qcom_nandc: IPQ8074 QPIC NAND documentation dt-bindings: qcom_nandc: IPQ4019 QPIC NAND documentation dt-bindings: qcom_nandc: fix the ipq806x device tree example mtd: nand: qcom: support for different DEV_CMD register offsets mtd: nand: qcom: QPIC data descriptors handling mtd: nand: qcom: enable BAM or ADM mode mtd: nand: qcom: erased codeword detection configuration mtd: nand: qcom: support for read location registers mtd: nand: qcom: support for passing flags in DMA helper functions mtd: nand: qcom: add BAM DMA descriptor handling mtd: nand: qcom: allocate BAM transaction mtd: nand: qcom: DMA mapping support for register read buffer mtd: nand: qcom: add and initialize QPIC DMA resources mtd: nand: qcom: add bam property for QPIC NAND controller mtd: nand: qcom: support for NAND controller properties mtd: nand: qcom: fix read failure without complete bootchain mtd: nand: mtk: fix error return code in mtk_ecc_probe() mtd: nand: sh_flctl: fix error return code in flctl_probe() mtd: nand: sh_flctl: use dma_mapping_error to check map errors mtd: nand: atmel: fix of_irq_get() error check mtd: nand: hynix: add support for 20nm NAND chips mtd: nand: mxc: Fix mxc_v1 ooblayout mtd: nand: sunxi: explicitly request exclusive reset control mtd: st_spi_fsm: Handle clk_prepare_enable/clk_disable_unprepare. mtd: nand: lpc32xx_mlc: Handle return value of clk_prepare_enable. mtd: nand: lpc32xx_slc: Handle return value of clk_prepare_enable. mtd: oxnas_nand: Handle clk_prepare_enable/clk_disable_unprepare. mtd: nand: denali: Handle return value of clk_prepare_enable. mtd: orion-nand: fix build error with ARMv4 mtd: nand: pxa3xx_nand: enable building on mvebu 64-bit platforms mtd: nand: qcom: reorganize nand devices probing mtd: nand: qcom: remove memset for clearing read register buffer mtd: nand: qcom: reorganize nand page write mtd: nand: qcom: reorganize nand page read dt-bindings: qcom_nandc: remove chip select compatible string mtd: nand: qcom: remove redundant chip select compatible string mtd: nand: qcom: fix config error for BCH mtd: nand: vf610: Remove unneeded pinctrl_pm_select_default_state() mtd: nand: vf610: Check the return value from clk_prepare_enable() mtd: nand: remove hard-coded NAND ids length mtd: nand: Fix various memory leaks in core skd: error pointer dereference in skd_cons_disk() skd: Uninitialized variable in skd_isr_completion_posted() drm/sun4i: use of_graph_get_remote_endpoint() iommu/pamu: Fix PAMU boot crash ALSA: ctxfi: make hw structures const ALSA: intel8x0: constify ac97_pcm structures ALSA: atiixp: constify ac97_pcm structures ALSA: ac97c: constify ac97_pcm structures ALSA: aaci: constify ac97_pcm structures ALSA: fireface: Use common error handling code in pcm_open() powerpc/64: Optimise set/clear of CTRL[RUN] (runlatch) workqueue: Use TASK_IDLE powerpc/64s: Remove spurious IRQ reason in IRQ replay powerpc/64: Remove redundant instruction in interrupt replay powerpc/64s: Use the HV handler for external IRQ replay in HV mode on POWER9 powerpc/64s: Merge HV and non-HV paths for doorbell IRQ replay powerpc/64: Cleanup __check_irq_replay() powerpc/64s: masked_interrupt() returns to kernel so avoid restoring r13 powerpc/64s: Optimise clearing of MSR_EE in masked_[H]interrupt() powerpc/64s: Avoid a branch in masked_[H]interrupt() powerpc/mm: Make switch_mm_irqs_off() out of line powerpc/mm: Optimize detection of thread local mm's powerpc/mm: Use mm_is_thread_local() instread of open-coding powerpc/mm: Avoid double irq save/restore in activate_mm powerpc/mm: Move pgdir setting into a helper powerpc/64s: Fix replay interrupt return label name powerpc: pseries: remove dlpar_attach_node dependency on full path powerpc: Convert to using %pOF instead of full_name powerpc/vio: Use device_type to detect family s390/topology: Remove the unused parent_node() macro s390/dasd: Change unsigned long long to unsigned long s390/smp: convert cpuhp_setup_state() return code to zero on success s390: fix 'novx' early parameter handling s390/dasd: add average request times to dasd statistics ASoC: codecs: rt5670: add jack detection quirk for Dell Venue 5585 ASoC: codecs: rt5645: add quirks for Asus T100HA ASoC: Intel: Skylake: Fix DSP core ref count for init failure ASoC: Intel: Skylake: Fix to free correct dev id in free_irq ASoC: Intel: Skylake: Fix to free resources for dsp_init failure ASoC: Intel: Skylake: Fix to free dsp resource on ipc_init failure ALSA: usb-midi: Use common error handling code in __snd_usbmidi_create() ASoC: audio-graph-scu-card: Add pm callbacks to platform driver ASoC: audio-graph-card: Add pm callbacks to platform driver ASoC: simple-scu-card: Add pm callbacks to platform driver ASoC: wm8524: remove unnecessary snd_soc_unregister_platform() irqchip/gic-v3-its: Generalize LPI configuration irqchip/gic-v3-its: Generalize device table allocation irqchip/gic-v3-its: Rework LPI freeing irqchip/gic-v3-its: Split out pending table allocation irqchip/gic-v3-its: Allow use of indirect VCPU tables irqchip/gic-v3-its: Split out property table allocation irqchip/gic-v3-its: Implement irq_set_irqchip_state for pending state irqchip/gic-v3-its: Macro-ize its_send_single_command irqchip/gic-v3-its: Add probing for VLPI properties irqchip/gic-v3-its: Move LPI definitions around irqchip/gic-v3: Add VLPI/DirectLPI discovery irqchip/gic-v3: Add redistributor iterator genirq: Let irq_set_vcpu_affinity() iterate over hierarchy soc/tegra: fuse: Add missing semi-colon soc/tegra: Restrict SoC device registration to Tegra ASoC: tegra: Fix unused variable warning drm/omap: work-around for omap3 display enable drm/omap: fix i886 work-around drm/omap: fix analog tv-out modecheck irqchip: Convert to using %pOF instead of full_name irqchip: Add UniPhier AIDET irqchip driver ALSA: timer: Use common error handling code in alsa_timer_init() ALSA: timer: Adjust a condition check in snd_timer_resolution() ALSA: pcm: Adjust nine function calls together with a variable assignment ALSA: pcm: Use common error handling code in _snd_pcm_new() gpio: twl6040: remove unneeded forward declaration x86/ioapic: Print the IRTE's index field correctly when enabling INTR arm64: dts: rockchip: add Haikou baseboard with RK3399-Q7 SoM arm64: dts: rockchip: add RK3399-Q7 (Puma) SoM dt-bindings: add rk3399-q7 SoM ARM: dts: rockchip: enable usb for rv1108-evb ARM: dts: rockchip: add usb nodes for rv1108 SoCs gpio: zevio: make gpio_chip const dt-bindings: update grf-binding for rv1108 SoCs gpio: add gpio_add_lookup_tables() to add several tables at once ARM: dts: aspeed-g4: fix AHB window size of the SMC controllers ARM: config: aspeed: Add I2C, VUART, LPC Snoop ARM: configs: aspeed: Update Aspeed G4 with VMSPLIT_2G gre: fix goto statement typo bpf: minor cleanups for dev_map bpf: misc xdp redirect cleanups binder: fix incorrect cmd to binder_stat_br binder: free memory on error ANDROID: binder: add hwbinder,vndbinder to BINDER_DEVICES. ANDROID: binder: add padding to binder_fd_array_object. staging: lustre: lnet: cleanup paths for all LNet headers staging: lustre: libcfs: cleanup paths for libcfs headers staging: lustre: libcfs: add include path to Makefile staging: lustre: ksocklnd: add include path to Makefile staging: lustre: ko2iblnd: add include path to Makefile staging: lustre: lnet: add include path to Makefile staging: lustre: lnet: selftest: add include path to Makefile staging: lustre: lustre: cleanup paths for lustre UAPI headers staging: lustre: lustre: cleanup paths for lustre internal headers staging: lustre: osc: add include path to Makefile staging: lustre: obdecho: add include path to Makefile staging: lustre: obdclass: add include path to Makefile staging: lustre: mgc: add include path to Makefile staging: lustre: mdc: add include path to Makefile staging: lustre: lov: add include path to Makefile staging: lustre: lmv: add include path to Makefile staging: lustre: llite: add include path to Makefile staging: lustre: ptlrpc: add include path to Makefile staging: lustre: fld: add include path to Makefile staging: lustre: fid: add include path to Makefile staging: lustre: uapi: remove BIT macro from UAPI headers staging: lustre: uapi: use proper byteorder functions in lustre_idl.h staging: lustre: uapi: remove CONFIG_LUSTRE_OBD_MAX_IOCTL staging: lustre: uapi: migrate remaining uapi headers to uapi directory staging: lustre: uapi: remove libcfs.h from lustre_id.h/lustre_user.h staging: lustre: lnet: remove BIT macro from lnetctl.h staging: lustre: lnet: remove userland function prototype in lnetctl.h staging: lustre: libcfs: sort headers in libcfs.h staging: lustre: lnet: migrate headers to lnet uapi directory staging: lustre: lnet: delete lnet.h staging: lustre: socklnd: create socklnd.h UAPI header staging: lustre: libcfs: create libcfs_debug.h UAPI header staging: lustre: libcfs: remove LOGL and LOGU macros staging: lustre: libcfs: remove htonl hack in libcfs.h staging: lustre: uapi: label lustre_cfg.h as an uapi header staging: lustre: uapi: style cleanup of lustre_cfg.h staging: lustre: uapi: check if argument for lustre_cfg_buf() is NULL staging: lustre: uapi: change variable type to match staging: lustre: uapi: remove need for libcfs.h from lustre_cfg.h staging: lustre: uapi: move lustre_cfg.h to uapi directory staging: lustre: obdclass: no need to check for kfree staging: lustre: uapi: move lustre_cfg_string() to obd_config.c staging: lustre: uapi: don't memory allocate in UAPI header staging: lustre: uapi: remove lustre_cfg_free wrapper staging: lustre: uapi: style cleanups for lustre_param.h staging: lustre: uapi: label lustre_param.h as an uapi header staging: lustre: uapi: move lustre_param.h to uapi directory staging: lustre: uapi: remove included headers out of lustre_param.h staging: lustre: uapi: move kernel only prototypes out of lustre_param.h staging: lustre: uapi: label lustre_ioctl.h as a UAPI header staging: lustre: uapi: cleanup headers for lustre_ioctl.h staging: lustre: uapi: use __ALIGN_KERNEL for lustre_ioctl.h staging: lustre: uapi: move lustre_ioctl.h to uapi directory staging: lustre: uapi: move obd_ioctl_is_invalid() to linux-module.c staging: lustre: uapi: move obd_ioctl_getdata() declaration staging: lustre: uapi: remove obd_ioctl_popdata() wrapper staging: lustre: uapi: remove obd_ioctl_freedata() wrapper staging: lustre: uapi: remove userland version of obd_ioctl_*() staging: lustre: uapi: remove unused function in lustre_disk.h staging: lustre: uapi: move lu_fid, ost_id funcs out of lustre_idl.h staging: lustre: uapi: update URL doc link in lustre_fid.h staging: lustre: uapi: return error code for ostid_set_id staging: lustre: uapi: remove unused functions for lustre_fid.h staging: lustre: uapi: Move functions out of lustre_idl.h staging: r8822be: fix a couple of spelling mistakes staging: typec: tcpm: make function tcpm_get_pwr_opmode Staging: fsl-dpaa2: ethernet: dpni.c: Fixed alignment to match open parenthesis. staging: greybus: audio: constify snd_soc_dai_ops structures Staging: greybus: Fix spelling error in comment staging: rtlwifi: fix multiple build errors dt-bindings: add amc6821, isl1208 trivial bindings dt-bindings: add vendor prefix for Theobroma Systems ARM: dts: rockchip: add cpu power supply for rv1108 evb bpf: fix map value attribute for hash of maps ARM: dts: rockchip: add cpu opp table for rv1108 arm64: dts: rockchip: add rk3328-rock64 board arm64: dts: rockchip: add rk3328 pdm node MIPS,bpf: fix missing break in switch statement ARM64: dts: meson-gxl-libretech-cc: Add GPIO lines names ARM64: dts: meson-gx: Add AO CEC nodes ARM64: dts: meson-gx: update AO clkc to new bindings staging: unisys: use ATTRIBUTE_GROUPS instead of creating our own staging: unisys: visorbus: Get rid of passthrough function visorchipset_device_destroy staging: unisys: visorbus: Get rid of passthrough function visorchipset_device_create staging: unisys: visorbus: Get rid of passthrough function visorchipset_bus_destroy staging: unisys: include: iochannel.h: Add proper copyright statement staging: unisys: visorinput: ultrainputreport.h: Adjust comment formatting staging: unisys: visorhba: Adjust top comment formatting staging: unisys: include: visorbus.h: Remove filename in top comment staging: unisys: visorinput: visorinput.c: Remove filename in top comment staging: unisys: visorbus: visorchannel.c: Remove filename in top comment staging: unisys: visorbus: visorbus_main.c: Remove filename in top comment staging: unisys: visorbus: visorchipset.c: Fix SonarQube sprintf findings staging: unisys: include: iochannel.h: Update comments for #defines staging: unisys: visorbus: Get rid of passthrough function visorchipset_bus_create staging: unisys: reference bus_no and dev_no directly staging: unisys: don't copy to local variable staging: unisys: visorbus: Remove confusing comment in controlvmchannel. staging: unisys: Move SIOVM guid to visorbus staging: unisys: Move VNIC GUID to visornic staging: unisys: include: remove unnecessary blank line from channel.h staging: unisys: visorinput: Get rid of unused includes staging: unisys: include: iochannel needs to include skbuff staging: unisys: visorbus: Remove unnecessary includes for visorchipset.c staging: unisys: visorbus: fix include dependency staging: unisys: include: Remove unneeded includes from visorbus.h staging: unisys: include: Remove unnecessary forward declaration staging: unisys: include: Fix up comment style in visorbus.h staging: unisys: include: cleanup channel comment staging: unisys: include: Remove unused throttling defines. staging: unisys: include: Remove unused vdiskmgmt commands staging: unisys: include: Remove unused #define MAXNUM staging: unisys: visorbus: merging the visorbus_device_pause_response and visorbus_device_resume_response functions into one. staging: unisys: visorbus: merging the visorbus_*_response functions into one. staging: unisys: include: fix improper use of dma_data_direction staging: unisys: visorbus: Remove unnecessary comments staging: unisys: visorbus: Merge vmcallinterface.h into visorchipset.c staging: unisys: visornic: visornic_main.c: fix multiline dereference. staging: unisys: visornic: update the struct visornic_devdata comments staging: unisys: visorbus: fix multi-line function definition staging: unisys: visorbus: visorbus_private.h remove filename staging: unisys: visorbus: Update comment style vbuschannel.h staging: unisys: Switch to use new generic UUID API staging: unisys: visorbus: Adding a new line between function definition staging: unisys: include: iochannel.h: Removed unused DEFINE staging: unisys: visorbus: remove filename from beginning of file net: sched: use kvmalloc() for class hash tables net: amd: constify zorro_device_id Documentation/bindings: net: marvell-pp2: add the system controller net: mvpp2: initialize the GoP net: mvpp2: set maximum packet size for 10G ports net: mvpp2: initialize the XLG MAC when using a port net: mvpp2: initialize the GMAC when using a port net: mvpp2: move the mii configuration in the ndo_open path net: mvpp2: fix the synchronization module bypass macro name net: mvpp2: unify register definitions coding style gre: introduce native tunnel support for ERSPAN udp: remove unreachable ufo branches net: mdio-gpio: make mdiobb_ops const net: ethernet: freescale: fs_enet: make mdiobb_ops const net: ethernet: ax88796: make mdiobb_ops const tcp: Remove the unused parameter for tcp_try_fastopen. tcp: Get a proper dst before checking it. hv_netvsc: Update netvsc Document for UDP hash level setting hv_netvsc: Add ethtool handler to set and get UDP hash levels hv_netvsc: Clean up unused parameter from netvsc_get_rss_hash_opts() hv_netvsc: Clean up unused parameter from netvsc_get_hash() rdma: Autoload netlink client modules rdma: Allow demand loading of NETLINK_RDMA PCI: dwc: Clear MSI interrupt status after it is handled, not before IB/mlx4: use kvmalloc_array to allocate wrid IB/mlx5: use kvmalloc_array for mlx5_ib_wq PCI: dra7xx: Propagate platform_get_irq() errors in dra7xx_pcie_probe() RDMA: Fix return value check for ib_get_eth_speed() xprtrdma: Re-arrange struct rx_stats IB/pvrdma: Remove unused function i40iw: Improve CQP timeout logic selinux: allow per-file labeling for cgroupfs IB/hfi1: Add kernel receive context info to debugfs IB/hfi1: Remove HFI1_VERBS_31BIT_PSN option IB/hfi1: Remove pstate from hfi1_pportdata IB/hfi1: Stricter bounds checking of MAD trap index IB/hfi1: Load fallback platform configuration per HFI device IB/hfi1: Add flag for platform config scratch register read IB/hfi1: Document phys port state bits not used in IB IB/hfi1: Check xchg returned value for queuing link down entry IB/hfi1: fix spelling mistake: "Maximim" -> "Maximum" IB/hfi1: Enable RDMA_CAP_OPA_AH in hfi driver to support extended LIDs IB/hfi1: Enhance PIO/SDMA send for 16B IB/hfi1: Add 16B RC/UC support IB/rdmavt, hfi1, qib: Enhance rdmavt and hfi1 to use 32 bit lids IB/hfi1: Add 16B trace support IB/hfi1: Add 16B UD support IB/hfi1: Determine 9B/16B L2 header type based on Address handle IB/hfi1: Add support to process 16B header errors IB/hfi1: Add support to send 16B bypass packets IB/hfi1: Add support to receive 16B bypass packets IB/rdmavt, hfi1, qib: Modify check_ah() to account for extended LIDs IB/hf1: User context locking is inconsistent IB/hfi1: Protect context array set/clear with spinlock IB/hfi1: Use host_link_state to read state when DC is shut down IB/hfi1: Remove lstate from hfi1_pportdata IB/hfi1: Remove pmtu from the QP structure IB/hfi1: Revert egress pkey check enforcement liquidio: make VF driver notify NIC firmware of MTU change liquidio: move macro definition to a proper place ALSA: cmipci: Use common error handling code in snd_cmipci_probe() ptp: make ptp_clock_info const net: ethernet: make ptp_clock_info const IB/core: Fix input len in multiple user verbs net: hns3: Add support to change MTU in HNS3 hardware mlx5: Replace PCI pool old API mlx4: Replace PCI pool old API IB/mthca: Replace PCI pool old API net-next/hinic: Add Maintainer net-next/hinic: Add netpoll net-next/hinic: Add ethtool and stats net-next/hinic: Add Tx operation net-next/hinic: Add Rx handler net-next/hinic: Add cmdq completion handler net-next/hinic: Add cmdq commands net-next/hinic: Add ceqs net-next/hinic: Initialize cmdq net-next/hinic: Set qp context net-next/hinic: Add qp resources net-next/hinic: Add wq net-next/hinic: Add logical Txq and Rxq net-next/hinic: Add Rx mode and link event handler net-next/hinic: Add port management commands net-next/hinic: Add aeqs net-next/hinic: Add api cmd commands net-next/hinic: Add management messages net-next/hinic: Initialize api cmd hw net-next/hinic: Initialize api cmd resources net-next/hinic: Initialize hw device components net-next/hinic: Initialize hw interface ALSA: hda - Implement mic-mute LED mode enum ALSA: ctxfi: Use common error handling code in two functions arm64: cleanup {COMPAT_,}SET_PERSONALITY() macro selftests: timers: Fix run_destructive_tests target to handle skipped tests kselftests: timers: leap-a-day: Change default arguments to help test runs net: ethernet: stmmac: dwmac-rk: Add rv1108 gmac support ethernet: xircom: small clean up in setup_xirc2ps_cs() drm/msm/mdp5: mark runtime_pm functions as __maybe_unused drm/msm: remove unused variable drm/msm/mdp5: make helper function static drm/msm: make msm_framebuffer_init() static drm/msm: add helper to allocate stolen fb drm/msm: don't track fbdev's gem object separately drm/msm: add modeset module param drm/msm/mdp5: add tracking for clk enable-count drm/msm: remove unused define drm/msm: Add a helper function for in-kernel buffer allocations drm/msm: Attach the GPU MMU when it is created selftests: timers: drop support for !KTEST case arm64: introduce separated bits for mm_context_t flags arm64: hugetlb: Cleanup setup_hugepagesz arm64: Re-enable support for contiguous hugepages arm64: hugetlb: Override set_huge_swap_pte_at() to support contiguous hugepages arm64: hugetlb: Override huge_pte_clear() to support contiguous hugepages dmaengine: xgene-dma: remove unused xgene_dma_invalidate_buffer dmaengine: altera: remove DMA_SG arm: eBPF JIT compiler perf tools: Fix static linking with libunwind perf tools: Fix static linking with libdw from elfutils perf: Fix documentation for sysctls perf_event_paranoid and perf_event_mlock_kb perf tools: Really install manpages via 'make install-man' perf test: Add test cases for new data source encoding xfs: stop searching for free slots in an inode chunk when there are none xfs: add log recovery tracepoint for head/tail xfs: handle -EFSCORRUPTED during head/tail verification xfs: add log item pinning error injection tag xfs: fix log recovery corruption error due to tail overwrite xfs: always verify the log tail during recovery xfs: fix recovery failure when log record header wraps log end xfs: Properly retry failed inode items in case of error during buffer writeback xfs: Add infrastructure needed for error propagation during buffer IO failure xfs: toggle readonly state around xfs_log_mount_finish xfs: write unmount record for ro mounts ASoC: rockchip: Correct 'dmic-delay' property name mtd: spi-nor: add support for Microchip sst26vf064b QSPI memory ALSA: pcsp: Use common error handling code in snd_card_pcsp_probe() ASoC: rsnd: remove unused rsnd_xxx_to_dma() perf tools: Add support for printing new mem_info encodings perf vendor events: Add Skylake server uncore event list perf vendor events: Add core event list for Skylake Server perf tools: Dedup events in expression parsing perf tools: Increase maximum number of events in expressions perf tools: Expression parser enhancements for metrics perf tools: Add utility function to detect SMT status ALSA: ice1712: Add support for STAudio ADCIII arm64: hugetlb: Handle swap entries in huge_pte_offset() for contiguous hugepages perf bpf: Tighten detection of BPF events arm64: hugetlb: Add break-before-make logic for contiguous entries arm64: hugetlb: Spring clean huge pte accessors arm64: hugetlb: Introduce pte_pgprot helper perf evsel: Fix buffer overflow while freeing events perf xyarray: Save max_x, max_y arm64: hugetlb: set_huge_pte_at Add WARN_ON on !pte_present memory: mtk-smi: Degrade SMI init to module_init iommu/mediatek: Enlarge the validate PA range for 4GB mode iommu/mediatek: Disable iommu clock when system suspend iommu/mediatek: Move pgtable allocation into domain_alloc iommu/mediatek: Merge 2 M4U HWs into one iommu domain iommu/mediatek: Add mt2712 IOMMU support iommu/mediatek: Move MTK_M4U_TO_LARB/PORT into mtk_iommu.c parisc/core: Fix section mismatches parisc/ipmi_si_intf: Fix section mismatches on parisc platform parisc/input/hilkbd: Fix section mismatches parisc/net/lasi_82596: Fix section mismatches parisc/serio: Fix section mismatches in gscps2 and hp_sdc drivers parisc: Fix section mismatches in parisc core drivers parisc/parport_gsc: Fix section mismatches parisc/scsi/lasi700: Fix section mismatches parisc/scsi/zalon: Fix section mismatches parisc/8250_gsc: Fix section mismatches parisc/mux: Fix section mismatches parisc/sticore: Fix section mismatches parisc/harmony: Fix section mismatches parisc: Wire up support for self-extracting kernel parisc: Make existing core files reuseable for bootloader parisc: Add core code for self-extracting kernel parisc: Enable UBSAN support parisc/random: Add machine specific randomness parisc: Optimize switch_mm parisc: Drop MADV_SPACEAVAIL, MADV_VPS_PURGE and MADV_VPS_INHERIT parisc: Static initialization of pcxl_res_lock spinlock parisc: Drop exception_data struct parisc: Static initialization of spinlocks in perf and unwind code parisc: PDT: Add full support for memory failure via Page Deallocation Table (PDT) parisc: PDT/firmware: Add support to read PDT on older PAT-machines parisc: Add MADV_HWPOISON and MADV_SOFT_OFFLINE iommu/ipmmu-vmsa: Use iommu_device_sysfs_add()/remove() ALSA: firewire: add const qualifier to identifiers for read-only symbols cpufreq: Cap the default transition delay value to 10 ms cpufreq: dbx500: Delete obsolete driver mfd: db8500-prcmu: Get rid of cpufreq dependency pinctrl: intel: Add Intel Lewisburg GPIO support pinctrl: intel: Add Intel Cannon Lake PCH-H pin controller support gpio: rcar: Add r8a7745 (RZ/G1E) support ARM: dts: augment Ux500 to use DT cpufreq gpio: brcmstb: check return value of gpiochip_irqchip_add() pinctrl: aspeed: Fix ast2500 strap register write logic pinctrl: sunxi: fix wrong irq_banks number for H5 pinctrl pinctrl: intel: Disable GPIO pin interrupts in suspend ASoC: soc-core: Allow searching dai driver name in snd_soc_find_dai pinctrl: vt8500: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: ti-iodelay: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: tz1090: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: tz1090-pdc: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: tb10x: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: rza1: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: ingenic: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: adi2: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: aspeed: g5: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: aspeed: g4: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: digicolor: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: sirf: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures ASoC: tegra: Remove superfluous snd_soc_jack_free_gpios() call ASoC: samsung: Remove superfluous snd_soc_jack_free_gpios() call ASoC: pxa: Remove superfluous snd_soc_jack_free_gpios() call ASoC: omap: Remove superfluous snd_soc_jack_free_gpios() call ASoC: intel: Remove superfluous snd_soc_jack_free_gpios() call pinctrl: sirf: atlas7: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures ASoC: simple-card: Remove superfluous snd_soc_jack_free_gpios() call ASoC: fsl: Remove superfluous snd_soc_jack_free_gpios() call ASoC: jack: Manage gpios via devres pinctrl: st: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: armada-37xx: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: artpec6: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: bcm281xx: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures pinctrl: uniphier: add Audio out pin-mux settings MAINTAINERS: Add entry for THUNDERX GPIO Driver. gpio: Add gpio driver support for ThunderX and OCTEON-TX pinctrl: amd: fix error return code in amd_gpio_probe() btrfs: submit superblock io with REQ_META and REQ_PRIO ASoC: Intel: Headset button support in kabylake machine driver rtc: puv3: make alarms useful rtc: puv3: switch to devm_rtc_allocate_device()/rtc_register_device() drm/nouveau/kms/nv50: perform null check on msto[i] rathern than msto drm/nouveau/pci/msi: disable MSI on big-endian platforms by default drm/nouveau: silence suspend/resume debugging messages drm/nouveau/kms/nv04-nv4x: fix exposed format list drm/nouveau/kms/nv10-nv40: add NV21 support to overlay drm/nouveau/kms/nv04-nv40: improve overlay error detection, fix pitch setting drm/nouveau/kms/nv04-nv40: prevent undisplayable framebuffers from creation drm/nouveau/mpeg: print more debug info when rejecting dma objects drm/nouveau/fb/gf100-: zero mmu debug buffers drm/nouveau/bar/gf100: add config option to limit BAR2 to 16MiB initial support (display-only) for GP108 drm/nouveau/falcon: use a more reasonable msgqueue timeout value drm/nouveau/disp: Silence DCB warnings. drm/nouveau/bios: Demote missing fp table message to NV_DEBUG. drm/nouveau/pmu/gt215-: abstract detection of whether reset is needed drm/nouveau/pmu/gt215: fix reset drm/nouveau/mc/gf100: add pmu to reset mask drm/nouveau/disp/gf119-: avoid creating non-existent heads drm/nouveau/therm/gm200: Added drm/nouveau/therm: fix spelling mistake on array thresolds hwmon: da9052: Add support for TSI channel mfd: da9052: Make touchscreen registration optional hwmon: da9052: Replace S_IRUGO with 0444 mfd: da9052: Add register details for TSI crypto: af_alg - get_page upon reassignment to TX SGL crypto: cavium/nitrox - Fix an error handling path in 'nitrox_probe()' crypto: inside-secure - fix an error handling path in safexcel_probe() crypto: rockchip - Don't dequeue the request when device is busy crypto: cavium - add release_firmware to all return case crypto: sahara - constify platform_device_id MAINTAINERS: Add ARTPEC crypto maintainer crypto: axis - add ARTPEC-6/7 crypto accelerator driver crypto: hash - add crypto_(un)register_ahashes() dt-bindings: crypto: add ARTPEC crypto crypto: algif_aead - fix comment regarding memory layout i2c: mux: i2c-arb-gpio-challenge: allow compiling w/o OF support i2c: Documentation: i2c-topology: mention recent driver additions phy: brcm-sata: fix a timeout test in init phy: cpcap-usb: remove a stray tab phy: phy-twl4030-usb: silence an uninitialized variable warning phy: rockchip-typec: remove unused dfp variable phy: rockchip-inno-usb2: add support of usb2-phy for rv1108 SoCs dt-bindings: phy-rockchip-inno-usb2: add otg-mux interrupt phy: rockchip-inno-usb2: add support for otg-mux interrupt dt-bindings: phy-rockchip-inno-usb2: add rockchip,usbgrf property phy: rockchip-inno-usb2: add support for rockchip,usbgrf property phy: sun4i-usb: Support A83T USB PHYs phy: sun4i-usb: Support secondary clock for HSIC PHY dt-bindings: phy: sun4i-usb-phy: Add compatible string for A83T dt-bindings: phy: sun4i-usb-phy: Add property descriptions for H3 dmaengine: remove DMA_SG as it is dead code in kernel clk: rockchip: fix the rv1108 clk_mac sel register description clk: rockchip: rename rv1108 macphy clock to mac clk: rockchip: add rv1108 ACLK_GMAC and PCLK_GMAC clocks clk: rockchip: add rk3228 SCLK_SDIO_SRC clk id f2fs: introduce discard_granularity sysfs entry f2fs: remove unused function overprovision_sections f2fs: check hot_data for roll-forward recovery f2fs: add tracepoint for f2fs_gc f2fs: retry to revoke atomic commit in -ENOMEM case f2fs: let fill_super handle roll-forward errors f2fs: merge equivalent flags F2FS_GET_BLOCK_[READ|DIO] f2fs: support journalled quota clk: rockchip: add rv1108 ACLK_GAMC and PCLK_GMAC ID clk: rockchip: add rk3228 sclk_sdio_src ID ARM: dts: rockchip: add rk322x iommu nodes arm64: dts: rockchip: add more rk3399 iommu nodes arm64: dts: rockchip: add rk3368 iommu nodes arm64: dts: rockchip: add rk3328 iommu nodes net: sched: Add the invalid handle check in qdisc_class_find tipc: don't reset stale broadcast send link Input: atmel_mxt_ts - add support for reset line Input: atmel_mxt_ts - use more managed resources ASoC: qcom: apq8016-sbc: Add support to Headset JACK ASoC: codecs: msm8916-wcd-analog: add MBHC support ASoC: codecs: msm8916-wcd-analog: get micbias voltage from dt net: check type when freeing metadata dst ARM: s3c24xx: Fix NAND ECC mode for mini2440 board net: ipv6: put host and anycast routes on device with address dsa: remove unused net_device arg from handlers MIPS,bpf: Cache value of BPF_OP(insn->code) in eBPF JIT. MIPS, bpf: Implement JLT, JLE, JSLT and JSLE ops in the eBPF JIT. MIPS,bpf: Fix using smp_processor_id() in preemptible splat. qlogic: make device_attribute const of: search scripts/dtc/include-prefixes path for both CPP and DTC of: remove arch/$(SRCARCH)/boot/dts from include search path for CPP of: remove drivers/of/testcase-data from include search path for CPP of: return of_get_cpu_node from of_cpu_device_node_get if CPUs are not registered ASoC: ux500: Remove unnecessary function call ASoC: tegra: Remove unnecessary function call ASoC: mediatek: Remove unnecessary function call regulator: ltc3589: constify i2c_device_id arm64: kexec: have own crash_smp_send_stop() for crash dump for nonpanic cores dmaengine: at_xdmac: Handle return value of clk_prepare_enable. dmaengine: at_xdmac: Fix compilation warning. btrfs: remove unnecessary memory barrier in btrfs_direct_IO btrfs: remove superfluous chunk_tree argument from btrfs_alloc_dev_extent btrfs: Remove chunk_objectid parameter of btrfs_alloc_dev_extent dmaengine: ste_dma40: make stedma40_chan_cfg const ASoC: fsl-asoc-card: don't print EPROBE_DEFER as error dmaengine: usb-dmac: Add soctype for R-Car M3-W dmaengine: qcom_hidma: avoid freeing an uninitialized pointer ASoC: sun4i-i2s: Add support for H3 ASoC: sun4i-i2s: Update global enable with bitmask ASoC: sun4i-i2s: Check for slave select bit ASoC: sun4i-i2s: Add regmap field to set DAI format ASoC: sun4i-i2s: Add mclk enable regmap field ASoC: sun4i-i2s: bclk and lrclk polarity tidyup ASoC: sun4i-i2s: Add regfields for word size select and sample resolution ASoC: sun4i-i2s: Add regmap fields for channels ASoC: sun4i-codec: Remove unnecessary function call ASoC: qcom: Remove unnecessary function call ASoC: qcom: Remove useless function call ASoC: mxs-sgtl5000: Remove unnecessary function call ASoC: rockchip: Remove unnecessary function call ASoC: atmel: Remove unnecessary function call ASoC: atmel: Remove unnecessary function call ASoC: s3c24xx_uda134x: Remove unnecessary function call dmaengine: ioatdma: Add ABI document ASoC: rockchip: separate pinctrl pins from each other EDAC, mce_amd: Get rid of local var in amd_filter_mce() ASoC: rsnd: tidyup comments position/space/tab regulator: fan53555: fix I2C device ids EDAC, mce_amd: Get rid of most struct cpuinfo_x86 uses btrfs: pass fs_info to btrfs_del_root instead of tree_root Btrfs: add one more sanity check for shared ref type Btrfs: remove BUG_ON in __add_tree_block Btrfs: remove BUG() in add_data_reference Btrfs: remove BUG() in print_extent_item Btrfs: remove BUG() in btrfs_extent_inline_ref_size Btrfs: convert to use btrfs_get_extent_inline_ref_type Btrfs: add a helper to retrive extent inline ref type btrfs: scrub: simplify scrub worker initialization btrfs: scrub: clean up division in scrub_find_csum btrfs: scrub: clean up division in __scrub_mark_bitmap btrfs: scrub: use bool for flush_all_writes btrfs: preserve i_mode if __btrfs_set_acl() fails btrfs: Remove extraneous chunk_objectid variable btrfs: Remove chunk_objectid argument from btrfs_make_block_group btrfs: Remove extra parentheses from condition in copy_items() btrfs: Remove redundant setting of uuid in btrfs_block_header btrfs: Do not use data_alloc_cluster in ssd mode btrfs: use btrfsic_submit_bio instead of submit_bio in write_dev_flush Btrfs: incremental send, fix emission of invalid clone operations Btrfs: fix out of bounds array access while reading extent buffer EDAC, mce_amd: Rename decode_smca_errors() to decode_smca_error() arm64: dma-mapping: Mark atomic_pool as __ro_after_init arm64: dma-mapping: Do not pass data to gen_pool_set_algo() omapfb: constify omap_video_timings structures video: fbdev: udlfb: Fix use after free on dlfb_usb_probe error path fbdev: i810: make fb_ops const fbdev: matrox: make fb_ops const video: fbdev: pxa3xx_gcu: fix error return code in pxa3xx_gcu_probe() video: fbdev: Enable Xilinx FB for ZynqMP video: fbdev: Fix multiple style issues in xilinxfb video: fbdev: udlfb: constify usb_device_id. video: fbdev: smscufx: constify usb_device_id. objtool: Fix objtool fallthrough detection with function padding isofs: Delete an error message for a failed memory allocation in isofs_read_inode() quota_v2: Delete an error message for a failed memory allocation in v2_read_file_info() mtd: make device_type const arm64: zynqmp: Add generic compatible string for I2C EEPROM arm64: zynqmp: Add missing mmc aliases in ep108 arm64: zynqmp: Enable can1 for ep108 arm64: zynqmp: Added clocks to DT for ep108 arm64: zynqmp: Use C pre-processor for includes arm64: zynqmp: Add fpd/lpd dmas arm64: zynqmp: Set status disabled in dtsi arm64: zynqmp: Add new uartps compatible string arm64: zynqmp: Correct IRQ nr for the SMMU arm64: zynqmp: Add support for RTC arm64: zynqmp: Adding prefetchable memory space to pcie node arm64: zynqmp: Add CCI-400 node arm64: zynqmp: Add dcc console for zynqmp arm64: zynqmp: Add operating points arm64: zynqmp: Add idle state for ZynqMP arm64: zynqmp: Add references to cpu nodes arm64: zynqmp: Move nodes which have no reg property out of bus quota: Add lock annotations to struct members arm: zynq: Remove earlycon from bootargs arm: zynq: Use C pre-processor for includes in dts arm: zynq: Label whole PL part as fpga_full region arm: zynq: Add device-type property for zynq ethernet phy nodes arm: zynq: Add adv7511 on i2c bus for zc70x ARM: dts: da850-lego-ev3: Add node for LCD display ARM: davinci_all_defconfig: enable tinydrm and ST7586 ALSA: firewire-motu: add support for MOTU Audio Express ALSA: firewire-motu: add specification flag for position of flag for MIDI messages arm64: Remove the !CONFIG_ARM64_HW_AFDBM alternative code paths arm64: Ignore hardware dirty bit updates in ptep_set_wrprotect() arm64: Move PTE_RDONLY bit handling out of set_pte_at() kvm: arm64: Convert kvm_set_s2pte_readonly() from inline asm to cmpxchg() arm64: Convert pte handling from inline asm to using (cmp)xchg arm64: dts: rockchip: Add basic cpu frequencies for RK3368 arm64: dts: rockchip: add rk805 node for rk3328-evb m68k/mac: Avoid soft-lockup warning after mach_power_off m68k/mac: Don't hang waiting for Cuda power-down command m68k: Restore symbol versions for symbols exported from assembly m68k/defconfig: Update defconfigs for v4.13-rc1 ARM: dts: rockchip: add accelerometer bma250e dt node for rv1108 evb ARM: dts: rockchip: add pmic rk805 dt node for rv1108 evb x86/CPU: Align CR3 defines pwm: pwm-samsung: fix suspend/resume support pwm: samsung: Remove redundant checks from pwm_samsung_config() pwm: mediatek: Disable clock on PWM configuration failure dt-bindings: pwm: Add MT2712/MT7622 information pwm: mediatek: Fix clock control issue pwm: mediatek: Fix PWM source clock selection pwm: mediatek: Fix Kconfig description mfd: rk808: Add RK805 power key support mfd: rk808: Add RK805 pinctrl support pinctrl: Add pinctrl driver for the RK805 PMIC pinctrl: dt-bindings: Add bindings for Rockchip RK805 PMIC mfd: dt-bindings: Add RK805 device tree bindings document mfd: rk808: Add RK805 support regulator: rk808: Add regulator driver for RK805 mfd: rk808: Add rk805 regs addr and ID mfd: rk808: Fix up the chip id get failed x86/build: Use cc-option to validate stack alignment parameter firmware/efi/esrt: Constify attribute_group structures firmware/efi: Constify attribute_group structures firmware/dcdbas: Constify attribute_group structures arm/efi: Split zImage code and data into separate PE/COFF sections arm/efi: Replace open coded constants with symbolic ones arm/efi: Remove pointless dummy .reloc section arm/efi: Remove forbidden values from the PE/COFF header drivers/fbdev/efifb: Allow BAR to be moved instead of claiming it efi/reboot: Fall back to original power-off method if EFI_RESET_SHUTDOWN returns efi/arm/arm64: Add missing assignment of efi.config_table efi/libstub/arm64: Set -fpie when building the EFI stub efi/libstub/arm64: Force 'hidden' visibility for section markers efi/libstub/arm64: Use hidden attribute for struct screen_info reference efi/arm: Don't mark ACPI reclaim memory as MEMBLOCK_NOMAP macintosh/rack-meter: Make of_device_ids const pwm: tegra: Explicitly request exclusive reset control pwm: hibvt: Explicitly request exclusive reset control pwm: tiehrpwm: Set driver data before runtime PM enable pwm: tiehrpwm: Miscellaneous coding style fixups pwm: tiecap: Set driver data before runtime PM enable pwm: tiecap: Miscellaneous coding style fixups dt-bindings: pwm: tiecap: Add TI 66AK2G SoC specific compatible pwm: tiehrpwm: fix clock imbalance in probe error path pwm: tiehrpwm: Fix runtime PM imbalance at unbind pwm: Kconfig: Enable pwm-tiecap to be built for Keystone pwm: Add ZTE ZX PWM device driver dt-bindings: pwm: Add bindings doc for ZTE ZX PWM controller pwm: bcm2835: Support for polarity setting via DT dt-bindings: pwm: bcm2835: Increase pwm-cells liquidio: fix use of pf in pass-through mode in a virtual machine net: dsa: mv88e6xxx: make irq_chip const net: ibm: emac: Fix some error handling path in 'emac_probe()' cxgb4/cxgbvf: Handle 32-bit fw port capabilities bpf: fix double free from dev_map_notification() gpio: mockup: use irq_sim gpio: mxs: use devres for irq generic chip gpio: mxc: use devres for irq generic chip gpio: pch: use devres for irq generic chip gpio: ml-ioh: use devres for irq generic chip gpio: sta2x11: use devres for irq generic chip gpio: sta2x11: disallow unbinding the driver gpio: mxs: disallow unbinding the driver gpio: mxc: disallow unbinding the driver ieee802154: ca8210: Fix a potential NULL pointer dereference staging: rtlwifi: Reviewers fixes staging: r8822be: Add Makefiles and Kconfig for new driver staging: r8822be: Add the driver code staging: r8822be: Add phydm mini driver staging: r8822be: Add code for halmac sub-driver staging: r8822be: Add r8822be btcoexist routines to staging staging: r8822be: Copy existing btcoexist code into staging staging: r8822be: Add existing rtlwifi and rtl_pci parts for new driver staging: wlan-ng: hfa384x_usb: Fix multiple line dereference Staging: greybus: vibrator.c: Fixed alignment to match open parenthesis. staging: greybus: make device_type const staging/rts5208: fix incorrect shift to extract upper nybble staging: pi433: fixed coding style issues staging:rtl8188eu: fix coding style issue staging: lustre: lustre: Off by two in lmv_fid2path() NFS: Fix NFSv2 security settings NFSv4.1: don't use machine credentials for CLOSE when using 'sec=sys' SUNRPC: ECONNREFUSED should cause a rebind. NFS: Remove unused parameter gfp_flags from nfs_pageio_init() iio: adc: rockchip_saradc: explicitly request exclusive reset control iio: dac: stm32-dac-core: explicitly request exclusive reset control iio: adc: ti-ads1015: add threshold event support iio: adc: ti-ads1015: use iio_device_claim_direct_mode() iio: adc: ti-ads1015: use devm_iio_triggered_buffer_setup iio: adc: ti-ads1015: add helper to set conversion mode iio: adc: ti-ads1015: remove unnecessary config register update iio: adc: ti-ads1015: add adequate wait time to get correct conversion iio: adc: ti-ads1015: don't return invalid value from buffer setup callbacks iio: adc: ti-ads1015: avoid getting stale result after runtime resume iio: adc: ti-ads1015: enable conversion when CONFIG_PM is not set iio: adc: ti-ads1015: fix scale information for ADS1115 iio: adc: ti-ads1015: fix incorrect data rate setting update iio: adc: ti-ads7950: Allow to use on ACPI platforms iio: magnetometer: ak8974: debug AMI306 calibration data NFSv4: Fix up mirror allocation media: ddbridge: fix semicolon.cocci warnings media: isl6421: add checks for current overflow iio: magnetometer: ak8974: mark INT_CLEAR as precious iio: magnetometer: ak8974: add_device_randomness (serial number) media: stv6111: return NULL instead of plain integer media: stv0910: declare global list_head stvlist static media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_* media: cec: fix remote control passthrough media: rc: per-protocol repeat period media: rc: saa7134: raw decoder can support any protocol media: rc: ensure we do not read out of bounds media: rc: simplify ir_raw_event_store_edge() media: rc: saa7134: add trailing space for timely decoding media: rc-core: improve ir_raw_store_edge() handling media: winbond-cir: buffer overrun during transmit media: mceusb: do not read data parameters unless required media: lirc_zilog: driver only sends LIRCCODE media: rc: add zx-irdec remote control driver media: dt-bindings: add bindings document for zx-irdec media: rc: ir-nec-decoder: move scancode composing code into a shared function media: rc: sunxi-cir: explicitly request exclusive reset control media: st-rc: explicitly request exclusive reset control media: rc: nuvoton: remove rudimentary transmit functionality media: lirc_zilog: Clean up lirc zilog error codes media: dt-bindings: gpio-ir-tx: add support for GPIO IR Transmitter media: dt-bindings: pwm-ir-tx: Add support for PWM IR Transmitter media: rc: pwm-ir-tx: add new driver media: rc: gpio-ir-tx: add new driver media: rc: mce kbd decoder not needed for IR TX drivers media: rc-core: rename input_name to device_name media: rc: constify attribute_group structures media: imon: constify attribute_group structures media: sir_ir: remove unnecessary static in sir_interrupt() media: rc-core: do not depend on MEDIA_SUPPORT media: rc: mtk-cir: add MAINTAINERS entry for MediaTek CIR driver media: rc: mtk-cir: add support for MediaTek MT7622 SoC media: rc: mtk-cir: add platform data to adapt into various hardware media: dt-bindings: media: mtk-cir: Add support for MT7622 SoC media: rc-core: consistent use of rc_repeat() media: v4l: vsp1: Allow entities to participate in the partition algorithm media: v4l: vsp1: Provide UDS register updates media: v4l: vsp1: Move partition rectangles to struct and operate directly media: v4l: vsp1: Remove redundant context variables media: v4l: vsp1: Calculate partition sizes at stream start media: v4l: vsp1: Move vsp1_video_pipeline_setup_partitions() function media: v4l: vsp1: Release buffers in start_streaming error path media: ov13858: Limit vblank to permissible range media: ov5670: Limit vblank to permissible range media: et8ek8: Decrease stack usage media: mt9m111: constify video_subdev structures media: v4l: mt9t001: constify video_subdev structures media: ov5670: Fix incorrect frame timing reported to user media: usb: rainshadow-cec: constify serio_device_id media: usb: pulse8-cec: constify serio_device_id media: coda/imx-vdoa: Check for platform_get_resource() error media: ivtv: Fix incompatible type for argument error media: cx18: Fix incompatible type for argument error media: solo6x10: make snd_kcontrol_new const media: cx88: make snd_kcontrol_new const media: radio: constify pnp_device_id media: davinci: constify platform_device_id media: coda: constify platform_device_id media: staging: bcm2835-audio: make snd_pcm_hardware const media: mtk-mdp: use IS_ERR to check return value of of_clk_get media: Convert to using %pOF instead of full_name media: omap3isp: Quit using struct v4l2_subdev.host_priv field media: omap3isp: csiphy: Don't assume the CSI receiver is a CSI2 module media: omap3isp: Always initialise isp and mutex for csiphy1 media: omap3isp: Correctly set IO_OUT_SEL and VP_CLK_POL for CCP2 mode media: omap3isp: Parse CSI1 configuration from the device tree media: cec-pin: fix irq handling media: cec: rename pin events/function media: s5p-cec: use CEC_CAP_DEFAULTS media: v4l2-compat-ioctl32.c: add capabilities field to, v4l2_input32 media: v4l2-ctrls.h: better document the arguments for v4l2_ctrl_fill media: uvcvideo: Constify video_subdev structures media: uvcvideo: Convert from using an atomic variable to a reference count media: uvcvideo: Fix .queue_setup() to check the number of planes media: uvcvideo: Prevent heap overflow when accessing mapped controls media: uvcvideo: Fix incorrect timeout for Get Request media: zr364xx: constify videobuf_queue_ops structures media: tm6000: constify videobuf_queue_ops structures media: cx231xx: constify videobuf_queue_ops structures media: cx18: constify videobuf_queue_ops structures media: pxa_camera: constify v4l2_clk_ops structure media: v4l2: av7110_v4l: constify v4l2_audio structure media: tuners: make snd_pcm_hardware const media: pci: make snd_pcm_hardware const media: usb: make snd_pcm_hardware const media: radio: constify usb_device_id media: usb: constify usb_device_id media: exynos4-is: constify video_subdev structures media: vimc: constify video_subdev structures media: mtk-mdp: constify v4l2_m2m_ops structures media: exynos4-is: constify v4l2_m2m_ops structures media: vim2m: constify v4l2_m2m_ops structures media: mx2-emmaprp: constify v4l2_m2m_ops structures media: m2m-deinterlace: constify v4l2_m2m_ops structures media: bdisp: constify v4l2_m2m_ops structures media: exynos-gsc: constify v4l2_m2m_ops structures media: vcodec: mediatek: constify v4l2_m2m_ops structures media: V4L2: platform: rcar_jpu: constify v4l2_m2m_ops structures media: s5p-g2d: constify v4l2_m2m_ops structures media: ti-vpe: vpe: constify v4l2_m2m_ops structures media: st-delta: constify v4l2_m2m_ops structures media: imx: capture: constify vb2_ops structures media: blackfin: bfin_capture: constify vb2_ops structures media: staging: media: davinci_vpfe: constify vb2_ops structures media: davinci: vpbe: constify vb2_ops structures media: v4l2-pci-skeleton: constify vb2_ops structures media: s5p-jpeg: directly use parsed subsampling on exynos5433 media: s5p-jpeg: fix number of components macro media: s5p-jpeg: Clear JPEG_CODEC_ON bits in sw reset function media: s5p-jpeg: disable encoder/decoder in exynos4-like hardware after use media: s5p-jpeg: Fix crash in jpeg isr due to multiple interrupts media: s5p-jpeg: set w/h when encoding media: s5p-jpeg: don't overwrite result's "size" member media: ddbridge: get rid of fall though gcc 7.1 warnings media: dvb-frontends/cxd2841er: update moddesc wrt new chip support media: ddbridge: constify stv0910_p and lnbh25_cfg media: ddbridge: const'ify all ddb_info, ddb_regmap et al media: ddbridge: bump version string to 0.9.31intermediate-integrated media: ddbridge: remove ddb_info's from the global scope media: ddbridge: move ddb_unmap(), cleanup modparams media: ddbridge: move device ID table to ddbridge-hw media: ddbridge: fix gap handling media: dvb-frontends/stv0910: fix mask for scramblingcode setup media: dvb-frontends/stv0910: fix FE_HAS_LOCK check order in tune() media: MAINTAINERS: add entry for mxl5xx media: ddbridge: fix buffer overflow in max_set_input_unlocked() media: ddbridge: support MaxLinear MXL5xx based cards (MaxS4/8) media: dvb-frontends: MaxLinear MxL5xx DVB-S/S2 tuner-demodulator driver media: dvb-frontends/stv{0910,6111}: constify tables media: dvb-frontends/stv6111: cosmetics: comments fixup, misc media: dvb-frontends/stv6111: coding style cleanup media: dvb-frontends/stv0910: cosmetics: fixup comments, misc media: dvb-frontends/stv0910: further coding style cleanup media: dvb-frontends/stv0910: implement diseqc_send_burst EDAC: Make device_type const media: dvb-frontends/stv0910: fix STR assignment, remove unneeded var media: MAINTAINERS: add entry for ddbridge media: ddbridge: Kconfig option to control the MSI modparam default media: ddbridge: fix dereference before check media: ddbridge: fix impossible condition warning media: ddbridge: remove unreachable code media: ddbridge: fix possible buffer overflow in ddb_ports_init() media: ddbridge: only register frontends in fe2 if fe is not NULL media: ddbridge: check pointers before dereferencing media: ddbridge: split off hardware definitions and mappings media: ddbridge: split I/O related functions off from ddbridge.h media: ddbridge: bump ddbridge code to version 0.9.29 iio: magnetometer: ak8974: support AMI306 variant net/mlx5e: Use size_t to store byte offset in statistics descriptors net/mlx5e: Use kernel types instead of uint*_t in ethtool callbacks net/mlx5e: Place constants on the right side of comparisons net/mlx5e: Avoid using multiple blank lines net/mlx5e: Properly indent within conditional statements net/mlx5: Add a blank line after declarations net/mlx5: Avoid blank lines after/before open/close brace net/mlx5e: Add outbound PCI buffer overflow counter net/mlx5e: Add RX buffer fullness counters net/mlx5: Add RX buffer fullness counters infrastructure net/mlx5e: Add PCIe outbound stalls counters net/mlx5: Add PCIe outbound stalls counters infrastructure net/mlx5e: IPoIB, Add support for get_link_ksettings in ethtool net/mlx5e: IPoIB, Fix driver name retrieved by ethtool net/mlx5e: Send PAOS command on interface up/down iio: light: tsl2583: constify i2c_device_id iio: light: apds9300: constify i2c_device_id iio: accel: bma180: constify i2c_device_id phy: ralink-usb: add driver for Mediatek/Ralink dt-bindings: phy: Add bindings for ralink-usb PHY phy: samsung: use of_device_get_match_data() phy: phy-mt65xx-usb3: add mediatek directory and rename file dt-bindings: phy-mt65xx-usb: supports PCIe, SATA and rename file phy: phy-mt65xx-usb3: add SATA PHY support phy: phy-mt65xx-usb3: add PCIe PHY support phy: ti-pipe3: Use TRM recommended settings for SATA DPLL phy: qcom-qmp: Fix failure path in phy_init functions phy: qcom-qmp: Add support for IPQ8074 phy: qcom-qmp: Fix phy pipe clock name dt-bindings: phy: qmp: Add support for QMP phy in IPQ8074 dt-bindings: phy: qmp: Add output-clock-names ALSA: control: use counting semaphore as write lock for ELEM_WRITE operation ALSA: control: code refactoring for ELEM_READ/ELEM_WRITE operations ALSA: control: queue events within locking of controls_rwsem for ELEM_WRITE operation bpf: linux/bpf.h needs linux/numa.h bpf: inline map in map lookup functions for array and htab bpf: make htab inlining more robust wrt assumptions bpf: Allow numa selection in INNER_LRU_HASH_PREALLOC test of map_perf_test bpf: Allow selecting numa node during map creation bnxt_en: fix spelling mistake: "swtichdev" -> "switchdev" net: hns3: fix a handful of spelling mistakes net: defxx: constify eisa_device_id net: hp100: constify eisa_device_id net: de4x5: constify eisa_device_id net: 3c59x: constify eisa_device_id net: 3c509: constify eisa_device_id PCI: kirin: Constify dw_pcie_host_ops structure PCI: hisi: Constify dw_pcie_host_ops structure Remove gperf usage from toolchain ACPI / EC: Clean up EC GPE mask flag netfilter: rt: add support to fetch path mss netfilter: exthdr: tcp option set support netfilter: exthdr: split netlink dump function netfilter: exthdr: factor out tcp option access netfilter: use audit_log() netfilter: remove prototype of netfilter_queue_init netfilter: connlimit: merge root4 and root6. Bluetooth: make device_type const irqchip/gic-v3-its: Properly handle command queue wrapping clk: sunxi-ng: support R40 SoC ALSA: usb: constify snd_pcm_ops structures ALSA: spi: constify snd_pcm_ops structures ALSA: sparc: constify snd_pcm_ops structures ALSA: sh: constify snd_pcm_ops structures ALSA: ppc: constify snd_pcm_ops structures ALSA: pcmcia: constify snd_pcm_ops structures ALSA: parisc: constify snd_pcm_ops structures ALSA: mips: constify snd_pcm_ops structures ALSA: firewire: constify snd_pcm_ops structures ALSA: drivers: constify snd_pcm_ops structures ALSA: atmel: constify snd_pcm_ops structures ALSA: arm: constify snd_pcm_ops structures ALSA: aoa: constify snd_pcm_ops structures EDAC, pnd2: Properly toggle hidden state for P2SB PCI device EDAC, pnd2: Conditionally unhide/hide the P2SB PCI device to read BAR iommu/amd: Fix section mismatch warning iommu/amd: Fix compiler warning in copy_device_table() EDAC, pnd2: Mask off the lower four bits of a BAR dt-bindings: add compatible string for Allwinner R40 CCU nfp: don't reuse pointers in ring dumping nfp: fix copy paste in names and messages regarding vNICs nfp: add ethtool statistics for representors nfp: add pointer to vNIC config memory to nfp_port structure nfp: report MAC statistics in ethtool nfp: store pointer to MAC statistics in nfp_port nfp: split software and hardware vNIC statistics nfp: add helper for printing ethtool strings nfp: don't report standard netdev statistics in ethtool nfp: allow retreiving management FW logs on representors nfp: provide ethtool_drvinfo on representors nfp: link basic ethtool ops to representors net: style cleanups net: mark receive queue attributes ro_after_init net: make queue attributes ro_after_init net: make BQL sysfs attributes ro_after_init net: drop unused attribute argument from sysfs queue funcs net: make net sysfs attributes ro_after_init net: constify net_ns_type_operations net: make net_class ro_after_init net: constify netdev_class_file net: don't decrement kobj reference count on init failure ARM: sun8i: a83t: Add device tree for Sinovoip Bananapi BPI-M3 PCI: Avoid race while enabling upstream bridges staging: lustre: mgc: fix potential use after free in error path staging: lustre: obd: make echo_lock_ops const staging: lustre: declare fiemap_for_stripe static staging: lustre: fix minor typos in comments Input: wacom_w8001 - constify serio_device_id Input: tsc40 - constify serio_device_id Input: touchwin - constify serio_device_id Input: touchright - constify serio_device_id Input: touchit213 - constify serio_device_id Input: penmount - constify serio_device_id Input: mtouch - constify serio_device_id Input: inexio - constify serio_device_id Input: hampshire - constify serio_device_id Input: gunze - constify serio_device_id Input: fujitsu_ts - constify serio_device_id Input: elo - constify serio_device_id Input: dynapro - constify serio_device_id Input: wacom_serial4 - constify serio_device_id Input: constify serio_device_id Input: xtkbd - constify serio_device_id Input: sunkbd - constify serio_device_id Input: stowaway - constify serio_device_id Input: newtonkbd - constify serio_device_id Input: lkkbd - constify serio_device_id Input: hil_kbd - constify serio_device_id Input: iatkbd - constify serio_device_id Input: zhenhua - constify serio_device_id Input: warrior - constify serio_device_id Input: twidjoy - constify serio_device_id Input: stinger - constify serio_device_id Input: spaceorb - constify serio_device_id Input: spaceball - constify serio_device_id Input: magellan - constify serio_device_id Input: iforce - constify serio_device_id Input: elan_i2c - support touchpads with two physical buttons platform/x86: dell-wmi: Update dell_wmi_check_descriptor_buffer() to new model amd-xgbe: Add additional ethtool statistics amd-xgbe: Add support for VXLAN offload capabilities amd-xgbe: Convert to using the new link mode settings net: ethtool: Add macro to clear a link mode setting amd-xgbe: Add per queue Tx and Rx statistics amd-xgbe: Add hardware features debug output amd-xgbe: Optimize DMA channel interrupt enablement amd-xgbe: Add additional dynamic debug messages amd-xgbe: Add support to handle device renaming amd-xgbe: Update TSO packet statistics accuracy amd-xgbe: Be sure driver shuts down cleanly on module removal amd-xgbe: Set the MII control width for the MAC interface amd-xgbe: Set the MDIO mode for 10000Base-T configuration mlx5: ensure 0 is returned when vport is zero bpf: Fix map-in-map checking in the verifier platform/x86: intel-vbtn: reduce unnecessary messages for normal users platform/x86: intel-hid: reduce unnecessary messages for normal users xdp: adjust xdp redirect tracepoint to include return error code ixgbe: change ndo_xdp_xmit return code on xmit errors arm64: dts: rockchip: Assign mic irq to correct device for Gru arm64: dts: rockchip: init rk3399 vop clock rates liquidio: remove support for deprecated f/w cmd OCTNET_CMD_RESET_PF net: inet: diag: expose sockets cgroup classid macvlan: add offload features for encapsulation arm64: dts: rockchip: Add pwm nodes for rk3328 arm64: dts: rockchip: Fix wrong rt5514 dmic delay property for Gru platform/x86: thinkpad_acpi: Fix warning about deprecated hwmon_device_register staging: typec: tcpm: explicit_contract is always established Staging: greybus: Match alignment with open parenthesis. staging: speakup: fix async usb removal staging: speakup: remove support for lp* staging: most: hdm-dim2: fix error return code in dim2_probe() staging: wlan-ng: hfa384x.h: Use endian type in 'hfa384x_link_status' struct staging: wlan-ng: Fix sparse warning: cast to restricted __le16. drivers/staging/wlan-ng/p80211conv.c: fixed a potential memory leak staging: octeon: fix line over 80 characters rtl8723bs: os_dep: ioctl_linux: fix several braces coding style issues. staging/rtl8723bs: Fix some coding style issues in rtw_odm.c. Staging: rtl8723bs: fix multiple missing spaces coding style problem staging: bcm2835-camera: constify vb2_ops structures staging: most: hdm-dim2: constify platform_device_id staging: bcm2835-audio: make snd_pcm_hardware const staging: rtl8188eu: constify usb_device_id staging: rtl8712: constify usb_device_id staging: most: usb: constify usb_device_id Revert "staging: imx: fix non-static declarations" staging: typec: tcpm: Report right typec_pwr_opmode staging: typec: tcpm: Check cc status before entering SRC_TRY_DEBOUCE staging: typec: tcpm: Improve role swap with non PD capable partners staging: typec: tcpm: Add timeout when waiting for role swap completion staging: typec: tcpm: Select default state based on port type staging: typec: tcpm: Set default state after error recovery based on port type staging: typec: tcpm: Report role swap complete after entering READY state staging: typec: tcpm: Constify alternate modes staging: pi433: replace INVALID_PARAM macro with inline code staging: pi433: replace logical not with bitwise staging: vboxvideo: remove dead gamma lut code staging: vboxvideo: Call fb_deferred_io_cleanup() on cleanup staging: vboxvideo: Add dri-devel to lists of email-addresses to send patches to staging: vboxvideo: switch to drm_*{get,put} helpers staging: vboxvideo: select DRM_TTM ARM: dts: rockchip: add pwm backlight for rv1108 evb ARM: dts: rockchip: add pwm dt nodes for rv1108 liquidio: fix Smatch error ipv4: convert dst_metrics.refcnt from atomic_t to refcount_t arm64: dts: apm: fix PCI bus dtc warnings ARM: dts: versatile: fix PCI bus dtc warnings ARM: dts: spear13xx: fix PCI bus dtc warnings arm64: defconfig: Enable QCOM IPQ8074 clock and pinctrl drm/i915: Update DRIVER_DATE to 20170818 arm64: dts: Add ipq8074 SoC and HK01 board support RDMA/bnxt_re: Implement the alloc/get_hw_stats callback RDMA/bnxt_re: Allocate multiple notification queues Add OPA extended LID support SUNRPC: Add a separate spinlock to protect the RPC request receive list IB/hfi1: add const to bin_attribute structures IB/qib: add const to bin_attribute structures RDMA/uverbs: Initialize cq_context appropriately infiniband: avoid overflow warning i40iw: fix spelling mistake: "allloc_buf" -> "alloc_buf" IB/rxe: Remove unneeded check IB/rxe: Convert pr_info to pr_warn i40iw: Fixes for static checker warnings i40iw: Simplify code infiniband: pvrdma: constify pci_device_id. infiniband: nes: constify pci_device_id. infiniband: mthca: constify pci_device_id. PCI/IB: add support for pci driver attribute groups video: fbdev: vt8623fb: constify vt8623_timing_regs video: fbdev: add const to bin_attribute structures video: fbdev: xilinxfb: constify copied structure fbcon: add fbcon=margin:<color> command line option fbdev: fix 1bpp logo for unusual width video/console: Add dmi quirk table for x86 systems which need fbcon rotation ipv6: fix false-postive maybe-uninitialized warning net: hns3: Fixes the static check warning due to missing unsupp L3 proto check net: hns3: Fixes the static checker error warning in hns3_get_link_ksettings() net: hns3: Fixes the missing u64_stats_fetch_begin_irq in 64-bit stats fetch arm64: neon/efi: Make EFI fpsimd save/restore variables static net/sched: Fix the logic error to decide the ingress qdisc s390/qeth: use skb_cow_head() for L2 OSA xmit s390/qeth: unify code to build header elements s390/qeth: pass full IQD header length to fill_buffer() s390/qeth: pass TSO data offset to fill_buffer() s390/qeth: pass TSO header length to fill_buffer() s390/qeth: pass full data length to l2_fill_header() s390/qeth: split L2 xmit paths bpf: fix a return in sockmap_get_from_fd() liquidio: with embedded f/w, issue droq credits before enablement liquidio: with embedded f/w, don't reload f/w, issue pf flr at exit EDAC, thunderx: Fix error handling path in thunderx_lmc_probe() ARM: sun8i: a83t: h8homlet-v2: Enable USB ports ARM: sun8i: a83t: cubietruck-plus: Enable onboard USB peripherals ARM: sun8i: a83t: Add device node for USB OTG controller ARM: sun8i: a83t: Add USB PHY and host device nodes EDAC, altera: Fix error handling path in altr_edac_device_probe() drm/ttm: use reservation_object_trylock in ttm_bo_individualize_resv v2 drm/amdgpu: fix vega10 graphic hang issue in S3 test dt-bindings: pwm: Add description for rv1108 PWM pwm: rockchip: Add rk3328 support PCI: endpoint: Add an API to get matching "pci_epf_device_id" pwm: rockchip: Use same PWM ops for each IP PCI: endpoint: Use of_dma_configure() to set initial DMA mask pwm: rockchip: Move the configuration of polarity KVM: VMX: always require WB memory type for EPT KVM: VMX: cleanup EPTP definitions pwm: rockchip: Use pwm_apply() instead of pwm_enable() pwm: rockchip: Remove the judge from return value of pwm_config() pwm: rockchip: Add APB and function both clocks support RDMA/bnxt_re: fix spelling mistake: "Deallocte" -> "Deallocate" skd: Remove driver version information IB/hfi1: fix spelling mistake in variable name continious pwm: renesas-tpu: Remove support for SH7372 cpuset: Allow v2 behavior in v1 cgroup cgroup: Add mount flag to enable cpuset to use v2 behavior in v1 cgroup IB/qib: fix spelling mistake: "failng" -> "failing" iwcm: Don't allocate iwcm workqueue with WQ_MEM_RECLAIM cm: Don't allocate ib_cm workqueue with WQ_MEM_RECLAIM nvmet-rdma: remove redundant empty device add callout nvme-rdma: remove redundant empty device add callout RDMA/core: make ib_device.add method optional skd: Bump driver version skd: Optimize locking skd: Remove several local variables skd: Reduce memory usage skd: Remove skd_device.in_flight skd: Switch to block layer timeout mechanism skd: Convert to blk-mq skd: Coalesce struct request and struct skd_request_context skd: Move skd_free_sg_list() up skd: Split skd_recover_requests() skd: Introduce skd_process_request() skd: Convert several per-device scalar variables into atomics skd: Enable request tags for the block layer queue skd: Initialize skd_special_context.req.n_sg to one skd: Remove dead code skd: Remove SG IO support skd: Convert explicit skd_request_fn() calls skd: Rework request failing code path skd: Move a function definition skb: Use symbolic names for SCSI opcodes skd: Use kcalloc() instead of kzalloc() with multiply skd: Remove superfluous occurrences of the 'volatile' keyword skd: Remove a redundant init_timer() call skd: Use for_each_sg() skd: Drop second argument of skd_recover_requests() skd: Remove superfluous initializations from skd_isr_completion_posted() skd: Simplify the code for handling data direction skd: Use ARRAY_SIZE() where appropriate skd: Make the skd_isr() code more brief skd: Use __packed only when needed skd: Check structure sizes at build time skd: Use a structure instead of hardcoding structure offsets skd: Simplify the code for allocating DMA message buffers skd: Simplify the code for deciding whether or not to send a FIT msg skd: Reorder the code in skd_process_request() skd: Fix size argument in skd_free_skcomp() skd: Introduce SKD_SKCOMP_SIZE skd: Introduce the symbolic constant SKD_MAX_REQ_PER_MSG skd: Document locking assumptions skd: Fix endianness annotations skd: Switch from the pr_*() to the dev_*() logging functions skd: Remove useless barrier() calls skd: Remove a set-but-not-used variable from struct skd_device skd: Remove set-but-not-used local variables skd: Fix a function name in a comment skd: Fix spelling in a source code comment skd: Avoid that gcc 7 warns about fall-through when building with W=1 skd: Remove unnecessary blank lines skd: Remove ESXi code skd: Remove unneeded #include directives skd: Update maintainer information skd: Switch to GPLv2 skd: Submit requests to firmware before triggering the doorbell skd: Avoid that module unloading triggers a use-after-free block: Relax a check in blk_start_queue() xen-blkfront: Avoid that gcc 7 warns about fall-through when building with W=1 xen-blkback: Avoid that gcc 7 warns about fall-through when building with W=1 xen-blkback: Fix indentation virtio_blk: Use blk_rq_is_scsi() ide-floppy: Use blk_rq_is_scsi() genhd: Annotate all part and part_tbl pointer dereferences blk-mq-debugfs: Declare a local symbol static blk-mq: Make blk_mq_reinit_tagset() calls easier to read block: Unexport blk_queue_end_tag() block: Fix two comments that refer to .queue_rq() return values iwlwifi: use big-endian for the hw section of the nvm iwlwifi: mvm: remove useless check for mvm->cfg in iwl_parse_nvm_section() iwlwifi: mvm: remove useless argument in iwl_nvm_init() iwlwifi: fw: fix lar_enabled endian problem in iwl_fw_get_nvm iwlwifi: add workaround to disable wide channels in 5GHz btrfs: Fix -EOVERFLOW handling in btrfs_ioctl_tree_search_v2 btrfs: Move skip checksum check from btrfs_submit_direct to __btrfs_submit_dio_bio Btrfs: fix assertion failure during fsync in no-holes mode Btrfs: avoid unnecessarily locking inode when clearing a range btrfs: remove redundant check on ret being non-zero btrfs: expose internal free space tree routine only if sanity tests are enabled btrfs: Remove unused sectorsize variable from struct map_lookup btrfs: Remove never-reached WARN_ON btrfs: remove unused BTRFS_COMPRESS_LAST btrfs: use BTRFS_FSID_SIZE for fsid btrfs: use appropriate define for the fsid btrfs: increase ctx->pos for delayed dir index iwlwifi: mvm: change open and close criteria of a BA session perf annotate browser: Circulate percent, total-period and nr-samples view perf annotate browser: Support --show-nr-samples option iwlwifi: update channel flags parser iwlwifi: pci: add new PCI ID for 7265D iwlwifi: distinguish different RF modules in A000 devices perf annotate: Document --show-total-period option perf annotate stdio: Support --show-nr-samples option irqchip/armada-370-xp: Enable MSI-X support iwlwifi: mvm: Fix channel switch in case of count <= 1 iwlwifi: Demote messages about fw flags size to info ACPI: EC: Fix possible issues related to EC initialization order iwlwifi: move BT_MBOX_PRINT macro to common header iwlwifi: mvm: don't send BAR on flushed frames iwlwifi: mvm: remove session protection to allow channel switch iwlwifi: mvm: update the firmware API in TX iwlwifi: mvm: use mvmsta consistently in rs.c iwlwifi: mvm: group all dummy SAR function declarations together iwlwifi: mvm: include more debug data when we get an unexpected baid iwlwifi: mvm: add command name for FRAME_RELEASE iwlwifi: pcie: support short Tx queues for A000 device family iwlwifi: mvm: support new Coex firmware API iwlwifi: call iwl_remove_notification from iwl_wait_notification iwlwifi: mvm: consider RFKILL during INIT as success iwlwifi: mvm: remove the corunning support drm/i915/bxt: use NULL for GPIO connection ID KVM: SVM: delete avic_vm_id_bitmap (2 megabyte static array) KVM: x86: fix use of L1 MMIO areas in nested guests KVM: x86: Avoid guest page table walk when gpa_available is set KVM: x86: simplify ept_misconfig MAINTAINERS: Update the Gemini maintainer list ASoC: ux500: constify snd_soc_dai_ops structures ASoC: codecs: constify snd_soc_dai_ops structures ASoC: codecs: constify snd_soc_dai_ops structures platform/x86: wmi: Fix check for method instance number ASoC: mediatek: switch to use platform_get_irq_byname() ASoC: mediatek: Add interrupt-names property in binding text spi: omap: Allocate bus number from spi framework ASoC: tegra: Remove SoC-specific Kconfig depends and selects drm/i915: Mark the GT as busy before idling the previous request drm/i915: Trivial grammar fix s/opt of/opt out of/ in comment drm/i915: Replace execbuf vma ht with an idr drm/i915: Simplify eb_lookup_vmas() drm/i915: Convert execbuf to use struct-of-array packing for critical fields drm/i915: Check context status before looking up our obj/vma drm/i915: Don't use MI_STORE_DWORD_IMM on Sandybridge/vcs posix-cpu-timers: Use dedicated helper to access rlimit values iommu: Avoid NULL group dereference usb: gadget: f_ncm/u_ether: Move 'SKB reserve' quirk setup to u_ether usb: gadget: serial: fix oops when data rx'd after close irqdomain: Add irq_domain_{push,pop}_irq() functions irqdomain: Check for NULL function pointer in irq_domain_free_irqs_hierarchy() irqdomain: Factor out code to add and remove items to and from the revmap genirq: Add handle_fasteoi_{level,edge}_irq flow handlers genirq: Export more irq_chip_*_parent() functions arm64: dts: rockchip: disable tx ipgap linecheck for rk3399 dwc3 drm/i915: Stop touching forcewake following a gen6+ engine reset irqchip/xtensa-mx: Report that effective affinity is a single target irqchip/mips-gic: Report that effective affinity is a single target irqchip/hip04: Report that effective affinity is a single target irqchip/metag-ext: Report that effective affinity is a single target irqchip/bcm-7038-l1: Report that effective affinity is a single target irqchip/bcm-6345-l1: Report that effective affinity is a single target irqchip/armada-370-xp: Report that effective affinity is a single target irqchip/gic-v3-its: Report that effective affinity is a single target irqchip/gic-v3: Report that effective affinity is a single target irqchip/gic: Report that effective affinity is a single target genirq/proc: Use the the accessor to report the effective affinity genirq: Restrict effective affinity to interrupts actually using it genirq/debugfs: Triggering of interrupts from userspace MAINTAINERS: drm/i915 has a new maintainer team ALSA: usb-audio: don't retry snd_usb_ctl_msg after timeout USB: Gadget core: fix inconsistency in the interface tousb_add_gadget_udc_release() drm: udl: constify usb_device_id drm/gma500: fix potential NULL pointer dereference dereference iio: chemical: ccs811: Add triggered buffer support iio: srf08: add support for srf02 in i2c mode iio: srf08: add sensor type srf10 iio: srf08: add triggered buffer support iio: srf08: add device tree table drivers: soc: sunxi: add support for A64 and its SRAM C drivers: soc: sunxi: add support for remapping func value to reg value drivers: soc: sunxi: fix error processing on base address when claiming dt-bindings: add binding for Allwinner A64 SRAM controller and SRAM C bus: sunxi-rsb: Enable by default for ARM64 ACPI / PM: Check low power idle constraints for debug only ACPI / PM: Add debug statements to acpi_pm_notify_handler() ACPI: Add debug statements to acpi_global_event_handler() cpufreq: enable the DT cpufreq driver on the Ux500 cpufreq: Loongson2: constify platform_device_id cpufreq: dt: Add r8a7796 support to to use generic cpufreq driver cpufreq: remove setting of policy->cpu in policy->cpus during init cpufreq: schedutil: Always process remote callback with slow switching cpufreq: schedutil: Don't restrict kthread to related_cpus unnecessarily Revert "pstore: Honor dmesg_restrict sysctl on dmesg dumps" pstore: Make default pstorefs root dir perms 0750 mips/signal: In force_fcr31_sig return in the impossible case iio: srf08: add device tree binding for srf02 and srf10 cxgb4: Remove some dead code drm/i915: Split pin mapping into per platform functions drm/amdgpu: bump version for support of UVD MJPEG decode drm/amdgpu: add MJPEG check for UVD physical mode msg buffer drm/ttm: Fix accounting error when fail to get pages for pool drm/amd/amdgpu: expose fragment size as module parameter (v2) Input: i8042 - constify pnp_device_id Input: axp20x-pek - add support for AXP221 PEK Input: axp20x-pek - use driver_data of platform_device_id instead of extended attributes quota: Reduce contention on dq_data_lock fs: Provide __inode_get_bytes() quota: Inline dquot_[re]claim_reserved_space() into callsite quota: Inline inode_{incr,decr}_space() into callsites quota: Inline functions into their callsites ext4: Disable dirty list tracking of dquots when journalling quotas quota: Allow disabling tracking of dirty dquots in a list quota: Remove dq_wait_unused from dquot quota: Move locking into clear_dquot_dirty() quota: Do not dirty bad dquots quota: Fix possible corruption of dqi_flags perf tools: Use default CPUINFO_PROC where it fits i2c-cht-wc: Workaround CHT GPIO controller IRQ issues i2c-cht-wc: Ack read irqs after reading the data register i2c-cht-wc: Add locking to interrupt / smbus_xfer functions i2c: sh_mobile: avoid unused ret variable i2c: rcar: avoid unused ret variable Bluetooth: hci_bcm: Handle empty packet after firmware loading perf tools: Remove unused cpu_relax() macros dt-bindings: net: bluetooth: Add broadcom-bluetooth drm/amd/amdgpu: store fragment_size in vm_manager drm/amdgpu: rename VM invalidated to moved drm/amdgpu: separate bo_va structure drm/amdgpu: drop the extra VM huge page flag v2 drm/amdgpu: remove superflous amdgpu_bo_kmap in the VM drm/amdgpu: cleanup static CSA handling drm/amdgpu: SHADOW and VRAM_CONTIGUOUS flags shouldn't be used by userspace drm/amdgpu: save list length when fence is signaled drm/amdgpu: move vram usage tracking into the vram manager v2 drm/amdgpu: move gtt usage tracking into the gtt manager v2 drm/amdgpu: move debug print into the MM managers drm/amdgpu: fix incorrect use of the lru_lock drm/radeon: fix incorrect use of the lru_lock drm/ttm: make ttm_mem_type_manager_func debug more useful drm/amd/amdgpu: Add tracepoint for DMA page mapping (v4) drm/amdgpu: fix Vega10 HW config for 2MB pages drm/amdgpu: only bind VM shadows after validation v2 drm/amdgpu: only move VM BOs in the LRU during validation v2 drm/ttm: individualize BO reservation obj when they are freed drm/ttm: remove nonsense wait in ttm_bo_cleanup_refs_and_unlock Bluetooth: hci_bcm: Add serdev support perf events parse: Rename parse_events_parse arguments perf events parse: Use just one parse events state struct perf events parse: Rename parsing state struct to clearer name perf events parse: Remove some needless local variables perf trace: Fix off by one string allocation problem perf jevents: Support FCMask and PortMask tools lib bpf: Fix double file test in Makefile lsm_audit: update my email address selinux: update my email address alarmtimer: Fix unavailable wake-up source in sysfs timekeeping: Use proper timekeeper for debug code kselftests: timers: set-timer-lat: Add one-shot timer test cases kselftests: timers: set-timer-lat: Tweak reporting when timer fires early kselftests: timers: freq-step: Fix build warning kselftests: timers: freq-step: Define ADJ_SETOFFSET if device has older kernel headers ACPI / scan: Enable GPEs before scanning the namespace ACPICA: Make it possible to enable runtime GPEs earlier ACPICA: Dispatch active GPEs at init time bpf: reuse tc bpf prologue for sk skb progs bpf: don't enable preemption twice in smap_do_verdict quota: Propagate ->quota_read errors from v2_read_file_info() quota: Fix error codes in v2_read_file_info() ARM: BCM53573: Specify ports for USB LED for Tenda AC9 net: ibm: ibmvnic: constify vio_device_id net: ibm: ibmveth: constify vio_device_id quota: Push dqio_sem down to ->read_file_info() bpf: no need to nullify ri->map in xdp_do_redirect bpf: fix liveness propagation to parent in spilled stack slots ARM: dts: cygnus: Add generic-ehci/ohci nodes ARM: dts: cygnus: add serial0 alias for uart3 on bcm91130_entphn ARM: dts: cygnus: Add additional peripherals to dtsi ARM: dts: cygnus: Enable Performance Monitoring Unit ARM: dts: cygnus: place v3d in proper address ordered location ARM: dts: cygnus: Fix incorrect UART2 register base quota: Push dqio_sem down to ->write_file_info() ASoC: codecs: make snd_soc_dai_driver and snd_soc_component_driver const ASoC: bcm: make snd_soc_dai_driver const ASoC: sh: make snd_soc_ops const ASoC: samsung: make snd_soc_ops const ASoC: rockchip: make snd_soc_ops const ASoC: generic: make snd_soc_ops const ASoC: cirrus: make snd_soc_ops const ASoC: aux1x: make snd_soc_ops const net: hns3: ensure media_type is unitialized liquidio: fix spelling mistake: "interuupt" -> "interrupt" quota: Push dqio_sem down to ->get_next_id() ASoC: Intel: kbl: Enabling ASRC for RT5663 codec on kabylake platform quota: Push dqio_sem down to ->release_dqblk() quota: Remove locking for writing to the old quota format quota: Do not acquire dqio_sem for dquot overwrites in v2 format ASoC: codec: use enable pin to control dmic start and stop quota: Push dqio_sem down to ->write_dqblk() nbd: change the default nbd partitions nbd: allow device creation at a specific index dt-bindings: sound: add dmicen property in dmic driver quota: Remove locking for reading from the old quota format quota: Push dqio_sem down to ->read_dqblk() quota: Protect dquot writeout with dq_lock quota: Acquire dqio_sem for reading in vfs_load_quota_inode() quota: Acquire dqio_sem for reading in dquot_get_next_id() ASoC: Intel: Skylake: make snd_pcm_hardware const ASoC: Intel: Atom: make snd_pcm_hardware const ASoC: qcom: make snd_pcm_hardware const ASoC: sh: make snd_pcm_hardware const ASoC: kirkwood: make snd_pcm_hardware const ASoC: fsl: make snd_pcm_hardware const spi: Kernel coding style fixes quota: Do more fine-grained locking in dquot_acquire() quota: Convert dqio_mutex to rwsem ARM: dts: omap3: logicpd-torpedo-37xx-devkit: Fix MMC1 cd-gpio ARM: dts: am57xx-beagle-x15: Add support for rev C drm/tegra: Prevent BOs from being freed during job submission drm/tegra: gem: Implement mmap() for PRIME buffers drm/tegra: Support render node drm/tegra: sor: Trace register accesses drm/tegra: dpaux: Trace register accesses drm/tegra: dsi: Trace register accesses drm/tegra: hdmi: Trace register accesses drm/tegra: dc: Trace register accesses drm/tegra: sor: Use unsigned int for register offsets drm/tegra: hdmi: Use unsigned int for register offsets drm/tegra: dsi: Use unsigned int for register offsets drm/tegra: dpaux: Use unsigned int for register offsets drm/tegra: dc: Use unsigned int for register offsets drm/tegra: Fix NULL deref in debugfs/iova drm/tegra: switch to drm_*_get(), drm_*_put() helpers drm/tegra: Set MODULE_FIRMWARE for the VIC drm/tegra: Add CONFIG_OF dependency gpu: host1x: Support sub-devices recursively gpu: host1x: fix error return code in host1x_probe() gpu: host1x: Fix bitshift/mask multipliers gpu: host1x: Don't fail on NULL bo physical address i2c: taos-evm: constify serio_device_id arch: Remove spin_unlock_wait() arch-specific definitions locking: Remove spin_unlock_wait() generic definitions drivers/ata: Replace spin_unlock_wait() with lock/unlock pair ipc: Replace spin_unlock_wait() with lock/unlock pair exit: Replace spin_unlock_wait() with lock/unlock pair completion: Replace spin_unlock_wait() with lock/unlock pair dt-bindings: iio: magn: add LIS2MDL sensor device binding iio: magnetometer: add support to LIS2MDL soc/tegra: Register SoC device iio: adc: select triggered buffer for sama5d2 adc ARM: tegra: Enable UDC on AC100 ARM: tegra: Enable UDC on Jetson TK1 ARM: tegra: Enable UDC on Dalmore ARM: tegra: Enable UDC on Beaver iommu/tegra-gart: Add support for struct iommu_device iommu/tegra: Add support for struct iommu_device doc: Set down RCU's scheduling-clock-interrupt needs doc: No longer allowed to use rcu_dereference on non-pointers doc: Add RCU files to docbook-generation files doc: Update memory-barriers.txt for read-to-write dependencies ARM: defconfig: tegra: Enable ChipIdea UDC driver doc: Update RCU documentation membarrier: Provide expedited private command ARM: configs: Add Tegra I2S interfaces to multi_v7_defconfig ARM: tegra: Add Tegra I2S interfaces to defconfig spi: imx: dynamic burst length adjust for PIO mode rcu: Remove exports from rcu_idle_exit() and rcu_idle_enter() rcu: Add warning to rcu_idle_enter() for irqs enabled rcu: Make rcu_idle_enter() rely on callers disabling irqs rcu: Add assertions verifying blocked-tasks list rcu/tracing: Set disable_rcu_irq_enter on rcu_eqs_exit() rcu: Add TPS() protection for _rcu_barrier_trace strings rcu: Use idle versions of swait to make idle-hack clear ARM: tegra: Update default configuration for v4.13-rc1 swait: Add idle variants which don't contribute to load average rcu: Add event tracing to ->gp_tasks update at GP start rcu: Move rcu.h to new trivial-function style rcu: Add TPS() to event-traced strings rcu: Create reasonable API for do_exit() TASKS_RCU processing rcu: Drive TASKS_RCU directly off of PREEMPT ASoC: Intel: kbl_rt5663_rt5514_max98927: Add rt5514 spi dailink drm/i915/opregion: let user specify override VBT via firmware load arm64: dts: Add Mediatek SoC MT2712 and evaluation board dts and Makefile dt-bindings: arm: Add bindings for Mediatek MT2712 SoC Platform arm64: dts: mediatek: Delete unused dummy clock for MT6797 arm64: dts: mediatek: add watchdog to MT6797 ARM: mediatek: dts: Add MT6797 binding powerpc/mm/cxl: Add the fault handling cpu to mm cpumask powerpc/mm: Don't send IPI to all cpus on THP updates powerpc/mm: Rename find_linux_pte_or_hugepte() powerpc/bpf: Use memset32() to pre-fill traps in BPF page(s) powerpc/string: Implement optimized memset variants block/ps3vram: Check return of ps3vram_cache_init block/ps3vram: Delete an error message for a failed memory allocation in ps3vram_cache_init() dt-bindings: usb: keystone-usb: Update bindings pm and clocks properties i2c: mux: pinctrl: potential NULL dereference on error selftests/powerpc: Improve tm-resched-dscr powerpc/perf: Fix usage of nest_imc_refc powerpc: Add const to bin_attribute structures firmware: tegra: set drvdata earlier locking/lockdep: Make CONFIG_LOCKDEP_CROSSRELEASE and CONFIG_LOCKDEP_COMPLETIONS truly non-interactive ALSA: parisc: make snd_pcm_hardware const ALSA: usb: make snd_pcm_hardware const ALSA: sparc: make snd_pcm_hardware const ALSA: sh: make snd_pcm_hardware const ALSA: ppc: make snd_pcm_hardware const ALSA: pcmcia: make snd_pcm_hardware const ALSA: pci: make snd_pcm_hardware const ALSA: mips: make snd_pcm_hardware const ALSA: isa: make snd_pcm_hardware const ALSA: drivers: make snd_pcm_hardware const ALSA: atmel: make snd_pcm_hardware const ALSA: arm: make snd_pcm_hardware const ALSA: wavefront: constify pnp_card_device_id ALSA: sscape: constify pnp_card_device_id ALSA: sb16: constify pnp_card_device_id ALSA: opti9xx: constify pnp_card_device_id ALSA: msnd: constify pnp_card_device_id ALSA: gus: constify pnp_card_device_id ALSA: es1688: constify pnp_card_device_id ALSA: cs4236: constify pnp_card_device_id ALSA: cmi8330: constify pnp_card_device_id ALSA: azt2320: constify pnp_card_device_id ALSA: als100: constify pnp_card_device_id ALSA: ad1816a: constify pnp_card_device_id ALSA: opl3sa2: constify pnp_device_id and pnp_card_device_id ALSA: es18xx: constify pnp_device_id and pnp_card_device_id ALSA: drivers: mpu401: constify pnp_device_id locking/lockdep: Explicitly initialize wq_barrier::done::map locking/lockdep: Rename CONFIG_LOCKDEP_COMPLETE to CONFIG_LOCKDEP_COMPLETIONS locking/lockdep: Reword title of LOCKDEP_CROSSRELEASE config locking/lockdep: Make CONFIG_LOCKDEP_CROSSRELEASE part of CONFIG_PROVE_LOCKING Bluetooth: btbcm: Consolidate the controller information commands arm64: dts: r8a77995: add pfc device node arm64: dts: r8a7796: Add HSUSB device node arm64: dts: r8a7796: Add USB-DMAC device nodes arm64: dts: r8a7796: Add USB3.0 host device node arm64: dts: r8a7796: add USB2.0 Host (EHCI/OHCI) device nodes arm64: dts: r8a7796: add usb2_phy device nodes arm64: dts: r8a7795: correct whitespace of companion property arm64: dts: r8a7795: Use R-Car SATA Gen3 fallback compat string arm64: dts: salvator-common: Remove extra LVDS port label ARM: dts: r8a7791: Use R-Car SATA Gen2 fallback compat string ARM: dts: r8a7790: Use R-Car SATA Gen2 fallback compat string crypto: ccp - use dma_mapping_error to check map error lib/mpi: fix build with clang crypto: sahara - Remove leftover from previous used spinlock crypto: sahara - Fix dma unmap direction x86/boot/KASLR: Prefer mirrored memory regions for the kernel physical address efi: Introduce efi_early_memdesc_ptr to get pointer to memmap descriptor locking/refcounts, x86/asm: Implement fast refcount overflow protection ARM: dts: r8a7743: Add OPP table for frequency scaling ARM: dts: r8a7743: Add APMU node and second CPU core dt-bindings: apmu: Document r8a7743 support x86/mm, mm/hwpoison: Clear PRESENT bit for kernel 1:1 mappings of poison pages ARM: shmobile: document iW-RainboW-G22D SODIMM SOM Development Platform ARM: shmobile: document iW-RainboW-G22M-SM SODIMM System on Module x86/build: Fix stack alignment for CLang ARM: dts: koelsch: Add CEC clock for HDMI transmitter clk: renesas: r8a7796: Add USB3.0 clock clk: renesas: rcar-usb2-clock-sel: Add R-Car USB 2.0 clock selector PHY rsi: security enhancements for AP mode rsi: aggregation parameters frame for AP mode rsi: update tx auto rate command frame for AP mode rsi: use common descriptor for auto rate frame rsi: data and managemet path changes for AP mode rsi: handle station disconnection in AP mode rsi: handle station connection in AP mode rsi: add beacon changes for AP mode rsi: remove interface changes for AP mode rsi: add interface changes for ap mode rsi: advertise ap mode support qtnfmac: modify tx reclaim locking qtnfmac: introduce counter for Rx underflow events qtnfmac: switch to kernel circ_buf implementation qtnfmac: decrease default Tx queue size qtnfmac: skb2rbd_attach cleanup qtnfmac: use __netdev_alloc_skb_ip_align qtnfmac: switch to napi_gro_receive qtnfmac: remove unused qtnf_rx_frame declaration mwifiex: check for NL80211_SCAN_FLAG_RANDOM_ADDR during hidden SSID scan mwifiex: do not use random MAC for pre-association scanning rtc: rtctest: Improve support detection selftests/cpu-hotplug: Skip test when there is only one online cpu selftests/cpu-hotplug: exit with failure when test occured unexpected behaviors selftests: futex: convert test to use ksft TAP13 framework vmbus: remove unused vmbus_sendpacket_ctl vmbus: remove unused vmubs_sendpacket_pagebuffer_ctl vmbus: remove unused vmbus_sendpacket_multipagebuffer tcp: Export tcp_{sendpage,sendmsg}_locked() for ipv6. bpf: sock_map fixes for !CONFIG_BPF_SYSCALL and !STREAM_PARSER bpf: sockmap state change warning fix xhci: rework bus_resume and check ports are suspended before resuming them. usb: Increase root hub reset signaling time to prevent retry xhci: add port status tracing xhci: rename temp and temp1 variables xhci: Add port status decoder for tracing purposes xhci: add definitions for all port link states usb: host: xhci: rcar: Add support for R-Car H3 ES2.0 usb: host: xhci: plat: re-fact xhci_plat_priv for R-Car Gen3 usb: host: xhci: rcar: Add firmware_name selection by soc_device_match() staging: ccree: constify dev_pm_ops structures. staging: ccree: Use sizeof(variable) in memory allocs net: sched: cls_flower: fix ndo_setup_tc type for stats call tun: make tun_build_skb() thread safe net/mlx4: fix spelling mistake: "availible" -> "available" qdisc: add tracepoint qdisc:qdisc_dequeue for dequeued SKBs MAINTAINERS: update ARM/ZTE entry soc: versatile: remove unnecessary static in realview_soc_probe() ARM: Convert to using %pOF instead of full_name drm/tinydrm: make function st7586_pipe_enable static MAINTAINERS: Add drm/tinydrm maintainer entry memory: Convert to using %pOF instead of full_name drm/vc4: Use drm_gem_fb_create() drm/pl111: Use drm_gem_fb_create() and drm_gem_fb_prepare_fb() drm/fb-cma-helper: Use drm_gem_framebuffer_helper soc: Convert to using %pOF instead of full_name drm: Add GEM backed framebuffer library perf test shell: Replace '|&' with '2>&1 |' to work with more shells SUNRPC: Cleanup xs_tcp_read_common() SUNRPC: Don't loop forever in xs_tcp_data_receive() SUNRPC: Don't hold the transport lock when receiving backchannel data SUNRPC: Don't hold the transport lock across socket copy operations x86/nmi: Use raw lock PCI: keystone: Use PCI_NUM_INTX nfp: process MTU updates from firmware flower app nfp: process control messages in workqueue in flower app bpf: devmap: remove unnecessary value size check PCI: keystone: Remove duplicate MAX_*_IRQS defs bpf: selftests add sockmap tests bpf: selftests: add tests for new __sk_buff members bpf: sockmap sample program bpf: add access to sock fields and pkt data from sk_skb programs bpf: sockmap with sk redirect support bpf: export bpf_prog_inc_not_zero bpf: introduce new program type for skbs on sockets net: fixes for skb_send_sock net: add sendmsg_locked and sendpage_locked to af_inet6 net: early init support for strparser drm/gem-cma-helper: Remove drm_gem_cma_dumb_map_offset() drm/virtio: Use the drm_driver.dumb_destroy default drm/bochs: Use the drm_driver.dumb_destroy default drm/mgag200: Use the drm_driver.dumb_destroy default drm/exynos: Use .dumb_map_offset and .dumb_destroy defaults drm/msm: Use the drm_driver.dumb_destroy default drm/ast: Use the drm_driver.dumb_destroy default drm/qxl: Use the drm_driver.dumb_destroy default drm/udl: Use the drm_driver.dumb_destroy default drm/cirrus: Use the drm_driver.dumb_destroy default drm/tegra: Use .dumb_map_offset and .dumb_destroy defaults drm/gma500: Use .dumb_map_offset and .dumb_destroy defaults drm/mxsfb: Use .dumb_map_offset and .dumb_destroy defaults drm/meson: Use .dumb_map_offset and .dumb_destroy defaults drm/kirin: Use .dumb_map_offset and .dumb_destroy defaults net: 3c509: constify pnp_device_id sched/completion: Document that reinit_completion() must be called after complete_all() liquidio: update VF's netdev->max_mtu if there's a change in PF's MTU mlx4: sizeof style usage skge: add paren around sizeof arg virtio: put paren around sizeof tun/tap: use paren's with sizeof net_sched/hfsc: opencode trivial set_active() and set_passive() net_sched: call qlen_notify only if child qdisc is empty PCI: xilinx: Allow build on MIPS platforms PCI: xilinx: Don't enable config completion interrupts PCI: xilinx: Unify INTx & MSI interrupt decode PCI: xilinx-nwl: Translate INTx range to hwirqs 0-3 PCI: xilinx: Translate INTx range to hwirqs 0-3 PCI: rockchip: Factor out rockchip_pcie_get_phys() PCI: rockchip: Control optional 12v power supply dt-bindings: PCI: rockchip: Add vpcie12v-supply for Rockchip PCIe controller PCI: keystone-dw: Remove unused ks_pcie, pci variables PCI: faraday: Use PCI_NUM_INTX PCI: faraday: Fix of_irq_get() error check PCI: dra7xx: Use PCI_NUM_INTX PCI: altera: Use size=4 IRQ domain for legacy INTx PCI: altera: Remove unused num_of_vectors variable PCI: aardvark: Use PCI_NUM_INTX PCI: Add pci_irqd_intx_xlate() iommu/arm-smmu: Add system PM support iommu/arm-smmu: Track context bank state iommu/arm-smmu-v3: Implement shutdown method ACPI: SPCR: work around clock issue on xgene UART Drivers: hv: vmbus: Fix rescind handling issues Tools: hv: update buffer handling in hv_fcopy_daemon Tools: hv: fix snprintf warning in kvp_daemon Drivers: hv: kvp: Use MAX_ADAPTER_ID_SIZE for translating adapter id Drivers: hv: balloon: Initialize last_post_time on startup Drivers: hv: balloon: Show the max dynamic memory assigned Drivers: hv: balloon: Correctly update onlined page count Tools: hv: vss: Skip freezing filesystems backed by loop MAINTAINERS: Add entry for qcom_iommu spi: Pick spi bus number from Linux idr or spi alias bus: Convert to using %pOF instead of full_name firmware: Convert to using %pOF instead of full_name arm64: dts: qcom: msm8916: Add IOMMU support arm64: dts: qcom: msm8916: Add Venus video codec support ARM: dts: dra71-evm: Add pinmux configuration for MMC ARM: dts: dra72-evm-revc: Add pinmux configuration for MMC ARM: dts: dra72-evm: Add pinmux configuration for MMC ARM: dts: am572x-idk: Add pinmux configuration for MMC ARM: dts: am571x-idk: Add pinmux configuration for MMC ARM: dts: am57xx-idk: Move common MMC/SD properties to common file ARM: dts: am57xx-beagle-x15: Add pinmux configuration for MMC ARM: dts: dra7-evm: Add pinmux configuration for MMC ARM: dts: dra74x: Create a common file with MMC/SD IOdelay data ARM: dts: dra72x: Create a common file with MMC/SD IOdelay data ASoC: compress: Set reasonable compress id string Bluetooth: hci_bcm: Use operation speed of 4Mbps only for ACPI devices fs-udf: Delete an error message for a failed memory allocation in two functions drm/i915/cnl: Reuse skl_wm_get_hw_state on Cannonlake. drm/i915/gen10: implement gen 10 watermarks calculations fs-udf: Improve six size determinations drm/i915/cnl: Fix LSPCON support. drm/i915/vbt: ignore extraneous child devices for a port genirq/irq_sim: Add a devres variant of irq_sim_init() genirq/irq_sim: Add a simple interrupt simulator framework fs-udf: Adjust two checks for null pointers x86/intel_rdt: Remove redundant ternary operator on return btrfs: fix readdir deadlock with pagefault btrfs: Simplify math in should_alloc chunk btrfs: account for pinned bytes in should_alloc_chunk btrfs: prepare for extensions in compression options btrfs: allow defrag compress to override NOCOMPRESS attribute btrfs: defrag: cleanup checking for compression status btrfs: separate defrag and property compression btrfs: rename variable holding per-inode compression type Btrfs: add skeleton code for compression heuristic btrfs: account that we're waiting for IO in scrub_submit_raid56_bio_wait btrfs: account that we're waiting for DIO read btrfs: drop chunk locks at the end of close_ctree btrfs: remove trivial wrapper btrfs_force_ra btrfs: drop ancient page flag mappings btrfs: fix spelling of snapshotting btrfs: Make flush_space return void btrfs: Deprecate userspace transaction ioctls btrfs: use named constant for bdev blocksize btrfs: split write_dev_supers to two functions btrfs: refactor find_device helper btrfs: merge alloc_device helpers btrfs: merge REQ_OP and REQ_ flags to one parameter in submit_extent_page btrfs: cleanup types storing REQ_* btrfs: get fs_info from eb in btrfs_print_tree, remove argument btrfs: get fs_info from eb in btrfs_print_leaf, remove argument btrfs: simplify btrfs_dev_replace_kthread btrfs: factor reading progress out of btrfs_dev_replace_status btrfs: defrag: make readahead state allocation failure non-fatal btrfs: use GFP_KERNEL in btrfs_defrag_file btrfs: use GFP_KERNEL in mount and remount btrfs: Remove never reached error handling code in __add_reloc_root btrfs: Remove unused parameters from volume.c functions btrfs: Remove unused variables btrfs: Remove find_raid56_stripe_len btrfs: Use explicit round_down macro in btrfs resize ioctl handler btrfs: btrfs_inherit_iflags() can be static btrfs: Keep one more workspace around btrfs: drop newlines from strings when using btrfs_* helpers btrfs: qgroups: Fix BUG_ON condition in tree level check btrfs: Enhance message when a device is missing during mount btrfs: Cleanup num_tolerated_disk_barrier_failures btrfs: Allow barrier_all_devices to do chunk level device check btrfs: Do chunk level check for degraded remount btrfs: Do chunk level check for degraded rw mount btrfs: Introduce a function to check if all chunks a OK for degraded rw mount Btrfs: report errors when checksum is not found btrfs: Prevent possible ERR_PTR() dereference btrfs: Remove redundant checks from btrfs_alloc_data_chunk_ondemand btrfs: Remove redundant argument of flush_space btrfs: resume qgroup rescan on rw remount btrfs: clean up extraneous computations in add_delayed_refs btrfs: allow backref search checks for shared extents btrfs: add cond_resched() calls when resolving backrefs btrfs: backref, add tracepoints for prelim_ref insertion and merging btrfs: add a node counter to each of the rbtrees btrfs: convert prelimary reference tracking to use rbtrees reiserfs: fix spelling mistake: "tranasction" -> "transaction" perf bpf: Fix endianness problem when loading parameters in prologue drm/omap: Potential NULL deref in omap_crtc_duplicate_state() drm/omap: remove no-op cleanup code MAINTAINERS: Update entries for notification subsystem drm/omap: rename omapdrm device back drm: omapdrm: Remove omapdrm platform data ARM: OMAP2+: Don't register omapdss device for omapdrm ARM: OMAP2+: Remove unused omapdrm platform device drm: omapdrm: Remove the omapdss driver drm: omapdrm: Register omapdrm platform device in omapdss driver powerpc: Remove more redundant VSX save/tests powerpc: Remove redundant clear of MSR_VSX in __giveup_vsx() powerpc: Remove redundant FP/Altivec giveup code powerpc: Fix missing newline before { ALSA: hda: make snd_kcontrol_new const ALSA: pcxhr: make snd_kcontrol_new const ALSA: aoa: make snd_kcontrol_new const pinctrl: sh-pfc: r8a77995: Add voltage switch operations for MMC pinctrl: sh-pfc: r8a77995: Add MMC pins, groups and functions pinctrl: sh-pfc: r8a77995: Add I2C pins, groups and functions pinctrl: sh-pfc: r8a77995: Add SCIF pins, groups and functions pinctrl: sh-pfc: Initial R8A77995 PFC support pinctrl: sh-pfc: Add PORT_GP_{10,2[01]} helper macros pinctrl: sh-pfc: r8a7796: Add USB3.0 host pins, groups and functions pinctrl: sh-pfc: r8a7796: Add USB2.0 host pins, groups and functions pinctrl: sh-pfc: r8a7795: Fix to reserved MOD_SEL2 bit22 pinctrl: sh-pfc: r8a7795: Rename CS1# pin function definitions pinctrl: sh-pfc: r8a7795: Fix to delete FSCLKST pin and IPSR7 bit[15:12] register definitions pinctrl: sh-pfc: r8a7795: Fix MOD_SEL register pin assignment for TCLK{1,2}_{A,B} pins group pinctrl: sh-pfc: r8a7795: Fix NFDATA{0..13} and NF{ALE,CLE,WE_N,RE_N} pin function definitions pinctrl: sh-pfc: r8a7795: Fix FMCLK{_C,_D} and FMIN{_C,_D} pin function definitions pinctrl: sh-pfc: r8a7795: Fix SCIF_CLK_{A,B} pin's MOD_SEL assignment to MOD_SEL1 bit10 pinctrl: sh-pfc: r8a7795: Fix MOD_SEL2 bit26 to 0x0 when using SCK5_A pinctrl: sh-pfc: r8a7795: Fix MOD_SEL1 bit[25:24] to 0x3 when using STP_ISEN_1_D btrfs: remove ref_tree implementation from backref.c btrfs: btrfs_check_shared should manage its own transaction btrfs: backref, cleanup __ namespace abuse btrfs: backref, add unode_aux_to_inode_list helper btrfs: backref, constify some arguments btrfs: constify tracepoint arguments btrfs: struct-funcs, constify readers btrfs: remove unused sectorsize member btrfs: Be explicit about usage of min() btrfs: Use explicit round_down call rather than open-coding it btrfs: convert while loop to list_for_each_entry ASoC: soc-core: snd_soc_unregister_component() unregister all component ASoC: codecs: make snd_compr_ops const ASoC: Medfield: Delete an error message for a failed memory allocation in snd_mfld_mc_probe() powerpc/topology: Remove the unused parent_node() macro ASoC: Intel: constify snd_compr_codec_caps structures ASoC: Intel: Skylake: make skl_dsp_fw_ops const ASoC: Intel: kbl: make snd_pcm_hw_constraint_list const ASoC: simple-scu-card: Parse off codec widgets spi: rockchip: configure CTRLR1 according to size and data frame spi: altera: Consolidate TX/RX data register access spi: altera: Switch to SPI core transfer queue management x86/intel_rdt/cqm: Improve limbo list processing x86/intel_rdt/mbm: Fix MBM overflow handler during CPU hotplug drm: omapdrm: hdmi: Don't allocate PHY features dynamically drm: omapdrm: hdmi: Configure the PHY from the HDMI core version drm: omapdrm: hdmi: Configure the PLL from the HDMI core version drm: omapdrm: hdmi: Pass HDMI core version as integer to HDMI audio drm: omapdrm: hdmi: Replace OMAP SoC model check with HDMI xmit version drm: omapdrm: hdmi: Rename functions and structures to use hdmi_ prefix drm/omap: add OMAP5 DSIPHY lane-enable support drm/omap: use regmap_update_bit() when muxing DSI pads Bluetooth: btusb: driver to enable the usb-wakeup feature ARM: hisi: Fix typo in comment arm64: dts: hi3660: enable watchdog arm64: dts: hi3660: add bindings for DMA arm64: dts: hikey960: change bluetooth uart max-speed to 3mbps arm64: dts: hi3660: Reset the mmc hosts arm64: dts: hikey960: Add pstore support arm64: dts: hikey960: Add support for syscon-reboot-mode arm64: dts: hikey960: Add optee node arm64: dts: hi3660: add pmu dt node for hi3660 arm64: dts: hi3660: add L2 cache topology arm64: dts: hi3660: enable idle states arm64: dts: hi6220: improve g-tx-fifo-size setting for usb device arm64: dts: hi6220: add acpu_sctrl pinctrl: sh-pfc: r8a7795: Add USB 2.0 pins, groups and functions pinctrl: sh-pfc: r8a7795: Change USB3_{OVC,PWEN} definitions clk: renesas: cpg-mssr: Add R8A77995 support clk: renesas: rcar-gen3: Add support for SCCG/Clean peripheral clocks clk: renesas: rcar-gen3: Add divider support for PLL1 and PLL3 clk: renesas: Add r8a77995 CPG Core Clock Definitions powerpc/mm/hugetlb: Allow runtime allocation of 16G. powerpc/mm/hugetlb: Add support for reserving gigantic huge pages via kernel command line sparc64: Cleanup hugepage table walk functions sparc64: Add 16GB hugepage support sparc64: Support huge PUD case in get_user_pages sparc64: vcc: Add install & cleanup TTY operations sparc64: vcc: Add break_ctl TTY operation sparc64: vcc: Add chars_in_buffer TTY operation sparc64: vcc: Add write & write_room TTY operations sparc64: vcc: Add hangup TTY operation sparc64: vcc: Add open & close TTY operations sparc64: vcc: Enable LDC event processing engine sparc64: vcc: Add RX & TX timer for delayed LDC operation sparc64: vcc: Create sysfs attribute group sparc64: vcc: Enable VCC port probe and removal sparc64: vcc: TTY driver initialization and cleanup sparc64: vcc: Add VCC debug message macros sparc64: vcc: Enable VCC module in linux liquidio: added support for ethtool --set-channels feature liquidio: moved octeon_setup_interrupt to lio_core.c liquidio: moved liquidio_legacy_intr_handler to lio_core.c liquidio: moved liquidio_msix_intr_handler to lio_core.c drm/amdkfd: Implement image tiling mode support v2 drm/amdgpu: Add kgd kfd interface get_tile_config() v2 drm/amdkfd: Adding new IOCTL for scratch memory v2 drm/amdgpu: Add kgd/kfd interface to support scratch memory v2 drm/amdgpu: Program SH_STATIC_MEM_CONFIG globally, not per-VMID drm/amd: Update MEC HQD loading code for KFD drm/amdgpu: Disable GFX PG on CZ drm/amdkfd: Update PM4 packet headers drm/amdkfd: Clamp EOP queue size correctly on Gfx8 drm/amdkfd: Add more error printing to help bringup v2 drm/amdkfd: Handle remaining BUG_ONs more gracefully v2 drm/amdkfd: Allocate gtt_sa_bitmap in long units drm/amdkfd: Fix doorbell initialization and finalization drm/amdkfd: Remove BUG_ONs for NULL pointer arguments drm/amdkfd: Remove usage of alloc(sizeof(struct... drm/amdkfd: Fix goto usage v2 drm/amdkfd: Change x==NULL/false references to !x drm/amdkfd: Consolidate and clean up log commands drm/amdkfd: Clean up KFD style errors and warnings v2 drm/amdgpu: Remove hard-coded assumptions about compute pipes drm/amdkfd: Fix allocated_queues bitmap initialization drm/amdkfd: Remove bogus divide-by-sizeof(uint32_t) drm/radeon: Return dword offsets of address watch registers drm/amdkfd: Fix typo in dbgdev_wave_reset_wavefronts drm/nouveau: Fix merge commit extcon: Use tab instead of space for indentation extcon: Correct description to improve the readability extcon: Remove unused CABLE_NAME_MAX definition dt-bindings: net: ravb : Add support for r8a7745 SoC extcon: Remove deprecated extcon_set/get_cable_state_() usb: gadget: udc: Replace the deprecated extcon API phy: phy-bcm-ns2-usbdrd: Replace the deprecated extcon API ipv4: route: set ipv4 RTM_GETROUTE to not use rtnl ipv6: route: set ipv6 RTM_GETROUTE to not use rtnl ipv6: route: make rtm_getroute not assume rtnl is locked selftests: add 'ip get' to rtnetlink.sh dsa: fix flow disector null pointer mlxsw: spectrum_router: Use correct config option ipv6: fib: Provide offload indication using nexthop flags drm/i915/cnl: Setup PAT Index. mlx5: remove unnecessary pci_set_drvdata() mlx4: remove unnecessary pci_set_drvdata() drm/i915/edp: Allow alternate fixed mode for eDP if available. bpf/verifier: track liveness for pruning PCI: rcar: Fix memory leak when no PCIe card is inserted PCI: rcar: Fix error exit path PCI: Move enum pci_interrupt_pin to linux/pci.h perf script python: Add support for sqlite3 to call-graph-from-sql.py perf script python: Rename call-graph-from-postgresql.py to call-graph-from-sql.py perf script python: Add support for exporting to sqlite3 lkdtm: Add -fstack-protector-strong test arm64: dts: qcom: msm8916: Add gpu support perf scripts python: Fix query in call-graph-from-postgresql.py perf scripts python: Fix missing call_path_id in export-to-postgresql script loop: fix to a race condition due to the early registration of device PCI: pciehp: Report power fault only once until we clear it drm/amdgpu/gfx7: fix function name drm/amd/amdgpu: Disabling Power Gating for Stoney platform drm/amd/amdgpu: Added a quirk for Stoney platform drm/amdgpu: jt_size was wrongly counted twice drm/amdgpu: fix missing endian-safe guard drm/amdgpu: ignore digest_size when loading sdma fw for raven drm/amdgpu: Uninitialized variable in amdgpu_ttm_backend_bind() drm/amd/powerplay: fix coding style in hwmgr.c drm/amd/powerplay: refine dmesg info under powerplay. drm/amdgpu: don't finish the ring if not initialized drm/radeon: Fix preferred typo drm/amdgpu: Fix preferred typo drm/radeon: Fix stolen typo drm/amdgpu: Fix stolen typo drm/amd/powerplay: fix coccinelle warnings in vega10_hwmgr.c drm/amdgpu: set gfx_v9_0_ip_funcs as static drm/radeon: switch to drm_*{get,put} helpers drm/amdgpu: switch to drm_*{get,put} helpers drm/amd/powerplay: add CZ profile support drm/amd/powerplay: fix PSI not enabled by kmd drm/amd/powerplay: fix set highest mclk level failed on Vega10 drm/amd/powerplay: fix force dpm level failed on CZ drm/amdgpu: use 256 bit buffers for all wb allocations (v2) drm/amdgpu: Make amdgpu_atif_handler static drm/radeon: Make radeon_atif_handler static drm/amdgpu: Fix amdgpu_pm_acpi_event_handler warning drm/amdgpu: Fix dce_v6_0_disable_dce warning drm/amdgpu: Fix undue fallthroughs in golden registers initialization drm/amdgpu/sdma4: move wptr polling setup drm/amdgpu/sdma4: drop allocation of poll_mem_offs drm/amdgpu/sdma4: drop hdp flush from wptr shadow update drm/amdgpu/sdma4: set wptr shadow atomically (v2) drm/amdgpu: Fix KFD initialization for multi-GPU systems drm/amd/powerplay: add vclk/dclkSoftMin support for raven drm/amdgpu/sdma4: drop unused register header drm/amdgpu: drop old ip definitions for gfxhub and mmhub drm/amdgpu: make wb 256bit function names consistent drm/amdgpu: Support IOMMU on Raven drm/amdgpu: Add a parameter to amdgpu_bo_create() drm/amdgpu: use amdgpu_bo_free_kernel more often drm/amdgpu: use amdgpu_bo_create_kernel more often drm/amdgpu: add amdgpu_bo_create_reserved drm/amdgpu: improve amdgpu_bo_create_kernel drm/amdgpu: shadow and mn list are mutually exclusive drm/amdgpu: move some defines around drm/amdgpu: consistent use u64_to_user_ptr drm/amdgpu: cleanup kptr handling drm/amd/powerplay: update didt configs drm/amd/powerplay: updated vega10 fan control drm/amdgpu: update vega10 golden setting drm/amd/powerplay: delete PCC error message in smu7_hwmgr.c drm/amdgpu/sdma4: Enable sdma poll mem addr on vega10 for SRIOV drm/amdgpu/uvd7: optimize uvd initialization sequence for SRIOV drm/amdgpu/vce4: optimize vce 4.0 init table sequence for SRIOV drm/amdgpu: According hardware design revert vce and uvd doorbell assignment drm/amdgpu: Skip uvd and vce ring test for SRIOV drm/amdgpu/vce4: Remove vce interrupt enable related code for sriov drm/amdgpu: Enable uvd and vce gpu re-init for SRIOV gpu reset drm/amdgpu: Clear vce&uvd ring wptr for SRIOV drm/amdgpu: Add support for filling a buffer with 64 bit value drm/amdgpu: disable vcn power control for now drm/amdgpu/dce_virtual: remove error message for vega10 xprtrdma: Remove imul instructions from chunk list encoders s390/qeth: fix using of ref counter for rxip addresses s390/qeth: fix trace-messages for deleting rxip addresses s390/qeth: reject multicast rxip addresses s390/qeth: extract bridgeport cmd builder s390/net: reduce inlining s390/qeth: make more use of skb API s390/qeth: clean up fill_buffer() offset logic s390/qeth: straighten out fill_buffer() interface s390/qeth: simplify fragment type selection s390/qeth: remove extra L3 adapterparms query s390/qeth: remove extra L2 adapterparms query s390/qeth: don't access skb after transmission ASoC: samsung: i2s: Null pointer dereference on samsung_i2s_remove f2fs: fix potential overflow when adjusting GC cycle f2fs: avoid unneeded sync on quota file f2fs: introduce gc_urgent mode for background GC f2fs: use IPU for cold files f2fs: fix the size value in __check_sit_bitmap xprtrdma: Remove imul instructions from rpcrdma_convert_iovs() arm64: add VMAP_STACK overflow detection arm64: add on_accessible_stack() arm64: add basic VMAP_STACK support arm64: use an irq stack pointer arm64: assembler: allow adr_this_cpu to use the stack pointer arm64: factor out entry stack manipulation efi/arm64: add EFI_KIMG_ALIGN arm64: move SEGMENT_ALIGN to <asm/memory.h> arm64: clean up irq stack definitions arm64: clean up THREAD_* definitions arm64: factor out PAGE_* and CONT_* definitions arm64: kernel: remove {THREAD,IRQ_STACK}_START_SP fork: allow arch-override of VMAP stack alignment arm64: remove __die()'s stack dump ARM: multi_v7_defconfig: add CONFIG_BRCMSTB_THERMAL arm64: defconfig: add CONFIG_BRCMSTB_THERMAL ASoC: cygnus: Add support for 384kHz frame rates regulator: add fixes with MT6397 dt-bindings shouldn't reference driver regulator: add fixes with MT6323 dt-bindings shouldn't reference driver regulator: add fixes with MT6311 dt-bindings shouldn't reference driver ASoC: spear: constify snd_soc_dai_ops structures ASoC: codecs: zx_aud96p22: constify snd_soc_dai_ops structures ASoC: codecs: es8316: constify snd_soc_dai_ops structures ASoC: rockchip: constify snd_soc_dai_ops structures ASoC: blackfin: constify snd_soc_dai_ops structures kvm: avoid uninitialized-variable warnings gfs2: fix slab corruption during mounting and umounting gfs file system ARM: dts: uniphier: add Denali NAND controller node ARM: dts: uniphier use #include instead of /include/ libnvdimm, pfn, dax: limit namespace alignments to the supported set iommu/vt-d: Make use of iova deferred flushing iommu/vt-d: Allow to flush more than 4GB of device TLBs iommu/amd: Make use of iova queue flushing iommu/iova: Add flush timer iommu/iova: Add locking to Flush-Queues iommu/iova: Add flush counters to Flush-Queue implementation iommu/iova: Implement Flush-Queue ring buffer iommu/iova: Add flush-queue data structures iommu/of: Fix of_iommu_configure() for disabled IOMMUs iommu/s390: Add support for iommu_device handling iommu/amd: Disable iommu only if amd_iommu=off is specified iommu/amd: Don't copy GCR3 table root pointer iommu/amd: Allocate memory below 4G for dev table if translation pre-enabled iommu/amd: Use is_attach_deferred call-back iommu: Add is_attach_deferred call-back to iommu-ops iommu/amd: Do sanity check for address translation and irq remap of old dev table entry iommu/amd: Copy old trans table from old kernel iommu/amd: Add function copy_dev_tables() iommu/amd: Define bit fields for DTE particularly Revert "iommu/amd: Suppress IO_PAGE_FAULTs in kdump kernel" iommu/amd: Add several helper functions iommu/amd: Detect pre enabled translation arm64: defconfig: add recently added crypto drivers as modules arm64: defconfig: enable CONFIG_UNIPHIER_WATCHDOG btrfs: Add zstd support lib: Add zstd modules lib: Add xxhash module arm64: defconfig: Enable CONFIG_WQ_POWER_EFFICIENT_DEFAULT ARM: dts: sk-rzg1e: add Ether pins ARM: dts: sk-rzg1e: add SCIF2 pins ARM: dts: r8a7745: add PFC support NFS: Wait for requests that are locked on the commit list NFSv4/pnfs: Replace pnfs_put_lseg_locked() with pnfs_put_lseg() NFS: Switch to using mapping->private_lock for page writeback lookups. NFS: Use an atomic_long_t to count the number of commits NFS: Use an atomic_long_t to count the number of requests NFSv4: Use a mutex to protect the per-inode commit lists NFS: Refactor nfs_page_find_head_request() NFSv4: Convert nfs_lock_and_join_requests() to use nfs_page_find_head_request() NFS: Fix up nfs_page_group_covers_page() NFS: Remove unused parameter from nfs_page_group_lock() NFS: Remove unuse function nfs_page_group_lock_wait() NFS: Remove nfs_page_group_clear_bits() NFS: Fix nfs_page_group_destroy() and nfs_lock_and_join_requests() race cases NFS: Further optimise nfs_lock_and_join_requests() NFS: Reduce inode->i_lock contention in nfs_lock_and_join_requests() NFS: Remove page group limit in nfs_flush_incompatible() NFS: Teach nfs_try_to_update_request() to deal with request page_groups NFS: Fix the inode request accounting when pages have subrequests NFS: Don't unlock writebacks before declaring PG_WB_END NFS: Don't check request offset and size without holding a lock NFS: Fix an ABBA issue in nfs_lock_and_join_requests() NFS: Fix a reference and lock leak in nfs_lock_and_join_requests() NFS: Ensure we always dereference the page head last NFS: Reduce lock contention in nfs_try_to_update_request() NFS: Reduce lock contention in nfs_page_find_head_request() NFS: Simplify page writeback ARM: OMAP4+: PRM: fix of_irq_get() result checks ARM: OMAP3+: PRM: fix of_irq_get() result check drm/i915: Add support for drm syncobjs memory: mtk-smi: Handle return value of clk_prepare_enable iommu/qcom: Initialize secure page table iommu/qcom: Add qcom_iommu iommu/arm-smmu: Split out register defines Docs: dt: document qcom iommu bindings drm/i915: Handle full s64 precision for wait-ioctl hwmon: (aspeed-pwm) add THERMAL dependency drm/i915: Split obj->cache_coherent to track r/w printk: Clean up do_syslog() error handling perf test shell vfs_getname: Skip for tools built with NO_LIBDWARF=1 perf test shell: Check if 'perf probe' is available, skip tests if not perf tests shell: Remove duplicate skip_if_no_debuginfo() function arm64: numa: Remove the unused parent_node() macro drm/etnaviv: switch GEM allocations to __GFP_RETRY_MAYFAIL drm/etnaviv: don't fail GPU bind when CONFIG_THERMAL isn't enabled mm/hugetlb: Allow arch to override and call the weak function powerpc/hugetlb: fix page rights verification in gup_hugepte() powerpc/mm: Simplify __set_fixmap() powerpc/mm: declare some local functions static powerpc/mm: Implement STRICT_KERNEL_RWX on PPC32 powerpc/mm: Fix kernel RAM protection after freeing unused memory on PPC32 powerpc/mm: Ensure change_page_attr() doesn't invalidate pinned TLBs powerpc/8xx: Reduce DTLB miss handler by one insn powerpc/8xx: mark init functions with __init powerpc/8xx: Do not allow Pinned TLBs with STRICT_KERNEL_RWX or DEBUG_PAGEALLOC powerpc/8xx: Make pinning of ITLBs optional powerpc/32: Avoid risk of unrecoverable TLBmiss inside entry_32.S powerpc/8xx: Remove macro that checks kernel address powerpc/8xx: Ensures RAM mapped with LTLB is seen as block mapped on 8xx. drm/i915/hsw+: Add support for multiple power well regs drm: omapdrm: Remove dss_features.h drm: omapdrm: Move supported outputs feature to dss driver drm: omapdrm: Move DSS_FCK feature to dss driver drm: omapdrm: Move PCD, LINEWIDTH and DOWNSCALE features to dispc driver drm: omapdrm: Move FEAT_PARAM_DSI* features to dsi driver drm: omapdrm: Move FEAT_* features to dispc driver drm: omapdrm: Move FEAT_LCD_CLK_SRC feature to dss_features structure drm: omapdrm: Move FEAT_DPI_USES_VDDS_DSI feature to dpi code drm: omapdrm: Move FEAT_HDMI_* features to hdmi4 driver drm: omapdrm: Move FEAT_DSI_* features to dsi driver drm: omapdrm: Move FEAT_VENC_REQUIRES_TV_DAC_CLK to venc driver drm: omapdrm: Move reg_fields to dispc_features structure drm: omapdrm: Move DISPC_CLK_SWITCH reg feature to struct dss_features drm: omapdrm: Move num_ovls and num_mgrs to dispc_features structure drm: omapdrm: Move overlay caps features to dispc_features structure drm: omapdrm: Move color modes feature to dispc_features structure drm: omapdrm: Move size unit features to dispc_features structure drm: omapdrm: Move shutdown() handler from core to dss drm: omapdrm: Move all debugfs code from core to dss drm: omapdrm: dss: Initialize DSS internal features at probe time drm: omapdrm: dss: Use supported outputs instead of display types drm: omapdrm: dss: Select features based on compatible string drm: omapdrm: dpi: Replace OMAP SoC model checks with DSS model drm: omapdrm: dispc: Select features based on compatible string drm: omapdrm: Don't forward set_min_bus_tput() to no-op platform code drm: omapdrm: dsi: Handle pin muxing internally drm: omapdrm: dsi: Store DSI model and PLL hardware data in OF data drm: omapdrm: dss: Split operations out of dss_features structure drm: omapdrm: hdmi: Store PHY features in PHY data structure drm: omapdrm: venc: Don't export omap_dss_pal_vm and omap_dss_ntsc_vm drm: omapdrm: dpi: Remove unneeded regulator check drm: omapdrm: panel-dpi: Remove unneeded check for OF node drm: omapdrm: connector-analog-tv: Remove unneeded check for OF node drm: omapdrm: acx565akm: Remove unneeded check for OF node ARM: OMAP2+: Register SoC device attributes from machine .init() drm/omap: panel-dsi-cm: constify attribute_group structures. drm/omap: panel-sony-acx565akm: constify attribute_group structures. drm/omap: constify attribute_group structures. drm/omap: dma-buf: Constify dma_buf_ops structures. drm/omap: omap_display_timings: constify videomode structures drm/omap: displays: encoder-tpd12s015: Support for hot plug detection drm/omap: displays: connector-hdmi: Support for hot plug detection drm/omap: Support for HDMI hot plug detection drm/omap: fix memory leak when FB init fails ACPI: SPCR: extend XGENE 8250 workaround to m400 ALSA: firewire-motu: constify snd_rawmidi_ops structures power: wm831x_power: Support USB charger current limit management usb: phy: Add USB charger support include: uapi: usb: Introduce USB charger type and state definition mtd: physmap_of: Retire Gemini pad control mtd: physmap_of: Fix resources leak in 'of_flash_probe()' mtd: pci: constify pci_device_id. mtd: intel_vr_nor: constify pci_device_id. mtd: ck804xrom: constify pci_device_id. mtd: esb2rom: constify pci_device_id. mtd: amd76xrom: constify pci_device_id. mtd: ichxrom: constify pci_device_id. mtd: only use __xipram annotation when XIP_KERNEL is set mtd: Convert to using %pOF instead of full_name mtd: physmap_of: Drop unnecessary static mtd: spear_smi: add NULL check on devm_kzalloc() return value iommu/pamu: Add support for generic iommu-device iommu/pamu: WARN when fsl_pamu_probe() is called more than once iommu/pamu: Make driver depend on CONFIG_PHYS_64BIT iommu/pamu: Let PAMU depend on PCI ASoC: Freescale: Delete an error message for a failed memory allocation in three functions regulator: Add document for MediaTek MT6380 regulator regulator: mt6380: Add support for MT6380 drm/i915: Work around GCC anonymous union initialization bug usb: gadget: f_fs: Pass along set_halt errors. usb: bdc: Add support for USB phy usb: bdc: Enable in Kconfig for ARCH_BRCMSTB systems usb: bdc: fix "xsf for ep not enabled" errror usb: bdc: Add support for suspend/resume usb: bdc: hook a quick Device Tree compatible string usb: bdc: Small code cleanup usb: bdc: Add clock enable for new chips with a separate BDC clock dt-bindings: usb: bdc: Add Device Tree binding for Broadcom UDC driver usb: bdc: Fix misleading register names usb: gadget: add RNDIS configfs options for class/subclass/protocol usb: phy-tahvo: constify attribute_group structures. usb: phy-mv-usb: constify attribute_group structures. usb: dwc2: skip L2 state of hcd if controller work in device mode usb: renesas_usbhs: gadget: fix spin_lock_init() for &uep->lock usb: gadget: core: unmap request from DMA only if previously mapped usb: gadget: allow serial gadget console on other configs usb: dwc2: gadget: make usb_ep_ops const usb: gadget: udc: renesas_usb3: make usb_ep_ops const usb: renesas_usbhs: gadget: make usb_ep_ops const usb: dwc3: of-simple: remove include of clk-provider.h usb: gadget: f_midi: Use snd_card_free_when_closed with refcount powerpc/chrp: Store the intended structure powerpc/l2cr_6xx: Fix invalid use of register expressions powerpc/iommu: Avoid undefined right shift in iommu_range_alloc() powerpc/perf/imc: Fix nest events on muti socket system powerpc/mm/nohash: Move definition of PGALLOC_GFP to fix build errors usb: gadget: f_midi: add super speed support usb: gadget: dummy: fix infinite loop because of missing loop decrement usb: gadget: f_midi: constify snd_rawmidi_ops structures usb: mtu3: add generic compatible string usb: gadget: f_hid: {GET,SET} PROTOCOL Support usb: mtu3: fix ip sleep auto-exit issue when enable DRD mode usb: mtu3: clear u1/u2_enable to 0 in mtu3_gadget_reset usb: mtu3: handle delayed status of the control transfer usb: phy: qcom: Use devm_ioremap_resource() usb: gadget: fsl_qe_udc: constify qe_ep0_desc usb: gadget: udc: renesas_usb3: add support for R-Car M3-W gpio: aspeed: Remove reference to clock name in debounce warning message dt-bindings: gpio: aspeed: Remove reference to clock name pinctrl: qcom: spmi-gpio: Add dtest route for digital input pinctrl: qcom: spmi-gpio: Add support for GPIO LV/MV subtype HID: prodikeys: constify snd_rawmidi_ops structures HID: sensor: constify platform_device_id HID: input: throttle battery uevents x86/xen/64: Fix the reported SS and CS in SYSCALL drm/i915: Initialize 'data' in intel_dsi_dcs_backlight.c drm/i915/dp: Validate the compliance test link parameters drm/i915/dp: Generalize intel_dp_link_params function to accept arguments to be validated mfd: tps65010: Move header file out of I2C realm mfd: dm355evm_msp: Move header file out of I2C realm thermal: intel_pch_thermal: Fix enable check on Broadwell-DE sound: emu8000: constify emu8000_ops ALSA: rme9652: Use common error handling code in two functions powerpc/xmon: Exclude all of xmon from ftrace liquidio: fix issues with fw_type module parameter mlxsw: spectrum_router: Add support for nexthop group consolidation for IPv6 mlxsw: spectrum_router: Prepare nexthop group's hash table for IPv6 liquidio: added support for ethtool --set-ring feature liquidio: moved liquidio_setup_io_queues to lio_core.c liquidio: moved liquidio_napi_poll to lio_core.c liquidio: moved liquidio_napi_drv_callback to lio_core.c liquidio: moved liquidio_push_packet to lio_core.c liquidio: moved octeon_setup_droq to lio_core.c liquidio: moved update_txq_status to lio_core.c liquidio: moved wait_for_pending_requests to octeon_network.h Input: ati_remote2 - constify usb_device_id Input: sun4i-ts - constify thermal_zone_of_device_ops structures Input: pcspkr - fix code style and error value in pcspkr_event arm64: allwinner: a64: Add A64-OLinuXino initial support arm64: allwinner: a64: Add initial NanoPi A64 support Input: mxs-lradc - make symbol mxs_lradc_ts_irq_names static Bluetooth: btusb: Add workaround for Broadcom devices without product id Input: mxs-lradc - use correct error check Input: mxs-lradc - do a NULL check on iores drm/i915/gvt: Fix guest i915 full ppgtt blocking issue drm/i915: Enable guest i915 full ppgtt functionality drm/i915: Disconnect 32 and 48 bit ppGTT support staging: pi433: rf69.c style fix - spaces open brace staging: pi433: rf69.c style fix - else close brace staging: pi433: rf69.c style fix - that open brace staging: pi433: style fix - space after asterisk staging: pi433: reduce stack size in tx thread staging: pi433: Use matching enum types calling rf69_set_packet_format staging: fsl-mc: add explicit dependencies for compile-tested arches staging: fsl-mc: fix resource_size.cocci warnings device property: use of_graph_get_remote_endpoint() for of_fwnode drm/vc4: Continue the switch to drm_*_put() helpers PCI/MSI: Assume MSIs use real Requester ID, not an alias platform/x86: ideapad-laptop: Expose conservation mode switch ARM: dts: rockchip: add spi dt node for rv1108 leds: pca955x: add GPIO support leds: pca955x: use devm_led_classdev_register leds: pca955x: add device tree support i2c: aspeed: add proper support fo 24xx clock params i2c: tegra: explicitly request exclusive reset control i2c: sun6i-pw2i: explicitly request exclusive reset control i2c: stm32f4: explicitly request exclusive reset control i2c: mv64xxx: explicitly request exclusive reset control drm/vc4: Fix leak of HDMI EDID hwmon: (pmbus) Add debugfs for status registers ARM: dts: nokia n900: update dts with camera support ARM: dts: Add support for dra76-evm ARM: dts: Add support for dra76x family of devices ARM: dts: DRA7: Add pcie1 dt node for EP mode ARM: dts: am335x: add support for Moxa UC-8100-ME-T open platform ARM: dts: dra7xx: Enable NAND dma prefetch by default ARM: dts: am437xx: Enable NAND dma prefetch by default ARM: dts: am335x-evm: Enable NAND dma prefetch by default ARM: dts: omap4-droid4: Add vibrator ARM: dts: motorola-cpcap-mapphone: set initial mode for vaudio ARM: dts: omap3: Remove needless interrupt-parent property ARM: dts: Disable HDMI CEC internal pull-ups ARM: dts: am437x-gp-evm: Add support for buzzer Change Kconfig description Allow Mellanox switch devices to be configured if only I2C bus is set net: phy: Use tab for indentation in Kconfig mlxsw: spectrum_router: Use one LPM tree for all virtual routers mlxsw: spectrum_router: Pass argument explicitly mlxsw: spectrum_router: Return void from deletion functions ARM: dts: bcm283x: Add 32-bit enable method for SMP dt-bindings: arm: add SMP enable-method for BCM2836 qlge: fix duplicated code for different branches liquidio: fix duplicated code for different branches liquidio: update debug console logging mechanism PCI: vmd: Free up IRQs on suspend path ARM: omap2plus_defconfig: Enable LP87565 ARM: OMAP: dra7: powerdomain data: Register SoC specific powerdomains ARM: dra762: Enable SMP for dra762 ARM: dra7: hwmod: Register dra76x specific hwmod ARM: dra762: Add support for device identification ARM: OMAP2+: board-generic: add support for dra762 family selftests: capabilities: convert error output to TAP13 ksft framework dma-buf: fix reservation_object_wait_timeout_rcu to wait correctly v2 dma-buf: add reservation_object_copy_fences (v2) ASoC: hdmi-codec: make a function and two arrays static ASoC: DaVinci: Delete an error message for a failed memory allocation in two functions ASoC: rockchip: Delete an error message for a failed memory allocation in rockchip_i2s_probe() ASoC: fsi: Delete an error message for a failed memory allocation in fsi_probe() ASoC: kirkwood: Delete an error message for a failed memory allocation in kirkwood_i2s_dev_probe() ASoC: dwc: Delete an error message for a failed memory allocation in dw_i2s_probe() ASoC: blackfin: Add some spaces for better code readability ASoC: blackfin: Use common error handling code in sport_create() ASoC: blackfin: Delete an error message for a failed memory allocation in sport_create() ASoC: sun4i-i2s: Add TX FIFO offset to quirks ASoC: sun4i-i2s: Add regmap config to quirks ASoC: sun4i-i2s: Add clkdiv offsets to quirks spi: rockchip: add compatible string for rv1108 spi ASoC: sh: constify snd_pcm_ops structures ASoC: nuc900: constify snd_pcm_ops structures ASoC: intel: constify snd_pcm_ops structures ASoC: Intel: make snd_soc_platform_driver const ASoC: codecs: make snd_soc_platform_driver const ASoC: soc-utils: make snd_soc_platform_driver const ASoC: txx9: constify snd_pcm_ops structures ASoC: txx9: make snd_soc_platform_driver const ASoC: sh: make snd_soc_platform_driver const ASoC: qcom: make snd_soc_platform_driver const ASoC: pxa: constify snd_pcm_ops structures ASoC: pxa: make snd_soc_platform_driver const ASoC: omap: make snd_soc_platform_driver const ASoC: omap: constify snd_pcm_ops structures ASoC: nuc900: make snd_soc_platform_driver const ASoC: fsl: make snd_soc_platform_driver const ASoC: fsl: constify snd_pcm_ops structures ASoC: blackfin: constify snd_pcm_ops structures ASoC: au1x: constify snd_pcm_ops structures ASoC: rt5663: Fine tune for the headphone output pop sound ASoC: samsung: make snd_soc_platform_driver const ASoC: samsung: constify snd_pcm_ops structures ASoC: samsung: make tm2_dapm_widgets and tm2_pm_ops static ASoC: zx_aud96p22: make array aud96p22_dt_ids static ASoC: rt5514: make array rt5514_dai static ASoC: max98926: make max98926_spk_tlv and max98926_current_tlv static mtd: spi-nor: fix "No newline at end of file" soc: mediatek: add SCPSYS power domain driver for MediaTek MT7622 SoC soc: mediatek: add header files required for MT7622 SCPSYS dt-binding soc: mediatek: reduce code duplication of scpsys_probe across all SoCs dt-bindings: soc: update the binding document for SCPSYS on MediaTek MT7622 SoC mtd: spi-nor: aspeed: set 4B setting for all chips ARM: align .data section arizona: anc: Correct setting of FCx_MIC_MODE_SEL arm: dts: mt7623: cleanup binding file IB/hns: Avoid compile test under non 64bit environments arm: dts: mt7623: Add SD-card and EMMC to bananapi-r2 Revert "RDMA/hns: fix build regression" arm64: defconfig: enable DMA driver for hi3660 arm64: defconfig: enable OP-TEE arm64: defconfig: enable support for serial port connected device arm64: defconfig: enable CONFIG_SYSCON_REBOOT_MODE arm64: defconfig: enable support hi6421v530 PMIC drm/i915: More surgically unbreak the modeset vs reset deadlock drm/i915: Push i915_sw_fence_wait into the nonblocking atomic commit drm/i915: Avoid the gpu reset vs. modeset deadlock debugobjects: Make kmemleak ignore debug objects arm64: defconfig: enable Kirin PCIe arm64: defconfig: enable SCSI_HISI_SAS_PCI clk: sunxi-ng: nkm: add support for fixed post-divider clk: sunxi-ng: div: Add support for fixed post-divider ARM64: dts: marvell: enable USB host on Armada-8040-DB ARM64: dts: marvell: enable USB host on Armada-7040-DB ARM64: dts: marvell: add NAND support on the CP110 arm64: dts: hisi: add PCIe host controller node for hip07 SoC gpio: 74x164: Introduce 'enable-gpios' property gpio: max77620: Make regmap_irq_chip const gpio: zynq: Fix driver function parameters alignment gpio: zynq: Fix warnings in the driver gpio: zynq: Fix empty lines in driver gpio: zynq: Fix kernel doc warnings gpio: zynq: Provided workaround for GPIO gpio: zynq: Add support for suspend resume gpio: Add support for TPS68470 GPIOs ARM: dts: rockchip: add saradc support for rv1108 gpio: davinci: Handle the return value of davinci_gpio_irq_setup function dt-bindings: gpio: davinci: Add keystone-k2g compatible gpio: vf610: add imx7ulp support gpio: msic: fix error return code in platform_msic_gpio_probe() gpio: omap : Add missing clk_unprepare(). gpio: mb86s7x: Handle return value of clk_prepare_enable. gpio: it87: add support for IT8772F Super I/O. gpio: tegra: Use unsigned int where possible pinctrl: add a Gemini SoC pin controller pinctrl: check ops->pin_config_set in pinconf_set_config() pinctrl: intel: Add Intel Denverton pin controller support pinctrl: add __rcu annotations to fix sparse warnings pinctrl: nomadik: fix incorrect type in return expression pinctrl: sirf: add static to local data pinctrl: armada-37xx: add static to local data gpio: tegra: Fix checkpatch warnings gpio: tegra: Prefer kcalloc() over kzalloc() with multiplies gpio: tegra: Remove unnecessary check gpio: Use unsigned int for of_gpio_n_cells docs: driver-api: Add GPIO section gpio: sysfs: Fixup kerneldoc gpio: acpi: Fixup kerneldoc gpio: devres: Improve kerneldoc gpio: of: Improve kerneldoc gpio: Cleanup kerneldoc gpio: tegra: Use platform_get_irq() gpio: tegra: Use platform_irq_count() gpio: Convert to using %pOF instead of full_name gpio: davinci: Convert prinkt to dev_err gpio: davinci: Use devm_gpiochip_add_data in place of gpiochip_add_data gpio: altera-a10sr: constify gpio_chip structure dt-bindings: gpio-vf610: add imx7ulp support gpio: gpio-mxc: gpio_set_wake_irq() use proper return values gpio: rcar: add gen[123] fallback compatibility strings gpio: replace __maybe_unused in gpiolib.h with static inline gpio: tegra: remove gpio_to_irq() from hw irq handlers gpio: pxa: remove gpio_to_irq() from hw irq handlers gpiolib: allow gpio irqchip to map irqs dynamically gpiolib: request the gpio before querying its direction gpio: pca953x: remove incorrect le16_to_cpu calls pinctrl: uniphier: widen all pinconf-derived arguments to u32 pinctrl: sunxi: fix V3s pinctrl driver IRQ bank base pinctrl: move const qualifier before struct dt-bindings: pinctrl: mt2712: add binding document pinctrl-st: fix of_irq_to_resource() result check pinctrl: Add DT bindings for Cortina Gemini pinctrl: rockchip: add input schmitt support for rv1108 pinctrl: intel: wrap Intel pin control drivers in an architecture check pinctrl: sirf: atlas7: fix of_irq_get() error check pinctrl: Add pmi8994 gpio bindings pinctrl: rockchip: Add rk3128 pinctrl support pinctrl: rockchip: Use common interface for recalced iomux pinctrl: bcm2835: Remove unneeded irq_group field pinctrl: sirf: atlas7: Initialize GPIO offset pinctrl: Convert to using %pOF instead of full_name pinctrl: tegra: explicitly request exclusive reset control pinctrl: sunxi: explicitly request exclusive reset control pinctrl: stm32: explicitly request exclusive reset control pinctrl: aspeed: g5: Add USB device and host support pinctrl: aspeed: g4: Add USB device and host support dt-bindings: pinctrl: aspeed: Add g5 USB functions dt-bindings: pinctrl: aspeed: Add g4 USB functions pinctrl: zte: fix 'functions' allocation in zx_pinctrl_build_state() pinctrl: qcom: ssbi: mpp: constify gpio_chip structure pinctrl: bcm2835: constify gpio_chip structure pinctrl: zynq: Fix warnings in the driver pinctrl: zynq: Fix kernel doc warnings pinctrl: st: constify gpio_chip structure pinctrl: baytrail: Do not call WARN_ON for a firmware bug pinctrl: pinctrl-imx7ulp: add gpio_set_direction support pinctrl: imx: make imx_pmx_ops.gpio_set_direction platform specific callbacks pinctrl: imx: remove gpio_request_enable and gpio_disable_free pinctrl: imx: add imx7ulp driver pinctrl: imx: switch to use the generic pinmux property dt-bindings: pinctrl: add imx7ulp pinctrl binding doc pinctrl: uniphier: add UniPhier PXs3 pinctrl driver pinctrl: uniphier: add suspend / resume support pinctrl: uniphier: omit redundant input enable bit information pinctrl: uniphier: clean up GPIO port muxing pinctrl: uniphier: fix pin_config_get() for input-enable pinctrl: uniphier: remove unneeded EXPORT_SYMBOL_GPL() pinctrl: qcom: msm: constify gpio_chip structure pinctrl: qcom: ssbi-gpio: constify gpio_chip structure pinctrl: coh901: constify gpio_chip structure pinctrl: nomadik: abx500: constify gpio_chip structure pinctrl: vt8500: wmt: constify gpio_chip structure pinctrl: rza1: constify gpio_chip structure pinctrl: sunxi: rename R_PIO i2c pin function name pinctrl: sunxi: add support of R40 to A10 pinctrl driver pinctrl: msm: add support to configure ipq40xx GPIO_PULL bits pinctrl: qcom: ipq4019: add most remaining pin definitions dt-bindings: pinctrl: add most other IPQ4019 pin functions and groups powerpc/xmon: Disable tracing when entering xmon powerpc/xmon: Dump ftrace buffers for the current CPU only drivers/macintosh: Make wf_control_ops and wf_pid_param const powerpc/perf: Fix double unlock in imc_common_cpuhp_mem_free() powerpc/8xx: Fix two CONFIG_8xx left behind locking/lockdep: Fix the rollback and overwrite detection logic in crossrelease locking/lockdep: Add a comment about crossrelease_hist_end() in lockdep_sys_exit() MAINTAINERS: Add missed file for Hyper-V genirq: Fix for_each_action_of_desc() macro i2c: mux: pinctrl: drop the idle_state member i2c: mux: pinctrl: remove platform_data i2c: mux: mlxcpld: move header file out of I2C realm i2c: mux: pca954x: move header file out of I2C realm i2c: mux: pca9541: sort include files uapi/linux/quota.h: Do not include linux/errno.h x86/intel_rdt: Modify the intel_pqr_state for better performance x86/intel_rdt/cqm: Clear the default RMID during hotcpu drm/i915/gen9: Send all components in VF state reset: uniphier: add analog amplifiers reset control reset: uniphier: add video input subsystem reset control reset: uniphier: add audio systems reset control arm64: defconfig: Enable REGULATOR_AXP20X arm64: defconfig: Enable MFD_AXP20X_RSB ARM: dts: r8a7743: Add I2C DT support net: ti: cpsw:: constify platform_device_id net: sh_eth: constify platform_device_id net: dpaa_eth: constify platform_device_id can: constify platform_device_id tap: make struct tap_fops static virtio-net: make array guest_offloads static of_mdio: merge branch tails in of_phy_register_fixed_link() net: ipv4: add check for l3slave for index returned in IP_PKTINFO net: vrf: Drop local rtable and rt6_info net: ipv4: remove unnecessary check on orig_oif vxlan: change vxlan_[config_]validate() to use netlink_ext_ack for error reporting tap: XDP support net: export some generic xdp helpers tap: use build_skb() for small packet rtnelink: Move link dump consistency check out of the loop arm64: dts: zte: add initial zx296718-pcbox board support arm64: dts: zx296718-evb: add I2S sound card support arm64: dts: zx296718-evb: use audio-graph-card for HDMI audio arm64: dts: zx296718: add irdec device for remote control arm64: dts: zx296718: add PWM device support arm64: dts: zx296718: add voltage data into OPP table arm64: dts: zx296718: set a better parent clock for I2S0 arm64: dts: zx296718: add pinctrl and gpio devices arm64: dts: zx296718: add I2S and I2C audio codec arm64: dts: zx296718: add VGA device support arm64: select PINCTRL for ZTE platform ARM: dts: imx6q-bx50v3: Enable i2c recovery mechanism arm64: dts: ls1088: Correction in Board name from "L1088A" to "LS1088A" ARM: dts: imx6q-apalis-eval: add support for Apalis Evaluation Board ARM: dts: imx6: add support for Toradex Ixora V1.1 carrier board ARM: dts: imx6qdl-apalis: imx6q-apalis-ixora: use i2c from dwc hdmi ARM: dts: imx6q-apalis-ixora: add camera i2c bus definition ARM: dts: imx6q-apalis-ixora: get rid of obsolete fusion comment ARM: dts: imx6qdl-apalis: reword cam i2c comment ARM: dts: imx6qdl-apalis: imx6q-apalis-ixora: get rid of tegra legacy gen1_i2c comment ARM: dts: imx6q-apalis-ixora: combine aliases ARM: dts: imx6qdl-apalis: split usdhc1 pinctrl to support 4- and 8-bit ARM: dts: imx6q-apalis-ixora: fix usdhc2 pinctrl property arm64: dts: ls208xa: add cpu idle support arm64: dts: ls1088a: add cpu idle support NFSv4: Use the nfs4_state being recovered in _nfs4_opendata_to_nfs4_state() NFSv4: Use correct inode in _nfs4_opendata_to_nfs4_state() i2c-cht-wc: Add Intel Cherry Trail Whiskey Cove SMBUS controller driver hwmon: (aspeed-pwm-tacho) cooling device support. Documentation: dt-bindings: aspeed-pwm-tacho cooling device. hwmon: (pmbus): Add generic alarm bit for iin and pin hwmon: (pmbus): Access word data for STATUS_WORD hwmon: (pmbus): Switch status registers to 16 bit hwmon: (it87) Reapply probe path chip registers settings after resume hwmon: (it87) Split out chip registers setting code on probe path hwmon: (scpi) constify thermal_zone_of_device_ops structures hwmon: (core) constify thermal_zone_of_device_ops structures hwmon: (i5k_amb) constify pci_device_id hwmon: (ads1015) Convert to using %pOF instead of full_name hwmon: (jc42) Add support for CAT34TS02C hwmon: (jc42) Add support for GT30TS00, GT34TS02, and CAT34TS04 hwmon: (adt7475) constify attribute_group structures. hwmon: (adc128d818) constify attribute_group structures. hwmon: (nct7802) constify attribute_group structures. hwmon: constify attribute_group structures. hwmon: (stts751) buffer overrun on wrong chip configuration hwmon: (ftsteutates) Fix clearing alarm sysfs entries gpu: drm: tc35876x: move header file out of I2C realm platform/x86: intel_pmc_core: Make the driver PCH family agnostic platform/x86: peaq-wmi: Evaluate wmi method with instance number 0x0 platform/x86: mxm-wmi: Evaluate wmi method with instance number 0x0 platform/x86: asus-wmi: Evaluate wmi method with instance number 0x0 platform/x86: intel_scu_ipc: make intel_scu_ipc_pdata_t const platform/x86: intel_mid_powerbtn: make mid_pb_ddata const platform/x86: intel_mid_powerbtn: fix error return code in mid_pb_probe() platform/x86: hp-wmi: Remove unused macro helper platform/x86: hp-wmi: Correctly determine method id in WMI calls ARM: dts: rockchip: add watchdog dt node for rv1108 ARM: dts: rockchip: add i2c dt nodes for rv1108 arm64: dts: rockchip: remove num-slots property from rk3399-sapphire mtd: nand: Rename nand.h into rawnand.h arm64: dts: uniphier: add Denali NAND controller nodes leds: Convert to using %pOF instead of full_name ALSA: wss: constify snd_pcm_ops structures ALSA: sb8: constify snd_pcm_ops structures ALSA: sb16: constify snd_pcm_ops structures ALSA: emu8000: constify snd_pcm_ops structures ALSA: msnd: constify snd_pcm_ops structures ALSA: gus: constify snd_pcm_ops structures ALSA: es18xx: constify snd_pcm_ops structures ALSA: es1688: constify snd_pcm_ops structures ALSA: ad1816a: constify snd_pcm_ops structures ALSA: mpu401: Adjust four checks for null pointers ALSA: mpu401: Use common error handling code in snd_mpu401_uart_new() ALSA: mpu401: Delete an error message for a failed memory allocation in snd_mpu401_uart_new() ALSA: opl3: Delete an error message for a failed memory allocation in snd_opl3_new() ALSA: ca0106: Delete an error message for a failed memory allocation in snd_ca0106_pcm_open_capture_channel() ALSA: mixart: Delete an error message for a failed memory allocation in snd_mixart_create() ALSA: pcxhr: Delete an error message for a failed memory allocation in pcxhr_create() ALSA: pci: make snd_pcm_hardware const ALSA: ymfpci: make snd_pcm_hardware const ALSA: trident: make snd_pcm_hardware const ALSA: rme9652: make snd_pcm_hardware const ALSA: riptide: make snd_pcm_hardware const ALSA: pcxhr: make snd_pcm_hardware const ALSA: ctxfi: make snd_pcm_hardware const ALSA: mixart: make snd_pcm_hardware const ALSA: lx6464es: make snd_pcm_hardware const ALSA: lola: make snd_pcm_hardware const ALSA: emu10k1: make snd_pcm_hardware const ALSA: cs5535audio: make snd_pcm_hardware const ALSA: korg1212: make snd_pcm_hardware const ALSA: cs46xx: make snd_pcm_hardware const ALSA: ca0106: make snd_pcm_hardware const ALSA: aw2: make snd_pcm_hardware const ALSA: rme9652: Adjust seven checks for null pointers ALSA: rme9652: Improve eight size determinations ALSA: rme9652: Delete an error message for a failed memory allocation in snd_hdspm_create() ALSA: rme96: Adjust five checks for null pointers ALSA: rme96: Use common error handling code in snd_rme96_probe() ALSA: rme96: Delete two error messages for a failed memory allocation in snd_rme96_probe() ALSA: trident: Delete an error message for a failed memory allocation in snd_trident_tlb_alloc() ALSA: usb: caiaq: audio: Delete two error messages for a failed memory allocation in alloc_urbs() ALSA: usb: Delete an error message for a failed memory allocation in two functions ALSA: usx2y: Delete an error message for a failed memory allocation in two functions power: supply: lp8788: Make several arrays static const * const ARM: dts: keystone-k2g-ice: Add and enable DSP CMA memory pool ARM: dts: keystone-k2g-evm: Add and enable DSP CMA memory pool ARM: dts: keystone-k2g: Add DSP node drm/i915/guc: Rename GuC irq trigger function drm/i915: Suppress switch_mm emission between the same aliasing_ppgtt dt-bindings: i2c: sh_mobile: Document r8a7743/5 support dt-bindings: i2c: Document r8a7743/5 support i2c: rk3x: add support for rv1108 dt-bindings: i2c: rk3x: add support for rv1108 i2c: uniphier-f: add suspend / resume support i2c: uniphier: add suspend / resume support iio: accel: st_accel: fix data-ready line configuration iio: pressure: st_pressure: fix drdy configuration for LPS22HB and LPS25H iio: adc: xadc: Fix coding style violations staging: iio: adc: fix error return code in ad7606_par_probe() dt-bindings: adc: add description for rv1108 saradc iio: trigger: stm32-timer: add output compare triggers iio: trigger: stm32-timer: add support for STM32H7 dt-bindings: iio: timer: stm32: add support for STM32H7 i2c: constify internal structures drm/i915: Add SW_SYNC to our recommend testing Kconfig libnvdimm, pfn, dax: show supported dax/pfn region alignments in sysfs libnvdimm: rename nd_sector_size_{show,store} to nd_size_select_{show,store} liquidio: moved ptp_enable to octeon_device structure selftests: bpf: add check for ip XDP redirect mlxsw: make mlxsw_config_profile const openvswitch: Remove unnecessary newlines from OVS_NLERR uses nfp: send control message when MAC representors are created net: skb_needs_check() removes CHECKSUM_UNNECESSARY check for tx. wan: dscc4: convert to plain DMA API wan: dscc4: add checks for dma mapping errors net: ipv4: set orig_oif based on fib result for local traffic fsl/fman: implement several errata workarounds hns3pf: Fix some harmless copy and paste bugs hns3pf: fix hns3_del_tunnel_port() ARM64: dts: rockchip: Enable gmac2phy for rk3328-evb ARM64: dts: rockchip: Add gmac2phy node support for rk3328 ARM: dts: rk3228-evb: Enable the integrated PHY for gmac net: stmmac: dwmac-rk: Add integrated PHY supprot for rk3328 net: stmmac: dwmac-rk: Add integrated PHY support for rk3228 net: stmmac: dwmac-rk: Add integrated PHY support Documentation: net: phy: Add phy-is-integrated binding net: stmmac: dwmac-rk: Remove unwanted code for rk3328_set_to_rmii() arm64: defconfig: Enable CONFIG_ROCKCHIP_PHY multi_v7_defconfig: Make rockchip PHY built-in net: phy: Add rockchip PHY driver support forcedeth: replace init_timer_deferrable with setup_deferrable_timer drivers: net: davinci_mdio: print bus frequency drivers: net: davinci_mdio: remove busy loop on wait user access netvsc: keep track of some non-fatal overload conditions netvsc: allow controlling send/recv buffer size netvsc: remove unnecessary check for NULL hdr netvsc: remove unnecessary cast of void pointer netvsc: whitespace cleanup netvsc: no need to allocate send/receive on numa node netvsc: check error return when restoring channels and mtu netvsc: propagate MAC address change to VF slave netvsc: don't signal host twice if empty netvsc: delay setup of VF device phylink: Fix an uninitialized variable bug liquidio: removed check for queue size alignment liquidio: rx/tx queue cleanup net: sched: remove cops->tcf_cl_offload net: sched: remove handle propagation down to the drivers net: sched: use newly added classid identity helpers net: sched: propagate classid down to offload drivers net: sched: Add helpers to identify classids geneve: use netlink_ext_ack for error reporting in rtnl operations sched: Replace spin_unlock_wait() with lock/unlock pair Bluetooth: kfree tmp rather than an alias to it perf test shell: Add uprobes + backtrace ping test perf report: Fix module symbol adjustment for s390x perf record: Fix wrong size in perf_record_mmap for last kernel module perf srcline: Do not consider empty files as valid srclines perf util: Take elf_name as const string in dso__demangle_sym perf test shell: Add test using vfs_getname + 'perf trace' perf test shell: Add test using probe:vfs_getname and verifying results perf test shell: Move vfs_getname probe function to lib perf test shell: Install shell tests perf test shell: Add 'probe_vfs_getname' shell test perf test: Make 'list' use same filtering code as main 'perf test' perf test: Add infrastructure to run shell based tests drm/i915: Introduce intel_hpd_pin function. drm/i915: Simplify hpd pin to port drm/i915/cnl: Dump the right pll registers when dumping pipe config. drm/i915/cnl: Add allowed DP rates for Cannonlake. drm/i915: Return correct EDP voltage swing table for 0.85V cs5536: add support for IDE controller variant cgroup: remove unneeded checks ata: sata_gemini: Introduce explicit IDE pin control ata: sata_gemini: Retire custom pin control xprtrdma: Clean up rpcrdma_bc_marshal_reply() xprtrdma: Harden chunk list encoding against send buffer overflow xprtrdma: Set up an xdr_stream in rpcrdma_marshal_req() xprtrdma: Remove rpclen from rpcrdma_marshal_req xprtrdma: Clean up rpcrdma_marshal_req() synopsis sctp: fix some indents in sm_make_chunk.c sctp: remove the typedef sctp_disposition_t sctp: remove the typedef sctp_sm_table_entry_t sctp: remove the unused typedef sctp_sm_command_t sctp: remove the typedef sctp_verb_t sctp: remove the typedef sctp_arg_t sctp: remove the typedef sctp_cmd_seq_t sctp: remove the typedef sctp_cmd_t sctp: remove the typedef sctp_socket_type_t sctp: remove the typedef sctp_dbg_objcnt_entry_t sctp: remove the typedef sctp_cmsgs_t sctp: remove the typedef sctp_endpoint_type_t sctp: remove the typedef sctp_sender_hb_info_t sctp: remove the unused typedef sctp_packet_phandler_t kvm: x86: Disallow illegal IA32_APIC_BASE MSR values KVM: MMU: Bail out immediately if there is no available mmu page KVM: MMU: Fix softlockup due to mmu_lock is held too long power: supply: charger-manager: Slighly simplify code power: supply: charger-manager: Fix a comment KVM: nVMX: validate eptp pointer power: supply: charger-manager: Fix a NULL pointer dereference in 'charger_manager_probe()' KVM: MAINTAINERS improvements drm/tinydrm: add support for LEGO MINDSTORMS EV3 LCD dt-bindings: add binding for Sitronix ST7586 display panels selftests: memfd: Align STACK_SIZE for ARM AArch64 system drm/i915: make structure intel_sprite_plane_funcs static drm/mgag200: switch to drm_*_get(), drm_*_put() helpers reset: sunxi: fix number of reset lines drm/vgem: switch to drm_*_get(), drm_*_put() helpers drm/udl: switch to drm_*_get(), drm_*_put() helpers drm/cirrus: switch to drm_*_get(), drm_*_put() helpers drm/ast: switch to drm_*_get(), drm_*_put() helpers drm/hisilicon: switch to drm_*_get(), drm_*_put() helpers drm/rockchip: switch to drm_*_get(), drm_*_put() helpers drm/mediatek: switch to drm_*_get(), drm_*_put() helpers drm: vboxvideo: switch to drm_*_get(), drm_*_put() helpers arm64: dts: rockchip: Enable tsadc module on RK3328 eavluation board arm64: dts: rockchip: add thermal nodes for rk3328 SoC arm64: dts: rockchip: add tsadc node for rk3328 SoC cfq: Give a chance for arming slice idle timer in case of group_idle block, bfq: boost throughput with flash-based non-queueing devices block,bfq: refactor device-idling logic drm/i915/fbc: only update no_fbc_reason when active dt-bindings: clock: sunxi-ccu: Add compatibles for sun5i CCU driver ath9k: constify usb_device_id ath6kl: constify usb_device_id brcm80211: constify usb_device_id perf test: Add 'struct test *' to the test functions perf test: Make 'list' subcommand match main 'perf test' numbering/matching perf tools: Add missing newline to expr parser error messages perf stat: Fix saved values rbtree lookup perf vendor events powerpc: Update POWER9 events perf vendor events powerpc: remove suffix in mapfile perf scripting python: Add ppc64le to audit uname list x86/cpu/amd: Hide unused legacy_fixup_core_id() function cgroup: misc changes mm, locking: Fix up flush_tlb_pending() related merge in do_huge_pmd_numa_page() objtool: Track DRAP separately from callee-saved registers objtool: Fix validate_branch() return codes drm: Clean up drm_dev_unplug drm: Only lastclose on unload for legacy drivers drm: Document device unplug infrastructure drm: Extract drm_device.h thermal: rockchip: Support the RK3328 SOC in thermal driver dt-bindings: rockchip-thermal: Support the RK3328 SoC compatible reset: uniphier: do not use per-SoC macro for system reset block reset: uniphier: remove sLD3 SoC support net: xfrm: support setting an output mark. thermal: bcm2835: constify thermal_zone_of_device_ops structures thermal: exynos: constify thermal_zone_of_device_ops structures thermal: zx2967: constify thermal_zone_of_device_ops structures thermal: rcar_gen3_thermal: constify thermal_zone_of_device_ops structures thermal: qoriq: constify thermal_zone_of_device_ops structures thermal: hisilicon: constify thermal_zone_of_device_ops structures thermal: core: Fix resources release in error paths in thermal_zone_device_register() thermal: core: Use the new 'thermal_zone_destroy_device_groups()' helper function thermal: core: Add some new helper functions to free resources thermal: int3400_thermal: process "thermal table changed" event thermal: uniphier: add UniPhier thermal driver dt-bindings: thermal: add binding documentation for UniPhier thermal monitor scsi: hisi_sas: kill tasklet when destroying irq in v3 hw scsi: hisi_sas: fix v3 hw channel interrupt processing scsi: hisi_sas: Modify v3 hw STP_LINK_TIMER setting scsi: hisi_sas: add status and command buffer for internal abort scsi: hisi_sas: support zone management commands scsi: hisi_sas: service interrupt ITCT_CLR interrupt in v2 hw scsi: hisi_sas: add irq and tasklet cleanup in v2 hw scsi: hisi_sas: remove repeated device config in v2 hw scsi: hisi_sas: use array for v2 hw ECC errors scsi: hisi_sas: add v2 hw DFX feature scsi: hisi_sas: fix v2 hw underflow residual value scsi: hisi_sas: avoid potential v2 hw interrupt issue scsi: hisi_sas: fix reset and port ID refresh issues scsi: smartpqi: change driver version to 1.1.2-125 scsi: smartpqi: add in new controller ids scsi: smartpqi: update kexec and power down support scsi: smartpqi: cleanup doorbell register usage. scsi: smartpqi: update pqi passthru ioctl scsi: smartpqi: enhance BMIC cache flush scsi: smartpqi: add pqi reset quiesce support scsi: dpt_i2o: remove redundant null check on array device scsi: qla2xxx: use dma_mapping_error to check map errors scsi: mvsas: replace kfree with scsi_host_put scsi: pm8001: fix double free in pm8001_pci_probe scsi: megaraid_sas: fix allocate instance->pd_info twice scsi: esp_scsi: Always clear msg_out_len after MESSAGE OUT phase scsi: esp_scsi: Avoid sending ABORT TASK SET messages scsi: esp_scsi: Clean up control flow and dead code scsi: mac_esp: Fix PIO transfers for MESSAGE IN phase scsi: mac_esp: Avoid type warning from sparse arcmsr: add const to bin_attribute structures scsi: zfcp: early returns for traces disabled via level scsi: zfcp: clean up unnecessary module_param_named() with no_auto_port_rescan scsi: zfcp: clean up a member of struct zfcp_qdio that was assigned but never used scsi: zfcp: clean up no longer existent prototype from zfcp API header scsi: zfcp: clean up redundant code with fall through in link down SRB switch case scsi: zfcp: fix kernel doc comment typos for struct zfcp_dbf_scsi scsi: zfcp: use endianness conversions with common FC(P) struct fields scsi: zfcp: use common code fcp_cmnd and fcp_resp with union in fsf_qtcb_bottom_io scsi: zfcp: clarify that we don't need "link" test on failed open port scsi: zfcp: more fitting constant for fc_ct_hdr.ct_reason on port scan response scsi: zfcp: trace high part of "new" 64 bit SCSI LUN scsi: zfcp: trace HBA FSF response by default on dismiss or timedout late response scsi: zfcp: fix payload with full FCP_RSP IU in SCSI trace records scsi: zfcp: fix missing trace records for early returns in TMF eh handlers scsi: zfcp: fix passing fsf_req to SCSI trace on TMF to correlate with HBA scsi: zfcp: fix capping of unsuccessful GPN_FT SAN response trace records scsi: zfcp: add handling for FCP_RESID_OVER to the fcp ingress path scsi: zfcp: fix queuecommand for scsi_eh commands when DIX enabled scsi: zfcp: convert bool-definitions to use 'true' instead of '1' scsi: zfcp: Remove unneeded linux/miscdevice.h include scsi: zfcp: use setup_timer instead of init_timer scsi: zfcp: replace zfcp_qdio_sbale_count by sg_nents scsi: libcxgbi: use ndev->ifindex to find route scsi: mpt3sas: Fix memory allocation failure test in 'mpt3sas_base_attach()' scsi: aic7xxx: regenerate firmware files PM / s2idle: Rename platform operations structure PM / s2idle: Rename ->enter_freeze to ->enter_s2idle PM / s2idle: Rename freeze_state enum and related items PM / s2idle: Rename PM_SUSPEND_FREEZE to PM_SUSPEND_TO_IDLE arch/sparc: Add accurate exception reporting in M7memcpy arch/sparc: Optimized memcpy, memset, copy_to_user, copy_from_user for M7/M8 arch/sparc: Rename exception handlers arch/sparc: Separate the exception handlers from NG4memcpy sparc64: update comments in U3memcpy MAINTAINERS: fpga: Update email and add patchwork URL fpga: altera-hps2fpga: fix multiple init of l3_remap_lock fpga: altera-hps2fpga: add NULL check on of_match_device() return value ARM: socfpga: explicitly request exclusive reset control fpga: Convert to using %pOF instead of full_name PCI: Add ACS quirk for APM X-Gene devices doc: linux-wpan: Change the old function names to the lastest function names drm/i915/cnl: Add slice and subslice information to debugfs. drm/i915/gen10: fix WM latency printing drm/i915/gen10: fix the gen 10 SAGV block time drm/i915/cnl: Enable SAGV for Cannonlake. drm/i915/gen10+: use the SKL code for reading WM latencies drm/i915: Avoid null dereference if mst_port is unset. test_firmware: add batched firmware tests firmware: enable a debug print for batched requests firmware: define pr_fmt firmware: send -EINTR on signal abort on fallback mechanism test_firmware: add test case for SIGCHLD on sync fallback drm/i915/perf: Drop redundant check for perf.initialised on reset drm/i915/perf: Drop lockdep assert for i915_oa_init_reg_state() drm/i915/perf: Initialise dynamic sysfs group before creation PCI: Constify bin_attribute structures PCI: Constify hotplug pci_device_id structures PCI: Constify hotplug attribute_group structures PCI: Constify label attribute_group structures PCI: Constify sysfs attribute_group structures microblaze/PCI: Remove pcibios_setup_bus_{self/devices} dead code drm/i915: add register macro definition style guide drm/i915: enum i915_power_well_id is not proper kernel-doc Documentation/i915: remove sphinx conversion artefact dt-bindings: Add vendor prefix for Adaptrum, Inc. vfio/type1: Give hardware MSI regions precedence vfio/type1: Cope with hardware MSI reserved regions MAINTAINERS: update the NetLabel and Labeled Networking information MAINTAINERS: add entry for mediatek usb3 DRD IP driver usb: mtu3: add a vbus debugfs interface usb: imx21-hcd: fix error return code in imx21_probe() usb: ehci-omap: fix error return code in ehci_hcd_omap_probe() usb: gadget: fsl_qe_udc: constify qe_ep0_desc usb: atm: ueagle-atm: constify attribute_group structures. usb: chipidea: constify attribute_group structures. usb: usbtmc: constify attribute_group structures. usb: phy-mv-usb: constify attribute_group structures. usb: wusbcore: dev-sysfs: constify attribute_group structures. usb: wusbcore: wusbhc: constify attribute_group structures. usb: wusbcore: cbaf: constify attribute_group structures. usb: phy-tahvo: constify attribute_group structures. usb: usbsevseg: constify attribute_group structures. usb: hcd: constify attribute_group structures. usb: chipidea: otg_fsm: constify attribute_group structures. uwb: lc-rc: constify attribute_group structures. usb/dwc3:constify dev_pm_ops usb: gadget: f_uac2: constify snd_pcm_ops structures USB: atm: make atmdev_ops const usb: speedtch: constify usb_device_id usb: hwa-hc: constify usb_device_id x86/hyper-v: Use hypercall for remote TLB flush PCI: Inline and remove pcibios_update_irq() ARM: omap2plus_defconfig: enable DP83867 phy driver ARM: dts: dra72-evm-revc: workaround incorrect DP83867 RX_CTRL pin strap ARM: dts: dra71-evm: workaround incorrect DP83867 RX_CTRL pin strap arm64: compat: Remove leftover variable declaration ACPI/IORT: Fix build regression without IOMMU arm64: fix pmem interface definition drm/i915: Add format modifiers for Intel drm/i915: Add render decompression support drm/i915: Implement .get_format_info() hook for CCS ARM: dts: Add dra7 iodelay configuration ARM: OMAP2+: Select PINCTRL_TI_IODELAY for SOC_DRA7XX ARM: configs: keystone: Enable D_CAN driver selftests: add rtnetlink test script rtnetlink: fallback to UNSPEC if current family has no doit callback rtnetlink: init handler refcounts to 1 rtnetlink: switch rtnl_link_get_slave_info_data_size to rcu rtnetlink: do not use RTM_GETLINK directly rtnetlink: use rcu_dereference_raw to silence rcu splat ARM: dts: k2g: Add DCAN nodes dt-bindings: net: c_can: Update binding for clock and power-domains property sparc64: Revert 16GB huge page support. arm64: perf: add support for Cortex-A35 arm64: perf: add support for Cortex-A73 arm64: perf: Remove redundant entries from CPU-specific event maps arm64: perf: Connect additional events to pmu counters ARM: dts: tps65217: Add power button interrupt to the common tps65217.dtsi file ARM: dts: tps65217: Add charger interrupts to the common tps65217.dtsi file net: core: fix compile error inside flow_dissector due to new dsa callback ARM: dts: omap*: Replace deprecated "vmmc_aux" with "vqmmc" ARM: OMAP2+: Add pdata-quirks for MMC/SD on DRA74x EVM ALSA: trident: constify snd_pcm_ops structures ALSA: sis7019: constify snd_pcm_ops structures ALSA: intel8x0m: constify snd_pcm_ops structures ALSA: intel8x0: constify snd_pcm_ops structures ALSA: echoaudio: constify snd_pcm_ops structures ALSA: au88x0: constify snd_pcm_ops structures ALSA: ali5451: constify snd_pcm_ops structures ALSA: emux: Delete two error messages for a failed memory allocation in snd_emux_create_port() ALSA: emux: Adjust four checks for null pointers ALSA: emux: Improve a size determination in two functions ALSA: emux: Adjust one function call together with a variable assignment gfs2: forcibly flush ail to relieve memory pressure gfs2: Clean up waiting on glocks gfs2: Defer deleting inodes under memory pressure gfs2: gfs2_evict_inode: Put glocks asynchronously gfs2: Get rid of gfs2_set_nlink ASoC: use snd_soc_rtdcom_add() and convert to consistent operation gfs2: gfs2_glock_get: Wait on freeing glocks ASoC: soc-core: add snd_soc_rtdcom_xxx() x86/cpu/amd: Derive L3 shared_cpu_map from cpu_llc_shared_mask x86/cpu/amd: Limit cpu_core_id fixup to families older than F17h x86: Clarify/fix no-op barriers for text_poke_bp() ASoC: rsnd: Delete an error message for a failed memory allocation in three functions ASoC: codecs: msm8916-wcd-analog: move codec reset to probe ASoC: compress: Delete error messages for a failed memory allocation in snd_soc_new_compress() ARM: OMAP2+: Remove unused legacy code for DMA x86/switch_to/64: Rewrite FS/GS switching yet again to fix AMD CPUs selftests/x86/fsgsbase: Test selectors 1, 2, and 3 x86/fsgsbase/64: Report FSBASE and GSBASE correctly in core dumps x86/fsgsbase/64: Fully initialize FS and GS state in start_thread_common ARM: dts: am572x-idk: Fix GPIO polarity for MMC1 card detect ARM: dts: am571x-idk: Fix GPIO polarity for MMC1 card detect ASoC: codecs: add const to snd_soc_codec_driver structures ASoC: rsnd: call request_irq/free_irq once in MIX case ASoC: rsnd: add rsnd_ssi_flags_has/add() macro ASoC: rsnd: call free_irq() both DMA/PIO mode ARM: OMAP2+: omap_device: drop broken RPM status update from suspend_noirq sched/autogroup: Fix error reporting printk text in autogroup_create() ASoC: spear: Delete an error message for a failed memory allocation in two functions spi: qup: fix 64-bit build warning hyper-v: Globalize vp_index x86/hyper-v: Implement rep hypercalls hyper-v: Use fast hypercall for HVCALL_SIGNAL_EVENT x86/hyper-v: Introduce fast hypercall implementation x86/hyper-v: Make hv_do_hypercall() inline x86/hyper-v: Include hyperv/ only when CONFIG_HYPERV is set spi: qup: hide warning for uninitialized variable kvm: nVMX: Add support for fast unprotection of nested guest page tables KVM: SVM: Limit PFERR_NESTED_GUEST_PAGE error_code check to L1 guest KVM: X86: Fix residual mmio emulation request to userspace kprobes/x86: Do not jump-optimize kprobes on irq entry code irq: Make the irqentry text section unconditional cris: Mark _stext and _end as char-arrays, not single char variables xtensa: Mark _stext and _end as char-arrays, not single char variables h8300: Mark _stext and _etext as char-arrays, not single char variables block: remove unused syncfull/asyncfull queue flags powerpc/xive: Fix section mismatch warnings powerpc/mm: Fix section mismatch warning in early_check_vec5() powerpc/8xx: Remove cpu dependent macro instructions from head_8xx powerpc/8xx: Use symbolic names for DSISR bits in DSI powerpc/8xx: Use symbolic PVR value powerpc/8xx: remove CONFIG_8xx powerpc/8xx: Getting rid of remaining use of CONFIG_8xx powerpc/kconfig: Simplify PCI_QSPAN selection powerpc/time: refactor MFTB() to limit number of ifdefs powerpc/8xx: Move mpc8xx_pic.c from sysdev to platform/8xx powerpc/cpm1: link to CONFIG_CPM1 instead of CONFIG_8xx powerpc/8xx: Remove SoftwareEmulation() powerpc/8xx: Move 8xx machine check handlers into platforms/8xx powerpc/8xx: Simplify CONFIG_8xx checks in Makefile powerpc/traps: Use SRR1 defines for program check reasons powerpc/mce: Move 64-bit machine check code into mce.c powerpc/traps: machine_check_generic() is only used on 32-bit powerpc/traps: Inline get_mc_reason() powerpc/4xx: Move machine_check_4xx() into platforms/4xx powerpc/4xx: Create 4xx pseudo-platform in platforms/4xx powerpc/44x: Move 44x machine check handlers into platforms/44x powerpc/44x: Simplify CONFIG_44x checks in Makefile powerpc/47x: Guard 47x cputable entries with CONFIG_PPC_47x powerpc/powernv: Add support to clear sensor groups data powerpc/powernv: Add support to set power-shifting-ratio powerpc/powernv: Add support for powercap framework powerpc/pseries: Don't print failure message in energy driver powerpc/lib/sstep: Add isel instruction emulation powerpc/lib/sstep: Add prty instruction emulation powerpc/lib/sstep: Add bpermd instruction emulation powerpc/lib/sstep: Add popcnt instruction emulation powerpc/lib/sstep: Add cmpb instruction emulation powerpc/perf: Cleanup of PM_BR_CMPL vs. PM_BRU_CMPL in Power9 event list powerpc/perf: Add PM_LD_MISS_L1 and PM_BR_2PATH to power9 event list powerpc/perf: Factor out PPMU_ONLY_COUNT_RUN check code from power8 powerpc/perf: Update default sdar_mode value for power9 powerpc/44x/fsp2: Enable eMMC arasan for fsp2 platform powerpc/mm: Properly invalidate when setting process table base powerpc/xive: Ensure active irqd when setting affinity powerpc: Add irq accounting for watchdog interrupts powerpc: Add irq accounting for system reset interrupts powerpc: Fix powerpc-specific watchdog build configuration powerpc/64s: Fix mce accounting for powernv powerpc/pseries: Check memory device state before onlining/offlining powerpc: Fix invalid use of register expressions x86/platform/intel-mid: Make 'bt_sfi_data' const x86/build: Drop unused mflags-y x86/asm: Fix UNWIND_HINT_REGS macro for older binutils sched/fair: Fix wake_affine() for !NUMA_BALANCING drm/i915: Supply the engine-id for our mock_engine() x86/asm/32: Fix regs_get_register() on segment registers x86/xen/64: Rearrange the SYSCALL entries locking/lockdep: Add 'crossrelease' feature documentation locking/lockdep: Apply crossrelease to completions locking/lockdep: Make print_circular_bug() aware of crossrelease locking/lockdep: Handle non(or multi)-acquisition of a crosslock locking/lockdep: Detect and handle hist_lock ring buffer overwrite locking/lockdep: Implement the 'crossrelease' feature locking/lockdep: Make check_prev_add() able to handle external stack_trace locking/lockdep: Change the meaning of check_prev_add()'s return value locking/lockdep: Add a function building a chain between two classes locking/lockdep: Refactor lookup_chain_cache() locking/lockdep: Avoid creating redundant links locking/lockdep: Rework FS_RECLAIM annotation locking: Remove smp_mb__before_spinlock() locking: Introduce smp_mb__after_spinlock() overlayfs, locking: Remove smp_mb__before_spinlock() usage mm, locking: Rework {set,clear,mm}_tlb_flush_pending() Documentation/locking/atomic: Add documents for new atomic_t APIs clocksource/arm_arch_timer: Use static_branch_enable_cpuslocked() jump_label: Provide hotplug context variants jump_label: Split out code under the hotplug lock jump_label: Move CPU hotplug locking jump_label: Add RELEASE barrier after text changes cpuset: Make nr_cpusets private jump_label: Do not use unserialized static_key_enabled() jump_label: Fix concurrent static_key_enable/disable() locking/rwsem-xadd: Add killable versions of rwsem_down_read_failed() locking/rwsem-spinlock: Add killable versions of __down_read() locking/osq_lock: Fix osq_lock queue corruption locking/atomic: Fix atomic_set_release() for 'funny' architectures sched/wait: Remove the lockless swait_active() check in swake_up*() RDMA/netlink: Export node_type RDMA/netlink: Provide port state and physical link state RDMA/netlink: Export LID mask control (LMC) RDMA/netink: Export lids and sm_lids RDMA/netlink: Advertise IB subnet prefix RDMA/netlink: Export node_guid and sys_image_guid RDMA/netlink: Export FW version RDMA: Simplify get firmware interface RDMA/netlink: Expose device and port capability masks RDMA/netlink: Implement nldev port doit callback RDMA/netlink: Add nldev port dumpit implementation RDMA/netlink: Add nldev device doit implementation RDMA/netlink: Implement nldev device dumpit calback RDMA/netlink: Add nldev initialization flows RDMA/netlink: Add netlink device definitions to UAPI RDMA/netlink: Update copyright RDMA/netlink: Convert LS to doit callback RDMA/netlink: Reduce indirection access to cb_table RDMA/netlink: Add and implement doit netlink callback RDMA/core: Add and expose static device index RDMA/core: Add iterator over ib_devices RDMA/netlink: Rename netlink callback struct RDMA/netlink: Simplify and rename ibnl_chk_listeners RDMA/netlink: Rename and remove redundant parameter from ibnl_multicast RDMA/netlink: Rename and remove redundant parameter from ibnl_unicast* RDMA/netlink: Simplify the put_msg and put_attr RDMA/netlink: Add flag to consolidate common handling sched/debug: Intruduce task_state_to_char() helper function sched/debug: Show task state in /proc/sched_debug sched/debug: Use task_pid_nr_ns in /proc/$pid/sched sched/core: Remove unnecessary initialization init_idle_bootup_task() sched/deadline: Change return value of cpudl_find() sched/deadline: Make find_later_rq() choose a closer CPU in topology sched/numa: Scale scan period with tasks in group and shared/private sched/numa: Slow down scan rate if shared faults dominate sched/pelt: Fix false running accounting sched: Mark pick_next_task_dl() and build_sched_domain() as static sched/cpupri: Don't re-initialize 'struct cpupri' sched/deadline: Don't re-initialize 'struct cpudl' sched/topology: Drop memset() from init_rootdomain() sched/fair: Drop always true parameter of update_cfs_rq_load_avg() sched/fair: Avoid checking cfs_rq->nr_running twice sched/fair: Pass 'rq' to weighted_cpuload() sched/core: Reuse put_prev_task() sched/fair: Call cpufreq update util handlers less frequently on UP RDMA/iwcm: Remove extra EXPORT_SYMBOLS RDMA/iwcm: Remove useless check of netlink client validity RDMA/netlink: Avoid double pass for RDMA netlink messages RDMA/netlink: Remove redundant owner option for netlink callbacks RDMA/netlink: Remove netlink clients infrastructure perf/core: Reduce context switch overhead perf/x86/amd/uncore: Get correct number of cores sharing last level cache perf/x86/amd/uncore: Rename cpufeatures macro for cache counters arm64: uaccess: Add the uaccess_flushcache.c file HID: usbmouse: constify usb_device_id and fix space before '[' error HID: usbkbd: constify usb_device_id and fix space before '[' error. mwifiex: uap: enable 11d based on userspace configruation clk: samsung: exynos542x: Enable clock rate propagation up to the EPLL zd1211rw: constify usb_device_id zd1201: constify usb_device_id rtl8192cu: constify usb_device_id rtl8xxxu: constify usb_device_id rtl8187: constify usb_device_id rt73usb: constify usb_device_id rt2800usb: constify usb_device_id rt2500usb: constify usb_device_id mt7601u: constify usb_device_id mwifiex: constify usb_device_id libertas_tf: constify usb_device_id libertas: constify usb_device_id p54: constify usb_device_id orinoco: constify usb_device_id at76c50x: constify usb_device_id carl9170: constify usb_device_id ar5523: constify usb_device_id arm64: allwinner: a64: add proper support for the Wi-Fi on BPi M64 arm64: allwinner: a64: enable AXP803 for Banana Pi M64 arm64: allwinner: a64: enable USB host controller for BPi M64 net-next: dsa: fix flow dissection net-next: tag_mtk: add flow_dissect callback to the ops struct net-next: dsa: add flow_dissect callback to struct dsa_device_ops net-next: dsa: move struct dsa_device_ops to the global header file net-next: mediatek: bring up QDMA RX ring 0 net-next: mediatek: fix typos inside the header file net: atm: make atmdev_ops const atm: make atmdev_ops const net: dsa: make dsa_switch_ops const liquidio: napi cleanup net: ipv6: lower ndisc notifier priority below addrconf ibmvnic: Correct 'unused variable' warning in build. ibmvnic: Add netdev_dbg output for debugging ibmvnic: Clean up resources on probe failure sparc64: Use CPU_POKE to resume idle cpu sparc64: Add a new hypercall CPU_POKE sparc64: Cleanup hugepage table walk functions sparc64: Add 16GB hugepage support sparc64: Support huge PUD case in get_user_pages f2fs: add app/fs io stat drm/i915/gvt: Add shadow context descriptor updating drm/i915/gvt: expose vGPU context hw id drm/i915/gvt: Refine the intel_vgpu_reset_gtt reset function drm/i915/gvt: Add carefully checking in GTT walker paths drm/i915/gvt: Remove duplicated MMIO entries drm/i915/gvt: take runtime pm when do early scan and shadow drm/i915/gvt: Replace duplicated code with exist function drm/i915/gvt: To check whether workload scan and shadow has mutex hold drm/i915/gvt: Audit and shadow workload during ELSP writing drm/i915/gvt: Factor out scan and shadow from workload dispatch drm/i915/gvt: Optimize ring siwtch 2x faster again by light weight mmio access wrapper drm/i915/gvt: Optimize ring siwtch 2x faster by removing unnecessary POSTING_READ drm/i915/gvt: Use gvt_err to print the resource not enough error f2fs: do not change the valid_block value if cur_valid_map was wrongly set or cleared f2fs: update cur_valid_map_mir together with cur_valid_map net: call newid/getid without rtnl mutex held rtnetlink: add RTNL_FLAG_DOIT_UNLOCKED rtnetlink: protect handler table with rcu rtnetlink: small rtnl lock pushdown rtnetlink: add reference counting to prevent module unload while dump is in progress rtnetlink: make rtnl_register accept a flags parameter rtnetlink: call rtnl_calcit directly bpf: add test cases for new BPF_J{LT, LE, SLT, SLE} instructions bpf: enable BPF_J{LT, LE, SLT, SLE} opcodes in verifier bpf, nfp: implement jiting of BPF_J{LT,LE} bpf, ppc64: implement jiting of BPF_J{LT, LE, SLT, SLE} bpf, s390x: implement jiting of BPF_J{LT, LE, SLT, SLE} bpf, sparc64: implement jiting of BPF_J{LT, LE, SLT, SLE} bpf, arm64: implement jiting of BPF_J{LT, LE, SLT, SLE} bpf, x86: implement jiting of BPF_J{LT,LE,SLT,SLE} bpf: add BPF_J{LT,LE,SLT,SLE} instructions sock: fix zerocopy_success regression with msg_zerocopy sock: fix zerocopy panic in mem accounting ACPI / LPSS: Don't abort ACPI scan on missing mem resource mailbox: pcc: Drop uninformative output during boot dt-bindings: display: imx: fix parallel display interface-pix-fmt property cpufreq: mediatek: add support of cpufreq to MT7622 SoC cpufreq: mediatek: add cleanups with the more generic naming cpufreq: Return 0 from ->fast_switch() on errors cpufreq: intel_pstate: Shorten a couple of long names cpufreq: intel_pstate: Simplify intel_pstate_adjust_pstate() iommu: Finish making iommu_group support mandatory iommu/tegra-gart: Add iommu_group support iommu/tegra-smmu: Add iommu_group support iommu/msm: Add iommu_group support selftests: warn if failure is due to lack of executable bit HID: hid-sensor-hub: Force logical minimum to 1 for power and report state blk-mq: enable checking two part inflight counts at the same time blk-mq: provide internal in-flight variant block: make part_in_flight() take an array of two ints block: pass in queue to inflight accounting blk-mq-tag: check for NULL rq when iterating tags dma-buf: dma_fence_put is NULL safe iwlwifi: mvm: fix the coex firmware API iwlwifi: pcie: free the TSO page when a Tx queue is unmapped on A000 devices iwlwifi: remove references to unsupported HW iwlwifi: fix nmi triggering from host iwlwifi: pcie: don't init a Tx queue with an SSN > size of the queue iwlwifi: mvm: add station before allocating a queue iwlwifi: mvm: don't send CTDP commands via debugfs if not supported iwlwifi: mvm: support new beacon template command md/raid6: implement recovery using ARM NEON intrinsics md/raid6: use faster multiplication for ARM NEON delta syndrome drm/i915/psr: Preserve SRD_CTL bit 29 on PSR init ASoC: rsnd: avoid duplicate free_irq() ASoC: rsnd: remove 16ch support for now ASoC: rt5514: Eliminate the noise in the ASRC case spi: spi-ep93xx: use the default master transfer queueing mechanism spi: spi-ep93xx: remove private data 'current_msg' spi: spi-ep93xx: pass the spi_master pointer around spi: spi-ep93xx: absorb the interrupt enable/disable helpers spi: spi-ep93xx: add spi master prepare_transfer_hardware() spi: spi-ep93xx: use 32-bit read/write for all registers spi: spi-ep93xx: remove io wrappers arm64: dts: uniphier: use cross-arch include instead of symlinks arm64: dts: uniphier: use #include instead of /include/ ARM: dts: uniphier: remove sLD3 SoC support drm: make drm_mode_config_func const selftests: kselftest framework: add error counter drm/virtio: make drm_fb_helper_funcs const drm/rockchip: make drm_connector_funcs structures const drm/sun4i: make drm_connector_funcs structures const drm/bridge: make drm_connector_funcs structures const spi: spi-sh: fix error return code in spi_sh_probe() media: ddbridge: split code into multiple files media: ddbridge: move/reorder functions dm-crypt: don't mess with BIP_BLOCK_INTEGRITY bio-integrity: move the bio integrity profile check earlier in bio_integrity_prep power: supply: Fix power_supply_am_i_supplied to return -ENODEV when apropriate drm/tinydrm: Generalize tinydrm_xrgb8888_to_gray8() ARM: dts: uniphier: add audio out pin-mux node power: supply: add const to bin_attribute structures media: vs6624: constify vs6624_default_fmt media: ov13858: Increase digital gain granularity, range media: ov13858: Correct link-frequency and pixel-rate media: ov13858: Fix initial expsoure max media: ov13858: Set default fps as current fps clk: samsung: Add CLK_SET_RATE_PARENT to some AUDSS CLK CON clocks clk: samsung: Fix mau_epll clock definition for exynos5422 media: cx231xx: only unregister successfully registered i2c adapters media: staging: media: atomisp: constify video_subdev structures media: staging: media: atomisp: remove trailing whitespace media: staging: media: atomisp: i2c: gc0310: fixed brace coding style issue media: staging: media: atomisp: constify videobuf_queue_ops structures media: staging: media: atomisp: use kvmalloc/kvzalloc media: MAINTAINERS: add entry for meson ao cec driver media: platform: Add Amlogic Meson AO CEC Controller driver media: dt-bindings: media: Add Amlogic Meson AO-CEC bindings media: v4l2-compat-ioctl32: Fix timespec conversion gfs2: Fix trivial typos GFS2: Delete debugfs files only after we evict the glocks GFS2: Don't waste time locking lru_lock for non-lru glocks GFS2: Don't bother trying to add rgrps to the lru list GFS2: Clear gl_object when deleting an inode in gfs2_delete_inode GFS2: Clear gl_object if gfs2_create_inode fails media: v4l2-compat-ioctl32: Copy v4l2_window->global_alpha media: adv7604: Prevent out of bounds access media: DaVinci-VPBE: constify vpbe_dev_ops media: solo6x10: export hardware GPIO pins 8:31 to gpiolib interface media: cx231xx: drop return value of cx231xx_i2c_unregister drm: Shift wrap bug in create_in_format_blob() media: cx231xx: fail probe if i2c_add_adapter fails arm64: neon: Forbid when irqs are disabled media: saa7146: hexium_gemini: constify pci_device_id media: saa7146: hexium_orion: constify pci_device_id media: saa7146: mxb: constify pci_device_id media: ttpci: av7110: constify pci_device_id media: ttpci: budget-av: constify pci_device_id media: ttpci: budget-ci: constify pci_device_id media: ttpci: budget-patch: constify pci_device_id media: ttpci: budget: constify pci_device_id media: drv-intf: saa7146: constify pci_device_id media: radio: constify pci_device_id media: cx18: constify pci_device_id media: mantis: hopper_cards: constify pci_device_id media: mantis: constify pci_device_id media: pt1: constify pci_device_id media: saa7164: constify pci_device_id media: b2c2: constify pci_device_id media: cobalt: constify pci_device_id media: ivtv: constify pci_device_id media: bt8xx: bttv: constify pci_device_id media: bt8xx: constify pci_device_id media: zoran: constify pci_device_id media: dm1105: constify pci_device_id media: pluto2: constify pci_device_id media: meye: constify pci_device_id media: cx23885: constify pci_device_id media: netup_unidvb: constify pci_device_id media: marvell-ccic: constify pci_device_id media: cec-api: log the reason for the -EINVAL in cec_s_mode media: cec-ioc-g-mode.rst: improve description of message, processing media: cec-ioc-adap-g-log-addrs.rst: fix wrong quotes media: adv*/vivid/pulse8/rainshadow: cec: use CEC_CAP_DEFAULTS media: media/cec.h: add CEC_CAP_DEFAULTS media: cec-funcs.h: cec_ops_report_features: set *dev_features to NULL iio: tools: add install section iio: tools: move to tools buildsystem iio: adc: ti-ads7950: Add OF device ID table iio: adc: stm32: add optional st,min-sample-time-nsecs dt-bindings: iio: adc: stm32: add optional st,min-sample-time-nsecs arm64: unwind: remove sp from struct stackframe s390/scm: use common completion path s390/pci: log changes to uid checking s390/vmcp: simplify vmcp_ioctl() s390/vmcp: return -ENOTTY for unknown ioctl commands s390/vmcp: split vmcp header file and move to uapi s390/vmcp: make use of contiguous memory allocator s390/cpcmd,vmcp: avoid GFP_DMA allocations s390/vmcp: fix uaccess check and avoid undefined behavior s390/mm: prevent memory offline for memory blocks with cma areas s390/mm: add missing virt_to_pfn() etc. helper functions RDMA/core: Add wait/retry version of ibnl_unicast arm64: unwind: reference pt_regs via embedded stack frame crypto: af_alg - consolidation of duplicate code crypto: caam - Remove unused dentry members crypto: ccp - select CONFIG_CRYPTO_RSA crypto: ccp - avoid uninitialized variable warning crypto: serpent - improve __serpent_setkey with UBSAN crypto: algif_aead - copy AAD from src to dst crypto: algif - return error code when no data was processed arm64/vdso: Support mremap() for vDSO arm64: uaccess: Implement *_flushcache variants arm64: Implement pmem API support drm: bridge: dw-hdmi: constify snd_pcm_ops structures drm/bridge: make drm_bridge_funcs const usb: gadget: udc: renesas_usb3: add support for R-Car H3 ES2.0 usb: gadget: udc: renesas_usb3: add debugfs to set the b-device mode MAINTAINERS: add entry for mediatek usb3 DRD IP driver usb: mtu3: add a vbus debugfs interface usb: dwc3: keystone: Add PM_RUNTIME Support to DWC3 Keystone USB driver usb: dwc3: omap: fix error return code in dwc3_omap_probe() usb: dwc3: pci: constify dev_pm_ops usb: gadget: udc: renesas_usb3: fix error return code in renesas_usb3_probe() usb: gadget: f_uac2: constify snd_pcm_ops structures arm64: Handle trapped DC CVAP arm64: Expose DC CVAP to userspace arm64: Convert __inval_cache_range() to area-based arm64: mm: Fix set_memory_valid() declaration ARM: shmobile: Enable BQ32000 rtc in shmobile_defconfig iwlwifi: mvm: set the default cTDP budget iwlwifi: mvm: move a000 device NVM retrieval to a common place iwlwifi: dump smem configuration when firmware crashes iwlwifi: fix a000 RF_ID define iwlwifi: add support of FPGA fw iwlwifi: fix a few instances of misaligned kerneldoc parameters iwlwifi: change functions that can only return 0 to void iwlwifi: mvm: add debugfs to force CT-kill iwlwifi: mvm: add const to thermal_cooling_device_ops structure iwlwifi: mvm: use firmware LED command where applicable iwlwifi: mvm: remove useless condition in LED code net: ipv6: avoid overhead when no custom FIB rules are installed isdn: hfcsusb: constify usb_device_id isdn: hisax: hfc_usb: constify usb_device_id qmi_wwan: fix NULL deref on disconnect net: phy: mdio-bcm-unimac: fix unsigned wrap-around when decrementing timeout cxgb4: Clear On FLASH config file after a FW upgrade net_sched: get rid of some forward declarations net: dsa: lan9303: Only allocate 3 ports selftests: bpf: add a test for XDP redirect liquidio: fix misspelled firmware image filenames bpf: Extend check_uarg_tail_zero() checks bpf: Move check_uarg_tail_zero() upward netvsc: make sure and unregister datapath igb: support BCM54616 PHY liquidio: fix wrong info about vf rx/tx ring parameters reported to ethtool igbvf: convert msleep to mdelay in atomic context igbvf: after mailbox write, wait for reply igbvf: add lock around mailbox ops e1000e: Initial Support for IceLake igb: do not drop PF mailbox lock after read of VF message bpf/verifier: increase complexity limit to 128k Documentation: describe the new eBPF verifier value tracking behaviour selftests/bpf: variable offset negative tests selftests/bpf: add tests for subtraction & negative numbers selftests/bpf: don't try to access past MAX_PACKET_OFF in test_verifier selftests/bpf: add test for bogus operations on pointers selftests/bpf: add a test to test_align selftests/bpf: rewrite test_align selftests/bpf: change test_verifier expectations bpf/verifier: more concise register state logs for constant var_off bpf/verifier: track signed and unsigned min/max values bpf/verifier: rework value tracking igb: expose mailbox unlock method igb: add argument names to mailbox op function declarations net: usb: rtl8150: constify usb_device_id net: usb: r8152: constify usb_device_id net: usb: kaweth: constify usb_device_id net: usb: ipheth: constify usb_device_id net: usb: cdc-phonet: constify usb_device_id net: usb: catc: constify usb_device_id and fix space before '[' error net: irda: stir4200: constify usb_device_id net: irda: mcs7780: constify usb_device_id net: irda: ksdazzle: constify usb_device_id net: irda: ks959: constify usb_device_id net: irda: kingsun: constify usb_device_id net: irda: irda-usb: constify usb_device_id igb: Remove incorrect "unexpected SYS WRAP" log message e1000e: add check on e1e_wphy() return value igb: protect TX timestamping from API misuse igb: Fix error of RX network flow classification soc: qcom: mdt_loader: Use request_firmware_into_buf() ARM: dts: meson6: use stable UART bindings ARM64: dts: meson-gx: use stable UART bindings with correct gate clock arm64: dts: qcom: msm8996: Specify smd-edge for ADSP arm64: dts: msm8996: Add modem smp2p nodes arm64: dts: qcom: db820c: Add pm8994 regulator node arm64: dts: qcom: Add RPM glink nodes to msm8996 arm64: dts: msm8996: Add device node for qcom,dwc3 arm64: dts: msm8996: Add device node for qcom qmp-phy for pcie arm64: dts: msm8996: Add device node for qcom qmp-phy for usb arm64: dts: msm8996: Add device node for qcom qusb2 phy arm64: dts: qcom: add cec clock for apq8016 board arm64: dts: pmi8994: Add device node for pmi8994 gpios arm64: dts: qcom-msm8916: dts: Update coresight replicator arm64: dts: qcom: Force host mode for USB on apq8016-sbc drm/vc4: Add exec flags to allow forcing a specific X/Y tile walk order. drm/vc4: Demote user-accessible DRM_ERROR paths to DRM_DEBUG. drm/vc4: switch to drm_*{get,put} helpers drm/vc4: Fix errant drm_bridge_remove() in DSI. drm/vc4: Don't disable DSI clocks on component unload. drm/vc4: Fix double destroy of the BO cache on teardown. drm/i915/cnl: Removing missing DDI_E bits from CNL. ARM: dts: qcom: add and enable both wifi blocks on the IPQ4019 ARM: dts: qcom-msm8974: dts: Update coresight replicator ARM: dts: qcom: add pseudo random number generator on the IPQ4019 ARM: dts: ipq4019: Move xo and timer nodes to SoC dtsi ARM: dts: ipq4019: Fix pinctrl node name dt-bindings: qcom: Add IPQ8074 bindings soc: qcom: bring all qcom drivers into a submenu soc: qcom: wcnss_ctrl: add missing MODULE_DEVICE_TABLE() soc: qcom: smsm: fix of_node refcnting problem nvme-rdma: use intelligent affinity based queue mappings block: Add rdma affinity based queue mapping helper mlx5: support ->get_vector_affinity RDMA/core: expose affinity mappings per completion vector mlx5: move affinity hints assignments to generic code mlx5e: don't assume anything on the irq affinity mappings of the device mlx5: convert to generic pci_alloc_irq_vectors IB/CM: Set appropriate slid and dlid when handling CM request IB/CM: Create appropriate path records when handling CM request IB/CM: Add OPA Path record support to CM IB/core: Change wc.slid from 16 to 32 bits IB/core: Change port_attr.sm_lid from 16 to 32 bits IB/core: Change port_attr.lid size from 16 to 32 bits IB/mad: Change slid in RMPP recv from 16 to 32 bits IB/IPoIB: Increase local_lid to 32 bits IB/srpt: Increase lid and sm_lid to 32 bits IB/core: Convert ah_attr from OPA to IB when copying to user wil6210: move vring_idle_trsh definition to wil6210_priv wil6210: store FW RF calibration result wil6210: fix interface-up check wil6210: notify wiphy on wowlan support wil6210: add statistics for suspend time wil6210: check no_fw_recovery in resume failure recovery wil6210: support FW RSSI reporting wil6210: protect against invalid length of tx management frame arm64: perf: Allow standard PMUv3 events to be extended by the CPU type clk: rockchip: add special approximation to fix up fractional clk's jitter ACPI/IORT: numa: Add numa node mapping for smmuv3 devices clk: fractional-divider: allow overriding of approximation clk: rockchip: modify rk3128 clk driver to also support rk3126 dt-bindings: add documentation for rk3126 clock clk: rockchip: add some critical clocks for rv1108 SoC clk: rockchip: rename some of clks for rv1108 SoC arm64: unwind: disregard frame.sp when validating frame pointer arm64: unwind: avoid percpu indirection for irq stack arm64: move non-entry code out of .entry.text arm64: consistently use bl for C exception entry arm64: Add ASM_BUG() clk: rockchip: fix up some clks describe error for rv1108 SoC clk: rockchip: support more clks for rv1108 PM / wakeup: Set power.can_wakeup if wakeup_sysfs_add() fails cpufreq: rcar: Add support for R8A7795 SoC cpufreq: Simplify cpufreq_can_do_remote_dvfs() xprtrdma: Clean up XDR decoding in rpcrdma_update_granted_credits() xprtrdma: Remove rpcrdma_rep::rr_len xprtrdma: Remove opcode check in Receive completion handler xprtrdma: Replace rpcrdma_count_chunks() xprtrdma: Refactor rpcrdma_reply_handler() xprtrdma: Harden backchannel call decoding xprtrdma: Add xdr_init_decode to rpcrdma_reply_handler() ACPI/IORT: Handle PCI aliases properly for IOMMUs Bluetooth: document config options drm/i915: Perform an invalidate prior to executing golden renderstate drm/etnaviv: switch to drm_*{get,put} helpers drm/etnaviv: select CMA and DMA_CMA if available Thermal/int340x: Fix few typos and kernel warn message perf: xgene: Remove unnecessary managed resources cleanup arm64: perf: Allow more than one cycle counter to be used thermal: intel_pch_thermal: constify pci_device_id. selinux: use GFP_NOWAIT in the AVC kmem_caches drm: Nuke drm_atomic_legacy_backoff drm: Nuke drm_atomic_helper_connector_dpms drm: Nuke drm_atomic_helper_connector_set_property drm: Nuke drm_atomic_helper_plane_set_property drm: Nuke drm_atomic_helper_crtc_set_property drm: Handle properties in the core for atomic drivers ARM: dts: gemini: add pin control set-up for the SoC ARM: dts: Add DTS file for D-Link DIR-685 ARM: dts: gemini: Switch to using macros drm: Don't update property values for atomic drivers drm/omap: Rework the rotation-on-crtc hack rt2x00: Fix MMIC Countermeasures rtlwifi: constify rate_control_ops structure wlcore: add const to bin_attribute structure brcmfmac: add setting carrier state ON for successful roaming brcmfmac: fix wrong num_different_channels when mchan feature enabled brcmfmac: Add support for CYW4373 SDIO/USB chipset brcmfmac: set wpa_auth to WPA_AUTH_DISABLED in AP/OPEN security mode mwifiex: p2p: use separate device address mwifiex: wrapper wps ie in pass through tlv mwifiex: Do not change bss_num in change_virtual_intf mwifiex: replace netif_carrier_on/off by netif_device_attach/dettach rsi: RTS threshold configuration rsi: buffer available interrupt handling rsi: buffer full check optimization rsi: rename sdio_read_buffer_status_register rsi: add support for U-APSD power save rsi: add support for legacy power save rsi: update set_antenna command frame rsi: add support for rf-kill functionality rsi: fix uninitialized descriptor pointer issue bcma: make BCMA a menuconfig to ease disabling it all spi: qup: Fix QUP version identify method spi: qup: Ensure done detection spi: qup: allow multiple DMA transactions per spi xfer spi: qup: refactor spi_qup_prep_sg spi: qup: allow block mode to generate multiple transactions spi: qup: call io_config in mode specific function spi: qup: refactor spi_qup_io_config into two functions spi: qup: Do block sized read/write in block mode spi: qup: Fix transaction done signaling spi: qup: Fix error handling in spi_qup_prep_sg spi: qup: Place the QUP in run mode before DMA spi: qup: Add completion timeout spi: qup: Setup DMA mode correctly spi: qup: Enable chip select support Bluetooth: Add support of 13d3:3494 RTL8723BE device ath9k: make ath_ps_ops structures as const wcn36xx: Introduce mutual exclusion of fw configuration ath10k: switch to use new generic UUID API ath10k: fix memory leak in rx ring buffer allocation ath10k: ath10k_htt_rx_amsdu_allowed() use ath10k_dbg() media: v4l2-tpg: fix the SMPTE-2084 transfer function ASoC: rsnd: control SSICR::EN correctly ASoC: rsnd: rsnd_ssi_can_output_clk() macro ASoC: rsnd: move rsnd_ssi_config_init() execute condition into it. ASoC: samsung: odroid: Drop requirement of clocks in the sound node media: coda: reduce iram size to leave space for suspend to ram media: coda: fix decoder sequence init escape flag media: staging/imx: remove confusing IS_ERR_OR_NULL usage media: i2c: fix semicolon.cocci warnings media: vb2: core: Lower the log level of debug outputs ASoC: fsl: Convert to using %pOF instead of full_name spi/bcm63xx-hspi: fix error return code in bcm63xx_hsspi_probe() spi/bcm63xx: fix error return code in bcm63xx_spi_probe() spi: xlp: fix error return code in xlp_spi_probe() media: cec: documentation fixes media: v4l: omap_vout: vrfb: initialize DMA flags media: v4l: use WARN_ON(1) instead of __WARN() media: i2c: add KConfig dependencies media: ti-vpe: cal: use of_graph_get_remote_endpoint() drm/radeon: Use the drm_driver.dumb_destroy default media: staging: imx: fix non-static declarations drm/i915: Use the drm_driver.dumb_destroy default media: imx: prpencvf: enable double write reduction media: imx: add VIDEO_V4L2_SUBDEV_API dependency drm/sti: Use .dumb_map_offset and .dumb_destroy defaults media: v4l: omap_vout: vrfb: include linux/slab.h media: ov9655: fix missing mutex_destroy() media: ov9650: fix coding style media: stm32-dcmi: explicitly request exclusive reset control media: mtk-vcodec: fix vp9 decode error media: ov7670: Check the return value from clk_prepare_enable() media: ov7670: Return the real error code media: v4l2-tpg-core.c: fix typo in bt2020_full matrix media: media/extended-controls.rst: fix wrong enum names media: media/doc: improve the SMPTE 2084 documentation media: media/doc: improve bt.2020 documentation media: media/doc: rename and reorder pixfmt files media: drop use of MEDIA_API_VERSION media: media-device: remove driver_version media: atomisp2: don't set driver_version media: uvc: don't set driver_version media: s3c-camif: don't set driver_version media: media-device: set driver_version directly spi: cadence: Add support for context loss spi: cadence: change sequence of calling runtime_enable powerpc/mm/hash64: Make vmalloc 56T on hash powerpc/mm/slb: Move comment next to the code it's referring to powerpc/mm/book3s64: Make KERN_IO_START a variable powerpc/powernv: Use darn instruction for get_random_seed() on Power9 powerpc/32: Fix boot failure on non 6xx platforms thermal: core: fix some format issues on critical shutdown string thermal: fix INTEL_SOC_DTS_IOSF_CORE dependencies thermal: intel_pch_thermal: Read large temp values correctly KVM: arm: implements the kvm_arch_vcpu_in_kernel() KVM: s390: implements the kvm_arch_vcpu_in_kernel() KVM: X86: implement the logic for spinlock optimization KVM: add spinlock optimization framework thermal: int340x_thermal: Constify attribute_group structures. thermal: int340x: constify attribute_group structures. drm: bridge: synopsys/dw-hdmi: Provide default configuration function for HDMI 2.0 PHY HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage HID: asus: Add T100CHI bluetooth keyboard dock touchpad support ARM: sun8i: a83t: h8homlet-v2: Enable AC100 combo chip in AXP818 PMIC ARM: sun8i: a83t: h8homlet-v2: Enable PMIC part of AXP818 PMIC ARM: sun8i: a83t: cubietruck-plus: Enable AC100 combo chip in AXP818 PMIC ARM: sun8i: a83t: cubietruck-plus: Enable PMIC part of AXP818 PMIC ARM: sun8i: a83t: Add device node and pinmux setting for RSB controller Input: xpad - constify usb_device_id Input: kbtab - constify usb_device_id Input: acecad - constify usb_device_idi and fix space before '[' error Input: synaptics_usb - constify usb_device_id Input: appletouch - constify usb_device_id Input: powermate - constify usb_device_id and fix space before '[' error Input: keyspan_remote - constify usb_device_id Input: iforce - constify usb_device_id and fix space before '[' error scsi: aic7xxx: fix firmware build deps scsi: aic7xxx: remove empty function powerpc/powernv: Enable PCI peer-to-peer clk: rockchip: fix up the pll clks error for rv1108 SoC net: vrf: Add extack messages for newlink failures isdn: kcapi: make capi_version const net: switchdev: Remove bridge bypass support from switchdev net: bridge: Remove FDB deletion through switchdev object net: dsa: Move FDB dump implementation inside DSA net: dsa: Remove redundant MDB dump support net: dsa: Remove support for MDB dump from DSA's drivers net: dsa: Remove support for bypass bridge port attributes/vlan set net: dsa: Remove support for vlan dump from DSA's drivers net: dsa: Add support for querying supported bridge flags net: dsa: Move FDB add/del implementation inside DSA net: dsa: Add support for learning FDB through notification net: dsa: Remove switchdev dependency from DSA switch notifier chain net: dsa: Remove prepare phase for FDB net: dsa: Change DSA slave FDB API to be switchdev independent arm64: dts: rockchip: add rk3328 i2s nodes nfit: cleanup long de-reference chains in acpi_nfit_init_interleave_set hamradio: baycom: make hdlcdrv_ops const xfrm: check that cached bundle is still valid net: dsa: remove useless args of dsa_slave_create net: dsa: remove useless args of dsa_cpu_dsa_setup net: dsa: remove useless argument in legacy setup net: hns3: fix spelling mistake: "capabilty" -> "capability" net: dsa: lan9303: refactor lan9303_get_ethtool_stats net: dsa: lan9303: Rename lan9303_xxx_packet_processing() net: dsa: lan9303: Simplify lan9303_xxx_packet_processing() usage net: dsa: lan9303: define LAN9303_NUM_PORTS 3 net: dsa: lan9303: Change lan9303_xxx_packet_processing() port param. ipv6: sr: implement several seg6local actions ipv6: sr: add rtnetlink functions for seg6local action parameters ipv6: sr: define core operations for seg6local lightweight tunnel ipv6: sr: export SRH insertion functions ipv6: sr: allow SRH insertion with arbitrary segments_left value null_blk: make sure submit_queues > 0 null_blk: simplify logic for use_per_node_hctx bpf: devmap fix mutex in rcu critical section net_sched: use void pointer for filter handle net_sched: refactor notification code for RTM_DELTFILTER lwtunnel: replace EXPORT_SYMBOL with EXPORT_SYMBOL_GPL bpf: add a test case for syscalls/sys_{enter|exit}_* tracepoints bpf: add support for sys_enter_* and sys_exit_* tracepoints of_mdio: use of_property_read_u32_array() ibmvnic: Report rx buffer return codes as netdev_dbg docs: driver-api: Remove trailing blank line scripts/sphinx-pre-install: add minimum support for RHEL kbuild: Update example for ccflags-y usage docs/features: parisc implements tracehook net: ipv6: add second dif to raw socket lookups net: ipv6: add second dif to inet6 socket lookups net: ipv6: add second dif to udp socket lookups net: ipv4: add second dif to multicast source filter net: ipv4: add second dif to raw socket lookups net: ipv4: add second dif to inet socket lookups net: ipv4: add second dif to udp socket lookups hns3: fix unused function warning gcc-plugins: structleak: add option to init all vars used as byref args MAINTAINERS: Add myself to S390 ZFCP DRIVER as a co-maintainer scsi: fc: start decoupling fc_block_scsi_eh from scsi_cmnd scsi: qla2xxx: Fix remoteport disconnect for FC-NVMe scsi: qla2xxx: Simpify unregistration of FC-NVMe local/remote ports scsi: qla2xxx: Added change to enable ZIO for FC-NVMe devices scsi: qla2xxx: Move function prototype to correct header scsi: qla2xxx: Cleanup FC-NVMe code scsi: remove DRIVER_ATTR() usage scsi: Convert to using %pOF instead of full_name scsi: ufs: changing maintainer scsi: fusion: fix string overflow warning scsi: gdth: increase the procfs event buffer size scsi: fnic: fix format string overflow warning scsi: gdth: avoid buffer overflow warning scsi: mpt3sas: fix format overflow warning scsi: megaraid: fix format-overflow warning scsi: pmcraid: Replace PCI pool old API scsi: mvsas: Replace PCI pool old API scsi: mpt3sas: Replace PCI pool old API scsi: megaraid: Replace PCI pool old API scsi: lpfc: Replace PCI pool old API scsi: csiostor: Replace PCI pool old API scsi: be2iscsi: Replace PCI pool old API scsi: g_NCR5380: Two DTC436 PDMA workarounds scsi: g_NCR5380: Re-work PDMA loops scsi: g_NCR5380: Use unambiguous terminology for PDMA send and receive scsi: g_NCR5380: Cleanup comments and whitespace scsi: g_NCR5380: End PDMA transfer correctly on target disconnection scsi: g_NCR5380: Fix PDMA transfer size scsi: aacraid: complete all commands during bus reset scsi: aacraid: add fib flag to mark scsi command callback scsi: aacraid: enable sending of TMFs from aac_hba_send() scsi: aacraid: use aac_tmf_callback for reset fib scsi: aacraid: split off device, target, and bus reset scsi: aacraid: split off host reset scsi: aacraid: split off functions to generate reset FIB Bluetooth: bluecard: blink LED during continuous activity ARM: dts: BCM53573: Add Broadcom BCM947189ACDBMR board support ARM: dts: BCM5301X: Specify USB ports for USB LEDs of few devices ARM: dts: NSP: Add USB3 and USB3 PHY to NSP ARM: dts: NSP: Rearrage USB entries ARM: dts: NSP: Add dma-coherent to relevant DT entries arm64: dts: Add SBA-RAID DT nodes for Stingray SoC arm64: dts: Add FlexRM DT nodes for Stingray arm64: dts: Add SATA DT nodes for Stingray SoC arm64: dts: Add DT node to enable BGMAC driver on Stingray arm64: dts: Add sp804 DT nodes for Stingray SoC drm/i915: remove unused function declaration arm64: dts: Add MDIO multiplexer DT node for Stingray arm64: dts: Enable stats for CCN-502 interconnect on Stingray net: sched: get rid of struct tc_to_netdev net: sched: change return value of ndo_setup_tc for driver supporting mqprio only net: sched: move prio into cls_common net: sched: push cls related args into cls_common structure hns3pf: don't check handle during mqprio offload nfp: change flows in apps that offload ndo_setup_tc dsa: push cls_matchall setup_tc processing into a separate function mlxsw: spectrum: rename cls arg in matchall processing mlxsw: spectrum: push cls_flower and cls_matchall setup_tc processing into separate functions mlx5e_rep: push cls_flower setup_tc processing into a separate function mlx5e: push cls_flower and mqprio setup_tc processing into separate functions ixgbe: push cls_u32 and mqprio setup_tc processing into separate functions cxgb4: push cls_u32 setup_tc processing into a separate function net: sched: make egress_dev flag part of flower offload struct net: sched: rename TC_SETUP_MATCHALL to TC_SETUP_CLSMATCHALL net: sched: make type an argument for ndo_setup_tc dlm: use sock_create_lite inside tcp_accept_from_sock uapi linux/dlm_netlink.h: include linux/dlmconstants.h dlm: avoid double-free on error path in dlm_device_{register,unregister} dlm: constify kset_uevent_ops structure dlm: print log message when cluster name is not set dlm: Delete an unnecessary variable initialisation in dlm_ls_start() dlm: Improve a size determination in two functions dlm: Use kcalloc() in two functions dlm: Use kmalloc_array() in make_member_array() dlm: Delete an error message for a failed memory allocation in dlm_recover_waiters_pre() dlm: Improve a size determination in dlm_recover_waiters_pre() dlm: Use kcalloc() in dlm_scan_waiters() dlm: Improve a size determination in table_seq_start() dlm: Add spaces for better code readability dlm: Replace six seq_puts() calls by seq_putc() dlm: Make dismatch error message more clear dlm: Fix kernel memory disclosure backlight: gpio_backlight: Delete pdata inversion backlight: gpio_backlight: Convert to use GPIO descriptor backlight: pwm_bl: Make of_device_ids const ASoC: soc-core: remove duplicate mutex_unlock from snd_soc_unregister_component() ASoC: soc-core: rename "cmpnt" to "component" spi: fix building SPI_PXA on MMP ASoC: soc-core: Use IS_ERR_OR_NULL() ASoC: soc-core: Remove unneeded dentry member from snd_soc_codec spi: rockchip: Fix clock handling in suspend/resume spi: rockchip: Fix clock handling in remove spi: rockchip: Slightly rework return value handling fbdev: matrox: hide unused 'hotplug' variable fbcon: mark dummy functions 'inline' video: fbdev: Convert to using %pOF instead of full_name workqueue: fix path to documentation drm/fb-helper: pass physical dimensions to fbdev uapi drm/armada_drm.h: use __u32 and __u64 instead of uint32_t and uint64_t KVM: x86: use general helpers for some cpuid manipulation KVM: x86: generalize guest_cpuid_has_ helpers KVM: x86: X86_FEATURE_NRIPS is not scattered anymore ARM: configs: keystone: Enable MMC and regulators ARM: dts: keystone-k2g-evm: Enable MMC0 and MMC1 ARM: dts: keystone-k2g: add MMC0 and MMC1 nodes ARM: dts: keystone-k2g: Add eDMA nodes dt-bindings: ti,omap-hsmmc: Add 66AK2G mmc controller dt-bindings: ti,edma: Add 66AK2G specific information NFSv4: Cleanup setting of the migration flags. NFSv4.1: Ensure we clear the SP4_MACH_CRED flags in nfs4_sp4_select_mode() NFSv4: Refactor _nfs4_proc_exchange_id() KVM: nVMX: Emulate EPTP switching for the L1 hypervisor KVM: nVMX: Enable VMFUNC for the L1 hypervisor KVM: vmx: Enable VMFUNCs KVM: nVMX: get rid of nested_release_page* KVM: nVMX: get rid of nested_get_page() KVM: nVMX: INVPCID support KVM: hyperv: support HV_X64_MSR_TSC_FREQUENCY and HV_X64_MSR_APIC_FREQUENCY ARM: dts: keystone-k2g: Add gpio nodes ACPI/IORT: Add IORT named component memory address limits ACPI: Make acpi_dma_configure() DMA regions aware ACPI: Introduce DMA ranges parsing spi: use of_property_read_bool() arm64: neon: Export kernel_neon_busy to loadable modules ASoC: rockchip: add bindings for i2s ASoC: sunxi: make snd_soc_codec_driver structures as const ASoC: rt5514: reset dma_offset at hw_params ASoC: mediatek: Fix an error checking code drm/bridge: dw-hdmi: remove CEC engine register definitions drm/bridge: dw-hdmi: add cec driver drm/bridge: dw-hdmi: add missing cec_notifier_put Revert "reset: Add a Gemini reset controller" drm: remove unused and redundant callbacks staging: vboxvideo: remove dead gamma lut code arm64: Decode information from ESR upon mem faults arm64: Abstract syscallno manipulation arm64: syscallno is secretly an int, make it official net/mlx5: Increase the maximum flow counters supported net/mlx5: Fix counter list hardware structure net/mlx5: Delay events till ib registration ends net/mlx5: Add CONFIG_MLX5_ESWITCH Kconfig net/mlx5: Separate between E-Switch and MPFS net/mlx5: Unify vport manager capability check net/mlx5e: NIC netdev init flow cleanup net/mlx5e: Rearrange netdevice ops structures Bluetooth: bluecard: fix LED behavior Bluetooth: bluecard: Always enable LEDs (fix for Anycom CF-300) extcon: cros-ec: Fix a potential NULL pointer dereference sctp: remove the typedef sctp_subtype_t sctp: remove the typedef sctp_event_t sctp: remove the typedef sctp_event_timeout_t sctp: remove the typedef sctp_event_other_t sctp: remove the typedef sctp_event_primitive_t sctp: remove the typedef sctp_state_t sctp: remove the typedef sctp_ierror_t sctp: remove the typedef sctp_xmit_t sctp: remove the typedef sctp_sock_state_t sctp: remove the typedef sctp_transport_cmd_t sctp: remove the typedef sctp_scope_t sctp: remove the typedef sctp_scope_policy_t sctp: remove the typedef sctp_retransmit_reason_t sctp: remove the typedef sctp_lower_cwnd_t dt-bindings: net: Document bindings for anarion-gmac net: stmmac: Add Adaptrum Anarion GMAC glue layer netvsc: fix rtnl deadlock on unregister of vf net: dsa: User per-cpu 64-bit statistics tcp: consolidate congestion control undo functions tcp: fix cwnd undo in Reno and HTCP congestion controls net: systemport: Support 64bit statistics liquidio: moved console_bitmask module param to lio_main.c liquidio: add missing strings in oct_dev_state_str array drm: dw-hdmi-i2s: add missing company name on Copyright sfp: add SFP module support phylink: add in-band autonegotiation support for 10GBase-KR mode. phylink: add support for MII ioctl access to Clause 45 PHYs phylink: add module EEPROM support sfp: add sfp-bus to bridge between network devices and sfp cages phylink: add phylink infrastructure net: phy: add I2C mdio bus net: phy: export phy_start_machine() for phylink net: phy: provide a hook for link up/link down events net: phy: add 1000Base-X to phy settings table net: phy: move phy_lookup_setting() and guts of phy_supported_speeds() to phy-core net: phy: split out PHY speed and duplex string generation net: phy: allow settings table to support more than 32 link modes udp: no need to preserve skb->dst Revert "ipv4: keep skb->dst around in presence of IP options" ip/options: explicitly provide net ns to __ip_options_echo() IP: do not modify ingress packet IP option in ip_options_echo() ALSA: usbusx2y: constify usb_device_id. ALSA: us122l: constify usb_device_id. ALSA: ua101: constify usb_device_id. ALSA: usb-audio: constify usb_device_id. ALSA: snd-usb-caiaq: constify usb_device_id. ALSA: bcd2000: constify usb_device_id. ALSA: 6fire: constify usb_device_id. ALSA: hda: Add Cannonlake PCI ID ALSA: ice1712: add const to snd_akm4xxx structures ALSA: ice1712: add const to snd_ak4xxx_private structures clk: rockchip: support more rates for rv1108 cpuclk clk: rockchip: fix up indentation of some RV1108 clock-ids clk: rockchip: rename the clk id for HCLK_I2S1_2CH clk: rockchip: add more clk ids for rv1108 arm64: dts: rockchip: Add support for rk3399 excavator main board arm64: dts: rockchip: Add support for rk3399 sapphire SOM arm64: dts: rockchip: add rk3399 hdmi nodes arm64: dts: rockchip: add rk3399 mipi nodes arm64: dts: rockchip: add rk3399 edp nodes arm64: dts: rockchip: add pd_edp node for rk3399 arm64: dts: rockchip: Add rk3399 vop and display-subsystem ARM: rockchip: select ARCH_DMA_ADDR_T_64BIT for LPAE ARM: dts: rockchip: add more iommu nodes on rk3288 ARM: dts: rockchip: convert rk3288 device tree files to 64 bits ARM: dts: rockchip: add spi node and spi pinctrl on rk3228/rk3229 arm64: dts: rockchip: include opp dtsi for rk3399 firefly arm64: dts: rockchip: Add cpu operating points for RK3328 SoC ARM: gemini: select pin controller ARM: gemini: select ARM_AMBA ARM: gemini: select the clock controller ARM: gemini: tag the arch as having reset controller platform/x86: intel-vbtn: match power button on press rather than release ARM: dts: sun8i: a83t: h8homlet: Enable micro-SD card and onboard eMMC ARM: dts: sun8i: a83t: cubietruck-plus: Enable micro-SD card and eMMC ARM: dts: sun8i: a83t: Add pingroup for 8-bit eMMC on mmc2 ARM: dts: sun8i: a83t: Add MMC controller device nodes ARM: dts: sun8i: h3: Enable dwmac-sun8i on the Beelink X2 ARM: dts: sun8i: h3: Enable USB OTG on the Beelink X2 ARM: dts: sun8i: Add BananaPI M2-Magic DTS ARM: dts: sun7i: enable battery power supply subnode on cubietruck ARM: dts: sun8i: a83t: Add device node for R_INTC interrupt controller ARM: dts: sun8i: a23/a33: Use new sun6i-a31-r-intc compatible for NMI/R_INTC ARM: dts: sun6i: a31: Use new sun6i-a31-r-intc compatible for NMI/R_INTC ARM: dts: imx6ul-liteboard: Support poweroff aquantia: Switch to use napi_gro_receive ARM: dts: imx: add CX9020 Embedded PC device tree ARM: dts: imx53: add alternative UART2 configuration ARM: dts: imx53: add srtc node dt-bindings: arm: Add entry for Beckhoff CX9020 arm64: dts: freescale: ls1088a: add crypto node arm64: dts: freescale: ls208xa: add crypto node arm64: dts: freescale: ls208xa: share aliases node ARM: dts: i.MX25: add RNGB node to dtsi nfit, libnvdimm, region: export 'position' in mapping info ACPI / PM: Prefer suspend-to-idle over S3 on some systems ata: ahci_platform: Add shutdown handler lkdtm: Test VMAP_STACK allocates leading/trailing guard pages leds: blinkm: constify attribute_group structures. net: comment fixes against BPF devmap helper calls net: sched: avoid atomic swap in tcf_exts_change net: sched: cls_u32: no need to call tcf_exts_change for newly allocated struct net: sched: cls_route: no need to call tcf_exts_change for newly allocated struct net: sched: cls_flow: no need to call tcf_exts_change for newly allocated struct net: sched: cls_cgroup: no need to call tcf_exts_change for newly allocated struct net: sched: cls_bpf: no need to call tcf_exts_change for newly allocated struct net: sched: cls_basic: no need to call tcf_exts_change for newly allocated struct net: sched: cls_matchall: no need to call tcf_exts_change for newly allocated struct net: sched: cls_fw: no need to call tcf_exts_change for newly allocated struct net: sched: cls_flower: no need to call tcf_exts_change for newly allocated struct net: sched: cls_fw: rename fw_change_attrs function net: sched: cls_bpf: rename cls_bpf_modify_existing function net: sched: use tcf_exts_has_actions instead of exts->nr_actions net: sched: remove check for number of actions in tcf_exts_exec net: sched: fix return value of tcf_exts_exec net: sched: remove redundant helpers tcf_exts_is_predicative and tcf_exts_is_available net: sched: use tcf_exts_has_actions in tcf_exts_exec net: sched: change names of action number helpers to be aligned with the rest net: sched: remove unneeded tcf_em_tree_change net: sched: sch_atm: use Qdisc_class_common structure drm/i915/selftests: Retarget igt_render_engine_reset_fallback() net: hns: Fix for __udivdi3 compiler error net: phy: marvell: logical vs bitwise OR typo clk: meson: gxbb-aoclk: Add CEC 32k clock clk: meson: gxbb-aoclk: Switch to regmap for register access dt-bindings: clock: amlogic, gxbb-aoclkc: Update bindings clk: meson: gxbb: Add sd_emmc clk0 clocks clk: meson: gxbb: fix clk_mclk_i958 divider flags clk: meson: gxbb: fix meson cts_amclk divider flags clk: meson: meson8b: register the built-in reset controller dt-bindings: clock: gxbb-aoclk: Add CEC 32k clock clk: meson: gxbb: Add sd_emmc clk0 clkids clk: meson-gxbb: expose almost every clock in the bindings clk: meson8b: expose every clock in the bindings clk: meson: gxbb: fix protection against undefined clks clk: meson: meson8b: fix protection against undefined clks ALSA: control: code refactoring for TLV request handler to user element set ALSA: control: code refactoring TLV ioctl handler ALSA: control: obsolete user_ctl_lock ALSA: control: use counting semaphore as write lock for TLV write/command operations ALSA: control: queue events within locking of controls_rwsem for TLV operation arm: dts: mediatek: add larbid property for larb arm: dts: mt7623: fix mmc interrupt assignment arm64: neon: Temporarily add a kernel_mode_begin_partial() definition arm64: neon: Remove support for nested or hardirq kernel-mode NEON arm64: neon: Allow EFI runtime services to use FPSIMD in irq context arm64: fpsimd: Consistently use __this_cpu_ ops where appropriate arm64: neon: Add missing header guard in <asm/neon.h> arm64: neon: replace generic definition of may_use_simd() drm/bridge: dw-hdmi: add better clock disable control drm/bridge: dw-hdmi: add cec notifier support drm/tinydrm: remove call to mipi_dbi_init() from mipi_dbi_spi_init() drm/fsl-dcu: Use .dumb_map_offset and .dumb_destroy defaults cpufreq: dt: Add rk3328 compatible to use generic cpufreq driver drm/i915: fix backlight invert for non-zero minimum brightness drm/i915/shrinker: Wrap need_resched() inside preempt-disable drm/i915/perf: Initialise the dynamic sysfs attr cpufreq: intel_pstate: Improve IO performance with per-core P-states spi: pxa2xx: Convert to GPIO descriptor API where possible iommu/exynos: Remove custom platform device registration code ASoC: Intel: constify pci_device_id. dt-bindings: mediatek: add descriptions for larbid memory: mtk-smi: add larbid handle routine memory: mtk-smi: Use of_device_get_match_data helper iommu/omap: Use DMA-API for performing cache flushes iommu/omap: Fix disabling of MMU upon a fault iommu/exynos: prevent building on big-endian kernels drm: stm: remove dead code and pointless local lut storage drm: radeon: remove dead code and pointless local lut storage drm: nouveau: remove dead code and pointless local lut storage drm: mgag200: remove dead code and pointless local lut storage drm: i915: remove dead code and pointless local lut storage drm: gma500: remove dead code and pointless local lut storage drm: cirrus: remove dead code and pointless local lut storage drm: ast: remove dead code and pointless local lut storage drm: armada: remove dead empty functions drm: amd: remove dead code and pointless local lut storage tee: optee: sync with new naming of interrupts tee: indicate privileged dev in gen_caps tee: optee: interruptible RPC sleep tee: optee: add const to tee_driver_ops and tee_desc structures tee: tee_shm: Constify dma_buf_ops structures. tee: add forward declaration for struct device tee: optee: fix uninitialized symbol 'parg' drm/rockchip: fix race with kms hotplug and fbdev drm/rockchip: vop: report error when check resource error drm/rockchip: vop: round_up pitches to word align drm/rockchip: vop: fix NV12 video display error drm/rockchip: vop: fix iommu page fault when resume drm/rockchip: vop: no need wait vblank on crtc enable agp: nvidia: constify pci_device_id. agp: amd64: constify pci_device_id. agp: sis: constify pci_device_id. agp: efficeon: constify pci_device_id. agp: ati: constify pci_device_id. agp: ali: constify pci_device_id. agp: intel: constify pci_device_id. agp: amd-k7: constify pci_device_id. agp: uninorth: constify pci_device_id. test: add msg_zerocopy test tcp: enable MSG_ZEROCOPY sock: ulimit on MSG_ZEROCOPY pages sock: MSG_ZEROCOPY notification coalescing sock: enable MSG_ZEROCOPY sock: add SOCK_ZEROCOPY sockopt sock: add MSG_ZEROCOPY sock: skb_copy_ubufs support for compound pages sock: allocate skbs from optmem clk: sunxi-ng: allow set parent clock (PLL_CPUX) for CPUX clock on H3 clk: sunxi-ng: h3: gate then ungate PLL CPU clk after rate change EDAC, pnd2: Build in a minimal sideband driver for Apollo Lake f2fs: use printk_ratelimited for f2fs_msg f2fs: expose features to sysfs entry f2fs: support inode checksum f2fs: return wrong error number on f2fs_quota_write f2fs: provide f2fs_balance_fs to __write_node_page crypto: ccp - Add XTS-AES-256 support for CCP version 5 crypto: ccp - Rework the unit-size check for XTS-AES crypto: ccp - Add a call to xts_check_key() crypto: ccp - Fix XTS-AES-128 support on v5 CCPs crypto: arm64/aes - avoid expanded lookup tables in the final round crypto: arm/aes - avoid expanded lookup tables in the final round crypto: arm64/ghash - add NEON accelerated fallback for 64-bit PMULL crypto: arm/ghash - add NEON accelerated fallback for vmull.p64 crypto: arm64/gcm - implement native driver using v8 Crypto Extensions crypto: arm64/aes-bs - implement non-SIMD fallback for AES-CTR crypto: arm64/chacha20 - take may_use_simd() into account crypto: arm64/aes-blk - add a non-SIMD fallback for synchronous CTR crypto: arm64/aes-ce-ccm: add non-SIMD generic fallback crypto: arm64/aes-ce-cipher: add non-SIMD generic fallback crypto: arm64/aes-ce-cipher - match round key endianness with generic code crypto: arm64/sha2-ce - add non-SIMD scalar fallback crypto: arm64/sha1-ce - add non-SIMD generic fallback crypto: arm64/crc32 - add non-SIMD scalar fallback crypto: arm64/crct10dif - add non-SIMD generic fallback crypto: arm64/ghash-ce - add non-SIMD scalar fallback crypto: algapi - make crypto_xor() take separate dst and src arguments crypto: algapi - use separate dst and src operands for __crypto_xor() initcall_debug: add deferred probe times of: Update Moxa vendor prefix description PCI: hv: Do not sleep in compose_msi_msg() PCI/PM: Expand description of pci_set_power_state() clk: uniphier: remove sLD3 SoC support mlxsw: spectrum_router: Don't ignore IPv6 notifications mlxsw: spectrum_router: Abort on source-specific routes mlxsw: spectrum_router: Add support for route replace mlxsw: spectrum_router: Add support for IPv6 routes addition / deletion mlxsw: spectrum_router: Sanitize IPv6 FIB rules mlxsw: spectrum_router: Demultiplex FIB event based on family ipv6: fib: Add helpers to hold / drop a reference on rt6_info ipv6: Regenerate host route according to node pointer upon interface up ipv6: Regenerate host route according to node pointer upon loopback up ipv6: fib: Unlink replaced routes from their nodes ipv6: fib: Don't assume only nodes hold a reference on routes ipv6: fib: Add offload indication to routes ipv6: fib: Dump tables during registration to FIB chain ipv6: fib_rules: Dump rules during registration to FIB chain ipv6: fib: Add in-kernel notifications for route add / delete ipv6: fib: Add FIB notifiers callbacks ipv6: fib_rules: Check if rule is a default rule net: fib_rules: Implement notification logic in core rocker: Ignore address families other than IPv4 mlxsw: spectrum_router: Ignore address families other than IPv4 net: core: Make the FIB notification chain generic dt-bindings: net: marvell-pp2: update interrupt-names with TX interrupts net: mvpp2: add support for TX interrupts and RX queue distribution modes net: mvpp2: introduce queue_vector concept net: mvpp2: move from cpu-centric naming to "software thread" naming net: mvpp2: introduce per-port nrxqs/ntxqs variables net: mvpp2: remove RX queue group reset code net: mvpp2: fix MVPP21_ISR_RXQ_GROUP_REG definition ACPI: Make acpi_dev_get_resources() method agnostic net: arc_emac: Add support for ndo_do_ioctl net_device_ops operation net: hns3: Add HNS3 driver to kernel build framework & MAINTAINERS net: hns3: Add Ethtool support to HNS3 driver net: hns3: Add MDIO support to HNS3 Ethernet driver for hip08 SoC net: hns3: Add support of TX Scheduler & Shaper to HNS3 driver net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support net: hns3: Add HNS3 IMP(Integrated Mgmt Proc) Cmd Interface Support net: hns3: Add support of the HNAE3 framework net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC PCI: armada8k: Check the return value from clk_prepare_enable() PCI: hisi: Remove unused variable driver PCI: qcom: Allow ->post_init() to fail PCI: qcom: Don't unroll init if ->init() fails PCI: vmd: Assign vector zero to all bridges PCI: vmd: Reserve IRQ pre-vector for better affinity PCI: tegra: Explicitly request exclusive reset control PCI: imx6: Explicitly request exclusive reset control ACPICA: Update version to 20170728 ACPICA: Revert "Update resource descriptor handling" ACPICA: Resources: Allow _DMA method in walk resources ACPICA: Ensure all instances of AE_AML_INTERNAL have error messages ACPICA: Implement deferred resolution of reference package elements ACPICA: Debugger: Improve support for Alias objects ACPICA: Interpreter: Update handling for Alias operator ACPICA: EFI/EDK2: Cleanup to enable /WX for MSVC builds ACPICA: acpidump: Add DSDT/FACS instance support for Linux and EFI ACPICA: CLib: Add short multiply/shift support ACPICA: EFI/EDK2: Sort acpi.h inclusion order ACPICA: Add a comment, no functional change ACPICA: Namespace: Update/fix an error message ACPICA: iASL: Add support for the SDEI table ACPICA: Divergences: reduce access size definitions PCI: Remove unused pci_fixup_irqs() function sparc/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks unicore32/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks tile/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks MIPS: PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks ACPI / dock: constify attribute_group structure m68k/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks spi: Use Apple device properties in absence of ACPI resources ACPI / scan: Recognize Apple SPI and I2C slaves ACPI / property: Support Apple _DSM properties ACPI / property: Don't evaluate objects for devices w/o handle treewide: Consolidate Apple DMI checks alpha/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks sh/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks sh/PCI: Remove __init optimisations from IRQ mapping functions/data PCI: dwc: designware: Handle ->host_init() failures drm/i915: enable WaDisableDopClkGating for skl drm/i915: Fix PCH names for KBP and CNP. ecryptfs: convert to file_write_and_wait in ->fsync drm/fb-helper: add new drm_setup_crtcs_fb() function drm/i915/perf: Implement I915_PERF_ADD/REMOVE_CONFIG interface drm/i915: reorder NOA register definition to follow addresses drm/i915/perf: disable NOA logic when not used drm/i915/perf: leave GDT_CHICKEN_BITS programming in configs drm/i915/perf: prune OA configs drm/i915/perf: fix flex eu registers programming sctp: remove the typedef sctp_auth_chunk_t sctp: remove the typedef sctp_authhdr_t sctp: remove the typedef sctp_addip_chunk_t sctp: remove the typedef sctp_addiphdr_t sctp: remove the typedef sctp_addip_param_t sctp: remove the typedef sctp_cwr_chunk_t sctp: remove the typedef sctp_cwrhdr_t sctp: remove the typedef sctp_ecne_chunk_t sctp: remove the typedef sctp_ecnehdr_t sctp: remove the typedef sctp_error_t sctp: remove the typedef sctp_operr_chunk_t sctp: remove the typedef sctp_errhdr_t sctp: fix the name of struct sctp_shutdown_chunk_t sctp: remove the typedef sctp_shutdownhdr_t ibmvnic: Implement .get_channels ibmvnic: Implement .get_ringparam ibmvnic: Convert vnic server reported statistics to cpu endian ibmvnic: Implement per-queue statistics reporting tcp: remove extra POLL_OUT added for finished active connect() net: dsa: bcm_sf2: dst in not an array qlcnic: add const to bin_attribute structure rds: reduce memory footprint for RDS when transport is RDMA ipv4: Introduce ipip_offload_init helper function. bpf: fix the printing of ifindex net: hns: Add self-adaptive interrupt coalesce support in hns driver X25: constify null_x25_address mtd: nand: Remove support for block locking/unlocking drm/atmel-hlcdc: switch to drm_*{get,put} helpers drm/atmel-hlcdc : constify drm_plane_helper_funcs and drm_plane_funcs. drm: rcar-du: Use new iterator macros drm: rcar-du: Repair vblank for DRM page flips using the VSP drm: rcar-du: Fix race condition when disabling planes at CRTC stop drm: rcar-du: Wait for flip completion instead of vblank in commit tail drm: rcar-du: Use the VBK interrupt for vblank events drm: rcar-du: Add HDMI outputs to R8A7796 device description drm: rcar-du: Remove an unneeded NULL check drm: rcar-du: Setup planes before enabling CRTC to avoid flicker drm: rcar-du: Configure DPAD0 routing through last group on Gen3 drm: rcar-du: Restrict DPLL duty cycle workaround to H3 ES1.x drm: rcar-du: Support multiple sources from the same VSP drm: rcar-du: Fix comments to comply with the kernel coding style drm: rcar-du: Use of_graph_get_remote_endpoint() v4l: vsp1: Add support for header display lists in continuous mode v4l: vsp1: Add support for multiple DRM pipelines v4l: vsp1: Add support for multiple LIF instances v4l: vsp1: Add support for new VSP2-BS, VSP2-DL and VSP2-D instances ARM: mvebu: enable ARM_GLOBAL_TIMER compilation Armada 38x platforms ARM: dts: armada-38x: Add arm_global_timer node ARM: dts: marvell: fix PCI bus dtc warnings arm64: defconfig: enable fine-grained task level IRQ time accounting ARM64: dts: marvell: armada-37xx: Enable uSD on ESPRESSObin arm64: dts: marvell: Fully re-order nodes in Marvell CP110 dtsi files wcn36xx: check dma_mapping_error() ath9k: Add Dell Wireless 1802 with wowlan capability ath9k: fix debugfs file permission HID: ntrig: constify attribute_group structures. HID: logitech-hidpp: constify attribute_group structures. HID: sensor: constify attribute_group structures. HID: multitouch: constify attribute_group structures. ath10k: explicitly request exclusive reset control ath10k: push peer type to target for TDLS peers ath10k: add tdls support for 10.4 firmwares ath10k: extend wmi service map to accommodate new services ath10k: sdio: fix compile warning ath10k: add initial USB support ath10k: various usb related definitions ath10k: set a-mpdu receiver reference number s390/cio: add const to bin_attribute structures s390/sclp: add const to bin_attribute structure s390: use generic asm/unaligned.h s390: use generic uapi/asm/swab.h rtlwifi: Replace hardcode value with macro drm/i915: add const to bin_attribute drm/fb: Fix pointer dereference before null check. mwifiex: pcie: compatible with wifi-only image while extract wifi-part fw mwifiex: make addba request command clean net: qtnfmac: constify pci_device_id. hostap: Fix outdated comment about dev->destructor ASoC: Intel: cnl: add pci id for cnl ASoC: Intel: cnl: add dsp ops for cannonlake ASoC: Intel: cnl: Add sst library functions for cnl platform ASoC: Intel: cnl: Unstatify common ipc functions ASoC: Intel: Skylake: Move platform specific init to platform dsp_init() ASoC: Intel: cnl: Add cnl dsp functions and registers ASoC: Intel: Skylake: Add dsp cores management ASoC: Intel: Skylake: Use num_core to allocate instead of macro ASoC: Intel: Skylake: Add num of cores in dsp ops ASoC: Intel: kbl: Add map for new DAIs for Multi-Playback & Echo Ref ASoC: Intel: kbl: Add DAI links for Multi-Playback & Echo-reference ASoC: Intel: kbl: Add new FEs for Multi-Playback & Echo-Reference rtlwifi: rtl8192ee: constify pci_device_id. rtlwifi: rtl8188ee: constify pci_device_id. rtlwifi: rtl8723be: constify pci_device_id. rtlwifi: rtl8723ae: constify pci_device_id. rtlwifi: rtl8821ae: constify pci_device_id. rtlwifi: rtl8192se: constify pci_device_id. rtlwifi: rtl8192de: constify pci_device_id. qtnfmac: Tidy up DMA mask setting qtnfmac: prepare for AP_VLAN interface type support qtnfmac: remove function qtnf_cmd_skb_put_action qtnfmac: fix handling of iftype mask reported by firmware qtnfmac: implement scan timeout qtnfmac: implement cfg80211 channel_switch handler qtnfmac: move current channel info from vif to mac qtnfmac: fix station leave reason endianness qtnfmac: implement reporting current channel qtnfmac: implement cfg80211 dump_survey handler qtnfmac: add missing bus lock qtnfmac: regulatory configuration for self-managed setup qtnfmac: updates for regulatory support rtlwifi: Fix fallback firmware loading mwifiex: correct IE parse during association rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter HID: multitouch: use proper symbolic constant for 0xff310076 application ASoC: Intel: Skylake: Use correct nuvoton codec ID HID: multitouch: Support Asus T304UA media keys HID: multitouch: Support HID_GD_WIRELESS_RADIO_CTLS phy: rockchip-inno-usb2: Replace the extcon API powerpc: Remove old unused icswx based coprocessor support powerpc/mm: Cleanup check for stack expansion powerpc/mm: Don't lose "major" fault indication on retry powerpc/mm: Move page fault VMA access checks to a helper powerpc/mm: Set fault flags earlier powerpc/mm: Add a bunch of (un)likely annotations to do_page_fault powerpc/mm: Move/simplify faulthandler_disabled() and !mm check powerpc/mm: Move the DSISR_PROTFAULT sanity check powerpc/mm: Cosmetic fix to page fault accounting powerpc/mm: Move CMO accounting out of do_page_fault into a helper powerpc/mm: Rework mm_fault_error() powerpc/mm: Make bad_area* helper functions powerpc/mm: Fix reporting of kernel execute faults powerpc/mm: Simplify returns from __do_page_fault powerpc/mm: Move debugger check to notify_page_fault() powerpc/mm: Overhaul handling of bad page faults powerpc/mm: Move error_code checks for bad faults earlier powerpc/mm: Move out definition of CPU specific is_write bits powerpc/mm: Use symbolic constants for filtering SRR1 bits on ISIs powerpc/mm: Update bits used to skip hash_page powerpc/mm: Update definitions of DSISR bits powerpc/6xx: Handle DABR match before calling do_page_fault crypto: rockchip - return the err code when unable dequeue the crypto request crypto: rockchip - move the crypto completion from interrupt context hwrng: mx-rngc - add a driver for Freescale RNGC Documentation: devicetree: add Freescale RNGC binding hwrng: Kconfig - Correct help text about feeding entropy pool crypto: scompress - defer allocation of scratch buffer to first use crypto: scompress - free partially allocated scratch buffers on failure crypto: scompress - don't sleep with preemption disabled crypto: brcm - Support more FlexRM rings than SPU engines. crypto: atmel-ecc - fix signed integer to u8 assignment crypto: ecdh - fix concurrency on shared secret and pubkey crypto: ccp - remove duplicate module version and author entry crypto: tcrypt - remove AES-XTS-192 speed tests Crypto: atmel-ecc: Make a couple of local functions static crypto: img-hash - remove unnecessary static in img_hash_remove() crypto: atmel-tdes - remove unnecessary static in atmel_tdes_remove() crypto: atmel-sha - remove unnecessary static in atmel_sha_remove() crypto: omap-sham - remove unnecessary static in omap_sham_remove() crypto: n2 - Convert to using %pOF instead of full_name crypto: caam/jr - add support for DPAA2 parts ARM: dts: imx6ul-14x14-evk: Remove unrelated pin from ENET group ARM: dts: imx7d-sdb: Add flexcan support ARM: dts: imx7-colibri: add NAND support ARM: dts: imx7: add GPMI NAND and APBH DMA ipv4: fib: Remove unused functions mlxsw: spectrum_router: Refresh offload indication upon group refresh mlxsw: spectrum_router: Don't check state when refreshing offload indication mlxsw: spectrum_router: Provide offload indication using nexthop flags rocker: Provide offload indication using nexthop flags ipv4: fib: Set offload indication according to nexthop flags mlxsw: core: Use correct EMAD transaction ID in debug message netvsc: remove bonding setup script netvsc: add documentation netvsc: transparent VF management atm: solos-pci: constify attribute_group structures atm: adummy: constify attribute_group structure liquidio: set sriov_totalvfs correctly net: dsa: Add support for 64-bit statistics cgroup: short-circuit cset_cgroup_from_root() on the default hierarchy ARM: dts: bcm2835: Add Raspberry Pi Zero W dt-bindings: bcm: Add Raspberry Pi Zero W ARM: bcm283x: Define UART pinmuxing on board level PCI: shpchp: Enable bridge bus mastering if MSI is enabled PCI: dwc: designware: Test PCIE_ATU_ENABLE bit specifically PCI: dwc: designware: Make dw_pcie_prog_*_atu_unroll() static PCI: mvebu: Remove unneeded gpiod NULL check selftests: capabilities: convert the test to use TAP13 ksft framework selftests: capabilities: fix to run Non-root +ia, sgidroot => i test selftests: ptp: include default header install path drm: arcpgu: Allow some clock deviation in crtc->mode_valid() callback drm: arcpgu: Fix module unload drm: arcpgu: Fix mmap() callback arcpgu: Simplify driver name drm/arcpgu: Opt in debugfs selinux: Generalize support for NNP/nosuid SELinux domain transitions selftests: sigaltstack: convert to use TAP13 ksft framework ARC: Remove empty kernel/pcibios.c PCI: Add a generic weak pcibios_align_resource() selftests: splice: add .gitignore for generated files selftests: pstore: add .gitignore for generated files PCI: Add a generic weak pcibios_fixup_bus() soc: qcom: GLINK SSR notifier remoteproc: qcom: Add support for SSR notifications cgroup: re-use the parent pointer in cgroup_destroy_locked() cgroup: add cgroup.stat interface with basic hierarchy stats cgroup: implement hierarchy limits cgroup: keep track of number of descent cgroups flow_dissector: remove unused functions tcp: tcp_data_queue() cleanup net: bcmgenet: drop COMPILE_TEST dependency hyperv: netvsc: Neaten netvsc_send_pkt by using a temporary ata: sata_gemini: explicitly request exclusive reset control ata: Drop unnecessary static ASoC: codecs: msm8916-wcd-digital: add CIC filter source selection path ASoC: qcom: apq8016-sbc: set default mclk rate ASoC: codecs: msm8916-wcd-digital: add support to set_sysclk ASoC: codecs: msm8916-wcd-digital: add support to set_sysclk block: Add comment to submit_bio_wait() arm64: dts: marvell: re-order RTC nodes in Marvell CP110 description arm64: dts: marvell: mcbin: add an stdout-path arm64: dts: marvell: mcbin: add support for PCIe arm64: dts: marvell: mcbin: add support for i2c mux arm64: dts: marvell: fix USB3 regulator definition on MacchiatoBin arm64: dts: marvell: mcbin: add pinctrl nodes arm64: dts: marvell: cp110: add GPIO interrupts ARM64: dts: marvell: armada-37xx: Enable USB2 on espressobin ARM64: dts: marvell: armada-37xx: Wire PMUv3 ARM64: dts: marvell: armada-37xx: Enable memory-mapped GIC CPU interface ARM64: dts: marvell: armada-37xx: Fix GIC maintenance interrupt tty: fix __tty_insert_flip_char regression ARM: always enable AEABI for ARMv6+ ARM: avoid saving and restoring registers unnecessarily ARM: move PC value into r9 ARM: obtain thread info structure later ARM: use aliases for registers in entry-common ARM: 8689/1: scu: add missing errno include ARM: 8688/1: pm: add missing types include drm/i915: Fix out-of-bounds array access in bdw_load_gamma_lut netfilter: constify nf_loginfo structures netfilter: constify nf_conntrack_l3/4proto parameters netfilter: xtables: Remove unused variable in compat_copy_entry_from_user() drm/msm: Add A5XX hardware fault detection drm/msm: Remove uneeded platform dev members drm/msm/mdp5: Set up runtime PM for MDSS drm/msm/mdp5: Write to SMP registers even if allocations don't change drm/msm/mdp5: Don't use mode_set helper funcs for encoders and CRTCs drm/msm/dsi: Implement RPM suspend/resume callbacks drm/msm/dsi: Set up runtime PM for DSI drm/msm/hdmi: Set up runtime PM for HDMI drm/msm/mdp5: Use runtime PM get/put API instead of toggling clocks ASoC: rcar: unregister fixed rate on ADG soc: mtk-pmic-wrap: make of_device_ids const. arm64: dts: juno: replace underscores with hyphen in device node names arm64: dts: juno: Use the new coresight replicator string ASoC: codec: add DT support in dmic codec ASoC: Add bindings for DMIC codec driver ASoC: rt5663: Seprate the DC offset between headphone and headset ASoC: wm8524: Don't use dev_err to show supported sample rate ASoC: wm8523: Constfiy lrclk_ratios and bclk_ratios ASoC: wm8523: Fix array size for bclk_ratios net: Allow IPsec GSO for local sockets s390: remove asm/mman.h and asm/types.h s390/nmi: keep comments consistent xfrm: Clear RX SKB secpath xfrm_offload xfrm: Auto-load xfrm offload modules esp6: Fix RX checksum after header pull xfrm6: Fix CHECKSUM_COMPLETE after IPv6 header push esp6: Support RX checksum with crypto offload esp4: Support RX checksum with crypto offload HID: input: optionally use device id in battery name HID: input: map digitizer battery usage EDAC, sb_edac: Classify memory mirroring modes powerpc/mm: Pre-filter SRR1 bits before do_page_fault() powerpc/mm: Move exception_enter/exit to a do_page_fault wrapper powerpc/mm/radix: Avoid flushing the PWC on every flush_tlb_range powerpc/mm/radix: Improve TLB/PWC flushes powerpc/mm/radix: Improve _tlbiel_pid to be usable for PWC flushes net: dsa: rename switch EEE ops net: dsa: mv88e6xxx: remove EEE support net: dsa: remove PHY device argument from .set_eee net: dsa: call phy_init_eee in DSA layer net: dsa: mv88e6xxx: call phy_init_eee net: dsa: bcm_sf2: remove unneeded supported flags net: dsa: qca8k: empty qca8k_get_eee net: dsa: qca8k: do not cache unneeded EEE fields net: dsa: qca8k: enable EEE once net: dsa: qca8k: fix EEE init net: dsa: PHY device is mandatory for EEE drm/ast: Actually load DP501 firmware when required drm/ast: Add an crtc_disable callback to the crtc helper funcs drm/ast: Fix memleak in error path in ast_bo_create() drm/ast: Free container instead of member in ast_user_framebuffer_destroy() drm/ast: Simplify function ast_bo_unpin() ARM: dts: BCM5301X: Specify USB ports for each controller ravb: add workaround for clock when resuming with WoL enabled ravb: add wake-on-lan support via magic packet randstruct: Enable function pointer struct detection drivers/net/wan/z85230.c: Use designated initializers net: add skb_frag_foreach_page and use with kmap_atomic MAINTAINERS: add Sean/Nelson as MediaTek ethernet maintainers net-next: mediatek: add support for MediaTek MT7622 SoC net-next: mediatek: add platform data to adapt into various hardware dt-bindings: net: mediatek: add support for MediaTek MT7623 and MT7622 SoC strparser: Generalize strparser skbuff: Function to send an skbuf on a socket proto_ops: Add locked held versions of sendmsg and sendpage nfsd4: move some nfsd4 op definitions to xdr4.h platform/x86: intel-hid: Wake up Dell Latitude 7275 from suspend-to-idle platform/x86: dell-wmi: Fix driver interface version query x86/intel_rdt: Show bitmask of shareable resource with other executing units x86/intel_rdt/mbm: Handle counter overflow x86/intel_rdt/mbm: Add mbm counter initialization x86/intel_rdt/mbm: Basic counting of MBM events (total and local) x86/intel_rdt/cqm: Add CPU hotplug support x86/intel_rdt/cqm: Add sched_in support x86/intel_rdt: Introduce rdt_enable_key for scheduling x86/intel_rdt/cqm: Add mount,umount support x86/intel_rdt/cqm: Add rmdir support x86/intel_rdt: Separate the ctrl bits from rmdir x86/intel_rdt/cqm: Add mon_data x86/intel_rdt: Prepare for RDT monitor data support x86/intel_rdt/cqm: Add cpus file support x86/intel_rdt: Prepare to add RDT monitor cpus file support x86/intel_rdt/cqm: Add tasks file support x86/intel_rdt: Change closid type from int to u32 x86/intel_rdt/cqm: Add mkdir support for RDT monitoring x86/intel_rdt: Prepare for RDT monitoring mkdir support x86/intel_rdt/cqm: Add info files for RDT monitoring x86/intel_rdt: Simplify info and base file lists x86/intel_rdt/cqm: Add RMID (Resource monitoring ID) management x86/intel_rdt/cqm: Add RDT monitoring initialization x86/intel_rdt: Make rdt_resources_all more readable x86/intel_rdt: Cleanup namespace to support RDT monitoring x86/intel_rdt: Mark rdt_root and closid_alloc as static x86/intel_rdt: Change file names to accommodate RDT monitor code x86/intel_rdt: Introduce a common compile option for RDT x86/intel_rdt/cqm: Documentation for resctrl based RDT Monitoring x86/perf/cqm: Wipe out perf based cqm sunrpc: Const-ify all instances of struct rpc_xprt_ops ARM64: dts: meson-gxbb-nanopi-k2: Add GPIO lines names ARM64: dts: meson-gxl-khadas-vim: Add GPIO lines names ARM64: dts: meson-gxbb: p20x: add card regulator settle times ARM: dts: meson: mark the clock controller also as reset controller mtd: mtk-quadspi: Remove unneeded pinctrl header mtd: atmel-quadspi: Remove unneeded pinctrl header dt-bindings: amlogic: add unstable statement mtd: spi-nor: Recover from Spansion/Cypress errors exec: Consolidate pdeath_signal clearing exec: Use sane stack rlimit under secureexec exec: Consolidate dumpability logic smack: Remove redundant pdeath_signal clearing exec: Use secureexec for clearing pdeath_signal exec: Use secureexec for setting dumpability LSM: drop bprm_secureexec hook commoncap: Move cap_elevated calculation into bprm_set_creds commoncap: Refactor to remove bprm_secureexec hook smack: Refactor to remove bprm_secureexec hook selinux: Refactor to remove bprm_secureexec hook apparmor: Refactor to remove bprm_secureexec hook binfmt: Introduce secureexec flag exec: Correct comments about "point of no return" exec: Rename bprm->cred_prepared to called_set_creds dt-bindings: update OpenFirmware document links to devicetree.org of/irq: use of_property_read_u32_index to parse interrupts property of/device: use of_property_for_each_string to parse compatible strings mtd: spi-nor: intel-spi: Add support for Intel Denverton SPI serial flash controller Revert "l2tp: constify inet6_protocol structures" Revert "ipv6: constify inet6_protocol structures" drm: Create a format/modifier blob drm: Plumb modifiers through plane init perf trace beautify ioctl: Beautify perf ioctl's 'cmd' arg perf trace beautify ioctl: Beautify vhost virtio ioctl's 'cmd' arg tools include uapi: Grab a copy of linux/vhost.h perf trace beauty ioctl: Pass _IOC_DIR to the per _IOC_TYPE scnprintf perf trace beautify ioctl: Beautify KVM ioctl's 'cmd' arg tools include uapi: Grab a copy of linux/kvm.h perf trace beautify ioctl: Beautify sound ioctl's 'cmd' arg tools include uapi: Grab a copy of sound/asound.h perf trace beauty ioctl: Beautify DRM ioctl cmds fbdev: Nuke FBINFO_MODULE fbcon: Make fbcon a built-time depency for fbdev blk-mq: add warning to __blk_mq_run_hw_queue() for ints disabled video: fbdev: vt8623fb: constify pci_device_id. video: fbdev: matroxfb: constify pci_device_id. video: fbdev: pm3fb: constify pci_device_id. video: fbdev: s3fb: constify pci_device_id. video: fbdev: neofb: constify pci_device_id. video: fbdev: gxfb: constify pci_device_id. video: fbdev: pm2fb: constify pci_device_id. video: fbdev: imsttfb: constify pci_device_id. video: fbdev: sunxvr500: constify pci_device_id. video: fbdev: tdfx: constify pci_device_id. video: fbdev: mb862xx: constify pci_device_id. video: fbdev: nvidia: constify pci_device_id. video: fbdev: vermilion: constify pci_device_id. video: fbdev: kyro: constify pci_device_id. video: fbdev: arkfb: constify pci_device_id. video: fbdev: i810: constify pci_device_id. video: fbdev: riva: constify pci_device_id. video: fbdev: savage: constify pci_device_id. video: fbdev: via: constify pci_device_id. video: fbdev: skeletonfb: constify pci_device_id. video: fbdev: tridentfb: constify pci_device_id. video: fbdev: pvr2fb: constify pci_device_id. video: fbdev: intelfb: constify pci_device_id. video: fbdev: asiliantfb: constify pci_device_id. video: fbdev: sunxvr2500: constify pci_device_id. video: fbdev: aty128fb: constify pci_device_id. video: fbdev: atyfb: constify pci_device_id. video: fbdev: radeon: constify pci_device_id. omapfb: panel-sony-acx565akm: constify attribute_group structures. omapfb: panel-tpo-td043mtea1: constify attribute_group structures. video: fbdev: uvesafb: constify attribute_group structures. video: bfin-lq035q1-fb: constify dev_pm_ops fbdev: da8xx-fb: Drop unnecessary static drivers/video/fbdev/omap/lcd_mipid.c: add const to lcd_panel structure video: cobalt_lcdfb: constify fb_fix_screeninfo structure video: xilinxfb: constify fb_fix_screeninfo and fb_var_screeninfo structures video/chips: constify fb_fix_screeninfo and fb_var_screeninfo structures video/mbx: constify fb_fix_screeninfo and fb_var_screeninfo structures video: fbdev: sm712fb.c: fixed constant-left comparison warning video: fbdev: sm712fb.c: fixed prefer unsigned int warning video: fbdev: sm712fb.c: fix unaligned block comments warning video: fbdev: sm712fb.c: using __func__ macro for pr_debug omapfb: use of_graph_get_remote_endpoint() arm: dts: mt2701: Add usb3 device nodes arm: dts: mt2701: Add ethernet device node ARM: mediatek: dts: Cleanup bindings documentation ASoC: rt5514: Add the sanity checks of the buffer related address tools include uapi: Grab copies of drm/{drm,i915_drm}.h perf trace beauty ioctl: Improve 'cmd' beautifier mm: remove optimizations based on i_size in mapping writeback waits fs: convert a pile of fsync routines to errseq_t based reporting gfs2: convert to errseq_t based writeback error reporting for fsync fs: convert sync_file_range to use errseq_t based error-tracking futex: Allow for compiling out PI support ASoC: sun4i-i2s: Extend quirks scope ASoC: Intel: Skylake: Fix potential null pointer dereference ASoC: Intel: Skylake: Remove return check for skl_codec_create() ASoC: Intel: bxtn: Remove code loader reference in cleanup ASoC: Intel: Skylake: Reset the controller in probe cpufreq: Process remote callbacks from any CPU if the platform permits sched: cpufreq: Allow remote cpufreq callbacks cpufreq: intel_pstate: Drop INTEL_PSTATE_HWP_SAMPLING_INTERVAL PM / OPP: Fix get sharing CPUs when hotplug is used ACPI / sleep: Make acpi_sleep_syscore_init() static ACPI / PCI / PM: Rework acpi_pci_propagate_wakeup() ACPI / PM: Split acpi_device_wakeup() PCI / PM: Skip bridges in pci_enable_wake() powerpc/kernel: Avoid preemption check in iommu_range_alloc() ASoC: rt5663: Add the delay time to correct the calibration ASoC: codecs: fix wm8524 build error HID: Remove the semaphore driver_lock powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug powerpc/powernv: Save/Restore additional SPRs for stop4 cpuidle iwlwifi: mvm: don't retake the pointer to skb's CB iwlwifi: mvm: remove non-DQA mode iwlwifi: mvm: rename p2p-specific sta functions to include p2p in the names iwlwifi: mvm: simplify bufferable MMPDU check iwlwifi: mvm: require AP_LINK_PS for TVQM iwlwifi: pcie: rename iwl_trans_check_hw_rf_kill() to pcie iwlwifi: mvm: add compile-time option to disable EBS iwlwifi: implement fseq version mismatch warning iwlwifi: mvm: support fw reading empty OTP iwlwifi: pcie: fix A-MSDU on gen2 devices iwlwifi: mvm: fix uninitialized var while waiting for queues to empty iwlwifi: mvm: fix the FIFO numbers in A000 devices iwlwifi: mvm: refactor beacon template command code iwlwifi: dvm: remove unused defines iwlwifi: mvm: byte-swap constant instead of variable iwlwifi: mvm: check family instead of new TX API for workarounds iwlwifi: mvm: add and use iwl_mvm_has_unified_ucode() iwlwifi: fw api: fix various kernel-doc warnings iwlwifi: reorganize firmware API iwlwifi: refactor firmware debug code iwlwifi: track current firmware image in common code iwlwifi: refactor shared mem parsing iwlwifi: refactor out paging code HID: wacom: add USB_HID dependency drm/msm: Convert to use new iterator macros, v2. drm/nouveau: Convert nouveau to use new iterator macros, v2. drm/omapdrm: Fix omap_atomic_wait_for_completion drm/atomic: Use new iterator macros in drm_atomic_helper_wait_for_flip_done, again. Bluetooth: btusb: add ID for LiteOn 04ca:3016 clk: sunxi-ng: Wait for lock when using fractional mode clk: sunxi-ng: Make fractional helper less chatty clk: sunxi-ng: multiplier: Fix fractional mode clk: sunxi-ng: Fix fractional mode for N-M clocks tools headers: Fixup tools/include/uapi/linux/bpf.h copy of kernel ABI header tools perf: Do not check spaces/blank lines when checking header file copy drift tools include uapi: Grab a copy of asm-generic/ioctls.h ipv6: Avoid going through ->sk_net to access the netns net: phy: marvell: Refactor setting downshift into a helper net: phy: marvell: Use the set_polarity helper net: phy: marvell: Refactor m88e1121 RGMII delay configuration net: phy: marvell: Consolidate setting the phy-mode net: phy: marvell: consolidate RGMII delay code net: phy: marvell: Use core genphy_soft_reset() net: phy: marvell: tabification net: bcmgenet: Add dependency on HAS_IOMEM && OF tcp: add related fields into SCM_TIMESTAMPING_OPT_STATS tcp: extract the function to compute delivery rate f2fs: introduce f2fs_statfs_project f2fs: support F2FS_IOC_FS{GET,SET}XATTR f2fs: don't need to wait for node writes for atomic write f2fs: avoid naming confusion of sysfs init f2fs: support project quota f2fs: record quota during dot{,dot} recovery f2fs: enhance on-disk inode structure scalability f2fs: make max inline size changeable f2fs: add ioctl to expose current features f2fs: make background threads of f2fs being aware of freezing net: phy: Log only PHY state transitions mm: add file_fdatawait_range and file_write_and_wait fuse: convert to errseq_t based error tracking for fsync selinux: genheaders should fail if too many permissions are defined arm64: dts: rockchip: update dynamic-power-coefficient for rk3399 ARM: rockchip: enable ZONE_DMA for non 64-bit capable peripherals mlxsw: spectrum_router: Simplify a piece of code mlxsw: spectrum_router: Clarify a piece of code mlxsw: spectrum_router: Simplify a piece of code mlxsw: reg.h: Namespace IP2ME registers mlxsw: Update specification of reg_ritr_type mlxsw: spectrum_router: Fix a typo mlxsw: reg.h: Fix a typo mlxsw: spectrum_acl: Fix a typo net: bcmgenet: Utilize bcmgenet_mii_exit() for error path net: bcmgenet: Drop legacy MDIO code net: bcmgenet: utilize generic Broadcom UniMAC MDIO controller driver net: phy: mdio-bcm-unimac: Allow specifying platform data net: phy: mdio-bcm-unimac: Add debug print for PHY workaround net: phy: mdio-bcm-unimac: create unique bus names net: phy: mdio-bcm-unimac: factor busy polling loop tcp: remove unused mib counters tcp: remove CA_ACK_SLOWPATH tcp: remove header prediction tcp: remove low_latency sysctl tcp: reindent two spots after prequeue removal tcp: remove prequeue support PCI: Mark AMD Stoney GPU ATS as broken MIPS: PCI: Fix pcibios_scan_bus() NULL check code path PCI: iproc: Remove unused struct iproc_pcie *pcie PCI: Mark Broadcom HT2100 Root Port Extended Tags as broken PCI/portdrv: Move error handler methods to struct pcie_port_service_driver IB/hfi1: Always perform offline transition IB/hfi1: Prevent link down request double queuing IB/hfi1: Create workqueue for link events IB/{rdmavt, hfi1, qib}: Fix panic with post receive and SGE compression IB/hfi1: Disambiguate corruption and uninitialized error cases IB/hfi1: Only set fd pointer when base context is completely initialized IB/hfi1: Do not enable disabled port on cable insert IB/hfi1: Harden state transition to Armed and Active IB/hfi1: Split copy_to_user data copy for better security IB/hfi1: Verify port data VLs credits on transition to Armed IB/hfi1: Move saving PCI values to a separate function IB/hfi1: Fix initialization failure for debug firmware IB/hfi1: Fix code consistency for if/else blocks in chip.c IB/hfi1: Send MAD traps until repressed IB/hfi1: Pass the context pointer rather than the index IB/hfi1: Use context pointer rather than context index IB/hfi1: Size rcd array index correctly and consistently IB/hfi1: Remove unused user context data members IB/hfi1: Assign context does not clean up file descriptor correctly on error IB/hfi1: Serve the most starved iowait entry first IB/hfi1: Fix bar0 mapping to use write combining IB/hfi1: Check return values from PCI config API calls IB/hns: include linux/interrupt.h netfilter: conntrack: do not enable connection tracking unless needed netfilter: nft_set_rbtree: use seqcount to avoid lock in most cases netfilter: nf_tables: Allow object names of up to 255 chars netfilter: nf_tables: Allow set names of up to 255 chars netfilter: nf_tables: Allow chain name of up to 255 chars netfilter: nf_tables: Allow table names of up to 255 chars netlink: Introduce nla_strdup() netfilter: nf_tables: No need to check chain existence when tracing dma-buf/sw_sync: clean up list before signaling the fence netfilter: nf_hook_ops structs can be const dma-buf/sw_sync: move timeline_fence_ops around netfilter: nfnetlink_queue: don't queue dying conntracks to userspace netfilter: conntrack: destroy functions need to free queued packets netfilter: add and use nf_ct_unconfirmed_destroy netfilter: expect: add and use nf_ct_expect_iterate helpers netfilter: conntrack: Change to deferable work queue netfilter: nf_tables: add fib expression to the netdev family netfilter: nf_tables: fib: use skb_header_pointer ARM: tegra: Select appropriate DMA options for LPAE i2c: Convert to using %pOF instead of full_name ARM: dts: iwg20m: Correct indentation of mmcif0 properties ARM: dts: rskrza1: Add LED0 pin support ARM: dts: rskrza1: Add SDHI1 pin group ARM: dts: rskrza1: Add Ethernet pin group ARM: dts: rskrza1: Add SCIF2 pin group ARM: dts: genmai: Add ethernet pin group ARM: dts: genmai: Add user led device nodes ARM: dts: genmai: Add RIIC2 pin group ARM: dts: genmai: Add SCIF2 pin group ARM: dts: r7s72100: Add pin controller node i2c: use dev_get_drvdata() to get private data in suspend/resume hooks ARM: tegra: Register host1x node with IOMMU binding on Tegra124 ASoC: soc-pcm: Remove unused 'debugfs_dpcm_state' entry drm: todo: Avoid accidental crossreferences i2c: mediatek: send i2c master code at 400k tools headers: Fixup tools/include/uapi/linux/bpf.h copy of kernel ABI header tools headers: Sync kernel ABI headers with tooling headers perf build: Clarify open-coded header version warning message perf build: Clarify header version warning message drm: Add a few missing descriptions in drm_driver docs gpu/host1x: Remove excess parameter in host1x_subdev_add docs drm: Fix warning when building docs for scdc_helper drm/modes: Fix drm_mode_is_420_only() comment tools/power/cpupower: allow running without cpu0 HID: add ALWAYS_POLL quirk for Logitech 0xc077 drm: Fix kerneldoc for atomic_async_update drm/atomic: Update comment to match the code ARM: mediatek: add MT7623a smp bringup code arm: dts: mt7623: add clock-frequency to CPU nodes arm: dts: mt7623: add support for Bananapi R2 (BPI-R2) board arm: dts: mt7623: enable the nand device on the mt7623n nand rfb arm: dts: mt7623: enable the usb device on the mt7623n rfb arm: dts: mt7623: cleanup the mt7623n rfb uart nodes arm: dts: mt7623: rename mt7623-evb.dts to arch/arm/boot/dts/mt7623n-rfb.dtsi arm: dts: mt7623: add mt6323.dtsi file dt-bindings: arm: mediatek: add bindings for mediatek MT7623a SoC Platform dt-bindings: arm: mediatek: update for MT7623n SoC and relevant boards PM / CPU: replace raw_notifier with atomic_notifier ACPI: APEI: Enable APEI multiple GHES source to share a single external IRQ Bluetooth: hci_uart: Fix uninitialized alignment value soc/tegra: Fix bad of_node_put() in powergate init dt-bindings: clock: meson8b: describe the embedded reset controller drm/i915: Update DRIVER_DATE to 20170731 powerpc/mm: Fix check of multiple 16G pages from device tree powerpc/udbg: Reduce the footgun potential of EARLY_DEBUG_LPAR(_HVSI) powerpc/configs: Add a powernv_be_defconfig ARM: dts: keystone-k2e-evm: Add and enable DSP CMA memory pool ARM: dts: keystone-k2l-evm: Add and enable common DSP CMA memory pool ARM: dts: keystone-k2hk-evm: Add and enable common DSP CMA memory pool ARM: dts: keystone-k2e: Add DSP node ARM: dts: keystone-k2l: Add DSP nodes ARM: dts: keystone-k2hk: Add DSP nodes net sched actions: add time filter for action dumping net sched actions: dump more than TCA_ACT_MAX_PRIO actions per batch net sched actions: Use proper root attribute table for actions net netlink: Add new type NLA_BITFIELD32 net: fec: Allow reception of frames bigger than 1522 bytes net: fec: Issue error for missing but expected PHY net: dsa: lan9303: MDIO access phy registers directly net: dsa: lan9303: Renamed indirect phy access functions net: dsa: lan9303: Multiply by 4 to get MDIO register net: dsa: lan9303: Fix lan9303_detect_phy_setup() for MDIO drm/rockchip: vop: rk3328: fix overlay abnormal dt-bindings: display: rockchip: fill Documents for vop series drm/rockchip: vop: add a series of vop support drm/rockchip: vop: group vop registers drm/rockchip: vop: move line_flag_num to interrupt registers drm/rockchip: vop: move write_relaxed flags to vop register drm/rockchip: vop: initialize registers directly rtc: max8925: remove redundant check on ret rtc: sun6i: ensure clk_data is kfree'd on error rtc: sun6i: Remove double init of spinlock in sun6i_rtc_clk_init() rtc: ds1307: remove legacy check for "isil, irq2-can-wakeup-machine" property rtc: s35390a: implement ioctls rtc: s35390a: handle invalid RTC time staging: wlan-ng: Fix the types of the hfa384x_comm_tallies_16/32 members Staging: rtl8723bs: Do not initialise static to 0. Staging: wlan-ng: hfa384x.h: Fix endianness warning for hfa384x_ps_user_count staging: rts5208: Change fixed function names with "%s: ", __func__ staging: wilc1000: fix spelling mistake: "Iinitialization" -> "initialization" staging: bcm2835-audio: constify snd_pcm_ops structures staging: rtl8723bs: fix build when DEBUG_RTL871X is defined staging: nvec: explicitly request exclusive reset control staging: imx: fix non-static declarations staging: fsl-mc: include irqreturn.h as needed staging: fsl-mc/dpio: Skip endianness conversion in portal config staging: fsl-dpaa2/eth: Error report format fixes staging: fsl-dpaa2/eth: Fix skb use after free staging: fsl-mc: fix resource_size.cocci warnings staging: fsl-mc: allow the driver compile multi-arch staging: fsl-mc: make the driver compile on 32-bit staging: fsl-mc: don't use raw device io functions staging: fsl-mc: fix formating of phys_addr_t on 32 bits staging: fsl-mc: fix compilation with non-generic msi domain ops staging: fsl-mc: drop useless gic v3 related #include staging: fsl-mc: use generic memory barriers staging: fsl-mc: add missing fsl_mc comment in struct msi_desc staging: rtl8723bs: rtw_efuse: Fix a misspell Staging: wlan-ng: Fixing coding style warnings staging: goldfish: Use __func__ instead of function name staging: lustre: lov: remove dead code staging: lustre: llite: set security xattr using __vfs_setxattr staging: lustre: llite: add xattr.h header to xattr.c staging: lustre: llite: allow cached acls staging: lustre: libcfs: fix test for libcfs_ioctl_hdr minimum size staging: lustre: ptlrpc: print times in microseconds staging: lustre: ptlrpc: don't use CFS_DURATION_T for time64_t staging: lustre: ptlrpc: restore 64-bit time for struct ptlrpc_cli_req staging: lustre: linkea: linkEA size limitation staging: lustre: lustre: fix all less than 0 comparison for unsigned values staging: lustre: ldlm: restore interval_iterate_reverse function staging: lustre: ptlrpc: no need to reassign mbits for replay staging: lustre: ptlrpc: correct use of list_add_tail() staging: lustre: lov: Ensure correct operation for large object sizes staging: lustre: lmv: assume a real connection in lmv_connect() staging: lustre: lov: remove unused code staging: lustre: lov: fix 'control flow' error in lov_io_init_released staging: lustre: ldlm: crash on umount in cleanup_resource staging: lustre: ldlm: restore missing newlines in ldlm sysfs files staging: lustre: osc: soft lock - osc_makes_rpc() staging: lustre: lov: refactor lov_object_fiemap() staging: lustre: lov: use u64 instead of loff_t in lov_object_fiemap() staging: lustre: obdclass: linux: constify attribute_group structures. staging: lustre: ldlm: constify attribute_group structures. staging: lustre: constify attribute_group structures. staging: lustre: lnet: fix incorrect arguments order calling lstcon_session_new staging: comedi: ni_mio_common.c: fix coding style issue staging: fsl-mc: Convert to using %pOF instead of full_name greybus: usb: constify hc_driver structures tty: improve tty_insert_flip_char() slow path tty: improve tty_insert_flip_char() fast path dt-bindings: serial/rs485: make rs485-rts-delay optional serial: fsl_lpuart: clear unsupported options in .rs485_config() serial: 8250_pci: Enable device after we check black list serial: core: move UPF_NO_TXEN_TEST to quirks and rename serial: core: enforce type for upf_t when copying serial: 8250_early: Remove __init marking from early write serial: 8250_ingenic: Remove __init marking from early write serial: xuartps: Remove __init marking from early write serial: omap: Remove __init marking from early write serial: arc: Remove __init marking from early write drivers/serial: Do not leave sysfs group in case of error in aspeed_vuart_probe() serial: sprd: clear timeout interrupt only rather than all interrupts serial: imx: drop useless member from driver data serial: tegra: explicitly request exclusive reset control serial: 8250_dw: explicitly request exclusive reset control serial: 8250: fix error handling in of_platform_serial_probe() tty: Convert to using %pOF instead of full_name tty: serial: jsm: constify pci_device_id. tty: synclink_gt: constify pci_device_id. tty: serial: pci: constify pci_device_id. tty: serial: exar: constify pci_device_id. tty: moxa: constify pci_device_id. tty: synclink: constify pci_device_id. tty: mxser: constify pci_device_id. tty: isicom: constify pci_device_id. tty: synclinkmp: constify pci_device_id. serial: stm32: add fifo support serial: stm32: add wakeup mechanism dt-bindings: serial: add compatible for stm32h7 serial: stm32: fix error handling in probe serial: stm32: add RTS support serial: stm32: Increase maximum number of ports serial: stm32: fix multi-ports management serial: stm32: fix copyright c67x00-hcd: constify hc_driver structures USB: whci-hcd: constify hc_driver structures USB: HWA: constify hc_driver structures isp116x-hcd: constify hc_driver structures usb: renesas_usbhs: constify hc_driver structures usb: host: u132-hcd: constify hc_driver structures usb: host/sl811-hcd: constify hc_driver structures usb: r8a66597-hcd: constify hc_driver structures usb: host: max3421-hcd: constify hc_driver structures isp1362-hcd: constify hc_driver structures usb: mtu3: fix ip sleep auto-exit issue when enable DRD mode usb: mtu3: clear u1/u2_enable to 0 in mtu3_gadget_reset usb: mtu3: handle delayed status of the control transfer MAINTAINERS: Add Tony and Boris as ACPI/APEI reviewers acpi, x86/mm: Remove encryption mask from ACPI page protection type x86/mm, kexec: Fix memory corruption with SME on successive kexecs x86/asm/32: Remove a bunch of '& 0xffff' from pt_regs segment reads x86/traps: Don't clear segment high bits in early_idt_handler_common() x86/asm/32: Make pt_regs's segment registers be 16 bits cxgb4: ethtool forward error correction management support cxgb4: core hardware/firmware support for Forward Error Correction on a link net: ethtool: add support for forward error correction modes netvsc: signal host if receive ring is emptied netvsc: fix error unwind on device setup failure netvsc: optimize receive completions netvsc: remove unnecessary indirection of page_buffer netvsc: don't print pointer value in error message netvsc: fix warnings reported by lockdep netvsc: fix return value for set_channels liquidio: bump up driver version to match newer NIC firmware module: Remove const attribute from alias for MODULE_DEVICE_TABLE bnxt_re: add MAY_USE_DEVLINK dependency bpf: testing: fix devmap tests arm64: dts: rockchip: add rk3328 spdif node arm64: dts: rockchip: add rk3368 spdif node net: moxa: Add spaces preferred around that '{+,-}' net: moxa: Fix for typo in comment to function moxart_mac_setup_desc_ring() net: moxa: Remove extra space after a cast net: moxa: Fix comparison to NULL could be written with ! net: moxa: Prefer 'unsigned int' to bare use of 'unsigned' net: moxa: Remove braces from single-line body v4l: vsp1: Add support for the BRS entity v4l: vsp1: Add pipe index argument to the VSP-DU API v4l: vsp1: Don't create links for DRM pipeline v4l: vsp1: Store source and sink pointers as vsp1_entity v4l: vsp1: Don't set WPF sink pointer v4l: vsp1: Don't recycle active list at display start v4l: vsp1: Fill display list headers without holding dlm spinlock net/smc: synchronize buffer usage with device net/smc: cleanup function __smc_buf_create() net/smc: common functions for RMBs and send buffers net/smc: introduce sg-logic for send buffers net/smc: remove Kconfig warning net/smc: register RMB-related memory region net/smc: use separate memory regions for RMBs net/smc: introduce sg-logic for RMBs net/smc: shorten local bufsize variables net/smc: serialize connection creation in all cases blk-mq: blk_mq_requeue_work() doesn't need to save IRQ flags block: DAC960: shut up format-overflow warning block: use standard blktrace API to output cgroup info for debug notes blktrace: add an option to allow displaying cgroup path block: always attach cgroup info into bio blktrace: export cgroup info in trace cgroup: export fhandle info for a cgroup kernfs: add exportfs operations kernfs: introduce kernfs_node_id kernfs: don't set dentry->d_fsdata kernfs: add an API to get kernfs node from inode number kernfs: implement i_generation kernfs: use idr instead of ida to manage inode number dma-buf/sync_file: Allow multiple sync_files to wrap a single dma-fence mm: consolidate dax / non-dax checks for writeback Documentation: add some docs for errseq_t tinydrm: repaper: add CONFIG_THERMAL dependency drm/hisilicon: hibmc: Use the drm_driver.dumb_destroy default drm/nouveau: Use the drm_driver.dumb_destroy default drm/omapdrm: Use the drm_driver.dumb_destroy default drm/amdgpu: Use the drm_driver.dumb_destroy default drm/rockchip: Use .dumb_map_offset and .dumb_destroy defaults drm/mediatek: Use .dumb_map_offset and .dumb_destroy defaults drm/tinydrm: Use .dumb_map_offset and .dumb_destroy defaults drm/zte: Use .dumb_map_offset and .dumb_destroy defaults drm/vc4: Use .dumb_map_offset and .dumb_destroy defaults drm/tilcdc: Use .dumb_map_offset and .dumb_destroy defaults drm/sun4i: Use .dumb_map_offset and .dumb_destroy defaults drm/stm: Use .dumb_map_offset and .dumb_destroy defaults drm/shmobile: Use .dumb_map_offset and .dumb_destroy defaults drm/rcar-du: Use .dumb_map_offset and .dumb_destroy defaults drm/pl111: Use .dumb_map_offset and .dumb_destroy defaults drm/imx: Use .dumb_map_offset and .dumb_destroy defaults drm/atmel-hlcdc: Use .dumb_map_offset and .dumb_destroy defaults drm/arm: mali-dp: Use .dumb_map_offset and .dumb_destroy defaults drm/arm: hdlcd: Use .dumb_map_offset and .dumb_destroy defaults drm/arc: Use .dumb_map_offset and .dumb_destroy defaults drm/dumb-buffers: Add defaults for .dumb_map_offset and .dumb_destroy drm/gem: Add drm_gem_dumb_map_offset() batman-adv: Convert batman-adv.txt to reStructuredText batman-adv: fix various spelling mistakes batman-adv: Remove variable deprecated by skb_put_data batman-adv: Remove too short %pM printk field width batman-adv: Remove unnecessary length qualifier in %14pM batman-adv: Start new development cycle l2tp: constify inet6_protocol structures ipv6: constify inet6_protocol structures f2fs: don't give partially written atomic data from process crash f2fs: give a try to do atomic write in -ENOMEM case f2fs: preserve i_mode if __f2fs_set_acl() fails staging: fbtft: array underflow in fbtft_request_gpios_match() staging: gs_fpgaboot: return valid error codes staging: gs_fpgaboot: change char to u8 staging: gs_fpgaboot: add buffer overflow checks staging: skein: move macros into header file staging: vboxvideo: make a couple of symbols static staging: vboxvideo: remove unused variables staging: vboxvideo: Kconfig: Fix typos in help text staging: vboxvideo: select GENERIC_ALLOCATOR staging: pi433: use div_u64 for 64-bit division staging: pi433: Style fix - align block comments staging: pi433: Make functions rf69_set_bandwidth_intern static Staging: pi433: check error after kthread_run() Staging: pi433: declare functions static staging: pi433: depends on SPI staging: pi433: return -EFAULT if copy_to_user() fails ARM: dts: bcm283x: Move the BCM2837 DT contents from arm64 to arm. arm64: dts: move ns2 into northstar2 directory drm/vc4: Convert more lock requirement comments to lockdep assertions. drm/vc4: Add an ioctl for labeling GEM BOs for summary stats drm/vc4: Start using u64_to_user_ptr. sched: Allow migrating kthreads into online but inactive CPUs selinux: update the selinux info in MAINTAINERS perf data: Add doc when no conversion support compiled perf data: Add mmap[2] events to CTF conversion perf data: Add callchain to CTF conversion selftests: sync: convert to use TAP13 ksft framework selftests: kselftest framework: add API to return pass/fail/* counts selftests: sync: differentiate between sync unsupported and access errors RDMA/hns: fix build regression IB/hns: fix semicolon.cocci warnings IB/hns: fix returnvar.cocci warnings IB/hns: fix boolreturn.cocci warnings IB/hns: Support compile test for hns RoCE driver IB/cma: Fix default RoCE type setting drm/amd/powerplay: rv: Use designated initializers ARM: dts: meson: add a node which describes the SRAM ARM: dts: meson8b: use the existing wdt node to override the compatible ARM: dts: meson8: add the PWM controller nodes ARM: dts: move the pwm_ab and pwm_cd nodes to meson.dtsi Bluetooth: btrtl: Fix a error code in rtl_load_config() soc: Add Amlogic SoC Information driver ARM64: dts: meson-gx: Add SoC info register perf annotate TUI: Set appropriate column width for period/percent perf annotate TUI: Fix column header when toggling period/percent perf annotate TUI: Clarify calculation of column header widths perf annotate TUI: Fix --show-total-period perf annotate TUI: Use sym_hist_entry in disasm_line_samples perf annotate: Fix storing per line sym_hist_entry rtlwifi: rtl8821ae: Fix HW_VAR_NAV_UPPER operation rtlwifi: Fix memory leak when firmware request fails rtlwifi: Remove unused dummy function rtlwifi: remove dummy function call rtlwifi: move IS_HARDWARE_TYPE_xxx checker to wifi.h rtlwifi: Uses addr1 instead DA to determine broadcast and multicast addr. rtlwifi: Rename rtl_desc92_rate to rtl_desc_rate rtlwifi: Update 8723be new phy parameters and its parser. rtlwifi: add amplifier type for 8812ae rtlwifi: Add board type for 8723be and 8192ee rtlwifi: Add BT_MP_INFO to c2h handler. rtlwifi: Fill in_4way field by driver wl3501_cs: fix spelling mistake: "Insupported" -> "Unsupported" brcmfmac: constify pci_device_id zd1211rw: fix spelling mistake 'hybernate' -> 'hibernate' ipw2100: don't return positive values to PCI probe on error mwifiex: fix spelling mistake: "Insuffient" -> "Insufficient" mwifiex: usb: fix spelling mistake: "aggreataon"-> "aggregation" mwifiex: disable uapsd in tdls config mwifiex: usb: unlock on error in mwifiex_usb_tx_aggr_tmo() mwifiex: uninit wakeup info in the error handling mwifiex: fix compile warning of unused variable mwifiex: drop num CPU notice mwifiex: keep mwifiex_cancel_pending_ioctl() static mwifiex: pcie: remove unnecessary 'pdev' check mwifiex: pcie: disable device DMA before unmapping/freeing buffers mwifiex: debugfs: allow card_reset() to cancel things mwifiex: pcie: unify MSI-X / non-MSI-X interrupt process mwifiex: pcie: remove unnecessary masks mwifiex: drop 'add_tail' param from mwifiex_insert_cmd_to_pending_q() mwifiex: don't open-code ARRAY_SIZE() mwifiex: utilize netif_tx_{wake,stop}_all_queues() mwifiex: make mwifiex_free_cmd_buffer() return void mwifiex: fix misnomers in mwifiex_free_lock_list() mwifiex: ensure "disable auto DS" struct is initialized mwifiex: fixup init_channel_scan_gap error case mwifiex: don't short-circuit netdev notifiers on interface deletion mwifiex: unregister wiphy before freeing resources mwifiex: re-register wiphy across reset mwifiex: pcie: don't allow cmd buffer reuse after reset mwifiex: reset interrupt status across device reset mwifiex: reunite copy-and-pasted remove/reset code rsi: fix static checker warning rsi: check length before USB read/write register rsi: use macro for allocating USB buffer rsi: regulatory enhancements rsi: Send rx filter frame to device when interface is down rsi: Remove internal header from Tx status skb rsi: update tx command frame block/unblock data rsi: block/unblock data queues as per connection status rsi: update autorate request command frame rsi: set_key enhancements rsi: update set_key command frame rsi: update vap capabilities command frame rsi: update set_channel command frame rsi: Update baseband RF programming frame rsi: Update aggregation parameters command frame rsi: Update peer notify command frame rsi: remove unnecessary check for 802.11 management packet rsi: Update in tx command frame radio capabilities rsi: immediate wakeup bit and priority for TX command packets rsi: add common structures needed for command packets rsi: Rename mutex tx_rxlock to the tx_lock. rsi: use separate mutex lock for receive thread rsi: SDIO Rx packet processing enhancement rsi: Optimise sdio claim and release host rsi: rename variable in_sdio_litefi_irq rsi: separate function for data packet descriptor rsi: data packet descriptor enhancements rsi: data packet descriptor code cleanup rsi: separate function for management packet descriptor rsi: management frame descriptor preparation cleanup rsi: set immediate wakeup bit rsi: choose correct endpoint based on queue. rsi: rename USB endpoint macros rsi: correct the logic of deriving queue number rsi: USB tx headroom cleanup rsi: card reset for USB interface rsi: correct SDIO disconnect path handling rsi: chip reset for SDIO interface rsi: fix sdio card reset problem rsi: changes in eeprom read frame rsi: use BUILD_BUG_ON check for fsm_state ASoC: jack: fix snd_soc_codec_set_jack return error ASoC: Intel: Enabling 4 slot IV feedback for max98927 on Kabylake platform ASoC: Intel: Add Kabylake RT5663 machine driver entry ASoC: Intel: Add Kabylake machine driver for RT5663 ASoC: codecs: add wm8524 codec driver spi: pxa2xx: Don't touch CS pin until we have a transfer pending drm/i915: Remove unused i915_err_print_instdone ASoC: rsnd: merge snd_pcm_ops::open and snd_soc_dai_ops::startup spi: bcm-qspi: Remove hardcoded settings and spi-nor.h dependency drm/i915: Include mbox details for pcode read/write failures ASoC: samsung: Add proper error paths to s3c24xx I2S driver ASoC: samsung: Add missing prepare for iis clock of s3c24xx ASoC: samsung: Fix possible double iounmap on s3c24xx driver probe failure csrypto: ccp - Expand RSA support for a v5 ccp crypto: ccp - Add support for RSA on the CCP crypto: Add akcipher_set_reqsize() function crypto: ccp - Fix base RSA function for version 5 CCPs crypto: ccp - Update copyright dates for 2017. crypto: rng - ensure that the RNG is ready before using crypto: stm32 - Support for STM32 HASH module dt-bindings: Document STM32 HASH bindings crypto: stm32 - Rename module to use generic crypto crypto: stm32 - solve crc issue during unbind crypto: stm32 - CRC use relaxed function crypto: caam - free qman_fq after kill_fq crypto: algif_aead - overhaul memory management crypto: algif_skcipher - overhaul memory management ARM: dts: stm32: Add DMA support for STM32H743 SoC ARM: dts: stm32: Add DMA support for STM32F746 SoC objtool: Disable GCC '-Wpacked' warnings objtool: Fix '-mtune=atom' decoding support in objtool 2.0 objtool: Skip unreachable warnings for 'alt' instructions objtool: Assume unannotated UD2 instructions are dead ends ARM: dts: exynos: fix PCI bus dtc warnings staging: ccree: Fix unnecessary NULL check before kfree'ing it staging: ccree: remove func name from log messages staging: ccree: Fix alignment issues in ssi_request_mgr.c staging: ccree: Fix alignment issues in ssi_ivgen.c staging: ccree: Fix alignment issues in ssi_cipher.c staging: ccree: Fix alignment issues in ssi_buffer_mgr.c staging: ccree: Fix alignment issues in ssi_hash.c staging: ccree: Fix alignment issues in ssi_aead.c Staging: rtl8188eu: core: fix brace coding style issue in rtw_mlme_ext.c staging: rtl8192u: fix spelling mistake: "Senondary" -> "Secondary" staging: rtl8192u: fix incorrect mask and shift on u8 data staging: rtl8188eu: Move { after function to new line staging: greybus: Fix coding style issue for column width staging: greybus: Remove unnecessary platform_set_drvdata staging: greybus: fix parenthesis alignments staging: unisys: visorbus: Constify attribute_group structures. dt-bindings: arm: amlogic: Add SoC information bindings liquidio: cleanup: removed cryptic and misleading macro liquidio: standardization: use min_t instead of custom macro net: phy: Remove stale comments referencing timer nfp: only use direct firmware requests nfp: look for firmware image by device serial number and PCI name nfp: remove the probe deferral when FW not present ARM: edb93xx: Add ADC platform device ARM: ep93xx: Add ADC platform device support to core ARM: ep93xx: Add ADC clock srcu: Provide ordering for CPU not involved in grace period ovl: constant d_ino for non-merge dirs ovl: constant d_ino across copy up ovl: fix readdir error value ovl: check snprintf return spi: pxa2xx: Revert "Only claim CS GPIOs when the slave device is created" ARM: dts: iwg20m: Add MMCIF0 support ARM: dts: r8a7794: Use R-Car Gen 2 fallback binding for vin nodes ARM: dts: r8a7791: Use R-Car Gen 2 fallback binding for vin nodes ARM: dts: r8a7790: Use R-Car Gen 2 fallback binding for vin nodes ARM: shmobile: Remove ARCH_SHMOBILE_MULTI ARM: shmobile: rcar-gen2: Correct arch timer frequency on RZ/G1E arm64: dts: renesas: r8a7795: add hsusb ch3 device node arm64: dts: renesas: r8a7795: add usb-dmac ch2 and ch3 device nodes arm64: dts: renesas: r8a7795: add usb2.0 host ch3 device nodes arm64: dts: renesas: r8a7795: add usb2_phy ch3 device node arm64: dts: renesas: r8a7795: Add usb companion property in EHCI drm/amdgpu: fix header on gfx9 clear state arm64: dts: renesas: Add Renesas Draak board support arm64: dts: renesas: Add Renesas R8A77995 SoC support arm64: renesas: Add Renesas R8A77995 Kconfig support ARM: shmobile: Document Renesas Draak board DT bindings ARM: shmobile: Document R-Car D3 SoC DT bindings soc: renesas: rcar-rst: Add support for R-Car D3 soc: renesas: rcar-sysc: Add support for R-Car D3 power areas soc: renesas: Add r8a77995 SYSC PM Domain Binding Definitions soc: renesas: Identify R-Car D3 clk: sunxi-ng: Fix header guard of ccu-sun8i-r.h ARM: shmobile: rcar-gen2: Add support for CPG/MSSR bindings ARM: shmobile: rcar-gen2: Obtain jump stub region from DT ARM: debug-ll: Add support for r8a7743 ARM: dts: r8a7743: Add MMCIF0 support ARM: dts: r8a7794: Reserve SRAM for the SMP jump stub ARM: dts: r8a7793: Reserve SRAM for the SMP jump stub ARM: dts: r8a7792: Reserve SRAM for the SMP jump stub ARM: dts: r8a7791: Reserve SRAM for the SMP jump stub ARM: dts: r8a7790: Reserve SRAM for the SMP jump stub ARM: dts: r8a7745: Reserve SRAM for the SMP jump stub ARM: dts: r8a7743: Reserve SRAM for the SMP jump stub ARM: dts: r8a7794: Add Inter Connect RAM ARM: dts: r8a7793: Add Inter Connect RAM ARM: dts: r8a7792: Add Inter Connect RAM ARM: dts: r8a7791: Add Inter Connect RAM ARM: dts: r8a7790: Add Inter Connect RAM ARM: dts: r8a7745: Add Inter Connect RAM ARM: dts: r8a7743: Add Inter Connect RAM ARM: dts: iwg20d-q7: Add Ethernet AVB support ARM: dts: r8a7743: Add Ethernet AVB support ARM: dts: iwg20d-q7: Add pinctl support for scif0 ARM: dts: r8a7743: Add GPIO support ARM: dts: sk-rzg1m: add Ether pins ARM: dts: sk-rzg1m: add SCIF0 pins ARM: dts: r8a7743: add PFC support ARM: dts: koelsch: Add generic compatible string for I2C EEPROM ARM: dts: r7s72100: Add generic compatible string for I2C EEPROM dt-bindings: display: rcar-du: Add a VSP channel index to the vsps DT property dt-bindings: sram: Document renesas,smp-sram dt-bindings: display: renesas: Add R-Car M3-W HDMI TX DT bindings ARM: multi_v7_defconfig: Enable DMA for Renesas serial ports ARM: multi_v7_defconfig: Replace DRM_RCAR_HDMI by generic bridge options ARM: multi_v7_defconfig: Replace SND_SOC_RSRC_CARD by SND_SIMPLE_SCU_CARD ARM: shmobile: defconfig: Refresh ARM: shmobile: defconfig: Enable DMA for serial ports ARM: shmobile: defconfig: Replace DRM_RCAR_HDMI by generic bridge options ARM: shmobile: defconfig: Replace SND_SOC_RSRC_CARD by SND_SIMPLE_SCU_CARD ARM: shmobile: defconfig: Replace USB_XHCI_RCAR by USB_XHCI_PLATFORM ARM: shmobile: defconfig: Enable missing PCIE_RCAR dependency ARM: shmobile: defconfig: Enable Ethernet AVB arm64: dts: r8a7795: salvator-xs: Connect DU dot clocks 0 and 3 arm64: dts: salvator-xs: Add VC6 clock generator arm64: dts: r8a7796: Add missing second pair of DMA names to MSIOF nodes arm64: dts: r8a7795: Add all MSIOF nodes arm64: dts: r8a7795: Add support for the DU arm64: dts: ulcb: Enable HDMI output arm64: dts: ulcb: Add HDMI output connector arm64: dts: r8a7796: m3ulcb: Add DU external dot clocks arm64: dts: r8a7795: h3ulcb: Add DU external dot clocks arm64: dts: ulcb: Add DU external dot clock sources arm64: dts: r8a7796: salvator-x: Enable HDMI output arm64: dts: r8a7796: salvator-x: Add DU external dot clocks arm64: dts: r8a7796: Add HDMI encoder instance arm64: dts: r8a7796: Add DU device to DT arm64: dts: r8a7796: Add VSP instances arm64: dts: r8a7796: Add FCPF and FCPV instances arm64: dts: ulcb: Enable I2C4 arm64: dts: ulcb: Enable I2C for DVFS device arm64: dts: r8a7795: Add DRIF support arm64: dts: r8a7796: Add DRIF support arm64: dts: renesas: Move CPG_AUDIO_CLK_I from board to soc files arm64: dts: r8a7796: add IMR-LX4 support arm64: dts: r8a7795: add IMR-LX4 support arm64: defconfig: compile ak4613 and renesas sound as modules HID: wacom: Improve generic name generation HID: introduce hid_is_using_ll_driver printk/console: Enhance the check for consoles using init memory printk/console: Always disable boot consoles that use init memory before it is freed printk: Modify operators of printed_len and text_len RDMA/qedr: notify user application of supported WIDs RDMA/qedr: notify user application if DPM is supported iommu/rockchip: ignore isp mmu reset operation iommu/rockchip: add multi irqs support Docs: dt: rockchip: add rockchip,disable-mmu-reset property wl1251: add a missing spin_lock_init() bcma: gpio: Correct number of GPIOs for BCM53573 rtlwifi: kfree entry until after entry->bssid has been accessed mwifiex: correct channel stat buffer overflows x86/topology: Remove the unused parent_node() macro drm/i915/sdvo: Shut up state checker with hdmi cards on gen3 drm/i915: Rework sdvo proxy i2c locking drm/i915: Call the unlocked version of i915_gem_object_get_pages() drm/i915: Move i915_gem_object_phys_attach() drm/i915: Pin the pages before acquiring struct_mutex for display drm/i915: Make i915_gem_object_phys_attach() use obj->mm.lock more appropriately drm/i915: Trim struct_mutex usage for kms drm/i915: Handle msr read failure gracefully drm/i915: Force CPU synchronisation even if userspace requests ASYNC drm/i915: Only skip updating execobject.offset after error drm/i915: Only mark the execobject as pinned on success drm/i915: Remove assertion from raw __i915_vma_unpin() drm/i915/cnl: Fix loadgen select programming on ddi vswing sequence drm/i915/fbc: add comments to the FBC auxiliary structs drm/i915: cleanup the CHICKEN_MISC_2 (re)definitions drm/i915/selftests: Fix kbuild error drm/i915: Squelch reset messages during selftests drm/i915/selftest: Refactor reset locking drm/i915: Don't touch fence->error when resetting an innocent request drm/i915: Enforce that CS packets are qword aligned drm/i915/glk: set HDMI 2.0 identifier drm/i915: set colorspace for YCBCR420 outputs drm/i915: prepare csc unit for YCBCR420 output drm/i915: prepare pipe for YCBCR420 output drm/i915: prepare scaler for YCBCR420 modeset drm/i915: add config function for YCBCR420 outputs drm/i915: Gather all the power well->domain mappings to one place drm/i915: Move hsw_power_well_enable() next to the rest of HSW helpers drm/i915/gen9+: Unify the HSW/BDW and GEN9+ power well helpers drm/i915/hsw+: Add has_fuses power well attribute drm/i915/hsw, bdw: Wait for the power well disabled state drm/i915/hsw, bdw: Add irq_pipe_mask, has_vga power well attributes drm/i915/hsw+: Unify the hsw/bdw and gen9+ power well req/state macros drm/i915/hsw, bdw: Split power well set to enable/disable helpers drm/i915/hsw, bdw: Remove redundant state check during power well toggling drm/i915/gen9+: Remove redundant state check during power well toggling drm/i915/gen9+: Remove redundant power well state assert during enabling drm/i915/bxt, glk: Give a proper name to the power well struct phy field drm/i915: Check for duplicated power well IDs drm/i915/hsw, bdw: Add an ID for the global display power well drm/i915/gen2: Add an ID for the display pipes power well drm/i915: Assign everywhere the always-on power well ID drm/i915: Unify power well ID enums drm/i915/chv: Add unique power well ID for the pipe A power well drm/i915: Simplify scaler init during CRTC HW readout drm/i915: Fix scaler init during CRTC HW state readout drm/i915/selftests: Exercise independence of per-engine resets drm/i915: Disable per-engine reset for Broxton drm/i915: Emit a user level message when resetting the GPU (or engine) drm/i915: Make i915_gem_context_mark_guilty() safe for unlocked updates drm/i915: Clear engine irq posted following a reset drm/i915: Assert that machine is wedged for nop_submit_request drm/i915: Wake up waiters after setting the WEDGED bit drm/i915: Move idle checks before intel_engine_init_global_seqno() drm/i915: Clear execlist port[] before updating seqno on wedging drm/i915: Check the execlist queue for pending requests before declaring idle drm/i915: Check execlist/ring status during hangcheck drm/i915: Flush the execlist ports if idle drm/i915: Serialize per-engine resets against new requests drm/i915: Reset context image on engines after triggering the reset drm/i915: Report execlists irq bit in debugfs ARM: dts: stm32: enable ADC on stm32h743i-eval board ARM: dts: stm32: add ADC support on stm32h743 ARM: dts: stm32: Add DAC support on stm32h743 ARM: dts: stm32: Add DAC support on stm32f429 x86/ldt/64: Refresh DS and ES when modify_ldt changes an entry qed: enhanced per queue max coalesce value. qed: Read per queue coalesce from hardware qed: Add support for vf coalesce configuration. qede: Add ethtool support for Energy efficient ethernet. qed: Add support for Energy efficient ethernet. qed/qede: Add setter APIs support for RX flow classification qede: Add getter APIs support for RX flow classification f2fs: alloc new nids for xattr block in recovery f2fs: spread struct f2fs_dentry_ptr for inline path f2fs: remove unused input parameter ACPI: processor: use dev_dbg() instead of dev_warn() when CPPC probe failed drm: linux-next: build failure after merge of the drm-misc tree selftests: ftrace: Check given string is not zero-length selftests: ftrace: Output only to console with "--logdir -" selftests: ftrace: Add more verbosity for immediate log selftests: ftrace: Add --fail-unsupported option selftests: ftrace: Do not failure if there is unsupported tests percpu: update header to contain bitmap allocator explanation. percpu: update pcpu_find_block_fit to use an iterator percpu: use metadata blocks to update the chunk contig hint percpu: update free path to take advantage of contig hints percpu: update alloc path to only scan if contig hints are broken percpu: keep track of the best offset for contig hints percpu: skip chunks if the alloc does not fit in the contig hint percpu: add first_bit to keep track of the first free in the bitmap percpu: introduce bitmap metadata blocks percpu: replace area map allocator with bitmap lkdtm: Provide timing tests for atomic_t vs refcount_t lkdtm: Provide more complete coverage for REFCOUNT tests cpufreq: s5pv210: add missing of_node_put() cpufreq: schedutil: Use unsigned int for iowait boost cpufreq: schedutil: Make iowait boost more energy efficient bpf: install libbpf headers on 'make install' perf annotate stdio: Set enough columns for --show-total-period perf sort: Use default sort if evlist is empty perf annotate: Do not overwrite perf_sample->weight drm/bridge: Add a devm_ allocator for panel bridge. drm/vc4: add HDMI CEC support drm/vc4: prepare for CEC support cpufreq: intel_pstate: Drop ->update_util from pstate_funcs cpufreq: intel_pstate: Do not use PID-based P-state selection media: fix warning on v4l2_subdev_call() result interpreted as bool media: imx: csi: enable double write reduction media: coda: explicitly request exclusive reset control media: coda: disable BWB only while decoding on CODA 960 perf stat: Use group read for event groups perf evsel: Add read_counter() perf tools: Add perf_evsel__read_size function remoteproc: Merge __rproc_boot() with rproc_boot() rpmsg: virtio_rpmsg_bus: fix export of rpmsg_send_offchannel_raw() rpmsg: qcom_smd: add of_node node to edge device hamradio: dmascc: avoid -Wformat-overflow warning selftests: breakpoint_test: Add missing line breaks errseq: rename __errseq_set to errseq_set ARM: dts: stm32: enable CEC for stm32f769 discovery ARM: dts: stm32: add CEC for stm32f7 family ARM: dts: stm32: reorder stm32h743 nodes spi: core: Propagate error code of add_uevent_var() percpu: generalize bitmap (un)populated iterators percpu: increase minimum percpu allocation size and align first regions percpu: introduce nr_empty_pop_pages to help empty page accounting percpu: change the number of pages marked in the first_chunk pop bitmap percpu: combine percpu address checks percpu: modify base_addr to be region specific percpu: setup_first_chunk rename schunk/dchunk to chunk percpu: end chunk area maps page aligned for the populated bitmap percpu: unify allocation of schunk and dchunk percpu: setup_first_chunk remove dyn_size and consolidate logic percpu: remove has_reserved from pcpu_chunk percpu: introduce start_offset to pcpu_chunk percpu: setup_first_chunk enforce dynamic region must exist ARM: dts: stm32: Remove rdinit from bootargs on stm32f429-disco ARM: dts: stm32: Remove rdinit from bootargs on stm32f429i-eval ARM: dts: stm32: Remove rdinit from bootargs on stm32f469-disco drm/stm: dsi: Constify phy ops structure drm/stm: ltdc: Cleanup rename returned value drm/stm: ltdc: add devm_reset_control & platform_get_ressource drm/stm: ltdc: Constify funcs structures drm/stm: ltdc: Lindent and minor cleanups drm/stm: ltdc: Cleanup signal polarity defines drm/stm: drv: Rename platform driver name drm: stm: remove "default y" in Kconfig drm/stm: Add STM32 DSI controller driver dt-bindings: display: stm32: Add DSI controller dt-bindings: display: stm32: remove st-display-subsystem parent node requirement media: ov5640: Remove unneeded gpiod NULL check media: v4l: omap3isp: Get the parallel bus type from DT media: v4l2-flash: Flash ops aren't mandatory media: v4l2-flash: Use led_classdev instead of led_classdev_flash for indicator media: v4l2-fwnode: link_frequency is an optional property media: exynos4-is: fimc-is-i2c: constify dev_pm_ops structures media: s5k5baf: remove unnecessary static in s5k5baf_get_selection() media: s5p-jpeg: Add stream error handling for Exynos5420 media: s5p-jpeg: Add support for resolution change event media: s5p-jpeg: Decode 4:1:1 chroma subsampling format media: s5p-jpeg: Split s5p_jpeg_parse_hdr() media: s5p-jpeg: Don't use temporary structure in s5p_jpeg_buf_queue media: s5p-jpeg: Handle parsing error in s5p_jpeg_parse_hdr() media: s5p-jpeg: Correct WARN_ON statement for checking subsampling media: s5p-jpeg: Call jpeg_bound_align_image after qbuf spi: imx: add SPI_NO_CS support spi: loopback-test: implement testing with no CS ASoC: rt5670: merge ADC L/R Mux x86/kconfig: Consolidate unwinders into multiple choice selection spi: pic32: fix spelling mistakes on macro names ASoC: Intel: board: Fix missing sentinel for bxt_board_id ASoC: atmel: ac97c: Handle return value of clk_prepare_enable. ASoC: sun4i-spdif: Handle return value of clk_prepare_enable. ASoC: jz4740: Handle return value of clk_prepare_enable. ASoC: mxs-saif: Handle return value of clk_prepare_enable/clk_prepare. ASoC: samsung: spdif: Handle return value of clk_prepare_enable. ASoC: samsung: i2s: Handle return value of clk_prepare_enable. ASoC: samsung: pcm: Handle return value of clk_prepare_enable. ASoC: samsung: s3c24xx: Handle return value of clk_prepare_enable. ASoC: samsung: s3c2412: Handle return value of clk_prepare_enable. drm/hisilicon: fix build error without fbdev emulation drm/atomic: implement drm_atomic_helper_commit_tail for runtime_pm users drm: Improve kerneldoc for drm_modeset_lock drm/hisilicon: Remove custom FB helper deferred setup drm/exynos: Remove custom FB helper deferred setup drm/fb-helper: Support deferred setup dma-fence: Don't BUG_ON when not absolutely needed drm: Convert to using %pOF instead of full_name ASoC: remove cache_bypass from snd_soc_codec ASoC: rt5670: add symmetric_rates flag ASoC: rt5514: Use the IS_ENABLED to supports the module build spi: tools: add install section spi: tools: move to tools buildsystem drm/syncobj: Fix kerneldoc drm/atomic: Allow drm_atomic_helper_swap_state to fail drm/atomic: Add __must_check to drm_atomic_helper_swap_state. drm/vc4: Handle drm_atomic_helper_swap_state failure drm/tilcdc: Handle drm_atomic_helper_swap_state failure drm/tegra: Handle drm_atomic_helper_swap_state failure drm/msm: Handle drm_atomic_helper_swap_state failure drm/mediatek: Handle drm_atomic_helper_swap_state failure drm/i915: Handle drm_atomic_helper_swap_state failure drm/atmel-hlcdc: Handle drm_atomic_helper_swap_state failure drm/nouveau: Handle drm_atomic_helper_swap_state failure drm/atomic: Change drm_atomic_helper_swap_state to return an error. drm/nouveau: Fix error handling in nv50_disp_atomic_commit drm/<drivers>: Drop fbdev info flags drm/qxl: Drop fbdev hwaccel flags drm: Update docs around gem_free_object x86/kconfig: Make it easier to switch to the new ORC unwinder x86/unwind: Add the ORC unwinder kasan: Allow kasan_check_read/write() to accept pointers to volatiles iommu: Convert to using %pOF instead of full_name iommu/ipmmu-vmsa: Clean up device tracking iommu/ipmmu-vmsa: Replace local utlb code with fwspec ids iommu/ipmmu-vmsa: Use fwspec on both 32 and 64-bit ARM iommu/ipmmu-vmsa: Consistent ->of_xlate() handling iommu/ipmmu-vmsa: Use iommu_device_register()/unregister() i40e: handle setting administratively set MAC address back to zero i40evf: remove unnecessary __packed i40evf: Use le32_to_cpu before evaluating HW desc fields i40e: report BPF prog id during XDP_QUERY_PROG i40evf: add some missing includes i40e: display correct UDP tunnel type name i40e/i40evf: remove mismatched type warnings i40e/i40evf: make IPv6 ATR code clearer i40e: fix odd formatting and indent i40e: fix up 32 bit timespec references i40e: Handle admin Q timeout when releasing NVM i40e: remove WQ_UNBOUND and the task limit of our workqueue i40e: Fix for trace found with S4 state i40e: fix incorrect variable assignment iommu/exynos: Replace non-existing big-endian Kconfig option iommu: Correct iommu_map / iommu_unmap prototypes iommu/vt-d: Don't free parent pagetable of the PTE we're adding iommu/of: Handle PCI aliases properly ARM: dts: at91: sama5d2_xplained: add pin muxing and enable classd ARM: dts: at91: sama5d2: add classd nodes s390/spinlock: add niai spinlock hints s390/sclp_ocf: constify attribute_group structures. s390/tape: constify attribute_group structures. s390/raw3270: constify attribute_group structures. s390/qeth: constify attribute_group structures. s390/cio: constify attribute_group structures. s390/dasd: constify attribute_group structures. s390/zcrypt_card: constify attribute_group structures. s390/zcrypt_queue: constify attribute_group structures. s390: add support for IBM z14 machines s390/time: add support for the TOD clock epoch extension s390/sclp: single increment assignment control s390/mm,vmem: simplify region and segment table allocation code KVM: s390: use new mm defines instead of magic values s390/mm: use new mm defines instead of magic values s390/mm: introduce defines to reflect the hardware mmu s390/mm: get rid of __ASSEMBLY__ guards within pgtable.h s390/mm: remove and correct comments within pgtable.h virtio-net: mark PM functions as __maybe_unused ARM: dts: imx6qdl-nitrogen6x: fix USB PHY reset ARM: dts: imx6qdl-sabrelite: fix USB PHY reset perf tools: Add tools/include/uapi/asm-generic/fcntl.h to the MANIFEST perf annotate stdio: Fix column header when using --show-total-period perf jevents: Make build fail on JSON parse error perf report: Tag branch type/flag on "to" and tag cycles on "from" perf report: Make --branch-history work without callgraphs(-g) option in perf record perf script python: Generate hooks with additional argument perf script python: Add perf_sample dict to tracepoint handlers perf script python: Add sample_read to dict perf script python: Refactor creation of perf sample dict perf script python: Allocate memory only if handler exists perf script: Remove some bogus error handling perf top: Support lookup of symbols in other mount namespaces. ACPI: device property: Switch to use new generic UUID API device property: export irqchip_fwnode_ops ixgbe: Disable flow control for XFI ixgbe: Do not support flow control autonegotiation for X553 ixgbe: Update NW_MNG_IF_SEL support for X553 ixgbe: Enable LASI interrupts for X552 devices libnvdimm: Stop using HPAGE_SIZE ixgbe: Ensure MAC filter was added before setting MACVLAN cpufreq: Allow dynamic switching with CPUFREQ_ETERNAL latency cpufreq: Add CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING cpufreq driver flag cpufreq: schedutil: Set dynamic_switching to true cpufreq: Replace "max_transition_latency" with "dynamic_switching" cpufreq: arm_big_little: Make ->get_transition_latency() mandatory cpufreq: Don't set transition_latency for setpolicy drivers Input: mousedev - fix implicit conversion warning drm/amdgpu: reduce the time of reading VBIOS drm/amdgpu/virtual_dce: Remove the rmmod error message drm/amdgpu/gmc9: disable legacy vga features in gmc init drm/amdgpu/gmc8: disable legacy vga features in gmc init drm/amdgpu/gmc7: disable legacy vga features in gmc init ARM: pxa/raumfeld: mark rotary encoder properties as __initconst drm/amdgpu/gmc6: disable legacy vga features in gmc init (v2) drm/radeon: Set depth on low mem to 16 bpp instead of 8 bpp drm/amdgpu: fix the incorrect scratch reg number on gfx v6 drm/amdgpu: fix the incorrect scratch reg number on gfx v7 drm/amdgpu: fix the incorrect scratch reg number on gfx v8 drm/amdgpu: fix the incorrect scratch reg number on gfx v9 drm/amd/powerplay: add support for 3DP 4K@120Hz on vega10. drm/amdgpu: enable huge page handling in the VM v5 drm/amdgpu: increase fragmentation size for Vega10 v2 drm/amdgpu: ttm_bind only when user needs gpu_addr in bo pin drm/amdgpu: correct clock info for SRIOV drm/amdgpu/gmc8: SRIOV need to program fb location drm/amdgpu: disable firmware loading for psp v10 drm/amdgpu:fix gfx fence allocate size drm/amdgpu: Implement ttm_bo_driver.access_memory callback v2 drm/ttm: Implement vm_operations_struct.access v2 drm/amd/powerplay: fix AVFS voltage offset for Vega10 drm/amdgpu: read reg in each iterator of psp_wait_for loop drm/amdgpu/gfx9: simplify and fix GRBM index selection drm/amdgpu: add ring_destroy for psp v10 drm/amdgpu: add ring_create function for psp v10 drm/amdgpu: add init microcode function for psp v10 drm/amdgpu: remove unncessary code in psp v10 ring init func drm/amdgpu: Fix blocking in RCU critical section(v2) rcu: Move callback-list warning to irq-disable region rcu: Remove unused RCU list functions rcu: Localize rcu_state ->orphan_pend and ->orphan_done rcu: Advance callbacks after migration rcu: Eliminate rcu_state ->orphan_lock rcu: Advance outgoing CPU's callbacks before migrating them rcu: Make NOCB CPUs migrate CBs directly from outgoing CPU rcu: Check for NOCB CPUs and empty lists earlier in CB migration rcu: Remove orphan/adopt event-tracing fields torture: Fix typo suppressing CPU-hotplug statistics rcu: Make expedited GPs correctly handle hardware CPU insertion rcu: Migrate callbacks earlier in the CPU-offline timeline bnxt_en: fix switchdev port naming for external-port-rep and vf-reps bnxt_en: use SWITCHDEV_SET_OPS() for setting vf_rep_switchdev_ops bnxt_en: include bnxt_vfr.c code under CONFIG_BNXT_SRIOV switch arm64: dts: rockchip: enable sdmmc controller on rk3399-firefly arm64: dts: rockchip: Add rk3328 io-domain node 6lowpan: fix set not used warning socket: fix set not used warning netfilter: remove unused variable benet: fix set but not used warning bnxt: fix unused variable warnings bnxt: fix unsigned comparsion with 0 nfp: set config bit (ifup/ifdown) on netdev open/close drivers/net: Fix ptr_ret.cocci warnings. credits: update Paul Moore's info selinux: Assign proper class to PF_UNIX/SOCK_RAW sockets iio: humidity: hts221: move drdy enable logic in hts221_trig_set_state() dt-bindings: iio: humidity: hts221: support open drain mode iio: humidity: hts221: support open drain mode iio: adc: New driver for Cirrus Logic EP93xx ADC platform/x86: intel_telemetry: remove redundant macro definition platform/x86: intel_telemetry: Add GLK PSS Event Table platform/x86: alienware-wmi: fix format string overflow warning cgroup: add comment to cgroup_enable_threaded() cgroup: remove unnecessary empty check when enabling threaded mode task_work: Replace spin_unlock_wait() with lock/unlock pair net/netfilter/nf_conntrack_core: Fix net_conntrack_lock() atomics: Revert addition of comment header to spin_unlock_wait() platform/x86: ibm_rtl: remove unnecessary static in ibm_rtl_write() platform/x86: msi-wmi: remove unnecessary static in msi_wmi_notify() platform/x86: peaq-wmi: silence a static checker warning rcu: Use timer as backstop for NOCB deferred wakeups x86/asm: Make objtool unreachable macros independent from GCC version perf evsel: Add verbose output for sys_perf_event_open fallback perf jvmti: Fix linker error when libelf config is disabled perf annotate: Process tracing data in pipe mode perf tools: Add EXCLUDE_EXTLIBS and EXTRA_PERFLIBS to makefile perf cgroup: Fix refcount usage perf report: Fix kernel symbol adjustment for s390x perf annotate stdio: Fix --show-total-period x86/mce/AMD: Allow any CPU to initialize the smca_banks array power: supply: bq27xxx: move platform driver code into bq27xxx_battery_hdq.c power: supply: move HDQ interface for bq27xxx from w1 to power/supply module: fix ddebug_remove_module() modpost: abort if module name is too long powerpc/perf: Add thread IMC PMU support powerpc/perf: Add core IMC PMU support powerpc/perf: Add nest IMC PMU support powerpc/powernv: Detect and create IMC device pwm: vt8500: Undo preparation of a clock source. pwm: pca9685: clarify pca9685_set_sleep_mode() interface. pwm: Convert to using %pOF instead of full_name mrf24j40: Fix en error handling path in 'mrf24j40_probe()' power: supply: ltc2941-battery-gauge: Add LTC2944 support power: supply: ltc2941-battery-gauge: Add LTC2942 support power: supply: ltc2941-battery-gauge: Prepare for LTC2942 and LTC2944 power: supply: sbs-battery: Add delay when changing capacity mode bit x86/mm/pkeys: Fix typo in Documentation/x86/protection-keys.txt x86/microcode: Document the three loading methods x86/microcode/AMD: Free unneeded patch before exit from update_cache() power: supply: sbs-battery: sort includes power: supply: sbs-battery: Remove FSF mailing address from comments x86/mm/dump_pagetables: Speed up page tables dump for CONFIG_KASAN=y x86/platform/intel-mid: Make IRQ allocation a bit more flexible x86/platform/intel-mid: Group timers callbacks together x86/asm: Add ASM_UNREACHABLE x86/asm: Add suffix macro for GEN_*_RMWcc() x86/mm: Implement PCID based optimization: try to preserve old TLB entries using PCID objtool: Fix gcov check for older versions of GCC ARM: dts: imx6: RIoTboard provide gpio-line-names ARM: dts: imx6: RDU2: Add Micrel PHY interrupt ARM: dts: imx6: RDU2: Add Switch interrupts ARM: dts: imx6: RDU2: Add Switch EEPROM ARM: dts: imx6: RDU2: Add DSA support for the Marvell 88E6352 ARM: dts: imx6: RDU2: Add Micrel PHY to FEC ARM: dts: imx7d-sdb: Pass 'enable-gpios' and 'power-supply' properties ARM: dts: imx7d-sdb: Add DRM panel support ARM: imx_v6_v7_defconfig: Enable staging video4linux drivers ARM: dts: imx6qdl-gw5xxx: Remove the 'uart-has-rtscts' property arm64: dts: ls1012a: add USB host controller nodes usb: chipidea: core: do not register extcon notifier if extcon device is not existed s390/mm,kvm: use nodat PGSTE tag to optimize TLB flushing s390/mm: add guest ASCE TLB flush optimization s390/mm: add no-dat TLB flush optimization s390/mm: tag normal pages vs pages used in page tables bnxt_en: Use SWITCHDEV_SET_OPS(). tomoyo: Update URLs in Documentation/admin-guide/LSM/tomoyo.rst ibmvnic: Check for transport event on driver resume netvsc: remove no longer used max_num_rss queues netvsc: include rtnetlink.h netvsc: fix netvsc_set_channels netvsc: prefetch the first incoming ring element netvsc: Remove redundant use of ipv6_hdr() netvsc: remove bogus rtnl_unlock bnxt_en: add support for port_attr_get and and get_phys_port_name bnxt_en: add vf-rep RX/TX and netdev implementation bnxt_en: add support to enable VF-representors bnxt_en: Set ETS min_bw parameter for older firmware. bnxt_en: Report firmware DCBX agent. bnxt_en: Allow the user to set ethtool stats-block-usecs to 0. bnxt_en: Add bnxt_get_num_stats() to centrally get the number of ethtool stats. bnxt_en: Implement ndo_bridge_{get|set}link methods. bnxt_en: Retrieve the hardware bridge mode from the firmware. bnxt_en: Update firmware interface spec to 1.8.0. tcp: remove redundant argument from tcp_rcv_established() mlx4_en: remove unnecessary error check mlxsw: spectrum_router: Fix build when IPv6 isn't enabled mtd: mtdswap: remove unused variables 'dev' and 'gd' Input: add power key driver for Rockchip RK805 PMIC mlx4_en: remove unnecessary returned value of_mdio: kill useless variable in of_phy_register_fixed_link() skbuff: re-add check for NULL skb->head in kfree_skb path liquidio: fix implicit irq include causing build failures bpf: dev_map_alloc() shouldn't return NULL netvsc: fix ptr_ret.cocci warnings mlxsw: spectrum_router: Don't batch neighbour deletion rcutorture: Invoke call_rcu() from timer handler rcu: Add last-CPU to GP-kthread starvation messages rcutorture: Eliminate unused ts_rem local from rcu_trace_clock_local() rcutorture: Add task's CPU for rcutorture writer stalls rcutorture: Use nr_cpus rather than maxcpus to limit test size rcutorture: Place event-traced strings into trace buffer rcutorture: Enable SRCU readers from timer handler rcutorture: Don't wait for kernel when all builds fail torture: Add --kconfig argument to kvm.sh rcutorture: Select CONFIG_PROVE_LOCKING for Tiny SRCU scenario rcu: Remove CONFIG_TASKS_RCU ifdef from rcuperf.c rcutorture: Print SRCU lock/unlock totals rcutorture: Move SRCU status printing to SRCU implementations srcu: Make process_srcu() be static rcutorture: Remove obsolete SRCU-C.boot srcu: Move rcu_scheduler_starting() from Tiny RCU to Tiny SRCU init_task: Remove redundant INIT_TASK_RCU_TREE_PREEMPT() macro module: Fix pr_fmt() bug for header use of printk sctp: remove the typedef sctp_abort_chunk_t sctp: remove the typedef sctp_heartbeat_chunk_t sctp: remove the typedef sctp_heartbeathdr_t sctp: remove the typedef sctp_sack_chunk_t sctp: remove the typedef sctp_sackhdr_t sctp: remove the typedef sctp_sack_variable_t sctp: remove the typedef sctp_dup_tsn_t sctp: remove the typedef sctp_gap_ack_block_t sctp: remove the typedef sctp_unrecognized_param_t sctp: remove the typedef sctp_cookie_param_t sctp: remove the typedef sctp_initack_chunk_t documentation: Fix relation between nohz_full and rcu_nocbs PM / suspend: Define pr_fmt() in suspend.c PM / suspend: Use mem_sleep_labels[] strings in messages PM / sleep: Put pm_test under CONFIG_PM_SLEEP_DEBUG PM / sleep: Check pm_wakeup_pending() in __device_suspend_noirq() PM / core: Add error argument to dpm_show_time() PM / core: Split dpm_suspend_noirq() and dpm_resume_noirq() PM / s2idle: Rearrange the main suspend-to-idle loop PM / Domains: Extend generic power domain debugfs PM / Domains: Add time accounting to various genpd states geneve/vxlan: offload ports on register/unregister events geneve/vxlan: add support for NETDEV_UDP_TUNNEL_DROP_INFO net: call udp_tunnel_get_rx_info when NETIF_F_RX_UDP_TUNNEL_PORT is toggled net: add infrastructure to un-offload UDP tunnel port net: check UDP tunnel RX port offload feature before calling tunnel ndo ndo net: add new netdevice feature for offload of RX port for UDP tunnels ACPI / lpat: Fix typos in comments and kerneldoc style geneve: add rtnl changelink support MAINTAINERS: device property: ACPI: add fwnode.h ACPI / boot: Add number of legacy IRQs to debug output ACPI / boot: Correct address space of __acpi_map_table() ACPI / boot: Don't define unused variables ACPI / PMIC: xpower: Do pinswitch magic when reading GPADC net: Convert to using %pOF instead of full_name virtio-net: switch off offloads on demand if possible on XDP set virtio-net: do not reset during XDP set virtio-net: switch to use new ctx API for small buffer virtio-net: pack headroom into ctx for mergeable buffers virtio_ring: allow to store zero as the ctx signal: Remove kernel interal si_code magic fcntl: Don't use ambiguous SIG_POLL si_codes selftests: Fix installation for splice test Bluetooth: hci_nokia: select BT_BCM for btbcm_set_bdaddr() selftests: watchdog: get boot reason via WDIOC_GETBOOTSTATUS selftests: watchdog: avoid keepalive flood selftests: watchdog: point out ioctl() failures selftests: watchdog: prefer strtoul() over atoi() selftests: watchdog: use getopt_long() selftests: watchdog: fix mixed whitespace selftests/nsfs: create kconfig fragments dt-bindings: add compatible string of Allwinner H5 Mali-450 MP4 GPU dt-bindings: chosen: document kaslr-seed property Bluetooth: btusb: Fix memory leak in play_deferred ASoC: rt5665: constify acpi_device_id. ASoC: rt5659: constify acpi_device_id. ASoC: rt5663: constify acpi_device_id. ASoC: rt5514: constify acpi_device_id. ASoC: rt5514: Add the I2S ASRC support ASoC: rsnd: don't use private_value on rsnd_kctrl_new() regulator: pwm-regulator: Remove unneeded gpiod NULL check of_pci: use of_property_read_u32_array() of_pci: use of_property_read_u32() of: base: use of_property_read_string() of: base: use of_property_read_u32() net/mlx5: fix spelling mistake: "alloated" -> "allocated" IB/hfi1: Add receiving queue info to qp_stats IB/mlx4: Expose RSS capabilities IB/mlx4: Add support for RSS QP IB/mlx4: Add support for WQ indirection table related verbs IB/mlx4: Add support for WQ related verbs (IB, net)/mlx4: Add resource utilization support IB/mlx4: Add inline-receive support IB/mlx5: Expose extended error counters IB/mlx5: Fix existence check for extended address vector IB/mlx5: Fix cached MR allocation flow IB/mlx5: Report RX checksum capabilities for IPoIB net/mlx5: Report enhanced capabilities for IPoIB IB/mlx5: Add multicast flow steering support for underlay QP IB/mlx5: Add support for QP with a given source QPN IB/uverbs: Enable QP creation with a given source QP number IB/core: Enable QP creation with a given source QP number IB/core: Add support for RoCEv2 multicast IB/core: Set RoCEv2 MGID according to spec IB/core: Fix the validations of a multicast LID in attach or detach operations IB/mlx5: Add delay drop configuration and statistics IB/mlx5: Add support to dropless RQ net/mlx5: Introduce general notification event net/mlx5: Introduce set delay drop command IB/core: Introduce delay drop for a WQ IB/mlx5: Restore IB guid/policy for virtual functions IB/mlx5: Add debug control parameters for congestion control IB/mlx5: Change logic for dispatching IB events for port state net/mlx5e: Enable local loopback in loopback selftest IB/mlx5: Add raw ethernet local loopback support net/mlx5: Add raw ethernet local loopback firmware command powerpc/powernv: Add IMC OPAL APIs RDMA/bnxt_re: Allow posting when QPs are in error RDMA/bnxt_re: Add vlan tag for untagged RoCE traffic when PFC is configured RDMA: Remove useless MODULE_VERSION IB/core: Add generic function to extract IB speed from netdev IB/usnic: Implement get_netdev hook IB/qib: remove duplicate code RDMA/bnxt_re: Delete unsupported modify_port function IB/cma: Set default gid type to RoCEv2 IB/rxe: Constify static rxe_vm_ops IB/rxe: Use __func__ to print function's name IB/rxe: Use DEVICE_ATTR_RO macro to show parent field IB/rxe: Prefer 'unsigned int' to bare use of 'unsigned' IB/rxe: Use "foo *bar" instead of "foo * bar" powerpc/mm: Build fix for non SPARSEMEM_VMEMAP config power: supply: Add support for MAX1721x standalone fuel gauge power: supply: constify attribute_group structures. power: reset: Convert to using %pOF instead of full_name power: supply: act8945a_charger: fix of_irq_get() error check power: supply: cpcap-charger: add OMAP_USB2 dependency power: supply: sbs-battery: correct capacity mode selection bits ASoC: rt5665: add MONOVOL Playback Volume control powerpc/powernv: use memdup_user powerpc/pseries: Don't needlessly initialise rv to 0 netfilter: nf_tables: Attach process info to NFT_MSG_NEWGEN notifications netfilter: Remove duplicated rcu_read_lock. powerpc/pseries: use memdup_user_nul powerpc/ipic: Support edge on IRQ0 powerpc: allow compiling with GENERIC_MSI_IRQ_DOMAIN powerpc/powernv: Get cpu only after validity check netfilter: nf_tables: keep chain counters away from hot path netfilter: expect: add to hash table after expect init arm: sunxi: Add AXP20X_ADC x86/io: Make readq() / writeq() API consistent x86/io: Remove xlate_dev_kmem_ptr() duplication x86/io: Remove mem*io() duplications x86/io: Include asm-generic/io.h to architectural code x86/io: Define IO accessors by preprocessor arm: sunxi: Add additional power supplies arm: sunxi: refresh the defconfig arm64: allwinner: a64: add AXP803 PMIC support to SoPine and the baseboard arm64: allwinner: a64: enable AXP803 regulators for Pine64 pinctrl: samsung: Remove unneeded local variable initialization soc: samsung: Use kbasename instead of open coding docs: submitting-patches - change non-ascii character to ascii docs: Use :internal: for include/drm/drm_syncobj.h sphinx-pre-install: add support for Mageia sphinx.rst: document scripts/sphinx-pre-install script sphinx-pre-install: fix USE needs for GraphViz and ImageMagick sphinx-pre-install: add dependencies for ImageMagick to work with svg sphinx-pre-install: check for the need of graphviz-gd sphinx-pre-install: use a requirements file sphinx-pre-install: detect an existing virtualenv scripts/sphinx-pre-install: add a script to check Sphinx install docs: Makefile: remove no-ops targets PM / timekeeping: Print debug messages when requested arm64: dts: rockchip: kill pcie_clkreqn and pcie_clkreqnb for rk3399 arm64: dts: rockchip: change clkreq mode for rk3399-firefly arm64: dts: rockchip: enable the GPU for RK3399-GRU arm64: dts: rockchip: add ARM Mali GPU node for RK3399 SoCs iio: Convert to using %pOF instead of full_name dt-bindings: gpu: add the RK3399 mali for rockchip specifics arm64: dts: rockchip: remove abused keep-power-in-suspend ARM: dts: rockchip: fix property-ordering in rv1108 mmc nodes ARM: dts: rockchip: enable sdmmc for rv1108 evb Staging: iio: adc: ad7280a.c: Fixed Macro argument reuse dt-bindings: iio: humidity: hts221: support active-low interrupts iio: humidity: hts221: support active-low interrupts iio: humidity: hts221: squash hts221_power_on/off in hts221_set_enable iio: humidity: hts221: avoid useless ODR reconfiguration iio: humidity: hts221: do not overwrite reserved data during power-down iio: humidity: hts221: move BDU configuration in probe routine iio: humidity: hts221: refactor write_with_mask code iio: chemical: ccs811: Add support for AMS CCS811 VOC sensor ARM64: dts: meson-gx: consistently use the GIC_SPI and IRQ type macros usb: core: hub: controller driver name may be NULL usb: Convert to using %pOF instead of full_name USB: atm: remove unneeded MODULE_VERSION() usage USB: chipidea: remove unneeded MODULE_VERSION() usage USB: cdc-wdm: remove unneeded DRIVER_VERSION define USB: gadget: remove unneeded MODULE_VERSION() usage USB: microtek: remove unneeded DRIVER_VERSION macro USB: phy: remove unneeded MODULE_VERSION() usage USB: realtek_cr: remove unneeded MODULE_VERSION() usage USB: usbip: remove unneeded MODULE_VERSION() usage USB: misc: remove unneeded MODULE_VERSION() usage Input: axp20x-pek - switch to using devm_device_add_group() Input: synaptics_rmi4 - use devm_device_add_group() for attributes in F01 Input: gpio_keys - use devm_device_add_group() for attributes driver core: add devm_device_add_group() and friends driver core: add device_{add|remove}_group() helpers driver core: make device_{add|remove}_groups() public driver core: emit uevents when device is bound to a driver Bluetooth: Style fix - align block comments PM / sleep: Mark suspend/hibernation start and finish PM / sleep: Do not print debug messages by default PM / suspend: Export pm_suspend_target_state cpufreq: Use transition_delay_us for legacy governors as well cpufreq: governor: Drop min_sampling_rate cpufreq: dt: Don't use generic platdev driver for tango dt-bindings: cpufreq: enhance MediaTek cpufreq dt-binding document dt-bindings: cpufreq: move MediaTek cpufreq dt-bindings document to proper place cpufreq: mediatek: Add support of cpufreq to MT2701/MT7623 SoC pm-graph: package makefile and man pages pm-graph: AnalyzeBoot v2.1 pm-graph: AnalyzeSuspend v4.7 clk: Convert to using %pOF instead of full_name device property: Introduce fwnode_property_get_reference_args device property: Constify fwnode property API device property: Constify argument to pset fwnode backend ACPI: Constify internal fwnode arguments ACPI: Constify acpi_bus helper functions, switch to macros ACPI: Prepare for constifying acpi_get_next_subnode() fwnode argument device property: Get rid of struct fwnode_handle type field ACPI: Use IS_ERR_OR_NULL() instead of non-NULL check in is_acpi_data_node() clk: qoriq: add pll clock to clock lookup table clk: qoriq: add clock configuration for ls1088a soc mtd: create per-device and module-scope debugfs entries locks: restore a warn for leaked locks on close ARM: configs: keystone: Enable reset drivers ARM: configs: keystone: Enable TI-SCI protocol and genpd driver ARM: configs: keystone: Enable Message Manager ARM: dts: keystone-k2g: Add TI SCI reset-controller node ARM: dts: keystone-k2g: Add ti-sci clock provider node ARM: dts: keystone-k2g: Add ti-sci power domain node ARM: dts: keystone-k2g: Add PMMC node to support TI-SCI protocol dt-bindings: Drop k2g genpd device ID macros of: remove unused pci_space variable from address.c cgroup: update debug controller to print out thread mode information cgroup: implement cgroup v2 thread support cgroup: implement CSS_TASK_ITER_THREADED cgroup: introduce cgroup->dom_cgrp and threaded css_set handling cgroup: add @flags to css_task_iter_start() and implement CSS_TASK_ITER_PROCS cgroup: reorganize cgroup.procs / task write path perf annotate: Do not overwrite sample->period perf annotate: Store the sample period in each histogram bucket of: irq: use of_property_read_u32() of: irq: use of_property_read_bool() for "interrupt-controller" prop GFS2: Set gl_object in inode lookup only after block type check GFS2: Introduce helper for clearing gl_object gfs2: add flag REQ_PRIO for metadata I/O GFS2: fix code parameter error in inode_go_lock media: get rid of a new bogus Sphinx 1.5 warning media: v4l2-fwnode: fix a Sphinx warning media: dvb-core/demux.h: fix kernel-doc warning perf hists: Pass perf_sample to __symbol__inc_addr_samples() perf annotate: Rename 'sum' to 'nr_samples' in struct sym_hist perf annotate: Introduce struct sym_hist_entry rxrpc: Move the packet.h include file into net/rxrpc/ rxrpc: Expose UAPI definitions to userspace x86: Enable 5-level paging support via CONFIG_X86_5LEVEL=y x86/mm: Allow userspace have mappings above 47-bit x86/mm: Prepare to expose larger address space to userspace x86/mpx: Do not allow MPX if we have mappings above 47-bit x86/mm: Rename tasksize_32bit/64bit to task_size_32bit/64bit() x86/xen: Redefine XEN_ELFNOTE_INIT_P2M using PUD_SIZE * PTRS_PER_PUD x86/mm/dump_pagetables: Fix printout of p4d level x86/mm/dump_pagetables: Generalize address normalization phy: allwinner: phy-sun4i-usb: Add log when probing dmaengine: ppc4xx: remove DRIVER_ATTR() usage Revert "drm/i915: Add heuristic to determine better way to adjust brightness" Revert "drm/i915: Add option to support dynamic backlight via DPCD" cxgb4: display serial config and vpd versions media: Make parameter of media_entity_remote_pad() const media: Added support for the TerraTec T1 DVB-T USB tuner [IT9135 chipset] drm/i915: Drop unpin stall in atomic_prepare_commit drm/i915: Remove intel_flip_work infrastructure drm/i915: adjust has_pending_fb_unpin to atomic media: : usb: add const to v4l2_file_operations structures drm/i915: Rip out legacy page_flip completion/irq handling soc: rockchip: power-domain: add power domain support for rk3366 dt-bindings: add binding for rk3366 power domains dt-bindings: power: add RK3366 SoCs header for power-domain media: dvb-frontends: mb86a16: remove useless variables in signal_det() media: v4l2-fwnode: make v4l2_fwnode_endpoint_parse_csi1_bus static ARM: rockchip: explicitly request exclusive reset control in smp code media: v4l2-fwnode: suppress a warning at OF parsing logic media: pvrusb2: fix the retry logic media: atomisp: use LINUX_VERSION_CODE for driver version media: cx25821: get rid of CX25821_VERSION_CODE media: radio-bcm2048: get rid of BCM2048_DRIVER_VERSION media: s3c-camif: use LINUX_VERSION_CODE for driver's version media: platform: davinci: drop VPFE_CMD_S_CCDC_RAW_PARAMS media: platform: davinci: return -EINVAL for VPFE_CMD_S_CCDC_RAW_PARAMS ioctl media: venus: don't abuse dma_alloc for non-DMA allocations media: venus: hfi: fix error handling in hfi_sys_init_done() media: venus: fix compile-test build on non-qcom ARM platform media: venus: mark PM functions as __maybe_unused media: dvb_ca_en50221.h: fix checkpatch strict warnings media: dvb_ca_en50221: Fixed multiple blank lines media: dvb_ca_en50221: Fixed style issues on the whole file media: dvb_ca_en50221: Fixed remaining block comments media: dvb_ca_en50221: Fix again wrong EXPORT_SYMBOL order media: dvb_ca_en50221: Fixed typo media: dvb_ca_en50221: Fixed 80 char limit media: dvb_ca_en50221: Fixed C++ comments media: dvb_ca_en50221: Removed unused symbol media: dvb_ca_en50221: Removed useless braces media: dvb_ca_en50221: Added line breaks media: dvb_ca_en50221: Used a helper variable media: dvb_ca_en50221: Avoid assignments in ifs media: dvb_ca_en50221: Fixed block comments media: dvb_ca_en50221: use usleep_range media: dvb_ca_en50221: New function dvb_ca_en50221_poll_cam_gone media: dvb_ca_en50221: Refactored dvb_ca_en50221_thread media: dvb-frontends/stv0367: improve QAM fe_status media: devnode: Rename mdev argument as devnode media: Remove useless curly braces and parentheses media: dib0090: make const array dib0090_tuning_table_cband_7090e_aci static media: drxj: make several const arrays static media: drxd: make const arrays slowIncrDecLUT and fastIncrDecLUT static media: dvb-frontends/cxd2841er: do sleep on delivery system change media: staging: fbtft: make const array gamma_par_mask static media: dvb-frontends/cxd2841er: make several arrays static media: media/dvb: earth-pt3: fix hang-up in a rare case media: ngene: constify i2c_algorithm structure media: mantis: constify i2c_algorithm structure media: dm1105: constify i2c_algorithm structure media: ddbridge: constify i2c_algorithm structure media: cx24123: constify i2c_algorithm structure media: zd1301_demod: constify i2c_algorithm structure media: dib8000: constify i2c_algorithm structure media: s5h1420: constify i2c_algorithm structure media: dib7000p: constify i2c_algorithm structure media: marvell-ccic: constify i2c_algorithm structure media: saa7146: constify i2c_algorithm structure media: dib9000: constify i2c_algorithm structure media: usbvision: constify i2c_algorithm structure media: dvb-ttusb-budget: constify i2c_algorithm structure tools lib: Update copy of strtobool from the kernel sources tools include: Adopt strstarts() from the kernel ARM: s3c24xx: make H1940BT depend on RFKILL perf trace: Filter out 'sshd' in the tracer ancestry in syswide tracing media: dvb-frontends/stv0367: DDB frontend status inquiry fixup media: MAINTAINERS: add entries for stv0910 and stv6111 media: ddbridge: stv0910 single demod mode module option media: ddbridge: support for CineS2 V7(A) and DuoFlex S2 V4 hardware media: ddbridge: return stv09xx id in port_has_stv0900_aa() media: dvb-frontends: add ST STV6111 DVB-S/S2 tuner frontend driver media: dvb-frontends/stv0910: Add missing set_frontend fe-op media: dvb-frontends/stv0910: Add demod-only signal strength reporting media: dvb-frontends/stv0910: add multistream (ISI) and PLS capabilities media: dvb-frontends/stv0910: Fix possible buffer overflow media: dvb-frontends: add ST STV0910 DVB-S/S2 demodulator frontend driver smp/hotplug: Handle removal correctly in cpuhp_store_callbacks() of: overlay: add overlay symbols to live device tree ACPICA: Update version to 20170629 ACPICA: Update resource descriptor handling ACPICA: iasl: Update to IORT SMMUv3 disassembling ACPICA: Disassembler: skip parsing of incorrect external declarations ACPICA: iASL: Ensure that the target node is valid in acpi_ex_create_alias ACPICA: Tables: Add deferred table verification support ACPICA: Tables: Combine checksum/duplication verification together ACPICA: Tables: Change table duplication check to be related to acpi_gbl_verify_table_checksum ACPICA: Tables: Do not validate signature for dynamic table load ACPICA: Tables: Cleanup table handler invokers ACPICA: Tables: Add sanity check in acpi_put_table() ACPICA: linuxize: cleanup typedef definitions Back port of "ACPICA: Use designated initializers" ACPICA: iASL compiler: allow compilation of externals with paths that refer to existing names ACPICA: Tools: Deallocate memory allocated by ac_get_all_tables_from_file via ac_delete_table_list ACPICA: IORT: Update SMMU models for revision C ACPICA: Small indentation changes, no functional change of: overlay: correctly apply overlay node with unit-address of: overlay: add overlay unittest data for node names and symbols perf trace: Introduce filter_loop_pids() perf trace beauty clone: Suppress unused args according to 'flags' arg perf trace beauty clone: Beautify syscall arguments tools include uapi: Grab a copy of linux/sched.h HID: asus: Add T100CHI bluetooth keyboard dock special keys mapping HID: asus: Add T100TA touchpad resolution info HID: asus: Fix T100TA touchpad y dimensions HID: asus: Parameterize the touchpad code HID: asus: Add support for T100 touchpad HID: wacom: Remove comparison of u8 mode with zero and simplify. perf trace: Allow specifying names to syscall arguments formatters perf trace: Allow specifying number of syscall args for tracepointless syscalls perf trace: Ditch __syscall__arg_val() variant, not needed anymore perf trace: Use the syscall_fmt formatters without a tracepoint perf trace: Allow allocating sc->arg_fmt even without the syscall tracepoint perf trace beauty mmap: Ignore 'fd' and 'offset' args for MAP_ANONYMOUS perf trace: Add missing ' = ' in the default formatting of syscall returns perf intel-pt: Always set no branch for dummy event perf intel-pt: Set no_aux_samples for the tracking event prctl: Allow local CAP_SYS_ADMIN changing exe_file security: Use user_namespace::level to avoid redundant iterations in cap_capable() userns,pidns: Verify the userns for new pid namespaces regulator: core: fix a possible race in disable_work handling ASoC: rt5665: add clock sync control for master mode ASoC: rt5665: add clcok control for master mode ASoC: rt5514: Support the TDM docking mode arm64: zynqmp: Remove leading 0s from mtd table for spi flashes arm64: dts: xilinx: fix PCI bus dtc warnings ASoC: rt5677: Remove never used variables ASoC: Intel: board: Add Geminilake platform support ASoC: hdac_hdmi: Add the vendor nid for Geminilake HDMI ASoC: Intel: board: Remove .owner initialization in bxt_rt298 driver regulator: fan53555: Use of_device_get_match_data() to simplify probe media: platform: video-mux: convert to multiplexer framework arm: dts: mt7623: fixup binding violation missing reset in ethernet node dt-bindings: net: mediatek: update documentation for reset signals media: usbvision-i2c: fix format overflow warning media: v4l2-mediabus: Add helper functions media: adv7180: add missing adv7180cp, adv7180st i2c device IDs media: solo6x10: fix detection of TW2864B chips media: dt-bindings: media: Add r8a7796 DRIF bindings arm64: dts: mt7622: add dts file for MT7622 reference board variant 1 arm64: dts: mt7622: add basic nodes to the mt7622.dtsi file drm/i915/selftests: Fix an error handling path in 'mock_gem_device()' drm/i915: s/INTEL_INFO(dev_priv)->gen/INTEL_GEN(dev_priv) in i915_irq ARC: reset: introduce HSDKv1 reset driver x86/boot: Fix memremap() related build failure Bluetooth: btwilink: remove unnecessary static in bt_ti_probe() Bluetooth: hci_ll: Use new hci_uart_unregister_device() function Bluetooth: hci_nokia: Use new hci_uart_unregister_device() function Bluetooth: hci_serdev: Introduce hci_uart_unregister_device() Bluetooth: btusb: fix QCA Rome suspend/resume Bluetooth: hci_nokia: remove duplicate call to pm_runtime_disable() Bluetooth: hci_nokia: prevent crash on module removal Bluetooth: btqca: Fixed a coding style error Bluetooth: btusb: Add support of all Foxconn (105b) Broadcom devices Bluetooth: hci_bcm: Make bcm_request_irq fail if no IRQ resource Revert "x86/hyper-v: include hyperv/ only when CONFIG_HYPERV is set" drm/i915: Unbreak gpu reset vs. modeset locking drm/i915: Nuke legacy flip queueing code drm/i915: Pass enum pipe to intel_set_pch_fifo_underrun_reporting() cxgb4: Update register ranges of T4/T5/T6 adapters netvsc: add rtnl annotations in rndis netvsc: save pointer to parent netvsc_device in channel table netvsc: need rcu_derefence when accessing internal device info netvsc: use ERR_PTR to avoid dereference issues netvsc: change logic for change mtu and set_queues netvsc: change order of steps in setting queues netvsc: add some rtnl_dereference annotations netvsc: force link update after MTU change ARM: s3c24xx: Do not confuse local define with Kconfig ARM: s3c24xx: Remove non-existing SND_SOC_SMDK2443_WM9710 ARM: s3c24xx: Remove non-existing CONFIG_CPU_S3C2413 signal/testing: Don't look for __SI_FAULT in userspace signal/mips: Document a conflict with SI_USER with SIGFPE signal/sparc: Document a conflict with SI_USER with SIGFPE signal/ia64: Document a conflict with SI_USER with SIGFPE signal/alpha: Document a conflict with SI_USER for SIGTRAP net: make dev_close and related functions void hns: remove useless void cast bluetooth: 6lowpan dev_close never returns error liquidio: lio_main: remove unnecessary static in setup_io_queues() liquidio: lio_vf_main: remove unnecessary static in setup_io_queues() net: ethernet: mediatek: remove useless code in mtk_poll_tx() qlcnic: remove unnecessary static in qlcnic_dump_fw() net: tulip: remove useless code in tulip_init_one() rtlwifi: remove useless code wireless: airo: remove unnecessary static in writerids() net: dsa: unexport dsa_is_port_initialized net/packet: remove unused PGV_FROM_VMALLOC definition. ISDN: eicon: switch to use native bitmaps sfc: Add ethtool -m support for QSFP modules tcp: adjust tail loss probe timeout media: adv748x: get rid of unused var openvswitch: Optimize operations for OvS flow_stats. openvswitch: Optimize updating for OvS flow_stats. ARM: bcm2835_defconfig: Enable wifi driver for RPi Zero W ARM: bcm2835_defconfig: Increase CMA for VC4 ARM: bcm2835_defconfig: Enable Mini UART console support media: MAINTAINERS: Add ADV748x driver media: i2c: adv748x: add adv748x driver media: adv748x: Add adv7481, adv7482 bindings media: staging: atomisp: fixed trivial coding style issue media: staging: atomisp: fixed trivial coding style warning media: staging: atomisp: hmm: Alignment code (rebased) media: staging: atomisp: hmm: Fixed comment style media: staging: atomisp: Use kvfree() instead of kfree()/vfree() media: staging: atomisp: use kstrdup to replace kmalloc and memcpy media: staging: atomisp: gc2235: constify acpi_device_id liquidio: lowmem: init allocated memory to 0 liquidio: lowmem: do not dereference null ptr liquidio: lowmem: init allocated memory to 0 media: staging: atomisp: mt9m114: constify acpi_device_id media: staging: atomisp: ov5693: constify acpi_device_id media: staging: atomisp: ov2722: constify acpi_device_id media: staging: atomisp: gc0310: constify acpi_device_id media: staging: atomisp: ov8858: constify acpi_device_id media: staging: atomisp: ov2680: constify acpi_device_id media: staging: atomisp: lm3554: constify acpi_device_id liquidio: support new firmware statistic fw_err_pki media: staging: atomisp: i2c: ov5693: Fix style a coding style issue media: staging: atomisp: gc2235: fix sparse warning: missing static media: staging: atomisp: Remove unnecessary return statement in void function media: i2c: Add Omnivision OV5670 5M sensor support media: MAINTAINERS: Change OV5647 Maintainer media: smiapp: make various const arrays static media: docs-rst: v4l: Fix sink compose selection target documentation media: ov5645: Add control to export CSI2 link frequency media: ov5645: Add control to export pixel clock frequency media: ov5645: Set media entity function media: omap3isp: Ignore endpoints with invalid configuration media: omap3isp: Return -EPROBE_DEFER if the required regulators can't be obtained media: omap3isp: add CSI1 support media: omap3isp: Explicitly set the number of CSI-2 lanes used in lane cfg media: omap3isp: Destroy CSI-2 phy mutexes in error and module removal media: omap3isp: Check for valid port in endpoints media: smiapp: add CCP2 support media: v4l: Add support for CSI-1 and CCP2 busses media: v4l: fwnode: Obtain data bus type from FW media: v4l: fwnode: Call CSI2 bus csi2, not csi media: dt: bindings: Add strobe property for CCP2 media: dt: bindings: Explicitly specify bus type media: coda: wake up capture queue on encoder stop after output streamoff media: coda: mark CODA960 firmware versions 2.3.10 and 3.1.1 as supported media: coda: set MPEG-4 encoder class register media: coda: align internal mpeg4 framebuffers to 16x16 macroblocks media: coda: set field of destination buffers media: coda: extend GOP size range media: coda: do not reassign ctx->tiled_map_type in coda_s_fmt media: coda: add h264 and mpeg4 profile and level controls media: davinci: vpif_capture: fix potential NULL deref media: fc001[23]: make const gain table arrays static media: solo6x10: make const array saa7128_regs_ntsc static media: platform: video-mux: fix Kconfig dependency media: mediatek: constify vb2_ops structure media: mtk-mdp: constify vb2_ops structure media: davinci: vpif_capture: constify vb2_ops structure media: davinci: vpif_display: constify vb2_ops structure media: atmel-isc: constify vb2_ops structure media: rcar_fdp1: constify vb2_ops structure media: pxa_camera: constify vb2_ops structure media: st-delta: constify vb2_ops structures media: stm32-dcmi: constify vb2_ops structure media: tuners: remove unnecessary static in simple_dvb_configure() media: media/i2c/saa717x: fix spelling mistake: "implementd" -> "implemented" media: i2c: m5mols: fix spelling mistake: "Machanics" -> "Mechanics" media: vb2 dma-sg: Constify dma_buf_ops structures media: vb2 vmalloc: Constify dma_buf_ops structures media: vb2 dma-contig: Constify dma_buf_ops structures media: cx23885: add const to v4l2_file_operations structure media: media/platform: add const to v4l2_file_operations structures media: cec-core: fix a Sphinx warning drm/i915/selftests: Mark contexts as lost during freeing of mock device gfs2: Fixup to "Get rid of flush_delayed_work in gfs2_evict_inode" ASoC: tegra: explicitly request exclusive reset control ASoC: sun4i: explicitly request exclusive reset control ASoC: stm32: explicitly request exclusive reset control ASoC: img: explicitly request exclusive reset control spi: tegra20-sflash: explicitly request exclusive reset control spi: tegra114: explicitly request exclusive reset control spi: tegra20-slink: explicitly request exclusive reset control clk: renesas: rcar-gen3-cpg: Refactor checks for accessing the div table spi: sun6i: explicitly request exclusive reset control spi: stm32: explicitly request exclusive reset control clk: renesas: rcar-gen3-cpg: Drop superfluous variable gfs2: Don't clear SGID when inheriting ACLs drm/i915: unregister interfaces first in unload drm/i915: Fix fbdev unload sequence drm/atomic-helper: Fix leak in disable_all drm/i915/selftests: Attach a stub pm_domain drm/i915: Drain the device workqueue on unload drm/i915: More stolen quirking drm/i915: Fix bad comparison in skl_compute_plane_wm, v2. regulator: of: regulator_of_get_init_data() missing of_node_get() ASoC: rt5677: Refactor code to avoid comparison unsigned >= 0 ASoC: rt5677: Hide platform data in the module sources regulator: pwm-regulator: fix example syntax spi: Convert to using %pOF instead of full_name regulator: Convert to using %pOF instead of full_name ASoC: rt5663: Correct the mixer switch setting and remove redundant routing path ASoC: rt274: correct comment style reset: make (de)assert report success for self-deasserting reset drivers reset: Add APIs to manage array of resets reset: zx2967: constify zx2967_reset_ops. drm/i915: Explicit the connector name for DP link training result EDAC, cpc925, ppc4xx: Convert to using %pOF instead of full_name pinctrl: samsung: Consistently use unsigned instead of u32 for nr_banks pinctrl: samsung: Use unsigned int for number of controller IO mem resources dmaengine: bcm-scm-raid: statify functions dmaengine: qcom_hidma: correct channel QOS register offset dmaengine: qcom_hidma: correct overriding message dmaengine: qcom_hidma: introduce memset support dmaengine: Convert to using %pOF instead of full_name perf report: Show branch type in callchain entry perf report: Show branch type statistics for stdio mode perf util: Create branch.c/.h for common branch functions perf report: Refactor the branch info printing code perf record: Create a new option save_type in --branch-filter perf/x86/intel: Record branch type perf/core: Define the common branch type classification perf header: Add event desc to pipe-mode header perf tools: Add feature header record to pipe-mode perf tool: Add show_feature_header to perf_tool perf header: Change FEAT_OP* macros perf header: Add a buffer to struct feat_fd perf header: Make write_pmu_mappings pipe-mode friendly perf header: Use struct feat_fd in read header records perf header: Don't pass struct perf_file_section to process_##_feat perf header: Use struct feat_fd to process header records perf header: Use struct feat_fd for print perf header: Add struct feat_fd for write perf header: Revamp do_write() perf util: Add const modifier to buf in "writen" function perf header: Fail on write_padded error perf header: Add PROCESS_STR_FUN macro perf header: Encapsulate read and swap perf report: Enable finding kernel inline functions perf trace beauty: Simplify syscall return formatting perf trace beauty fcntl: Beautify the 'arg' for DUPFD perf trace beauty fcntl: Do not suppress 'cmd' when zero, should be DUPFD perf trace: Allow syscall arg formatters to request non suppression of zeros perf trace: Group per syscall arg formatter info into one struct perf trace beauty fcntl: Beautify F_GETLEASE and F_SETLEASE arg/return perf trace beauty: Export strarray for use in per-object beautifiers perf tests attr: Add optional term perf tests attr: Fix stat sample_type setup perf tests attr: Fix precise_ip setup perf tests attr: Fix sample_period setup perf tests attr: Fix cpu test disabled term setup perf tests attr: Add proper return values perf tests attr: Fix no-delay test perf tests attr: Fix record dwarf test perf tests attr: Add 1s for exclude_kernel and task base bits perf tests attr: Rename compare_data to data_equal perf tests attr: Make compare_data global perf tests attr: Add test_attr__ready function perf tests attr: Do not store failed events perf test sdt: Handle realpath() failure perf record: Do not ask for precise_ip with --no-samples perf evlist: Allow asking for max precise_ip in add_default() perf evsel: Allow asking for max precise_ip in new_cycles() perf buildid-cache: Cache debuginfo perf buildid-cache: Support binary objects from other namespaces perf probe: Allow placing uprobes in alternate namespaces. perf maps: Lookup maps in both intitial mountns and inner mountns. perf symbols: Find symbols in different mount namespace tools build: Add test for setns() tools include uapi x86: Add __NR_setns, if missing tools include uapi x86: Grab a copy of unistd.h perf vendor events: Add POWER9 PVRs to mapfile perf vendor events: Add POWER9 PMU events perf pmu-events: Support additional POWER8+ PVR in mapfile perf trace beauty fcntl: Beautify F_GETOWN and F_SETOWN perf trace beauty: Export the pid beautifier for use in more places perf trace beauty fcntl: Augment the return of F_DUPFD(_CLOEXEC) perf trace beauty: Export the fd beautifier for use in more places perf trace beauty: Give syscall return beautifier more context perf trace beauty fcntl: Beautify F_[GS]ETFD arg/return value perf trace beauty fcntl flags: Beautify F_SETFL arg perf trace beauty open flags: Move RDRW to the start of the output perf trace beauty fcntl: Beautify F_GETFL return value perf trace beauty open flags: Do not depend on the system's O_LARGEFILE define perf trace beauty open flags: Support O_TMPFILE and O_NOFOLLOW perf trace: Allow syscall_arg beautifiers to set a different return formatter perf beauty open: Detach the syscall_arg agnostic bits from the flags formatter perf trace: Beautify new write hint fcntl commands perf trace beauty fcntl: Basic 'arg' beautifier tools include uapi asm-generic: Grab a copy of fcntl.h perf trace beauty: Introduce syscall arg beautifier for long integers perf trace beauty: Export the "int" and "hex" syscall arg formatters perf trace beauty: Allow accessing syscall args values in a syscall arg formatter perf trace beauty: Mask ignored fcntl 'arg' parameter perf trace: Only build tools/perf/trace/beauty/ when building 'perf trace' perf trace beauty: Export the strarrays scnprintf method tools: Update include/uapi/linux/fcntl.h copy from the kernel perf trace: Beautify linux specific fcntl commands perf trace: Remove F_ from some of the fcntl command strings perf annotate: Implement visual marker for macro fusion perf annotate: Check for fused instructions usb: chipidea: msm: ci_hdrc_msm_probe() missing of_node_get() usb: chipidea: udc: compress return logic into line extcon: Convert to using %pOF instead of full_name of: Convert to using %pOF instead of full_name ata: Convert to using %pOF instead of full_name net: chelsio: cxgb3: constify attribute_group structures. net: bonding: constify attribute_group structures. arcnet: com20020-pci: constify attribute_group structures. wireless: iwlegacy: Constify attribute_group structures. wireless: iwlegacy: constify attribute_group structures. wireless: ipw2100: constify attribute_group structures. wireless: ipw2200: constify attribute_group structures. net: can: janz-ican3: constify attribute_group structures. net: can: at91_can: constify attribute_group structures. net: cdc_ncm: constify attribute_group structures. mlxsw: spectrum_router: Update prefix count for IPv6 mlxsw: spectrum_router: Rename functions to add / delete a FIB entry mlxsw: spectrum_router: Drop unnecessary parameter mlxsw: spectrum_router: Mark IPv4 specific function accordingly mlxsw: spectrum_router: Create IPv4 specific entry struct mlxsw: spectrum_router: Set abort trap for IPv6 mlxsw: spectrum_router: Allow IPv6 routes to be programmed mlxsw: reg: Update RALUE register with IPv6 support mlxsw: spectrum_router: Extend virtual routers with IPv6 support mlxsw: spectrum_router: Make FIB node retrieval family agnostic mlxsw: spectrum_router: Don't create FIB node during lookup mlxsw: spectrum_router: Don't assume neighbour type mlxsw: spectrum_router: Set activity interval according to both neighbour tables mlxsw: spectrum_router: Periodically dump active IPv6 neighbours mlxsw: reg: Update RAUHTD register with IPv6 support mlxsw: spectrum_router: Reflect IPv6 neighbours to the device mlxsw: reg: Update RAUHT register with IPv6 support mlxsw: spectrum_router: Configure RIFs based on IPv6 addresses mlxsw: spectrum_router: Flood unregistered multicast packets to router mlxsw: spectrum: Add support for IPv6 traps mlxsw: reg: Enable IPv6 on router interfaces mlxsw: spectrum_router: Enable IPv6 router workqueue: doc change for ST behavior on NUMA systems x86/mm: Add support to make use of Secure Memory Encryption compiler-gcc.h: Introduce __nostackprotector function attribute pinctrl: samsung: Use define from dt-bindings for pin mux function xfrm: add xdst pcpu cache xfrm: remove flow cache xfrm_policy: make xfrm_bundle_lookup return xfrm dst object xfrm_policy: remove xfrm_policy_lookup xfrm_policy: kill flow to policy dir conversion xfrm_policy: remove always true/false branches xfrm_policy: bypass flow_cache_lookup net: xfrm: revert to lower xfrm dst gc limit vti: revert flush x-netns xfrm cache when vti interface is removed drivers: net: add missing interrupt.h include net: dsa: mv88e6xxx: add a multi_chip info flag net: dsa: mv88e6xxx: add Energy Detect ops net: dsa: mv88e6xxx: add a global2_addr info flag net: dsa: mv88e6xxx: add POT operation net: dsa: mv88e6xxx: add POT flag to 88E6390 net: dsa: mv88e6xxx: distinguish Global 2 Rsvd2CPU net: dsa: mv88e6xxx: add number of Global 2 IRQs net: dsa: mv88e6xxx: remove 88E6185 G2 interrupt net: dsa: mv88e6xxx: remove unused capabilities net: dsa: mv88e6xxx: fix 88E6321 family comment net: dsa: mv88e6xxx: remove LED control register net: dsa: mv88e6xxx: remove unneeded dsa header ALSA: hda: constify pci_device_id. pinctrl: samsung: dt-bindings: Use better name for external interrupt function pinctrl: samsung: Fix invalid register offset used for Exynos5433 external interrupts dmaengine: Add driver for Altera / Intel mSGDMA IP core sun4i_hdmi: add CEC support dmaengine: dmatest: add support for memset test pinctrl: samsung: Fix NULL pointer exception on external interrupts on S3C24xx dmaengine: ioat: constify pci_device_id. media: pulse8-cec/rainshadow-cec: make adapter name unique media: cec: drop senseless message media: cec: move cec_register_cec_notifier to cec-notifier.h media: pulse8-cec.rst: add documentation for the pulse8-cec driver media: cec: be smarter about detecting the number of attempts made ARM: exynos_defconfig: Enable locking test options media: cec-core.rst: include cec-pin.h and cec-notifier.h media: cec-pin: add low-level pin hardware support ARM: exynos_defconfig: Enable NLS_UTF8 and some crypto algorithms media: cec: add core support for low-level CEC pin monitoring ARM: exynos_defconfig: Enable Bluetooth, mac80211, NFC and more USB drivers ALSA: pcxhr: fix string overflow warnings ALSA: rme9652: fix format overflow warnings media: cec: document the new CEC pin capability, events and mode ALSA: mixart: fix string overflow warning ALSA: opti9xx: fix format string overflow warning ALSA: ad1848: fix format string overflow warning ALSA: cs423x: fix format string overflow warning ARM: qcom_defconfig: Cleanup from non-existing options ARM: ezx_defconfig: Cleanup from non-existing options ARM: vexpress_defconfig: Cleanup from non-existing options ARM: ixp4xx_defconfig: Cleanup from non-existing options ALSA: als100: fix format string overflow warning ARM: multi_v7_defconfig: Cleanup from non-existing options media: cec: rework the cec event handling media: linux/cec.h: add pin monitoring API support media: cec-core.rst: document the adap_free callback media: cec: add adap_free op media: cec: add *_ts variants for transmit_done/received_msg media: cec: improve transmit timeout logging media: cec: only increase the seqnr if CEC_TRANSMIT would return 0 media: cec: clear all cec_log_addrs fields media: ov6650: convert to standalone v4l2 subdevice media: svg: avoid too long lines media: svg files: simplify files media: selection.svg: simplify the SVG file dt-bindings: display: sunxi: Improve endpoint ID scheme readability drm/sun4i: tcon: remove unused function drm/sun4i: Remove useless atomic_check drm/sun4i: Add if statement instead of depends on ASoC: rt274: add rt274 codec driver ASoC: rt5663: Modify the default value for ASRC function spi: loopback-test: make several module parameters static mtd: spi-nor: parse Serial Flash Discoverable Parameters (SFDP) tables hwrng: remember rng chosen by user hwrng: use rng source with best quality crypto: caam - fix condition for the jump over key(s) command crypto: caam - clean-up in caam_init_rng() crypto: caam - remove unused variables in caam_drv_private crypto: caam - remove unused sg_to_sec4_sg_len() crypto: caam/qi - lower driver verbosity crypto: caam/qi - remove unused header sg_sw_sec4.h crypto: caam/qi - explicitly set dma_ops crypto: caam/qi - fix AD length endianness in S/G entry crypto: caam/qi - handle large number of S/Gs case crypto: caam/qi - properly set IV after {en,de}crypt crypto: caam/qi - fix compilation with CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y crypto: caam/qi - fix compilation with DEBUG enabled crypto: caam/qi - fix typo in authenc alg driver name crypto: brcm - add NULL check on of_match_device() return value crypto: geode-aes - fixed coding style warnings and error crypto: ccp - remove ccp_present() check from device initialize crypto: ccp - rename ccp driver initialize files as sp device drm/i915: Fix cursor updates on some platforms crypto: ccp - Abstract interrupt registeration crypto: ccp - Introduce the AMD Secure Processor device crypto: ccp - Use devres interface to allocate PCI/iomap and cleanup MAINTAINERS: add a maintainer for Microchip / Atmel ECC driver crypto: atmel-ecc - introduce Microchip / Atmel ECC driver crypto: kpp - add get/set_flags helpers crypto: sun4i-ss - support the Security System PRNG crypto: omap-des - fix error return code in omap_des_probe() crypto: omap-aes - fix error return code in omap_aes_probe() crypto: mxs-dcp - print error message on platform_get_irq failure crypto: mxc-scc - fix error code in mxc_scc_probe() crypto: mediatek - fix error return code in mtk_crypto_probe() crypto: ccp - print error message on platform_get_irq failure crypto: ccp - Provide an error path for debugfs setup failure crypto: ccp - Change all references to use the JOB ID macro crypto: ccp - Fix some line spacing crypto: sahara - make of_device_ids const crypto: qat - fix spelling mistake: "runing" -> "running" crypto: virtio - Refacotor virtio_crypto driver for new virito crypto services x86/boot: Add early cmdline parsing for options with arguments x86/mm: Add support to encrypt the kernel in-place x86/mm: Create native_make_p4d() for PGTABLE_LEVELS <= 4 x86/mm: Use proper encryption attributes with /dev/mem xen/x86: Remove SME feature in PV guests x86/mm, kexec: Allow kexec to be used with SME kvm/x86/svm: Support Secure Memory Encryption within KVM x86, drm, fbdev: Do not specify encrypted memory for video mappings x86/boot/realmode: Check for memory encryption on the APs iommu/amd: Allow the AMD IOMMU to work with memory encryption x86/cpu/AMD: Make the microcode level available earlier in the boot swiotlb: Add warnings for use of bounce buffers with SME x86, swiotlb: Add memory encryption support x86/realmode: Decrypt trampoline area if memory encryption is active x86/mm: Add support for changing the memory encryption attribute x86/mm: Add support to access persistent memory in the clear x86/boot: Use memremap() to map the MPF and MPC data x86/mm: Add support to access boot related data in the clear x86/efi: Update EFI pagetable creation to work with SME efi: Update efi_mem_type() to return an error rather than 0 efi: Add an EFI table address match function x86/boot/e820: Add support to determine the E820 type of an address x86/mm: Insure that boot memory areas are mapped properly x86/mm: Add support for early encryption/decryption of memory x86/mm: Extend early_memremap() support with additional attrs x86/mm: Add SME support for read_cr3_pa() x86/mm: Provide general kernel support for memory encryption x86/mm: Simplify p[g4um]d_page() macros x86/mm: Add support to enable SME in early boot processing x86/mm: Remove phys_to_virt() usage in ioremap() x86/mm: Add Secure Memory Encryption (SME) support x86/cpu/AMD: Handle SME reduction in physical address size x86/cpu/AMD: Add the Secure Memory Encryption CPU feature x86, mpparse, x86/acpi, x86/PCI, x86/dmi, SFI: Use memremap() for RAM mappings x86/mm/pat: Set write-protect cache mode for full PAT support x86/cpu/AMD: Document AMD Secure Memory Encryption (SME) arm64: defconfig: enable nop-xceiv PHY driver x86/numa_emulation: Recalculate numa_nodes_parsed from emulated nodes x86/numa_emulation: Assign physnode_mask directly from numa_nodes_parsed x86/numa_emulation: Refine the calculation of max_emu_nid and dfl_phys_nid x86/boot/KASLR: Rename process_e820_entry() into process_mem_region() x86/boot/KASLR: Switch to pass struct mem_vector to process_e820_entry() x86/boot/KASLR: Wrap e820 entries walking code into new function process_e820_entries() x86/asm: Add unwind hint annotations to sync_core() x86/entry/64: Add unwind hint annotations objtool, x86: Add facility for asm code to provide unwind hints objtool: Add ORC unwind table generation x86/dumpstack: Fix interrupt and exception stack boundary checks x86/dumpstack: Fix occasionally missing registers x86/entry/64: Initialize the top of the IRQ stack before switching stacks x86/entry/64: Refactor IRQ stacks and make them NMI-safe tty/serial/fsl_lpuart: Add CONSOLE_POLL support for lpuart32. tty: serial: owl: Implement console driver ARM: ux500: Add vendor prefix to tps61052 node mfd: tps6105x: Add OF device ID table dt-bindings: mfd: Add TI tps6105x chip bindings i2c: i2c-cbus-gpio: Add vendor prefix to retu node in example mfd: retu: Add OF device ID table ARM: dts: n8x0: Add vendor prefix to retu node mfd: retu: Drop -mfd suffix from I2C device ID name dt-bindings: mfd: Add retu/tahvo ASIC chips bindings LSM: Remove security_task_create() hook. drm: Don't complain too much about struct_mutex. Staging: vt6655: Fixing coding style warnings staging: wlan-ng: Use little-endian type drivers: staging: ccree: use __func__ to get function name in error messages. Staging:vc04_services:vchiq_util.c: kzalloc call changed to kcalloc Staging: wlan-ng: hfa384x.h: fixed sparse warning staging: gs_fpgaboot: remove FSF address from GPL notice staging: pi433: Fix a couple of spelling mistakes staging: unisys: visornic: fix multi-line function definition staging: unisys: visorinput: fix multi-line function definition staging: unisys: visorhba: fix multi-line function definition staging: unisys: visorbus: visorchannel.c: fix multi-line function definition staging: unisys: include: Remove COVER macro from channel.h staging: unisys: visorbus: Remove unused define for visorchipset. staging: unisys: visorbus: cleaned up include block of visorchipset.c staging: unisys: visorbus: Removed unused define from visorbus_main.c staging: unisys: visorbus: removed blank line in viorbus_main.c staging: unisys: visorchipset: remove local_addr in handle_command staging: unisys: visorbus: remove target_hostname comment staging: unisys: visorbus: rename fix_vbus_dev_info staging: unisys: visorbus: Fix memory leak staging: unisys: moved visor_check_channel from include/channel.h to visorbus/visorbus_main.c staging: unisys: include: Remove unused CHANNEL_OK defines. staging: unisys: remove unused define VISOR_VSWITCH_CHANNEL_VERSIONID staging: unisys: visorbus: add checks for probe, remove, pause and resume in visorbus_register_visor_driver staging: unisys: visorbus: visorbus_main.c: remove check from typename_show staging: unisys: visorbus: visorbus_main.c: put function name and return value on same line. staging: unisys: visorbus: visorbus_main.c: remove extra checks for dev->visorchannel staging: unisys: visorbus: convert VMCALL_CONTROLVM_ADDR enum to #define staging: unisys: include: iochannel.h: removed VISOR_VSWITCH_CHANNEL_SIGNATURE staging: unisys: include: iochannel.h: removed VISOR_VNIC_CHANNEL_SIGNATURE staging: unisys: include: iochannel.h: removed VISOR_VHBA_CHANNEL_SIGNATURE staging: unisys: visorbus: vbuschannel.h: removed VISOR_VBUS_CHANNEL_SIGNATURE staging: unisys: visorbus: controlvmchannel.h: removed VISOR_CONTROLVM_CHANNEL_SIGNATURE staging: unisys: include: channel.h: remove unused pound defines staging: unisys: visorhba: viosrhba_main.c: Remove unnecessary checks staging: unisys: visorbus: controlvmchannel.h: fix spacing staging: unisys: visornic: visornic_main.c: Adjust whitespace usage staging: unisys: visorinput: visorinput.c: Adjust whitespace usage staging: unisys: visorhba: visorhba_main.c: Adjust whitespace usage staging: unisys: visorbus: visorbus_main.c: Adjust code layout staging: unisys: visorbus: visorchipset.c: Adjust code layout staging: unisys: visorbus: visorbus_main.c: use __func__ over hardcoded name drm/zte: Use gem_free_object_unlocked drm/pl111: Use gem_free_object_unlocked drm/mxsfb: Use gem_free_object_unlocked drm/i915: Consistently use enum pipe for PCH transcoders drm/bridge/synopsys: Add MIPI DSI host controller bridge dt-bindings: display: Add Synopsys DW MIPI DSI host controller drm/stm: ltdc: Add panel-bridge support drm/stm: ltdc: Fix leak of px clk enable in some error paths arm64: dts: exynos: Remove num-slots from exynos platforms ARM: dts: exynos: Remove num-slots from exynos platforms ARM: dts: exynos: Remove the OF graph from DSI node arm64: dts: exynos: Add extcon property for TM2 and TM2E arm64: dts: exynos: Fix wrong label for USB 3.0 controller node arm64: dts: exynos: Remove the OF graph from DSI node net: fix build error in devmap helper calls arm64: allwinner: a64: add DTSI file for AXP803 PMIC arm64: allwinner: a64: add AXP803 node to Pine64 device tree clk: mmp: Drop unnecessary static clk: moxart: remove unnecessary statics clk: qcom: clk-smd-rpm: Fix the reported rate of branches clk: mediatek: fixed static checker warning in clk_cpumux_get_parent call mdio_bus: Remove unneeded gpiod NULL check iio: Documentation: Add missing documentation for power attribute docs: disable KASLR when debugging kernel iio: adc: ad7766: Remove unneeded gpiod NULL check samples/bpf: add option for native and skb mode for redirect apps iio: orientation: hid-sensor-rotation: Drop unnecessary static docs: disable KASLR when debugging kernel net: ec_bhf: constify pci_device_id. net: cadence: macb: constify pci_device_id. docs: Do not include from drivers/scsi/constants.c docs: Get the struct cmbdata kernel doc from the right file docs: Do not include from .../seqno-fence.c docs: Do not include kerneldoc comments from kernel/sys.c docs: Get module_init() docs from module.h docs RTD theme: code-block with line nos - lines and line numbers don't line up. docs RDT theme: fix bottom margin of lists items Documentation: arm: Replace use of virt_to_phys with __pa_symbol sphinx.rst: better organize the documentation about PDF build sphinx.rst: describe the install requirements for kfigure sphinx.rst: fix unknown reference sphinx.rst: explain the usage of virtual environment docs-rst: move Sphinx install instructions to sphinx.rst changes.rst: Update Sphinx minimal requirements ARM: dts: rockchip: add efuse device node for rk3228 drm/vgem: add compat_ioctl support dt: Add bindings for IDT VersaClock 5P49V5925 clk: vc5: Add support for IDT VersaClock 5P49V5925 clk: vc5: Add support for IDT VersaClock 5P49V6901 clk: vc5: Add bindings for IDT VersaClock 5P49V6901 clk: vc5: Add support for the input frequency doubler clk: vc5: Split clock input mux and predivider clk: vc5: Configure the output buffer input mux on prepare clk: vc5: Do not warn about disabled output buffer input muxes clk: vc5: Fix trivial typo clk: vc5: Prevent division by zero on unconfigured outputs clk: axs10x: introduce AXS10X pll driver gfs2: Lock holder cleanup (fixup) dt-bindings: input: ti,drv260x: fix typo in property name net: Revert "net: add function to allocate sk_buff head without data area" dt-bindings: clock: ti-sci: Fix incorrect usage of headers staging: iio: tsl2x7x: add device tree documentation dt-bindings: nvmem: mediatek: add support for MediaTek MT7623 and MT7622 SoC clk: si5351: expand compatible strings in documentation net: Kill NETIF_F_UFO and SKB_GSO_UDP. inet: Remove software UFO fragmenting code. net: Remove all references to SKB_GSO_UDP. inet: Stop generating UFO packets. net: Remove references to NETIF_F_UFO from ethtool. net: Remove references to NETIF_F_UFO in netdev_fix_features(). virtio_net: Remove references to NETIF_F_UFO. dummy: Remove references to NETIF_F_UFO. tun/tap: Remove references to NETIF_F_UFO. macvlan/macvtap: Remove NETIF_F_UFO advertisement. ipvlan: Stop advertising NETIF_F_UFO support. macb: Remove bogus reference to NETIF_F_UFO. s2io: Remove UFO support. xdp: bpf redirect with map sample program net: add notifier hooks for devmap bpf map xdp: Add batching support to redirect map bpf: add bpf_redirect_map helper routine bpf: add devmap, a map for storing net device references xdp: add trace event for xdp redirect ixgbe: add initial support for xdp redirect net: implement XDP_REDIRECT for xdp generic xdp: sample program for new bpf_redirect helper xdp: add bpf_redirect helper function net: xdp: support xdp generic on virtual devices ixgbe: NULL xdp_tx rings on resource cleanup mlxsw: spectrum: Improve IPv6 unregistered multicast flooding mlxsw: spectrum: Add support for IPv6 MLDv1/2 traps mlxsw: spectrum: Trap IPv4 packets with Router Alert option mlxsw: spectrum: Mark packets trapped in router mlxsw: spectrum_flower: Add support for ip tos mlxsw: spectrum: Add tos to the ipv4 acl block mlxsw: acl: Add ip tos acl element mlxsw: spectrum_flower: Add support for ip ttl mlxsw: spectrum: Add ttl to the ipv4 acl block mlxsw: acl: Add ip ttl acl element ASoC: rsnd: remove unnecessary static in rsnd_ssiu_probe() inetpeer: remove AVL implementation in favor of RB tree net/unix: drop obsolete fd-recursion limits skbuff: optimize the pull_pages code in __pskb_pull_tail() ASoC: tas5720: constify snd_soc_dai_ops structure ASoC: dwc: constify snd_soc_dai_ops structure ASoC: hdac_hdmi: constify snd_soc_dai_ops structure ASoC: rk3036: constify snd_soc_dai_ops structure ASoC: max9867: constify snd_soc_dai_ops structure dt-bindings: net: ravb : Add support for r8a7743 SoC ASoC: codecs: msm8916-wcd-digital: constify snd_soc_dai_ops structure ASoC: rt5514: constify snd_soc_dai_ops structure ASoC: max98926: constify snd_soc_dai_ops structure net: axienet: add support for standard phy-mode binding ASoC: msm8916-wcd-analog: constify snd_soc_dai_ops structure ASoC: rt5616: constify snd_soc_dai_ops structure ASoC: rt5663: constify snd_soc_dai_ops structure ASoC: cs42l42: constify snd_soc_dai_ops structure arch_topology: Get rid of cap_parsing_done arch_topology: Localize cap_parsing_failed to topology_parse_cpu_capacity() arch_topology: Change return type of topology_parse_cpu_capacity() to bool arch_topology: Convert switch block to if block arch_topology: Don't break lines unnecessarily fpga manager: Add Altera CvP driver fpga: Add flag to indicate bitstream needs decompression of: Add vendor prefix for Lattice Semiconductor fpga-manager: altera-ps-spi: use bitrev8x4 lib: add bitrev8x4() ARM: dts: imx6q-evi: support altera-ps-spi fpga manager: Add altera-ps-spi driver for Altera FPGAs doc: dt: document altera-passive-serial binding fpga: Add flag to indicate SPI bitstream is bit-reversed Make FPGA a menuconfig to ease disabling it all dt-bindings: fpga: Add bindings document for Xilinx LogiCore PR Decoupler ppdev: remove unused ROUND_UP macro auxdisplay: constify charlcd_ops. char/mwave: make some arrays static const to make object code smaller drivers/misc: (aspeed-lpc-snoop): Add ast2400 to compat ASoC: tlv320aic32x4: Add gpio configuration to the codec ASoC: tlv320aic32x4: Add support for tlv320aic32x6 x86/hyper-v: stash the max number of virtual/logical processor x86/hyper-v: include hyperv/ only when CONFIG_HYPERV is set ASoC: zte: spdif: constify snd_soc_dai_ops structure ASoC: zx-tdm: constify snd_soc_dai_ops structure ASoC: zx-i2s: constify snd_soc_dai_ops structure ASoC: mmp-sspa: constify snd_soc_dai_ops structure ASoC: mediatek: mt2701: constify snd_soc_dai_ops structure ASoC: hisilicon: constify snd_soc_dai_ops structure ASoC: fsl_asrc: constify snd_soc_dai_ops structure ASoC: fsl_esai: constify snd_soc_dai_ops structure ASoC: fsl_spdif: constify snd_soc_dai_ops structure ASoC: sun8i-codec: constify snd_soc_dai_ops structure vmbus: add prefetch to ring buffer iterator vmbus: more host signalling avoidance vmbus: eliminate duplicate cached index vmbus: refactor hv_signal_on_read vmbus: drop unused ring_buffer_info elements ASoC: tegra: constify snd_soc_dai_ops structure vmbus: simplify hv_ringbuffer_read percpu: update the header comment and pcpu_build_alloc_info comments percpu: expose pcpu_nr_empty_pop_pages in pcpu_stats ASoC: rt5514: Support the DSP recording continuously after the hotwording triggered percpu: change the format for percpu_stats output percpu: pcpu-stats change void buffer to int buffer ASoC: sta32x: Remove unneeded gpiod NULL check ASoC: cs53l30: Remove unneeded gpiod NULL check ASoC: cs42l42: Remove unneeded gpiod NULL check ASoC: cs35l34: Remove unneeded gpiod NULL check ASoC: cs35l33: Remove unneeded gpiod NULL check ASoC: wm8804: Remove unneeded gpiod NULL check ASoC: adau1977: Remove unneeded gpiod NULL check ASoC: sun4i-codec: Remove unneeded gpiod NULL check ASoC: rsnd: add missing of_node_put drm/crc: Only open CRC on atomic drivers when the CRTC is active. drm/crc: Handle opening and closing crc better spi: loopback-test: provide loop_req option. media: vimc: set id_table for platform drivers debugfs: Add dummy implementation of few helpers ASoC: rt5665: force using PLL if MCLK is not suitable ASoC: Intel: Atom: constify snd_soc_dai_ops structures ASoC: Intel: Skylake: constify snd_soc_dai_ops structures ASoC: Intel: Skylake: fix type in debug message ASoC: au1x: psc-i2s: constify dev_pm_ops structure ASoC: psc-ac97: constify dev_pm_ops structure ASoC: fsi: constify dev_pm_ops structure ASoC: samsung: Remove non-existing CONFIG_CPU_S3C2413 block: order /proc/devices by major number GFS2: Prevent double brelse in gfs2_meta_indirect_buffer char_dev: order /proc/devices by major number char_dev: extend dynamic allocation of majors into a higher range mei: me: use an index instead of a pointer for private data mei: me: enable asynchronous probing binder: remove unused BINDER_SMALL_BUF_SIZE define android: binder: Use dedicated helper to access rlimit value binder: remove global binder lock binder: fix death race conditions binder: protect against stale pointers in print_binder_transaction binder: protect binder_ref with outer lock binder: use inner lock to protect thread accounting binder: protect transaction_stack with inner lock. binder: protect proc->threads with inner_lock binder: protect proc->nodes with inner lock binder: add spinlock to protect binder_node binder: add spinlocks to protect todo lists binder: use inner lock to sync work dq and node counts binder: introduce locking helper functions binder: use node->tmp_refs to ensure node safety binder: refactor binder ref inc/dec for thread safety binder: make sure accesses to proc/thread are safe binder: make sure target_node has strong ref binder: guarantee txn complete / errors delivered in-order binder: refactor binder_pop_transaction binder: use atomic for transaction_log index binder: add more debug info when allocation fails. binder: protect against two threads freeing buffer binder: remove dead code in binder_get_ref_for_node binder: don't modify thread->looper from other threads binder: avoid race conditions when enqueuing txn binder: refactor queue management in binder_thread_read binder: add log information for binder transaction failures binder: make binder_last_id an atomic binder: change binder_stats to atomics binder: add protection for non-perf cases binder: remove binder_debug_no_lock mechanism binder: move binder_alloc to separate file binder: separate out binder_alloc functions binder: remove unneeded cleanup code binder: separate binder allocator structure from binder proc staging: lustre: fix spelling mistake, "grranted" -> "granted" staging: lustre: lustre: fix all braces issues reported by checkpatch Staging: rtl8192u: Use __func__ instead of function name. backlight: lm3630a: Bump REG_MAX value to 0x50 instead of 0x1F EDAC: Get rid of mci->mod_ver drm/i915: Fix user ptr check size in eb_relocate_vma() drm/i915: Fix error checking/locking in perf/lookup_context() usb: atm: ueagle-atm: fix spelling mistake: "submition" -> "submission" usb: renesas_usbhs: make array type_array static const usb: misc: ftdi-elan: compress return logic into one line usb: misc: sisusbvga: compress return logic into one line usb: isp1760: compress return logic into one line regulator: cpcap: Add OF mode mapping regulator: cpcap: Fix standby mode spi: sh-msiof: Limit minimum divider on R-Car Gen3 spi: sh-msiof: Add support for R-Car H3 spi: pxa2xx: Only claim CS GPIOs when the slave device is created spi: imx: add selection for iMX53 and iMX6 controller spi: imx: introduce fifo_size and has_dmamode in spi_imx_devtype_data spi/bcm63xx-hspi: Fix checkpatch warnings spi/ath79: Fix checkpatch warnings ASoC: twl6040: fix error return code in twl6040_probe() ASoC: spear: fix error return code in spdif_in_probe() ASoC: samsung: i2s: Support more resolution rates ASoC: rt5663: Add the manual offset field to compensate the DC offset ASoC: rt5663: add in missing loop counter to avoid infinite loop ASoC: rt5663: Modify the power sequence for reducing the pop sound ASoC: rt5663: Optimize the Jack Type detection ASoC: rt5663: Update the calibration funciton ASoC: rt5514: Move the auto disable DSP function to set_bias_level() ASoC: kirkwood-i2s: fix error return code in kirkwood_i2s_dev_probe() ASoC: hdmi-codec: make const array hdmi_codec_eld_spk_alloc_bits static ASoC: hdmi-codec: ELD control corresponds to the PCM stream drm/imx: lock scanout transfers for consecutive bursts drm/imx: ipuv3-plane: use fb local variable instead of state->fb dt-bindings: extcon: Add support for cros-ec device extcon: cros-ec: Add extcon-cros-ec driver to support display out ARM: dts: at91: sama5d2_xplained: use pin macros instead of numbers ARM: dts: at91: at91-sama5d27_som1_ek: Add sama5d27 SoM1 EK support ARM: dts: at91: at91-sama5d27_som1: add sama5d27 SoM1 support ARM: dts: at91: sama5d2: add isc node ARM: dts: at91: sama5d2: add QSPI nodes pinctrl: sh-pfc: r8a7796: Rename CS1# pin function definitions pinctrl: sh-pfc: r8a7796: Fix IPSR and MOD_SEL register pin assignment for FSO pins group pinctrl: sh-pfc: r8a7796: Fix to delete MOD_SEL0 bit2 register definitions pinctrl: sh-pfc: r8a7796: Fix to delete SATA_DEVSLP_B pins function definitions pinctrl: sh-pfc: r8a7796: Fix to delete FSCLKST pin and IPSR7 bit[15:12] register definitions pinctrl: sh-pfc: r8a7796: Fix MOD_SEL register pin assignment for TCLK{1,2}_{A,B} pins group pinctrl: sh-pfc: r8a7796: Fix NFDATA{0..13} and NF{ALE,CLE,WE_N,RE_N} pin function definitions pinctrl: sh-pfc: r8a7796: Fix FMCLK{_C,_D} and FMIN{_C,_D} pin function definitions pinctrl: sh-pfc: r8a7796: Fix SCIF_CLK_{A,B} pin's MOD_SEL assignment to MOD_SEL1 bit10 pinctrl: sh-pfc: r8a7796: Fix MOD_SEL2 bit26 to 0x0 when using SCK5_A pinctrl: sh-pfc: r8a7796: Fix MOD_SEL1 bit[25:24] to 0x3 when using STP_ISEN_1_D pinctrl: sh-pfc: r8a7791: Add missing mmc_data8_b pin group pinctrl: sh-pfc: r8a7796: Fix MSIOF3 SS2_E mux pinctrl: sh-pfc: r8a7796: Fix IPSR setting for MSIOF3_SS1_E pin pinctrl: sh-pfc: r8a7796: Fix MSIOF3_{SS1,SS2}_E pin function definitions pinctrl: sh-pfc: r8a7795: Add MSIOF pins, groups and functions pinctrl: sh-pfc: r8a7795: Fix MSIOF3_{SS1,SS2}_E pin function definitions pinctrl: sh-pfc: Propagate errors on group config clk: renesas: Allow compile-testing of all (sub)drivers clk: renesas: r8a7792: Add IMR-LX3/LSX3 clocks clk: renesas: div6: Document fields used for parent selection EDAC: Constify attribute_group structures ARM: debug: Use generic 8250 debug_ll for am3517 and am335x ARM: debug: Use generic 8250 debug_ll for ti81xx ARM: debug: Use generic 8250 debug_ll for omap3/4/5 VFS: Differentiate mount flags (MS_*) from internal superblock flags VFS: Convert sb->s_flags & MS_RDONLY to sb_rdonly(sb) vfs: Add sb_rdonly(sb) to query the MS_RDONLY flag on s_flags ARM: debug: Use generic 8250 debug_ll for omap2 and omap3/4/5 common uarts drm/i915: Update DRIVER_DATE to 20170717 drm/sun4i: hdmi: Implement I2C adapter for A10s DDC bus drm/sun4i: constify drm_plane_helper_funcs EDAC, mce_amd: Use cpu_to_node() to find the node ID sctp: remove the typedef sctp_hmac_algo_param_t sctp: remove the typedef sctp_chunks_param_t sctp: remove the typedef sctp_random_param_t sctp: remove the typedef sctp_supported_ext_param_t sctp: remove the typedef sctp_adaptation_ind_param_t sctp: remove struct sctp_ecn_capable_param sctp: remove the typedef sctp_supported_addrs_param_t sctp: remove the typedef sctp_hostname_param_t sctp: remove the typedef sctp_cookie_preserve_param_t sctp: remove the typedef sctp_ipv6addr_param_t sctp: remove the typedef sctp_ipv4addr_param_t rds: cancel send/recv work before queuing connection shutdown arm64: allwinner: a64: add NMI (R_INTC) controller on A64 cgroup: replace css_set walking populated test with testing cgrp->nr_populated_csets cgroup: distinguish local and children populated states cgroup: remove now unused list_head @pending in cgroup_apply_cftypes() cgroup: update outdated cgroup.procs documentation atm: idt77252: constify pci_device_id. atm: eni: constify pci_device_id. atm: firestream: constify pci_device_id. atm: zatm: constify pci_device_id. atm: lanai: constify pci_device_id. atm: solos-pci: constify pci_device_id. atm: horizon: constify pci_device_id. atm: he: constify pci_device_id. atm: nicstar: constify pci_device_id. atm: fore200e: constify pci_device_id. atm: ambassador: constify pci_device_id. atm: iphase: constify pci_device_id. ip6: fix PMTU discovery when using /127 subnets tools: hv: ignore a NIC if it has been configured sunvnet: add support for IPv6 checksum offloads leds: tlc591xx: add missing of_node_put leds: tlc591xx: merge conditional tests arm64: dts: rockchip: remove num-slots from all platforms arm64: dts: rockchip: change clkreq mode for rk3399-evb arm64: dts: rockchip: add SdioAudio pd control for rk3399 arm64: dts: rockchip: enable usb2 for RK3328 evaluation board arm64: dts: rockchip: add usb2 nodes for RK3328 SoCs arm64: dts: rockchip: set rk3399 dynamic CPU power coefficients arm64: dts: rockchip: Use vctrl regulators for dynamic CPU voltages on Gru/Kevin arm64: dts: rockchip: Update CPU regulator voltage ranges for Gru arm64: dts: rockchip: fix typo in mmc pinctrl ARM: dts: rockchip: add gpio power-key for rk3229-evb ARM: dts: rockchip: enable tsadc for rk3229-evb ARM: dts: rockchip: enable eMMC for rk3229-evb ARM: dts: rockchip: enable io-domain for rk3229-evb ARM: dts: rockchip: add cpu-supply property for cpu node of rk3229-evb ARM: dts: rockchip: add regulator nodes for rk3229-evb ARM: dts: rockchip: add sdmmc and sdio nodes for rk3228 SoC ARM: dts: rockchip: fix compatible string for eMMC node of rk3228 SoC ARM: dts: rockchip: add cpu enable method for rk3228 SoC ARM: dts: rockchip: remove num-slots from all platforms ARM: dts: rockchip: Add io-domain node for rk3228 ARM: dts: rockchip: add basic dtsi file for RK3229 SoC ARM: dts: rockchip: enable adc key for rk3288-evb ARM: dts: rockchip: enable saradc for rk3288-evb ARM: dts: rockchip: enable ARM Mali GPU on rk3288-fennec ARM: dts: rockchip: enable ARM Mali GPU on rk3288-evb ARM: dts: rockchip: enable ARM Mali GPU on rk3288-tinker ARM: dts: rockchip: fix typo in rk3036 mmc pinctrl ARM: dts: rockchip: add rk322x spdif node ARM: dts: rockchip: change to "max-frequency" from "clock-freq-min-max" on rv1108 soc: rockchip: disable jtag switching for RK3328 Soc staging: pi433: New driver fs/locks: Remove fl_nspid and use fs-specific l_pid for remote locks fs/locks: Use allocation rather than the stack in fcntl_getlk() Staging: Lustre Fix block statement style issue Staging: Lustre Fixing multiline block comments in lnetst.h Staging: Lustre Fix up multiple Block Comments in lib-types.h Staging: Lustre Clean up line over 80Char in lib-lnet.h staging: vt6656: Use variable instead of its type in sizeof(...) staging: vt6656: Align function parameters staging: vt6656: Remove unnecessary blank lines staging: vt6656: Add spaces between operators staging: ks7010: Fix cast to restricted __le16 in ks_wlan_net.c staging: rtl8192u: Fix braces placement and spacing staging: rtl8192u: reduce stack frame size in ieee80211_rx_mgt_rsl staging: fbtft: make const array gamma_par_mask static staging: lustre: fix sparse error: incompatible types in comparison expression staging: ccree: move comment to fit coding style staging: ccree: remove whitespace before a quoted newline staging: ccree: avoid unnecessary line continuation staging: ccree: avoid constant comparison staging: ccree: CamelCase to snake_case in aead struct staging: ccree: CamelCase to snake_case in func vars staging: ccree: use proper printk format for dma_addr_t staging: ccree: clean up struct ssi_aead_ctx staging: ccree remove unnecessary parentheses staging: comedi: Use offset_in_page macro Staging: android: use BIT macro Staging: android: Fix code alignment issue Staging: android: Remove unnecessary blank lines Staging: android: fix sizeof style issue Staging: android: remove unnecessary blank lines staging: android: ion: statify __ion_add_cma_heaps staging: fsl-dpaa2/eth: Remove dead code staging: unisys: visorbus: fix improper bracket blocks staging: unisys: visorbus: use __func__ over hardcoded name staging: unisys: visorbus: Indent struct assignment correctly staging: unisys: visorbus: adjust tabs in function staging: unisys: visorbus: controlvmchannel.h: Adjust whitespace usage staging: unisys: include: visorbus.h: Adjust whitespace usage staging: unisys: include: iochannel.h: Adjust whitespace usage staging: unisys: include: channel.h: Adjust whitespace usage staging: unisys: visorhba: Fix up existing function comments staging: unisys: visorbus: Rename #define to fit surrounding namespace staging: unisys: visorbus: Remove unused #define staging: unisys: include: Fix spelling mistake staging: unisys: visorinput: ultrainputreport.h: fixed comment formatting issues staging: unisys: visorinput: visorinput.c: fixed comment formatting issues staging: unisys: visorhba: visorhba_main.c: fixed comment formatting issues staging: unisys: visornic: visornic_main.c: fixed comment formatting issues staging: unisys: include: iochannel.h: fixed comment formatting issues staging: unisys: include: channel.h: fixed comment formatting issues staging: unisys: visorbus: visorchipset.c: fixed comment formatting issues staging: unisys: visorbus: visorchannel.c: fixed comment formatting issues staging: unisys: include: remove unused macros in channel.h staging: unisys: visorbus: visorbus_main.c: fixed comment formatting issues staging: unisys: visorbus: vmcallinterface.h: fixed comment formatting issues staging: unisys: visorbus: vbuschannel.h: fixed comment formatting issues staging: unisys: visorbus: controlvmchannel.h: fixed comment formatting issues staging: lustre: lnet: remove dead code and useless wrapper staging: typec: Fix endianness warning discovered by sparse staging: rtl8723bs: Place constant at the right. staging: rtl8712: Remove explicit NULL comparison staging: rtl8712: fix "Alignment match open parenthesis" staging: greybus: arche: wrap over-length lines staging: greybus: loopback_test: fix comment style issues staging: wilc1000: fix variable signedness staging: wilc1000: add parameter name to function definition staging: wilc1000: fix a typo: "incative" -> "inactive" staging: wilc1000: Neaten refresh_scan - remove always 1 argument staging: ccree: Fix alignment issues in ssi_sysfs.c staging: ccree: Fix alignment issues in ssi_sram_mgr.c staging: ccree: Fix alignment issues in ssi_request_mgr.c staging: ccree: Fix alignment issues in ssi_ivgen.c staging: ccree: Fix alignment issues in ssi_driver.c staging: ccree: Fix alignment issues in ssi_cipher.c staging: ccree: Fix alignment issues in ssi_buffer_mgr.c staging: ccree: move FIPS support to kernel infrastructure staging: ccree: fix switch case indentation staging: ccree: export symbol immediately following function staging: ccree: remove assignement in conditional staging: ccree: fix placement of curly braces staging: ccree: remove redudant semicolons staging: ccree: use sizeof(*var) in kmalloc staging: ccree: remove unnecessary cast on kmalloc staging: ccree: Use __func__ instead of function name phy: qcom-usb-hs: Replace the extcon API extcon: int3496: Constify acpi_device_id ARM: dts: uniphier: use SPDX-License-Identifier (2nd) arm64: dts: uniphier: add watchdog node for LD11 and LD20 ARM: dts: imx6ul-evk: Pass the 'backlight' property ARM: dts: imx6ul-evk: Add DRM panel support ARM: dts: imx: update snvs-poweroff mask ARM: dts: imx6qdl-icore-rqs: Remove unneeded 'fsl,mode' property ARM: dts: imx7d-sdb: Pass phy-reset-gpios ARM: dts: imx: Correct B850v3 clock assignment ARM: dts: imx7d-sdb: Set VLDO4 outpt to 2.8V for MIPI CSI/DSI ARM: dts: imx: ventana: add ADV1780 analog video decoder ARM: dts: imx6ul-geam: Add Sound card with codec node ARM: dts: imx6ul-geam: Skip suffix -kit from dts name ARM: dts: imx6ul-geam: Drop imx6ul-geam.dtsi ARM: dts: imx6ul-geam-kit: Remove re-enabled usdhc1 ARM: dts: imx6ul-isiot: Add FEC node support ARM: dts: imx6ul-isiot: Add Sound card with codec node ARM: dts: imx6ul-isiot: Move common nodes in imx6ul-isiot.dtsi ARM: imx_v6_v7_defconfig: Select the coda driver as module ARM: imx_v6_v7_defconfig: Enable GPIO_74X164 ARM: imx_v6_v7_defconfig: Enable SPI_GPIO arm64: dts: zte: remove num-slots from zx296718 ARM: dts: zte: remove num-slots from zx296702-ad1 get rid of SYSVIPC_COMPAT on ia64 semtimedop(): move compat to native shmat(2): move compat to native msgrcv(2), msgsnd(2): move compat to native ipc(2): move compat to native ipc: make use of compat ipc_perm helpers semctl(): move compat to native semctl(): separate all layout-dependent copyin/copyout msgctl(): move compat to native msgctl(): split the actual work from copyin/copyout ipc: move compat shmctl to native shmctl: split the work from copyin/copyout ACPI / video: Add force_none quirk for Dell OptiPlex 9020M PM / OPP: OF: Use pr_debug() instead of pr_err() while adding OPP table cpufreq: dt: Add zynqmp to the cpufreq dt platdev cpufreq: speedstep: remove unnecessary static in speedstep_detect_chipset() iio: core: Fix mapping of iio channels to entry numbers iio: dac: stm32: add support for stm32f4 iio: dac: stm32: fix error message dt-bindings: iio: stm32-dac: add support for STM32F4 drm/vc4: Fix misleading name of the continuous flag. drm/vc4: Fix DSI T_INIT timing. drm: add helper functions for YCBCR420 handling drm/edid: parse ycbcr 420 deep color information drm/edid: parse YCBCR420 videomodes from EDID drm: add helper to validate YCBCR420 modes drm/edid: cleanup patch for CEA extended-tag macro drm/edid: parse sink information before CEA blocks drm/edid: complete CEA modedb(VIC 1-107) drm: handle HDMI 2.0 VICs in AVI info-frames drm/tinydrm: Add RePaper e-ink driver drm/tinydrm: Add tinydrm_xrgb8888_to_gray8() helper dt-bindings: Add Pervasive Displays RePaper bindings of: Add vendor prefix for Pervasive Displays drm/amd/powerplay: add profile mode for vega10. drm/amdgpu: fix amdgpu_bo_gpu_accessible() drm/amdgpu: map VM BOs for CPU based updates only once drm/amdgpu: make sure BOs are always kunmapped drm/amdgpu: flush the HDP only once for CPU based VM updates drm/amdgpu: trace setting VM page tables with the CPU as well drm/amdgpu: remove VM shadow WARN_ONs drm/amdgpu: fix amdgpu_vm_bo_wait drm/amdgpu: fix VM flush for CPU based updates drm/amdgpu/gfx: keep all compute queues on the same pipe drm/amd/amdgpu: fix si_enable_smc_cac() failed issue drm/amdgpu: Off by one sanity checks drm/amdgpu: implement si_read_bios_from_rom drm/amdgpu/soc15: drop dead function drm/amdgpu: call atomfirmware get_clock_info for atomfirmware systems drm/amdgpu: add get_clock_info for atomfirmware drm/amdgpu: Send no-retry XNACK for all fault types drm/amdgpu: Correctly establish the suspend/resume hook for amdkfd drm/amdgpu: Make SDMA phase quantum configurable drm/amdgpu: Enable SDMA context switching for CIK drm/amdgpu: Enable SDMA_CNTL.ATC_L1_ENABLE for SDMA on CZ drm/amdgpu: Try evicting from CPU visible to invisible VRAM first drm/amdgpu: Don't force BOs into visible VRAM for page faults drm/amdgpu: Set/clear CPU_ACCESS flag on page fault and move to VRAM drm/amdgpu: Throttle visible VRAM moves separately drm/amdgpu: Add vis_vramlimit module parameter drm/amdgpu: change gartsize default to 256MB drm/amdgpu: add new gttsize module parameter v2 drm/amdgpu: limit the GTT manager address space drm/amdgpu: consistent name all GART related parts drm/amdgpu: remove gtt_base_align handling drm/amdgpu: move GART struct and function into amdgpu_gart.h v2 drm/amdgpu: check scratch registers to see if we need post (v2) drm/amdgpu/soc15: init nbio registers for vega10 drm/amdgpu: add nbio 6.1 register init function drm/amd/powerplay: added didt support for vega10 drm/amd/powerplay: added grbm_idx_mutex lock/unlock to cgs v2 drm/amd/powerplay: added support for new se_cac_idx APIs to cgs drm/amd/powerplay: added soc15 support for new se_cac_idx APIs drm/amd/powerplay: added new se_cac_idx r/w APIs v2 drm/amd/powerplay: added index gc cac read/write apis for vega10 drm/amdgpu: use TTM values instead of MC values for the info queries drm/amdgpu: remove maximum BO size limitation v2 drm/amdgpu: stop mapping BOs to GTT drm/amdgpu: use the GTT windows for BO moves v2 drm/amdgpu: add amdgpu_gart_map function v2 drm/amdgpu: reserve the first 2x512 pages of GART drm/amdgpu: make arrays pctl0_data and pctl1_data static drm/amdgpu/gmc9: get vram width from atom for Raven drm/amdgpu/atomfirmware: implement vram_width for APUs drm/amdgpu/atom: fix atom_fw check drm/amdgpu: Free resources of bo_list when idr_alloc fails drm/amd/powerplay: add avfs check for old asics on Vi. drm/amd/powerplay: move VI common AVFS code to smu7_smumgr.c drm/amd/powerplay: refine avfs enable code on fiji. drm/amd/powerplay: fix avfs state update error on polaris. drm/amd/powerplay: fixed wrong data type declaration for ppfeaturemask drm/amdgpu: set firmware loading type as direct by default for raven drm/amdgpu: make psp cmd buffer as a reserve memory drm/amdgpu: fix missed asd bo free when hw_fini drm/amdgpu: remove superfluous check drm/amdgpu: NO KIQ usage on nbio hdp flush routine drm/amdgpu: Add WREG32_SOC15_NO_KIQ macro define drm/amdgpu:fix world switch hang drm/amd/powerplay: enable ACG feature on vega10. drm/amd/powerplay: add acg support in pptable for vega10 drm/amd/powerplay: export ACG related smu message for vega10 drm/amd/powerplay: add avfs profiling_info_v4_2 support on Vega10. drm/amdgpu: add ACG SMU firmware for other vega10 variants drm/amdgpu: drop SMU_DRIVER_IF_VERSION check for some vega10 variants drm/amdgpu: add workaround for S3 issues on some vega10 boards drm/amdgpu/atombios: add function for whether we need asic_init drm/amdgpu: unify some atombios/atomfirmware scratch reg functions drm/amdgpu/atombios: use bios_scratch_reg_offset for atombios drm: amd: amdgpu: constify ttm_place structures. drm: radeon: constify drm_prop_enum_list structures. drm: radeon: radeon_ttm: constify ttm_place structures. drm/amdgpu: trace VM flags as 64bits drm/amdgpu: remove stale TODO comment drm/amd/sched: print sched job id in amd_sched_job trace drm/amdgpu: update pctl1 ram index/data for mmhub on raven drm/amdgpu: add check when no firmware need to load drm/amdgpu: bind BOs with GTT space allocated directly v2 drm/amdgpu: bind BOs to TTM only once drm/amdgpu: add vm_needs_flush parameter to amdgpu_copy_buffer drm/amdgpu: allow flushing VMID0 before IB execution as well drm/amdgpu: fix amdgpu_ring_write_multiple drm/amdgpu: move ring helpers to amdgpu_ring.h drm/radeon: add header comment for clarification to vce_v2_0_enable_mgcg() drm/amdgpu: Update default vram_page_split description drm/amdgpu: Changed CU reservation golden settings drm/amdgpu: fix amdgpu_debugfs_gem_bo_info drm/amdgpu: cleanup initializing gtt_size drm/amdgpu: Support passing amdgpu critical error to host via GPU Mailbox. drm/amdgpu: Allow vblank_disable_immediate. drm/radeon: Allow vblank_disable_immediate. drm/amdgpu: remove *_mc_access from display funcs drm/amdgpu: drop set_vga_render_state from display funcs drm/amdgpu/gmc6: drop fb location programming drm/amdgpu/gmc7: drop fb location programming drm/amdgpu/gmc8: drop fb location programming drm/amdgpu/gmc6: use the vram location programmed by the vbios drm/amdgpu/gmc7: use the vram location programmed by the vbios drm/amdgpu/gmc8: use the vram location programmed by the vbios drm/amdgpu: disable vga render in dce hw_init drm/amdgpu: simplify VM shadow handling v2 drm/amdgpu: enable 4 level page table on raven (v3) drm/amdgpu: use kernel is_power_of_2 rather than local version drm/fb-helper: separate the fb_setcmap helper into atomic and legacy paths drm/atomic-helper: update lut props directly in ..._legacy_gamma_set drm: rename, adjust and export drm_atomic_replace_property_blob drm/i915: Protect against deferred fbdev setup drm/i915/fbdev: Always forward hotplug events drm/dp/mst: Use memchr_inv() instead of memcmp() against a zeroed array drm/atomic: Make private objs proper objects drm/atomic: Remove pointless private object NULL state check drm/dp/mst: Handle errors from drm_atomic_get_private_obj_state() correctly drm/i915/skl+: unify cpp value in WM calculation drm/i915/skl+: WM calculation don't require height drm/i915: Addition wrapper for fixed16.16 operation drm/i915: cleanup fixed-point wrappers naming drm/i915: Always perform internal fixed16 division in 64 bits drm/i915: take-out common clamping code of fixed16 wrappers drm/mediatek: Convert to new iterator macros drm/imx: Use atomic iterator macros drm/mali: Use new atomic iterator macros drm/rockchip: Use for_each_oldnew_plane_in_state in vop_crtc_atomic_flush drm/atmel-hlcdec: Use for_each_new_connector_in_state drm/i915: Use correct iterator macro drm/vmwgfx: Make check_modeset() use the new atomic iterator macros. drm/atomic: Use new iterator macros in drm_atomic_helper_wait_for_flip_done drm/atomic: Use the new helpers in drm_atomic_helper_disable_all() drm/atomic: Use the correct iterator macro in atomic_remove_fb drm/simple-kms-helper: Fix the check for the mismatch between plane and CRTC enabled. Input: sur40 - skip all blobs that are not touches Input: sur40 - silence unnecessary noisy debug output Input: sur40 - add additional reverse-engineered information Input: ads7846 - constify attribute_group structures Input: elants_i2c - constify attribute_group structures Input: raydium_i2c_ts - constify attribute_group structures Input: psmouse - constify attribute_group structures Input: elantech - constify attribute_group structures Input: gpio_keys - constify attribute_group structures Input: yealink - constify attribute_group structures Input: ims-pcu - constify attribute_group structures Input: synaptics-rmi4 - constify attribute_group structures in F01 Input: synaptics-rmi4 - constify attribute_group structures in F34 Input: constify attribute_group structures Input: aiptek - constify attribute_group structures Input: serio - constify attribute_group structures bus: omap-ocp2scp: Fix error handling in omap_ocp2scp_probe drm/i915/cnl: Add missing type case. drm: inhibit drm drivers register to uninitialized drm core iio: adc: at91: make array startup_lookup static drm/i915/cnl: Add max allowed Cannonlake DC. regulator: cpcap: Fix standby mode drm/i915: Make DP-MST connector info work iio: accel: st_accel: rename H3LIS331DL_DRIVER_NAME in H3LIS331DL_ACCEL_DEV_NAME iio: accel: st_accel_spi: add support to H3LIS331DL, LIS331DL, LIS3LV02DL iio: accel: st_accel_i2c: fix i2c_device_id table iio:adc:at91-sama5d2: make array startup_lookup static to reduce code size iio: accel: make array init_data static to reduce code size iio: adc: rockchip_saradc: add NULL check on of_match_device() return value iio: adc: meson-saradc: add NULL check on of_match_device() return value staging: iio: tsl2x7x: check return value from tsl2x7x_invoke_change() staging: iio: tsl2x7x: use usleep_range() instead of mdelay() staging: iio: tsl2x7x: refactor {read,write}_event_value to allow handling multiple iio_event_infos staging: iio: tsl2x7x: cleaned up i2c calls in tsl2x7x_als_calibrate() staging: iio: tsl2x7x: remove tsl2x7x_i2c_read() staging: iio: tsl2x7x: remove redundant power_state sysfs attribute staging: iio: tsl2x7x: add of_match table for device tree support iio: adc: Add support for DLN2 ADC arm64/syscalls: Check address limit on user-mode return arm/syscalls: Check address limit on user-mode return x86/syscalls: Check address limit on user-mode return drm/i915/cnl: Get DDI clock based on PLLs. drm/i915/cnl: Inherit RPS stuff from previous platforms. drm/i915/cnl: Gen10 render context size. drm/i915/cnl: Don't trust VBT's alternate pin for port D for now. regulator: axp20x: add NULL check on devm_kzalloc() return value regulator: qcom_smd: add NULL check on of_match_device() return value regulator: qcom_rpm-regulator: add NULL check on of_match_device() return value drm/i915: Fix the kernel panic when using aliasing ppgtt drm/i915/cnl: Cannonlake color init. drm/i915/cnl: Add force wake for gen10+. x86/gpu: CNL uses the same GMS values as SKL iio: pressure: zpa2326: Add newlines to logging macros drm/i915/cnl: Fix comment about AUX IO power well enable/disable drm/i915/gen9+: Don't remove secondary power well requests drm/i915/bxt, glk: Fix assert on conditions for DC9 enabling drm/i915/skl: Don't disable misc IO power well during display uninit drm/i915/gen9+: Add 10 us delay after power well 1/AUX IO pw disabling ath10k: increase buffer len to print all wmi services ath10k: add copy engine register MAP for wcn3990 target ath10k: make CE layer bus agnostic ath10k: fix indenting in ath10k_wmi_update_noa() drm/i915: Only free the oldest stale context before allocating drm/i915: Drop request retirement before reaping stale contexts drm/i915: Move stale context reaping to common i915_gem_context_create drm/i915: Check new context against kernel_context after reporting an error drm/i915: Setting pch_id for HSW/BDW in virtual environment drm: i915: sysfs: constify attribute_group structures. drm/bridge: ti-tfp410: clean up drm_bridge_add call drm/bridge: tc358767: clean up drm_bridge_add call drm/bridge: synopsys: dw-hdmi: clean up drm_bridge_add call drm/bridge: sii902x: clean up drm_bridge_add call drm/bridge: ps8622: clean up drm_bridge_add call drm/bridge: panel: clean up drm_bridge_add call drm/bridge: nxp-ptn3460: clean up drm_bridge_add call drm/bridge: vga-dac: clean up drm_bridge_add call drm/bridge: analogix-anx78xx: clean up drm_bridge_add call drm/bridge: adv7511: clean up drm_bridge_add call drm/fb-helper: remove drm_fb_helper_save_lut_atomic drm/fb-helper: keep the .gamma_store updated in drm_fb_helper_setcmap drm/fb-helper: factor out pseudo-palette drm/fb-helper: Split dpms handling into legacy and atomic paths drm/fb-helper: Stop using mode_config.mutex for internals drm/fb-helper: Push locking into restore_fbdev_mode_atomic|legacy drm/fb-helper: Push locking into pan_display_atomic|legacy drm/fb-helper: Drop locking from the vsync wait ioctl code drm/fb-helper: Push locking in fb_is_bound drm/fb-helper: Add top-level lock drm/i915: Drop FBDEV #ifdev in mst code drm/fb-helper: Push down modeset lock into FB helpers drm: Remove pending_read_domains and pending_write_domain x86/mm: Enable CR4.PCIDE on supported systems x86/mm: Add the 'nopcid' boot option to turn off PCID x86/mm: Disable PCID on 32-bit kernels x86/mm: Stop calling leave_mm() in idle code x86/mm: Rework lazy TLB mode and TLB freshness tracking x86/mm: Track the TLB's tlb_gen and update the flushing algorithm x86/mm: Give each mm TLB flush generation a unique ID iio: Add LTC2471/LTC2473 driver iio: light: rpr0521 triggered buffer drm/atomic-helper: Realign function parameters drm/i915/edp: Add a T12 panel delay quirk to fix DP AUX CH timeouts drm/i915/skl+: Scaling not supported in IF-ID Interlace mode drm/i915/skl+: Check for supported plane configuration in Interlace mode drm/i915/fbdev: Check for existence of ifbdev->vma before operations drm/i915: Fix use-after-free of context during free_contexts drm/fb-helper: Remove drm_mode_config_fb. drm/i915: Prevent kernel panic when reading/writing compliance debugfs files, v2. drm/i915: Hold RPM wakelock while initializing OA buffer drm/etnaviv: populate GEM objects on cpu_prep drm/etnaviv: reduce allocation failure message severity drm/etnaviv: don't trigger OOM killer when page allocation fails drm/bochs: switch fb_ops over to use drm_fb_helper_cfb helpers drm: qxl: constify ttm_place structures. drm: ttm: virtio-gpu: dma-buf: Constify ttm_place structures. drm/udl: dma-buf: Constify dma_buf_ops structures. drm: armada: Constify drm_prop_enum_list structures. drm: armada: constify drm_prop_enum_list structures. drm/atomic: initial support for asynchronous plane update drm/i915: Update DRIVER_DATE to 20170703 iio: adis16400: Change unsigned to unsigned int iio: pressure: st_pressure_spi: add OF capability to st_pressure_spi iio: gyro: st_gyro_spi: add OF capability to st_gyro_spi iio: magnetometer: st_magn_spi: add OF capability to st_magn_spi iio: accel: st_accel_spi: add OF capability to st_accel_spi iio: magnetometer: Only declare ACPI table when ACPI is enable iio: sca3000: Remove trailing whitespace iio:adc:ltc2497: Add support for board file based iio consumer mapping. iio: adc: stm32: make array stm32h7_adc_ckmodes_spec static iio: adc: mcp3422: Checking for error on probe iio: adc: mcp3422: Changing initial channel iio: gyro: mpu3050: Allow open drain with anything iio: light: tcs3472: add link to datasheet iio: adc: mt7622: Add compatible node for mt7622. iio: adc: mt7622: add support for suspend/resume. dt-bindings: adc: mt7622: add binding document dt-bindings: iio: accel: add LIS3L02DQ sensor device binding dt-bindings: iio: imu: st_lsm6dsx: support open drain mode iio: imu: st_lsm6dsx: support open drain mode dt-bindings: iio: pressure: Add bindings for MS5637, MS5805, MS5837 and MS8607 sensors iio: pressure: ms5637: Add OF match table dt-bindings: iio: humidity: Add bindings for HTU21 and MS8607 sensors iio: humidity: htu21: Add OF match table dt-bindings: iio: update STM32 timers clock names iio: adc: at91-sama5d2_adc: add support for suspend/resume functionality iio: accel: st_accel_spi: rename of_device_id table in st_accel_of_match iio: common: st_sensors: move st_sensors_of_i2c_probe() in common code iio: magnetometer: st_magn_core: enable multiread by default for LIS3MDL iio: light: tcs3472: fix ATIME register write iio: adc: Fix polling of INA219 conversion ready flag dt-bindings: iio: temperature: Add bindings for TSYS01 temperature sensor iio: temperature: tsys01: Add OF match table iio: adc: at91-sama5d2_adc: add hw trigger and buffer support Documentation: dt: iio: at91-sama5d2_adc: add hw trigger edge binding iio: adc: Kconfig: Append vendor name for IMX7D_ADC iio: humidity: hdc100x: add match table and device id's iio: humidity: hdc100x: document compatible HDC10xx devices dt-bindings: iio: humidity: add bindings for HDC100x sensors dt-bindings: iio: gyro: add L3GD20H sensor device binding iio: gyro: st_gyro: fix L3GD20H support iio: accel: bmc150: Add support for BOSC0200 ACPI device id drm/i915/cnl: Fix the CURSOR_COEFF_MASK used in DDI Vswing Programming drm/atomic: Drop helper include from drm_atomic.c drm: Convert atomic drivers from CRTC .disable() to .atomic_disable() drm: Add old state pointer to CRTC .enable() helper function dma-buf/sw-sync: Use an rbtree to sort fences in the timeline dma-buf/sw-sync: Fix locking around sync_timeline lists dma-buf/sw-sync: sync_pt is private and of fixed size dma-buf/sw-sync: Reduce irqsave/irqrestore from known context dma-buf/sw-sync: Prevent user overflow on timeline advance dma-buf/sw-sync: Fix the is-signaled test to handle u32 wraparound dma-buf/dma-fence: Extract __dma_fence_is_later() drm/i915/cfl: Fix Workarounds. drm/i915: Avoid undefined behaviour of "u32 >> 32" drm/i915: reintroduce VLV/CHV PFI programming power domain workaround drm/gma500: remove an unneeded NULL check locking/atomic/x86: Use 's64 *' for 'old' argument of atomic64_try_cmpxchg() locking/atomic/x86: Un-macro-ify atomic ops implementation drm/i915: Avoid keeping waitboost active for signaling threads drm/i915: Drop flushing of the object free list/worker from i915_gem_suspend drm: vmwgfx: Replace CRTC .commit() helper operation with .enable() drm: vmwgfx: Remove unneeded CRTC .prepare() helper operation drm: qxl: Replace CRTC .commit() helper operation with .enable() drm: qxl: Remove unused CRTC .dpms() helper operation drm: arcpgu: Remove CRTC .prepare() helper operation drm: arcpgu: Remove CRTC .commit() helper operation drm/vblank: Unexport drm_vblank_cleanup drm/hdlcd: remove drm_vblank_cleanup, rise of the zoombies edition drm/i915: Cancel pending execlists irq handler upon idling drm/core: Fail atomic IOCTL with no CRTC state but with signaling. IB/hfi1: Handle missing magic values in config file IB/hfi1: Resolve kernel panics by reference counting receive contexts IB/hfi1: Initialize TID lists to avoid crash on cleanup IB/qib: Replace deprecated pci functions with new API IB/hfi1: Add traces for TID operations IB/hfi1: Use a template for tid reg/unreg IB/hfi1: Remove reading platform configuration from EFI variable IB/hfi1: Create common expected receive verbs/PSM code IB/hfi1: Set proper logging levels on QSFP cable error events IB/hfi1: Fix DC 8051 host info flag array IB/hfi1,qib: Do not send QKey trap for UD qps IB/hfi1: Modify handling of physical link state by Host Driver IB/core: Allow QP state transition from reset to error IB/hfi1: Add error checking for buffer overrun in OPA aggregate IB/hfi1: Remove subtraction of uninitialized value IB/hfi1: Use QPN mask to avoid overflow IB/hfi1: Fix spelling mistake in linkdown reason IB/hfi1: Ensure dd->gi_mask can not be overflowed IB/rdmavt: Remove duplicated functions IB/hfi1: Fix up sdma_init function comment IB/hfi1: Reclassify type of messages printed for platform config logic IB/hfi1: Remove atomic SDMA_REQ_HAS_ERROR bit operation IB/hfi1: Remove atomic SDMA_REQ_SEND_DONE bit operation IB/core,rdmavt,hfi1,opa-vnic: Send OPA cap_mask3 in trap IB/hfi1: Replace deprecated pci functions with new API IB/hfi1: Name function prototype parameters for affinity module IB/hfi1: Optimize cachelines for user SDMA request structure IB/hfi1: Don't remove RB entry when not needed. IB/rdmavt: Compress adjacent SGEs in rvt_lkey_ok() IB/hfi1: Setup common IB fields in hfi1_packet struct IB/hfi1: Separate input/output header tracing IB/hfi1: Add functions to parse BTH/IB headers IB/hfi1: Remove unused mk_qpn function IB/hfi1: Remove unnecessary initialization from tx request drm/i915: Fix an error checking test drm/i915/selftests: Fix mutex imbalance for igt_render_engine_reset_fallback drm/i915: Disable MSI for all pre-gen5 drm/atomic-helper: Simplify commit tracking locking drm/i915/dp: Remove -1/+1 from t11_t12 for Gen9_LP/CNP case drm/i915/dp: Fix the t11_t12 panel power cycle delay from VBT read drm/vmwgfx: Drop drm_vblank_cleanup drm/udl: Drop drm_vblank_cleanup drm/rockchip: Drop drm_vblank_cleanup drm/nouveau: Drop drm_vblank_cleanup drm/mtk: Drop drm_vblank_cleanup drm/i915: Drop drm_vblank_cleanup drm/kirin: Drop drm_vblank_cleanup drm/hibmc: Drop drm_vblank_cleanup drm/i915: Break modeset deadlocks on reset drm/vgem: Pin our pages for dmabuf exports drm: arcpgu: arc_pgu_crtc_mode_valid() can be static drm/i915: Add option to support dynamic backlight via DPCD drm/i915: Add heuristic to determine better way to adjust brightness drm/i915: Set PWM divider to match desired frequency in vbt drm/mxsfb: Drop drm_vblank_cleanup drm/amd|radeon: Drop drm_vblank_cleanup drm/qxl: move extern variable declaration header file drm/qxl: declare a bunch of functions as static drm/qxl: fix __user annotations drm/rockchip: dw_hdmi: introduce the pclk for grf drm/rockchip: dw_hdmi: introduce the VPLL clock setting drm/rockchip: dw_hdmi: add RK3399 HDMI support drm: atmel-hlcdc: add support for 8-bit color lookup table mode drm: atmel-hlcdc: add missing .set_property helper to the crtc drm/vc4: Remove dead vc4_event_pending(). drm/vc4: Use the atomic state's commit workqueue. drm/vc4: Wait for fences interruptibly in blocking mode. drm/vc4: Hook up plane prepare_fb to lookup dma-buf reservations. drm/vc4: Allow vblank_disable_immediate on non-fw-kms. (v2) drm/i915: Always use 9 bits of the LPC bridge device ID for PCH detection drm/i915: Clean up some expressions drm/i915: Document that PPT==CPT and WPT==LPT drm/i915: s/Couar/Cougar/ drm/i915: Use HAS_PCH_CPT() everywhere drm/i915: pass the vma to insert_entries drm: Add drm_atomic_helper_wait_for_flip_done() drm/i915: Clear execbuf's vma backpointer upon release drm: arcpgu: Use crtc->mode_valid() callback drm/zte: Drop drm_vblank_cleanup drm/shmob: Drop drm_vblank_cleanup drm/vc4: Send a VBLANK event when disabling a CRTC drm: Check for drm_device->dev in drm_set_busid drm/i915: Cancel pending execlist tasklet upon wedging drm: sti: sti_hqvdp: undo preparation of a clock source. drm/rockchip: Remove unnecessary NULL check drm/atmel-hlcdc: Remove unnecessary NULL check drm/i915: Hold struct_mutex for per-file stats in debugfs/i915_gem_object drm/i915: Assert the vma's active tracking is clear before free drm/i915: Retire the VMA's fence tracker before unbinding drm/i915: select CRC32 drm: armada: make of_device_ids const. drm/i915: Pass the right flags to i915_vma_move_to_active() drm/i915: Enable Engine reset and recovery support drm/i915/selftests: reset engine self tests drm/i915: Export per-engine reset count info to debugfs drm/i915: Add engine reset count to error state drm/i915: Add support for per engine reset recovery drm/i915: Modify error handler for per engine hang recovery drm/i915: Update i915.reset to handle engine resets drm/i915: Look for active requests earlier in the reset path drm/i915: Wait for concurrent global resets to complete drm/i915: Enable rcu-only context lookups drm/i915: Allow contexts to be unreferenced locklessly drm/i915: Group all the global context information together drm: Convert CMA fbdev console suspend helpers to use bool drm/i915: Do not re-calculate num_rings locally drm/i915: Simplify intel_engines_init drm: sti: sti_hqvdp: make of_device_ids const. drm: sti: sti_dvo: make of_device_ids const. drm: More links for gamma support helpers drm: vc4: Use crtc->mode_valid() and encoder->mode_valid() callbacks drm/doc: Improve ioctl/fops docs a bit more drm/pci: Deprecate drm_pci_init/exit completely drm: Remove drm_driver->set_busid hook drm/udl: Remove dummy busid callback drm/vblank: Consistent drm_crtc_ prefix drm/vblank: _ioctl posfix for ioctl handler drm/doc: vblank cleanup drm/doc: Drop empty include for drm_color_mgmt.h drm/tegra: Drop drm_vblank_cleanup drm/sti: Drop drm_vblank_cleanup drm/i915/cnl: Fix RMW on ddi vswing sequence. drm/i915: Make intel_digital_port_connected() work for any port ARM: dts: dra7: Add "max-frequency" property to MMC dt nodes ARM: dts: dra7-evm: Correct the vmmc-supply for mmc2 ARM: dts: am57xx-beagle-x15-revb1: Fix supply name used for MMC1 IO lines ARM: dts: dra72-evm-revc: Add vqmmc supply to mmc1 ARM: dts: dra72-evm: Add vqmmc supply to mmc1 ARM: dts: dra72-evm-common: Correct vmmc-supply for mmc2 Conflicts: Documentation/devicetree/bindings/pinctrl/qcom,pmic-gpio.txt arch/arm64/include/asm/arch_gicv3.h arch/arm64/include/asm/traps.h arch/arm64/mm/cache.S arch/arm64/mm/dma-mapping.c drivers/android/Makefile drivers/android/binder.c drivers/android/binder_alloc.c drivers/android/binder_alloc.h drivers/base/dd.c drivers/base/firmware_class.c drivers/firmware/efi/libstub/Makefile drivers/iommu/Kconfig drivers/iommu/arm-smmu.c drivers/iommu/iommu.c drivers/irqchip/Kconfig drivers/irqchip/irq-gic-v3.c drivers/md/dm-linear.c drivers/pinctrl/qcom/pinctrl-spmi-gpio.c drivers/rpmsg/Kconfig drivers/rpmsg/qcom_glink_native.c drivers/scsi/ufs/ufshcd.c drivers/soc/qcom/Kconfig drivers/soc/qcom/Makefile drivers/staging/android/ion/ion.h drivers/staging/android/ion/ion_cma_heap.c drivers/staging/android/ion/ion_system_heap.c drivers/usb/dwc3/dwc3-of-simple.c drivers/usb/gadget/function/f_midi.c fs/namespace.c fs/proc/task_mmu.c fs/super.c include/linux/dcache.h include/linux/mmc/core.h include/linux/mmc/host.h include/uapi/linux/serial_core.h kernel/cgroup/cgroup.c kernel/power/process.c kernel/power/suspend.c net/bridge/br_device.c Change-Id: Ic5d030c15fb0993f07d462a381445268b2c1aa5c Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
7 years ago
tmp = __fw_lookup_buf(fw_name);
if (tmp) {
kref_get(&tmp->ref);
spin_unlock(&fwc->lock);
*buf = tmp;
pr_debug("batched request - sharing the same struct firmware_buf and lookup for multiple requests\n");
return 1;
}
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
tmp = __allocate_fw_buf(fw_name, fwc, dbuf, size);
if (tmp && !(opt_flags & FW_OPT_NOCACHE))
list_add(&tmp->list, &fwc->head);
spin_unlock(&fwc->lock);
*buf = tmp;
return tmp ? 0 : -ENOMEM;
}
static void __fw_free_buf(struct kref *ref)
__releases(&fwc->lock)
{
struct firmware_buf *buf = to_fwbuf(ref);
struct firmware_cache *fwc = buf->fwc;
pr_debug("%s: fw-%s buf=%p data=%p size=%u\n",
__func__, buf->fw_id, buf, buf->data,
(unsigned int)buf->size);
list_del(&buf->list);
#ifdef CONFIG_FW_LOADER_USER_HELPER
list_del(&buf->pending_list);
#endif
spin_unlock(&fwc->lock);
#ifdef CONFIG_FW_LOADER_USER_HELPER
if (buf->is_paged_buf) {
int i;
vunmap(buf->data);
for (i = 0; i < buf->nr_pages; i++)
__free_page(buf->pages[i]);
vfree(buf->pages);
} else
#endif
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
if (!buf->allocated_size)
vfree(buf->data);
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
kfree_const(buf->fw_id);
kfree(buf);
}
static void fw_free_buf(struct firmware_buf *buf)
{
struct firmware_cache *fwc = buf->fwc;
spin_lock(&fwc->lock);
if (!kref_put(&buf->ref, __fw_free_buf))
spin_unlock(&fwc->lock);
}
/* direct firmware loading support */
static char fw_path_para[256];
static const char * const fw_path[] = {
fw_path_para,
"/lib/firmware/updates/" UTS_RELEASE,
"/lib/firmware/updates",
"/lib/firmware/" UTS_RELEASE,
"/lib/firmware"
};
/*
* Typical usage is that passing 'firmware_class.path=$CUSTOMIZED_PATH'
* from kernel command line because firmware_class is generally built in
* kernel instead of module.
*/
module_param_string(path, fw_path_para, sizeof(fw_path_para), 0644);
MODULE_PARM_DESC(path, "customized firmware image search path with a higher priority than default path");
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
static int
fw_get_filesystem_firmware(struct device *device, struct firmware_buf *buf)
{
loff_t size;
int i, len;
int rc = -ENOENT;
char *path;
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
enum kernel_read_file_id id = READING_FIRMWARE;
size_t msize = INT_MAX;
/* Already populated data member means we're loading into a buffer */
if (buf->data) {
id = READING_FIRMWARE_PREALLOC_BUFFER;
msize = buf->allocated_size;
}
path = __getname();
if (!path)
return -ENOMEM;
for (i = 0; i < ARRAY_SIZE(fw_path); i++) {
/* skip the unset customized path */
if (!fw_path[i][0])
continue;
len = snprintf(path, PATH_MAX, "%s/%s",
fw_path[i], buf->fw_id);
if (len >= PATH_MAX) {
rc = -ENAMETOOLONG;
break;
}
buf->size = 0;
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
rc = kernel_read_file_from_path(path, &buf->data, &size, msize,
id);
if (rc) {
if (rc == -ENOENT)
dev_dbg(device, "loading %s failed with error %d\n",
path, rc);
else
dev_warn(device, "loading %s failed with error %d\n",
path, rc);
continue;
}
dev_dbg(device, "direct-loading %s\n", buf->fw_id);
buf->size = size;
fw_state_done(&buf->fw_st);
break;
}
__putname(path);
return rc;
}
/* firmware holds the ownership of pages */
static void firmware_free_data(const struct firmware *fw)
{
/* Loaded directly? */
if (!fw->priv) {
vfree(fw->data);
return;
}
fw_free_buf(fw->priv);
}
/* store the pages buffer info firmware from buf */
static void fw_set_page_data(struct firmware_buf *buf, struct firmware *fw)
{
fw->priv = buf;
#ifdef CONFIG_FW_LOADER_USER_HELPER
fw->pages = buf->pages;
#endif
fw->size = buf->size;
fw->data = buf->data;
pr_debug("%s: fw-%s buf=%p data=%p size=%u\n",
__func__, buf->fw_id, buf, buf->data,
(unsigned int)buf->size);
}
#ifdef CONFIG_PM_SLEEP
static void fw_name_devm_release(struct device *dev, void *res)
{
struct fw_name_devm *fwn = res;
if (fwn->magic == (unsigned long)&fw_cache)
pr_debug("%s: fw_name-%s devm-%p released\n",
__func__, fwn->name, res);
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
kfree_const(fwn->name);
}
static int fw_devm_match(struct device *dev, void *res,
void *match_data)
{
struct fw_name_devm *fwn = res;
return (fwn->magic == (unsigned long)&fw_cache) &&
!strcmp(fwn->name, match_data);
}
static struct fw_name_devm *fw_find_devm_name(struct device *dev,
const char *name)
{
struct fw_name_devm *fwn;
fwn = devres_find(dev, fw_name_devm_release,
fw_devm_match, (void *)name);
return fwn;
}
/* add firmware name into devres list */
static int fw_add_devm_name(struct device *dev, const char *name)
{
struct fw_name_devm *fwn;
fwn = fw_find_devm_name(dev, name);
if (fwn)
return 1;
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
fwn = devres_alloc(fw_name_devm_release, sizeof(struct fw_name_devm),
GFP_KERNEL);
if (!fwn)
return -ENOMEM;
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
fwn->name = kstrdup_const(name, GFP_KERNEL);
if (!fwn->name) {
devres_free(fwn);
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
return -ENOMEM;
}
fwn->magic = (unsigned long)&fw_cache;
devres_add(dev, fwn);
return 0;
}
#else
static int fw_add_devm_name(struct device *dev, const char *name)
{
return 0;
}
#endif
static int assign_firmware_buf(struct firmware *fw, struct device *device,
unsigned int opt_flags)
{
struct firmware_buf *buf = fw->priv;
mutex_lock(&fw_lock);
if (!buf->size || fw_state_is_aborted(&buf->fw_st)) {
mutex_unlock(&fw_lock);
return -ENOENT;
}
/*
* add firmware name into devres list so that we can auto cache
* and uncache firmware for device.
*
* device may has been deleted already, but the problem
* should be fixed in devres or driver core.
*/
/* don't cache firmware handled without uevent */
if (device && (opt_flags & FW_OPT_UEVENT) &&
!(opt_flags & FW_OPT_NOCACHE))
fw_add_devm_name(device, buf->fw_id);
/*
* After caching firmware image is started, let it piggyback
* on request firmware.
*/
if (!(opt_flags & FW_OPT_NOCACHE) &&
buf->fwc->state == FW_LOADER_START_CACHE) {
if (fw_cache_piggyback_on_request(buf->fw_id))
kref_get(&buf->ref);
}
/* pass the pages buffer to driver at the last minute */
fw_set_page_data(buf, fw);
mutex_unlock(&fw_lock);
return 0;
}
/*
* user-mode helper code
*/
#ifdef CONFIG_FW_LOADER_USER_HELPER
struct firmware_priv {
bool nowait;
struct device dev;
struct firmware_buf *buf;
struct firmware *fw;
};
static struct firmware_priv *to_firmware_priv(struct device *dev)
{
return container_of(dev, struct firmware_priv, dev);
}
static void __fw_load_abort(struct firmware_buf *buf)
{
/*
* There is a small window in which user can write to 'loading'
* between loading done and disappearance of 'loading'
*/
if (fw_state_is_done(&buf->fw_st))
return;
list_del_init(&buf->pending_list);
fw_state_aborted(&buf->fw_st);
}
static void fw_load_abort(struct firmware_priv *fw_priv)
{
struct firmware_buf *buf = fw_priv->buf;
__fw_load_abort(buf);
}
static LIST_HEAD(pending_fw_head);
static void kill_pending_fw_fallback_reqs(bool only_kill_custom)
{
struct firmware_buf *buf;
struct firmware_buf *next;
mutex_lock(&fw_lock);
list_for_each_entry_safe(buf, next, &pending_fw_head, pending_list) {
if (!buf->need_uevent || !only_kill_custom)
__fw_load_abort(buf);
}
mutex_unlock(&fw_lock);
}
static ssize_t timeout_show(struct class *class, struct class_attribute *attr,
char *buf)
{
return sprintf(buf, "%d\n", loading_timeout);
}
/**
* firmware_timeout_store - set number of seconds to wait for firmware
* @class: device class pointer
* @attr: device attribute pointer
* @buf: buffer to scan for timeout value
* @count: number of bytes in @buf
*
* Sets the number of seconds to wait for the firmware. Once
* this expires an error will be returned to the driver and no
* firmware will be provided.
*
* Note: zero means 'wait forever'.
**/
static ssize_t timeout_store(struct class *class, struct class_attribute *attr,
const char *buf, size_t count)
{
loading_timeout = simple_strtol(buf, NULL, 10);
if (loading_timeout < 0)
loading_timeout = 0;
return count;
}
static CLASS_ATTR_RW(timeout);
static struct attribute *firmware_class_attrs[] = {
&class_attr_timeout.attr,
NULL,
};
ATTRIBUTE_GROUPS(firmware_class);
static void fw_dev_release(struct device *dev)
{
struct firmware_priv *fw_priv = to_firmware_priv(dev);
kfree(fw_priv);
}
static int do_firmware_uevent(struct firmware_priv *fw_priv, struct kobj_uevent_env *env)
{
if (add_uevent_var(env, "FIRMWARE=%s", fw_priv->buf->fw_id))
return -ENOMEM;
if (add_uevent_var(env, "TIMEOUT=%i", loading_timeout))
return -ENOMEM;
if (add_uevent_var(env, "ASYNC=%d", fw_priv->nowait))
return -ENOMEM;
return 0;
}
static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env)
{
struct firmware_priv *fw_priv = to_firmware_priv(dev);
int err = 0;
mutex_lock(&fw_lock);
if (fw_priv->buf)
err = do_firmware_uevent(fw_priv, env);
mutex_unlock(&fw_lock);
return err;
}
static struct class firmware_class = {
.name = "firmware",
.class_groups = firmware_class_groups,
.dev_uevent = firmware_uevent,
.dev_release = fw_dev_release,
};
static ssize_t firmware_loading_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct firmware_priv *fw_priv = to_firmware_priv(dev);
int loading = 0;
mutex_lock(&fw_lock);
if (fw_priv->buf)
loading = fw_state_is_loading(&fw_priv->buf->fw_st);
mutex_unlock(&fw_lock);
return sprintf(buf, "%d\n", loading);
}
/* Some architectures don't have PAGE_KERNEL_RO */
#ifndef PAGE_KERNEL_RO
#define PAGE_KERNEL_RO PAGE_KERNEL
#endif
/* one pages buffer should be mapped/unmapped only once */
static int fw_map_pages_buf(struct firmware_buf *buf)
{
if (!buf->is_paged_buf)
return 0;
vunmap(buf->data);
buf->data = vmap(buf->pages, buf->nr_pages, 0, PAGE_KERNEL_RO);
if (!buf->data)
return -ENOMEM;
return 0;
}
/**
* firmware_loading_store - set value in the 'loading' control file
* @dev: device pointer
* @attr: device attribute pointer
* @buf: buffer to scan for loading control value
* @count: number of bytes in @buf
*
* The relevant values are:
*
* 1: Start a load, discarding any previous partial load.
* 0: Conclude the load and hand the data to the driver code.
* -1: Conclude the load with an error and discard any written data.
**/
static ssize_t firmware_loading_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
struct firmware_priv *fw_priv = to_firmware_priv(dev);
struct firmware_buf *fw_buf;
ssize_t written = count;
int loading = simple_strtol(buf, NULL, 10);
int i;
mutex_lock(&fw_lock);
fw_buf = fw_priv->buf;
firmware: fix NULL pointer dereference in __fw_load_abort() Since commit 5d47ec02c37ea6 ("firmware: Correct handling of fw_state_wait() return value") fw_load_abort() could be called twice and lead us to a kernel crash. This happens only when the firmware fallback mechanism (regular or custom) is used. The fallback mechanism exposes a sysfs interface for userspace to upload a file and notify the kernel when the file is loaded and ready, or to cancel an upload by echo'ing -1 into on the loading file: echo -n "-1" > /sys/$DEVPATH/loading This will call fw_load_abort(). Some distributions actually have a udev rule in place to *always* immediately cancel all firmware fallback mechanism requests (Debian), they have: $ cat /lib/udev/rules.d/50-firmware.rules # stub for immediately telling the kernel that userspace firmware loading # failed; necessary to avoid long timeouts with CONFIG_FW_LOADER_USER_HELPER=y SUBSYSTEM=="firmware", ACTION=="add", ATTR{loading}="-1 Distributions with this udev rule would run into this crash only if the fallback mechanism is used. Since most distributions disable by default using the fallback mechanism (CONFIG_FW_LOADER_USER_HELPER_FALLBACK), this would typicaly mean only 2 drivers which *require* the fallback mechanism could typically incur a crash: drivers/firmware/dell_rbu.c and the drivers/leds/leds-lp55xx-common.c driver. Distributions enabling CONFIG_FW_LOADER_USER_HELPER_FALLBACK by default are obviously more exposed to this crash. The crash happens because after commit 5b029624948d ("firmware: do not use fw_lock for fw_state protection") and subsequent fix commit 5d47ec02c37ea6 ("firmware: Correct handling of fw_state_wait() return value") a race can happen between this cancelation and the firmware fw_state_wait_timeout() being woken up after a state change with which fw_load_abort() as that calls swake_up(). Upon error fw_state_wait_timeout() will also again call fw_load_abort() and trigger a null reference. At first glance we could just fix this with a !buf check on fw_load_abort() before accessing buf->fw_st, however there is a logical issue in having a state machine used for the fallback mechanism and preventing access from it once we abort as its inside the buf (buf->fw_st). The firmware_class.c code is setting the buf to NULL to annotate an abort has occurred. Replace this mechanism by simply using the state check instead. All the other code in place already uses similar checks for aborting as well so no further changes are needed. An oops can be reproduced with the new fw_fallback.sh fallback mechanism cancellation test. Either cancelling the fallback mechanism or the custom fallback mechanism triggers a crash. mcgrof@piggy ~/linux-next/tools/testing/selftests/firmware (git::20170111-fw-fixes)$ sudo ./fw_fallback.sh ./fw_fallback.sh: timeout works ./fw_fallback.sh: firmware comparison works ./fw_fallback.sh: fallback mechanism works [ this then sits here when it is trying the cancellation test ] Kernel log: test_firmware: loading 'nope-test-firmware.bin' misc test_firmware: Direct firmware load for nope-test-firmware.bin failed with error -2 misc test_firmware: Falling back to user helper BUG: unable to handle kernel NULL pointer dereference at 0000000000000038 IP: _request_firmware+0xa27/0xad0 PGD 0 Oops: 0000 [#1] SMP Modules linked in: test_firmware(E) ... etc ... CPU: 1 PID: 1396 Comm: fw_fallback.sh Tainted: G W E 4.10.0-rc3-next-20170111+ #30 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.1-0-g8891697-prebuilt.qemu-project.org 04/01/2014 task: ffff9740b27f4340 task.stack: ffffbb15c0bc8000 RIP: 0010:_request_firmware+0xa27/0xad0 RSP: 0018:ffffbb15c0bcbd10 EFLAGS: 00010246 RAX: 00000000fffffffe RBX: ffff9740afe5aa80 RCX: 0000000000000000 RDX: ffff9740b27f4340 RSI: 0000000000000283 RDI: 0000000000000000 RBP: ffffbb15c0bcbd90 R08: ffffbb15c0bcbcd8 R09: 0000000000000000 R10: 0000000894a0d4b1 R11: 000000000000008c R12: ffffffffc0312480 R13: 0000000000000005 R14: ffff9740b1c32400 R15: 00000000000003e8 FS: 00007f8604422700(0000) GS:ffff9740bfc80000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000038 CR3: 000000012164c000 CR4: 00000000000006e0 Call Trace: request_firmware+0x37/0x50 trigger_request_store+0x79/0xd0 [test_firmware] dev_attr_store+0x18/0x30 sysfs_kf_write+0x37/0x40 kernfs_fop_write+0x110/0x1a0 __vfs_write+0x37/0x160 ? _cond_resched+0x1a/0x50 vfs_write+0xb5/0x1a0 SyS_write+0x55/0xc0 ? trace_do_page_fault+0x37/0xd0 entry_SYSCALL_64_fastpath+0x1e/0xad RIP: 0033:0x7f8603f49620 RSP: 002b:00007fff6287b788 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 000055c307b110a0 RCX: 00007f8603f49620 RDX: 0000000000000016 RSI: 000055c3084d8a90 RDI: 0000000000000001 RBP: 0000000000000016 R08: 000000000000c0ff R09: 000055c3084d6336 R10: 000055c307b108b0 R11: 0000000000000246 R12: 000055c307b13c80 R13: 000055c3084d6320 R14: 0000000000000000 R15: 00007fff6287b950 Code: 9f 64 84 e8 9c 61 fe ff b8 f4 ff ff ff e9 6b f9 ff ff 48 c7 c7 40 6b 8d 84 89 45 a8 e8 43 84 18 00 49 8b be 00 03 00 00 8b 45 a8 <83> 7f 38 02 74 08 e8 6e ec ff ff 8b 45 a8 49 c7 86 00 03 00 00 RIP: _request_firmware+0xa27/0xad0 RSP: ffffbb15c0bcbd10 CR2: 0000000000000038 ---[ end trace 6d94ac339c133e6f ]--- Fixes: 5d47ec02c37e ("firmware: Correct handling of fw_state_wait() return value") Reported-and-Tested-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reported-and-Tested-by: Patrick Bruenn <p.bruenn@beckhoff.com> Reported-by: Chris Wilson <chris@chris-wilson.co.uk> CC: <stable@vger.kernel.org> [3.10+] Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
if (fw_state_is_aborted(&fw_buf->fw_st))
goto out;
switch (loading) {
case 1:
/* discarding any previous partial load */
if (!fw_state_is_done(&fw_buf->fw_st)) {
for (i = 0; i < fw_buf->nr_pages; i++)
__free_page(fw_buf->pages[i]);
vfree(fw_buf->pages);
fw_buf->pages = NULL;
fw_buf->page_array_size = 0;
fw_buf->nr_pages = 0;
fw_state_start(&fw_buf->fw_st);
}
break;
case 0:
if (fw_state_is_loading(&fw_buf->fw_st)) {
int rc;
/*
* Several loading requests may be pending on
* one same firmware buf, so let all requests
* see the mapped 'buf->data' once the loading
* is completed.
* */
rc = fw_map_pages_buf(fw_buf);
if (rc)
firmware: give a protection when map page failed so, we need give a protection and return a error value. [ 7341.474236] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work! [ 7341.494464] atomisp-css2400b0_v21 0000:00:03.0: unhandled css stored event: 0x20 [ 7341.503627] vmap allocation for size 208896 failed: use vmalloc=<size> to increase size.<=================== map failed [ 7341.507135] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work! [ 7341.503848] BUG: unable to handle kernel NULL pointer dereference at (null) [ 7341.520394] IP: [<c18f5c1b>] sst_load_all_modules_elf+0x1bb/0x850 [ 7341.527216] *pdpt = 0000000030dfe001 *pde = 0000000000000000 [ 7341.533640] Oops: 0000 [#1] PREEMPT SMP [ 7341.540360] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work! [ 7341.538037] Modules linked in: atomisp_css2400b0_v21 lm3554 ov2722 imx1x5 atmel_mxt_ts vxd392 videobuf_vmalloc videobuf_core lm_dump(O) bcm_bt_lpm hdmi_audio bcm4334x(O) [ 7341.563531] CPU: 1 PID: 525 Comm: mediaserver Tainted: G W O 3.10.20-262518-ga83c053 #1 [ 7341.573253] task: f0994ec0 ti: f09f0000 task.ti: f09f0000 [ 7341.579284] EIP: 0060:[<c18f5c1b>] EFLAGS: 00010246 CPU: 1 [ 7341.585415] EIP is at sst_load_all_modules_elf+0x1bb/0x850 [ 7341.591541] EAX: 00000000 EBX: e3595ba0 ECX: 00000000 EDX: 00031c1c [ 7341.598541] ESI: e04a0000 EDI: 00000000 EBP: f09f1d80 ESP: f09f1cf4 [ 7341.605542] DS: 007b ES: 007b FS: 00d8 GS: 003b SS: 0068 [ 7341.611573] CR0: 80050033 CR2: 00000000 CR3: 30db4000 CR4: 001007f0 [ 7341.618573] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 [ 7341.625575] DR6: ffff0ff0 DR7: 00000400 [ 7341.629856] Stack: [ 7341.632097] f09f1d57 00000019 c1d656d7 c1d658d3 c1d56409 00000f28 c1d64af9 18000103 [ 7341.640766] 01000001 00080000 c1f910a0 f326f4c8 00000034 f326f520 00000002 e04a02bc [ 7341.649465] 00000001 f326e014 c1f910b0 e04a0000 c0080100 00031c1c e3595ba0 c0080100 [ 7341.658149] Call Trace: [ 7341.660888] [<c18f6308>] sst_post_download_byt+0x58/0xb0 [ 7341.666925] [<c18f4fbc>] sst_load_fw+0xdc/0x510 [ 7341.672086] [<c1a7b2c0>] ? __mutex_lock_slowpath+0x250/0x370 [ 7341.678507] [<c1a80e05>] ? sub_preempt_count+0x55/0xe0 [ 7341.684346] [<c18f1294>] sst_download_fw+0x14/0x60 [ 7341.689796] [<c1a7b403>] ? mutex_lock+0x23/0x30 [ 7341.694954] [<c18f191c>] intel_sst_check_device+0x6c/0x120 [ 7341.701181] [<c18f1d08>] sst_set_generic_params+0x1b8/0x4a0 [ 7341.707504] [<c1a80e05>] ? sub_preempt_count+0x55/0xe0 [ 7341.713341] [<c1a80e05>] ? sub_preempt_count+0x55/0xe0 [ 7341.719178] [<c1a7b2c0>] ? __mutex_lock_slowpath+0x250/0x370 [ 7341.725600] [<c1320d84>] ? __kmalloc_track_caller+0xe4/0x1d0 [ 7341.732022] [<c18e35f5>] sst_set_mixer_param+0x25/0x40 [ 7341.737859] [<c18e3853>] lpe_mixer_ihf_set+0xb3/0x160 [ 7341.743602] [<c1855b99>] snd_ctl_ioctl+0xa89/0xb40 [ 7341.749052] [<c1331e65>] ? path_openat+0xa5/0x3d0 [ 7341.754409] [<c1447857>] ? avc_has_perm_flags+0xc7/0x170 [ 7341.760441] [<c1855110>] ? snd_ctl_elem_add_user+0x540/0x540 [ 7341.766862] [<c1334047>] do_vfs_ioctl+0x77/0x5e0 [ 7341.772117] [<c144842a>] ? inode_has_perm.isra.42.constprop.79+0x3a/0x50 [ 7341.779705] [<c14490a0>] ? file_has_perm+0xa0/0xb0 [ 7341.785155] [<c14493b8>] ? selinux_file_ioctl+0x48/0xe0 [ 7341.791090] [<c1334628>] SyS_ioctl+0x78/0x90 [ 7341.795958] [<c1a7dde8>] syscall_call+0x7/0xb [ 7341.800925] [<c1a70000>] ? mm_fault_error+0x13c/0x198 Signed-off-by: zhang jun <jun.zhang@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years ago
dev_err(dev, "%s: map pages failed\n",
__func__);
else
rc = security_kernel_post_read_file(NULL,
fw_buf->data, fw_buf->size,
READING_FIRMWARE);
/*
* Same logic as fw_load_abort, only the DONE bit
* is ignored and we set ABORT only on failure.
*/
list_del_init(&fw_buf->pending_list);
if (rc) {
fw_state_aborted(&fw_buf->fw_st);
written = rc;
} else {
fw_state_done(&fw_buf->fw_st);
}
break;
}
/* fallthrough */
default:
dev_err(dev, "%s: unexpected value (%d)\n", __func__, loading);
/* fallthrough */
case -1:
fw_load_abort(fw_priv);
break;
}
out:
mutex_unlock(&fw_lock);
return written;
}
static DEVICE_ATTR(loading, 0644, firmware_loading_show, firmware_loading_store);
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
static void firmware_rw_buf(struct firmware_buf *buf, char *buffer,
loff_t offset, size_t count, bool read)
{
if (read)
memcpy(buffer, buf->data + offset, count);
else
memcpy(buf->data + offset, buffer, count);
}
firmware: consolidate kmap/read/write logic Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This design creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. This patch sets adds support to the request firmware API to load the firmware directly into a pre-allocated buffer, skipping the intermediate copying step and alleviating memory pressure during firmware loading. The drawback is that we can't use the firmware caching feature because the memory for the firmware cache is not managed by the firmware layer. This patch (of 3): We use similar structured code to read and write the kmapped firmware pages. The only difference is read copies from the kmap region and write copies to it. Consolidate this into one function to reduce duplication. Link: http://lkml.kernel.org/r/20160607164741.31849-2-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
static void firmware_rw(struct firmware_buf *buf, char *buffer,
loff_t offset, size_t count, bool read)
{
while (count) {
void *page_data;
int page_nr = offset >> PAGE_SHIFT;
int page_ofs = offset & (PAGE_SIZE-1);
int page_cnt = min_t(size_t, PAGE_SIZE - page_ofs, count);
page_data = kmap(buf->pages[page_nr]);
if (read)
memcpy(buffer, page_data + page_ofs, page_cnt);
else
memcpy(page_data + page_ofs, buffer, page_cnt);
kunmap(buf->pages[page_nr]);
buffer += page_cnt;
offset += page_cnt;
count -= page_cnt;
}
}
static ssize_t firmware_data_read(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
char *buffer, loff_t offset, size_t count)
{
struct device *dev = kobj_to_dev(kobj);
struct firmware_priv *fw_priv = to_firmware_priv(dev);
struct firmware_buf *buf;
ssize_t ret_count;
mutex_lock(&fw_lock);
buf = fw_priv->buf;
if (!buf || fw_state_is_done(&buf->fw_st)) {
ret_count = -ENODEV;
goto out;
}
if (offset > buf->size) {
ret_count = 0;
goto out;
}
if (count > buf->size - offset)
count = buf->size - offset;
ret_count = count;
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
if (buf->data)
firmware_rw_buf(buf, buffer, offset, count, true);
else
firmware_rw(buf, buffer, offset, count, true);
out:
mutex_unlock(&fw_lock);
return ret_count;
}
static int fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size)
{
struct firmware_buf *buf = fw_priv->buf;
int pages_needed = PAGE_ALIGN(min_size) >> PAGE_SHIFT;
/* If the array of pages is too small, grow it... */
if (buf->page_array_size < pages_needed) {
int new_array_size = max(pages_needed,
buf->page_array_size * 2);
struct page **new_pages;
new_pages = vmalloc(new_array_size * sizeof(void *));
if (!new_pages) {
fw_load_abort(fw_priv);
return -ENOMEM;
}
memcpy(new_pages, buf->pages,
buf->page_array_size * sizeof(void *));
memset(&new_pages[buf->page_array_size], 0, sizeof(void *) *
(new_array_size - buf->page_array_size));
vfree(buf->pages);
buf->pages = new_pages;
buf->page_array_size = new_array_size;
}
while (buf->nr_pages < pages_needed) {
buf->pages[buf->nr_pages] =
alloc_page(GFP_KERNEL | __GFP_HIGHMEM);
if (!buf->pages[buf->nr_pages]) {
fw_load_abort(fw_priv);
return -ENOMEM;
}
buf->nr_pages++;
}
return 0;
}
/**
* firmware_data_write - write method for firmware
* @filp: open sysfs file
* @kobj: kobject for the device
* @bin_attr: bin_attr structure
* @buffer: buffer being written
* @offset: buffer offset for write in total data store area
* @count: buffer size
*
* Data written to the 'data' attribute will be later handed to
* the driver as a firmware image.
**/
static ssize_t firmware_data_write(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
char *buffer, loff_t offset, size_t count)
{
struct device *dev = kobj_to_dev(kobj);
struct firmware_priv *fw_priv = to_firmware_priv(dev);
struct firmware_buf *buf;
ssize_t retval;
if (!capable(CAP_SYS_RAWIO))
return -EPERM;
mutex_lock(&fw_lock);
buf = fw_priv->buf;
if (!buf || fw_state_is_done(&buf->fw_st)) {
retval = -ENODEV;
goto out;
}
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
if (buf->data) {
if (offset + count > buf->allocated_size) {
retval = -ENOMEM;
goto out;
}
firmware_rw_buf(buf, buffer, offset, count, false);
retval = count;
} else {
retval = fw_realloc_buffer(fw_priv, offset + count);
if (retval)
goto out;
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
retval = count;
firmware_rw(buf, buffer, offset, count, false);
}
firmware: consolidate kmap/read/write logic Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This design creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. This patch sets adds support to the request firmware API to load the firmware directly into a pre-allocated buffer, skipping the intermediate copying step and alleviating memory pressure during firmware loading. The drawback is that we can't use the firmware caching feature because the memory for the firmware cache is not managed by the firmware layer. This patch (of 3): We use similar structured code to read and write the kmapped firmware pages. The only difference is read copies from the kmap region and write copies to it. Consolidate this into one function to reduce duplication. Link: http://lkml.kernel.org/r/20160607164741.31849-2-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
buf->size = max_t(size_t, offset + count, buf->size);
out:
mutex_unlock(&fw_lock);
return retval;
}
static struct bin_attribute firmware_attr_data = {
.attr = { .name = "data", .mode = 0644 },
.size = 0,
.read = firmware_data_read,
.write = firmware_data_write,
};
static struct attribute *fw_dev_attrs[] = {
&dev_attr_loading.attr,
NULL
};
static struct bin_attribute *fw_dev_bin_attrs[] = {
&firmware_attr_data,
NULL
};
static const struct attribute_group fw_dev_attr_group = {
.attrs = fw_dev_attrs,
.bin_attrs = fw_dev_bin_attrs,
};
static const struct attribute_group *fw_dev_attr_groups[] = {
&fw_dev_attr_group,
NULL
};
static struct firmware_priv *
fw_create_instance(struct firmware *firmware, const char *fw_name,
struct device *device, unsigned int opt_flags)
{
struct firmware_priv *fw_priv;
struct device *f_dev;
fw_priv = kzalloc(sizeof(*fw_priv), GFP_KERNEL);
if (!fw_priv) {
fw_priv = ERR_PTR(-ENOMEM);
goto exit;
}
fw_priv->nowait = !!(opt_flags & FW_OPT_NOWAIT);
fw_priv->fw = firmware;
f_dev = &fw_priv->dev;
device_initialize(f_dev);
dev_set_name(f_dev, "%s", fw_name);
f_dev->parent = device;
f_dev->class = &firmware_class;
f_dev->groups = fw_dev_attr_groups;
exit:
return fw_priv;
}
/* load a firmware via user helper */
static int _request_firmware_load(struct firmware_priv *fw_priv,
unsigned int opt_flags, long timeout)
{
int retval = 0;
struct device *f_dev = &fw_priv->dev;
struct firmware_buf *buf = fw_priv->buf;
/* fall back on userspace loading */
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
if (!buf->data)
buf->is_paged_buf = true;
dev_set_uevent_suppress(f_dev, true);
retval = device_add(f_dev);
if (retval) {
dev_err(f_dev, "%s: device_register failed\n", __func__);
goto err_put_dev;
}
mutex_lock(&fw_lock);
list_add(&buf->pending_list, &pending_fw_head);
mutex_unlock(&fw_lock);
if (opt_flags & FW_OPT_UEVENT) {
buf->need_uevent = true;
dev_set_uevent_suppress(f_dev, false);
dev_dbg(f_dev, "firmware: requesting %s\n", buf->fw_id);
kobject_uevent(&fw_priv->dev.kobj, KOBJ_ADD);
} else {
timeout = MAX_JIFFY_OFFSET;
}
retval = fw_state_wait_timeout(&buf->fw_st, timeout);
if (retval < 0) {
dev_err(f_dev, "%s: firmware state wait timeout: rc = %d\n",
__func__, retval);
mutex_lock(&fw_lock);
fw_load_abort(fw_priv);
mutex_unlock(&fw_lock);
}
if (fw_state_is_aborted(&buf->fw_st)) {
if (retval == -ERESTARTSYS)
retval = -EINTR;
else
retval = -EAGAIN;
} else if (buf->is_paged_buf && !buf->data)
firmware: give a protection when map page failed so, we need give a protection and return a error value. [ 7341.474236] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work! [ 7341.494464] atomisp-css2400b0_v21 0000:00:03.0: unhandled css stored event: 0x20 [ 7341.503627] vmap allocation for size 208896 failed: use vmalloc=<size> to increase size.<=================== map failed [ 7341.507135] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work! [ 7341.503848] BUG: unable to handle kernel NULL pointer dereference at (null) [ 7341.520394] IP: [<c18f5c1b>] sst_load_all_modules_elf+0x1bb/0x850 [ 7341.527216] *pdpt = 0000000030dfe001 *pde = 0000000000000000 [ 7341.533640] Oops: 0000 [#1] PREEMPT SMP [ 7341.540360] [drm:do_intel_finish_page_flip] *ERROR* invalid or inactive unpin_work! [ 7341.538037] Modules linked in: atomisp_css2400b0_v21 lm3554 ov2722 imx1x5 atmel_mxt_ts vxd392 videobuf_vmalloc videobuf_core lm_dump(O) bcm_bt_lpm hdmi_audio bcm4334x(O) [ 7341.563531] CPU: 1 PID: 525 Comm: mediaserver Tainted: G W O 3.10.20-262518-ga83c053 #1 [ 7341.573253] task: f0994ec0 ti: f09f0000 task.ti: f09f0000 [ 7341.579284] EIP: 0060:[<c18f5c1b>] EFLAGS: 00010246 CPU: 1 [ 7341.585415] EIP is at sst_load_all_modules_elf+0x1bb/0x850 [ 7341.591541] EAX: 00000000 EBX: e3595ba0 ECX: 00000000 EDX: 00031c1c [ 7341.598541] ESI: e04a0000 EDI: 00000000 EBP: f09f1d80 ESP: f09f1cf4 [ 7341.605542] DS: 007b ES: 007b FS: 00d8 GS: 003b SS: 0068 [ 7341.611573] CR0: 80050033 CR2: 00000000 CR3: 30db4000 CR4: 001007f0 [ 7341.618573] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 [ 7341.625575] DR6: ffff0ff0 DR7: 00000400 [ 7341.629856] Stack: [ 7341.632097] f09f1d57 00000019 c1d656d7 c1d658d3 c1d56409 00000f28 c1d64af9 18000103 [ 7341.640766] 01000001 00080000 c1f910a0 f326f4c8 00000034 f326f520 00000002 e04a02bc [ 7341.649465] 00000001 f326e014 c1f910b0 e04a0000 c0080100 00031c1c e3595ba0 c0080100 [ 7341.658149] Call Trace: [ 7341.660888] [<c18f6308>] sst_post_download_byt+0x58/0xb0 [ 7341.666925] [<c18f4fbc>] sst_load_fw+0xdc/0x510 [ 7341.672086] [<c1a7b2c0>] ? __mutex_lock_slowpath+0x250/0x370 [ 7341.678507] [<c1a80e05>] ? sub_preempt_count+0x55/0xe0 [ 7341.684346] [<c18f1294>] sst_download_fw+0x14/0x60 [ 7341.689796] [<c1a7b403>] ? mutex_lock+0x23/0x30 [ 7341.694954] [<c18f191c>] intel_sst_check_device+0x6c/0x120 [ 7341.701181] [<c18f1d08>] sst_set_generic_params+0x1b8/0x4a0 [ 7341.707504] [<c1a80e05>] ? sub_preempt_count+0x55/0xe0 [ 7341.713341] [<c1a80e05>] ? sub_preempt_count+0x55/0xe0 [ 7341.719178] [<c1a7b2c0>] ? __mutex_lock_slowpath+0x250/0x370 [ 7341.725600] [<c1320d84>] ? __kmalloc_track_caller+0xe4/0x1d0 [ 7341.732022] [<c18e35f5>] sst_set_mixer_param+0x25/0x40 [ 7341.737859] [<c18e3853>] lpe_mixer_ihf_set+0xb3/0x160 [ 7341.743602] [<c1855b99>] snd_ctl_ioctl+0xa89/0xb40 [ 7341.749052] [<c1331e65>] ? path_openat+0xa5/0x3d0 [ 7341.754409] [<c1447857>] ? avc_has_perm_flags+0xc7/0x170 [ 7341.760441] [<c1855110>] ? snd_ctl_elem_add_user+0x540/0x540 [ 7341.766862] [<c1334047>] do_vfs_ioctl+0x77/0x5e0 [ 7341.772117] [<c144842a>] ? inode_has_perm.isra.42.constprop.79+0x3a/0x50 [ 7341.779705] [<c14490a0>] ? file_has_perm+0xa0/0xb0 [ 7341.785155] [<c14493b8>] ? selinux_file_ioctl+0x48/0xe0 [ 7341.791090] [<c1334628>] SyS_ioctl+0x78/0x90 [ 7341.795958] [<c1a7dde8>] syscall_call+0x7/0xb [ 7341.800925] [<c1a70000>] ? mm_fault_error+0x13c/0x198 Signed-off-by: zhang jun <jun.zhang@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years ago
retval = -ENOMEM;
device_del(f_dev);
err_put_dev:
put_device(f_dev);
return retval;
}
static int fw_load_from_user_helper(struct firmware *firmware,
const char *name, struct device *device,
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
unsigned int opt_flags)
{
struct firmware_priv *fw_priv;
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
long timeout;
int ret;
timeout = firmware_loading_timeout();
if (opt_flags & FW_OPT_NOWAIT) {
timeout = usermodehelper_read_lock_wait(timeout);
if (!timeout) {
dev_dbg(device, "firmware: %s loading timed out\n",
name);
return -EBUSY;
}
} else {
ret = usermodehelper_read_trylock();
if (WARN_ON(ret)) {
dev_err(device, "firmware: %s will not be loaded\n",
name);
return ret;
}
}
fw_priv = fw_create_instance(firmware, name, device, opt_flags);
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
if (IS_ERR(fw_priv)) {
ret = PTR_ERR(fw_priv);
goto out_unlock;
}
fw_priv->buf = firmware->priv;
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
ret = _request_firmware_load(fw_priv, opt_flags, timeout);
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
if (!ret)
ret = assign_firmware_buf(firmware, device, opt_flags);
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
out_unlock:
usermodehelper_read_unlock();
return ret;
}
#else /* CONFIG_FW_LOADER_USER_HELPER */
static inline int
fw_load_from_user_helper(struct firmware *firmware, const char *name,
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
struct device *device, unsigned int opt_flags)
{
return -ENOENT;
}
static inline void kill_pending_fw_fallback_reqs(bool only_kill_custom) { }
#endif /* CONFIG_FW_LOADER_USER_HELPER */
/* prepare firmware and firmware_buf structs;
* return 0 if a firmware is already assigned, 1 if need to load one,
* or a negative error code
*/
static int
_request_firmware_prepare(struct firmware **firmware_p, const char *name,
struct device *device, void *dbuf, size_t size,
unsigned int opt_flags)
{
struct firmware *firmware;
struct firmware_buf *buf;
int ret;
*firmware_p = firmware = kzalloc(sizeof(*firmware), GFP_KERNEL);
if (!firmware) {
dev_err(device, "%s: kmalloc(struct firmware) failed\n",
__func__);
return -ENOMEM;
}
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
if (fw_get_builtin_firmware(firmware, name, dbuf, size)) {
firmware: simplify dev_*() print messages for generic helpers Simplify a few of the *generic* shared dev_warn() and dev_dbg() print messages for three reasons: 0) Historically firmware_class code was added to help get device driver firmware binaries but these days request_firmware*() helpers are being repurposed for general *system data* needed by the kernel. 1) This will also help generalize shared code as much as possible later in the future in consideration for a new extensible firmware API which will enable to separate usermode helper code out as much as possible. 2) Kees Cook pointed out the the prints already have the device associated as dev_*() helpers are used, that should help identify the user and case in which the helpers are used. That should provide enough context and simplifies the messages further. v4: generalize debug/warn messages even further as suggested by Kees Cook. Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: David Howells <dhowells@redhat.com> Cc: Kees Cook <keescook@chromium.org> Cc: Casey Schaufler <casey@schaufler-ca.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Takashi Iwai <tiwai@suse.de> Cc: Vojtěch Pavlík <vojtech@suse.cz> Cc: Kyle McMartin <kyle@kernel.org> Cc: Matthew Garrett <mjg59@srcf.ucam.org> Cc: linux-kernel@vger.kernel.org Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com> Acked-by: Kees Cook <keescook@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
dev_dbg(device, "using built-in %s\n", name);
return 0; /* assigned */
}
ret = fw_lookup_and_allocate_buf(name, &fw_cache, &buf, dbuf, size,
opt_flags);
/*
* bind with 'buf' now to avoid warning in failure path
* of requesting firmware.
*/
firmware->priv = buf;
if (ret > 0) {
ret = fw_state_wait(&buf->fw_st);
if (!ret) {
fw_set_page_data(buf, firmware);
return 0; /* assigned */
}
}
if (ret < 0)
return ret;
return 1; /* need to load */
}
firmware: fix batched requests - send wake up on failure on direct lookups Fix batched requests from waiting forever on failure. The firmware API batched requests feature has been broken since the API call request_firmware_direct() was introduced on commit bba3a87e982ad ("firmware: Introduce request_firmware_direct()"), added on v3.14 *iff* the firmware being requested was not present in *certain kernel builds* [0]. When no firmware is found the worker which goes on to finish never informs waiters queued up of this, so any batched request will stall in what seems to be forever (MAX_SCHEDULE_TIMEOUT). Sadly, a reboot will also stall, as the reboot notifier was only designed to kill custom fallback workers. The issue seems to the user as a type of soft lockup, what *actually* happens underneath the hood is a wait call which never completes as we failed to issue a completion on error. For device drivers with optional firmware schemes (ie, Intel iwlwifi, or Netronome -- even though it uses request_firmware() and not request_firmware_direct()), this could mean that when you boot a system with multiple cards the firmware will seem to never load on the system, or that the card is just not responsive even the driver initialization. Due to differences in scheduling possible this should not always trigger -- one would need to to ensure that multiple requests are in place at the right time for this to work, also release_firmware() must not be called prior to any other incoming request. The complexity may not be worth supporting batched requests in the future given the wait mechanism is only used also for the fallback mechanism. We'll keep it for now and just fix it. Its reported that at least with the Intel WiFi cards on one system this issue was creeping up 50% of the boots [0]. Before this commit batched requests testing revealed: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ Ater this commit batched testing results: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 Cc: stable <stable@vger.kernel.org> # v3.14 Fixes: bba3a87e982ad ("firmware: Introduce request_firmware_direct()" Reported-by: Nicolas <nbroeking@me.com> Reported-by: John Ewalt <jewalt@lgsinnovations.com> Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
/*
* Batched requests need only one wake, we need to do this step last due to the
* fallback mechanism. The buf is protected with kref_get(), and it won't be
* released until the last user calls release_firmware().
*
* Failed batched requests are possible as well, in such cases we just share
* the struct firmware_buf and won't release it until all requests are woken
* and have gone through this same path.
*/
static void fw_abort_batch_reqs(struct firmware *fw)
{
struct firmware_buf *buf;
/* Loaded directly? */
if (!fw || !fw->priv)
return;
buf = fw->priv;
if (!fw_state_is_aborted(&buf->fw_st))
fw_state_aborted(&buf->fw_st);
}
/* called from request_firmware() and request_firmware_work_func() */
static int
_request_firmware(const struct firmware **firmware_p, const char *name,
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
struct device *device, void *buf, size_t size,
unsigned int opt_flags)
{
firmware: actually return NULL on failed request_firmware_nowait() The kerneldoc for request_firmware_nowait() says that it may call the provided cont() callback with @fw == NULL, if the firmware request fails. However, this is not the case when called with an empty string (""). This case is short-circuited by the 'name[0] == '\0'' check introduced in commit 471b095dfe0d ("firmware_class: make sure fw requests contain a name"), so _request_firmware() never gets to set the fw to NULL. Noticed while using the new 'trigger_async_request' testing hook: # printf '\x00' > /sys/devices/virtual/misc/test_firmware/trigger_async_request [10553.726178] test_firmware: loading '' [10553.729859] test_firmware: loaded: 995209091 # printf '\x00' > /sys/devices/virtual/misc/test_firmware/trigger_async_request [10733.676184] test_firmware: loading '' [10733.679855] Unable to handle kernel NULL pointer dereference at virtual address 00000004 [10733.687951] pgd = ec188000 [10733.690655] [00000004] *pgd=00000000 [10733.694240] Internal error: Oops: 5 [#1] SMP ARM [10733.698847] Modules linked in: btmrvl_sdio btmrvl bluetooth sbs_battery nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables asix usbnet mwifiex_sdio mwifiex cfg80211 jitterentropy_rng drbg joydev snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device ppp_async ppp_generic slhc tun [10733.725670] CPU: 0 PID: 6600 Comm: bash Not tainted 4.4.0-rc4-00351-g63d0877 #178 [10733.733137] Hardware name: Rockchip (Device Tree) [10733.737831] task: ed24f6c0 ti: ee322000 task.ti: ee322000 [10733.743222] PC is at do_raw_spin_lock+0x18/0x1a0 [10733.747831] LR is at _raw_spin_lock+0x18/0x1c [10733.752180] pc : [<c00653a0>] lr : [<c054c204>] psr: a00d0013 [10733.752180] sp : ee323df8 ip : ee323e20 fp : ee323e1c [10733.763634] r10: 00000051 r9 : b6f18000 r8 : ee323f80 [10733.768847] r7 : c089cebc r6 : 00000001 r5 : 00000000 r4 : ec0e6000 [10733.775360] r3 : dead4ead r2 : c06bd140 r1 : eef913b4 r0 : 00000000 [10733.781874] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [10733.788995] Control: 10c5387d Table: 2c18806a DAC: 00000051 [10733.794728] Process bash (pid: 6600, stack limit = 0xee322218) [10733.800549] Stack: (0xee323df8 to 0xee324000) [10733.804896] 3de0: ec0e6000 00000000 [10733.813059] 3e00: 00000001 c089cebc ee323f80 b6f18000 ee323e2c ee323e20 c054c204 c0065394 [10733.821221] 3e20: ee323e44 ee323e30 c02fec60 c054c1f8 ec0e7ec0 ec3fcfc0 ee323e5c ee323e48 [10733.829384] 3e40: c02fed08 c02fec48 c07dbf74 eeb05a00 ee323e8c ee323e60 c0253828 c02fecac [10733.837547] 3e60: 00000001 c0116950 ee323eac ee323e78 00000001 ec3fce00 ed2d9700 ed2d970c [10733.845710] 3e80: ee323e9c ee323e90 c02e873c c02537d4 ee323eac ee323ea0 c017bd40 c02e8720 [10733.853873] 3ea0: ee323ee4 ee323eb0 c017b250 c017bd00 00000000 00000000 f3e47a54 ec128b00 [10733.862035] 3ec0: c017b10c ee323f80 00000001 c000f504 ee322000 00000000 ee323f4c ee323ee8 [10733.870197] 3ee0: c011b71c c017b118 ee323fb0 c011bc90 becfa8d9 00000001 ec128b00 00000001 [10733.878359] 3f00: b6f18000 ee323f80 ee323f4c ee323f18 c011bc90 c0063950 ee323f3c ee323f28 [10733.886522] 3f20: c0063950 c0549138 00000001 ec128b00 00000001 ec128b00 b6f18000 ee323f80 [10733.894684] 3f40: ee323f7c ee323f50 c011bed8 c011b6ec c0135fb8 c0135f24 ec128b00 ec128b00 [10733.902847] 3f60: 00000001 b6f18000 c000f504 ee322000 ee323fa4 ee323f80 c011c664 c011be24 [10733.911009] 3f80: 00000000 00000000 00000001 b6f18000 b6e79be0 00000004 00000000 ee323fa8 [10733.919172] 3fa0: c000f340 c011c618 00000001 b6f18000 00000001 b6f18000 00000001 00000000 [10733.927334] 3fc0: 00000001 b6f18000 b6e79be0 00000004 00000001 00000001 8068a3f1 b6e79c84 [10733.935496] 3fe0: 00000000 becfa7dc b6de194d b6e20246 400d0030 00000001 7a4536e8 49bda390 [10733.943664] [<c00653a0>] (do_raw_spin_lock) from [<c054c204>] (_raw_spin_lock+0x18/0x1c) [10733.951743] [<c054c204>] (_raw_spin_lock) from [<c02fec60>] (fw_free_buf+0x24/0x64) [10733.959388] [<c02fec60>] (fw_free_buf) from [<c02fed08>] (release_firmware+0x68/0x74) [10733.967207] [<c02fed08>] (release_firmware) from [<c0253828>] (trigger_async_request_store+0x60/0x124) [10733.976501] [<c0253828>] (trigger_async_request_store) from [<c02e873c>] (dev_attr_store+0x28/0x34) [10733.985533] [<c02e873c>] (dev_attr_store) from [<c017bd40>] (sysfs_kf_write+0x4c/0x58) [10733.993437] [<c017bd40>] (sysfs_kf_write) from [<c017b250>] (kernfs_fop_write+0x144/0x1a8) [10734.001689] [<c017b250>] (kernfs_fop_write) from [<c011b71c>] (__vfs_write+0x3c/0xe4) After this patch: # printf '\x00' > /sys/devices/virtual/misc/test_firmware/trigger_async_request [ 32.126322] test_firmware: loading '' [ 32.129995] test_firmware: failed to async load firmware -bash: printf: write error: No such device Fixes: 471b095dfe0d ("firmware_class: make sure fw requests contain a name") Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Ming Lei <ming.lei@canonical.com> Acked-by: Kees Cook <keescook@chromium.org> Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
9 years ago
struct firmware *fw = NULL;
int ret;
if (!firmware_p)
return -EINVAL;
firmware: actually return NULL on failed request_firmware_nowait() The kerneldoc for request_firmware_nowait() says that it may call the provided cont() callback with @fw == NULL, if the firmware request fails. However, this is not the case when called with an empty string (""). This case is short-circuited by the 'name[0] == '\0'' check introduced in commit 471b095dfe0d ("firmware_class: make sure fw requests contain a name"), so _request_firmware() never gets to set the fw to NULL. Noticed while using the new 'trigger_async_request' testing hook: # printf '\x00' > /sys/devices/virtual/misc/test_firmware/trigger_async_request [10553.726178] test_firmware: loading '' [10553.729859] test_firmware: loaded: 995209091 # printf '\x00' > /sys/devices/virtual/misc/test_firmware/trigger_async_request [10733.676184] test_firmware: loading '' [10733.679855] Unable to handle kernel NULL pointer dereference at virtual address 00000004 [10733.687951] pgd = ec188000 [10733.690655] [00000004] *pgd=00000000 [10733.694240] Internal error: Oops: 5 [#1] SMP ARM [10733.698847] Modules linked in: btmrvl_sdio btmrvl bluetooth sbs_battery nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables asix usbnet mwifiex_sdio mwifiex cfg80211 jitterentropy_rng drbg joydev snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device ppp_async ppp_generic slhc tun [10733.725670] CPU: 0 PID: 6600 Comm: bash Not tainted 4.4.0-rc4-00351-g63d0877 #178 [10733.733137] Hardware name: Rockchip (Device Tree) [10733.737831] task: ed24f6c0 ti: ee322000 task.ti: ee322000 [10733.743222] PC is at do_raw_spin_lock+0x18/0x1a0 [10733.747831] LR is at _raw_spin_lock+0x18/0x1c [10733.752180] pc : [<c00653a0>] lr : [<c054c204>] psr: a00d0013 [10733.752180] sp : ee323df8 ip : ee323e20 fp : ee323e1c [10733.763634] r10: 00000051 r9 : b6f18000 r8 : ee323f80 [10733.768847] r7 : c089cebc r6 : 00000001 r5 : 00000000 r4 : ec0e6000 [10733.775360] r3 : dead4ead r2 : c06bd140 r1 : eef913b4 r0 : 00000000 [10733.781874] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [10733.788995] Control: 10c5387d Table: 2c18806a DAC: 00000051 [10733.794728] Process bash (pid: 6600, stack limit = 0xee322218) [10733.800549] Stack: (0xee323df8 to 0xee324000) [10733.804896] 3de0: ec0e6000 00000000 [10733.813059] 3e00: 00000001 c089cebc ee323f80 b6f18000 ee323e2c ee323e20 c054c204 c0065394 [10733.821221] 3e20: ee323e44 ee323e30 c02fec60 c054c1f8 ec0e7ec0 ec3fcfc0 ee323e5c ee323e48 [10733.829384] 3e40: c02fed08 c02fec48 c07dbf74 eeb05a00 ee323e8c ee323e60 c0253828 c02fecac [10733.837547] 3e60: 00000001 c0116950 ee323eac ee323e78 00000001 ec3fce00 ed2d9700 ed2d970c [10733.845710] 3e80: ee323e9c ee323e90 c02e873c c02537d4 ee323eac ee323ea0 c017bd40 c02e8720 [10733.853873] 3ea0: ee323ee4 ee323eb0 c017b250 c017bd00 00000000 00000000 f3e47a54 ec128b00 [10733.862035] 3ec0: c017b10c ee323f80 00000001 c000f504 ee322000 00000000 ee323f4c ee323ee8 [10733.870197] 3ee0: c011b71c c017b118 ee323fb0 c011bc90 becfa8d9 00000001 ec128b00 00000001 [10733.878359] 3f00: b6f18000 ee323f80 ee323f4c ee323f18 c011bc90 c0063950 ee323f3c ee323f28 [10733.886522] 3f20: c0063950 c0549138 00000001 ec128b00 00000001 ec128b00 b6f18000 ee323f80 [10733.894684] 3f40: ee323f7c ee323f50 c011bed8 c011b6ec c0135fb8 c0135f24 ec128b00 ec128b00 [10733.902847] 3f60: 00000001 b6f18000 c000f504 ee322000 ee323fa4 ee323f80 c011c664 c011be24 [10733.911009] 3f80: 00000000 00000000 00000001 b6f18000 b6e79be0 00000004 00000000 ee323fa8 [10733.919172] 3fa0: c000f340 c011c618 00000001 b6f18000 00000001 b6f18000 00000001 00000000 [10733.927334] 3fc0: 00000001 b6f18000 b6e79be0 00000004 00000001 00000001 8068a3f1 b6e79c84 [10733.935496] 3fe0: 00000000 becfa7dc b6de194d b6e20246 400d0030 00000001 7a4536e8 49bda390 [10733.943664] [<c00653a0>] (do_raw_spin_lock) from [<c054c204>] (_raw_spin_lock+0x18/0x1c) [10733.951743] [<c054c204>] (_raw_spin_lock) from [<c02fec60>] (fw_free_buf+0x24/0x64) [10733.959388] [<c02fec60>] (fw_free_buf) from [<c02fed08>] (release_firmware+0x68/0x74) [10733.967207] [<c02fed08>] (release_firmware) from [<c0253828>] (trigger_async_request_store+0x60/0x124) [10733.976501] [<c0253828>] (trigger_async_request_store) from [<c02e873c>] (dev_attr_store+0x28/0x34) [10733.985533] [<c02e873c>] (dev_attr_store) from [<c017bd40>] (sysfs_kf_write+0x4c/0x58) [10733.993437] [<c017bd40>] (sysfs_kf_write) from [<c017b250>] (kernfs_fop_write+0x144/0x1a8) [10734.001689] [<c017b250>] (kernfs_fop_write) from [<c011b71c>] (__vfs_write+0x3c/0xe4) After this patch: # printf '\x00' > /sys/devices/virtual/misc/test_firmware/trigger_async_request [ 32.126322] test_firmware: loading '' [ 32.129995] test_firmware: failed to async load firmware -bash: printf: write error: No such device Fixes: 471b095dfe0d ("firmware_class: make sure fw requests contain a name") Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Ming Lei <ming.lei@canonical.com> Acked-by: Kees Cook <keescook@chromium.org> Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
9 years ago
if (!name || name[0] == '\0') {
ret = -EINVAL;
goto out;
}
ret = _request_firmware_prepare(&fw, name, device, buf, size,
opt_flags);
if (ret <= 0) /* error or already assigned */
goto out;
ret = fw_get_filesystem_firmware(device, fw->priv);
if (ret) {
if (!(opt_flags & FW_OPT_NO_WARN))
dev_dbg(device,
"Firmware %s was not found in kernel paths. rc:%d\n",
name, ret);
if (opt_flags & FW_OPT_USERHELPER) {
dev_dbg(device, "Falling back to user helper\n");
ret = fw_load_from_user_helper(fw, name, device,
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
opt_flags);
}
firmware: move umh try locks into the umh code This moves the usermode helper locks into only code paths that use the usermode helper API from the kernel. The usermode helper locks were originally added to prevent stalling suspend, later the firmware cache was added to help with this, and further later direct filesystem lookup was added by Linus to completely bypass udev due to the amount of issues the umh approach had. The usermode helper locks were kept even when the direct filesystem lookup mechanism is used though. A lot has changed since the original usermode helper locks were added but the recent commit which added the code for firmware_enabled() are intended to address any possible races cured only as collateral by using the locks as though side consequence of code evolution and this not being addressed any time sooner. With the firmware_enabled() code in place we are a bit more sure to move the usermode helper locks to UMH only code. There is a bit of history here so let's recap a bit of it to ensure nothing is lost and things are clear. The direct filesystem approach to loading firmware is rather new, it was added via commit abb139e75c2cdb ("firmware: teach the kernel to load firmware files directly from the filesystem") by Linus merged on the v3.7 release, to enable to bypass udev. usermodehelper_read_lock_wait() was added earlier via commit 9b78c1da60b3c ("firmware_class: Do not warn that system is not ready from async loads") merged on v3.4, after Rafael noted that the async firmware API call request_firmware_nowait() should not be penalized to fail if userspace is not available yet or frozen, it'd allow for a timeout grace period before giving up. The WARN_ON() was kept for the sync firmware API call though on request_firmware(). At this time there was no direct filesystem lookup for firmware though. The original usermode helper lock came from commit a144c6a6c924a ("PM: Print a warning if firmware is requested when tasks are frozen") merged on the v3.0 kernel by Rafael to print a warning back when firmware requests were used on resume(), thaw() or restore() callbacks and there was no direct fs lookups or the firmware cache. Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
} else
ret = assign_firmware_buf(fw, device, opt_flags);
out:
if (ret < 0) {
firmware: fix batched requests - send wake up on failure on direct lookups Fix batched requests from waiting forever on failure. The firmware API batched requests feature has been broken since the API call request_firmware_direct() was introduced on commit bba3a87e982ad ("firmware: Introduce request_firmware_direct()"), added on v3.14 *iff* the firmware being requested was not present in *certain kernel builds* [0]. When no firmware is found the worker which goes on to finish never informs waiters queued up of this, so any batched request will stall in what seems to be forever (MAX_SCHEDULE_TIMEOUT). Sadly, a reboot will also stall, as the reboot notifier was only designed to kill custom fallback workers. The issue seems to the user as a type of soft lockup, what *actually* happens underneath the hood is a wait call which never completes as we failed to issue a completion on error. For device drivers with optional firmware schemes (ie, Intel iwlwifi, or Netronome -- even though it uses request_firmware() and not request_firmware_direct()), this could mean that when you boot a system with multiple cards the firmware will seem to never load on the system, or that the card is just not responsive even the driver initialization. Due to differences in scheduling possible this should not always trigger -- one would need to to ensure that multiple requests are in place at the right time for this to work, also release_firmware() must not be called prior to any other incoming request. The complexity may not be worth supporting batched requests in the future given the wait mechanism is only used also for the fallback mechanism. We'll keep it for now and just fix it. Its reported that at least with the Intel WiFi cards on one system this issue was creeping up 50% of the boots [0]. Before this commit batched requests testing revealed: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() FAIL OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) FAIL OK request_firmware_nowait(uevent=false) FAIL OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() FAIL OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ Ater this commit batched testing results: ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=y Most common Linux distribution setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n CONFIG_FW_LOADER_USER_HELPER=n Only possible if CONFIG_DELL_RBU=n and CONFIG_LEDS_LP55XX_COMMON=n, rare. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_FW_LOADER_USER_HELPER=y Google Android setup. API-type no-firmware-found firmware-found ---------------------------------------------------------------------- request_firmware() OK OK request_firmware_direct() OK OK request_firmware_nowait(uevent=true) OK OK request_firmware_nowait(uevent=false) OK OK ============================================================================ [0] https://bugzilla.kernel.org/show_bug.cgi?id=195477 Cc: stable <stable@vger.kernel.org> # v3.14 Fixes: bba3a87e982ad ("firmware: Introduce request_firmware_direct()" Reported-by: Nicolas <nbroeking@me.com> Reported-by: John Ewalt <jewalt@lgsinnovations.com> Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 years ago
fw_abort_batch_reqs(fw);
release_firmware(fw);
fw = NULL;
}
*firmware_p = fw;
return ret;
}
/**
* request_firmware: - send firmware request and wait for it
* @firmware_p: pointer to firmware image
* @name: name of firmware file
* @device: device for which firmware is being loaded
*
* @firmware_p will be used to return a firmware image by the name
* of @name for device @device.
*
* Should be called from user context where sleeping is allowed.
*
* @name will be used as $FIRMWARE in the uevent environment and
* should be distinctive enough not to be confused with any other
* firmware image for this or any other device.
*
* Caller must hold the reference count of @device.
*
* The function can be called safely inside device's suspend and
* resume callback.
**/
int
request_firmware(const struct firmware **firmware_p, const char *name,
struct device *device)
{
int ret;
/* Need to pin this module until return */
__module_get(THIS_MODULE);
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
ret = _request_firmware(firmware_p, name, device, NULL, 0,
FW_OPT_UEVENT | FW_OPT_FALLBACK);
module_put(THIS_MODULE);
return ret;
}
EXPORT_SYMBOL(request_firmware);
/**
* request_firmware_direct: - load firmware directly without usermode helper
* @firmware_p: pointer to firmware image
* @name: name of firmware file
* @device: device for which firmware is being loaded
*
* This function works pretty much like request_firmware(), but this doesn't
* fall back to usermode helper even if the firmware couldn't be loaded
* directly from fs. Hence it's useful for loading optional firmwares, which
* aren't always present, without extra long timeouts of udev.
**/
int request_firmware_direct(const struct firmware **firmware_p,
const char *name, struct device *device)
{
int ret;
__module_get(THIS_MODULE);
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
ret = _request_firmware(firmware_p, name, device, NULL, 0,
FW_OPT_UEVENT | FW_OPT_NO_WARN);
module_put(THIS_MODULE);
return ret;
}
EXPORT_SYMBOL_GPL(request_firmware_direct);
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
/**
* request_firmware_into_buf - load firmware into a previously allocated buffer
* @firmware_p: pointer to firmware image
* @name: name of firmware file
* @device: device for which firmware is being loaded and DMA region allocated
* @buf: address of buffer to load firmware into
* @size: size of buffer
*
* This function works pretty much like request_firmware(), but it doesn't
* allocate a buffer to hold the firmware data. Instead, the firmware
* is loaded directly into the buffer pointed to by @buf and the @firmware_p
* data member is pointed at @buf.
*
* This function doesn't cache firmware either.
*/
int
request_firmware_into_buf(const struct firmware **firmware_p, const char *name,
struct device *device, void *buf, size_t size)
{
int ret;
__module_get(THIS_MODULE);
ret = _request_firmware(firmware_p, name, device, buf, size,
FW_OPT_UEVENT | FW_OPT_FALLBACK |
FW_OPT_NOCACHE);
module_put(THIS_MODULE);
return ret;
}
EXPORT_SYMBOL(request_firmware_into_buf);
/**
* release_firmware: - release the resource associated with a firmware image
* @fw: firmware resource to release
**/
void release_firmware(const struct firmware *fw)
{
if (fw) {
if (!fw_is_builtin_firmware(fw))
firmware_free_data(fw);
kfree(fw);
}
}
EXPORT_SYMBOL(release_firmware);
/* Async support */
struct firmware_work {
struct work_struct work;
struct module *module;
const char *name;
struct device *device;
void *context;
void (*cont)(const struct firmware *fw, void *context);
unsigned int opt_flags;
};
static void request_firmware_work_func(struct work_struct *work)
{
struct firmware_work *fw_work;
const struct firmware *fw;
fw_work = container_of(work, struct firmware_work, work);
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
_request_firmware(&fw, fw_work->name, fw_work->device, NULL, 0,
fw_work->opt_flags);
fw_work->cont(fw, fw_work->context);
put_device(fw_work->device); /* taken in request_firmware_nowait() */
module_put(fw_work->module);
firmware: fix possible use after free on name on asynchronous request Asynchronous firmware loading copies the pointer to the name passed as an argument only to be scheduled later and used. This behaviour works well for synchronous calling but in asynchronous mode there's a chance the caller could immediately free the passed string after making the asynchronous call. This could trigger a use after free having the kernel look on disk for arbitrary file names. In order to force-test the issue you can use a test-driver designed to illustrate this issue on github [0], use the next-20150505-fix-use-after-free branch. With this patch applied you get: [ 283.512445] firmware name: test_module_stuff.bin [ 287.514020] firmware name: test_module_stuff.bin [ 287.532489] firmware found Without this patch applied you can end up with something such as: [ 135.624216] firmware name: \xffffff80BJ [ 135.624249] platform fake-dev.0: Direct firmware load for \xffffff80Bi failed with error -2 [ 135.624252] No firmware found [ 135.624252] firmware found Unfortunatley in the worst and most common case however you can typically crash your system with a page fault by trying to free something which you cannot, and/or a NULL pointer dereference [1]. The fix and issue using schedule_work() for asynchronous runs is generalized in the following SmPL grammar patch, when applied to next-20150505 only the firmware_class code is affected. This grammar patch can and should further be generalized to vet for for other kernel asynchronous mechanisms. @ calls_schedule_work @ type T; T *priv_work; identifier func, work_func; identifier work; identifier priv_name, name; expression gfp; @@ func(..., const char *name, ...) { ... priv_work = kzalloc(sizeof(T), gfp); ... - priv_work->priv_name = name; + priv_work->priv_name = kstrdup_const(name, gfp); ... (... when any if (...) { ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } ) ... when any INIT_WORK(&priv_work->work, work_func); ... schedule_work(&priv_work->work); ... } @ the_work_func depends on calls_schedule_work @ type calls_schedule_work.T; T *priv_work; identifier calls_schedule_work.work_func; identifier calls_schedule_work.priv_name; identifier calls_schedule_work.work; identifier some_work; @@ work_func(...) { ... priv_work = container_of(some_work, T, work); ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } [0] https://github.com/mcgrof/fake-firmware-test.git [1] The following kernel ring buffer splat: firmware name: test_module_stuff.bin firmware name: firmware found general protection fault: 0000 [#1] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 Workqueue: events request_firmware_work_func task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff814a586c>] [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP: 0000:ffff8800c7f97d78 EFLAGS: 00010286 RAX: ffffffff81ae3700 RBX: ffffffff816d1181 RCX: 0000000000000006 RDX: 0001ee850ff68500 RSI: 0000000000000246 RDI: c35d5f415e415d41 RBP: ffff8800c7f97d88 R08: 000000000000000a R09: 0000000000000000 R10: 0000000000000358 R11: ffff8800c7f97a7e R12: ffff8800c7ec1e80 R13: ffff88021e2d4cc0 R14: ffff88021e2dff00 R15: 00000000000000c0 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00000000034b8cd8 CR3: 000000021073c000 CR4: 00000000001407e0 Stack: ffffffff816d1181 ffff8800c7ec1e80 ffff8800c7f97da8 ffffffff814a58f8 000000000000000a ffffffff816d1181 ffff8800c7f97dc8 ffffffffa047002c ffff88021e2dff00 ffff8802116ac1c0 ffff8800c7f97df8 ffffffff814a65fe Call Trace: [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: c7 c6 dd ad a3 81 48 c7 c7 20 97 ce 81 31 c0 e8 0b b2 ed ff e9 78 ff ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 54 53 <4c> 8b 67 38 48 89 fb 4c 89 e7 e8 85 f7 22 00 f0 83 2b 01 74 0f RIP [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP <ffff8800c7f97d78> ---[ end trace 4e62c56a58d0eac1 ]--- BUG: unable to handle kernel paging request at ffffffffffffffd8 IP: [<ffffffff81093ee0>] kthread_data+0x10/0x20 PGD 1c13067 PUD 1c15067 PMD 0 Oops: 0000 [#2] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G D O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff81092ee0>] [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP: 0018:ffff8800c7f97b18 EFLAGS: 00010096 RAX: 0000000000000000 RBX: 0000000000000003 RCX: 000000000000000d RDX: 0000000000000003 RSI: 0000000000000003 RDI: ffff8800c7f8e290 RBP: ffff8800c7f97b18 R08: 000000000000bc00 R09: 0000000000007e76 R10: 0000000000000001 R11: 000000000000002f R12: ffff8800c7f8e290 R13: 00000000000154c0 R14: 0000000000000003 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000028 CR3: 0000000210675000 CR4: 00000000001407e0 Stack: ffff8800c7f97b38 ffffffff8108dcd5 ffff8800c7f97b38 ffff88021e2d54c0 ffff8800c7f97b88 ffffffff816d1500 ffff880213d42368 ffff8800c7f8e290 ffff8800c7f97b88 ffff8800c7f97fd8 ffff8800c7f8e710 0000000000000246 Call Trace: [<ffffffff8108dcd5>] wq_worker_sleeping+0x15/0xa0 [<ffffffff816d1500>] __schedule+0x6e0/0x940 [<ffffffff816d1797>] schedule+0x37/0x90 [<ffffffff810779bc>] do_exit+0x6bc/0xb40 [<ffffffff8101898f>] oops_end+0x9f/0xe0 [<ffffffff81018efb>] die+0x4b/0x70 [<ffffffff81015622>] do_general_protection+0xe2/0x170 [<ffffffff816d74e8>] general_protection+0x28/0x30 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a586c>] ? fw_free_buf+0xc/0x40 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: 00 48 89 e5 5d 48 8b 40 c8 48 c1 e8 02 83 e0 01 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 87 30 05 00 00 55 48 89 e5 <48> 8b 40 d8 5d c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 RIP [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP <ffff8800c7f97b18> CR2: ffffffffffffffd8 ---[ end trace 4e62c56a58d0eac2 ]--- Fixing recursive fault but reboot is needed! Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Generated-by: Coccinelle SmPL Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
kfree_const(fw_work->name);
kfree(fw_work);
}
/**
* request_firmware_nowait - asynchronous version of request_firmware
* @module: module requesting the firmware
* @uevent: sends uevent to copy the firmware image if this flag
* is non-zero else the firmware copy must be done manually.
* @name: name of firmware file
* @device: device for which firmware is being loaded
* @gfp: allocation flags
* @context: will be passed over to @cont, and
* @fw may be %NULL if firmware request fails.
* @cont: function will be called asynchronously when the firmware
* request is over.
*
* Caller must hold the reference count of @device.
*
* Asynchronous variant of request_firmware() for user contexts:
* - sleep for as small periods as possible since it may
* increase kernel boot time of built-in device drivers
* requesting firmware in their ->probe() methods, if
* @gfp is GFP_KERNEL.
*
* - can't sleep at all if @gfp is GFP_ATOMIC.
**/
int
request_firmware_nowait(
struct module *module, bool uevent,
const char *name, struct device *device, gfp_t gfp, void *context,
void (*cont)(const struct firmware *fw, void *context))
{
struct firmware_work *fw_work;
fw_work = kzalloc(sizeof(struct firmware_work), gfp);
if (!fw_work)
return -ENOMEM;
fw_work->module = module;
firmware: fix possible use after free on name on asynchronous request Asynchronous firmware loading copies the pointer to the name passed as an argument only to be scheduled later and used. This behaviour works well for synchronous calling but in asynchronous mode there's a chance the caller could immediately free the passed string after making the asynchronous call. This could trigger a use after free having the kernel look on disk for arbitrary file names. In order to force-test the issue you can use a test-driver designed to illustrate this issue on github [0], use the next-20150505-fix-use-after-free branch. With this patch applied you get: [ 283.512445] firmware name: test_module_stuff.bin [ 287.514020] firmware name: test_module_stuff.bin [ 287.532489] firmware found Without this patch applied you can end up with something such as: [ 135.624216] firmware name: \xffffff80BJ [ 135.624249] platform fake-dev.0: Direct firmware load for \xffffff80Bi failed with error -2 [ 135.624252] No firmware found [ 135.624252] firmware found Unfortunatley in the worst and most common case however you can typically crash your system with a page fault by trying to free something which you cannot, and/or a NULL pointer dereference [1]. The fix and issue using schedule_work() for asynchronous runs is generalized in the following SmPL grammar patch, when applied to next-20150505 only the firmware_class code is affected. This grammar patch can and should further be generalized to vet for for other kernel asynchronous mechanisms. @ calls_schedule_work @ type T; T *priv_work; identifier func, work_func; identifier work; identifier priv_name, name; expression gfp; @@ func(..., const char *name, ...) { ... priv_work = kzalloc(sizeof(T), gfp); ... - priv_work->priv_name = name; + priv_work->priv_name = kstrdup_const(name, gfp); ... (... when any if (...) { ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } ) ... when any INIT_WORK(&priv_work->work, work_func); ... schedule_work(&priv_work->work); ... } @ the_work_func depends on calls_schedule_work @ type calls_schedule_work.T; T *priv_work; identifier calls_schedule_work.work_func; identifier calls_schedule_work.priv_name; identifier calls_schedule_work.work; identifier some_work; @@ work_func(...) { ... priv_work = container_of(some_work, T, work); ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } [0] https://github.com/mcgrof/fake-firmware-test.git [1] The following kernel ring buffer splat: firmware name: test_module_stuff.bin firmware name: firmware found general protection fault: 0000 [#1] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 Workqueue: events request_firmware_work_func task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff814a586c>] [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP: 0000:ffff8800c7f97d78 EFLAGS: 00010286 RAX: ffffffff81ae3700 RBX: ffffffff816d1181 RCX: 0000000000000006 RDX: 0001ee850ff68500 RSI: 0000000000000246 RDI: c35d5f415e415d41 RBP: ffff8800c7f97d88 R08: 000000000000000a R09: 0000000000000000 R10: 0000000000000358 R11: ffff8800c7f97a7e R12: ffff8800c7ec1e80 R13: ffff88021e2d4cc0 R14: ffff88021e2dff00 R15: 00000000000000c0 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00000000034b8cd8 CR3: 000000021073c000 CR4: 00000000001407e0 Stack: ffffffff816d1181 ffff8800c7ec1e80 ffff8800c7f97da8 ffffffff814a58f8 000000000000000a ffffffff816d1181 ffff8800c7f97dc8 ffffffffa047002c ffff88021e2dff00 ffff8802116ac1c0 ffff8800c7f97df8 ffffffff814a65fe Call Trace: [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: c7 c6 dd ad a3 81 48 c7 c7 20 97 ce 81 31 c0 e8 0b b2 ed ff e9 78 ff ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 54 53 <4c> 8b 67 38 48 89 fb 4c 89 e7 e8 85 f7 22 00 f0 83 2b 01 74 0f RIP [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP <ffff8800c7f97d78> ---[ end trace 4e62c56a58d0eac1 ]--- BUG: unable to handle kernel paging request at ffffffffffffffd8 IP: [<ffffffff81093ee0>] kthread_data+0x10/0x20 PGD 1c13067 PUD 1c15067 PMD 0 Oops: 0000 [#2] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G D O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff81092ee0>] [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP: 0018:ffff8800c7f97b18 EFLAGS: 00010096 RAX: 0000000000000000 RBX: 0000000000000003 RCX: 000000000000000d RDX: 0000000000000003 RSI: 0000000000000003 RDI: ffff8800c7f8e290 RBP: ffff8800c7f97b18 R08: 000000000000bc00 R09: 0000000000007e76 R10: 0000000000000001 R11: 000000000000002f R12: ffff8800c7f8e290 R13: 00000000000154c0 R14: 0000000000000003 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000028 CR3: 0000000210675000 CR4: 00000000001407e0 Stack: ffff8800c7f97b38 ffffffff8108dcd5 ffff8800c7f97b38 ffff88021e2d54c0 ffff8800c7f97b88 ffffffff816d1500 ffff880213d42368 ffff8800c7f8e290 ffff8800c7f97b88 ffff8800c7f97fd8 ffff8800c7f8e710 0000000000000246 Call Trace: [<ffffffff8108dcd5>] wq_worker_sleeping+0x15/0xa0 [<ffffffff816d1500>] __schedule+0x6e0/0x940 [<ffffffff816d1797>] schedule+0x37/0x90 [<ffffffff810779bc>] do_exit+0x6bc/0xb40 [<ffffffff8101898f>] oops_end+0x9f/0xe0 [<ffffffff81018efb>] die+0x4b/0x70 [<ffffffff81015622>] do_general_protection+0xe2/0x170 [<ffffffff816d74e8>] general_protection+0x28/0x30 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a586c>] ? fw_free_buf+0xc/0x40 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: 00 48 89 e5 5d 48 8b 40 c8 48 c1 e8 02 83 e0 01 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 87 30 05 00 00 55 48 89 e5 <48> 8b 40 d8 5d c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 RIP [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP <ffff8800c7f97b18> CR2: ffffffffffffffd8 ---[ end trace 4e62c56a58d0eac2 ]--- Fixing recursive fault but reboot is needed! Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Generated-by: Coccinelle SmPL Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
fw_work->name = kstrdup_const(name, gfp);
if (!fw_work->name) {
kfree(fw_work);
firmware: fix possible use after free on name on asynchronous request Asynchronous firmware loading copies the pointer to the name passed as an argument only to be scheduled later and used. This behaviour works well for synchronous calling but in asynchronous mode there's a chance the caller could immediately free the passed string after making the asynchronous call. This could trigger a use after free having the kernel look on disk for arbitrary file names. In order to force-test the issue you can use a test-driver designed to illustrate this issue on github [0], use the next-20150505-fix-use-after-free branch. With this patch applied you get: [ 283.512445] firmware name: test_module_stuff.bin [ 287.514020] firmware name: test_module_stuff.bin [ 287.532489] firmware found Without this patch applied you can end up with something such as: [ 135.624216] firmware name: \xffffff80BJ [ 135.624249] platform fake-dev.0: Direct firmware load for \xffffff80Bi failed with error -2 [ 135.624252] No firmware found [ 135.624252] firmware found Unfortunatley in the worst and most common case however you can typically crash your system with a page fault by trying to free something which you cannot, and/or a NULL pointer dereference [1]. The fix and issue using schedule_work() for asynchronous runs is generalized in the following SmPL grammar patch, when applied to next-20150505 only the firmware_class code is affected. This grammar patch can and should further be generalized to vet for for other kernel asynchronous mechanisms. @ calls_schedule_work @ type T; T *priv_work; identifier func, work_func; identifier work; identifier priv_name, name; expression gfp; @@ func(..., const char *name, ...) { ... priv_work = kzalloc(sizeof(T), gfp); ... - priv_work->priv_name = name; + priv_work->priv_name = kstrdup_const(name, gfp); ... (... when any if (...) { ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } ) ... when any INIT_WORK(&priv_work->work, work_func); ... schedule_work(&priv_work->work); ... } @ the_work_func depends on calls_schedule_work @ type calls_schedule_work.T; T *priv_work; identifier calls_schedule_work.work_func; identifier calls_schedule_work.priv_name; identifier calls_schedule_work.work; identifier some_work; @@ work_func(...) { ... priv_work = container_of(some_work, T, work); ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } [0] https://github.com/mcgrof/fake-firmware-test.git [1] The following kernel ring buffer splat: firmware name: test_module_stuff.bin firmware name: firmware found general protection fault: 0000 [#1] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 Workqueue: events request_firmware_work_func task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff814a586c>] [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP: 0000:ffff8800c7f97d78 EFLAGS: 00010286 RAX: ffffffff81ae3700 RBX: ffffffff816d1181 RCX: 0000000000000006 RDX: 0001ee850ff68500 RSI: 0000000000000246 RDI: c35d5f415e415d41 RBP: ffff8800c7f97d88 R08: 000000000000000a R09: 0000000000000000 R10: 0000000000000358 R11: ffff8800c7f97a7e R12: ffff8800c7ec1e80 R13: ffff88021e2d4cc0 R14: ffff88021e2dff00 R15: 00000000000000c0 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00000000034b8cd8 CR3: 000000021073c000 CR4: 00000000001407e0 Stack: ffffffff816d1181 ffff8800c7ec1e80 ffff8800c7f97da8 ffffffff814a58f8 000000000000000a ffffffff816d1181 ffff8800c7f97dc8 ffffffffa047002c ffff88021e2dff00 ffff8802116ac1c0 ffff8800c7f97df8 ffffffff814a65fe Call Trace: [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: c7 c6 dd ad a3 81 48 c7 c7 20 97 ce 81 31 c0 e8 0b b2 ed ff e9 78 ff ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 54 53 <4c> 8b 67 38 48 89 fb 4c 89 e7 e8 85 f7 22 00 f0 83 2b 01 74 0f RIP [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP <ffff8800c7f97d78> ---[ end trace 4e62c56a58d0eac1 ]--- BUG: unable to handle kernel paging request at ffffffffffffffd8 IP: [<ffffffff81093ee0>] kthread_data+0x10/0x20 PGD 1c13067 PUD 1c15067 PMD 0 Oops: 0000 [#2] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G D O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff81092ee0>] [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP: 0018:ffff8800c7f97b18 EFLAGS: 00010096 RAX: 0000000000000000 RBX: 0000000000000003 RCX: 000000000000000d RDX: 0000000000000003 RSI: 0000000000000003 RDI: ffff8800c7f8e290 RBP: ffff8800c7f97b18 R08: 000000000000bc00 R09: 0000000000007e76 R10: 0000000000000001 R11: 000000000000002f R12: ffff8800c7f8e290 R13: 00000000000154c0 R14: 0000000000000003 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000028 CR3: 0000000210675000 CR4: 00000000001407e0 Stack: ffff8800c7f97b38 ffffffff8108dcd5 ffff8800c7f97b38 ffff88021e2d54c0 ffff8800c7f97b88 ffffffff816d1500 ffff880213d42368 ffff8800c7f8e290 ffff8800c7f97b88 ffff8800c7f97fd8 ffff8800c7f8e710 0000000000000246 Call Trace: [<ffffffff8108dcd5>] wq_worker_sleeping+0x15/0xa0 [<ffffffff816d1500>] __schedule+0x6e0/0x940 [<ffffffff816d1797>] schedule+0x37/0x90 [<ffffffff810779bc>] do_exit+0x6bc/0xb40 [<ffffffff8101898f>] oops_end+0x9f/0xe0 [<ffffffff81018efb>] die+0x4b/0x70 [<ffffffff81015622>] do_general_protection+0xe2/0x170 [<ffffffff816d74e8>] general_protection+0x28/0x30 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a586c>] ? fw_free_buf+0xc/0x40 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: 00 48 89 e5 5d 48 8b 40 c8 48 c1 e8 02 83 e0 01 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 87 30 05 00 00 55 48 89 e5 <48> 8b 40 d8 5d c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 RIP [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP <ffff8800c7f97b18> CR2: ffffffffffffffd8 ---[ end trace 4e62c56a58d0eac2 ]--- Fixing recursive fault but reboot is needed! Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Generated-by: Coccinelle SmPL Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
return -ENOMEM;
}
fw_work->device = device;
fw_work->context = context;
fw_work->cont = cont;
fw_work->opt_flags = FW_OPT_NOWAIT | FW_OPT_FALLBACK |
firmware loader: allow disabling of udev as firmware loader [The patch was originally proposed by Tom Gundersen, and rewritten afterwards by me; most of changelogs below borrowed from Tom's original patch -- tiwai] Currently (at least) the dell-rbu driver selects FW_LOADER_USER_HELPER, which means that distros can't really stop loading firmware through udev without breaking other users (though some have). Ideally we would remove/disable the udev firmware helper in both the kernel and in udev, but if we were to disable it in udev and not the kernel, the result would be (seemingly) hung kernels as no one would be around to cancel firmware requests. This patch allows udev firmware loading to be disabled while still allowing non-udev firmware loading, as done by the dell-rbu driver, to continue working. This is achieved by only using the fallback mechanism when the uevent is suppressed. The patch renames the user-selectable Kconfig from FW_LOADER_USER_HELPER to FW_LOADER_USER_HELPER_FALLBACK, and the former is reverse-selected by the latter or the drivers that need userhelper like dell-rbu. Also, the "default y" is removed together with this change, since it's been deprecated in udev upstream, thus rather better to disable it nowadays. Tested with FW_LOADER_USER_HELPER=n LATTICE_ECP3_CONFIG=y DELL_RBU=y and udev without the firmware loading support, but I don't have the hardware to test the lattice/dell drivers, so additional testing would be appreciated. Reviewed-by: Tom Gundersen <teg@jklm.no> Cc: Ming Lei <ming.lei@canonical.com> Cc: Abhay Salunke <Abhay_Salunke@dell.com> Cc: Stefan Roese <sr@denx.de> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Kay Sievers <kay@vrfy.org> Tested-by: Balaji Singh <B_B_Singh@DELL.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years ago
(uevent ? FW_OPT_UEVENT : FW_OPT_USERHELPER);
if (!try_module_get(module)) {
firmware: fix possible use after free on name on asynchronous request Asynchronous firmware loading copies the pointer to the name passed as an argument only to be scheduled later and used. This behaviour works well for synchronous calling but in asynchronous mode there's a chance the caller could immediately free the passed string after making the asynchronous call. This could trigger a use after free having the kernel look on disk for arbitrary file names. In order to force-test the issue you can use a test-driver designed to illustrate this issue on github [0], use the next-20150505-fix-use-after-free branch. With this patch applied you get: [ 283.512445] firmware name: test_module_stuff.bin [ 287.514020] firmware name: test_module_stuff.bin [ 287.532489] firmware found Without this patch applied you can end up with something such as: [ 135.624216] firmware name: \xffffff80BJ [ 135.624249] platform fake-dev.0: Direct firmware load for \xffffff80Bi failed with error -2 [ 135.624252] No firmware found [ 135.624252] firmware found Unfortunatley in the worst and most common case however you can typically crash your system with a page fault by trying to free something which you cannot, and/or a NULL pointer dereference [1]. The fix and issue using schedule_work() for asynchronous runs is generalized in the following SmPL grammar patch, when applied to next-20150505 only the firmware_class code is affected. This grammar patch can and should further be generalized to vet for for other kernel asynchronous mechanisms. @ calls_schedule_work @ type T; T *priv_work; identifier func, work_func; identifier work; identifier priv_name, name; expression gfp; @@ func(..., const char *name, ...) { ... priv_work = kzalloc(sizeof(T), gfp); ... - priv_work->priv_name = name; + priv_work->priv_name = kstrdup_const(name, gfp); ... (... when any if (...) { ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } ) ... when any INIT_WORK(&priv_work->work, work_func); ... schedule_work(&priv_work->work); ... } @ the_work_func depends on calls_schedule_work @ type calls_schedule_work.T; T *priv_work; identifier calls_schedule_work.work_func; identifier calls_schedule_work.priv_name; identifier calls_schedule_work.work; identifier some_work; @@ work_func(...) { ... priv_work = container_of(some_work, T, work); ... + kfree_const(priv_work->priv_name); kfree(priv_work); ... } [0] https://github.com/mcgrof/fake-firmware-test.git [1] The following kernel ring buffer splat: firmware name: test_module_stuff.bin firmware name: firmware found general protection fault: 0000 [#1] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 Workqueue: events request_firmware_work_func task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff814a586c>] [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP: 0000:ffff8800c7f97d78 EFLAGS: 00010286 RAX: ffffffff81ae3700 RBX: ffffffff816d1181 RCX: 0000000000000006 RDX: 0001ee850ff68500 RSI: 0000000000000246 RDI: c35d5f415e415d41 RBP: ffff8800c7f97d88 R08: 000000000000000a R09: 0000000000000000 R10: 0000000000000358 R11: ffff8800c7f97a7e R12: ffff8800c7ec1e80 R13: ffff88021e2d4cc0 R14: ffff88021e2dff00 R15: 00000000000000c0 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00000000034b8cd8 CR3: 000000021073c000 CR4: 00000000001407e0 Stack: ffffffff816d1181 ffff8800c7ec1e80 ffff8800c7f97da8 ffffffff814a58f8 000000000000000a ffffffff816d1181 ffff8800c7f97dc8 ffffffffa047002c ffff88021e2dff00 ffff8802116ac1c0 ffff8800c7f97df8 ffffffff814a65fe Call Trace: [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: c7 c6 dd ad a3 81 48 c7 c7 20 97 ce 81 31 c0 e8 0b b2 ed ff e9 78 ff ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 54 53 <4c> 8b 67 38 48 89 fb 4c 89 e7 e8 85 f7 22 00 f0 83 2b 01 74 0f RIP [<ffffffff814a586c>] fw_free_buf+0xc/0x40 RSP <ffff8800c7f97d78> ---[ end trace 4e62c56a58d0eac1 ]--- BUG: unable to handle kernel paging request at ffffffffffffffd8 IP: [<ffffffff81093ee0>] kthread_data+0x10/0x20 PGD 1c13067 PUD 1c15067 PMD 0 Oops: 0000 [#2] SMP Modules linked in: test(O) <...etc-it-does-not-matter> drm sr_mod cdrom xhci_pci xhci_hcd rtsx_pci mfd_core video button sg CPU: 3 PID: 87 Comm: kworker/3:2 Tainted: G D O 4.0.0-00010-g22b5bb0-dirty #176 Hardware name: LENOVO 20AW000LUS/20AW000LUS, BIOS GLET43WW (1.18 ) 12/04/2013 task: ffff8800c7f8e290 ti: ffff8800c7f94000 task.ti: ffff8800c7f94000 RIP: 0010:[<ffffffff81092ee0>] [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP: 0018:ffff8800c7f97b18 EFLAGS: 00010096 RAX: 0000000000000000 RBX: 0000000000000003 RCX: 000000000000000d RDX: 0000000000000003 RSI: 0000000000000003 RDI: ffff8800c7f8e290 RBP: ffff8800c7f97b18 R08: 000000000000bc00 R09: 0000000000007e76 R10: 0000000000000001 R11: 000000000000002f R12: ffff8800c7f8e290 R13: 00000000000154c0 R14: 0000000000000003 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff88021e2c0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000028 CR3: 0000000210675000 CR4: 00000000001407e0 Stack: ffff8800c7f97b38 ffffffff8108dcd5 ffff8800c7f97b38 ffff88021e2d54c0 ffff8800c7f97b88 ffffffff816d1500 ffff880213d42368 ffff8800c7f8e290 ffff8800c7f97b88 ffff8800c7f97fd8 ffff8800c7f8e710 0000000000000246 Call Trace: [<ffffffff8108dcd5>] wq_worker_sleeping+0x15/0xa0 [<ffffffff816d1500>] __schedule+0x6e0/0x940 [<ffffffff816d1797>] schedule+0x37/0x90 [<ffffffff810779bc>] do_exit+0x6bc/0xb40 [<ffffffff8101898f>] oops_end+0x9f/0xe0 [<ffffffff81018efb>] die+0x4b/0x70 [<ffffffff81015622>] do_general_protection+0xe2/0x170 [<ffffffff816d74e8>] general_protection+0x28/0x30 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a586c>] ? fw_free_buf+0xc/0x40 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff814a58f8>] release_firmware+0x58/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffffa047002c>] test_mod_cb+0x2c/0x43 [test] [<ffffffff814a65fe>] request_firmware_work_func+0x5e/0x80 [<ffffffff816d1181>] ? __schedule+0x361/0x940 [<ffffffff8108d23a>] process_one_work+0x14a/0x3f0 [<ffffffff8108d911>] worker_thread+0x121/0x460 [<ffffffff8108d7f0>] ? rescuer_thread+0x310/0x310 [<ffffffff810928f9>] kthread+0xc9/0xe0 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 [<ffffffff816d52d8>] ret_from_fork+0x58/0x90 [<ffffffff81092830>] ? kthread_create_on_node+0x180/0x180 Code: 00 48 89 e5 5d 48 8b 40 c8 48 c1 e8 02 83 e0 01 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 8b 87 30 05 00 00 55 48 89 e5 <48> 8b 40 d8 5d c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 RIP [<ffffffff81092ee0>] kthread_data+0x10/0x20 RSP <ffff8800c7f97b18> CR2: ffffffffffffffd8 ---[ end trace 4e62c56a58d0eac2 ]--- Fixing recursive fault but reboot is needed! Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Generated-by: Coccinelle SmPL Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
kfree_const(fw_work->name);
kfree(fw_work);
return -EFAULT;
}
get_device(fw_work->device);
INIT_WORK(&fw_work->work, request_firmware_work_func);
schedule_work(&fw_work->work);
return 0;
}
EXPORT_SYMBOL(request_firmware_nowait);
#ifdef CONFIG_FW_CACHE
static ASYNC_DOMAIN_EXCLUSIVE(fw_cache_domain);
/**
* cache_firmware - cache one firmware image in kernel memory space
* @fw_name: the firmware image name
*
* Cache firmware in kernel memory so that drivers can use it when
* system isn't ready for them to request firmware image from userspace.
* Once it returns successfully, driver can use request_firmware or its
* nowait version to get the cached firmware without any interacting
* with userspace
*
* Return 0 if the firmware image has been cached successfully
* Return !0 otherwise
*
*/
static int cache_firmware(const char *fw_name)
{
int ret;
const struct firmware *fw;
pr_debug("%s: %s\n", __func__, fw_name);
ret = request_firmware(&fw, fw_name, NULL);
if (!ret)
kfree(fw);
pr_debug("%s: %s ret=%d\n", __func__, fw_name, ret);
return ret;
}
static struct firmware_buf *fw_lookup_buf(const char *fw_name)
{
struct firmware_buf *tmp;
struct firmware_cache *fwc = &fw_cache;
spin_lock(&fwc->lock);
tmp = __fw_lookup_buf(fw_name);
spin_unlock(&fwc->lock);
return tmp;
}
/**
* uncache_firmware - remove one cached firmware image
* @fw_name: the firmware image name
*
* Uncache one firmware image which has been cached successfully
* before.
*
* Return 0 if the firmware cache has been removed successfully
* Return !0 otherwise
*
*/
static int uncache_firmware(const char *fw_name)
{
struct firmware_buf *buf;
struct firmware fw;
pr_debug("%s: %s\n", __func__, fw_name);
firmware: support loading into a pre-allocated buffer Some systems are memory constrained but they need to load very large firmwares. The firmware subsystem allows drivers to request this firmware be loaded from the filesystem, but this requires that the entire firmware be loaded into kernel memory first before it's provided to the driver. This can lead to a situation where we map the firmware twice, once to load the firmware into kernel memory and once to copy the firmware into the final resting place. This creates needless memory pressure and delays loading because we have to copy from kernel memory to somewhere else. Let's add a request_firmware_into_buf() API that allows drivers to request firmware be loaded directly into a pre-allocated buffer. This skips the intermediate step of allocating a buffer in kernel memory to hold the firmware image while it's read from the filesystem. It also requires that drivers know how much memory they'll require before requesting the firmware and negates any benefits of firmware caching because the firmware layer doesn't manage the buffer lifetime. For a 16MB buffer, about half the time is spent performing a memcpy from the buffer to the final resting place. I see loading times go from 0.081171 seconds to 0.047696 seconds after applying this patch. Plus the vmalloc pressure is reduced. This is based on a patch from Vikram Mulukutla on codeaurora.org: https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/commit/drivers/base/firmware_class.c?h=rel/msm-3.18&id=0a328c5f6cd999f5c591f172216835636f39bcb5 Link: http://lkml.kernel.org/r/20160607164741.31849-4-stephen.boyd@linaro.org Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Vikram Mulukutla <markivx@codeaurora.org> Cc: Mark Brown <broonie@kernel.org> Cc: Ming Lei <ming.lei@canonical.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
9 years ago
if (fw_get_builtin_firmware(&fw, fw_name, NULL, 0))
return 0;
buf = fw_lookup_buf(fw_name);
if (buf) {
fw_free_buf(buf);
return 0;
}
return -EINVAL;
}
static struct fw_cache_entry *alloc_fw_cache_entry(const char *name)
{
struct fw_cache_entry *fce;
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
fce = kzalloc(sizeof(*fce), GFP_ATOMIC);
if (!fce)
goto exit;
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
fce->name = kstrdup_const(name, GFP_ATOMIC);
if (!fce->name) {
kfree(fce);
fce = NULL;
goto exit;
}
exit:
return fce;
}
static int __fw_entry_found(const char *name)
{
struct firmware_cache *fwc = &fw_cache;
struct fw_cache_entry *fce;
list_for_each_entry(fce, &fwc->fw_names, list) {
if (!strcmp(fce->name, name))
return 1;
}
return 0;
}
static int fw_cache_piggyback_on_request(const char *name)
{
struct firmware_cache *fwc = &fw_cache;
struct fw_cache_entry *fce;
int ret = 0;
spin_lock(&fwc->name_lock);
if (__fw_entry_found(name))
goto found;
fce = alloc_fw_cache_entry(name);
if (fce) {
ret = 1;
list_add(&fce->list, &fwc->fw_names);
pr_debug("%s: fw: %s\n", __func__, name);
}
found:
spin_unlock(&fwc->name_lock);
return ret;
}
static void free_fw_cache_entry(struct fw_cache_entry *fce)
{
firmware: use const for remaining firmware names We currently use flexible arrays with a char at the end for the remaining internal firmware name uses. There are two limitations with the way we use this. Since we're using a flexible array for a string on the struct if we wanted to use two strings it means we'd have a disjoint means of handling the strings, one using the flexible array, and another a char * pointer. We're also currently not using 'const' for the string. We wish to later extend some firmware data structures with other string/char pointers, but we also want to be very pedantic about const usage. Since we're going to change things to use 'const' we might as well also address unified way to use multiple strings on the structs. Replace the flexible array practice for strings with kstrdup_const() and kfree_const(), this will avoid allocations when the vmlinux .rodata is used, and just allocate a new proper string for us when needed. This also means we can simplify the struct allocations by removing the string length from the allocation size computation, which would otherwise get even more complicated when supporting multiple strings. Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: David Howells <dhowells@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Seth Forshee <seth.forshee@canonical.com> Cc: Kyle McMartin <kyle@kernel.org> Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
10 years ago
kfree_const(fce->name);
kfree(fce);
}
static void __async_dev_cache_fw_image(void *fw_entry,
async_cookie_t cookie)
{
struct fw_cache_entry *fce = fw_entry;
struct firmware_cache *fwc = &fw_cache;
int ret;
ret = cache_firmware(fce->name);
if (ret) {
spin_lock(&fwc->name_lock);
list_del(&fce->list);
spin_unlock(&fwc->name_lock);
free_fw_cache_entry(fce);
}
}
/* called with dev->devres_lock held */
static void dev_create_fw_entry(struct device *dev, void *res,
void *data)
{
struct fw_name_devm *fwn = res;
const char *fw_name = fwn->name;
struct list_head *head = data;
struct fw_cache_entry *fce;
fce = alloc_fw_cache_entry(fw_name);
if (fce)
list_add(&fce->list, head);
}
static int devm_name_match(struct device *dev, void *res,
void *match_data)
{
struct fw_name_devm *fwn = res;
return (fwn->magic == (unsigned long)match_data);
}
static void dev_cache_fw_image(struct device *dev, void *data)
{
LIST_HEAD(todo);
struct fw_cache_entry *fce;
struct fw_cache_entry *fce_next;
struct firmware_cache *fwc = &fw_cache;
devres_for_each_res(dev, fw_name_devm_release,
devm_name_match, &fw_cache,
dev_create_fw_entry, &todo);
list_for_each_entry_safe(fce, fce_next, &todo, list) {
list_del(&fce->list);
spin_lock(&fwc->name_lock);
/* only one cache entry for one firmware */
if (!__fw_entry_found(fce->name)) {
list_add(&fce->list, &fwc->fw_names);
} else {
free_fw_cache_entry(fce);
fce = NULL;
}
spin_unlock(&fwc->name_lock);
if (fce)
async_schedule_domain(__async_dev_cache_fw_image,
(void *)fce,
&fw_cache_domain);
}
}
static void __device_uncache_fw_images(void)
{
struct firmware_cache *fwc = &fw_cache;
struct fw_cache_entry *fce;
spin_lock(&fwc->name_lock);
while (!list_empty(&fwc->fw_names)) {
fce = list_entry(fwc->fw_names.next,
struct fw_cache_entry, list);
list_del(&fce->list);
spin_unlock(&fwc->name_lock);
uncache_firmware(fce->name);
free_fw_cache_entry(fce);
spin_lock(&fwc->name_lock);
}
spin_unlock(&fwc->name_lock);
}
/**
* device_cache_fw_images - cache devices' firmware
*
* If one device called request_firmware or its nowait version
* successfully before, the firmware names are recored into the
* device's devres link list, so device_cache_fw_images can call
* cache_firmware() to cache these firmwares for the device,
* then the device driver can load its firmwares easily at
* time when system is not ready to complete loading firmware.
*/
static void device_cache_fw_images(void)
{
struct firmware_cache *fwc = &fw_cache;
int old_timeout;
DEFINE_WAIT(wait);
pr_debug("%s\n", __func__);
/* cancel uncache work */
cancel_delayed_work_sync(&fwc->work);
/*
* use small loading timeout for caching devices' firmware
* because all these firmware images have been loaded
* successfully at lease once, also system is ready for
* completing firmware loading now. The maximum size of
* firmware in current distributions is about 2M bytes,
* so 10 secs should be enough.
*/
old_timeout = loading_timeout;
loading_timeout = 10;
mutex_lock(&fw_lock);
fwc->state = FW_LOADER_START_CACHE;
dpm_for_each_dev(NULL, dev_cache_fw_image);
mutex_unlock(&fw_lock);
/* wait for completion of caching firmware for all devices */
async_synchronize_full_domain(&fw_cache_domain);
loading_timeout = old_timeout;
}
/**
* device_uncache_fw_images - uncache devices' firmware
*
* uncache all firmwares which have been cached successfully
* by device_uncache_fw_images earlier
*/
static void device_uncache_fw_images(void)
{
pr_debug("%s\n", __func__);
__device_uncache_fw_images();
}
static void device_uncache_fw_images_work(struct work_struct *work)
{
device_uncache_fw_images();
}
/**
* device_uncache_fw_images_delay - uncache devices firmwares
* @delay: number of milliseconds to delay uncache device firmwares
*
* uncache all devices's firmwares which has been cached successfully
* by device_cache_fw_images after @delay milliseconds.
*/
static void device_uncache_fw_images_delay(unsigned long delay)
{
queue_delayed_work(system_power_efficient_wq, &fw_cache.work,
msecs_to_jiffies(delay));
}
static int fw_pm_notify(struct notifier_block *notify_block,
unsigned long mode, void *unused)
{
switch (mode) {
case PM_HIBERNATION_PREPARE:
case PM_SUSPEND_PREPARE:
case PM_RESTORE_PREPARE:
/*
* kill pending fallback requests with a custom fallback
* to avoid stalling suspend.
*/
kill_pending_fw_fallback_reqs(true);
device_cache_fw_images();
break;
case PM_POST_SUSPEND:
case PM_POST_HIBERNATION:
case PM_POST_RESTORE:
/*
* In case that system sleep failed and syscore_suspend is
* not called.
*/
mutex_lock(&fw_lock);
fw_cache.state = FW_LOADER_NO_CACHE;
mutex_unlock(&fw_lock);
device_uncache_fw_images_delay(10 * MSEC_PER_SEC);
break;
}
return 0;
}
/* stop caching firmware once syscore_suspend is reached */
static int fw_suspend(void)
{
fw_cache.state = FW_LOADER_NO_CACHE;
return 0;
}
static struct syscore_ops fw_syscore_ops = {
.suspend = fw_suspend,
};
#else
static int fw_cache_piggyback_on_request(const char *name)
{
return 0;
}
#endif
static void __init fw_cache_init(void)
{
spin_lock_init(&fw_cache.lock);
INIT_LIST_HEAD(&fw_cache.head);
fw_cache.state = FW_LOADER_NO_CACHE;
#ifdef CONFIG_FW_CACHE
spin_lock_init(&fw_cache.name_lock);
INIT_LIST_HEAD(&fw_cache.fw_names);
INIT_DELAYED_WORK(&fw_cache.work,
device_uncache_fw_images_work);
fw_cache.pm_notify.notifier_call = fw_pm_notify;
register_pm_notifier(&fw_cache.pm_notify);
register_syscore_ops(&fw_syscore_ops);
#endif
}
static int fw_shutdown_notify(struct notifier_block *unused1,
unsigned long unused2, void *unused3)
{
/*
* Kill all pending fallback requests to avoid both stalling shutdown,
* and avoid a deadlock with the usermode_lock.
*/
kill_pending_fw_fallback_reqs(false);
return NOTIFY_DONE;
}
static struct notifier_block fw_shutdown_nb = {
.notifier_call = fw_shutdown_notify,
};
static int __init firmware_class_init(void)
{
fw_cache_init();
register_reboot_notifier(&fw_shutdown_nb);
#ifdef CONFIG_FW_LOADER_USER_HELPER
return class_register(&firmware_class);
#else
return 0;
#endif
}
static void __exit firmware_class_exit(void)
{
#ifdef CONFIG_FW_CACHE
unregister_syscore_ops(&fw_syscore_ops);
unregister_pm_notifier(&fw_cache.pm_notify);
#endif
unregister_reboot_notifier(&fw_shutdown_nb);
#ifdef CONFIG_FW_LOADER_USER_HELPER
class_unregister(&firmware_class);
#endif
}
fs_initcall(firmware_class_init);
module_exit(firmware_class_exit);