Patrick Georgi (pgeorgi@google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14125
-gerrit
commit 6c84f1a37149ae37c8c9959ef8c50ee31c7a39e8 Author: Pratik Prajapati pratikkumar.v.prajapati@intel.com Date: Mon Feb 22 16:50:31 2016 -0800
MMA : changing BOOT_STUB to COREBOOT region and few more things
(1) Added following new function.
cbfs_locate_file_in_region - to locate (and mmap) a file in a flash region This function is used to look for MMA blobs in "COREBOOT" cbfs region
(2) mma_setup_test.sh would write to "COREBOOT" region.
(3) changes in mma_automated_test.sh. Few MMA tests need system to be COLD rebooted before test can start. mma_automated_test.sh would do COLD reboot after each test, and so i would sync the filesystem before doing COLD reboot.
BRANCH=none BUG=chrome-os-partner:43731 TEST=Build and Boot kunimitsu (FAB4). Able to locate MMA files in CBFS Not tested on Glados.
Change-Id: I8338a46d8591d16183e51917782f052fa78c4167 Signed-off-by: Patrick Georgi pgeorgi@chromium.org Original-Commit-Id: 1e418dfffd8a7fe590f9db771d2f0b01a44afbb4 Original-Change-Id: I402f84f5c46720710704dfd32b9319c73c412e47 Original-Signed-off-by: Pratik Prajapati pratikkumar.v.prajapati@intel.com Original-Reviewed-on: https://chromium-review.googlesource.com/331682 Original-Commit-Ready: Pratikkumar V Prajapati pratikkumar.v.prajapati@intel.com Original-Tested-by: Pratikkumar V Prajapati pratikkumar.v.prajapati@intel.com Original-Reviewed-by: Aaron Durbin adurbin@chromium.org Original-Reviewed-by: Pratikkumar V Prajapati pratikkumar.v.prajapati@intel.com --- src/soc/intel/common/mma.c | 41 +++++++++++++++++++++++++++++++++++------ util/mma/mma_automated_test.sh | 14 +++++++++++++- util/mma/mma_setup_test.sh | 4 ++-- 3 files changed, 50 insertions(+), 9 deletions(-)
diff --git a/src/soc/intel/common/mma.c b/src/soc/intel/common/mma.c index 3829361..b044b00 100644 --- a/src/soc/intel/common/mma.c +++ b/src/soc/intel/common/mma.c @@ -22,10 +22,12 @@ #include "mma.h" #include <soc/romstage.h> #include <string.h> +#include <fmap.h>
#define MMA_TEST_METADATA_FILENAME "mma_test_metadata.bin" #define MMA_TEST_NAME_TAG "MMA_TEST_NAME" #define MMA_TEST_PARAM_TAG "MMA_TEST_PARAM" +#define MMA_CBFS_REGION "COREBOOT" #define TEST_NAME_MAX_SIZE 30 #define TEST_PARAM_MAX_SIZE 100 #define FSP_MMA_RESULTS_GUID { 0x8f4e928, 0xf5f, 0x46d4, \ @@ -112,6 +114,30 @@ static int label_value(const char *haystack, size_t haystack_sz, return 0; }
+static void *cbfs_locate_file_in_region(const char *region_name, const char *file_name, + uint32_t file_type, uint32_t *file_size) +{ + struct region_device rdev; + struct cbfsf fh; + + if (file_size != NULL) + *file_size = 0; + + if (fmap_locate_area_as_rdev(region_name, &rdev) == 0) { + if (cbfs_locate(&fh, &rdev, file_name, &file_type) == 0) { + if (file_size != NULL) + *file_size = region_device_sz(&fh.data); + return rdev_mmap_full(&fh.data); + } else + printk(BIOS_DEBUG, "%s file not found in %s region\n", + file_name, region_name); + } else + printk(BIOS_DEBUG,"%s region not found while looking for %s\n", region_name, + file_name); + + return NULL; +} + void setup_mma(MEMORY_INIT_UPD *memory_params) { void *mma_test_metadata, *mma_test_content, *mma_test_param; @@ -127,8 +153,9 @@ void setup_mma(MEMORY_INIT_UPD *memory_params) memory_params->MmaTestConfigPtr = 0; memory_params->MmaTestConfigSize = 0;
- mma_test_metadata = cbfs_boot_map_with_leak(MMA_TEST_METADATA_FILENAME, - CBFS_TYPE_MMA , &mma_test_metadata_file_len); + mma_test_metadata = cbfs_locate_file_in_region(MMA_CBFS_REGION, + MMA_TEST_METADATA_FILENAME, CBFS_TYPE_MMA, + &mma_test_metadata_file_len);
if (!mma_test_metadata) { printk(BIOS_DEBUG, "MMA setup failed: Failed to read %s\n", @@ -154,16 +181,18 @@ void setup_mma(MEMORY_INIT_UPD *memory_params) printk(BIOS_DEBUG, "Got MMA_TEST_NAME=%s MMA_TEST_PARAM=%s\n", test_filename, test_param_filename);
- mma_test_content = cbfs_boot_map_with_leak(test_filename, - CBFS_TYPE_EFI , &mma_test_content_file_len); + mma_test_content = cbfs_locate_file_in_region(MMA_CBFS_REGION, + test_filename, CBFS_TYPE_EFI, + &mma_test_content_file_len); if (!mma_test_content) { printk(BIOS_DEBUG, "MMA setup failed: Failed to read %s.\n", test_filename); return; }
- mma_test_param = cbfs_boot_map_with_leak(test_param_filename, - CBFS_TYPE_MMA , &mma_test_param_file_len); + mma_test_param = cbfs_locate_file_in_region(MMA_CBFS_REGION, + test_param_filename, CBFS_TYPE_MMA, + &mma_test_param_file_len); if (!mma_test_param) { printk(BIOS_DEBUG, "MMA setup failed: Failed to read %s.\n", test_param_filename); diff --git a/util/mma/mma_automated_test.sh b/util/mma/mma_automated_test.sh index edca4f1..08e2bc2 100755 --- a/util/mma/mma_automated_test.sh +++ b/util/mma/mma_automated_test.sh @@ -68,6 +68,10 @@ get_mma_autotest_params() { }
main() { + # sleep 30 sec, before we start. This would give some time if we want + # to stop automation. + sleep 30s + mkdir -p "${MMA_LOCAL_DATA_STORAGE}" # Exit is there are no tests [ -e "${MMA_AUTOMATED_TEST_CONFIG}" ] || exit 0
@@ -91,7 +95,15 @@ main() { get_mma_autotest_params ${MMA_SETUP_TEST_TOOL} set ${MMA_TEST_NAME} ${MMA_TEST_PARAM}
- reboot + # sync the filesystem, hoping this would minimize + # the chances of fs corruption + sync + sleep 2s + sync + sleep 2s + sync + sleep 2s + ectool reboot_ec }
main "$@" diff --git a/util/mma/mma_setup_test.sh b/util/mma/mma_setup_test.sh index ecbedf8..7eb3c7c 100755 --- a/util/mma/mma_setup_test.sh +++ b/util/mma/mma_setup_test.sh @@ -90,7 +90,7 @@ show_usage() {
write_flash() { printf "Writing back flash contents "${flashrom_temp_image}"\n" - flashrom -p host -w "${flashrom_temp_image}" -i BOOT_STUB --fast-verify || \ + flashrom -p host -w "${flashrom_temp_image}" --fast-verify || \ { printf "failed to read flash\n" ; exit -1; @@ -180,7 +180,7 @@ main() { remove_file_if_exists "${flashrom_temp_image}"
printf "Reading flash contents to "${flashrom_temp_image}"\n" - flashrom -p host -r "${flashrom_temp_image}" -i BOOT_STUB || \ + flashrom -p host -r "${flashrom_temp_image}" || \ { printf "failed to read flash\n" ; exit -1;