Skip to contentSkip to conversation

samsung: board: reserve dram for the secure firmware

PATCH New Przemyslaw Marczak 2 participants 6 messages Feb 17, 2015 – Mar 4, 2015

lore
Share & tools
lore
#0 lore raw

cover samsung: board: reserve dram for the secure firmware

Since the few exynos based boards requires memory reservation, of last DRAM bank, the code could be in a common place.

This patchset moves the reservation code from odroid board file to common samsung board file.

Przemyslaw Marczak (3):
board: samsung: reserve memory for the secure firmware
Odroid-XU3: enable the last dram bank and reserve 22MiB Odroid U3: use common code for dram reservation

 board/samsung/common/board.c  |  6 ++++++
 board/samsung/odroid/odroid.c |  4 ----
 include/configs/odroid.h      |  5 +++--
 include/configs/odroid_xu3.h  | 10 ++++------
 4 files changed, 13 insertions(+), 12 deletions(-)
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/3 board: samsung: reserve memory for the secure firmware

Since more than one board requires memory reservation for the secure firmware, the reservation code can be made in a common code.
Now, to reserve some part of the the last bank, board config should define:
- CONFIG_TZSW_RESERVED_DRAM - len in bytes
- CONFIG_NR_DRAM_BANKS - number of memory banks

Cc Akshay Saraswat <[email protected]>
Cc Hyungwon Hwang <[email protected]>
Cc Minkyu Kang <[email protected]>
---
 board/samsung/common/board.c | 6 ++++++
 1 file changed, 6 insertions(+)
board/samsung/common/board.c +6 -0
index da2245f..a2123cd 100644
@@ -82,7 +82,13 @@ int board_init(void)
 	}
 	boot_temp_check();
 #endif
+#ifdef CONFIG_TZSW_RESERVED_DRAM_SIZE
+	/* The last few MB of memory can be reserved for secure firmware */
+	ulong size = CONFIG_TZSW_RESERVED_DRAM_SIZE;
 
+	gd->ram_size -= size;
+	gd->bd->bi_dram[CONFIG_NR_DRAM_BANKS - 1].size -= size;
+#endif
 	return exynos_init();
 }
 
Signature · 1 line
1.9.1
#2 lore raw

PATCH 1/3 board: samsung: reserve memory for the secure firmware

Hello Minkyu,

Quoted 25 lines · Przemyslaw Marczak

Since more than one board requires memory reservation for the secure firmware, the reservation code can be made in a common code.
Now, to reserve some part of the the last bank, board config should define:
- CONFIG_TZSW_RESERVED_DRAM - len in bytes
- CONFIG_NR_DRAM_BANKS - number of memory banks

Cc Akshay Saraswat <[email protected]>
Cc Hyungwon Hwang <[email protected]>
Cc Minkyu Kang <[email protected]>
---
  board/samsung/common/board.c | 6 ++++++
  1 file changed, 6 insertions(+)
board/samsung/common/board.c +0 -0
index da2245f..a2123cd 100644
@@ -82,7 +82,13 @@ int board_init(void)
  	}
  	boot_temp_check();
  #endif

board/samsung/common/board.c int board_init(void) · line 94

Quoted 10 lines
board/samsung/common/board.c +6 -0
+#ifdef CONFIG_TZSW_RESERVED_DRAM_SIZE
+	/* The last few MB of memory can be reserved for secure firmware */
+	ulong size = CONFIG_TZSW_RESERVED_DRAM_SIZE;
 
+	gd->ram_size -= size;
+	gd->bd->bi_dram[CONFIG_NR_DRAM_BANKS - 1].size -= size;
+#endif
  	return exynos_init();
  }
 

There are no comments, so can you apply this patchset?

Best regards,

Signature · 4 lines
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
#3 lore raw

PATCH 1/3 board: samsung: reserve memory for the secure firmware

Hi,

Quoted 41 lines · Przemyslaw Marczak

Hello Minkyu,

Quoted 25 lines · Przemyslaw Marczak

Since more than one board requires memory reservation for the secure firmware, the reservation code can be made in a common code.
Now, to reserve some part of the the last bank, board config should define:
- CONFIG_TZSW_RESERVED_DRAM - len in bytes
- CONFIG_NR_DRAM_BANKS - number of memory banks

Cc Akshay Saraswat <[email protected]>
Cc Hyungwon Hwang <[email protected]>
Cc Minkyu Kang <[email protected]>
---
  board/samsung/common/board.c | 6 ++++++
  1 file changed, 6 insertions(+)
