All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: Patch "efi/cper: Add a new helper function to print bitmasks" has been added to the 6.18-stable tree
       [not found] <20251215110819.3458104-1-sashal@kernel.org>
@ 2025-12-15 11:10 ` Ard Biesheuvel
  2025-12-15 15:02   ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 2+ messages in thread
From: Ard Biesheuvel @ 2025-12-15 11:10 UTC (permalink / raw)
  To: stable; +Cc: stable-commits, mchehab+huawei

Why are these patches being backported?



On Mon, 15 Dec 2025 at 12:08, Sasha Levin <sashal@kernel.org> wrote:
>
> This is a note to let you know that I've just added the patch titled
>
>     efi/cper: Add a new helper function to print bitmasks
>
> to the 6.18-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>
> The filename of the patch is:
>      efi-cper-add-a-new-helper-function-to-print-bitmasks.patch
> and it can be found in the queue-6.18 subdirectory.
>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@vger.kernel.org> know about it.
>
>
>
> commit 06d39b93424e64e47244b0ccb97a3c6b2c033cfe
> Author: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
> Date:   Thu Aug 14 09:52:54 2025 -0700
>
>     efi/cper: Add a new helper function to print bitmasks
>
>     [ Upstream commit a976d790f49499ccaa0f991788ad8ebf92e7fd5c ]
>
>     Add a helper function to print a string with names associated
>     to each bit field.
>
>     A typical example is:
>
>             const char * const bits[] = {
>                     "bit 3 name",
>                     "bit 4 name",
>                     "bit 5 name",
>             };
>             char str[120];
>             unsigned int bitmask = BIT(3) | BIT(5);
>
>             #define MASK  GENMASK(5,3)
>
>             cper_bits_to_str(str, sizeof(str), FIELD_GET(MASK, bitmask),
>                              bits, ARRAY_SIZE(bits));
>
>     The above code fills string "str" with "bit 3 name|bit 5 name".
>
>     Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
>     Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
>     Acked-by: Borislav Petkov (AMD) <bp@alien8.de>
>     Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
>     Signed-off-by: Sasha Levin <sashal@kernel.org>
>
> diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
> index 928409199a1a4..79ba688a64f8d 100644
> --- a/drivers/firmware/efi/cper.c
> +++ b/drivers/firmware/efi/cper.c
> @@ -12,6 +12,7 @@
>   * Specification version 2.4.
>   */
>
> +#include <linux/bitmap.h>
>  #include <linux/kernel.h>
>  #include <linux/module.h>
>  #include <linux/time.h>
> @@ -106,6 +107,65 @@ void cper_print_bits(const char *pfx, unsigned int bits,
>                 printk("%s\n", buf);
>  }
>
> +/**
> + * cper_bits_to_str - return a string for set bits
> + * @buf: buffer to store the output string
> + * @buf_size: size of the output string buffer
> + * @bits: bit mask
> + * @strs: string array, indexed by bit position
> + * @strs_size: size of the string array: @strs
> + *
> + * Add to @buf the bitmask in hexadecimal. Then, for each set bit in @bits,
> + * add the corresponding string describing the bit in @strs to @buf.
> + *
> + * A typical example is::
> + *
> + *     const char * const bits[] = {
> + *             "bit 3 name",
> + *             "bit 4 name",
> + *             "bit 5 name",
> + *     };
> + *     char str[120];
> + *     unsigned int bitmask = BIT(3) | BIT(5);
> + *     #define MASK GENMASK(5,3)
> + *
> + *     cper_bits_to_str(str, sizeof(str), FIELD_GET(MASK, bitmask),
> + *                      bits, ARRAY_SIZE(bits));
> + *
> + * The above code fills the string ``str`` with ``bit 3 name|bit 5 name``.
> + *
> + * Return: number of bytes stored or an error code if lower than zero.
> + */
> +int cper_bits_to_str(char *buf, int buf_size, unsigned long bits,
> +                    const char * const strs[], unsigned int strs_size)
> +{
> +       int len = buf_size;
> +       char *str = buf;
> +       int i, size;
> +
> +       *buf = '\0';
> +
> +       for_each_set_bit(i, &bits, strs_size) {
> +               if (!(bits & BIT_ULL(i)))
> +                       continue;
> +
> +               if (*buf && len > 0) {
> +                       *str = '|';
> +                       len--;
> +                       str++;
> +               }
> +
> +               size = strscpy(str, strs[i], len);
> +               if (size < 0)
> +                       return size;
> +
> +               len -= size;
> +               str += size;
> +       }
> +       return len - buf_size;
> +}
> +EXPORT_SYMBOL_GPL(cper_bits_to_str);
> +
>  static const char * const proc_type_strs[] = {
>         "IA32/X64",
>         "IA64",
> diff --git a/include/linux/cper.h b/include/linux/cper.h
> index 0ed60a91eca9d..58f40477c824e 100644
> --- a/include/linux/cper.h
> +++ b/include/linux/cper.h
> @@ -588,6 +588,8 @@ const char *cper_mem_err_type_str(unsigned int);
>  const char *cper_mem_err_status_str(u64 status);
>  void cper_print_bits(const char *prefix, unsigned int bits,
>                      const char * const strs[], unsigned int strs_size);
> +int cper_bits_to_str(char *buf, int buf_size, unsigned long bits,
> +                    const char * const strs[], unsigned int strs_size);
>  void cper_mem_err_pack(const struct cper_sec_mem_err *,
>                        struct cper_mem_err_compact *);
>  const char *cper_mem_err_unpack(struct trace_seq *,

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Patch "efi/cper: Add a new helper function to print bitmasks" has been added to the 6.18-stable tree
  2025-12-15 11:10 ` Patch "efi/cper: Add a new helper function to print bitmasks" has been added to the 6.18-stable tree Ard Biesheuvel
@ 2025-12-15 15:02   ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 2+ messages in thread
From: Mauro Carvalho Chehab @ 2025-12-15 15:02 UTC (permalink / raw)
  To: Ard Biesheuvel; +Cc: stable, stable-commits

Hi Ard,

Em Mon, 15 Dec 2025 12:10:36 +0100
Ard Biesheuvel <ardb@kernel.org> escreveu:

> Why are these patches being backported?

Those two patches are requirements for this fix:

    96b010536ee0 ("efi/cper: align ARM CPER type with UEFI 2.9A/2.10 specs")

as it uses the helper code added on them.

Thanks,
Mauro

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-12-15 15:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20251215110819.3458104-1-sashal@kernel.org>
2025-12-15 11:10 ` Patch "efi/cper: Add a new helper function to print bitmasks" has been added to the 6.18-stable tree Ard Biesheuvel
2025-12-15 15:02   ` Mauro Carvalho Chehab

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.