]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branches 'amba', 'devel-stable', 'kexec-for-next' and 'misc' into for-linus
authorRussell King <rmk+kernel@armlinux.org.uk>
Thu, 19 May 2016 09:31:35 +0000 (10:31 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Thu, 19 May 2016 09:31:35 +0000 (10:31 +0100)
18 files changed:
Documentation/devicetree/bindings/arm/l2c2x0.txt
Documentation/kdump/kdump.txt
Documentation/kernel-parameters.txt
arch/arm/boot/Makefile
arch/arm/include/asm/dma-mapping.h
arch/arm/include/asm/memory.h
arch/arm/kernel/bios32.c
arch/arm/kernel/reboot.c
arch/arm/kernel/setup.c
arch/arm/mach-keystone/keystone.c
arch/arm/mm/cache-l2x0.c
arch/arm/mm/cache-uniphier.c
arch/arm/mm/dma-mapping.c
arch/arm/mm/idmap.c
arch/arm/tools/Makefile
drivers/amba/bus.c
scripts/kallsyms.c
scripts/link-vmlinux.sh

index fe0398c5c77b3ba94c2dc9f4030a0b0eaa7f227d..c453ab5553cd81e323d72a0cd3e6f77749384b11 100644 (file)
@@ -84,6 +84,12 @@ Optional properties:
 - prefetch-instr : Instruction prefetch. Value: <0> (forcibly disable),
   <1> (forcibly enable), property absent (retain settings set by
   firmware)
+- arm,dynamic-clock-gating : L2 dynamic clock gating. Value: <0> (forcibly
+  disable), <1> (forcibly enable), property absent (OS specific behavior,
+  preferrably retain firmware settings)
+- arm,standby-mode: L2 standby mode enable. Value <0> (forcibly disable),
+  <1> (forcibly enable), property absent (OS specific behavior,
+  preferrably retain firmware settings)
 
 Example:
 
index bc4bd5a44b88b9abedec6b4d859f1163c3c2a6ac..88ff63d5fde3c63663a6b0f0e5e9a845c550060a 100644 (file)
@@ -263,12 +263,6 @@ The syntax is:
     crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]
     range=start-[end]
 
-Please note, on arm, the offset is required.
-    crashkernel=<range1>:<size1>[,<range2>:<size2>,...]@offset
-    range=start-[end]
-
-    'start' is inclusive and 'end' is exclusive.
-
 For example:
 
     crashkernel=512M-2G:64M,2G-:128M
@@ -307,10 +301,9 @@ Boot into System Kernel
    on the memory consumption of the kdump system. In general this is not
    dependent on the memory size of the production system.
 
-   On arm, use "crashkernel=Y@X". Note that the start address of the kernel
-   will be aligned to 128MiB (0x08000000), so if the start address is not then
-   any space below the alignment point may be overwritten by the dump-capture kernel,
-   which means it is possible that the vmcore is not that precise as expected.
+   On arm, the use of "crashkernel=Y@X" is no longer necessary; the
+   kernel will automatically locate the crash kernel image within the
+   first 512MB of RAM if X is not given.
 
 
 Load the Dump-capture Kernel
index ecc74fa4bfde8a55d9fee00d96ae5ae4123560e9..a036762157f0c1c0d824003119987b57925799c6 100644 (file)
@@ -2921,11 +2921,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                                for broken drivers that don't call it.
                skip_isa_align  [X86] do not align io start addr, so can
                                handle more pci cards
-               firmware        [ARM] Do not re-enumerate the bus but instead
-                               just use the configuration from the
-                               bootloader. This is currently used on
-                               IXP2000 systems where the bus has to be
-                               configured a certain way for adjunct CPUs.
                noearly         [X86] Don't do any early type 1 scanning.
                                This might help on some broken boards which
                                machine check when some devices' config space
index 48fab15cfc0218e1a8e7a0bab389dc766d8ce3e7..446705a4325aafb9126484100090a69c71b0aff1 100644 (file)
@@ -88,7 +88,7 @@ $(obj)/bootpImage: $(obj)/bootp/bootp FORCE
        $(call if_changed,objcopy)
        @$(kecho) '  Kernel: $@ is ready'
 
-PHONY += initrd
+PHONY += initrd install zinstall uinstall
 initrd:
        @test "$(INITRD_PHYS)" != "" || \
        (echo This machine does not support INITRD; exit -1)
