linux/rust/helpers
Danilo Krummrich 4f5f23846d rust: io: gate ioremap/iounmap on CONFIG_HAS_IOMEM
s390 does not provide ioremap()/iounmap() when CONFIG_HAS_IOMEM is not
set (which requires CONFIG_PCI on that architecture). This causes a
build failure with Rust enabled on e.g. s390 allnoconfig:

	In file included from rust/helpers/helpers.c:68:
	rust/helpers/io.c:8:9: error: call to undeclared function 'ioremap'; ISO C99 and later do not support implicit function declarations
	      [-Wimplicit-function-declaration]
	    8 |         return ioremap(offset, size);
	      |                ^
	rust/helpers/io.c:19:2: error: call to undeclared function 'iounmap'; ISO C99 and later do not support implicit function declarations
	      [-Wimplicit-function-declaration]
	   19 |         iounmap(addr);

Guard the C helpers behind #ifdef CONFIG_HAS_IOMEM and cfg-gate the Rust
io::mem module, such that IoMem, ExclusiveIoMem and IoRequest are not
available without CONFIG_HAS_IOMEM.

Note that the C API is inconsistent about this. For instance,
devm_ioremap() has no stub and produces a link failure without
CONFIG_HAS_IOMEM, whereas devm_platform_ioremap_resource() provides an
inline stub returning -EINVAL.

The approach taken here (compile-time gating) matches the former, which
is slightly more appropriate since any driver performing MMIO currently
requires CONFIG_HAS_IOMEM.

Ideally, s390 should provide ioremap()/iounmap() stubs unconditionally
(as UML already does), removing the need for any config gating as
discussed in [1]; a follow-up patch for s390 is expected.

