All of lore.kernel.org
 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,
	"Stafford Horne" <shorne@gmail.com>
Subject: [PATCH 04/24] openrisc: Include <linux/cpumask.h> in smp.h
Date: Fri, 31 Jul 2026 13:30:05 -0700	[thread overview]
Message-ID: <20260731203031.13679-5-boqun@kernel.org> (raw)
In-Reply-To: <20260731203031.13679-1-boqun@kernel.org>

From: Lyude Paul <lyude@redhat.com>

While OpenRISC currently doesn't fail to build upstream, it appears that
include <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 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/disables 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>
Link: https://patch.msgid.link/20260121223933.1568682-5-lyude@redhat.com
---
 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-07-31 20:30 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-31 20:30 [GIT PULL] [PATCH 00/24] Rust synchronization changes for v7.3 Boqun Feng
2026-07-31 20:30 ` [PATCH 01/24] preempt: Track NMI nesting to separate per-CPU counter Boqun Feng
2026-07-31 20:30 ` [PATCH 02/24] preempt: Introduce HARDIRQ_DISABLE_BITS Boqun Feng
2026-07-31 20:30 ` [PATCH 03/24] preempt: Introduce __preempt_count_{sub, add}_return() Boqun Feng
2026-07-31 20:30 ` Boqun Feng [this message]
2026-07-31 20:30 ` [PATCH 05/24] irq & spin_lock: Add counted interrupt disabling/enabling Boqun Feng
2026-07-31 20:30 ` [PATCH 06/24] irq: Add KUnit test for refcounted interrupt enable/disable Boqun Feng
2026-07-31 20:30 ` [PATCH 07/24] locking: Switch to _irq_{disable,enable}() variants in cleanup guards Boqun Feng
2026-07-31 20:30 ` [PATCH 08/24] sched: Remove the unused preempt_offset parameter of __cant_sleep() Boqun Feng
2026-07-31 20:30 ` [PATCH 09/24] sched: Avoid signed comparison of preempt_count() in __cant_migrate() Boqun Feng
2026-07-31 20:30 ` [PATCH 10/24] preempt: Introduce HAS_SEPARATE_PREEMPT_RESCHED_BITS Boqun Feng
2026-07-31 20:30 ` [PATCH 11/24] arm64: sched/preempt: Enable HAS_SEPARATE_PREEMPT_RESCHED_BITS Boqun Feng
2026-07-31 20:30 ` [PATCH 12/24] s390/preempt: " Boqun Feng
2026-07-31 20:30 ` [PATCH 13/24] irq: Optimize reschedule check in local_interrupt_enable() Boqun Feng
2026-07-31 20:30 ` [PATCH 14/24] rust: Introduce interrupt module Boqun Feng
2026-07-31 20:30 ` [PATCH 15/24] rust: helper: Add spin_{un,}lock_irq_{enable,disable}() helpers Boqun Feng
2026-07-31 20:30 ` [PATCH 16/24] rust: sync: use super::* in spinlock.rs Boqun Feng
2026-07-31 20:30 ` [PATCH 17/24] rust: sync: Add SpinLockIrq Boqun Feng
2026-07-31 20:30 ` [PATCH 18/24] rust: sync: Introduce SpinLockIrq::lock_with() and friends Boqun Feng
2026-07-31 20:30 ` [PATCH 19/24] rust: sync: Add abstraction for synchronize_rcu() Boqun Feng
2026-07-31 20:30 ` [PATCH 20/24] rust: revocable: Use safe synchronize_rcu() abstraction Boqun Feng
2026-07-31 20:30 ` [PATCH 21/24] rust: sync: Use safe synchronize_rcu() abstraction in poll Boqun Feng
2026-07-31 20:30 ` [PATCH 22/24] rust: sync: Add helpers for mb, dma_mb and friends Boqun Feng
2026-07-31 20:30 ` [PATCH 23/24] rust: sync: Add generic memory barriers Boqun Feng
2026-07-31 20:30 ` [PATCH 24/24] rust: revocable: Use LKMM atomics instead of Rust atomics 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=20260731203031.13679-5-boqun@kernel.org \
    --to=boqun@kernel.org \
    --cc=aliceryhl@google.com \
    --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=mingo@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=shorne@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.