/* * Preemptible hypercalls * * Copyright (C) 2014 Citrix Systems R&D ltd. * * This source code is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. */ #include #include #ifndef CONFIG_PREEMPT /* * Some hypercalls issued by the toolstack can take many 10s of * seconds. Allow tasks running hypercalls via the privcmd driver to * be voluntarily preempted even if full kernel preemption is * disabled. * * Such preemptible hypercalls are bracketed by * xen_preemptible_hcall_begin() and xen_preemptible_hcall_end() * calls. */ DEFINE_PER_CPU(bool, xen_in_preemptible_hcall); EXPORT_SYMBOL_GPL(xen_in_preemptible_hcall); asmlinkage __visible void xen_maybe_preempt_hcall(void) { if (unlikely(__this_cpu_read(xen_in_preemptible_hcall) && need_resched())) { /* * Clear flag as we may be rescheduled on a different * cpu. */ __this_cpu_write(xen_in_preemptible_hcall, false); _cond_resched(); __this_cpu_write(xen_in_preemptible_hcall, true); } } #endif /* CONFIG_PREEMPT */ private-remove net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@HansenPartnership.com>2017-01-17 17:32:54 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2017-01-17 17:32:54 -0500
commit9208b75e048dda0d285904de9be7ab654a4b94fc (patch)
treeb3af58ccd11b9ea186d1388be263b8ae0cb829b3 /include/dt-bindings/clock/mpc512x-clock.h
parent2f5a31456ee80b37ef1170319fa134af0a1dfcc4 (diff)
parentffb58456589443ca572221fabbdef3db8483a779 (diff)
Merge remote-tracking branch 'mkp-scsi/fixes' into fixes
Diffstat (limited to 'include/dt-bindings/clock/mpc512x-clock.h')