board/samsung/common/board.c +0 -0
index da2245f..a2123cd 100644
@@ -82,7 +82,13 @@ int board_init(void)
      }
      boot_temp_check();
  #endif

board/samsung/common/board.c int board_init(void) · line 94

Quoted 10 lines
board/samsung/common/board.c +6 -0
+#ifdef CONFIG_TZSW_RESERVED_DRAM_SIZE
+    /* The last few MB of memory can be reserved for secure firmware */
+    ulong size = CONFIG_TZSW_RESERVED_DRAM_SIZE;
 
+    gd->ram_size -= size;
+    gd->bd->bi_dram[CONFIG_NR_DRAM_BANKS - 1].size -= size;
+#endif
      return exynos_init();
  }
 

There are no comments, so can you apply this patchset?

Quoted 1 line

Best regards,

applied to u-boot-samsung.

Thanks,
Minkyu Kang.

#4 lore raw

PATCH 2/3 Odroid-XU3: enable the last dram bank and reserve 22MiB

In reply to Przemyslaw Marczak

This commit enables the last DRAM bank and reserves the last 22 MiB of it, for the secure firmware.

Cc Akshay Saraswat <[email protected]>
Cc Hyungwon Hwang <[email protected]>
Cc Minkyu Kang <[email protected]>
---
 include/configs/odroid_xu3.h | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
include/configs/odroid_xu3.h +4 -6
index 9fa8660..c395020 100644
@@ -25,13 +25,11 @@
 
 #define CONFIG_CMD_MMC
 
-/*
- * FIXME: The number of bank is actually 8. But there is no way to reserve the
- * last 16 Mib in the last bank now. So I just excluded the last bank
- * temporally.
- */
-#define CONFIG_NR_DRAM_BANKS	7
+#define CONFIG_NR_DRAM_BANKS	8
 #define SDRAM_BANK_SIZE		(256UL << 20UL)	/* 256 MB */
+/* Reserve the last 22 MiB for the secure firmware */
+#define CONFIG_SYS_MEM_TOP_HIDE		(22UL << 20UL)
+#define CONFIG_TZSW_RESERVED_DRAM_SIZE	CONFIG_SYS_MEM_TOP_HIDE
 
 #define CONFIG_ENV_IS_IN_MMC
 
Signature · 1 line
1.9.1
#5 lore raw

PATCH 3/3 Odroid U3: use common code for dram reservation

In reply to Przemyslaw Marczak

This commit removes the dram reservation from board file, because it is done in a common code.

---
 board/samsung/odroid/odroid.c | 4 ----
 include/configs/odroid.h      | 5 +++--
 2 files changed, 3 insertions(+), 6 deletions(-)
board/samsung/odroid/odroid.c +0 -4
index bff6ac9..44e062b 100644
@@ -424,10 +424,6 @@ int exynos_early_init_f(void)
 
 int exynos_init(void)
 {
-	/* The last MB of memory is reserved for secure firmware */
-	gd->ram_size -= SZ_1M;
-	gd->bd->bi_dram[CONFIG_NR_DRAM_BANKS - 1].size -= SZ_1M;
-
 	board_gpio_init();
 
 	return 0;
include/configs/odroid.h +3 -2
index 9d5dbdc..46ec760 100644
@@ -29,6 +29,9 @@
 #define CONFIG_SYS_SDRAM_BASE	0x40000000
 #define SDRAM_BANK_SIZE		(256 << 20)	/* 256 MB */
 #define PHYS_SDRAM_1		CONFIG_SYS_SDRAM_BASE
+/* Reserve the last 1 MiB for the secure firmware */
+#define CONFIG_SYS_MEM_TOP_HIDE		(1UL << 20UL)
+#define CONFIG_TZSW_RESERVED_DRAM_SIZE	CONFIG_SYS_MEM_TOP_HIDE
 
 /* memtest works on */
 #define CONFIG_SYS_MEMTEST_START	CONFIG_SYS_SDRAM_BASE
@@ -56,8 +59,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR \
 					- GENERATED_GBL_DATA_SIZE)
 
-#define CONFIG_SYS_MEM_TOP_HIDE	(SZ_1M)	/* ram console */
-
 #define CONFIG_SYS_MONITOR_BASE	0x00000000
 
 #define CONFIG_ENV_IS_IN_MMC
Signature · 1 line
1.9.1