sparc64: Fix section mis-match errors.
authorDavid S. Miller <davem@davemloft.net>
Thu, 31 Mar 2011 00:37:56 +0000 (17:37 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 31 Mar 2011 00:37:56 +0000 (17:37 -0700)
Fix all of the problems spotted by CONFIG_DEBUG_SECTION_MISMATCH under
arch/sparc during a 64-bit defconfig build.

They fall into two categorites:

1) of_device_id is marked as __initdata, and we can never do this
   since these objects sit in the device core data structures way
   past boot.  So even if a driver will never be reloaded, we have
   to keep the device ID table around.

   Mark such cases const instead.

2) The bootmem alloc/free handling code in mdesc.c was not fully
   marked __init as it should be, thus generating a reference
   to free_bootmem_late() (which is __init) from non-__init code.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/kernel/auxio_64.c
arch/sparc/kernel/central.c
arch/sparc/kernel/ds.c
arch/sparc/kernel/mdesc.c
arch/sparc/kernel/pci_fire.c
arch/sparc/kernel/pci_psycho.c
arch/sparc/kernel/pci_sabre.c
arch/sparc/kernel/pci_schizo.c
arch/sparc/kernel/pci_sun4v.c
arch/sparc/kernel/power.c
arch/sparc/kernel/time_64.c

index 2abace076c7d84e21dd971ff817d6842bffd5edd..773091ac71a31e0ddf9e9e1df63f98d40c6bb222 100644 (file)
@@ -93,7 +93,7 @@ void auxio_set_lte(int on)
 }
 EXPORT_SYMBOL(auxio_set_lte);
 
-static struct of_device_id __initdata auxio_match[] = {
+static const struct of_device_id auxio_match[] = {
        {
                .name = "auxio",
        },
index 136d3718a74a365d27156c70b4a9c7f7614646f2..7eef3f7419637f84a544ae04ce420a9e5c1e2e88 100644 (file)
@@ -140,7 +140,7 @@ out_free:
        goto out;
 }
 
-static struct of_device_id __initdata clock_board_match[] = {
+static const struct of_device_id clock_board_match[] = {
        {
                .name = "clock-board",
        },
@@ -245,7 +245,7 @@ out_free:
        goto out;
 }
 
-static struct of_device_id __initdata fhc_match[] = {
+static const struct of_device_id fhc_match[] = {
        {
                .name = "fhc",
        },
index 4a700f4b79cebf068cba0c82ea22dcf6602ba74b..3add4de8a1a9804c89f1b4ab5ba3f73a1c167c74 100644 (file)
@@ -1218,7 +1218,7 @@ static int ds_remove(struct vio_dev *vdev)
        return 0;
 }
 
-static struct vio_device_id __initdata ds_match[] = {
+static const struct vio_device_id ds_match[] = {
        {
                .type = "domain-services-port",
        },
index 6addb914fcc8edca6aae25d0b9210165b9422dde..56db06432ce9fba3065e95ce26c9bc213a2f77d0 100644 (file)
@@ -107,7 +107,7 @@ static struct mdesc_handle * __init mdesc_memblock_alloc(unsigned int mdesc_size
        return hp;
 }
 
-static void mdesc_memblock_free(struct mdesc_handle *hp)
+static void __init mdesc_memblock_free(struct mdesc_handle *hp)
 {
        unsigned int alloc_size;
        unsigned long start;
index 3d70f8326efd11b15534226dd645b1761c707537..d29a32fcc5e44c4a48f94e0be43dd42701a2c4b7 100644 (file)
@@ -496,7 +496,7 @@ out_err:
        return err;
 }
 
-static struct of_device_id __initdata fire_match[] = {
+static const struct of_device_id fire_match[] = {
        {
                .name = "pci",
                .compatible = "pciex108e,80f0",
index 56ee745064de6c036469164ad9a04291dab2b3f3..86ae08d9b6ee4e6db66abaa30065072a1dc7338f 100644 (file)
@@ -592,7 +592,7 @@ out_err:
        return err;
 }
 
-static struct of_device_id __initdata psycho_match[] = {
+static const struct of_device_id psycho_match[] = {
        {
                .name = "pci",
                .compatible = "pci108e,8000",
index 2857073342d2079dcaa9a90a3ced77dbdf12d1fe..948068a083fca3eab756401d6fb30e00e295e352 100644 (file)
@@ -581,7 +581,7 @@ out_err:
        return err;
 }
 
-static struct of_device_id __initdata sabre_match[] = {
+static const struct of_device_id sabre_match[] = {
        {
                .name = "pci",
                .compatible = "pci108e,a001",
index 1d41af73a92f6a9fe6248112dc11ee0c72910d7e..fecfcb2063c805a11760e515d549b40d4c322b3a 100644 (file)
@@ -1470,7 +1470,7 @@ static int __devinit schizo_probe(struct platform_device *op)
  * and pci108e,8001.  So list the chips in reverse chronological
  * order.
  */
-static struct of_device_id __initdata schizo_match[] = {
+static const struct of_device_id schizo_match[] = {
        {
                .name = "pci",
                .compatible = "pci108e,a801",
index 6cf5346817888aea3f8b78eae86abda9ee9408a0..b01a06e9ae4efc71a54384a2f3500643cd6ea65f 100644 (file)
@@ -998,7 +998,7 @@ out_err:
        return err;
 }
 
-static struct of_device_id __initdata pci_sun4v_match[] = {
+static const struct of_device_id pci_sun4v_match[] = {
        {
                .name = "pci",
                .compatible = "SUNW,sun4v-pci",
index cd725fe238b2d1b5378df7432f4115a992f4e392..cb4c0f57c024d46aef2e6078bfdd7030f9ba1f4b 100644 (file)
@@ -52,7 +52,7 @@ static int __devinit power_probe(struct platform_device *op)
        return 0;
 }
 
-static struct of_device_id __initdata power_match[] = {
+static const struct of_device_id power_match[] = {
        {
                .name = "power",
        },
index 95ec25faba39df61360a2abb46498c03a4a77b24..2b8d54b2d850b18a3eb8b4756bbcda3eb3a8dbc3 100644 (file)
@@ -442,7 +442,7 @@ static int __devinit rtc_probe(struct platform_device *op)
        return platform_device_register(&rtc_cmos_device);
 }
 
-static struct of_device_id __initdata rtc_match[] = {
+static const struct of_device_id rtc_match[] = {
        {
                .name = "rtc",
                .compatible = "m5819",
@@ -487,7 +487,7 @@ static int __devinit bq4802_probe(struct platform_device *op)
        return platform_device_register(&rtc_bq4802_device);
 }
 
-static struct of_device_id __initdata bq4802_match[] = {
+static const struct of_device_id bq4802_match[] = {
        {
                .name = "rtc",
                .compatible = "bq4802",
@@ -552,7 +552,7 @@ static int __devinit mostek_probe(struct platform_device *op)
        return platform_device_register(&m48t59_rtc);
 }
 
-static struct of_device_id __initdata mostek_match[] = {
+static const struct of_device_id mostek_match[] = {
        {
                .name = "eeprom",
        },