[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3.1 03/15] xen/x86: allow calling {sh/hap}_set_allocation with the idle domain
... and using the "preempted" parameter. The solution relies on just calling softirq_pending if the current domain is the idle domain. If such preemption happens, the caller should then call process_pending_softirqs in order to drain the pending softirqs, and then call {sh/hap}_set_allocation again to continue with it's execution. This allows us to call *_set_allocation() when building domain 0. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx> --- Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx> Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- Changes since v2: - Fix commit message. --- xen/arch/x86/mm/hap/hap.c | 4 +++- xen/arch/x86/mm/shadow/common.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c index f099e94..0645521 100644 --- a/xen/arch/x86/mm/hap/hap.c +++ b/xen/arch/x86/mm/hap/hap.c @@ -379,7 +379,9 @@ hap_set_allocation(struct domain *d, unsigned int pages, int *preempted) break; /* Check to see if we need to yield and try again */ - if ( preempted && hypercall_preempt_check() ) + if ( preempted && + (is_idle_vcpu(current) ? softirq_pending(smp_processor_id()) : + hypercall_preempt_check()) ) { *preempted = 1; return 0; diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index 065bdc7..b2e99c2 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -1679,7 +1679,9 @@ static int sh_set_allocation(struct domain *d, break; /* Check to see if we need to yield and try again */ - if ( preempted && hypercall_preempt_check() ) + if ( preempted && + (is_idle_vcpu(current) ? softirq_pending(smp_processor_id()) : + hypercall_preempt_check()) ) { *preempted = 1; return 0; -- 2.7.4 (Apple Git-66) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |