void __get_page_state(struct page_state *ret, int nr)
{
- int cpu;
+ int cpu = 0;
memset(ret, 0, sizeof(*ret));
- for (cpu = 0; cpu < NR_CPUS; cpu++) {
+ while (cpu < NR_CPUS) {
unsigned long *in, *out, off;
- if (!cpu_online(cpu))
+ if (!cpu_online(cpu)) {
+ cpu++;
continue;
+ }
in = (unsigned long *)&per_cpu(page_states, cpu);
+ cpu++;
+ if (cpu < NR_CPUS && cpu_online(cpu))
+ prefetch(&per_cpu(page_states, cpu));
out = (unsigned long *)ret;
for (off = 0; off < nr; off++)
*out++ += *in++;