Re: [PATCH v6 2/2] irqchip: add J-Core AIC driver

From: Geert Uytterhoeven
Date: Thu Aug 04 2016 - 10:33:05 EST


Hi Rich,

On Thu, Aug 4, 2016 at 6:30 AM, Rich Felker <dalias@xxxxxxxx> wrote:
> --- /dev/null
> +++ b/drivers/irqchip/irq-jcore-aic.c

> +int __init aic_irq_of_init(struct device_node *node, struct device_node *parent)
> +{
> + unsigned min_irq = JCORE_AIC2_MIN_HWIRQ;
> + unsigned dom_sz = JCORE_AIC_MAX_HWIRQ+1;
> + struct irq_domain *domain;
> +
> + pr_info("Initializing J-Core AIC\n");
> +
> + /* AIC1 needs priority initialization to receive interrupts. */
> + if (of_device_is_compatible(node, "jcore,aic1")) {
> + unsigned cpu;
> +
> + for_each_present_cpu(cpu) {
> + void __iomem *base = of_iomap(node, cpu);

Just double checking, these regions are per-cpu hardware registers,
and not related to other functionality at all?

I.e. when booting on an SMP-capable system a kernel compiled with
CONFIG_SMP=n, or using the kernel command line option maxcpus=
to reduce the number of CPUs, no ill effects happen by not mapping the
region and not writing to the register below?

> +
> + if (!base) {
> + pr_err("Unable to map AIC for cpu %u\n", cpu);
> + return -ENOMEM;
> + }
> + __raw_writel(0xffffffff, base + JCORE_AIC1_INTPRI_REG);
> + iounmap(base);
> + }
> + min_irq = JCORE_AIC1_MIN_HWIRQ;
> + }

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds