부팅 시 GPE ACPI 인터럽트를 비활성화하시겠습니까?

부팅 시 GPE ACPI 인터럽트를 비활성화하시겠습니까?

ACPI 인터럽트를 찾으면 다음을 발견합니다.

/sys/firmware/acpi/interrupts/sci:   55414
/sys/firmware/acpi/interrupts/error:       0
/sys/firmware/acpi/interrupts/gpe00:       0   invalid
/sys/firmware/acpi/interrupts/gpe01:       0   invalid
/sys/firmware/acpi/interrupts/gpe02:       0   invalid
/sys/firmware/acpi/interrupts/gpe03:       0   invalid
/sys/firmware/acpi/interrupts/gpe04:       0   invalid
/sys/firmware/acpi/interrupts/gpe05:       0   invalid
/sys/firmware/acpi/interrupts/gpe06:       0   enabled
/sys/firmware/acpi/interrupts/gpe07:       0   enabled
/sys/firmware/acpi/interrupts/gpe08:       0   invalid
/sys/firmware/acpi/interrupts/gpe09:       0   disabled
/sys/firmware/acpi/interrupts/gpe10:       0   enabled
/sys/firmware/acpi/interrupts/gpe11:       0   invalid
/sys/firmware/acpi/interrupts/gpe12:       0   invalid
/sys/firmware/acpi/interrupts/gpe13:       0   invalid
/sys/firmware/acpi/interrupts/gpe14:       1   enabled
/sys/firmware/acpi/interrupts/gpe15:       0   invalid
/sys/firmware/acpi/interrupts/gpe16:       1   enabled
/sys/firmware/acpi/interrupts/gpe0A:       0   invalid
/sys/firmware/acpi/interrupts/gpe17:   54753   enabled
/sys/firmware/acpi/interrupts/gpe0B:       0   invalid
/sys/firmware/acpi/interrupts/gpe18:       0   invalid
/sys/firmware/acpi/interrupts/gpe0C:       0   invalid
/sys/firmware/acpi/interrupts/gpe19:       0   invalid
/sys/firmware/acpi/interrupts/gpe0D:       0   disabled
/sys/firmware/acpi/interrupts/gpe0E:       0   invalid
/sys/firmware/acpi/interrupts/gpe20:       0   invalid
/sys/firmware/acpi/interrupts/gpe0F:       0   invalid
/sys/firmware/acpi/interrupts/gpe21:       0   invalid
/sys/firmware/acpi/interrupts/gpe22:       0   invalid
/sys/firmware/acpi/interrupts/gpe23:       0   enabled
/sys/firmware/acpi/interrupts/gpe24:       0   invalid
/sys/firmware/acpi/interrupts/gpe25:       0   invalid
/sys/firmware/acpi/interrupts/gpe26:       0   invalid
/sys/firmware/acpi/interrupts/gpe1A:       0   invalid
/sys/firmware/acpi/interrupts/gpe27:       0   invalid
/sys/firmware/acpi/interrupts/gpe1B:       0   invalid
/sys/firmware/acpi/interrupts/gpe28:       0   invalid
/sys/firmware/acpi/interrupts/gpe1C:       0   invalid
/sys/firmware/acpi/interrupts/gpe29:       0   invalid
/sys/firmware/acpi/interrupts/gpe1D:       0   invalid
/sys/firmware/acpi/interrupts/gpe1E:       0   invalid
/sys/firmware/acpi/interrupts/gpe30:       0   invalid
/sys/firmware/acpi/interrupts/gpe1F:       0   invalid
/sys/firmware/acpi/interrupts/gpe31:       0   invalid
/sys/firmware/acpi/interrupts/gpe32:       0   invalid
/sys/firmware/acpi/interrupts/gpe33:       0   invalid
/sys/firmware/acpi/interrupts/gpe34:       0   invalid
/sys/firmware/acpi/interrupts/gpe35:       0   invalid
/sys/firmware/acpi/interrupts/gpe36:       0   invalid
/sys/firmware/acpi/interrupts/gpe2A:       0   invalid
/sys/firmware/acpi/interrupts/gpe37:       0   invalid
/sys/firmware/acpi/interrupts/gpe2B:       0   invalid
/sys/firmware/acpi/interrupts/gpe38:       0   invalid
/sys/firmware/acpi/interrupts/gpe2C:       0   invalid
/sys/firmware/acpi/interrupts/gpe39:       0   invalid
/sys/firmware/acpi/interrupts/gpe2D:       0   invalid
/sys/firmware/acpi/interrupts/gpe2E:       0   invalid
/sys/firmware/acpi/interrupts/gpe2F:       0   invalid
/sys/firmware/acpi/interrupts/gpe3A:       0   invalid
/sys/firmware/acpi/interrupts/gpe3B:       0   invalid
/sys/firmware/acpi/interrupts/gpe3C:       0   invalid
/sys/firmware/acpi/interrupts/gpe3D:       0   invalid
/sys/firmware/acpi/interrupts/gpe3E:       0   invalid
/sys/firmware/acpi/interrupts/gpe3F:       0   invalid
/sys/firmware/acpi/interrupts/sci_not:       0
/sys/firmware/acpi/interrupts/ff_pmtimer:       0   invalid
/sys/firmware/acpi/interrupts/ff_rt_clk:       0   disabled
/sys/firmware/acpi/interrupts/gpe_all:   55414
/sys/firmware/acpi/interrupts/ff_gbl_lock:       0   enabled
/sys/firmware/acpi/interrupts/ff_pwr_btn:       0   enabled
/sys/firmware/acpi/interrupts/ff_slp_btn:       0   invalid

