2023-09-15 17:42:02

by Shiju Jose

[permalink] [raw]
Subject: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2 and configure scrubbers

From: Shiju Jose <[email protected]>

This series add,
1. support for ACPI RASF(RAS feature table) PCC interfaces
to communicate with the HW patrol scrubber in the platform,
as per ACPI 5.1 & upwards revision. Section 5.2.20.

2. support for ACPI RAS2(RAS2 feature table), as per
ACPI 6.5 & upwards revision. Section 5.2.21.

3. scrub driver supports configuring parameters of the memory
scrubbers in the system. This driver has been implemented
based on the hwmon subsystem.

The features have tested with RASF and RAS2 emulation in the QEMU.

Previous references to the memory scub and RASF topics.
https://lore.kernel.org/all/[email protected]/
https://patchwork.kernel.org/project/linux-arm-kernel/patch/CS1PR84MB0038718F49DBC0FF03919E1184390@CS1PR84MB0038.NAMPRD84.PROD.OUTLOOK.COM/

A Somasundaram (2):
ACPI:RASF: Add extract RASF table to register RASF platform devices
ACPI:RASF: Add common library for RASF and RAS2 PCC interfaces

Shiju Jose (7):
memory: scrub: Add scrub driver supports configuring memory scrubbers
in the system
memory: scrub: sysfs: Add Documentation entries for set of scrub
attributes
Documentation/scrub-configure.rst: Add documentation for scrub driver
memory: RASF: Add memory RASF driver
ACPICA: ACPI 6.5: Add support for RAS2 table
ACPI:RAS2: Add driver for ACPI RAS2 feature table (RAS2)
memory: RAS2: Add memory RAS2 driver

.../ABI/testing/sysfs-class-scrub-configure | 82 ++++
Documentation/scrub-configure.rst | 55 +++
drivers/acpi/Kconfig | 15 +
drivers/acpi/Makefile | 1 +
drivers/acpi/ras2_acpi.c | 97 ++++
drivers/acpi/rasf_acpi.c | 71 +++
drivers/acpi/rasf_acpi_common.c | 272 +++++++++++
drivers/memory/Kconfig | 15 +
drivers/memory/Makefile | 3 +
drivers/memory/ras2.c | 334 +++++++++++++
drivers/memory/rasf.c | 335 +++++++++++++
drivers/memory/rasf_common.c | 251 ++++++++++
drivers/memory/scrub/Kconfig | 11 +
drivers/memory/scrub/Makefile | 6 +
drivers/memory/scrub/memory-scrub.c | 452 ++++++++++++++++++
include/acpi/actbl2.h | 55 +++
include/acpi/rasf_acpi.h | 59 +++
include/memory/memory-scrub.h | 85 ++++
include/memory/rasf.h | 82 ++++
19 files changed, 2281 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-class-scrub-configure
create mode 100644 Documentation/scrub-configure.rst
create mode 100755 drivers/acpi/ras2_acpi.c
create mode 100755 drivers/acpi/rasf_acpi.c
create mode 100755 drivers/acpi/rasf_acpi_common.c
create mode 100644 drivers/memory/ras2.c
create mode 100644 drivers/memory/rasf.c
create mode 100644 drivers/memory/rasf_common.c
create mode 100644 drivers/memory/scrub/Kconfig
create mode 100644 drivers/memory/scrub/Makefile
create mode 100755 drivers/memory/scrub/memory-scrub.c
create mode 100755 include/acpi/rasf_acpi.h
create mode 100755 include/memory/memory-scrub.h
create mode 100755 include/memory/rasf.h

--
2.34.1


2023-09-15 20:54:52

by Shiju Jose

[permalink] [raw]
Subject: [RFC PATCH 8/9] ACPI:RAS2: Add driver for ACPI RAS2 feature table (RAS2)

From: Shiju Jose <[email protected]>

Add support for ACPI RAS2 feature table (RAS2) defined in the ACPI 6.5
Specification, section 5.2.21.
This driver contains RAS2 Init, which extracts the RAS2 table.
Driver adds platform device, for each memory feature, which binds
to the RAS2 memory driver.

