powerpc/powernv: Add __init attribute to eligible functions
authorNick Child <nick.child@ibm.com>
Thu, 16 Dec 2021 22:00:26 +0000 (17:00 -0500)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 23 Dec 2021 11:33:15 +0000 (22:33 +1100)
Some functions defined in 'arch/powerpc/platforms/powernv' are
deserving of an `__init` macro attribute. These functions are only
called by other initialization functions and therefore should inherit
the attribute.
Also, change function declarations in header files to include `__init`.

Signed-off-by: Nick Child <nick.child@ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211216220035.605465-12-nick.child@ibm.com
15 files changed:
arch/powerpc/include/asm/cpuidle.h
arch/powerpc/include/asm/opal.h
arch/powerpc/platforms/powernv/idle.c
arch/powerpc/platforms/powernv/opal-core.c
arch/powerpc/platforms/powernv/opal-fadump.c
arch/powerpc/platforms/powernv/opal-msglog.c
arch/powerpc/platforms/powernv/opal-power.c
arch/powerpc/platforms/powernv/opal-powercap.c
arch/powerpc/platforms/powernv/opal-rtc.c
arch/powerpc/platforms/powernv/opal-sensor-groups.c
arch/powerpc/platforms/powernv/opal.c
arch/powerpc/platforms/powernv/pci-ioda.c
arch/powerpc/platforms/powernv/powernv.h
arch/powerpc/platforms/powernv/rng.c
arch/powerpc/platforms/powernv/setup.c

index 9844b3ded187c444c3fb09b8a161e3f1eb2d3acc..0cce5dc7fb1c2d94d3d5937465ef110af8ae8e29 100644 (file)
@@ -85,7 +85,7 @@ extern struct pnv_idle_states_t *pnv_idle_states;
 extern int nr_pnv_idle_states;
 
 unsigned long pnv_cpu_offline(unsigned int cpu);