index 6ad1ceda62a52cebe1063828ef8c131ebc9489c6..0f2034d288857382429f0ec075ec995c1dfff960 100644 (file)
@@ -162,8 +162,6 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
 
 static inline void dma_mark_clean(void *addr, size_t size) { }
 
-extern int arm_dma_set_mask(struct device *dev, u64 dma_mask);
-
 /**
  * arm_dma_alloc - allocate consistent memory for DMA
  * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
index 9427fd6325527e95ff9e5ad0a3f2bd973481e22a..31c07a2cc10049a3e7339913542d9398ebe135ff 100644 (file)
@@ -288,19 +288,43 @@ static inline void *phys_to_virt(phys_addr_t x)
 #define __va(x)                        ((void *)__phys_to_virt((phys_addr_t)(x)))
 #define pfn_to_kaddr(pfn)      __va((phys_addr_t)(pfn) << PAGE_SHIFT)
 
-extern unsigned long (*arch_virt_to_idmap)(unsigned long x);
+extern long long arch_phys_to_idmap_offset;
 
 /*
- * These are for systems that have a hardware interconnect supported alias of
- * physical memory for idmap purposes.  Most cases should leave these
+ * These are for systems that have a hardware interconnect supported alias
+ * of physical memory for idmap purposes.  Most cases should leave these
  * untouched.  Note: this can only return addresses less than 4GiB.
  */
+static inline bool arm_has_idmap_alias(void)
+{
+       return IS_ENABLED(CONFIG_MMU) && arch_phys_to_idmap_offset != 0;
+}
+
+#define IDMAP_INVALID_ADDR ((u32)~0)
+
+static inline unsigned long phys_to_idmap(phys_addr_t addr)
+{
+       if (IS_ENABLED(CONFIG_MMU) && arch_phys_to_idmap_offset) {
+               addr += arch_phys_to_idmap_offset;
+               if (addr > (u32)~0)
+                       addr = IDMAP_INVALID_ADDR;
+       }
+       return addr;
+}
+
+static inline phys_addr_t idmap_to_phys(unsigned long idmap)
+{
+       phys_addr_t addr = idmap;
+
+       if (IS_ENABLED(CONFIG_MMU) && arch_phys_to_idmap_offset)
+               addr -= arch_phys_to_idmap_offset;
+
+       return addr;
+}
+
 static inline unsigned long __virt_to_idmap(unsigned long x)
 {
-       if (IS_ENABLED(CONFIG_MMU) && arch_virt_to_idmap)
-               return arch_virt_to_idmap(x);
-       else
-               return __virt_to_phys(x);
+       return phys_to_idmap(__virt_to_phys(x));
 }
 
 #define virt_to_idmap(x)       __virt_to_idmap((unsigned long)(x))
index 066f7f9ba411e09b5e492a84f03034b86305e38f..05e61a2eeabe9e24aaa5011d2f05dd769019a485 100644 (file)
@@ -550,9 +550,6 @@ char * __init pcibios_setup(char *str)
        if (!strcmp(str, "debug")) {
                debug_pci = 1;
                return NULL;
-       } else if (!strcmp(str, "firmware")) {
-               pci_add_flags(PCI_PROBE_ONLY);
-               return NULL;
        }
        return str;
 }
index 71a2ff9ec4900c58677f12114c85c82e8cfaa575..3fa867a2aae672755c6ce6448f4148c989dbf964 100644 (file)
@@ -104,8 +104,6 @@ void machine_halt(void)
 {
        local_irq_disable();
        smp_send_stop();
-
-       local_irq_disable();
        while (1);
 }
 
@@ -150,6 +148,5 @@ void machine_restart(char *cmd)
 
        /* Whoops - the platform was unable to reboot. Tell the user! */
        printk("Reboot failed -- System halted\n");
-       local_irq_disable();
        while (1);
 }
index a28fce0bdbbe11b7a950a3a0943f8362d7124b87..9cd27dff5d10ae22f862faa23e87aa6ea8b131bf 100644 (file)
@@ -940,6 +940,12 @@ static int __init init_machine_late(void)
 late_initcall(init_machine_late);
 
 #ifdef CONFIG_KEXEC
