# # The ARCH_INLINE foo is necessary because select ignores "depends on" # config ARCH_INLINE_SPIN_TRYLOCK bool config ARCH_INLINE_SPIN_TRYLOCK_BH bool config ARCH_INLINE_SPIN_LOCK bool config ARCH_INLINE_SPIN_LOCK_BH bool config ARCH_INLINE_SPIN_LOCK_IRQ bool config ARCH_INLINE_SPIN_LOCK_IRQSAVE bool config ARCH_INLINE_SPIN_UNLOCK bool config ARCH_INLINE_SPIN_UNLOCK_BH bool config ARCH_INLINE_SPIN_UNLOCK_IRQ bool config ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE bool config ARCH_INLINE_READ_TRYLOCK bool config ARCH_INLINE_READ_LOCK bool config ARCH_INLINE_READ_LOCK_BH bool config ARCH_INLINE_READ_LOCK_IRQ bool config ARCH_INLINE_READ_LOCK_IRQSAVE bool config ARCH_INLINE_READ_UNLOCK bool config ARCH_INLINE_READ_UNLOCK_BH bool config ARCH_INLINE_READ_UNLOCK_IRQ bool config ARCH_INLINE_READ_UNLOCK_IRQRESTORE bool config ARCH_INLINE_WRITE_TRYLOCK bool config ARCH_INLINE_WRITE_LOCK bool config ARCH_INLINE_WRITE_LOCK_BH bool config ARCH_INLINE_WRITE_LOCK_IRQ bool config ARCH_INLINE_WRITE_LOCK_IRQSAVE bool config ARCH_INLINE_WRITE_UNLOCK bool config ARCH_INLINE_WRITE_UNLOCK_BH bool config ARCH_INLINE_WRITE_UNLOCK_IRQ bool config ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE bool config UNINLINE_SPIN_UNLOCK bool # # lock_* functions are inlined when: # - DEBUG_SPINLOCK=n and GENERIC_LOCKBREAK=n and ARCH_INLINE_*LOCK=y # # trylock_* functions are inlined when: # - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y # # unlock and unlock_irq functions are inlined when: # - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y # or # - DEBUG_SPINLOCK=n and PREEMPT=n # # unlock_bh and unlock_irqrestore functions are inlined when: # - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y # if !DEBUG_SPINLOCK config INLINE_SPIN_TRYLOCK def_bool y depends on ARCH_INLINE_SPIN_TRYLOCK config INLINE_SPIN_TRYLOCK_BH def_bool y depends on ARCH_INLINE_SPIN_TRYLOCK_BH config INLINE_SPIN_LOCK def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK config INLINE_SPIN_LOCK_BH def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_BH config INLINE_SPIN_LOCK_IRQ def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_IRQ config INLINE_SPIN_LOCK_IRQSAVE def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_IRQSAVE config INLINE_SPIN_UNLOCK_BH def_bool y depends on ARCH_INLINE_SPIN_UNLOCK_BH config INLINE_SPIN_UNLOCK_IRQ def_bool y depends on !PREEMPT || ARCH_INLINE_SPIN_UNLOCK_IRQ config INLINE_SPIN_UNLOCK_IRQRESTORE def_bool y depends on ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE config INLINE_READ_TRYLOCK def_bool y depends on ARCH_INLINE_READ_TRYLOCK config INLINE_READ_LOCK def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK config INLINE_READ_LOCK_BH def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_BH config INLINE_READ_LOCK_IRQ def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_IRQ config INLINE_READ_LOCK_IRQSAVE def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_IRQSAVE config INLINE_READ_UNLOCK def_bool y depends on !PREEMPT || ARCH_INLINE_READ_UNLOCK config INLINE_READ_UNLOCK_BH def_bool y depends on ARCH_INLINE_READ_UNLOCK_BH config INLINE_READ_UNLOCK_IRQ def_bool y depends on !PREEMPT || ARCH_INLINE_READ_UNLOCK_IRQ config INLINE_READ_UNLOCK_IRQRESTORE def_bool y depends on ARCH_INLINE_READ_UNLOCK_IRQRESTORE config INLINE_WRITE_TRYLOCK def_bool y depends on ARCH_INLINE_WRITE_TRYLOCK config INLINE_WRITE_LOCK def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK config INLINE_WRITE_LOCK_BH def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_BH config INLINE_WRITE_LOCK_IRQ def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_IRQ config INLINE_WRITE_LOCK_IRQSAVE def_bool y depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_IRQSAVE config INLINE_WRITE_UNLOCK def_bool y depends on !PREEMPT || ARCH_INLINE_WRITE_UNLOCK config INLINE_WRITE_UNLOCK_BH def_bool y depends on ARCH_INLINE_WRITE_UNLOCK_BH config INLINE_WRITE_UNLOCK_IRQ def_bool y depends on !PREEMPT || ARCH_INLINE_WRITE_UNLOCK_IRQ config INLINE_WRITE_UNLOCK_IRQRESTORE def_bool y depends on ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE endif config ARCH_SUPPORTS_ATOMIC_RMW bool config MUTEX_SPIN_ON_OWNER def_bool y depends on SMP && ARCH_SUPPORTS_ATOMIC_RMW config RWSEM_SPIN_ON_OWNER def_bool y depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW config LOCK_SPIN_ON_OWNER def_bool y depends on MUTEX_SPIN_ON_OWNER || RWSEM_SPIN_ON_OWNER config ARCH_USE_QUEUED_SPINLOCKS bool config QUEUED_SPINLOCKS def_bool y if ARCH_USE_QUEUED_SPINLOCKS depends on SMP config ARCH_USE_QUEUED_RWLOCKS bool config QUEUED_RWLOCKS def_bool y if ARCH_USE_QUEUED_RWLOCKS depends on SMP authorDexuan Cui <decui@microsoft.com>2017-01-28 11:46:02 -0700 committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-01-31 10:59:48 +0100 commit433e19cf33d34bb6751c874a9c00980552fe508c (patch) treece6547ef2987fbb289fa28f03536328a42781651 /tools/arch/mips parent191e885a2e130e639bb0c8ee350d7047294f2ce6 (diff)
Drivers: hv: vmbus: finally fix hv_need_to_signal_on_read()
Commit a389fcfd2cb5 ("Drivers: hv: vmbus: Fix signaling logic in hv_need_to_signal_on_read()") added the proper mb(), but removed the test "prev_write_sz < pending_sz" when making the signal decision. As a result, the guest can signal the host unnecessarily, and then the host can throttle the guest because the host thinks the guest is buggy or malicious; finally the user running stress test can perceive intermittent freeze of the guest. This patch brings back the test, and properly handles the in-place consumption APIs used by NetVSC (see get_next_pkt_raw(), put_pkt_raw() and commit_rd_index()). Fixes: a389fcfd2cb5 ("Drivers: hv: vmbus: Fix signaling logic in hv_need_to_signal_on_read()") Signed-off-by: Dexuan Cui <decui@microsoft.com> Reported-by: Rolf Neugebauer <rolf.neugebauer@docker.com> Tested-by: Rolf Neugebauer <rolf.neugebauer@docker.com> Cc: "K. Y. Srinivasan" <kys@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger <sthemmin@microsoft.com> Cc: <stable@vger.kernel.org> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/arch/mips')