Commit graph

881,517 commits

Author SHA1 Message Date
Stanley Chu
ee48a99fff UPSTREAM: scsi: ufs: Fix imprecise load calculation in devfreq window
The UFS load calculation is based on "total_time" and "busy_time" in a
devfreq window.  However, the source of time is different for both
parameters: "busy_time" is assigned from "jiffies" thus has different
accuracy from "total_time" which is assigned from ktime_get().

In addition, the time of window boundary is not exactly the same as the
starting busy time in this window if UFS is actually busy in the beginning
of the window. A similar accuracy error may also happen for the end of busy
time in current window.

To guarantee the precision of load calculation, we need to

1. Align time accuracy of both devfreq_dev_status.total_time and
   devfreq_dev_status.busy_time. For example, use "ktime_get()" directly.

2. Align the following timelines:
   - The beginning time of devfreq windows
   - The beginning of busy time in a new window
   - The end of busy time in the current window

Link: https://lore.kernel.org/r/20200611101043.6379-1-stanley.chu@mediatek.com
Fixes: a3cd5ec55f ("scsi: ufs: add load based scaling of UFS gear")
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit b1bf66d1d5a8fcb54f0e584db5d196ef015b5172)
Change-Id: I9610fade4f426973b1c95a3621d0bd2b51543846
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
03911e93a0 UPSTREAM: scsi: ufs: Add trace event for UIC commands
Use the ftrace infrastructure to conditionally trace UFS UIC command
events.

New trace event "ufshcd_uic_command" is created, which samples the
following UFS UIC command data:

 - Device name
 - Optional identification string
 - UIC command opcode
 - UIC command argument1
 - UIC command argument2
 - UIC command argement3

Usage:
	echo 1 > /sys/kernel/debug/tracing/events/ufs/enable
	cat /sys/kernel/debug/tracing/trace_pipe

Link: https://lore.kernel.org/r/20200615072235.23042-3-stanley.chu@mediatek.com
Acked-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit aa5c697988b4c7e1077de1e2eb2298114d531736)
Change-Id: I23652110c51d7cd04f9e9c565f67654325e11e9d
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
95821c4676 UPSTREAM: scsi: ufs: Add DELAY_BEFORE_LPM quirk for Micron devices
It is confirmed that Micron device needs DELAY_BEFORE_LPM quirk to have a
delay before VCC is powered off. Sdd Micron vendor ID and this quirk for
Micron devices.

Link: https://lore.kernel.org/r/20200612012625.6615-2-stanley.chu@mediatek.com
Reviewed-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit c0a18ee0ce78d7957ec1a53be35b1b3beba80668)
Change-Id: Ib69fd30291227daba77f6955955fc047b0ec27b8
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
ec9cb276d9 UPSTREAM: scsi: ufs-mediatek: Allow unbound mphy
Allow unbound MPHY module since not every MediaTek UFS platform needs
specific MPHY control.

Link: https://lore.kernel.org/r/20200601104646.15436-6-stanley.chu@mediatek.com
Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit fc4983018fea1237e027a9fc6530a3e04850fbfa)
Change-Id: Ie79d90079976129e37ac99c6b7e2d9b172ebdc73
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
332ca84ae3 UPSTREAM: scsi: ufs-mediatek: Fix unbalanced clock on/off
MediaTek UFS clocks are separated to two parts and controlled by different
modules: ufs-mediatek and phy-ufs-mediatek.

If both Auto-Hibern8 and clk-gating feature are enabled, mphy power control
is not balanced thus unbalanced control also happens to the clocks probed
by phy-ufs-mediatek module.

Fix this issue by:

 - Promise usage of phy_power_on/off balanced

 - Remove phy_power_on/off control in suspend/resume vops since both can be
   handled in setup_clock vops only

Link: https://lore.kernel.org/r/20200601104646.15436-5-stanley.chu@mediatek.com
Reviewed-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 561e3a8726b2dd94ce75cad6c9cab211551f368a)
Change-Id: I9d304e895a07c5e672a6b29e9c8d23edaeaf8a08
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
e957d1ef81 UPSTREAM: scsi: ufs-mediatek: Introduce low-power mode for device power supply
Allow device power supply to enter low-power mode.

Link: https://lore.kernel.org/r/20200601104646.15436-4-stanley.chu@mediatek.com
Reviewed-by: Pengshun Zhao <pengshun.zhao@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 488edafb1120f715bebd80b6fe4089f83fb082b2)
Change-Id: Ibe3cd1f11305656f7c597940b75e0c6d71c4a802
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
c214857a9e UPSTREAM: scsi: ufs-mediatek: Do not gate clocks if auto-hibern8 is not entered yet
There is a chance that link enters hibern8 via auto-hibern8 scheme during
the clock-gating flow. Clocks shall not be gated if link is still active
otherwise host or device may hang.

Fix this by returning error code to the caller __ufshcd_setup_clocks() to
skip gating clocks there if link is not confirmed in hibern8 state yet.

Also allow some waiting time for the hibern8 state transition.

Link: https://lore.kernel.org/r/20200601104646.15436-3-stanley.chu@mediatek.com
Reviewed-by: Andy Teng <andy.teng@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 9006e3986f6689897c2f1ede2671656b1cb41582)
Change-Id: Ieeccc13fd1f05463344c8f746ba7aa8ff172cd1a
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
767e264476 UPSTREAM: scsi: ufs-mediatek: Fix imprecise waiting time for ref-clk control
Currently ref-clk control timeout is implemented by jiffies. However
jiffies is not accurate enough thus "false timeout" may happen.

Use more accurate delay mechanism instead, i.e. ktime.

Link: https://lore.kernel.org/r/20200601104646.15436-2-stanley.chu@mediatek.com
Reviewed-by: Andy Teng <andy.teng@mediatek.com>
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit c0a18ee0ce78d7957ec1a53be35b1b3beba80668)
Change-Id: I08b6204db64bcf52d9f32ebdb23c168a8b1e88af
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
f05b5ebadf BACKPORT: scsi: ufs: Disable WriteBooster capability in non-supported UFS device
If UFS device is not qualified to enter the detection of WriteBooster
probing by disallowed UFS version or device quirks, then WriteBooster
capability in host shall be disabled to prevent any WriteBooster
operations in the future.

Link: https://lore.kernel.org/linux-arm-kernel/20200625030430.25048-1-stanley.chu@mediatek.com/
Fixes: 3d17b9b5ab11 ("scsi: ufs: Add write booster feature support")
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Tested-by: Jami Kettunen <jamipkettunen@gmail.com>
Tested-by: Steev Klimaszewski <steev@kali.org>
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Bean Huo <beanhuo@micron.com>

Bug: 151050916
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.c ]
(cherry picked from commit a7f1e69d4974666ea40886ee4801aebb2729ea81)
Change-Id: Icb60f39cc5ecf21399e7ff96b30c594fb8667501
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
7d7025426c BACKPORT: scsi: ufs: Fix WriteBooster flush during runtime suspend
Currently UFS host driver promises VCC supply if UFS device needs to do
WriteBooster flush during runtime suspend.

However the UFS specification mentions:

"While the flushing operation is in progress, the device is in Active power
mode."

Therefore UFS host driver needs to promise more: Keep UFS device as "Active
power mode", otherwise UFS device shall not do any flush if device enters
Sleep or PowerDown power mode.  Similarly, the same promises shall be
applied if device needs urgent BKOP during runtime suspend.

Fix this by not changing device power mode if WriteBooster flush or urgent
BKOP is required in ufshcd_suspend().

Now, if device finishes its job but is not resumed for a very long time,
system will have unnecessary power drain because VCC is still supplied. A
method to re-check the threshold of keeping VCC supply is required to fix
the power drain. However, the threshold re-check needs to re-activate the
link first because the decision depends on the latest device status.

