ky0ko has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/44845 )
Change subject: mtrr.h: refine _POW2_MASK
......................................................................
mtrr.h: refine _POW2_MASK
this patch adjusts _POW2_MASK to work with rom sizes between 64KiB
and 512MiB, additionally fixing incorrectness for sizes 128MiB and
above that previously were present.
Change-Id: I0272c0c43cba44f6fbfb5dc539509b4ed9b92e75
Signed-off-by: ky0ko <ky0ko(a)disroot.org>
---
M src/include/cpu/x86/mtrr.h
1 file changed, 4 insertions(+), 2 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/45/44845/1
diff --git a/src/include/cpu/x86/mtrr.h b/src/include/cpu/x86/mtrr.h
index 42964b0..fd4159d 100644
--- a/src/include/cpu/x86/mtrr.h
+++ b/src/include/cpu/x86/mtrr.h
@@ -176,9 +176,11 @@
#endif /* !defined(__ASSEMBLER__) */
/* Align up/down to next power of 2, suitable for assembler
- too. Range of result 256kB to 128MB is good enough here. */
+ too. Range works from 64kB to 512MB. */
#define _POW2_MASK(x) ((x>>1)|(x>>2)|(x>>3)|(x>>4)|(x>>5)| \
- (x>>6)|(x>>7)|(x>>8)|((1<<18)-1))
+ (x>>6)|(x>>7)|(x>>8)|(x>>9)|(x>>10)| \
+ (x>>11)|(x>>12)|(x>>13)|((1<<16)-1))
+
#define _ALIGN_UP_POW2(x) ((x + _POW2_MASK(x)) & ~_POW2_MASK(x))
#define _ALIGN_DOWN_POW2(x) ((x) & ~_POW2_MASK(x))
--
To view, visit https://review.coreboot.org/c/coreboot/+/44845
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I0272c0c43cba44f6fbfb5dc539509b4ed9b92e75
Gerrit-Change-Number: 44845
Gerrit-PatchSet: 1
Gerrit-Owner: ky0ko <ky0ko(a)disroot.org>
Gerrit-MessageType: newchange
Bill XIE has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/39969 )
Change subject: nb/intel/sandybridge: Read spds only once if measured boot is enabled
......................................................................
nb/intel/sandybridge: Read spds only once if measured boot is enabled
Without considering s3 resume, spd may be used various times depending
on various condition. If spd is stored in CBFS and read various times,
PCR value may become inconsistent.
As mentioned in CB:39906, in order to avoid this, we could read spd
exactly once, and use the data read out various times, when measured
boot is enabled.
Change-Id: I02cad7e85d5e66fd9efb674e4dc9868233f6c233
Signed-off-by: Bill XIE <persmule(a)gmail.com>
---
M src/northbridge/intel/sandybridge/raminit.c
1 file changed, 27 insertions(+), 4 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/69/39969/1
diff --git a/src/northbridge/intel/sandybridge/raminit.c b/src/northbridge/intel/sandybridge/raminit.c
index b096a11..f3c81a6 100644
--- a/src/northbridge/intel/sandybridge/raminit.c
+++ b/src/northbridge/intel/sandybridge/raminit.c
@@ -98,6 +98,17 @@
}
}
+static bool spd_is_available(const spd_raw_data spds[], size_t num_spd)
+{
+ /* An available spd should at least have an non-zero id */
+ size_t i, j, sum = 0;
+ for (i = 0; i < num_spd; i++) {
+ for (j = 117; j < 128; j++)
+ sum += spds[i][j];
+ }
+ return (sum > 0);
+}
+
static void dram_find_spds_ddr3(spd_raw_data *spd, ramctr_timing *ctrl)
{
int dimms = 0, ch_dimms;
@@ -222,6 +233,8 @@
struct region_device rdev;
ramctr_timing *ctrl_cached = NULL;
+ if (CONFIG(TPM_MEASURED_BOOT))
+ memset(spds, 0, sizeof(spds));
MCHBAR32(SAPMCTL) |= 1;
/* Wait for ME to be ready */
@@ -271,8 +284,14 @@
/* Verify MRC cache for fast boot */
if (!s3resume && ctrl_cached) {
/* Load SPD unique information data. */
- memset(spds, 0, sizeof(spds));
- mainboard_get_spd(spds, 1);
+ if (CONFIG(TPM_MEASURED_BOOT)) {
+ /* if CONFIG(TPM_MEASURED_BOOT),
+ we manage to get spds only ONCE */
+ mainboard_get_spd(spds, 0);
+ } else {
+ memset(spds, 0, sizeof(spds));
+ mainboard_get_spd(spds, 1);
+ }
/* check SPD CRC16 to make sure the DIMMs haven't been replaced */
fast_boot = verify_crc16_spds_ddr3(spds, ctrl_cached);
@@ -307,8 +326,12 @@
ctrl.cpu = cpuid;
/* Get DDR3 SPD data */
- memset(spds, 0, sizeof(spds));
- mainboard_get_spd(spds, 0);
+ if (!CONFIG(TPM_MEASURED_BOOT) || !spd_is_available(spds, 4)) {
+ /* without CONFIG(TPM_MEASURED_BOOT), the previous read may
+ only contains id, so read it again */
+ memset(spds, 0, sizeof(spds));
+ mainboard_get_spd(spds, 0);
+ }
dram_find_spds_ddr3(spds, &ctrl);
err = try_init_dram_ddr3(&ctrl, fast_boot, s3resume, me_uma_size);
--
To view, visit https://review.coreboot.org/c/coreboot/+/39969
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I02cad7e85d5e66fd9efb674e4dc9868233f6c233
Gerrit-Change-Number: 39969
Gerrit-PatchSet: 1
Gerrit-Owner: Bill XIE <persmule(a)hardenedlinux.org>
Gerrit-MessageType: newchange
Harshit Sharma has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/43938 )
Change subject: [DONOTSUBMIT]lib: Introduce memory bugs to help test ASan
......................................................................
[DONOTSUBMIT]lib: Introduce memory bugs to help test ASan
Introduces a few memory bugs into cbfs code to make testing easier
for the ones who are willing to try out ASan on their hardware.
Change-Id: I0839f2fd2863934ec28e2322bab04b9cc33363b4
Signed-off-by: Harshit Sharma <harshitsharmajs(a)gmail.com>
---
M src/lib/cbfs.c
1 file changed, 21 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/38/43938/1
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index cb66f81..839de94 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -330,9 +330,30 @@
return 0;
}
+#if ENV_RAMSTAGE
+ int global_array[5] = {-1};
+#endif
+
int cbfs_boot_region_device(struct region_device *rdev)
{
+ int stack_array[5], i, *p;
boot_device_init();
+
+ /* global out-of-bounds */
+#if ENV_RAMSTAGE
+ for (i = 10; i > 0; i--)
+ global_array[i] = i;
+#endif
+ /* stack out-of-bounds */
+ for (i = 10; i > 0; i--)
+ stack_array[i] = i;
+
+ /* use-after-scope */
+ {
+ int x = 5;
+ p = &x;
+ }
+ *p = 10;
return vboot_locate_cbfs(rdev) &&
fmap_locate_area_as_rdev("COREBOOT", rdev);
}
--
To view, visit https://review.coreboot.org/c/coreboot/+/43938
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I0839f2fd2863934ec28e2322bab04b9cc33363b4
Gerrit-Change-Number: 43938
Gerrit-PatchSet: 1
Gerrit-Owner: Harshit Sharma <harshitsharmajs(a)gmail.com>
Gerrit-MessageType: newchange