On 4/6/21 10:16 AM, YASUOKA Masahiko wrote:
> Hi,
> 
> I'm sorry..  I send a wrong diff to the people.  The result from
> giovanni@ and mcmer seems wrong.  I suppose stu@ used the correct
> diff.
> 
> giovanni and mcmer, can you test with the correct diff again?
> 
> I attached the correct diff at last of this mail.
> 
new .tgz attached.

 Giovanni



> I'm sorry again.
> 
> On Tue, 6 Apr 2021 09:21:40 +0200
> Giovanni Bechis <giova...@paclan.it> wrote:
>> On Mon, Apr 05, 2021 at 07:14:49PM +0900, YASUOKA Masahiko wrote:
>>> Hi,
>>>
>>>> Another issue that I see is that people have not reported, at least
>> [...]
>>>> publicly, that this runs fine on their normal OpenBSD machines.
>>>
>>> Some dmesgs posted on public lists seems to have the same problem.
>>>
>>> https://marc.info/?l=openbsd-bugs&w=2&r=1&s=disabling+user+TSC&q=b
>>> https://marc.info/?l=openbsd-tech&w=2&r=1&s=disabling+user+TSC&q=b
>>> https://marc.info/?l=openbsd-ports&w=2&r=1&s=disabling+user+TSC&q=b
>>>
>>> For example,
>>>
>>> https://marc.info/?l=openbsd-bugs&m=161618496905444&w=2
>>>
>>> |Subject:    wg(4) crash
>>> |From:       Stuart Henderson <stu () spacehopper ! org>
>>> |bios0: vendor Dell Inc. version "2.9.0" date 12/06/2019
>>> |bios0: Dell Inc. PowerEdge R620
>>> |cpu1: disabling user TSC (skew=135)
>>> |cpu1: smt 0, core 0, package 1
>>>
>>> https://marc.info/?l=openbsd-ports&m=161306073708427&w=2
>>> |Subject:    Re: sysutils/nut README APC over USB device chgrp/chmod
>>> |From:       Marcus MERIGHI <mcmer-openbsd () tor ! at>
>>> |bios0: vendor American Megatrends Inc. version "3.1" date 06/07/2018
>>> |cpu11: disabling user TSC (skew=240)
>>> |cpu11: smt 0, core 3, package 1
>>>
>>> these 2 are real machine and using 2 CPU sockets.
>>>
>>> https://marc.info/?l=openbsd-ports&m=161562278114172&w=2
>>> |Subject:    ruby27 vs Puppet
>>> |From:       Giovanni Bechis <giovanni () paclan ! it>
>>> |bios0: vendor Phoenix Technologies LTD version "6.00" date 12/12/2018
>>> |bios0: VMware, Inc. VMware Virtual Platform
>>> |cpu1: disabling user TSC (skew=-12705)
>>>
>>> VMware.  seems the same problem of mine.
>>>
>>> I'll ask people to do the same test which cheloha@ write in previous
>>> mail.
>>>
>> Attached my data and dmesg produced by the script on my VMware vm.
>>
>>  Cheers
>>   Giovanni
> 
> Index: sys/arch/amd64/amd64/tsc.c
> ===================================================================
> RCS file: /var/cvs/openbsd/src/sys/arch/amd64/amd64/tsc.c,v
> retrieving revision 1.23
> diff -u -p -r1.23 tsc.c
> --- sys/arch/amd64/amd64/tsc.c        23 Feb 2021 04:44:30 -0000      1.23
> +++ sys/arch/amd64/amd64/tsc.c        5 Apr 2021 10:28:00 -0000
> @@ -311,16 +311,42 @@ tsc_read_bp(struct cpu_info *ci, uint64_
>       *aptscp = tsc_sync_val;
>  }
>  
> +#define      TSC_SYNC_NTIMES 1000
> +
> +static int tsc_difs[MAXCPUS][TSC_SYNC_NTIMES];
> +
> +void
> +tsc_debug(void)
> +{
> +     int i, cpuid = curcpu()->ci_cpuid;
> +
> +     for (i = 0; i < TSC_SYNC_NTIMES; i++) {
> +             if (i % 10 == 0)
> +                     printf("%5d", tsc_difs[cpuid][i]);
> +             else
> +                     printf(" %5d", tsc_difs[cpuid][i]);
> +             if (i % 10 == 9)
> +                     printf("\n");
> +     }
> +     printf("\n");
> +}
> +
>  void
>  tsc_sync_bp(struct cpu_info *ci)
>  {
> +     int i, mindif = INT_MAX, dif;
>       uint64_t bptsc, aptsc;
>  
> -     tsc_read_bp(ci, &bptsc, &aptsc); /* discarded - cache effects */
> -     tsc_read_bp(ci, &bptsc, &aptsc);
> +     for (i = 0; i < TSC_SYNC_NTIMES; i++) {
> +             tsc_read_bp(ci, &bptsc, &aptsc);
> +             dif = bptsc - aptsc;
> +             if (abs(dif) < abs(mindif))
> +                     mindif = dif;
> +             tsc_difs[ci->ci_cpuid][i] = dif;
> +     }
>  
>       /* Compute final value to adjust for skew. */
> -     ci->ci_tsc_skew = bptsc - aptsc;
> +     ci->ci_tsc_skew = mindif;
>  }
>  
>  /*
> @@ -351,8 +377,10 @@ tsc_post_ap(struct cpu_info *ci)
>  void
>  tsc_sync_ap(struct cpu_info *ci)
>  {
> -     tsc_post_ap(ci);
> -     tsc_post_ap(ci);
> +     int i;
> +
> +     for (i = 0; i < TSC_SYNC_NTIMES; i++)
> +             tsc_post_ap(ci);
>  }
>  
>  void
> 

Attachment: monotonic.tgz
Description: application/compressed-tar

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to