Also introduce a delayed work to force runtime resume after a certain delay
during runtime suspend. This makes threshold re-check happen natually in
the entry of the next runtime-suspend. The device can continue its
WriteBooster flush or urgent BKOP jobs soon after resumed if device has no
upcoming requests and link enters hibern8 state either by Auto-Hibern8 or
hibern8 during clk-gating scheme. This solution not only prevents power
drain but also makes as much use of time as possible for device's
background jobs.

Link: https://lore.kernel.org/r/20200522083212.4008-5-stanley.chu@mediatek.com
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 51dd905bd2f617f5d6e60273bb5f0940bbd86611)
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.c ]
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.h ]
Change-Id: I5dcc9889b732a29d0c1db093ffc86f4445c50c69
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
f9e7e458ec BACKPORT: scsi: ufs: Fix index of attributes query for WriteBooster feature
For WriteBooster feature related attributes, the index used by query shall
be LUN ID if LU Dedicated buffer mode is enabled.

Link: https://lore.kernel.org/r/20200522083212.4008-4-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit e31011ab370989022abf216c606f947a3b02a53a)
[ Resolved minor conflict in drivers/scsi/ufs/ufs-sysfs.c ]
Change-Id: Ic32b2a0d821b66c4631c57b90f76ec25cec647c7
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:30 +02:00
Stanley Chu
3b7a80ece8 BACKPORT: scsi: ufs: Allow WriteBooster on UFS 2.2 devices
According to the UFS specification, WriteBooster is officially supported by
UFS 2.2.

Since UFS 2.2 specification has been finalized in JEDEC and such devices
have also showed up in the market, modify the checking rule for
ufshcd_wb_probe() to allow these devices to enable WriteBooster.

Link: https://lore.kernel.org/r/20200522083212.4008-3-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit c7cee3e746a5b5a79d415112f7b7af90e8259fa1)
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.c ]
Change-Id: Ifce7223b8892b6c0cd7f4635e96b103a86be4556
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
43dcb17356 UPSTREAM: scsi: ufs-mediatek: Customize WriteBooster flush policy
Change the WriteBooster policy to keep VCC on during runtime suspend if
available WriteBooster buffer is less than 80%.

Link: https://lore.kernel.org/r/20200509093716.21010-5-stanley.chu@mediatek.com
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit f48b285ae658b50f4ba2d3a267522f572720de6d)
Change-Id: I552f19b2806b5819a49ffff02768c2a5afa4cec7
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
7e6050a292 UPSTREAM: scsi: ufs: Customize flush threshold for WriteBooster
Allow flush threshold for WriteBooster to be customizable by vendors. To
achieve this, make the value a variable in struct ufs_hba_variant_params.

Also introduce UFS_WB_BUF_REMAIN_PERCENT() macro to provide a more flexible
way to specify WriteBooster available buffer values.

Link: https://lore.kernel.org/r/20200509093716.21010-4-stanley.chu@mediatek.com
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit d14734ae3ae79d3b0286a2431782054e5066da8f)
Change-Id: I6ff47b50d2f83c66ac541c8a1b6206a688662037
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
79ec7f2998 BACKPORT: scsi: ufs: Introduce ufs_hba_variant_params to group customizable parameters
The UFS driver is growing more and more customizable parameters. Collect
them in one place.

Link: https://lore.kernel.org/r/20200509093716.21010-2-stanley.chu@mediatek.com
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 90b8491c0033915ec1b290bc1c0de27935cb132d)
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.h ]
Change-Id: I6bddf3e39b38714db0053c606e75dd4d6fb4d0be
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
ChenTao
f3fe388ed3 UPSTREAM: scsi: ufs-mediatek: Make ufs_mtk_fixup_dev_quirks static
Fix the following warning:

drivers/scsi/ufs/ufs-mediatek.c:585:6: warning:
symbol 'ufs_mtk_fixup_dev_quirks' was not declared. Should it be static?

Link: https://lore.kernel.org/r/20200514012655.127202-1-chentao107@huawei.com
Reported-by: Hulk Robot <hulkci@huawei.com>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: ChenTao <chentao107@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 21d2b76831fdee3754eeee995e15080098603ec5)
Change-Id: If5b822770ffc8c8798d1df05f48471895fa65e7a
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
a75bb43401 UPSTREAM: scsi: ufs: Cleanup WriteBooster feature
Small cleanup as below items,

 1. Use ufshcd_is_wb_allowed() directly instead of ufshcd_wb_sup() since
    ufshcd_wb_sup() just returns the result of ufshcd_is_wb_allowed().

 2. In ufshcd_suspend(), "else if (!ufshcd_is_runtime_pm(pm_op)) can be
    simplified to "else" since both have the same meaning.

This patch does not change any functionality.

Link: https://lore.kernel.org/r/20200508080115.24233-9-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 79e3520f82cb91e46e7db1af14ad916d6036dde8)
Change-Id: I7329575ba3ddce6976072c91570a71f1bbbbe92f
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
3ea1305d5a UPSTREAM: scsi: ufs-mediatek: Enable WriteBooster capability
Enable WriteBooster capability on MediaTek UFS platforms.

Link: https://lore.kernel.org/r/20200508080115.24233-8-stanley.chu@mediatek.com
Reviewed-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 29060a629135a00414d6ea3fbb246a114898f4be)
Change-Id: I1c5879a0601b38c2402b20c7a2e1f21d818f0987
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
1d3b062a35 BACKPORT: scsi: ufs: Add LU Dedicated buffer mode support for WriteBooster
According to UFS specification, there are two WriteBooster mode of
operations: "LU dedicated buffer" mode and "shared buffer" mode.  In the
"LU dedicated buffer" mode, the WriteBooster Buffer is dedicated to a
logical unit.

If the device supports the "LU dedicated buffer" mode, this mode is
configured by setting bWriteBoosterBufferType to 00h. The logical unit
WriteBooster Buffer size is configured by setting the
dLUNumWriteBoosterBufferAllocUnits field of the related Unit
Descriptor. Only a value greater than zero enables the WriteBooster feature
in the logical unit.

Modify ufshcd_wb_probe() as above description to support LU Dedicated
buffer mode.

Note that according to UFS 3.1 specification, the valid value of
bDeviceMaxWriteBoosterLUs parameter in Geometry Descriptor is 1, which
means at most one LUN can have WriteBooster buffer in "LU dedicated buffer
mode". Therefore this patch supports only one LUN with WriteBooster
enabled. All WriteBooster related sysfs nodes are specifically mapped to
the LUN with WriteBooster enabled in LU Dedicated buffer mode.

Link: https://lore.kernel.org/r/20200508080115.24233-7-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit d30293f721dde69a902789cff77a1fa27ec0e4ce)
[ Resolved minor conflict in drivers/scsi/ufs/ufs.h ]
[ Resolved minor conflict in drivers/scsi/ufs/ufs-sysfs.c ]
Change-Id: I4724647a45095e78421954beabc3732781166fe6
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
003f641e09 BACKPORT: scsi: ufs: Add "index" in parameter list of ufshcd_query_flag()
For preparation of LU Dedicated buffer mode support on WriteBooster
feature, "index" parameter shall be added and allowed to be specified by
callers.

Link: https://lore.kernel.org/r/20200508080115.24233-6-stanley.chu@mediatek.com
Reviewed-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Can Guo <cang@codeaurora.org>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 1f34eedf9bc15d238aece3308aba0a21a1ef5fe2)
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.c ]
[ Resolved minor conflict in drivers/scsi/ufs/ufs-sysfs.c ]
Change-Id: I81f0d6c5b66d1b6733bedd3151a7784529b5bc3f
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
5698f58e2f UPSTREAM: scsi: ufs-mediatek: Add fixup_dev_quirks vops
Add fixup_dev_quirk vops in MediaTek UFS platforms and provide an initial
vendor-specific device quirk table.

