lkml.org 
[lkml]   [2008]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: tick-common.c hack for s390 needed
On Fri, Mar 21, 2008 at 11:15:04AM +0100, Ingo Molnar wrote:
>
> * Christoph Hellwig <hch@infradead.org> wrote:
>
> > On Tue, Mar 18, 2008 at 10:31:19AM +0100, Heiko Carstens wrote:
> > > Hi Thomas, Ingo,
> > >
> > > I'm converting s390 from s390's NO_IDLE_HZ to GENERIC_CLOCKEVENTS and
> > > therefore to the generic NO_HZ implementation.
> > > One of the problems that need a patch for this is kernel/time/tick-common.c
> > > which relies on the irq stuff present in include/linux/irq.h.
> > > In particular s390 doesn't have something like irq_set_affinity which
> > > causes this build error:
> >
> > Generic code must never use linux/irq.h - it's more like asm-generic
> > file predating asm-generic.
>
> agreed.
>
> Heiko, if you remove all these:
>
> ./time/tick-broadcast.c:#include <linux/irq.h>
> ./time/tick-oneshot.c:#include <linux/irq.h>
> ./time/tick-common.c:#include <linux/irq.h>
> ./hrtimer.c:#include <linux/irq.h>
>
> from kernel/*, do things improve on s390? If yes then please send a
> patch for it and i'll check whether there's any include file dependency
> fallout on x86.

No, tick-common.c has calls to irq_set_affinity and irq_can_set_affinity, for
which the prototypes are in linux/irq.h.
Each and every architecture seems to include linux/irq.h from a different file
in asm-[your-favourite-arch]/*.h. I was able to fix the build breakage on x86
by adding an include <linux/interrupt.h>. But that won't work on other
architectures.
From a logical point of view I would expect that asm/irq.h is supposed to
include linux/irq.h, no?

The patch below removes at least three of the includes for a beginning.
Still compiles on s390 and x86_64.

Subject: [PATCH] time: remove include/irq.h.

From: Heiko Carstens <heiko.carstens@de.ibm.com>

Generic code is not supposed to include linux/irq.h.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
---

kernel/hrtimer.c | 1 -
kernel/time/tick-broadcast.c | 1 -
kernel/time/tick-oneshot.c | 1 -
3 files changed, 3 deletions(-)

Index: linux-2.6/kernel/hrtimer.c
===================================================================
--- linux-2.6.orig/kernel/hrtimer.c
+++ linux-2.6/kernel/hrtimer.c
@@ -32,7 +32,6 @@
*/

#include <linux/cpu.h>
-#include <linux/irq.h>
#include <linux/module.h>
#include <linux/percpu.h>
#include <linux/hrtimer.h>
Index: linux-2.6/kernel/time/tick-broadcast.c
===================================================================
--- linux-2.6.orig/kernel/time/tick-broadcast.c
+++ linux-2.6/kernel/time/tick-broadcast.c
@@ -14,7 +14,6 @@
#include <linux/cpu.h>
#include <linux/err.h>
#include <linux/hrtimer.h>
-#include <linux/irq.h>
#include <linux/percpu.h>
#include <linux/profile.h>
#include <linux/sched.h>
Index: linux-2.6/kernel/time/tick-oneshot.c
===================================================================
--- linux-2.6.orig/kernel/time/tick-oneshot.c
+++ linux-2.6/kernel/time/tick-oneshot.c
@@ -14,7 +14,6 @@
#include <linux/cpu.h>
#include <linux/err.h>
#include <linux/hrtimer.h>
-#include <linux/irq.h>
#include <linux/percpu.h>
#include <linux/profile.h>
#include <linux/sched.h>

\
 
 \ /
  Last update: 2008-03-21 14:29    [W:0.270 / U:0.368 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site