ACPI regression on recent 7.0-STABLE: HPET stops working

Oleg V. Nauman oleg at opentransfer.com
Tue Jul 22 09:23:22 UTC 2008


Quoting John Baldwin <jhb at freebsd.org>:

> On Monday 21 July 2008 06:07:52 am Oleg V. Nauman wrote:
>> Quoting "Oleg V. Nauman" <oleg at opentransfer.com>:
>>
>> > Quoting Jeremy Chadwick <koitsu at FreeBSD.org>:
>> >
>> >> On Sat, Jul 19, 2008 at 10:03:15AM +0300, Oleg V. Nauman wrote:
>> >>> It seems to be something was changed with ACPI support on 7.0-STABLE so
>> >>> my next system upgrade ended with ACPI HPET not working anymore on my
>> >>> ASUS A9Rp laptop.
>> >>>
>> >>> Here is the part of /var/log/dmesg.today dated July 13:
>> >>>
>> >>> FreeBSD 7.0-STABLE #65: Tue Jul  8 22:05:07 EEST 2008
>> >>>    root at rainhaven.theweb.org.ua:/usr/src/sys/i386/compile/oleg2
>> >>> [..]
>> >>> acpi0: <A M I OEMRSDT> on motherboard
>> >>> acpi0: Overriding SCI Interrupt from IRQ 9 to IRQ 21
>> >>> acpi0: [ITHREAD]
>> >>> acpi0: Power Button (fixed)
>> >>> acpi0: reservation of 0, a0000 (3) failed
>> >>> acpi0: reservation of 100000, 77f00000 (3) failed
>> >>> Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
>> >>> acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
>> >>> acpi_ec0: <Embedded Controller: GPE 0x18> port 0x62,0x66 on acpi0
>> >>> acpi_hpet0: <High Precision Event Timer> iomem
>> >>> 0xfed00000-0xfed003ff on acpi0
>> >>> Timecounter "HPET" frequency 14318180 Hz quality 900
>> >>>
>> >>> Here is the fresh dmesg output info:
>> >>>
>> >>> FreeBSD 7.0-STABLE #66: Tue Jul 15 22:11:27 EEST 2008
>> >>>    root at rainhaven.theweb.org.ua:/usr/src/sys/i386/compile/oleg2
>> >>> [..]
>> >>> acpi0: <A M I OEMRSDT> on motherboard
>> >>> acpi0: Overriding SCI Interrupt from IRQ 9 to IRQ 21
>> >>> acpi0: [ITHREAD]
>> >>> acpi0: Power Button (fixed)
>> >>> acpi0: reservation of 0, a0000 (3) failed
>> >>> acpi0: reservation of 100000, 77f00000 (3) failed
>> >>> Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
>> >>> acpi_timer0: <32-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
>> >>> [..]
>> >>> acpi_hpet0: <High Precision Event Timer> iomem
>> >>> 0xfed00000-0xfed003ff on acpi0
>> >>> device_attach: acpi_hpet0 attach returned 12
>> >>>
>> >>> And the part of actual sysctl kern.timecounter output:
>> >>>
>> >>> kern.timecounter.choice: TSC(800) ACPI-safe(850) i8254(0)
> dummy(-1000000)
>> >>> kern.timecounter.hardware: ACPI-safe
>> >>
>> >> Seems okay here:
>> >>
>> >> FreeBSD icarus.home.lan 7.0-STABLE FreeBSD 7.0-STABLE #0: Sat Jul
>> >> 12  10:53:08 PDT 2008
>> >> root at icarus.home.lan:/usr/obj/usr/src/sys/PDSMI_PLUS_amd64  amd64
>> >>
>> >> acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0
>> >> acpi_hpet0: <High Precision Event Timer> iomem
>> >> 0xfed00000-0xfed003ff on acpi0
>> >> Timecounter "i8254" frequency 1193182 Hz quality 0
>> >> Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
>> >> Timecounter "HPET" frequency 14318180 Hz quality 900
>> >> Timecounters tick every 1.000 msec
>> >>
>> >> kern.timecounter.choice: TSC(-100) HPET(900) ACPI-fast(1000)
>> >> i8254(0) dummy(-1000000)
>> >> kern.timecounter.hardware: ACPI-fast
>> >>
>> >> You sure you haven't upgraded your BIOS or something and forgot to
>> >> re-enable HPET?
>> >
>> >  No it was not upgraded.. Have no option to enable/disable HPET through
>> > BIOS settings though
>>
>>   I was unclear a bit or so. There are no ACPI related settings in my
>> laptop's BIOS.
>>
>>   Well.. Backout 1.243.2.3 revision of /usr/src/sys/dev/acpica/acpi.c
>> (committed to RELENG_7 at July 10 by jhb) fixes this issue for me:
>>
>> acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on
> acpi0
>> Timecounter "HPET" frequency 14318180 Hz quality 900
>>
>> kern.timecounter.choice: TSC(800) HPET(900) ACPI-safe(850) i8254(0)
>> dummy(-1000000)
>> kern.timecounter.hardware: HPET
>>
>>   Hopefully it helps to understand what is went wrong there.
>
> Ok, so the attempt to allocate the resource is failing for some reason.  Can
> you get output from 'devinfo -r' and 'devinfo -u'?

  Of course..

