2020-09-03 14:04:07

by Shiju Jose

[permalink] [raw]
Subject: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor specific HW errors

CPER records describing a firmware-first error are identified by GUID.
The ghes driver currently logs, but ignores any unknown CPER records.
This prevents describing errors that can't be represented by a standard
entry, that would otherwise allow a driver to recover from an error.
The UEFI spec calls these 'Non-standard Section Body' (N.2.3 of
version 2.8).

patch set
1. add the notifier chain for these non-standard/vendor-records
in the ghes driver.

2. add the driver to handle HiSilicon HIP PCIe controller's errors.

Changes:

V15:
1. Change in the HIP PCIe error handling driver
for a comment by Andy Shevchenko.
Removed "depends on ACPI" as it already depends on
it through ACPI_APEI_GHES.

V14:
1. Add patch[1] posted by James to the series.

2. Following changes made for Bjorn's comments,
2.1 Deleted stub code from ghes.h
2.2 Made CONFIG_PCIE_HISI_ERR depend on CONFIG_ACPI_APEI_GHES.

V13:
1. Following changes in the HIP PCIe error handling driver.
1.1 Add Bjorn's acked-by.
1.2. Address the comments and macros order Bjorn mentioned.
Fix the words in the commit.

V12:
1. Changed the Signed-off-by tag to Co-developed-by tag in the patch
"ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records"

V11:
1. Following modifications made by James Morse in the APEI patch
for the vendor error record.
- Removed kfifo and ghes_gdata_pool. Expanded commit message.

2. Changes in the HIP PCIe error handling driver
for the comments by Andy Shevchenko.

V10:
1. Changes for Bjorn's comments on HIP PCIe error handler driver
and APEI patch.

2. Changes in the HIP PCIe error handler driver
for the feedbacks by Andy Shevchenko.

V9:
1. Fixed 2 improvements suggested by the kbuild test robot.
1.1 Change ghes_gdata_pool_init() as static function.
1.2. Removed using buffer to store the error data for
logging in the hisi_pcie_handle_error()

V8:
1. Removed reporting the standard errors through the interface
because of the conflict with the recent patches in the
memory error handling path.
2. Fix comments by Dan Carpenter.

V7:
1. Add changes in the APEI driver suggested by Borislav Petkov, for
queuing up all the non-fatal HW errors to the work queue and
notify the registered kernel drivers from the bottom half using
blocking notifier, common interface for both standard and
vendor-spcific errors.
2. Fix for further feedbacks in v5 HIP PCIe error handler driver
by Bjorn Helgaas.

V6:
1. Fix few changes in the patch subject line suggested by Bjorn Helgaas.

V5:
1. Fix comments from James Morse.
1.1 Changed the notification method to use the atomic_notifier_chain.
1.2 Add the error handled status for the user space.

V4:
1. Fix for the following smatch warning in the PCIe error driver,
reported by kbuild test robot<[email protected]>:
warn: should '((((1))) << (9 + i))' be a 64 bit type?
if (err->val_bits & BIT(HISI_PCIE_LOCAL_VALID_ERR_MISC + i))
^^^ This should be BIT_ULL() because it goes up to 9 + 32.

V3:
1. Fix the comments from Bjorn Helgaas.

V2:
1. Changes in the HiSilicon PCIe controller's error handling driver
for the comments from Bjorn Helgaas.

2. Changes in the APEI interface to support reporting the vendor error
for module with multiple devices, but use the same section type.
In the error handler will use socket id/sub module id etc to distinguish
the device.

V1:
1. Fix comments from James Morse.

2. add driver to handle HiSilicon hip08 PCIe controller's errors,
which is an application of the above interface.

Shiju Jose (1):
ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records

Yicong Yang (1):
PCI: hip: Add handling of HiSilicon HIP PCIe controller errors

drivers/acpi/apei/ghes.c | 63 +++++
drivers/pci/controller/Kconfig | 7 +
drivers/pci/controller/Makefile | 1 +
drivers/pci/controller/pcie-hisi-error.c | 327 +++++++++++++++++++++++
include/acpi/ghes.h | 18 ++
5 files changed, 416 insertions(+)
create mode 100644 drivers/pci/controller/pcie-hisi-error.c

