Remap PMC interrupt for all cores
This commit is contained in:
parent
634f9253e8
commit
5e608d0b09
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=233417
@ -176,4 +176,6 @@ typedef enum
|
|||||||
/* Interrupts 129 - 135 are reserved */
|
/* Interrupts 129 - 135 are reserved */
|
||||||
} octeon_irq_t;
|
} octeon_irq_t;
|
||||||
|
|
||||||
|
#define OCTEON_PMC_IRQ OCTEON_IRQ_4
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -260,6 +260,8 @@ octeon_debug_symbol(void)
|
|||||||
void
|
void
|
||||||
octeon_ciu_reset(void)
|
octeon_ciu_reset(void)
|
||||||
{
|
{
|
||||||
|
uint64_t cvmctl;
|
||||||
|
|
||||||
/* Disable all CIU interrupts by default */
|
/* Disable all CIU interrupts by default */
|
||||||
cvmx_write_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num()*2), 0);
|
cvmx_write_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num()*2), 0);
|
||||||
cvmx_write_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num()*2+1), 0);
|
cvmx_write_csr(CVMX_CIU_INTX_EN0(cvmx_get_core_num()*2+1), 0);
|
||||||
@ -272,6 +274,14 @@ octeon_ciu_reset(void)
|
|||||||
(1ull << (OCTEON_IRQ_MBOX0 - 8)) |
|
(1ull << (OCTEON_IRQ_MBOX0 - 8)) |
|
||||||
(1ull << (OCTEON_IRQ_MBOX1 - 8)));
|
(1ull << (OCTEON_IRQ_MBOX1 - 8)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Move the Performance Counter interrupt to OCTEON_PMC_IRQ
|
||||||
|
*/
|
||||||
|
cvmctl = mips_rd_cvmctl();
|
||||||
|
cvmctl &= ~(7 << 7);
|
||||||
|
cvmctl |= (OCTEON_PMC_IRQ + 2) << 7;
|
||||||
|
mips_wr_cvmctl(cvmctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -57,8 +57,6 @@ static int octeon_pmc_probe(device_t);
|
|||||||
static int octeon_pmc_attach(device_t);
|
static int octeon_pmc_attach(device_t);
|
||||||
static int octeon_pmc_intr(void *);
|
static int octeon_pmc_intr(void *);
|
||||||
|
|
||||||
#define OCTEON_PMC_IRQ 4
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
octeon_pmc_identify(driver_t *drv, device_t parent)
|
octeon_pmc_identify(driver_t *drv, device_t parent)
|
||||||
{
|
{
|
||||||
@ -82,7 +80,6 @@ octeon_pmc_attach(device_t dev)
|
|||||||
struct octeon_pmc_softc *sc;
|
struct octeon_pmc_softc *sc;
|
||||||
int error;
|
int error;
|
||||||
int rid;
|
int rid;
|
||||||
uint64_t cvmctl;
|
|
||||||
|
|
||||||
sc = device_get_softc(dev);
|
sc = device_get_softc(dev);
|
||||||
|
|
||||||
@ -103,14 +100,6 @@ octeon_pmc_attach(device_t dev)
|
|||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Move the Performance Counter interrupt to OCTEON_PMC_IRQ
|
|
||||||
*/
|
|
||||||
cvmctl = mips_rd_cvmctl();
|
|
||||||
cvmctl &= ~(7 << 7);
|
|
||||||
cvmctl |= (OCTEON_PMC_IRQ + 2) << 7;
|
|
||||||
mips_wr_cvmctl(cvmctl);
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user