lkml.org 
[lkml]   [2004]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] x86_64/io_apic init section fixups
Randy.Dunlap wrote:
>
> 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.

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.

--
~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.

Signed-off-by: Randy Dunlap <rddunlap@osdl.org>


diffstat:=
arch/x86_64/kernel/io_apic.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)

diff -Naurp ./arch/x86_64/kernel/io_apic.c~ioapic_init_x64 ./arch/x86_64/kernel/io_apic.c
--- ./arch/x86_64/kernel/io_apic.c~ioapic_init_x64 2004-10-11 21:17:55.000000000 -0700
+++ ./arch/x86_64/kernel/io_apic.c 2004-10-15 10:56:29.000000000 -0700
@@ -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 id
return polarity;
}

-static int __init MPBIOS_trigger(int idx)
+static int MPBIOS_trigger(int idx)
{
int bus = mp_irqs[idx].mpc_srcbus;
int trigger;
\
 
 \ /
  Last update: 2005-03-22 14:07    [W:1.410 / U:0.344 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site