]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/xe: Simplify module initialization code
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Thu, 31 Jul 2025 19:33:29 +0000 (21:33 +0200)
committerLucas De Marchi <lucas.demarchi@intel.com>
Tue, 5 Aug 2025 18:52:53 +0000 (11:52 -0700)
There is no need to have extra checks and WARN() in the helpers
as instead of an index of the entry with function pointers, we
can pass pointer to the entry which we prepare directly in the
main loop, that is guaranteed to be valid.

  add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-180 (-180)
  Function                                     old     new   delta
  xe_exit                                      109      79     -30
  cleanup_module                               109      79     -30
  xe_init                                      248     188     -60
  init_module                                  248     188     -60
  Total: Before=2774145, After=2773965, chg -0.01%

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://lore.kernel.org/r/20250731193339.179829-2-michal.wajdeczko@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_module.c

index d9391bd081941fe4bcd1a215538e20fe680edee0..cfed36361613733ba3861603e3d89348b6c96845 100644 (file)
@@ -135,24 +135,17 @@ static const struct init_funcs init_funcs[] = {
        },
 };
 
-static int __init xe_call_init_func(unsigned int i)
+static int __init xe_call_init_func(const struct init_funcs *func)
 {
-       if (WARN_ON(i >= ARRAY_SIZE(init_funcs)))
-               return 0;
-       if (!init_funcs[i].init)
-               return 0;
-
-       return init_funcs[i].init();
+       if (func->init)
+               return func->init();
+       return 0;
 }
 
-static void xe_call_exit_func(unsigned int i)
+static void xe_call_exit_func(const struct init_funcs *func)
 {
-       if (WARN_ON(i >= ARRAY_SIZE(init_funcs)))
-               return;
-       if (!init_funcs[i].exit)
-               return;
-
-       init_funcs[i].exit();
+       if (func->exit)
+               func->exit();
 }
 
 static int __init xe_init(void)
@@ -160,10 +153,10 @@ static int __init xe_init(void)
        int err, i;
 
        for (i = 0; i < ARRAY_SIZE(init_funcs); i++) {
-               err = xe_call_init_func(i);
+               err = xe_call_init_func(init_funcs + i);
                if (err) {
                        while (i--)
-                               xe_call_exit_func(i);
+                               xe_call_exit_func(init_funcs + i);
                        return err;
                }
        }
@@ -176,7 +169,7 @@ static void __exit xe_exit(void)
        int i;
 
        for (i = ARRAY_SIZE(init_funcs) - 1; i >= 0; i--)
-               xe_call_exit_func(i);
+               xe_call_exit_func(init_funcs + i);
 }
 
 module_init(xe_init);