Link: https://lore.kernel.org/r/20200508080115.24233-5-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 62c2f503b54cd17bc4ad7b929354923012375f73)
Change-Id: I5451ab84d736f0e990547b5872a4ac10ebc939e2
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
38eebefa26 UPSTREAM: scsi: ufs: Export ufs_fixup_device_setup() function
Export ufs_fixup_device_setup() to allow vendors to re-use it for fixing
device quriks on specified UFS hosts.

Link: https://lore.kernel.org/r/20200508080115.24233-4-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit 8db269a5102eabfb05f4207f90e0a022caf7b804)
Change-Id: Ia29cf3947d1722944bdc023544169208e023c85f
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
dcda3bd59f BACKPORT: scsi: ufs: Introduce fixup_dev_quirks vops
Some UFS deivces may have required device quirks or have non-standard
features which are enabled only on specified UFS hosts or for special
customers.

To not "pollute" common device quirk list, i.e. ufs_fixups table, for those
devices mentioned above, introduce "fixup_dev_quirks" vops to allow vendors
to fix or modify device quirks accordingly.

Link: https://lore.kernel.org/r/20200508080115.24233-3-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 151050916
(cherry picked from commit c28c00ba4f060949c2f461f08a4aa10024a40672)
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.h ]
Change-Id: I0317f26b92c6b14569f4081937b662195e62b905
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
e854924b25 UPSTREAM: scsi: ufs-mediatek: add error recovery for suspend and resume
Once fail happens during suspend and resume flow if the desired low power
link state is H8, link recovery is required for MediaTek UFS controller.

For resume flow, since power and clocks are already enabled before invoking
vendor's resume callback, simply using ufshcd_link_recovery() inside
callback is fine.

For suspend flow, the device power enters low power mode or is disabled
before suspend callback, thus ufshcd_link_recovery() can not be directly
used in vendor callback. One solution is to set the link to off state and
then ufshcd_host_reset_and_restore() will be executed by ufshcd_suspend().

Bug: 151050916
Change-Id: I135c223a30c63e9af714ae3a3bbb950fcc0bd4c2
(cherry picked from commit 8033824bbf3c15e6321045a3f51d6f6947d89d47)
Link: https://lore.kernel.org/r/20200327095329.10083-3-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:29 +02:00
Stanley Chu
77c34d5327 UPSTREAM: scsi: ufs: export ufshcd_link_recovery
Export ufshcd_link_recovery to allow vendors to recover failed link in
vendor's callbacks.

Bug: 151050916
Change-Id: Id69485882f0943e71db06286fbe171ac9fe3a4b2
(cherry picked from commit 087c5efafa48661ac98184fbf8826a1a79dc5784)
Link: https://lore.kernel.org/r/20200327095329.10083-2-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Stanley Chu
ca2a30f1ae UPSTREAM: scsi: ufs-mediatek: customize the delay for enabling host
MediaTek platform and UFS controller can dynamically customize the delay
for host enabling according to different scenarios.

For example, if UniPro enters lower-power mode, such delay can be
minimized, otherwise longer delay shall be expected.

Bug: 151050916
Change-Id: I7113dedcc8750ddbdea69c3cd9a65045469578a7
(cherry picked from commit 73e990b4244d13599f093eab00f48d8172bbf9af)
Link: https://lore.kernel.org/r/20200318104016.28049-8-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Stanley Chu
b55279445b UPSTREAM: scsi: ufs: make HCE polling more compact to improve initialization latency
Reduce the waiting period between each HCE (Host Controller Enable) polling
from 5 ms to 1 ms. Also increase the maximum polling times to make "total
polling time" roughly the same.

This change could make HCE initialization faster to improve latency of
ufshcd initialization, error recovery, and resume behaviors.

Bug: 151050916
Change-Id: Iad45c46387fc63b723e7e10d2100eac667130272
(cherry picked from commit 9fc305ef8eb583b3139643f90abbe38d1c2412ce)
Link: https://lore.kernel.org/r/20200318104016.28049-7-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Can Guo <cang@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Stanley Chu
bc215bc7f4 BACKPORT: scsi: ufs: allow custom delay prior to host enabling
Currently a 1 ms delay is applied before polling CONTROLLER_ENABLE
bit. This delay may not be required or can be changed in different
controllers. Make the delay as a changeable value in struct ufs_hba to
allow it customized by vendors.

Bug: 151050916
Change-Id: I7b7551669bd63c38874c3e6f229dcf61a6b91695
(cherry picked from commit b9dc8aca2899fb494d66b6c5f50c25563d1636a7)
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.h ]
Link: https://lore.kernel.org/r/20200318104016.28049-6-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Can Guo <cang@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Stanley Chu
63350d1025 UPSTREAM: scsi: ufs-mediatek: use common delay function
A common delay function is introduced in UFS core driver, thus ufs-mediatek
can use it instead of the private delay function.

Bug: 151050916
Change-Id: I531c43d56c7da92db752de047044161b5ec14547
(cherry picked from commit c2f755d2c904717ff62119b54b2e1f783884a16c)
Link: https://lore.kernel.org/r/20200318104016.28049-5-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Stanley Chu
c25f60d280 UPSTREAM: scsi: ufs: introduce common and flexible delay function
Introduce a common delay function to provide flexible way for users to take
choices of udelay and usleep_range into consideration according to the
required delay time.

Bug: 151050916
Change-Id: I8d3a22b3eec523933ced54db1ab024d33e871ce0
(cherry picked from commit 5c955c10d0c26eb920f9cfad11adb58c93f666a0)
Link: https://lore.kernel.org/r/20200318104016.28049-4-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Can Guo <cang@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Stanley Chu
058a7d0395 UPSTREAM: scsi: ufs: fix uninitialized tx_lanes in ufshcd_disable_tx_lcc()
In ufshcd_disable_tx_lcc(), if ufshcd_dme_get() or ufshcd_dme_peer_get()
get fail, uninitialized variable "tx_lanes" may be used as unexpected lane
ID for DME configuration.

Fix this issue by initializing "tx_lanes".

Bug: 151050916
Change-Id: Id347f4b47976a90e90ebd066c6f5d209f7155769
(cherry picked from commit ba0320fbb809de541a9b396e153171151607bac8)
Link: https://lore.kernel.org/r/20200318104016.28049-2-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Can Guo <cang@codeaurora.org>
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Stanley Chu
8880ad4916 UPSTREAM: scsi: ufs-mediatek: fix HOST_PA_TACTIVATE quirk for Samsung UFS Devices
Device quirk "UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE" is enabled for all
Samsung devices by default currently.

However MediaTek UFS host requires different host PA_TACTIVATE
configuration. Hence clear this quirk first and then apply vendor-specific
value in vops callback.

Bug: 151050916
Change-Id: Icae52601cebf3416ad48a3dcc1b6b5223dec50a1
(cherry picked from commit 47d054580a75b7d14d275a76146ce2f41bc16a81)
Link: https://lore.kernel.org/r/20200302135346.16797-1-stanley.chu@mediatek.com
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Bean Huo
0f30b1ed21 BACKPORT: scsi: ufs: Add max_lu_supported in struct ufs_dev_info
Add one new parameter max_lu_supported in struct ufs_dev_info, which will
be used to express exactly how many general LUs being supported by UFS
device, and initialize it during booting stage.  This patch also adds a new
function ufshcd_device_geo_params_init() for initialization of UFS device
geometry descriptor related parameters.

