intel-wired-lan.osuosl.org archive mirror
 help / color / mirror / Atom feed
From: Kalle Valo <kvalo@codeaurora.org>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [patch 00/35] net: in_interrupt() cleanup and fixes
Date: Tue, 29 Sep 2020 11:01:23 +0300	[thread overview]
Message-ID: <87o8lpdnak.fsf@codeaurora.org> (raw)
In-Reply-To: <20200927194846.045411263@linutronix.de> (Thomas Gleixner's message of "Sun, 27 Sep 2020 21:48:46 +0200")

Thomas Gleixner <tglx@linutronix.de> writes:

> Folks,
>
> in the discussion about preempt count consistency accross kernel configurations:
>
>   https://lore.kernel.org/r/20200914204209.256266093 at linutronix.de/
>
> Linus clearly requested that code in drivers and libraries which changes
> behaviour based on execution context should either be split up so that
> e.g. task context invocations and BH invocations have different interfaces
> or if that's not possible the context information has to be provided by the
> caller which knows in which context it is executing.
>
> This includes conditional locking, allocation mode (GFP_*) decisions and
> avoidance of code paths which might sleep.
>
> In the long run, usage of 'preemptible, in_*irq etc.' should be banned from
> driver code completely.
>
> Our team started to dig through drivers and this it the first batch of
> cleanups in drivers/net/. It's not yet complete, so expect further patches
> in the next days.
>
> The series contains:
>
>     - A couple of bug fixes
>
>     - Removal of the bitrotting CAIF SPI driver which has never had a
>       matching driver providing the necessary platform device support.
>
>     - Removal of WARN/BUG(in_interrupt()) en masse as most of them are
>       incomplete because they won't detect other non-preemptible
>       context. All of the functions which have these WARN/BUG invoke core
>       code functions which can sleep. These have plenty of checks to catch
>       _all_ invalid contexts. So it's pointless to have incomplete WARN/BUG
>       in the drivers.
>
>       If a driver wants to have such a check for paranoia reasons, then
>       e.g. lockdep_assert_preemtion_enabled() is the right mechanism to
>       chose because lockdep guarantees to catch all invalid contexts
>       independent of kernel configuration while e.g. preemptible() does
>       not.
>
>     - Conversion of in_interrupt() checks to use either different functions
>       or to hand the context information in from the caller.
>
>     - For some drivers handing the context into functions which decided
>       between netif_rx() and netif_rx_ni() turned out to be impossible due
>       to lack of driver knowledge and convoluted code pathes with multiple
>       indirections. For those a core code function netif_rx_any_context()
>       is provided which contains an in_interrupt() check as a stop
>       gap. This allows to make progess on the driver side cleanup and
>       the function should go away once the driver wizards have fixed it
>       up proper.
>
>     - Simplifcation and cleanups in various places where code pointlessly
>       contains in_interrupt() conditionals which are mostly leftovers from
>       calling conventions in older kernels and have never been cleaned up.
>
>       Along with removing if from the horrible DBG_FOO() macro mess which
>       probably should be removed completely as the kernel today provides
>       way more sensible mechanisms to do function tracing and similar.
>
>     - A few other cleanups which were obvious when chasing the
>       in_interrupt() usage.
>
> The pile is also available from:
>
>     git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git softirq
>
> The diffstat summary is:
>
>  86 files changed, 300 insertions(+), 2233 deletions(-)
>
> which is biased by the CAIF SPI removal. Without that it is:
>
>  79 files changed, 300 insertions(+), 697 deletions(-)
>
> Thanks,
>
> 	tglx
> ---

[...]

>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c     |    4 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h        |    5 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c       |   20 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c       |    8 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h       |    7 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c     |    2 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c       |   12 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h       |    2 
>  b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c        |    2 
>  b/drivers/net/wireless/intel/ipw2x00/ipw2100.c                  |    3 
>  b/drivers/net/wireless/intel/ipw2x00/ipw2200.h                  |    6 
>  b/drivers/net/wireless/intel/ipw2x00/libipw.h                   |    3 
>  b/drivers/net/wireless/intel/iwlegacy/common.h                  |    4 
>  b/drivers/net/wireless/intel/iwlwifi/iwl-debug.c                |    5 
>  b/drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h         |    6 
>  b/drivers/net/wireless/intersil/hostap/hostap_hw.c              |   12 
>  b/drivers/net/wireless/marvell/libertas/defs.h                  |    3 
>  b/drivers/net/wireless/marvell/libertas/rx.c                    |   11 
>  b/drivers/net/wireless/marvell/libertas_tf/deb_defs.h           |    3 
>  b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c               |    6 
>  b/drivers/net/wireless/marvell/mwifiex/util.c                   |    6 
>  b/drivers/net/wireless/realtek/rtlwifi/base.c                   |   47 
>  b/drivers/net/wireless/realtek/rtlwifi/base.h                   |    3 
>  b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c |   12 
>  b/drivers/net/wireless/realtek/rtlwifi/core.c                   |    6 
>  b/drivers/net/wireless/realtek/rtlwifi/debug.c                  |   20 
>  b/drivers/net/wireless/realtek/rtlwifi/debug.h                  |    6 
>  b/drivers/net/wireless/realtek/rtlwifi/pci.c                    |    4 
>  b/drivers/net/wireless/realtek/rtlwifi/ps.c                     |   27 
>  b/drivers/net/wireless/realtek/rtlwifi/ps.h                     |   10 
>  b/drivers/net/wireless/realtek/rtlwifi/wifi.h                   |    3 
>  b/drivers/net/wireless/zydas/zd1211rw/zd_usb.c                  |    1 

For the wireless patches:

Acked-by: Kalle Valo <kvalo@codeaurora.org>

I assume Dave will take them, but just let me know if I should take them
instead.

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

      parent reply	other threads:[~2020-09-29  8:01 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-27 19:48 [Intel-wired-lan] [patch 00/35] net: in_interrupt() cleanup and fixes Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 01/35] net: enic: Cure the enic api locking trainwreck Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 02/35] net: caif: Remove unused caif SPI driver Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 03/35] net: Add netif_rx_any_context() Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 04/35] net: caif: Use netif_rx_any_context() Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 05/35] net: atheros: Remove WARN_ON(in_interrupt()) Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 06/35] net: cxgb3: Cleanup in_interrupt() usage Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 07/35] net: cxbg4: Remove pointless in_interrupt() check Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 08/35] net: e100: Remove in_interrupt() usage and pointless GFP_ATOMIC allocation Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 09/35] net: fec_mpc52xx: Replace in_interrupt() usage Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 10/35] net: intel: Remove in_interrupt() warnings Thomas Gleixner
