Andi Kleen wrote: >> so it would be >> nice to use one of the other serializing instructions in this case. >> > > You would first need to find one that works in ring 3. On x86-64 it is > used in the gettimeoday vsyscall in ring 3 to synchronize the TSC and > afaik John was about to implement that for i386 too. > Well, that's really usermode code, so I don't think we'd necessarily touch it at all. It's not the same problem as the (single, at the moment) ring 0 use. > BTW another issue that I haven't checked but we will need to make > this also an alternative() for another case - it is faily important > to patch it out on Intel systems with a synchronized TSC where it is > fairly expensive. That is also not done yet on i386, but will be > likely once vsyscall gettimeofday is implemented. > > So basically you would need double patching. Ugly. > Yeah. I guess the cleanest way to do that is do the paravirt substitution, and then nop it out later if it isn't needed in the vsyscall. > I would recommend to keep it out of para ops. It's hardly a big deal either way. There's only one in-kernel use of it. J