Bug: 151050916
(cherry picked from commit 731f06216df3d605c466571a1c89222b4cca2fbc)
[ Resolved minor conflict in drivers/scsi/ufs/ufshcd.c ]
Change-Id: I2f407c726e5fe5e230c9f93075cd34b5b249b96a
Link: https://lore.kernel.org/r/20200120130820.1737-8-huobean@gmail.com
Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2020-06-29 16:12:28 +02:00
Greg Kroah-Hartman
7b096eac4f ANDROID: GKI: remove ufshcd_* exports from whitelists
These are not needed to be exported anymore now that all drivers that
use them are built into the kernel image.

Bug: 157965270
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I098f1a280060b14133613312ebd84436376fb729
2020-06-29 14:12:18 +02:00
Greg Kroah-Hartman
11b71f23d9 ANDROID: GKI: enable CONFIG_SCSI_UFS_DWC_TC_PLATFORM
Platforms are using this, so enable the driver for all to use easier.

Bug: 157965270
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I5a1a6b1231c51148810389c26bc53d734f5c1ca2
2020-06-29 14:00:26 +02:00
Greg Kroah-Hartman
cd0992a395 ANDROID: GKI: enable QCOM and HISI UFS drivers
These seem to be needed by most systems, so just build them into the
kernel so we don't have to keep messing with ABI changes.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I60801d9f98a37b4e84c56c0da2bf1e8d778d9953
2020-06-29 12:38:02 +02:00
Greg Kroah-Hartman
65343a4900 ANDROID: GKI: enable UFS for x86 gki builds and SCSI_UFSHCD_PCI
UFS was not being enabled for x86 gki builds, making it hard to test
stuff locally.

Also enable SCSI_UFSHCD_PCI=y so that the devices that were needing this
as a module do not need that anymore, to match up with the
SCSI_UFSHCD_PLATFORM setting.

Bug: 151050916
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I8af43e0a55f1467c4bd670dcdefddf3746fdd5ef
2020-06-29 12:37:59 +02:00
Rob Herring
85d29c4d6e UPSTREAM: amba: Retry adding deferred devices at late_initcall
If amba bus devices defer when adding, the amba bus code simply retries
adding the devices every 5 seconds. This doesn't work well as it
completely unsynchronized with starting the init process which can
happen in less than 5 secs. Add a retry during late_initcall. If the
amba devices are added, then deferred probe takes over. If the
dependencies have not probed at this point, then there's no improvement
over previous behavior. To completely solve this, we'd need to retry
after every successful probe as deferred probe does.

The list_empty() check now happens outside the mutex, but the mutex
wasn't necessary in the first place.

This needed to use deferred probe instead of fragile initcall ordering
on 32-bit VExpress systems where the apb_pclk has a number of probe
dependencies (vexpress-sysregs, vexpress-config).

Cc: John Stultz <john.stultz@linaro.org>
Cc: Saravana Kannan <saravanak@google.com>
Cc: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Russell King <linux@armlinux.org.uk>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Change-Id: Ib5260568396e3beb85baf282c68825da80dad392
(cherry picked from commit 039599c92d3b2e73689e8b6e519d653fd4770abb)
Bug: 160030772
Signed-off-by: Saravana Kannan <saravanak@google.com>
2020-06-27 01:02:29 +00:00
Todd Kjos
191e77e387 ANDROID: GKI: Enable INTERVAL_TREE
Needed by some GPU/DRM drivers that are built out-of-tree

Bug: 159733980
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: Ia156d1b0a74c82d9f15b144131aff2ddeead0672
2020-06-26 14:53:44 -07:00
Todd Kjos
bf0e4f96e4 FROMGIT: binder: fix null deref of proc->context
The binder driver makes the assumption proc->context pointer is invariant after
initialization (as documented in the kerneldoc header for struct proc).
However, in commit f0fe2c0f050d ("binder: prevent UAF for binderfs devices II")
proc->context is set to NULL during binder_deferred_release().

Another proc was in the middle of setting up a transaction to the dying
process and crashed on a NULL pointer deref on "context" which is a local
set to &proc->context:

    new_ref->data.desc = (node == context->binder_context_mgr_node) ? 0 : 1;

Here's the stack:

[ 5237.855435] Call trace:
[ 5237.855441] binder_get_ref_for_node_olocked+0x100/0x2ec
[ 5237.855446] binder_inc_ref_for_node+0x140/0x280
[ 5237.855451] binder_translate_binder+0x1d0/0x388
[ 5237.855456] binder_transaction+0x2228/0x3730
[ 5237.855461] binder_thread_write+0x640/0x25bc
[ 5237.855466] binder_ioctl_write_read+0xb0/0x464
[ 5237.855471] binder_ioctl+0x30c/0x96c
[ 5237.855477] do_vfs_ioctl+0x3e0/0x700
[ 5237.855482] __arm64_sys_ioctl+0x78/0xa4
[ 5237.855488] el0_svc_common+0xb4/0x194
[ 5237.855493] el0_svc_handler+0x74/0x98
[ 5237.855497] el0_svc+0x8/0xc

The fix is to move the kfree of the binder_device to binder_free_proc()
so the binder_device is freed when we know there are no references
remaining on the binder_proc.

Fixes: f0fe2c0f050d ("binder: prevent UAF for binderfs devices II")
Signed-off-by: Todd Kjos <tkjos@google.com>
(cherry picked from commit d35d3660e065b69fdb8bf512f3d899f350afce52
     git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-linus)
Bug: 158252621
Change-Id: Iee9547d58b85794af034b78eaab47075f3635f82
2020-06-26 21:22:54 +00:00
Alex Hong
cf99ddf1b0 ANDROID: Makefile: append BUILD_NUMBER to version string when defined
In current implementation the Linux version string that is attached to
the kernel linux image as well as the all kernel modules includes the
sha1 of the main git project for the kernel.

This Commit adds the BUILD_NUMBER env variable with an 'ab' prefix to
the Linux version string. This maps to both the Linux Image and all
kernel modules version strings.

Bug: 159842160
Bug: 137521202
Test: Build the kernel and test the version string
Change-Id: I4795955f36f477b257ca86495726e24d6b196d05
Signed-off-by: Alex Hong <rurumihong@google.com>
(cherry picked from commit e60f995403c9799dd0dc14d62d77d6698a8a7126)
[willmcvicker: fix uts_len check to include -ab$(BUILD_NUMBER)]
Signed-off-by: Will McVicker <willmcvicker@google.com>
2020-06-26 18:42:31 +00:00
Greg Kroah-Hartman
6591327ca7 ANDROID: GKI: update the abi definitions due to 5.4.49 and padding
5.4.49 changed some structure definitions in the USB gadget and sound
code, and we added some more padding in this area to prevent that from
happening in the future.

Because of that, update the abi.xml file with these changes.

Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 2 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

