Commit Graph

1062728 Commits

Author SHA1 Message Date
Bart Van Assche
ae2b84d37b UPSTREAM: scsi: core: Change the return type of .eh_timed_out()
Commit 6600593cbd ("block: rename BLK_EH_NOT_HANDLED to BLK_EH_DONE")
made it impossible for .eh_timed_out() implementations to call
scsi_done() without causing a crash.

Restore support for SCSI timeout handlers to call scsi_done() as follows:

 * Change all .eh_timed_out() handlers as follows:

   - Change the return type into enum scsi_timeout_action.
   - Change BLK_EH_RESET_TIMER into SCSI_EH_RESET_TIMER.
   - Change BLK_EH_DONE into SCSI_EH_NOT_HANDLED.

 * In scsi_timeout(), convert the SCSI_EH_* values into BLK_EH_* values.

Reviewed-by: Lee Duncan <lduncan@suse.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Mike Christie <michael.christie@oracle.com>
Cc: Hannes Reinecke <hare@suse.de>
Change-Id: I92d261e37dc396b43596015b70a8894ad4933eab
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221018202958.1902564-3-bvanassche@acm.org
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit dee7121e8c0a3ce41af2b02d516f54eaec32abcd)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Bart Van Assche
24eae8556b UPSTREAM: scsi: core: Fix a race between scsi_done() and scsi_timeout()
If there is a race between scsi_done() and scsi_timeout() and if
scsi_timeout() loses the race, scsi_timeout() should not reset the request
timer. Hence change the return value for this case from BLK_EH_RESET_TIMER
into BLK_EH_DONE.

Although the block layer holds a reference on a request (req->ref) while
calling a timeout handler, restarting the timer (blk_add_timer()) while a
request is being completed is racy.

Reviewed-by: Mike Christie <michael.christie@oracle.com>
Cc: Keith Busch <kbusch@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Hannes Reinecke <hare@suse.de>
Reported-by: Adrian Hunter <adrian.hunter@intel.com>
Fixes: 15f73f5b3e ("blk-mq: move failure injection out of blk_mq_complete_request")
Change-Id: Ia669e7c74e68a8a2fb716ea70f01b6ea75fff2df
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221018202958.1902564-2-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 978b7922d3dca672b41bb4b8ce6c06ab77112741)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Bart Van Assche
422472d6ac UPSTREAM: scsi: ufs: Simplify ufshcd_set_dev_pwr_mode()
Simplify the code for incrementing the SCSI device reference count in
ufshcd_set_dev_pwr_mode(). This commit removes one scsi_device_put() call
that happens from atomic context.

Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Avri Altman <avri.altman@wdc.com>
Change-Id: Ic9119eef18944685fe388919d89ea0ce486850a5
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221015002418.30955-7-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 6d1aa3b0589bdd17a46ed74fbd2c2d0fc59038ff)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Daniil Lunev
a03f31d081 UPSTREAM: scsi: ufs: core: Print UFSHCD capabilities in controller's sysfs node
Userspace may want to manually control when the data should go into
WriteBooster buffer. The control happens via "wb_on" node, but presently,
there is no simple way to check if WriteBooster is supported and
enabled.

Expose the Write Booster and Clock Scaling capabilities to be able to
determine if the Write Booster is available and if its manual control is
blocked by Clock Scaling mechanism.

Link: https://lore.kernel.org/r/20220829081845.v8.1.Ibf9efc9be50783eeee55befa2270b7d38552354c@changeid
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Change-Id: I4b8f30fc9291deaccd6a4d8913d78bd0a7b344dc
Signed-off-by: Daniil Lunev <dlunev@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 2286ade07d74498a62c0ad067a79ca8dcc04016f)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Jinyoung Choi
2d02f81b28 UPSTREAM: scsi: ufs: wb: Modify messages
Modify messages to fit the format of others.

Link: https://lore.kernel.org/r/20220804075519epcms2p148b6ae956b172925b26304b50d6a0da9@epcms2p1
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Change-Id: I13315ad2ff5d48b44b396d873961f116b5132afb
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 4f6b69f364a6c70147adca9b970821c3b710b770)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Jinyoung Choi
8d5ce8adb9 UPSTREAM: scsi: ufs: wb: Introduce ufshcd_is_wb_buf_flush_allowed()
The explicit flushing should check the following:

 - UFSHCD_CAP_WB_EN

 - UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL

Add helper to improve readability.

Link: https://lore.kernel.org/r/20220804075444epcms2p4a0520880262281f02be65ce0fe50602d@epcms2p4
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Acked-by: Bean Huo <beanhuo@micron.com>
Change-Id: Ia93eb5460789c18a3a4b881a0bdc351ee1b09ba8
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 42f8c5cdb039f93f8d20f3e299aa6436775ee9d6)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Jinyoung Choi
8a24c2de8b UPSTREAM: scsi: ufs: wb: Add explicit flush sysfs attribute
There is the following quirk to bypass "WB Flush" in Write Booster.

	- UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL

If this quirk is not set, there is no knob that can control "WB Flush".

There are three flags that control Write Booster Feature:

	1. WB ON/OFF
	2. WB Hibern Flush ON/OFF (implicitly)
	3. WB Flush ON/OFF (explicit)

The sysfs attribute that controls the WB was implemented. (1)

In the case of "Hibern Flush", it is always good to turn on.  Control may
not be required. (2)

Finally, "Flush" may be necessary because the Auto-Hibern8 is not supported
in a specific environment.  So the sysfs attribute that controls this is
necessary. (3)

