[PATCH v2 3/3] drm/tinydrm: Add devres versions of drm_of_find_backlight
kbuild test robot
lkp at intel.com
Fri Sep 29 22:58:44 UTC 2017
Hi Meghana,
[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.14-rc2 next-20170929]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Meghana-Madhyastha/drm-tinydrm-Move-tinydrm_of_find_backlight-into-drm_of-c/20170930-055009
base: git://people.freedesktop.org/~airlied/linux.git drm-next
config: i386-randconfig-x073-201739 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All error/warnings (new ones prefixed by >>):
drivers/gpu//drm/i2c/tda998x_drv.c:1721:10: error: 'tda998x_bind' undeclared (first use in this function)
.bind = tda998x_bind,
^~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1722:12: error: 'tda998x_unbind' undeclared (first use in this function)
.unbind = tda998x_unbind,
^~~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1727:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
{
^
drivers/gpu//drm/i2c/tda998x_drv.c:1736:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
{
^
drivers/gpu//drm/i2c/tda998x_drv.c:1742:34: error: storage class specified for parameter 'tda998x_dt_ids'
static const struct of_device_id tda998x_dt_ids[] = {
^~~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1742:21: error: parameter 'tda998x_dt_ids' is initialized
static const struct of_device_id tda998x_dt_ids[] = {
^~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1743:2: warning: braces around scalar initializer
{ .compatible = "nxp,tda998x", },
^
drivers/gpu//drm/i2c/tda998x_drv.c:1743:2: note: (near initialization for 'tda998x_dt_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1743:4: error: field name not in record or union initializer
{ .compatible = "nxp,tda998x", },
^
drivers/gpu//drm/i2c/tda998x_drv.c:1743:4: note: (near initialization for 'tda998x_dt_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1743:18: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
{ .compatible = "nxp,tda998x", },
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1743:18: note: (near initialization for 'tda998x_dt_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1744:2: warning: braces around scalar initializer
{ }
^
drivers/gpu//drm/i2c/tda998x_drv.c:1744:2: note: (near initialization for 'tda998x_dt_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1744:2: error: empty scalar initializer
drivers/gpu//drm/i2c/tda998x_drv.c:1744:2: note: (near initialization for 'tda998x_dt_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1744:2: warning: excess elements in scalar initializer
drivers/gpu//drm/i2c/tda998x_drv.c:1744:2: note: (near initialization for 'tda998x_dt_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1746:40: error: expected declaration specifiers before ';' token
MODULE_DEVICE_TABLE(of, tda998x_dt_ids);
^
drivers/gpu//drm/i2c/tda998x_drv.c:1749:35: error: storage class specified for parameter 'tda998x_ids'
static const struct i2c_device_id tda998x_ids[] = {
^~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1749:21: error: parameter 'tda998x_ids' is initialized
static const struct i2c_device_id tda998x_ids[] = {
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1750:2: warning: braces around scalar initializer
{ "tda998x", 0 },
^
drivers/gpu//drm/i2c/tda998x_drv.c:1750:2: note: (near initialization for 'tda998x_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1750:4: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
{ "tda998x", 0 },
^~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1750:4: note: (near initialization for 'tda998x_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1750:15: warning: excess elements in scalar initializer
{ "tda998x", 0 },
^
drivers/gpu//drm/i2c/tda998x_drv.c:1750:15: note: (near initialization for 'tda998x_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1751:2: warning: braces around scalar initializer
{ }
^
drivers/gpu//drm/i2c/tda998x_drv.c:1751:2: note: (near initialization for 'tda998x_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1751:2: error: empty scalar initializer
drivers/gpu//drm/i2c/tda998x_drv.c:1751:2: note: (near initialization for 'tda998x_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1751:2: warning: excess elements in scalar initializer
drivers/gpu//drm/i2c/tda998x_drv.c:1751:2: note: (near initialization for 'tda998x_ids')
drivers/gpu//drm/i2c/tda998x_drv.c:1753:38: error: expected declaration specifiers before ';' token
MODULE_DEVICE_TABLE(i2c, tda998x_ids);
^
drivers/gpu//drm/i2c/tda998x_drv.c:1755:26: error: storage class specified for parameter 'tda998x_driver'
static struct i2c_driver tda998x_driver = {
^~~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1755:15: error: parameter 'tda998x_driver' is initialized
static struct i2c_driver tda998x_driver = {
^~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1756:11: error: 'tda998x_probe' undeclared (first use in this function)
.probe = tda998x_probe,
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1757:12: error: 'tda998x_remove' undeclared (first use in this function)
.remove = tda998x_remove,
^~~~~~~~~~~~~~
In file included from include/linux/hdmi.h:28:0,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
include/linux/device.h:1503:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
{ \
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:5:0,
from include/linux/kernel.h:13,
from include/linux/list.h:8,
from include/linux/kobject.h:20,
from include/linux/device.h:17,
from include/linux/hdmi.h:28,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
>> include/linux/init.h:165:20: error: storage class specified for parameter '__initcall_tda998x_driver_init6'
static initcall_t __initcall_##fn##id __used \
^
include/linux/init.h:195:30: note: in expansion of macro '__define_initcall'
#define device_initcall(fn) __define_initcall(fn, 6)
^~~~~~~~~~~~~~~~~
include/linux/init.h:200:24: note: in expansion of macro 'device_initcall'
#define __initcall(fn) device_initcall(fn)
^~~~~~~~~~~~~~~
include/linux/module.h:85:24: note: in expansion of macro '__initcall'
#define module_init(x) __initcall(x);
^~~~~~~~~~
include/linux/device.h:1506:1: note: in expansion of macro 'module_init'
module_init(__driver##_init); \
^~~~~~~~~~~
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/hdmi.h:28:0,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
>> include/linux/device.h:1503:1: error: parameter '__initcall_tda998x_driver_init6' is initialized
{ \
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
include/linux/device.h:1503:1: warning: '__used__' attribute ignored [-Wattributes]
{ \
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:5:0,
from include/linux/kernel.h:13,
from include/linux/list.h:8,
from include/linux/kobject.h:20,
from include/linux/device.h:17,
from include/linux/hdmi.h:28,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
>> include/linux/init.h:165:20: error: section attribute not allowed for '__initcall_tda998x_driver_init6'
static initcall_t __initcall_##fn##id __used \
^
include/linux/init.h:195:30: note: in expansion of macro '__define_initcall'
#define device_initcall(fn) __define_initcall(fn, 6)
^~~~~~~~~~~~~~~~~
include/linux/init.h:200:24: note: in expansion of macro 'device_initcall'
#define __initcall(fn) device_initcall(fn)
^~~~~~~~~~~~~~~
include/linux/module.h:85:24: note: in expansion of macro '__initcall'
#define module_init(x) __initcall(x);
^~~~~~~~~~
include/linux/device.h:1506:1: note: in expansion of macro 'module_init'
module_init(__driver##_init); \
^~~~~~~~~~~
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
>> drivers/gpu//drm/i2c/tda998x_drv.c:1765:19: error: 'tda998x_driver_init' undeclared (first use in this function)
module_i2c_driver(tda998x_driver);
^
include/linux/init.h:166:58: note: in definition of macro '__define_initcall'
__attribute__((__section__(".initcall" #id ".init"))) = fn;
^~
include/linux/init.h:200:24: note: in expansion of macro 'device_initcall'
#define __initcall(fn) device_initcall(fn)
^~~~~~~~~~~~~~~
include/linux/module.h:85:24: note: in expansion of macro '__initcall'
#define module_init(x) __initcall(x);
^~~~~~~~~~
include/linux/device.h:1506:1: note: in expansion of macro 'module_init'
module_init(__driver##_init); \
^~~~~~~~~~~
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from drivers/gpu//drm/i2c/tda998x_drv.c:20:0:
include/linux/module.h:85:37: error: expected declaration specifiers before ';' token
#define module_init(x) __initcall(x);
^
include/linux/device.h:1506:1: note: in expansion of macro 'module_init'
module_init(__driver##_init); \
^~~~~~~~~~~
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/hdmi.h:28:0,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
include/linux/device.h:1506:29: error: expected declaration specifiers before ';' token
module_init(__driver##_init); \
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
include/linux/device.h:1508:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
{ \
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:5:0,
from include/linux/kernel.h:13,
from include/linux/list.h:8,
from include/linux/kobject.h:20,
from include/linux/device.h:17,
from include/linux/hdmi.h:28,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
>> include/linux/init.h:203:20: error: storage class specified for parameter '__exitcall_tda998x_driver_exit'
static exitcall_t __exitcall_##fn __exit_call = fn
^
include/linux/module.h:97:24: note: in expansion of macro '__exitcall'
#define module_exit(x) __exitcall(x);
^~~~~~~~~~
include/linux/device.h:1511:1: note: in expansion of macro 'module_exit'
module_exit(__driver##_exit);
^~~~~~~~~~~
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/hdmi.h:28:0,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
>> include/linux/device.h:1508:1: error: parameter '__exitcall_tda998x_driver_exit' is initialized
{ \
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
include/linux/device.h:1508:1: warning: '__used__' attribute ignored [-Wattributes]
{ \
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:5:0,
from include/linux/kernel.h:13,
from include/linux/list.h:8,
from include/linux/kobject.h:20,
from include/linux/device.h:17,
from include/linux/hdmi.h:28,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
>> include/linux/init.h:203:20: error: section attribute not allowed for '__exitcall_tda998x_driver_exit'
static exitcall_t __exitcall_##fn __exit_call = fn
^
include/linux/module.h:97:24: note: in expansion of macro '__exitcall'
#define module_exit(x) __exitcall(x);
^~~~~~~~~~
include/linux/device.h:1511:1: note: in expansion of macro 'module_exit'
module_exit(__driver##_exit);
^~~~~~~~~~~
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
>> drivers/gpu//drm/i2c/tda998x_drv.c:1765:19: error: 'tda998x_driver_exit' undeclared (first use in this function)
module_i2c_driver(tda998x_driver);
^
include/linux/init.h:203:50: note: in definition of macro '__exitcall'
static exitcall_t __exitcall_##fn __exit_call = fn
^~
include/linux/device.h:1511:1: note: in expansion of macro 'module_exit'
module_exit(__driver##_exit);
^~~~~~~~~~~
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
In file included from include/linux/hdmi.h:28:0,
from drivers/gpu//drm/i2c/tda998x_drv.c:19:
include/linux/device.h:1511:29: error: expected declaration specifiers before ';' token
module_exit(__driver##_exit);
^
include/linux/i2c.h:780:2: note: in expansion of macro 'module_driver'
module_driver(__i2c_driver, i2c_add_driver, \
^~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:1: note: in expansion of macro 'module_i2c_driver'
module_i2c_driver(tda998x_driver);
^~~~~~~~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1765:34: error: expected declaration specifiers before ';' token
module_i2c_driver(tda998x_driver);
^
In file included from include/linux/module.h:18:0,
from drivers/gpu//drm/i2c/tda998x_drv.c:20:
include/linux/moduleparam.h:27:3: warning: empty declaration
struct __UNIQUE_ID(name) {}
^
include/linux/module.h:160:32: note: in expansion of macro '__MODULE_INFO'
#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
^~~~~~~~~~~~~
include/linux/module.h:204:32: note: in expansion of macro 'MODULE_INFO'
#define MODULE_AUTHOR(_author) MODULE_INFO(author, _author)
^~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1767:1: note: in expansion of macro 'MODULE_AUTHOR'
MODULE_AUTHOR("Rob Clark <robdclark at gmail.com");
^~~~~~~~~~~~~
include/linux/moduleparam.h:27:3: warning: empty declaration
struct __UNIQUE_ID(name) {}
^
include/linux/module.h:160:32: note: in expansion of macro '__MODULE_INFO'
#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
^~~~~~~~~~~~~
include/linux/module.h:207:42: note: in expansion of macro 'MODULE_INFO'
#define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description)
^~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1768:1: note: in expansion of macro 'MODULE_DESCRIPTION'
MODULE_DESCRIPTION("NXP Semiconductors TDA998X HDMI Encoder");
^~~~~~~~~~~~~~~~~~
include/linux/moduleparam.h:27:3: warning: empty declaration
struct __UNIQUE_ID(name) {}
^
include/linux/module.h:160:32: note: in expansion of macro '__MODULE_INFO'
#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
^~~~~~~~~~~~~
include/linux/module.h:198:34: note: in expansion of macro 'MODULE_INFO'
#define MODULE_LICENSE(_license) MODULE_INFO(license, _license)
^~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1769:1: note: in expansion of macro 'MODULE_LICENSE'
MODULE_LICENSE("GPL");
^~~~~~~~~~~~~~
In file included from drivers/gpu//drm/i2c/tda998x_drv.c:29:0:
include/drm/drm_of.h:33:26: error: old-style parameter declarations in prototyped function definition
struct backlight_device *devm_drm_of_find_backlight(struct device *dev)
^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/uapi/linux/stddef.h:1:0,
from include/linux/stddef.h:4,
from include/linux/component.h:4,
from drivers/gpu//drm/i2c/tda998x_drv.c:18:
include/linux/compiler-gcc.h:190:45: error: expected '{' at end of input
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
^
include/linux/compiler.h:52:23: note: in definition of macro '___PASTE'
#define ___PASTE(a,b) a##b
^
include/linux/compiler-gcc.h:190:29: note: in expansion of macro '__PASTE'
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
^~~~~~~
include/linux/compiler.h:53:22: note: in expansion of macro '___PASTE'
#define __PASTE(a,b) ___PASTE(a,b)
^~~~~~~~
include/linux/compiler-gcc.h:190:37: note: in expansion of macro '__PASTE'
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
^~~~~~~
include/linux/moduleparam.h:27:10: note: in expansion of macro '__UNIQUE_ID'
struct __UNIQUE_ID(name) {}
^~~~~~~~~~~
include/linux/module.h:160:32: note: in expansion of macro '__MODULE_INFO'
#define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
^~~~~~~~~~~~~
include/linux/module.h:198:34: note: in expansion of macro 'MODULE_INFO'
#define MODULE_LICENSE(_license) MODULE_INFO(license, _license)
^~~~~~~~~~~
drivers/gpu//drm/i2c/tda998x_drv.c:1769:1: note: in expansion of macro 'MODULE_LICENSE'
MODULE_LICENSE("GPL");
..
vim +/__initcall_tda998x_driver_init6 +165 include/linux/init.h
^1da177e Linus Torvalds 2005-04-16 147
b67067f1 Nicholas Piggin 2016-08-24 148 /*
b67067f1 Nicholas Piggin 2016-08-24 149 * initcalls are now grouped by functionality into separate
^1da177e Linus Torvalds 2005-04-16 150 * subsections. Ordering inside the subsections is determined
^1da177e Linus Torvalds 2005-04-16 151 * by link order.
^1da177e Linus Torvalds 2005-04-16 152 * For backwards compatibility, initcall() puts the call in
^1da177e Linus Torvalds 2005-04-16 153 * the device init subsection.
735a7ffb Andrew Morton 2006-10-27 154 *
735a7ffb Andrew Morton 2006-10-27 155 * The `id' arg to __define_initcall() is needed so that multiple initcalls
735a7ffb Andrew Morton 2006-10-27 156 * can point at the same handler without causing duplicate-symbol build errors.
b67067f1 Nicholas Piggin 2016-08-24 157 *
b67067f1 Nicholas Piggin 2016-08-24 158 * Initcalls are run by placing pointers in initcall sections that the
b67067f1 Nicholas Piggin 2016-08-24 159 * kernel iterates at runtime. The linker can do dead code / data elimination
b67067f1 Nicholas Piggin 2016-08-24 160 * and remove that completely, so the initcall sections have to be marked
b67067f1 Nicholas Piggin 2016-08-24 161 * as KEEP() in the linker script.
^1da177e Linus Torvalds 2005-04-16 162 */
^1da177e Linus Torvalds 2005-04-16 163
7929d407 Matthew Leach 2012-12-17 164 #define __define_initcall(fn, id) \
3ff6eecc Adrian Bunk 2008-01-24 @165 static initcall_t __initcall_##fn##id __used \
b67067f1 Nicholas Piggin 2016-08-24 166 __attribute__((__section__(".initcall" #id ".init"))) = fn;
^1da177e Linus Torvalds 2005-04-16 167
b3438f82 Linus Torvalds 2006-11-20 168 /*
c2147a50 Eduard - Gabriel Munteanu 2008-07-25 169 * Early initcalls run before initializing SMP.
c2147a50 Eduard - Gabriel Munteanu 2008-07-25 170 *
c2147a50 Eduard - Gabriel Munteanu 2008-07-25 171 * Only for built-in code, not modules.
c2147a50 Eduard - Gabriel Munteanu 2008-07-25 172 */
7929d407 Matthew Leach 2012-12-17 173 #define early_initcall(fn) __define_initcall(fn, early)
c2147a50 Eduard - Gabriel Munteanu 2008-07-25 174
c2147a50 Eduard - Gabriel Munteanu 2008-07-25 175 /*
b3438f82 Linus Torvalds 2006-11-20 176 * A "pure" initcall has no dependencies on anything else, and purely
b3438f82 Linus Torvalds 2006-11-20 177 * initializes variables that couldn't be statically initialized.
b3438f82 Linus Torvalds 2006-11-20 178 *
b3438f82 Linus Torvalds 2006-11-20 179 * This only exists for built-in code, not for modules.
96263d28 Jim Cromie 2012-06-14 180 * Keep main.c:initcall_level_names[] in sync.
b3438f82 Linus Torvalds 2006-11-20 181 */
7929d407 Matthew Leach 2012-12-17 182 #define pure_initcall(fn) __define_initcall(fn, 0)
7929d407 Matthew Leach 2012-12-17 183
7929d407 Matthew Leach 2012-12-17 184 #define core_initcall(fn) __define_initcall(fn, 1)
7929d407 Matthew Leach 2012-12-17 185 #define core_initcall_sync(fn) __define_initcall(fn, 1s)
7929d407 Matthew Leach 2012-12-17 186 #define postcore_initcall(fn) __define_initcall(fn, 2)
7929d407 Matthew Leach 2012-12-17 187 #define postcore_initcall_sync(fn) __define_initcall(fn, 2s)
7929d407 Matthew Leach 2012-12-17 188 #define arch_initcall(fn) __define_initcall(fn, 3)
7929d407 Matthew Leach 2012-12-17 189 #define arch_initcall_sync(fn) __define_initcall(fn, 3s)
7929d407 Matthew Leach 2012-12-17 190 #define subsys_initcall(fn) __define_initcall(fn, 4)
7929d407 Matthew Leach 2012-12-17 191 #define subsys_initcall_sync(fn) __define_initcall(fn, 4s)
7929d407 Matthew Leach 2012-12-17 192 #define fs_initcall(fn) __define_initcall(fn, 5)
7929d407 Matthew Leach 2012-12-17 193 #define fs_initcall_sync(fn) __define_initcall(fn, 5s)
7929d407 Matthew Leach 2012-12-17 194 #define rootfs_initcall(fn) __define_initcall(fn, rootfs)
7929d407 Matthew Leach 2012-12-17 195 #define device_initcall(fn) __define_initcall(fn, 6)
7929d407 Matthew Leach 2012-12-17 196 #define device_initcall_sync(fn) __define_initcall(fn, 6s)
7929d407 Matthew Leach 2012-12-17 197 #define late_initcall(fn) __define_initcall(fn, 7)
7929d407 Matthew Leach 2012-12-17 198 #define late_initcall_sync(fn) __define_initcall(fn, 7s)
^1da177e Linus Torvalds 2005-04-16 199
^1da177e Linus Torvalds 2005-04-16 200 #define __initcall(fn) device_initcall(fn)
^1da177e Linus Torvalds 2005-04-16 201
^1da177e Linus Torvalds 2005-04-16 202 #define __exitcall(fn) \
^1da177e Linus Torvalds 2005-04-16 @203 static exitcall_t __exitcall_##fn __exit_call = fn
^1da177e Linus Torvalds 2005-04-16 204
:::::: The code at line 165 was first introduced by commit
:::::: 3ff6eecca4e5c49a5d1dd8b58ea0e20102ce08f0 remove __attribute_used__
:::::: TO: Adrian Bunk <bunk at kernel.org>
:::::: CC: Sam Ravnborg <sam at ravnborg.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 29706 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170930/72079b86/attachment-0001.gz>
More information about the dri-devel
mailing list