Merge tag 'mm-nonmm-stable-2023-06-24-19-23' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Pull non-mm updates from Andrew Morton: - Arnd Bergmann has fixed a bunch of -Wmissing-prototypes in top-level directories - Douglas Anderson has added a new "buddy" mode to the hardlockup detector. It permits the detector to work on architectures which cannot provide the required interrupts, by having CPUs periodically perform checks on other CPUs - Zhen Lei has enhanced kexec's ability to support two crash regions - Petr Mladek has done a lot of cleanup on the hard lockup detector's Kconfig entries - And the usual bunch of singleton patches in various places * tag 'mm-nonmm-stable-2023-06-24-19-23' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (72 commits) kernel/time/posix-stubs.c: remove duplicated include ocfs2: remove redundant assignment to variable bit_off watchdog/hardlockup: fix typo in config HARDLOCKUP_DETECTOR_PREFER_BUDDY powerpc: move arch_trigger_cpumask_backtrace from nmi.h to irq.h devres: show which resource was invalid in __devm_ioremap_resource() watchdog/hardlockup: define HARDLOCKUP_DETECTOR_ARCH watchdog/sparc64: define HARDLOCKUP_DETECTOR_SPARC64 watchdog/hardlockup: make HAVE_NMI_WATCHDOG sparc64-specific watchdog/hardlockup: declare arch_touch_nmi_watchdog() only in linux/nmi.h watchdog/hardlockup: make the config checks more straightforward watchdog/hardlockup: sort hardlockup detector related config values a logical way watchdog/hardlockup: move SMP barriers from common code to buddy code watchdog/buddy: simplify the dependency for HARDLOCKUP_DETECTOR_PREFER_BUDDY watchdog/buddy: don't copy the cpumask in watchdog_next_cpu() watchdog/buddy: cleanup how watchdog_buddy_check_hardlockup() is called watchdog/hardlockup: remove softlockup comment in touch_nmi_watchdog() watchdog/hardlockup: in watchdog_hardlockup_check() use cpumask_copy() watchdog/hardlockup: don't use raw_cpu_ptr() in watchdog_hardlockup_kick() watchdog/hardlockup: HAVE_NMI_WATCHDOG must implement watchdog_hardlockup_probe() watchdog/hardlockup: keep kernel.nmi_watchdog sysctl as 0444 if probe fails ...
This commit is contained in:
@@ -33,7 +33,7 @@ config SPARC
|
||||
select ARCH_WANT_IPC_PARSE_VERSION
|
||||
select GENERIC_PCI_IOMAP
|
||||
select HAS_IOPORT
|
||||
select HAVE_NMI_WATCHDOG if SPARC64
|
||||
select HAVE_HARDLOCKUP_DETECTOR_SPARC64 if SPARC64
|
||||
select HAVE_CBPF_JIT if SPARC32
|
||||
select HAVE_EBPF_JIT if SPARC64
|
||||
select HAVE_DEBUG_BUGVERBOSE
|
||||
|
||||
@@ -14,3 +14,17 @@ config FRAME_POINTER
|
||||
bool
|
||||
depends on MCOUNT
|
||||
default y
|
||||
|
||||
config HAVE_HARDLOCKUP_DETECTOR_SPARC64
|
||||
bool
|
||||
depends on HAVE_NMI
|
||||
select HARDLOCKUP_DETECTOR_SPARC64
|
||||
help
|
||||
Sparc64 hardlockup detector is the last one developed before adding
|
||||
the common infrastructure for handling hardlockup detectors. It is
|
||||
always built. It does _not_ use the common command line parameters
|
||||
and sysctl interface, except for /proc/sys/kernel/nmi_watchdog.
|
||||
|
||||
config HARDLOCKUP_DETECTOR_SPARC64
|
||||
bool
|
||||
depends on HAVE_HARDLOCKUP_DETECTOR_SPARC64
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
#define irq_canonicalize(irq) (irq)
|
||||
|
||||
void __init init_IRQ(void);
|
||||
void __init sun4d_init_sbi_irq(void);
|
||||
|
||||
#define NO_IRQ 0xffffffff
|
||||
|
||||
@@ -61,7 +61,6 @@ void sun4u_destroy_msi(unsigned int irq);
|
||||
unsigned int irq_alloc(unsigned int dev_handle, unsigned int dev_ino);
|
||||
void irq_free(unsigned int irq);
|
||||
|
||||
void __init init_IRQ(void);
|
||||
void fixup_irqs(void);
|
||||
|
||||
static inline void set_softint(unsigned long bits)
|
||||
|
||||
@@ -8,7 +8,6 @@ void nmi_adjust_hz(unsigned int new_hz);
|
||||
|
||||
extern atomic_t nmi_active;
|
||||
|
||||
void arch_touch_nmi_watchdog(void);
|
||||
void start_nmi_watchdog(void *unused);
|
||||
void stop_nmi_watchdog(void *unused);
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ extern struct sparc64_tick_ops *tick_ops;
|
||||
|
||||
unsigned long sparc64_get_clock_tick(unsigned int cpu);
|
||||
void setup_sparc64_timer(void);
|
||||
void __init time_init(void);
|
||||
|
||||
#define TICK_PRIV_BIT BIT(63)
|
||||
#define TICKCMP_IRQ_BIT BIT(63)
|
||||
|
||||
@@ -91,7 +91,6 @@ extern int static_irq_count;
|
||||
extern spinlock_t irq_action_lock;
|
||||
|
||||
void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs);
|
||||
void init_IRQ(void);
|
||||
|
||||
/* sun4m_irq.c */
|
||||
void sun4m_init_IRQ(void);
|
||||
|
||||
@@ -65,6 +65,11 @@ void arch_touch_nmi_watchdog(void)
|
||||
}
|
||||
EXPORT_SYMBOL(arch_touch_nmi_watchdog);
|
||||
|
||||
int __init watchdog_hardlockup_probe(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void die_nmi(const char *str, struct pt_regs *regs, int do_panic)
|
||||
{
|
||||
int this_cpu = smp_processor_id();
|
||||
@@ -282,11 +287,11 @@ __setup("nmi_watchdog=", setup_nmi_watchdog);
|
||||
* sparc specific NMI watchdog enable function.
|
||||
* Enables watchdog if it is not enabled already.
|
||||
*/
|
||||
int watchdog_nmi_enable(unsigned int cpu)
|
||||
void watchdog_hardlockup_enable(unsigned int cpu)
|
||||
{
|
||||
if (atomic_read(&nmi_active) == -1) {
|
||||
pr_warn("NMI watchdog cannot be enabled or disabled\n");
|
||||
return -1;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -295,17 +300,15 @@ int watchdog_nmi_enable(unsigned int cpu)
|
||||
* process first.
|
||||
*/
|
||||
if (!nmi_init_done)
|
||||
return 0;
|
||||
return;
|
||||
|
||||
smp_call_function_single(cpu, start_nmi_watchdog, NULL, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* sparc specific NMI watchdog disable function.
|
||||
* Disables watchdog if it is not disabled already.
|
||||
*/
|
||||
void watchdog_nmi_disable(unsigned int cpu)
|
||||
void watchdog_hardlockup_disable(unsigned int cpu)
|
||||
{
|
||||
if (atomic_read(&nmi_active) == -1)
|
||||
pr_warn_once("NMI watchdog cannot be enabled or disabled\n");
|
||||
|
||||
Reference in New Issue
Block a user