From: Jan Blunck <jblunck@suse.de>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH] fix vmstat per cpu usage
Date: Wed, 2 Aug 2006 15:30:06 +0200 [thread overview]
Message-ID: <20060802133006.GP4995@hasse.suse.de> (raw)
In-Reply-To: <20060801140707.a55a0513.akpm@osdl.org>
[-- Attachment #1: Type: text/plain, Size: 200 bytes --]
Here comes another idea. To find further wrong usage of percpu variables I
wrote the following patch. It still needs some work for the other archs but
I'm interested in your feedback about that.
Jan
[-- Attachment #2: percpu_var-error.diff --]
[-- Type: text/x-patch, Size: 2369 bytes --]
---
include/asm-generic/percpu.h | 4 +++-
include/asm-s390/percpu.h | 6 ++++--
include/linux/percpu.h | 5 ++++-
3 files changed, 11 insertions(+), 4 deletions(-)
Index: linux-2.6/include/asm-generic/percpu.h
===================================================================
--- linux-2.6.orig/include/asm-generic/percpu.h
+++ linux-2.6/include/asm-generic/percpu.h
@@ -14,7 +14,9 @@ extern unsigned long __per_cpu_offset[NR
__attribute__((__section__(".data.percpu"))) __typeof__(type) per_cpu__##name
/* var is in discarded region: offset to particular copy we want */
-#define per_cpu(var, cpu) (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]))
+#define per_cpu(var, cpu) (*({ \
+ int user_error_##var __attribute__ ((unused)); \
+ RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]); }))
#define __get_cpu_var(var) per_cpu(var, smp_processor_id())
#define __raw_get_cpu_var(var) per_cpu(var, raw_smp_processor_id())
Index: linux-2.6/include/asm-s390/percpu.h
===================================================================
--- linux-2.6.orig/include/asm-s390/percpu.h
+++ linux-2.6/include/asm-s390/percpu.h
@@ -16,7 +16,8 @@
#if defined(__s390x__) && defined(MODULE)
#define __reloc_hide(var,offset) \
- (*({ unsigned long *__ptr; \
+ (*({ int user_error_##var __attribute__ ((unused)); \
+ unsigned long *__ptr; \
asm ( "larl %0,per_cpu__"#var"@GOTENT" \
: "=a" (__ptr) : "X" (per_cpu__##var) ); \
(typeof(&per_cpu__##var))((*__ptr) + (offset)); }))
@@ -24,7 +25,8 @@
#else
#define __reloc_hide(var, offset) \
- (*({ unsigned long __ptr; \
+ (*({ int user_error_##var __attribute__ ((unused)); \
+ unsigned long __ptr; \
asm ( "" : "=a" (__ptr) : "0" (&per_cpu__##var) ); \
(typeof(&per_cpu__##var)) (__ptr + (offset)); }))
Index: linux-2.6/include/linux/percpu.h
===================================================================
--- linux-2.6.orig/include/linux/percpu.h
+++ linux-2.6/include/linux/percpu.h
@@ -12,7 +12,10 @@
#endif
/* Must be an lvalue. */
-#define get_cpu_var(var) (*({ preempt_disable(); &__get_cpu_var(var); }))
+#define get_cpu_var(var) (*({ \
+ int user_error_##var __attribute__ ((unused)); \
+ preempt_disable(); \
+ &__get_cpu_var(var); }))
#define put_cpu_var(var) preempt_enable()
#ifdef CONFIG_SMP
next prev parent reply other threads:[~2006-08-02 13:30 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-01 17:36 [PATCH] fix vmstat per cpu usage Jan Blunck
2006-08-01 21:07 ` Andrew Morton
2006-08-01 22:44 ` Paul Mackerras
2006-08-02 9:01 ` Jan Blunck
2006-08-02 13:30 ` Jan Blunck [this message]
2006-08-02 14:43 ` Andrew Morton
2006-08-07 12:42 ` Jan Blunck
2006-08-02 16:54 ` Steve Fox
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060802133006.GP4995@hasse.suse.de \
--to=jblunck@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.