Skip to content
  1. Dec 06, 2023
  2. Dec 05, 2023
  3. Dec 04, 2023
  4. Dec 03, 2023
  5. Dec 02, 2023
    • Randy Dunlap's avatar
      hv_netvsc: rndis_filter needs to select NLS · 6c89f499
      Randy Dunlap authored
      
      
      rndis_filter uses utf8s_to_utf16s() which is provided by setting
      NLS, so select NLS to fix the build error:
      
      ERROR: modpost: "utf8s_to_utf16s" [drivers/net/hyperv/hv_netvsc.ko] undefined!
      
      Fixes: 1ce09e89 ("hyperv: Add support for setting MAC from within guests")
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Cc: Haiyang Zhang <haiyangz@microsoft.com>
      Cc: K. Y. Srinivasan <kys@microsoft.com>
      Cc: Wei Liu <wei.liu@kernel.org>
      Cc: Dexuan Cui <decui@microsoft.com>
      Reviewed-by: default avatarSimon Horman <horms@kernel.org>
      Tested-by: Simon Horman <horms@kernel.org> # build-tested
      Reviewed-by: default avatarMichael Kelley <mikelley@microsoft.com>
      Link: https://lore.kernel.org/r/20231130055853.19069-1-rdunlap@infradead.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6c89f499
    • Thinh Tran's avatar
      net/tg3: fix race condition in tg3_reset_task() · 16b55b1f
      Thinh Tran authored
      
      
      When an EEH error is encountered by a PCI adapter, the EEH driver
      modifies the PCI channel's state as shown below:
      
         enum {
            /* I/O channel is in normal state */
            pci_channel_io_normal = (__force pci_channel_state_t) 1,
      
            /* I/O to channel is blocked */
            pci_channel_io_frozen = (__force pci_channel_state_t) 2,
      
            /* PCI card is dead */
            pci_channel_io_perm_failure = (__force pci_channel_state_t) 3,
         };
      
      If the same EEH error then causes the tg3 driver's transmit timeout
      logic to execute, the tg3_tx_timeout() function schedules a reset
      task via tg3_reset_task_schedule(), which may cause a race condition
      between the tg3 and EEH driver as both attempt to recover the HW via
      a reset action.
      
      EEH driver gets error event
      --> eeh_set_channel_state()
          and set device to one of
          error state above           scheduler: tg3_reset_task() get
                                      returned error from tg3_init_hw()
                                   --> dev_close() shuts down the interface
      tg3_io_slot_reset() and
      tg3_io_resume() fail to
      reset/resume the device
      
      To resolve this issue, we avoid the race condition by checking the PCI
      channel state in the tg3_reset_task() function and skip the tg3 driver
      initiated reset when the PCI channel is not in the normal state.  (The
      driver has no access to tg3 device registers at this point and cannot
      even complete the reset task successfully without external assistance.)
      We'll leave the reset procedure to be managed by the EEH driver which
      calls the tg3_io_error_detected(), tg3_io_slot_reset() and
      tg3_io_resume() functions as appropriate.
      
      Adding the same checking in tg3_dump_state() to avoid dumping all
      device registers when the PCI channel is not in the normal state.
      
      Signed-off-by: default avatarThinh Tran <thinhtr@linux.vnet.ibm.com>
      Tested-by: default avatarVenkata Sai Duggi <venkata.sai.duggi@ibm.com>
      Reviewed-by: default avatarDavid Christensen <drc@linux.vnet.ibm.com>
      Reviewed-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Link: https://lore.kernel.org/r/20231201001911.656-1-thinhtr@linux.vnet.ibm.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      16b55b1f
  6. Dec 01, 2023