init_funcs
WARN_ON(init_funcs[i].exit);
GEM_BUG_ON(i >= ARRAY_SIZE(init_funcs));
if (init_funcs[i].exit)
init_funcs[i].exit();
} init_funcs[] = {
for (i = 0; i < ARRAY_SIZE(init_funcs); i++) {
err = init_funcs[i].init();
if (init_funcs[i].exit)
init_funcs[i].exit();
static const struct init_funcs init_funcs[] = {
static int __init xe_call_init_func(const struct init_funcs *func)
static void xe_call_exit_func(const struct init_funcs *func)
for (i = 0; i < ARRAY_SIZE(init_funcs); i++) {
err = xe_call_init_func(init_funcs + i);
DRIVER_NAME, init_funcs[i].init, ERR_PTR(err));
xe_call_exit_func(init_funcs + i);
for (i = ARRAY_SIZE(init_funcs) - 1; i >= 0; i--)
xe_call_exit_func(init_funcs + i);