'struct snd_usb_endpoint at card.h:54:1' changed:
  type size changed from 44544 to 44992 (in bits)
  9 data member insertions:
    'unsigned int snd_usb_endpoint::framesize[2]', at offset 43744 (in bits) at card.h:89:1
    'unsigned int snd_usb_endpoint::sample_rem', at offset 43808 (in bits) at card.h:90:1
    'unsigned int snd_usb_endpoint::sample_accum', at offset 43840 (in bits) at card.h:91:1
    'unsigned int snd_usb_endpoint::fps', at offset 43872 (in bits) at card.h:92:1
    'bool snd_usb_endpoint::is_implicit_feedback', at offset 44512 (in bits) at card.h:113:1
    'u64 snd_usb_endpoint::android_kabi_reserved1', at offset 44736 (in bits) at card.h:118:1
    'u64 snd_usb_endpoint::android_kabi_reserved2', at offset 44800 (in bits) at card.h:119:1
    'u64 snd_usb_endpoint::android_kabi_reserved3', at offset 44864 (in bits) at card.h:120:1
    'u64 snd_usb_endpoint::android_kabi_reserved4', at offset 44928 (in bits) at card.h:121:1
  there are data member changes:
    'unsigned int snd_usb_endpoint::freqn' offset changed from 43744 to 43904 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::freqm' offset changed from 43776 to 43936 (in bits) (by +160 bits)
    'int snd_usb_endpoint::freqshift' offset changed from 43808 to 43968 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::freqmax' offset changed from 43840 to 44000 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::phase' offset changed from 43872 to 44032 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::maxpacksize' offset changed from 43904 to 44064 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::maxframesize' offset changed from 43936 to 44096 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::max_urb_frames' offset changed from 43968 to 44128 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::curpacksize' offset changed from 44000 to 44160 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::curframesize' offset changed from 44032 to 44192 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::syncmaxsize' offset changed from 44064 to 44224 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::datainterval' offset changed from 44128 to 44288 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::syncinterval' offset changed from 44160 to 44320 (in bits) (by +160 bits)
    'unsigned char snd_usb_endpoint::silence_value' offset changed from 44192 to 44352 (in bits) (by +160 bits)
    'unsigned int snd_usb_endpoint::stride' offset changed from 44224 to 44384 (in bits) (by +160 bits)
    'int snd_usb_endpoint::iface' offset changed from 44256 to 44416 (in bits) (by +160 bits)
    'int snd_usb_endpoint::altsetting' offset changed from 44288 to 44448 (in bits) (by +160 bits)
    'int snd_usb_endpoint::skip_packets' offset changed from 44320 to 44480 (in bits) (by +160 bits)
    'spinlock_t snd_usb_endpoint::lock' offset changed from 44352 to 44544 (in bits) (by +192 bits)
    'list_head snd_usb_endpoint::list' offset changed from 44416 to 44608 (in bits) (by +192 bits)
  2 impacted interfaces

'struct usb_gadget at gadget.h:395:1' changed:
  type size changed from 8256 to 8512 (in bits)
  5 data member insertions:
    'int usb_gadget::irq', at offset 8224 (in bits) at gadget.h:432:1
    'u64 usb_gadget::android_kabi_reserved1', at offset 8256 (in bits) at gadget.h:434:1
    'u64 usb_gadget::android_kabi_reserved2', at offset 8320 (in bits) at gadget.h:435:1
    'u64 usb_gadget::android_kabi_reserved3', at offset 8384 (in bits) at gadget.h:436:1
    'u64 usb_gadget::android_kabi_reserved4', at offset 8448 (in bits) at gadget.h:437:1
  24 impacted interfaces

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ic3fa7583c5b69b0984f4c7b711150b974bec5cc7
2020-06-25 11:26:25 +02:00
Greg Kroah-Hartman
d45a57da92 ANDROID: GKI: USB: Gadget: add Android ABI padding to struct usb_gadget
Over time, this structure is being changed a bunch to fix issues found
in the gadget code as more and more people stress it.  So add padding to
handle any needed future changes that might occur.

Of course, now that the padding is there, there never will be any need
to change this structure again...

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I496797469268cc5d3cfafdb19c141b6b6196fe72
2020-06-25 11:00:10 +02:00
Greg Kroah-Hartman
c55dd6d1b6 ANDROID: GKI: sound/usb/card.h: add Android ABI padding to struct snd_usb_endpoint
There seems to be lots of people wanting to change this structure, and
while it feels internal, due to some SoC patches, there's an ABI that
needs to be preserved here over time.

So add some padding to struct snd_usb_endpoint so that we can maintain
this succesfully in the future.

Of course, now that the padding is there, there never will be any need
to change this structure again...

Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I21cb3abbdca2961e33a94b2bc48b49f3fadbd206
2020-06-25 11:00:10 +02:00
Greg Kroah-Hartman
90dbaed65a This is the 5.4.49 stable release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl7zdl0ACgkQONu9yGCS
 aT4fAg/7Bg+JHOdJpdSb4FLMjpWHnjOMJ4ICMEfEPS9vJR41HpAaC8LdI3PBZdOZ
 ujEdX3ia1p3N/bnnHwVPFaycWQ6Z9TItoj6gzCLqjzVzdKJKXEx8uQFY0KWt+w4R
 0orn1acd+bqMLhnRrJqMEhmRG3Y6IrkWXYr/qDC6OuZDgigtHC46mX0IdQiUomFd
 As9x1cr6+j27zOf8iwyNNXWo5AL2VFR7zDhlfR+sllN6Tn90AhumFoES8GL+ylfu
 OybF5LH4l9gOiFwvI7gTeihJoJOyh/cKP0glnDzRIZVIFv96At3cDt5GiRxkqbYw
 u1bo5X5xPxJogN9SLUi4O6pnrmQmuK27zJcI43TDfdRguSzXWzZclyNQ9d3zqmvJ
 QCmCsQkZst4K4SGg4UE2Wb6Gi51lsmV4OKll7eh61I87e8J7t7r8I5HRDdNCLzuf
 3biqYn8f6307ME59fniVlQSynMt8B9lxyTS6hkYN/iCf753jHKdJRy97JcXugiCo
 DUoMCNchLDg5LH9TWq6k96rCklaVGPkp8HO/davMAc5Xn+YgPqE/ZpO7hH0nCLBE
 Fc0bvddiebXI5NrxIXu20vajQWi5YuVw5JWUBvcK6aONluwRomCvTIPRT1SZZiaK
 5Cm5lyDGK3yYC0Dz++QzATVtNEOAkUOWgLpgOenrUVPtCtgDOrk=
 =cQWB
 -----END PGP SIGNATURE-----

Merge 5.4.49 into android-5.4-stable