Link: https://lore.kernel.org/r/20220804075354epcms2p8c21c894b4e28840c5fc651875b7f435f@epcms2p8
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Change-Id: Ie05798286a28c30dc30f7e9e6a1d77b963263043
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 6c4148ce7cc1d80cef60242a97b25c83c844e68c)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Jinyoung Choi
f77cbdb960 UPSTREAM: scsi: ufs: wb: Change wb_enabled condition test
Change to improve readability.

Link: https://lore.kernel.org/r/20220804074928epcms2p86582693a39597501b491400a28543a92@epcms2p8
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Change-Id: I5b59ed911ffdf2ea734f244ab1b8c7cf2832c92d
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit f8dc7a31a3eed86b6830854e30d1c52eec6473ec)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Jinyoung Choi
1cbf4559b8 UPSTREAM: scsi: ufs: wb: Change function name and parameter names
Change the parameter names of ufshcd_wb_toggle_flush_during_h8() to match
the other toggle functions.

Link: https://lore.kernel.org/r/20220804075058epcms2p550c578d743fe0a94888b3d71cc9076d4@epcms2p5
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Change-Id: I4468b9c8632401a8f4de29172f2d6076578dfcc3
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 4450a1653a935d6c0682c08c51b58cba983cf819)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Peter Wang
f827a0f551 UPSTREAM: scsi: ufs: core: Allow host driver to disable wb toggling during clock scaling
Mediatek UFS does not want to toggle write booster during clock scaling.
Permit host driver to disable wb toggling during clock scaling.

Introduce a flag UFSHCD_CAP_WB_WITH_CLK_SCALING to decouple WB and clock
scaling.  UFSHCD_CAP_WB_WITH_CLK_SCALING is only valid when
UFSHCD_CAP_CLK_SCALING is set. Just like UFSHCD_CAP_HIBERN8_WITH_CLK_GATING
is valid only when UFSHCD_CAP_CLK_GATING set.

Set UFSHCD_CAP_WB_WITH_CLK_SCALING for qcom to compatible legacy design at
the same time.

Link: https://lore.kernel.org/r/20220804025422.18803-1-peter.wang@mediatek.com
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Change-Id: I55eb7d48b8662be9a9e17977c4ef9cf4d402c241
Signed-off-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 87bd05016a64864d27a640ca24ef63c760b67d73)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Daniil Lunev
66f0e62e45 UPSTREAM: scsi: ufs: core: Use local_clock() for debugging timestamps
CLOCK_MONOTONIC is not advanced when the system is in suspend. This becomes
problematic when debugging issues related to suspend-resume: the timestamps
printed by ufshcd_print_trs can not be correlated with dmesg entries, which
are timestamped with local_clock().

Change the used clock to local_clock() for the informational timestamp
variables and adds mirroring *_local_clock instances for variables used in
subsequent derevations (to not change the semantics of those derevations).

Link: https://lore.kernel.org/r/20220804065019.v5.1.I699244ea7efbd326a34a6dfd9b5a31e78400cf68@changeid
Acked-by: Stanley Chu <stanley.chu@mediatek.com>
Acked-by: Avri Altman <avri.altman@wdc.com>
Change-Id: If97e2a159690adb247156f264879a706eefabb84
Signed-off-by: Daniil Lunev <dlunev@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 0f85e74756b5e85a0de6dce7d8c07f0b4e1f7726)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Po-Wen Kao
d393a614b5 UPSTREAM: scsi: ufs: ufs-mediatek: Support clk-scaling to optimize power consumption
Provide clk-scaling feature in MediaTek UFS platforms.

MediaTek platform supports clk-scaling by switching parent clock mux of
UFSHCI main clocks: ufs_sel.

The driver needs to prevent changing the rate of ufs_sel because its parent
PLL clock may be shared between multiple IPs. In order to achieve this
goal, the maximum and minimum clock rates of ufs_sel defined in dts should
match the rate of "ufs_sel_max_src" and "ufs_sel_min_src" respectively.

Link: https://lore.kernel.org/r/20220802235437.4547-6-stanley.chu@mediatek.com
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Change-Id: Ie37f45fc3738369f9a401ef33f46d995cbe400a1
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit b7dbc686f60b28d0843ed572f8aa59c3e76e142b)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Peter Wang
0e0d69ba97 UPSTREAM: scsi: ufs: ufs-mediatek: Fix performance scaling
If clk-scaling is enabled, performance scaling can be bound to the decision
of clk-scaling to avoid unnecessary boosting.

In addition, fix missing initialization of pm-qos request.

Link: https://lore.kernel.org/r/20220802235437.4547-5-stanley.chu@mediatek.com
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Change-Id: Iaed7f5cbd9f3981d85b7e9d582c63b5052f52222
Signed-off-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: 258234315
(cherry picked from commit 2873e0453b0165117bdc28dee3e38d69dd82f4c5)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Stanley Chu
12d5e685dc UPSTREAM: scsi: ufs: ufs-mediatek: Provide detailed description for UIC errors
Provide detailed description in logs for UIC errors for easier issue
breakdown.

Link: https://lore.kernel.org/r/20220802235437.4547-3-stanley.chu@mediatek.com
Change-Id: I45bdbd2d8536e57fc4bb49adf503b29df96028e9
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 4d869fe67acccfc436c6030ceaba4779174019a4)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Stanley Chu
24bcd07af6 UPSTREAM: scsi: ufs: ufs-mediatek: Remove redundant header files
Remove redundant #include of header file <linux/sched/clock.h>.

Link: https://lore.kernel.org/r/20220802235437.4547-2-stanley.chu@mediatek.com
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Change-Id: I802080573dc8baae623b360a68f2ca1f023e608f
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit de9f43f0d28b908479345062a235152613cb3567)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Alim Akhtar
85834820dd UPSTREAM: scsi: ufs: host: ufs-exynos: Make fsd_ufs_drvs static
struct fsd_ufs_drvs is not used outside this file, so make it static.  This
fixes sparse warning:

