On 13 May 2006, at 13:27, Andrew Morton wrote: > >> + init_evtchn_cpu_bindings(); >> + >> + /* No VIRQ or IPI bindings. */ >> + for (cpu = 0; cpu < NR_CPUS; cpu++) { > > Using NR_CPUS is a little... old-fashioned. I'd suggest a sweep > through > all the Xen code, look for places where it should be using > for_each_foo_cpu(). Actually that's a particularly good catch in this case, since we use per_cpu() inside the loop and that's only well defined for cpu_possible_map. Oops. The elusive users of ring.h are our split device drivers. It hides a bunch of details about muxing requests and responses on the same ring, and notification thresholds. There are a few other places we have ring buffers but they are sufficiently simple that implementing in place is clearer. Thanks, Keir