i386/io_apic init section fixups
PATCH 1/1 i386/io_apic init section fixups
scripts/reference_init.pl found a couple of errors in i386/io_apic.c. When changing them, one more function had to be un-init-ed.
I should check x86_64 also ... tomorrow.
Signature · 1 line
~Randy
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.
diffstat:=
arch/i386/kernel/io_apic.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
arch/i386/kernel/io_apic.c renamed from arch/i386/kernel/io_apic.c~ioapic_not_init +3 -3
@@ -728,7 +728,7 @@ __setup("pirq=", ioapic_pirq_setup);/* * 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;
@@ -838,7 +838,7 @@ void __init setup_ioapic_dest(void)/* * EISA Edge/Level control register, ELCR */ -static int __init EISA_ELCR (unsigned int irq) +static int EISA_ELCR (unsigned int irq) {if (irq <16 ) {unsigned int port =0x4d0 + (irq >>3 );
@@ -955,7 +955,7 @@ static int __init MPBIOS_polarity(int idreturn polarity; } -static int __init MPBIOS_trigger (int idx) +static int MPBIOS_trigger (int idx) {int bus = mp_irqs[idx].mpc_srcbus;int trigger;
PATCH 1/1 x86_64/io_apic init section fixups
Quoted 5 lines · Randy.Dunlap
scripts/reference_init.plfound a couple of errors ini386/io_apic.c. When changing them, one more function had to be un-init-ed.I should check
x86_64also ... tomorrow.
Here's the x86_64 version of this patch.
There was one function in i386 where __init was already removed, and 'make buildcheck' flagged it on x86_64, so I changed it also.
Signature · 1 line
~Randy
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.
diffstat:=
arch/x86_64/kernel/io_apic.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
arch/x86_64/kernel/io_apic.c renamed from arch/x86_64/kernel/io_apic.c~ioapic_init_x64 +4 -4
@@ -83,7 +83,7 @@ int vector_irq[NR_VECTORS] = { [0 ... NR* 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. */ -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 ;struct irq_pin_list *entry = irq_2_pin + irq;
@@ -315,7 +315,7 @@ __setup("pirq=", ioapic_pirq_setup);/* * 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;
@@ -399,7 +399,7 @@ int IO_APIC_get_PCI_irq_vector(int bus,/* * EISA Edge/Level control register, ELCR */ -static int __init EISA_ELCR (unsigned int irq) +static int EISA_ELCR (unsigned int irq) {if (irq <16 ) {unsigned int port =0x4d0 + (irq >>3 );
@@ -504,7 +504,7 @@ static int __init MPBIOS_polarity(int idreturn polarity; } -static int __init MPBIOS_trigger (int idx) +static int MPBIOS_trigger (int idx) {int bus = mp_irqs[idx].mpc_srcbus;int trigger;
Re: [PATCH] x86_64/io_apic init section fixups
Quoted 8 lines · Randy.Dunlap
Quoted 5 lines · Randy.Dunlap
scripts/reference_init.plfound a couple of errors ini386/io_apic.c. When changing them, one more function had to be un-init-ed.I should check
x86_64also ... tomorrow.Here's the
x86_64version of this patch.
Thanks Randy. I added it to my tree.
-Andi