drivers/ufs/host/ufs-exynos.c:1721:28: sparse: sparse:
symbol 'fsd_ufs_drvs' was not declared. Should it be static?

Link: https://lore.kernel.org/r/20220811161053.54081-1-alim.akhtar@samsung.com
Fixes: 216f74e8059a ("scsi: ufs: host: ufs-exynos: Add support for FSD UFS HCI")
Reported-by: kernel test robot <lkp@intel.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Change-Id: I69ee10bdab378536b88dcde473e99b6278ee8023
Signed-off-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 37dd4ab1ff8cb843c69835dcaf7bc719a2bf2e0c)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Daniil Lunev
0c8a232536 UPSTREAM: scsi: ufs: ufs-pci: Correct check for RESET DSM
dsm_fns is a bitmap, and it is 0-indexed according to the check in
__intel_dsm function. But common initialization was checking it as if it
was 1-indexed. This patch corrects the discrepancy. This change won't break
any existing calls to the function, since before the change both bits 0 and
1 were checked and needed to be set.

Link: https://lore.kernel.org/r/20220728111748.v3.1.I22460c4f4a9ccf2c96c3f9bb392b409926d80b2f@changeid
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Change-Id: Ice546525e0f7661dc164507cb822517419f6cb20
Signed-off-by: Daniil Lunev <dlunev@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit a19066788d875731a01ee7fa189b2202f0120036)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Bart Van Assche
ff00ba18aa UPSTREAM: scsi: ufs: core: Increase the maximum data buffer size
Measurements for one particular UFS controller + UFS device show a 25%
higher read bandwidth if the maximum data buffer size is increased from 512
KiB to 1 MiB. Hence increase the maximum size of the data buffer associated
with a single request from SCSI_DEFAULT_MAX_SECTORS (1024) * 512 bytes =
512 KiB to 1 MiB.

Notes:

 - The maximum data buffer size supported by the UFSHCI specification
   is 65535 * 256 KiB or about 16 GiB.

 - The maximum data buffer size for READ(10) commands is 65535 logical
   blocks. To transfer more than 65535 * 4096 bytes = 255 MiB with a single
   SCSI command, the READ(16) command is required. Support for READ(16) is
   optional in the UFS 3.1 and UFS 4.0 standards.

Link: https://lore.kernel.org/r/20220726225232.1362251-1-bvanassche@acm.org
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Avri Altman <avri.altman@wdc.com>
Cc: Bean Huo <beanhuo@micron.com>
Cc: Stanley Chu <stanley.chu@mediatek.com>
Tested-by: Avri Altman <avri.altman@wdc.com>
Acked-by: Avri Altman <avri.altman@wdc.com>
Change-Id: I8c9db803e7f55d911e86d4fa0272d38d13ee05d5
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 86a44f045b8cbfd885b7425f4cd8a1c353593057)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Colin Ian King
8cd06a39b1 UPSTREAM: scsi: ufs: core: Fix spelling mistake "Cannnot" -> "Cannot"
There is a spelling mistake in a dev_dbg message. Fix it.

Link: https://lore.kernel.org/r/20220719110649.759821-1-colin.i.king@gmail.com
Change-Id: I99c3ebc1ef91bc2309ae80900bf333283b8d57d7
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit aaa26e383bfc566eca059dcfe1123338cfc9f659)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Bart Van Assche
8d5a5bc0fb UPSTREAM: scsi: ufs: Reduce the START STOP UNIT timeout
Reduce the START STOP UNIT command timeout to one second since on Android
devices a kernel panic is triggered if an attempt to suspend the system
takes more than 20 seconds. One second should be enough for the START STOP
UNIT command since this command completes in less than a millisecond for
the UFS devices I have access to.

Change-Id: Ibe4960f00bfa4ae6871b563c2f91d37aa4cb6150
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221018202958.1902564-7-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit dcd5b7637c6d442d957f73780a03047413ed3a10)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Bart Van Assche
f05ec79e38 UPSTREAM: scsi: ufs: core: Fix a race condition related to device management
If a device management command completion happens after
wait_for_completion_timeout() times out and before ufshcd_clear_cmds() is
called, then the completion code may crash on the complete() call in
__ufshcd_transfer_req_compl().

Fix the following crash:

  Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
  Call trace:
   complete+0x64/0x178
   __ufshcd_transfer_req_compl+0x30c/0x9c0
   ufshcd_poll+0xf0/0x208
   ufshcd_sl_intr+0xb8/0xf0
   ufshcd_intr+0x168/0x2f4
   __handle_irq_event_percpu+0xa0/0x30c
   handle_irq_event+0x84/0x178
   handle_fasteoi_irq+0x150/0x2e8
   __handle_domain_irq+0x114/0x1e4
   gic_handle_irq.31846+0x58/0x300
   el1_irq+0xe4/0x1c0
   efi_header_end+0x110/0x680
   __irq_exit_rcu+0x108/0x124
   __handle_domain_irq+0x118/0x1e4
   gic_handle_irq.31846+0x58/0x300
   el1_irq+0xe4/0x1c0
   cpuidle_enter_state+0x3ac/0x8c4
   do_idle+0x2fc/0x55c
   cpu_startup_entry+0x84/0x90
   kernel_init+0x0/0x310
   start_kernel+0x0/0x608
   start_kernel+0x4ec/0x608

