From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Hans de Goede <hdegoede@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
Andy Shevchenko <andy.shevchenko@gmail.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 5.2 083/185] x86/platform/intel/iosf_mbi Rewrite locking
Date: Sun, 22 Sep 2019 14:47:41 -0400 [thread overview]
Message-ID: <20190922184924.32534-83-sashal@kernel.org> (raw)
In-Reply-To: <20190922184924.32534-1-sashal@kernel.org>
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 00452ba9fdb5bf6fb5fea1dae5227b4bbed44fc4 ]
There are 2 problems with the old iosf PMIC I2C bus arbritration code which
need to be addressed:
1. The lockdep code complains about a possible deadlock in the
iosf_mbi_[un]block_punit_i2c_access code:
[ 6.712662] ======================================================
[ 6.712673] WARNING: possible circular locking dependency detected
[ 6.712685] 5.3.0-rc2+ #79 Not tainted
[ 6.712692] ------------------------------------------------------
[ 6.712702] kworker/0:1/7 is trying to acquire lock:
[ 6.712712] 00000000df1c5681 (iosf_mbi_block_punit_i2c_access_count_mutex){+.+.}, at: iosf_mbi_unblock_punit_i2c_access+0x13/0x90
[ 6.712739]
but task is already holding lock:
[ 6.712749] 0000000067cb23e7 (iosf_mbi_punit_mutex){+.+.}, at: iosf_mbi_block_punit_i2c_access+0x97/0x186
[ 6.712768]
which lock already depends on the new lock.
[ 6.712780]
the existing dependency chain (in reverse order) is:
[ 6.712792]
-> #1 (iosf_mbi_punit_mutex){+.+.}:
[ 6.712808] __mutex_lock+0xa8/0x9a0
[ 6.712818] iosf_mbi_block_punit_i2c_access+0x97/0x186
[ 6.712831] i2c_dw_acquire_lock+0x20/0x30
[ 6.712841] i2c_dw_set_reg_access+0x15/0xb0
[ 6.712851] i2c_dw_probe+0x57/0x473
[ 6.712861] dw_i2c_plat_probe+0x33e/0x640
[ 6.712874] platform_drv_probe+0x38/0x80
[ 6.712884] really_probe+0xf3/0x380
[ 6.712894] driver_probe_device+0x59/0xd0
[ 6.712905] bus_for_each_drv+0x84/0xd0
[ 6.712915] __device_attach+0xe4/0x170
[ 6.712925] bus_probe_device+0x9f/0xb0
[ 6.712935] deferred_probe_work_func+0x79/0xd0
[ 6.712946] process_one_work+0x234/0x560
[ 6.712957] worker_thread+0x50/0x3b0
[ 6.712967] kthread+0x10a/0x140
[ 6.712977] ret_from_fork+0x3a/0x50
[ 6.712986]
-> #0 (iosf_mbi_block_punit_i2c_access_count_mutex){+.+.}:
[ 6.713004] __lock_acquire+0xe07/0x1930
[ 6.713015] lock_acquire+0x9d/0x1a0
[ 6.713025] __mutex_lock+0xa8/0x9a0
[ 6.713035] iosf_mbi_unblock_punit_i2c_access+0x13/0x90
[ 6.713047] i2c_dw_set_reg_access+0x4d/0xb0
[ 6.713058] i2c_dw_probe+0x57/0x473
[ 6.713068] dw_i2c_plat_probe+0x33e/0x640
[ 6.713079] platform_drv_probe+0x38/0x80
[ 6.713089] really_probe+0xf3/0x380
[ 6.713099] driver_probe_device+0x59/0xd0
[ 6.713109] bus_for_each_drv+0x84/0xd0
[ 6.713119] __device_attach+0xe4/0x170
[ 6.713129] bus_probe_device+0x9f/0xb0
[ 6.713140] deferred_probe_work_func+0x79/0xd0
[ 6.713150] process_one_work+0x234/0x560
[ 6.713160] worker_thread+0x50/0x3b0
[ 6.713170] kthread+0x10a/0x140
[ 6.713180] ret_from_fork+0x3a/0x50
[ 6.713189]
other info that might help us debug this:
[ 6.713202] Possible unsafe locking scenario:
[ 6.713212] CPU0 CPU1
[ 6.713221] ---- ----
[ 6.713229] lock(iosf_mbi_punit_mutex);
[ 6.713239] lock(iosf_mbi_block_punit_i2c_access_count_mutex);
[ 6.713253] lock(iosf_mbi_punit_mutex);
[ 6.713265] lock(iosf_mbi_block_punit_i2c_access_count_mutex);
[ 6.713276]
*** DEADLOCK ***
In practice can never happen because only the first caller which
increments iosf_mbi_block_punit_i2c_access_count will also take
iosf_mbi_punit_mutex, that is the whole purpose of the counter, which
itself is protected by iosf_mbi_block_punit_i2c_access_count_mutex.
But there is no way to tell the lockdep code about this and we really
want to be able to run a kernel with lockdep enabled without these
warnings being triggered.
2. The lockdep warning also points out another real problem, if 2 threads
both are in a block of code protected by iosf_mbi_block_punit_i2c_access
and the first thread to acquire the block exits before the second thread
then the second thread will call mutex_unlock on iosf_mbi_punit_mutex,
but it is not the thread which took the mutex and unlocking by another
thread is not allowed.
Fix this by getting rid of the notion of holding a mutex for the entire
duration of the PMIC accesses, be it either from the PUnit side, or from an
in kernel I2C driver. In general holding a mutex after exiting a function
is a bad idea and the above problems show this case is no different.
Instead 2 counters are now used, one for PMIC accesses from the PUnit
and one for accesses from in kernel I2C code. When access is requested
now the code will wait (using a waitqueue) for the counter of the other
type of access to reach 0 and on release, if the counter reaches 0 the
wakequeue is woken.
Note that the counter approach is necessary to allow nested calls.
The main reason for this is so that a series of i2c transfers can be done
with the punit blocked from accessing the bus the whole time. This is
necessary to be able to safely read/modify/write a PMIC register without
racing with the PUNIT doing the same thing.
Allowing nested iosf_mbi_block_punit_i2c_access() calls also is desirable
from a performance pov since the whole dance necessary to block the PUnit
from accessing the PMIC I2C bus is somewhat expensive.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lkml.kernel.org/r/20190812102113.95794-1-hdegoede@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/platform/intel/iosf_mbi.c | 100 ++++++++++++++++++-----------
1 file changed, 62 insertions(+), 38 deletions(-)
diff --git a/arch/x86/platform/intel/iosf_mbi.c b/arch/x86/platform/intel/iosf_mbi.c
index b393eaa798efd..0099826c88a87 100644
--- a/arch/x86/platform/intel/iosf_mbi.c
+++ b/arch/x86/platform/intel/iosf_mbi.c
@@ -17,6 +17,7 @@
#include <linux/debugfs.h>
#include <linux/capability.h>
#include <linux/pm_qos.h>
+#include <linux/wait.h>
#include <asm/iosf_mbi.h>
@@ -201,23 +202,45 @@ EXPORT_SYMBOL(iosf_mbi_available);
#define PUNIT_SEMAPHORE_BIT BIT(0)
#define PUNIT_SEMAPHORE_ACQUIRE BIT(1)
-static DEFINE_MUTEX(iosf_mbi_punit_mutex);
-static DEFINE_MUTEX(iosf_mbi_block_punit_i2c_access_count_mutex);
+static DEFINE_MUTEX(iosf_mbi_pmic_access_mutex);
static BLOCKING_NOTIFIER_HEAD(iosf_mbi_pmic_bus_access_notifier);
-static u32 iosf_mbi_block_punit_i2c_access_count;
+static DECLARE_WAIT_QUEUE_HEAD(iosf_mbi_pmic_access_waitq);
+static u32 iosf_mbi_pmic_punit_access_count;
+static u32 iosf_mbi_pmic_i2c_access_count;
static u32 iosf_mbi_sem_address;
static unsigned long iosf_mbi_sem_acquired;
static struct pm_qos_request iosf_mbi_pm_qos;
void iosf_mbi_punit_acquire(void)
{
- mutex_lock(&iosf_mbi_punit_mutex);
+ /* Wait for any I2C PMIC accesses from in kernel drivers to finish. */
+ mutex_lock(&iosf_mbi_pmic_access_mutex);
+ while (iosf_mbi_pmic_i2c_access_count != 0) {
+ mutex_unlock(&iosf_mbi_pmic_access_mutex);
+ wait_event(iosf_mbi_pmic_access_waitq,
+ iosf_mbi_pmic_i2c_access_count == 0);
+ mutex_lock(&iosf_mbi_pmic_access_mutex);
+ }
+ /*
+ * We do not need to do anything to allow the PUNIT to safely access
+ * the PMIC, other then block in kernel accesses to the PMIC.
+ */
+ iosf_mbi_pmic_punit_access_count++;
+ mutex_unlock(&iosf_mbi_pmic_access_mutex);
}
EXPORT_SYMBOL(iosf_mbi_punit_acquire);
void iosf_mbi_punit_release(void)
{
- mutex_unlock(&iosf_mbi_punit_mutex);
+ bool do_wakeup;
+
+ mutex_lock(&iosf_mbi_pmic_access_mutex);
+ iosf_mbi_pmic_punit_access_count--;
+ do_wakeup = iosf_mbi_pmic_punit_access_count == 0;
+ mutex_unlock(&iosf_mbi_pmic_access_mutex);
+
+ if (do_wakeup)
+ wake_up(&iosf_mbi_pmic_access_waitq);
}
EXPORT_SYMBOL(iosf_mbi_punit_release);
@@ -256,34 +279,32 @@ static void iosf_mbi_reset_semaphore(void)
* already blocked P-Unit accesses because it wants them blocked over multiple
* i2c-transfers, for e.g. read-modify-write of an I2C client register.
*
- * The P-Unit accesses already being blocked is tracked through the
- * iosf_mbi_block_punit_i2c_access_count variable which is protected by the
- * iosf_mbi_block_punit_i2c_access_count_mutex this mutex is hold for the
- * entire duration of the function.
- *
- * If access is not blocked yet, this function takes the following steps:
+ * To allow safe PMIC i2c bus accesses this function takes the following steps:
*
* 1) Some code sends request to the P-Unit which make it access the PMIC
* I2C bus. Testing has shown that the P-Unit does not check its internal
* PMIC bus semaphore for these requests. Callers of these requests call
* iosf_mbi_punit_acquire()/_release() around their P-Unit accesses, these
- * functions lock/unlock the iosf_mbi_punit_mutex.
- * As the first step we lock the iosf_mbi_punit_mutex, to wait for any in
- * flight requests to finish and to block any new requests.
+ * functions increase/decrease iosf_mbi_pmic_punit_access_count, so first
+ * we wait for iosf_mbi_pmic_punit_access_count to become 0.
+ *
+ * 2) Check iosf_mbi_pmic_i2c_access_count, if access has already
+ * been blocked by another caller, we only need to increment
+ * iosf_mbi_pmic_i2c_access_count and we can skip the other steps.
*
- * 2) Some code makes such P-Unit requests from atomic contexts where it
+ * 3) Some code makes such P-Unit requests from atomic contexts where it
* cannot call iosf_mbi_punit_acquire() as that may sleep.
* As the second step we call a notifier chain which allows any code
* needing P-Unit resources from atomic context to acquire them before
* we take control over the PMIC I2C bus.
*
- * 3) When CPU cores enter C6 or C7 the P-Unit needs to talk to the PMIC
+ * 4) When CPU cores enter C6 or C7 the P-Unit needs to talk to the PMIC
* if this happens while the kernel itself is accessing the PMIC I2C bus
* the SoC hangs.
* As the third step we call pm_qos_update_request() to disallow the CPU
* to enter C6 or C7.
*
- * 4) The P-Unit has a PMIC bus semaphore which we can request to stop
+ * 5) The P-Unit has a PMIC bus semaphore which we can request to stop
* autonomous P-Unit tasks from accessing the PMIC I2C bus while we hold it.
* As the fourth and final step we request this semaphore and wait for our
* request to be acknowledged.
@@ -297,12 +318,18 @@ int iosf_mbi_block_punit_i2c_access(void)
if (WARN_ON(!mbi_pdev || !iosf_mbi_sem_address))
return -ENXIO;
- mutex_lock(&iosf_mbi_block_punit_i2c_access_count_mutex);
+ mutex_lock(&iosf_mbi_pmic_access_mutex);
- if (iosf_mbi_block_punit_i2c_access_count > 0)
+ while (iosf_mbi_pmic_punit_access_count != 0) {
+ mutex_unlock(&iosf_mbi_pmic_access_mutex);
+ wait_event(iosf_mbi_pmic_access_waitq,
+ iosf_mbi_pmic_punit_access_count == 0);
+ mutex_lock(&iosf_mbi_pmic_access_mutex);
+ }
+
+ if (iosf_mbi_pmic_i2c_access_count > 0)
goto success;
- mutex_lock(&iosf_mbi_punit_mutex);
blocking_notifier_call_chain(&iosf_mbi_pmic_bus_access_notifier,
MBI_PMIC_BUS_ACCESS_BEGIN, NULL);
@@ -330,10 +357,6 @@ int iosf_mbi_block_punit_i2c_access(void)
iosf_mbi_sem_acquired = jiffies;
dev_dbg(&mbi_pdev->dev, "P-Unit semaphore acquired after %ums\n",
jiffies_to_msecs(jiffies - start));
- /*
- * Success, keep iosf_mbi_punit_mutex locked till
- * iosf_mbi_unblock_punit_i2c_access() gets called.
- */
goto success;
}
@@ -344,15 +367,13 @@ int iosf_mbi_block_punit_i2c_access(void)
dev_err(&mbi_pdev->dev, "Error P-Unit semaphore timed out, resetting\n");
error:
iosf_mbi_reset_semaphore();
- mutex_unlock(&iosf_mbi_punit_mutex);
-
if (!iosf_mbi_get_sem(&sem))
dev_err(&mbi_pdev->dev, "P-Unit semaphore: %d\n", sem);
success:
if (!WARN_ON(ret))
- iosf_mbi_block_punit_i2c_access_count++;
+ iosf_mbi_pmic_i2c_access_count++;
- mutex_unlock(&iosf_mbi_block_punit_i2c_access_count_mutex);
+ mutex_unlock(&iosf_mbi_pmic_access_mutex);
return ret;
}
@@ -360,17 +381,20 @@ EXPORT_SYMBOL(iosf_mbi_block_punit_i2c_access);
void iosf_mbi_unblock_punit_i2c_access(void)
{
- mutex_lock(&iosf_mbi_block_punit_i2c_access_count_mutex);
+ bool do_wakeup = false;
- iosf_mbi_block_punit_i2c_access_count--;
- if (iosf_mbi_block_punit_i2c_access_count == 0) {
+ mutex_lock(&iosf_mbi_pmic_access_mutex);
+ iosf_mbi_pmic_i2c_access_count--;
+ if (iosf_mbi_pmic_i2c_access_count == 0) {
iosf_mbi_reset_semaphore();
- mutex_unlock(&iosf_mbi_punit_mutex);
dev_dbg(&mbi_pdev->dev, "punit semaphore held for %ums\n",
jiffies_to_msecs(jiffies - iosf_mbi_sem_acquired));
+ do_wakeup = true;
}
+ mutex_unlock(&iosf_mbi_pmic_access_mutex);
- mutex_unlock(&iosf_mbi_block_punit_i2c_access_count_mutex);
+ if (do_wakeup)
+ wake_up(&iosf_mbi_pmic_access_waitq);
}
EXPORT_SYMBOL(iosf_mbi_unblock_punit_i2c_access);
@@ -379,10 +403,10 @@ int iosf_mbi_register_pmic_bus_access_notifier(struct notifier_block *nb)
int ret;
/* Wait for the bus to go inactive before registering */
- mutex_lock(&iosf_mbi_punit_mutex);
+ iosf_mbi_punit_acquire();
ret = blocking_notifier_chain_register(
&iosf_mbi_pmic_bus_access_notifier, nb);
- mutex_unlock(&iosf_mbi_punit_mutex);
+ iosf_mbi_punit_release();
return ret;
}
@@ -403,9 +427,9 @@ int iosf_mbi_unregister_pmic_bus_access_notifier(struct notifier_block *nb)
int ret;
/* Wait for the bus to go inactive before unregistering */
- mutex_lock(&iosf_mbi_punit_mutex);
+ iosf_mbi_punit_acquire();
ret = iosf_mbi_unregister_pmic_bus_access_notifier_unlocked(nb);
- mutex_unlock(&iosf_mbi_punit_mutex);
+ iosf_mbi_punit_release();
return ret;
}
@@ -413,7 +437,7 @@ EXPORT_SYMBOL(iosf_mbi_unregister_pmic_bus_access_notifier);
void iosf_mbi_assert_punit_acquired(void)
{
- WARN_ON(!mutex_is_locked(&iosf_mbi_punit_mutex));
+ WARN_ON(iosf_mbi_pmic_punit_access_count == 0);
}
EXPORT_SYMBOL(iosf_mbi_assert_punit_acquired);
--
2.20.1
next prev parent reply other threads:[~2019-09-22 19:26 UTC|newest]
Thread overview: 191+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-22 18:46 [PATCH AUTOSEL 5.2 001/185] ALSA: hda: Flush interrupts on disabling Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 002/185] ASoC: SOF: Intel: hda: Make hdac_device device-managed Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 003/185] cpufreq: ap806: Add NULL check after kcalloc Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 004/185] regulator: lm363x: Fix off-by-one n_voltages for lm3632 ldo_vpos/ldo_vneg Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 005/185] spi: dw-mmio: Clock should be shut when error occurs Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 006/185] ASoC: tlv320aic31xx: suppress error message for EPROBE_DEFER Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 007/185] ASoC: sgtl5000: Fix of unmute outputs on probe Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 008/185] ASoC: sgtl5000: Fix charge pump source assignment Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 009/185] firmware: qcom_scm: Use proper types for dma mappings Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 010/185] dmaengine: bcm2835: Print error in case setting DMA mask fails Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 011/185] leds: leds-lp5562 allow firmware files up to the maximum length Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 012/185] media: dib0700: fix link error for dibx000_i2c_set_speed Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 013/185] media: mtk-cir: lower de-glitch counter for rc-mm protocol Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 014/185] ASoC: SOF: pci: mark last_busy value at runtime PM init Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 015/185] media: exynos4-is: fix leaked of_node references Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 016/185] media: vivid:add sanity check to avoid divide error and set value to 1 if 0 Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 017/185] media: vb2: reorder checks in vb2_poll() Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 018/185] media: vivid: work around high stack usage with clang Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 019/185] media: hdpvr: Add device num check and handling Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 020/185] media: i2c: ov5640: Check for devm_gpiod_get_optional() error Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 021/185] time/tick-broadcast: Fix tick_broadcast_offline() lockdep complaint Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 022/185] sched/fair: Fix imbalance due to CPU affinity Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 023/185] sched/core: Fix CPU controller for !RT_GROUP_SCHED Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 024/185] x86/apic: Make apic_pending_intr_clear() more robust Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 025/185] sched/deadline: Fix bandwidth accounting at all levels after offline migration Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 026/185] x86/reboot: Always use NMI fallback when shutdown via reboot vector IPI fails Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 027/185] rcu/tree: Call setschedule() gp ktread to SCHED_FIFO outside of atomic region Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 028/185] x86/apic: Soft disable APIC before initializing it Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 029/185] ALSA: hda - Show the fatal CORB/RIRB error more clearly Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 030/185] ALSA: i2c: ak4xxx-adda: Fix a possible null pointer dereference in build_adc_controls() Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 031/185] EDAC/mc: Fix grain_bits calculation Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 032/185] media: iguanair: add sanity checks Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 033/185] cpuidle: teo: Allow tick to be stopped if PM QoS is used Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 034/185] arm64: mm: free the initrd reserved memblock in a aligned manner Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 035/185] soc: amlogic: meson-clk-measure: protect measure with a mutex Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 036/185] base: soc: Export soc_device_register/unregister APIs Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 037/185] ALSA: usb-audio: Skip bSynchAddress endpoint check if it is invalid Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 038/185] ia64:unwind: fix double free for mod->arch.init_unw_table Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 039/185] EDAC/altera: Use the proper type for the IRQ status bits Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 040/185] ASoC: rsnd: don't call clk_get_rate() under atomic context Sasha Levin
2019-09-22 18:46 ` [PATCH AUTOSEL 5.2 041/185] arm64/prefetch: fix a -Wtype-limits warning Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 042/185] md/raid1: end bio when the device faulty Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 043/185] md: don't call spare_active in md_reap_sync_thread if all member devices can't work Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 044/185] md: don't set In_sync if array is frozen Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 045/185] media: media/platform: fsl-viu.c: fix build for MICROBLAZE Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 046/185] RAS: Fix prototype warnings Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 047/185] RAS: Build debugfs.o only when enabled in Kconfig Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 048/185] ASoC: hdac_hda: fix page fault issue by removing race Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 049/185] ACPI / processor: don't print errors for processorIDs == 0xff Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 050/185] loop: Add LOOP_SET_DIRECT_IO to compat ioctl Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 051/185] perf tools: Fix paths in include statements Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 052/185] EDAC, pnd2: Fix ioremap() size in dnv_rd_reg() Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 053/185] efi: cper: print AER info of PCIe fatal error Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 054/185] firmware: arm_scmi: Check if platform has released shmem before using Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 055/185] sched/fair: Use rq_lock/unlock in online_fair_sched_group Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 056/185] idle: Prevent late-arriving interrupts from disrupting offline Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 057/185] blk-mq: Fix memory leak in blk_mq_init_allocated_queue error handling Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 058/185] media: gspca: zero usb_buf on error Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 059/185] perf config: Honour $PERF_CONFIG env var to specify alternate .perfconfig Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 060/185] perf test vfs_getname: Disable ~/.perfconfig to get default output Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 061/185] media: mtk-mdp: fix reference count on old device tree Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 062/185] media: i2c: tda1997x: prevent potential NULL pointer access Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 063/185] media: fdp1: Reduce FCP not found message level to debug Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 064/185] media: em28xx: modules workqueue not inited for 2nd device Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 065/185] arm64/efi: Move variable assignments after SECTIONS Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 066/185] perf unwind: Fix libunwind when tid != pid Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 067/185] media: rc: imon: Allow iMON RC protocol for ffdc 7e device Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 068/185] dmaengine: iop-adma: use correct printk format strings Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 069/185] ARM: xscale: fix multi-cpu compilation Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 070/185] perf ftrace: Use CAP_SYS_ADMIN instead of euid==0 Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 071/185] perf record: Support aarch64 random socket_id assignment Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 072/185] ALSA: hda: Add codec on bus address table lately Sasha Levin
2019-09-22 19:06 ` Takashi Iwai
2019-09-23 13:30 ` Sasha Levin
2019-09-23 13:40 ` Takashi Iwai
2019-09-23 16:42 ` Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 073/185] media: vsp1: fix memory leak of dl on error return path Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 074/185] media: i2c: ov5645: Fix power sequence Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 075/185] media: omap3isp: Don't set streaming state on random subdevs Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 076/185] media: imx: mipi csi-2: Don't fail if initial state times-out Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 077/185] kasan/arm64: fix CONFIG_KASAN_SW_TAGS && KASAN_INLINE Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 078/185] ASoC: mediatek: mt6358: add delay after dmic clock on Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 079/185] net: lpc-enet: fix printk format strings Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 080/185] m68k: Prevent some compiler warnings in Coldfire builds Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 081/185] ARM: dts: imx7d: cl-som-imx7: make ethernet work again Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 082/185] ARM: dts: imx7-colibri: disable HS400 Sasha Levin
2019-09-22 18:47 ` Sasha Levin [this message]
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 084/185] media: radio/si470x: kill urb on error Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 085/185] media: hdpvr: add terminating 0 at end of string Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 086/185] ASoC: uniphier: Fix double reset assersion when transitioning to suspend state Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 087/185] powerpc/Makefile: Always pass --synthetic to nm if supported Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 088/185] tools headers: Fixup bitsperlong per arch includes Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 089/185] ASoC: sun4i-i2s: Don't use the oversample to calculate BCLK Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 090/185] ASoC: mchp-i2s-mcc: Wait for RX/TX RDY only if controller is running Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 091/185] led: triggers: Fix a memory leak bug Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 092/185] ASoC: mchp-i2s-mcc: Fix unprepare of GCLK Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 093/185] nbd: add missing config put Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 094/185] ACPI / APEI: Release resources if gen_pool_add() fails Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 095/185] arm64: entry: Move ct_user_exit before any other exception Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 096/185] s390/kasan: provide uninstrumented __strlen Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 097/185] media: mceusb: fix (eliminate) TX IR signal length limit Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 098/185] media: dvb-frontends: use ida for pll number Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 099/185] posix-cpu-timers: Sanitize bogus WARNONS Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 100/185] media: dvb-core: fix a memory leak bug Sasha Levin
2019-09-22 18:47 ` [PATCH AUTOSEL 5.2 101/185] EDAC/amd64: Support more than two controllers for chip selects handling Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 102/185] libperf: Fix alignment trap with xyarray contents in 'perf stat' Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 103/185] EDAC/amd64: Recognize DRAM device type ECC capability Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 104/185] EDAC/amd64: Decode syndrome before translating address Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 105/185] ARM: at91: move platform-specific asm-offset.h to arch/arm/mach-at91 Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 106/185] soc: renesas: rmobile-sysc: Set GENPD_FLAG_ALWAYS_ON for always-on domain Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 107/185] soc: renesas: Enable ARM_ERRATA_754322 for affected Cortex-A9 Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 108/185] PM / devfreq: Fix kernel oops on governor module load Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 109/185] ARM: OMAP2+: move platform-specific asm-offset.h to arch/arm/mach-omap2 Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 110/185] PM / devfreq: passive: Use non-devm notifiers Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 111/185] PM / devfreq: exynos-bus: Correct clock enable sequence Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 112/185] media: cec-notifier: clear cec_adap in cec_notifier_unregister Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 113/185] media: saa7146: add cleanup in hexium_attach() Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 114/185] media: cpia2_usb: fix memory leaks Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 115/185] media: saa7134: fix terminology around saa7134_i2c_eeprom_md7134_gate() Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 116/185] perf trace beauty ioctl: Fix off-by-one error in cmd->string table Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 117/185] perf report: Fix --ns time sort key output Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 118/185] perf script: Fix memory leaks in list_scripts() Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 119/185] media: aspeed-video: address a protential usage of an unitialized var Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 120/185] media: ov9650: add a sanity check Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 121/185] leds: lm3532: Fixes for the driver for stability Sasha Levin
2019-10-02 19:16 ` Pavel Machek
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 122/185] ASoC: es8316: fix headphone mixer volume table Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 123/185] ACPI / CPPC: do not require the _PSD method Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 124/185] sched/cpufreq: Align trace event behavior of fast switching Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 125/185] x86/apic/vector: Warn when vector space exhaustion breaks affinity Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 126/185] arm64: kpti: ensure patched kernel text is fetched from PoU Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 127/185] perf evlist: Use unshare(CLONE_FS) in sb threads to let setns(CLONE_NEWNS) work Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 128/185] x86/mm/pti: Do not invoke PTI functions when PTI is disabled Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 129/185] ASoC: fsl_ssi: Fix clock control issue in master mode Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 130/185] x86/mm/pti: Handle unaligned address gracefully in pti_clone_pagetable() Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 131/185] nvmet: fix data units read and written counters in SMART log Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 132/185] nvme-multipath: fix ana log nsid lookup when nsid is not found Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 133/185] ALSA: firewire-motu: add support for MOTU 4pre Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 134/185] arm64: lse: Make ARM64_LSE_ATOMICS depend on JUMP_LABEL Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 135/185] iommu/amd: Silence warnings under memory pressure Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 136/185] ASoC: Intel: Haswell: Adjust machine device private context Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 137/185] libata/ahci: Drop PCS quirk for Denverton and beyond Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 138/185] iommu/iova: Avoid false sharing on fq_timer_on Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 139/185] libtraceevent: Change users plugin directory Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 140/185] ARM: dts: exynos: Mark LDO10 as always-on on Peach Pit/Pi Chromebooks Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 141/185] x86/amd_nb: Add PCI device IDs for family 17h, model 70h Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 142/185] ACPI: custom_method: fix memory leaks Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 143/185] ACPI / PCI: fix acpi_pci_irq_enable() memory leak Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 144/185] closures: fix a race on wakeup from closure_sync Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 145/185] hwmon: (k10temp) Add support for AMD family 17h, model 70h CPUs Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 146/185] hwmon: (acpi_power_meter) Change log level for 'unsafe software power cap' Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 147/185] md/raid1: fail run raid1 array when active disk less than one Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 148/185] dmaengine: ti: edma: Do not reset reserved paRAM slots Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 149/185] kprobes: Prohibit probing on BUG() and WARN() address Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 150/185] x86/mm: Fix cpumask_of_node() error condition Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 151/185] irqchip/sifive-plic: set max threshold for ignored handlers Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 152/185] s390/crypto: xts-aes-s390 fix extra run-time crypto self tests finding Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 153/185] irqchip/gic-v3-its: Fix LPI release for Multi-MSI devices Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 154/185] x86/platform/uv: Fix kmalloc() NULL check routine Sasha Levin
2019-09-22 20:26 ` Greg KH
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 155/185] x86/cpu: Add Tiger Lake to Intel family Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 156/185] platform/x86: intel_pmc_core: Do not ioremap RAM Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 157/185] ASoC: es8316: support fixed and variable both clock rates Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 158/185] SoC: simple-card-utils: set 0Hz to sysclk when shutdown Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 159/185] ASoC: dmaengine: Make the pcm->name equal to pcm->id if the name is not set Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 160/185] io_uring: fix wrong sequence setting logic Sasha Levin
2019-09-22 18:48 ` [PATCH AUTOSEL 5.2 161/185] block: make rq sector size accessible for block stats Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 162/185] raid5: don't set STRIPE_HANDLE to stripe which is in batch list Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 163/185] mmc: core: Clarify sdio_irq_pending flag for MMC_CAP2_SDIO_IRQ_NOTHREAD Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 164/185] sched/psi: Correct overly pessimistic size calculation Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 165/185] mmc: sdhci: Fix incorrect switch to HS mode Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 166/185] mmc: core: Add helper function to indicate if SDIO IRQs is enabled Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 167/185] mmc: dw_mmc: Re-store SDIO IRQs mask at system resume Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 168/185] raid5: don't increment read_errors on EILSEQ return Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 169/185] mmc: mtk-sd: Re-store SDIO IRQs mask at system resume Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 170/185] media: technisat-usb2: break out of loop at end of buffer Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 171/185] libertas: Add missing sentinel at end of if_usb.c fw_table Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 172/185] e1000e: add workaround for possible stalled packet Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 173/185] ALSA: hda - Add a quirk model for fixing Huawei Matebook X right speaker Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 174/185] ALSA: hda - Drop unsol event handler for Intel HDMI codecs Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 175/185] drm/amd/powerplay/smu7: enforce minimal VBITimeout (v2) Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 176/185] media: ttusb-dec: Fix info-leak in ttusb_dec_send_command() Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 177/185] drm: fix module name in edid_firmware log message Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 178/185] ALSA: hda/realtek - Blacklist PC beep for Lenovo ThinkCentre M73/93 Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 179/185] iommu/amd: Override wrong IVRS IOAPIC on Raven Ridge systems Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 180/185] zd1211rw: remove false assertion from zd_mac_clear() Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 181/185] btrfs: delayed-inode: Kill the BUG_ON() in btrfs_delete_delayed_dir_index() Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 182/185] btrfs: extent-tree: Make sure we only allocate extents from block groups with the same type Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 183/185] btrfs: tree-checker: Add ROOT_ITEM check Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 184/185] btrfs: Detect unbalanced tree with empty leaf before crashing btree operations Sasha Levin
2019-09-22 18:49 ` [PATCH AUTOSEL 5.2 185/185] kvm: Nested KVM MMUs need PAE root too Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190922184924.32534-83-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=andy.shevchenko@gmail.com \
--cc=hdegoede@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).