diff options
Diffstat (limited to 'resources/libreboot/patch/kgpe-d16/0028-northbridge-amd-amdmct-mct_ddr3-Fix-S3-suspend-overr.patch')
-rw-r--r-- | resources/libreboot/patch/kgpe-d16/0028-northbridge-amd-amdmct-mct_ddr3-Fix-S3-suspend-overr.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/resources/libreboot/patch/kgpe-d16/0028-northbridge-amd-amdmct-mct_ddr3-Fix-S3-suspend-overr.patch b/resources/libreboot/patch/kgpe-d16/0028-northbridge-amd-amdmct-mct_ddr3-Fix-S3-suspend-overr.patch new file mode 100644 index 00000000..6616f456 --- /dev/null +++ b/resources/libreboot/patch/kgpe-d16/0028-northbridge-amd-amdmct-mct_ddr3-Fix-S3-suspend-overr.patch @@ -0,0 +1,51 @@ +From 7023056e63402e693489a04925f854e4217f9b50 Mon Sep 17 00:00:00 2001 +From: Timothy Pearson <tpearson@raptorengineeringinc.com> +Date: Sun, 31 May 2015 18:46:40 -0500 +Subject: [PATCH 028/143] northbridge/amd/amdmct/mct_ddr3: Fix S3 suspend + overrunning the stack size limit + +Change-Id: Id7441dacef2e46e283d1fc99d5e5fa3f20e0d097 +Signed-off-by: Timothy Pearson <tpearson@raptorengineeringinc.com> +--- + src/northbridge/amd/amdmct/mct_ddr3/s3utils.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/src/northbridge/amd/amdmct/mct_ddr3/s3utils.c b/src/northbridge/amd/amdmct/mct_ddr3/s3utils.c +index a49499f..c9bcac1 100644 +--- a/src/northbridge/amd/amdmct/mct_ddr3/s3utils.c ++++ b/src/northbridge/amd/amdmct/mct_ddr3/s3utils.c +@@ -543,10 +543,17 @@ int8_t save_mct_information_to_nvram(void) + + struct spi_flash *flash; + ssize_t s3nv_offset; +- struct amd_s3_persistent_data persistent_data; ++ struct amd_s3_persistent_data *persistent_data; ++ ++ /* Allocate temporary data structures */ ++ persistent_data = malloc(sizeof(struct amd_s3_persistent_data)); ++ if (!persistent_data) { ++ printk(BIOS_DEBUG, "Could not allocate S3 data structure in RAM\n"); ++ return -1; ++ } + + /* Obtain MCT configuration data */ +- copy_mct_data_to_save_variable(&persistent_data); ++ copy_mct_data_to_save_variable(persistent_data); + + /* Obtain CBFS file offset */ + s3nv_offset = get_s3nv_file_offset(); +@@ -576,7 +583,10 @@ int8_t save_mct_information_to_nvram(void) + + /* Erase and write data structure */ + flash->erase(flash, s3nv_offset, CONFIG_S3_DATA_SIZE); +- flash->write(flash, s3nv_offset, sizeof(struct amd_s3_persistent_data), &persistent_data); ++ flash->write(flash, s3nv_offset, sizeof(struct amd_s3_persistent_data), persistent_data); ++ ++ /* Deallocate temporary data structures */ ++ free(persistent_data); + + /* Tear down SPI flash access */ + flash->spi->rw = SPI_WRITE_FLAG; +-- +1.7.9.5 + |