Link: https://lore.kernel.org/r/20220720170228.1598842-1-bvanassche@acm.org
Fixes: 5a0b0cb9be ("[SCSI] ufs: Add support for sending NOP OUT UPIU")
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Avri Altman <avri.altman@wdc.com>
Cc: Bean Huo <beanhuo@micron.com>
Cc: Stanley Chu <stanley.chu@mediatek.com>
Change-Id: Id6f73be1eb751784d28e1acf6270134f6080dbd3
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit f5c2976e0cb0f6236013bfb479868531b04f61d4)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Bart Van Assche
c321cdeb5e UPSTREAM: scsi/ufs: Rename a 'dir' argument into 'op'
Improve consistency of the kernel code by renaming a request operation
argument from 'dir' into 'op'.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Change-Id: Ide046fe3acfb405c95f246160b456c53c03f63ba
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20220714180729.1065367-44-bvanassche@acm.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Bug: 258234315
(cherry picked from commit 0d8009f39d0adb5b0415190f71841a88f14d9790)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Po-Wen Kao
d8782bbd49 UPSTREAM: scsi: ufs: core: Fix missing clk change notification on host reset
In ufshcd_host_reset_and_restore(), ufshcd_set_clk_freq() is called to
scale clock rate. However, this did not call vops->clk_scale_notify() to
inform platform driver of clock change.

Call ufshcd_scale_clks() instead so that clock change can be properly
handled.

Link: https://lore.kernel.org/r/20220711144224.17916-2-powen.kao@mediatek.com
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Change-Id: I37cfe184f3a980ec90ab2a3b879017e4afe78a66
Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 258234315
(cherry picked from commit 52a518019ca187227b786f8b8ee20869a97f3af4)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Bart Van Assche
54e90464f1 ANDROID: scsi: ufs: Remove a statement from the MediaTek driver
Remove a statement from the MediaTek driver that is not present in the
upstream code.

Bug: 258234315
Fixes: 239044beef ("Merge 5.15.63 into android14-5.15")
Change-Id: I6379d6a5f10cd6d00c94314995c55c72282e1275
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2022-11-17 22:03:52 +00:00
Ramji Jiyani
01d9b23ec3 ANDROID: GKI: Convert Net PPP Protocol as module
Converts networking Point to Point Protocol drivers as GKI modules.

CONFIG_PPP: PPP (point-to-point protocol) support
CONFIG_PPP_BSDCOMP: PPP BSD-Compress compression
CONFIG_PPP_DEFLATE: PPP Deflate compression
CONFIG_PPP_MPPE: PPP MPPE compression (encryption); selects CRYPTO_LIB_ARC4=m
CONFIG_PPTP: PPP over IPv4 (PPTP)

Bug: 232431151
Test: TH
Change-Id: Id6ef00a4cda0433d375554a965835d6d59d2d473
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2022-11-17 20:18:16 +00:00
Mark Fasheh
311664ac87 ANDROID: Add ashmem ioctl to return a unique file identifier
This will allow a client program to avoid redundant actions on ashmem
buffers which it has already seen.

Bug: 244233389
Change-Id: Ica57a8842ff163eae5f9eca8141b439091ec0940
Signed-off-by: Mark Fasheh <mfasheh@google.com>
2022-11-17 17:00:50 +00:00
Yifan Hong
880ad59ebb ANDROID: convert rockpi4 to kleaf.
Use Kleaf to build rockpi4.

This does not enable mixed build. Mixed build is enabled
in follow-up CLs.

Test: bazel build //common:rockpi4_dist
Bug: 258259749
Bug: 258841346
Change-Id: I4828953495c862afe517fff48195d2f6a97e3fcf
Signed-off-by: Yifan Hong <elsk@google.com>
2022-11-17 10:45:14 +00:00
Ramji Jiyani
7070a0ef92 ANDROID: GKI: Convert L2TP as modules
Converts L2TP and PPP over L2TP as GKI modules.
CONFIG_L2TP: Layer Two Tunneling Protocol (L2TP)
CONFIG_PPOL2TP: PPP over L2TP

Makes CONFIG_NETFILTER_XT_MATCH_L2TP visible in the savedefconfig.

Bug: 232431151
Test: TH
Change-Id: I0e1cbd8f04f97f172f8b1551eade21cf303b24ed
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2022-11-17 01:12:56 +00:00
Ramji Jiyani
e0f43e20ef ANDROID: GKI: Convert 802.15.4 support as module
Converts IEEE 802.15.4 Protocol, Socket & MAC drivers
as GKI modules.

CONFIG_IEEE802154: IEEE Std 802.15.4 Low-Rate Wireless PANs support
CONFIG_IEEE802154_SOCKET: IEEE 802.15.4 socket interface
CONFIG_MAC802154: Generic IEEE 802.15.4 Soft Networking Stack

CONFIG_MAC802154=m makes following configs visible in savedefconfig:
CONFIG_CRC_CCITT & CONFIG_CRYPTO_CCM

Bug: 232431151
Test: TH
Change-Id: Iec93faf73e2955054474e482c1d25ad3df822659
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2022-11-16 23:49:29 +00:00
Ramji Jiyani
6647fadd21 ANDROID: GKI: Convert CAN Bus Subsystem as module
Sets CONFIG_CAN=m to conver CAN Bus subsystem as
GKI module.

Bug: 232431151
Test: TH
Change-Id: Ia90fcc7a30edb994a8e47dea617050836356729d
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2022-11-16 22:14:52 +00:00
Ramji Jiyani
f2bd02a9aa ANDROID: GKI: Convert 6LoWPAN Support as module
Converts IPv6 6LoWPAN as GKI modules.

CONFIG_6LOWPAN: 6LoWPAN Support
IPv6 over Low power Wireless Personal Area Network -
"6LoWPAN" which is supported by IEEE 802.15.4 or Bluetooth stacks.

CONFIG_IEEE802154_6LOWPAN: 6lowpan support over IEEE 802.15.4

