• P
    x86/tsc: Initialize cyc2ns when tsc frequency is determined · e2a9ca29
    Pavel Tatashin 提交于
    cyc2ns converts tsc to nanoseconds, and it is handled in a per-cpu data
    structure.
    
    Currently, the setup code for c2ns data for every possible CPU goes through
    the same sequence of calculations as for the boot CPU, but is based on the
    same tsc frequency as the boot CPU, and thus this is not necessary.
    
    Initialize the boot cpu when tsc frequency is determined. Copy the
    calculated data from the boot CPU to the other CPUs in tsc_init().
    
    In addition do the following:
    
     - Remove unnecessary zeroing of c2ns data by removing cyc2ns_data_init()
    
     - Split set_cyc2ns_scale() into two functions, so set_cyc2ns_scale() can be
       called when system is up, and wraps around __set_cyc2ns_scale() that can
       be called directly when system is booting but avoids saving restoring
       IRQs and going and waking up from idle.
    Suggested-by: NThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: NPavel Tatashin <pasha.tatashin@oracle.com>
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Cc: steven.sistare@oracle.com
    Cc: daniel.m.jordan@oracle.com
    Cc: linux@armlinux.org.uk
    Cc: schwidefsky@de.ibm.com
    Cc: heiko.carstens@de.ibm.com
    Cc: john.stultz@linaro.org
    Cc: sboyd@codeaurora.org
    Cc: hpa@zytor.com
    Cc: douly.fnst@cn.fujitsu.com
    Cc: peterz@infradead.org
    Cc: prarit@redhat.com
    Cc: feng.tang@intel.com
    Cc: pmladek@suse.com
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: linux-s390@vger.kernel.org
    Cc: boris.ostrovsky@oracle.com
    Cc: jgross@suse.com
    Cc: pbonzini@redhat.com
    Link: https://lkml.kernel.org/r/20180719205545.16512-21-pasha.tatashin@oracle.com
    e2a9ca29
tsc.c 37.4 KB