diff --git a/Makefile b/Makefile
index 92415583..67befd2c 100644
--- a/Makefile
+++ b/Makefile
@@ -12,16 +12,8 @@ else
 		PLATFORM := $(shell echo $(FULL_PATH) | cut -d '/' -f 1 | cut -d '-' -f 4 )
 
 		FAMILY := $(shell grep "/board/" $(FULL_PATH) | head -1 | cut -d "/" -f 3)
-		ifeq ($(FAMILY),hi3516av100)
-			BR_VER ?= 2021.02.12
-		else ifeq ($(FAMILY),hi3536dv100)
-			BR_VER ?= 2021.02.12
-		else ifeq ($(FAMILY),hi3516cv500)
+		ifeq ($(FAMILY),hi3516cv500)
 			BR_VER ?= 2022.08
-		else ifeq ($(FAMILY),hi3516ev200)
-			BR_VER ?= 2021.02.12
-		else ifeq ($(FAMILY),gk7205v200)
-			BR_VER ?= 2021.02.12
 		endif
     endif
 endif
@@ -30,7 +22,7 @@ ROOT_DIR      := $(CURDIR)
 BR_EXT_DIR    := $(ROOT_DIR)/br-ext-chip-$(PLATFORM)
 SCRIPTS_DIR   := $(ROOT_DIR)/scripts
 
-BR_VER        ?= 2020.02.12
+BR_VER        ?= 2021.02.12
 BR_DIR        := $(ROOT_DIR)/buildroot-$(BR_VER)
 
 .PHONY: usage help clean distclean prepare install-deps all toolchain-params run-tests overlayed-rootfs-%
@@ -127,13 +119,8 @@ $(OUT_DIR)/toolchain-params.mk: $(OUT_DIR)/.config $(SCRIPTS_DIR)/create_toolcha
 	$(CREATE_TOOLCHAIN_PARAMS)
 
 
-# TODO:
-# 1. Remove this bad item after dropping BR2020.02.12 support
-# 2. Elaborate how to compile wireguard-linux-compat under GCC 12 without
-# this patch
+# TODO: Elaborate how to compile wireguard-linux-compat under GCC 12 without this patch
 define remove-patches
-	$(if $(filter $(shell echo $(BR_VER)|cut -d. -f 1),2020),,-rm general/package/all-patches/m4/0003-c-stack-stop-using-SIGSTKSZ.patch)
-
 	$(if $(filter $(BR_VER),2020.02.12 2021.02.12),-rm general/package/all-patches/wireguard-linux-compat/remove_fallthrough.patch)
 endef
 
