Skip to contentSkip to conversation

acpi_irq_to_vector()

Linux-ia64 Yu, Luming 3 participants 4 messages Jun 23, 2003

lore
Share & tools
lore

Yu, Luming

author
#0 lore raw
Quoted 4 lines

For PCI devices, we just read the irq out of the struct pci_dev. The platform code gets the opportunity to mangle the irq in whatever way it chooses before the pci_dev is passed to the driver. Can we do something similar for ACPI instead?

The acpi_irq_to_vector is called in acpi_os_install_interrupt_handler which is in acpi_init that is before pci_init get called. So I don't think it is reasonable to use pci_dev in acpi_init.

Signature · 18 lines
"It's not Hollywood.  War is real, war is primarily not about defeat or
victory, it is about death.  I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk


-------------------------------------------------------
This SF.NET email is sponsored by: eBay
Great deals on office technology -- on eBay now! Click here:
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
Acpi-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-devel

_______________________________________________
Linux-IA64 mailing list
[email protected]
http://lists.linuxia64.org/lists/listinfo/linux-ia64
author
#1 lore raw

To remove the ugly ifdef in the common part of ACPI code,
I think the simple way is to define a acpi_irq_to_vector in arch/i386/acpi which only return acpi_fadt.sci_int. Or someone can invent a method that can return correct value for each platform.

Thanks,
Luming

-----Original Message-----
From: Matthew Wilcox [mailto:[email protected]]
Sent: 2003?6?6? 3:23
To: [email protected]
Subject: [ACPI] acpi_irq_to_vector()

In the 2.5 ia64 patch, there's a lot of places which look like this:

@@ -251,7 +251,14 @@

        irq = acpi_fadt.sci_int;

#ifdef CONFIG_IA64
- irq = gsi_to_vector(irq);
+ int vector;
+
+ vector = acpi_irq_to_vector(irq);
+ if (vector < 0) {
+ printk(KERN_ERR PREFIX "SCI (IRQ%d) not registerd\n", irq);
+ return AE_OK;
+ }
+ irq = vector;

 #endif
        acpi_irq_irq = irq;

ok, we renamed gsi_to_vector to acpi_irq_to_vector(); that's fine. But we still have that ugly ifdef in there. Any resistance to defining acpi_irq_to_vector to simply return its value on non-ia64 platforms?

Then it'd look like:

	irq = acpi_fadt.sci_int;
	vector = acpi_irq_to_vector(irq);
	if (vector < 0) {
		printk(KERN_ERR PREFIX "SCI (IRQ%d) not registered\n", irq);
		return AE_OK;
	}
	acpi_irq_irq = vector;
	acpi_irq_handler = handler;
	acpi_irq_context = context;
	if (request_irq(vector, acpi_irq, SA_SHIRQ, "acpi", acpi_irq)) {

...

Signature · 18 lines
"It's not Hollywood.  War is real, war is primarily not about defeat or
victory, it is about death.  I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk


-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
Acpi-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-devel

_______________________________________________
Linux-IA64 mailing list
[email protected]
http://lists.linuxia64.org/lists/listinfo/linux-ia64
#3 lore raw
In reply to Yu, Luming
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Luming

Linux> To remove the ugly ifdef in the common part of ACPI code, I Linux> think the simple way is to define a acpi_irq_to_vector in Linux> arch/i386/acpi which only return acpi_fadt.sci_int. Or Linux> someone can invent a method that can return correct value for Linux> each platform.

Shouldn't this be called acpi_gsi_to_irq(), though?

	--david

_______________________________________________
Linux-IA64 mailing list
[email protected]
http://lists.linuxia64.org/lists/listinfo/linux-ia64