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