The kernel with 1.243.2.2 revision of /usr/src/sys/dev/acpica/acpi.c  
(so HPET working for me):

  devinfo -r output:

nexus0
   apic0
   ram0
       I/O memory addresses:
           0x0-0x9efff
           0x100000-0x77fcffff
   npx0
   acpi0
       Interrupt request lines:
           21
       I/O ports:
           0x10-0x1f
           0x22-0x3f
           0x63
           0x65
           0x67-0x6f
           0x72-0x7f
           0x80
           0x84-0x86
           0x88
           0x8c-0x8e
           0x90-0x9f
           0xa2-0xbf
           0xe0-0xef
           0x250-0x25f
           0x40b
           0x480-0x4bf
           0x4d0-0x4d1
           0x4d6
           0x500-0x53f
           0x800-0x89f
           0x900-0x90f
           0x910-0x91f
           0xc00-0xc01
           0xc14
           0xc50-0xc51
           0xc52
           0xc6c
           0xc6f
           0xcd4-0xcd5
           0xcd6-0xcd7
           0xcd8-0xcdf
           0x4000-0x4004
           0x4005-0x40ff
       I/O memory addresses:
           0xc0000-0xcffff
           0xe0000-0xfffff
           0xe0000000-0xefffffff
           0xfec00000-0xfec00fff
           0xfee00000-0xfee00fff
           0xfff80000-0xffffffff
     cpu0
         ACPI I/O ports:
             0x814
             0x815
       coretemp0
       p4tcc0
       cpufreq0
     pcib0
       pci0
         hostb0
         pcib1
           pci1
             vgapci0
                 I/O ports:
                     0x9800-0x98ff
                 I/O memory addresses:
                     0xc0000000-0xcfffffff
                     0xfe1f0000-0xfe1fffff
         ohci0
             Interrupt request lines:
                 19
             I/O memory addresses:
                 0xfebff000-0xfebfffff
           usb0
             uhub0
               ums0
         ohci1
             I/O memory addresses:
                 0xfebfe000-0xfebfefff
           usb1
             uhub1
         ehci0
             I/O memory addresses:
                 0xfebfd000-0xfebfdfff
           usb2
             uhub2
         atapci0
             I/O ports:
                 0x170-0x177
                 0x1f0-0x1f7
                 0x376
                 0x3f6
                 0xff00-0xff0f
           ata0
               Interrupt request lines:
                   14
             acd0
             atapicam0
           ata1
               Interrupt request lines:
                   15
             ad2
             atapicam1
         pcm0
             Interrupt request lines:
                 16
             I/O memory addresses:
                 0xfebf8000-0xfebfbfff
         isab0
           isa0
             sc0
             vga0
                 I/O ports:
                     0x3c0-0x3df
                 I/O memory addresses:
                     0xa0000-0xbffff
             orm0
                 ACPI I/O memory addresses:
                     0xc0000-0xccfff
             pmtimer0
         pcib2
           pci2
             rl0
                 Interrupt request lines:
                     20
                 I/O ports:
                     0xb800-0xb8ff
                 I/O memory addresses:
                     0xfeaffc00-0xfeaffcff
               miibus0
                 rlphy0
             cbb0
                 I/O memory addresses:
                     0xfe200000-0xfe200fff
               cardbus0
               pccard0
     atpic0
     atdma0
     attimer0
     attimer1
     npxisa0
     acpi_sysresource0
     acpi_sysresource1
     atkbdc0
         I/O ports:
             0x60
             0x64
       atkbd0
           Interrupt request lines:
               1
     psmcpnp0
     acpi_sysresource2
     acpi_ec0
         I/O ports:
             0x62
             0x66
     acpi_lid0
     acpi_sysresource3
     acpi_acad0
     battery0
     acpi_sysresource4
     pci_link0
     pci_link1
     pci_link2
     pci_link3
     pci_link4
     pci_link5
     pci_link6
     pci_link7
     acpi_button0
     acpi_button1
     acpi_tz0
     acpi_timer0
         ACPI I/O ports:
             0x808-0x80b
     acpi_hpet0
         I/O memory addresses:
             0xfed00000-0xfed003ff