Changes in 5.4.49
	power: supply: bq24257_charger: Replace depends on REGMAP_I2C with select
	clk: sunxi: Fix incorrect usage of round_down()
	ASoC: tegra: tegra_wm8903: Support nvidia, headset property
	i2c: piix4: Detect secondary SMBus controller on AMD AM4 chipsets
	ASoC: SOF: imx8: Fix randbuild error
	iio: pressure: bmp280: Tolerate IRQ before registering
	remoteproc: Fix IDR initialisation in rproc_alloc()
	clk: qcom: msm8916: Fix the address location of pll->config_reg
	ASoC: fsl_esai: Disable exception interrupt before scheduling tasklet
	backlight: lp855x: Ensure regulators are disabled on probe failure
	ARM: dts: renesas: Fix IOMMU device node names
	ASoC: davinci-mcasp: Fix dma_chan refcnt leak when getting dma type
	ARM: integrator: Add some Kconfig selections
	ARM: dts: stm32: Add missing ethernet PHY reset on AV96
	scsi: core: free sgtables in case command setup fails
	scsi: qedi: Check for buffer overflow in qedi_set_path()
	arm64: dts: meson: fixup SCP sram nodes
	ALSA: hda/realtek - Introduce polarity for micmute LED GPIO
	ALSA: isa/wavefront: prevent out of bounds write in ioctl
	PCI: Allow pci_resize_resource() for devices on root bus
	scsi: qla2xxx: Fix issue with adapter's stopping state
	Input: edt-ft5x06 - fix get_default register write access
	powerpc/kasan: Fix stack overflow by increasing THREAD_SHIFT
	rtc: mc13xxx: fix a double-unlock issue
	iio: bmp280: fix compensation of humidity
	f2fs: report delalloc reserve as non-free in statfs for project quota
	i2c: pxa: clear all master action bits in i2c_pxa_stop_message()
	remoteproc: qcom_q6v5_mss: map/unmap mpss segments before/after use
	clk: samsung: Mark top ISP and CAM clocks on Exynos542x as critical
	usblp: poison URBs upon disconnect
	serial: 8250: Fix max baud limit in generic 8250 port
	misc: fastrpc: Fix an incomplete memory release in fastrpc_rpmsg_probe()
	misc: fastrpc: fix potential fastrpc_invoke_ctx leak
	dm mpath: switch paths in dm_blk_ioctl() code path
	arm64: dts: armada-3720-turris-mox: forbid SDR104 on SDIO for FCC purposes
	arm64: dts: armada-3720-turris-mox: fix SFP binding
	arm64: dts: juno: Fix GIC child nodes
	pinctrl: ocelot: Fix GPIO interrupt decoding on Jaguar2
	clk: renesas: cpg-mssr: Fix STBCR suspend/resume handling
	ASoC: SOF: Do nothing when DSP PM callbacks are not set
	arm64: dts: fvp: Fix GIC child nodes
	PCI: aardvark: Don't blindly enable ASPM L0s and don't write to read-only register
	ps3disk: use the default segment boundary
	arm64: dts: fvp/juno: Fix node address fields
	vfio/pci: fix memory leaks in alloc_perm_bits()
	coresight: tmc: Fix TMC mode read in tmc_read_prepare_etb()
	RDMA/mlx5: Add init2init as a modify command
	scsi: hisi_sas: Do not reset phy timer to wait for stray phy up
	PCI: pci-bridge-emul: Fix PCIe bit conflicts
	m68k/PCI: Fix a memory leak in an error handling path
	gpio: dwapb: Call acpi_gpiochip_free_interrupts() on GPIO chip de-registration
	usb: gadget: core: sync interrupt before unbind the udc
	powerpc/ptdump: Add _PAGE_COHERENT flag
	mfd: wm8994: Fix driver operation if loaded as modules
	scsi: cxgb3i: Fix some leaks in init_act_open()
	clk: zynqmp: fix memory leak in zynqmp_register_clocks
	scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event
	scsi: vhost: Notify TCM about the maximum sg entries supported per command
	clk: clk-flexgen: fix clock-critical handling
	IB/mlx5: Fix DEVX support for MLX5_CMD_OP_INIT2INIT_QP command
	powerpc/perf/hv-24x7: Fix inconsistent output values incase multiple hv-24x7 events run
	nfsd: Fix svc_xprt refcnt leak when setup callback client failed
	PCI: vmd: Filter resource type bits from shadow register
	RDMA/core: Fix several reference count leaks.
	cifs: set up next DFS target before generic_ip_connect()
	ASoC: qcom: q6asm-dai: kCFI fix
	powerpc/crashkernel: Take "mem=" option into account
	pwm: img: Call pm_runtime_put() in pm_runtime_get_sync() failed case
	sparc32: mm: Don't try to free page-table pages if ctor() fails
	yam: fix possible memory leak in yam_init_driver
	NTB: ntb_pingpong: Choose doorbells based on port number
	NTB: Fix the default port and peer numbers for legacy drivers
	mksysmap: Fix the mismatch of '.L' symbols in System.map
	apparmor: fix introspection of of task mode for unconfined tasks
	net: dsa: lantiq_gswip: fix and improve the unsupported interface error
	apparmor: check/put label on apparmor_sk_clone_security()
	f2fs: handle readonly filesystem in f2fs_ioc_shutdown()
	ASoC: meson: add missing free_irq() in error path
	bpf, sockhash: Fix memory leak when unlinking sockets in sock_hash_free
	scsi: sr: Fix sr_probe() missing deallocate of device minor
	scsi: ibmvscsi: Don't send host info in adapter info MAD after LPM
	apparmor: fix nnp subset test for unconfined
	x86/purgatory: Disable various profiling and sanitizing options
	staging: greybus: fix a missing-check bug in gb_lights_light_config()
	arm64: dts: mt8173: fix unit name warnings
	scsi: qedi: Do not flush offload work if ARP not resolved
	arm64: dts: qcom: msm8916: remove unit name for thermal trip points
	ARM: dts: sun8i-h2-plus-bananapi-m2-zero: Fix led polarity
	RDMA/mlx5: Fix udata response upon SRQ creation
	gpio: dwapb: Append MODULE_ALIAS for platform driver
	scsi: qedf: Fix crash when MFW calls for protocol stats while function is still probing
	pinctrl: rza1: Fix wrong array assignment of rza1l_swio_entries
	virtiofs: schedule blocking async replies in separate worker
	arm64: dts: qcom: fix pm8150 gpio interrupts
	firmware: qcom_scm: fix bogous abuse of dma-direct internals
	staging: gasket: Fix mapping refcnt leak when put attribute fails
	staging: gasket: Fix mapping refcnt leak when register/store fails
	ALSA: usb-audio: Improve frames size computation
	ALSA: usb-audio: Fix racy list management in output queue
	s390/qdio: put thinint indicator after early error
	tty: hvc: Fix data abort due to race in hvc_open
	slimbus: ngd: get drvdata from correct device
	clk: meson: meson8b: Fix the first parent of vid_pll_in_sel
	clk: meson: meson8b: Fix the polarity of the RESET_N lines
	clk: meson: meson8b: Fix the vclk_div{1, 2, 4, 6, 12}_en gate bits
	gpio: pca953x: fix handling of automatic address incrementing
	thermal/drivers/ti-soc-thermal: Avoid dereferencing ERR_PTR
	clk: meson: meson8b: Don't rely on u-boot to init all GP_PLL registers
	ASoC: max98373: reorder max98373_reset() in resume
	soundwire: slave: don't init debugfs on device registration error
	HID: intel-ish-hid: avoid bogus uninitialized-variable warning
	usb: dwc3: gadget: Properly handle ClearFeature(halt)
	usb: dwc3: gadget: Properly handle failed kick_transfer
	staging: wilc1000: Increase the size of wid_list array
	staging: sm750fb: add missing case while setting FB_VISUAL
	PCI: v3-semi: Fix a memory leak in v3_pci_probe() error handling paths
	i2c: pxa: fix i2c_pxa_scream_blue_murder() debug output
	serial: amba-pl011: Make sure we initialize the port.lock spinlock
	drivers: base: Fix NULL pointer exception in __platform_driver_probe() if a driver developer is foolish
	PCI: rcar: Fix incorrect programming of OB windows
	PCI/ASPM: Allow ASPM on links to PCIe-to-PCI/PCI-X Bridges
	scsi: qla2xxx: Fix warning after FC target reset
	ALSA: firewire-lib: fix invalid assignment to union data for directional parameter
	power: supply: lp8788: Fix an error handling path in 'lp8788_charger_probe()'
	power: supply: smb347-charger: IRQSTAT_D is volatile
	ASoC: SOF: core: fix error return code in sof_probe_continue()
	arm64: dts: msm8996: Fix CSI IRQ types
	scsi: target: loopback: Fix READ with data and sensebytes
	scsi: mpt3sas: Fix double free warnings
	SoC: rsnd: add interrupt support for SSI BUSIF buffer
	ASoC: ux500: mop500: Fix some refcounted resources issues
	ASoC: ti: omap-mcbsp: Fix an error handling path in 'asoc_mcbsp_probe()'
	pinctrl: rockchip: fix memleak in rockchip_dt_node_to_map
	dlm: remove BUG() before panic()
	USB: ohci-sm501: fix error return code in ohci_hcd_sm501_drv_probe()
	clk: ti: composite: fix memory leak
	PCI: Fix pci_register_host_bridge() device_register() error handling
	powerpc/64: Don't initialise init_task->thread.regs
	tty: n_gsm: Fix SOF skipping
	tty: n_gsm: Fix waking up upper tty layer when room available
	ALSA: usb-audio: Add duplex sound support for USB devices using implicit feedback
	HID: Add quirks for Trust Panora Graphic Tablet
	PCI/PM: Assume ports without DLL Link Active train links in 100 ms
	habanalabs: increase timeout during reset
	ipmi: use vzalloc instead of kmalloc for user creation
	powerpc/64s/exception: Fix machine check no-loss idle wakeup
	powerpc/pseries/ras: Fix FWNMI_VALID off by one
	drivers: phy: sr-usb: do not use internal fsm for USB2 phy init
	powerpc/ps3: Fix kexec shutdown hang
	vfio-pci: Mask cap zero
	usb/ohci-platform: Fix a warning when hibernating
	drm/msm/mdp5: Fix mdp5_init error path for failed mdp5_kms allocation
	ASoC: Intel: bytcr_rt5640: Add quirk for Toshiba Encore WT8-A tablet
	USB: host: ehci-mxc: Add error handling in ehci_mxc_drv_probe()
	tty: n_gsm: Fix bogus i++ in gsm_data_kick
	fpga: dfl: afu: Corrected error handling levels
	clk: samsung: exynos5433: Add IGNORE_UNUSED flag to sclk_i2s1
	RDMA/hns: Bugfix for querying qkey
	RDMA/hns: Fix cmdq parameter of querying pf timer resource
	scsi: target: tcmu: Userspace must not complete queued commands
	firmware: imx: scu: Fix possible memory leak in imx_scu_probe()
	fuse: fix copy_file_range cache issues
	fuse: copy_file_range should truncate cache
	arm64: tegra: Fix ethernet phy-mode for Jetson Xavier
	arm64: tegra: Fix flag for 64-bit resources in 'ranges' property
	powerpc/64s/pgtable: fix an undefined behaviour
	dm zoned: return NULL if dmz_get_zone_for_reclaim() fails to find a zone
	PCI/PTM: Inherit Switch Downstream Port PTM settings from Upstream Port
	PCI: dwc: Fix inner MSI IRQ domain registration
	PCI: amlogic: meson: Don't use FAST_LINK_MODE to set up link
	IB/cma: Fix ports memory leak in cma_configfs
	watchdog: da9062: No need to ping manually before setting timeout
	usb: dwc2: gadget: move gadget resume after the core is in L0 state
	USB: gadget: udc: s3c2410_udc: Remove pointless NULL check in s3c2410_udc_nuke
	usb: gadget: lpc32xx_udc: don't dereference ep pointer before null check
	usb: gadget: fix potential double-free in m66592_probe.
	usb: gadget: Fix issue with config_ep_by_speed function
	scripts: headers_install: Exit with error on config leak
	RDMA/iw_cxgb4: cleanup device debugfs entries on ULD remove
	x86/apic: Make TSC deadline timer detection message visible
	mfd: stmfx: Reset chip on resume as supply was disabled
	mfd: stmfx: Fix stmfx_irq_init error path
	mfd: stmfx: Disable IRQ in suspend to avoid spurious interrupt
	powerpc/32s: Don't warn when mapping RO data ROX.
	ASoC: fix incomplete error-handling in img_i2s_in_probe.
	scsi: target: tcmu: Fix a use after free in tcmu_check_expired_queue_cmd()
	clk: bcm2835: Fix return type of bcm2835_register_gate
	scsi: ufs-qcom: Fix scheduling while atomic issue
	KVM: PPC: Book3S HV: Ignore kmemleak false positives
	KVM: PPC: Book3S: Fix some RCU-list locks
	clk: sprd: return correct type of value for _sprd_pll_recalc_rate
	clk: ast2600: Fix AHB clock divider for A1
	misc: xilinx-sdfec: improve get_user_pages_fast() error handling
	/dev/mem: Revoke mappings when a driver claims the region
	net: sunrpc: Fix off-by-one issues in 'rpc_ntop6'
	NFSv4.1 fix rpc_call_done assignment for BIND_CONN_TO_SESSION
	of: Fix a refcounting bug in __of_attach_node_sysfs()
	input: i8042 - Remove special PowerPC handling
	powerpc/4xx: Don't unmap NULL mbase
	extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()'
	ASoC: fsl_asrc_dma: Fix dma_chan leak when config DMA channel failed
	vfio/mdev: Fix reference count leak in add_mdev_supported_type
	rtc: rv3028: Add missed check for devm_regmap_init_i2c()
	mailbox: zynqmp-ipi: Fix NULL vs IS_ERR() check in zynqmp_ipi_mbox_probe()
	rxrpc: Adjust /proc/net/rxrpc/calls to display call->debug_id not user_ID
	openrisc: Fix issue with argument clobbering for clone/fork
	drm/nouveau/disp/gm200-: fix NV_PDISP_SOR_HDMI2_CTRL(n) selection
	ceph: don't return -ESTALE if there's still an open file
	nfsd4: make drc_slab global, not per-net
	gfs2: Allow lock_nolock mount to specify jid=X
	scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj
	scsi: ufs: Don't update urgent bkops level when toggling auto bkops
	pinctrl: imxl: Fix an error handling path in 'imx1_pinctrl_core_probe()'
	pinctrl: freescale: imx: Fix an error handling path in 'imx_pinctrl_probe()'
	nfsd: safer handling of corrupted c_type
	drm/amd/display: Revalidate bandwidth before commiting DC updates
	crypto: omap-sham - add proper load balancing support for multicore
	geneve: change from tx_error to tx_dropped on missing metadata
	lib/zlib: remove outdated and incorrect pre-increment optimization
	include/linux/bitops.h: avoid clang shift-count-overflow warnings
	selftests/vm/pkeys: fix alloc_random_pkey() to make it really random
	blktrace: use errno instead of bi_status
	blktrace: fix endianness in get_pdu_int()
	blktrace: fix endianness for blk_log_remap()
	gfs2: fix use-after-free on transaction ail lists
	net: marvell: Fix OF_MDIO config check
	ntb_perf: pass correct struct device to dma_alloc_coherent
	ntb_tool: pass correct struct device to dma_alloc_coherent
	NTB: ntb_tool: reading the link file should not end in a NULL byte
	NTB: Revert the change to use the NTB device dev for DMA allocations
	NTB: perf: Don't require one more memory window than number of peers
	NTB: perf: Fix support for hardware that doesn't have port numbers
	NTB: perf: Fix race condition when run with ntb_test
	NTB: ntb_test: Fix bug when counting remote files
	i2c: icy: Fix build with CONFIG_AMIGA_PCMCIA=n
	drivers/perf: hisi: Fix wrong value for all counters enable
	selftests/net: in timestamping, strncpy needs to preserve null byte
	f2fs: don't return vmalloc() memory from f2fs_kmalloc()
	afs: Fix memory leak in afs_put_sysnames()
	ASoC: core: only convert non DPCM link to DPCM link
	ASoC: SOF: nocodec: conditionally set dpcm_capture/dpcm_playback flags
	ASoC: Intel: bytcr_rt5640: Add quirk for Toshiba Encore WT10-A tablet
	ASoC: rt5645: Add platform-data for Asus T101HA
	bpf/sockmap: Fix kernel panic at __tcp_bpf_recvmsg
	bpf, sockhash: Synchronize delete from bucket list on map free
	tracing/probe: Fix bpf_task_fd_query() for kprobes and uprobes
	drm/sun4i: hdmi ddc clk: Fix size of m divider
	libbpf: Handle GCC noreturn-turned-volatile quirk
	scsi: acornscsi: Fix an error handling path in acornscsi_probe()
	x86/idt: Keep spurious entries unset in system_vectors
	net/filter: Permit reading NET in load_bytes_relative when MAC not set
	nvme-pci: use simple suspend when a HMB is enabled
	nfs: set invalid blocks after NFSv4 writes
	xdp: Fix xsk_generic_xmit errno
	iavf: fix speed reporting over virtchnl
	bpf: Fix memlock accounting for sock_hash
	usb/xhci-plat: Set PM runtime as active on resume
	usb: host: ehci-platform: add a quirk to avoid stuck
	usb/ehci-platform: Set PM runtime as active on resume
	perf report: Fix NULL pointer dereference in hists__fprintf_nr_sample_events()
	perf stat: Fix NULL pointer dereference
	ext4: stop overwrite the errcode in ext4_setup_super
	bcache: fix potential deadlock problem in btree_gc_coalesce
	powerpc: Fix kernel crash in show_instructions() w/DEBUG_VIRTUAL
	afs: Fix non-setting of mtime when writing into mmap
	afs: afs_write_end() should change i_size under the right lock
	afs: Fix EOF corruption
	afs: Always include dir in bulk status fetch from afs_do_lookup()
	afs: Set error flag rather than return error from file status decode
	afs: Fix the mapping of the UAEOVERFLOW abort code
	bnxt_en: Return from timer if interface is not in open state.
	scsi: ufs-bsg: Fix runtime PM imbalance on error
	block: Fix use-after-free in blkdev_get()
	mvpp2: remove module bugfix
	arm64: hw_breakpoint: Don't invoke overflow handler on uaccess watchpoints
	libata: Use per port sync for detach
	drm: encoder_slave: fix refcouting error for modules
	ext4: fix partial cluster initialization when splitting extent
	ext4: avoid utf8_strncasecmp() with unstable name
	drm/dp_mst: Reformat drm_dp_check_act_status() a bit
	drm/qxl: Use correct notify port address when creating cursor ring
	drm/amdgpu: Replace invalid device ID with a valid device ID
	selinux: fix double free
	jbd2: clean __jbd2_journal_abort_hard() and __journal_abort_soft()
	ext4: avoid race conditions when remounting with options that change dax
	drm/dp_mst: Increase ACT retry timeout to 3s
	drm/amd/display: Use swap() where appropriate
	x86/boot/compressed: Relax sed symbol type regex for LLVM ld.lld
	block: nr_sects_write(): Disable preemption on seqcount write
	net/mlx5: DR, Fix freeing in dr_create_rc_qp()
	f2fs: split f2fs_d_compare() from f2fs_match_name()
	f2fs: avoid utf8_strncasecmp() with unstable name
	s390: fix syscall_get_error for compat processes
	drm/i915: Fix AUX power domain toggling across TypeC mode resets
	drm/msm: Check for powered down HW in the devfreq callbacks
	drm/i915/gem: Avoid iterating an empty list
	drm/i915: Whitelist context-local timestamp in the gen9 cmdparser
	drm/connector: notify userspace on hotplug after register complete
	drm/amd/display: Use kvfree() to free coeff in build_regamma()
	drm/i915/icl+: Fix hotplug interrupt disabling after storm detection
	Revert "drm/amd/display: disable dcn20 abm feature for bring up"
	crypto: algif_skcipher - Cap recv SG list at ctx->used
	crypto: algboss - don't wait during notifier callback
	tracing/probe: Fix memleak in fetch_op_data operations
	kprobes: Fix to protect kick_kprobe_optimizer() by kprobe_mutex
	kretprobe: Prevent triggering kretprobe from within kprobe_flush_task
	e1000e: Do not wake up the system via WOL if device wakeup is disabled
	net: octeon: mgmt: Repair filling of RX ring
	pwm: jz4740: Enhance precision in calculation of duty cycle
	sched/rt, net: Use CONFIG_PREEMPTION.patch
	net: core: device_rename: Use rwsem instead of a seqcount
	Linux 5.4.49

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I93723d3c14b5de06aafb4e59a9e35a1d74389757
2020-06-25 07:49:21 +02:00
Daniel Rosenberg
954d16b089 ANDROID: ext4: Optimize match for casefolded encrypted dirs
Matching names with casefolded encrypting directories requires
decrypting entries to confirm case since we are case preserving. We can
avoid needing to decrypt if our hash values don't match.

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Test: Boots, /data/media is case insensitive
Bug: 138322712
Change-Id: Id6024fc2a3bbde1e46a29070981fa64b3f667075
2020-06-24 22:38:59 +00:00
Daniel Rosenberg
268041d71e ANDROID: ext4: Handle casefolding with encryption
This adds support for encryption with casefolding.