시작 시 이 기능을 비활성화하는 서비스 스크립트를 작성했습니다.

#!/bin/bash

### BEGIN INIT INFO
# Provides:          disable-gpe17
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

logger -t gpe17 -s "Disabling gpe17 interrupts..."

/etc/pm/sleep.d/30_disable_gpe17 thaw

exit 0

이것은 내 PM 스크립트를 호출합니다.

#!/bin/sh

echo 0 > /sys/firmware/acpi/interrupts/gpe17 2>/dev/null

두 스크립트를 모두 실행 가능하게 만들고 disable-gpe17시작 스크립트에 추가했습니다.

sudo update-rc.d disable-gpe17 defaults

부팅 로그를 보면 gpe17이 비활성화되었음을 나타내는 syslog 항목이 없습니다.

시작 시 특정 인터럽트를 비활성화하는 더 좋은 방법(아마도 udev)이 있습니까? 그렇지 않은 경우 시작 시 서비스 스크립트가 실행되지 않는 이유는 무엇입니까?

저는 커널 3.19와 Ubuntu 14.04를 실행하는 MacBook Pro 11.5를 사용하고 있습니다.

답변1

저도 같은 문제가 있습니다. kworker가 CPU 소비를 중지하려면 gpe16 및 gpe17을 비활성화해야 합니다. 나는 여기에 있는 레시피를 따랐습니다.http://sudoremember.blogspot.com.au/2013/05/high-cpu-usage-due-to-kworker.html

축약된(적어도 내 예에서는 수정된) 버전은 다음과 같습니다.

$ sudo -s
# echo "disable" > /sys/firmware/acpi/interrupts/gpe16
# echo "disable" > /sys/firmware/acpi/interrupts/gpe17

이제 CPU 로드를 확인하고 팬이 회전하는 소리를 들을 수 있습니다. 재부팅 시에도 이런 일이 발생하는지 확인하세요. 여전히 루트 권한을 사용하고 있습니다.

# crontab -e

즐겨찾는 편집기가 열립니다. 다음 줄을 추가하세요.

@reboot echo "disable" > /sys/firmware/acpi/interrupts/gpe16 
@reboot echo "disable" > /sys/firmware/acpi/interrupts/gpe17

일시 중지 모드가 작동하지 않았기 때문에 일시 중지 후 다시 시작할 때 이러한 설정을 다시 활성화하는 스크립트를 만드는 방법에 대한 나머지 지침을 따르지 않았습니다.

답변2

echo "disable" > /sys/firmware/acpi/interrupts/gpe17Linux 4.19에서는 GPE( )를 비활성화해도 더 이상 문제가 해결되지 않는 것으로 나타났습니다 . GPE가 비활성화되어 있어도 숫자는 계속 증가하고 CPU는 여전히 사용 중입니다. Linux 4.10부터 새로운 솔루션은 비활성화보다는 차단하는 것으로 보입니다.

# echo mask > /sys/firmware/acpi/interrupts/gpe17

또는 시작 매개변수를 사용하십시오 acpi_mask_gpe=0x17(Debian/Ubuntu에서는 이를 /etc/default/grub행 에 추가한 GRUB_CMDLINE_LINUX_DEFAULT후 실행 update-grub하고 재부팅하십시오).

자세한 내용은 다음을 참조하세요.Linux 커널 커밋 9c4aa1eeLinux 4.10-rc3에서 처음 병합되었으며 버그 보고서가 여기에 링크되어 있습니다.

답변3

이전 Macbook 2006에서 Lubuntu 20.10, 5.8 커널을 실행하는 것과 동일한 문제가 있습니다. 내 경우에는 Peter Nowee의 제안을 사용하는 것이 해결책이었습니다.

acpi_mask_gpe=0x17GRUB에 부팅 매개변수를 추가 하고 재부팅했습니다. 이는 높은 CPU 사용량 문제를 해결합니다.

이 명령에서 잘못된 점을 발견했습니다. grep . -r /sys/firmware/acpi/interrupts/

질문: /sys/firmware/acpi/interrupts/gpe17: 3491042 EN enabled unmasked

답변4

Linux Lite 5.2, MacBook Pro 9.2, Bios 233.0.0.0(2020년 6월 10일)에서 gpe17 및 sci 인터럽트에 문제가 있습니다.

위의 Peter Nowee의 솔루션이 작동합니다!

systemctl을 사용하여 차단했습니다.

  1. 파일 만들기/etc/systemd/system/mask-gpe17.service
  2. 다음 줄을 복사하고 파일을 저장합니다.
    [Unit]
    Description=Mask GPE 17
    
    [Service]
    ExecStart=/usr/bin/bash -c 'echo "mask" > /sys/firmware/acpi/interrupts/gpe17'
    
    [Install]
    WantedBy=multi-user.target
    
  3. 파일 만들기/etc/systemd/system/mask-sci.service
  4. 다음 줄을 복사하고 파일을 저장합니다.
    [Unit]
    Description=Mask SCI
    
    [Service]
    ExecStart=/usr/bin/bash -c 'echo "mask" > /sys/firmware/acpi/interrupts/sci'
    
    [Install]
    WantedBy=multi-user.target
    
  5. 그런 다음 터미널에서 서비스를 활성화합니다.
    sudo systemctl enable mask-gpe17.service
    
    sudo systemctl enable mask-sci.service
    

관련 정보