Nico Huber merged this change.

View Change

Approvals: David Hendricks: Looks good to me, approved build bot (Jenkins): Verified
ich_descriptors: Draw +0xfff into ICH_FREG_LIMIT()

The condition `base > limit` is still valid since `base` is always at
least 4096 greater than `limit` in this case.

Change-Id: I11ac0a50b3f32f47879e7cfb7a26068cd0572ede
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/19046
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
---
M ich_descriptors.c
M ich_descriptors.h
M ichspi.c
M util/ich_descriptors_tool/ich_descriptors_tool.c
4 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/ich_descriptors.c b/ich_descriptors.c
index 1fc8835..3e53ec9 100644
--- a/ich_descriptors.c
+++ b/ich_descriptors.c
@@ -246,7 +246,7 @@
if (base > limit)
msg_pdbg2("is unused.\n");
else
- msg_pdbg2("0x%08x - 0x%08x\n", base, limit | 0x0fff);
+ msg_pdbg2("0x%08x - 0x%08x\n", base, limit);
}

void prettyprint_ich_descriptor_region(const struct ich_descriptors *desc)
@@ -952,7 +952,7 @@
size_t i, j;
for (i = 0, j = 0; i < min(desc.content.NR + 1, ARRAY_SIZE(regions)); ++i) {
const chipoff_t base = ICH_FREG_BASE(desc.region.FLREGs[i]);
- const chipoff_t limit = ICH_FREG_LIMIT(desc.region.FLREGs[i]) + 0xfff;
+ const chipoff_t limit = ICH_FREG_LIMIT(desc.region.FLREGs[i]);
if (limit <= base)
continue;
layout->entries[j].start = base;
diff --git a/ich_descriptors.h b/ich_descriptors.h
index 831341a..ec85e0c 100644
--- a/ich_descriptors.h
+++ b/ich_descriptors.h
@@ -63,7 +63,7 @@
/* 24-31: reserved */

#define ICH_FREG_BASE(flreg) (((flreg) << 12) & 0x01fff000)
-#define ICH_FREG_LIMIT(flreg) (((flreg) >> 4) & 0x01fff000)
+#define ICH_FREG_LIMIT(flreg) ((((flreg) >> 4) & 0x01fff000) | 0x00000fff)

void prettyprint_ich_reg_vscc(uint32_t reg_val, int verbosity, bool print_vcl);

diff --git a/ichspi.c b/ichspi.c
index ecf0c42..5f3e394 100644
--- a/ichspi.c
+++ b/ichspi.c
@@ -1566,14 +1566,12 @@
msg_pdbg("0x%02X: 0x%08x ", offset, freg);
if (rwperms == 0x3) {
msg_pdbg("FREG%i: %s region (0x%08x-0x%08x) is %s.\n", i,
- region_name, base, (limit | 0x0fff),
- access_names[rwperms]);
+ region_name, base, limit, access_names[rwperms]);
return 0;
}

msg_pwarn("FREG%i: Warning: %s region (0x%08x-0x%08x) is %s.\n", i,
- region_name, base, (limit | 0x0fff),
- access_names[rwperms]);
+ region_name, base, limit, access_names[rwperms]);
return 1;
}

@@ -1608,7 +1606,7 @@

msg_pdbg("0x%02X: 0x%08x ", off, pr);
msg_pwarn("%sPR%u: Warning: 0x%08x-0x%08x is %s.\n", prefix, i, ICH_FREG_BASE(pr),
- ICH_FREG_LIMIT(pr) | 0x0fff, access_names[rwperms]);
+ ICH_FREG_LIMIT(pr), access_names[rwperms]);
return 1;
}

diff --git a/util/ich_descriptors_tool/ich_descriptors_tool.c b/util/ich_descriptors_tool/ich_descriptors_tool.c
index 250abf0..7dfa5c0 100644
--- a/util/ich_descriptors_tool/ich_descriptors_tool.c
+++ b/util/ich_descriptors_tool/ich_descriptors_tool.c
@@ -58,7 +58,6 @@
return;
}

- limit = limit | 0x0fff;
file_len = limit + 1 - base;
if (base + file_len > len) {
printf("The %s region is spanning 0x%08x-0x%08x, but it is "

To view, visit change 19046. To unsubscribe, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: staging
Gerrit-MessageType: merged
Gerrit-Change-Id: I11ac0a50b3f32f47879e7cfb7a26068cd0572ede
Gerrit-Change-Number: 19046
Gerrit-PatchSet: 10
Gerrit-Owner: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: David Hendricks <david.hendricks@gmail.com>
Gerrit-Reviewer: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: Paul Menzel <paulepanter@users.sourceforge.net>
Gerrit-Reviewer: Stefan Tauner <stefan.tauner@gmx.at>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>