mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-23 02:18:51 +09:00
![Ian Campbell](/assets/img/avatar_default.png)
We run 4 Arndale boards in our automated test framework, they have been running quite happily for quite some time using a Debian Wheezy userspace. However when upgrading to a Debian Jessie we started seeing frequent segmentation faults from gcc when building the kernel, to the extent that it is unable to successfully build the kernel twice in a row, and often fails on the first attempt. Searching around I found https://bugs.launchpad.net/arndale/+bug/1081417 which pointed towards http://www.spinics.net/lists/kvm-arm/msg03723.html and CPU Errata 773022 and 774769. This errata needs to be applied to all processors in an SMP system, meaning that the usual strategy of applying them in arch/arm/cpu/armv7/start.S is not appropriate (since that applies to the boot processor only). Instead we apply these errata in the secure monitor which is code that is traversed by all processors as they are brought up. The net affect on Arndale is that ACTLR changes from 0x40 to 0x2000042. I ran 17 kernel compile iterations overnight with no segfaults. Runtime testing was done on our v2014.10 based branch and forward ported (with only minimal and trivial contextual conflicts) to current master, where it has been build tested only. I suppose in theory these errata apply to any Exynos5250 based boards, but Arndale is the only one I have access to and I have therefore chosen to be conservative and only apply it there. Also, reorder CONFIG_ARM_ERRATA_794072 in README to make the list numerically sorted. Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
61 lines
1.3 KiB
C
61 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2013 Samsung Electronics
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*
|
|
* Configuration settings for the SAMSUNG Arndale board.
|
|
*/
|
|
|
|
#ifndef __CONFIG_ARNDALE_H
|
|
#define __CONFIG_ARNDALE_H
|
|
|
|
#define EXYNOS_FDTFILE_SETTING \
|
|
"fdtfile=exynos5250-arndale.dtb\0"
|
|
|
|
#include "exynos5250-common.h"
|
|
#include <configs/exynos5-common.h>
|
|
|
|
/* SD/MMC configuration */
|
|
#define CONFIG_SUPPORT_EMMC_BOOT
|
|
|
|
/* allow to overwrite serial and ethaddr */
|
|
#define CONFIG_ENV_OVERWRITE
|
|
|
|
/* MMC SPL */
|
|
#define CONFIG_EXYNOS_SPL
|
|
|
|
/* Miscellaneous configurable options */
|
|
#define CONFIG_DEFAULT_CONSOLE "console=ttySAC2,115200n8\0"
|
|
|
|
#define CONFIG_IDENT_STRING " for ARNDALE"
|
|
|
|
#define CONFIG_ENV_IS_IN_MMC
|
|
#define CONFIG_ENV_OFFSET (CONFIG_BL2_OFFSET + CONFIG_BL2_SIZE)
|
|
|
|
#define CONFIG_IRAM_STACK 0x02050000
|
|
|
|
#define CONFIG_SYS_INIT_SP_ADDR CONFIG_IRAM_STACK
|
|
|
|
/* PMIC */
|
|
#define CONFIG_POWER
|
|
#define CONFIG_PMIC
|
|
#define CONFIG_POWER_I2C
|
|
|
|
#define CONFIG_PREBOOT
|
|
|
|
#define CONFIG_S5P_PA_SYSRAM 0x02020000
|
|
#define CONFIG_SMP_PEN_ADDR CONFIG_S5P_PA_SYSRAM
|
|
|
|
/* The PERIPHBASE in the CBAR register is wrong on the Arndale, so override it */
|
|
#define CONFIG_ARM_GIC_BASE_ADDRESS 0x10480000
|
|
|
|
/* CPU Errata */
|
|
#define CONFIG_ARM_ERRATA_773022
|
|
#define CONFIG_ARM_ERRATA_774769
|
|
|
|
/* Power */
|
|
#define CONFIG_POWER
|
|
#define CONFIG_POWER_I2C
|
|
|
|
#endif /* __CONFIG_H */
|