Bug: 232431151
Test: TH
Change-Id: I4257cedfd499e1e01faba966e17c3d9dbf4dcbb7
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2022-11-16 19:43:15 +00:00
Ramji Jiyani
6a0f9b1a5a ANDROID: GKI: Convert RF switch subsys as module
Convert RF swithc subsys as GKI module.

CONFIG_RFKILL: RF switch subsystem support
To have control over RF switches found on
many WiFi and Bluetooth cards.

Bug: 232431151
Test: TH
Change-Id: I6fb84f82d7a65b3d4f17261d361be1c44c6b77bb
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2022-11-16 18:27:05 +00:00
Ramji Jiyani
0ff7ad6adc ANDROID: GKI: Convert Bluetooth Support as module
Converts CONFIG_BT: Bluetooth subsystem support as
GKI modules.

CRYPTO_CMAC & CRYPTO_ECDH are being added as
CONFIG_BT is selecting them i.e. they were
enabled but not visibile in savedefconfig when
BT was an in-built feature and becomes visible
in savedefconfig when BT is a module.

Bug: 232431151
Test: TH
Change-Id: I624939d007fadbf852ad53c4404df12ac769fcd8
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2022-11-16 18:27:05 +00:00
Keir Fraser
2e85fe731a ANDROID: KVM: arm64: Avoid unnecessary unmap walk in MEM_RELINQUISH hypercall
If the mapping is determined to be not present in an earlier walk,
attempting the unmap is pointless.

Bug: 259217067
Change-Id: I6fd939556b80d7a9a0731cab36166a652f7a7c6d
Signed-off-by: Keir Fraser <keirf@google.com>
2022-11-16 13:50:28 +00:00
Keir Fraser
a75533eb44 ANDROID: KVM: arm64: Strictly check page type in MEM_RELINQUISH hypercall
The VM should only relinquish "normal" pages. For a protected VM, this
means PAGE_OWNED; For a normal VM, this means PAGE_SHARED_BORROWED. All
other page types are rejected and failure is reported to the caller.

Bug: 259217067
Change-Id: Icff3474dc2c975a6c5befe546c5521a05b3bd575
Signed-off-by: Keir Fraser <keirf@google.com>
2022-11-16 13:50:28 +00:00
Keir Fraser
4a31e02b6c ANDROID: KVM: Include prototype for page_relinquish before definition
Fixes build failure on -Werror=missing-prototypes.

At the same time, make the header file more resilient to ordering by
declaring 'struct page'.

