Skip to content
Snippets Groups Projects
Commit bed55674 authored by Waiman Long's avatar Waiman Long
Browse files

x86/xen: Rework the xen_{cpu,irq,mmu}_opsarrays

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2090231



commit 1462eb38
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu, 24 Jun 2021 11:41:22 +0200

    x86/xen: Rework the xen_{cpu,irq,mmu}_opsarrays

    In order to allow objtool to make sense of all the various paravirt
    functions, it needs to either parse whole pv_ops[] tables, or observe
    individual assignments in the form:

      bf87:       48 c7 05 00 00 00 00 00 00 00 00        movq   $0x0,0x0(%rip)
        bf92 <xen_init_spinlocks+0x5f>
        bf8a: R_X86_64_PC32     pv_ops+0x268

    As is, xen_cpu_ops[] is at offset +0 in pv_ops[] and could thus be
    parsed as a 'normal' pv_ops[] table, however xen_irq_ops[] and
    xen_mmu_ops[] are not.

    Worse, both the latter two are compiled into the individual assignment
    for by current GCC, but that's not something one can rely on.

    Therefore, convert all three into full pv_ops[] tables. This has the
    benefit of not needing to teach objtool about the offsets and
    resulting in more conservative code-gen.

Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20210624095149.057262522@infradead.org



Signed-off-by: default avatarWaiman Long <longman@redhat.com>
parent d219f089
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment