1. 27 4月, 2012 1 次提交
    • B
      e1000e: 82579 potential system hang on stress when ME enabled · bdc125f7
      Bruce Allan 提交于
      Previously, a workaround was added to address a hardware bug in the
      PCIm2PCI arbiter where a write by the driver of the Transmit/Receive
      Descriptor Tail register could happen concurrently with a write of any
      MAC CSR register by the Manageability Engine (ME) which could cause the
      Tail register to have an incorrect value.  The arbiter is supposed to
      prevent the concurrent writes but there is a bug that can cause the Host
      (driver) access to be acknowledged later than it should.
      After further investigation, it was discovered that a driver write access
      of any MAC CSR register after being idle for some time can be lost when
      ME is accessing a MAC CSR register.  When this happens, no further target
      access is claimed by the MAC which could hang the system.
      The workaround to check bit 24 in the FWSM register (set only when ME is
      accessing a MAC CSR register) and delay for a limited amount of time until
      it is cleared is now done for all driver writes of MAC CSR registers on
      82579 with ME enabled.  In the rare case when the driver is writing the
      Tail register and ME is accessing any MAC CSR register for a duration
      longer than the maximum delay, write the register and verify it has the
      correct value before continuing, otherwise reset the device.
      
      This patch also moves some pre-existing macros from the hardware-specific
      header file to the more appropriate generic driver header file.
      Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Tested-by: NJeff Pieper <jeffrey.e.pieper@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      bdc125f7
  2. 04 4月, 2012 6 次提交
  3. 28 3月, 2012 1 次提交
  4. 20 3月, 2012 1 次提交
  5. 01 3月, 2012 2 次提交
  6. 25 2月, 2012 3 次提交
  7. 24 2月, 2012 3 次提交
  8. 14 2月, 2012 2 次提交
  9. 10 2月, 2012 2 次提交
  10. 07 2月, 2012 5 次提交
  11. 27 1月, 2012 4 次提交
  12. 26 1月, 2012 7 次提交
  13. 20 12月, 2011 1 次提交
  14. 09 12月, 2011 1 次提交
  15. 05 12月, 2011 1 次提交
    • B
      e1000e: hitting BUG_ON() from napi_enable · 5f4a780d
      Bruce Allan 提交于
      Based on a patch from Mike McElroy created against the out-of-tree e1000e
      driver:
      
      Hitting the BUG_ON in napi_enable(). Code inspection shows that this can
      only be triggered by calling napi_enable() twice without an intervening
      napi_disable().
      
      I saw the following sequence of events in the stack trace:
      
      1) We simulated a cable pull using an Extreme switch.
      2) e1000_tx_timeout() was entered.
      3) e1000_reset_task() was called. Saw the message from e_err() in the
      console log.
      4) e1000_reinit_locked was called. This function calls e1000_down() and
      e1000_up(). These functions call napi_disable() and napi_enable()
      respectively.
      5) Then on another thread, a monitor task saw carrier was down and executed
      'ip set link down' and 'ip set link up' commands.
      6) Saw the '_E1000_RESETTING'warning fron the e1000_close function.
      7) Either the e1000_open() executed between the e1000_down() and e1000_up()
      calls in step 4 or the e1000_open() call executed after the e1000_up()
      call.  In either case, napi_enable() is called twice which triggers the
      BUG_ON.
      Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Cc: Mike McElroy <mike.mcelroy@stratus.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      5f4a780d