+/*
+ * The crash region must be aligned to 128MB to avoid
+ * zImage relocating below the reserved region.
+ */
+#define CRASH_ALIGN    (128 << 20)
+
 static inline unsigned long long get_total_mem(void)
 {
        unsigned long total;
@@ -967,6 +973,26 @@ static void __init reserve_crashkernel(void)
        if (ret)
                return;
 
+       if (crash_base <= 0) {
+               unsigned long long crash_max = idmap_to_phys((u32)~0);
+               crash_base = memblock_find_in_range(CRASH_ALIGN, crash_max,
+                                                   crash_size, CRASH_ALIGN);
+               if (!crash_base) {
+                       pr_err("crashkernel reservation failed - No suitable area found.\n");
+                       return;
+               }
+       } else {
+               unsigned long long start;
+
+               start = memblock_find_in_range(crash_base,
+                                              crash_base + crash_size,
+                                              crash_size, SECTION_SIZE);
+               if (start != crash_base) {
+                       pr_err("crashkernel reservation failed - memory is in use.\n");
+                       return;
+               }
+       }
+
        ret = memblock_reserve(crash_base, crash_size);
        if (ret < 0) {
                pr_warn("crashkernel reservation failed - memory is in use (0x%lx)\n",
index e6b9cb1e6709753b6e25166d8b9cac395d9a2c42..a33a296b00dce8f1f65331fa6dad71745f116d9c 100644 (file)
@@ -63,11 +63,6 @@ static void __init keystone_init(void)
        of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
 }
 
-static unsigned long keystone_virt_to_idmap(unsigned long x)
-{
-       return (phys_addr_t)(x) - CONFIG_PAGE_OFFSET + KEYSTONE_LOW_PHYS_START;
-}
-
 static long long __init keystone_pv_fixup(void)
 {
        long long offset;
@@ -91,7 +86,7 @@ static long long __init keystone_pv_fixup(void)
        offset = KEYSTONE_HIGH_PHYS_START - KEYSTONE_LOW_PHYS_START;
 
        /* Populate the arch idmap hook */
-       arch_virt_to_idmap = keystone_virt_to_idmap;
+       arch_phys_to_idmap_offset = -offset;
 
        return offset;
 }
index 9f9d54271aada77708a954622269eec73000dc92..c61996c256cc4fa8c84609f5d4c5944b0ce337ce 100644 (file)
@@ -647,11 +647,6 @@ static void __init l2c310_enable(void __iomem *base, unsigned num_lock)
                aux &= ~(L310_AUX_CTRL_FULL_LINE_ZERO | L310_AUX_CTRL_EARLY_BRESP);
        }
 
-       /* r3p0 or later has power control register */
-       if (rev >= L310_CACHE_ID_RTL_R3P0)
-               l2x0_saved_regs.pwr_ctrl = L310_DYNAMIC_CLK_GATING_EN |
-                                               L310_STNDBY_MODE_EN;
-
        /*
         * Always enable non-secure access to the lockdown registers -
         * we write to them as part of the L2C enable sequence so they
@@ -1141,6 +1136,7 @@ static void __init l2c310_of_parse(const struct device_node *np,
        u32 filter[2] = { 0, 0 };
        u32 assoc;
        u32 prefetch;
+       u32 power;
        u32 val;
        int ret;
 
@@ -1271,6 +1267,26 @@ static void __init l2c310_of_parse(const struct device_node *np,
        }
 
        l2x0_saved_regs.prefetch_ctrl = prefetch;
+
+       power = l2x0_saved_regs.pwr_ctrl |
+               L310_DYNAMIC_CLK_GATING_EN | L310_STNDBY_MODE_EN;
+
+       ret = of_property_read_u32(np, "arm,dynamic-clock-gating", &val);
+       if (!ret) {
+               if (!val)
+                       power &= ~L310_DYNAMIC_CLK_GATING_EN;
+       } else if (ret != -EINVAL) {
+               pr_err("L2C-310 OF dynamic-clock-gating property value is missing or invalid\n");
+       }
+       ret = of_property_read_u32(np, "arm,standby-mode", &val);
+       if (!ret) {
+               if (!val)
+                       power &= ~L310_STNDBY_MODE_EN;
+       } else if (ret != -EINVAL) {
+               pr_err("L2C-310 OF standby-mode property value is missing or invalid\n");
+       }
+
+       l2x0_saved_regs.pwr_ctrl = power;
 }
 
 static const struct l2c_init_data of_l2c310_data __initconst = {
index a6fa7b73fbe04a30c2902e8a54fb4019352fb6fc..c8e2f49472237b5fb93d0475f7668bba7b1f6293 100644 (file)
@@ -96,6 +96,7 @@ struct uniphier_cache_data {
        void __iomem *ctrl_base;
        void __iomem *rev_base;
        void __iomem *op_base;
+       void __iomem *way_ctrl_base;
        u32 way_present_mask;
        u32 way_locked_mask;
        u32 nsets;
@@ -256,10 +257,13 @@ static void __init __uniphier_cache_set_locked_ways(
                                        struct uniphier_cache_data *data,
                                        u32 way_mask)
 {
+       unsigned int cpu;
+
        data->way_locked_mask = way_mask & data->way_present_mask;
 
-       writel_relaxed(~data->way_locked_mask & data->way_present_mask,
-                      data->ctrl_base + UNIPHIER_SSCLPDAWCR);
+       for_each_possible_cpu(cpu)
+               writel_relaxed(~data->way_locked_mask & data->way_present_mask,
+                              data->way_ctrl_base + 4 * cpu);
 }
 
 static void uniphier_cache_maint_range(unsigned long start, unsigned long end,
@@ -459,6 +463,8 @@ static int __init __uniphier_cache_init(struct device_node *np,
                goto err;
        }
 
+       data->way_ctrl_base = data->ctrl_base + 0xc00;
+
        if (*cache_level == 2) {
                u32 revision = readl(data->rev_base + UNIPHIER_SSCID);
                /*
@@ -467,6 +473,22 @@ static int __init __uniphier_cache_init(struct device_node *np,
                 */
                if (revision <= 0x16)
                        data->range_op_max_size = (u32)1 << 22;
+
+               /*
+                * Unfortunatly, the offset address of active way control base
+                * varies from SoC to SoC.
+                */
+               switch (revision) {
+               case 0x11:      /* sLD3 */
+                       data->way_ctrl_base = data->ctrl_base + 0x870;
+                       break;
+               case 0x12:      /* LD4 */
+               case 0x16:      /* sld8 */
+                       data->way_ctrl_base = data->ctrl_base + 0x840;
+                       break;
+               default:
+                       break;
+               }
        }
 
        data->range_op_max_size -= data->line_size;