diff --git a/br-ext-chip-ambarella/board/s3l/kernel/patches/11_fix_yylloc_for_modern_host_compilers.patch b/br-ext-chip-ambarella/board/s3l/kernel/patches/11_fix_yylloc_for_modern_host_compilers.patch
new file mode 120000
index 00000000..a36a16d9
--- /dev/null
+++ b/br-ext-chip-ambarella/board/s3l/kernel/patches/11_fix_yylloc_for_modern_host_compilers.patch
@@ -0,0 +1 @@
+../../../../../patches/linux/3.18.x/fix_yylloc_for_modern_host_compilers.patch
\ No newline at end of file
diff --git a/general/package/all-patches/m4/0003-c-stack-stop-using-SIGSTKSZ.patch b/general/package/all-patches/m4/0003-c-stack-stop-using-SIGSTKSZ.patch
deleted file mode 100644
index 5d8c9d13..00000000
--- a/general/package/all-patches/m4/0003-c-stack-stop-using-SIGSTKSZ.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-c-stack: stop using SIGSTKSZ
-
-It’s been proposed to stop making SIGSTKSZ an integer constant:
-https://sourceware.org/pipermail/libc-alpha/2020-September/118028.html
-Also, using SIGSTKSZ in #if did not conform to current POSIX.
-Also, avoiding SIGSTKSZ makes the code simpler and easier to grok.
-* lib/c-stack.c (SIGSTKSZ): Remove.
-(alternate_signal_stack): Now a 64 KiB array, for simplicity.
-All uses changed.
-
-[Retrieved (and backported) from:
-https://git.savannah.gnu.org/cgit/gnulib.git/patch/?id=f9e2b20a12a230efa30f1d479563ae07d276a94b]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-
---- a/lib/c-stack.c
-+++ b/lib/c-stack.c
-@@ -50,15 +50,16 @@
- #if ! HAVE_STACK_T && ! defined stack_t
- typedef struct sigaltstack stack_t;
- #endif
--#ifndef SIGSTKSZ
--# define SIGSTKSZ 16384
--#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
--/* libsigsegv 2.6 through 2.8 have a bug where some architectures use
--   more than the Linux default of an 8k alternate stack when deciding
--   if a fault was caused by stack overflow.  */
--# undef SIGSTKSZ
--# define SIGSTKSZ 16384
--#endif
-+
-+/* Storage for the alternate signal stack.
-+   64 KiB is not too large for Gnulib-using apps, and is large enough
-+   for all known platforms.  Smaller sizes may run into trouble.
-+   For example, libsigsegv 2.6 through 2.8 have a bug where some
-+   architectures use more than the Linux default of an 8 KiB alternate
-+   stack when deciding if a fault was caused by stack overflow.  */
-+static max_align_t alternate_signal_stack[(64 * 1024
-+                                           + sizeof (max_align_t) - 1)
-+                                          / sizeof (max_align_t)];
- 
- #include <stdlib.h>
- #include <string.h>
-@@ -128,19 +129,6 @@
- #if (HAVE_SIGALTSTACK && HAVE_DECL_SIGALTSTACK \
-      && HAVE_STACK_OVERFLOW_HANDLING) || HAVE_LIBSIGSEGV
- 
--/* Storage for the alternate signal stack.  */
--static union
--{
--  char buffer[SIGSTKSZ];
--
--  /* These other members are for proper alignment.  There's no
--     standard way to guarantee stack alignment, but this seems enough
--     in practice.  */
--  long double ld;
--  long l;
--  void *p;
--} alternate_signal_stack;
--
- static void
- null_action (int signo __attribute__ ((unused)))
- {
-@@ -205,8 +193,8 @@
- 
-   /* Always install the overflow handler.  */
-   if (stackoverflow_install_handler (overflow_handler,
--                                     alternate_signal_stack.buffer,
--                                     sizeof alternate_signal_stack.buffer))
-+                                     alternate_signal_stack,
-+                                     sizeof alternate_signal_stack))
-     {
-       errno = ENOTSUP;
-       return -1;
-@@ -279,14 +267,14 @@
-   stack_t st;
-   struct sigaction act;
-   st.ss_flags = 0;
-+  st.ss_sp = alternate_signal_stack;
-+  st.ss_size = sizeof alternate_signal_stack;
- # if SIGALTSTACK_SS_REVERSED
-   /* Irix mistakenly treats ss_sp as the upper bound, rather than
-      lower bound, of the alternate stack.  */
--  st.ss_sp = alternate_signal_stack.buffer + SIGSTKSZ - sizeof (void *);
--  st.ss_size = sizeof alternate_signal_stack.buffer - sizeof (void *);
--# else
--  st.ss_sp = alternate_signal_stack.buffer;
--  st.ss_size = sizeof alternate_signal_stack.buffer;
-+  st.ss_size -= sizeof (void *);
-+  char *ss_sp = st.ss_sp;
-+  st.ss_sp = ss_sp + st.ss_size;
- # endif
-   r = sigaltstack (&st, NULL);
-   if (r != 0)
---- a/lib/c-stack.h
-+++ b/lib/c-stack.h
-@@ -34,7 +34,7 @@
-    A null ACTION acts like an action that does nothing.
- 
-    ACTION must be async-signal-safe.  ACTION together with its callees
--   must not require more than SIGSTKSZ bytes of stack space.  Also,
-+   must not require more than 64 KiB bytes of stack space.  Also,
-    ACTION should not call longjmp, because this implementation does
-    not guarantee that it is safe to return to the original stack.
- 
diff --git a/general/package/all-patches/rtl8188eu.br2021/8_gcc.patch b/general/package/all-patches/rtl8188eu/8_gcc.patch
similarity index 100%
rename from general/package/all-patches/rtl8188eu.br2021/8_gcc.patch
rename to general/package/all-patches/rtl8188eu/8_gcc.patch