lkml.org 
[lkml]   [2017]   [Feb]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] hyperv: implement hv_get_tsc_page()
    Date
    To use Hyper-V TSC page clocksource from vDSO we need to make tsc_pg
    available. Implement hv_get_tsc_page() and add CONFIG_HYPERV_TSCPAGE to
    make #ifdef-s simple.

    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    ---
    arch/x86/hyperv/hv_init.c | 9 +++++++--
    arch/x86/include/asm/mshyperv.h | 8 ++++++++
    drivers/hv/Kconfig | 3 +++
    3 files changed, 18 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
    index b371d0e..0ce8485 100644
    --- a/arch/x86/hyperv/hv_init.c
    +++ b/arch/x86/hyperv/hv_init.c
    @@ -27,10 +27,15 @@
    #include <linux/clockchips.h>


    -#ifdef CONFIG_X86_64
    +#ifdef CONFIG_HYPERV_TSCPAGE

    static struct ms_hyperv_tsc_page *tsc_pg;

    +struct ms_hyperv_tsc_page *hv_get_tsc_page(void)
    +{
    + return tsc_pg;
    +}
    +
    static u64 read_hv_clock_tsc(struct clocksource *arg)
    {
    u64 current_tick;
    @@ -136,7 +141,7 @@ void hyperv_init(void)
    /*
    * Register Hyper-V specific clocksource.
    */
    -#ifdef CONFIG_X86_64
    +#ifdef CONFIG_HYPERV_TSCPAGE
    if (ms_hyperv.features & HV_X64_MSR_REFERENCE_TSC_AVAILABLE) {
    union hv_x64_msr_hypercall_contents tsc_msr;

    diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
    index f8dc370..14dd92c 100644
    --- a/arch/x86/include/asm/mshyperv.h
    +++ b/arch/x86/include/asm/mshyperv.h
    @@ -173,4 +173,12 @@ void hyperv_report_panic(struct pt_regs *regs);
    bool hv_is_hypercall_page_setup(void);
    void hyperv_cleanup(void);
    #endif
    +#ifdef CONFIG_HYPERV_TSCPAGE
    +struct ms_hyperv_tsc_page *hv_get_tsc_page(void);
    +#else
    +static inline struct ms_hyperv_tsc_page *hv_get_tsc_page(void)
    +{
    + return NULL;
    +}
    +#endif
    #endif
    diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig
    index 0403b51..c29cd53 100644
    --- a/drivers/hv/Kconfig
    +++ b/drivers/hv/Kconfig
    @@ -7,6 +7,9 @@ config HYPERV
    Select this option to run Linux as a Hyper-V client operating
    system.

    +config HYPERV_TSCPAGE
    + def_bool HYPERV && X86_64
    +
    config HYPERV_UTILS
    tristate "Microsoft Hyper-V Utilities driver"
    depends on HYPERV && CONNECTOR && NLS
    --
    2.9.3
    \
     
     \ /
      Last update: 2017-02-09 15:12    [W:2.873 / U:1.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site