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
prev parent reply other threads:[~2020-09-29 8:01 UTC|newest]
Thread overview: 115+ 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 ` 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 ` Thomas Gleixner
2020-09-27 22:06 ` kernel test robot
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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` Thomas Gleixner
2020-09-27 19:48 ` [Intel-wired-lan] [patch 10/35] net: intel: Remove in_interrupt() warnings Thomas Gleixner
2020-09-27 19:48 ` Thomas Gleixner
2020-09-28 23:04 ` [Intel-wired-lan] " Alexander Duyck
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-27 19:48 ` Thomas Gleixner
2020-09-28 17:24 ` [Intel-wired-lan] " Shannon Nelson
2020-09-28 17:24 ` Shannon Nelson
2020-09-28 19:51 ` [Intel-wired-lan] " Shannon Nelson
2020-09-28 19:51 ` Shannon Nelson
2020-09-29 14:37 ` [Intel-wired-lan] " Thomas Gleixner
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-27 19:48 ` Thomas Gleixner
2020-09-28 17:26 ` [Intel-wired-lan] " Shannon Nelson
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 19:48 ` Thomas Gleixner
2020-09-27 23:00 ` [Intel-wired-lan] " Andrew Lunn
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 ` Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 15/35] net: sfc: " Thomas Gleixner
2020-09-27 19:49 ` Thomas Gleixner
2020-09-28 19:03 ` [Intel-wired-lan] " Edward Cree
2020-09-28 19:03 ` Edward Cree
2020-09-28 20:05 ` [RFC PATCH net-next] sfc: replace " Edward Cree
2020-09-28 20:24 ` Thomas Gleixner
2020-09-29 15:15 ` Edward Cree
2020-09-29 19:27 ` Thomas Gleixner
2020-09-29 9:39 ` Martin Habets
2020-09-27 19:49 ` [Intel-wired-lan] [patch 16/35] net: sunbmac: Replace " Thomas Gleixner
2020-09-27 19:49 ` 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 ` 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 ` 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 ` 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 ` 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-27 19:49 ` Thomas Gleixner
2020-09-28 6:50 ` [Intel-wired-lan] " Greg Kroah-Hartman
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 ` 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 ` Thomas Gleixner
2020-09-27 19:49 ` [Intel-wired-lan] [patch 24/35] net: brcmfmac: Replace in_interrupt() Thomas Gleixner
2020-09-27 19:49 ` Thomas Gleixner
2020-09-28 7:35 ` [Intel-wired-lan] " Arend Van Spriel
2020-09-28 7:35 ` Arend Van Spriel
2020-09-28 9:19 ` [Intel-wired-lan] " Ulf Hansson
2020-09-28 9:19 ` Ulf Hansson
2020-09-28 9:37 ` [Intel-wired-lan] " Arend Van Spriel
2020-09-28 9:37 ` Arend Van Spriel
2020-09-28 9:40 ` [Intel-wired-lan] " 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-27 19:49 ` Thomas Gleixner
2020-09-28 8:03 ` [Intel-wired-lan] " Arend Van Spriel
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-27 19:49 ` Thomas Gleixner
2020-09-28 9:34 ` [Intel-wired-lan] " Arend Van Spriel
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 ` [patch 27/35] net: ipw2x00,iwlegacy,iwlwifi: " 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-27 19:49 ` Thomas Gleixner
2020-09-28 6:13 ` [Intel-wired-lan] " Coelho, Luciano
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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 19:49 ` 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:22 ` Joe Perches
2020-09-27 20:57 ` [Intel-wired-lan] " David Miller
2020-09-27 20:57 ` David Miller
2020-09-28 10:25 ` [Intel-wired-lan] " Thomas Gleixner
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.