2020-09-28 23:04   ` Alexander Duyck
2020-09-27 19:48 ` [Intel-wired-lan] [patch 11/35] net: ionic: Replace in_interrupt() usage Thomas Gleixner
2020-09-28 17:24   ` Shannon Nelson
2020-09-28 19:51     ` Shannon Nelson
2020-09-29 14:37       ` Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 12/35] net: ionic: Remove WARN_ON(in_interrupt()) Thomas Gleixner
2020-09-28 17:26   ` Shannon Nelson
2020-09-27 19:48 ` [Intel-wired-lan] [patch 13/35] net: mdiobus: Remove WARN_ON_ONCE(in_interrupt()) Thomas Gleixner
2020-09-27 23:00   ` Andrew Lunn
2020-09-27 19:49 ` [Intel-wired-lan] [patch 14/35] net: natsemi: Replace in_interrupt() usage Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 15/35] net: sfc: " Thomas Gleixner
2020-09-28 19:03   ` Edward Cree
2020-09-27 19:49 ` [Intel-wired-lan] [patch 16/35] net: sunbmac: " Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 17/35] net: sun3lance: Remove redundant checks in interrupt handler Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 18/35] net: vxge: Remove in_interrupt() conditionals Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 19/35] net: zd1211rw: Remove ZD_ASSERT(in_interrupt()) Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 20/35] net: usb: kaweth: Replace kaweth_control() with usb_control_msg() Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 21/35] net: usb: kaweth: Remove last user of kaweth_control() Thomas Gleixner
2020-09-28  6:50   ` Greg Kroah-Hartman
2020-09-27 19:49 ` [Intel-wired-lan] [patch 22/35] net: usb: net1080: Remove in_interrupt() comment Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 23/35] net: wan/lmc: Remove lmc_trace() Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 24/35] net: brcmfmac: Replace in_interrupt() Thomas Gleixner
2020-09-28  7:35   ` Arend Van Spriel
2020-09-28  9:19     ` Ulf Hansson
2020-09-28  9:37       ` Arend Van Spriel
2020-09-28  9:40   ` Arend Van Spriel
2020-09-27 19:49 ` [Intel-wired-lan] [patch 25/35] net: brcmfmac: Use netif_rx_any_context() Thomas Gleixner
2020-09-28  8:03   ` Arend Van Spriel
2020-09-27 19:49 ` [Intel-wired-lan] [patch 26/35] net: brcmfmac: Convey allocation mode as argument Thomas Gleixner
2020-09-28  9:34   ` Arend Van Spriel
2020-09-27 19:49 ` [Intel-wired-lan] [patch 27/35] net: ipw2x00, iwlegacy, iwlwifi: Remove in_interrupt() from debug macros Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 28/35] net: iwlwifi: Remove in_interrupt() from tracing macro Thomas Gleixner
2020-09-28  6:13   ` Coelho, Luciano
2020-09-27 19:49 ` [Intel-wired-lan] [patch 29/35] net: hostap: Remove in_interrupt() usage Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 30/35] net: mwifiex: Use netif_rx_any_context() Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 31/35] net: libertas libertas_tf: Remove in_interrupt() from debug macro Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 32/35] net: libertas: Use netif_rx_any_context() Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 33/35] net: rtlwifi: Remove void* casts related to delayed work Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 34/35] net: rtlwifi: Remove in_interrupt() from debug macro Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 35/35] net: rtlwifi: Replace in_interrupt() for context detection Thomas Gleixner
2020-09-27 20:22 ` [Intel-wired-lan] [patch 00/35] net: in_interrupt() cleanup and fixes Joe Perches
2020-09-27 20:57 ` David Miller
2020-09-28 10:25   ` Thomas Gleixner
2020-09-29  8:01 ` Kalle Valo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87o8lpdnak.fsf@codeaurora.org \
    --to=kvalo@codeaurora.org \
    --cc=intel-wired-lan@osuosl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).