* PATCH powerpc: Merge asm-ppc*/hardirq.h
@ 2005-09-13 20:38 Jon Loeliger
2005-09-14 11:05 ` Christoph Hellwig
0 siblings, 1 reply; 5+ messages in thread
From: Jon Loeliger @ 2005-09-13 20:38 UTC (permalink / raw)
To: linuxppc-dev@ozlabs.org, linuxppc64-dev
Here is a patch to merge asm-ppc*/hardirq.h.
Does anyone know of a problem in ppc64 land that
will be caused by having added the jiffy_stamp
field into this cacheline-aligned structure?
Also, of note here, I dodged the hard question
of what to do with SMP and preemption and stuff.
Lots more work will have to be resolved to really
answer those questions. Let's start here for now...
Signed-off-by: Jon Loeliger <jdl@freescale.com>
---
diff --git a/include/asm-powerpc/hardirq.h b/include/asm-powerpc/hardirq.h
new file mode 100644
--- /dev/null
+++ b/include/asm-powerpc/hardirq.h
@@ -0,0 +1,36 @@
+#ifndef _ASM_POWERPC_HARDIRQ_H
+#define _ASM_POWERPC_HARDIRQ_H
+#ifdef __KERNEL__
+
+#include <linux/config.h>
+#include <linux/cache.h>
+
+#ifdef __powerpc64__
+#include <linux/preempt.h>
+#else
+#include <linux/smp_lock.h>
+#include <asm/irq.h>
+#endif
+
+/* The __last_jiffy_stamp field is needed to ensure that no decrementer
+ * interrupt is lost on SMP machines. Since on most CPUs it is in the same
+ * cache line as local_irq_count, it is cheap to access and is also used on UP
+ * for uniformity.
+ */
+typedef struct {
+ unsigned int __softirq_pending; /* set_bit is used on this */
+ unsigned int __last_jiffy_stamp;
+} ____cacheline_aligned irq_cpustat_t;
+
+#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
+
+#define last_jiffy_stamp(cpu) __IRQ_STAT((cpu), __last_jiffy_stamp)
+
+static inline void ack_bad_irq(int irq)
+{
+ printk(KERN_CRIT "illegal vector %d received!\n", irq);
+ BUG();
+}
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_POWERPC_HARDIRQ_H */
diff --git a/include/asm-ppc/hardirq.h b/include/asm-ppc/hardirq.h
deleted file mode 100644
--- a/include/asm-ppc/hardirq.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifdef __KERNEL__
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
-
-#include <linux/config.h>
-#include <linux/cache.h>
-#include <linux/smp_lock.h>
-#include <asm/irq.h>
-
-/* The __last_jiffy_stamp field is needed to ensure that no decrementer
- * interrupt is lost on SMP machines. Since on most CPUs it is in the same
- * cache line as local_irq_count, it is cheap to access and is also used on UP
- * for uniformity.
- */
-typedef struct {
- unsigned long __softirq_pending; /* set_bit is used on this */
- unsigned int __last_jiffy_stamp;
-} ____cacheline_aligned irq_cpustat_t;
-
-#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
-
-#define last_jiffy_stamp(cpu) __IRQ_STAT((cpu), __last_jiffy_stamp)
-
-static inline void ack_bad_irq(int irq)
-{
- printk(KERN_CRIT "illegal vector %d received!\n", irq);
- BUG();
-}
-
-#endif /* __ASM_HARDIRQ_H */
-#endif /* __KERNEL__ */
diff --git a/include/asm-ppc64/hardirq.h b/include/asm-ppc64/hardirq.h
deleted file mode 100644
--- a/include/asm-ppc64/hardirq.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#include <linux/config.h>
-#include <linux/cache.h>
-#include <linux/preempt.h>
-
-typedef struct {
- unsigned int __softirq_pending;
-} ____cacheline_aligned irq_cpustat_t;
-
-#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
-
-static inline void ack_bad_irq(int irq)
-{
- printk(KERN_CRIT "illegal vector %d received!\n", irq);
- BUG();
-}
-
-#endif /* __ASM_HARDIRQ_H */
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH powerpc: Merge asm-ppc*/hardirq.h
2005-09-13 20:38 PATCH powerpc: Merge asm-ppc*/hardirq.h Jon Loeliger
@ 2005-09-14 11:05 ` Christoph Hellwig
2005-09-14 13:41 ` Jon Loeliger
0 siblings, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2005-09-14 11:05 UTC (permalink / raw)
To: Jon Loeliger; +Cc: linuxppc-dev@ozlabs.org, linuxppc64-dev
On Tue, Sep 13, 2005 at 03:38:40PM -0500, Jon Loeliger wrote:
> +#ifndef _ASM_POWERPC_HARDIRQ_H
> +#define _ASM_POWERPC_HARDIRQ_H
> +#ifdef __KERNEL__
the __KERNEL__ ifdefs is not needed. <asm/hardirq.h> is only included
from <linux/hardirq.h> which doesn't have anything user-visible.
> +
> +#include <linux/config.h>
not needed.
> +#include <linux/cache.h>
> +
> +#ifdef __powerpc64__
> +#include <linux/preempt.h>
> +#else
> +#include <linux/smp_lock.h>
> +#include <asm/irq.h>
> +#endif
We shouldn't need either of these include blocks at all.
> +
> +/* The __last_jiffy_stamp field is needed to ensure that no decrementer
> + * interrupt is lost on SMP machines. Since on most CPUs it is in the same
> + * cache line as local_irq_count, it is cheap to access and is also used on UP
> + * for uniformity.
> + */
> +typedef struct {
> + unsigned int __softirq_pending; /* set_bit is used on this */
> + unsigned int __last_jiffy_stamp;
> +} ____cacheline_aligned irq_cpustat_t;
I'd suggest just using a DECLARE_PER_CPU variable for last_jiffy_stamp.
In facct I plan to get rid of irq_cpustat_t completely at some point.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH powerpc: Merge asm-ppc*/hardirq.h
2005-09-14 11:05 ` Christoph Hellwig
@ 2005-09-14 13:41 ` Jon Loeliger
2005-09-14 13:43 ` Christoph Hellwig
2005-09-16 15:45 ` PATCH powerpc: Revised merge asm-ppc*/hardirq.h Jon Loeliger
0 siblings, 2 replies; 5+ messages in thread
From: Jon Loeliger @ 2005-09-14 13:41 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: linuxppc-dev@ozlabs.org, linuxppc64-dev
On Wed, 2005-09-14 at 06:05, Christoph Hellwig wrote:
> On Tue, Sep 13, 2005 at 03:38:40PM -0500, Jon Loeliger wrote:
> > +#ifndef _ASM_POWERPC_HARDIRQ_H
> > +#define _ASM_POWERPC_HARDIRQ_H
> > +#ifdef __KERNEL__
>
> the __KERNEL__ ifdefs is not needed. <asm/hardirq.h> is only included
> from <linux/hardirq.h> which doesn't have anything user-visible.
Will do.
> > +
> > +#include <linux/config.h>
>
> not needed.
>
> > +#include <linux/cache.h>
> > +
> > +#ifdef __powerpc64__
> > +#include <linux/preempt.h>
> > +#else
> > +#include <linux/smp_lock.h>
> > +#include <asm/irq.h>
> > +#endif
>
> We shouldn't need either of these include blocks at all.
OK. I'll do some out-ripping and verify that it
all compiles still.
> > +
> > +/* The __last_jiffy_stamp field is needed to ensure that no decrementer
> > + * interrupt is lost on SMP machines. Since on most CPUs it is in the same
> > + * cache line as local_irq_count, it is cheap to access and is also used on UP
> > + * for uniformity.
> > + */
> > +typedef struct {
> > + unsigned int __softirq_pending; /* set_bit is used on this */
> > + unsigned int __last_jiffy_stamp;
> > +} ____cacheline_aligned irq_cpustat_t;
>
> I'd suggest just using a DECLARE_PER_CPU variable for last_jiffy_stamp.
> In facct I plan to get rid of irq_cpustat_t completely at some point.
Hmmm... So, I don't want to mess that up. How about I leave it
as I've suggested and leave that step up to you as a follow on?
Thanks,
jdl
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH powerpc: Merge asm-ppc*/hardirq.h
2005-09-14 13:41 ` Jon Loeliger
@ 2005-09-14 13:43 ` Christoph Hellwig
2005-09-16 15:45 ` PATCH powerpc: Revised merge asm-ppc*/hardirq.h Jon Loeliger
1 sibling, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2005-09-14 13:43 UTC (permalink / raw)
To: Jon Loeliger; +Cc: linuxppc-dev@ozlabs.org, linuxppc64-dev
On Wed, Sep 14, 2005 at 08:41:34AM -0500, Jon Loeliger wrote:
> > I'd suggest just using a DECLARE_PER_CPU variable for last_jiffy_stamp.
> > In facct I plan to get rid of irq_cpustat_t completely at some point.
>
> Hmmm... So, I don't want to mess that up. How about I leave it
> as I've suggested and leave that step up to you as a follow on?
ok.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: PATCH powerpc: Revised merge asm-ppc*/hardirq.h
2005-09-14 13:41 ` Jon Loeliger
2005-09-14 13:43 ` Christoph Hellwig
@ 2005-09-16 15:45 ` Jon Loeliger
1 sibling, 0 replies; 5+ messages in thread
From: Jon Loeliger @ 2005-09-16 15:45 UTC (permalink / raw)
To: linuxppc64-dev, linuxppc-dev@ozlabs.org
This is a revised patch to merge asm-ppc*/hardirq.h.
It removes some unnecessary #includes, but then requires
the addition of #include <asm/irq.h> in PPC32's hw_irq.h
much like ppc64 already does. Furthermore, several
unnecessary #includes were removed from some ppc32 boards
in order to break resulting bad #include cycles.
Builds pSeries_defconfig and all ppc32 platforms except
the already b0rken bseip.
Signed-off-by: Jon Loeliger <jdl@freescale.com>
Signed-off-by: Kumar Gala <kumar.gala@freescale.com>
---
arch/ppc/platforms/83xx/mpc834x_sys.h | 1 -
arch/ppc/platforms/85xx/mpc85xx_ads_common.h | 1 -
arch/ppc/platforms/85xx/stx_gp3.h | 1 -
include/asm-powerpc/hardirq.h | 24 ++++++++++++++++++++
include/asm-ppc/hardirq.h | 31 --------------------------
include/asm-ppc/hw_irq.h | 1 +
include/asm-ppc64/hardirq.h | 27 -----------------------
7 files changed, 25 insertions(+), 61 deletions(-)
diff --git a/arch/ppc/platforms/83xx/mpc834x_sys.h b/arch/ppc/platforms/83xx/mpc834x_sys.h
--- a/arch/ppc/platforms/83xx/mpc834x_sys.h
+++ b/arch/ppc/platforms/83xx/mpc834x_sys.h
@@ -19,7 +19,6 @@
#include <linux/config.h>
#include <linux/init.h>
-#include <linux/seq_file.h>
#include <syslib/ppc83xx_setup.h>
#include <asm/ppcboot.h>
diff --git a/arch/ppc/platforms/85xx/mpc85xx_ads_common.h b/arch/ppc/platforms/85xx/mpc85xx_ads_common.h
--- a/arch/ppc/platforms/85xx/mpc85xx_ads_common.h
+++ b/arch/ppc/platforms/85xx/mpc85xx_ads_common.h
@@ -19,7 +19,6 @@
#include <linux/config.h>
#include <linux/init.h>
-#include <linux/seq_file.h>
#include <asm/ppcboot.h>
#define BOARD_CCSRBAR ((uint)0xe0000000)
diff --git a/arch/ppc/platforms/85xx/stx_gp3.h b/arch/ppc/platforms/85xx/stx_gp3.h
--- a/arch/ppc/platforms/85xx/stx_gp3.h
+++ b/arch/ppc/platforms/85xx/stx_gp3.h
@@ -21,7 +21,6 @@
#include <linux/config.h>
#include <linux/init.h>
-#include <linux/seq_file.h>
#include <asm/ppcboot.h>
#define BOARD_CCSRBAR ((uint)0xe0000000)
diff --git a/include/asm-powerpc/hardirq.h b/include/asm-powerpc/hardirq.h
new file mode 100644
--- /dev/null
+++ b/include/asm-powerpc/hardirq.h
@@ -0,0 +1,24 @@
+#ifndef _ASM_POWERPC_HARDIRQ_H
+#define _ASM_POWERPC_HARDIRQ_H
+
+/* The __last_jiffy_stamp field is needed to ensure that no decrementer
+ * interrupt is lost on SMP machines. Since on most CPUs it is in the same
+ * cache line as local_irq_count, it is cheap to access and is also used on UP
+ * for uniformity.
+ */
+typedef struct {
+ unsigned int __softirq_pending; /* set_bit is used on this */
+ unsigned int __last_jiffy_stamp;
+} ____cacheline_aligned irq_cpustat_t;
+
+#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
+
+#define last_jiffy_stamp(cpu) __IRQ_STAT((cpu), __last_jiffy_stamp)
+
+static inline void ack_bad_irq(int irq)
+{
+ printk(KERN_CRIT "illegal vector %d received!\n", irq);
+ BUG();
+}
+
+#endif /* _ASM_POWERPC_HARDIRQ_H */
diff --git a/include/asm-ppc/hardirq.h b/include/asm-ppc/hardirq.h
deleted file mode 100644
--- a/include/asm-ppc/hardirq.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifdef __KERNEL__
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
-
-#include <linux/config.h>
-#include <linux/cache.h>
-#include <linux/smp_lock.h>
-#include <asm/irq.h>
-
-/* The __last_jiffy_stamp field is needed to ensure that no decrementer
- * interrupt is lost on SMP machines. Since on most CPUs it is in the same
- * cache line as local_irq_count, it is cheap to access and is also used on UP
- * for uniformity.
- */
-typedef struct {
- unsigned long __softirq_pending; /* set_bit is used on this */
- unsigned int __last_jiffy_stamp;
-} ____cacheline_aligned irq_cpustat_t;
-
-#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
-
-#define last_jiffy_stamp(cpu) __IRQ_STAT((cpu), __last_jiffy_stamp)
-
-static inline void ack_bad_irq(int irq)
-{
- printk(KERN_CRIT "illegal vector %d received!\n", irq);
- BUG();
-}
-
-#endif /* __ASM_HARDIRQ_H */
-#endif /* __KERNEL__ */
diff --git a/include/asm-ppc/hw_irq.h b/include/asm-ppc/hw_irq.h
--- a/include/asm-ppc/hw_irq.h
+++ b/include/asm-ppc/hw_irq.h
@@ -7,6 +7,7 @@
#include <asm/ptrace.h>
#include <asm/reg.h>
+#include <asm/irq.h>
extern void timer_interrupt(struct pt_regs *);
diff --git a/include/asm-ppc64/hardirq.h b/include/asm-ppc64/hardirq.h
deleted file mode 100644
--- a/include/asm-ppc64/hardirq.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
-
-/*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-
-#include <linux/config.h>
-#include <linux/cache.h>
-#include <linux/preempt.h>
-
-typedef struct {
- unsigned int __softirq_pending;
-} ____cacheline_aligned irq_cpustat_t;
-
-#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
-
-static inline void ack_bad_irq(int irq)
-{
- printk(KERN_CRIT "illegal vector %d received!\n", irq);
- BUG();
-}
-
-#endif /* __ASM_HARDIRQ_H */
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2005-09-16 15:45 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-13 20:38 PATCH powerpc: Merge asm-ppc*/hardirq.h Jon Loeliger
2005-09-14 11:05 ` Christoph Hellwig
2005-09-14 13:41 ` Jon Loeliger
2005-09-14 13:43 ` Christoph Hellwig
2005-09-16 15:45 ` PATCH powerpc: Revised merge asm-ppc*/hardirq.h Jon Loeliger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).