On Mon, Oct 17, 2022 at 09:52:05PM +0100, Igor Petruk wrote: | It did not quite work in acpi_attach. I assume it is either because later | on all GPEs are enabled and disabled multiple times. | Or maybe because the struct is passed to another thread almost | at the end of acpi_attach. | | When I added it after this line, it worked: | https://github.com/openbsd/src/blob/62d244ed99f17c1263ee095bc7d8fa1f61df02fd/sys/dev/acpi/acpi.c#L2665. | | Now the OS works very smoothly, as expected. I don't know if | it was an optimal place, just added it somewhere where it made | an approximate sense.
As I have a similarly affected machine, I reached out to Igor to ask for his diff. After applying it to my system, I see immediate improvement: --- before ----------------------------------------------------------- interrupt total rate irq0/clock 9152280 399 irq0/ipi 40984 1 irq144/com0 104 0 irq96/acpi0 140950051 6159 irq145/inteldrm0 22 0 irq97/xhci0 22941 1 irq100/nvme0 41503 1 irq114/igc0:0 74073 3 irq115/igc0:1 15410 0 irq116/igc0:2 6582 0 irq117/igc0:3 26653 1 irq118/igc0 2 0 Total 150330605 6568 ---------------------------------------------------------------------- --- after ------------------------------------------------------------ interrupt total rate irq0/clock 1165904 399 irq0/ipi 80350 27 irq144/com0 105 0 irq96/acpi0 1 0 irq145/inteldrm0 19 0 irq97/xhci0 2974 1 irq100/nvme0 16924 5 irq114/igc0:0 8054 2 irq115/igc0:1 5278 1 irq116/igc0:2 35907 12 irq117/igc0:3 2354 0 irq118/igc0 2 0 Total 1317872 451 ---------------------------------------------------------------------- I'm including Igor's diff at the end of this mail (with his permission). I've been searching for a BIOS update for this system (HUNSN RS39, /var/db/acpi files available from [1]), but of course that's nowhere to be found. Thanks to Igor .. I'll continue searching for an updated BIOS (but I'm not holding my breath) Paul [1]: http://www.weirdnet.nl/openbsd/issues/2022/hunsn_rs39_acpi.tgz --- dmesg ------------------------------------------------------------ OpenBSD 7.2-current (GENERIC.MP) #25: Tue Oct 18 15:15:22 CEST 2022 [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP real mem = 34179575808 (32596MB) avail mem = 33126281216 (31591MB) random: good seed from bootblocks mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 3.3 @ 0x78d77000 (117 entries) bios0: vendor Techvision, LLC. version "5.19" date 04/19/2022 bios0: CncTion Jasper-4L efi0 at bios0: UEFI 2.7 efi0: American Megatrends rev 0x50013 acpi0 at bios0: ACPI 6.2 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP MCFG FIDT SSDT SSDT SSDT HPET APIC PRAM SSDT SSDT NHLT LPIT SSDT SSDT DBGP DBG2 SSDT DMAR SSDT TPM2 WSMT FPDT acpi0: wakeup devices PEGP(S4) PEGP(S4) PEGP(S4) PEGP(S4) SIO1(S3) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) PXSX(S4) RP05(S4) PXSX(S4) RP06(S4) [...] acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimcfg0 at acpi0 acpimcfg0: addr 0xc0000000, bus 0-255 acpihpet0 at acpi0: 19200000 Hz acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2893.74 MHz, 06-9c-00 cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu0: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges cpu0: apic clock running at 38MHz cpu0: mwait min=64, max=64, C-substates=0.2.0.2.2.1.1.1, IBE cpu1 at mainbus0: apid 2 (application processor) cpu1: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2893.74 MHz, 06-9c-00 cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu1: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu1: smt 0, core 1, package 0 cpu2 at mainbus0: apid 4 (application processor) cpu2: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2793.96 MHz, 06-9c-00 cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu2: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu2: smt 0, core 2, package 0 cpu3 at mainbus0: apid 6 (application processor) cpu3: Intel(R) Celeron(R) N5105 @ 2.00GHz, 2793.96 MHz, 06-9c-00 cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND,NXE,RDTSCP,LONG,LAHF,3DNOWP,PERF,ITSC,FSGSBASE,TSC_ADJUST,SMEP,ERMS,RDSEED,SMAP,CLFLUSHOPT,CLWB,PT,SHA,UMIP,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu3: 32KB 64b/line 8-way D-cache, 32KB 64b/line 8-way I-cache, 1MB 64b/line 12-way L2 cache, 4MB 64b/line 16-way L3 cache cpu3: smt 0, core 3, package 0 ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 120 pins acpiprt0 at acpi0: bus 0 (PC00) acpiprt1 at acpi0: bus 1 (RP01) acpiprt2 at acpi0: bus -1 (RP02) acpiprt3 at acpi0: bus -1 (RP03) acpiprt4 at acpi0: bus -1 (RP04) acpiprt5 at acpi0: bus 2 (RP05) acpiprt6 at acpi0: bus 3 (RP06) acpiprt7 at acpi0: bus 4 (RP07) acpiprt8 at acpi0: bus 5 (RP08) acpiprt9 at acpi0: bus -1 (RP09) acpiprt10 at acpi0: bus -1 (RP10) acpiprt11 at acpi0: bus -1 (RP11) acpiprt12 at acpi0: bus -1 (RP12) acpiprt13 at acpi0: bus -1 (RP13) acpiprt14 at acpi0: bus -1 (RP14) acpiprt15 at acpi0: bus -1 (RP15) acpiprt16 at acpi0: bus -1 (RP16) acpiprt17 at acpi0: bus -1 (RP17) acpiprt18 at acpi0: bus -1 (RP18) acpiprt19 at acpi0: bus -1 (RP19) acpiprt20 at acpi0: bus -1 (RP20) acpiprt21 at acpi0: bus -1 (RP21) acpiprt22 at acpi0: bus -1 (RP22) acpiprt23 at acpi0: bus -1 (RP23) acpiprt24 at acpi0: bus -1 (RP24) acpiec0 at acpi0: not present acpipci0 at acpi0 PC00: 0x00000000 0x00000011 0x00000001 com0 at acpi0 UAR1 addr 0x3f8/0x8 irq 4: ns16550a, 16 byte fifo com0: console "ACPI000E" at acpi0 not configured acpibtn0 at acpi0: SLPB "PNP0C14" at acpi0 not configured "PNP0C14" at acpi0 not configured "INT33A1" at acpi0 not configured acpibtn1 at acpi0: PWRB tpm0 at acpi0 TPM_ 2.0 (CRB) addr 0xfed40000/0x5000, device 0x00000000 rev 0x0 "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured "PNP0C0B" at acpi0 not configured acpipwrres0 at acpi0: WRST acpicpu0 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), C1(1000@1 mwait.1), PSS acpicpu1 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), C1(1000@1 mwait.1), PSS acpicpu2 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), C1(1000@1 mwait.1), PSS acpicpu3 at acpi0: C3(200@1048 mwait.1@0x60), C2(200@253 mwait.1@0x31), C1(1000@1 mwait.1), PSS acpipwrres1 at acpi0: FN00, resource for FAN0 acpipwrres2 at acpi0: FN01, resource for FAN1 acpipwrres3 at acpi0: FN02, resource for FAN2 acpipwrres4 at acpi0: FN03, resource for FAN3 acpipwrres5 at acpi0: FN04, resource for FAN4 acpitz0 at acpi0: critical temperature is 119 degC acpipwrres6 at acpi0: PIN_ acpivideo0 at acpi0: GFX0 acpivout0 at acpivideo0: DD1F acpivout1 at acpivideo0: DD2F cpu0: Enhanced SpeedStep 2893 MHz: speeds: 2001, 2000, 1900, 1800, 1700, 1600, 1500, 1400, 1300, 1200, 1100, 1000, 900, 800 MHz pci0 at mainbus0 bus 0 0:31:5: mem address conflict 0xfe010000/0x1000 pchb0 at pci0 dev 0 function 0 "Intel Jasper Lake Host" rev 0x00 inteldrm0 at pci0 dev 2 function 0 "Intel UHD Graphics" rev 0x01 drm0 at inteldrm0 inteldrm0: msi, JASPERLAKE, gen 11 "Intel Jasper Lake DPTF" rev 0x00 at pci0 dev 4 function 0 not configured xhci0 at pci0 dev 20 function 0 "Intel Jasper Lake xHCI" rev 0x01: msi, xHCI 1.10 usb0 at xhci0: USB revision 3.0 uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 addr 1 "Intel Jasper Lake Shared SRAM" rev 0x01 at pci0 dev 20 function 2 not configured "Intel Jasper Lake HECI" rev 0x01 at pci0 dev 22 function 0 not configured ahci0 at pci0 dev 23 function 0 "Intel Jasper Lake AHCI" rev 0x01: msi, AHCI 1.3.1 ahci0: PHY offline on port 0 scsibus1 at ahci0: 32 targets ppb0 at pci0 dev 28 function 0 "Intel Jasper Lake PCIE" rev 0x01: msi pci1 at ppb0 bus 1 nvme0 at pci1 dev 0 function 0 vendor "Intel", unknown product 0xf1aa rev 0x03: msix, NVMe 1.4 nvme0: INTEL SSDPEKNU512GZ, firmware 002C, serial BTKA15001W66512A scsibus2 at nvme0: 2 targets, initiator 0 sd0 at scsibus2 targ 1 lun 0: <NVMe, INTEL SSDPEKNU51, 002C> sd0: 488386MB, 512 bytes/sector, 1000215216 sectors ppb1 at pci0 dev 28 function 4 "Intel Jasper Lake PCIE" rev 0x01: msi pci2 at ppb1 bus 2 igc0 at pci2 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 60:be:b4:02:9e:70 ppb2 at pci0 dev 28 function 5 "Intel Jasper Lake PCIE" rev 0x01: msi pci3 at ppb2 bus 3 igc1 at pci3 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 60:be:b4:02:9e:71 ppb3 at pci0 dev 28 function 6 "Intel Jasper Lake PCIE" rev 0x01: msi pci4 at ppb3 bus 4 igc2 at pci4 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 60:be:b4:02:9e:72 ppb4 at pci0 dev 28 function 7 "Intel Jasper Lake PCIE" rev 0x01: msi pci5 at ppb4 bus 5 igc3 at pci5 dev 0 function 0 "Intel I225-V" rev 0x03, msix, 4 queues, address 60:be:b4:02:9e:73 pcib0 at pci0 dev 31 function 0 "Intel Jasper Lake eSPI" rev 0x01 azalia0 at pci0 dev 31 function 3 "Intel Jasper Lake HD Audio" rev 0x01: msi azalia0: no supported codecs ichiic0 at pci0 dev 31 function 4 "Intel Jasper Lake SMBus" rev 0x01: apic 2 int 16 iic0 at ichiic0 "Intel Jasper Lake SPI" rev 0x01 at pci0 dev 31 function 5 not configured isa0 at pcib0 isadma0 at isa0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 vmm0 at mainbus0: VMX/EPT efifb at mainbus0 not configured uhidev0 at uhub0 port 1 configuration 1 interface 0 "American Power Conversion Back-UPS ES 850G2 FW:938.a2 .I USB FW:a2" rev 2.00/0.90 addr 2 uhidev0: iclass 3/0, 128 report ids upd0 at uhidev0 uhid0 at uhidev0 reportid 1: input=0, output=0, feature=1 uhid1 at uhidev0 reportid 2: input=0, output=0, feature=1 uhid2 at uhidev0 reportid 3: input=0, output=0, feature=1 uhid3 at uhidev0 reportid 4: input=0, output=0, feature=1 uhid4 at uhidev0 reportid 5: input=0, output=0, feature=1 uhid5 at uhidev0 reportid 6: input=3, output=0, feature=3 uhid6 at uhidev0 reportid 7: input=0, output=0, feature=2 uhid7 at uhidev0 reportid 8: input=0, output=0, feature=2 uhid8 at uhidev0 reportid 9: input=0, output=0, feature=2 uhid9 at uhidev0 reportid 10: input=0, output=0, feature=1 uhid10 at uhidev0 reportid 11: input=0, output=0, feature=1 uhid11 at uhidev0 reportid 12: input=3, output=0, feature=3 uhid12 at uhidev0 reportid 13: input=0, output=0, feature=1 uhid13 at uhidev0 reportid 14: input=0, output=0, feature=1 uhid14 at uhidev0 reportid 15: input=0, output=0, feature=1 uhid15 at uhidev0 reportid 16: input=0, output=0, feature=1 uhid16 at uhidev0 reportid 17: input=0, output=0, feature=1 uhid17 at uhidev0 reportid 18: input=0, output=0, feature=1 uhid18 at uhidev0 reportid 21: input=0, output=0, feature=2 uhid19 at uhidev0 reportid 23: input=0, output=0, feature=2 uhid20 at uhidev0 reportid 24: input=0, output=0, feature=1 uhid21 at uhidev0 reportid 28: input=0, output=0, feature=3 uhid22 at uhidev0 reportid 32: input=0, output=0, feature=2 uhid23 at uhidev0 reportid 33: input=1, output=0, feature=1 uhid24 at uhidev0 reportid 34: input=0, output=0, feature=1 uhid25 at uhidev0 reportid 35: input=0, output=0, feature=2 uhid26 at uhidev0 reportid 36: input=0, output=0, feature=2 uhid27 at uhidev0 reportid 37: input=0, output=0, feature=2 uhid28 at uhidev0 reportid 38: input=0, output=0, feature=2 uhid29 at uhidev0 reportid 39: input=0, output=0, feature=2 uhid30 at uhidev0 reportid 40: input=0, output=0, feature=4 uhid31 at uhidev0 reportid 48: input=0, output=0, feature=1 uhid32 at uhidev0 reportid 49: input=0, output=0, feature=2 uhid33 at uhidev0 reportid 50: input=0, output=0, feature=2 uhid34 at uhidev0 reportid 51: input=0, output=0, feature=2 uhid35 at uhidev0 reportid 52: input=0, output=0, feature=2 uhid36 at uhidev0 reportid 53: input=0, output=0, feature=1 uhid37 at uhidev0 reportid 54: input=0, output=0, feature=1 uhid38 at uhidev0 reportid 64: input=0, output=0, feature=1 uhid39 at uhidev0 reportid 65: input=0, output=0, feature=2 uhid40 at uhidev0 reportid 66: input=0, output=0, feature=2 uhid41 at uhidev0 reportid 80: input=0, output=0, feature=1 uhid42 at uhidev0 reportid 81: input=0, output=0, feature=1 uhid43 at uhidev0 reportid 82: input=0, output=0, feature=2 uhid44 at uhidev0 reportid 96: input=0, output=0, feature=2 uhid45 at uhidev0 reportid 97: input=0, output=0, feature=1 uhid46 at uhidev0 reportid 98: input=0, output=0, feature=4 uhid47 at uhidev0 reportid 116: input=0, output=0, feature=4 uhid48 at uhidev0 reportid 117: input=0, output=0, feature=2 uhid49 at uhidev0 reportid 120: input=0, output=0, feature=1 uhid50 at uhidev0 reportid 121: input=0, output=0, feature=1 uhid51 at uhidev0 reportid 122: input=0, output=0, feature=4 uhid52 at uhidev0 reportid 123: input=0, output=0, feature=2 uhid53 at uhidev0 reportid 124: input=0, output=0, feature=1 uhid54 at uhidev0 reportid 125: input=0, output=0, feature=1 uhid55 at uhidev0 reportid 126: input=0, output=0, feature=1 uhid56 at uhidev0 reportid 127: input=0, output=0, feature=1 uhid57 at uhidev0 reportid 128: input=0, output=0, feature=1 uchcom0 at uhub0 port 3 configuration 1 interface 0 "QinHeng Electronics USB2.0-Ser!" rev 1.10/2.54 addr 3 uchcom0: CH341 ucom0 at uchcom0 vscsi0 at root scsibus3 at vscsi0: 256 targets softraid0 at root scsibus4 at softraid0: 256 targets root on sd0a (691ebcaf632d0de5.a) swap on sd0b dump on sd0b inteldrm0: 1024x768, 32bpp wsdisplay0 at inteldrm0 mux 1 wsdisplay0: screen 0-5 added (std, vt100 emulation) ---------------------------------------------------------------------- --- acpi_off.diff ---------------------------------------------------- Index: sys/dev/acpi/acpi.c =================================================================== RCS file: /cvs/src/sys/dev/acpi/acpi.c,v retrieving revision 1.418 diff -u -p -u -p -r1.418 acpi.c --- sys/dev/acpi/acpi.c 13 Sep 2022 17:14:54 -0000 1.418 +++ sys/dev/acpi/acpi.c 18 Oct 2022 10:04:30 -0000 @@ -97,6 +97,7 @@ void acpi_init_gpes(struct acpi_softc *) void acpi_disable_allgpes(struct acpi_softc *); struct gpe_block *acpi_find_gpe(struct acpi_softc *, int); void acpi_enable_onegpe(struct acpi_softc *, int); +void acpi_disable_onegpe(struct acpi_softc *, int); int acpi_gpe(struct acpi_softc *, int, void *); void acpi_enable_rungpes(struct acpi_softc *); @@ -2231,6 +2232,19 @@ acpi_enable_onegpe(struct acpi_softc *sc acpi_write_pmreg(sc, ACPIREG_GPE_EN, gpe>>3, en | mask); } +void +acpi_disable_onegpe(struct acpi_softc *sc, int gpe) +{ + uint8_t mask, en; + + /* Read enabled register */ + mask = (1L << (gpe & 7)); + en = acpi_read_pmreg(sc, ACPIREG_GPE_EN, gpe>>3); + dnprintf(50, "disabling GPE %.2x (current: %sabled) %.2x\n", + gpe, (en & mask) ? "en" : "dis", en); + acpi_write_pmreg(sc, ACPIREG_GPE_EN, gpe>>3, en & ~mask); +} + /* Clear all GPEs */ void acpi_disable_allgpes(struct acpi_softc *sc) @@ -2663,6 +2677,8 @@ acpi_thread(void *arg) /* Enable handled GPEs here */ acpi_enable_rungpes(sc); + acpi_disable_onegpe(sc, 0x6f); + splx(s); } ---------------------------------------------------------------------- -- >++++++++[<++++++++++>-]<+++++++.>+++[<------>-]<.>+++[<+ +++++++++++>-]<.>++[<------------>-]<+.--------------.[-] http://www.weirdnet.nl/
