Commit cad18da0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'please-pull-ia64_for_5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux

Pull ia64 updates from Tony Luck:
 "Couple of cleanup patches"

* tag 'please-pull-ia64_for_5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
  tty/serial: cleanup after ioc*_serial driver removal
  ia64: replace setup_irq() by request_irq()
parents d71e0644 172e7890
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -7978,6 +7978,7 @@ L: linux-ia64@vger.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git
S:	Maintained
F:	arch/ia64/
F:	Documentation/ia64/
IBM Power 842 compression accelerator
M:	Haren Myneni <haren@us.ibm.com>
@@ -15095,14 +15096,6 @@ M: Dimitri Sivanich <sivanich@sgi.com>
S:	Maintained
F:	drivers/misc/sgi-gru/
SGI SN-IA64 (Altix) SERIAL CONSOLE DRIVER
M:	Pat Gefre <pfg@sgi.com>
L:	linux-ia64@vger.kernel.org
S:	Supported
F:	Documentation/ia64/serial.rst
F:	drivers/tty/serial/ioc?_serial.c
F:	include/linux/ioc?.h
SGI XP/XPC/XPNET DRIVER
M:	Cliff Whickman <cpw@sgi.com>
M:	Robin Holt <robinmholt@gmail.com>
+0 −2
Original line number Diff line number Diff line
@@ -113,7 +113,6 @@ extern struct irq_chip irq_type_ia64_lsapic; /* CPU-internal interrupt controlle
#define ia64_register_ipi	ia64_native_register_ipi
#define assign_irq_vector	ia64_native_assign_irq_vector
#define free_irq_vector		ia64_native_free_irq_vector
#define register_percpu_irq	ia64_native_register_percpu_irq
#define ia64_resend_irq		ia64_native_resend_irq

extern void ia64_native_register_ipi(void);
@@ -123,7 +122,6 @@ extern void ia64_native_free_irq_vector (int vector);
extern int reserve_irq_vector (int vector);
extern void __setup_vector_irq(int cpu);
extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect);
extern void ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action);
extern void destroy_and_reserve_irq (unsigned int irq);

#ifdef CONFIG_SMP

arch/ia64/kernel/irq.h

0 → 100644
+3 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
extern void register_percpu_irq(ia64_vector vec, irq_handler_t handler,
				unsigned long flags, const char *name);
+15 −28
Original line number Diff line number Diff line
@@ -351,11 +351,6 @@ static irqreturn_t smp_irq_move_cleanup_interrupt(int irq, void *dev_id)
	return IRQ_HANDLED;
}

static struct irqaction irq_move_irqaction = {
	.handler =	smp_irq_move_cleanup_interrupt,
	.name =		"irq_move"
};

static int __init parse_vector_domain(char *arg)
{
	if (!arg)
@@ -586,28 +581,15 @@ static irqreturn_t dummy_handler (int irq, void *dev_id)
	return IRQ_NONE;
}

static struct irqaction ipi_irqaction = {
	.handler =	handle_IPI,
	.name =		"IPI"
};

/*
 * KVM uses this interrupt to force a cpu out of guest mode
 */
static struct irqaction resched_irqaction = {
	.handler =	dummy_handler,
	.name =		"resched"
};

static struct irqaction tlb_irqaction = {
	.handler =	dummy_handler,
	.name =		"tlb_flush"
};

#endif

void
ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action)
register_percpu_irq(ia64_vector vec, irq_handler_t handler, unsigned long flags,
		    const char *name)
{
	unsigned int irq;

@@ -615,8 +597,9 @@ ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action)
	BUG_ON(bind_irq_vector(irq, vec, CPU_MASK_ALL));
	irq_set_status_flags(irq, IRQ_PER_CPU);
	irq_set_chip(irq, &irq_type_ia64_lsapic);
	if (action)
		setup_irq(irq, action);
	if (handler)
		if (request_irq(irq, handler, flags, name, NULL))
			pr_err("Failed to request irq %u (%s)\n", irq, name);
	irq_set_handler(irq, handle_percpu_irq);
}

@@ -624,9 +607,10 @@ void __init
ia64_native_register_ipi(void)
{
#ifdef CONFIG_SMP
	register_percpu_irq(IA64_IPI_VECTOR, &ipi_irqaction);
	register_percpu_irq(IA64_IPI_RESCHEDULE, &resched_irqaction);
	register_percpu_irq(IA64_IPI_LOCAL_TLB_FLUSH, &tlb_irqaction);
	register_percpu_irq(IA64_IPI_VECTOR, handle_IPI, 0, "IPI");
	register_percpu_irq(IA64_IPI_RESCHEDULE, dummy_handler, 0, "resched");
	register_percpu_irq(IA64_IPI_LOCAL_TLB_FLUSH, dummy_handler, 0,
			    "tlb_flush");
#endif
}