--
2.17.1



2020-09-03 14:06:03

by Shiju Jose

[permalink] [raw]
Subject: [PATCH v15 1/2] ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records

CPER records describing a firmware-first error are identified by GUID.
The ghes driver currently logs, but ignores any unknown CPER records.
This prevents describing errors that can't be represented by a standard
entry, that would otherwise allow a driver to recover from an error.
The UEFI spec calls these 'Non-standard Section Body' (N.2.3 of
version 2.8).

Add a notifier chain for these non-standard/vendor-records. Callers
must identify their type of records by GUID.

Record data is copied to memory from the ghes_estatus_pool to allow
us to keep it until after the notifier has run.

Co-developed-by: James Morse <[email protected]>
Signed-off-by: James Morse <[email protected]>
Signed-off-by: Shiju Jose <[email protected]>
---
drivers/acpi/apei/ghes.c | 63 ++++++++++++++++++++++++++++++++++++++++
include/acpi/ghes.h | 18 ++++++++++++
2 files changed, 81 insertions(+)

diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 81bf71b10d44..99df00f64306 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -79,6 +79,12 @@
((struct acpi_hest_generic_status *) \
((struct ghes_estatus_node *)(estatus_node) + 1))

+#define GHES_VENDOR_ENTRY_LEN(gdata_len) \
+ (sizeof(struct ghes_vendor_record_entry) + (gdata_len))
+#define GHES_GDATA_FROM_VENDOR_ENTRY(vendor_entry) \
+ ((struct acpi_hest_generic_data *) \
+ ((struct ghes_vendor_record_entry *)(vendor_entry) + 1))
+
/*
* NMI-like notifications vary by architecture, before the compiler can prune
* unused static functions it needs a value for these enums.
@@ -123,6 +129,12 @@ static DEFINE_MUTEX(ghes_list_mutex);
*/
static DEFINE_SPINLOCK(ghes_notify_lock_irq);

+struct ghes_vendor_record_entry {
+ struct work_struct work;
+ int error_severity;
+ char vendor_record[];
+};
+
static struct gen_pool *ghes_estatus_pool;
static unsigned long ghes_estatus_pool_size_request;

@@ -511,6 +523,56 @@ static void ghes_handle_aer(struct acpi_hest_generic_data *gdata)
#endif
}

