Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
[S390] css: fix rsid evaluation for 2nd crw
[S390] nohz/s390: fix arch_needs_cpu() return value on offline cpus

+20 -1
+19
arch/s390/kernel/vtime.c
··· 19 #include <linux/kernel_stat.h> 20 #include <linux/rcupdate.h> 21 #include <linux/posix-timers.h> 22 23 #include <asm/s390_ext.h> 24 #include <asm/timer.h> ··· 567 __ctl_set_bit(0,10); 568 } 569 570 void __init vtime_init(void) 571 { 572 /* request the cpu timer external interrupt */ ··· 592 593 /* Enable cpu timer interrupts on the boot cpu. */ 594 init_cpu_vtimer(); 595 } 596
··· 19 #include <linux/kernel_stat.h> 20 #include <linux/rcupdate.h> 21 #include <linux/posix-timers.h> 22 + #include <linux/cpu.h> 23 24 #include <asm/s390_ext.h> 25 #include <asm/timer.h> ··· 566 __ctl_set_bit(0,10); 567 } 568 569 + static int __cpuinit s390_nohz_notify(struct notifier_block *self, 570 + unsigned long action, void *hcpu) 571 + { 572 + struct s390_idle_data *idle; 573 + long cpu = (long) hcpu; 574 + 575 + idle = &per_cpu(s390_idle, cpu); 576 + switch (action) { 577 + case CPU_DYING: 578 + case CPU_DYING_FROZEN: 579 + idle->nohz_delay = 0; 580 + default: 581 + break; 582 + } 583 + return NOTIFY_OK; 584 + } 585 + 586 void __init vtime_init(void) 587 { 588 /* request the cpu timer external interrupt */ ··· 574 575 /* Enable cpu timer interrupts on the boot cpu. */ 576 init_cpu_vtimer(); 577 + cpu_notifier(s390_nohz_notify, 0); 578 } 579
+1 -1
drivers/s390/cio/css.c
··· 635 init_subchannel_id(&mchk_schid); 636 mchk_schid.sch_no = crw0->rsid; 637 if (crw1) 638 - mchk_schid.ssid = (crw1->rsid >> 8) & 3; 639 640 /* 641 * Since we are always presented with IPI in the CRW, we have to
··· 635 init_subchannel_id(&mchk_schid); 636 mchk_schid.sch_no = crw0->rsid; 637 if (crw1) 638 + mchk_schid.ssid = (crw1->rsid >> 4) & 3; 639 640 /* 641 * Since we are always presented with IPI in the CRW, we have to