lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAOAebxtxgrFCSezLSNUuF4z+3ZRw_GMF0oWm3XstPZNvHHNsVw@mail.gmail.com>
Date:   Wed, 29 Nov 2017 19:25:06 -0500
From:   Pavel Tatashin <pasha.tatashin@...cle.com>
To:     Abderrahmane Benbachir <abderrahmane.benbachir@...ymtl.ca>
Cc:     Peter Zijlstra <peterz@...radead.org>, rostedt@...dmis.org,
        linux-kernel@...r.kernel.org, mingo@...hat.com,
        Thomas Gleixner <tglx@...utronix.de>
Subject: Re: Very Early boot time stamps support

Hi Abderrahmane,

> I'm implementing a feature in ftrace to enable very early function tracing,
> I'm using tsc when x86_tsc feature is available, but it seems that you did
> similar work in your patch "[PATCH v9 0/6] Early boot time stamps for x86".
>
> I need to record timestamps at the start of start_kernel(), the first
> function to be traced is set_task_stack_end_magic.

Early boot time stamps are available only after platforms are
initialized. This happens in:

start_kernel()
 setup_arch()
  kvmclock_init() <-- right after this call.

This was a request from Thomas, not to invent a new TSC calibration,
and instead rely on what is already available.

So, while not covering the whole boot process, early boot clock is
still initialized pretty early.

Here a few ideas how to make early boot clock to initialize earlier.

1. kvm clock init is ugly and out of place compared to other hypervisors:

1207#ifdef CONFIG_KVM_GUEST
1208 kvmclock_init();
1209#endif

It should really be a part of platform init inside:

setup_arch();
  init_hypervisor_platform();
    x86_init.hyper.init_platform();

The reason why it is done later compared to the rest of hypervisors,
is because kvm waits for memblock to be initialized, but in reality
allocated memory can be part of bss section. This way we could move
tsc calibration about 200 lines above in setup_arch() function.

2. We could initialize TSC earlier only on those CPUs where hardware
tells us specifically TSC frequency i.e. cpuinfo(15) is available. See
native_calibrate_tsc() for an example. This is true for all the latest
Intel CPUs. Unfortunately, this does not work with qemu, as it returns
some garbage in cpuinfo(15), even when processor supports this feature
natively.

Thank you,
Pavel

>
> How early does the patch provide stable tsc ?
>
> This is the patch that need to use very early time stamps :
> https://lkml.org/lkml/2017/11/8/1031
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