-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
jump_label: Split jumplabel ratelimit
Commit b202952 ("perf, core: Rate limit perf_sched_events jump_label patching") introduced rate limiting for jump label disabling. The changes were made in the jump label code in order to be more widely available and to keep things tidier. This is all fine, except now jump_label.h includes linux/workqueue.h, which makes it impossible to include jump_label.h from anything that workqueue.h needs. For example, it's now impossible to include jump_label.h from asm/spinlock.h, which is done in proposed pv-ticketlock patches. This patch splits out the rate limiting related changes from jump_label.h into a new file, jump_label_ratelimit.h, to resolve the issue. Signed-off-by: Andrew Jones <drjones@redhat.com> Link: http://lkml.kernel.org/r/1376058122-8248-10-git-send-email-raghavendra.kt@linux.vnet.ibm.com Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com> Acked-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
- Loading branch information
Andrew Jones
authored and
H. Peter Anvin
committed
Aug 9, 2013
1 parent
4a1ed4c
commit 851cf6e
Showing
4 changed files
with
37 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#ifndef _LINUX_JUMP_LABEL_RATELIMIT_H | ||
#define _LINUX_JUMP_LABEL_RATELIMIT_H | ||
|
||
#include <linux/jump_label.h> | ||
#include <linux/workqueue.h> | ||
|
||
#if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL) | ||
struct static_key_deferred { | ||
struct static_key key; | ||
unsigned long timeout; | ||
struct delayed_work work; | ||
}; | ||
#endif | ||
|
||
#ifdef HAVE_JUMP_LABEL | ||
extern void static_key_slow_dec_deferred(struct static_key_deferred *key); | ||
extern void | ||
jump_label_rate_limit(struct static_key_deferred *key, unsigned long rl); | ||
|
||
#else /* !HAVE_JUMP_LABEL */ | ||
struct static_key_deferred { | ||
struct static_key key; | ||
}; | ||
static inline void static_key_slow_dec_deferred(struct static_key_deferred *key) | ||
{ | ||
static_key_slow_dec(&key->key); | ||
} | ||
static inline void | ||
jump_label_rate_limit(struct static_key_deferred *key, | ||
unsigned long rl) | ||
{ | ||
} | ||
#endif /* HAVE_JUMP_LABEL */ | ||
#endif /* _LINUX_JUMP_LABEL_RATELIMIT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters