amd64/171355: FreeBSD 9.1rc1 (and 10-HEAD) not booting on HP
Pavilion g6 2147sl
Alexander Motin
mav at FreeBSD.org
Sun Sep 9 19:50:13 UTC 2012
The following reply was made to PR amd64/171355; it has been noted by GNATS.
From: Alexander Motin <mav at FreeBSD.org>
To: Stefano Marinelli <stefano at dragas.it>
Cc: attilio at freebsd.org, bug-followup at FreeBSD.org,
John Baldwin <jhb at freebsd.org>,
re at FreeBSD.org
Subject: Re: amd64/171355: FreeBSD 9.1rc1 (and 10-HEAD) not booting on HP
Pavilion g6 2147sl
Date: Sun, 09 Sep 2012 22:49:10 +0300
On 09.09.2012 22:27, Stefano Marinelli wrote:
>> It looks like the problem is in HPET timer operation. There are number of known and handled problems with AMD HPETs, but seems like you've found new one. Unluckily, the part of the log about HPET timer didn't fit into the message buffer. The buffer can be tuned with tunable kern.msgbufsize. Default value is 98304. You may try to double it. The specified value must be multiple of 4096.
>
> Ok, I rised it and I think the whole dmesg is now on the file.
> The link is: http://www.dragas.org/~draga/dmesg.txt
Thanks, that explains a lot. AMD started to use their proper vendor ID
for HPET, but seems haven't fixed level-triggered interrupts and haven't
implemented (removed?) message interrupts. All together it broke
workaround in HPET driver that supposed to block HPET by default in such
cases. Such patch should restore it:
--- acpi_hpet.c (revision 240235)
+++ acpi_hpet.c (working copy)
@@ -57,6 +57,7 @@
#endif
#define HPET_VENDID_AMD 0x4353
+#define HPET_VENDID_AMD2 0x1022
#define HPET_VENDID_INTEL 0x8086
#define HPET_VENDID_NVIDIA 0x10de
#define HPET_VENDID_SW 0x1166
@@ -505,7 +506,7 @@
* properly, that makes it very unreliable - it freezes after any
* interrupt loss. Avoid legacy IRQs for AMD.
*/
- if (vendor == HPET_VENDID_AMD)
+ if (vendor == HPET_VENDID_AMD || vendor == HPET_VENDID_AMD2)
sc->allowed_irqs = 0x00000000;
/*
* NVidia MCP5x chipsets have number of unexplained interrupt
> Also, please note there's another problem on this machine: CPU never goes to low power, keeping fans always on and keeping power consumption high. On Linux, I can see the cpu lowering its frequencies. On FreeBSD, it seems it can't detect lower than c1 statuses and other frequencies:
>
> [root at pcbsd-8515] ~# sysctl -a | grep cpu
> cpu HAMMER
> device cpufreq
> kern.ccpu: 0
> kern.sched.cpusetsize: 8
> <cpu count="2" mask="3">0, 1</cpu>
> <cpu count="2" mask="3">0, 1</cpu>
> kern.smp.cpus: 2
> kern.smp.maxcpus: 64
> net.inet.tcp.per_cpu_timers: 0
> debug.acpi.cpu_unordered: 0
> debug.cpufreq.verbose: 0
> debug.cpufreq.lowest: 0
> hw.ncpu: 2
> hw.acpi.cpu.cx_lowest: C1
> security.jail.param.cpuset.id: 0
> dev.cpu.0.%desc: ACPI CPU
> dev.cpu.0.%driver: cpu
> dev.cpu.0.%location: handle=\_PR_.C000
> dev.cpu.0.%pnpinfo: _HID=none _UID=0
> dev.cpu.0.%parent: acpi0
> dev.cpu.0.cx_supported: C1/0 C2/100
> dev.cpu.0.cx_lowest: C1
> dev.cpu.0.cx_usage: 100.00% 0.00% last 305us
> dev.cpu.1.%desc: ACPI CPU
> dev.cpu.1.%driver: cpu
> dev.cpu.1.%location: handle=\_PR_.C001
> dev.cpu.1.%pnpinfo: _HID=none _UID=0
> dev.cpu.1.%parent: acpi0
> dev.cpu.1.cx_supported: C1/0 C2/100
> dev.cpu.1.cx_lowest: C1
> dev.cpu.1.cx_usage: 100.00% 0.00% last 8264us
> dev.acpi_perf.0.%parent: cpu0
> dev.acpi_perf.1.%parent: cpu1
I can't say about frequency control, never looked inside AMD's PowerNow;
but C-states are detected as I can see. You should just enable them by
adding to /etc/rc.conf lines:
performance_cx_lowest="C2"
economy_cx_lowest="C2"
--
Alexander Motin
More information about the freebsd-amd64
mailing list