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


12

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

더 나쁜 것은 심각한 성능 문제가 발생한다는 것입니다. 성능 문제가 정의되지 않은 ACPI 동작의 오류와 밀접하게 연결되어 있고 재부팅하면 성능이 다시 정상화되기 때문에 프로세서 / LNXCPU의 반복 된 시도로 인해 발생한다고 가정합니다.

그러나 이유가 무엇인지 알 수 없었습니다 ... cpupowerCPU 모드 (전력 절약 또는 성능)를 제어하고 비활성화 tlp하려고했지만 둘 다 도움이되지 않았습니다.

어떻게 이런 일이 발생합니까? 이 문제의 원인은 무엇입니까? 더 중요한 것은 어떻게 해결할 수 있습니까? 많은 감사합니다!

후속 : CPU의 주파수가 400MHz (성능 모드 선택이 작동하지 않음)임을 알았지 만 재부팅 후 800MHz가됩니다 (성능 모드를 선택하면 주파수는 2.8GHz입니다).

답변:


0

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 관리자를 주문형으로 설정하고 어댑터를 뽑을 때 절전합니다. 액션이 정의되지 않은 것을 보았으므로 acpi가 액션을 인식하지 않는다고 가정했습니다 (이 경우에도 :

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

)

handler.sh의 항목

Raynman-처리 된 것처럼 보입니다. acpi_listen은 로그에 나타난 정의되지 않은 이벤트 외에도 ac_adapter 이벤트를 표시합니다. 이것들은 마지막 인용에서 사건에 의해 처리됩니다. 그런 다음 플러그 (00000001)와 플러그 해제 (00000000)를 구별하기 위해 $ 4에 또 다른 사례 진술이 있습니다. cpufreq-set (또는 다른 생각할 수있는 것)에 대한 호출로 해당 echo 문을 바꾸면 작동합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.