From 1f675ae3f390b0f1c0428394dcac2a0880c0b913 Mon Sep 17 00:00:00 2001 From: rsuntk Date: Tue, 11 Mar 2025 12:01:52 +0000 Subject: [PATCH 01/10] crypto: arm64/aes-modes: Import from https://github.com/itejo443/android_kernel_samsung_sm7225/blob/ksm/arch/arm64/crypto/aes-modes.S Signed-off-by: rsuntk --- arch/arm64/crypto/aes-modes.S | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/arch/arm64/crypto/aes-modes.S b/arch/arm64/crypto/aes-modes.S index 496c243de..96eac9fda 100755 --- a/arch/arm64/crypto/aes-modes.S +++ b/arch/arm64/crypto/aes-modes.S @@ -232,19 +232,17 @@ AES_ENTRY(aes_ctr_encrypt) bmi .Lctr1x cmn w6, #4 /* 32 bit overflow? */ bcs .Lctr1x - add w7, w6, #1 + ldr q8, .Laddends /* addends 1,2,3[,0] */ + dup v7.4s, w6 mov v0.16b, v4.16b - add w8, w6, #2 + add v7.4s, v7.4s, v8.4s mov v1.16b, v4.16b - add w9, w6, #3 + rev32 v8.16b, v7.16b mov v2.16b, v4.16b - rev w7, w7 mov v3.16b, v4.16b - rev w8, w8 - mov v1.s[3], w7 - rev w9, w9 - mov v2.s[3], w8 - mov v3.s[3], w9 + mov v1.s[3], v8.s[0] + mov v2.s[3], v8.s[1] + mov v3.s[3], v8.s[2] ld1 {v5.16b-v7.16b}, [x20], #48 /* get 3 input blocks */ bl aes_encrypt_block4x eor v0.16b, v5.16b, v0.16b @@ -297,6 +295,12 @@ AES_ENTRY(aes_ctr_encrypt) rev x7, x7 ins v4.d[0], x7 b .Lctrcarrydone + +.Laddends: + .word 0x00000001 + .word 0x00000002 + .word 0x00000003 + .word 0x00000000 AES_ENDPROC(aes_ctr_encrypt) .ltorg @@ -517,4 +521,4 @@ AES_ENTRY(aes_mac_update) ld1 {v0.16b}, [x23] /* get dg */ enc_prepare w21, x20, x0 b .Lmacloop4x -AES_ENDPROC(aes_mac_update) +AES_ENDPROC(aes_mac_update) \ No newline at end of file From 16bf62e099fb13447c079493570a00d7f5e1b0f1 Mon Sep 17 00:00:00 2001 From: rsuntk Date: Tue, 11 Mar 2025 12:08:02 +0000 Subject: [PATCH 02/10] techpack: audio: Do not inject BUILD_TIMESTAMP Signed-off-by: rsuntk --- techpack/audio/asoc/Kbuild | 5 +---- techpack/audio/asoc/codecs/Kbuild | 5 +---- techpack/audio/asoc/codecs/aqt1000/Kbuild | 5 +---- techpack/audio/asoc/codecs/bolero/Kbuild | 5 +---- techpack/audio/asoc/codecs/csra66x0/Kbuild | 5 +---- techpack/audio/asoc/codecs/ep92/Kbuild | 5 +---- techpack/audio/asoc/codecs/msm_sdw/Kbuild | 5 +---- techpack/audio/asoc/codecs/rouleur/Kbuild | 5 +---- techpack/audio/asoc/codecs/sdm660_cdc/Kbuild | 5 +---- techpack/audio/asoc/codecs/tas256x/Kbuild | 5 +---- techpack/audio/asoc/codecs/wcd934x/Kbuild | 5 +---- techpack/audio/asoc/codecs/wcd937x/Kbuild | 5 +---- techpack/audio/asoc/codecs/wcd938x/Kbuild | 5 +---- techpack/audio/asoc/codecs/wsa883x/Kbuild | 3 --- techpack/audio/dsp/Kbuild | 5 +---- techpack/audio/dsp/codecs/Kbuild | 3 --- techpack/audio/ipc/Kbuild | 5 +---- techpack/audio/soc/Kbuild | 5 +---- 18 files changed, 16 insertions(+), 70 deletions(-) diff --git a/techpack/audio/asoc/Kbuild b/techpack/audio/asoc/Kbuild index f31dd330c..8024a65f2 100755 --- a/techpack/audio/asoc/Kbuild +++ b/techpack/audio/asoc/Kbuild @@ -327,7 +327,4 @@ obj-$(CONFIG_SND_SOC_INT_CODEC) += machine_dlkm.o machine_dlkm-y := $(MACHINE_OBJS) obj-$(CONFIG_SND_SOC_CPE) += cpe_lsm_dlkm.o -cpe_lsm_dlkm-y := $(CPE_LSM_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +cpe_lsm_dlkm-y := $(CPE_LSM_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/Kbuild b/techpack/audio/asoc/codecs/Kbuild index 94257b9eb..e88aedc14 100755 --- a/techpack/audio/asoc/codecs/Kbuild +++ b/techpack/audio/asoc/codecs/Kbuild @@ -288,7 +288,4 @@ obj-$(CONFIG_SND_SOC_WCD_MBHC) += mbhc_dlkm.o mbhc_dlkm-y := $(MBHC_OBJS) obj-$(CONFIG_SND_SOC_MSM_HDMI_CODEC_RX) += hdmi_dlkm.o -hdmi_dlkm-y := $(HDMICODEC_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +hdmi_dlkm-y := $(HDMICODEC_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/aqt1000/Kbuild b/techpack/audio/asoc/codecs/aqt1000/Kbuild index 475d9fdc1..34e566e1c 100755 --- a/techpack/audio/asoc/codecs/aqt1000/Kbuild +++ b/techpack/audio/asoc/codecs/aqt1000/Kbuild @@ -114,7 +114,4 @@ endif # Module information used by KBuild framework obj-$(CONFIG_SND_SOC_AQT1000) += aqt1000_cdc_dlkm.o -aqt1000_cdc_dlkm-y := $(AQT1000_CDC_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +aqt1000_cdc_dlkm-y := $(AQT1000_CDC_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/bolero/Kbuild b/techpack/audio/asoc/codecs/bolero/Kbuild index e3e1038a0..c26b2cb65 100755 --- a/techpack/audio/asoc/codecs/bolero/Kbuild +++ b/techpack/audio/asoc/codecs/bolero/Kbuild @@ -151,7 +151,4 @@ obj-$(CONFIG_TX_MACRO) += tx_macro_dlkm.o tx_macro_dlkm-y := $(TX_OBJS) obj-$(CONFIG_RX_MACRO) += rx_macro_dlkm.o -rx_macro_dlkm-y := $(RX_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +rx_macro_dlkm-y := $(RX_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/csra66x0/Kbuild b/techpack/audio/asoc/codecs/csra66x0/Kbuild index c04797316..219f6ce42 100755 --- a/techpack/audio/asoc/codecs/csra66x0/Kbuild +++ b/techpack/audio/asoc/codecs/csra66x0/Kbuild @@ -99,7 +99,4 @@ endif # Module information used by KBuild framework obj-$(CONFIG_SND_SOC_CSRA66X0) += csra66x0_dlkm.o -csra66x0_dlkm-y := $(CSRA66X0_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +csra66x0_dlkm-y := $(CSRA66X0_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/ep92/Kbuild b/techpack/audio/asoc/codecs/ep92/Kbuild index e526eff8d..8fc74da72 100755 --- a/techpack/audio/asoc/codecs/ep92/Kbuild +++ b/techpack/audio/asoc/codecs/ep92/Kbuild @@ -100,7 +100,4 @@ endif # Module information used by KBuild framework obj-$(CONFIG_SND_SOC_EP92) += ep92_dlkm.o -ep92_dlkm-y := $(EP92_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +ep92_dlkm-y := $(EP92_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/msm_sdw/Kbuild b/techpack/audio/asoc/codecs/msm_sdw/Kbuild index 39e5eb600..c086ec420 100755 --- a/techpack/audio/asoc/codecs/msm_sdw/Kbuild +++ b/techpack/audio/asoc/codecs/msm_sdw/Kbuild @@ -118,7 +118,4 @@ endif # Module information used by KBuild framework obj-$(CONFIG_SND_SOC_MSM_SDW) += msm_sdw_dlkm.o -msm_sdw_dlkm-y := $(MSM_SDW_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +msm_sdw_dlkm-y := $(MSM_SDW_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/rouleur/Kbuild b/techpack/audio/asoc/codecs/rouleur/Kbuild index 78dd1d767..1e41ef4bc 100755 --- a/techpack/audio/asoc/codecs/rouleur/Kbuild +++ b/techpack/audio/asoc/codecs/rouleur/Kbuild @@ -114,7 +114,4 @@ obj-$(CONFIG_SND_SOC_ROULEUR_SLAVE) += rouleur_slave_dlkm.o rouleur_slave_dlkm-y := $(ROULEUR_SLAVE_OBJS) obj-$(CONFIG_PM2250_SPMI) += pm2250_spmi_dlkm.o -pm2250_spmi_dlkm-y := $(PM2250_SPMI_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +pm2250_spmi_dlkm-y := $(PM2250_SPMI_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/sdm660_cdc/Kbuild b/techpack/audio/asoc/codecs/sdm660_cdc/Kbuild index 8467a4ebc..6ec566348 100755 --- a/techpack/audio/asoc/codecs/sdm660_cdc/Kbuild +++ b/techpack/audio/asoc/codecs/sdm660_cdc/Kbuild @@ -131,7 +131,4 @@ obj-$(CONFIG_SND_SOC_DIGITAL_CDC) += digital_cdc_dlkm.o digital_cdc_dlkm-y := $(DIGITAL_CDC_OBJS) obj-$(CONFIG_SND_SOC_DIGITAL_CDC_LEGACY) += digital_cdc_dlkm.o -digital_cdc_dlkm-y := $(DIGITAL_CDC_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +digital_cdc_dlkm-y := $(DIGITAL_CDC_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/tas256x/Kbuild b/techpack/audio/asoc/codecs/tas256x/Kbuild index 0b1bd17aa..a73af0a04 100755 --- a/techpack/audio/asoc/codecs/tas256x/Kbuild +++ b/techpack/audio/asoc/codecs/tas256x/Kbuild @@ -148,7 +148,4 @@ endif # Module information used by KBuild framework obj-$(CONFIG_SND_SOC_TAS256x) += tas256x_dlkm.o -tas256x_dlkm-y := $(TAS256x_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +tas256x_dlkm-y := $(TAS256x_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/wcd934x/Kbuild b/techpack/audio/asoc/codecs/wcd934x/Kbuild index bd5d828e3..d170bda1b 100755 --- a/techpack/audio/asoc/codecs/wcd934x/Kbuild +++ b/techpack/audio/asoc/codecs/wcd934x/Kbuild @@ -120,7 +120,4 @@ endif # Module information used by KBuild framework obj-$(CONFIG_SND_SOC_WCD934X) += wcd934x_dlkm.o -wcd934x_dlkm-y := $(WCD934X_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +wcd934x_dlkm-y := $(WCD934X_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/wcd937x/Kbuild b/techpack/audio/asoc/codecs/wcd937x/Kbuild index 880c91b0e..00e3eaefd 100755 --- a/techpack/audio/asoc/codecs/wcd937x/Kbuild +++ b/techpack/audio/asoc/codecs/wcd937x/Kbuild @@ -122,7 +122,4 @@ obj-$(CONFIG_SND_SOC_WCD937X) += wcd937x_dlkm.o wcd937x_dlkm-y := $(WCD937X_OBJS) obj-$(CONFIG_SND_SOC_WCD937X_SLAVE) += wcd937x_slave_dlkm.o -wcd937x_slave_dlkm-y := $(WCD937X_SLAVE_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +wcd937x_slave_dlkm-y := $(WCD937X_SLAVE_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/wcd938x/Kbuild b/techpack/audio/asoc/codecs/wcd938x/Kbuild index e7bbe10c0..f9bf26a08 100755 --- a/techpack/audio/asoc/codecs/wcd938x/Kbuild +++ b/techpack/audio/asoc/codecs/wcd938x/Kbuild @@ -110,7 +110,4 @@ obj-$(CONFIG_SND_SOC_WCD938X) += wcd938x_dlkm.o wcd938x_dlkm-y := $(WCD938X_OBJS) obj-$(CONFIG_SND_SOC_WCD938X_SLAVE) += wcd938x_slave_dlkm.o -wcd938x_slave_dlkm-y := $(WCD938X_SLAVE_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +wcd938x_slave_dlkm-y := $(WCD938X_SLAVE_OBJS) \ No newline at end of file diff --git a/techpack/audio/asoc/codecs/wsa883x/Kbuild b/techpack/audio/asoc/codecs/wsa883x/Kbuild index 900f49da5..9e0fb45f6 100755 --- a/techpack/audio/asoc/codecs/wsa883x/Kbuild +++ b/techpack/audio/asoc/codecs/wsa883x/Kbuild @@ -106,6 +106,3 @@ endif # Module information used by KBuild framework obj-$(CONFIG_SND_SOC_WSA883X) += wsa883x_dlkm.o wsa883x_dlkm-y := $(WSA883X_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" diff --git a/techpack/audio/dsp/Kbuild b/techpack/audio/dsp/Kbuild index 646eb7f21..26c623143 100755 --- a/techpack/audio/dsp/Kbuild +++ b/techpack/audio/dsp/Kbuild @@ -280,7 +280,4 @@ obj-$(CONFIG_MSM_QDSP6_PDR) += q6_pdr_dlkm.o q6_pdr_dlkm-y := $(QDSP6_PDR_OBJS) obj-$(CONFIG_MSM_QDSP6_NOTIFIER) += q6_notifier_dlkm.o -q6_notifier_dlkm-y := $(QDSP6_NOTIFIER_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +q6_notifier_dlkm-y := $(QDSP6_NOTIFIER_OBJS) \ No newline at end of file diff --git a/techpack/audio/dsp/codecs/Kbuild b/techpack/audio/dsp/codecs/Kbuild index 192b913dd..5a00ed474 100755 --- a/techpack/audio/dsp/codecs/Kbuild +++ b/techpack/audio/dsp/codecs/Kbuild @@ -176,6 +176,3 @@ endif # Module information used by KBuild framework obj-$(CONFIG_MSM_QDSP6V2_CODECS) += native_dlkm.o native_dlkm-y := $(NATIVE_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" diff --git a/techpack/audio/ipc/Kbuild b/techpack/audio/ipc/Kbuild index 45af3fbb7..3bc742e1f 100755 --- a/techpack/audio/ipc/Kbuild +++ b/techpack/audio/ipc/Kbuild @@ -204,7 +204,4 @@ obj-$(CONFIG_MSM_QDSP6_APRV2_VM) += apr_dlkm.o apr_dlkm-y := $(APRV_GLINK) obj-$(CONFIG_WCD_DSP_GLINK) += wglink_dlkm.o -wglink_dlkm-y := $(WDSP_GLINK) - -# inject some build related information -CDEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +wglink_dlkm-y := $(WDSP_GLINK) \ No newline at end of file diff --git a/techpack/audio/soc/Kbuild b/techpack/audio/soc/Kbuild index bceb59602..f4f86c260 100755 --- a/techpack/audio/soc/Kbuild +++ b/techpack/audio/soc/Kbuild @@ -225,7 +225,4 @@ obj-$(CONFIG_SOUNDWIRE_MSTR_CTRL) += swr_ctrl_dlkm.o swr_ctrl_dlkm-y := $(SWR_CTRL_OBJS) obj-$(CONFIG_WCD_SPI_AC) += wcd_spi_acc_ctl_dlkm.o -wcd_spi_acc_ctl_dlkm-y := $(WCD_SPI_ACC_CTL_OBJS) - -# inject some build related information -DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\" +wcd_spi_acc_ctl_dlkm-y := $(WCD_SPI_ACC_CTL_OBJS) \ No newline at end of file From 5da0667ce0b7415930cb0788bb0831d8cc1746ac Mon Sep 17 00:00:00 2001 From: Rissu <90097027+rsuntk@users.noreply.github.com> Date: Tue, 11 Mar 2025 19:18:30 +0700 Subject: [PATCH 03/10] Build: Import Rissu's build scripts --- build.sh | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 build.sh diff --git a/build.sh b/build.sh new file mode 100644 index 000000000..0e7c521d2 --- /dev/null +++ b/build.sh @@ -0,0 +1,307 @@ +#! /usr/bin/env bash + +# +# Rissu Kernel Project +# A special build script for Rissu's kernel +# + +# << If unset, you can override if u want +[ -z $IS_CI ] && IS_CI=false +[ -z $DO_CLEAN ] && DO_CLEAN=false +[ -z $LTO ] && LTO=none +[ -z $DEFAULT_KSU_REPO ] && DEFAULT_KSU_REPO="https://raw.githubusercontent.com/rsuntk/KernelSU/main/kernel/setup.sh" +[ -z $DEFAULT_KSU_BRANCH ] && DEFAULT_KSU_BRANCH="main" +[ -z $DEFAULT_AK3_REPO ] && DEFAULT_AK3_REPO="https://github.com/rsuntk/AnyKernel3.git" +[ -z $DEVICE ] && DEVICE="A235F" +[ -z $IMAGE ] && IMAGE="$(pwd)/out/arch/arm64/boot/Image" + +# special rissu's path. linked to his toolchains +if [ -d /rsuntk ]; then + export CROSS_COMPILE=/rsuntk/toolchains/google/bin/aarch64-linux-android- + export PATH=/rsuntk/toolchains/clang-12/bin:$PATH +fi +# color variable +N='\033[0m' +R='\033[1;31m' +G='\033[1;32m' + +# start of default args +DEFAULT_ARGS=" +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_BUILD_ARM64_DT_OVERLAY=y +ARCH=arm64 +KCFLAGS=-w +" +export ARCH=arm64 +export CLANG_TRIPLE=aarch64-linux-gnu- +export DTC_EXT=$(pwd)/tools/dtc +# end of default args + +pr_invalid() { + echo -e "[-] Invalid args: $@" + exit +} +pr_err() { + echo -e "[-] $@" + exit +} +pr_info() { + echo -e "[+] $@" +} +pr_step() { + echo "[$1 / $2] $3" + sleep 2 +} +strip() { # fmt: strip + llvm-strip $@ --strip-unneeded +} +setconfig() { # fmt: setconfig enable/disable + [ -e $(pwd)/.config ] && config_file="$(pwd)/.config" || config_file="$(pwd)/out/.config" + if [ -d $(pwd)/scripts ]; then + [ "$1" = "enable" ] && pr_info "Enabling CONFIG_`echo $2` .." || pr_info "Disabling CONFIG_`echo $2`" + chmod +x ./scripts/config && ./scripts/config --file `echo $config_file` --`echo $1` CONFIG_`echo $2` + else + echo "! Folder scripts not found!" + exit + fi +} +clone_ak3() { + [ ! -d $(pwd)/AnyKernel3 ] && git clone $DEFAULT_AK3_REPO --depth=1 -b general + rm -rf AnyKernel3/.git +} +gen_getutsrelease() { +# generate simple c file +if [ ! -e utsrelease.c ]; then +echo "/* Generated file by `basename $0` */ +#include +#ifdef __OUT__ +#include \"out/include/generated/utsrelease.h\" +#else +#include \"include/generated/utsrelease.h\" +#endif + +char utsrelease[] = UTS_RELEASE; + +int main() { + printf(\"%s\n\", utsrelease); + return 0; +}" > utsrelease.c +fi +} +usage() { + echo -e "Usage: bash `basename $0` <-j | --jobs> <(job_count)> " + printf "\tbuild_target: dirty, kernel, defconfig, clean\n" + printf "\t-j or --jobs: \n" + echo "" + printf "NOTE: Run: \texport CROSS_COMPILE=\"\"\n" + printf "\t\texport PATH=\"\"\n" + printf "before running this script!\n" + printf "\n" + printf "Misc:\n" + printf "\tPOST_BUILD_CLEAN: Clean post build: (opt:boolean)\n" + printf "\tLTO: Use Link-time Optimization; options: (opt: none, thin, full)\n" + printf "\tLLVM: Use all llvm toolchains to build: (opt: 1)\n" + printf "\tLLVM_IAS: Use llvm integrated assembler: (opt: 1)\n" + exit; +} + +pr_post_build() { + echo "" + [ "$@" = "failed" ] && echo -e "${R}#### Failed to build some targets ($1) ####${N}" || echo -e "${G}#### Build completed at `date` ####${N}" + echo "" + echo "=======================================================" + [ -e $IMAGE ] && strings $IMAGE | grep "Linux version" || exit + echo "=======================================================" +} + +# if first arg starts with "clean" +if [[ "$1" = "clean" ]]; then + [ $# -gt 1 ] && pr_err "Excess argument, only need one argument." + pr_info "Cleaning dirs" + if [ -d $(pwd)/out ]; then + rm -rf out + elif [ -f $(pwd)/.config ]; then + make clean + make mrproper + else + pr_err "No need clean." + fi + pr_err "All clean." +elif [[ "$1" = "dirty" ]]; then + if [ $# -gt 3 ]; then + pr_err "Excess argument, only need three argument." + fi + pr_info "Starting dirty build" + FIRST_JOB="$2" + JOB_COUNT="$3" + if [ "$FIRST_JOB" = "-j" ] || [ "$FIRST_JOB" = "--jobs" ]; then + if [ ! -z $JOB_COUNT ]; then + ALLOC_JOB=$JOB_COUNT + else + pr_invalid $3 + fi + else + pr_invalid $2 + fi + make -j`echo $ALLOC_JOB` -C $(pwd) O=$(pwd)/out `echo $DEFAULT_ARGS` + [ ! -e $IMAGE ] && pr_post_build "failed" || pr_post_build "completed" +elif [[ "$1" = "ak3" ]]; then + if [ $# -gt 1 ]; then + pr_err "Excess argument, only need one argument." + fi + clone_ak3; +else + [ $# != 4 ] && usage; +fi + +[ "$KERNELSU" = "true" ] && curl -LSs $DEFAULT_KSU_REPO | bash -s `echo $DEFAULT_KSU_BRANCH` || pr_info "KernelSU is disabled. Add 'KERNELSU=true' or 'export KERNELSU=true' to enable" + +BUILD_TARGET="$1" +FIRST_JOB="$2" +JOB_COUNT="$3" +DEFCONFIG="$4" + +if [ "$BUILD_TARGET" = "kernel" ]; then + BUILD="kernel" +elif [ "$BUILD_TARGET" = "defconfig" ]; then + BUILD="defconfig" +else + pr_invalid $1 +fi + +if [ "$FIRST_JOB" = "-j" ] || [ "$FIRST_JOB" = "--jobs" ]; then + if [ ! -z $JOB_COUNT ]; then + ALLOC_JOB=$JOB_COUNT + else + pr_invalid $3 + fi +else + pr_invalid $2 +fi + +if [ ! -z "$DEFCONFIG" ]; then + BUILD_DEFCONFIG="$DEFCONFIG" +else + pr_invalid $4 +fi + +if [ "$LLVM" = "1" ]; then + LLVM_="true" + DEFAULT_ARGS+=" LLVM=1" + export LLVM=1 + if [ "$LLVM_IAS" = "1" ]; then + LLVM_IAS_="true" + DEFAULT_ARGS+=" LLVM_IAS=1" + export LLVM_IAS=1 + fi +else + LLVM_="false" + if [ "$LLVM_IAS" != "1" ]; then + LLVM_IAS_="false" + fi +fi + +pr_sum() { + [ -z $KBUILD_BUILD_USER ] && KBUILD_BUILD_USER="`whoami`" + [ -z $KBUILD_BUILD_HOST ] && KBUILD_BUILD_HOST="`uname -n`" + pr_step "1" "3" "Starting build with Rissu's build script ..." + echo "=======================================================" + echo -e "Host Arch: `uname -m`" + echo -e "Host Kernel: `uname -r`" + echo -e "Host GNUMake: `make -v | grep -e "GNU Make"`" + echo -e "Kernel builder user: $KBUILD_BUILD_USER" + echo -e "Kernel builder host: $KBUILD_BUILD_HOST" + echo -e "Linux version: `make kernelversion`" + echo -e "Build date: `date`" + echo -e "Build target: `echo $BUILD`" + echo -e "Build arch: $ARCH" + echo -e "Target Defconfig: $BUILD_DEFCONFIG" + echo -e "Allocated core(s): $ALLOC_JOB" + echo -e "LTO: $LTO" + echo "=======================================================" +} + +post_build_clean() { + if [ -e $AK3 ]; then + rm -rf $AK3/Image + rm -rf $AK3/modules/vendor/lib/modules/*.ko + #sed -i "s/do\.modules=.*/do.modules=0/" "$(pwd)/AnyKernel3/anykernel.sh" + echo "stub" > $AK3/modules/vendor/lib/modules/stub + fi + rm getutsrel + rm utsrelease.c + # clean out folder + rm -rf out + make clean + make mrproper +} + +post_build() { + if [ -d $(pwd)/.git ]; then + GITSHA=$(git rev-parse --short HEAD) + else + GITSHA="localbuild" + fi + + AK3="$(pwd)/AnyKernel3" + DATE=$(date +'%Y%m%d%H%M%S') + ZIP_FMT="AnyKernel3-`echo $DEVICE`_$GITSHA-$DATE" + + clone_ak3; + if [ -d $AK3 ]; then + echo "- Creating AnyKernel3" + gen_getutsrelease; + [ -d $(pwd)/out ] && gcc -D__OUT__ -CC utsrelease.c -o getutsrel || gcc -CC utsrelease.c -o getutsrel + UTSRELEASE=$(./getutsrel) + sed -i "s/kernel\.string=.*/kernel.string=$UTSRELEASE/" "$AK3/anykernel.sh" + #sed -i "s/BLOCK=.*/BLOCK=\/dev\/block\/platform\/12100000.dwmmc0\/by-name\/boot;/" "$AK3/anykernel.sh" + cp $IMAGE $AK3 + cd $AK3 + zip -r9 ../`echo $ZIP_FMT`.zip * + # CI will clean itself post-build, so we don't need to clean + # Also avoiding small AnyKernel3 zip issue! + if [ "$IS_CI" != "true" ] && [ "$DO_CLEAN" = "true" ]; then + pr_info "Host is not Automated CI, cleaning dirs" + post_build_clean; + fi + cd .. + pr_step "3" "3" "Build script ended." + fi +} + +handle_lto() { + if [[ "$LTO" = "thin" ]]; then + pr_info "LTO: Thin" + setconfig disable LTO_NONE + setconfig enable LTO + setconfig enable THINLTO + setconfig enable LTO_CLANG + setconfig enable ARCH_SUPPORTS_LTO_CLANG + setconfig enable ARCH_SUPPORTS_THINLTO + elif [[ "$LTO" = "full" ]]; then + pr_info "LTO: Full" + setconfig disable LTO_NONE + setconfig enable LTO + setconfig disable THINLTO + setconfig enable LTO_CLANG + setconfig enable ARCH_SUPPORTS_LTO_CLANG + setconfig enable ARCH_SUPPORTS_THINLTO + fi +} +# call summary +pr_sum +if [ "$BUILD" = "kernel" ]; then + pr_step "2" "3" "Building targets ($BUILD) with lto=$LTO @ $ALLOC_JOB job(s)" + make -j`echo $ALLOC_JOB` -C $(pwd) O=$(pwd)/out `echo $DEFAULT_ARGS` `echo $BUILD_DEFCONFIG` + [ "$KERNELSU" = "true" ] && setconfig enable KSU + [ "$LTO" != "none" ] && handle_lto || pr_info "LTO not set"; + make -j`echo $ALLOC_JOB` -C $(pwd) O=$(pwd)/out `echo $DEFAULT_ARGS` + if [ -e $IMAGE ]; then + pr_post_build "completed" + post_build + else + pr_post_build "failed" + fi +elif [ "$BUILD" = "defconfig" ]; then + make -j`echo $ALLOC_JOB` -C $(pwd) O=$(pwd)/out `echo $DEFAULT_ARGS` `echo $BUILD_DEFCONFIG` +fi From c32d81e08c5e3e4505ad3bda691dcabad19c957d Mon Sep 17 00:00:00 2001 From: rsuntk Date: Tue, 11 Mar 2025 13:49:13 +0000 Subject: [PATCH 04/10] staging: Include qcacld-3.0 Kconfigs Signed-off-by: rsuntk --- drivers/staging/Kconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig index e401ecb45..6029c43eb 100755 --- a/drivers/staging/Kconfig +++ b/drivers/staging/Kconfig @@ -124,4 +124,6 @@ source "drivers/staging/gasket/Kconfig" source "drivers/staging/axis-fifo/Kconfig" +source "drivers/staging/qcacld-3.0/Kconfig" + endif # STAGING From 032c56014f561357a5ae7d64e373f5d0ee6e21f9 Mon Sep 17 00:00:00 2001 From: rsuntk Date: Tue, 11 Mar 2025 13:52:05 +0000 Subject: [PATCH 05/10] defconfig: Enable LTO Thin by default Signed-off-by: rsuntk --- arch/arm64/configs/rsuntk_defconfig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/arm64/configs/rsuntk_defconfig b/arch/arm64/configs/rsuntk_defconfig index be112104a..a833fd683 100755 --- a/arch/arm64/configs/rsuntk_defconfig +++ b/arch/arm64/configs/rsuntk_defconfig @@ -634,7 +634,10 @@ CONFIG_STACKPROTECTOR=y CONFIG_STACKPROTECTOR_STRONG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_THINLTO=y -CONFIG_LTO_NONE=y +# CONFIG_LTO_NONE is not set +CONFIG_LTO=y +CONFIG_THINLTO=y +CONFIG_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y # CONFIG_SHADOW_CALL_STACK is not set CONFIG_HAVE_CONTEXT_TRACKING=y From d8b5868b6213624d2409d9ff40f6ad5b5ed46d37 Mon Sep 17 00:00:00 2001 From: Diab Neiroukh Date: Sat, 28 Jan 2023 23:06:24 +0100 Subject: [PATCH 06/10] kbuild: Add support for Clang's polyhedral loop optimizer * Default N --- Makefile | 15 +++++++++++++++ arch/Kconfig | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/Makefile b/Makefile index ea1e01e57..45458a8de 100755 --- a/Makefile +++ b/Makefile @@ -721,6 +721,21 @@ KBUILD_CFLAGS += $(call cc-option,-fno-reorder-blocks,) \ $(call cc-option,-fno-partial-inlining) endif +ifdef CONFIG_LLVM_POLLY +KBUILD_CFLAGS += -mllvm -polly \ + -mllvm -polly-ast-use-context \ + -mllvm -polly-invariant-load-hoisting \ + -mllvm -polly-run-inliner \ + -mllvm -polly-vectorizer=stripmine +# Polly may optimise loops with dead paths beyound what the linker +# # can understand. This may negate the effect of the linker's DCE +# # so we tell Polly to perfom proven DCE on the loops it optimises +# # in order to preserve the overall effect of the linker's DCE. +ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION +KBUILD_CFLAGS += -mllvm -polly-run-dce +endif +endif + ifneq ($(CONFIG_FRAME_WARN),0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif diff --git a/arch/Kconfig b/arch/Kconfig index 8a5149f87..cb54b5c44 100755 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -594,6 +594,15 @@ config SHADOW_CALL_STACK_VMAP provides better stack exhaustion protection, but increases per-thread memory consumption as a full page is allocated for each shadow stack. +config LLVM_POLLY + bool "Enable LLVM's polyhedral loop optimizer (Polly)" + default n + help + This option enables LLVM's polyhedral loop optimizer known as Polly. + Polly is able to optimize various loops throughout the kernel for + maximum cache locality. This requires an LLVM toolchain explicitly + compiled with Polly support. + config HAVE_ARCH_WITHIN_STACK_FRAMES bool help From efaff8ad3f580a9c9edd641719df6682f7e5a287 Mon Sep 17 00:00:00 2001 From: rsuntk Date: Tue, 11 Mar 2025 13:55:35 +0000 Subject: [PATCH 07/10] defconfig: Enable LLVM_POLLY Signed-off-by: rsuntk --- arch/arm64/configs/rsuntk_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/configs/rsuntk_defconfig b/arch/arm64/configs/rsuntk_defconfig index a833fd683..f0f2d37fb 100755 --- a/arch/arm64/configs/rsuntk_defconfig +++ b/arch/arm64/configs/rsuntk_defconfig @@ -640,6 +640,7 @@ CONFIG_THINLTO=y CONFIG_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y # CONFIG_SHADOW_CALL_STACK is not set +CONFIG_LLVM_POLLY=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y From 1b2610e01afc6c2101d2a71d7f1df4d46f82373e Mon Sep 17 00:00:00 2001 From: Rissu <90097027+rsuntk@users.noreply.github.com> Date: Fri, 14 Mar 2025 19:42:42 +0700 Subject: [PATCH 08/10] defconfig: Disable LTO and POLLY --- arch/arm64/configs/rsuntk_defconfig | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/arch/arm64/configs/rsuntk_defconfig b/arch/arm64/configs/rsuntk_defconfig index f0f2d37fb..838de6c02 100755 --- a/arch/arm64/configs/rsuntk_defconfig +++ b/arch/arm64/configs/rsuntk_defconfig @@ -634,13 +634,11 @@ CONFIG_STACKPROTECTOR=y CONFIG_STACKPROTECTOR_STRONG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_THINLTO=y -# CONFIG_LTO_NONE is not set -CONFIG_LTO=y -CONFIG_THINLTO=y -CONFIG_LTO_CLANG=y +CONFIG_LTO_NONE=y +# CONFIG_LTO_CLANG is not set CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y # CONFIG_SHADOW_CALL_STACK is not set -CONFIG_LLVM_POLLY=y +# CONFIG_LLVM_POLLY is not set CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y From c809eaebb8142ba9813dcfcc1bf3a2cd73953f45 Mon Sep 17 00:00:00 2001 From: rsuntk Date: Thu, 20 Mar 2025 14:18:01 +0000 Subject: [PATCH 09/10] staging: qcacld-3.0: Import from previous project Signed-off-by: rsuntk --- drivers/staging/qcacld-3.0/Kbuild | 5 ++++- drivers/staging/qcacld-3.0/Kconfig | 2 +- .../qcacld-3.0/core/hdd/src/wlan_hdd_driver_ops.c | 14 +------------- .../qcacld-3.0/core/hdd/src/wlan_hdd_main.c | 6 +----- 4 files changed, 7 insertions(+), 20 deletions(-) diff --git a/drivers/staging/qcacld-3.0/Kbuild b/drivers/staging/qcacld-3.0/Kbuild index cec528208..064091e96 100644 --- a/drivers/staging/qcacld-3.0/Kbuild +++ b/drivers/staging/qcacld-3.0/Kbuild @@ -9,13 +9,16 @@ ifeq ($(KERNEL_BUILD), y) # These are provided in external module based builds # Need to explicitly define for Kernel-based builds MODNAME := wlan - WLAN_ROOT := drivers/staging/qcacld-3.0 + WLAN_ROOT := $(srctree)/$(src) WLAN_COMMON_ROOT := ../qca-wifi-host-cmn WLAN_COMMON_INC := $(WLAN_ROOT)/$(WLAN_COMMON_ROOT) WLAN_FW_API := $(WLAN_ROOT)/../fw-api/ WLAN_PROFILE := default endif +# Force user build +export TARGET_BUILD_VARIANT := user + WLAN_COMMON_ROOT ?= ../qca-wifi-host-cmn WLAN_COMMON_INC ?= $(WLAN_ROOT)/$(WLAN_COMMON_ROOT) WLAN_FW_API ?= $(WLAN_ROOT)/../fw-api/ diff --git a/drivers/staging/qcacld-3.0/Kconfig b/drivers/staging/qcacld-3.0/Kconfig index 421fa320e..b76481d5a 100644 --- a/drivers/staging/qcacld-3.0/Kconfig +++ b/drivers/staging/qcacld-3.0/Kconfig @@ -1,7 +1,7 @@ comment "Qualcomm Atheros CLD WLAN module" config QCA_CLD_WLAN - tristate "Qualcomm Atheros CLD WLAN module" + bool "Qualcomm Atheros CLD WLAN module" default n help Add support for the Qualcomm Atheros CLD WLAN module diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_driver_ops.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_driver_ops.c index a52a5c9f5..bd9fada1b 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_driver_ops.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_driver_ops.c @@ -47,11 +47,8 @@ #include #include -#ifdef MODULE -#define WLAN_MODULE_NAME module_name(THIS_MODULE) -#else +// Rissu: force init wlan without sysfs! #define WLAN_MODULE_NAME "wlan" -#endif #define DISABLE_KRAIT_IDLE_PS_VAL 1 @@ -463,19 +460,10 @@ static int hdd_init_qdf_ctx(struct device *dev, void *bdev, * Return: return -EPROBE_DEFER to platform driver if return value * is -ENOMEM. Platform driver will try to re-probe. */ -#ifdef MODULE static int check_for_probe_defer(int ret) { return ret; } -#else -static int check_for_probe_defer(int ret) -{ - if (ret == -ENOMEM) - return -EPROBE_DEFER; - return ret; -} -#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) static void hdd_abort_system_suspend(struct device *dev) diff --git a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c index 0e16321b2..c14b73e51 100644 --- a/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c +++ b/drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_main.c @@ -196,11 +196,8 @@ #include #include "wlan_global_lmac_if_api.h" -#ifdef MODULE -#define WLAN_MODULE_NAME module_name(THIS_MODULE) -#else +// Rissu: force init wlan without sysfs! #define WLAN_MODULE_NAME "wlan" -#endif #ifdef TIMER_MANAGER #define TIMER_MANAGER_STR " +TIMER_MANAGER" @@ -16644,7 +16641,6 @@ static void hdd_driver_unload(void) osif_sync_deinit(); hdd_qdf_deinit(); - } #if defined (SEC_CONFIG_PSM_SYSFS) From 5681c7c08d03684d97b6d7806d1787d7e564b980 Mon Sep 17 00:00:00 2001 From: rsuntk Date: Thu, 20 Mar 2025 14:19:01 +0000 Subject: [PATCH 10/10] Revert "crypto: arm64/aes-modes: Import from https://github.com/itejo443/android_kernel_samsung_sm7225/blob/ksm/arch/arm64/crypto/aes-modes.S" This reverts commit 1f675ae3f390b0f1c0428394dcac2a0880c0b913. --- arch/arm64/crypto/aes-modes.S | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/arch/arm64/crypto/aes-modes.S b/arch/arm64/crypto/aes-modes.S index 96eac9fda..496c243de 100755 --- a/arch/arm64/crypto/aes-modes.S +++ b/arch/arm64/crypto/aes-modes.S @@ -232,17 +232,19 @@ AES_ENTRY(aes_ctr_encrypt) bmi .Lctr1x cmn w6, #4 /* 32 bit overflow? */ bcs .Lctr1x - ldr q8, .Laddends /* addends 1,2,3[,0] */ - dup v7.4s, w6 + add w7, w6, #1 mov v0.16b, v4.16b - add v7.4s, v7.4s, v8.4s + add w8, w6, #2 mov v1.16b, v4.16b - rev32 v8.16b, v7.16b + add w9, w6, #3 mov v2.16b, v4.16b + rev w7, w7 mov v3.16b, v4.16b - mov v1.s[3], v8.s[0] - mov v2.s[3], v8.s[1] - mov v3.s[3], v8.s[2] + rev w8, w8 + mov v1.s[3], w7 + rev w9, w9 + mov v2.s[3], w8 + mov v3.s[3], w9 ld1 {v5.16b-v7.16b}, [x20], #48 /* get 3 input blocks */ bl aes_encrypt_block4x eor v0.16b, v5.16b, v0.16b @@ -295,12 +297,6 @@ AES_ENTRY(aes_ctr_encrypt) rev x7, x7 ins v4.d[0], x7 b .Lctrcarrydone - -.Laddends: - .word 0x00000001 - .word 0x00000002 - .word 0x00000003 - .word 0x00000000 AES_ENDPROC(aes_ctr_encrypt) .ltorg @@ -521,4 +517,4 @@ AES_ENTRY(aes_mac_update) ld1 {v0.16b}, [x23] /* get dg */ enc_prepare w21, x20, x0 b .Lmacloop4x -AES_ENDPROC(aes_mac_update) \ No newline at end of file +AES_ENDPROC(aes_mac_update)