+static BLOCKING_NOTIFIER_HEAD(vendor_record_notify_list);
+
+int ghes_register_vendor_record_notifier(struct notifier_block *nb)
+{
+ return blocking_notifier_chain_register(&vendor_record_notify_list, nb);
+}
+EXPORT_SYMBOL_GPL(ghes_register_vendor_record_notifier);
+
+void ghes_unregister_vendor_record_notifier(struct notifier_block *nb)
+{
+ blocking_notifier_chain_unregister(&vendor_record_notify_list, nb);
+}
+EXPORT_SYMBOL_GPL(ghes_unregister_vendor_record_notifier);
+
+static void ghes_vendor_record_work_func(struct work_struct *work)
+{
+ struct ghes_vendor_record_entry *entry;
+ struct acpi_hest_generic_data *gdata;
+ u32 len;
+
+ entry = container_of(work, struct ghes_vendor_record_entry, work);
+ gdata = GHES_GDATA_FROM_VENDOR_ENTRY(entry);
+
+ blocking_notifier_call_chain(&vendor_record_notify_list,
+ entry->error_severity, gdata);
+
+ len = GHES_VENDOR_ENTRY_LEN(acpi_hest_get_record_size(gdata));
+ gen_pool_free(ghes_estatus_pool, (unsigned long)entry, len);
+}
+
+static void ghes_defer_non_standard_event(struct acpi_hest_generic_data *gdata,
+ int sev)
+{
+ struct acpi_hest_generic_data *copied_gdata;
+ struct ghes_vendor_record_entry *entry;
+ u32 len;
+
+ len = GHES_VENDOR_ENTRY_LEN(acpi_hest_get_record_size(gdata));
+ entry = (void *)gen_pool_alloc(ghes_estatus_pool, len);
+ if (!entry)
+ return;
+
+ copied_gdata = GHES_GDATA_FROM_VENDOR_ENTRY(entry);
+ memcpy(copied_gdata, gdata, acpi_hest_get_record_size(gdata));
+ entry->error_severity = sev;
+
+ INIT_WORK(&entry->work, ghes_vendor_record_work_func);
+ schedule_work(&entry->work);
+}
+
static bool ghes_do_proc(struct ghes *ghes,
const struct acpi_hest_generic_status *estatus)
{
@@ -549,6 +611,7 @@ static bool ghes_do_proc(struct ghes *ghes,
} else {
void *err = acpi_hest_get_payload(gdata);

+ ghes_defer_non_standard_event(gdata, sev);
log_non_standard_event(sec_type, fru_id, fru_text,
sec_sev, err,
gdata->error_data_length);
diff --git a/include/acpi/ghes.h b/include/acpi/ghes.h
index 517a5231cc1b..34fb3431a8f3 100644
--- a/include/acpi/ghes.h
+++ b/include/acpi/ghes.h
@@ -53,6 +53,24 @@ enum {
GHES_SEV_PANIC = 0x3,
};

+#ifdef CONFIG_ACPI_APEI_GHES
+/**
+ * ghes_register_vendor_record_notifier - register a notifier for vendor
+ * records that the kernel would otherwise ignore.
+ * @nb: pointer to the notifier_block structure of the event handler.
+ *
+ * return 0 : SUCCESS, non-zero : FAIL
+ */
+int ghes_register_vendor_record_notifier(struct notifier_block *nb);
+
+/**
+ * ghes_unregister_vendor_record_notifier - unregister the previously
+ * registered vendor record notifier.
+ * @nb: pointer to the notifier_block structure of the vendor record handler.
+ */
+void ghes_unregister_vendor_record_notifier(struct notifier_block *nb);
+#endif
+
int ghes_estatus_pool_init(int num_ghes);

/* From drivers/edac/ghes_edac.c */
--
2.17.1


2020-09-14 12:36:23

by Shiju Jose

[permalink] [raw]
Subject: RE: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor specific HW errors

Hello,

Can you help to merge this series?

Thanks,
Shiju

>-----Original Message-----
>From: Linuxarm [mailto:[email protected]] On Behalf Of Shiju
>Jose
>Sent: 03 September 2020 13:35
>To: [email protected]; [email protected]; linux-
>[email protected]; [email protected]; [email protected];
>[email protected]; [email protected]; [email protected];
>[email protected]; [email protected]; [email protected];
>[email protected]; [email protected]
>Cc: Linuxarm <[email protected]>
>Subject: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor
>specific HW errors
>
>CPER records describing a firmware-first error are identified by GUID.
>The ghes driver currently logs, but ignores any unknown CPER records.
>This prevents describing errors that can't be represented by a standard entry,
>that would otherwise allow a driver to recover from an error.
>The UEFI spec calls these 'Non-standard Section Body' (N.2.3 of version 2.8).
>
>patch set
>1. add the notifier chain for these non-standard/vendor-records
> in the ghes driver.
>
>2. add the driver to handle HiSilicon HIP PCIe controller's errors.
>
>Changes:
>
>V15:
>1. Change in the HIP PCIe error handling driver
> for a comment by Andy Shevchenko.
> Removed "depends on ACPI" as it already depends on
> it through ACPI_APEI_GHES.
>
>V14:
>1. Add patch[1] posted by James to the series.
>
>2. Following changes made for Bjorn's comments,
>2.1 Deleted stub code from ghes.h
>2.2 Made CONFIG_PCIE_HISI_ERR depend on CONFIG_ACPI_APEI_GHES.
>
>V13:
>1. Following changes in the HIP PCIe error handling driver.
>1.1 Add Bjorn's acked-by.
>1.2. Address the comments and macros order Bjorn mentioned.
> Fix the words in the commit.
>
>V12:
>1. Changed the Signed-off-by tag to Co-developed-by tag in the patch
> "ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records"
>
>V11:
>1. Following modifications made by James Morse in the APEI patch
> for the vendor error record.
> - Removed kfifo and ghes_gdata_pool. Expanded commit message.
>
>2. Changes in the HIP PCIe error handling driver
> for the comments by Andy Shevchenko.
>
>V10:
>1. Changes for Bjorn's comments on HIP PCIe error handler driver
> and APEI patch.
>
>2. Changes in the HIP PCIe error handler driver
> for the feedbacks by Andy Shevchenko.
>
>V9:
>1. Fixed 2 improvements suggested by the kbuild test robot.
>1.1 Change ghes_gdata_pool_init() as static function.
>1.2. Removed using buffer to store the error data for
> logging in the hisi_pcie_handle_error()
>
>V8:
>1. Removed reporting the standard errors through the interface
> because of the conflict with the recent patches in the
> memory error handling path.
>2. Fix comments by Dan Carpenter.
>
>V7:
>1. Add changes in the APEI driver suggested by Borislav Petkov, for
> queuing up all the non-fatal HW errors to the work queue and
> notify the registered kernel drivers from the bottom half using
> blocking notifier, common interface for both standard and
> vendor-spcific errors.
>2. Fix for further feedbacks in v5 HIP PCIe error handler driver
> by Bjorn Helgaas.
>
>V6:
>1. Fix few changes in the patch subject line suggested by Bjorn Helgaas.
>
>V5:
>1. Fix comments from James Morse.
>1.1 Changed the notification method to use the atomic_notifier_chain.
>1.2 Add the error handled status for the user space.
>
>V4:
>1. Fix for the following smatch warning in the PCIe error driver,
> reported by kbuild test robot<[email protected]>:
> warn: should '((((1))) << (9 + i))' be a 64 bit type?
> if (err->val_bits & BIT(HISI_PCIE_LOCAL_VALID_ERR_MISC + i))
> ^^^ This should be BIT_ULL() because it goes up to 9 + 32.
>
>V3:
>1. Fix the comments from Bjorn Helgaas.
>
>V2:
>1. Changes in the HiSilicon PCIe controller's error handling driver
> for the comments from Bjorn Helgaas.
>
>2. Changes in the APEI interface to support reporting the vendor error
> for module with multiple devices, but use the same section type.
> In the error handler will use socket id/sub module id etc to distinguish
> the device.
>
>V1:
>1. Fix comments from James Morse.
>
>2. add driver to handle HiSilicon hip08 PCIe controller's errors,
> which is an application of the above interface.
>
>Shiju Jose (1):
> ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records
>
>Yicong Yang (1):
> PCI: hip: Add handling of HiSilicon HIP PCIe controller errors
>
> drivers/acpi/apei/ghes.c | 63 +++++
> drivers/pci/controller/Kconfig | 7 +
> drivers/pci/controller/Makefile | 1 +
> drivers/pci/controller/pcie-hisi-error.c | 327 +++++++++++++++++++++++
> include/acpi/ghes.h | 18 ++
> 5 files changed, 416 insertions(+)
> create mode 100644 drivers/pci/controller/pcie-hisi-error.c
>
>--
>2.17.1
>
>
>_______________________________________________
>Linuxarm mailing list
>[email protected]
>http://hulk.huawei.com/mailman/listinfo/linuxarm

2020-09-15 18:28:27

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor specific HW errors

On Tue, Sep 15, 2020 at 07:31:50PM +0200, Rafael J. Wysocki wrote:
> On Mon, Sep 14, 2020 at 2:34 PM Shiju Jose <[email protected]> wrote:
> >
> > Hello,
> >
> > Can you help to merge this series?
>
> Do you want this series to go in through the ACPI tree?

It crosses ACPI and vendor-specific PCI, but the bulk of the changes
are in PCI. I gave some comments on the design and acked the PCI part
from my point of view. I envisioned Lorenzo merging it since he takes
care of drivers/pci/controller/*, but either that (given your ack for
the ACPI part) or ACPI would be OK with me.

> > > drivers/acpi/apei/ghes.c | 63 +++++
> > > drivers/pci/controller/Kconfig | 7 +
> > > drivers/pci/controller/Makefile | 1 +
> > > drivers/pci/controller/pcie-hisi-error.c | 327 +++++++++++++++++++++++
> > > include/acpi/ghes.h | 18 ++
> > > 5 files changed, 416 insertions(+)
> > > create mode 100644 drivers/pci/controller/pcie-hisi-error.c

2020-09-15 18:46:23

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor specific HW errors

On Mon, Sep 14, 2020 at 2:34 PM Shiju Jose <[email protected]> wrote:
>
> Hello,
>
> Can you help to merge this series?

Do you want this series to go in through the ACPI tree?

> >-----Original Message-----
> >From: Linuxarm [mailto:[email protected]] On Behalf Of Shiju
> >Jose
> >Sent: 03 September 2020 13:35
> >To: [email protected]; [email protected]; linux-
> >[email protected]; [email protected]; [email protected];
> >[email protected]; [email protected]; [email protected];
> >[email protected]; [email protected]; [email protected];
> >[email protected]; [email protected]
> >Cc: Linuxarm <[email protected]>
> >Subject: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor
> >specific HW errors
> >
> >CPER records describing a firmware-first error are identified by GUID.
> >The ghes driver currently logs, but ignores any unknown CPER records.
> >This prevents describing errors that can't be represented by a standard entry,
> >that would otherwise allow a driver to recover from an error.
> >The UEFI spec calls these 'Non-standard Section Body' (N.2.3 of version 2.8).
> >
> >patch set
> >1. add the notifier chain for these non-standard/vendor-records
> > in the ghes driver.
> >
> >2. add the driver to handle HiSilicon HIP PCIe controller's errors.
> >
> >Changes:
> >
> >V15:
> >1. Change in the HIP PCIe error handling driver
> > for a comment by Andy Shevchenko.
> > Removed "depends on ACPI" as it already depends on
> > it through ACPI_APEI_GHES.
> >
> >V14:
> >1. Add patch[1] posted by James to the series.
> >
> >2. Following changes made for Bjorn's comments,
> >2.1 Deleted stub code from ghes.h
> >2.2 Made CONFIG_PCIE_HISI_ERR depend on CONFIG_ACPI_APEI_GHES.
> >
> >V13:
> >1. Following changes in the HIP PCIe error handling driver.
> >1.1 Add Bjorn's acked-by.
> >1.2. Address the comments and macros order Bjorn mentioned.
> > Fix the words in the commit.
> >
> >V12:
> >1. Changed the Signed-off-by tag to Co-developed-by tag in the patch
> > "ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records"
> >
> >V11:
> >1. Following modifications made by James Morse in the APEI patch
> > for the vendor error record.
> > - Removed kfifo and ghes_gdata_pool. Expanded commit message.
> >
> >2. Changes in the HIP PCIe error handling driver
> > for the comments by Andy Shevchenko.
> >
> >V10:
> >1. Changes for Bjorn's comments on HIP PCIe error handler driver
> > and APEI patch.
> >
> >2. Changes in the HIP PCIe error handler driver
> > for the feedbacks by Andy Shevchenko.
> >
> >V9:
> >1. Fixed 2 improvements suggested by the kbuild test robot.
> >1.1 Change ghes_gdata_pool_init() as static function.
> >1.2. Removed using buffer to store the error data for
> > logging in the hisi_pcie_handle_error()
> >
> >V8:
> >1. Removed reporting the standard errors through the interface
> > because of the conflict with the recent patches in the
> > memory error handling path.
> >2. Fix comments by Dan Carpenter.
> >
> >V7:
> >1. Add changes in the APEI driver suggested by Borislav Petkov, for
> > queuing up all the non-fatal HW errors to the work queue and
> > notify the registered kernel drivers from the bottom half using
> > blocking notifier, common interface for both standard and
> > vendor-spcific errors.
> >2. Fix for further feedbacks in v5 HIP PCIe error handler driver
> > by Bjorn Helgaas.
> >
> >V6:
> >1. Fix few changes in the patch subject line suggested by Bjorn Helgaas.
> >
> >V5:
> >1. Fix comments from James Morse.
> >1.1 Changed the notification method to use the atomic_notifier_chain.
> >1.2 Add the error handled status for the user space.
> >
> >V4:
> >1. Fix for the following smatch warning in the PCIe error driver,
> > reported by kbuild test robot<[email protected]>:
> > warn: should '((((1))) << (9 + i))' be a 64 bit type?
> > if (err->val_bits & BIT(HISI_PCIE_LOCAL_VALID_ERR_MISC + i))
> > ^^^ This should be BIT_ULL() because it goes up to 9 + 32.
> >
> >V3:
> >1. Fix the comments from Bjorn Helgaas.
> >
> >V2:
> >1. Changes in the HiSilicon PCIe controller's error handling driver
> > for the comments from Bjorn Helgaas.
> >
> >2. Changes in the APEI interface to support reporting the vendor error
> > for module with multiple devices, but use the same section type.
> > In the error handler will use socket id/sub module id etc to distinguish
> > the device.
> >
> >V1:
> >1. Fix comments from James Morse.
> >
> >2. add driver to handle HiSilicon hip08 PCIe controller's errors,
> > which is an application of the above interface.
> >
> >Shiju Jose (1):
> > ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records
> >
> >Yicong Yang (1):
> > PCI: hip: Add handling of HiSilicon HIP PCIe controller errors
> >
> > drivers/acpi/apei/ghes.c | 63 +++++
> > drivers/pci/controller/Kconfig | 7 +
> > drivers/pci/controller/Makefile | 1 +
> > drivers/pci/controller/pcie-hisi-error.c | 327 +++++++++++++++++++++++
> > include/acpi/ghes.h | 18 ++
> > 5 files changed, 416 insertions(+)
> > create mode 100644 drivers/pci/controller/pcie-hisi-error.c
> >
> >--
> >2.17.1
> >
> >
> >_______________________________________________
> >Linuxarm mailing list
> >[email protected]
> >http://hulk.huawei.com/mailman/listinfo/linuxarm

2020-09-15 19:13:56

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor specific HW errors

On Tue, Sep 15, 2020 at 8:17 PM Bjorn Helgaas <[email protected]> wrote:
>
> On Tue, Sep 15, 2020 at 07:31:50PM +0200, Rafael J. Wysocki wrote:
> > On Mon, Sep 14, 2020 at 2:34 PM Shiju Jose <[email protected]> wrote:
> > >
> > > Hello,
> > >
> > > Can you help to merge this series?
> >
> > Do you want this series to go in through the ACPI tree?
>
> It crosses ACPI and vendor-specific PCI, but the bulk of the changes
> are in PCI. I gave some comments on the design and acked the PCI part
> from my point of view. I envisioned Lorenzo merging it since he takes
> care of drivers/pci/controller/*, but either that (given your ack for
> the ACPI part) or ACPI would be OK with me.

Well, please feel free to add an ACK from me to this then.

Cheers!

> > > > drivers/acpi/apei/ghes.c | 63 +++++
> > > > drivers/pci/controller/Kconfig | 7 +
> > > > drivers/pci/controller/Makefile | 1 +
> > > > drivers/pci/controller/pcie-hisi-error.c | 327 +++++++++++++++++++++++
> > > > include/acpi/ghes.h | 18 ++
> > > > 5 files changed, 416 insertions(+)
> > > > create mode 100644 drivers/pci/controller/pcie-hisi-error.c

2020-09-16 09:55:16

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH v15 0/2] ACPI / APEI: Add support to notify the vendor specific HW errors

On Thu, Sep 03, 2020 at 01:34:54PM +0100, Shiju Jose wrote:
> CPER records describing a firmware-first error are identified by GUID.
> The ghes driver currently logs, but ignores any unknown CPER records.
> This prevents describing errors that can't be represented by a standard
> entry, that would otherwise allow a driver to recover from an error.
> The UEFI spec calls these 'Non-standard Section Body' (N.2.3 of
> version 2.8).
>
> patch set
> 1. add the notifier chain for these non-standard/vendor-records
> in the ghes driver.
>
> 2. add the driver to handle HiSilicon HIP PCIe controller's errors.
>
> Changes:
>
> V15:
> 1. Change in the HIP PCIe error handling driver
> for a comment by Andy Shevchenko.
> Removed "depends on ACPI" as it already depends on
> it through ACPI_APEI_GHES.
>
> V14:
> 1. Add patch[1] posted by James to the series.
>
> 2. Following changes made for Bjorn's comments,
> 2.1 Deleted stub code from ghes.h
> 2.2 Made CONFIG_PCIE_HISI_ERR depend on CONFIG_ACPI_APEI_GHES.
>
> V13:
> 1. Following changes in the HIP PCIe error handling driver.
> 1.1 Add Bjorn's acked-by.
> 1.2. Address the comments and macros order Bjorn mentioned.
> Fix the words in the commit.
>
> V12:
> 1. Changed the Signed-off-by tag to Co-developed-by tag in the patch
> "ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records"
>
> V11:
> 1. Following modifications made by James Morse in the APEI patch
> for the vendor error record.
> - Removed kfifo and ghes_gdata_pool. Expanded commit message.
>
> 2. Changes in the HIP PCIe error handling driver
> for the comments by Andy Shevchenko.
>
> V10:
> 1. Changes for Bjorn's comments on HIP PCIe error handler driver
> and APEI patch.
>
> 2. Changes in the HIP PCIe error handler driver
> for the feedbacks by Andy Shevchenko.
>
> V9:
> 1. Fixed 2 improvements suggested by the kbuild test robot.
> 1.1 Change ghes_gdata_pool_init() as static function.
> 1.2. Removed using buffer to store the error data for
> logging in the hisi_pcie_handle_error()
>
> V8:
> 1. Removed reporting the standard errors through the interface
> because of the conflict with the recent patches in the
> memory error handling path.
> 2. Fix comments by Dan Carpenter.
>
> V7:
> 1. Add changes in the APEI driver suggested by Borislav Petkov, for
> queuing up all the non-fatal HW errors to the work queue and
> notify the registered kernel drivers from the bottom half using
> blocking notifier, common interface for both standard and
> vendor-spcific errors.
> 2. Fix for further feedbacks in v5 HIP PCIe error handler driver
> by Bjorn Helgaas.
>
> V6:
> 1. Fix few changes in the patch subject line suggested by Bjorn Helgaas.
>
> V5:
> 1. Fix comments from James Morse.
> 1.1 Changed the notification method to use the atomic_notifier_chain.
> 1.2 Add the error handled status for the user space.
>
> V4:
> 1. Fix for the following smatch warning in the PCIe error driver,
> reported by kbuild test robot<[email protected]>:
> warn: should '((((1))) << (9 + i))' be a 64 bit type?
> if (err->val_bits & BIT(HISI_PCIE_LOCAL_VALID_ERR_MISC + i))
> ^^^ This should be BIT_ULL() because it goes up to 9 + 32.
>
> V3:
> 1. Fix the comments from Bjorn Helgaas.
>
> V2:
> 1. Changes in the HiSilicon PCIe controller's error handling driver
> for the comments from Bjorn Helgaas.
>
> 2. Changes in the APEI interface to support reporting the vendor error
> for module with multiple devices, but use the same section type.
> In the error handler will use socket id/sub module id etc to distinguish
> the device.
>
> V1:
> 1. Fix comments from James Morse.
>
> 2. add driver to handle HiSilicon hip08 PCIe controller's errors,
> which is an application of the above interface.
>
> Shiju Jose (1):
> ACPI / APEI: Add a notifier chain for unknown (vendor) CPER records
>
> Yicong Yang (1):
> PCI: hip: Add handling of HiSilicon HIP PCIe controller errors
>
> drivers/acpi/apei/ghes.c | 63 +++++
> drivers/pci/controller/Kconfig | 7 +
> drivers/pci/controller/Makefile | 1 +
> drivers/pci/controller/pcie-hisi-error.c | 327 +++++++++++++++++++++++
> include/acpi/ghes.h | 18 ++
> 5 files changed, 416 insertions(+)
> create mode 100644 drivers/pci/controller/pcie-hisi-error.c

Applied to pci/apei with Bjorn/Rafael ACKs, thanks.

Lorenzo