Loading arch/arm/xen/enlighten.c +19 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <xen/page.h> #include <xen/interface/sched.h> #include <xen/xen-ops.h> #include <asm/paravirt.h> #include <asm/xen/hypervisor.h> #include <asm/xen/hypercall.h> #include <asm/system_misc.h> Loading Loading @@ -79,6 +80,19 @@ int xen_unmap_domain_gfn_range(struct vm_area_struct *vma, } EXPORT_SYMBOL_GPL(xen_unmap_domain_gfn_range); static unsigned long long xen_stolen_accounting(int cpu) { struct vcpu_runstate_info state; BUG_ON(cpu != smp_processor_id()); xen_get_runstate_snapshot(&state); WARN_ON(state.state != RUNSTATE_running); return state.time[RUNSTATE_runnable] + state.time[RUNSTATE_offline]; } static void xen_percpu_init(void) { struct vcpu_register_vcpu_info info; Loading @@ -104,6 +118,8 @@ static void xen_percpu_init(void) BUG_ON(err); per_cpu(xen_vcpu, cpu) = vcpup; xen_setup_runstate_info(cpu); after_register_vcpu_info: enable_percpu_irq(xen_events_irq, 0); put_cpu(); Loading Loading @@ -271,6 +287,9 @@ static int __init xen_guest_init(void) register_cpu_notifier(&xen_cpu_notifier); pv_time_ops.steal_clock = xen_stolen_accounting; static_key_slow_inc(¶virt_steal_enabled); return 0; } early_initcall(xen_guest_init); Loading Loading
arch/arm/xen/enlighten.c +19 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #include <xen/page.h> #include <xen/interface/sched.h> #include <xen/xen-ops.h> #include <asm/paravirt.h> #include <asm/xen/hypervisor.h> #include <asm/xen/hypercall.h> #include <asm/system_misc.h> Loading Loading @@ -79,6 +80,19 @@ int xen_unmap_domain_gfn_range(struct vm_area_struct *vma, } EXPORT_SYMBOL_GPL(xen_unmap_domain_gfn_range); static unsigned long long xen_stolen_accounting(int cpu) { struct vcpu_runstate_info state; BUG_ON(cpu != smp_processor_id()); xen_get_runstate_snapshot(&state); WARN_ON(state.state != RUNSTATE_running); return state.time[RUNSTATE_runnable] + state.time[RUNSTATE_offline]; } static void xen_percpu_init(void) { struct vcpu_register_vcpu_info info; Loading @@ -104,6 +118,8 @@ static void xen_percpu_init(void) BUG_ON(err); per_cpu(xen_vcpu, cpu) = vcpup; xen_setup_runstate_info(cpu); after_register_vcpu_info: enable_percpu_irq(xen_events_irq, 0); put_cpu(); Loading Loading @@ -271,6 +287,9 @@ static int __init xen_guest_init(void) register_cpu_notifier(&xen_cpu_notifier); pv_time_ops.steal_clock = xen_stolen_accounting; static_key_slow_inc(¶virt_steal_enabled); return 0; } early_initcall(xen_guest_init); Loading