On Mon, 2007-10-01 at 16:46 -0700, Jeremy Fitzhardinge wrote:That's good, but this code does lose on native because we no longer simply replace the entire thing with noops. Perhaps inverting this and having (inline) helpers is the way to go? I'm thinking something like: static inline void paravirt_enter_lazy(enum paravirt_lazy_mode mode) { BUG_ON(x86_read_percpu(paravirt_lazy_mode) != PARAVIRT_LAZY_NONE); BUG_ON(preemptible()); x86_write_percpu(paravirt_lazy_mode, mode); } static inline void paravirt_exit_lazy(enum paravirt_lazy_mode mode) { BUG_ON(x86_read_percpu(paravirt_lazy_mode) != mode); BUG_ON(preemptible()); x86_write_percpu(paravirt_lazy_mode, PARAVIRT_LAZY_NONE); } The only trick would be that the flushes are so rarely required it's probably worth putting the unlikely() in the top level: static void arch_flush_lazy_cpu_mode(void) { if (unlikely(x86_read_percpu(paravirt_lazy_mode)) { PVOP_VCALL0(cpu_ops.enter_lazy); PVOP_VCALL0(cpu_ops.exit_lazy); } } static void arch_flush_lazy_mmy_mode(void) { if (unlikely(x86_read_percpu(paravirt_lazy_mode)) { PVOP_VCALL0(mmu_ops.enter_lazy); PVOP_VCALL0(mmu_ops.exit_lazy); } } Thoughts? Rusty. -
| David Miller | Re: Slow DOWN, please!!! |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Heiko Carstens | Re: -mm merge plans for 2.6.23 -- sys_fallocate |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| David Miller | [GIT]: Networking |
| Jan Engelhardt | Re: iptables very slow after commit 784544739a25c30637397ace5489eeb6e15d7d49 |
