From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>, Tony Luck <tony.luck@intel.com>,
"Ard Biesheuvel" <ardb@kernel.org>,
James Morse <james.morse@arm.com>, "Len Brown" <lenb@kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Shiju Jose" <shiju.jose@huawei.com>,
Alison Schofield <alison.schofield@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Ira Weiny <ira.weiny@intel.com>, <linux-acpi@vger.kernel.org>,
<linux-edac@vger.kernel.org>, <linux-efi@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 3/5] efi/cper: Add a new helper function to print bitmasks
Date: Thu, 11 Jul 2024 16:24:11 +0100 [thread overview]
Message-ID: <20240711162411.00007e5e@Huawei.com> (raw)
In-Reply-To: <5bb5f806a763b295401972fdff17bb455bee2e82.1720679234.git.mchehab+huawei@kernel.org>
On Thu, 11 Jul 2024 08:28:54 +0200
Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote:
> Sometimes it is desired to produce a single log line for errors.
> Add a new helper function for such purpose.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
LGTM
Reviewed-by; Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> drivers/firmware/efi/cper.c | 43 +++++++++++++++++++++++++++++++++++++
> include/linux/cper.h | 2 ++
> 2 files changed, 45 insertions(+)
>
> diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
> index 7d2cdd9e2227..462d739e8dd1 100644
> --- a/drivers/firmware/efi/cper.c
> +++ b/drivers/firmware/efi/cper.c
> @@ -106,6 +106,49 @@ 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.
> + *
> + * 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 & (1U << (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 265b0f8fc0b3..25858a7608b7 100644
> --- a/include/linux/cper.h
> +++ b/include/linux/cper.h
> @@ -584,6 +584,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 *,
next prev parent reply other threads:[~2024-07-11 15:24 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1720679234.git.mchehab+huawei@kernel.org>
2024-07-11 6:28 ` [PATCH v2 1/5] RAS: Report all ARM processor CPER information to userspace Mauro Carvalho Chehab
2024-08-29 14:38 ` Borislav Petkov
2024-09-02 4:12 ` Mauro Carvalho Chehab
2024-09-02 9:04 ` Borislav Petkov
2024-07-11 6:28 ` [PATCH v2 2/5] efi/cper: Adjust infopfx size to accept an extra space Mauro Carvalho Chehab
2024-07-11 6:28 ` [PATCH v2 3/5] efi/cper: Add a new helper function to print bitmasks Mauro Carvalho Chehab
2024-07-11 15:24 ` Jonathan Cameron [this message]
2024-09-02 11:24 ` Borislav Petkov
2024-09-04 5:24 ` Mauro Carvalho Chehab
2024-07-11 6:28 ` [PATCH v2 4/5] efi/cper: align ARM CPER type with UEFI 2.9A/2.10 specs Mauro Carvalho Chehab
2024-09-02 15:27 ` Borislav Petkov
2024-09-04 4:45 ` Mauro Carvalho Chehab
2024-09-04 10:25 ` Borislav Petkov
2024-07-11 6:28 ` [PATCH v2 5/5] docs: efi: add CPER functions to driver-api Mauro Carvalho Chehab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240711162411.00007e5e@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=alison.schofield@intel.com \
--cc=ardb@kernel.org \
--cc=bp@alien8.de \
--cc=dave.jiang@intel.com \
--cc=ira.weiny@intel.com \
--cc=james.morse@arm.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-edac@vger.kernel.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mchehab+huawei@kernel.org \
--cc=rafael@kernel.org \
--cc=shiju.jose@huawei.com \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.