aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShuai Xue <xueshuai@linux.alibaba.com>2022-08-19 21:54:04 +0800
committerShuai Xue <xueshuai@linux.alibaba.com>2022-08-25 09:15:04 +0800
commit449c7138938b5e0ade28e8db73bcdb1e6bd144e2 (patch)
treeee0d51d8839f79bc1a0e7d21051d637455452f16
parent9f1eadac8adb39918241865a53d624c32d6760d1 (diff)
downloadras-tools-449c7138938b5e0ade28e8db73bcdb1e6bd144e2.tar.gz
einj_mem_uc: add a z flag to trigger write with an offset
On some platform, write to different offset within the poison cacheline performs differently. Add a z flag so that we could trigger write with an offset. Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
-rw-r--r--einj_mem_uc.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/einj_mem_uc.c b/einj_mem_uc.c
index 9dc254e..adfd630 100644
--- a/einj_mem_uc.c
+++ b/einj_mem_uc.c
@@ -362,10 +362,17 @@ int trigger_split(char *addr)
return a[0];
}
+/*
+ * parameters to the write tests.
+ */
+int write_offset = 0; /* where to hit after the poison addr */
+
int trigger_write(char *addr)
{
PRINT_TRIGGERING;
- addr[0] = 'a';
+ char *target = addr + write_offset;
+
+ target[0] = 'a';
return 0;
}
@@ -643,7 +650,7 @@ int main(int argc, char **argv)
progname = argv[0];
pagesize = getpagesize();
- while ((c = getopt(argc, argv, "ac:d:fhim:S")) != -1) switch (c) {
+ while ((c = getopt(argc, argv, "ac:d:fhim:z:S")) != -1) switch (c) {
case 'a':
all_flag = 1;
break;
@@ -662,6 +669,9 @@ int main(int argc, char **argv)
case 'm':
parse_memcpy(optarg);
break;
+ case 'z':
+ write_offset = strtod(optarg, NULL);
+ break;
case 'S':
Sflag = 1;
break;