Rusty Russell wrote: > On Tue, 2006-10-24 at 22:11 -0700, Zachary Amsden wrote: > >> So I implemented udelay and ndelay through a single paravirt_op, >> const_udelay, instead of having either two separate paravirt-ops for >> udelay or ndelay, or a redundant const_udelay paravirt_op. Anybody have >> any objection to reworking the patch this way? >> > > Seems saner, but I'm not sure why x86 has an I/O delay separate from > udelay to start with? > I/O delay is for slow hardware that needs a couple bus cycles to settle, but doesn't have specified latency requirements - like many old floppy drive controllers. Using the jmp 1f; thing doesn't seem very future proof, and the port I/O guarantees a bus access, which makes these fuggly older controllers work better. > Comments: > > >> +#if defined(CONFIG_PARAVIRT) && !defined(USE_REAL_IO) >> +#include <asm/paravirt.h> >> +#else >> > > USE_REAL_IO? Is this defined anywhere? Or just future-proofing? > It has to be used for SMP bootstrapping - IPI acceptance requires real time cross-processor delay, even in a VM - and also can be added by a top-level define to kernel compiles for driver domains for Xen to give real time device delays. Zach