devinfo -u output:

Interrupt request lines:
     0 (root0)
     1 (atkbd0)
     3-8 (root0)
     10-13 (root0)
     14 (ata0)
     15 (ata1)
     16 (pcm0)
     17-18 (root0)
     19 (ohci0)
     20 (rl0)
     21 (acpi0)
     22-23 (root0)
DMA request lines:
     0-7 (root0)
I/O ports:
     0x0-0xf (root0)
     0x10-0x1f (acpi0)
     0x20-0x21 (root0)
     0x22-0x3f (acpi0)
     0x40-0x5f (root0)
     0x60 (atkbdc0)
     0x61 (root0)
     0x62 (acpi_ec0)
     0x63 (acpi0)
     0x64 (atkbdc0)
     0x65 (acpi0)
     0x66 (acpi_ec0)
     0x67-0x6f (acpi0)
     0x70-0x71 (root0)
     0x72-0x7f (acpi0)
     0x80 (acpi0)
     0x81-0x83 (root0)
     0x84-0x86 (acpi0)
     0x87 (root0)
     0x88 (acpi0)
     0x89-0x8b (root0)
     0x8c-0x8e (acpi0)
     0x8f (root0)
     0x90-0x9f (acpi0)
     0xa0-0xa1 (root0)
     0xa2-0xbf (acpi0)
     0xc0-0xdf (root0)
     0xe0-0xef (acpi0)
     0xf0-0x16f (root0)
     0x170-0x177 (atapci0)
     0x178-0x1ef (root0)
     0x1f0-0x1f7 (atapci0)
     0x1f8-0x24f (root0)
     0x250-0x25f (acpi0)
     0x260-0x375 (root0)
     0x376 (atapci0)
     0x377-0x3bf (root0)
     0x3c0-0x3df (vga0)
     0x3e0-0x3f5 (root0)
     0x3f6 (atapci0)
     0x3f7-0x40a (root0)
     0x40b (acpi0)
     0x40c-0x47f (root0)
     0x480-0x4bf (acpi0)
     0x4c0-0x4cf (root0)
     0x4d0-0x4d1 (acpi0)
     0x4d2-0x4d5 (root0)
     0x4d6 (acpi0)
     0x4d7-0x4ff (root0)
     0x500-0x53f (acpi0)
     0x540-0x7ff (root0)
     0x800-0x89f (acpi0)
     0x8a0-0x8ff (root0)
     0x900-0x90f (acpi0)
     0x910-0x91f (acpi0)
     0x920-0xaff (root0)
     0xb00-0xb0f (ichsmb0)
     0xb10-0xbff (root0)
     0xc00-0xc01 (acpi0)
     0xc02-0xc13 (root0)
     0xc14 (acpi0)
     0xc15-0xc4f (root0)
     0xc50-0xc51 (acpi0)
     0xc52 (acpi0)
     0xc53-0xc6b (root0)
     0xc6c (acpi0)
     0xc6d-0xc6e (root0)
     0xc6f (acpi0)
     0xc70-0xcd3 (root0)
     0xcd4-0xcd5 (acpi0)
     0xcd6-0xcd7 (acpi0)
     0xcd8-0xcdf (acpi0)
     0xce0-0x3fff (root0)
     0x4000-0x4004 (acpi0)
     0x4005-0x40ff (acpi0)
     0x4100-0x97ff (root0)
     0x9800-0x98ff (vgapci0)
     0x9900-0xb7ff (root0)
     0xb800-0xb8ff (rl0)
     0xb900-0xfeff (root0)
     0xff00-0xff0f (atapci0)
     0xff10-0xffff (root0)
