summaryrefslogtreecommitdiffstats
path: root/meta-agl-bsp/meta-renesas/recipes-bsp/u-boot/u-boot/hibernation/0003-Add-hibernation-image-area.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-bsp/meta-renesas/recipes-bsp/u-boot/u-boot/hibernation/0003-Add-hibernation-image-area.patch')
-rw-r--r--meta-agl-bsp/meta-renesas/recipes-bsp/u-boot/u-boot/hibernation/0003-Add-hibernation-image-area.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/meta-agl-bsp/meta-renesas/recipes-bsp/u-boot/u-boot/hibernation/0003-Add-hibernation-image-area.patch b/meta-agl-bsp/meta-renesas/recipes-bsp/u-boot/u-boot/hibernation/0003-Add-hibernation-image-area.patch
new file mode 100644
index 000000000..e6682354e
--- /dev/null
+++ b/meta-agl-bsp/meta-renesas/recipes-bsp/u-boot/u-boot/hibernation/0003-Add-hibernation-image-area.patch
@@ -0,0 +1,91 @@
+From eae2ee2090f8c9c140a1b766bd7312be5f0f308d Mon Sep 17 00:00:00 2001
+From: Yuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com>
+Date: Fri, 9 Jun 2017 20:46:54 +0900
+Subject: [PATCH 3/3] Add hibernation image area
+
+0x40000000 <-> 0x77FFFFFF : kernel
+0x78000000 <-> 0x7FFFFFFF : hibernation image area
+
+Signed-off-by: Yuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com>
+---
+ common/cmd_swsuspmem.c | 20 +++++++++++++-------
+ 1 file changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/common/cmd_swsuspmem.c b/common/cmd_swsuspmem.c
+index 6980aaf..dbc000c 100644
+--- a/common/cmd_swsuspmem.c
++++ b/common/cmd_swsuspmem.c
+@@ -116,8 +116,9 @@ struct swsusp_finish_context {
+ #define USED_ADDRESS_TOP (CONFIG_SYS_SDRAM_BASE)
+ #define USED_ADDRESS_END (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_LOAD_OFFSET)
+ #else
+-#define USED_ADDRESS_TOP (0x40000000)
+-#define USED_ADDRESS_END (0x48000000)
++#define CONFIG_SYS_LOAD_OFFSET 0x0
++#define USED_ADDRESS_TOP (CONFIG_SYS_SDRAM_BASE)
++#define USED_ADDRESS_END (CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_LOAD_OFFSET)
+ #endif
+ #define PG_UB2ZERO(pg) ((pg) - CONFIG_SYS_SDRAM_BASE / PAGE_SIZE)
+ static u32 const exclude_min_page =
+@@ -157,7 +158,7 @@ static struct swsuspmem_hook *_hook;
+ } while (0)
+
+ #ifdef PAGEMAP_DEBUG
+-static int debugout;
++static int debugout = 1;
+ static int _last_read_pages;
+ #define PAGEMAP_INFO(_msg, ...) \
+ do { \
+@@ -231,7 +232,7 @@ static inline u32 addr2pg(void *addr)
+ {
+ return ((u32)(addr)) / PAGE_SIZE;
+ }
+-static void *offt_addr = (void *)0x44000000;
++static void *offt_addr = (void *)0x78000000;
+ static int page_read_mem(u64 page, void *addr)
+ {
+ memcpy(addr, (u8 *)offt_addr + page * PAGE_SIZE, PAGE_SIZE);
+@@ -577,7 +578,7 @@ int do_checksnapimage(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+
+ if (memcmp(HIBERNATE_SIG, swsusp_header->sig, 10)
+ || (swsusp_header->img_size == 0)
+- || (swsusp_header->img_size > 0x03fff000)) {
++ || (swsusp_header->img_size > 0x05fff000)) {
+ printf("No hibernation image present\n");
+ CALL_HOOK(err_hook, SWSUSPMEM_BROKENIMAGE);
+ return 0;
+@@ -674,7 +675,9 @@ int do_swsuspmem(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+ /* Allow for 16 pages of stack */
+ max_page = gd->start_addr_sp / PAGE_SIZE - 32;
+ high_page = (((gd->relocaddr + _bss_end_ofs)
+- + (PAGE_SIZE - 1)) / PAGE_SIZE) + 1;
++ + (PAGE_SIZE - 1)) / PAGE_SIZE) + 1 + 0xf;
++ if (high_page > 0x7ffff)
++ high_page = 0x7ffff;
+ #define pfn_is_occupied(pfn) (page > max_page && page <= high_page)
+ #ifdef PAGEMAP_DEBUG
+ PAGEMAP_INFO(" *gd->start_addr_sp:%p\n",
+@@ -711,7 +714,7 @@ int do_swsuspmem(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+
+ if (memcmp(HIBERNATE_SIG, swsusp_header->sig, 10)
+ || (swsusp_header->img_size == 0)
+- || (swsusp_header->img_size > 0x03fff000)) {
++ || (swsusp_header->img_size > 0x05fff000)) {
+ printf("No hibernation image present\n");
+ CALL_HOOK(err_hook, SWSUSPMEM_BROKENIMAGE);
+ return 0;
+@@ -830,8 +833,11 @@ int do_swsuspmem(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+ continue;
+ } else if (unlikely(pfn_is_low(page) &&
+ pfn_is_occupied(page))) {
++ /* Virtual 32-bit original address */
+ remap_orig[remap_idx] = pg2addr(page);
++ /* allocating new free page */
+ page = free_page_get_next();
++ /* Virtual 32-bit remap address */
+ remap_temp[remap_idx] = pg2addr(page);
+ remap_idx++;
+ #ifdef PAGEMAP_DEBUG
+--
+1.8.3.1
+