1. 28 Jun, 2005 10 commits
  2. 27 Jun, 2005 30 commits
    • Keshavamurthy Anil S's avatar
      [PATCH] kprobes/ia64: refuse kprobe on ivt code · c7b645f9
      Keshavamurthy Anil S authored
      Not safe to insert kprobes on IVT code.
      
      This patch checks to see if the address on which Kprobes is being inserted is
      in ivt code and if it is in ivt code then refuse to register kprobe.
      Signed-off-by: default avatarAnil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
      Acked-by: default avatarDavid Mosberger <davidm@napali.hpl.hp.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      c7b645f9
    • Rusty Lynch's avatar
      [PATCH] kprobes/ia64: refuse inserting kprobe on slot 1 · a528e21c
      Rusty Lynch authored
      Without the ability to atomically write 16 bytes, we can not update the
      middle slot of a bundle, slot 1, unless we stop the machine first.  This
      patch will ensure the ability to robustly insert and remove a kprobe by
      refusing to insert a kprobe on slot 1 until a mechanism is in place to
      safely handle this case.
      Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      a528e21c
    • Rusty Lynch's avatar
      [PATCH] Return probe redesign: ppc64 specific implementation · 97f7943d
      Rusty Lynch authored
      The following is a patch provided by Ananth Mavinakayanahalli that implements
      the new PPC64 specific parts of the new function return probe design.
      
      NOTE: Since getting Ananth's patch, I changed trampoline_probe_handler()
            to consume each of the outstanding return probem instances (feedback
            on my original RFC after Ananth cut a patch), and also added the
            arch_init() function (adding arch specific initialization.) I have
            cross compiled but have not testing this on a PPC64 machine.
      
      Changes include:
       * Addition of kretprobe_trampoline to act as a dummy function for instrumented
         functions to return to, and for the return probe infrastructure to place
         a kprobe on on, gaining control so that the return probe handler
         can be called, and so that the instruction pointer can be moved back
         to the original return address.
       * Addition of arch_init(), allowing a kprobe to be registered on
         kretprobe_trampoline
       * Addition of trampoline_probe_handler() which is used as the pre_handler
         for the kprobe inserted on kretprobe_implementation.  This is the function
         that handles the details for calling the return probe handler function
         and returning control back at the original return address
       * Addition of arch_prepare_kretprobe() which is setup as the pre_handler
         for a kprobe registered at the beginning of the target function by
         kernel/kprobes.c so that a return probe instance can be setup when
         a caller enters the target function.  (A return probe instance contains
         all the needed information for trampoline_probe_handler to do it's job.)
       * Hooks added to the exit path of a task so that we can cleanup any left-over
         return probe instances (i.e. if a task dies while inside a targeted function
         then the return probe instance was reserved at the beginning of the function
         but the function never returns so we need to mark the instance as unused.)
      Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      97f7943d
    • Rusty Lynch's avatar
      [PATCH] Return probe redesign: ia64 specific implementation · 9508dbfe
      Rusty Lynch authored
      The following patch implements function return probes for ia64 using
      the revised design.  With this new design we no longer need to do some
      of the odd hacks previous required on the last ia64 return probe port
      that I sent out for comments.
      
      Note that this new implementation still does not resolve the problem noted
      by Keith Owens where backtrace data is lost after a return probe is hit.
      
      Changes include:
       * Addition of kretprobe_trampoline to act as a dummy function for instrumented
         functions to return to, and for the return probe infrastructure to place
         a kprobe on on, gaining control so that the return probe handler
         can be called, and so that the instruction pointer can be moved back
         to the original return address.
       * Addition of arch_init(), allowing a kprobe to be registered on
         kretprobe_trampoline
       * Addition of trampoline_probe_handler() which is used as the pre_handler
         for the kprobe inserted on kretprobe_implementation.  This is the function
         that handles the details for calling the return probe handler function
         and returning control back at the original return address
       * Addition of arch_prepare_kretprobe() which is setup as the pre_handler
         for a kprobe registered at the beginning of the target function by
         kernel/kprobes.c so that a return probe instance can be setup when
         a caller enters the target function.  (A return probe instance contains
         all the needed information for trampoline_probe_handler to do it's job.)
       * Hooks added to the exit path of a task so that we can cleanup any left-over
         return probe instances (i.e. if a task dies while inside a targeted function
         then the return probe instance was reserved at the beginning of the function
         but the function never returns so we need to mark the instance as unused.)
      Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9508dbfe
    • Rusty Lynch's avatar
      [PATCH] Return probe redesign: x86_64 specific changes · ba8af12f
      Rusty Lynch authored
      The following patch contains the x86_64 specific changes for the new
      return probe design.  Changes include:
       * Removing the architecture specific functions for querying a return probe
         instance off a stack address
       * Complete rework onf arch_prepare_kretprobe() and trampoline_probe_handler()
       * Removing trampoline_post_handler()
       * Adding arch_init() so that now we handle registering the return probe
         trampoline instead of kernel/kprobes.c doing it
      
      NOTE:
      Note that with this new design, the dependency on calculating a pointer to
      the task off the stack pointer no longer exist (resolving the problem of
      interruption stacks as pointed out in the original feedback to this port.)
      Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ba8af12f
    • Rusty Lynch's avatar
      [PATCH] Return probe redesign: i386 specific changes · 4bdbd37f
      Rusty Lynch authored
      The following patch contains the i386 specific changes for the new
      return probe design.  Changes include:
      
       * Removing the architecture specific functions for querying a return probe
         instance off a stack address
       * Complete rework onf arch_prepare_kretprobe() and trampoline_probe_handler()
       * Removing trampoline_post_handler()
       * Adding arch_init() so that now we handle registering the return probe
         trampoline instead of kernel/kprobes.c doing it
      Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      4bdbd37f
    • Rusty Lynch's avatar
      [PATCH] Return probe redesign: architecture independent changes · 802eae7c
      Rusty Lynch authored
      The following is the second version of the function return probe patches
      I sent out earlier this week.  Changes since my last submission include:
      
      * Fix in ppc64 code removing an unneeded call to re-enable preemption
      * Fix a build problem in ia64 when kprobes was turned off
      * Added another BUG_ON check to each of the architecture trampoline
        handlers
      
      My initial patch description ==>
      
       From my experiences with adding return probes to x86_64 and ia64, and the
      feedback on LKML to those patches, I think we can simplify the design
      for return probes.
      
      The following patch tweaks the original design such that:
      
      * Instead of storing the stack address in the return probe instance, the
        task pointer is stored.  This gives us all we need in order to:
          - find the correct return probe instance when we enter the trampoline
            (even if we are recursing)
          - find all left-over return probe instances when the task is going away
      
        This has the side effect of simplifying the implementation since more
        work can be done in kernel/kprobes.c since architecture specific knowledge
        of the stack layout is no longer required.  Specifically, we no longer have:
      	- arch_get_kprobe_task()
      	- arch_kprobe_flush_task()
      	- get_rp_inst_tsk()
      	- get_rp_inst()
      	- trampoline_post_handler() <see next bullet>
      
      * Instead of splitting the return probe handling and cleanup logic across
        the pre and post trampoline handlers, all the work is pushed into the
        pre function (trampoline_probe_handler), and then we skip single stepping
        the original function.  In this case the original instruction to be single
        stepped was just a NOP, and we can do without the extra interruption.
      
      The new flow of events to having a return probe handler execute when a target
      function exits is:
      
      * At system initialization time, a kprobe is inserted at the beginning of
        kretprobe_trampoline.  kernel/kprobes.c use to handle this on it's own,
        but ia64 needed to do this a little differently (i.e. a function pointer
        is really a pointer to a structure containing the instruction pointer and
        a global pointer), so I added the notion of arch_init(), so that
        kernel/kprobes.c:init_kprobes() now allows architecture specific
        initialization by calling arch_init() before exiting.  Each architecture
        now registers a kprobe on it's own trampoline function.
      
      * register_kretprobe() will insert a kprobe at the beginning of the targeted
        function with the kprobe pre_handler set to arch_prepare_kretprobe
        (still no change)
      
      * When the target function is entered, the kprobe is fired, calling
        arch_prepare_kretprobe (still no change)
      
      * In arch_prepare_kretprobe() we try to get a free instance and if one is
        available then we fill out the instance with a pointer to the return probe,
        the original return address, and a pointer to the task structure (instead
        of the stack address.)  Just like before we change the return address
        to the trampoline function and mark the instance as used.
      
        If multiple return probes are registered for a given target function,
        then arch_prepare_kretprobe() will get called multiple times for the same
        task (since our kprobe implementation is able to handle multiple kprobes
        at the same address.)  Past the first call to arch_prepare_kretprobe,
        we end up with the original address stored in the return probe instance
        pointing to our trampoline function. (This is a significant difference
        from the original arch_prepare_kretprobe design.)
      
      * Target function executes like normal and then returns to kretprobe_trampoline.
      
      * kprobe inserted on the first instruction of kretprobe_trampoline is fired
        and calls trampoline_probe_handler() (no change here)
      
      * trampoline_probe_handler() consumes each of the instances associated with
        the current task by calling the registered handler function and marking
        the instance as unused until an instance is found that has a return address
        different then the trampoline function.
      
        (change similar to my previous ia64 RFC)
      
      * If the task is killed with some left-over return probe instances (meaning
        that a target function was entered, but never returned), then we just
        free any instances associated with the task.  (Not much different other
        then we can handle this without calling architecture specific functions.)
      
        There is a known problem that this patch does not yet solve where
        registering a return probe flush_old_exec or flush_thread will put us
        in a bad state.  Most likely the best way to handle this is to not allow
        registering return probes on these two functions.
      
        (Significant change)
      
      This patch series applies to the 2.6.12-rc6-mm1 kernel, and provides:
        * kernel/kprobes.c changes
        * i386 patch of existing return probes implementation
        * x86_64 patch of existing return probe implementation
        * ia64 implementation
        * ppc64 implementation (provided by Ananth)
      
      This patch implements the architecture independant changes for a reworking
      of the kprobes based function return probes design. Changes include:
      
        * Removing functions for querying a return probe instance off a stack address
        * Removing the stack_addr field from the kretprobe_instance definition,
          and adding a task pointer
        * Adding architecture specific initialization via arch_init()
        * Removing extern definitions for the architecture trampoline functions
          (this isn't needed anymore since the architecture handles the
           initialization of the kprobe in the return probe trampoline function.)
      Signed-off-by: default avatarRusty Lynch <rusty.lynch@intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      802eae7c
    • Ananth N Mavinakayanahalli's avatar
      [PATCH] kprobes: fix single-step out of line - take2 · 9ec4b1f3
      Ananth N Mavinakayanahalli authored
      Now that PPC64 has no-execute support, here is a second try to fix the
      single step out of line during kprobe execution.  Kprobes on x86_64 already
      solved this problem by allocating an executable page and using it as the
      scratch area for stepping out of line.  Reuse that.
      Signed-off-by: default avatarAnanth N Mavinakayanahalli <ananth@in.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9ec4b1f3
    • Linus Torvalds's avatar
    • Mike Miller's avatar
      [PATCH] cciss: remove partition info from CCISS_GETLUNINFO · 60564a31
      Mike Miller authored
      This patch fulfills a promise I made to Christoph sometime back.  I am
      removing the partition info from the CCISS_GETLUNINFO ioctl as I was informed
      my "driver had no damn business reading that structure." ;)
      
      The application folks are to use /proc or /sys for partition info from now on.
       I am only aware of a few apps that use this ioctl and I'm not sure they ever
      used the partition info.
      Signed-off-by: default avatarMike Miller <mike.miller@hp.com>
      Acked-by: default avatarJeff Garzik <jgarzik@pobox.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      60564a31
    • Mike Miller's avatar
      [PATCH] cciss: pci domain info pass 2 · cd6fb584
      Mike Miller authored
      This is pass 2 of my patch to add pci domain info to an existing ioctl.  This
      time I insert the domain between dev_fn and board_id as Willy suggested and
      change the var to unsigned short to ease Christoph's concerns.  Although I
      thought unsigned int was the correct var type for this.  I also thought it
      didn't matter where I inserted it in the structure.
      Signed-off-by: default avatarMike Miller <mike.miller@hp.com>
      Acked-by: default avatarJeff Garzik <jgarzik@pobox.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cd6fb584
    • Mike Miller's avatar
      [PATCH] cciss: pci id fix · 3de0a70b
      Mike Miller authored
      This patch fixes a PCI ID I got wrong before.  It also adds support for
      another new SAS controller due out this summer.  I didn't have a marketing
      name prior to my last submission.  Also modifies the copyright date range.
      Signed-off-by: default avatarMike Miller <mike.miller@hp.com>
      Acked-by: default avatarJeff Garzik <jgarzik@pobox.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3de0a70b
    • Roland Dreier's avatar
      [PATCH] MAINTAINERS: Update Roland Dreier's email · 21c121cc
      Roland Dreier authored
      Cisco bought Topspin, so I'm now a shiny happy Cisco employee.  Update my
      entry in MAINTAINERS.
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      21c121cc
    • Roland Dreier's avatar
      [PATCH] IB: Fix pack/unpack when size_bits == 64 · 48442962
      Roland Dreier authored
      Fix handling of fields with size_bits == 64.  Pointed out by Hal Rosenstock.
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      48442962
    • Roland Dreier's avatar
      [PATCH] IB: Fix race in sa_query · dae4c1d2
      Roland Dreier authored
      Use a copy of the id we'll return to the consumer so that we don't
      dereference query->sa_query after calling send_mad().  A completion may
      occur very quickly and end up freeing the query before we get to do
      anything after send_mad().
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      dae4c1d2
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Bump version · cae54bdf
      Roland Dreier authored
      It's about time for a version bump.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cae54bdf
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Align FW command mailboxes to 4K · ed878458
      Roland Dreier authored
      Future versions of Mellanox HCA firmware will require command mailboxes to be
      aligned to 4K.  Support this by using a pci_pool to allocate all mailboxes.
      This has the added benefit of shrinking the source and text of mthca.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ed878458
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Encapsulate command interface init · 80fd8238
      Roland Dreier authored
      Encapsulate mthca command interface initialization/cleanup.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      80fd8238
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Fix memory leak on error path · 761f9eb8
      Roland Dreier authored
      Free page_list buffer on error path of mthca_reg_phys_mr().
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      761f9eb8
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Split off MTT allocation · d56d6f95
      Roland Dreier authored
      Split allocation of MTT range from creation of MR.  This will be useful for
      implementing shared memory regions and userspace verbs.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d56d6f95
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Move mthca_is_memfree checks · a03a5a67
      Roland Dreier authored
      Make mthca_table_put() and mthca_table_put_range() NOPs if the device is not
      mem-free, so that we don't have to have "if (mthca_is_memfree())" tests in the
      callers of these functions.  This makes our code more readable and
      maintainable, and saves a couple dozen bytes of text in ib_mthca.ko as well.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      a03a5a67
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Fix memset size · a852092e
      Roland Dreier authored
      Fix memset to use sizeof *props instead of just sizeof props.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      a852092e
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Enable unreliable connected transport · 9e6970b5
      Roland Dreier authored
      Add support for unreliable connected (UC) transport to mthca driver:
       - Add attributes for UC to modify QP table.
       - Add support for posting UC work requests.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9e6970b5
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Set RDMA/atomic capabilities correctly · 34a4a753
      Roland Dreier authored
      mthca apparently had the meanings of the max_rd_atomic and max_dest_rd_atomic
      QP attributes backwards.  max_rd_atomic limits the maximum number of
      outstanding RDMA/atomic requests as an initiator (on a send queue), and
      max_dest_rd_atomic specifies the resources allocated to handle RMDA/atomic
      requests from the remote end of the connection.  We were programming our QP
      context with these values swapped.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      34a4a753
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Set QP static rate correctly · cd123d7f
      Roland Dreier authored
      Fix offset of static_rate in QP context.  Pointed out by Dror Goldenberg.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cd123d7f
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Use dma_alloc_coherent instead of pci_alloc_consistent · 64dc81fc
      Roland Dreier authored
      Switch all allocations of coherent memory from pci_alloc_consistent() to
      dma_alloc_coherent(), so that we can pass GFP_KERNEL.  This should help when
      the system is low on memory.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      64dc81fc
    • Roland Dreier's avatar
      [PATCH] IB/mthca: Clean up CQ debug · bb2af78b
      Roland Dreier authored
      Clean up CQ debugging code: make dump_cqe print on one line, and only dump
      error CQ entries for local operation errors.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      bb2af78b
    • Bernhard Fischer's avatar
      [PATCH] IB/mthca: Clean up error messages · 177214af
      Bernhard Fischer authored
      - Fix incorrect cut-n-paste in error messages.
      - Add missing newlines in error messages.
      - Use DRV_NAME instead of "ib_mthca" in a couple of places.
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      177214af
    • Tom Duffy's avatar
      [PATCH] IB/mthca: Add Sun copyright notice · cd4e8fb4
      Tom Duffy authored
      Add Sun copyright to files modified by Tom Duffy.
      Signed-off-by: default avatarTom Duffy <tduffy@sun.com>
      Signed-off-by: default avatarRoland Dreier <roland@topspin.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      cd4e8fb4
    • Andrea Arcangeli's avatar
      [PATCH] seccomp: tsc disable · ffaa8bd6
      Andrea Arcangeli authored
      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: default avatarAndrea Arcangeli <andrea@cpushare.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ffaa8bd6