1. 25 5月, 2011 37 次提交
  2. 19 5月, 2011 1 次提交
    • G
      drivercore: revert addition of of_match to struct device · b1608d69
      Grant Likely 提交于
      Commit b826291c, "drivercore/dt: add a match table pointer to struct
      device" added an of_match pointer to struct device to cache the
      of_match_table entry discovered at driver match time.  This was unsafe
      because matching is not an atomic operation with probing a driver.  If
      two or more drivers are attempted to be matched to a driver at the
      same time, then the cached matching entry pointer could get
      overwritten.
      
      This patch reverts the of_match cache pointer and reworks all users to
      call of_match_device() directly instead.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      b1608d69
  3. 17 5月, 2011 2 次提交
    • J
      scsi: remove performance regression due to async queue run · 9937a5e2
      Jens Axboe 提交于
      Commit c21e6beb removed our queue request_fn re-enter
      protection, and defaulted to always running the queues from
      kblockd to be safe. This was a known potential slow down,
      but should be safe.
      
      Unfortunately this is causing big performance regressions for
      some, so we need to improve this logic. Looking into the details
      of the re-enter, the real issue is on requeue of requests.
      
      Requeue of requests upon seeing a BUSY condition from the device
      ends up re-running the queue, causing traces like this:
      
      scsi_request_fn()
              scsi_dispatch_cmd()
                      scsi_queue_insert()
                              __scsi_queue_insert()
                                      scsi_run_queue()
      					scsi_request_fn()
      						...
      
      potentially causing the issue we want to avoid. So special
      case the requeue re-run of the queue, but improve it to offload
      the entire run of local queue and starved queue from a single
      workqueue callback. This is a lot better than potentially
      kicking off a workqueue run for each device seen.
      
      This also fixes the issue of the local device going into recursion,
      since the above mentioned commit never moved that queue run out
      of line.
      Signed-off-by: NJens Axboe <jaxboe@fusionio.com>
      9937a5e2
    • J
      [SCSI] qla2xxx: Refactor call to qla2xxx_read_sfp for thermal temperature. · 6ad11eaa
      Joe Carnuccio 提交于
      Eliminate duplicate code by refactoring the calls to qla2xxx_read_sfp()
      in qla2x00_get_thermal_temp(). This keeps the parameter values separate
      from the mailbox register mechanics. This also allows qla2xxx_read_sfp()
      to be the sole "spec" for READ SFP semantics.
      
      Signed-off_by: Joe Carnuccio <joe.carnuccio@qlogic.com>
      Signed-off-by: NMadhuranath Iyengar <Madhu.Iyengar@qlogic.com>
      Signed-off-by: NJames Bottomley <jbottomley@parallels.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      6ad11eaa