Cc: Arnd Bergmann <arnd@arndb.de>
Reported-by: Miguel Ojeda <ojeda@kernel.org>
Closes: https://lore.kernel.org/all/20260803180931.97202-1-ojeda@kernel.org [1]
Fixes: 3f70ebe638 ("s390: Enable Rust support")
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Link: https://patch.msgid.link/20260805212920.1996937-1-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
2026-08-06 16:05:50 +02:00
..
acpi.c rust: ACPI: fix missing match data for PRP0001 2026-04-28 20:28:28 +02:00
atomic_ext.c rust: sync: atomic: Add Atomic<*{mut,const} T> support 2026-03-08 11:06:49 +01:00
atomic.c rust: helpers: Move #define __rust_helper out of atomic.c 2026-01-09 19:01:42 +08:00
auxiliary.c rust: auxiliary: add __rust_helper to helpers 2025-12-15 22:19:53 +01:00
barrier.c rust: barrier: Add __rust_helper to helpers 2026-01-09 19:01:41 +08:00
binder.c rust: binder: add __rust_helper to helpers 2025-12-29 12:10:47 +01:00
bitmap.c rust: bitmap: add __rust_helper to helpers 2026-01-06 12:14:10 -05:00
bitops.c bitmap updates for v6.20 2026-02-10 11:39:45 -08:00
blk.c rust: blk: Add __rust_helper to helpers 2026-01-09 19:01:41 +08:00
bug.c rust: bug: add __rust_helper to helpers 2026-01-26 03:48:25 +01:00
build_assert.c
build_bug.c rust: err: add __rust_helper to helpers 2026-01-26 03:49:04 +01:00
clk.c rust: clk: add __rust_helper to helpers 2026-03-10 11:29:00 +01:00
completion.c rust: completion: Add __rust_helper to helpers 2026-01-09 19:01:41 +08:00
cpu.c rust: cpu: Add __rust_helper to helpers 2026-01-09 19:01:41 +08:00
cpufreq.c rust: cpufreq: add __rust_helper to helpers 2026-01-27 11:21:22 +05:30
cpumask.c rust: cpumask: add __rust_helper to helpers 2026-01-06 12:14:10 -05:00
cred.c rust: cred: add __rust_helper to helpers 2026-01-06 20:30:09 -05:00
device.c rust: device: add device name method 2026-03-24 23:51:23 +01:00
dma-resv.c rust: helpers: Add bindings/wrappers for dma_resv_lock 2026-03-27 20:46:56 +01:00
dma.c rust: dma: add missing __rust_helper annotations 2026-02-06 20:19:09 +01:00
drm_gpuvm.c drm/gpuvm: rust: add RUST_DRM_GPUVM option to Kconfig 2026-05-05 12:59:41 +02:00
drm.c rust: drm: gem: shmem: Add DRM shmem helper abstraction 2026-03-27 21:38:40 +01:00
err.c rust: err: add __rust_helper to helpers 2026-01-26 03:49:04 +01:00
fs.c rust: fs: add __rust_helper to helpers 2025-12-15 14:13:03 +01:00
gpu.c rust: gpu: Add GPU buddy allocator bindings 2026-03-23 21:41:47 +01:00
helpers.c drm-next for 7.2-rc1 2026-06-17 10:21:00 +01:00
io.c rust: io: gate ioremap/iounmap on CONFIG_HAS_IOMEM 2026-08-06 16:05:50 +02:00
irq.c rust: irq: add __rust_helper to helpers 2025-12-15 22:26:10 +01:00
jump_label.c rust: jump_label: add __rust_helper to helpers 2026-03-10 11:29:16 +01:00
kunit.c rust: kunit: add __rust_helper to helpers 2026-01-05 15:32:03 -07:00
list.c rust: interop: Add list module for C linked list interface 2026-03-23 20:29:28 +01:00
maple_tree.c rust: maple_tree: add __rust_helper to helpers 2026-01-26 03:49:09 +01:00
mm.c rust: mm: add __rust_helper to helpers 2026-01-26 03:49:56 +01:00
mutex.c rust: sync: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
of.c rust: of: add __rust_helper to helpers 2026-01-26 03:50:21 +01:00
page.c rust: mm: add __rust_helper to helpers 2026-01-26 03:49:56 +01:00
pci.c rust: pci: add __rust_helper to helpers 2025-12-15 22:39:11 +01:00
pid_namespace.c rust: pid_namespace: add __rust_helper to helpers 2025-12-15 14:13:03 +01:00
platform.c rust: platform: add __rust_helper to helpers 2025-12-15 22:39:42 +01:00
poll.c rust: poll: add __rust_helper to helpers 2025-12-15 14:13:04 +01:00
processor.c rust: processor: Add __rust_helper to helpers 2026-01-09 19:01:41 +08:00
property.c rust: property: add __rust_helper to helpers 2025-12-15 22:39:42 +01:00
pwm.c rust: pwm: Add __rust_helper to helpers 2026-01-20 18:52:43 +01:00
rbtree.c rust: rbtree: add __rust_helper to helpers 2026-01-26 03:50:41 +01:00
rcu.c rust: rcu: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
refcount.c rust: refcount: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
regulator.c rust: regulator: add __rust_helper to helpers 2025-12-14 19:37:55 +09:00
scatterlist.c rust: scatterlist: add __rust_helper to helpers 2025-12-15 22:39:42 +01:00
security.c rust: security: add __rust_helper to helpers 2026-01-06 20:30:09 -05:00
signal.c rust: task: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
slab.c rust: slab: add __rust_helper to helpers 2026-01-26 03:50:50 +01:00
spinlock.c rust: sync: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
string.c rust: helpers: Add memchr wrapper for string operations 2026-06-10 16:25:13 +02:00
sync.c rust: sync: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
task.c rust: task: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
time.c rust: time: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
uaccess.c uaccess: unify inline vs outline copy_{from,to}_user() selection 2026-05-28 21:24:44 -07:00
usb.c rust: usb: add __rust_helper to helpers 2026-01-07 16:12:15 +01:00
vmalloc.c rust: helpers: add is_vmalloc_addr wrapper for NOMMU builds 2026-05-27 20:01:04 +02:00
wait.c rust: wait: Add __rust_helper to helpers 2026-01-09 19:01:42 +08:00
workqueue.c rust: workqueue: add __rust_helper to helpers 2026-01-26 03:51:31 +01:00
xarray.c rust: xarray: add __rust_helper to helpers 2026-01-15 10:01:23 +01:00