index deac58d5f1f7cf053ca215ec718c6902961a7908..bad0c6a4bb7ba33f7966ac66048452bf619ac0d2 100644 (file)
@@ -190,7 +190,6 @@ struct dma_map_ops arm_dma_ops = {
        .sync_single_for_device = arm_dma_sync_single_for_device,
        .sync_sg_for_cpu        = arm_dma_sync_sg_for_cpu,
        .sync_sg_for_device     = arm_dma_sync_sg_for_device,
-       .set_dma_mask           = arm_dma_set_mask,
 };
 EXPORT_SYMBOL(arm_dma_ops);
 
@@ -209,7 +208,6 @@ struct dma_map_ops arm_coherent_dma_ops = {
        .get_sgtable            = arm_dma_get_sgtable,
        .map_page               = arm_coherent_dma_map_page,
        .map_sg                 = arm_dma_map_sg,
-       .set_dma_mask           = arm_dma_set_mask,
 };
 EXPORT_SYMBOL(arm_coherent_dma_ops);
 
@@ -1142,16 +1140,6 @@ int dma_supported(struct device *dev, u64 mask)
 }
 EXPORT_SYMBOL(dma_supported);
 
-int arm_dma_set_mask(struct device *dev, u64 dma_mask)
-{
-       if (!dev->dma_mask || !dma_supported(dev, dma_mask))
-               return -EIO;
-
-       *dev->dma_mask = dma_mask;
-
-       return 0;
-}
-
 #define PREALLOC_DMA_DEBUG_ENTRIES     4096
 
 static int __init dma_debug_do_init(void)
