__force_order usage on x86's CRn accesses

From: Jan Beulich
Date: Tue Jul 03 2012 - 05:04:02 EST


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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/