Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28806
b: refs/heads/master
c: 1e92a55
h: refs/heads/master
v: v3
  • Loading branch information
Anton Blanchard authored and Paul Mackerras committed Jun 21, 2006
1 parent a030445 commit e1584e0
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ddf5f75a16b3e7460ffee881795aa168dffcd0cf
refs/heads/master: 1e92a550e80fef01ebcc0bcd0896109cdb986c72
13 changes: 13 additions & 0 deletions trunk/include/asm-powerpc/delay.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,18 @@
extern void __delay(unsigned long loops);
extern void udelay(unsigned long usecs);

/*
* On shared processor machines the generic implementation of mdelay can
* result in large errors. While each iteration of the loop inside mdelay
* is supposed to take 1ms, the hypervisor could sleep our partition for
* longer (eg 10ms). With the right timing these errors can add up.
*
* Since there is no 32bit overflow issue on 64bit kernels, just call
* udelay directly.
*/
#ifdef CONFIG_PPC64
#define mdelay(n) udelay((n) * 1000)
#endif

#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_DELAY_H */
5 changes: 1 addition & 4 deletions trunk/include/linux/delay.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,7 @@ extern unsigned long loops_per_jiffy;
#define MAX_UDELAY_MS 5
#endif

#ifdef notdef
#define mdelay(n) (\
{unsigned long __ms=(n); while (__ms--) udelay(1000);})
#else
#ifndef mdelay
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
Expand Down

0 comments on commit e1584e0

Please sign in to comment.