Since the name on disk is case preserving, and also encrypted, we can no
longer just recompute the hash on the fly. Additionally, to avoid
leaking extra information from the hash of the unencrypted name, we use
siphash via an fscrypt v2 policy.

The hash is stored at the end of the directory entry for all entries
inside of an encrypted and casefolded directory apart from those that
deal with '.' and '..'. This way, the change is backwards compatible
with existing ext4 filesystems.

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Test: Boots, /data/media is case insensitive
Bug: 138322712
Change-Id: I07354e3129aa07d309fbe36c002fee1af718f348
2020-06-24 22:38:51 +00:00
Jaegeuk Kim
18df2d2ddb Merge remote-tracking branch 'aosp/upstream-f2fs-stable-linux-5.4.y' into android-5.4-stable
* aosp/upstream-f2fs-stable-linux-5.4.y:
  writeback: Drop I_DIRTY_TIME_EXPIRE
  writeback: Fix sync livelock due to b_dirty_time processing
  writeback: Avoid skipping inode writeback
  writeback: Protect inode->i_io_list with inode->i_lock
  Revert "writeback: Avoid skipping inode writeback"

 Conflicts:
	include/trace/events/writeback.h

Bug: 154542664
Change-Id: I98a6258cb60227e6ca02e57bf7adf28ab7816cbf
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
2020-06-24 11:13:19 -07:00
Greg Kroah-Hartman
4e9688ad3d Linux 5.4.49 2020-06-24 17:50:53 +02:00
Ahmed S. Darwish
99705220b2 net: core: device_rename: Use rwsem instead of a seqcount
[ Upstream commit 11d6011c2cf29f7c8181ebde6c8bc0c4d83adcd7 ]

