linux/drivers
Jarkko Nikula 4afd728769 i3c: mipi-i3c-hci: Add DMA bounce buffer for private transfers
Implement a local bounce buffer for private I3C SDR and I2C transfers
when using DMA and the buffer attached to the transfer is not DMA safe.

Otherwise the DMA transfer will fail and with following warning:

[   11.411059] i3c mipi-i3c-hci.0: rejecting DMA map of vmalloc memory
[   11.417313] WARNING: CPU: 3 PID: 357 at include/linux/dma-mapping.h:332 hci_dma_queue_xfer+0x2e2/0x300 [mipi_i3c_hci]

Strictly speaking private I3C SDR transfers are expected to pass a
DMA-able buffer. However I fear this requirement may easily be slipped
or go unnoticed when I3C interface support is added into a existing
device driver that use regmap API to read/write stack variables.

For example this is the case with the commit 2660b0080b ("iio: imu:
st_lsm6dsx: add i3c basic support for LSM6DSO and LSM6DSR").

Buffer of an I2C message is not required to be DMA safe and the I2C core
provides i2c_(get|put)_dma_safe_msg_buf() helpers for the host
controllers that do DMA and that is also recommendation for the
i2c_xfers() callback from the I3C core.

However due to above I3C private transfers reason I decided to implement
a bounce buffer for them and reuse the same code for the I2C transfers
too. Since this driver is currently the only I3C host controller driver
that can do DMA the implementation is done here and not in I3C core.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Link: https://lore.kernel.org/r/20231109133708.653950-5-jarkko.nikula@linux.intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
2023-11-16 23:36:44 +01:00
..
accel Merge tag 'drm-misc-fixes-2023-11-08' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2023-11-10 16:57:49 +01:00
accessibility
acpi RISC-V Patches for the 6.7 Merge Window, Part 1 2023-11-08 09:21:18 -08:00
amba
android Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
ata ata: pata_gayle: Convert to platform remove callback returning void 2023-11-08 09:00:49 +09:00
atm pci-v6.7-changes 2023-11-02 14:05:18 -10:00
auxdisplay
base regmap: Fix for v6.7 2023-11-07 16:56:10 -08:00
bcma
block nbd: fix uaf in nbd_open 2023-11-07 08:14:57 -07:00
bluetooth Bluetooth: btmtksdio: enable bluetooth wakeup in system suspend 2023-10-23 11:04:51 -07:00
bus SoC driver updates for 6.7 2023-11-01 14:46:51 -10:00
cache riscv: RISCV_NONSTANDARD_CACHE_OPS shouldn't depend on RISCV_DMA_NONCOHERENT 2023-10-26 09:42:37 +02:00
cdrom
cdx Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
char Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
clk SoC driver updates for 6.7 2023-11-01 14:46:51 -10:00
clocksource RISC-V Patches for the 6.7 Merge Window, Part 2 2023-11-10 09:23:17 -08:00
comedi
connector Fix NULL pointer dereference in cn_filter() 2023-10-24 10:53:45 +02:00
counter
cpufreq Merge branch 'pm-cpufreq' 2023-11-07 20:45:12 +01:00
cpuidle
crypto crypto: talitos - stop using crypto_ahash::init 2023-10-27 18:04:29 +08:00
cxl cxl/pci: Change CXL AER support check to use native AER 2023-11-02 14:09:01 -07:00
dax Many singleton patches against the MM code. The patch series which are 2023-11-02 19:38:47 -10:00
dca
devfreq
dio
dma dmaengine updates for v6.7 2023-11-03 18:56:51 -10:00
dma-buf As usual, lots of singleton and doubleton patches all over the tree and 2023-11-02 20:53:31 -10:00
dpll
edac hardening updates for v6.7-rc1 2023-10-30 19:09:55 -10:00
eisa
extcon
firewire firewire: Annotate struct fw_node with __counted_by 2023-11-05 21:15:17 +09:00
firmware RISC-V Patches for the 6.7 Merge Window, Part 2 2023-11-10 09:23:17 -08:00
fpga Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
fsi
gnss
gpio pwm: Changes for v6.7-rc1 2023-11-09 13:47:52 -08:00
gpu drm fixes for 6.7-rc1 2023-11-10 14:59:30 -08:00
greybus greybus: Add BeaglePlay Linux Driver 2023-10-27 13:19:04 +02:00
hid Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
hsi
hte hte: Changes for v6.7-rc1 2023-10-31 18:32:51 -10:00
hv TTY/Serial changes for 6.7-rc1 2023-11-03 15:44:25 -10:00
hwmon hwmon updates for v6.7-rc1 2023-10-31 17:44:17 -10:00
hwspinlock
hwtracing
i2c i2c: cp2615: Fix 'assignment to __be16' warning 2023-11-08 10:27:17 +01:00
i3c i3c: mipi-i3c-hci: Add DMA bounce buffer for private transfers 2023-11-16 23:36:44 +01:00
idle
iio Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
infiniband RDMA for v6.7 2023-11-02 15:20:30 -10:00
input Input updates for 6.7 merge window: 2023-11-09 14:18:42 -08:00
interconnect
iommu IOMMU Updates for Linux v6.7 2023-11-09 13:37:28 -08:00
ipack
irqchip arm64 fixes: 2023-11-10 12:22:14 -08:00
isdn hardening updates for v6.7-rc1 2023-10-30 19:09:55 -10:00
leds pwm: Changes for v6.7-rc1 2023-11-09 13:47:52 -08:00
macintosh powerpc updates for 6.7 2023-11-03 10:07:39 -10:00
mailbox Moving repo 2023-11-05 18:45:32 -08:00
mcb
md Many singleton patches against the MM code. The patch series which are 2023-11-02 19:38:47 -10:00
media media updates for v6.7-rc1 2023-11-06 15:06:06 -08:00
memory IOMMU Updates for Linux v6.7 2023-11-09 13:37:28 -08:00
memstick
message scsi: message: fusion: Initialize return value in mptfc_bus_reset() 2023-10-24 22:36:39 -04:00
mfd - Core Frameworks 2023-11-02 14:40:51 -10:00
misc RISC-V Patches for the 6.7 Merge Window, Part 1 2023-11-08 09:21:18 -08:00
mmc mmc: sdhci-pci-gli: GL9750: Mask the replay timer timeout of AER 2023-11-07 13:08:12 +01:00
most
mtd - removed AR7 platform support 2023-11-10 09:19:46 -08:00
mux
net wifi: iwlwifi: fix system commands group ordering 2023-11-12 11:34:19 -08:00
nfc
ntb
nubus
nvdimm
nvme nvme: keyring: fix conditional compilation 2023-11-08 08:07:08 -08:00
nvmem Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
of RISC-V Patches for the 6.7 Merge Window, Part 2 2023-11-10 09:23:17 -08:00
opp
parisc parisc/power: Trivial whitespace cleanups and license update 2023-10-30 14:54:40 +01:00
parport parport: gsc: mark init function static 2023-11-10 08:41:23 +01:00
pci cxl for v6.7 2023-11-04 16:20:36 -10:00
pcmcia PCMCIA odd cleanups and fixes for v6.7-rc1 2023-11-07 16:40:42 -08:00
peci
perf arm64 fixes: 2023-11-10 12:22:14 -08:00
phy phy-for-6.6 2023-11-03 19:06:12 -10:00
pinctrl pinctrl: nuvoton: npcm8xx: drop wrappers around pinctrl_gpio_request/free() 2023-11-04 10:23:23 +01:00
platform Major microcode loader restructuring, cleanup and improvements by Thomas 2023-11-04 08:46:37 -10:00
pmdomain SoC driver updates for 6.7 2023-11-01 14:46:51 -10:00
pnp
power USB/Thunderbolt changes for 6.7-rc1 2023-11-03 16:00:42 -10:00
powercap powercap: intel_rapl: Downgrade BIOS locked limits pr_warn() to pr_debug() 2023-10-24 22:07:07 +02:00
pps
ps3
ptp ptp: fix corrupted list in ptp_open 2023-11-08 18:47:07 -08:00
pwm pwm: samsung: Fix a bit test in pwm_samsung_resume() 2023-11-10 09:20:48 +01:00
rapidio
ras
regulator regulator: Merge up pending fix 2023-10-30 13:14:27 +00:00
remoteproc
reset reset: Annotate struct reset_control_array with __counted_by 2023-10-24 14:10:04 -07:00
rpmsg rpmsg: virtio: Replace deprecated strncpy with strscpy/_pad 2023-10-23 13:11:07 -06:00
rtc RTC for 6.7 2023-11-05 18:49:40 -08:00
s390 Including fixes from netfilter and bpf. 2023-11-09 17:09:35 -08:00
sbus
scsi As usual, lots of singleton and doubleton patches all over the tree and 2023-11-02 20:53:31 -10:00
sh sh: Remove superhyway bus support 2023-10-25 16:50:11 +02:00
siox
slimbus
soc powerpc updates for 6.7 2023-11-03 10:07:39 -10:00
soundwire soundwire updates for 6.7 2023-11-03 19:10:41 -10:00
spi spi: Fixes for v6.7 2023-11-10 11:44:38 -08:00
spmi spmi: rename spmi device lookup helper 2023-11-01 10:02:18 +00:00
ssb
staging pwm: Changes for v6.7-rc1 2023-11-09 13:47:52 -08:00
target SCSI misc on 20231102 2023-11-02 15:13:50 -10:00
tc
tee
thermal Thermal control updates for 6.7-rc1 2023-10-31 15:28:37 -10:00
thunderbolt USB/Thunderbolt changes for 6.7-rc1 2023-11-03 16:00:42 -10:00
tty - removed AR7 platform support 2023-11-10 09:19:46 -08:00
ufs SCSI misc on 20231102 2023-11-02 15:13:50 -10:00
uio
usb USB/Thunderbolt changes for 6.7-rc1 2023-11-03 16:00:42 -10:00
vdpa vdpa_sim: implement .reset_map support 2023-11-01 09:20:00 -04:00
vfio Char/Misc and other driver changes for 6.7-rc1 2023-11-03 14:51:08 -10:00
vhost vhost,virtio,vdpa: features, fixes, cleanups 2023-11-05 09:02:32 -10:00
video fbdev: fsl-diu-fb: mark wr_reg_wa() static 2023-11-10 09:16:02 +01:00
virt configfs-tsm for v6.7 2023-11-04 15:58:13 -10:00
virtio vhost,virtio,vdpa: features, fixes, cleanups 2023-11-05 09:02:32 -10:00
w1
watchdog - removed AR7 platform support 2023-11-10 09:19:46 -08:00
xen Many singleton patches against the MM code. The patch series which are 2023-11-02 19:38:47 -10:00
zorro
Kconfig - removed AR7 platform support 2023-11-10 09:19:46 -08:00
Makefile - removed AR7 platform support 2023-11-10 09:19:46 -08:00