diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 96bee418..f4630f7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,7 +34,7 @@ on: type: boolean next: description: "next" - default: true + default: false type: boolean stable: description: "stable" diff --git a/files/initrd/opt/arc/arc-functions.sh b/files/initrd/opt/arc/arc-functions.sh index b8687069..1ede0186 100755 --- a/files/initrd/opt/arc/arc-functions.sh +++ b/files/initrd/opt/arc/arc-functions.sh @@ -1017,6 +1017,7 @@ function sysinfo() { elif [ "${REMAP}" = "ahci" ]; then AHCIPORTMAP="$(readConfigKey "cmdline.ahci_remap" "${USER_CONFIG_FILE}")" fi + GOVERNOR="$(readConfigKey "governor" "${USER_CONFIG_FILE}")" USERCMDLINEINFO="$(readConfigMap "cmdline" "${USER_CONFIG_FILE}")" USERSYNOINFO="$(readConfigMap "synoinfo" "${USER_CONFIG_FILE}")" fi @@ -1051,7 +1052,7 @@ function sysinfo() { fi TEXT+="\n Memory: \Zb$((${RAMTOTAL}))GB\Zn" TEXT+="\n AES | ACPI: \Zb${AESSYS} | ${ACPISYS}\Zn" - TEXT+="\n CPU Scaling: \Zb${CPUFREQ}\Zn" + TEXT+="\n CPU Scaling | Governor: \Zb${CPUFREQ} | ${GOVERNOR}\Zn" TEXT+="\n Secure Boot: \Zb${SECURE}\Zn" TEXT+="\n Bootdisk: \Zb${LOADER_DISK}\Zn" TEXT+="\n" @@ -2234,26 +2235,20 @@ function governorMenu () { function governorSelection () { rm -f "${TMP_PATH}/opts" >/dev/null touch "${TMP_PATH}/opts" - if [ "${ARCMODE}" = "config" ]; then - # Selectable CPU governors - [ "${PLATFORM}" = "epyc7002" ] && echo -e "schedutil \"use schedutil to scale frequency *\"" >>"${TMP_PATH}/opts" - [ "${PLATFORM}" != "epyc7002" ] && echo -e "ondemand \"use ondemand to scale frequency *\"" >>"${TMP_PATH}/opts" - [ "${PLATFORM}" != "epyc7002" ] && echo -e "conservative \"use conservative to scale frequency\"" >>"${TMP_PATH}/opts" - echo -e "performance \"always run at max frequency\"" >>"${TMP_PATH}/opts" - echo -e "powersave \"always run at lowest frequency\"" >>"${TMP_PATH}/opts" - dialog --backtitle "$(backtitle)" --title "CPU Frequency Scaling" \ - --menu "Choose a Governor\n* Recommended Option" 0 0 0 --file "${TMP_PATH}/opts" \ - 2>${TMP_PATH}/resp - [ $? -ne 0 ] && return - resp=$(cat ${TMP_PATH}/resp) - [ -z "${resp}" ] && return - CPUGOVERNOR=${resp} - else - [ "${PLATFORM}" = "epyc7002" ] && CPUGOVERNOR="schedutil" - [ "${PLATFORM}" != "epyc7002" ] && CPUGOVERNOR="ondemand" - fi - writeConfigKey "addons.cpufreqscaling" "${CPUGOVERNOR}" "${USER_CONFIG_FILE}" - CPUGOVERNOR="$(readConfigKey "addons.cpufreqscaling" "${USER_CONFIG_FILE}")" + # Selectable CPU governors + [ "${PLATFORM}" = "epyc7002" ] && echo -e "schedutil \"use schedutil to scale frequency *\"" >>"${TMP_PATH}/opts" + [ "${PLATFORM}" != "epyc7002" ] && echo -e "ondemand \"use ondemand to scale frequency\"" >>"${TMP_PATH}/opts" + [ "${PLATFORM}" != "epyc7002" ] && echo -e "conservative \"use conservative to scale frequency *\"" >>"${TMP_PATH}/opts" + echo -e "performance \"always run at max frequency\"" >>"${TMP_PATH}/opts" + echo -e "powersave \"always run at lowest frequency\"" >>"${TMP_PATH}/opts" + dialog --backtitle "$(backtitle)" --title "CPU Frequency Scaling" \ + --menu "Choose a Governor\n* Recommended Option" 0 0 0 --file "${TMP_PATH}/opts" \ + 2>${TMP_PATH}/resp + [ $? -ne 0 ] && return + resp=$(cat ${TMP_PATH}/resp) + [ -z "${resp}" ] && return + GOVERNOR=${resp} + writeConfigKey "governor" "${GOVERNOR}" "${USER_CONFIG_FILE}" } ############################################################################### diff --git a/files/initrd/opt/arc/arc.sh b/files/initrd/opt/arc/arc.sh index 93535965..8fa758f4 100755 --- a/files/initrd/opt/arc/arc.sh +++ b/files/initrd/opt/arc/arc.sh @@ -114,9 +114,17 @@ function arcModel() { BETA="" [ -n "${ARCCONFM}" ] && ARC="x" || ARC="" [ "${DT}" = "true" ] && DTS="x" || DTS="" + IGPU="" IGPUS="" - [[ "${A}" = "apollolake" || "${A}" = "geminilake" ]] && IGPUS="up to 9th" - [ "${A}" = "epyc7002" ] && IGPUS="up to 14th" + IGPUID="$(lspci -nd ::300 2>/dev/null | grep "8086" | cut -d' ' -f3 | sed 's/://g')" + if [ -n "${IGPUID}" ]; then grep -iq "${IGPUID}" ${ARC_PATH}/include/i915ids && IGPU="all" || IGPU="epyc7002"; else IGPU=""; fi + if [[ "${A}" = "apollolake" || "${A}" = "geminilake" ]] && [ "${IGPU}" = "all" ]; then + IGPUS="+" + elif [ "${A}" = "epyc7002" ] && [[ "${IGPU}" = "epyc7002" || "${IGPU}" = "all" ]]; then + IGPUS="x" + else + IGPUS="" + fi [ "${DT}" = "true" ] && HBAS="" || HBAS="x" [ "${M}" = "SA6400" ] && HBAS="x" [ "${DT}" = "false" ] && USBS="int/ext" || USBS="ext" @@ -363,7 +371,8 @@ function arcVersion() { initConfigKey "addons.sensors" "" "${USER_CONFIG_FILE}" fi if [ "${PLATFORM}" = "apollolake" ] || [ "${PLATFORM}" = "geminilake" ]; then - initConfigKey "addons.i915" "" "${USER_CONFIG_FILE}" + if [ -n "${IGPUID}" ]; then grep -iq "${IGPUID}" ${ARC_PATH}/include/i915ids && IGPU="all" || IGPU="epyc7002"; else IGPU=""; fi + [ "${IGPU}"="all" ] && initConfigKey "addons.i915" "" "${USER_CONFIG_FILE}" || true fi if echo "${PAT_URL}" 2>/dev/null | grep -q "7.2.2"; then initConfigKey "addons.allowdowngrade" "" "${USER_CONFIG_FILE}" @@ -511,7 +520,7 @@ function arcSettings() { governorSelection [ $? -ne 0 ] && return elif [ "${ARCMODE}" = "automated" ] && [ "${MACHINE}" = "Native" ] && readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q "cpufreqscaling"; then - [ "${PLATFORM}" = "epyc7002" ] && writeConfigKey "addons.cpufreqscaling" "schedutil" "${USER_CONFIG_FILE}" || writeConfigKey "addons.cpufreqscaling" "conservative" "${USER_CONFIG_FILE}" + [ "${PLATFORM}" = "epyc7002" ] && writeConfigKey "governor" "schedutil" "${USER_CONFIG_FILE}" || writeConfigKey "governor" "conservative" "${USER_CONFIG_FILE}" fi if [ "${ARCMODE}" = "config" ]; then # Check for DT and HBA/Raid Controller @@ -1047,13 +1056,7 @@ elif [ "${ARCMODE}" = "config" ]; then BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" NEXT="H" ;; - h) if [ "${USBMOUNT}" = "auto" ]; then - USBMOUNT='internal' - elif [ "${USBMOUNT}" = "internal" ]; then - USBMOUNT='external' - elif [ "${USBMOUNT}" = "external" ]; then - USBMOUNT='auto' - fi + h) [ "${USBMOUNT}" = "true" ] && USBMOUNT='false' || USBMOUNT='true' writeConfigKey "usbmount" "${USBMOUNT}" "${USER_CONFIG_FILE}" writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}" BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" diff --git a/files/initrd/opt/arc/boot.sh b/files/initrd/opt/arc/boot.sh index afd43240..26a4b756 100755 --- a/files/initrd/opt/arc/boot.sh +++ b/files/initrd/opt/arc/boot.sh @@ -104,6 +104,8 @@ SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")" KERNELPANIC="$(readConfigKey "kernelpanic" "${USER_CONFIG_FILE}")" DT="$(readConfigKey "platforms.${PLATFORM}.dt" "${P_FILE}")" KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${P_FILE}")" +GOVERNOR="$(readConfigKey "governor" "${USER_CONFIG_FILE}")" +USBMOUNT="$(readConfigKey "usbmount" "${USER_CONFIG_FILE}")" EMMCBOOT="$(readConfigKey "emmcboot" "${USER_CONFIG_FILE}")" MODBLACKLIST="$(readConfigKey "modblacklist" "${USER_CONFIG_FILE}")" ARCPATCH="$(readConfigKey "arc.patch" "${USER_CONFIG_FILE}")" @@ -184,7 +186,15 @@ CMDLINE["panic"]="${KERNELPANIC:-0}" # DSM Specific Cmdline CMDLINE["pcie_aspm"]="off" CMDLINE["modprobe.blacklist"]="${MODBLACKLIST}" -[ $(cat /proc/cpuinfo | grep Intel | wc -l) -gt 0 ] && CMDLINE["intel_pstate"]="disable" || true +if [ "${USBMOUNT}" = "true" ]; then + CMDLINE['usbinternal']="" +fi +if [ "${GOVERNOR}" = "ondemand" ] || [ "${GOVERNOR}" = "conservative" ] || [ "${GOVERNOR}" = "schedutil" ]; then + CMDLINE["governor"]="${GOVERNOR}" +fi +if [ $(cat /proc/cpuinfo | grep Intel | wc -l) -gt 0 ]; then + CMDLINE["intel_pstate"]="disable" +fi # [ $(cat /proc/cpuinfo | grep AMD | wc -l) -gt 0 ] && CMDLINE["amd_pstate"]="disable" || true # CMDLINE["nomodeset"]="" if echo "apollolake geminilake purley" | grep -wq "${PLATFORM}"; then diff --git a/files/initrd/opt/arc/include/functions.sh b/files/initrd/opt/arc/include/functions.sh index b6c7f29b..63679408 100755 --- a/files/initrd/opt/arc/include/functions.sh +++ b/files/initrd/opt/arc/include/functions.sh @@ -68,6 +68,12 @@ function randomhex() { printf "&02X" "$((${RANDOM} % 255 + 1))" } +############################################################################### +# Generate a random digit (0-9A-Z) +function genRandomDigit() { + echo {0..9} | tr ' ' '\n' | sort -R | head -1 +} + ############################################################################### # Generate a random letter function genRandomLetter() { @@ -377,11 +383,10 @@ function delCmdline() { ############################################################################### # Rebooting -# (based on pocopico's TCRP code) function rebootTo() { local MODES="config recovery junior automated update bios memtest" [ -z "${1}" ] && exit 1 - if ! echo "${MODES}" | grep -qw "${1}"; then exit 1; fi + if ! echo "${MODES}" | grep -wq "${1}"; then exit 1; fi [ "${1}" = "automated" ] && echo "arc-${MODEL}-${PRODUCTVER}-${ARC_VERSION}" >"${PART3_PATH}/automated" [ ! -f "${USER_GRUBENVFILE}" ] && grub-editenv ${USER_GRUBENVFILE} create # echo -e "Rebooting to ${1} mode..." diff --git a/files/initrd/opt/arc/include/i915ids b/files/initrd/opt/arc/include/i915ids new file mode 100644 index 00000000..d9c334ac --- /dev/null +++ b/files/initrd/opt/arc/include/i915ids @@ -0,0 +1,390 @@ +# INTEL_I810_IDS +80867121 +80867123 +80867125 +# INTEL_I815_IDS +80861132 +# INTEL_I830_IDS +80863577 +# INTEL_I845G_IDS +80862562 +# INTEL_I85X_IDS +80863582 +8086358e +# INTEL_I865G_IDS +80862572 +# INTEL_I915G_IDS +80862582 +8086258a +# INTEL_I915GM_IDS +80862592 +# INTEL_I945G_IDS +80862772 +# INTEL_I945GM_IDS +808627a2 +808627ae +# INTEL_I965G_IDS +80862972 +80862982 +80862992 +808629a2 +# INTEL_G33_IDS +808629b2 +808629c2 +808629d2 +# INTEL_I965GM_IDS +80862a02 +80862a12 +# INTEL_GM45_IDS +80862a42 +# INTEL_G45_IDS +80862e02 +80862e12 +80862e22 +80862e32 +80862e42 +80862e92 +# INTEL_PINEVIEW_G_IDS +8086a001 +# INTEL_PINEVIEW_M_IDS +8086a011 +# INTEL_IRONLAKE_D_IDS +80860042 +# INTEL_IRONLAKE_M_IDS +80860046 +# INTEL_SNB_D_GT1_IDS +80860102 +8086010A +# INTEL_SNB_D_GT2_IDS +80860112 +80860122 +# INTEL_SNB_M_GT1_IDS +80860106 +# INTEL_SNB_M_GT2_IDS +80860116 +80860126 +# INTEL_IVB_M_GT1_IDS +80860156 +# INTEL_IVB_M_GT2_IDS +80860166 +# INTEL_IVB_D_GT1_IDS +80860152 +8086015a +# INTEL_IVB_D_GT2_IDS +80860162 +8086016a +# INTEL_HSW_ULT_GT1_IDS +80860A02 +80860A06 +80860A0A +80860A0B +# INTEL_HSW_ULX_GT1_IDS +80860A0E +# INTEL_HSW_GT1_IDS +80860402 +80860406 +8086040A +8086040B +8086040E +80860C02 +80860C06 +80860C0A +80860C0B +80860C0E +80860D02 +80860D06 +80860D0A +80860D0B +80860D0E +# INTEL_HSW_ULT_GT2_IDS +80860A12 +80860A16 +80860A1A +80860A1B +# INTEL_HSW_ULX_GT2_IDS +80860A1E +# INTEL_HSW_GT2_IDS +80860412 +80860416 +8086041A +8086041B +8086041E +80860C12 +80860C16 +80860C1A +80860C1B +80860C1E +80860D12 +80860D16 +80860D1A +80860D1B +80860D1E +# INTEL_HSW_ULT_GT3_IDS +80860A22 +80860A26 +80860A2A +80860A2B +80860A2E +# INTEL_HSW_GT3_IDS +80860422 +80860426 +8086042A +8086042B +8086042E +80860C22 +80860C26 +80860C2A +80860C2B +80860C2E +80860D22 +80860D26 +80860D2A +80860D2B +80860D2E +# INTEL_VLV_IDS +80860f30 +80860f31 +80860f32 +80860f33 +# INTEL_BDW_ULT_GT1_IDS +80861606 +8086160B +# INTEL_BDW_ULX_GT1_IDS +8086160E +# INTEL_BDW_GT1_IDS +80861602 +8086160A +8086160D +# INTEL_BDW_ULT_GT2_IDS +80861616 +8086161B +# INTEL_BDW_ULX_GT2_IDS +8086161E +# INTEL_BDW_GT2_IDS +80861612 +8086161A +8086161D +# INTEL_BDW_ULT_GT3_IDS +80861626 +8086162B +# INTEL_BDW_ULX_GT3_IDS +8086162E +# INTEL_BDW_GT3_IDS +80861622 +8086162A +8086162D +# INTEL_BDW_ULT_RSVD_IDS +80861636 +8086163B +# INTEL_BDW_ULX_RSVD_IDS +8086163E +# INTEL_BDW_RSVD_IDS +80861632 +8086163A +8086163D +# INTEL_CHV_IDS +808622b0 +808622b1 +808622b2 +808622b3 +# INTEL_SKL_ULT_GT1_IDS +80861906 +80861913~ +# INTEL_SKL_ULX_GT1_IDS +8086190E +80861915~ +# INTEL_SKL_GT1_IDS +80861902 +8086190A +8086190B +80861917~ +# INTEL_SKL_ULT_GT2_IDS +80861916 +80861921 +# INTEL_SKL_ULX_GT2_IDS +8086191E +# INTEL_SKL_GT2_IDS +80861912 +8086191A +8086191B +8086191D +# INTEL_SKL_ULT_GT3_IDS +80861923 +80861926 +80861927 +# INTEL_SKL_GT3_IDS +8086192A +8086192B +8086192D +# INTEL_SKL_GT4_IDS +80861932 +8086193A +8086193B +8086193D +# INTEL_BXT_IDS +80860A84 +80861A84 +80861A85 +80865A84 +80865A85 +# INTEL_GLK_IDS +80863184 +80863185 +# INTEL_KBL_ULT_GT1_IDS +80865906 +80865913 +# INTEL_KBL_ULX_GT1_IDS +8086590E +80865915 +# INTEL_KBL_GT1_IDS +80865902 +80865908 +8086590A +8086590B +# INTEL_KBL_ULT_GT2_IDS +80865916 +80865921 +# INTEL_KBL_ULX_GT2_IDS +8086591E +# INTEL_KBL_GT2_IDS +80865912 +80865917 +8086591A +8086591B +8086591D +# INTEL_KBL_ULT_GT3_IDS +80865926 +# INTEL_KBL_GT3_IDS +80865923 +80865927 +# INTEL_KBL_GT4_IDS +8086593B +# INTEL_AML_KBL_GT2_IDS +8086591C +808687C0 +# INTEL_AML_CFL_GT2_IDS +808687CA +# INTEL_CML_GT1_IDS +80869BA2 +80869BA4 +80869BA5 +80869BA8 +# INTEL_CML_U_GT1_IDS +80869B21 +80869BAA +80869BAC +# INTEL_CML_GT2_IDS +80869BC2 +80869BC4 +80869BC5 +80869BC6 +80869BC8 +80869BE6 +80869BF6 +# INTEL_CML_U_GT2_IDS +80869B41 +80869BCA +80869BCC +# INTEL_CFL_S_GT1_IDS +80863E90 +80863E93 +80863E99 +# INTEL_CFL_S_GT2_IDS +80863E91 +80863E92 +80863E96 +80863E98 +80863E9A +# INTEL_CFL_H_GT1_IDS +80863E9C +# INTEL_CFL_H_GT2_IDS +80863E94 +80863E9B +# INTEL_CFL_U_GT2_IDS +80863EA9 +# INTEL_CFL_U_GT3_IDS +80863EA5 +80863EA6 +80863EA7 +80863EA8 +# INTEL_WHL_U_GT1_IDS +80863EA1 +80863EA4 +# INTEL_WHL_U_GT2_IDS +80863EA0 +80863EA3 +# INTEL_WHL_U_GT3_IDS +80863EA2 +# INTEL_CNL_PORT_F_IDS +80865A44 +80865A4C +80865A54 +80865A5C +# INTEL_CNL_IDS +80865A40 +80865A41 +80865A42 +80865A49 +80865A4A +80865A50 +80865A51 +80865A52 +80865A59 +80865A5A +# INTEL_ICL_PORT_F_IDS +80868A50 +80868A52 +80868A53 +80868A54 +80868A56 +80868A57 +80868A58 +80868A59 +80868A5A +80868A5B +80868A5C +80868A70 +80868A71 +# INTEL_ICL_11_IDS +80868A51 +80868A5D +# INTEL_EHL_IDS +80864500~ +80864541 +80864551 +80864555 +80864557 +80864570~ +80864571 +# INTEL_JSL_IDS +80864E51 +80864E55 +80864E57 +80864E61 +80864E71 +# INTEL_TGL_12_GT1_IDS +80869A60 +80869A68 +80869A70 +# INTEL_TGL_12_GT2_IDS +80869A40 +80869A49 +80869A59 +80869A78 +80869AC0 +80869AC9 +80869AD9 +80869AF8 +# INTEL_RKL_IDS +80864C80 +80864C8A +80864C8B +80864C8C +80864C90 +80864C9A +# INTEL_DG1_IDS +80864905 +80864906~ +80864907~ +80864908~ +80864909~ \ No newline at end of file diff --git a/files/initrd/opt/arc/init.sh b/files/initrd/opt/arc/init.sh index 3c047e0d..d7a9c588 100755 --- a/files/initrd/opt/arc/init.sh +++ b/files/initrd/opt/arc/init.sh @@ -55,6 +55,7 @@ initConfigKey "bootipwait" "30" "${USER_CONFIG_FILE}" initConfigKey "device" "{}" "${USER_CONFIG_FILE}" initConfigKey "directboot" "false" "${USER_CONFIG_FILE}" initConfigKey "emmcboot" "false" "${USER_CONFIG_FILE}" +initConfigKey "governor" "performance" "${USER_CONFIG_FILE}" initConfigKey "hddsort" "false" "${USER_CONFIG_FILE}" initConfigKey "kernel" "official" "${USER_CONFIG_FILE}" initConfigKey "kernelload" "power" "${USER_CONFIG_FILE}" @@ -134,8 +135,8 @@ PID="0x0001" BUSLIST="usb sata sas scsi nvme mmc ide virtio vmbus xen" if [ "${BUS}" = "usb" ]; then - VID="0x$(udevadm info --query property --name "${LOADER_DISK}" | grep ID_VENDOR_ID | cut -d= -f2)" - PID="0x$(udevadm info --query property --name "${LOADER_DISK}" | grep ID_MODEL_ID | cut -d= -f2)" + VID="0x$(udevadm info --query property --name "${LOADER_DISK}" 2>/dev/null | grep "ID_VENDOR_ID" | cut -d= -f2)" + PID="0x$(udevadm info --query property --name "${LOADER_DISK}" 2>/dev/null | grep "ID_MODEL_ID" | cut -d= -f2)" elif ! echo "${BUSLIST}" | grep -wq "${BUS}"; then die "$(printf "The boot disk does not support the current %s, only %s are supported." "${BUS}" "${BUSLIST// /\/}")" fi diff --git a/files/initrd/opt/arc/ramdisk-patch.sh b/files/initrd/opt/arc/ramdisk-patch.sh index b10da2e3..6b12a848 100755 --- a/files/initrd/opt/arc/ramdisk-patch.sh +++ b/files/initrd/opt/arc/ramdisk-patch.sh @@ -176,8 +176,7 @@ for ADDON in "redpill" "revert" "misc" "eudev" "disks" "localrss" "notify" "wol" PARAMS="" if [ "${ADDON}" = "disks" ]; then HDDSORT="$(readConfigKey "hddsort" "${USER_CONFIG_FILE}")" - USBMOUNT="$(readConfigKey "usbmount" "${USER_CONFIG_FILE}")" - PARAMS="${HDDSORT} ${USBMOUNT}" + PARAMS="${HDDSORT}" [ -f "${USER_UP_PATH}/${MODEL}.dts" ] && cp -f "${USER_UP_PATH}/${MODEL}.dts" "${RAMDISK_PATH}/addons/model.dts" fi installAddon "${ADDON}" "${PLATFORM}" || exit 1