Sequence counters write paths are critical sections that must never be
preempted, and blocking, even for CONFIG_PREEMPTION=n, is not allowed.

Commit 5dbe7c178d ("net: fix kernel deadlock with interface rename and
netdev name retrieval.") handled a deadlock, observed with
CONFIG_PREEMPTION=n, where the devnet_rename seqcount read side was
infinitely spinning: it got scheduled after the seqcount write side
blocked inside its own critical section.

To fix that deadlock, among other issues, the commit added a
cond_resched() inside the read side section. While this will get the
non-preemptible kernel eventually unstuck, the seqcount reader is fully
exhausting its slice just spinning -- until TIF_NEED_RESCHED is set.

The fix is also still broken: if the seqcount reader belongs to a
real-time scheduling policy, it can spin forever and the kernel will
livelock.

Disabling preemption over the seqcount write side critical section will
not work: inside it are a number of GFP_KERNEL allocations and mutex
locking through the drivers/base/ :: device_rename() call chain.

>From all the above, replace the seqcount with a rwsem.

Fixes: 5dbe7c178d (net: fix kernel deadlock with interface rename and netdev name retrieval.)
Fixes: 30e6c9fa93 (net: devnet_rename_seq should be a seqcount)
Fixes: c91f6df2db (sockopt: Change getsockopt() of SO_BINDTODEVICE to return an interface name)
Cc: <stable@vger.kernel.org>
Reported-by: kbuild test robot <lkp@intel.com> [ v1 missing up_read() on error exit ]
Reported-by: Dan Carpenter <dan.carpenter@oracle.com> [ v1 missing up_read() on error exit ]
Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de>
Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-06-24 17:50:52 +02:00