/* * Uniprocessor-only support functions. The counterpart to kernel/smp.c */ #include #include #include #include #include int smp_call_function_single(int cpu, void (*func) (void *info), void *info, int wait) { unsigned long flags; WARN_ON(cpu != 0); local_irq_save(flags); func(info); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(smp_call_function_single); int smp_call_function_single_async(int cpu, struct call_single_data *csd) { unsigned long flags; local_irq_save(flags); csd->func(csd->info); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(smp_call_function_single_async); int on_each_cpu(smp_call_func_t func, void *info, int wait) { unsigned long flags; local_irq_save(flags); func(info); local_irq_restore(flags); return 0; } EXPORT_SYMBOL(on_each_cpu); /* * Note we still need to test the mask even for UP * because we actually can get an empty mask from * code that on SMP might call us without the local * CPU in the mask. */ void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait) { unsigned long flags; if (cpumask_test_cpu(0, mask)) { local_irq_save(flags); func(info); local_irq_restore(flags); } } EXPORT_SYMBOL(on_each_cpu_mask); /* * Preemption is disabled here to make sure the cond_func is called under the * same condtions in UP and SMP. */ void on_each_cpu_cond(bool (*cond_func)(int cpu, void *info), smp_call_func_t func, void *info, bool wait, gfp_t gfp_flags) { unsigned long flags; preempt_disable(); if (cond_func(0, info)) { local_irq_save(flags); func(info); local_irq_restore(flags); } preempt_enable(); } EXPORT_SYMBOL(on_each_cpu_cond); int smp_call_on_cpu(unsigned int cpu, int (*func)(void *), void *par, bool phys) { int ret; if (cpu != 0) return -ENXIO; if (phys) hypervisor_pin_vcpu(0); ret = func(par); if (phys) hypervisor_pin_vcpu(-1); return ret; } EXPORT_SYMBOL_GPL(smp_call_on_cpu); href='/cgit.cgi/linux/net-next.git/diff/drivers/usb/mon/mon_main.c?id=3d88460dbd285e7f32437b530d5bb7cb916142fa'>diff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-02-09 17:46:30 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-09 17:46:30 -0800
commit3d88460dbd285e7f32437b530d5bb7cb916142fa (patch)
tree3cc4f479bb3813bb4804f5ed4d52a493003c9fa5 /drivers/usb/mon/mon_main.c
parent55aac6ef53e114c28170ee3f79065cfa8ca9cf3f (diff)
parent697d3a21615672b2bf7724a65755799260325dda (diff)
Merge tag 'drm-fixes-for-v4.10-rc8' of git://people.freedesktop.org/~airlied/linux
Pull drm fixes from Dave Airlie: "This should be the final set of drm fixes for 4.10: one vmwgfx boot fix, one vc4 fix, and a few i915 fixes: * tag 'drm-fixes-for-v4.10-rc8' of git://people.freedesktop.org/~airlied/linux: drm: vc4: adapt to new behaviour of drm_crtc.c drm/i915: Always convert incoming exec offsets to non-canonical drm/i915: Remove overzealous fence warn on runtime suspend drm/i915/bxt: Add MST support when do DPLL calculation drm/i915: don't warn about Skylake CPU - KabyPoint PCH combo drm/i915: fix i915 running as dom0 under Xen drm/i915: Flush untouched framebuffers before display on !llc drm/i915: fix use-after-free in page_flip_completed() drm/vmwgfx: Fix depth input into drm_mode_legacy_fb_format
Diffstat (limited to 'drivers/usb/mon/mon_main.c')