Finish removing the non-INTRNG support from sys/arm64.
Obtained from: ABT Systems Ltd MFC after: 1 month Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
115fedf756
commit
ac30983101
@ -81,12 +81,8 @@ static void
|
||||
configure_final(void *dummy)
|
||||
{
|
||||
|
||||
#ifdef INTRNG
|
||||
/* Enable interrupt reception on this CPU */
|
||||
intr_enable();
|
||||
#else
|
||||
arm_enable_intr();
|
||||
#endif
|
||||
cninit_finish();
|
||||
|
||||
if (bootverbose)
|
||||
|
@ -65,7 +65,6 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#include <dev/psci/psci.h>
|
||||
|
||||
#ifdef INTRNG
|
||||
#include "pic_if.h"
|
||||
|
||||
typedef void intr_ipi_send_t(void *, cpuset_t, u_int);
|
||||
@ -86,7 +85,6 @@ static struct intr_ipi ipi_sources[INTR_IPI_COUNT];
|
||||
static struct intr_ipi *intr_ipi_lookup(u_int);
|
||||
static void intr_pic_ipi_setup(u_int, const char *, intr_ipi_handler_t *,
|
||||
void *);
|
||||
#endif /* INTRNG */
|
||||
|
||||
boolean_t ofw_cpu_reg(phandle_t node, u_int, cell_t *);
|
||||
|
||||
@ -214,18 +212,12 @@ release_aps(void *dummy __unused)
|
||||
{
|
||||
int cpu, i;
|
||||
|
||||
#ifdef INTRNG
|
||||
intr_pic_ipi_setup(IPI_AST, "ast", ipi_ast, NULL);
|
||||
intr_pic_ipi_setup(IPI_PREEMPT, "preempt", ipi_preempt, NULL);
|
||||
intr_pic_ipi_setup(IPI_RENDEZVOUS, "rendezvous", ipi_rendezvous, NULL);
|
||||
intr_pic_ipi_setup(IPI_STOP, "stop", ipi_stop, NULL);
|
||||
intr_pic_ipi_setup(IPI_STOP_HARD, "stop hard", ipi_stop, NULL);
|
||||
intr_pic_ipi_setup(IPI_HARDCLOCK, "hardclock", ipi_hardclock, NULL);
|
||||
#else
|
||||
/* Setup the IPI handler */
|
||||
for (i = 0; i < INTR_IPI_COUNT; i++)
|
||||
arm_setup_ipihandler(ipi_handler, i);
|
||||
#endif
|
||||
|
||||
atomic_store_rel_int(&aps_ready, 1);
|
||||
/* Wake up the other CPUs */
|
||||
@ -253,9 +245,6 @@ void
|
||||
init_secondary(uint64_t cpu)
|
||||
{
|
||||
struct pcpu *pcpup;
|
||||
#ifndef INTRNG
|
||||
int i;
|
||||
#endif
|
||||
|
||||
pcpup = &__pcpu[cpu];
|
||||
/*
|
||||
@ -282,15 +271,7 @@ init_secondary(uint64_t cpu)
|
||||
*/
|
||||
identify_cpu();
|
||||
|
||||
#ifdef INTRNG
|
||||
intr_pic_init_secondary();
|
||||
#else
|
||||
/* Configure the interrupt controller */
|
||||
arm_init_secondary();
|
||||
|
||||
for (i = 0; i < INTR_IPI_COUNT; i++)
|
||||
arm_unmask_ipi(i);
|
||||
#endif
|
||||
|
||||
/* Start per-CPU event timers. */
|
||||
cpu_initclocks_ap();
|
||||
@ -322,7 +303,6 @@ init_secondary(uint64_t cpu)
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
#ifdef INTRNG
|
||||
/*
|
||||
* Send IPI thru interrupt controller.
|
||||
*/
|
||||
@ -378,7 +358,6 @@ intr_ipi_send(cpuset_t cpus, u_int ipi)
|
||||
|
||||
ii->ii_send(ii->ii_send_arg, cpus, ipi);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
ipi_ast(void *dummy __unused)
|
||||
@ -432,44 +411,6 @@ ipi_stop(void *dummy __unused)
|
||||
CTR0(KTR_SMP, "IPI_STOP (restart)");
|
||||
}
|
||||
|
||||
#ifndef INTRNG
|
||||
static int
|
||||
ipi_handler(void *arg)
|
||||
{
|
||||
u_int cpu, ipi;
|
||||
|
||||
arg = (void *)((uintptr_t)arg & ~(1 << 16));
|
||||
KASSERT((uintptr_t)arg < INTR_IPI_COUNT,
|
||||
("Invalid IPI %ju", (uintptr_t)arg));
|
||||
|
||||
cpu = PCPU_GET(cpuid);
|
||||
ipi = (uintptr_t)arg;
|
||||
|
||||
switch(ipi) {
|
||||
case IPI_AST:
|
||||
ipi_ast(NULL);
|
||||
break;
|
||||
case IPI_PREEMPT:
|
||||
ipi_preempt(NULL);
|
||||
break;
|
||||
case IPI_RENDEZVOUS:
|
||||
ipi_rendezvous(NULL);
|
||||
break;
|
||||
case IPI_STOP:
|
||||
case IPI_STOP_HARD:
|
||||
ipi_stop(NULL);
|
||||
break;
|
||||
case IPI_HARDCLOCK:
|
||||
ipi_hardclock(NULL);
|
||||
break;
|
||||
default:
|
||||
panic("Unknown IPI %#0x on cpu %d", ipi, curcpu);
|
||||
}
|
||||
|
||||
return (FILTER_HANDLED);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct cpu_group *
|
||||
cpu_topo(void)
|
||||
{
|
||||
@ -624,7 +565,6 @@ cpu_mp_setmaxid(void)
|
||||
mp_maxid = 0;
|
||||
}
|
||||
|
||||
#ifdef INTRNG
|
||||
/*
|
||||
* Lookup IPI source.
|
||||
*/
|
||||
@ -768,4 +708,3 @@ ipi_selected(cpuset_t cpus, u_int ipi)
|
||||
CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi);
|
||||
intr_ipi_send(cpus, ipi);
|
||||
}
|
||||
#endif /* INTRNG */
|
||||
|
@ -271,13 +271,9 @@ nexus_config_intr(device_t dev, int irq, enum intr_trigger trig,
|
||||
enum intr_polarity pol)
|
||||
{
|
||||
|
||||
#ifdef INTRNG
|
||||
/* TODO: This is wrong, it's needed for ACPI */
|
||||
device_printf(dev, "bus_config_intr is obsolete and not supported!\n");
|
||||
return (EOPNOTSUPP);
|
||||
#else
|
||||
return (intr_irq_config(irq, trig, pol));
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
@ -294,12 +290,7 @@ nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags,
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
#ifdef INTRNG
|
||||
error = intr_setup_irq(child, res, filt, intr, arg, flags, cookiep);
|
||||
#else
|
||||
error = arm_setup_intr(device_get_nameunit(child), filt, intr,
|
||||
arg, rman_get_start(res), flags, cookiep);
|
||||
#endif
|
||||
|
||||
return (error);
|
||||
}
|
||||
@ -308,11 +299,7 @@ static int
|
||||
nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih)
|
||||
{
|
||||
|
||||
#ifdef INTRNG
|
||||
return (intr_teardown_irq(child, r, ih));
|
||||
#else
|
||||
return (intr_irq_remove_handler(child, rman_get_start(r), ih));
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SMP
|
||||
@ -320,11 +307,7 @@ static int
|
||||
nexus_bind_intr(device_t dev, device_t child, struct resource *irq, int cpu)
|
||||
{
|
||||
|
||||
#ifdef INTRNG
|
||||
return (intr_bind_irq(child, irq, cpu));
|
||||
#else
|
||||
return (intr_irq_bind(rman_get_start(irq), cpu));
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -447,22 +430,8 @@ static int
|
||||
nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int icells,
|
||||
pcell_t *intr)
|
||||
{
|
||||
#ifdef INTRNG
|
||||
|
||||
return (INTR_IRQ_INVALID);
|
||||
#else
|
||||
int irq;
|
||||
|
||||
if (icells == 3) {
|
||||
irq = intr[1];
|
||||
if (intr[0] == 0)
|
||||
irq += 32; /* SPI */
|
||||
else
|
||||
irq += 16; /* PPI */
|
||||
} else
|
||||
irq = intr[0];
|
||||
|
||||
return (irq);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -29,8 +29,6 @@
|
||||
#ifndef _MACHINE_INTR_H_
|
||||
#define _MACHINE_INTR_H_
|
||||
|
||||
#ifdef INTRNG
|
||||
|
||||
#ifdef FDT
|
||||
#include <dev/ofw/openfirm.h>
|
||||
#endif
|
||||
@ -50,33 +48,4 @@ arm_irq_memory_barrier(uintptr_t irq)
|
||||
void intr_ipi_dispatch(u_int, struct trapframe *);
|
||||
#endif
|
||||
|
||||
#else
|
||||
int intr_irq_config(u_int, enum intr_trigger, enum intr_polarity);
|
||||
void intr_irq_handler(struct trapframe *);
|
||||
int intr_irq_remove_handler(device_t, u_int, void *);
|
||||
|
||||
void arm_dispatch_intr(u_int, struct trapframe *);
|
||||
int arm_enable_intr(void);
|
||||
void arm_mask_irq(u_int);
|
||||
void arm_register_root_pic(device_t, u_int);
|
||||
void arm_register_msi_pic(device_t);
|
||||
int arm_alloc_msi(device_t, device_t, int, int, int *);
|
||||
int arm_release_msi(device_t, device_t, int, int *);
|
||||
int arm_alloc_msix(device_t, device_t, int *);
|
||||
int arm_release_msix(device_t, device_t, int);
|
||||
int arm_map_msi(device_t, device_t, int, uint64_t *, uint32_t *);
|
||||
int arm_map_msix(device_t, device_t, int, uint64_t *, uint32_t *);
|
||||
int arm_setup_intr(const char *, driver_filter_t *, driver_intr_t,
|
||||
void *, u_int, enum intr_type, void **);
|
||||
void arm_unmask_irq(u_int);
|
||||
|
||||
#ifdef SMP
|
||||
int intr_irq_bind(u_int, int);
|
||||
|
||||
void arm_init_secondary(void);
|
||||
void arm_setup_ipihandler(driver_filter_t *, u_int);
|
||||
void arm_unmask_ipi(u_int);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* _MACHINE_INTR_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user