tree:
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git
queue-4.14
head: a567298cc2a7571c3a7c390cadcac9e1d54ca2d1
commit: 084247b52ffab163538f311e4e2d680da4968b8c [77/84] efi/arm: Defer probe of PCIe
backed efifb on DT systems
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 084247b52ffab163538f311e4e2d680da4968b8c
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-7.5.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
drivers/firmware/efi/arm-init.c: In function 'efifb_add_links':
> drivers/firmware/efi/arm-init.c:331:12: error: implicit
declaration of function 'get_dev_from_fwnode'; did you mean
'set_primary_fwnode'? [-Werror=implicit-function-declaration]
sup_dev =
get_dev_from_fwnode(&sup_np->fwnode);
^~~~~~~~~~~~~~~~~~~
set_primary_fwnode
> drivers/firmware/efi/arm-init.c:331:10: warning: assignment makes
pointer from integer without a cast [-Wint-conversion]
sup_dev =
get_dev_from_fwnode(&sup_np->fwnode);
^
drivers/firmware/efi/arm-init.c: At top level:
> drivers/firmware/efi/arm-init.c:356:3: error: 'const struct
fwnode_operations' has no member named 'add_links'
.add_links =
efifb_add_links,
^~~~~~~~~
> drivers/firmware/efi/arm-init.c:356:15: error: initialization
from incompatible pointer type [-Werror=incompatible-pointer-types]
.add_links
= efifb_add_links,
^~~~~~~~~~~~~~~
drivers/firmware/efi/arm-init.c:356:15: note: (near initialization for
'efifb_fwnode_ops.get')
cc1: some warnings being treated as errors
vim +331 drivers/firmware/efi/arm-init.c
308
309 /*
310 * If the efifb framebuffer is backed by a PCI graphics controller, we have
311 * to ensure that this relation is expressed using a device link when
312 * running in DT mode, or the probe order may be reversed, resulting in a
313 * resource reservation conflict on the memory window that the efifb
314 * framebuffer steals from the PCIe host bridge.
315 */
316 static int efifb_add_links(const struct fwnode_handle *fwnode,
317 struct device *dev)
318 {
319 struct device_node *sup_np;
320 struct device *sup_dev;
321
322 sup_np = find_pci_overlap_node();
323
324 /*
325 * If there's no PCI graphics controller backing the efifb, we are
326 * done here.
327 */
328 if (!sup_np)
329 return 0;
330
331 sup_dev = get_dev_from_fwnode(&sup_np->fwnode);
332 of_node_put(sup_np);
333
334 /*
335 * Return -ENODEV if the PCI graphics controller device hasn't been
336 * registered yet. This ensures that efifb isn't allowed to probe
337 * and this function is retried again when new devices are
338 * registered.
339 */
340 if (!sup_dev)
341 return -ENODEV;
342
343 /*
344 * If this fails, retrying this function at a later point won't
345 * change anything. So, don't return an error after this.
346 */
347 if (!device_link_add(dev, sup_dev, 0))
348 dev_warn(dev, "device_link_add() failed\n");
349
350 put_device(sup_dev);
351
352 return 0;
353 }
354
355 static const struct fwnode_operations efifb_fwnode_ops = {
356 .add_links = efifb_add_links,
357 };
358
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org