[U-Boot] [PATCH 1/2] x86: Wrap calls to 8259 with CONFIG_I8259_PIC
Hannes Schmelzer
hannes at schmelzer.or.at
Mon Nov 19 10:57:24 UTC 2018
On 11/19/18 11:49 AM, Bin Meng wrote:
> mask_irq(), unmask_irq() and specific_eoi() are provided by the
> i8259 PIC driver and should be wrapped with CONFIG_I8259_PIC.
>
> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> ---
>
> arch/x86/lib/interrupts.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/lib/interrupts.c b/arch/x86/lib/interrupts.c
> index 297067d..b1dc6e1 100644
> --- a/arch/x86/lib/interrupts.c
> +++ b/arch/x86/lib/interrupts.c
> @@ -64,7 +64,9 @@ void irq_install_handler(int irq, interrupt_handler_t *handler, void *arg)
> irq_handlers[irq].arg = arg;
> irq_handlers[irq].count = 0;
>
> +#if CONFIG_IS_ENABLED(I8259_PIC)
> unmask_irq(irq);
> +#endif
>
> if (status)
> enable_interrupts();
> @@ -83,7 +85,9 @@ void irq_free_handler(int irq)
>
> status = disable_interrupts();
>
> +#if CONFIG_IS_ENABLED(I8259_PIC)
> mask_irq(irq);
> +#endif
>
> irq_handlers[irq].handler = NULL;
> irq_handlers[irq].arg = NULL;
> @@ -104,14 +108,17 @@ void do_irq(int hw_irq)
> }
>
> if (irq_handlers[irq].handler) {
> +#if CONFIG_IS_ENABLED(I8259_PIC)
> mask_irq(irq);
> +#endif
>
> irq_handlers[irq].handler(irq_handlers[irq].arg);
> irq_handlers[irq].count++;
>
> +#if CONFIG_IS_ENABLED(I8259_PIC)
> unmask_irq(irq);
> specific_eoi(irq);
> -
> +#endif
> } else {
> if ((irq & 7) != 7) {
> spurious_irq_cnt++;
Tested-by: Hannes Schmelzer <oe5hpm at oevsv.at>
Hi Bin,
thanks for this patch. This is working for my board.
With this we may drop my X86-noirq patch.
cheers,
Hannes
More information about the U-Boot
mailing list