• A
    [PATCH] seccomp: tsc disable · ffaa8bd6
    Andrea Arcangeli 提交于
    I believe at least for seccomp it's worth to turn off the tsc, not just for
    HT but for the L2 cache too.  So it's up to you, either you turn it off
    completely (which isn't very nice IMHO) or I recommend to apply this below
    patch.
    
    This has been tested successfully on x86-64 against current cogito
    repository (i686 compiles so I didn't bother testing ;).  People selling
    the cpu through cpushare may appreciate this bit for a peace of mind.
    
    There's no way to get any timing info anymore with this applied
    (gettimeofday is forbidden of course).  The seccomp environment is
    completely deterministic so it can't be allowed to get timing info, it has
    to be deterministic so in the future I can enable a computing mode that
    does a parallel computing for each task with server side transparent
    checkpointing and verification that the output is the same from all the 2/3
    seller computers for each task, without the buyer even noticing (for now
    the verification is left to the buyer client side and there's no
    checkpointing, since that would require more kernel changes to track the
    dirty bits but it'll be easy to extend once the basic mode is finished).
    
    Eliminating a cold-cache read of the cr4 global variable will save one
    cacheline during the tlb flush while making the code per-cpu-safe at the
    same time.  Thanks to Mikael Pettersson for noticing the tlb flush wasn't
    per-cpu-safe.
    
    The global tlb flush can run from irq (IPI calling do_flush_tlb_all) but
    it'll be transparent to the switch_to code since the IPI won't make any
    change to the cr4 contents from the point of view of the interrupted code
    and since it's now all per-cpu stuff, it will not race.  So no need to
    disable irqs in switch_to slow path.
    Signed-off-by: NAndrea Arcangeli <andrea@cpushare.com>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    ffaa8bd6
process.c 22.9 KB