Thread (28 messages) 28 messages, 3 authors, 26d ago

Re: [PATCH RFC v3 03/13] sysctl, mod_devicetable: add macro MODULE_SYSCTL_TABLE

flat view

From: Uwe Kleine-König <hidden>
Date: 2026-08-23 22:12:42
Also in: bpf, bridge, keyrings, linux-fsdevel, linux-kbuild, linux-rdma, linux-riscv, linux-s390, linux-sctp, lkml, lvs-devel, mptcp, netdev, netfilter-devel

Hello Mauricio,

On Sat, Aug 22, 2026 at 01:57:24PM -0300, Mauricio Faria de Oliveira wrote:
On 2026-08-22 10:41, Uwe Kleine-König wrote:
quoted
On Wed, Aug 19, 2026 at 03:16:16PM -0300, Mauricio Faria de Oliveira wrote:
quoted
The MODULE_SYSCTL_TABLE macro emits a struct module_sysctl_table variable
with pointers to a sysctl table's path and entries, and table/entry sizes.
That new struct doesn't seem to contain any pointer?
The struct module_sysctl_table fields .path and .table are pointers,
although with kernel_ulong_t type so that the same 32/64-bit size is
used in file2alias.c based on KERNEL_ELFCLASS (and not on the host,
which might differ with CROSS_COMPILE).
Cross compilation isn't an issue for the already existing device id
structures; many of them also contain pointers.
(While modpost doesn't use the pointers, the size of the structures must
be known to correctly interpret the arrays.)
Also sizeof(long) differs between architectures and I can compile for
arm(32) just fine on amd64.

Additionally there is hardware out there that has sizeof(void *) = 16
but sizeof(long) = 8. Up until recently I worked on mainlining that (and
it has business reasons only I stopped, so I guess and hope I will
continue at some point in the future). See
https://lwn.net/Articles/1037974/ for some details if you're interested.

I would be great if your series didn't introduce a new obstacle for
that.
quoted
quoted
That symbol will be handled by file2alias.c (modpost) with the changes in
mod_devicetable.h and devicetable-offsets.c.

The option macros MODULE_SYSCTL_TABLE_{DISABLE,UNIQUE_ID} can be used on
a per-file basis to disable the macro and change the symbol name pattern.

Signed-off-by: Mauricio Faria de Oliveira <redacted>
---
 include/linux/mod_devicetable.h   |  7 +++++++
 include/linux/sysctl.h            | 42 +++++++++++++++++++++++++++++++++++++++
 scripts/mod/devicetable-offsets.c |  6 ++++++
 3 files changed, 55 insertions(+)
Please put the new struct in a separate header. Apart from not being
about a device table, I'm currently work on removing
<linux/mod_devicetable.h>. See commit
ad428f5811bd7fb3d91fa002174de533f9da94d7 for more details.
Sure; I looked at that earlier (thanks for the instructive commit
message, by the way) and found the new struct to be similar to "struct
cpu_feature isn't really a device_id struct" (not moved), but apparently
missed the trailing "fow now", which is clearer now. Fixed for v4.
Yeah, I didn't move that because it was an outlier in the header as it's
not a device id. IMHO it should go to something like
include/linux/cpu_feature.h.

Best regards
Uwe

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help