1. 10 11月, 2018 1 次提交
  2. 03 10月, 2018 1 次提交
  3. 19 9月, 2018 1 次提交
  4. 13 6月, 2018 1 次提交
    • K
      treewide: kzalloc() -> kcalloc() · 6396bb22
      Kees Cook 提交于
      The kzalloc() function has a 2-factor argument form, kcalloc(). This
      patch replaces cases of:
      
              kzalloc(a * b, gfp)
      
      with:
              kcalloc(a * b, gfp)
      
      as well as handling cases of:
      
              kzalloc(a * b * c, gfp)
      
      with:
      
              kzalloc(array3_size(a, b, c), gfp)
      
      as it's slightly less ugly than:
      
              kzalloc_array(array_size(a, b), c, gfp)
      
      This does, however, attempt to ignore constant size factors like:
      
              kzalloc(4 * 1024, gfp)
      
      though any constants defined via macros get caught up in the conversion.
      
      Any factors with a sizeof() of "unsigned char", "char", and "u8" were
      dropped, since they're redundant.
      
      The Coccinelle script used for this was:
      
      // Fix redundant parens around sizeof().
      @@
      type TYPE;
      expression THING, E;
      @@
      
      (
        kzalloc(
      -	(sizeof(TYPE)) * E
      +	sizeof(TYPE) * E
        , ...)
      |
        kzalloc(
      -	(sizeof(THING)) * E
      +	sizeof(THING) * E
        , ...)
      )
      
      // Drop single-byte sizes and redundant parens.
      @@
      expression COUNT;
      typedef u8;
      typedef __u8;
      @@
      
      (
        kzalloc(
      -	sizeof(u8) * (COUNT)
      +	COUNT
        , ...)
      |
        kzalloc(
      -	sizeof(__u8) * (COUNT)
      +	COUNT
        , ...)
      |
        kzalloc(
      -	sizeof(char) * (COUNT)
      +	COUNT
        , ...)
      |
        kzalloc(
      -	sizeof(unsigned char) * (COUNT)
      +	COUNT
        , ...)
      |
        kzalloc(
      -	sizeof(u8) * COUNT
      +	COUNT
        , ...)
      |
        kzalloc(
      -	sizeof(__u8) * COUNT
      +	COUNT
        , ...)
      |
        kzalloc(
      -	sizeof(char) * COUNT
      +	COUNT
        , ...)
      |
        kzalloc(
      -	sizeof(unsigned char) * COUNT
      +	COUNT
        , ...)
      )
      
      // 2-factor product with sizeof(type/expression) and identifier or constant.
      @@
      type TYPE;
      expression THING;
      identifier COUNT_ID;
      constant COUNT_CONST;
      @@
      
      (
      - kzalloc
      + kcalloc
        (
      -	sizeof(TYPE) * (COUNT_ID)
      +	COUNT_ID, sizeof(TYPE)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(TYPE) * COUNT_ID
      +	COUNT_ID, sizeof(TYPE)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(TYPE) * (COUNT_CONST)
      +	COUNT_CONST, sizeof(TYPE)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(TYPE) * COUNT_CONST
      +	COUNT_CONST, sizeof(TYPE)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(THING) * (COUNT_ID)
      +	COUNT_ID, sizeof(THING)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(THING) * COUNT_ID
      +	COUNT_ID, sizeof(THING)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(THING) * (COUNT_CONST)
      +	COUNT_CONST, sizeof(THING)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(THING) * COUNT_CONST
      +	COUNT_CONST, sizeof(THING)
        , ...)
      )
      
      // 2-factor product, only identifiers.
      @@
      identifier SIZE, COUNT;
      @@
      
      - kzalloc
      + kcalloc
        (
      -	SIZE * COUNT
      +	COUNT, SIZE
        , ...)
      
      // 3-factor product with 1 sizeof(type) or sizeof(expression), with
      // redundant parens removed.
      @@
      expression THING;
      identifier STRIDE, COUNT;
      type TYPE;
      @@
      
      (
        kzalloc(
      -	sizeof(TYPE) * (COUNT) * (STRIDE)
      +	array3_size(COUNT, STRIDE, sizeof(TYPE))
        , ...)
      |
        kzalloc(
      -	sizeof(TYPE) * (COUNT) * STRIDE
      +	array3_size(COUNT, STRIDE, sizeof(TYPE))
        , ...)
      |
        kzalloc(
      -	sizeof(TYPE) * COUNT * (STRIDE)
      +	array3_size(COUNT, STRIDE, sizeof(TYPE))
        , ...)
      |
        kzalloc(
      -	sizeof(TYPE) * COUNT * STRIDE
      +	array3_size(COUNT, STRIDE, sizeof(TYPE))
        , ...)
      |
        kzalloc(
      -	sizeof(THING) * (COUNT) * (STRIDE)
      +	array3_size(COUNT, STRIDE, sizeof(THING))
        , ...)
      |
        kzalloc(
      -	sizeof(THING) * (COUNT) * STRIDE
      +	array3_size(COUNT, STRIDE, sizeof(THING))
        , ...)
      |
        kzalloc(
      -	sizeof(THING) * COUNT * (STRIDE)
      +	array3_size(COUNT, STRIDE, sizeof(THING))
        , ...)
      |
        kzalloc(
      -	sizeof(THING) * COUNT * STRIDE
      +	array3_size(COUNT, STRIDE, sizeof(THING))
        , ...)
      )
      
      // 3-factor product with 2 sizeof(variable), with redundant parens removed.
      @@
      expression THING1, THING2;
      identifier COUNT;
      type TYPE1, TYPE2;
      @@
      
      (
        kzalloc(
      -	sizeof(TYPE1) * sizeof(TYPE2) * COUNT
      +	array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
        , ...)
      |
        kzalloc(
      -	sizeof(TYPE1) * sizeof(THING2) * (COUNT)
      +	array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
        , ...)
      |
        kzalloc(
      -	sizeof(THING1) * sizeof(THING2) * COUNT
      +	array3_size(COUNT, sizeof(THING1), sizeof(THING2))
        , ...)
      |
        kzalloc(
      -	sizeof(THING1) * sizeof(THING2) * (COUNT)
      +	array3_size(COUNT, sizeof(THING1), sizeof(THING2))
        , ...)
      |
        kzalloc(
      -	sizeof(TYPE1) * sizeof(THING2) * COUNT
      +	array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
        , ...)
      |
        kzalloc(
      -	sizeof(TYPE1) * sizeof(THING2) * (COUNT)
      +	array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
        , ...)
      )
      
      // 3-factor product, only identifiers, with redundant parens removed.
      @@
      identifier STRIDE, SIZE, COUNT;
      @@
      
      (
        kzalloc(
      -	(COUNT) * STRIDE * SIZE
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      |
        kzalloc(
      -	COUNT * (STRIDE) * SIZE
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      |
        kzalloc(
      -	COUNT * STRIDE * (SIZE)
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      |
        kzalloc(
      -	(COUNT) * (STRIDE) * SIZE
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      |
        kzalloc(
      -	COUNT * (STRIDE) * (SIZE)
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      |
        kzalloc(
      -	(COUNT) * STRIDE * (SIZE)
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      |
        kzalloc(
      -	(COUNT) * (STRIDE) * (SIZE)
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      |
        kzalloc(
      -	COUNT * STRIDE * SIZE
      +	array3_size(COUNT, STRIDE, SIZE)
        , ...)
      )
      
      // Any remaining multi-factor products, first at least 3-factor products,
      // when they're not all constants...
      @@
      expression E1, E2, E3;
      constant C1, C2, C3;
      @@
      
      (
        kzalloc(C1 * C2 * C3, ...)
      |
        kzalloc(
      -	(E1) * E2 * E3
      +	array3_size(E1, E2, E3)
        , ...)
      |
        kzalloc(
      -	(E1) * (E2) * E3
      +	array3_size(E1, E2, E3)
        , ...)
      |
        kzalloc(
      -	(E1) * (E2) * (E3)
      +	array3_size(E1, E2, E3)
        , ...)
      |
        kzalloc(
      -	E1 * E2 * E3
      +	array3_size(E1, E2, E3)
        , ...)
      )
      
      // And then all remaining 2 factors products when they're not all constants,
      // keeping sizeof() as the second factor argument.
      @@
      expression THING, E1, E2;
      type TYPE;
      constant C1, C2, C3;
      @@
      
      (
        kzalloc(sizeof(THING) * C2, ...)
      |
        kzalloc(sizeof(TYPE) * C2, ...)
      |
        kzalloc(C1 * C2 * C3, ...)
      |
        kzalloc(C1 * C2, ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(TYPE) * (E2)
      +	E2, sizeof(TYPE)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(TYPE) * E2
      +	E2, sizeof(TYPE)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(THING) * (E2)
      +	E2, sizeof(THING)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	sizeof(THING) * E2
      +	E2, sizeof(THING)
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	(E1) * E2
      +	E1, E2
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	(E1) * (E2)
      +	E1, E2
        , ...)
      |
      - kzalloc
      + kcalloc
        (
      -	E1 * E2
      +	E1, E2
        , ...)
      )
      Signed-off-by: NKees Cook <keescook@chromium.org>
      6396bb22
  5. 05 6月, 2018 1 次提交
    • B
      e1000e: Ignore TSYNCRXCTL when getting I219 clock attributes · fff200ca
      Benjamin Poirier 提交于
      There have been multiple reports of crashes that look like
      kernel: RIP: 0010:[<ffffffff8110303f>] timecounter_read+0xf/0x50
      [...]
      kernel: Call Trace:
      kernel:  [<ffffffffa0806b0f>] e1000e_phc_gettime+0x2f/0x60 [e1000e]
      kernel:  [<ffffffffa0806c5d>] e1000e_systim_overflow_work+0x1d/0x80 [e1000e]
      kernel:  [<ffffffff810992c5>] process_one_work+0x155/0x440
      kernel:  [<ffffffff81099e16>] worker_thread+0x116/0x4b0
      kernel:  [<ffffffff8109f422>] kthread+0xd2/0xf0
      kernel:  [<ffffffff8163184f>] ret_from_fork+0x3f/0x70
      
      These can be traced back to the fact that e1000e_systim_reset() skips the
      timecounter_init() call if e1000e_get_base_timinca() returns -EINVAL, which
      leads to a null deref in timecounter_read().
      
      Commit 83129b37 ("e1000e: fix systim issues", v4.2-rc1) reworked
      e1000e_get_base_timinca() in such a way that it can return -EINVAL for
      e1000_pch_spt if the SYSCFI bit is not set in TSYNCRXCTL.
      
      Some experimentation has shown that on I219 (e1000_pch_spt, "MAC: 12")
      adapters, the E1000_TSYNCRXCTL_SYSCFI flag is unstable; TSYNCRXCTL reads
      sometimes don't have the SYSCFI bit set. Retrying the read shortly after
      finds the bit to be set. This was observed at boot (probe) but also link up
      and link down.
      
      Moreover, the phc (PTP Hardware Clock) seems to operate normally even after
      reads where SYSCFI=0. Therefore, remove this register read and
      unconditionally set the clock parameters.
      Reported-by: NAchim Mildenberger <admin@fph.physik.uni-karlsruhe.de>
      Message-Id: <20180425065243.g5mqewg5irkwgwgv@f2>
      Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1075876
      Fixes: 83129b37 ("e1000e: fix systim issues")
      Signed-off-by: NBenjamin Poirier <bpoirier@suse.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      fff200ca
  6. 28 4月, 2018 1 次提交
  7. 24 3月, 2018 1 次提交
  8. 13 3月, 2018 1 次提交
  9. 06 3月, 2018 5 次提交
    • P
      e1000e: allocate ring descriptors with dma_zalloc_coherent · aea3fca0
      Pierre-Yves Kerbrat 提交于
      Descriptor rings were not initialized at zero when allocated
      When area contained garbage data, it caused skb_over_panic in
      e1000_clean_rx_irq (if data had E1000_RXD_STAT_DD bit set)
      
      This patch makes use of dma_zalloc_coherent to make sure the
      ring is memset at 0 to prevent the area from containing garbage.
      
      Following is the signature of the panic:
      IODDR0@0.0: skbuff: skb_over_panic: text:80407b20 len:64010 put:64010 head:ab46d800 data:ab46d842 tail:0xab47d24c end:0xab46df40 dev:eth0
      IODDR0@0.0: BUG: failure at net/core/skbuff.c:105/skb_panic()!
      IODDR0@0.0: Kernel panic - not syncing: BUG!
      IODDR0@0.0:
      IODDR0@0.0: Process swapper/0 (pid: 0, threadinfo=81728000, task=8173cc00 ,cpu: 0)
      IODDR0@0.0: SP = <815a1c0c>
      IODDR0@0.0: Stack:      00000001
      IODDR0@0.0: b2d89800 815e33ac
      IODDR0@0.0: ea73c040 00000001
      IODDR0@0.0: 60040003 0000fa0a
      IODDR0@0.0: 00000002
      IODDR0@0.0:
      IODDR0@0.0: 804540c0 815a1c70
      IODDR0@0.0: b2744000 602ac070
      IODDR0@0.0: 815a1c44 b2d89800
      IODDR0@0.0: 8173cc00 815a1c08
      IODDR0@0.0:
      IODDR0@0.0:     00000006
      IODDR0@0.0: 815a1b50 00000000
      IODDR0@0.0: 80079434 00000001
      IODDR0@0.0: ab46df40 b2744000
      IODDR0@0.0: b2d89800
      IODDR0@0.0:
      IODDR0@0.0: 0000fa0a 8045745c
      IODDR0@0.0: 815a1c88 0000fa0a
      IODDR0@0.0: 80407b20 b2789f80
      IODDR0@0.0: 00000005 80407b20
      IODDR0@0.0:
      IODDR0@0.0:
      IODDR0@0.0: Call Trace:
      IODDR0@0.0: [<804540bc>] skb_panic+0xa4/0xa8
      IODDR0@0.0: [<80079430>] console_unlock+0x2f8/0x6d0
      IODDR0@0.0: [<80457458>] skb_put+0xa0/0xc0
      IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
      IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
      IODDR0@0.0: [<804079c8>] e1000_clean_rx_irq+0x188/0x3e8
      IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
      IODDR0@0.0: [<80468b48>] __dev_kfree_skb_any+0x88/0xa8
      IODDR0@0.0: [<804101ac>] e1000e_poll+0x94/0x288
      IODDR0@0.0: [<8046e9d4>] net_rx_action+0x19c/0x4e8
      IODDR0@0.0:   ...
      IODDR0@0.0: Maximum depth to print reached. Use kstack=<maximum_depth_to_print> To specify a custom value (where 0 means to display the full backtrace)
      IODDR0@0.0: ---[ end Kernel panic - not syncing: BUG!
      Signed-off-by: NPierre-Yves Kerbrat <pkerbrat@kalray.eu>
      Signed-off-by: NMarius Gligor <mgligor@kalray.eu>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Reviewed-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      aea3fca0
    • B
      e1000e: Avoid missed interrupts following ICR read · 116f4a64
      Benjamin Poirier 提交于
      The 82574 specification update errata 12 states that interrupts may be
      missed if ICR is read while INT_ASSERTED is not set. Avoid that problem by
      setting all bits related to events that can trigger the Other interrupt in
      IMS.
      
      The Other interrupt is raised for such events regardless of whether or not
      they are set in IMS. However, only when they are set is the INT_ASSERTED
      bit also set in ICR.
      
      By doing this, we ensure that INT_ASSERTED is always set when we read ICR
      in e1000_msix_other() and steer clear of the errata. This also ensures that
      ICR will automatically be cleared on read, therefore we no longer need to
      clear bits explicitly.
      Signed-off-by: NBenjamin Poirier <bpoirier@suse.com>
      Acked-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      116f4a64
    • B
      e1000e: Fix queue interrupt re-raising in Other interrupt · 361a954e
      Benjamin Poirier 提交于
      Restores the ICS write for Rx/Tx queue interrupts which was present before
      commit 16ecba59 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1)
      but was not restored in commit 4aea7a5c
      ("e1000e: Avoid receiver overrun interrupt bursts", v4.15-rc1).
      
      This re-raises the queue interrupts in case the txq or rxq bits were set in
      ICR and the Other interrupt handler read and cleared ICR before the queue
      interrupt was raised.
      
      Fixes: 4aea7a5c ("e1000e: Avoid receiver overrun interrupt bursts")
      Signed-off-by: NBenjamin Poirier <bpoirier@suse.com>
      Acked-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      361a954e
    • B
      Partial revert "e1000e: Avoid receiver overrun interrupt bursts" · 1f0ea197
      Benjamin Poirier 提交于
      This partially reverts commit 4aea7a5c.
      
      We keep the fix for the first part of the problem (1) described in the log
      of that commit, that is to read ICR in the other interrupt handler. We
      remove the fix for the second part of the problem (2), Other interrupt
      throttling.
      
      Bursts of "Other" interrupts may once again occur during rxo (receive
      overflow) traffic conditions. This is deemed acceptable in the interest of
      avoiding unforeseen fallout from changes that are not strictly necessary.
      As discussed, the e1000e driver should be in "maintenance mode".
      
      Link: https://www.spinics.net/lists/netdev/msg480675.htmlSigned-off-by: NBenjamin Poirier <bpoirier@suse.com>
      Acked-by: NAlexander Duyck <alexander.h.duyck@intel.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      1f0ea197
    • B
      e1000e: Remove Other from EIAC · 745d0bd3
      Benjamin Poirier 提交于
      It was reported that emulated e1000e devices in vmware esxi 6.5 Build
      7526125 do not link up after commit 4aea7a5c ("e1000e: Avoid receiver
      overrun interrupt bursts", v4.15-rc1). Some tracing shows that after
      e1000e_trigger_lsc() is called, ICR reads out as 0x0 in e1000_msix_other()
      on emulated e1000e devices. In comparison, on real e1000e 82574 hardware,
      icr=0x80000004 (_INT_ASSERTED | _LSC) in the same situation.
      
      Some experimentation showed that this flaw in vmware e1000e emulation can
      be worked around by not setting Other in EIAC. This is how it was before
      16ecba59 ("e1000e: Do not read ICR in Other interrupt", v4.5-rc1).
      
      Fixes: 4aea7a5c ("e1000e: Avoid receiver overrun interrupt bursts")
      Signed-off-by: NBenjamin Poirier <bpoirier@suse.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      745d0bd3
  10. 25 1月, 2018 2 次提交
  11. 28 11月, 2017 1 次提交
  12. 18 10月, 2017 1 次提交
  13. 11 10月, 2017 3 次提交
  14. 10 10月, 2017 4 次提交
  15. 22 9月, 2017 1 次提交
  16. 09 8月, 2017 1 次提交
  17. 08 6月, 2017 1 次提交
    • C
      e1000e: Undo e1000e_pm_freeze if __e1000_shutdown fails · 833521eb
      Chris Wilson 提交于
      An error during suspend (e100e_pm_suspend),
      
      [  429.994338] ACPI : EC: event blocked
      [  429.994633] e1000e: EEE TX LPI TIMER: 00000011
      [  430.955451] pci_pm_suspend(): e1000e_pm_suspend+0x0/0x30 [e1000e] returns -2
      [  430.955454] dpm_run_callback(): pci_pm_suspend+0x0/0x140 returns -2
      [  430.955458] PM: Device 0000:00:19.0 failed to suspend async: error -2
      [  430.955581] PM: Some devices failed to suspend, or early wake event detected
      [  430.957709] ACPI : EC: event unblocked
      
      lead to complete failure:
      
      [  432.585002] ------------[ cut here ]------------
      [  432.585013] WARNING: CPU: 3 PID: 8372 at kernel/irq/manage.c:1478 __free_irq+0x9f/0x280
      [  432.585015] Trying to free already-free IRQ 20
      [  432.585016] Modules linked in: cdc_ncm usbnet x86_pkg_temp_thermal intel_powerclamp coretemp mii crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hwdep lpc_ich snd_hda_core snd_pcm mei_me mei sdhci_pci sdhci i915 mmc_core e1000e ptp pps_core prime_numbers
      [  432.585042] CPU: 3 PID: 8372 Comm: kworker/u16:40 Tainted: G     U          4.10.0-rc8-CI-Patchwork_3870+ #1
      [  432.585044] Hardware name: LENOVO 2356GCG/2356GCG, BIOS G7ET31WW (1.13 ) 07/02/2012
      [  432.585050] Workqueue: events_unbound async_run_entry_fn
      [  432.585051] Call Trace:
      [  432.585058]  dump_stack+0x67/0x92
      [  432.585062]  __warn+0xc6/0xe0
      [  432.585065]  warn_slowpath_fmt+0x4a/0x50
      [  432.585070]  ? _raw_spin_lock_irqsave+0x49/0x60
      [  432.585072]  __free_irq+0x9f/0x280
      [  432.585075]  free_irq+0x34/0x80
      [  432.585089]  e1000_free_irq+0x65/0x70 [e1000e]
      [  432.585098]  e1000e_pm_freeze+0x7a/0xb0 [e1000e]
      [  432.585106]  e1000e_pm_suspend+0x21/0x30 [e1000e]
      [  432.585113]  pci_pm_suspend+0x71/0x140
      [  432.585118]  dpm_run_callback+0x6f/0x330
      [  432.585122]  ? pci_pm_freeze+0xe0/0xe0
      [  432.585125]  __device_suspend+0xea/0x330
      [  432.585128]  async_suspend+0x1a/0x90
      [  432.585132]  async_run_entry_fn+0x34/0x160
      [  432.585137]  process_one_work+0x1f4/0x6d0
      [  432.585140]  ? process_one_work+0x16e/0x6d0
      [  432.585143]  worker_thread+0x49/0x4a0
      [  432.585145]  kthread+0x107/0x140
      [  432.585148]  ? process_one_work+0x6d0/0x6d0
      [  432.585150]  ? kthread_create_on_node+0x40/0x40
      [  432.585154]  ret_from_fork+0x2e/0x40
      [  432.585156] ---[ end trace 6712df7f8c4b9124 ]---
      
      The unwind failures stems from commit 28002099 ("e1000e: Refactor PM
      flows"), but it may be a later patch that introduced the non-recoverable
      behaviour.
      
      Fixes: 28002099 ("e1000e: Refactor PM flows")
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99847Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Tested-by: NAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      833521eb
  18. 06 6月, 2017 3 次提交
  19. 22 5月, 2017 2 次提交
  20. 30 4月, 2017 3 次提交
  21. 21 4月, 2017 1 次提交
  22. 25 3月, 2017 1 次提交
  23. 19 1月, 2017 1 次提交
    • T
      net: Remove usage of net_device last_rx member · 4a7c9726
      Tobias Klauser 提交于
      The network stack no longer uses the last_rx member of struct net_device
      since the bonding driver switched to use its own private last_rx in
      commit 9f242738 ("bonding: use last_arp_rx in slave_last_rx()").
      
      However, some drivers still (ab)use the field for their own purposes and
      some driver just update it without actually using it.
      
      Previously, there was an accompanying comment for the last_rx member
      added in commit 4dc89133 ("net: add a comment on netdev->last_rx")
      which asked drivers not to update is, unless really needed. However,
      this commend was removed in commit f8ff080d ("bonding: remove
      useless updating of slave->dev->last_rx"), so some drivers added later
      on still did update last_rx.
      
      Remove all usage of last_rx and switch three drivers (sky2, atp and
      smc91c92_cs) which actually read and write it to use their own private
      copy in netdev_priv.
      
      Compile-tested with allyesconfig and allmodconfig on x86 and arm.
      
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Jay Vosburgh <j.vosburgh@gmail.com>
      Cc: Veaceslav Falico <vfalico@gmail.com>
      Cc: Andy Gospodarek <andy@greyhouse.net>
      Cc: Mirko Lindner <mlindner@marvell.com>
      Cc: Stephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: NTobias Klauser <tklauser@distanz.ch>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Reviewed-by: NJay Vosburgh <jay.vosburgh@canonical.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4a7c9726
  24. 09 1月, 2017 2 次提交