The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: Boqun Feng <boqun@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: "Ingo Molnar" <mingo@kernel.org>, "Will Deacon" <will@kernel.org>,
	"Boqun Feng" <boqun@kernel.org>,
	"Waiman Long" <longman@redhat.com>, "Gary Guo" <gary@garyguo.net>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Lyude Paul" <lyude@redhat.com>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"Onur Özkan" <work@onurozkan.dev>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org,
	"Shrikanth Hegde" <sshegde@linux.ibm.com>,
	"Madhavan Srinivasan" <maddy@linux.ibm.com>,
	"Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
	"Stafford Horne" <shorne@gmail.com>
Subject: [PATCH v5 04/18] openrisc: Include <linux/cpumask.h> in smp.h
Date: Fri,  7 Aug 2026 00:02:01 -0700	[thread overview]
Message-ID: <20260807070218.27144-5-boqun@kernel.org> (raw)
In-Reply-To: <20260807070218.27144-1-boqun@kernel.org>

From: Lyude Paul <lyude@redhat.com>

While OpenRISC currently doesn't fail to build upstream, it appears that
including <asm/smp.h> in the right headers is enough to break that -
primarily because OpenRISC's asm/smp.h header doesn't actually provide
any definition for struct cpumask. Which means the only reason we aren't
failing to build the kernel is because we've been lucky enough that
every spot including asm/smp.h already has definitions for struct
cpumask pulled in.

This became evident when trying to work on a patch series for adding
ref-counted interrupt enable/disable to the kernel, where introducing a
new interrupt_rc.h header suddenly introduced a build error on OpenRISC:

     In file included from include/linux/interrupt_rc.h:17,
                      from include/linux/spinlock.h:60,
                      from include/linux/mmzone.h:8,
                      from include/linux/gfp.h:7,
                      from include/linux/mm.h:7,
                      from arch/openrisc/include/asm/pgalloc.h:20,
                      from arch/openrisc/include/asm/io.h:18,
                      from include/linux/io.h:12,
                      from drivers/irqchip/irq-ompic.c:61:
     arch/openrisc/include/asm/smp.h:21:59: warning: 'struct cpumask'
     declared inside parameter list will not be visible outside of this
     definition or declaration
        21 | extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
           |                                                           ^~~~~~~
     arch/openrisc/include/asm/smp.h:23:54: warning: 'struct cpumask'
     declared inside parameter list will not be visible outside of this
     definition or declaration
        23 | extern void set_smp_cross_call(void (*)(const struct cpumask *, unsigned int));
           |                                                      ^~~~~~~
     drivers/irqchip/irq-ompic.c: In function 'ompic_of_init':
  >> drivers/irqchip/irq-ompic.c:191:28: error: passing argument 1 of
     'set_smp_cross_call' from incompatible pointer type
     [-Werror=incompatible-pointer-types]
       191 |         set_smp_cross_call(ompic_raise_softirq);
           |                            ^~~~~~~~~~~~~~~~~~~
           |                            |
           |                            void (*)(const struct cpumask *, unsigned int)
     arch/openrisc/include/asm/smp.h:23:32: note: expected 'void (*)(const
     struct cpumask *, unsigned int)' but argument is of type 'void
     (*)(const struct cpumask *, unsigned int)'
        23 | extern void set_smp_cross_call(void (*)(const struct cpumask *, unsigned int));

To fix this, let's take an example from the smp.h headers of other
architectures (x86, hexagon, arm64, probably more): just include
linux/cpumask.h at the top.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Acked-by: Stafford Horne <shorne@gmail.com>
Signed-off-by: Boqun Feng <boqun@kernel.org>
---
 arch/openrisc/include/asm/smp.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/openrisc/include/asm/smp.h b/arch/openrisc/include/asm/smp.h
index 007296f160ef..84653aaffa96 100644
--- a/arch/openrisc/include/asm/smp.h
+++ b/arch/openrisc/include/asm/smp.h
@@ -9,6 +9,8 @@
 #ifndef __ASM_OPENRISC_SMP_H
 #define __ASM_OPENRISC_SMP_H
 
+#include <linux/cpumask.h>
+
 #include <asm/spr.h>
 #include <asm/spr_defs.h>
 
-- 
2.50.1 (Apple Git-155)


  parent reply	other threads:[~2026-08-07  7:02 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-07  7:01 [PATCH v5 00/18] Refcounted interrupt disable and SpinLockIrq for Rust Boqun Feng
2026-08-07  7:01 ` [PATCH v5 01/18] preempt: Track NMI nesting to separate per-CPU counter Boqun Feng
2026-08-07  7:01 ` [PATCH v5 02/18] preempt: Introduce HARDIRQ_DISABLE_BITS Boqun Feng
2026-08-07  7:02 ` [PATCH v5 03/18] preempt: Introduce __preempt_count_{sub,add}_return() Boqun Feng
2026-08-07  7:02 ` Boqun Feng [this message]
2026-08-07  7:02 ` [PATCH v5 05/18] irq & spin_lock: Add counted interrupt disabling/enabling Boqun Feng
2026-08-07  7:02 ` [PATCH v5 06/18] irq: Add KUnit test for refcounted interrupt enable/disable Boqun Feng
2026-08-07  7:02 ` [PATCH v5 07/18] irq: Add max local_interrupt_disable() nesting level kunit test case Boqun Feng
2026-08-07  7:02 ` [PATCH v5 08/18] locking: Switch to _irq_{disable,enable}() variants in cleanup guards Boqun Feng
2026-08-07  7:02 ` [PATCH v5 09/18] sched: Remove the unused preempt_offset parameter of __cant_sleep() Boqun Feng
2026-08-07  7:02 ` [PATCH v5 10/18] sched: Avoid signed comparison of preempt_count() in __cant_migrate() Boqun Feng
2026-08-07  7:02 ` [PATCH v5 11/18] preempt: Introduce HAS_SEPARATE_PREEMPT_RESCHED_BITS Boqun Feng
2026-08-07  7:02 ` [PATCH v5 12/18] arm64: sched/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS Boqun Feng
2026-08-07  7:02 ` [PATCH v5 13/18] s390/preempt: " Boqun Feng
2026-08-07  7:02 ` [PATCH v5 14/18] rust: Introduce interrupt module Boqun Feng
2026-08-07  7:02 ` [PATCH v5 15/18] rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers Boqun Feng
2026-08-07  7:02 ` [PATCH v5 16/18] rust: sync: Use super::* in spinlock.rs Boqun Feng
2026-08-07  7:02 ` [PATCH v5 17/18] rust: sync: Add SpinLockIrq Boqun Feng
2026-08-07  7:02 ` [PATCH v5 18/18] rust: sync: Introduce SpinLockIrq::lock_with() and friends Boqun Feng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260807070218.27144-5-boqun@kernel.org \
    --to=boqun@kernel.org \
    --cc=aliceryhl@google.com \
    --cc=chleroy@kernel.org \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=gary@garyguo.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=longman@redhat.com \
    --cc=lyude@redhat.com \
    --cc=maddy@linux.ibm.com \
    --cc=mingo@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=shorne@gmail.com \
    --cc=sshegde@linux.ibm.com \
    --cc=will@kernel.org \
    --cc=work@onurozkan.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox