]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ia64: iosapic: rationalize __init/__devinit
authorBjorn Helgaas <bjorn_helgaas@hp.com>
Tue, 4 Mar 2003 06:44:05 +0000 (22:44 -0800)
committerDavid Mosberger <davidm@tiger.hpl.hp.com>
Tue, 4 Mar 2003 06:44:05 +0000 (22:44 -0800)
Rationalize __init/__devinit attributes.  The noteworthy changes are
that
iosapic_system_init(),
iosapic_init(),
iosapic_register_platform_intr(), and
iosapic_override_isa_irq()
are __init (only called from ACPI __init functions), but
iosapic_lists[],
num_iosapic,
find_iosapic(),
register_intr(),
iosapic_register_intr(), and
acpi_register_irq()
are not because they may be used after init-time by modules.

More detailed analysis:

        iosapic_lists[], num_iosapic: normal, referenced by
                find_iosapic (normal)
                register_intr (normal)
                iosapic_init (__init)

        pcat_compat: __initdata, referenced by
                iosapic_system_init (__init)
                iosapic_init (__init)
                iosapic_parse_prt (__init)

        find_iosapic: normal, called by
                register_intr (normal)

        register_intr: normal, called by
                iosapic_register_intr (normal), called by
                        acpi_register_irq (normal), called by
                                modules (=> can't be __init or __devinit)
                iosapic_register_platform_intr (__init)
                iosapic_override_isa_irq (__init)
                iosapic_parse_prt (__init)

        iosapic_reassign_vector: __init, called by
                iosapic_register_platform_intr (__init), called by
                        acpi_parse_plat_int_src (__init)

        iosapic_system_init: __init, called by
                acpi_parse_madt (__init)

        iosapic_init: __init, called by
                acpi_parse_iosapic (__init)

        iosapic_register_platform_intr: __init, called by
                acpi_parse_plat_int_src (__init)

        iosapic_override_isa_irq: __init, called by
                acpi_parse_int_src_ovr (__init)
                iosapic_init (__init)

        fixup_vector: __init, called by
                iosapic_parse_prt (__init), called by
                        acpi_pci_irq_init (__init)

arch/ia64/kernel/acpi.c
arch/ia64/kernel/iosapic.c
include/asm-ia64/iosapic.h

index 5ff0b7e16eb57589f7f514b941d16e163e0f52e9..5c527e4005a295cedff760c583f391c60f0880c2 100644 (file)
@@ -837,7 +837,7 @@ acpi_irq_to_vector (u32 irq)
        return gsi_to_vector(irq);
 }
 
-int __init
+int
 acpi_register_irq (u32 gsi, u32 polarity, u32 trigger)
 {
        int vector = 0;
index f515af0f92d28d1ff3a2f1aca99d489f9f8a5a16..8ace5ae8e66f370444f5558652fba2c0a86a0a26 100644 (file)
@@ -29,6 +29,9 @@
  * 02/07/29    T. Kochi        Allocate interrupt vectors dynamically
  * 02/08/04    T. Kochi        Cleaned up terminology (irq, global system interrupt, vector, etc.)
  * 02/09/20    D. Mosberger    Simplified by taking advantage of ACPI's pci_irq code.
+ * 03/02/19    B. Helgaas      Make pcat_compat system-wide, not per-IOSAPIC.
+ *                             Remove iosapic_address & gsi_base from external interfaces.
+ *                             Rationalize __init/__devinit attributes.
  */
 /*
  * Here is what the interrupt logic between a PCI device and the kernel looks like:
@@ -111,17 +114,17 @@ static struct iosapic {
        char            *addr;          /* base address of IOSAPIC */
        unsigned int    gsi_base;       /* first GSI assigned to this IOSAPIC */
        unsigned short  num_rte;        /* number of RTE in this IOSAPIC */
-} iosapic_lists[256] __devinitdata;
+} iosapic_lists[256];
 
-static int num_iosapic = 0;
+static int num_iosapic;
 
-static unsigned char pcat_compat;      /* 8259 compatibility flag */
+static unsigned char pcat_compat __initdata;   /* 8259 compatibility flag */
 
 
 /*
  * Find an IOSAPIC associated with a GSI
  */
-static inline int __devinit
+static inline int
 find_iosapic (unsigned int gsi)
 {
        int i;
@@ -424,7 +427,7 @@ iosapic_version (char *addr)
  * if the given vector is already owned by other,
  *  assign a new vector for the other and make the vector available
  */
-static void
+static void __init
 iosapic_reassign_vector (int vector)
 {
        int new_vector;
@@ -516,7 +519,7 @@ iosapic_register_intr (unsigned int gsi,
  * ACPI calls this when it finds an entry for a platform interrupt.
  * Note that the irq_base and IOSAPIC address must be set in iosapic_init().
  */
-int
+int __init
 iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
                                int iosapic_vector, u16 eid, u16 id,
                                unsigned long polarity, unsigned long trigger)
@@ -565,7 +568,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
  * ACPI calls this when it finds an entry for a legacy ISA IRQ override.
  * Note that the gsi_base and IOSAPIC address must be set in iosapic_init().
  */
-void
+void __init
 iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi,
                          unsigned long polarity,
                          unsigned long trigger)
@@ -586,7 +589,7 @@ iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi,
        set_rte(vector, dest);
 }
 
-void __devinit
+void __init
 iosapic_system_init (int system_pcat_compat)
 {
        int vector;
@@ -606,7 +609,7 @@ iosapic_system_init (int system_pcat_compat)
        }
 }
 
-void __devinit
+void __init
 iosapic_init (unsigned long phys_addr, unsigned int gsi_base)
 {
        int num_rte;
@@ -643,7 +646,7 @@ iosapic_init (unsigned long phys_addr, unsigned int gsi_base)
        }
 }
 
-static void
+static void __init
 fixup_vector (int vector, unsigned int gsi, const char *pci_id)
 {
        struct hw_interrupt_type *irq_type = &irq_type_iosapic_level;
index defc44f9e97afc01230818afc6c0d2ab049644f1..03f2571d80d99fbec94e0225f8825529e9cb941f 100644 (file)
 
 #ifndef __ASSEMBLY__
 
-extern void __devinit iosapic_system_init (int pcat_compat);
-extern void __devinit iosapic_init (unsigned long address,
+extern void __init iosapic_system_init (int pcat_compat);
+extern void __init iosapic_init (unsigned long address,
                                    unsigned int gsi_base);
 extern int gsi_to_vector (unsigned int gsi);
 extern int gsi_to_irq (unsigned int gsi);
-extern void iosapic_parse_prt (void);
+extern void __init iosapic_parse_prt (void);
 extern int iosapic_register_intr (unsigned int gsi, unsigned long polarity,
                                  unsigned long trigger);
-extern void iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi,
+extern void __init iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi,
                                      unsigned long polarity,
                                      unsigned long trigger);
-extern int iosapic_register_platform_intr (u32 int_type,
+extern int __init iosapic_register_platform_intr (u32 int_type,
                                           unsigned int gsi,
                                           int pmi_vector,
                                           u16 eid, u16 id,