Bug: 240239989
Change-Id: I84d069bde5ff03d1afa55d25c01448b0d43042da
Signed-off-by: Keir Fraser <keirf@google.com>
2022-11-16 13:50:28 +00:00
Greg Kroah-Hartman
e357586f51 Merge 5.15.79 into android14-5.15
Changes in 5.15.79
	thunderbolt: Tear down existing tunnels when resuming from hibernate
	thunderbolt: Add DP OUT resource when DP tunnel is discovered
	fuse: fix readdir cache race
	drm/amdkfd: avoid recursive lock in migrations back to RAM
	drm/amdkfd: handle CPU fault on COW mapping
	drm/amdkfd: Fix NULL pointer dereference in svm_migrate_to_ram()
	hwspinlock: qcom: correct MMIO max register for newer SoCs
	phy: stm32: fix an error code in probe
	wifi: cfg80211: silence a sparse RCU warning
	wifi: cfg80211: fix memory leak in query_regdb_file()
	soundwire: qcom: reinit broadcast completion
	soundwire: qcom: check for outanding writes before doing a read
	bpf, verifier: Fix memory leak in array reallocation for stack state
	bpf, sockmap: Fix the sk->sk_forward_alloc warning of sk_stream_kill_queues
	wifi: mac80211: Set TWT Information Frame Disabled bit as 1
	bpftool: Fix NULL pointer dereference when pin {PROG, MAP, LINK} without FILE
	HID: hyperv: fix possible memory leak in mousevsc_probe()
	bpf, sockmap: Fix sk->sk_forward_alloc warn_on in sk_stream_kill_queues
	bpf: Fix sockmap calling sleepable function in teardown path
	bpf, sock_map: Move cancel_work_sync() out of sock lock
	bpf: Add helper macro bpf_for_each_reg_in_vstate
	bpf: Fix wrong reg type conversion in release_reference()
	net: gso: fix panic on frag_list with mixed head alloc types
	macsec: delete new rxsc when offload fails
	macsec: fix secy->n_rx_sc accounting
	macsec: fix detection of RXSCs when toggling offloading
	macsec: clear encryption keys from the stack after setting up offload
	octeontx2-pf: Use hardware register for CQE count
	octeontx2-pf: NIX TX overwrites SQ_CTX_HW_S[SQ_INT]
	net: tun: Fix memory leaks of napi_get_frags
	bnxt_en: Fix possible crash in bnxt_hwrm_set_coal()
	bnxt_en: fix potentially incorrect return value for ndo_rx_flow_steer
	net: fman: Unregister ethernet device on removal
	capabilities: fix undefined behavior in bit shift for CAP_TO_MASK
	phy: ralink: mt7621-pci: add sentinel to quirks table
	KVM: s390: pv: don't allow userspace to set the clock under PV
	net: lapbether: fix issue of dev reference count leakage in lapbeth_device_event()
	hamradio: fix issue of dev reference count leakage in bpq_device_event()
	net: wwan: iosm: fix memory leak in ipc_wwan_dellink
	net: wwan: mhi: fix memory leak in mhi_mbim_dellink
	drm/vc4: Fix missing platform_unregister_drivers() call in vc4_drm_register()
	tcp: prohibit TCP_REPAIR_OPTIONS if data was already sent
	ipv6: addrlabel: fix infoleak when sending struct ifaddrlblmsg to network
	can: af_can: fix NULL pointer dereference in can_rx_register()
	net: stmmac: dwmac-meson8b: fix meson8b_devm_clk_prepare_enable()
	net: broadcom: Fix BCMGENET Kconfig
	tipc: fix the msg->req tlv len check in tipc_nl_compat_name_table_dump_header
	dmaengine: pxa_dma: use platform_get_irq_optional
	dmaengine: mv_xor_v2: Fix a resource leak in mv_xor_v2_remove()
	dmaengine: ti: k3-udma-glue: fix memory leak when register device fail
	net: lapbether: fix issue of invalid opcode in lapbeth_open()
	drivers: net: xgene: disable napi when register irq failed in xgene_enet_open()
	perf stat: Fix printing os->prefix in CSV metrics output
	perf tools: Add the include/perf/ directory to .gitignore
	netfilter: nfnetlink: fix potential dead lock in nfnetlink_rcv_msg()
	netfilter: Cleanup nft_net->module_list from nf_tables_exit_net()
	net: marvell: prestera: fix memory leak in prestera_rxtx_switch_init()
	net: nixge: disable napi when enable interrupts failed in nixge_open()
	net: wwan: iosm: fix memory leak in ipc_pcie_read_bios_cfg
	net/mlx5: Bridge, verify LAG state when adding bond to bridge
	net/mlx5: Allow async trigger completion execution on single CPU systems
	net/mlx5e: E-Switch, Fix comparing termination table instance
	net: cpsw: disable napi in cpsw_ndo_open()
	net: cxgb3_main: disable napi when bind qsets failed in cxgb_up()
	stmmac: intel: Enable 2.5Gbps for Intel AlderLake-S
	stmmac: intel: Update PCH PTP clock rate from 200MHz to 204.8MHz
	mctp: Fix an error handling path in mctp_init()
	cxgb4vf: shut down the adapter when t4vf_update_port_info() failed in cxgb4vf_open()
	stmmac: dwmac-loongson: fix missing pci_disable_msi() while module exiting
	stmmac: dwmac-loongson: fix missing pci_disable_device() in loongson_dwmac_probe()
	stmmac: dwmac-loongson: fix missing of_node_put() while module exiting
	net: phy: mscc: macsec: clear encryption keys when freeing a flow
	net: atlantic: macsec: clear encryption keys from the stack
	ethernet: s2io: disable napi when start nic failed in s2io_card_up()
	net: mv643xx_eth: disable napi when init rxq or txq failed in mv643xx_eth_open()
	ethernet: tundra: free irq when alloc ring failed in tsi108_open()
	net: macvlan: fix memory leaks of macvlan_common_newlink
	riscv: process: fix kernel info leakage
	riscv: vdso: fix build with llvm
	riscv: fix reserved memory setup
	arm64: efi: Fix handling of misaligned runtime regions and drop warning
	MIPS: jump_label: Fix compat branch range check
	mmc: cqhci: Provide helper for resetting both SDHCI and CQHCI
	mmc: sdhci-of-arasan: Fix SDHCI_RESET_ALL for CQHCI
	mmc: sdhci_am654: Fix SDHCI_RESET_ALL for CQHCI
	mmc: sdhci-tegra: Fix SDHCI_RESET_ALL for CQHCI
	mmc: sdhci-esdhc-imx: use the correct host caps for MMC_CAP_8_BIT_DATA
	ALSA: hda/hdmi - enable runtime pm for more AMD display audio
	ALSA: hda/ca0132: add quirk for EVGA Z390 DARK
	ALSA: hda: fix potential memleak in 'add_widget_node'
	ALSA: hda/realtek: Add Positivo C6300 model quirk
	ALSA: usb-audio: Yet more regression for for the delayed card registration
	ALSA: usb-audio: Add quirk entry for M-Audio Micro
	ALSA: usb-audio: Add DSD support for Accuphase DAC-60
	vmlinux.lds.h: Fix placement of '.data..decrypted' section
	ata: libata-scsi: fix SYNCHRONIZE CACHE (16) command failure
	nilfs2: fix deadlock in nilfs_count_free_blocks()
	nilfs2: fix use-after-free bug of ns_writer on remount
	drm/i915/dmabuf: fix sg_table handling in map_dma_buf
	drm/amdgpu: disable BACO on special BEIGE_GOBY card
	platform/x86: hp_wmi: Fix rfkill causing soft blocked wifi
	wifi: ath11k: avoid deadlock during regulatory update in ath11k_regd_update()
	btrfs: fix match incorrectly in dev_args_match_device
	btrfs: selftests: fix wrong error check in btrfs_free_dummy_root()
	btrfs: zoned: initialize device's zone info for seeding
	mms: sdhci-esdhc-imx: Fix SDHCI_RESET_ALL for CQHCI
	udf: Fix a slab-out-of-bounds write bug in udf_find_entry()
	mm/damon/dbgfs: check if rm_contexts input is for a real context
	mm/memremap.c: map FS_DAX device memory as decrypted
	mm/shmem: use page_mapping() to detect page cache for uffd continue
	can: j1939: j1939_send_one(): fix missing CAN header initialization
	cert host tools: Stop complaining about deprecated OpenSSL functions
	dmaengine: at_hdmac: Fix at_lli struct definition
	dmaengine: at_hdmac: Don't start transactions at tx_submit level
	dmaengine: at_hdmac: Start transfer for cyclic channels in issue_pending
	dmaengine: at_hdmac: Fix premature completion of desc in issue_pending
	dmaengine: at_hdmac: Do not call the complete callback on device_terminate_all
	dmaengine: at_hdmac: Protect atchan->status with the channel lock
	dmaengine: at_hdmac: Fix concurrency problems by removing atc_complete_all()
	dmaengine: at_hdmac: Fix concurrency over descriptor
	dmaengine: at_hdmac: Free the memset buf without holding the chan lock
	dmaengine: at_hdmac: Fix concurrency over the active list
	dmaengine: at_hdmac: Fix descriptor handling when issuing it to hardware
	dmaengine: at_hdmac: Fix completion of unissued descriptor in case of errors
	dmaengine: at_hdmac: Don't allow CPU to reorder channel enable
	dmaengine: at_hdmac: Fix impossible condition
	dmaengine: at_hdmac: Check return code of dma_async_device_register
	marvell: octeontx2: build error: unknown type name 'u64'
	drm/amdkfd: Migrate in CPU page fault use current mm
	net: tun: call napi_schedule_prep() to ensure we own a napi
	x86/cpu: Restore AMD's DE_CFG MSR after resume
	Linux 5.15.79

