DF-5135 / fix.diff
--- sys/dev/drm/include/linux/moduleparam.h.orig +++ sys/dev/drm/include/linux/moduleparam.h @@ -38,7 +38,17 @@ #define TUNABLE_int(name, var) TUNABLE_INT( _TUNABLE_VAR(.name), &(var)) -#define TUNABLE_bool(name, var) TUNABLE_INT( _TUNABLE_VAR(.name), (int *)&(var)) +#define TUNABLE_bool(name, var) _TUNABLE_BOOL((name), (var), __LINE__) +#define _TUNABLE_BOOL(name, var, line) __TUNABLE_BOOL((name), (var), line) +#define __TUNABLE_BOOL(name, var, line) \ +static void __tunable_bool_ ## line (void *unused) \ +{ \ + int __tv = (var); /* start from the compiled-in default */ \ + TUNABLE_INT_FETCH(_TUNABLE_VAR(.name), &__tv); \ + (var) = !!__tv; \ +} \ +SYSINIT(__tunable_bool_init_ ## line, SI_BOOT1_TUNABLES, \ + SI_ORDER_MIDDLE, __tunable_bool_ ## line, NULL) #define TUNABLE_uint(name, var) TUNABLE_INT( _TUNABLE_VAR(.name), (int *)&(var)) |