-int validate_psscr_val_mask(u64 *psscr_val, u64 *psscr_mask, u32 flags);
+int __init validate_psscr_val_mask(u64 *psscr_val, u64 *psscr_mask, u32 flags);
 static inline void report_invalid_psscr_val(u64 psscr_val, int err)
 {
        switch (err) {
index 6ea9001de9a998c64cb09a94ca0f39844fbbb13e..bfd3142cd0ba7a7435e5e4b98854acce7c5325c4 100644 (file)
@@ -314,7 +314,7 @@ extern int early_init_dt_scan_opal(unsigned long node, const char *uname,
                                   int depth, void *data);
 extern int early_init_dt_scan_recoverable_ranges(unsigned long node,
                                 const char *uname, int depth, void *data);
-extern void opal_configure_cores(void);
+void __init opal_configure_cores(void);
 
 extern int opal_get_chars(uint32_t vtermno, char *buf, int count);
 extern int opal_put_chars(uint32_t vtermno, const char *buf, int total_len);
index 885ef229aba148bcd5ac0f1d73380ec83cfe97b0..9942289f379bcc0068987e923f487b88e3ab58aa 100644 (file)
@@ -62,7 +62,7 @@ static bool deepest_stop_found;
 
 static unsigned long power7_offline_type;
 
-static int pnv_save_sprs_for_deep_states(void)
+static int __init pnv_save_sprs_for_deep_states(void)
 {
        int cpu;
        int rc;
@@ -1123,7 +1123,7 @@ unsigned long pnv_cpu_offline(unsigned int cpu)
  *     stop instruction
  */
 
-int validate_psscr_val_mask(u64 *psscr_val, u64 *psscr_mask, u32 flags)
+int __init validate_psscr_val_mask(u64 *psscr_val, u64 *psscr_mask, u32 flags)
 {
        int err = 0;
 
@@ -1317,7 +1317,7 @@ static void __init pnv_probe_idle_states(void)
  * which is the number of cpuidle states discovered through device-tree.
  */
 
-static int pnv_parse_cpuidle_dt(void)
+static int __init pnv_parse_cpuidle_dt(void)
 {
        struct device_node *np;
        int nr_idle_states, i;
index 5b9736bbc2aa374265a8cfc9a052f79225c9b459..0331f1973f0e3576cd88016fc8bcf3bf570f2def 100644 (file)
@@ -89,7 +89,7 @@ static inline int is_opalcore_usable(void)
        return (oc_conf && oc_conf->opalcorebuf != NULL) ? 1 : 0;
 }
 
-static Elf64_Word *append_elf64_note(Elf64_Word *buf, char *name,
+static Elf64_Word *__init append_elf64_note(Elf64_Word *buf, char *name,
                                     u32 type, void *data,
                                     size_t data_len)
 {
@@ -108,7 +108,7 @@ static Elf64_Word *append_elf64_note(Elf64_Word *buf, char *name,
        return buf;
 }
 
-static void fill_prstatus(struct elf_prstatus *prstatus, int pir,
+static void __init fill_prstatus(struct elf_prstatus *prstatus, int pir,
                          struct pt_regs *regs)
 {
        memset(prstatus, 0, sizeof(struct elf_prstatus));
@@ -134,7 +134,7 @@ static void fill_prstatus(struct elf_prstatus *prstatus, int pir,
        }
 }
 
-static Elf64_Word *auxv_to_elf64_notes(Elf64_Word *buf,
+static Elf64_Word *__init auxv_to_elf64_notes(Elf64_Word *buf,
                                       u64 opal_boot_entry)
 {
        Elf64_Off *bufp = (Elf64_Off *)oc_conf->auxv_buf;
index 9a360ced663b0a64519cb8f56c909376c2d039ff..c8ad057c722104965114822adc09dded6e10f800 100644 (file)
@@ -112,7 +112,7 @@ static void opal_fadump_update_config(struct fw_dump *fadump_conf,
  * This function is called in the capture kernel to get configuration details
  * from metadata setup by the first kernel.
  */
-static void opal_fadump_get_config(struct fw_dump *fadump_conf,
+static void __init opal_fadump_get_config(struct fw_dump *fadump_conf,
                                   const struct opal_fadump_mem_struct *fdm)
 {
        unsigned long base, size, last_end, hole_size;
index d3b6e135c18b17eff82ab90b90d2c3fbd3f3e031..22d6efe17b0d01223d1c216a9fb21203a350bddf 100644 (file)
@@ -105,7 +105,7 @@ static struct bin_attribute opal_msglog_attr = {
        .read = opal_msglog_read
 };
 
-struct memcons *memcons_init(struct device_node *node, const char *mc_prop_name)
+struct memcons *__init memcons_init(struct device_node *node, const char *mc_prop_name)
 {
        u64 mcaddr;
        struct memcons *mc;
@@ -133,7 +133,7 @@ out_err:
        return NULL;
 }
 
-u32 memcons_get_size(struct memcons *mc)
+u32 __init memcons_get_size(struct memcons *mc)
 {
        return be32_to_cpu(mc->ibuf_size) + be32_to_cpu(mc->obuf_size);
 }
index 2a3717fc24eaee6b1811515d14d260e5b18b6b81..db99ffcb7b82915961941dde54ef5b4d5c046c54 100644 (file)
@@ -53,7 +53,7 @@ static bool detect_epow(void)
 }
 
 /* Check for existing EPOW, DPO events */
-static bool poweroff_pending(void)
+static bool __init poweroff_pending(void)
 {
        int rc;
        __be64 opal_dpo_timeout;
index c16d44f6f1d12e2e7ce25b3c38bb7702732c0034..64506b46e77bd16c099dad55948381a798577c3a 100644 (file)
@@ -129,7 +129,7 @@ out_token:
        return ret;
 }
 
-static void powercap_add_attr(int handle, const char *name,
+static void __init powercap_add_attr(int handle, const char *name,
                              struct powercap_attr *attr)
 {
        attr->handle = handle;
index 44d7dacb33a24bd3e1d1dd8f4d5a38949af6da65..a9bcf9217e649540c87d1dd67f4b55b8b441e79e 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/firmware.h>
 #include <asm/machdep.h>
 
-static void opal_to_tm(u32 y_m_d, u64 h_m_s_ms, struct rtc_time *tm)
+static void __init opal_to_tm(u32 y_m_d, u64 h_m_s_ms, struct rtc_time *tm)
 {
        tm->tm_year     = ((bcd2bin(y_m_d >> 24) * 100) +
                           bcd2bin((y_m_d >> 16) & 0xff)) - 1900;
index f8ae1fb0c102f7200418b4c88c960433b4959303..8fba7d25ae565768d7a7ae386576f353d5af765e 100644 (file)
@@ -126,7 +126,7 @@ static void add_attr(int handle, struct sg_attr *attr, int index)
        attr->attr.store = ops_info[index].store;
 }
 
-static int add_attr_group(const __be32 *ops, int len, struct sensor_group *sg,
+static int __init add_attr_group(const __be32 *ops, int len, struct sensor_group *sg,
                           u32 handle)
 {
        int i, j;
@@ -144,7 +144,7 @@ static int add_attr_group(const __be32 *ops, int len, struct sensor_group *sg,
        return sysfs_create_group(sg_kobj, &sg->sg);
 }
 
-static int get_nr_attrs(const __be32 *ops, int len)
+static int __init get_nr_attrs(const __be32 *ops, int len)
 {
        int i, j;
        int nr_attrs = 0;
index e9d18519e650bb1a13dad68e9fefecea0f440fb6..55a8fbfdb5b2874c673eb9dce310fbed5e01be2b 100644 (file)
@@ -73,7 +73,7 @@ static struct task_struct *kopald_tsk;
 static struct opal_msg *opal_msg;
 static u32 opal_msg_size __ro_after_init;
 
-void opal_configure_cores(void)
+void __init opal_configure_cores(void)
 {
        u64 reinit_flags = 0;
 
@@ -779,7 +779,7 @@ out:
        return !!recover_addr;
 }
 
-static int opal_sysfs_init(void)
+static int __init opal_sysfs_init(void)
 {
        opal_kobj = kobject_create_and_add("opal", firmware_kobj);
        if (!opal_kobj) {
@@ -937,7 +937,7 @@ static void __init opal_dump_region_init(void)
                        "rc = %d\n", rc);
 }
 
-static void opal_pdev_init(const char *compatible)
+static void __init opal_pdev_init(const char *compatible)
 {
        struct device_node *np;
 
@@ -981,7 +981,7 @@ void opal_wake_poller(void)
                wake_up_process(kopald_tsk);
 }
 
-static void opal_init_heartbeat(void)
+static void __init opal_init_heartbeat(void)
 {
        /* Old firwmware, we assume the HVC heartbeat is sufficient */
        if (of_property_read_u32(opal_node, "ibm,heartbeat-ms",
index 004cd6a96c8a03d85cb17d6c0cacbed104654171..acd763593ab4f30d34c30b609ace9911ae3d4a72 100644 (file)
@@ -2265,7 +2265,7 @@ static const struct irq_domain_ops pnv_irq_domain_ops = {
        .free   = pnv_irq_domain_free,
 };
 
-static int pnv_msi_allocate_domains(struct pci_controller *hose, unsigned int count)
+static int __init pnv_msi_allocate_domains(struct pci_controller *hose, unsigned int count)
 {
        struct pnv_phb *phb = hose->private_data;
        struct irq_domain *parent = irq_get_default_host();
@@ -2298,7 +2298,7 @@ static int pnv_msi_allocate_domains(struct pci_controller *hose, unsigned int co
        return 0;
 }
 
-static void pnv_pci_init_ioda_msis(struct pnv_phb *phb)
+static void __init pnv_pci_init_ioda_msis(struct pnv_phb *phb)
 {
        unsigned int count;
        const __be32 *prop = of_get_property(phb->hose->dn,
index 11df4e16a1cc3b800780d8c9ef9dbb92e8113cdd..e297bf4abfcb8033e6bb770e8a70fa253de8c6e1 100644 (file)
@@ -39,7 +39,7 @@ bool cpu_core_split_required(void);
 
 struct memcons;
 ssize_t memcons_copy(struct memcons *mc, char *to, loff_t pos, size_t count);
-u32 memcons_get_size(struct memcons *mc);
-struct memcons *memcons_init(struct device_node *node, const char *mc_prop_name);
+u32 __init memcons_get_size(struct memcons *mc);
+struct memcons *__init memcons_init(struct device_node *node, const char *mc_prop_name);
 
 #endif /* _POWERNV_H */
index 72c25295c1c2b4e9bd89824dbf99d5646a1d5624..b4386714494a6f22e3775ce22a1b9d24271853bc 100644 (file)
@@ -80,7 +80,7 @@ static int powernv_get_random_darn(unsigned long *v)
        return 1;
 }
 
-static int initialise_darn(void)
+static int __init initialise_darn(void)
 {
        unsigned long val;
        int i;
index f37d6524a24d81e9562a9b18ee8d458f2c22a666..105d889abd51a4a45a37484afc6d574d361b2602 100644 (file)
@@ -40,7 +40,7 @@
 #include "powernv.h"
 
 
-static bool fw_feature_is(const char *state, const char *name,
+static bool __init fw_feature_is(const char *state, const char *name,
                          struct device_node *fw_features)
 {
        struct device_node *np;
@@ -55,7 +55,7 @@ static bool fw_feature_is(const char *state, const char *name,
        return rc;
 }
 
-static void init_fw_feat_flags(struct device_node *np)
+static void __init init_fw_feat_flags(struct device_node *np)
 {
        if (fw_feature_is("enabled", "inst-spec-barrier-ori31,31,0", np))
                security_ftr_set(SEC_FTR_SPEC_BAR_ORI31);
@@ -98,7 +98,7 @@ static void init_fw_feat_flags(struct device_node *np)
                security_ftr_clear(SEC_FTR_BNDS_CHK_SPEC_BAR);
 }
 
-static void pnv_setup_security_mitigations(void)
+static void __init pnv_setup_security_mitigations(void)
 {
        struct device_node *np, *fw_features;
        enum l1d_flush_type type;