diff --git a/device/testing/linux-jolla-sbj/02_gpu-msm-fix-gcc5-compile.patch b/device/testing/linux-jolla-sbj/02_gpu-msm-fix-gcc5-compile.patch
deleted file mode 100644
index 91b17cd76b7a5fa7dc1dedcf4362edf71082101b..0000000000000000000000000000000000000000
--- a/device/testing/linux-jolla-sbj/02_gpu-msm-fix-gcc5-compile.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-source:
-https://github.com/ShinySide/HispAsian_Lollipop_G6/commit/b7756b6fc4bb728722b14d2dfdbaf1dc843812e9
-
-* These need to be static to avoid these errors:
-
-drivers/built-in.o: In function `.LANCHOR1':
-msm_iommu_sec.c:(.data+0x9298): undefined reference to `kgsl_iommu_sync_lock'
-msm_iommu_sec.c:(.data+0x929c): undefined reference to `kgsl_iommu_sync_unlock'
-Makefile:877: recipe for target '.tmp_vmlinux1' failed
-make: *** [.tmp_vmlinux1] Error 1
-
-Signed-off-by: Chet Kener <Cl3Kener@gmail.com>
-
---- a/drivers/gpu/msm/kgsl_iommu.c
-+++ b/drivers/gpu/msm/kgsl_iommu.c
-@@ -1010,7 +1010,7 @@ static int kgsl_iommu_init_sync_lock(struct kgsl_mmu *mmu)
-  *
-  * Return - int - number of commands.
-  */
--inline unsigned int kgsl_iommu_sync_lock(struct kgsl_mmu *mmu,
-+static inline unsigned int kgsl_iommu_sync_lock(struct kgsl_mmu *mmu,
- 						unsigned int *cmds)
- {
- 	struct kgsl_device *device = mmu->device;
-@@ -1080,7 +1080,7 @@ inline unsigned int kgsl_iommu_sync_lock(struct kgsl_mmu *mmu,
-  *
-  * Return - int - number of commands.
-  */
--inline unsigned int kgsl_iommu_sync_unlock(struct kgsl_mmu *mmu,
-+static inline unsigned int kgsl_iommu_sync_unlock(struct kgsl_mmu *mmu,
- 					unsigned int *cmds)
- {
- 	struct kgsl_device *device = mmu->device;
diff --git a/device/testing/linux-jolla-sbj/APKBUILD b/device/testing/linux-jolla-sbj/APKBUILD
index 1409369b32827777306c8d7e43b2d20b7e2c61d3..dc0723f5c1f0869ead94c3da3fbd7418d82cd412 100644
--- a/device/testing/linux-jolla-sbj/APKBUILD
+++ b/device/testing/linux-jolla-sbj/APKBUILD
@@ -1,16 +1,16 @@
-# Kernel config based on: arch/arm/configs/msm8960_defconfig
+# Kernel config based on: arch/arm/configs/sbj_defconfig
 
 pkgname=linux-jolla-sbj
 pkgver=3.4.108
-pkgrel=2
+pkgrel=3
 pkgdesc="Jolla phone kernel fork"
 arch="armv7"
 _carch="arm"
 _flavor="jolla-sbj"
-url="http://releases.sailfishos.org/sources/3.1.0.11/"
+url="http://releases.sailfishos.org/sources/3.4.0.24/"
 license="GPL2"
 options="!strip !check !tracedeps pmb:cross-native"
-makedepends="perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev devicepkg-dev gcc6 rpm2cpio"
+makedepends="perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev devicepkg-dev rpm2cpio"
 _kbuildver="3.4.108.20200929.1"
 _rpm_wlan_commit="2f37d840cc7f52eb38b0613a832a55b216d89bd5"
 _rpm_adapt_commit="8472b1e422b50fb5aa1ea46231a64db8ab2573dd"
@@ -19,28 +19,19 @@ _rpm_adapt_version="1.11.2"
 _rpm_wlan_file="sbj-wlan-$_rpm_wlan_version.jolla.armv7hl.rpm"
 _rpm_adapt_file="kernel-adaptation-sbj-$_kbuildver-$_rpm_adapt_version.jolla.armv7hl.rpm"
 
-# Compiler: this kernel was only tested with GCC6. Feel free to make a merge
-# request if you find out that it is booting working with newer GCCs as
-# well. See <https://postmarketos.org/vendorkernel> for instructions.
-if [ "${CC:0:5}" != "gcc6-" ]; then
-	CC="gcc6-$CC"
-	HOSTCC="gcc6-gcc"
-	CROSS_COMPILE="gcc6-$CROSS_COMPILE"
-fi
-
 # Source
-_hash="3.1.0.11"
+_hash="3.4.0.24"
 _config="config-$_flavor.$arch"
 source="
 	$pkgname-$_hash.tar.bz2::http://releases.sailfishos.org/sources/$_hash/sailfish-$_hash-oss-adaptation-sbj.tar.bz2
 	$_config
 	01_fix-video-argb-setting.patch
-	02_gpu-msm-fix-gcc5-compile.patch
-	duplicate-return-address-definition.patch
+	linux3.4-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch
+	linux3.4-fix-piggy.gzip.S.patch
 	https://gitlab.com/postmarketeer/jolla-sbj-wlan/-/raw/$_rpm_wlan_commit/$_rpm_wlan_file
 	https://gitlab.com/postmarketeer/jolla-kernel-adaptation-sbj/-/raw/$_rpm_adapt_commit/$_rpm_adapt_file
 "
-_kver="kernel-adaptation-sbj-3.4.108.20190506.1"
+_kver="kernel-adaptation-sbj-3.4.108.20200929.1"
 _kernelarchive="$srcdir/sailfish-$_hash-oss-adaptation-sbj/kernel-adaptation-sbj/$_kver.tar.bz2"
 builddir="$srcdir/$_kver"
 _rpm_mod_path="./lib/modules/$_kbuildver"
@@ -70,6 +61,11 @@ package() {
 
 	downstreamkernel_package "$builddir" "$pkgdir" "$_carch" "$_flavor"
 
+	make -j1 modules_install \
+		ARCH="$_carch" \
+		INSTALL_MOD_STRIP=1 \
+		INSTALL_MOD_PATH="$pkgdir"
+
 	_kernel_release=$(cat $builddir/include/config/kernel.release)
 	for _i in $_files; do
 		install -Dm644 "$_rpm_mod_path/$_i" \
@@ -78,11 +74,11 @@ package() {
 }
 
 sha512sums="
-b43353cb1f5c0205535153515eed0c10ca652fc1b2f28c12a40e8dbce08e304c49991e8c155800711fb0c07012c820a26fbf4c931b9b015994b67b1dc4615ef6  linux-jolla-sbj-3.1.0.11.tar.bz2
-cd008aafd3ae04dbf3f010e893fa2d47169a2045d1706a2f28d5175011da96ca1280a2c73692bb14f2e7452327d2e83f9fdc251997a51c8df9c3f4ae5eb03b10  config-jolla-sbj.armv7
+ad03298a08e068f5301f0672260c5109431a87fe1d2b23b3ae0d5a95bf11ca5de90810d7e491ad225821535e0937fcbb574ac098e9df5fd6b5a30bf997f1e30b  linux-jolla-sbj-3.4.0.24.tar.bz2
+996e1c02920764498a667b310f5a46461627ab0ca8e6f9bd033de5b271294fb33902cb04bfe3db2e07ad04e332b42c075f714f41ab6081bdb232e18b82a69f17  config-jolla-sbj.armv7
 e3083c260ed9c4fc0d83f43106700b6173876dbfae072f6e6696ac6785a4dc17771fbcb3e21601e04ed29a11bf0f7a2a09ad549375e0c34cea245c7f2e2bcbbd  01_fix-video-argb-setting.patch
-7be03a9e78b7ac330a54b1f00509caa0621a95c0c55901878ad757f9dd69cc05ba2c8b5ea987063ae1224f92c4d090d515fa5d369e7755181a4871b0d0f82881  02_gpu-msm-fix-gcc5-compile.patch
-9b15bf1f6cb66f54c785b0af6c9db8a7d63257e6fa3eeb0cbf47284334166aa6a7ff93e1b64ab69206c8047d64641199c0f5fcbc257bbe039263252fff45118e  duplicate-return-address-definition.patch
+9e3b067fa1b19ad02500c4fce1b6142051df3845c508e615788beb650c4f953683107ac2d80670c4e3df38f532e0e91060d2d13ec04c9ec985abd2dfa82e900b  linux3.4-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch
+080745ca4ecaa804ee1df26ea81975ca93b74372e0c08322a6c481e97807495ae6ceb6cc77653afa24f9f2df45da8ebf8e5de6b06037fbb08e0279877ce42188  linux3.4-fix-piggy.gzip.S.patch
 4c582883b609b5cd312b48213ac633e8c65ac3ea310c6016c01da769440f694f42c22f06f13599ce12e9992afe150de364fcaf2f816d9d678d019d00019f007b  sbj-wlan-0.2.7-1.3.6.jolla.armv7hl.rpm
 96e152268ff4f25bd67aadbca9b6059f1dcd076306ca2b9567f439dd42146c1e1cffeea23a90a862e436467eb375c2295078ed6b01490d8baac318faea0d2e12  kernel-adaptation-sbj-3.4.108.20200929.1-1.11.2.jolla.armv7hl.rpm
 "
diff --git a/device/testing/linux-jolla-sbj/config-jolla-sbj.armv7 b/device/testing/linux-jolla-sbj/config-jolla-sbj.armv7
index d1223e3702b4d95ffa00d2f34d7fc72b8e8a2505..81a9e8508eb41233d785815fac01a419166006a7 100644
--- a/device/testing/linux-jolla-sbj/config-jolla-sbj.armv7
+++ b/device/testing/linux-jolla-sbj/config-jolla-sbj.armv7
@@ -920,11 +920,11 @@ CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
 CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
 CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
 # CONFIG_NETFILTER_XT_MATCH_CPU is not set
-# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+CONFIG_NETFILTER_XT_MATCH_DCCP=y
 # CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
 # CONFIG_NETFILTER_XT_MATCH_DSCP is not set
 CONFIG_NETFILTER_XT_MATCH_ECN=y
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+CONFIG_NETFILTER_XT_MATCH_ESP=y
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
 CONFIG_NETFILTER_XT_MATCH_HELPER=y
 CONFIG_NETFILTER_XT_MATCH_HL=y
@@ -946,8 +946,8 @@ CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
 CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
 # CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
 # CONFIG_NETFILTER_XT_MATCH_REALM is not set
-# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
-# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+CONFIG_NETFILTER_XT_MATCH_RECENT=y
+CONFIG_NETFILTER_XT_MATCH_SCTP=y
 CONFIG_NETFILTER_XT_MATCH_SOCKET=y
 CONFIG_NETFILTER_XT_MATCH_STATE=y
 CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
@@ -968,7 +968,7 @@ CONFIG_NF_CONNTRACK_PROC_COMPAT=y
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=y
 CONFIG_IP_NF_MATCH_ECN=y
-# CONFIG_IP_NF_MATCH_RPFILTER is not set
+CONFIG_IP_NF_MATCH_RPFILTER=y
 CONFIG_IP_NF_MATCH_TTL=y
 CONFIG_IP_NF_FILTER=y
 CONFIG_IP_NF_TARGET_REJECT=y
@@ -1006,14 +1006,14 @@ CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
 # CONFIG_IP6_NF_QUEUE is not set
 CONFIG_IP6_NF_IPTABLES=y
-# CONFIG_IP6_NF_MATCH_AH is not set
+CONFIG_IP6_NF_MATCH_AH=y
 # CONFIG_IP6_NF_MATCH_EUI64 is not set
-# CONFIG_IP6_NF_MATCH_FRAG is not set
+CONFIG_IP6_NF_MATCH_FRAG=y
 # CONFIG_IP6_NF_MATCH_OPTS is not set
 # CONFIG_IP6_NF_MATCH_HL is not set
 # CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
-# CONFIG_IP6_NF_MATCH_MH is not set
-# CONFIG_IP6_NF_MATCH_RPFILTER is not set
+CONFIG_IP6_NF_MATCH_MH=y
+CONFIG_IP6_NF_MATCH_RPFILTER=y
 # CONFIG_IP6_NF_MATCH_RT is not set
 # CONFIG_IP6_NF_TARGET_HL is not set
 CONFIG_IP6_NF_FILTER=y
@@ -1199,7 +1199,7 @@ CONFIG_PN544_TEST=y
 #
 CONFIG_UEVENT_HELPER_PATH=""
 CONFIG_DEVTMPFS=y
-# CONFIG_DEVTMPFS_MOUNT is not set
+CONFIG_DEVTMPFS_MOUNT=y
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
diff --git a/device/testing/linux-jolla-sbj/duplicate-return-address-definition.patch b/device/testing/linux-jolla-sbj/duplicate-return-address-definition.patch
deleted file mode 100644
index 3f2f6818695a6bd7b18e0cf08c3d1b22f2ce26d0..0000000000000000000000000000000000000000
--- a/device/testing/linux-jolla-sbj/duplicate-return-address-definition.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aeea3592a13bf12861943e44fc48f1f270941f8d Mon Sep 17 00:00:00 2001
-From: Behan Webster <behanw@converseincode.com>
-Date: Wed, 24 Sep 2014 01:06:46 +0100
-Subject: [PATCH] ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h
-
-With compilers which follow the C99 standard (like modern versions of gcc and
-clang), "extern inline" does the wrong thing (emits code for an externally
-linkable version of the inline function). In this case using static inline
-and removing the NULL version of return_address in return_address.c does
-the right thing.
-
-Signed-off-by: Behan Webster <behanw@converseincode.com>
-Reviewed-by: Mark Charlebois <charlebm@gmail.com>
-Acked-by: Steven Rostedt <rostedt@goodmis.org>
-Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
----
- arch/arm/include/asm/ftrace.h    | 2 +-
- arch/arm/kernel/return_address.c | 5 -----
- 2 files changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h
-index 39eb16b0066f2..bfe2a2f5a644e 100644
---- a/arch/arm/include/asm/ftrace.h
-+++ b/arch/arm/include/asm/ftrace.h
-@@ -45,7 +45,7 @@ void *return_address(unsigned int);
- 
- #else
- 
--extern inline void *return_address(unsigned int level)
-+static inline void *return_address(unsigned int level)
- {
- 	return NULL;
- }
-diff --git a/arch/arm/kernel/return_address.c b/arch/arm/kernel/return_address.c
-index fafedd86885dd..f6aa84d5b93c9 100644
---- a/arch/arm/kernel/return_address.c
-+++ b/arch/arm/kernel/return_address.c
-@@ -63,11 +63,6 @@ void *return_address(unsigned int level)
- #warning "TODO: return_address should use unwind tables"
- #endif
- 
--void *return_address(unsigned int level)
--{
--	return NULL;
--}
--
- #endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) / else */
- 
- EXPORT_SYMBOL_GPL(return_address);
-
diff --git a/device/testing/linux-jolla-sbj/linux3.4-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch b/device/testing/linux-jolla-sbj/linux3.4-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch
new file mode 120000
index 0000000000000000000000000000000000000000..858243081cb98fc22ac452f272f2268c18c7bf22
--- /dev/null
+++ b/device/testing/linux-jolla-sbj/linux3.4-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch
@@ -0,0 +1 @@
+../../.shared-patches/linux/linux3.4-ARM-8933-1-replace-Sun-Solaris-style-flag-on-section.patch
\ No newline at end of file
diff --git a/device/testing/linux-jolla-sbj/linux3.4-fix-piggy.gzip.S.patch b/device/testing/linux-jolla-sbj/linux3.4-fix-piggy.gzip.S.patch
new file mode 120000
index 0000000000000000000000000000000000000000..e5975978e20d52cb6fc433157a42e502385820a6
--- /dev/null
+++ b/device/testing/linux-jolla-sbj/linux3.4-fix-piggy.gzip.S.patch
@@ -0,0 +1 @@
+../../.shared-patches/linux/linux3.4-fix-piggy.gzip.S.patch
\ No newline at end of file