Re: [ACPI] [PATCH] add acpi_interrupt_to_irq

From: Bjorn Helgaas <bjorn.helgaas_at_hp.com>
Date: 2004-01-22 07:18:19
On Wednesday 21 January 2004 9:39 am, Bjorn Helgaas wrote:
> There's also something fishy in this area that neither the -mm5
> code nor my patch addresses.  In the acpi_os_install_interrupt_handler()
> fragment above, we do the "acpi interrupt->irq" conversion and save
> the resulting irq in acpi_irq_irq.  The only place acpi_irq_irq is
> used is in acpi_os_terminate(), where it is passed to acpi_os_remove_
> interupt_handler(), where we apply the "acpi interrupt->irq" conversion
> AGAIN.  This seems wrong.

OK, I think I understand what's wrong there.  acpi_irq_irq needs to
be the PRE-CONVERSION interrupt, like this:

    acpi_status
    acpi_os_install_interrupt_handler(u32 interrupt, OSD_HANDLER handler, void *context)
    {
	unsigned int irq;

	interrupt = acpi_fadt.sci_int;
	irq = acpi_irq_to_vector(interrupt); 
	...
        acpi_irq_irq = interrupt;
	...
	if (request_irq(irq, ...))

Then acpi_os_terminate() will pass the pre-conversion value to
acpi_os_remove_interrupt_handler(), which will apply acpi_irq_to_vector()
and everything will match.

I'll make a note to clean this up after the previous issues in the
area are straightened out.

Bjorn

-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Wed Jan 21 15:18:43 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:21 EST