@@ -2005,8 +1993,6 @@ struct dma_map_ops iommu_ops = {
        .unmap_sg               = arm_iommu_unmap_sg,
        .sync_sg_for_cpu        = arm_iommu_sync_sg_for_cpu,
        .sync_sg_for_device     = arm_iommu_sync_sg_for_device,
-
-       .set_dma_mask           = arm_dma_set_mask,
 };
 
 struct dma_map_ops iommu_coherent_ops = {
@@ -2020,8 +2006,6 @@ struct dma_map_ops iommu_coherent_ops = {
 
        .map_sg         = arm_coherent_iommu_map_sg,
        .unmap_sg       = arm_coherent_iommu_unmap_sg,
-
-       .set_dma_mask   = arm_dma_set_mask,
 };
 
 /**
index bd274a05b8ffa9446160d1de69f777d9431c629b..c1a48f88764ea8da4ec3b0abd9dcd197678841ea 100644 (file)
@@ -15,7 +15,7 @@
  * page tables.
  */
 pgd_t *idmap_pgd;
-unsigned long (*arch_virt_to_idmap)(unsigned long x);
+long long arch_phys_to_idmap_offset;
 
 #ifdef CONFIG_ARM_LPAE
 static void idmap_add_pmd(pud_t *pud, unsigned long addr, unsigned long end,
index 32d05c8219dc35acf9db46a49e521ca312fc336e..6e4cd1867a9f5e915e31bc10395655931fcf18b6 100644 (file)
@@ -4,7 +4,10 @@
 # Copyright (C) 2001 Russell King
 #
 
-include/generated/mach-types.h: $(src)/gen-mach-types $(src)/mach-types
-       @$(kecho) '  Generating $@'
-       @mkdir -p $(dir $@)
-       $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
+quiet_cmd_gen_mach = GEN     $@
+      cmd_gen_mach = mkdir -p $(dir $@) && \
+                    $(AWK) -f $(filter-out $(PHONY),$^) > $@ || \
+                    { rm -f $@; /bin/false; }
+
+include/generated/mach-types.h: $(src)/gen-mach-types $(src)/mach-types FORCE
+       $(call if_changed,gen_mach)
index f0099360039e247c91ea39e95e6f092f7505d42c..a5b5c87e21149f4df50d6dc21e6de016bbae29af 100644 (file)
@@ -336,16 +336,7 @@ static void amba_device_release(struct device *dev)
        kfree(d);
 }
 
-/**
- *     amba_device_add - add a previously allocated AMBA device structure
- *     @dev: AMBA device allocated by amba_device_alloc
- *     @parent: resource parent for this devices resources
- *
- *     Claim the resource, and read the device cell ID if not already
- *     initialized.  Register the AMBA device with the Linux device
- *     manager.
- */
-int amba_device_add(struct amba_device *dev, struct resource *parent)
+static int amba_device_try_add(struct amba_device *dev, struct resource *parent)
 {
        u32 size;
        void __iomem *tmp;
@@ -373,6 +364,12 @@ int amba_device_add(struct amba_device *dev, struct resource *parent)
                goto err_release;
        }
 
+       ret = dev_pm_domain_attach(&dev->dev, true);
+       if (ret == -EPROBE_DEFER) {
+               iounmap(tmp);
+               goto err_release;
+       }
+
        ret = amba_get_enable_pclk(dev);
        if (ret == 0) {
                u32 pid, cid;
@@ -398,6 +395,7 @@ int amba_device_add(struct amba_device *dev, struct resource *parent)
        }
 
        iounmap(tmp);
+       dev_pm_domain_detach(&dev->dev, true);
 
        if (ret)
                goto err_release;
@@ -421,6 +419,88 @@ int amba_device_add(struct amba_device *dev, struct resource *parent)
  err_out:
        return ret;
 }
