X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=arch%2Fs390%2Fkernel%2Fs390_ext.c;h=e019b419efc64011bd5d48e0c95ec82efe5ffdd9;hb=3d87ff3e44bd2a13cbe2d2e02cc5e38953ff260f;hp=acf93dba7727002e7507bf2e28bc4cb065e3763b;hpb=dda2ac15d23b38e4335e858848aa8c9a6710304f;p=linux-2.6-omap-h63xx.git diff --git a/arch/s390/kernel/s390_ext.c b/arch/s390/kernel/s390_ext.c index acf93dba772..e019b419efc 100644 --- a/arch/s390/kernel/s390_ext.c +++ b/arch/s390/kernel/s390_ext.c @@ -13,11 +13,12 @@ #include #include #include - +#include #include #include #include #include +#include "entry.h" /* * ext_int_hash[index] is the start of the list for all external interrupts @@ -119,13 +120,10 @@ void do_extint(struct pt_regs *regs, unsigned short code) old_regs = set_irq_regs(regs); irq_enter(); - asm volatile ("mc 0,0"); - if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) - /** - * Make sure that the i/o interrupt did not "overtake" - * the last HZ timer interrupt. - */ - account_ticks(S390_lowcore.int_clock); + s390_idle_check(); + if (S390_lowcore.int_clock >= S390_lowcore.clock_comparator) + /* Serve timer interrupts first. */ + clock_comparator_work(); kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; index = ext_hash(code); for (p = ext_int_hash[index]; p; p = p->next) {