@@ -635,10 +619,13 @@ init_IRQ (void)
{
	acpi_boot_init();
	ia64_register_ipi();
	register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL);
	register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL, 0, NULL);
#ifdef CONFIG_SMP
	if (vector_domain_type != VECTOR_DOMAIN_NONE)
		register_percpu_irq(IA64_IRQ_MOVE_VECTOR, &irq_move_irqaction);
	if (vector_domain_type != VECTOR_DOMAIN_NONE) {
		register_percpu_irq(IA64_IRQ_MOVE_VECTOR,
				    smp_irq_move_cleanup_interrupt, 0,
				    "irq_move");
	}
#endif
#ifdef CONFIG_PERFMON
	pfm_init_percpu();
+14 −36
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@

#include "mca_drv.h"
#include "entry.h"
#include "irq.h"

#if defined(IA64_MCA_DEBUG_INFO)
# define IA64_MCA_DEBUG(fmt...)	printk(fmt)
@@ -1766,36 +1767,6 @@ ia64_mca_disable_cpe_polling(char *str)

__setup("disable_cpe_poll", ia64_mca_disable_cpe_polling);

static struct irqaction cmci_irqaction = {
	.handler =	ia64_mca_cmc_int_handler,
	.name =		"cmc_hndlr"
};

static struct irqaction cmcp_irqaction = {
	.handler =	ia64_mca_cmc_int_caller,
	.name =		"cmc_poll"
};

static struct irqaction mca_rdzv_irqaction = {
	.handler =	ia64_mca_rendez_int_handler,
	.name =		"mca_rdzv"
};

static struct irqaction mca_wkup_irqaction = {
	.handler =	ia64_mca_wakeup_int_handler,
	.name =		"mca_wkup"
};

static struct irqaction mca_cpe_irqaction = {
	.handler =	ia64_mca_cpe_int_handler,
	.name =		"cpe_hndlr"
};

static struct irqaction mca_cpep_irqaction = {
	.handler =	ia64_mca_cpe_int_caller,
	.name =		"cpe_poll"
};

/* Minimal format of the MCA/INIT stacks.  The pseudo processes that run on
 * these stacks can never sleep, they cannot return from the kernel to user
 * space, they do not appear in a normal ps listing.  So there is no need to
@@ -2056,18 +2027,23 @@ void __init ia64_mca_irq_init(void)
	 *  Configure the CMCI/P vector and handler. Interrupts for CMC are
	 *  per-processor, so AP CMC interrupts are setup in smp_callin() (smpboot.c).
	 */
	register_percpu_irq(IA64_CMC_VECTOR, &cmci_irqaction);
	register_percpu_irq(IA64_CMCP_VECTOR, &cmcp_irqaction);
	register_percpu_irq(IA64_CMC_VECTOR, ia64_mca_cmc_int_handler, 0,
			    "cmc_hndlr");
	register_percpu_irq(IA64_CMCP_VECTOR, ia64_mca_cmc_int_caller, 0,
			    "cmc_poll");
	ia64_mca_cmc_vector_setup();       /* Setup vector on BSP */

	/* Setup the MCA rendezvous interrupt vector */
	register_percpu_irq(IA64_MCA_RENDEZ_VECTOR, &mca_rdzv_irqaction);
	register_percpu_irq(IA64_MCA_RENDEZ_VECTOR, ia64_mca_rendez_int_handler,
			    0, "mca_rdzv");

	/* Setup the MCA wakeup interrupt vector */
	register_percpu_irq(IA64_MCA_WAKEUP_VECTOR, &mca_wkup_irqaction);
	register_percpu_irq(IA64_MCA_WAKEUP_VECTOR, ia64_mca_wakeup_int_handler,
			    0, "mca_wkup");

	/* Setup the CPEI/P handler */
	register_percpu_irq(IA64_CPEP_VECTOR, &mca_cpep_irqaction);
	register_percpu_irq(IA64_CPEP_VECTOR, ia64_mca_cpe_int_caller, 0,
			    "cpe_poll");
}

/*
@@ -2108,7 +2084,9 @@ ia64_mca_late_init(void)
			if (irq > 0) {
				cpe_poll_enabled = 0;
				irq_set_status_flags(irq, IRQ_PER_CPU);
				setup_irq(irq, &mca_cpe_irqaction);
				if (request_irq(irq, ia64_mca_cpe_int_handler,
						0, "cpe_hndlr", NULL))
					pr_err("Failed to register cpe_hndlr interrupt\n");
				ia64_cpe_irq = irq;
				ia64_mca_register_cpev(cpe_vector);
				IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n",
Loading