Re: [PATCH] platform/x86: msi-ec: Fix the build

From: Hans de Goede
Date: Wed Aug 09 2023 - 16:00:24 EST


Hi,

On 8/5/23 10:10, Jean Delvare wrote:
> The msi-ec driver fails to build for me (gcc 7.5):
>
> CC [M] drivers/platform/x86/msi-ec.o
> drivers/platform/x86/msi-ec.c:72:6: error: initializer element is not constant
> { SM_ECO_NAME, 0xc2 },
> ^~~~~~~~~~~
> drivers/platform/x86/msi-ec.c:72:6: note: (near initialization for ‘CONF0.shift_mode.modes[0].name’)
> drivers/platform/x86/msi-ec.c:73:6: error: initializer element is not constant
> { SM_COMFORT_NAME, 0xc1 },
> ^~~~~~~~~~~~~~~
> drivers/platform/x86/msi-ec.c:73:6: note: (near initialization for ‘CONF0.shift_mode.modes[1].name’)
> drivers/platform/x86/msi-ec.c:74:6: error: initializer element is not constant
> { SM_SPORT_NAME, 0xc0 },
> ^~~~~~~~~~~~~
> drivers/platform/x86/msi-ec.c:74:6: note: (near initialization for ‘CONF0.shift_mode.modes[2].name’)
> (...)
>
> Don't try to be smart, just use defines for the constant strings. The
> compiler will recognize it's the same string and will store it only
> once in the data section anyway.
>
> Signed-off-by: Jean Delvare <jdelvare@xxxxxxx>
> Fixes: 392cacf2aa10 ("platform/x86: Add new msi-ec driver")
> Cc: stable@xxxxxxxxxxxxxxx
> Cc: Nikita Kravets <teackot@xxxxxxxxx>
> Cc: Hans de Goede <hdegoede@xxxxxxxxxx>
> Cc: Mark Gross <markgross@xxxxxxxxxx>

Thank you for your patch, I've applied this patch to my fixes
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=fixes

I will include this patch in my next fixes pull-req to Linus
for the current kernel development cycle.

Regards,

Hans







> ---
> drivers/platform/x86/msi-ec.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> --- linux-6.4.orig/drivers/platform/x86/msi-ec.c
> +++ linux-6.4/drivers/platform/x86/msi-ec.c
> @@ -27,15 +27,15 @@
> #include <linux/seq_file.h>
> #include <linux/string.h>
>
> -static const char *const SM_ECO_NAME = "eco";
> -static const char *const SM_COMFORT_NAME = "comfort";
> -static const char *const SM_SPORT_NAME = "sport";
> -static const char *const SM_TURBO_NAME = "turbo";
> +#define SM_ECO_NAME "eco"
> +#define SM_COMFORT_NAME "comfort"
> +#define SM_SPORT_NAME "sport"
> +#define SM_TURBO_NAME "turbo"
>
> -static const char *const FM_AUTO_NAME = "auto";
> -static const char *const FM_SILENT_NAME = "silent";
> -static const char *const FM_BASIC_NAME = "basic";
> -static const char *const FM_ADVANCED_NAME = "advanced";
> +#define FM_AUTO_NAME "auto"
> +#define FM_SILENT_NAME "silent"
> +#define FM_BASIC_NAME "basic"
> +#define FM_ADVANCED_NAME "advanced"
>
> static const char * const ALLOWED_FW_0[] __initconst = {
> "14C1EMS1.012",
>
>