Signed-off-by: Shiju Jose <[email protected]>
---
drivers/acpi/Makefile | 2 +-
drivers/acpi/ras2_acpi.c | 97 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 98 insertions(+), 1 deletion(-)
create mode 100755 drivers/acpi/ras2_acpi.c

diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index dd62d936cbe1..4fbe7ea0be27 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -104,7 +104,7 @@ obj-$(CONFIG_ACPI_CUSTOM_METHOD)+= custom_method.o
obj-$(CONFIG_ACPI_BGRT) += bgrt.o
obj-$(CONFIG_ACPI_CPPC_LIB) += cppc_acpi.o
obj-$(CONFIG_ACPI_SPCR_TABLE) += spcr.o
-obj-$(CONFIG_ACPI_RASF) += rasf_acpi_common.o rasf_acpi.o
+obj-$(CONFIG_ACPI_RASF) += rasf_acpi_common.o rasf_acpi.o ras2_acpi.o
obj-$(CONFIG_ACPI_DEBUGGER_USER) += acpi_dbg.o
obj-$(CONFIG_ACPI_PPTT) += pptt.o
obj-$(CONFIG_ACPI_PFRUT) += pfr_update.o pfr_telemetry.o
diff --git a/drivers/acpi/ras2_acpi.c b/drivers/acpi/ras2_acpi.c
new file mode 100755
index 000000000000..b8a7740355a8
--- /dev/null
+++ b/drivers/acpi/ras2_acpi.c
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * ras2_acpi.c - Implementation of ACPI RAS2 feature table processing
+ * functions.
+ *
+ * Copyright (c) 2023 HiSilicon Limited.
+ *
+ * Support for
+ * RAS2 - ACPI 6.5 Specification, section 5.2.21
+ *
+ * Driver contains RAS2 init, which extracts the RAS2 table and
+ * registers the PCC channel for communicating with the ACPI compliant
+ * platform that contains RAS2 command support in hardware.Driver adds
+ * platform device which binds to the RAS2 memory driver.
+ */
+
+#define pr_fmt(fmt) "ACPI RAS2: " fmt
+
+#include <linux/export.h>
+#include <linux/delay.h>
+#include <linux/ktime.h>
+#include <linux/platform_device.h>
+#include <acpi/rasf_acpi.h>
+#include <acpi/acpixf.h>
+
+#define RAS2_FEATURE_TYPE_MEMORY 0x00
+
+int __init ras2_acpi_init(void)
+{
+ u8 count;
+ acpi_status status;
+ acpi_size ras2_size;
+ int pcc_subspace_idx;
+ struct platform_device *pdev;
+ struct acpi_table_ras2 *pRas2Table;
+ struct acpi_ras2_pcc_desc *pcc_desc_list;
+ struct platform_device **pdev_list = NULL;
+ struct acpi_table_header *pAcpiTable = NULL;
+
+ status = acpi_get_table("RAS2", 0, &pAcpiTable);
+ if (ACPI_FAILURE(status) || !pAcpiTable) {
+ pr_err("ACPI RAS2 driver failed to initialize, get table failed\n");
+ return RASF_FAILURE;
+ }
+
+ ras2_size = pAcpiTable->length;
+ if (ras2_size < sizeof(struct acpi_table_ras2)) {
+ pr_err("ACPI RAS2 table present but broken (too short #1)\n");
+ goto free_ras2_table;
+ }
+
+ pRas2Table = (struct acpi_table_ras2 *)pAcpiTable;
+
+ if (pRas2Table->num_pcc_descs <= 0) {
+ pr_err("ACPI RAS2 table does not contain PCC descriptors\n");
+ goto free_ras2_table;
+ }
+
+ pdev_list = kzalloc((pRas2Table->num_pcc_descs * sizeof(struct platform_device *)),
+ GFP_KERNEL);
+ if (!pdev_list)
+ goto free_ras2_table;
+
+ pcc_desc_list = (struct acpi_ras2_pcc_desc *)
+ ((void *)pRas2Table + sizeof(struct acpi_table_ras2));
+ count = 0;
+ while (count < pRas2Table->num_pcc_descs) {
+ if (pcc_desc_list->feature_type == RAS2_FEATURE_TYPE_MEMORY) {
+ pcc_subspace_idx = pcc_desc_list->channel_id;
+ /* Add the platform device and bind ras2 memory driver */
+ pdev = rasf_add_platform_device("ras2", &pcc_subspace_idx,
+ sizeof(pcc_subspace_idx));
+ if (!pdev)
+ goto free_ras2_pdev;
+ pdev_list[count] = pdev;
+ }
+ count++;
+ pcc_desc_list = pcc_desc_list + sizeof(struct acpi_ras2_pcc_desc);
+ }
+
+ acpi_put_table(pAcpiTable);
+ return RASF_SUCCESS;
+
+free_ras2_pdev:
+ count = 0;
+ while (count < pRas2Table->num_pcc_descs) {
+ if (pcc_desc_list->feature_type ==
+ RAS2_FEATURE_TYPE_MEMORY)
+ platform_device_put(pdev_list[count++]);
+ }
+ kfree(pdev_list);
+
+free_ras2_table:
+ acpi_put_table(pAcpiTable);
+ return RASF_FAILURE;
+}
+late_initcall(ras2_acpi_init)
--
2.34.1

