lkml.org 
[lkml]   [2020]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: static_branch_enable() does not work from a __init function?
+++ Peter Zijlstra [16/12/20 10:26 +0100]:
>On Wed, Dec 16, 2020 at 03:54:29AM +0000, Dexuan Cui wrote:
>> PS, I originally found: in arch/x86/kvm/vmx/vmx.c: vmx_init(), it looks
>> like the line "static_branch_enable(&enable_evmcs);" does not take effect
>> in a v5.4-based kernel, but does take effect in the v5.10 kernel in the
>> same x86-64 virtual machine on Hyper-V, so I made the above test module
>> to test static_branch_enable(), and found that static_branch_enable() in
>> the test module does not work with both v5.10 and my v5.4 kernel, if the
>> __init marker is used.

By the way, it probably works now because there was a workaround
merged in v5.10, that mentions this very issue:

commit 064eedf2c50f692088e1418c553084bf9c1432f8
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date: Wed Oct 14 16:33:46 2020 +0200

KVM: VMX: eVMCS: make evmcs_sanitize_exec_ctrls() work again

It was noticed that evmcs_sanitize_exec_ctrls() is not being executed
nowadays despite the code checking 'enable_evmcs' static key looking
correct. Turns out, static key magic doesn't work in '__init' section
(and it is unclear when things changed) but setup_vmcs_config() is called
only once per CPU so we don't really need it to. Switch to checking
'enlightened_vmcs' instead, it is supposed to be in sync with
'enable_evmcs'.

Opportunistically make evmcs_sanitize_exec_ctrls '__init' and drop unneeded
extra newline from it.

Reported-by: Yang Weijiang <weijiang.yang@intel.com>
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-Id: <20201014143346.2430936-1-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

\
 
 \ /
  Last update: 2020-12-16 13:41    [W:0.103 / U:0.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site