I/O memory addresses:
     0x0-0x9efff (ram0)
     0x9f000-0x9ffff (root0)
     0xa0000-0xbffff (vga0)
     0xc0000-0xcffff (acpi0)
     0xd0000-0xdffff (root0)
     0xe0000-0xfffff (acpi0)
     0x100000-0x77fcffff (ram0)
     0x77fd0000-0xbfffffff (root0)
     0xc0000000-0xcfffffff (vgapci0)
     0xd0000000-0xdfffffff (root0)
     0xe0000000-0xefffffff (acpi0)
     0xf0000000-0xfe1effff (root0)
     0xfe1f0000-0xfe1fffff (vgapci0)
     0xfe200000-0xfe200fff (cbb0)
     0xfe201000-0xfeaff3ff (root0)
     0xfeaff400-0xfeaff4ff ----
     0xfeaff500-0xfeaff7ff (root0)
     0xfeaff800-0xfeaff8ff ----
     0xfeaff900-0xfeaffbff (root0)
     0xfeaffc00-0xfeaffcff (rl0)
     0xfeaffd00-0xfebf7fff (root0)
     0xfebf8000-0xfebfbfff (pcm0)
     0xfebfc000-0xfebfcfff (root0)
     0xfebfd000-0xfebfdfff (ehci0)
     0xfebfe000-0xfebfefff (ohci1)
     0xfebff000-0xfebfffff (ohci0)
     0xfec00000-0xfec00fff (acpi0)
     0xfec01000-0xfecfffff (root0)
     0xfed00000-0xfed003ff (acpi_hpet0)
     0xfed00400-0xfedfffff (root0)
     0xfee00000-0xfee00fff (acpi0)
     0xfee01000-0xfff7ffff (root0)
     0xfff80000-0xffffffff (acpi0)
ACPI I/O ports:
     0x10-0x1f (root0)
     0x22-0x3f (root0)
     0x63 (root0)
     0x65 (root0)
     0x67-0x6f (root0)
     0x72-0x80 (root0)
     0x84-0x86 (root0)
     0x88 (root0)
     0x8c-0x8e (root0)
     0x90-0x9f (root0)
     0xa2-0xbf (root0)
     0xe0-0xef (root0)
     0x250-0x25f (root0)
     0x40b (root0)
     0x480-0x4bf (root0)
     0x4d0-0x4d1 (root0)
     0x4d6 (root0)
     0x500-0x53f (root0)
     0x800-0x807 (root0)
     0x808-0x80b (acpi_timer0)
     0x80c-0x813 (root0)
     0x814 (cpu0)
     0x815 (cpu0)
     0x816-0x89f (root0)
     0x900-0x91f (root0)
     0xc00-0xc01 (root0)
     0xc14 (root0)
     0xc50-0xc52 (root0)
     0xc6c (root0)
     0xc6f (root0)
     0xcd4-0xcdf (root0)
     0x4000-0x40ff (root0)
ACPI I/O memory addresses:
     0xc0000-0xccfff (orm0)
     0xcd000-0xcffff (root0)
     0xe0000-0xfffff (root0)
     0xe0000000-0xefffffff (root0)
     0xfec00000-0xfec00fff (root0)
     0xfee00000-0xfee00fff (root0)
     0xfff80000-0xffffffff (root0)

  For the kernel with 1.243.2.3 revision of  
/usr/src/sys/dev/acpica/acpi.c ( so HPET is not working for me):

Will not provide with full listings but just a diff comparing two  
states (this good one with HPET working and bad w/o it):

rainhaven# diff devinfo.r.good devinfo.r.bad
177,179d176
<     acpi_hpet0
<         I/O memory addresses:
<             0xfed00000-0xfed003ff

rainhaven# diff devinfo.u.good devinfo.u.bad
128c128
<     0xfed00000-0xfed003ff (acpi_hpet0)
---
>     0xfed00000-0xfed003ff (ichsmb0)

  So kernel with 1.243.2.3 revision of /usr/src/sys/dev/acpica/acpi.c  
allocates the region required to ichsmb0 instead HPET (it not helps to  
ichsmb0 because it never was working on my laptop but it is another  
story I think).

Thank you for looking into.


>
> --
> John Baldwin
>




More information about the freebsd-stable mailing list