2023-09-18 10:36:41

by Shiju Jose

[permalink] [raw]
Subject: RE: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2 and configure scrubbers

[+cc [email protected]]

Hello,

>-----Original Message-----
>From: Jiaqi Yan <[email protected]>
>Sent: 17 September 2023 22:14
>To: Shiju Jose <[email protected]>
>Cc: [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]; [email protected];
>[email protected]; [email protected]; [email protected];
>[email protected]; [email protected]; Linuxarm
><[email protected]>; Jonathan Cameron
><[email protected]>; tanxiaofei <[email protected]>;
>Zengtao (B) <[email protected]>
>Subject: Re: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2
>and configure scrubbers
>
>On Fri, Sep 15, 2023 at 10:29 AM <[email protected]> wrote:
>>
>> From: Shiju Jose <[email protected]>
>>
>> This series add,
>> 1. support for ACPI RASF(RAS feature table) PCC interfaces to
>> communicate with the HW patrol scrubber in the platform, as per ACPI
>> 5.1 & upwards revision. Section 5.2.20.
>>
>> 2. support for ACPI RAS2(RAS2 feature table), as per ACPI 6.5 &
>> upwards revision. Section 5.2.21.
>>
>> 3. scrub driver supports configuring parameters of the memory
>> scrubbers in the system. This driver has been implemented based on the
>> hwmon subsystem.
>>
>> The features have tested with RASF and RAS2 emulation in the QEMU.
>
>I am very curious how the test is done. Does the hw patrol scrubber on host
>actually been driven by the driver to scrub memory DIMMs (doesn't seem so to
>me, but do correct me)? Or it is like to a VM scrubbing is simulated and no real
>op to DIMMs?
Intent here is hardware scrubber on host as far as we are concerned.
Could be used for VM too perhaps. We did it with QEMU emulation for now
to get the flexibility of configuration. However there will be other scrub controls
over time, such as DDR5 ECS.
https://media-www.micron.com/-/media/client/global/documents/products/white-paper/ddr5_new_features_white_paper.pdf?rev=b98f4977d9334b4aa5d0d211a92bf14a

Also found there is very simple support for scrub control in edac, and an alternative path
would be to look at extending that to sufficient complexity to support region based scanning.
https://elixir.bootlin.com/linux/latest/source/include/linux/edac.h#L512