Change-Id: I395d5b480d2abd70e94c3505a4bd2ad728424fb3
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2022-11-16 10:04:35 +00:00
Greg Kroah-Hartman
3df0eeae4d Linux 5.15.79
Link: https://lore.kernel.org/r/20221114124448.729235104@linuxfoundation.org
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Shuah Khan <skhan@linuxfoundation.org>
Tested-by: Slade Watkins <srw@sladewatkins.net>
Tested-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Kelsey Steele <kelseysteele@linux.microsoft.com>
Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
Tested-by: Ron Economos <re@w6rz.net>
Link: https://lore.kernel.org/r/20221115140300.534663914@linuxfoundation.org
Tested-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Allen Pais <apais@linux.microsoft.com>
Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:31 +01:00
Borislav Petkov
599b24eedf x86/cpu: Restore AMD's DE_CFG MSR after resume
commit 2632daebafd04746b4b96c2f26a6021bc38f6209 upstream.

DE_CFG contains the LFENCE serializing bit, restore it on resume too.
This is relevant to older families due to the way how they do S3.

Unify and correct naming while at it.

Fixes: e4d0e84e49 ("x86/cpu/AMD: Make LFENCE a serializing instruction")
Reported-by: Andrew Cooper <Andrew.Cooper3@citrix.com>
Reported-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: <stable@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:31 +01:00
Eric Dumazet
9132fa043f net: tun: call napi_schedule_prep() to ensure we own a napi
commit 07d120aa33cc9d9115753d159f64d20c94458781 upstream.

A recent patch exposed another issue in napi_get_frags()
caught by syzbot [1]

Before feeding packets to GRO, and calling napi_complete()
we must first grab NAPI_STATE_SCHED.

[1]
WARNING: CPU: 0 PID: 3612 at net/core/dev.c:6076 napi_complete_done+0x45b/0x880 net/core/dev.c:6076
Modules linked in:
CPU: 0 PID: 3612 Comm: syz-executor408 Not tainted 6.1.0-rc3-syzkaller-00175-g1118b2049d77 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
RIP: 0010:napi_complete_done+0x45b/0x880 net/core/dev.c:6076
Code: c1 ea 03 0f b6 14 02 4c 89 f0 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 24 04 00 00 41 89 5d 1c e9 73 fc ff ff e8 b5 53 22 fa <0f> 0b e9 82 fe ff ff e8 a9 53 22 fa 48 8b 5c 24 08 31 ff 48 89 de
RSP: 0018:ffffc90003c4f920 EFLAGS: 00010293
RAX: 0000000000000000 RBX: 0000000000000030 RCX: 0000000000000000
RDX: ffff8880251c0000 RSI: ffffffff875a58db RDI: 0000000000000007
RBP: 0000000000000001 R08: 0000000000000007 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000001 R12: ffff888072d02628
R13: ffff888072d02618 R14: ffff888072d02634 R15: 0000000000000000
FS: 0000555555f13300(0000) GS:ffff8880b9a00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055c44d3892b8 CR3: 00000000172d2000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
napi_complete include/linux/netdevice.h:510 [inline]
tun_get_user+0x206d/0x3a60 drivers/net/tun.c:1980
tun_chr_write_iter+0xdb/0x200 drivers/net/tun.c:2027
call_write_iter include/linux/fs.h:2191 [inline]
do_iter_readv_writev+0x20b/0x3b0 fs/read_write.c:735
do_iter_write+0x182/0x700 fs/read_write.c:861
vfs_writev+0x1aa/0x630 fs/read_write.c:934
do_writev+0x133/0x2f0 fs/read_write.c:977
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f37021a3c19

Fixes: 1118b2049d77 ("net: tun: Fix memory leaks of napi_get_frags")
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Wang Yufen <wangyufen@huawei.com>
Link: https://lore.kernel.org/r/20221107180011.188437-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:30 +01:00
Philip Yang
1dea25e25a drm/amdkfd: Migrate in CPU page fault use current mm
commit 3a876060892ba52dd67d197c78b955e62657d906 upstream.

migrate_vma_setup shows below warning because we don't hold another
process mm mmap_lock. We should use current vmf->vma->vm_mm instead, the
caller already hold current mmap lock inside CPU page fault handler.

 WARNING: CPU: 10 PID: 3054 at include/linux/mmap_lock.h:155 find_vma
 Call Trace:
  walk_page_range+0x76/0x150
  migrate_vma_setup+0x18a/0x640
  svm_migrate_vram_to_ram+0x245/0xa10 [amdgpu]
  svm_migrate_to_ram+0x36f/0x470 [amdgpu]
  do_swap_page+0xcfe/0xec0
  __handle_mm_fault+0x96b/0x15e0
  handle_mm_fault+0x13f/0x3e0
  do_user_addr_fault+0x1e7/0x690

