Tyan S3992-E: hpet no longer working

Bruce Evans brde at optusnet.com.au
Tue Jan 11 08:54:10 UTC 2011


On Tue, 11 Jan 2011, Alexander Motin wrote:

> Arno J. Klaassen wrote:
>> Sure .. that said, the BIOS I use is the last official release for this
>> board (Sept 2009) and not even a more recent beta-release is available.
>>
>> I would expect reporting a disabled device which cannot be enabled via
>> de BIOS a bug deserving a newer release.
>>
>> Anyway, this bug isn't very harmful for me, but the non-hpet
>> timecounters don't seem that fun either :
>>
>>  # uptime
>>    10:27PM  up 2 days,  5:44
>>
>>  # sysctl kern.timecounter.hardware kern.timecounter.choice
>>    kern.timecounter.hardware: ACPI-safe
>>    kern.timecounter.choice: TSC(-100) i8254(0) ACPI-safe(850) dummy(-1000000)
>>
>>  # vmstat -i | fgrep cpu:
>>    cpu0:timer                      38599321        199
>>    cpu6:timer                       2151003         11
>>    cpu1:timer                       7121075         36
>>    cpu3:timer                       1808269          9
>>    cpu5:timer                       3832463         19
>>    cpu2:timer                       2399988         12
>>    cpu7:timer                       2013444         10
>>    cpu4:timer                      21630368        111
>>
>>   (default HZ ....)
>>
>> Maybe I should try downgrading the BIOS?
>
> So what here seems not funny to you? Lower timer interrupt rate is not a
> bug but feature of 9-CURRENT.

They (cpu*:timer) also aren't timecounters :-).

Hmm, with hpet on FreeBSD cluster machines, there is now only hpet.  How
is statclock distributed with hpet?

I never properly reviewed the latest "irqN"-printing changes in systat,
and just noticed that they break printing of "irq" the usual case where
the interrupt name starts with "irqN:" (then systat removes "irqN:" and
never puts back "irq").

Not-so-quick fix:

% Index: vmstat.c
% ===================================================================
% RCS file: /home/ncvs/src/usr.bin/systat/vmstat.c,v
% retrieving revision 1.93
% diff -u -2 -r1.93 vmstat.c
% --- vmstat.c	11 Dec 2010 08:32:16 -0000	1.93
% +++ vmstat.c	11 Jan 2011 06:20:01 -0000
% @@ -244,5 +244,10 @@
%  				*--cp1 = '\0';
% 
% -			/* Convert "irqN: name" to "name irqN". */
% +			/*
% +			 * Convert "irqN: name" to "name irqN", "name N" or
% +			 * "name".  First reduce to "name"; then append
% +			 * " irqN"  if that fits, else " N" if that fits,
% +			 * else drop all of "N".
% +			 */
%  			if (strncmp(cp, "irq", 3) == 0) {
%  				cp1 = cp + 3;
% @@ -256,5 +261,8 @@
%  					cp2 = strdup(cp);
%  					bcopy(cp1, cp, sz - (cp1 - cp) + 1);
% -					if (sz <= 10 + 4) {
% +					if (sz <= 10 + 1) {
% +						strcat(cp, " ");
% +						strcat(cp, cp2);
% +					} else if (sz <= 10 + 4) {
%  						strcat(cp, " ");
%  						strcat(cp, cp2 + 3);
% @@ -266,5 +274,9 @@
%  			/*
%  			 * Convert "name irqN" to "name N" if the former is
% -			 * longer than the field width.
% +			 * longer than the field width.  This handles some
% +			 * cases where the original name did not start with
% +			 * "irqN".  We don't bother dropping partial "N"s in
% +			 * this case.  The "name" part may be too long in
% +			 * either case; then we blindly truncate it.
%  			 */
%  			if ((cp1 = strstr(cp, "irq")) != NULL &&

This restores part of rev.1.90, updates the first comment to match the code
changes in rev.1.90, and expands the last comment.

Bruce


More information about the freebsd-acpi mailing list