Messages in this thread | | | Date | Tue, 03 Jul 2012 10:04:58 +0100 | From | "Jan Beulich" <> | Subject | __force_order usage on x86's CRn accesses |
| |
Pretty soon after the introduction of this via "x86: unify paravirt parts of system.h" Jeremy had posted a patch to correct the (reversed in direction of access) constraints using that auxiliary variable. What happened to that change? Was it dropped for a reason?
Furthermore, the addition of these constraints happened without any real explanation - the code comment that was added doesn't really help understand why "volatile" isn't sufficient here.
Next, I also saw it being suggested somewhere to replace the static definition of the variable (causing an instance to appear everywhere any of the referencing inline function being used) by an extern one. That also never got carried out, causing about two dozen pointless instances of this variable to be scattered around, likely consuming cache bandwidth here and there.
Now, rather than exporting an auxiliary variable like this, how about using an existing, rarely referenced (at least in affected contexts) but already exported one instead? empty_zero_page, __supported_pte_mask, x86_platform, or high_memory might be candidates.
Finally (and this is because I lack the explanation why the artificial constraint is needed in the first place), why is it that clts() doesn't need one too?
Thanks, Jan
| |