From: Eric Dumazet <dada1@cosmosbay.com>
Date: Thu, 01 Nov 2007 08:17:58 +0100
This is a mechanism used partially on IA64 already.
I think you have to be very careful, and you can only use this per-cpu
fixed virtual address area in extremely limited cases.
The reason is, I think the address matters, consider list heads, for
example.
So you couldn't do:
list_add(&obj->list, &per_cpu_ptr(list_head));
and use that per-cpu fixed virtual address.
IA64 seems to use it universally for every __get_cpu_var()
access, so maybe it works out somehow :-)))
I guess if list modifications by remote cpus are disallowed, it would
work (list traversal works because using the fixed virtual address as
the list head sentinal is OK), but that is an extremely fragile
assumption to base the entire mechanism upon.
-