Message ID | 1458643595-14719-2-git-send-email-aleksey.makarov@linaro.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Tue, Mar 22, 2016 at 5:46 AM, Aleksey Makarov <aleksey.makarov@linaro.org> wrote: > From: Leif Lindholm <leif.lindholm@linaro.org> > > We have multiple "earlycon" early_param handlers - merge the DT one into > the main earlycon one. It's a cleanup that also will be useful > to decide if ACPI SPCR earlycon should be set up. How so? Isn't that determined by whether we have ACPI tables or a DT? This goes against trying to limit places of FDT parsing and keeping the early scanning all within fdt.c. At least it is not in the arch code. That said, I'm okay with this change if it helps. Rob -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Leif,
[auto build test ERROR on next-20160322]
[also build test ERROR on v4.5]
[cannot apply to pm/linux-next v4.5-rc7 v4.5-rc6 v4.5-rc5]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Aleksey-Makarov/ACPI-parse-the-SPCR-table/20160322-185247
config: microblaze-mmu_defconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=microblaze
All errors (new ones prefixed by >>):
>> arch/microblaze/kernel/prom.c:48:19: error: conflicting types for 'early_init_dt_scan_chosen_serial'
static int __init early_init_dt_scan_chosen_serial(unsigned long node,
^
In file included from arch/microblaze/kernel/prom.c:33:0:
include/linux/of_fdt.h:66:12: note: previous declaration of 'early_init_dt_scan_chosen_serial' was here
extern int early_init_dt_scan_chosen_serial(void);
^
vim +/early_init_dt_scan_chosen_serial +48 arch/microblaze/kernel/prom.c
12e84142 Michal Simek 2009-03-27 42 #include <asm/sections.h>
12e84142 Michal Simek 2009-03-27 43 #include <asm/pci-bridge.h>
12e84142 Michal Simek 2009-03-27 44
12e84142 Michal Simek 2009-03-27 45 #ifdef CONFIG_EARLY_PRINTK
9d0c4dfe Rob Herring 2014-04-01 46 static const char *stdout;
2aa8e375 Michal Simek 2011-04-14 47
c0d997fb Michal Simek 2012-12-13 @48 static int __init early_init_dt_scan_chosen_serial(unsigned long node,
12e84142 Michal Simek 2009-03-27 49 const char *uname, int depth, void *data)
12e84142 Michal Simek 2009-03-27 50 {
9d0c4dfe Rob Herring 2014-04-01 51 int l;
:::::: The code at line 48 was first introduced by commit
:::::: c0d997fb4c4f202c55a4ed8ab9b714a81a16e5ac microblaze: Add static qualifiers
:::::: TO: Michal Simek <michal.simek@xilinx.com>
:::::: CC: Michal Simek <michal.simek@xilinx.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
On 03/22/2016 02:15 PM, Rob Herring wrote: > On Tue, Mar 22, 2016 at 5:46 AM, Aleksey Makarov > <aleksey.makarov@linaro.org> wrote: >> From: Leif Lindholm <leif.lindholm@linaro.org> >> >> We have multiple "earlycon" early_param handlers - merge the DT one into >> the main earlycon one. It's a cleanup that also will be useful >> to decide if ACPI SPCR earlycon should be set up. > > How so? Isn't that determined by whether we have ACPI tables or a DT? Oops, I missed this. This patch was not only to do parsing in one place, but also to allow addition of code that decide which of ACPI/DT should be used for earlycon initialization based on acpi_disabled. I will fix this, thank you. > This goes against trying to limit places of FDT parsing and keeping > the early scanning all within fdt.c. At least it is not in the arch > code. That said, I'm okay with this change if it helps. > > Rob > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 3349d2a..0547256 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -805,7 +805,7 @@ static inline void early_init_dt_check_for_initrd(unsigned long node) #ifdef CONFIG_SERIAL_EARLYCON -static int __init early_init_dt_scan_chosen_serial(void) +int __init early_init_dt_scan_chosen_serial(void) { int offset; const char *p, *q, *options = NULL; @@ -849,15 +849,6 @@ static int __init early_init_dt_scan_chosen_serial(void) } return -ENODEV; } - -static int __init setup_of_earlycon(char *buf) -{ - if (buf) - return 0; - - return early_init_dt_scan_chosen_serial(); -} -early_param("earlycon", setup_of_earlycon); #endif /** diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c index 067783f..d217366 100644 --- a/drivers/tty/serial/earlycon.c +++ b/drivers/tty/serial/earlycon.c @@ -17,6 +17,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/io.h> +#include <linux/of_fdt.h> #include <linux/serial_core.h> #include <linux/sizes.h> #include <linux/of.h> @@ -209,7 +210,7 @@ static int __init param_setup_earlycon(char *buf) * don't generate a warning from parse_early_params() in that case */ if (!buf || !buf[0]) - return 0; + return early_init_dt_scan_chosen_serial(); err = setup_earlycon(buf); if (err == -ENOENT || err == -EALREADY) diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h index 2fbe868..56b2a43 100644 --- a/include/linux/of_fdt.h +++ b/include/linux/of_fdt.h @@ -63,6 +63,7 @@ extern int early_init_dt_scan_chosen(unsigned long node, const char *uname, int depth, void *data); extern int early_init_dt_scan_memory(unsigned long node, const char *uname, int depth, void *data); +extern int early_init_dt_scan_chosen_serial(void); extern void early_init_fdt_scan_reserved_mem(void); extern void early_init_fdt_reserve_self(void); extern void early_init_dt_add_memory_arch(u64 base, u64 size); @@ -91,6 +92,7 @@ extern void early_get_first_memblock_info(void *, phys_addr_t *); extern u64 of_flat_dt_translate_address(unsigned long node); extern void of_fdt_limit_memory(int limit); #else /* CONFIG_OF_FLATTREE */ +static inline int early_init_dt_scan_chosen_serial(void) { return -ENODEV; } static inline void early_init_fdt_scan_reserved_mem(void) {} static inline void early_init_fdt_reserve_self(void) {} static inline const char *of_flat_dt_get_machine_name(void) { return NULL; }