>
>>
>> Previous references to the memory scub and RASF topics.
>> https://lore.kernel.org/all/[email protected]
>> om/
>> https://patchwork.kernel.org/project/linux-arm-kernel/patch/CS1PR84MB0
>>
>[email protected]
>OK.COM/
>>
>> A Somasundaram (2):
>> ACPI:RASF: Add extract RASF table to register RASF platform devices
>> ACPI:RASF: Add common library for RASF and RAS2 PCC interfaces
>>
>> Shiju Jose (7):
>> memory: scrub: Add scrub driver supports configuring memory scrubbers
>> in the system
>> memory: scrub: sysfs: Add Documentation entries for set of scrub
>> attributes
>> Documentation/scrub-configure.rst: Add documentation for scrub driver
>> memory: RASF: Add memory RASF driver
>> ACPICA: ACPI 6.5: Add support for RAS2 table
>> ACPI:RAS2: Add driver for ACPI RAS2 feature table (RAS2)
>> memory: RAS2: Add memory RAS2 driver
>>
>> .../ABI/testing/sysfs-class-scrub-configure | 82 ++++
>> Documentation/scrub-configure.rst | 55 +++
>> drivers/acpi/Kconfig | 15 +
>> drivers/acpi/Makefile | 1 +
>> drivers/acpi/ras2_acpi.c | 97 ++++
>> drivers/acpi/rasf_acpi.c | 71 +++
>> drivers/acpi/rasf_acpi_common.c | 272 +++++++++++
>> drivers/memory/Kconfig | 15 +
>> drivers/memory/Makefile | 3 +
>> drivers/memory/ras2.c | 334 +++++++++++++
>> drivers/memory/rasf.c | 335 +++++++++++++
>> drivers/memory/rasf_common.c | 251 ++++++++++
>> drivers/memory/scrub/Kconfig | 11 +
>> drivers/memory/scrub/Makefile | 6 +
>> drivers/memory/scrub/memory-scrub.c | 452 ++++++++++++++++++
>> include/acpi/actbl2.h | 55 +++
>> include/acpi/rasf_acpi.h | 59 +++
>> include/memory/memory-scrub.h | 85 ++++
>> include/memory/rasf.h | 82 ++++
>> 19 files changed, 2281 insertions(+)
>> create mode 100644
>> Documentation/ABI/testing/sysfs-class-scrub-configure
>> create mode 100644 Documentation/scrub-configure.rst create mode
>> 100755 drivers/acpi/ras2_acpi.c create mode 100755
>> drivers/acpi/rasf_acpi.c create mode 100755
>> drivers/acpi/rasf_acpi_common.c create mode 100644
>> drivers/memory/ras2.c create mode 100644 drivers/memory/rasf.c
>> create mode 100644 drivers/memory/rasf_common.c create mode 100644
>> drivers/memory/scrub/Kconfig create mode 100644
>> drivers/memory/scrub/Makefile create mode 100755
>> drivers/memory/scrub/memory-scrub.c
>> create mode 100755 include/acpi/rasf_acpi.h create mode 100755
>> include/memory/memory-scrub.h create mode 100755
>> include/memory/rasf.h
>>
>> --
>> 2.34.1
>>

Thanks,
Shiju

2023-09-18 14:04:54

by Jiaqi Yan

[permalink] [raw]
Subject: Re: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2 and configure scrubbers

On Fri, Sep 15, 2023 at 10:29 AM <[email protected]> wrote:
>
> From: Shiju Jose <[email protected]>
>
> This series add,
> 1. support for ACPI RASF(RAS feature table) PCC interfaces
> to communicate with the HW patrol scrubber in the platform,
> as per ACPI 5.1 & upwards revision. Section 5.2.20.
>
> 2. support for ACPI RAS2(RAS2 feature table), as per
> ACPI 6.5 & upwards revision. Section 5.2.21.
>
> 3. scrub driver supports configuring parameters of the memory
> scrubbers in the system. This driver has been implemented
> based on the hwmon subsystem.
>
> The features have tested with RASF and RAS2 emulation in the QEMU.

I am very curious how the test is done. Does the hw patrol scrubber on
host actually been driven by the driver to scrub memory DIMMs (doesn't
seem so to me, but do correct me)? Or it is like to a VM scrubbing is
simulated and no real op to DIMMs?

