1. 21 4月, 2016 17 次提交
  2. 06 4月, 2016 15 次提交
    • J
      fm10k: use ethtool_rxfh_indir_default for default redirection table · 0ea7fae4
      Jacob Keller 提交于
      The fm10k driver used its own code for generating a default indirection
      table on device load, which was not the same as the default generated by
      ethtool when indir_size of 0 is passed to SRXFH. Take advantage of
      ethtool_rxfh_indir_default() and simplify code to write the redirection
      table to reduce some code duplication.
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      0ea7fae4
    • J
      fm10k: fix a minor typo in some comments · d8ec92f2
      Jacob Keller 提交于
      s/funciton/function to resolve a typo, and cleanup grammar on a few
      comments regarding processing the VF mailboxes.
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      d8ec92f2
    • J
      fm10k: correctly clean up when init_queueing_scheme fails · 4be37c42
      Jacob Keller 提交于
      Fix a kernel panic that occurs during surprise removal. Clear the
      interface queue counts upon fm10k_init_msix_capability failure. This
      prevents further code (fm10k_update_stats etc.) from attempting to
      access unallocated queue vector or ring memory.
      
      [  628.692648] BUG: unable to handle kernel NULL pointer dereference at 0000000000000068
      [  628.692805] IP: [<ffffffffa0475caf>] fm10k_update_stats+0x7f/0x2c0 [fm10k]
      [  628.693173] PGD 0
      [  628.693759] Oops: 0000 [#1] SMP
      [  628.699321] CPU: 10 PID: 8164 Comm: kworker/10:0 Tainted: G           OE  ------------   3.10.0-327.el7.x86_64 #1
      [  628.700096] Hardware name: Supermicro X9DAi/X9DAi, BIOS 3.2 05/09/2015
      [  628.700894] Workqueue: pciehp-1 pciehp_power_thread
      [  628.701686] task: ffff88086559c500 ti: ffff8808593c0000 task.ti: ffff8808593c0000
      [  628.702493] RIP: 0010:[<ffffffffa0475caf>]  [<ffffffffa0475caf>] fm10k_update_stats+0x7f/0x2c0 [fm10k]
      [  628.703310] RSP: 0018:ffff8808593c3b00  EFLAGS: 00010282
      [  628.704132] RAX: 0000000000000000 RBX: ffff880860760000 RCX: 0000000000000000
      [  628.704963] RDX: ffff880860760b08 RSI: 0000000000000000 RDI: 0000000000000000
      [  628.705794] RBP: ffff8808593c3b40 R08: 0000000000000000 R09: 0000000000000000
      [  628.706604] R10: 0000000000000000 R11: ffff880860760c40 R12: 0000000000000080
      [  628.707420] R13: ffff8808607608c0 R14: ffff880860779ec0 R15: ffff880860779f40
      [  628.708238] FS:  0000000000000000(0000) GS:ffff88086f000000(0000) knlGS:0000000000000000
      [  628.709071] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  628.709923] CR2: 0000000000000068 CR3: 000000000194a000 CR4: 00000000001407e0
      [  628.710752] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  628.711596] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [  628.712438] Stack:
      [  628.713255]  ffff880860764458 ffff8808607608c0 ffff880860760000 ffff880860760000
      [  628.714088]  0000000000000080 ffff8808607608c0 ffff880860779ec0 ffff880860779f40
      [  628.714925]  ffff8808593c3b88 ffffffffa04780c5 ffff880860764458 0000000a8163cb5b
      [  628.715752] Call Trace:
      [  628.716560]  [<ffffffffa04780c5>] fm10k_down+0x155/0x1f0 [fm10k]
      [  628.717367]  [<ffffffffa0479958>] fm10k_close+0x28/0xd0 [fm10k]
      [  628.718184]  [<ffffffff81526365>] __dev_close_many+0x85/0xd0
      [  628.718986]  [<ffffffff815264d8>] dev_close_many+0x98/0x120
      [  628.719764]  [<ffffffff81527ab8>] rollback_registered_many+0xa8/0x230
      [  628.720527]  [<ffffffff81527c80>] rollback_registered+0x40/0x70
      [  628.721294]  [<ffffffff81529198>] unregister_netdevice_queue+0x48/0x80
      [  628.722052]  [<ffffffff815291ec>] unregister_netdev+0x1c/0x30
      [  628.722816]  [<ffffffffa04762b8>] fm10k_remove+0xd8/0xe0 [fm10k]
      [  628.723581]  [<ffffffff81328c7b>] pci_device_remove+0x3b/0xb0
      [  628.724340]  [<ffffffff813f5fbf>] __device_release_driver+0x7f/0xf0
      [  628.725088]  [<ffffffff813f6053>] device_release_driver+0x23/0x30
      [  628.725814]  [<ffffffff81321fe4>] pci_stop_bus_device+0x94/0xa0
      [  628.726535]  [<ffffffff813220d2>] pci_stop_and_remove_bus_device+0x12/0x20
      [  628.727249]  [<ffffffff8133de40>] pciehp_unconfigure_device+0xb0/0x1b0
      [  628.727964]  [<ffffffff8133d822>] pciehp_disable_slot+0x52/0xd0
      [  628.728664]  [<ffffffff8133d98a>] pciehp_power_thread+0xea/0x150
      [  628.729358]  [<ffffffff8109d5fb>] process_one_work+0x17b/0x470
      [  628.730036]  [<ffffffff8109e3cb>] worker_thread+0x11b/0x400
      [  628.730730]  [<ffffffff8109e2b0>] ? rescuer_thread+0x400/0x400
      [  628.731385]  [<ffffffff810a5aef>] kthread+0xcf/0xe0
      [  628.732036]  [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140
      [  628.732674]  [<ffffffff81645858>] ret_from_fork+0x58/0x90
      [  628.733289]  [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140
      [  628.733883] Code: 83 e8 01 48 8d 97 40 02 00 00 45 31 c0 4c 8d 9c c7 48 02 0
      [  628.735202] RIP  [<ffffffffa0475caf>] fm10k_update_stats+0x7f/0x2c0 [fm10k]
      [  628.735732]  RSP <ffff8808593c3b00>
      [  628.736285] CR2: 0000000000000068
      [  628.736846] ---[ end trace 9156088b311aff42 ]---
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      4be37c42
    • B
      fm10k: prevent possibly uninitialized variable · c4114e3d
      Bruce Allan 提交于
      If 'attr_flag < (1 << (2 * FM10K_TEST_MSG_NESTED))' is ever false, err
      will be used uninitialized.
      Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      c4114e3d
    • J
      fm10k: add helper functions to set strings and data for ethtool stats · d2e0721b
      Jacob Keller 提交于
      Reduce duplicate code and the amount of indentation by adding
      fm10k_add_stat_strings and fm10k_add_ethtool_stats functions which help
      add fm10k_stat structures to the ethtool stats callbacks. This helps
      increase ease of use for future stat additions, and increases code
      readability. Skip handling of the per-queue stats as these will be
      reworked in a following patch.
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      d2e0721b
    • J
      fm10k: free MBX IRQ before clearing interrupt scheme · c8ed563b
      Jacob Keller 提交于
      During fm10k_io_error_detected we were clearing the interrupt scheme
      before we freed the MBX IRQ. This causes a kernel panic because the MBX
      IRQ are assigned after MSI-X initialization. Clearing the interrupt
      scheme results in removing the MSI-X entry table. Fix this by freeing
      the MBX IRQ before we clear the interrupt scheme, as we do elsewhere in
      the driver.
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      c8ed563b
    • J
      fm10k: print error message when stop_hw fails · 61e0217e
      Jacob Keller 提交于
      fm10k_stop_hw_generic calls fm10k_disable_queues_generic, which may
      return an error code indicating that the queues were not stopped within
      the time limit. Notify the user by displaying a message in the kernel
      message ring, in a similar way to how we notify the user when reset_hw
      fails. There isn't much we can do to recover from this error, so
      currently nothing else is done.
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      61e0217e
    • J
      fm10k: base queue scheme covered by RSS · b3525696
      Jacob Keller 提交于
      In fm10k_set_num_queues, we previously assigned the base template. This
      would always be overwritten by either fm10k_set_qos_queues or
      fm10k_set_rss_queues. In either case, we don't need the base values, so
      we can just remove them.
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      b3525696
    • J
      fm10k: don't initialize service task until later in probe · e72319bb
      Jacob Keller 提交于
      Delay initialization of the service timer and service task until late
      probe. If we don't wait, failures in probe do not properly cleanup the
      service timer or service task items, which results in the kernel panic
      below, potentially freezing the whole system. In addition, ensure that
      the SERVICE_DISABLE bit is set before we request the MBX IRQ since the
      MBX interrupt attempts to schedule the service task otherwise. This
      prevents a similar trace from occurring after this change.
      
      We didn't notice this issue before because probe almost always completes
      successfully. I discovered it due to a mis-ordered mailbox handler
      array, which resulted in the following failure when requesting mailbox
      interrupt.
      
      [  555.325619] ------------[ cut here ]------------
      [  555.325628] WARNING: CPU: 0 PID: 4941 at lib/list_debug.c:33 __list_add+0xa0/0xd0()
      [  555.325631] list_add corruption. prev->next should be next (ffffffff81f46648), but was           (null). (prev=ffff8807fad5d0e8).
      <snip>
      [  555.325722] CPU: 0 PID: 4941 Comm: insmod Tainted: G           OE   4.0.4-303.fc22.x86_64 #1
      [  555.325725] Hardware name: Intel Corporation S2600CO/S2600CO, BIOS SE5C600.86B.02.03.8x23.060520140825 06/05/2014
      [  555.325727]  0000000000000000 00000000b4f161b3 ffff88081a21f8e8 ffffffff81783124
      [  555.325734]  0000000000000000 ffff88081a21f940 ffff88081a21f928 ffffffff8109c66a
      [  555.325740]  0000000064000000 ffff8807fad5d0e8 ffff8807fad5d0e8 ffffffff81f46648
      [  555.325746] Call Trace:
      [  555.325752]  [<ffffffff81783124>] dump_stack+0x45/0x57
      [  555.325757]  [<ffffffff8109c66a>] warn_slowpath_common+0x8a/0xc0
      [  555.325759]  [<ffffffff8109c6f5>] warn_slowpath_fmt+0x55/0x70
      [  555.325763]  [<ffffffff813ba270>] __list_add+0xa0/0xd0
      [  555.325768]  [<ffffffff81102d1d>] __internal_add_timer+0x9d/0x110
      [  555.325771]  [<ffffffff81102dbf>] internal_add_timer+0x2f/0xc0
      [  555.325774]  [<ffffffff81104e5a>] mod_timer+0x12a/0x230
      [  555.325782]  [<ffffffffa03d54ca>] fm10k_probe+0x69a/0xc80 [fm10k]
      [  555.325787]  [<ffffffff813e8355>] local_pci_probe+0x45/0xa0
      [  555.325791]  [<ffffffff8129cf42>] ? sysfs_do_create_link_sd.isra.2+0x72/0xc0
      [  555.325794]  [<ffffffff813e96b9>] pci_device_probe+0xf9/0x150
      [  555.325799]  [<ffffffff814d7e73>] driver_probe_device+0xa3/0x400
      [  555.325802]  [<ffffffff814d82ab>] __driver_attach+0x9b/0xa0
      [  555.325805]  [<ffffffff814d8210>] ? __device_attach+0x40/0x40
      [  555.325808]  [<ffffffff814d5bd3>] bus_for_each_dev+0x73/0xc0
      [  555.325811]  [<ffffffff814d78ce>] driver_attach+0x1e/0x20
      [  555.325815]  [<ffffffff814d7480>] bus_add_driver+0x180/0x250
      [  555.325819]  [<ffffffffa03b2000>] ? 0xffffffffa03b2000
      [  555.325823]  [<ffffffff814d8aa4>] driver_register+0x64/0xf0
      [  555.325826]  [<ffffffff813e7bec>] __pci_register_driver+0x4c/0x50
      [  555.325832]  [<ffffffffa03d6ca3>] fm10k_register_pci_driver+0x23/0x30 [fm10k]
      [  555.325838]  [<ffffffffa03b2080>] fm10k_init_module+0x80/0x1000 [fm10k]
      [  555.325843]  [<ffffffff81002128>] do_one_initcall+0xb8/0x200
      [  555.325848]  [<ffffffff811e10d2>] ? __vunmap+0xa2/0x100
      [  555.325852]  [<ffffffff811fe239>] ? kmem_cache_alloc_trace+0x1b9/0x240
      [  555.325855]  [<ffffffff8178230e>] ? do_init_module+0x28/0x1cb
      [  555.325858]  [<ffffffff81782346>] do_init_module+0x60/0x1cb
      [  555.325862]  [<ffffffff8112168e>] load_module+0x205e/0x26b0
      [  555.325866]  [<ffffffff8111d110>] ? store_uevent+0x70/0x70
      [  555.325870]  [<ffffffff812234b0>] ? kernel_read+0x50/0x80
      [  555.325873]  [<ffffffff81121f3e>] SyS_finit_module+0xbe/0xf0
      [  555.325878]  [<ffffffff81789749>] system_call_fastpath+0x12/0x17
      [  555.325880] ---[ end trace 9e0f58d071eafd2a ]---
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e72319bb
    • J
      fm10k: prevent null pointer dereference of msix_entries table · de66c610
      Jacob Keller 提交于
      According to the C standard dereferencing a variable before it is
      checked invokes undefined behavior, and thus compilers are free to
      assume the check for NULL isn't necessary. Prevent this by re-ordering
      the NULL check of msix_entries in fm10k_free_mbx_irq.
      Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      de66c610
    • B
      fm10k: use ether_addr_copy to copy MAC address · 11c49f79
      Bruce Allan 提交于
      Cleanup the remaining instances of using memcpy() instead of the preferred
      ether_addr_copy().
      Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      11c49f79
    • B
    • B
      fm10k: demote BUG_ON() to WARN_ON() where appropriate · 838e6102
      Bruce Allan 提交于
      We don't need to crash the kernel in this instance so just warn about the
      condition and play on.
      Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      838e6102
    • B
      fm10k: cleanup remaining right-bit-shifted 1 · fcdb0a99
      Bruce Allan 提交于
      Use BIT() macro instead.
      Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      fcdb0a99
    • B
      fm10k: Move constants to the right of binary operators · 1aab144c
      Bruce Allan 提交于
      The semantic patch that makes this change is available
      in scripts/coccinelle/misc/compare_const_fl.cocci.
      
      More information about semantic patching is available at
      http://coccinelle.lip6.fr/Signed-off-by: NBruce Allan <bruce.w.allan@intel.com>
      Tested-by: NKrishneil Singh <Krishneil.k.singh@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      1aab144c
  3. 18 3月, 2016 1 次提交
    • J
      mm: introduce page reference manipulation functions · fe896d18
      Joonsoo Kim 提交于
      The success of CMA allocation largely depends on the success of
      migration and key factor of it is page reference count.  Until now, page
      reference is manipulated by direct calling atomic functions so we cannot
      follow up who and where manipulate it.  Then, it is hard to find actual
      reason of CMA allocation failure.  CMA allocation should be guaranteed
      to succeed so finding offending place is really important.
      
      In this patch, call sites where page reference is manipulated are
      converted to introduced wrapper function.  This is preparation step to
      add tracepoint to each page reference manipulation function.  With this
      facility, we can easily find reason of CMA allocation failure.  There is
      no functional change in this patch.
      
      In addition, this patch also converts reference read sites.  It will
      help a second step that renames page._count to something else and
      prevents later attempt to direct access to it (Suggested by Andrew).
      Signed-off-by: NJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Acked-by: NMichal Nazarewicz <mina86@mina86.com>
      Acked-by: NVlastimil Babka <vbabka@suse.cz>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fe896d18
  4. 04 3月, 2016 1 次提交
    • J
      net: relax setup_tc ndo op handle restriction · 5eb4dce3
      John Fastabend 提交于
      I added this check in setup_tc to multiple drivers,
      
       if (handle != TC_H_ROOT || tc->type != TC_SETUP_MQPRIO)
      
      Unfortunately restricting to TC_H_ROOT like this breaks the old
      instantiation of mqprio to setup a hardware qdisc. This patch
      relaxes the test to only check the type to make it equivalent
      to the check before I broke it. With this the old instantiation
      continues to work.
      
      A good smoke test is to setup mqprio with,
      
      # tc qdisc add dev eth4 root mqprio num_tc 8 \
        map 0 1 2 3 4 5 6 7 \
        queues 0@0 1@1 2@2 3@3 4@4 5@5 6@6 7@7
      
      Fixes: e4c6734e ("net: rework ndo tc op to consume additional qdisc handle paramete")
      Reported-by: NSingh Krishneil <krishneil.k.singh@intel.com>
      Reported-by: NJake Keller <jacob.e.keller@intel.com>
      CC: Murali Karicheri <m-karicheri2@ti.com>
      CC: Shradha Shah <sshah@solarflare.com>
      CC: Or Gerlitz <ogerlitz@mellanox.com>
      CC: Ariel Elior <ariel.elior@qlogic.com>
      CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      CC: Bruce Allan <bruce.w.allan@intel.com>
      CC: Jesse Brandeburg <jesse.brandeburg@intel.com>
      CC: Don Skidmore <donald.c.skidmore@intel.com>
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5eb4dce3
  5. 17 2月, 2016 3 次提交
  6. 22 12月, 2015 3 次提交