Fixes: e1f84eef313f ("drm/amdkfd: handle CPU fault on COW mapping")
Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:30 +01:00
Anders Roxell
a1c303fbd4 marvell: octeontx2: build error: unknown type name 'u64'
commit 6312d52838b21f5c4a5afa1269a00df4364fd354 upstream.

Building an allmodconfig kernel arm64 kernel, the following build error
shows up:

In file included from drivers/crypto/marvell/octeontx2/cn10k_cpt.c:4:
include/linux/soc/marvell/octeontx2/asm.h:38:15: error: unknown type name 'u64'
   38 | static inline u64 otx2_atomic64_fetch_add(u64 incr, u64 *ptr)
      |               ^~~

Include linux/types.h in asm.h so the compiler knows what the type
'u64' are.

Fixes: af3826db74d1 ("octeontx2-pf: Use hardware register for CQE count")
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
Link: https://lore.kernel.org/r/20211013135743.3826594-1-anders.roxell@linaro.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:30 +01:00
Tudor Ambarus
d948b22834 dmaengine: at_hdmac: Check return code of dma_async_device_register
commit c47e6403fa099f200868d6b106701cb42d181d2b upstream.

dma_async_device_register() can fail, check the return code and display an
error.

Fixes: dc78baa2b9 ("dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller")
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-16-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:30 +01:00
Tudor Ambarus
c556ecf32a dmaengine: at_hdmac: Fix impossible condition
commit 28cbe5a0a46a6637adbda52337d7b2777fc04027 upstream.

The iterator can not be greater than ATC_MAX_DSCR_TRIALS, as the for loop
will stop when i == ATC_MAX_DSCR_TRIALS. While here, use the common "i"
name for the iterator.

Fixes: 93dce3a643 ("dmaengine: at_hdmac: fix residue computation")
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-15-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:30 +01:00
Tudor Ambarus
8a941ff34e dmaengine: at_hdmac: Don't allow CPU to reorder channel enable
commit 580ee84405c27d6ed419abe4d2b3de1968abdafd upstream.

at_hdmac uses __raw_writel for register writes. In the absence of a
barrier, the CPU may reorder the register operations.
Introduce a write memory barrier so that the CPU does not reorder the
channel enable, thus the start of the transfer, without making sure that
all the pre-required register fields are already written.

Fixes: dc78baa2b9 ("dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller")
Reported-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/13c6c9a2-6db5-c3bf-349b-4c127ad3496a@axentia.se/
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-14-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:30 +01:00
Tudor Ambarus
53831f7a13 dmaengine: at_hdmac: Fix completion of unissued descriptor in case of errors
commit ef2cb4f0ce479f77607b04c4b0414bf32f863ee8 upstream.

In case the controller detected an error, the code took the chance to move
all the queued (submitted) descriptors to the active (issued) list. This
was wrong as if there were any descriptors in the submitted list they were
moved to the issued list without actually issuing them to the controller,
thus a completion could be raised without even fireing the descriptor.

Fixes: dc78baa2b9 ("dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller")
Reported-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/13c6c9a2-6db5-c3bf-349b-4c127ad3496a@axentia.se/
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-13-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:30 +01:00
Tudor Ambarus
14f5462e4a dmaengine: at_hdmac: Fix descriptor handling when issuing it to hardware
commit ba2423633ba646e1df20e30cb3cf35495c16f173 upstream.

As it was before, the descriptor was issued to the hardware without adding
it to the active (issued) list. This could result in a completion of other
descriptor, or/and in the descriptor never being completed.

Fixes: dc78baa2b9 ("dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller")
Reported-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/13c6c9a2-6db5-c3bf-349b-4c127ad3496a@axentia.se/
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-12-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:29 +01:00
Tudor Ambarus
5482403228 dmaengine: at_hdmac: Fix concurrency over the active list
commit 03ed9ba357cc78116164b90b87f45eacab60b561 upstream.

The tasklet (atc_advance_work()) did not held the channel lock when
retrieving the first active descriptor, causing concurrency problems if
issue_pending() was called in between. If issue_pending() was called
exactly after the lock was released in the tasklet (atc_advance_work()),
atc_chain_complete() could complete a descriptor for which the controller
has not yet raised an interrupt.

Fixes: dc78baa2b9 ("dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller")
Reported-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/13c6c9a2-6db5-c3bf-349b-4c127ad3496a@axentia.se/
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-11-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:29 +01:00
Tudor Ambarus
82ca19414f dmaengine: at_hdmac: Free the memset buf without holding the chan lock
commit 6ba826cbb57d675f447b59323204d1473bbd5593 upstream.

There's no need to hold the channel lock when freeing the memset buf, as
the operation has already completed. Free the memset buf without holding
the channel lock.

Fixes: 4d112426c3 ("dmaengine: hdmac: Add memset capabilities")
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-10-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:29 +01:00
Tudor Ambarus
8fd36e069d dmaengine: at_hdmac: Fix concurrency over descriptor
commit 06988949df8c3007ad82036d3606d8ae72ed9000 upstream.

The descriptor was added to the free_list before calling the callback,
which could result in reissuing of the same descriptor and calling of a
single callback for both. Move the decriptor to the free list after the
callback is invoked.

Fixes: dc78baa2b9 ("dmaengine: at_hdmac: new driver for the Atmel AHB DMA Controller")
Reported-by: Peter Rosin <peda@axentia.se>
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/13c6c9a2-6db5-c3bf-349b-4c127ad3496a@axentia.se/
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Link: https://lore.kernel.org/r/20221025090306.297886-1-tudor.ambarus@microchip.com
Link: https://lore.kernel.org/r/20221025090306.297886-9-tudor.ambarus@microchip.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-16 09:58:29 +01:00