>
> Previous references to the memory scub and RASF topics.
> https://lore.kernel.org/all/[email protected]/
> https://patchwork.kernel.org/project/linux-arm-kernel/patch/CS1PR84MB0038718F49DBC0FF03919E1184390@CS1PR84MB0038.NAMPRD84.PROD.OUTLOOK.COM/
>
> A Somasundaram (2):
> ACPI:RASF: Add extract RASF table to register RASF platform devices
> ACPI:RASF: Add common library for RASF and RAS2 PCC interfaces
>
> Shiju Jose (7):
> memory: scrub: Add scrub driver supports configuring memory scrubbers
> in the system
> memory: scrub: sysfs: Add Documentation entries for set of scrub
> attributes
> Documentation/scrub-configure.rst: Add documentation for scrub driver
> memory: RASF: Add memory RASF driver
> ACPICA: ACPI 6.5: Add support for RAS2 table
> ACPI:RAS2: Add driver for ACPI RAS2 feature table (RAS2)
> memory: RAS2: Add memory RAS2 driver
>
> .../ABI/testing/sysfs-class-scrub-configure | 82 ++++
> Documentation/scrub-configure.rst | 55 +++
> drivers/acpi/Kconfig | 15 +
> drivers/acpi/Makefile | 1 +
> drivers/acpi/ras2_acpi.c | 97 ++++
> drivers/acpi/rasf_acpi.c | 71 +++
> drivers/acpi/rasf_acpi_common.c | 272 +++++++++++
> drivers/memory/Kconfig | 15 +
> drivers/memory/Makefile | 3 +
> drivers/memory/ras2.c | 334 +++++++++++++
> drivers/memory/rasf.c | 335 +++++++++++++
> drivers/memory/rasf_common.c | 251 ++++++++++
> drivers/memory/scrub/Kconfig | 11 +
> drivers/memory/scrub/Makefile | 6 +
> drivers/memory/scrub/memory-scrub.c | 452 ++++++++++++++++++
> include/acpi/actbl2.h | 55 +++
> include/acpi/rasf_acpi.h | 59 +++
> include/memory/memory-scrub.h | 85 ++++
> include/memory/rasf.h | 82 ++++
> 19 files changed, 2281 insertions(+)
> create mode 100644 Documentation/ABI/testing/sysfs-class-scrub-configure
> create mode 100644 Documentation/scrub-configure.rst
> create mode 100755 drivers/acpi/ras2_acpi.c
> create mode 100755 drivers/acpi/rasf_acpi.c
> create mode 100755 drivers/acpi/rasf_acpi_common.c
> create mode 100644 drivers/memory/ras2.c
> create mode 100644 drivers/memory/rasf.c
> create mode 100644 drivers/memory/rasf_common.c
> create mode 100644 drivers/memory/scrub/Kconfig
> create mode 100644 drivers/memory/scrub/Makefile
> create mode 100755 drivers/memory/scrub/memory-scrub.c
> create mode 100755 include/acpi/rasf_acpi.h
> create mode 100755 include/memory/memory-scrub.h
> create mode 100755 include/memory/rasf.h
>
> --
> 2.34.1
>

2023-09-18 19:22:09

by Jiaqi Yan

[permalink] [raw]
Subject: Re: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2 and configure scrubbers

On Mon, Sep 18, 2023 at 3:20 AM Shiju Jose <[email protected]> wrote:
>
> [+cc [email protected]]
>
> Hello,
>
> >-----Original Message-----
> >From: Jiaqi Yan <[email protected]>
> >Sent: 17 September 2023 22:14
> >To: Shiju Jose <[email protected]>
> >Cc: [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]; [email protected];
> >[email protected]; [email protected]; [email protected];
> >[email protected]; [email protected]; Linuxarm
> ><[email protected]>; Jonathan Cameron
> ><[email protected]>; tanxiaofei <[email protected]>;
> >Zengtao (B) <[email protected]>
> >Subject: Re: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2
> >and configure scrubbers
> >
> >On Fri, Sep 15, 2023 at 10:29 AM <[email protected]> wrote:
> >>
> >> From: Shiju Jose <[email protected]>
> >>
> >> This series add,
> >> 1. support for ACPI RASF(RAS feature table) PCC interfaces to
> >> communicate with the HW patrol scrubber in the platform, as per ACPI
> >> 5.1 & upwards revision. Section 5.2.20.
> >>
> >> 2. support for ACPI RAS2(RAS2 feature table), as per ACPI 6.5 &
> >> upwards revision. Section 5.2.21.
> >>
> >> 3. scrub driver supports configuring parameters of the memory
> >> scrubbers in the system. This driver has been implemented based on the
> >> hwmon subsystem.
> >>
> >> The features have tested with RASF and RAS2 emulation in the QEMU.
> >
> >I am very curious how the test is done. Does the hw patrol scrubber on host
> >actually been driven by the driver to scrub memory DIMMs (doesn't seem so to
> >me, but do correct me)? Or it is like to a VM scrubbing is simulated and no real
> >op to DIMMs?
> Intent here is hardware scrubber on host as far as we are concerned.

