From: kernel test robot <lkp@intel.com>
To: Richard Kuo <rkuo@quicinc.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
Brian Cain <bcain@kernel.org>
Subject: [bcain:bcain/qemu_boot 26/87] arch/hexagon/kernel/devtree.c:130:12: error: call to undeclared function 'of_get_flat_dt_root'; ISO C99 and later do not support implicit function declarations
Date: Mon, 24 Aug 2026 21:48:39 +0800 [thread overview]
Message-ID: <202608242142.XFuz1Lzp-lkp@intel.com> (raw)
Hi Richard,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/bcain/linux.git bcain/qemu_boot
head: 844bcfb5bee7bf0e713f61307dc2a4e16963c2f9
commit: c01c2aee2f3a158faf365c893a4578a5a0dee73f [26/87] hexagon: add memory management enhancements
config: hexagon-randconfig-002-20260824 (https://download.01.org/0day-ci/archive/20260824/202608242142.XFuz1Lzp-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 935bfc708590c60147a79c7df145bb6e68b1d388)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260824/202608242142.XFuz1Lzp-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608242142.XFuz1Lzp-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/hexagon/kernel/devtree.c:17:13: warning: no previous prototype for function 'early_init_dt_add_memory_arch' [-Wmissing-prototypes]
17 | void __init early_init_dt_add_memory_arch(u64 base, u64 size)
| ^
arch/hexagon/kernel/devtree.c:17:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
17 | void __init early_init_dt_add_memory_arch(u64 base, u64 size)
| ^
| static
arch/hexagon/kernel/devtree.c:50:6: error: call to undeclared function 'of_get_flat_dt_prop'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
50 | p = of_get_flat_dt_prop(node, "bootargs", &l);
| ^
arch/hexagon/kernel/devtree.c:50:4: error: incompatible integer to pointer conversion assigning to 'char *' from 'int' [-Wint-conversion]
50 | p = of_get_flat_dt_prop(node, "bootargs", &l);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> arch/hexagon/kernel/devtree.c:130:12: error: call to undeclared function 'of_get_flat_dt_root'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
130 | dt_root = of_get_flat_dt_root();
| ^
>> arch/hexagon/kernel/devtree.c:132:15: error: call to undeclared function 'of_flat_dt_match_machine'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
132 | mdesc_best = of_flat_dt_match_machine(NULL, arch_get_next_mach);
| ^
>> arch/hexagon/kernel/devtree.c:132:13: error: incompatible integer to pointer conversion assigning to 'const struct machine_desc *' from 'int' [-Wint-conversion]
132 | mdesc_best = of_flat_dt_match_machine(NULL, arch_get_next_mach);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> arch/hexagon/kernel/devtree.c:142:9: error: call to undeclared function 'early_init_dt_scan_root'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
142 | early_init_dt_scan_root();
| ^
>> arch/hexagon/kernel/devtree.c:147:2: error: call to undeclared function 'early_init_dt_scan_chosen'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
147 | early_init_dt_scan_chosen(boot_command_line);
| ^
arch/hexagon/kernel/devtree.c:107:16: warning: variable 'dt_root' set but not used [-Wunused-but-set-variable]
107 | unsigned long dt_root;
| ^
2 warnings and 7 errors generated.
vim +/of_get_flat_dt_root +130 arch/hexagon/kernel/devtree.c
288801685d7137 Richard Kuo 2025-08-18 33
288801685d7137 Richard Kuo 2025-08-18 34 // basically a copy of dt_scan_chosen, but doesn't do the initrd scan.
288801685d7137 Richard Kuo 2025-08-18 35 static int __init early_init_dt_scan_chosen_noinitrd(unsigned long node, const char *uname,
288801685d7137 Richard Kuo 2025-08-18 36 int depth, void *data)
288801685d7137 Richard Kuo 2025-08-18 37 {
288801685d7137 Richard Kuo 2025-08-18 38 unsigned long l;
288801685d7137 Richard Kuo 2025-08-18 39 char *p;
288801685d7137 Richard Kuo 2025-08-18 40
288801685d7137 Richard Kuo 2025-08-18 41 pr_debug("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
288801685d7137 Richard Kuo 2025-08-18 42
288801685d7137 Richard Kuo 2025-08-18 43 if (depth != 1 || !data ||
288801685d7137 Richard Kuo 2025-08-18 44 (strcmp(uname, "chosen") != 0 && strcmp(uname, "chosen@0") != 0))
288801685d7137 Richard Kuo 2025-08-18 45 return 0;
288801685d7137 Richard Kuo 2025-08-18 46
288801685d7137 Richard Kuo 2025-08-18 47 //early_init_dt_check_for_initrd(node);
288801685d7137 Richard Kuo 2025-08-18 48
288801685d7137 Richard Kuo 2025-08-18 49 /* Retrieve command line */
288801685d7137 Richard Kuo 2025-08-18 @50 p = of_get_flat_dt_prop(node, "bootargs", &l);
288801685d7137 Richard Kuo 2025-08-18 51 if (p != NULL && l > 0)
288801685d7137 Richard Kuo 2025-08-18 52 strscpy(data, p, min((int)l, COMMAND_LINE_SIZE));
288801685d7137 Richard Kuo 2025-08-18 53
288801685d7137 Richard Kuo 2025-08-18 54 /*
288801685d7137 Richard Kuo 2025-08-18 55 * CONFIG_CMDLINE is meant to be a default in case nothing else
288801685d7137 Richard Kuo 2025-08-18 56 * managed to set the command line, unless CONFIG_CMDLINE_FORCE
288801685d7137 Richard Kuo 2025-08-18 57 * is set in which case we override whatever was found earlier.
288801685d7137 Richard Kuo 2025-08-18 58 */
288801685d7137 Richard Kuo 2025-08-18 59 #ifdef CONFIG_CMDLINE
288801685d7137 Richard Kuo 2025-08-18 60 #ifndef CONFIG_CMDLINE_FORCE
288801685d7137 Richard Kuo 2025-08-18 61 if (!((char *)data)[0])
288801685d7137 Richard Kuo 2025-08-18 62 #endif
288801685d7137 Richard Kuo 2025-08-18 63 strscpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
288801685d7137 Richard Kuo 2025-08-18 64 #endif /* CONFIG_CMDLINE */
288801685d7137 Richard Kuo 2025-08-18 65
288801685d7137 Richard Kuo 2025-08-18 66 pr_debug("Command line is: %s\n", (char*)data);
288801685d7137 Richard Kuo 2025-08-18 67
288801685d7137 Richard Kuo 2025-08-18 68 /* break now */
288801685d7137 Richard Kuo 2025-08-18 69 return 1;
288801685d7137 Richard Kuo 2025-08-18 70 }
288801685d7137 Richard Kuo 2025-08-18 71
288801685d7137 Richard Kuo 2025-08-18 72
288801685d7137 Richard Kuo 2025-08-18 73
5d4b53d10af44d Brian Cain 2026-01-24 74 /*
5d4b53d10af44d Brian Cain 2026-01-24 75 * Iterator for of_flat_dt_match_machine
5d4b53d10af44d Brian Cain 2026-01-24 76 */
5d4b53d10af44d Brian Cain 2026-01-24 77 static const void * __init arch_get_next_mach(const char *const **match)
5d4b53d10af44d Brian Cain 2026-01-24 78 {
5d4b53d10af44d Brian Cain 2026-01-24 79 static const struct machine_desc *mdesc = __arch_info_begin;
5d4b53d10af44d Brian Cain 2026-01-24 80 const struct machine_desc *m = mdesc;
5d4b53d10af44d Brian Cain 2026-01-24 81
5d4b53d10af44d Brian Cain 2026-01-24 82 if (m >= __arch_info_end)
5d4b53d10af44d Brian Cain 2026-01-24 83 return NULL;
5d4b53d10af44d Brian Cain 2026-01-24 84
5d4b53d10af44d Brian Cain 2026-01-24 85 mdesc++;
5d4b53d10af44d Brian Cain 2026-01-24 86 *match = m->dt_compat;
5d4b53d10af44d Brian Cain 2026-01-24 87 return m;
5d4b53d10af44d Brian Cain 2026-01-24 88 }
5d4b53d10af44d Brian Cain 2026-01-24 89
288801685d7137 Richard Kuo 2025-08-18 90 /*
288801685d7137 Richard Kuo 2025-08-18 91 * setup_machine_fdt - set up machine based on dtb passed to kernel
288801685d7137 Richard Kuo 2025-08-18 92 * @dt_phys: physical address of dtb
288801685d7137 Richard Kuo 2025-08-18 93 *
288801685d7137 Richard Kuo 2025-08-18 94 * Sets up some of the earliest stuff -- setting the machine type,
288801685d7137 Richard Kuo 2025-08-18 95 * pulling the command line options, and finding the memory.
288801685d7137 Richard Kuo 2025-08-18 96 *
288801685d7137 Richard Kuo 2025-08-18 97 * Since we're calling this from setup_arch, this is going to happen
288801685d7137 Richard Kuo 2025-08-18 98 * very, very early. Prior to even the bootmem being set up in the
288801685d7137 Richard Kuo 2025-08-18 99 * old scheme I think.
288801685d7137 Richard Kuo 2025-08-18 100 *
288801685d7137 Richard Kuo 2025-08-18 101 * Also since we're always being fired up by the hypervisor, then
288801685d7137 Richard Kuo 2025-08-18 102 * we are already running with the MMU on with an init segtable.
288801685d7137 Richard Kuo 2025-08-18 103 */
5d4b53d10af44d Brian Cain 2026-01-24 104 const struct machine_desc * __init setup_machine_fdt(void *dt_phys)
288801685d7137 Richard Kuo 2025-08-18 105 {
5d4b53d10af44d Brian Cain 2026-01-24 106 const struct machine_desc *mdesc_best = NULL;
288801685d7137 Richard Kuo 2025-08-18 107 unsigned long dt_root;
288801685d7137 Richard Kuo 2025-08-18 108
288801685d7137 Richard Kuo 2025-08-18 109 #ifdef CONFIG_HEXAGON_MSM8974_FLUID
288801685d7137 Richard Kuo 2025-08-18 110 // Fixme: use this for... everybody if possible
288801685d7137 Richard Kuo 2025-08-18 111 // The "tags" struct or whatever provided by LK; currently stuffing it in the "external buffer" space.
288801685d7137 Richard Kuo 2025-08-18 112 initial_boot_params = (void *) &external_buffer;
288801685d7137 Richard Kuo 2025-08-18 113 dt_root = of_get_flat_dt_root();
288801685d7137 Richard Kuo 2025-08-18 114 of_scan_flat_dt(early_init_dt_scan_chosen_noinitrd, boot_command_line);
288801685d7137 Richard Kuo 2025-08-18 115 #endif
288801685d7137 Richard Kuo 2025-08-18 116
288801685d7137 Richard Kuo 2025-08-18 117 /* reset global pointer that devtree uses to the proper blob */
288801685d7137 Richard Kuo 2025-08-18 118 #ifdef CONFIG_DTB_BUILTIN
288801685d7137 Richard Kuo 2025-08-18 119 /* This is the label placed on the assembly blob; will already be in virtual space */
288801685d7137 Richard Kuo 2025-08-18 120 initial_boot_params = dt_phys;
288801685d7137 Richard Kuo 2025-08-18 121 #else
288801685d7137 Richard Kuo 2025-08-18 122 initial_boot_params = phys_to_virt(dt_phys);
288801685d7137 Richard Kuo 2025-08-18 123 #endif
288801685d7137 Richard Kuo 2025-08-18 124
288801685d7137 Richard Kuo 2025-08-18 125 /* check device tree validity */
288801685d7137 Richard Kuo 2025-08-18 126 if (fdt_magic(initial_boot_params) != OF_DT_HEADER) {
288801685d7137 Richard Kuo 2025-08-18 127 return NULL;
288801685d7137 Richard Kuo 2025-08-18 128 }
288801685d7137 Richard Kuo 2025-08-18 129
288801685d7137 Richard Kuo 2025-08-18 @130 dt_root = of_get_flat_dt_root();
288801685d7137 Richard Kuo 2025-08-18 131
5d4b53d10af44d Brian Cain 2026-01-24 @132 mdesc_best = of_flat_dt_match_machine(NULL, arch_get_next_mach);
288801685d7137 Richard Kuo 2025-08-18 133
288801685d7137 Richard Kuo 2025-08-18 134 if (!mdesc_best) {
288801685d7137 Richard Kuo 2025-08-18 135 panic("Unrecognized device tree\n");
288801685d7137 Richard Kuo 2025-08-18 136 }
288801685d7137 Richard Kuo 2025-08-18 137
288801685d7137 Richard Kuo 2025-08-18 138 /*
288801685d7137 Richard Kuo 2025-08-18 139 * Sets the top level address and size cells which are stored
288801685d7137 Richard Kuo 2025-08-18 140 * in globals by the devtree infrastructure.
288801685d7137 Richard Kuo 2025-08-18 141 */
288801685d7137 Richard Kuo 2025-08-18 @142 early_init_dt_scan_root();
288801685d7137 Richard Kuo 2025-08-18 143
288801685d7137 Richard Kuo 2025-08-18 144 /* Retrieve various information from the /chosen node */
288801685d7137 Richard Kuo 2025-08-18 145 #ifndef CONFIG_HEXAGON_MSM8974_FLUID
288801685d7137 Richard Kuo 2025-08-18 146 // Fixme: do this consistently for platforms
288801685d7137 Richard Kuo 2025-08-18 @147 early_init_dt_scan_chosen(boot_command_line);
288801685d7137 Richard Kuo 2025-08-18 148 #endif
288801685d7137 Richard Kuo 2025-08-18 149 /* Setup memory */
288801685d7137 Richard Kuo 2025-08-18 150 //of_scan_flat_dt(early_init_dt_scan_memory, NULL);
288801685d7137 Richard Kuo 2025-08-18 151
288801685d7137 Richard Kuo 2025-08-18 152 return mdesc_best;
288801685d7137 Richard Kuo 2025-08-18 153 }
288801685d7137 Richard Kuo 2025-08-18 154
:::::: The code at line 130 was first introduced by commit
:::::: 288801685d71376da5644b5f11ea806fc06ccea1 hexagon: add device tree support
:::::: TO: Richard Kuo <rkuo@quicinc.com>
:::::: CC: Brian Cain <brian.cain@oss.qualcomm.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-08-24 13:49 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202608242142.XFuz1Lzp-lkp@intel.com \
--to=lkp@intel.com \
--cc=bcain@kernel.org \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=rkuo@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox