From fbc24e051722277bd5213fac25aefc51672813a9 Mon Sep 17 00:00:00 2001 From: Ing Date: Fri, 26 Jul 2024 15:32:16 +0800 Subject: [PATCH] rmmod net and drm driver before kexec --- files/initrd/opt/rr/boot.sh | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/files/initrd/opt/rr/boot.sh b/files/initrd/opt/rr/boot.sh index 651094ee..ab4e3c62 100755 --- a/files/initrd/opt/rr/boot.sh +++ b/files/initrd/opt/rr/boot.sh @@ -12,19 +12,6 @@ loaderIsConfigured || die "$(TEXT "Loader is not configured!")" # Check if machine has EFI [ -d /sys/firmware/efi ] && EFI=1 || EFI=0 -# Proc open nvidia driver when booting -NVPCI_ADDR=$(lspci -nd 10de: | grep -e 0300 -e 0302 | awk '{print $1}') -if [ -n "${NVPCI_ADDR}" ]; then - modprobe -r nouveau || true - NVDEV_PATH=$(find /sys/devices -name *${NVPCI_ADDR} | grep -v supplier) - for DEV_PATH in ${NVDEV_PATH} - do - if [ -e ${DEV_PATH}/reset ]; then - echo 1 > ${DEV_PATH}/reset || true - fi - done -fi - BUS=$(getBus "${LOADER_DISK}") # Print text centralized @@ -184,6 +171,9 @@ if [ "${DT}" = "true" ] && ! echo "epyc7002 purley broadwellnkv2" | grep -wq "${ fi fi +# CMDLINE['kvm.ignore_msrs']="1" +# CMDLINE['kvm.report_ignored_msrs']="0" + if echo "apollolake geminilake" | grep -wq "${PLATFORM}"; then CMDLINE["intel_iommu"]="igfx_off" fi @@ -317,7 +307,7 @@ else [ -f "${TMP_PATH}/qrcode_qhxg.png" ] && echo | fbv -acufi "${TMP_PATH}/qrcode_qhxg.png" >/dev/null 2>/dev/null || true fi - # Executes DSM kernel via KEXEC + # Executes DSM kernel via KEXEC KEXECARGS="" if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 4 ] && [ ${EFI} -eq 1 ]; then echo -e "\033[1;33m$(TEXT "Warning, running kexec with --noefi param, strange things will happen!!")\033[0m" @@ -332,6 +322,17 @@ else # Clear logs for dbgutils addons rm -rf "${PART1_PATH}/logs" >/dev/null 2>&1 || true + # Unload all network interfaces + for D in $(readlink /sys/class/net/*/device/driver); do rmmod -f "$(basename ${D})" 2>/dev/null || true; done + + # Unload all graphics drivers + # for D in $(readlink /sys/class/drm/*/device/driver); do rmmod -f "$(basename ${D})" 2>/dev/null || true; done + for D in $(lsmod | grep -E '^(nouveau|amdgpu|radeon|i915)' | awk '{print $1}'); do rmmod -f "${D}" 2>/dev/null || true; done + for I in $(find /sys/devices -name uevent -exec bash -c 'cat {} 2>/dev/null | grep -Eq "PCI_CLASS=0?30[0|1|2]00" && dirname {}' \;); do + [ -e ${I}/reset ] && cat ${I}/vendor >/dev/null | grep -iq 0x10de && echo 1 >${I}/reset || true # Proc open nvidia driver when booting + done + + # Reboot KERNELWAY="$(readConfigKey "kernelway" "${USER_CONFIG_FILE}")" [ "${KERNELWAY}" = "kexec" ] && kexec -a -e || poweroff exit 0