summaryrefslogtreecommitdiffstats
path: root/bsp/meta-synopsys/recipes-kernel
diff options
context:
space:
mode:
Diffstat (limited to 'bsp/meta-synopsys/recipes-kernel')
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux-firmware/linux-firmware_git.bbappend4
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc.inc47
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0001-DRM-UDL-get-rid-of-useless-vblank-initialization.patch44
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0002-etnaviv-Make-archtecture-and-platform-agnostic.patch30
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0004-ARC-plat-hsdk-Add-support-of-Vivante-GPU.patch54
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-Use-dev-mmcblk0p2-as-rootfs-storage.patch26
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-devres-Really-align-data-field-to-unsigned-long-long.patch42
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0007-ETHNAVIV-don-t-print-command-dump.patch28
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/1001-Agl-hsdk-defconfig.patch1199
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2001-ARC-prevent-showing-irrelevant-exception-info-in-sig.patch334
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2002-ARC-split-show_faulting_vma-for-logic-and-representa.patch114
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2003-ARC-ARCv2-Introduce-SmaRT-support.patch619
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/3003-Experimental-ARC-increase-memory-to-1.5GB.patch40
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4001-HSDK-add-highmem-zone.patch49
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4002-ARC-temporary-disable-IOC.patch26
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4003-ARC-cache-ops-add-assertions.patch42
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/5001-Enable-FBDEV_DRM-emulation-for-HSDK.patch22
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/6001-ARC-adjust-memblock_reserve-of-kernel-memory.patch46
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc/8000-ARCv2-support-manual-regfile-save-on-interrupts.patch157
-rw-r--r--bsp/meta-synopsys/recipes-kernel/linux/linux-arc_4.19.9.bb4
20 files changed, 2927 insertions, 0 deletions
diff --git a/bsp/meta-synopsys/recipes-kernel/linux-firmware/linux-firmware_git.bbappend b/bsp/meta-synopsys/recipes-kernel/linux-firmware/linux-firmware_git.bbappend
new file mode 100644
index 00000000..7180d22b
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux-firmware/linux-firmware_git.bbappend
@@ -0,0 +1,4 @@
+FILES_${PN}-ath9k += " \
+ /lib/firmware/ath9k_htc/htc*.fw \
+"
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc.inc b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc.inc
new file mode 100644
index 00000000..9ec28f5c
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc.inc
@@ -0,0 +1,47 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux-arc:"
+DESCRIPTION = "Kernel image for the ARC architecture"
+SECTION = "kernel"
+
+LICENSE = "GPLv2"
+
+inherit kernel
+
+SRC_URI = "https://www.kernel.org/pub/linux/kernel/v4.x/linux-${PV}.tar.xz \
+ file://0002-etnaviv-Make-archtecture-and-platform-agnostic.patch \
+ file://0004-ARC-plat-hsdk-Add-support-of-Vivante-GPU.patch \
+ file://0006-devres-Really-align-data-field-to-unsigned-long-long.patch \
+ file://0007-ETHNAVIV-don-t-print-command-dump.patch \
+ file://0006-Use-dev-mmcblk0p2-as-rootfs-storage.patch \
+ file://0001-DRM-UDL-get-rid-of-useless-vblank-initialization.patch \
+ file://1001-Agl-hsdk-defconfig.patch \
+ file://3003-Experimental-ARC-increase-memory-to-1.5GB.patch \
+ file://6001-ARC-adjust-memblock_reserve-of-kernel-memory.patch \
+ file://8000-ARCv2-support-manual-regfile-save-on-interrupts.patch \
+"
+#file://2001-ARC-prevent-showing-irrelevant-exception-info-in-sig.patch
+#file://2002-ARC-split-show_faulting_vma-for-logic-and-representa.patch
+#file://2003-ARC-ARCv2-Introduce-SmaRT-support.patch
+#file://3003-Experimental-ARC-increase-memory-to-1.5GB.patch
+
+# file://1001-Agl-hsdk-defconfig.patch
+# file://5001-Enable-FBDEV_DRM-emulation-for-HSDK.patch
+
+# file://4001-HSDK-add-highmem-zone.patch
+# file://4002-ARC-temporary-disable-IOC.patch
+# file://4003-ARC-cache-ops-add-assertions.patch
+
+
+S = "${WORKDIR}/linux-${PV}"
+
+DEPENDS += " libgcc"
+KERNEL_CC_append = " ${TOOLCHAIN_OPTIONS}"
+
+KERNEL_DEFCONFIG_hsdk = "hsdk"
+KERNEL_DEFCONFIG_nsimhs = "nsim_hs"
+KERNEL_CONFIG_COMMAND = "oe_runmake -C ${S} O=${B} ${KERNEL_DEFCONFIG}_defconfig"
+
+KERNEL_CLASSES = ""
+
+do_configure_append() {
+ echo 'CONFIG_INITRAMFS_SOURCE=""' >> ${B}/.config
+}
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0001-DRM-UDL-get-rid-of-useless-vblank-initialization.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0001-DRM-UDL-get-rid-of-useless-vblank-initialization.patch
new file mode 100644
index 00000000..f3af8958
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0001-DRM-UDL-get-rid-of-useless-vblank-initialization.patch
@@ -0,0 +1,44 @@
+From 2d98fce2330347051c091d7c05da8cbc9f1a5feb Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Thu, 4 Oct 2018 20:42:12 +0300
+Subject: [PATCH 1/3] DRM: UDL: get rid of useless vblank initialization
+
+UDL doesn't support vblank functionality so we don't need to
+initialize vblank here (we are able to send page flip
+completion events even without vblank initialization)
+
+Moreover current drm_vblank_init call with num_crtcs > 0 causes
+sending DRM_EVENT_FLIP_COMPLETE event with zero timestamp every
+time. This breaks userspace apps (for example weston) which
+relies on timestamp value.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ drivers/gpu/drm/udl/udl_main.c | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/udl/udl_main.c b/drivers/gpu/drm/udl/udl_main.c
+index d518de8f496b..cf5d2dc494ee 100644
+--- a/drivers/gpu/drm/udl/udl_main.c
++++ b/drivers/gpu/drm/udl/udl_main.c
+@@ -349,15 +349,10 @@ int udl_driver_load(struct drm_device *dev, unsigned long flags)
+ if (ret)
+ goto err;
+
+- ret = drm_vblank_init(dev, 1);
+- if (ret)
+- goto err_fb;
+-
+ drm_kms_helper_poll_init(dev);
+
+ return 0;
+-err_fb:
+- udl_fbdev_cleanup(dev);
++
+ err:
+ if (udl->urbs.count)
+ udl_free_urb_list(dev);
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0002-etnaviv-Make-archtecture-and-platform-agnostic.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0002-etnaviv-Make-archtecture-and-platform-agnostic.patch
new file mode 100644
index 00000000..93c0642b
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0002-etnaviv-Make-archtecture-and-platform-agnostic.patch
@@ -0,0 +1,30 @@
+From 2e4fc7cbcb921ec8761b0bd8ddcda1d9a26567de Mon Sep 17 00:00:00 2001
+From: Alexey Brodkin <abrodkin@synopsys.com>
+Date: Wed, 10 Oct 2018 18:53:11 +0300
+Subject: [PATCH 2/7] etnaviv: Make archtecture- and platform-agnostic
+
+Vivante GPU is just an IP-core that could be built-in any
+random SoC, moreover this driver doesn't really rely on
+any architecture- or platform-specific things so
+let's allow everybody to select it in their defconfigs.
+
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+---
+ drivers/gpu/drm/etnaviv/Kconfig | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/etnaviv/Kconfig b/drivers/gpu/drm/etnaviv/Kconfig
+index 041a77e400d4..21df44b78df3 100644
+--- a/drivers/gpu/drm/etnaviv/Kconfig
++++ b/drivers/gpu/drm/etnaviv/Kconfig
+@@ -2,7 +2,6 @@
+ config DRM_ETNAVIV
+ tristate "ETNAVIV (DRM support for Vivante GPU IP cores)"
+ depends on DRM
+- depends on ARCH_MXC || ARCH_DOVE || (ARM && COMPILE_TEST)
+ depends on MMU
+ select SHMEM
+ select SYNC_FILE
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0004-ARC-plat-hsdk-Add-support-of-Vivante-GPU.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0004-ARC-plat-hsdk-Add-support-of-Vivante-GPU.patch
new file mode 100644
index 00000000..a174b16d
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0004-ARC-plat-hsdk-Add-support-of-Vivante-GPU.patch
@@ -0,0 +1,54 @@
+From 7b63fe0f359d78fa226b3c805a8a8a1772cb5e71 Mon Sep 17 00:00:00 2001
+From: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+Date: Thu, 13 Dec 2018 17:11:57 +0300
+Subject: [PATCH] ARC plat hsdk Add Support of Vivante GPU
+
+Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+---
+ arch/arc/boot/dts/hsdk.dts | 6 ++++++
+ arch/arc/configs/hsdk_defconfig | 3 +--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arc/boot/dts/hsdk.dts b/arch/arc/boot/dts/hsdk.dts
+index 3c777a3c114e..014f6bab1cf5 100644
+--- a/arch/arc/boot/dts/hsdk.dts
++++ b/arch/arc/boot/dts/hsdk.dts
+@@ -222,6 +222,12 @@
+ bus-width = <4>;
+ dma-coherent;
+ };
++
++ gpu_3d: gpu@90000 {
++ compatible = "vivante,gc";
++ reg = <0x90000 0x4000>;
++ interrupts = <28>;
++ };
+ };
+
+ memory@80000000 {
+diff --git a/arch/arc/configs/hsdk_defconfig b/arch/arc/configs/hsdk_defconfig
+index 2a1d2cbfee1a..fd0ba7298050 100644
+--- a/arch/arc/configs/hsdk_defconfig
++++ b/arch/arc/configs/hsdk_defconfig
+@@ -49,6 +49,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
+ CONFIG_DRM=y
+ # CONFIG_DRM_FBDEV_EMULATION is not set
+ CONFIG_DRM_UDL=y
++CONFIG_DRM_ETNAVIV=y
+ CONFIG_FB=y
+ CONFIG_FRAMEBUFFER_CONSOLE=y
+ CONFIG_USB_EHCI_HCD=y
+@@ -60,10 +61,8 @@ CONFIG_MMC=y
+ CONFIG_MMC_SDHCI=y
+ CONFIG_MMC_SDHCI_PLTFM=y
+ CONFIG_MMC_DW=y
+-# CONFIG_IOMMU_SUPPORT is not set
+ CONFIG_EXT3_FS=y
+ CONFIG_VFAT_FS=y
+-CONFIG_TMPFS=y
+ CONFIG_NFS_FS=y
+ CONFIG_NFS_V3_ACL=y
+ CONFIG_NLS_CODEPAGE_437=y
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-Use-dev-mmcblk0p2-as-rootfs-storage.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-Use-dev-mmcblk0p2-as-rootfs-storage.patch
new file mode 100644
index 00000000..283cfe15
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-Use-dev-mmcblk0p2-as-rootfs-storage.patch
@@ -0,0 +1,26 @@
+From 12a10b429e816a6b7fb848ef6eef9db26844856b Mon Sep 17 00:00:00 2001
+From: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+Date: Wed, 24 Oct 2018 22:40:46 +0300
+Subject: [PATCH] Use /dev/mmcblk0p2 as rootfs storage
+
+Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+---
+ arch/arc/boot/dts/hsdk.dts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arc/boot/dts/hsdk.dts b/arch/arc/boot/dts/hsdk.dts
+index e1d608038ff7..4d235b652e7f 100644
+--- a/arch/arc/boot/dts/hsdk.dts
++++ b/arch/arc/boot/dts/hsdk.dts
+@@ -22,7 +22,7 @@
+ #size-cells = <1>;
+
+ chosen {
+- bootargs = "earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1";
++ bootargs = "earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 print-fatal-signals=1 root=/dev/mmcblk0p2 rootwait";
+ };
+
+ aliases {
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-devres-Really-align-data-field-to-unsigned-long-long.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-devres-Really-align-data-field-to-unsigned-long-long.patch
new file mode 100644
index 00000000..349f729c
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0006-devres-Really-align-data-field-to-unsigned-long-long.patch
@@ -0,0 +1,42 @@
+From 0b124e661d4dbb1b04031cc37c0359f7344d1bfb Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Wed, 10 Oct 2018 18:53:14 +0300
+Subject: [PATCH 6/7] devres: Really align data field to unsigned long long
+
+It looks like on most of architectures "data" member of devres struture
+gets aligned to 8-byte "unsigned long long" boundary as one may expect:
+if we don't explicitly pack a structure then natural alignment
+(which matches each member data type) is used.
+
+But at least on 32-bit ARC architecture ABI requires "long long" types
+to be aligned by normal 32-bit word. This makes "data" field aligned to
+12 bytes. This is still OK as long as we use 32-bit data only.
+
+But once we want to use native atomic64_t type (i.e. when we use special
+instructions LLOCKD/SCONDD for accessing 64-bit data) we easily hit
+misaligned access exception.
+
+That's because even on CPUs capable of non-aligned data access LL/SC
+instructions require strict alignment.
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ drivers/base/devres.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/base/devres.c b/drivers/base/devres.c
+index f98a097e73f2..1a444f043c68 100644
+--- a/drivers/base/devres.c
++++ b/drivers/base/devres.c
+@@ -25,7 +25,7 @@ struct devres_node {
+ struct devres {
+ struct devres_node node;
+ /* -- 3 pointers */
+- unsigned long long data[]; /* guarantee ull alignment */
++ unsigned long long data[] __aligned(sizeof(unsigned long long)); /* guarantee ull alignment */
+ };
+
+ struct devres_group {
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0007-ETHNAVIV-don-t-print-command-dump.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0007-ETHNAVIV-don-t-print-command-dump.patch
new file mode 100644
index 00000000..dae5280c
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/0007-ETHNAVIV-don-t-print-command-dump.patch
@@ -0,0 +1,28 @@
+From eeff10cb77dd9d646bdd09be0135645a0d4b5aa0 Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Wed, 10 Oct 2018 18:53:15 +0300
+Subject: [PATCH 7/7] ETHNAVIV: don't print command dump
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
+index 7fea74861a87..632acd7d96b4 100644
+--- a/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
++++ b/drivers/gpu/drm/etnaviv/etnaviv_buffer.c
+@@ -118,8 +118,8 @@ static void etnaviv_buffer_dump(struct etnaviv_gpu *gpu,
+ dev_info(gpu->dev, "virt %p phys 0x%08x free 0x%08x\n",
+ ptr, etnaviv_cmdbuf_get_va(buf) + off, size - len * 4 - off);
+
+- print_hex_dump(KERN_INFO, "cmd ", DUMP_PREFIX_OFFSET, 16, 4,
+- ptr, len * 4, 0);
++// print_hex_dump(KERN_INFO, "cmd ", DUMP_PREFIX_OFFSET, 16, 4,
++// ptr, len * 4, 0);
+ }
+
+ /*
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/1001-Agl-hsdk-defconfig.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/1001-Agl-hsdk-defconfig.patch
new file mode 100644
index 00000000..5ad7a023
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/1001-Agl-hsdk-defconfig.patch
@@ -0,0 +1,1199 @@
+From 47d109c814f0ebfdeb95eea4449316d938158f72 Mon Sep 17 00:00:00 2001
+From: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+Date: Thu, 13 Dec 2018 17:12:56 +0300
+Subject: [PATCH] AGL hsdk defconfig
+
+Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+---
+ arch/arc/configs/hsdk_defconfig | 1113 ++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 1103 insertions(+), 10 deletions(-)
+
+diff --git a/arch/arc/configs/hsdk_defconfig b/arch/arc/configs/hsdk_defconfig
+index fd0ba7298050..8b37b4b01ffd 100644
+--- a/arch/arc/configs/hsdk_defconfig
++++ b/arch/arc/configs/hsdk_defconfig
+@@ -1,78 +1,1171 @@
++CONFIG_DEFAULT_HOSTNAME="ARCLinux"
+ CONFIG_SYSVIPC=y
++CONFIG_POSIX_MQUEUE=y
+ # CONFIG_CROSS_MEMORY_ATTACH is not set
++CONFIG_AUDIT=y
+ CONFIG_NO_HZ_IDLE=y
+ CONFIG_HIGH_RES_TIMERS=y
+-CONFIG_IKCONFIG=y
++CONFIG_BSD_PROCESS_ACCT=y
++CONFIG_BSD_PROCESS_ACCT_V3=y
++CONFIG_TASKSTATS=y
++CONFIG_TASK_DELAY_ACCT=y
++CONFIG_IKCONFIG=m
+ CONFIG_IKCONFIG_PROC=y
++CONFIG_MEMCG=y
++CONFIG_MEMCG_SWAP=y
++CONFIG_BLK_CGROUP=y
++CONFIG_DEBUG_BLK_CGROUP=y
++CONFIG_CGROUP_PIDS=y
++CONFIG_CGROUP_RDMA=y
++CONFIG_CGROUP_FREEZER=y
++CONFIG_CPUSETS=y
++CONFIG_CGROUP_DEVICE=y
++CONFIG_CGROUP_CPUACCT=y
+ CONFIG_NAMESPACES=y
+ # CONFIG_UTS_NS is not set
++CONFIG_USER_NS=y
+ # CONFIG_PID_NS is not set
++CONFIG_SCHED_AUTOGROUP=y
+ CONFIG_BLK_DEV_INITRD=y
+ CONFIG_EMBEDDED=y
+-CONFIG_PERF_EVENTS=y
+ # CONFIG_VM_EVENT_COUNTERS is not set
+ # CONFIG_COMPAT_BRK is not set
+ CONFIG_SLAB=y
++CONFIG_PROFILING=y
++CONFIG_OPROFILE=m
++CONFIG_KPROBES=y
+ CONFIG_MODULES=y
+ CONFIG_MODULE_UNLOAD=y
++CONFIG_MODVERSIONS=y
++CONFIG_MODULE_SRCVERSION_ALL=y
++CONFIG_PARTITION_ADVANCED=y
++CONFIG_MAC_PARTITION=y
++CONFIG_CFQ_GROUP_IOSCHED=y
+ CONFIG_ARC_SOC_HSDK=y
+ CONFIG_ISA_ARCV2=y
+ CONFIG_SMP=y
+ CONFIG_LINUX_LINK_BASE=0x90000000
+ CONFIG_LINUX_RAM_BASE=0x80000000
+ CONFIG_ARC_BUILTIN_DTB_NAME="hsdk"
+-CONFIG_PREEMPT=y
++CONFIG_PREEMPT_VOLUNTARY=y
++CONFIG_BINFMT_MISC=m
+ # CONFIG_COMPACTION is not set
++CONFIG_CLEANCACHE=y
++CONFIG_FRONTSWAP=y
++CONFIG_CMA=y
++CONFIG_ZSMALLOC=m
++CONFIG_PGTABLE_MAPPING=y
+ CONFIG_NET=y
+ CONFIG_PACKET=y
+ CONFIG_UNIX=y
++CONFIG_XFRM_USER=y
++CONFIG_NET_KEY=m
+ CONFIG_INET=y
++CONFIG_IP_MULTICAST=y
++CONFIG_IP_ADVANCED_ROUTER=y
++CONFIG_IP_MULTIPLE_TABLES=y
++CONFIG_IP_ROUTE_MULTIPATH=y
++CONFIG_IP_ROUTE_VERBOSE=y
++CONFIG_IP_PNP=y
++CONFIG_IP_PNP_DHCP=y
++CONFIG_IP_PNP_RARP=y
++CONFIG_NET_IPIP=m
++CONFIG_NET_IPGRE_DEMUX=m
++CONFIG_NET_IPGRE=m
++CONFIG_IP_MROUTE=y
++CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
++CONFIG_IP_PIMSM_V1=y
++CONFIG_IP_PIMSM_V2=y
++CONFIG_SYN_COOKIES=y
++CONFIG_INET_AH=m
++CONFIG_INET_ESP=m
++CONFIG_INET_IPCOMP=m
++CONFIG_INET_XFRM_MODE_TRANSPORT=m
++CONFIG_INET_XFRM_MODE_TUNNEL=m
++CONFIG_INET_XFRM_MODE_BEET=m
++CONFIG_INET_DIAG=m
++CONFIG_TCP_CONG_ADVANCED=y
++CONFIG_TCP_CONG_BBR=m
++CONFIG_IPV6=m
++CONFIG_IPV6_ROUTER_PREF=y
++CONFIG_IPV6_ROUTE_INFO=y
++CONFIG_INET6_AH=m
++CONFIG_INET6_ESP=m
++CONFIG_INET6_IPCOMP=m
++CONFIG_IPV6_SIT_6RD=y
++CONFIG_IPV6_TUNNEL=m
++CONFIG_IPV6_MULTIPLE_TABLES=y
++CONFIG_IPV6_SUBTREES=y
++CONFIG_IPV6_MROUTE=y
++CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
++CONFIG_IPV6_PIMSM_V2=y
++CONFIG_NETWORK_SECMARK=y
++CONFIG_NETFILTER=y
++CONFIG_NF_CONNTRACK=m
++CONFIG_NF_CONNTRACK_ZONES=y
++CONFIG_NF_CONNTRACK_EVENTS=y
++CONFIG_NF_CONNTRACK_TIMESTAMP=y
++CONFIG_NF_CONNTRACK_AMANDA=m
++CONFIG_NF_CONNTRACK_FTP=m
++CONFIG_NF_CONNTRACK_H323=m
++CONFIG_NF_CONNTRACK_IRC=m
++CONFIG_NF_CONNTRACK_NETBIOS_NS=m
++CONFIG_NF_CONNTRACK_SNMP=m
++CONFIG_NF_CONNTRACK_PPTP=m
++CONFIG_NF_CONNTRACK_SANE=m
++CONFIG_NF_CONNTRACK_SIP=m
++CONFIG_NF_CONNTRACK_TFTP=m
++CONFIG_NF_CT_NETLINK=m
++CONFIG_NETFILTER_XT_SET=m
++CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
++CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
++CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
++CONFIG_NETFILTER_XT_TARGET_DSCP=m
++CONFIG_NETFILTER_XT_TARGET_HMARK=m
++CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
++CONFIG_NETFILTER_XT_TARGET_LED=m
++CONFIG_NETFILTER_XT_TARGET_LOG=m
++CONFIG_NETFILTER_XT_TARGET_MARK=m
++CONFIG_NETFILTER_XT_TARGET_NFLOG=m
++CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
++CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
++CONFIG_NETFILTER_XT_TARGET_TEE=m
++CONFIG_NETFILTER_XT_TARGET_TPROXY=m
++CONFIG_NETFILTER_XT_TARGET_TRACE=m
++CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
++CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
++CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
++CONFIG_NETFILTER_XT_MATCH_BPF=m
++CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
++CONFIG_NETFILTER_XT_MATCH_COMMENT=m
++CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
++CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
++CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
++CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
++CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
++CONFIG_NETFILTER_XT_MATCH_CPU=m
++CONFIG_NETFILTER_XT_MATCH_DCCP=m
++CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
++CONFIG_NETFILTER_XT_MATCH_DSCP=m
++CONFIG_NETFILTER_XT_MATCH_ESP=m
++CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
++CONFIG_NETFILTER_XT_MATCH_HELPER=m
++CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
++CONFIG_NETFILTER_XT_MATCH_IPVS=m
++CONFIG_NETFILTER_XT_MATCH_LENGTH=m
++CONFIG_NETFILTER_XT_MATCH_LIMIT=m
++CONFIG_NETFILTER_XT_MATCH_MAC=m
++CONFIG_NETFILTER_XT_MATCH_MARK=m
++CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
++CONFIG_NETFILTER_XT_MATCH_NFACCT=m
++CONFIG_NETFILTER_XT_MATCH_OSF=m
++CONFIG_NETFILTER_XT_MATCH_OWNER=m
++CONFIG_NETFILTER_XT_MATCH_POLICY=m
++CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
++CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
++CONFIG_NETFILTER_XT_MATCH_QUOTA=m
++CONFIG_NETFILTER_XT_MATCH_RATEEST=m
++CONFIG_NETFILTER_XT_MATCH_REALM=m
++CONFIG_NETFILTER_XT_MATCH_RECENT=m
++# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
++CONFIG_NETFILTER_XT_MATCH_STATE=m
++CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
++CONFIG_NETFILTER_XT_MATCH_STRING=m
++CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
++CONFIG_NETFILTER_XT_MATCH_TIME=m
++CONFIG_NETFILTER_XT_MATCH_U32=m
++CONFIG_IP_SET=m
++CONFIG_IP_SET_BITMAP_IP=m
++CONFIG_IP_SET_BITMAP_IPMAC=m
++CONFIG_IP_SET_BITMAP_PORT=m
++CONFIG_IP_SET_HASH_IP=m
++CONFIG_IP_SET_HASH_IPPORT=m
++CONFIG_IP_SET_HASH_IPPORTIP=m
++CONFIG_IP_SET_HASH_IPPORTNET=m
++CONFIG_IP_SET_HASH_NET=m
++CONFIG_IP_SET_HASH_NETPORT=m
++CONFIG_IP_SET_HASH_NETIFACE=m
++CONFIG_IP_SET_LIST_SET=m
++CONFIG_IP_VS=m
++CONFIG_IP_VS_PROTO_TCP=y
++CONFIG_IP_VS_PROTO_UDP=y
++CONFIG_IP_VS_PROTO_ESP=y
++CONFIG_IP_VS_PROTO_AH=y
++CONFIG_IP_VS_PROTO_SCTP=y
++CONFIG_IP_VS_RR=m
++CONFIG_IP_VS_WRR=m
++CONFIG_IP_VS_LC=m
++CONFIG_IP_VS_WLC=m
++CONFIG_IP_VS_LBLC=m
++CONFIG_IP_VS_LBLCR=m
++CONFIG_IP_VS_DH=m
++CONFIG_IP_VS_SH=m
++CONFIG_IP_VS_SED=m
++CONFIG_IP_VS_NQ=m
++CONFIG_IP_VS_FTP=m
++CONFIG_IP_VS_PE_SIP=m
++CONFIG_NF_CONNTRACK_IPV4=m
++CONFIG_IP_NF_IPTABLES=m
++CONFIG_IP_NF_MATCH_AH=m
++CONFIG_IP_NF_MATCH_ECN=m
++CONFIG_IP_NF_MATCH_RPFILTER=m
++CONFIG_IP_NF_MATCH_TTL=m
++CONFIG_IP_NF_FILTER=m
++CONFIG_IP_NF_TARGET_REJECT=m
++CONFIG_IP_NF_NAT=m
++CONFIG_IP_NF_TARGET_MASQUERADE=m
++CONFIG_IP_NF_TARGET_NETMAP=m
++CONFIG_IP_NF_TARGET_REDIRECT=m
++CONFIG_IP_NF_MANGLE=m
++CONFIG_IP_NF_TARGET_CLUSTERIP=m
++CONFIG_IP_NF_TARGET_ECN=m
++CONFIG_IP_NF_TARGET_TTL=m
++CONFIG_IP_NF_RAW=m
++CONFIG_IP_NF_SECURITY=m
++CONFIG_IP_NF_ARPTABLES=m
++CONFIG_IP_NF_ARPFILTER=m
++CONFIG_IP_NF_ARP_MANGLE=m
++CONFIG_NF_CONNTRACK_IPV6=m
++CONFIG_IP6_NF_IPTABLES=m
++CONFIG_IP6_NF_MATCH_AH=m
++CONFIG_IP6_NF_MATCH_EUI64=m
++CONFIG_IP6_NF_MATCH_FRAG=m
++CONFIG_IP6_NF_MATCH_OPTS=m
++CONFIG_IP6_NF_MATCH_HL=m
++CONFIG_IP6_NF_MATCH_IPV6HEADER=m
++CONFIG_IP6_NF_MATCH_MH=m
++CONFIG_IP6_NF_MATCH_RPFILTER=m
++CONFIG_IP6_NF_MATCH_RT=m
++CONFIG_IP6_NF_TARGET_HL=m
++CONFIG_IP6_NF_FILTER=m
++CONFIG_IP6_NF_TARGET_REJECT=m
++CONFIG_IP6_NF_MANGLE=m
++CONFIG_IP6_NF_RAW=m
++CONFIG_IP6_NF_SECURITY=m
++CONFIG_IP6_NF_NAT=m
++CONFIG_IP6_NF_TARGET_MASQUERADE=m
++CONFIG_IP6_NF_TARGET_NPT=m
++CONFIG_BRIDGE_NF_EBTABLES=m
++CONFIG_BRIDGE_EBT_BROUTE=m
++CONFIG_BRIDGE_EBT_T_FILTER=m
++CONFIG_BRIDGE_EBT_T_NAT=m
++CONFIG_BRIDGE_EBT_802_3=m
++CONFIG_BRIDGE_EBT_AMONG=m
++CONFIG_BRIDGE_EBT_ARP=m
++CONFIG_BRIDGE_EBT_IP=m
++CONFIG_BRIDGE_EBT_IP6=m
++CONFIG_BRIDGE_EBT_LIMIT=m
++CONFIG_BRIDGE_EBT_MARK=m
++CONFIG_BRIDGE_EBT_PKTTYPE=m
++CONFIG_BRIDGE_EBT_STP=m
++CONFIG_BRIDGE_EBT_VLAN=m
++CONFIG_BRIDGE_EBT_ARPREPLY=m
++CONFIG_BRIDGE_EBT_DNAT=m
++CONFIG_BRIDGE_EBT_MARK_T=m
++CONFIG_BRIDGE_EBT_REDIRECT=m
++CONFIG_BRIDGE_EBT_SNAT=m
++CONFIG_BRIDGE_EBT_LOG=m
++CONFIG_BRIDGE_EBT_NFLOG=m
++CONFIG_IP_SCTP=m
++CONFIG_ATM=m
++CONFIG_L2TP=m
++CONFIG_L2TP_V3=y
++CONFIG_L2TP_IP=m
++CONFIG_L2TP_ETH=m
++CONFIG_BRIDGE=m
++CONFIG_VLAN_8021Q=m
++CONFIG_VLAN_8021Q_GVRP=y
++CONFIG_ATALK=m
++CONFIG_6LOWPAN=m
++CONFIG_IEEE802154=m
++CONFIG_IEEE802154_6LOWPAN=m
++CONFIG_MAC802154=m
++CONFIG_NET_SCHED=y
++CONFIG_NET_SCH_CBQ=m
++CONFIG_NET_SCH_HTB=m
++CONFIG_NET_SCH_HFSC=m
++CONFIG_NET_SCH_ATM=m
++CONFIG_NET_SCH_PRIO=m
++CONFIG_NET_SCH_MULTIQ=m
++CONFIG_NET_SCH_RED=m
++CONFIG_NET_SCH_SFB=m
++CONFIG_NET_SCH_SFQ=m
++CONFIG_NET_SCH_TEQL=m
++CONFIG_NET_SCH_TBF=m
++CONFIG_NET_SCH_GRED=m
++CONFIG_NET_SCH_DSMARK=m
++CONFIG_NET_SCH_NETEM=m
++CONFIG_NET_SCH_DRR=m
++CONFIG_NET_SCH_MQPRIO=m
++CONFIG_NET_SCH_CHOKE=m
++CONFIG_NET_SCH_QFQ=m
++CONFIG_NET_SCH_CODEL=m
++CONFIG_NET_SCH_FQ_CODEL=m
++CONFIG_NET_SCH_FQ=m
++CONFIG_NET_SCH_HHF=m
++CONFIG_NET_SCH_PIE=m
++CONFIG_NET_SCH_INGRESS=m
++CONFIG_NET_SCH_PLUG=m
++CONFIG_NET_CLS_BASIC=m
++CONFIG_NET_CLS_TCINDEX=m
++CONFIG_NET_CLS_ROUTE4=m
++CONFIG_NET_CLS_FW=m
++CONFIG_NET_CLS_U32=m
++CONFIG_CLS_U32_MARK=y
++CONFIG_NET_CLS_RSVP=m
++CONFIG_NET_CLS_RSVP6=m
++CONFIG_NET_CLS_FLOW=m
++CONFIG_NET_CLS_CGROUP=m
++CONFIG_NET_EMATCH=y
++CONFIG_NET_EMATCH_CMP=m
++CONFIG_NET_EMATCH_NBYTE=m
++CONFIG_NET_EMATCH_U32=m
++CONFIG_NET_EMATCH_META=m
++CONFIG_NET_EMATCH_TEXT=m
++CONFIG_NET_EMATCH_IPSET=m
++CONFIG_NET_CLS_ACT=y
++CONFIG_NET_ACT_POLICE=m
++CONFIG_NET_ACT_GACT=m
++CONFIG_GACT_PROB=y
++CONFIG_NET_ACT_MIRRED=m
++CONFIG_NET_ACT_IPT=m
++CONFIG_NET_ACT_NAT=m
++CONFIG_NET_ACT_PEDIT=m
++CONFIG_NET_ACT_SIMP=m
++CONFIG_NET_ACT_SKBEDIT=m
++CONFIG_NET_ACT_CSUM=m
++CONFIG_BATMAN_ADV=m
++CONFIG_OPENVSWITCH=m
++CONFIG_NET_PKTGEN=m
++CONFIG_HAMRADIO=y
++CONFIG_AX25=m
++CONFIG_NETROM=m
++CONFIG_ROSE=m
++CONFIG_MKISS=m
++CONFIG_6PACK=m
++CONFIG_BPQETHER=m
++CONFIG_BAYCOM_SER_FDX=m
++CONFIG_BAYCOM_SER_HDX=m
++CONFIG_YAM=m
++CONFIG_CAN=m
++CONFIG_CAN_VCAN=m
++CONFIG_CAN_SLCAN=m
++CONFIG_CAN_MCP251X=m
++CONFIG_CAN_ESD_USB2=m
++CONFIG_CAN_GS_USB=m
++CONFIG_CAN_KVASER_USB=m
++CONFIG_CAN_PEAK_USB=m
++CONFIG_CAN_8DEV_USB=m
++CONFIG_BT=m
++CONFIG_BT_RFCOMM=m
++CONFIG_BT_RFCOMM_TTY=y
++CONFIG_BT_BNEP=m
++CONFIG_BT_BNEP_MC_FILTER=y
++CONFIG_BT_BNEP_PROTO_FILTER=y
++CONFIG_BT_HIDP=m
++CONFIG_BT_6LOWPAN=m
++CONFIG_BT_LEDS=y
++CONFIG_BT_HCIBTUSB=m
++CONFIG_BT_HCIUART=m
++CONFIG_BT_HCIBFUSB=m
++CONFIG_BT_WILINK=m
++CONFIG_CFG80211=m
++CONFIG_MAC80211=m
++CONFIG_MAC80211_MESH=y
++CONFIG_WIMAX=m
++CONFIG_RFKILL=m
++CONFIG_RFKILL_INPUT=y
++CONFIG_NET_9P=m
++CONFIG_NFC=m
+ CONFIG_DEVTMPFS=y
++CONFIG_DEVTMPFS_MOUNT=y
+ # CONFIG_STANDALONE is not set
+ # CONFIG_PREVENT_FIRMWARE_BUILD is not set
++CONFIG_MTD=m
++CONFIG_MTD_BLOCK=m
++CONFIG_MTD_M25P80=m
++CONFIG_MTD_NAND=m
++CONFIG_MTD_SPI_NOR=m
++CONFIG_MTD_UBI=m
++CONFIG_ZRAM=m
++CONFIG_BLK_DEV_LOOP=y
++CONFIG_BLK_DEV_CRYPTOLOOP=m
++CONFIG_BLK_DEV_NBD=y
++CONFIG_BLK_DEV_RAM=y
++CONFIG_CDROM_PKTCDVD=m
++CONFIG_ATA_OVER_ETH=m
++CONFIG_EEPROM_AT24=m
++CONFIG_TI_ST=m
+ CONFIG_SCSI=y
++# CONFIG_SCSI_PROC_FS is not set
+ CONFIG_BLK_DEV_SD=y
++CONFIG_CHR_DEV_ST=m
++CONFIG_CHR_DEV_OSST=m
++CONFIG_BLK_DEV_SR=m
++CONFIG_CHR_DEV_SG=m
++CONFIG_SCSI_ISCSI_ATTRS=y
++CONFIG_ISCSI_TCP=m
++CONFIG_ISCSI_BOOT_SYSFS=m
++CONFIG_MD=y
++CONFIG_MD_LINEAR=m
++CONFIG_BLK_DEV_DM=m
++CONFIG_DM_CRYPT=m
++CONFIG_DM_SNAPSHOT=m
++CONFIG_DM_THIN_PROVISIONING=m
++CONFIG_DM_MIRROR=m
++CONFIG_DM_LOG_USERSPACE=m
++CONFIG_DM_RAID=m
++CONFIG_DM_ZERO=m
++CONFIG_DM_DELAY=m
+ CONFIG_NETDEVICES=y
++CONFIG_BONDING=m
++CONFIG_DUMMY=m
++CONFIG_IFB=m
++CONFIG_MACVLAN=m
++CONFIG_VXLAN=m
++CONFIG_NETCONSOLE=m
++CONFIG_TUN=m
++CONFIG_VETH=m
++CONFIG_ENC28J60=m
+ CONFIG_STMMAC_ETH=y
++CONFIG_MDIO_BITBANG=m
+ CONFIG_MICREL_PHY=y
+-CONFIG_INPUT_EVDEV=y
++CONFIG_PPP=m
++CONFIG_PPP_BSDCOMP=m
++CONFIG_PPP_DEFLATE=m
++CONFIG_PPP_FILTER=y
++CONFIG_PPP_MPPE=m
++CONFIG_PPP_MULTILINK=y
++CONFIG_PPPOATM=m
++CONFIG_PPPOE=m
++CONFIG_PPPOL2TP=m
++CONFIG_PPP_ASYNC=m
++CONFIG_PPP_SYNC_TTY=m
++CONFIG_SLIP=m
++CONFIG_SLIP_COMPRESSED=y
++CONFIG_SLIP_SMART=y
++CONFIG_USB_CATC=m
++CONFIG_USB_KAWETH=m
++CONFIG_USB_PEGASUS=m
++CONFIG_USB_RTL8150=m
++CONFIG_USB_RTL8152=m
++CONFIG_USB_LAN78XX=m
++CONFIG_USB_USBNET=y
++CONFIG_USB_NET_AX8817X=m
++CONFIG_USB_NET_AX88179_178A=m
++CONFIG_USB_NET_CDCETHER=m
++CONFIG_USB_NET_CDC_EEM=m
++CONFIG_USB_NET_CDC_NCM=m
++CONFIG_USB_NET_HUAWEI_CDC_NCM=m
++CONFIG_USB_NET_CDC_MBIM=m
++CONFIG_USB_NET_DM9601=m
++CONFIG_USB_NET_SR9700=m
++CONFIG_USB_NET_SR9800=m
++CONFIG_USB_NET_SMSC75XX=m
++CONFIG_USB_NET_SMSC95XX=y
++CONFIG_USB_NET_GL620A=m
++CONFIG_USB_NET_NET1080=m
++CONFIG_USB_NET_PLUSB=m
++CONFIG_USB_NET_MCS7830=m
++CONFIG_USB_NET_CDC_SUBSET=m
++CONFIG_USB_ALI_M5632=y
++CONFIG_USB_AN2720=y
++CONFIG_USB_EPSON2888=y
++CONFIG_USB_KC2190=y
++CONFIG_USB_NET_ZAURUS=m
++CONFIG_USB_NET_CX82310_ETH=m
++CONFIG_USB_NET_KALMIA=m
++CONFIG_USB_NET_QMI_WWAN=m
++CONFIG_USB_HSO=m
++CONFIG_USB_NET_INT51X1=m
++CONFIG_USB_IPHETH=m
++CONFIG_USB_SIERRA_NET=m
++CONFIG_USB_VL600=m
++CONFIG_ATH9K=m
++CONFIG_ATH9K_HTC=m
++CONFIG_CARL9170=m
++CONFIG_ATH6KL=m
++CONFIG_ATH6KL_USB=m
++CONFIG_AR5523=m
++CONFIG_AT76C50X_USB=m
++CONFIG_B43=m
++# CONFIG_B43_PHY_N is not set
++CONFIG_B43LEGACY=m
++CONFIG_BRCMFMAC=m
++CONFIG_BRCMFMAC_USB=y
++CONFIG_BRCMDBG=y
++CONFIG_HOSTAP=m
++CONFIG_P54_COMMON=m
++CONFIG_P54_USB=m
++CONFIG_LIBERTAS=m
++CONFIG_LIBERTAS_USB=m
++CONFIG_LIBERTAS_SDIO=m
++CONFIG_LIBERTAS_THINFIRM=m
++CONFIG_LIBERTAS_THINFIRM_USB=m
++CONFIG_MWIFIEX=m
++CONFIG_MWIFIEX_SDIO=m
++CONFIG_MT7601U=m
++CONFIG_RT2X00=m
++CONFIG_RT2500USB=m
++CONFIG_RT73USB=m
++CONFIG_RT2800USB=m
++CONFIG_RT2800USB_RT3573=y
++CONFIG_RT2800USB_RT53XX=y
++CONFIG_RT2800USB_RT55XX=y
++CONFIG_RT2800USB_UNKNOWN=y
++CONFIG_RTL8187=m
++CONFIG_RTL8192CU=m
++CONFIG_RTL8XXXU=m
++CONFIG_USB_ZD1201=m
++CONFIG_ZD1211RW=m
++CONFIG_MAC80211_HWSIM=m
++CONFIG_USB_NET_RNDIS_WLAN=m
++CONFIG_WIMAX_I2400M_USB=m
++CONFIG_IEEE802154_AT86RF230=m
++CONFIG_IEEE802154_MRF24J40=m
++CONFIG_IEEE802154_CC2520=m
++CONFIG_INPUT_POLLDEV=m
++CONFIG_INPUT_JOYDEV=y
++CONFIG_INPUT_EVDEV=m
+ # CONFIG_INPUT_KEYBOARD is not set
+ # CONFIG_INPUT_MOUSE is not set
+-# CONFIG_SERIO is not set
++CONFIG_INPUT_JOYSTICK=y
++CONFIG_JOYSTICK_ADI=y
++CONFIG_JOYSTICK_IFORCE=m
++CONFIG_JOYSTICK_IFORCE_USB=y
++CONFIG_JOYSTICK_XPAD=m
++CONFIG_JOYSTICK_XPAD_FF=y
++CONFIG_JOYSTICK_XPAD_LEDS=y
++CONFIG_INPUT_TOUCHSCREEN=y
++CONFIG_TOUCHSCREEN_ADS7846=m
++CONFIG_TOUCHSCREEN_EGALAX=m
++CONFIG_TOUCHSCREEN_GOODIX=m
++CONFIG_TOUCHSCREEN_EDT_FT5X06=m
++CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
++CONFIG_TOUCHSCREEN_STMPE=m
++CONFIG_INPUT_MISC=y
++CONFIG_INPUT_AD714X=m
++CONFIG_INPUT_ATI_REMOTE2=m
++CONFIG_INPUT_KEYSPAN_REMOTE=m
++CONFIG_INPUT_POWERMATE=m
++CONFIG_INPUT_YEALINK=m
++CONFIG_INPUT_CM109=m
++CONFIG_INPUT_UINPUT=y
++CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
++CONFIG_INPUT_ADXL34X=m
++CONFIG_INPUT_CMA3000=m
++CONFIG_SERIO=m
++CONFIG_SERIO_RAW=m
++CONFIG_GAMEPORT_NS558=m
++CONFIG_GAMEPORT_L4=m
+ # CONFIG_LEGACY_PTYS is not set
+ CONFIG_SERIAL_8250=y
+ CONFIG_SERIAL_8250_CONSOLE=y
++# CONFIG_SERIAL_8250_DMA is not set
+ CONFIG_SERIAL_8250_DW=y
+ CONFIG_SERIAL_OF_PLATFORM=y
+-# CONFIG_HW_RANDOM is not set
+-# CONFIG_HWMON is not set
++CONFIG_TTY_PRINTK=y
++CONFIG_HW_RANDOM=y
++CONFIG_RAW_DRIVER=y
++CONFIG_I2C_CHARDEV=m
++CONFIG_I2C_GPIO=m
++CONFIG_I2C_ROBOTFUZZ_OSIF=m
++CONFIG_SPI=y
++CONFIG_SPI_SPIDEV=m
++CONFIG_PPS_CLIENT_LDISC=m
++CONFIG_PPS_CLIENT_GPIO=m
++CONFIG_GPIOLIB=y
++CONFIG_GPIO_SYSFS=y
++CONFIG_GPIO_ARIZONA=m
++CONFIG_GPIO_STMPE=y
++CONFIG_W1=m
++CONFIG_W1_MASTER_DS2490=m
++CONFIG_W1_MASTER_DS2482=m
++CONFIG_W1_MASTER_DS1WM=m
++CONFIG_W1_MASTER_GPIO=m
++CONFIG_W1_SLAVE_THERM=m
++CONFIG_W1_SLAVE_SMEM=m
++CONFIG_W1_SLAVE_DS2408=m
++CONFIG_W1_SLAVE_DS2413=m
++CONFIG_W1_SLAVE_DS2406=m
++CONFIG_W1_SLAVE_DS2423=m
++CONFIG_W1_SLAVE_DS2431=m
++CONFIG_W1_SLAVE_DS2433=m
++CONFIG_W1_SLAVE_DS2438=m
++CONFIG_W1_SLAVE_DS2760=m
++CONFIG_W1_SLAVE_DS2780=m
++CONFIG_W1_SLAVE_DS2781=m
++CONFIG_W1_SLAVE_DS28E04=m
++CONFIG_POWER_RESET=y
++CONFIG_POWER_RESET_GPIO=y
++CONFIG_BATTERY_DS2760=m
++CONFIG_HWMON=m
++CONFIG_SENSORS_JC42=m
++CONFIG_SENSORS_LM75=m
++CONFIG_SENSORS_SHT21=m
++CONFIG_SENSORS_SHTC1=m
++CONFIG_SENSORS_ADS1015=m
++CONFIG_SENSORS_INA2XX=m
++CONFIG_SENSORS_TMP102=m
++CONFIG_WATCHDOG=y
++CONFIG_GPIO_WATCHDOG=m
++CONFIG_MFD_STMPE=y
++CONFIG_STMPE_SPI=y
++CONFIG_MFD_ARIZONA_I2C=m
++CONFIG_MFD_ARIZONA_SPI=m
++CONFIG_MFD_WM5102=y
++CONFIG_REGULATOR=y
++CONFIG_REGULATOR_FIXED_VOLTAGE=m
++CONFIG_RC_CORE=y
++CONFIG_LIRC=y
++CONFIG_RC_DECODERS=y
++CONFIG_IR_RC5_DECODER=m
++CONFIG_IR_RC6_DECODER=m
++CONFIG_IR_JVC_DECODER=m
++CONFIG_IR_SONY_DECODER=m
++CONFIG_IR_SANYO_DECODER=m
++CONFIG_IR_SHARP_DECODER=m
++CONFIG_IR_MCE_KBD_DECODER=m
++CONFIG_IR_XMP_DECODER=m
++CONFIG_IR_IMON_DECODER=m
++CONFIG_RC_DEVICES=y
++CONFIG_RC_ATI_REMOTE=m
++CONFIG_IR_HIX5HD2=m
++CONFIG_IR_IMON=m
++CONFIG_IR_IMON_RAW=m
++CONFIG_IR_MCEUSB=m
++CONFIG_IR_REDRAT3=m
++CONFIG_IR_SPI=m
++CONFIG_IR_STREAMZAP=m
++CONFIG_IR_IGORPLUGUSB=m
++CONFIG_IR_IGUANA=m
++CONFIG_IR_TTUSBIR=m
++CONFIG_RC_LOOPBACK=m
++CONFIG_IR_GPIO_CIR=m
++CONFIG_IR_GPIO_TX=m
++CONFIG_IR_PWM_TX=m
++CONFIG_IR_SERIAL=m
++CONFIG_IR_SIR=m
++CONFIG_MEDIA_SUPPORT=m
++CONFIG_MEDIA_CAMERA_SUPPORT=y
++CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
++CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
++CONFIG_MEDIA_RADIO_SUPPORT=y
++CONFIG_MEDIA_CONTROLLER=y
++CONFIG_MEDIA_USB_SUPPORT=y
++CONFIG_USB_VIDEO_CLASS=m
++CONFIG_USB_M5602=m
++CONFIG_USB_STV06XX=m
++CONFIG_USB_GL860=m
++CONFIG_USB_GSPCA_BENQ=m
++CONFIG_USB_GSPCA_CONEX=m
++CONFIG_USB_GSPCA_CPIA1=m
++CONFIG_USB_GSPCA_DTCS033=m
++CONFIG_USB_GSPCA_ETOMS=m
++CONFIG_USB_GSPCA_FINEPIX=m
++CONFIG_USB_GSPCA_JEILINJ=m
++CONFIG_USB_GSPCA_JL2005BCD=m
++CONFIG_USB_GSPCA_KINECT=m
++CONFIG_USB_GSPCA_KONICA=m
++CONFIG_USB_GSPCA_MARS=m
++CONFIG_USB_GSPCA_MR97310A=m
++CONFIG_USB_GSPCA_NW80X=m
++CONFIG_USB_GSPCA_OV519=m
++CONFIG_USB_GSPCA_OV534=m
++CONFIG_USB_GSPCA_OV534_9=m
++CONFIG_USB_GSPCA_PAC207=m
++CONFIG_USB_GSPCA_PAC7302=m
++CONFIG_USB_GSPCA_PAC7311=m
++CONFIG_USB_GSPCA_SE401=m
++CONFIG_USB_GSPCA_SN9C2028=m
++CONFIG_USB_GSPCA_SN9C20X=m
++CONFIG_USB_GSPCA_SONIXB=m
++CONFIG_USB_GSPCA_SONIXJ=m
++CONFIG_USB_GSPCA_SPCA500=m
++CONFIG_USB_GSPCA_SPCA501=m
++CONFIG_USB_GSPCA_SPCA505=m
++CONFIG_USB_GSPCA_SPCA506=m
++CONFIG_USB_GSPCA_SPCA508=m
++CONFIG_USB_GSPCA_SPCA561=m
++CONFIG_USB_GSPCA_SPCA1528=m
++CONFIG_USB_GSPCA_SQ905=m
++CONFIG_USB_GSPCA_SQ905C=m
++CONFIG_USB_GSPCA_SQ930X=m
++CONFIG_USB_GSPCA_STK014=m
++CONFIG_USB_GSPCA_STK1135=m
++CONFIG_USB_GSPCA_STV0680=m
++CONFIG_USB_GSPCA_SUNPLUS=m
++CONFIG_USB_GSPCA_T613=m
++CONFIG_USB_GSPCA_TOPRO=m
++CONFIG_USB_GSPCA_TV8532=m
++CONFIG_USB_GSPCA_VC032X=m
++CONFIG_USB_GSPCA_VICAM=m
++CONFIG_USB_GSPCA_XIRLINK_CIT=m
++CONFIG_USB_GSPCA_ZC3XX=m
++CONFIG_USB_PWC=m
++CONFIG_VIDEO_CPIA2=m
++CONFIG_USB_ZR364XX=m
++CONFIG_USB_STKWEBCAM=m
++CONFIG_USB_S2255=m
++CONFIG_VIDEO_USBTV=m
++CONFIG_VIDEO_PVRUSB2=m
++CONFIG_VIDEO_HDPVR=m
++CONFIG_VIDEO_USBVISION=m
++CONFIG_VIDEO_STK1160_COMMON=m
++CONFIG_VIDEO_GO7007=m
++CONFIG_VIDEO_GO7007_USB=m
++CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
++CONFIG_VIDEO_AU0828=m
++CONFIG_DVB_USB_V2=m
++CONFIG_DVB_USB_AF9035=m
++CONFIG_DVB_USB_ANYSEE=m
++CONFIG_DVB_USB_AU6610=m
++CONFIG_DVB_USB_AZ6007=m
++CONFIG_DVB_USB_CE6230=m
++CONFIG_DVB_USB_EC168=m
++CONFIG_DVB_USB_GL861=m
++CONFIG_DVB_USB_MXL111SF=m
++CONFIG_DVB_USB_DVBSKY=m
++CONFIG_SMS_USB_DRV=m
++CONFIG_DVB_B2C2_FLEXCOP_USB=m
++CONFIG_DVB_AS102=m
++CONFIG_VIDEO_EM28XX=m
++CONFIG_VIDEO_EM28XX_V4L2=m
++CONFIG_VIDEO_EM28XX_ALSA=m
++CONFIG_VIDEO_EM28XX_DVB=m
++CONFIG_RADIO_SI4713=m
++CONFIG_I2C_SI4713=m
++CONFIG_USB_MR800=m
++CONFIG_USB_DSBR=m
++CONFIG_RADIO_SHARK=m
++CONFIG_RADIO_SHARK2=m
++CONFIG_USB_KEENE=m
++CONFIG_USB_MA901=m
++CONFIG_RADIO_TEA5764=m
++CONFIG_RADIO_SAA7706H=m
++CONFIG_RADIO_TEF6862=m
++CONFIG_RADIO_WL1273=m
++CONFIG_RADIO_WL128X=m
++# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
++CONFIG_VIDEO_UDA1342=m
++CONFIG_VIDEO_SONY_BTF_MPX=m
++CONFIG_VIDEO_TVP5150=m
++CONFIG_VIDEO_TW2804=m
++CONFIG_VIDEO_TW9903=m
++CONFIG_VIDEO_TW9906=m
++CONFIG_VIDEO_OV7640=m
++CONFIG_VIDEO_MT9V011=m
+ CONFIG_DRM=y
+ # CONFIG_DRM_FBDEV_EMULATION is not set
+ CONFIG_DRM_UDL=y
+ CONFIG_DRM_ETNAVIV=y
+ CONFIG_FB=y
++# CONFIG_LCD_CLASS_DEVICE is not set
++# CONFIG_BACKLIGHT_GENERIC is not set
+ CONFIG_FRAMEBUFFER_CONSOLE=y
++CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
++CONFIG_LOGO=y
++# CONFIG_LOGO_LINUX_MONO is not set
++# CONFIG_LOGO_LINUX_VGA16 is not set
++CONFIG_SOUND=y
++CONFIG_SND=m
++CONFIG_SND_HRTIMER=m
++CONFIG_SND_SEQUENCER=m
++CONFIG_SND_SEQ_DUMMY=m
++CONFIG_SND_DUMMY=m
++CONFIG_SND_ALOOP=m
++CONFIG_SND_VIRMIDI=m
++CONFIG_SND_MTPAV=m
++CONFIG_SND_SERIAL_U16550=m
++CONFIG_SND_MPU401=m
++CONFIG_SND_USB_AUDIO=m
++CONFIG_SND_USB_UA101=m
++CONFIG_SND_USB_CAIAQ=m
++CONFIG_SND_USB_CAIAQ_INPUT=y
++CONFIG_SND_USB_6FIRE=m
++CONFIG_SND_SOC=m
++CONFIG_SND_SOC_ADAU1701=m
++CONFIG_SND_SOC_ADAU7002=m
++CONFIG_SND_SOC_AK4554=m
++CONFIG_SND_SOC_CS42XX8_I2C=m
++CONFIG_SND_SOC_PCM512x_I2C=m
++CONFIG_SND_SOC_SGTL5000=m
++CONFIG_SND_SOC_SPDIF=m
++CONFIG_SND_SOC_WM8731=m
++CONFIG_SND_SOC_WM8741=m
++CONFIG_SND_SOC_WM8804_I2C=m
++CONFIG_SND_SOC_TPA6130A2=m
++CONFIG_SND_SIMPLE_CARD=m
++CONFIG_HID_BATTERY_STRENGTH=y
++CONFIG_HIDRAW=y
++CONFIG_UHID=m
++CONFIG_HID_A4TECH=m
++CONFIG_HID_ACRUX=m
++CONFIG_HID_APPLE=m
++CONFIG_HID_BELKIN=m
++CONFIG_HID_BETOP_FF=m
++CONFIG_HID_CHERRY=m
++CONFIG_HID_CHICONY=m
++CONFIG_HID_CYPRESS=m
++CONFIG_HID_DRAGONRISE=m
++CONFIG_HID_EMS_FF=m
++CONFIG_HID_ELECOM=m
++CONFIG_HID_ELO=m
++CONFIG_HID_EZKEY=m
++CONFIG_HID_GEMBIRD=m
++CONFIG_HID_HOLTEK=m
++CONFIG_HID_KEYTOUCH=m
++CONFIG_HID_KYE=m
++CONFIG_HID_UCLOGIC=m
++CONFIG_HID_WALTOP=m
++CONFIG_HID_GYRATION=m
++CONFIG_HID_TWINHAN=m
++CONFIG_HID_KENSINGTON=m
++CONFIG_HID_LCPOWER=m
++CONFIG_HID_LOGITECH=y
++CONFIG_HID_LOGITECH_DJ=m
++CONFIG_HID_LOGITECH_HIDPP=y
++CONFIG_LOGITECH_FF=y
++CONFIG_LOGIRUMBLEPAD2_FF=y
++CONFIG_LOGIG940_FF=y
++CONFIG_HID_MAGICMOUSE=m
++CONFIG_HID_MICROSOFT=m
++CONFIG_HID_MONTEREY=m
++CONFIG_HID_MULTITOUCH=y
++CONFIG_HID_NTRIG=m
++CONFIG_HID_ORTEK=m
++CONFIG_HID_PANTHERLORD=m
++CONFIG_HID_PETALYNX=m
++CONFIG_HID_PICOLCD=m
++CONFIG_HID_ROCCAT=m
++CONFIG_HID_SAMSUNG=m
++CONFIG_HID_SONY=m
++CONFIG_SONY_FF=y
++CONFIG_HID_SPEEDLINK=m
++CONFIG_HID_SUNPLUS=m
++CONFIG_HID_GREENASIA=m
++CONFIG_HID_SMARTJOYPLUS=m
++CONFIG_HID_TOPSEED=m
++CONFIG_HID_THINGM=m
++CONFIG_HID_THRUSTMASTER=m
++CONFIG_HID_WACOM=m
++CONFIG_HID_WIIMOTE=m
++CONFIG_HID_XINMO=m
++CONFIG_HID_ZEROPLUS=m
++CONFIG_HID_ZYDACRON=m
++CONFIG_HID_PID=y
++CONFIG_USB_HIDDEV=y
++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
++CONFIG_USB_MON=m
+ CONFIG_USB_EHCI_HCD=y
+ CONFIG_USB_EHCI_HCD_PLATFORM=y
+ CONFIG_USB_OHCI_HCD=y
+ CONFIG_USB_OHCI_HCD_PLATFORM=y
++CONFIG_USB_PRINTER=m
+ CONFIG_USB_STORAGE=y
++CONFIG_USB_STORAGE_REALTEK=m
++CONFIG_USB_STORAGE_DATAFAB=m
++CONFIG_USB_STORAGE_FREECOM=m
++CONFIG_USB_STORAGE_ISD200=m
++CONFIG_USB_STORAGE_USBAT=m
++CONFIG_USB_STORAGE_SDDR09=m
++CONFIG_USB_STORAGE_SDDR55=m
++CONFIG_USB_STORAGE_JUMPSHOT=m
++CONFIG_USB_STORAGE_ALAUDA=m
++CONFIG_USB_STORAGE_ONETOUCH=m
++CONFIG_USB_STORAGE_KARMA=m
++CONFIG_USB_STORAGE_CYPRESS_ATACB=m
++CONFIG_USB_STORAGE_ENE_UB6250=m
++CONFIG_USB_MDC800=m
++CONFIG_USB_MICROTEK=m
++CONFIG_USBIP_CORE=m
++CONFIG_USBIP_VHCI_HCD=m
++CONFIG_USBIP_HOST=m
++CONFIG_USB_EMI62=m
++CONFIG_USB_EMI26=m
++CONFIG_USB_ADUTUX=m
++CONFIG_USB_SEVSEG=m
++CONFIG_USB_RIO500=m
++CONFIG_USB_LEGOTOWER=m
++CONFIG_USB_LCD=m
++CONFIG_USB_CYPRESS_CY7C63=m
++CONFIG_USB_CYTHERM=m
++CONFIG_USB_IDMOUSE=m
++CONFIG_USB_FTDI_ELAN=m
++CONFIG_USB_LD=m
++CONFIG_USB_TRANCEVIBRATOR=m
++CONFIG_USB_IOWARRIOR=m
++CONFIG_USB_TEST=m
++CONFIG_USB_ISIGHTFW=m
++CONFIG_USB_YUREX=m
++CONFIG_USB_EZUSB_FX2=m
++CONFIG_USB_ATM=m
++CONFIG_USB_SPEEDTOUCH=m
++CONFIG_USB_CXACRU=m
++CONFIG_USB_UEAGLEATM=m
++CONFIG_USB_XUSBATM=m
+ CONFIG_MMC=y
++CONFIG_MMC_BLOCK_MINORS=32
+ CONFIG_MMC_SDHCI=y
+ CONFIG_MMC_SDHCI_PLTFM=y
++CONFIG_MMC_SPI=m
+ CONFIG_MMC_DW=y
++CONFIG_LEDS_CLASS=y
++CONFIG_LEDS_GPIO=y
++CONFIG_LEDS_TRIGGER_TIMER=y
++CONFIG_LEDS_TRIGGER_ONESHOT=y
++CONFIG_LEDS_TRIGGER_HEARTBEAT=y
++CONFIG_LEDS_TRIGGER_BACKLIGHT=y
++CONFIG_LEDS_TRIGGER_CPU=y
++CONFIG_LEDS_TRIGGER_GPIO=y
++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
++CONFIG_LEDS_TRIGGER_TRANSIENT=m
++CONFIG_LEDS_TRIGGER_CAMERA=m
++CONFIG_LEDS_TRIGGER_PANIC=y
++CONFIG_RTC_CLASS=y
++# CONFIG_RTC_HCTOSYS is not set
++CONFIG_RTC_DRV_ABX80X=m
++CONFIG_RTC_DRV_DS1307=m
++CONFIG_RTC_DRV_DS1374=m
++CONFIG_RTC_DRV_DS1672=m
++CONFIG_RTC_DRV_MAX6900=m
++CONFIG_RTC_DRV_RS5C372=m
++CONFIG_RTC_DRV_ISL1208=m
++CONFIG_RTC_DRV_ISL12022=m
++CONFIG_RTC_DRV_X1205=m
++CONFIG_RTC_DRV_PCF8523=m
++CONFIG_RTC_DRV_PCF8563=m
++CONFIG_RTC_DRV_PCF8583=m
++CONFIG_RTC_DRV_M41T80=m
++CONFIG_RTC_DRV_BQ32K=m
++CONFIG_RTC_DRV_S35390A=m
++CONFIG_RTC_DRV_FM3130=m
++CONFIG_RTC_DRV_RX8581=m
++CONFIG_RTC_DRV_RX8025=m
++CONFIG_RTC_DRV_EM3027=m
++CONFIG_RTC_DRV_M41T93=m
++CONFIG_RTC_DRV_M41T94=m
++CONFIG_RTC_DRV_DS1302=m
++CONFIG_RTC_DRV_DS1305=m
++CONFIG_RTC_DRV_DS1390=m
++CONFIG_RTC_DRV_R9701=m
++CONFIG_RTC_DRV_RX4581=m
++CONFIG_RTC_DRV_RS5C348=m
++CONFIG_RTC_DRV_MAX6902=m
++CONFIG_RTC_DRV_PCF2123=m
++CONFIG_RTC_DRV_DS3232=m
++CONFIG_RTC_DRV_PCF2127=m
++CONFIG_RTC_DRV_RV3029C2=m
++CONFIG_DMADEVICES=y
++CONFIG_UIO=m
++CONFIG_UIO_PDRV_GENIRQ=m
++CONFIG_STAGING=y
++CONFIG_PRISM2_USB=m
++CONFIG_R8712U=m
++CONFIG_R8188EU=m
++CONFIG_VT6656=m
++CONFIG_SPEAKUP=m
++CONFIG_SPEAKUP_SYNTH_SOFT=m
++CONFIG_STAGING_MEDIA=y
++CONFIG_FB_TFT=m
++CONFIG_FB_TFT_AGM1264K_FL=m
++CONFIG_FB_TFT_BD663474=m
++CONFIG_FB_TFT_HX8340BN=m
++CONFIG_FB_TFT_HX8347D=m
++CONFIG_FB_TFT_HX8353D=m
++CONFIG_FB_TFT_HX8357D=m
++CONFIG_FB_TFT_ILI9163=m
++CONFIG_FB_TFT_ILI9320=m
++CONFIG_FB_TFT_ILI9325=m
++CONFIG_FB_TFT_ILI9340=m
++CONFIG_FB_TFT_ILI9341=m
++CONFIG_FB_TFT_ILI9481=m
++CONFIG_FB_TFT_ILI9486=m
++CONFIG_FB_TFT_PCD8544=m
++CONFIG_FB_TFT_RA8875=m
++CONFIG_FB_TFT_S6D02A1=m
++CONFIG_FB_TFT_S6D1121=m
++CONFIG_FB_TFT_SSD1289=m
++CONFIG_FB_TFT_SSD1306=m
++CONFIG_FB_TFT_SSD1331=m
++CONFIG_FB_TFT_SSD1351=m
++CONFIG_FB_TFT_ST7735R=m
++CONFIG_FB_TFT_ST7789V=m
++CONFIG_FB_TFT_TINYLCD=m
++CONFIG_FB_TFT_TLS8204=m
++CONFIG_FB_TFT_UC1701=m
++CONFIG_FB_TFT_UPD161704=m
++CONFIG_FB_TFT_WATTEROTT=m
++CONFIG_FB_FLEX=m
++CONFIG_FB_TFT_FBTFT_DEVICE=m
++CONFIG_MAILBOX=y
++# CONFIG_IOMMU_SUPPORT is not set
++CONFIG_EXTCON=m
++CONFIG_EXTCON_ARIZONA=m
++CONFIG_IIO=m
++CONFIG_IIO_BUFFER_CB=m
++CONFIG_MCP320X=m
++CONFIG_MCP3422=m
++CONFIG_DHT11=m
++CONFIG_HDC100X=m
++CONFIG_HTU21=m
++CONFIG_TSL4531=m
++CONFIG_VEML6070=m
++CONFIG_BMP280=m
++CONFIG_PWM=y
++CONFIG_PWM_PCA9685=m
+ CONFIG_EXT3_FS=y
++CONFIG_EXT4_FS_POSIX_ACL=y
++CONFIG_EXT4_FS_SECURITY=y
++CONFIG_EXT4_ENCRYPTION=y
++CONFIG_EXT4_DEBUG=y
++CONFIG_REISERFS_FS=m
++CONFIG_REISERFS_PROC_INFO=y
++CONFIG_REISERFS_FS_XATTR=y
++CONFIG_REISERFS_FS_POSIX_ACL=y
++CONFIG_REISERFS_FS_SECURITY=y
++CONFIG_JFS_FS=m
++CONFIG_JFS_POSIX_ACL=y
++CONFIG_JFS_SECURITY=y
++CONFIG_JFS_STATISTICS=y
++CONFIG_XFS_FS=m
++CONFIG_XFS_QUOTA=y
++CONFIG_XFS_POSIX_ACL=y
++CONFIG_XFS_RT=y
++CONFIG_GFS2_FS=m
++CONFIG_BTRFS_FS=m
++CONFIG_BTRFS_FS_POSIX_ACL=y
++CONFIG_NILFS2_FS=m
++CONFIG_FANOTIFY=y
++CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
++CONFIG_QUOTA=y
++CONFIG_AUTOFS4_FS=y
++CONFIG_FUSE_FS=m
++CONFIG_CUSE=m
++CONFIG_OVERLAY_FS=m
++CONFIG_FSCACHE=y
++CONFIG_FSCACHE_STATS=y
++CONFIG_FSCACHE_HISTOGRAM=y
++CONFIG_CACHEFILES=y
++CONFIG_ISO9660_FS=m
++CONFIG_JOLIET=y
++CONFIG_ZISOFS=y
++CONFIG_UDF_FS=m
++CONFIG_MSDOS_FS=y
+ CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
++CONFIG_NTFS_FS=m
++CONFIG_NTFS_RW=y
++CONFIG_TMPFS_POSIX_ACL=y
++CONFIG_ECRYPT_FS=m
++CONFIG_HFS_FS=m
++CONFIG_HFSPLUS_FS=m
++CONFIG_JFFS2_FS=m
++CONFIG_JFFS2_SUMMARY=y
++CONFIG_UBIFS_FS=m
++CONFIG_SQUASHFS=m
++CONFIG_SQUASHFS_XATTR=y
++CONFIG_SQUASHFS_LZO=y
++CONFIG_SQUASHFS_XZ=y
+ CONFIG_NFS_FS=y
+ CONFIG_NFS_V3_ACL=y
++CONFIG_NFS_V4=y
++CONFIG_NFS_SWAP=y
++CONFIG_ROOT_NFS=y
++CONFIG_NFS_FSCACHE=y
++CONFIG_NFSD=m
++CONFIG_NFSD_V3_ACL=y
++CONFIG_NFSD_V4=y
++CONFIG_CIFS=m
++CONFIG_CIFS_WEAK_PW_HASH=y
++CONFIG_CIFS_UPCALL=y
++CONFIG_CIFS_XATTR=y
++CONFIG_CIFS_POSIX=y
++CONFIG_CIFS_ACL=y
++CONFIG_CIFS_DFS_UPCALL=y
++CONFIG_CIFS_FSCACHE=y
++CONFIG_9P_FS=m
++CONFIG_9P_FS_POSIX_ACL=y
++CONFIG_NLS_DEFAULT="utf8"
+ CONFIG_NLS_CODEPAGE_437=y
+-CONFIG_NLS_ISO8859_1=y
++CONFIG_NLS_CODEPAGE_737=m
++CONFIG_NLS_CODEPAGE_775=m
++CONFIG_NLS_CODEPAGE_850=m
++CONFIG_NLS_CODEPAGE_852=m
++CONFIG_NLS_CODEPAGE_855=m
++CONFIG_NLS_CODEPAGE_857=m
++CONFIG_NLS_CODEPAGE_860=m
++CONFIG_NLS_CODEPAGE_861=m
++CONFIG_NLS_CODEPAGE_862=m
++CONFIG_NLS_CODEPAGE_863=m
++CONFIG_NLS_CODEPAGE_864=m
++CONFIG_NLS_CODEPAGE_865=m
++CONFIG_NLS_CODEPAGE_866=m
++CONFIG_NLS_CODEPAGE_869=m
++CONFIG_NLS_CODEPAGE_936=m
++CONFIG_NLS_CODEPAGE_950=m
++CONFIG_NLS_CODEPAGE_932=m
++CONFIG_NLS_CODEPAGE_949=m
++CONFIG_NLS_CODEPAGE_874=m
++CONFIG_NLS_ISO8859_8=m
++CONFIG_NLS_CODEPAGE_1250=m
++CONFIG_NLS_CODEPAGE_1251=m
++CONFIG_NLS_ASCII=y
++CONFIG_NLS_ISO8859_1=m
++CONFIG_NLS_ISO8859_2=m
++CONFIG_NLS_ISO8859_3=m
++CONFIG_NLS_ISO8859_4=m
++CONFIG_NLS_ISO8859_5=m
++CONFIG_NLS_ISO8859_6=m
++CONFIG_NLS_ISO8859_7=m
++CONFIG_NLS_ISO8859_9=m
++CONFIG_NLS_ISO8859_13=m
++CONFIG_NLS_ISO8859_14=m
++CONFIG_NLS_ISO8859_15=m
++CONFIG_NLS_KOI8_R=m
++CONFIG_NLS_KOI8_U=m
++CONFIG_PRINTK_TIME=y
++CONFIG_BOOT_PRINTK_DELAY=y
+ # CONFIG_ENABLE_WARN_DEPRECATED is not set
+ # CONFIG_ENABLE_MUST_CHECK is not set
+ CONFIG_STRIP_ASM_SYMS=y
++CONFIG_DEBUG_FS=y
++CONFIG_MAGIC_SYSRQ=y
++CONFIG_DEBUG_MEMORY_INIT=y
+ CONFIG_SOFTLOCKUP_DETECTOR=y
+ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
+-# CONFIG_SCHED_DEBUG is not set
+-# CONFIG_DEBUG_PREEMPT is not set
++CONFIG_LATENCYTOP=y
+ # CONFIG_FTRACE is not set
++CONFIG_PERSISTENT_KEYRINGS=y
++CONFIG_BIG_KEYS=y
++CONFIG_KEY_DH_OPERATIONS=y
++CONFIG_SECURITY=y
++CONFIG_SECURITY_PATH=y
++CONFIG_SECURITY_SMACK=y
++CONFIG_SECURITY_SMACK_BRINGUP=y
++CONFIG_SECURITY_SMACK_NETFILTER=y
++CONFIG_SECURITY_SMACK_APPEND_SIGNALS=y
++CONFIG_INTEGRITY_SIGNATURE=y
++CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
++CONFIG_IMA=y
++CONFIG_IMA_WRITE_POLICY=y
++CONFIG_IMA_APPRAISE=y
++CONFIG_EVM=y
++CONFIG_EVM_EXTRA_SMACK_XATTRS=y
++CONFIG_EVM_ADD_XATTRS=y
++CONFIG_CRYPTO_USER=m
++CONFIG_CRYPTO_CRYPTD=m
+ CONFIG_CRYPTO_ECHAINIV=y
++CONFIG_CRYPTO_XCBC=m
++CONFIG_CRYPTO_CRC32=y
++CONFIG_CRYPTO_TGR192=m
++CONFIG_CRYPTO_WP512=m
++CONFIG_CRYPTO_CAST5=m
++CONFIG_CRYPTO_DES=y
++CONFIG_CRYPTO_LZ4=m
++CONFIG_CRYPTO_USER_API_SKCIPHER=m
++# CONFIG_CRYPTO_HW is not set
++CONFIG_CRC_CCITT=y
++CONFIG_CRC_ITU_T=y
++CONFIG_LIBCRC32C=y
++CONFIG_PM=y
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2001-ARC-prevent-showing-irrelevant-exception-info-in-sig.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2001-ARC-prevent-showing-irrelevant-exception-info-in-sig.patch
new file mode 100644
index 00000000..3734675b
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2001-ARC-prevent-showing-irrelevant-exception-info-in-sig.patch
@@ -0,0 +1,334 @@
+From 3f9fab23bfd4fc2d41df6aaf52855d6bae91d3e5 Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Thu, 15 Nov 2018 13:07:12 +0300
+Subject: [PATCH 1/3] ARC: prevent showing irrelevant exception info in signal
+ message
+
+We process signals in the end of syscall/exception handler.
+If the signal is fatal we print register's content using
+show_regs function. show_regs() also prints information about
+last exception happened.
+
+In case of multicore system we can catch the situation when we
+will print wrong information about exception. See the example:
+______________________________
+CPU-0: started to handle page fault
+CPU-1: sent signal to process, which is executed on CPU-0
+CPU-0: ended page fault handle. Started to process signal before
+ returnig to userspace. Process signal, which is send from
+ CPU-0. As th signal is fatal we call show_regs().
+ show_regs() will show information about last exception
+ which is *page fault* (instead of "trap" which is used for
+ signals and happened on CPU-0)
+
+So we will get message like this:
+ # ./waitpid02
+ potentially unexpected fatal signal 8.
+ Path: /home/waitpid02
+ CPU: 0 PID: 100 Comm: waitpid02 Not tainted 4.10.0-rc4 #2
+ task: 9f11c200 task.stack: 9f3ae000
+
+ [ECR ]: 0x00050200 => Invalid Write @ 0x00000000 by insn @ 0x000123ec
+ [EFA ]: 0x00000000
+ [BLINK ]: 0x123ea
+ [ERET ]: 0x123ec
+ @off 0x123ec in [/home/waitpid02]
+ VMA: 0x00010000 to 0x00016000
+ [STAT32]: 0x80080882 : IE U
+ BTA: 0x000123ea SP: 0x5ffd3db0 FP: 0x00000000
+ LPS: 0x20031684 LPE: 0x2003169a LPC: 0x00000006
+ [-----other-info-----]
+
+This message is confusing because it show information about page fault
+( [ECR ]: 0x00050200 => Invalid Write ) which is absolutely irrelevant
+to signal.
+
+This situation was reproduced with waitpid02 LTP test.
+_____________________________
+
+So remove printing information about exceptions from show_regs()
+to avoid confusing messages. Print information about exceptions
+only in required places instead of show_regs()
+
+Now we don't print information about exceptions if signal is simply
+send by another userspace app. So in case of waitpid02 we will print
+next message:
+_____________________________
+ # ./waitpid02
+ potentially unexpected fatal signal 8.
+ Path: /root/waitpid02
+ CPU: 2 PID: 105 Comm: waitpid02 Not tainted 4.18.0-rc8-00002-gde0f6d6aeb53-dirty #17
+ [ECR ]: 0x00050100
+ [EFA ]: 0x00000000
+ [BLINK ]: 0x20001486
+ [-----other-info-----]
+_____________________________
+
+This patch fix
+STAR 9001146055: waitpid02: Invalid Write @ 0x00000000 by insn @ 0x000123ec
+
+NOTE:
+To be more clear I give examples of different faults (signal-based,
+userspace/kernelspace exception-based) with different values of
+"/proc/sys/kernel/print-fatal-signals" option.
+
+0) NULL pointer access from user space, print-fatal-signals == 1:
+------------>8---------------
+ # ./arc_hell
+Exception: arc_hell[103]: at 0x2003a35c [off 0x2e35c in /lib/libuClibc-1.0.18.so, VMA: 2000c000:20072000]
+ ECR: 0x00050100 => Invalid Read @ 0x00000000 by insn @ 0x2003a35c
+potentially unexpected fatal signal 11.
+Path: /root/arc_hell
+CPU: 1 PID: 103 Comm: arc_hell Not tainted 4.18.0-rc8-00002-gde0f6d6aeb53-dirty #17
+[ECR ]: 0x00050100
+[EFA ]: 0x00000000
+[BLINK ]: 0x20039ef8
+[ERET ]: 0x2003a35c
+[STAT32]: 0x80080882 : IE U
+BTA: 0x2003a358 SP: 0x5fa27dc4 FP: 0x5fa27de8
+LPS: 0x2003a628 LPE: 0x2003a62c LPC: 0x00000000
+r00: 0x00000000 r01: 0x200740b0 r02: 0x00000001
+r03: 0x00000007 r04: 0x80808080 r05: 0x2f2f2f2f
+r06: 0x7c7a2f43 r07: 0x00000000 r08: 0x1a131100
+r09: 0x2008b1e0 r10: 0x20003a5c r11: 0x20004038
+r12: 0x20039ef8 r13: 0x200740b0 r14: 0x00000000
+r15: 0x200740b0 r16: 0x00000000 r17: 0x0007d468
+r18: 0x0009313a r19: 0x00000000 r20: 0x0009c22c
+r21: 0x0009c23c r22: 0x0009ab64 r23: 0x00000000
+r24: 0x0009dfc5 r25: 0x20004b70
+
+Segmentation fault
+------------>8---------------
+
+1) NULL pointer access from user space, print-fatal-signals == 0:
+------------>8---------------
+ # ./arc_hell
+Exception: arc_hell[107]: at 0x2003a35c [off 0x2e35c in /lib/libuClibc-1.0.18.so, VMA: 2000c000:20072000]
+ ECR: 0x00050100 => Invalid Read @ 0x00000000 by insn @ 0x2003a35c
+Segmentation fault
+------------>8---------------
+
+2) Process killed by signal (waitpid02 test), print-fatal-signals == 1:
+------------>8---------------
+ # ./waitpid02
+potentially unexpected fatal signal 8.
+Path: /root/waitpid02
+CPU: 2 PID: 105 Comm: waitpid02 Not tainted 4.18.0-rc8-00002-gde0f6d6aeb53-dirty #17
+[ECR ]: 0x00050100
+[EFA ]: 0x00000000
+[BLINK ]: 0x20001486
+[ERET ]: 0x2000146c
+[STAT32]: 0x80080082 : IE U
+BTA: 0x20000fc4 SP: 0x5fa21d64 FP: 0x00000000
+LPS: 0x200524a0 LPE: 0x200524b6 LPC: 0x00000006
+r00: 0x2000c0dc r01: 0x00000018 r02: 0x0001159a
+r03: 0x00000001 r04: 0x00000000 r05: 0x00000045
+r06: 0x0000004e r07: 0x01010101 r08: 0x000000dc
+r09: 0x200a31e0 r10: 0x20003a5c r11: 0x20004038
+r12: 0x20001486 r13: 0x20004174 r14: 0x07ca2bc0
+r15: 0x20004078 r16: 0x00000000 r17: 0x20004038
+r18: 0x00000001 r19: 0x00000000 r20: 0x0001159a
+r21: 0x00000001 r22: 0x00000000 r23: 0x00000004
+r24: 0x2000d1fc r25: 0x20004cd0
+------------>8---------------
+
+3) Process killed by signal (waitpid02 test), print-fatal-signals == 0:
+------------>8---------------
+ # ./waitpid02
+------------>8---------------
+
+4) NULL pointer access from kernel space, regardless print-fatal-signals
+value:
+------------>8---------------
+Oops
+Exception: at stmmac_dvr_probe+0x40/0x7e0:
+ ECR: 0x00050200 => Invalid Write @ 0x00000000 by insn @ 0x90575254
+Path: (null)
+CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0-rc8-00002-gde0f6d6aeb53-dirty #11
+[EFA ]: 0x00000000
+[BLINK ]: stmmac_dvr_probe+0x2a/0x7e0
+[ERET ]: stmmac_dvr_probe+0x40/0x7e0
+[STAT32]: 0x80080402 : IE K
+BTA: 0x9057523e SP: 0xbf02be40 FP: 0x00000000
+LPS: 0x9073dbcc LPE: 0x9073dbe0 LPC: 0x00000000
+r00: 0xbf1f0000 r01: 0x00000000 r02: 0x00000008
+r03: 0x00000000 r04: 0x00000064 r05: 0x00000000
+r06: 0x00000003 r07: 0x00000004 r08: 0x01010101
+r09: 0x00000031 r10: 0xbf1f0006 r11: 0x00000000
+r12: 0x9057523e
+
+Stack Trace:
+ stmmac_dvr_probe+0x40/0x7e0
+ dwmac_generic_probe+0x50/0xbc
+ platform_drv_probe+0x26/0x5c
+ really_probe+0x3b0/0x464
+ __driver_attach+0xd4/0xd8
+ bus_for_each_dev+0x3a/0x70
+ bus_add_driver+0x12a/0x18c
+ driver_register+0x56/0xe8
+ do_one_initcall+0x2e/0x118
+ kernel_init_freeable+0x102/0x194
+------------>8---------------
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ arch/arc/include/asm/bug.h | 1 +
+ arch/arc/kernel/traps.c | 3 +++
+ arch/arc/kernel/troubleshoot.c | 51 +++++++++++++++++++++++++++++++++---------
+ arch/arc/mm/fault.c | 8 +++++++
+ 4 files changed, 52 insertions(+), 11 deletions(-)
+
+diff --git a/arch/arc/include/asm/bug.h b/arch/arc/include/asm/bug.h
+index 21ec82466d62..b68f7f82f2d8 100644
+--- a/arch/arc/include/asm/bug.h
++++ b/arch/arc/include/asm/bug.h
+@@ -16,6 +16,7 @@
+ struct task_struct;
+
+ void show_regs(struct pt_regs *regs);
++void show_exception_mesg(struct pt_regs *regs);
+ void show_stacktrace(struct task_struct *tsk, struct pt_regs *regs);
+ void show_kernel_fault_diag(const char *str, struct pt_regs *regs,
+ unsigned long address);
+diff --git a/arch/arc/kernel/traps.c b/arch/arc/kernel/traps.c
+index b123558bf0bb..e66fd40296b3 100644
+--- a/arch/arc/kernel/traps.c
++++ b/arch/arc/kernel/traps.c
+@@ -49,6 +49,9 @@ unhandled_exception(const char *str, struct pt_regs *regs, siginfo_t *info)
+
+ tsk->thread.fault_address = (__force unsigned int)info->si_addr;
+
++ if (unhandled_signal(tsk, info->si_signo))
++ show_exception_mesg(regs);
++
+ force_sig_info(info->si_signo, info, tsk);
+
+ } else {
+diff --git a/arch/arc/kernel/troubleshoot.c b/arch/arc/kernel/troubleshoot.c
+index e8d9fb452346..fdfba1942a06 100644
+--- a/arch/arc/kernel/troubleshoot.c
++++ b/arch/arc/kernel/troubleshoot.c
+@@ -101,13 +101,13 @@ static void show_faulting_vma(unsigned long address, char *buf)
+ if (IS_ERR(nm))
+ nm = "?";
+ }
+- pr_info(" @off 0x%lx in [%s]\n"
+- " VMA: 0x%08lx to 0x%08lx\n",
++
++ pr_cont("[off 0x%lx in %s, VMA: %08lx:%08lx] ",
+ vma->vm_start < TASK_UNMAPPED_BASE ?
+ address : address - vma->vm_start,
+ nm, vma->vm_start, vma->vm_end);
+ } else
+- pr_info(" @No matching VMA found\n");
++ pr_cont("[No matching VMA found] ");
+
+ up_read(&active_mm->mmap_sem);
+ }
+@@ -117,7 +117,7 @@ static void show_ecr_verbose(struct pt_regs *regs)
+ unsigned int vec, cause_code;
+ unsigned long address;
+
+- pr_info("\n[ECR ]: 0x%08lx => ", regs->event);
++ pr_cont("\n ECR: 0x%08lx => ", regs->event);
+
+ /* For Data fault, this is data address not instruction addr */
+ address = current->thread.fault_address;
+@@ -165,10 +165,42 @@ static void show_ecr_verbose(struct pt_regs *regs)
+ }
+ }
+
++static inline void show_exception_mesg_u(struct pt_regs *regs)
++{
++ struct task_struct *tsk = current;
++ char *buf;
++
++ pr_info("Exception: %s[%d]: at %pS ",
++ tsk->comm, task_pid_nr(tsk), (void *)regs->ret);
++
++ buf = (char *)__get_free_page(GFP_NOWAIT);
++ if (buf) {
++ show_faulting_vma(regs->ret, buf);
++ free_page((unsigned long)buf);
++ }
++
++ show_ecr_verbose(regs);
++}
++
++static inline void show_exception_mesg_k(struct pt_regs *regs)
++{
++ pr_info("Exception: at %pS:", (void *)regs->ret);
++
++ show_ecr_verbose(regs);
++}
++
+ /************************************************************************
+ * API called by rest of kernel
+ ***********************************************************************/
+
++void show_exception_mesg(struct pt_regs *regs)
++{
++ if (user_mode(regs))
++ show_exception_mesg_u(regs);
++ else
++ show_exception_mesg_k(regs);
++}
++
+ void show_regs(struct pt_regs *regs)
+ {
+ struct task_struct *tsk = current;
+@@ -182,15 +214,10 @@ void show_regs(struct pt_regs *regs)
+ print_task_path_n_nm(tsk, buf);
+ show_regs_print_info(KERN_INFO);
+
+- show_ecr_verbose(regs);
+-
+- pr_info("[EFA ]: 0x%08lx\n[BLINK ]: %pS\n[ERET ]: %pS\n",
+- current->thread.fault_address,
++ pr_info("[ECR ]: 0x%08lx\n[EFA ]: 0x%08lx\n[BLINK ]: %pS\n[ERET ]: %pS\n",
++ regs->event, current->thread.fault_address,
+ (void *)regs->blink, (void *)regs->ret);
+
+- if (user_mode(regs))
+- show_faulting_vma(regs->ret, buf); /* faulting code, not data */
+-
+ pr_info("[STAT32]: 0x%08lx", regs->status32);
+
+ #define STS_BIT(r, bit) r->status32 & STATUS_##bit##_MASK ? #bit" " : ""
+@@ -233,6 +260,8 @@ void show_kernel_fault_diag(const char *str, struct pt_regs *regs,
+ /* Show fault description */
+ pr_info("\n%s\n", str);
+
++ show_exception_mesg(regs);
++
+ /* Caller and Callee regs */
+ show_regs(regs);
+
+diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c
+index db6913094be3..026d662a7668 100644
+--- a/arch/arc/mm/fault.c
++++ b/arch/arc/mm/fault.c
+@@ -203,6 +203,10 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
+ info.si_errno = 0;
+ /* info.si_code has been set above */
+ info.si_addr = (void __user *)address;
++
++ if (unhandled_signal(tsk, info.si_signo))
++ show_exception_mesg(regs);
++
+ force_sig_info(SIGSEGV, &info, tsk);
+ return;
+ }
+@@ -242,5 +246,9 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
+ info.si_errno = 0;
+ info.si_code = BUS_ADRERR;
+ info.si_addr = (void __user *)address;
++
++ if (unhandled_signal(tsk, info.si_signo))
++ show_exception_mesg(regs);
++
+ force_sig_info(SIGBUS, &info, tsk);
+ }
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2002-ARC-split-show_faulting_vma-for-logic-and-representa.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2002-ARC-split-show_faulting_vma-for-logic-and-representa.patch
new file mode 100644
index 00000000..2d52b8cd
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2002-ARC-split-show_faulting_vma-for-logic-and-representa.patch
@@ -0,0 +1,114 @@
+From c45e8efab681ecac3b2235aff9afa4be2a95dd58 Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Thu, 15 Nov 2018 13:07:13 +0300
+Subject: [PATCH 2/3] ARC: split show_faulting_vma for logic and representation
+ parts
+
+In preparation for introduncing SmaRT support for ARC split
+show_faulting_vma() for logic and representation parts to be
+able to use logic part in SmaRT code.
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ arch/arc/include/asm/bug.h | 9 +++++++++
+ arch/arc/kernel/troubleshoot.c | 43 ++++++++++++++++++++++++++++++------------
+ 2 files changed, 40 insertions(+), 12 deletions(-)
+
+diff --git a/arch/arc/include/asm/bug.h b/arch/arc/include/asm/bug.h
+index b68f7f82f2d8..064391646d38 100644
+--- a/arch/arc/include/asm/bug.h
++++ b/arch/arc/include/asm/bug.h
+@@ -15,6 +15,15 @@
+
+ struct task_struct;
+
++struct faulting_vma_info {
++ char *file_path;
++ unsigned long offset;
++ unsigned long vm_start;
++ unsigned long vm_end;
++};
++
++int get_faulting_vma_info(unsigned long address, char *buf, int buflen,
++ struct faulting_vma_info *fvma);
+ void show_regs(struct pt_regs *regs);
+ void show_exception_mesg(struct pt_regs *regs);
+ void show_stacktrace(struct task_struct *tsk, struct pt_regs *regs);
+diff --git a/arch/arc/kernel/troubleshoot.c b/arch/arc/kernel/troubleshoot.c
+index fdfba1942a06..00efcdfde0ee 100644
+--- a/arch/arc/kernel/troubleshoot.c
++++ b/arch/arc/kernel/troubleshoot.c
+@@ -80,11 +80,14 @@ static void print_task_path_n_nm(struct task_struct *tsk, char *buf)
+ pr_info("Path: %s\n", !IS_ERR(path_nm) ? path_nm : "?");
+ }
+
+-static void show_faulting_vma(unsigned long address, char *buf)
++int get_faulting_vma_info(unsigned long address, char *buf, int buflen,
++ struct faulting_vma_info *fvma)
+ {
+ struct vm_area_struct *vma;
+- char *nm = buf;
+ struct mm_struct *active_mm = current->active_mm;
++ int ret = -ENOENT;
++
++ fvma->file_path = "?";
+
+ /* can't use print_vma_addr() yet as it doesn't check for
+ * non-inclusive vma
+@@ -97,19 +100,35 @@ static void show_faulting_vma(unsigned long address, char *buf)
+ */
+ if (vma && (vma->vm_start <= address)) {
+ if (vma->vm_file) {
+- nm = file_path(vma->vm_file, buf, PAGE_SIZE - 1);
+- if (IS_ERR(nm))
+- nm = "?";
++ fvma->file_path = file_path(vma->vm_file, buf, buflen);
++ if (IS_ERR(fvma->file_path))
++ fvma->file_path = "?";
+ }
+
+- pr_cont("[off 0x%lx in %s, VMA: %08lx:%08lx] ",
+- vma->vm_start < TASK_UNMAPPED_BASE ?
+- address : address - vma->vm_start,
+- nm, vma->vm_start, vma->vm_end);
+- } else
+- pr_cont("[No matching VMA found] ");
++ fvma->vm_start = vma->vm_start;
++ fvma->vm_end = vma->vm_end;
++ fvma->offset = vma->vm_start < TASK_UNMAPPED_BASE ?
++ address : address - vma->vm_start;
++
++ ret = 0;
++ }
+
+ up_read(&active_mm->mmap_sem);
++
++ return ret;
++}
++
++static void show_faulting_vma(unsigned long address, char *buf, int buflen)
++{
++ struct faulting_vma_info fvma;
++ int ret;
++
++ ret = get_faulting_vma_info(address, buf, buflen, &fvma);
++ if (ret)
++ pr_cont("[No matching VMA found] ");
++ else
++ pr_cont("[off 0x%lx in %s, VMA: %08lx:%08lx] ", fvma.offset,
++ fvma.file_path, fvma.vm_start, fvma.vm_end);
+ }
+
+ static void show_ecr_verbose(struct pt_regs *regs)
+@@ -175,7 +194,7 @@ static inline void show_exception_mesg_u(struct pt_regs *regs)
+
+ buf = (char *)__get_free_page(GFP_NOWAIT);
+ if (buf) {
+- show_faulting_vma(regs->ret, buf);
++ show_faulting_vma(regs->ret, buf, PAGE_SIZE - 1);
+ free_page((unsigned long)buf);
+ }
+
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2003-ARC-ARCv2-Introduce-SmaRT-support.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2003-ARC-ARCv2-Introduce-SmaRT-support.patch
new file mode 100644
index 00000000..f2cb4b46
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/2003-ARC-ARCv2-Introduce-SmaRT-support.patch
@@ -0,0 +1,619 @@
+From 90983b06fae708e957f1d8a5d207ae48f4d266a4 Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Thu, 15 Nov 2018 13:07:14 +0300
+Subject: [PATCH 3/3] ARC: ARCv2: Introduce SmaRT support
+
+Add compile-time 'ARC_SMART_TRACE' option for enabling SmaRT support.
+
+Small real time trace (SmaRT) is an optional on-chip debug hardware
+component that captures instruction-trace history. It stores the
+address of the most recent non-sequential instructions executed into
+internal buffer.
+
+Usually we use MetaWare debugger to enable SmaRT and display trace
+information.
+
+This patch allows to display the decoded content of SmaRT buffer
+without MetaWare debugger. It is done by extending ordinary exception
+message with decoded SmaRT instruction-trace history.
+
+In some cases it's really useful as it allows to show pre-exception
+instruction-trace which was not tainted by exception handler code,
+printk code, etc...
+
+Nevertheless this option has negative performance impact due to
+implementation as we dump SmaRT buffer content into external memory
+buffer in the beginning of every slowpath exception handler code.
+We choose this implementation as a compromise between performance
+impact and SmaRT buffer tainting.
+Although the performance impact is not really significant (according
+to lmbench) we leave this option disabled by default.
+
+Here is th examples of user-space and kernel-space fault messages with
+'ARC_SMART_TRACE' option enabled:
+
+User-space exception:
+----------------------->8-------------------------
+Exception: u_hell[101]: at 0x103a2 [off 0x103a2 in /root/u_hell, VMA: 00010000:00012000]
+ ECR: 0x00050200 => Invalid Write @ 0x00000000 by insn @ 0x000103a2
+SmaRT [64 entries] (U=userspace, E=exception/interrupt, R=repeated, V=valid):
+ dst[ 0]: ___V 0x90231dd8: smart_populate+0x0/0xcc
+ src[ 0]: 0x9023230c: do_page_fault+0x2c/0x2ec
+ dst[ 1]: ___V 0x902322e0: do_page_fault+0x0/0x2ec
+ src[ 1]: 0x9022e064: EV_TLBProtV+0xec/0xf0
+ dst[ 2]: ___V 0x9022df78: EV_TLBProtV+0x0/0xf0
+ src[ 2]: 0x9023315c: do_slow_path_pf+0x10/0x14
+ dst[ 3]: ___V 0x9023314c: do_slow_path_pf+0x0/0x14
+ src[ 3]: 0x902330e8: EV_TLBMissD+0x80/0xe0
+ dst[ 4]: _E_V 0x90233068: EV_TLBMissD+0x0/0xe0
+ src[ 4]: 0x000103a2: off 0x103a2 in /root/u_hell (VMA: 00010000:00012000)
+ dst[ 5]: U__V 0x00010398: off 0x10398 in /root/u_hell
+ src[ 5]: 0x2004f238: off 0x43238 in /lib/libuClibc-1.0.18.so (VMA: 2000c000:20072000)
+ dst[ 6]: U__V 0x2004f214: off 0x43214 in /lib/libuClibc-1.0.18.so
+ src[ 6]: 0x20049a82: off 0x3da82 in /lib/libuClibc-1.0.18.so
+...[snip]...
+----------------------->8-------------------------
+
+Kernel-space exception:
+----------------------->8-------------------------
+Exception: at dw_mci_probe+0x12/0x954:
+ ECR: 0x00050100 => Invalid Read @ 0x00000004 by insn @ 0x905e7ca2
+SmaRT [64 entries] (U=userspace, E=exception/interrupt, R=repeated, V=valid):
+ dst[ 0]: ___V 0x90231dd8: smart_populate+0x0/0xcc
+ src[ 0]: 0x9023230c: do_page_fault+0x2c/0x2ec
+ dst[ 1]: ___V 0x902322e0: do_page_fault+0x0/0x2ec
+ src[ 1]: 0x9022e064: EV_TLBProtV+0xec/0xf0
+ dst[ 2]: ___V 0x9022e00c: EV_TLBProtV+0x94/0xf0
+ src[ 2]: 0x9022e004: EV_TLBProtV+0x8c/0xf0
+ dst[ 3]: ___V 0x9022df78: EV_TLBProtV+0x0/0xf0
+ src[ 3]: 0x9023315c: do_slow_path_pf+0x10/0x14
+ dst[ 4]: ___V 0x9023314c: do_slow_path_pf+0x0/0x14
+ src[ 4]: 0x902330a4: EV_TLBMissD+0x3c/0xe0
+ dst[ 5]: _E_V 0x90233068: EV_TLBMissD+0x0/0xe0
+ src[ 5]: 0x905e7ca2: dw_mci_probe+0x12/0x954
+ dst[ 6]: ___V 0x905e7c90: dw_mci_probe+0x0/0x954
+ src[ 6]: 0x905ea61c: dw_mci_pltfm_probe+0xa8/0xc4
+ dst[ 7]: ___V 0x905ea5f4: dw_mci_pltfm_probe+0x80/0xc4
+ src[ 7]: 0x904a9b2e: devm_ioremap_resource+0x4e/0x12c
+ dst[ 8]: ___V 0x904a9b1e: devm_ioremap_resource+0x3e/0x12c
+ src[ 8]: 0x904a9bc0: devm_ioremap_resource+0xe0/0x12c
+ dst[ 9]: ___V 0x904a9bbc: devm_ioremap_resource+0xdc/0x12c
+ src[ 9]: 0x9075a3b0: _raw_spin_unlock_irqrestore+0x28/0x2c
+...[snip]...
+----------------------->8-------------------------
+
+The number of SmaRT buffer lines to record/display can be configured
+in runtime via '/proc/sys/smart_trace/entries' procfs option.
+SmaRT can be suspended in runtime by setting
+'/proc/sys/smart_trace/entries' to 0.
+
+The code was written in such a way to achieve minimal interference
+with MetaWare SmaRT support:
+ * SmaRT is disabled only for small amount of time in smart_populate
+ function.
+ * SmaRT enable/disable via MetaWare doesn't lead to any serious
+ issues (SmaRT disable via MetaWare may lead to last SmaRT
+ record to be invalid, though)
+
+NOTE:
+this RFC has prerequisite:
+ http://patchwork.ozlabs.org/patch/986820/
+
+Changes RFCv1->RFCv2:
+ * Changes in output display:
+ * Only print VMAs if they are changed.
+ * Split entry for two lines and print source and destination
+ addresses on different lines.
+ * Add procfs options to configure/suspend SmaRT in runtime.
+ * Add SmaRT version check. Limit supported SmaRT versions to >= 0x03.
+ * Move all SmaRT related stuff to smart.h and smart.c
+ * Other minor changes.
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ arch/arc/Kconfig | 8 ++
+ arch/arc/include/asm/arcregs.h | 23 ++++
+ arch/arc/include/asm/smart.h | 22 ++++
+ arch/arc/kernel/Makefile | 1 +
+ arch/arc/kernel/setup.c | 4 +
+ arch/arc/kernel/smart.c | 274 +++++++++++++++++++++++++++++++++++++++++
+ arch/arc/kernel/traps.c | 8 ++
+ arch/arc/kernel/troubleshoot.c | 3 +
+ arch/arc/mm/fault.c | 2 +
+ 9 files changed, 345 insertions(+)
+ create mode 100644 arch/arc/include/asm/smart.h
+ create mode 100644 arch/arc/kernel/smart.c
+
+diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
+index a045f3086047..c482fd5d865f 100644
+--- a/arch/arc/Kconfig
++++ b/arch/arc/Kconfig
+@@ -528,6 +528,14 @@ config ARC_DBG_TLB_PARANOIA
+ bool "Paranoia Checks in Low Level TLB Handlers"
+ default n
+
++config ARC_SMART_TRACE
++ bool "Enable SmaRT real time trace on-chip debug HW"
++ depends on ISA_ARCV2
++ help
++ Enable SmaRT (small real time trace) on-chip debug hardware component
++ that captures instruction-trace history if exists. This trace will be
++ printed if any unexpected exception is occurred.
++
+ endif
+
+ config ARC_UBOOT_SUPPORT
+diff --git a/arch/arc/include/asm/arcregs.h b/arch/arc/include/asm/arcregs.h
+index 49bfbd879caa..cd8228d82872 100644
+--- a/arch/arc/include/asm/arcregs.h
++++ b/arch/arc/include/asm/arcregs.h
+@@ -118,6 +118,20 @@
+ #define ARC_AUX_DPFP_2H 0x304
+ #define ARC_AUX_DPFP_STAT 0x305
+
++/* SmaRT registers */
++#define ARC_AUX_SMART_CONTROL 0x700
++#define SMART_CTL_EN BIT(0)
++#define SMART_CTL_DATA_POS 8
++#define SMART_CTL_DATA_SRC (0 << SMART_CTL_DATA_POS)
++#define SMART_CTL_DATA_DST (1 << SMART_CTL_DATA_POS)
++#define SMART_CTL_DATA_FLAG (2 << SMART_CTL_DATA_POS)
++#define SMART_CTL_IDX_POS 10
++#define ARC_AUX_SMART_DATA 0x701
++#define SMART_FLAG_U BIT(8)
++#define SMART_FLAG_E BIT(9)
++#define SMART_FLAG_R BIT(10)
++#define SMART_FLAG_V BIT(31)
++
+ #ifndef __ASSEMBLY__
+
+ #include <soc/arc/aux.h>
+@@ -199,6 +213,15 @@ struct bcr_dccm_arcv2 {
+ #endif
+ };
+
++/* SmaRT BCR encoding starting from version 0x03 */
++struct bcr_smart_v3p {
++#ifdef CONFIG_CPU_BIG_ENDIAN
++ unsigned int stack_size:22, pad:2, ver:8;
++#else
++ unsigned int ver:8, pad:2, stack_size:22;
++#endif
++};
++
+ /* ARCompact: Both SP and DP FPU BCRs have same format */
+ struct bcr_fp_arcompact {
+ #ifdef CONFIG_CPU_BIG_ENDIAN
+diff --git a/arch/arc/include/asm/smart.h b/arch/arc/include/asm/smart.h
+new file mode 100644
+index 000000000000..3c2302bc8443
+--- /dev/null
++++ b/arch/arc/include/asm/smart.h
+@@ -0,0 +1,22 @@
++// SPDX-License-Identifier: GPL-2.0+
++//
++// Copyright (C) 2018 Synopsys
++// Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
++
++#ifndef __ASM_SMART_H
++#define __ASM_SMART_H
++
++void smart_populate(void);
++void smart_show(void);
++void smart_init(void);
++
++#ifdef CONFIG_ARC_SMART_TRACE
++#define POPULATE_SMART() smart_populate()
++
++#else
++#define POPULATE_SMART()
++void smart_show(void) {}
++void smart_init(void) {}
++
++#endif /* CONFIG_ARC_SMART_TRACE */
++#endif /* __ASM_SMART_H */
+diff --git a/arch/arc/kernel/Makefile b/arch/arc/kernel/Makefile
+index 2dc5f4296d44..4e58a5f90c78 100644
+--- a/arch/arc/kernel/Makefile
++++ b/arch/arc/kernel/Makefile
+@@ -22,6 +22,7 @@ obj-$(CONFIG_ARC_EMUL_UNALIGNED) += unaligned.o
+ obj-$(CONFIG_KGDB) += kgdb.o
+ obj-$(CONFIG_ARC_METAWARE_HLINK) += arc_hostlink.o
+ obj-$(CONFIG_PERF_EVENTS) += perf_event.o
++obj-$(CONFIG_ARC_SMART_TRACE) += smart.o
+
+ obj-$(CONFIG_ARC_FPU_SAVE_RESTORE) += fpu.o
+ CFLAGS_fpu.o += -mdpfp
+diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c
+index b2cae79a25d7..c5641e6ffc2a 100644
+--- a/arch/arc/kernel/setup.c
++++ b/arch/arc/kernel/setup.c
+@@ -28,6 +28,7 @@
+ #include <asm/unwind.h>
+ #include <asm/mach_desc.h>
+ #include <asm/smp.h>
++#include <asm/smart.h>
+
+ #define FIX_PTR(x) __asm__ __volatile__(";" : "+r"(x))
+
+@@ -447,6 +448,9 @@ void setup_processor(void)
+ pr_info("%s", arc_platform_smp_cpuinfo());
+
+ arc_chk_core_config();
++
++ if (IS_ENABLED(CONFIG_ARC_SMART_TRACE))
++ smart_init();
+ }
+
+ static inline int is_kernel(unsigned long addr)
+diff --git a/arch/arc/kernel/smart.c b/arch/arc/kernel/smart.c
+new file mode 100644
+index 000000000000..fb1e88c7b99b
+--- /dev/null
++++ b/arch/arc/kernel/smart.c
+@@ -0,0 +1,274 @@
++// SPDX-License-Identifier: GPL-2.0+
++//
++// Synopsys SmaRT (Small Real time Trace) handling code
++//
++// Copyright (C) 2018 Synopsys
++// Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
++
++#include <linux/init.h>
++#include <linux/gfp.h>
++#include <linux/sysctl.h>
++#include <linux/percpu.h>
++#include <linux/percpu-defs.h>
++
++#include <asm/arcregs.h>
++#include <asm/smart.h>
++#include <asm/bug.h>
++
++#define SMART_BUFF_MAX 4096 /* HW limit */
++
++struct smart_buff {
++ u32 entries_collected;
++ u32 src[SMART_BUFF_MAX];
++ u32 dst[SMART_BUFF_MAX];
++ u32 flags[SMART_BUFF_MAX];
++};
++
++DEFINE_PER_CPU(struct smart_buff, smart_buff_log);
++
++struct smart_fvma_info {
++ bool vma_found;
++ struct faulting_vma_info fvma;
++};
++
++/* 0 value of 'smart_entries_use' will be treated as 'disable' */
++static unsigned int smart_entries_use = SMART_BUFF_MAX;
++
++/* limits for smart_trace/entries */
++static unsigned int smart_entries_min;
++static unsigned int smart_entries_max = SMART_BUFF_MAX;
++
++static struct ctl_table ctl_smart_vars[] = {
++ {
++ .procname = "entries",
++ .data = &smart_entries_use,
++ .maxlen = sizeof(smart_entries_use),
++ .mode = 0644,
++ .proc_handler = proc_douintvec_minmax,
++ .extra1 = &smart_entries_min,
++ .extra2 = &smart_entries_max,
++ }, {}
++};
++
++static struct ctl_table ctl_smart[] = {
++ {
++ .procname = "arc_smart_trace",
++ .mode = 0555,
++ .child = ctl_smart_vars,
++ }, {}
++};
++
++static inline bool smart_exist(void)
++{
++ struct bcr_smart_v3p bcr;
++
++ READ_BCR(ARC_REG_SMART_BCR, bcr);
++
++ /*
++ * SmaRT versions < 0x03 have different registers encoding and small
++ * buffer size. We don't support them.
++ */
++ return bcr.ver >= 0x03;
++}
++
++static inline u32 smart_stack_size(void)
++{
++ struct bcr_smart_v3p bcr;
++
++ READ_BCR(ARC_REG_SMART_BCR, bcr);
++ return bcr.stack_size;
++}
++
++static inline void smart_enable(void)
++{
++ write_aux_reg(ARC_AUX_SMART_CONTROL, SMART_CTL_EN);
++}
++
++static inline void smart_disable(void)
++{
++ write_aux_reg(ARC_AUX_SMART_CONTROL, 0);
++}
++
++static bool smart_fvma_changed(struct smart_fvma_info *curr,
++ struct smart_fvma_info *prev)
++{
++ if (!prev->vma_found)
++ return true;
++
++ return prev->fvma.vm_start != curr->fvma.vm_start ||
++ prev->fvma.vm_end != curr->fvma.vm_end;
++}
++
++static void smart_show_fault_vma(unsigned long address, char *buf, int buflen,
++ struct smart_fvma_info *curr,
++ struct smart_fvma_info *prev)
++{
++ int ret;
++
++ ret = get_faulting_vma_info(address, buf, buflen, &curr->fvma);
++ curr->vma_found = !ret;
++ if (ret) {
++ pr_cont(": No matching VMA found\n");
++ return;
++ }
++
++ if (smart_fvma_changed(curr, prev))
++ pr_cont(": off 0x%lx in %s (VMA: %08lx:%08lx)\n",
++ curr->fvma.offset, curr->fvma.file_path,
++ curr->fvma.vm_start, curr->fvma.vm_end);
++ else
++ pr_cont(": off 0x%lx in %s\n",
++ curr->fvma.offset, curr->fvma.file_path);
++}
++
++/* Show decoded userspace/kernelspace address */
++static void smart_show_address(u32 address, char *buf, int buflen,
++ struct smart_fvma_info *curr,
++ struct smart_fvma_info *prev)
++{
++ curr->vma_found = false;
++
++ if (address < 0x80000000)
++ smart_show_fault_vma(address, buf, buflen, curr, prev);
++ else
++ pr_cont(": %pS\n", (void *)address);
++}
++
++static void smart_show_dst(int i, u32 flags, u32 dst, char *buf, int buflen,
++ struct smart_fvma_info *curr,
++ struct smart_fvma_info *prev)
++{
++ pr_info(" dst[%4d]: %s%s%s%s %#010x", i,
++ flags & SMART_FLAG_U ? "U" : "_",
++ flags & SMART_FLAG_E ? "E" : "_",
++ flags & SMART_FLAG_R ? "R" : "_",
++ flags & SMART_FLAG_V ? "V" : "_",
++ dst);
++
++ smart_show_address(dst, buf, buflen, curr, prev);
++}
++
++static void smart_show_src(int i, u32 src, char *buf, int buflen,
++ struct smart_fvma_info *curr,
++ struct smart_fvma_info *prev)
++{
++ pr_info(" src[%4d]: %#010x", i, src);
++
++ smart_show_address(src, buf, buflen, curr, prev);
++}
++
++static void smart_show_entries(struct smart_buff *smart_buff, u32 stack_use,
++ char *buf, int buflen)
++{
++ struct smart_fvma_info fvma_0, fvma_1;
++ int i;
++
++ /*
++ * fvma_1 will be treat as 'previous' vma while we process first entry.
++ * We had to errase is to show first VMAs unconditionally.
++ */
++ fvma_1.vma_found = false;
++
++ for (i = 0; i < stack_use; i++) {
++ smart_show_dst(i, smart_buff->flags[i], smart_buff->dst[i],
++ buf, buflen, &fvma_0, &fvma_1);
++
++ smart_show_src(i, smart_buff->src[i], buf, buflen,
++ &fvma_1, &fvma_0);
++ }
++}
++
++/* Should be called per cpu */
++void __init smart_init(void)
++{
++ struct smart_buff *smart_buff_cpu;
++
++ /*
++ * We don't check 'smart_entries_use' value here as sysctl is not
++ * available yet, so smart_entries_use' value is unchanged.
++ */
++ if (!smart_exist())
++ return;
++
++ smart_buff_cpu = this_cpu_ptr(&smart_buff_log);
++ smart_buff_cpu->entries_collected = 0;
++
++ smart_enable();
++}
++
++void smart_show(void)
++{
++ struct smart_buff *smart_buff_cpu;
++ u32 stack_size, stack_use;
++ char *buf;
++
++ if (!smart_exist() || !smart_entries_use)
++ return;
++
++ smart_buff_cpu = this_cpu_ptr(&smart_buff_log);
++
++ stack_size = smart_stack_size();
++ stack_use = min_t(u32, stack_size, smart_buff_cpu->entries_collected);
++ pr_info("SmaRT [%d entries] (U=userspace, E=exception/interrupt, R=repeated, V=valid):\n",
++ stack_use);
++
++ buf = (char *)__get_free_page(GFP_NOWAIT);
++ if (!buf)
++ return;
++
++ smart_show_entries(smart_buff_cpu, stack_use, buf, PAGE_SIZE - 1);
++
++ free_page((unsigned long)buf);
++}
++
++#define SMART_CTL_IDX(i) ((i) << SMART_CTL_IDX_POS)
++#define SMART_CTL_GET_SRC(i) (SMART_CTL_IDX(i) | SMART_CTL_DATA_SRC)
++#define SMART_CTL_GET_DST(i) (SMART_CTL_IDX(i) | SMART_CTL_DATA_DST)
++#define SMART_CTL_GET_FLG(i) (SMART_CTL_IDX(i) | SMART_CTL_DATA_FLAG)
++
++void smart_populate(void)
++{
++ struct smart_buff *smart_buff_cpu;
++ u32 stack_size, stack_use;
++ int i;
++
++ if (!smart_exist() || !smart_entries_use) {
++ smart_buff_cpu = this_cpu_ptr(&smart_buff_log);
++ smart_buff_cpu->entries_collected = 0;
++
++ return;
++ }
++
++ /*
++ * The ARC_AUX_SMART_DATA register may be read safely only when the
++ * processor is in the state in which SmaRT is not collecting data.
++ */
++ smart_disable();
++
++ smart_buff_cpu = this_cpu_ptr(&smart_buff_log);
++
++ stack_size = smart_stack_size();
++ stack_use = min_t(u32, stack_size, smart_entries_use);
++ smart_buff_cpu->entries_collected = stack_use;
++
++ for (i = 0; i < stack_use; i++) {
++ write_aux_reg(ARC_AUX_SMART_CONTROL, SMART_CTL_GET_SRC(i));
++ smart_buff_cpu->src[i] = read_aux_reg(ARC_AUX_SMART_DATA);
++ write_aux_reg(ARC_AUX_SMART_CONTROL, SMART_CTL_GET_DST(i));
++ smart_buff_cpu->dst[i] = read_aux_reg(ARC_AUX_SMART_DATA);
++ write_aux_reg(ARC_AUX_SMART_CONTROL, SMART_CTL_GET_FLG(i));
++ smart_buff_cpu->flags[i] = read_aux_reg(ARC_AUX_SMART_DATA);
++ }
++
++ smart_enable();
++}
++
++static int __init smart_register_sysctl(void)
++{
++ if (!register_sysctl_table(ctl_smart))
++ pr_err("Unable to register SmaRT sysctl\n");
++
++ return 0;
++}
++
++arch_initcall(smart_register_sysctl);
+diff --git a/arch/arc/kernel/traps.c b/arch/arc/kernel/traps.c
+index e66fd40296b3..7bd94f8183d1 100644
+--- a/arch/arc/kernel/traps.c
++++ b/arch/arc/kernel/traps.c
+@@ -22,6 +22,7 @@
+ #include <asm/setup.h>
+ #include <asm/unaligned.h>
+ #include <asm/kprobes.h>
++#include <asm/smart.h>
+
+ void __init trap_init(void)
+ {
+@@ -70,6 +71,7 @@ int name(unsigned long address, struct pt_regs *regs) \
+ { \
+ siginfo_t info; \
+ \
++ POPULATE_SMART(); \
+ clear_siginfo(&info); \
+ info.si_signo = signr; \
+ info.si_errno = 0; \
+@@ -96,6 +98,8 @@ DO_ERROR_INFO(SIGSEGV, "gcc generated __builtin_trap", do_trap5_error, 0)
+ int do_misaligned_access(unsigned long address, struct pt_regs *regs,
+ struct callee_regs *cregs)
+ {
++ POPULATE_SMART();
++
+ /* If emulation not enabled, or failed, kill the task */
+ if (misaligned_fixup(address, regs, cregs) != 0)
+ return do_misaligned_error(address, regs);
+@@ -128,6 +132,8 @@ void do_non_swi_trap(unsigned long address, struct pt_regs *regs)
+ {
+ unsigned int param = regs->ecr_param;
+
++ POPULATE_SMART();
++
+ switch (param) {
+ case 1:
+ trap_is_brkpt(address, regs);
+@@ -159,6 +165,8 @@ void do_insterror_or_kprobe(unsigned long address, struct pt_regs *regs)
+ {
+ int rc;
+
++ POPULATE_SMART();
++
+ /* Check if this exception is caused by kprobes */
+ rc = notify_die(DIE_IERR, "kprobe_ierr", regs, address, 0, SIGILL);
+ if (rc == NOTIFY_STOP)
+diff --git a/arch/arc/kernel/troubleshoot.c b/arch/arc/kernel/troubleshoot.c
+index 00efcdfde0ee..1410fdfcdfef 100644
+--- a/arch/arc/kernel/troubleshoot.c
++++ b/arch/arc/kernel/troubleshoot.c
+@@ -17,6 +17,7 @@
+
+ #include <asm/arcregs.h>
+ #include <asm/irqflags.h>
++#include <asm/smart.h>
+
+ /*
+ * Common routine to print scratch regs (r0-r12) or callee regs (r13-r25)
+@@ -218,6 +219,8 @@ void show_exception_mesg(struct pt_regs *regs)
+ show_exception_mesg_u(regs);
+ else
+ show_exception_mesg_k(regs);
++
++ smart_show();
+ }
+
+ void show_regs(struct pt_regs *regs)
+diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c
+index 026d662a7668..296a19bcf9a0 100644
+--- a/arch/arc/mm/fault.c
++++ b/arch/arc/mm/fault.c
+@@ -18,6 +18,7 @@
+ #include <linux/mm_types.h>
+ #include <asm/pgalloc.h>
+ #include <asm/mmu.h>
++#include <asm/smart.h>
+
+ /*
+ * kernel virtual address is required to implement vmalloc/pkmap/fixmap
+@@ -72,6 +73,7 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
+ int write = regs->ecr_cause & ECR_C_PROTV_STORE; /* ST/EX */
+ unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
+
++ POPULATE_SMART();
+ clear_siginfo(&info);
+
+ /*
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/3003-Experimental-ARC-increase-memory-to-1.5GB.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/3003-Experimental-ARC-increase-memory-to-1.5GB.patch
new file mode 100644
index 00000000..40692a7d
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/3003-Experimental-ARC-increase-memory-to-1.5GB.patch
@@ -0,0 +1,40 @@
+From e213de42b29c286f2c49d96c824ab362c5669e30 Mon Sep 17 00:00:00 2001
+From: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+Date: Tue, 4 Dec 2018 17:52:52 +0300
+Subject: [PATCH] Experimental: ARC: increase memory to 1.5GB
+
+Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+---
+ arch/arc/boot/dts/hsdk.dts | 2 +-
+ arch/arc/mm/cache.c | 3 ++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arc/boot/dts/hsdk.dts b/arch/arc/boot/dts/hsdk.dts
+index 7a0da3c89c72..014f6bab1cf5 100644
+--- a/arch/arc/boot/dts/hsdk.dts
++++ b/arch/arc/boot/dts/hsdk.dts
+@@ -234,6 +234,6 @@
+ #address-cells = <1>;
+ #size-cells = <1>;
+ device_type = "memory";
+- reg = <0x80000000 0x40000000>; /* 1 GiB */
++ reg = <0x80000000 0x60000000>; /* 1 GiB */
+ };
+ };
+diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c
+index f2701c13a66b..cedb7cefe08a 100644
+--- a/arch/arc/mm/cache.c
++++ b/arch/arc/mm/cache.c
+@@ -1169,7 +1169,8 @@ noinline void __init arc_ioc_setup(void)
+ * TBD: fix for PGU + 1GB of low mem
+ * TBD: fix for PAE
+ */
+- mem_sz = arc_get_mem_sz();
++ //mem_sz = arc_get_mem_sz();
++ mem_sz = 0x80000000;
+
+ if (!is_power_of_2(mem_sz) || mem_sz < 4096)
+ panic("IOC Aperture size must be power of 2 larger than 4KB");
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4001-HSDK-add-highmem-zone.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4001-HSDK-add-highmem-zone.patch
new file mode 100644
index 00000000..222d6f2c
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4001-HSDK-add-highmem-zone.patch
@@ -0,0 +1,49 @@
+From 19c3eddda384b1280f664aed96aec1d88213aa9e Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Tue, 18 Dec 2018 13:37:04 +0300
+Subject: [PATCH 1/3] HSDK: add highmem zone
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ arch/arc/boot/dts/hsdk.dts | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/arch/arc/boot/dts/hsdk.dts b/arch/arc/boot/dts/hsdk.dts
+index 43f17b51ee89..ff860c537fd1 100644
+--- a/arch/arc/boot/dts/hsdk.dts
++++ b/arch/arc/boot/dts/hsdk.dts
+@@ -18,8 +18,8 @@
+ model = "snps,hsdk";
+ compatible = "snps,hsdk";
+
+- #address-cells = <1>;
+- #size-cells = <1>;
++ #address-cells = <2>;
++ #size-cells = <2>;
+
+ chosen {
+ bootargs = "earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1";
+@@ -105,7 +105,7 @@
+ #size-cells = <1>;
+ interrupt-parent = <&idu_intc>;
+
+- ranges = <0x00000000 0xf0000000 0x10000000>;
++ ranges = <0x00000000 0x0 0xf0000000 0x10000000>;
+
+ cgu_rst: reset-controller@8a0 {
+ compatible = "snps,hsdk-reset";
+@@ -240,9 +240,8 @@
+ };
+
+ memory@80000000 {
+- #address-cells = <1>;
+- #size-cells = <1>;
+ device_type = "memory";
+- reg = <0x80000000 0x40000000>; /* 1 GiB */
++ reg = <0x0 0x80000000 0x0 0x40000000 /* 1 GiB lowmem */
++ 0x1 0x00000000 0x0 0x80000000>; /* 2 GiB highmem */
+ };
+ };
+--
+2.14.5
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4002-ARC-temporary-disable-IOC.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4002-ARC-temporary-disable-IOC.patch
new file mode 100644
index 00000000..5968f62f
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4002-ARC-temporary-disable-IOC.patch
@@ -0,0 +1,26 @@
+From 2233d3418d91ab4df3ef29f8e03a77b2737cd286 Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Tue, 18 Dec 2018 13:37:35 +0300
+Subject: [PATCH 2/3] ARC: temporary disable IOC
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ arch/arc/mm/cache.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c
+index cf9619d4efb4..b4e2e1e2b50e 100644
+--- a/arch/arc/mm/cache.c
++++ b/arch/arc/mm/cache.c
+@@ -27,7 +27,7 @@
+
+ static int l2_line_sz;
+ static int ioc_exists;
+-int slc_enable = 1, ioc_enable = 1;
++int slc_enable = 1, ioc_enable = 0;
+ unsigned long perip_base = ARC_UNCACHED_ADDR_SPACE; /* legacy value for boot */
+ unsigned long perip_end = 0xFFFFFFFF; /* legacy value */
+
+--
+2.14.5
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4003-ARC-cache-ops-add-assertions.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4003-ARC-cache-ops-add-assertions.patch
new file mode 100644
index 00000000..3c208e39
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/4003-ARC-cache-ops-add-assertions.patch
@@ -0,0 +1,42 @@
+From cfe4c0df27e2426ccad67250319283bb68bec6e9 Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Tue, 18 Dec 2018 14:02:27 +0300
+Subject: [PATCH 3/3] ARC: cache-ops: add assertions
+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+---
+ arch/arc/mm/cache.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c
+index b4e2e1e2b50e..2d6ee1962dbc 100644
+--- a/arch/arc/mm/cache.c
++++ b/arch/arc/mm/cache.c
+@@ -880,18 +880,24 @@ static void __dma_cache_wback_l1(phys_addr_t start, unsigned long sz)
+ */
+ static void __dma_cache_wback_inv_slc(phys_addr_t start, unsigned long sz)
+ {
++ BUG_ON(upper_32_bits(start));
++
+ __dc_line_op_k(start, sz, OP_FLUSH_N_INV);
+ slc_op(start, sz, OP_FLUSH_N_INV);
+ }
+
+ static void __dma_cache_inv_slc(phys_addr_t start, unsigned long sz)
+ {
++ BUG_ON(upper_32_bits(start));
++
+ __dc_line_op_k(start, sz, OP_INV);
+ slc_op(start, sz, OP_INV);
+ }
+
+ static void __dma_cache_wback_slc(phys_addr_t start, unsigned long sz)
+ {
++ BUG_ON(upper_32_bits(start));
++
+ __dc_line_op_k(start, sz, OP_FLUSH);
+ slc_op(start, sz, OP_FLUSH);
+ }
+--
+2.14.5
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/5001-Enable-FBDEV_DRM-emulation-for-HSDK.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/5001-Enable-FBDEV_DRM-emulation-for-HSDK.patch
new file mode 100644
index 00000000..d558853e
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/5001-Enable-FBDEV_DRM-emulation-for-HSDK.patch
@@ -0,0 +1,22 @@
+From 578237a2fcb6c687b8123f8be0fd4bd3ce8a719b Mon Sep 17 00:00:00 2001
+From: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+Date: Wed, 26 Dec 2018 15:08:35 +0300
+Subject: [PATCH] Enable FBDEV_DRM emulation for HSDK
+
+Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
+---
+ arch/arc/configs/hsdk_defconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arc/configs/hsdk_defconfig b/arch/arc/configs/hsdk_defconfig
+index 8b37b4b01ffd..c369637686fc 100644
+--- a/arch/arc/configs/hsdk_defconfig
++++ b/arch/arc/configs/hsdk_defconfig
+@@ -1169,3 +1169,4 @@ CONFIG_CRC_CCITT=y
+ CONFIG_CRC_ITU_T=y
+ CONFIG_LIBCRC32C=y
+ CONFIG_PM=y
++CONFIG_DRM_FBDEV_EMULATION=y
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/6001-ARC-adjust-memblock_reserve-of-kernel-memory.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/6001-ARC-adjust-memblock_reserve-of-kernel-memory.patch
new file mode 100644
index 00000000..35a8c24b
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/6001-ARC-adjust-memblock_reserve-of-kernel-memory.patch
@@ -0,0 +1,46 @@
+From 91e89cad429a9d65330a41a5cb7039671f1d6204 Mon Sep 17 00:00:00 2001
+From: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Date: Wed, 19 Dec 2018 19:16:16 +0300
+Subject: [PATCH] ARC: adjust memblock_reserve of kernel memory
+
+In setup_arch_memory we reserve the memory area wherein the kernel
+is located. Current implementation may reserve more memory than
+it actually required in case of CONFIG_LINUX_LINK_BASE is not
+equal to CONFIG_LINUX_RAM_BASE. This happens because we calculate
+start of the reserved region relatively to the CONFIG_LINUX_RAM_BASE
+and end of the region relatively to the CONFIG_LINUX_RAM_BASE.
+
+For example in case of HSDK board we wasted 256MiB of physical memory:
+------------------->8------------------------------
+Memory: 770416K/1048576K available (5496K kernel code,
+ 240K rwdata, 1064K rodata, 2200K init, 275K bss,
+ 278160K reserved, 0K cma-reserved)
+------------------->8------------------------------
+
+Fix that.
+
+Fixes: 9ed68785f7f ("ARC: mm: Decouple RAM base address from kernel link addr")
+Cc: stable@vger.kernel.org #4.14+
+Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
+---
+ arch/arc/mm/init.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arc/mm/init.c b/arch/arc/mm/init.c
+index ba14506..f890b2f 100644
+--- a/arch/arc/mm/init.c
++++ b/arch/arc/mm/init.c
+@@ -138,7 +138,8 @@ void __init setup_arch_memory(void)
+ */
+
+ memblock_add_node(low_mem_start, low_mem_sz, 0);
+- memblock_reserve(low_mem_start, __pa(_end) - low_mem_start);
++ memblock_reserve(CONFIG_LINUX_LINK_BASE,
++ __pa(_end) - CONFIG_LINUX_LINK_BASE);
+
+ #ifdef CONFIG_BLK_DEV_INITRD
+ if (initrd_start)
+--
+1.8.3.1
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/8000-ARCv2-support-manual-regfile-save-on-interrupts.patch b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/8000-ARCv2-support-manual-regfile-save-on-interrupts.patch
new file mode 100644
index 00000000..79c65725
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc/8000-ARCv2-support-manual-regfile-save-on-interrupts.patch
@@ -0,0 +1,157 @@
+From 7e9246a982a6ae6a2b19f3d3f1a437a6417577fb Mon Sep 17 00:00:00 2001
+From: Vineet Gupta <vgupta@synopsys.com>
+Date: Wed, 6 Jun 2018 10:20:37 -0700
+Subject: [PATCH] ARCv2: support manual regfile save on interrupts
+
+There's a hardware bug which affects the HSDK platform, triggered by
+micro-ops for auto-saving regfile on taken interrupt. The workaround is
+to inhibit autosave.
+
+Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
+---
+ arch/arc/Kconfig | 8 ++++++
+ arch/arc/include/asm/entry-arcv2.h | 54 ++++++++++++++++++++++++++++++++++++++
+ arch/arc/kernel/entry-arcv2.S | 4 ++-
+ arch/arc/kernel/intc-arcv2.c | 2 ++
+ arch/arc/plat-hsdk/Kconfig | 1 +
+ 5 files changed, 68 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
+index 376366a7db81..7215f52b3413 100644
+--- a/arch/arc/Kconfig
++++ b/arch/arc/Kconfig
+@@ -407,6 +407,14 @@ config ARC_HAS_ACCL_REGS
+ (also referred to as r58:r59). These can also be used by gcc as GPR so
+ kernel needs to save/restore per process
+
++config ARC_IRQ_NO_AUTOSAVE
++ bool "Disable hardware autosave regfile on interrupts"
++ default n
++ help
++ On HS cores, taken interrupt auto saves the regfile on stack.
++ This is programmable and can be optionally disabled in which case
++ software INTERRUPT_PROLOGUE/EPILGUE do the needed work
++
+ endif # ISA_ARCV2
+
+ endmenu # "ARC CPU Configuration"
+diff --git a/arch/arc/include/asm/entry-arcv2.h b/arch/arc/include/asm/entry-arcv2.h
+index 309f4e6721b3..225e7df2d8ed 100644
+--- a/arch/arc/include/asm/entry-arcv2.h
++++ b/arch/arc/include/asm/entry-arcv2.h
+@@ -17,6 +17,33 @@
+ ;
+ ; Now manually save: r12, sp, fp, gp, r25
+
++#ifdef CONFIG_ARC_IRQ_NO_AUTOSAVE
++.ifnc \called_from, exception
++ st.as r9, [sp, -10] ; save r9 in it's final stack slot
++ sub sp, sp, 12 ; skip JLI, LDI, EI
++
++ PUSH lp_count
++ PUSHAX lp_start
++ PUSHAX lp_end
++ PUSH blink
++
++ PUSH r11
++ PUSH r10
++
++ sub sp, sp, 4 ; skip r9
++
++ PUSH r8
++ PUSH r7
++ PUSH r6
++ PUSH r5
++ PUSH r4
++ PUSH r3
++ PUSH r2
++ PUSH r1
++ PUSH r0
++.endif
++#endif
++
+ #ifdef CONFIG_ARC_HAS_ACCL_REGS
+ PUSH r59
+ PUSH r58
+@@ -86,6 +113,33 @@
+ POP r59
+ #endif
+
++#ifdef CONFIG_ARC_IRQ_NO_AUTOSAVE
++.ifnc \called_from, exception
++ POP r0
++ POP r1
++ POP r2
++ POP r3
++ POP r4
++ POP r5
++ POP r6
++ POP r7
++ POP r8
++ POP r9
++ POP r10
++ POP r11
++
++ POP blink
++ POPAX lp_end
++ POPAX lp_start
++
++ POP r9
++ mov lp_count, r9
++
++ add sp, sp, 12 ; skip JLI, LDI, EI
++ ld.as r9, [sp, -10] ; reload r9 which got clobbered
++.endif
++#endif
++
+ .endm
+
+ /*------------------------------------------------------------------------*/
+diff --git a/arch/arc/kernel/entry-arcv2.S b/arch/arc/kernel/entry-arcv2.S
+index cc558a25b8fa..562089d62d9d 100644
+--- a/arch/arc/kernel/entry-arcv2.S
++++ b/arch/arc/kernel/entry-arcv2.S
+@@ -209,7 +209,9 @@ restore_regs:
+ ;####### Return from Intr #######
+
+ debug_marker_l1:
+- bbit1.nt r0, STATUS_DE_BIT, .Lintr_ret_to_delay_slot
++ ; bbit1.nt r0, STATUS_DE_BIT, .Lintr_ret_to_delay_slot
++ btst r0, STATUS_DE_BIT ; Z flag set if bit clear
++ bnz .Lintr_ret_to_delay_slot ; branch if STATUS_DE_BIT set
+
+ .Lisr_ret_fast_path:
+ ; Handle special case #1: (Entry via Exception, Return via IRQ)
+diff --git a/arch/arc/kernel/intc-arcv2.c b/arch/arc/kernel/intc-arcv2.c
+index 067ea362fb3e..cf18b3e5a934 100644
+--- a/arch/arc/kernel/intc-arcv2.c
++++ b/arch/arc/kernel/intc-arcv2.c
+@@ -49,11 +49,13 @@ void arc_init_IRQ(void)
+
+ *(unsigned int *)&ictrl = 0;
+
++#ifndef CONFIG_ARC_IRQ_NO_AUTOSAVE
+ ictrl.save_nr_gpr_pairs = 6; /* r0 to r11 (r12 saved manually) */
+ ictrl.save_blink = 1;
+ ictrl.save_lp_regs = 1; /* LP_COUNT, LP_START, LP_END */
+ ictrl.save_u_to_u = 0; /* user ctxt saved on kernel stack */
+ ictrl.save_idx_regs = 1; /* JLI, LDI, EI */
++#endif
+
+ WRITE_AUX(AUX_IRQ_CTRL, ictrl);
+
+diff --git a/arch/arc/plat-hsdk/Kconfig b/arch/arc/plat-hsdk/Kconfig
+index f25c085b9874..23e00216e5a5 100644
+--- a/arch/arc/plat-hsdk/Kconfig
++++ b/arch/arc/plat-hsdk/Kconfig
+@@ -9,6 +9,7 @@ menuconfig ARC_SOC_HSDK
+ bool "ARC HS Development Kit SOC"
+ depends on ISA_ARCV2
+ select ARC_HAS_ACCL_REGS
++ select ARC_IRQ_NO_AUTOSAVE
+ select CLK_HSDK
+ select RESET_HSDK
+ select HAVE_PCI
+--
+2.16.2
+
diff --git a/bsp/meta-synopsys/recipes-kernel/linux/linux-arc_4.19.9.bb b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc_4.19.9.bb
new file mode 100644
index 00000000..6897b041
--- /dev/null
+++ b/bsp/meta-synopsys/recipes-kernel/linux/linux-arc_4.19.9.bb
@@ -0,0 +1,4 @@
+require linux-arc.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+SRC_URI[sha256sum] = "fc116cc6829c73944215d3b3ac0fc368dde9e8235b456744afffde001269dbf2"