Commit 000befa0 authored by Randy Dunlap's avatar Randy Dunlap Committed by Linus Torvalds

[PATCH] x86_64/io_apic init section fixups

Code section errors in i386/io_apic.c found by scripts/reference_init.pl.
Looks like they could cause problems for a few drivers or in a real hotplug
environment.

Error: ./arch/i386/kernel/io_apic.o .text refers to 000018ff R_386_PC32        .init.text

call chain:
  snd_mpu401_acpi_resource
    acpi_register_gsi
      mp_register_gsi
	io_apic_set_pci_routing
{A}	  ioapic_register_intr
	    IO_APIC_irq_trigger
	      find_irq_entry

Error: ./arch/i386/kernel/io_apic.o .text refers to 00001967 R_386_PC32        .init.text

	(as above thru {A}, then:)
	  IO_APIC_irq_trigger
	    irq_trigger
	      MPBIOS_trigger	>> removing __init from this led to
				   needing to remove __init from
				   EISA_ELCR also.
Signed-off-by: default avatarRandy Dunlap <rddunlap@osdl.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 640ce3d1
...@@ -79,7 +79,7 @@ int vector_irq[NR_VECTORS] = { [0 ... NR_VECTORS - 1] = -1}; ...@@ -79,7 +79,7 @@ int vector_irq[NR_VECTORS] = { [0 ... NR_VECTORS - 1] = -1};
* shared ISA-space IRQs, so we have to support them. We are super * shared ISA-space IRQs, so we have to support them. We are super
* fast in the common case, and fast for shared ISA-space IRQs. * fast in the common case, and fast for shared ISA-space IRQs.
*/ */
static void __init add_pin_to_irq(unsigned int irq, int apic, int pin) static void add_pin_to_irq(unsigned int irq, int apic, int pin)
{ {
static int first_free_entry = NR_IRQS; static int first_free_entry = NR_IRQS;
struct irq_pin_list *entry = irq_2_pin + irq; struct irq_pin_list *entry = irq_2_pin + irq;
...@@ -309,7 +309,7 @@ __setup("pirq=", ioapic_pirq_setup); ...@@ -309,7 +309,7 @@ __setup("pirq=", ioapic_pirq_setup);
/* /*
* Find the IRQ entry number of a certain pin. * Find the IRQ entry number of a certain pin.
*/ */
static int __init find_irq_entry(int apic, int pin, int type) static int find_irq_entry(int apic, int pin, int type)
{ {
int i; int i;
...@@ -393,7 +393,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin) ...@@ -393,7 +393,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin)
/* /*
* EISA Edge/Level control register, ELCR * EISA Edge/Level control register, ELCR
*/ */
static int __init EISA_ELCR(unsigned int irq) static int EISA_ELCR(unsigned int irq)
{ {
if (irq < 16) { if (irq < 16) {
unsigned int port = 0x4d0 + (irq >> 3); unsigned int port = 0x4d0 + (irq >> 3);
...@@ -498,7 +498,7 @@ static int __init MPBIOS_polarity(int idx) ...@@ -498,7 +498,7 @@ static int __init MPBIOS_polarity(int idx)
return polarity; return polarity;
} }
static int __init MPBIOS_trigger(int idx) static int MPBIOS_trigger(int idx)
{ {
int bus = mp_irqs[idx].mpc_srcbus; int bus = mp_irqs[idx].mpc_srcbus;
int trigger; int trigger;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment