[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251222094351.38792-7-tianruidong@linux.alibaba.com>
Date: Mon, 22 Dec 2025 17:43:39 +0800
From: Ruidong Tian <tianruidong@...ux.alibaba.com>
To: catalin.marinas@....com,
will@...nel.org,
lpieralisi@...nel.org,
guohanjun@...wei.com,
sudeep.holla@....com,
xueshuai@...ux.alibaba.com,
linux-kernel@...r.kernel.org,
linux-acpi@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
rafael@...nel.org,
lenb@...nel.org,
tony.luck@...el.com,
bp@...en8.de,
yazen.ghannam@....com,
misono.tomohiro@...itsu.com
Cc: tianruidong@...ux.alibaba.com
Subject: [PATCH v4 06/17] ras: AEST: Support RAS Common Fault Injection Model Extension
Add inject register descripted in Common Fault Injection Model
Extension.
Signed-off-by: Ruidong Tian <tianruidong@...ux.alibaba.com>
---
drivers/ras/aest/aest-core.c | 15 ++++++++++++++-
drivers/ras/aest/aest.h | 10 ++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/drivers/ras/aest/aest-core.c b/drivers/ras/aest/aest-core.c
index 84b2fb8127ff..1218ae51079c 100644
--- a/drivers/ras/aest/aest-core.c
+++ b/drivers/ras/aest/aest-core.c
@@ -124,7 +124,7 @@ static int aest_init_node(struct aest_device *adev, struct aest_node *node,
struct acpi_aest_node *anode)
{
int i, ret;
- u64 address;
+ u64 address, flags;
node->adev = adev;
node->info = anode;
@@ -145,6 +145,19 @@ static int aest_init_node(struct aest_device *adev, struct aest_node *node,
return -ENOMEM;
}
+ flags = anode->interface_hdr->flags;
+ address = node->info->common->fault_inject_register_base;
+ if ((flags & AEST_XFACE_FLAG_FAULT_INJECT) && address) {
+ if (address - anode->interface_hdr->address < node->group->size)
+ node->inj = node->base +
+ (address - anode->interface_hdr->address);
+ else {
+ node->inj = devm_ioremap(adev->dev, address, PAGE_SIZE);
+ if (!node->inj)
+ return -ENOMEM;
+ }
+ }
+
ret = aest_node_set_errgsr(adev, node);
if (ret)
return ret;
diff --git a/drivers/ras/aest/aest.h b/drivers/ras/aest/aest.h
index bf0b9a49fdaa..505ecd9635bc 100644
--- a/drivers/ras/aest/aest.h
+++ b/drivers/ras/aest/aest.h
@@ -60,6 +60,9 @@
#define ERXMISC1 0x28
#define ERXMISC2 0x30
#define ERXMISC3 0x38
+#define ERXPFGF 0x800
+#define ERXPFGCTL 0x808
+#define ERXPFGCDN 0x810
#define GIC_ERRDEVARCH 0xFFBC
@@ -120,6 +123,7 @@ struct aest_node {
u8 type;
void *errgsr;
void *base;
+ void *inj;
/*
* This bitmap indicates which of the error records within this error
@@ -208,6 +212,9 @@ static inline u64 aest_sysreg_read(void *__unused, u32 offset)
CASE_READ(res, ERXMISC1)
CASE_READ(res, ERXMISC2)
CASE_READ(res, ERXMISC3)
+ CASE_READ(res, ERXPFGF)
+ CASE_READ(res, ERXPFGCTL)
+ CASE_READ(res, ERXPFGCDN)
default :
res = 0;
}
@@ -225,6 +232,9 @@ static inline void aest_sysreg_write(void *base, u32 offset, u64 val)
CASE_WRITE(val, ERXMISC1)
CASE_WRITE(val, ERXMISC2)
CASE_WRITE(val, ERXMISC3)
+ CASE_WRITE(val, ERXPFGF)
+ CASE_WRITE(val, ERXPFGCTL)
+ CASE_WRITE(val, ERXPFGCDN)
default :
return;
}
--
2.51.2.612.gdc70283dfc
Powered by blists - more mailing lists