On 26/09/14 12:56, Richard Weinberger wrote:
[snip]
> +#ifdef CONFIG_X86_32
> + alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2);
> +#else
> + asm volatile("mfence":::"memory");
> +#endif
> Why not mb()?
> I'm not sure whether this fix is correct.
Looking at the actual defines that would work. I was originally looking
at asm-generic instead of x86/um/asm/barrier.h and the asm-generic
barrier() would have been insufficent.
x86/um/asm/barrier.h has literally the same define, so as you noted -
using mb() will have the same effect.
As far as is this fix correct or not - I do not know myself. I said it
when submitting it :)
It definitely fixes the problem - both the original (and extremely
difficult to reproduce) D|Z in the stock UML and the similar (and much
easier to reproduce) D|Z which you get with all the disk subsystem
improvement patches.
I will reissue it with mb() shortly.
A.
>
> Thanks,
> //richard
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel