From: Zaid Alali <zaidal@os.amperecomputing.com>
To: "Luck, Tony" <tony.luck@intel.com>
Cc: rafael@kernel.org, lenb@kernel.org, james.morse@arm.com,
bp@alien8.de, robert.moore@intel.com,
Jonathan.Cameron@huawei.com, ira.weiny@intel.com,
Benjamin.Cheatham@amd.com, dan.j.williams@intel.com,
arnd@arndb.de, Avadhut.Naik@amd.com,
u.kleine-koenig@pengutronix.de, john.allen@amd.com,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
acpica-devel@lists.linux.dev
Subject: Re: [PATCH v6 8/9] ACPI: APEI: EINJ: Enable EINJv2 error injections
Date: Tue, 22 Apr 2025 12:49:29 -0700 [thread overview]
Message-ID: <aAfyyS9qUgzsQeLY@zaid-VirtualBox> (raw)
In-Reply-To: <aAKvs2cDLu_mVGdr@agluck-desk3>
On Fri, Apr 18, 2025 at 01:01:55PM -0700, Luck, Tony wrote:
> On Thu, Apr 17, 2025 at 03:00:18PM -0700, Zaid Alali wrote:
> > + if (is_V2) {
> > + int count = 0, bytes_read, pos = 0, nr_parsed = 0, str_len;
> > + unsigned int comp, synd;
>
> I've been staring at the ACPI spec to try and figure out how many bits
> are needed for comp and sync. The example in section 18.6.7 "Error
> Injection Version 2 Operation" has this in step 6:
>
> Component Syndrome Array [0] = { 00000000000000000000000000000004 , 000000000000000000000000A5A5A5A5 }
>
> Which really looks like 128-bit values!
>
> So are "unsigned int" adequate? Even "u64" looks like it would fall short.
Hi Tony,
Hi Tony,
Thats a great point! I beleive I need to change "struct syndrom_array" to make all union members have
a 128-bit size
struct syndrome_array {
union {
u32 acpi_id; ====> all should be 128-bit long
u32 device_id;
u32 pcie_sbdf;
u8 vendor_id[16];
} comp_id;
union {
u32 proc_synd;
u32 mem_synd;
u32 pcie_synd;
u8 vendor_synd[16];
} comp_synd;
};
>
> > + struct syndrome_array *component_arr;
> > +
> > + component_arr = v5param->einjv2_struct.component_arr;
> > + str_len = strlen(user_input);
> > +
> > + while ((nr_parsed = sscanf(user_input + pos, "%x %x\n%n", &comp,
>
> Parsing user input with sscanf() is a bit fragile. Take a look at
> rdtgroup_schemata_write() which uses:
>
> while ((tok = strsep(&buf, "\n")) != NULL) {
>
> to split input into lines, and then strim() and strsep() to break
> up items within a line.
>
> > + &synd, &bytes_read))) {
> > + pos += bytes_read;
> > +
> > + if (nr_parsed != 2) {
> > + kfree(v5param);
> > + goto err_out;
> > + }
> > + if (count >= nr_components) {
> > + kfree(v5param);
> > + goto err_out;
> > + }
> > +
> > + switch (type) {
> > + case EINJV2_PROCESSOR_ERROR:
> > + component_arr[count].comp_id.acpi_id = comp;
> > + component_arr[count].comp_synd.proc_synd = synd;
> > + break;
> > + case EINJV2_MEMORY_ERROR:
> > + component_arr[count].comp_id.device_id = comp;
> > + component_arr[count].comp_synd.mem_synd = synd;
> > + break;
> > + case EINJV2_PCIE_ERROR:
> > + component_arr[count].comp_id.pcie_sbdf = comp;
> > + component_arr[count].comp_synd.pcie_synd = synd;
> > + break;
I also need to include another case here for EINJv2_VENDOR_ERROR
I will fix this in the next revision.
-Zaid
> > + }
> > + count++;
> > + if (pos >= str_len)
> > + break;
> > + }
next prev parent reply other threads:[~2025-04-22 19:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-17 22:00 [PATCH v6 0/9] Enable EINJv2 Support Zaid Alali
2025-04-17 22:00 ` [PATCH v6 1/9] ACPICA: Update values to hex to follow ACPI specs Zaid Alali
2025-04-17 22:00 ` [PATCH v6 2/9] ACPICA: Add EINJv2 get error type action Zaid Alali
2025-04-17 22:00 ` [PATCH v6 3/9] ACPI: APEI: EINJ: Fix kernel test sparse warnings Zaid Alali
2025-04-17 22:00 ` [PATCH v6 4/9] ACPI: APEI: EINJ: Remove redundant calls to einj_get_available_error_type Zaid Alali
2025-04-17 22:00 ` [PATCH v6 5/9] ACPI: APEI: EINJ: Enable the discovery of EINJv2 capabilities Zaid Alali
2025-04-18 19:36 ` Luck, Tony
2025-04-17 22:00 ` [PATCH v6 6/9] ACPI: APEI: EINJ: Add einjv2 extension struct Zaid Alali
2025-04-17 22:00 ` [PATCH v6 7/9] ACPI: APEI: EINJ: Add debugfs files for EINJv2 support Zaid Alali
2025-04-17 22:00 ` [PATCH v6 8/9] ACPI: APEI: EINJ: Enable EINJv2 error injections Zaid Alali
2025-04-18 20:01 ` Luck, Tony
2025-04-22 19:49 ` Zaid Alali [this message]
2025-04-17 22:00 ` [PATCH v6 9/9] ACPI: APEI: EINJ: Update the documentation for EINJv2 support Zaid Alali
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=aAfyyS9qUgzsQeLY@zaid-VirtualBox \
--to=zaidal@os.amperecomputing.com \
--cc=Avadhut.Naik@amd.com \
--cc=Benjamin.Cheatham@amd.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=acpica-devel@lists.linux.dev \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=ira.weiny@intel.com \
--cc=james.morse@arm.com \
--cc=john.allen@amd.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=robert.moore@intel.com \
--cc=tony.luck@intel.com \
--cc=u.kleine-koenig@pengutronix.de \
/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.