ACPI 그룹/작업 정의되지 않음: 프로세서/LNXCPU

ACPI 그룹/작업 정의되지 않음: 프로세서/LNXCPU

AC 어댑터에서 노트북을 분리하면 다음과 같은 ACPI 오류가 발생합니다.

May 07 21:45:04 veritas root[7067]: ACPI group/action undefined: processor / LNXCPU:00
May 07 21:45:04 veritas root[7076]: ACPI group/action undefined: processor / LNXCPU:01
May 07 21:45:04 veritas root[7078]: ACPI group/action undefined: processor / LNXCPU:02
May 07 21:45:04 veritas root[7080]: ACPI group/action undefined: processor / LNXCPU:03

acpi_listen덤프

ac_adapter ACPI0003:00 00000080 00000000
battery PNP0C0A:00 00000080 00000001
processor LNXCPU:00 00000080 00000015
processor LNXCPU:01 00000080 00000015
processor LNXCPU:02 00000080 00000015
processor LNXCPU:03 00000080 00000015
processor LNXCPU:00 00000081 00000000
processor LNXCPU:01 00000081 00000000
processor LNXCPU:02 00000081 00000000
processor LNXCPU:03 00000081 00000000
...
processor LNXCPU:00 00000080 00000000
processor LNXCPU:01 00000080 00000000
processor LNXCPU:02 00000080 00000000
processor LNXCPU:03 00000080 00000000

/etc/acpi/handler.sh프로세서/LNXCPU 이벤트가 처리되지 않는 것 같습니다...

#!/bin/bash
# Default acpi script that takes an entry for all actions

case "$1" in
    button/power)
        case "$2" in
            PBTN|PWRF)
                logger 'PowerButton pressed'
                ;;
            *)
                logger "ACPI action undefined: $2"
                ;;
        esac
        ;;
    button/sleep)
        case "$2" in
            SLPB|SBTN)
                logger 'SleepButton pressed'
                ;;
            *)
                logger "ACPI action undefined: $2"
                ;;
        esac
        ;;
    ac_adapter)
        case "$2" in
            AC|ACAD|ADP0)
                case "$4" in
                    00000000)
                        logger 'AC unpluged'
                        ;;
                    00000001)
                        logger 'AC pluged'
                        ;;
                esac
                ;;
            *)
                logger "ACPI action undefined: $2"
                ;;
        esac
        ;;
    battery)
        case "$2" in
            BAT0)
                case "$4" in
                    00000000)
                        logger 'Battery online'
                        ;;
                    00000001)
                        logger 'Battery offline'
                        ;;
                esac
                ;;
            CPU0)
                ;;
            *)  logger "ACPI action undefined: $2" ;;
        esac
        ;;
    button/lid)
        case "$3" in
            close)
                logger 'LID closed'
                ;;
            open)
                logger 'LID opened'
                ;;
            *)
                logger "ACPI action undefined: $3"
                ;;
    esac
    ;;
    *)
        logger "ACPI group/action undefined: $1 / $2"
        ;;
esac

더 나쁜 것은 심각한 성능 문제에 직면하게 된다는 것입니다. (모든 것이 지연됩니다!) 프로세서/LNXCPU의 반복적인 시도 때문인 것 같습니다. 성능 문제는 정의되지 않은 ACPI 작업 오류와 밀접한 관련이 있기 때문에 재부팅하면 성능이 다시 정상으로 돌아옵니다.

그런데 원인이 뭔지 알 수가 없네요... cpupowerCPU 모드(절전 또는 성능)를 제어하고 을 비활성화 해 보았 tlp으나 소용이 없었습니다.

어떻게 이런일이 일어 났습니까? 이 문제의 원인은 무엇입니까? 더 중요한 것은 이 문제를 어떻게 해결합니까? 매우 감사합니다!

후속 조치: CPU 주파수가 400MHz(성능 모드 선택이 작동하지 않음)인데 다시 시작하면 800MHz(성능 모드 선택 주파수는 2.8GHz)가 되는 것을 확인했습니다.

답변1

AC 어댑터에서 노트북을 분리하면 다음과 같은 ACPI 오류가 발생합니다.

제안사항: "ACPI AC 어댑터 플러그/플러그 해제가 인식되지 않습니다.".

rzepaczyk - 내 handler.sh:

# Default acpi script that takes an entry for all actions

minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq`
maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`
setspeed1="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
setspeed2="/sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed"
setspeed3="/sys/devices/system/cpu/cpu2/cpufreq/scaling_setspeed"
setspeed4="/sys/devices/system/cpu/cpu3/cpufreq/scaling_setspeed"

set $*

case "$1" in
    button/power)
        #echo "PowerButton pressed!">/dev/tty5
        case "$2" in
            PBTN|PWRF)  logger "PowerButton pressed: $2" ;;
            *)          logger "ACPI action undefined: $2" ;;
        esac
        ;;
    button/sleep)
        case "$2" in
            SLPB)   echo -n mem >/sys/power/state ;;
            *)      logger "ACPI action undefined: $2" ;;
        esac
        ;;
    ac_adapter)
        case "$2" in
            AC*|ACAD*|ADP0*|AD*)
                case "$4" in
                    00000000)
                        echo -n $minspeed >$setspeed1
                        echo -n $minspeed >$setspeed2
                        echo -n $minspeed >$setspeed3
                        echo -n $minspeed >$setspeed4
                        #/etc/laptop-mode/laptop-mode start
                    ;;
                    00000001)
                        echo -n $maxspeed >$setspeed1
                        echo -n $maxspeed >$setspeed2
                        echo -n $maxspeed >$setspeed3
                        echo -n $maxspeed >$setspeed4
                        #/etc/laptop-mode/laptop-mode stop
                    ;;
                esac
                ;;
            *)  logger "ACPI action undefined: $2" ;;
        esac
        ;;
    battery)
        case "$2" in
            BAT0)
                case "$4" in
                    00000000)   #echo "offline" >/dev/tty5
                    ;;
                    00000001)   #echo "online"  >/dev/tty5
                    ;;
                esac
                ;;
            CPU0)
                ;;
            *)  logger "ACPI action undefined: $2" ;;
        esac
        ;;
    button/lid)
        case "$3" in
            close)
                #echo "LID closed!">/dev/tty5
                ;;
            open)
                #echo "LID opened!">/dev/tty5
                ;;
        esac
        ;;

    *)
        logger "ACPI group/action undefined: $1 / $2"
        ;;
esac

내가 원하는 것은 어댑터가 연결되어 있을 때 CPU 조정기를 ondemand로 설정하고 어댑터가 연결되지 않을 때 절전으로 설정하는 것입니다. 작업이 정의되지 않은 것으로 확인되었으므로 acpi가 작업을 인식하지 못한다고 가정합니다.

ac_adapter)
           case "$2" in
           AC*|ACAD*|ADP0*|AD*)

)

handler.sh의 항목.

Raynman - 처리된 것 같습니다. 로그에 표시된 정의되지 않은 이벤트 외에도 acpi_listen은 ac_adapter 이벤트도 표시합니다. 이는 마지막 견적의 사례에 의해 처리됩니다. 그런 다음 $4에 삽입(00000001)과 연결 해제(00000000)를 구별하는 또 다른 사례 설명이 있습니다. cpufreq-set(또는 생각할 수 있는 다른 것)을 호출하여 이러한 echo 문을 대체하면 제대로 작동할 것입니다.

rzepaczyk - 작동합니다. 도움을 주셔서 감사합니다.

관련 정보