diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2010-12-22 18:57:02 +0100 | 
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2010-12-22 18:57:02 +0100 | 
| commit | 4b7bd364700d9ac8372eff48832062b936d0793b (patch) | |
| tree | 0dbf78c95456a0b02d07fcd473281f04a87e266d /arch/s390/lib/delay.c | |
| parent | c0d8768af260e2cbb4bf659ae6094a262c86b085 (diff) | |
| parent | 90a8a73c06cc32b609a880d48449d7083327e11a (diff) | |
| download | olio-linux-3.10-4b7bd364700d9ac8372eff48832062b936d0793b.tar.xz olio-linux-3.10-4b7bd364700d9ac8372eff48832062b936d0793b.zip  | |
Merge branch 'master' into for-next
Conflicts:
	MAINTAINERS
	arch/arm/mach-omap2/pm24xx.c
	drivers/scsi/bfa/bfa_fcpim.c
Needed to update to apply fixes for which the old branch was too
outdated.
Diffstat (limited to 'arch/s390/lib/delay.c')
| -rw-r--r-- | arch/s390/lib/delay.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/s390/lib/delay.c b/arch/s390/lib/delay.c index 752b362bf65..7c37ec359ec 100644 --- a/arch/s390/lib/delay.c +++ b/arch/s390/lib/delay.c @@ -29,17 +29,21 @@ static void __udelay_disabled(unsigned long long usecs)  {  	unsigned long mask, cr0, cr0_saved;  	u64 clock_saved; +	u64 end; +	mask = psw_kernel_bits | PSW_MASK_WAIT | PSW_MASK_EXT; +	end = get_clock() + (usecs << 12);  	clock_saved = local_tick_disable(); -	set_clock_comparator(get_clock() + (usecs << 12));  	__ctl_store(cr0_saved, 0, 0);  	cr0 = (cr0_saved & 0xffff00e0) | 0x00000800;  	__ctl_load(cr0 , 0, 0); -	mask = psw_kernel_bits | PSW_MASK_WAIT | PSW_MASK_EXT;  	lockdep_off(); -	trace_hardirqs_on(); -	__load_psw_mask(mask); -	local_irq_disable(); +	do { +		set_clock_comparator(end); +		trace_hardirqs_on(); +		__load_psw_mask(mask); +		local_irq_disable(); +	} while (get_clock() < end);  	lockdep_on();  	__ctl_load(cr0_saved, 0, 0);  	local_tick_enable(clock_saved);  |