1. 09 8月, 2007 16 次提交
    • I
      sched: remove rq_clock() · 2ab81159
      Ingo Molnar 提交于
      remove the now unused rq_clock() function.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2ab81159
    • I
      sched: eliminate rq_clock() use · a8e504d2
      Ingo Molnar 提交于
      eliminate rq_clock() use by changing it to:
      
         update_rq_clock(rq)
         now = rq->clock;
      
      identity transformation - no change in behavior.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a8e504d2
    • I
      sched: add [__]update_rq_clock(rq) · b04a0f4c
      Ingo Molnar 提交于
      add the [__]update_rq_clock(rq) functions. (No change in functionality,
      just reorganization to prepare for elimination of the heavy 64-bit
      timestamp-passing in the scheduler.)
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b04a0f4c
    • P
      sched: fix bug in balance_tasks() · a4ac01c3
      Peter Williams 提交于
      There are two problems with balance_tasks() and how it used:
      
      1. The variables best_prio and best_prio_seen (inherited from the old
      move_tasks()) were only required to handle problems caused by the
      active/expired arrays, the order in which they were processed and the
      possibility that the task with the highest priority could be on either.
        These issues are no longer present and the extra overhead associated
      with their use is unnecessary (and possibly wrong).
      
      2. In the absence of CONFIG_FAIR_GROUP_SCHED being set, the same
      this_best_prio variable needs to be used by all scheduling classes or
      there is a risk of moving too much load.  E.g. if the highest priority
      task on this at the beginning is a fairly low priority task and the rt
      class migrates a task (during its turn) then that moved task becomes the
      new highest priority task on this_rq but when the sched_fair class
      initializes its copy of this_best_prio it will get the priority of the
      original highest priority task as, due to the run queue locks being
      held, the reschedule triggered by pull_task() will not have taken place.
        This could result in inappropriate overriding of skip_for_load and
      excessive load being moved.
      
      The attached patch addresses these problems by deleting all reference to
      best_prio and best_prio_seen and making this_best_prio a reference
      parameter to the various functions involved.
      
      load_balance_fair() has also been modified so that this_best_prio is
      only reset (in the loop) if CONFIG_FAIR_GROUP_SCHED is set.  This should
      preserve the effect of helping spread groups' higher priority tasks
      around the available CPUs while improving system performance when
      CONFIG_FAIR_GROUP_SCHED isn't set.
      Signed-off-by: NPeter Williams <pwil3058@bigpond.net.au>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a4ac01c3
    • I
      sched: document nice levels · aea25401
      Ingo Molnar 提交于
      Document the design thinking behind nice levels.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      aea25401
    • A
      sched: remove binary sysctls from kernel.sched_domain · e0361851
      Alexey Dobriyan 提交于
      kernel.sched_domain hierarchy is under CTL_UNNUMBERED and thus
      unreachable to sysctl(2). Generating .ctl_number's in such situation is
      not useful.
      Signed-off-by: NAlexey Dobriyan <adobriyan@sw.ru>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e0361851
    • I
      sched: delta_exec accounting fix · fd8bb43e
      Ingo Molnar 提交于
      small delta_exec accounting fix: increase delta_exec and increase
      sum_exec_runtime even if the task is not on the runqueue anymore.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      fd8bb43e
    • I
      sched: clean up delta_mine · c5dcfe72
      Ingo Molnar 提交于
      cleanup: delta_mine is an unsigned value.
      
      no code impact:
      
         text    data     bss     dec     hex filename
         27823    2726      16   30565    7765 sched.o.before
         27823    2726      16   30565    7765 sched.o.after
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c5dcfe72
    • I
      sched: schedule() speedup · 8e717b19
      Ingo Molnar 提交于
      speed up schedule(): share the 'now' parameter that deactivate_task()
      was calculating internally.
      
      ( this also fixes the small accounting window between the deactivate
        call and the pick_next_task() call. )
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      8e717b19
    • I
      sched: uninline rq_clock() · 7bfd0485
      Ingo Molnar 提交于
      uninline rq_clock() to save 263 bytes of code:
      
         text    data     bss     dec     hex filename
         39561    3642      24   43227    a8db sched.o.before
         39298    3642      24   42964    a7d4 sched.o.after
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7bfd0485
    • J
      sched: mark print_cfs_stats static · 291ae5a1
      Josh Triplett 提交于
      sched_fair.c defines print_cfs_stats, and sched_debug.c uses it, but sched.c
      includes both sched_fair.c and sched_debug.c, so all the references to
      print_cfs_stats occur in the same compilation unit.  Thus, mark
      print_cfs_stats static.
      
      Eliminates a sparse warning:
      warning: symbol 'print_cfs_stats' was not declared. Should it be static?
      Signed-off-by: NJosh Triplett <josh@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      291ae5a1
    • U
      sched: clean up sched_getaffinity() · 9531b62f
      Ulrich Drepper 提交于
      here's another tiny cleanup.  The generated code is not affected (gcc is
      smart enough) but for people looking over the code it is just irritating
      to have the extra conditional.
      Signed-off-by: NUlrich Drepper <drepper@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9531b62f
    • T
      sched: mention CONFIG_SCHED_DEBUG in documentation · 5f5d3aa1
      Thomas Voegtle 提交于
      a little hint to switch on CONFIG_SCHED_DEBUG should be given.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      5f5d3aa1
    • P
      sched: simplify move_tasks() · 43010659
      Peter Williams 提交于
      The move_tasks() function is currently multiplexed with two distinct
      capabilities:
      
      1. attempt to move a specified amount of weighted load from one run
      queue to another; and
      2. attempt to move a specified number of tasks from one run queue to
      another.
      
      The first of these capabilities is used in two places, load_balance()
      and load_balance_idle(), and in both of these cases the return value of
      move_tasks() is used purely to decide if tasks/load were moved and no
      notice of the actual number of tasks moved is taken.
      
      The second capability is used in exactly one place,
      active_load_balance(), to attempt to move exactly one task and, as
      before, the return value is only used as an indicator of success or failure.
      
      This multiplexing of sched_task() was introduced, by me, as part of the
      smpnice patches and was motivated by the fact that the alternative, one
      function to move specified load and one to move a single task, would
      have led to two functions of roughly the same complexity as the old
      move_tasks() (or the new balance_tasks()).  However, the new modular
      design of the new CFS scheduler allows a simpler solution to be adopted
      and this patch addresses that solution by:
      
      1. adding a new function, move_one_task(), to be used by
      active_load_balance(); and
      2. making move_tasks() a single purpose function that tries to move a
      specified weighted load and returns 1 for success and 0 for failure.
      
      One of the consequences of these changes is that neither move_one_task()
      or the new move_tasks() care how many tasks sched_class.load_balance()
      moves and this enables its interface to be simplified by returning the
      amount of load moved as its result and removing the load_moved pointer
      from the argument list.  This helps simplify the new move_tasks() and
      slightly reduces the amount of work done in each of
      sched_class.load_balance()'s implementations.
      
      Further simplification, e.g. changes to balance_tasks(), are possible
      but (slightly) complicated by the special needs of load_balance_fair()
      so I've left them to a later patch (if this one gets accepted).
      
      NB Since move_tasks() gets called with two run queue locks held even
      small reductions in overhead are worthwhile.
      
      [ mingo@elte.hu ]
      
      this change also reduces code size nicely:
      
         text    data     bss     dec     hex filename
         39216    3618      24   42858    a76a sched.o.before
         39173    3618      24   42815    a73f sched.o.after
      Signed-off-by: NPeter Williams <pwil3058@bigpond.net.au>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      43010659
    • I
      sched: reorder update_cpu_load(rq) with the ->task_tick() call · f1a438d8
      Ingo Molnar 提交于
      Peter Williams suggested to flip the order of update_cpu_load(rq) with
      the ->task_tick() call. This is a NOP for the current scheduler (the
      two functions are independent of each other), ->task_tick() might
      create some state for update_cpu_load() in the future (or in PlugSched).
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f1a438d8
    • I
      sched: batch sleeper bonus · 0915c4e8
      Ingo Molnar 提交于
      batch up the sleeper bonus sum a bit more. Anything below
      sched-granularity is too small to make a practical difference
      anyway.
      
      this optimization reduces the math in high-frequency scheduling
      scenarios.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      0915c4e8
  2. 07 8月, 2007 9 次提交
  3. 06 8月, 2007 3 次提交
  4. 05 8月, 2007 5 次提交
  5. 04 8月, 2007 7 次提交
    • S
      [SCSI] aacraid: prevent panic on adapter resource failure · 2b053729
      Salyzyn, Mark 提交于
      If the driver fails to allocate the contiguous (DMAable) memory for
      system reasons, we fail to load the instance, but then we try to free
      the <nul> allocation in the cleanup code and we get a panic in
      pci_free_consistent(). This is reported against an older kernel, hope
      this is relevant for latest/greatest.
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      2b053729
    • B
      [SCSI] aha152x: use data accessors and !use_sg cleanup · 2338545a
      Boaz Harrosh 提交于
      And finally this is the regular !use_sg cleanup
      and use of data accessors.
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      2338545a
    • B
      [SCSI] aha152x: Fix check_condition code-path · 45333ffa
      Boaz Harrosh 提交于
      check_condition code-path was similar but more
      complicated to Reset. It went like this:
      
        1. extra space was allocated at aha152x_scdata for mirroring
          scsi_cmnd members.
        2. At aha152x_internal_queue() every not check_condition
          (REQUEST_SENSE) command was copied to above members in
          case of error.
        3. At busfree_run() in the DONE_CS phase if a Status of
          SAM_STAT_CHECK_CONDITION was detected. The command was
          re-queued Internally using aha152x_internal_queue(,,check_condition,)
          The old command members are over written with the
          REQUEST_SENSE info.
        4. At busfree_run() in the DONE_CS phase again. If it is a
          check_condition command, info was restored from mirror
          made at first call to aha152x_internal_queue() (see 2)
          and the command is completed.
      
      What I did is:
      
        1. Allocate less space in aha152x_scdata only for the 16-byte
          original command. (which is actually not needed by scsi-ml
          anymore at this stage. But this is to much knowledge of scsi-ml)
        2. If Status == SAM_STAT_CHECK_CONDITION, then like before
           re-queue a REQUEST_SENSE command. But only now save original
           command members. (Less of them)
        3. In aha152x_internal_queue(), just like for Reset, use the
          check_condition hint to set differently the working members.
          execute the command.
        4. At busfree_run() in the DONE_CS phase again. restore needed
           members.
      
      While at it. This patch fixes a BUG. Old code when sending
      a REQUEST_SENSE for a failed command. Would than return with
      cmd->resid == 0 which was the status of the REQUEST_SENSE.
      The failing command resid was lost. And when would resid
      be interesting if not on a failing command?
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      45333ffa
    • B
      [SCSI] aha152x: Clean Reset path · 66acdb03
      Boaz Harrosh 提交于
      What Reset code was doing:  Save command's important/dangerous
      Info on stack. NULL those members from scsi_cmnd.
      Issue a Reset. wait for it to finish than restore members
      and return.
      
      What I do is save or NULL nothing. But use the "resetting"
      hint in aha152x_internal_queue() to NULL out working members
      and leave struct scsi_cmnd alone.
      
      The indent here looks funny but it will change/drop in last
      patch and it is clear this way what changed.
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      66acdb03
    • B
      [SCSI] aha152x: preliminary fixes and some comments · 0ceb4798
      Boaz Harrosh 提交于
        hunk by hunk:
        - CHECK_CONDITION is what happens to cmnd->status >> 1
          or after status_byte() macro. But here it is used
          directly on status which means 0x1 which is an undefined
          bit in the standard. And is a status that will never
          return from a target.
      
        - in busfree_run at the DONE_SC phase we have 3 distinct
          operation:
      	1-if(DONE_SC->SCp.phase & check_condition)
                The REQUEST_SENSE command return.
                - Restore original command
      	  - Than continue to operation 3.
      	2-if(DONE_SC->SCp.Status==SAM_STAT_CHECK_CONDITION)
                A regular command returned with a status.
      	  - Internally re-Q a REQUEST_SENSE.
      	  - Do not do operation 3.
      	3-
      	  - Complete the command and return it to scsi-ml
           So the 0x2 in both these operations (1,2) means the scsi
           check-condition status, hence SAM_STAT_CHECK_CONDITION
      
        - Here the code asks about !(DONE_SC->SCp.Status & not_issued)
          but "not_issued" is an enum belonging to the "phase" member
          and not to the Status returned from target. The reason this
          works is because not_issued==1 and Also CHECK_CONDITION==1
          (remember from hunk 1). So actually the code was asking
          !(DONE_SC->SCp.Status & CHECK_CONDITION). Which means
          "Has the status been read from target yet?"
          Staus is read at status_run(). "not_issued" is
          cleared in seldo_run() which is usually earlier than
          status_run().
      
        So this patch does nothing as far as assembly is concerned
        but it does let the reader understand what is going on.
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      0ceb4798
    • B
      [SCSI] aha152x: use bounce buffer · b1ee0795
      Boaz Harrosh 提交于
      Cause highmem buffers to be bounced to low memory until this
      driver supports highmem addresses.  Otherwise it just oopses
      on NULL buffer addresses.
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      b1ee0795
    • B
      [SCSI] aha152x: fix debug mode symbol conflict · 50535df3
      Boaz Harrosh 提交于
      The symbol <debug_locks> conflicts with the rather global one in
      include/linux/locks.h.
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      50535df3