• Vitaly Kuznetsov's avatar
    KVM: selftests: fix ucall on x86 · 90a48843
    Vitaly Kuznetsov authored
    After commit e8bb4755eea2("KVM: selftests: Split ucall.c into architecture
    specific files") selftests which use ucall on x86 started segfaulting and
    apparently it's gcc to blame: it "optimizes" ucall() function throwing away
    va_start/va_end part because it thinks the structure is not being used.
    Previously, it couldn't do that because the there was also MMIO version and
    the decision which particular implementation to use was done at runtime.
    
    With older gccs it's possible to solve the problem by adding 'volatile'
    to 'struct ucall' but at least with gcc-8.3 this trick doesn't work.
    
    'memory' clobber seems to do the job.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    90a48843
ucall.c 1.12 KB