Sorry maybe my question was not clear, so let me try again.

Does the driver being tested on a machine and directly or indirectly
control (start/stop) hardware patrol scrubber to scrub physical
memory? what are the CPU chip, memory controller, and DIMM chips?

> Could be used for VM too perhaps. We did it with QEMU emulation for now
> to get the flexibility of configuration. However there will be other scrub controls
> over time, such as DDR5 ECS.
> https://media-www.micron.com/-/media/client/global/documents/products/white-paper/ddr5_new_features_white_paper.pdf?rev=b98f4977d9334b4aa5d0d211a92bf14a
>
> Also found there is very simple support for scrub control in edac, and an alternative path
> would be to look at extending that to sufficient complexity to support region based scanning.
> https://elixir.bootlin.com/linux/latest/source/include/linux/edac.h#L512
>
> >
> >>
> >> Previous references to the memory scub and RASF topics.
> >> https://lore.kernel.org/all/[email protected]
> >> om/
> >> https://patchwork.kernel.org/project/linux-arm-kernel/patch/CS1PR84MB0
> >>
> >[email protected]
> >OK.COM/
> >>
> >> A Somasundaram (2):
> >> ACPI:RASF: Add extract RASF table to register RASF platform devices
> >> ACPI:RASF: Add common library for RASF and RAS2 PCC interfaces
> >>
> >> Shiju Jose (7):
> >> memory: scrub: Add scrub driver supports configuring memory scrubbers
> >> in the system
> >> memory: scrub: sysfs: Add Documentation entries for set of scrub
> >> attributes
> >> Documentation/scrub-configure.rst: Add documentation for scrub driver
> >> memory: RASF: Add memory RASF driver
> >> ACPICA: ACPI 6.5: Add support for RAS2 table
> >> ACPI:RAS2: Add driver for ACPI RAS2 feature table (RAS2)
> >> memory: RAS2: Add memory RAS2 driver
> >>
> >> .../ABI/testing/sysfs-class-scrub-configure | 82 ++++
> >> Documentation/scrub-configure.rst | 55 +++
> >> drivers/acpi/Kconfig | 15 +
> >> drivers/acpi/Makefile | 1 +
> >> drivers/acpi/ras2_acpi.c | 97 ++++
> >> drivers/acpi/rasf_acpi.c | 71 +++
> >> drivers/acpi/rasf_acpi_common.c | 272 +++++++++++
> >> drivers/memory/Kconfig | 15 +
> >> drivers/memory/Makefile | 3 +
> >> drivers/memory/ras2.c | 334 +++++++++++++
> >> drivers/memory/rasf.c | 335 +++++++++++++
> >> drivers/memory/rasf_common.c | 251 ++++++++++
> >> drivers/memory/scrub/Kconfig | 11 +
> >> drivers/memory/scrub/Makefile | 6 +
> >> drivers/memory/scrub/memory-scrub.c | 452 ++++++++++++++++++
> >> include/acpi/actbl2.h | 55 +++
> >> include/acpi/rasf_acpi.h | 59 +++
> >> include/memory/memory-scrub.h | 85 ++++
> >> include/memory/rasf.h | 82 ++++
> >> 19 files changed, 2281 insertions(+)
> >> create mode 100644
> >> Documentation/ABI/testing/sysfs-class-scrub-configure
> >> create mode 100644 Documentation/scrub-configure.rst create mode
> >> 100755 drivers/acpi/ras2_acpi.c create mode 100755
> >> drivers/acpi/rasf_acpi.c create mode 100755
> >> drivers/acpi/rasf_acpi_common.c create mode 100644
> >> drivers/memory/ras2.c create mode 100644 drivers/memory/rasf.c
> >> create mode 100644 drivers/memory/rasf_common.c create mode 100644
> >> drivers/memory/scrub/Kconfig create mode 100644
> >> drivers/memory/scrub/Makefile create mode 100755
> >> drivers/memory/scrub/memory-scrub.c
> >> create mode 100755 include/acpi/rasf_acpi.h create mode 100755
> >> include/memory/memory-scrub.h create mode 100755
> >> include/memory/rasf.h
> >>
> >> --
> >> 2.34.1
> >>
>
> Thanks,
> Shiju