+
+/*
+ * Registration of AMBA device require reading its pid and cid registers.
+ * To do this, the device must be turned on (if it is a part of power domain)
+ * and have clocks enabled. However in some cases those resources might not be
+ * yet available. Returning EPROBE_DEFER is not a solution in such case,
+ * because callers don't handle this special error code. Instead such devices
+ * are added to the special list and their registration is retried from
+ * periodic worker, until all resources are available and registration succeeds.
+ */
+struct deferred_device {
+       struct amba_device *dev;
+       struct resource *parent;
+       struct list_head node;
+};
+
+static LIST_HEAD(deferred_devices);
+static DEFINE_MUTEX(deferred_devices_lock);
+
+static void amba_deferred_retry_func(struct work_struct *dummy);
+static DECLARE_DELAYED_WORK(deferred_retry_work, amba_deferred_retry_func);
+
+#define DEFERRED_DEVICE_TIMEOUT (msecs_to_jiffies(5 * 1000))
+
+static void amba_deferred_retry_func(struct work_struct *dummy)
+{
+       struct deferred_device *ddev, *tmp;
+
+       mutex_lock(&deferred_devices_lock);
+
+       list_for_each_entry_safe(ddev, tmp, &deferred_devices, node) {
+               int ret = amba_device_try_add(ddev->dev, ddev->parent);
+
+               if (ret == -EPROBE_DEFER)
+                       continue;
+
+               list_del_init(&ddev->node);
+               kfree(ddev);
+       }
+
+       if (!list_empty(&deferred_devices))
+               schedule_delayed_work(&deferred_retry_work,
+                                     DEFERRED_DEVICE_TIMEOUT);
+
+       mutex_unlock(&deferred_devices_lock);
+}
+
+/**
+ *     amba_device_add - add a previously allocated AMBA device structure
+ *     @dev: AMBA device allocated by amba_device_alloc
+ *     @parent: resource parent for this devices resources
+ *
+ *     Claim the resource, and read the device cell ID if not already
+ *     initialized.  Register the AMBA device with the Linux device
+ *     manager.
+ */
+int amba_device_add(struct amba_device *dev, struct resource *parent)
+{
+       int ret = amba_device_try_add(dev, parent);
+
+       if (ret == -EPROBE_DEFER) {
+               struct deferred_device *ddev;
+
+               ddev = kmalloc(sizeof(*ddev), GFP_KERNEL);
+               if (!ddev)
+                       return -ENOMEM;
+
+               ddev->dev = dev;
+               ddev->parent = parent;
+               ret = 0;
+
+               mutex_lock(&deferred_devices_lock);
+
+               if (list_empty(&deferred_devices))
+                       schedule_delayed_work(&deferred_retry_work,
+                                             DEFERRED_DEVICE_TIMEOUT);
+               list_add_tail(&ddev->node, &deferred_devices);
+
+               mutex_unlock(&deferred_devices_lock);
+       }
+       return ret;
+}
 EXPORT_SYMBOL_GPL(amba_device_add);
 
 static struct amba_device *
index 638b143ee60f4246cc16d67936bc62095a66c646..1f22a186c18cb56a2c19a4b38bf90f41f1b171d8 100644 (file)
@@ -63,7 +63,6 @@ static unsigned int table_size, table_cnt;
 static int all_symbols = 0;
 static int absolute_percpu = 0;
 static char symbol_prefix_char = '\0';
-static unsigned long long kernel_start_addr = 0;
 static int base_relative = 0;
 
 int token_profit[0x10000];
@@ -223,15 +222,13 @@ static int symbol_valid(struct sym_entry *s)
 
        static char *special_suffixes[] = {
                "_veneer",              /* arm */
+               "_from_arm",            /* arm */
+               "_from_thumb",          /* arm */
                NULL };
 
        int i;
        char *sym_name = (char *)s->sym + 1;
 
-
-       if (s->addr < kernel_start_addr)
-               return 0;
-
        /* skip prefix char */
        if (symbol_prefix_char && *sym_name == symbol_prefix_char)
                sym_name++;
@@ -765,9 +762,6 @@ int main(int argc, char **argv)
                                if ((*p == '"' && *(p+2) == '"') || (*p == '\'' && *(p+2) == '\''))
                                        p++;
                                symbol_prefix_char = *p;
-                       } else if (strncmp(argv[i], "--page-offset=", 14) == 0) {
-                               const char *p = &argv[i][14];
-                               kernel_start_addr = strtoull(p, NULL, 16);
                        } else if (strcmp(argv[i], "--base-relative") == 0)
                                base_relative = 1;
                        else
index 49d61ade942563eb47f7612b8b7d427c9595e940..f0f6d9d75435f4a8311ab9c2efc894b1c9670b43 100755 (executable)
@@ -82,10 +82,6 @@ kallsyms()
                kallsymopt="${kallsymopt} --all-symbols"
        fi
 
-       if [ -n "${CONFIG_ARM}" ] && [ -z "${CONFIG_XIP_KERNEL}" ] && [ -n "${CONFIG_PAGE_OFFSET}" ]; then
-               kallsymopt="${kallsymopt} --page-offset=$CONFIG_PAGE_OFFSET"
-       fi
-
        if [ -n "${CONFIG_KALLSYMS_ABSOLUTE_PERCPU}" ]; then
                kallsymopt="${kallsymopt} --absolute-percpu"
        fi