2023-09-19 08:43:47

by Shiju Jose

[permalink] [raw]
Subject: RE: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2 and configure scrubbers

>-----Original Message-----
>From: Jiaqi Yan <[email protected]>
>Sent: 18 September 2023 18:47
>To: Shiju Jose <[email protected]>
>Cc: [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]; [email protected];
>[email protected]; [email protected]; [email protected];
>[email protected]; [email protected]; Linuxarm
><[email protected]>; Jonathan Cameron
><[email protected]>; tanxiaofei <[email protected]>;
>Zengtao (B) <[email protected]>; [email protected]; [email protected];
>[email protected]; [email protected]
>Subject: Re: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF, ACPI RAS2
>and configure scrubbers
>
>On Mon, Sep 18, 2023 at 3:20 AM Shiju Jose <[email protected]> wrote:
>>
>> [+cc [email protected]]
>>
>> Hello,
>>
>> >-----Original Message-----
>> >From: Jiaqi Yan <[email protected]>
>> >Sent: 17 September 2023 22:14
>> >To: Shiju Jose <[email protected]>
>> >Cc: [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];
>[email protected];
>> >[email protected]; [email protected]; [email protected];
>> >[email protected]; [email protected]; Linuxarm
>> ><[email protected]>; Jonathan Cameron
>> ><[email protected]>; tanxiaofei <[email protected]>;
>> >Zengtao (B) <[email protected]>
>> >Subject: Re: [RFC PATCH 0/9] ACPI:RASF: Add support for ACPI RASF,
>> >ACPI RAS2 and configure scrubbers
>> >
>> >On Fri, Sep 15, 2023 at 10:29 AM <[email protected]> wrote:
>> >>
>> >> From: Shiju Jose <[email protected]>
>> >>
>> >> This series add,
>> >> 1. support for ACPI RASF(RAS feature table) PCC interfaces to
>> >> communicate with the HW patrol scrubber in the platform, as per
>> >> ACPI
>> >> 5.1 & upwards revision. Section 5.2.20.
>> >>
>> >> 2. support for ACPI RAS2(RAS2 feature table), as per ACPI 6.5 &
>> >> upwards revision. Section 5.2.21.
>> >>
>> >> 3. scrub driver supports configuring parameters of the memory
>> >> scrubbers in the system. This driver has been implemented based on
>> >> the hwmon subsystem.
>> >>
>> >> The features have tested with RASF and RAS2 emulation in the QEMU.
>> >
>> >I am very curious how the test is done. Does the hw patrol scrubber
>> >on host actually been driven by the driver to scrub memory DIMMs
>> >(doesn't seem so to me, but do correct me)? Or it is like to a VM
>> >scrubbing is simulated and no real op to DIMMs?
>> Intent here is hardware scrubber on host as far as we are concerned.
>
>Sorry maybe my question was not clear, so let me try again.
>
>Does the driver being tested on a machine and directly or indirectly control
>(start/stop) hardware patrol scrubber to scrub physical memory? what are the
>CPU chip, memory controller, and DIMM chips?
The driver has been tested with qemu_system_aarch64 with state machine to emulate
the RASF and RAS2 tables support for configuring parameters of a patrol scrubber.
Thus no real HW patrol scrubber and DIMM involved in the testing.

>
>> Could be used for VM too perhaps. We did it with QEMU emulation for
>> now to get the flexibility of configuration. However there will be
>> other scrub controls over time, such as DDR5 ECS.
>> https://media-www.micron.com/-/media/client/global/documents/products/
>> white-
>paper/ddr5_new_features_white_paper.pdf?rev=b98f4977d9334b4aa5d0
>> d211a92bf14a
>>
>> Also found there is very simple support for scrub control in edac, and

Thanks,
Shiju