From: Clark Williams <williams@redhat.com>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Thomas Gleixner <tglx@linutronix.de>,
linux-rt-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [RFC PATCH PREEMPT_RT 4.19 STABLE] net: Fix compiler warnings on 4.19 PREEMPT_RT with xmit_lock_owner
Date: Thu, 13 Jan 2022 17:12:15 -0600 [thread overview]
Message-ID: <20220131162838.1C48CC340ED@smtp.kernel.org> (raw)
GCC 11 has started complaining about the PREEMPT_RT changes to 2fd949365fe6628fb2
which change the xmit_lock_owner from an integer to a pointer to struct
task_struct. These changes are from the patch:
net: move xmit_recursion to per-task variable on -RT
The below patch is ugly but fixes the compiler warnings.
I'd be happy to entertain a better/cleaner solution
Signed-off-by: Clark Williams <williams@redhat.com>
---
include/linux/netdevice.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 7b34ce34114a..fa2a52d24218 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3921,7 +3921,11 @@ static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
{
spin_lock(&txq->_xmit_lock);
/* Pairs with READ_ONCE() in __dev_queue_xmit() */
+#ifdef CONFIG_PREEMPT_RT_FULL
+ WRITE_ONCE(txq->xmit_lock_owner, current);
+#else
WRITE_ONCE(txq->xmit_lock_owner, cpu);
+#endif
}
static inline bool __netif_tx_acquire(struct netdev_queue *txq)
@@ -3939,7 +3943,11 @@ static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
{
spin_lock_bh(&txq->_xmit_lock);
/* Pairs with READ_ONCE() in __dev_queue_xmit() */
+#ifdef CONFIG_PREEMPT_RT_FULL
+ WRITE_ONCE(txq->xmit_lock_owner, current);
+#else
WRITE_ONCE(txq->xmit_lock_owner, smp_processor_id());
+#endif
}
static inline bool __netif_tx_trylock(struct netdev_queue *txq)
@@ -3948,7 +3956,11 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq)
if (likely(ok)) {
/* Pairs with READ_ONCE() in __dev_queue_xmit() */
+#ifdef CONFIG_PREEMPT_RT_FULL
+ WRITE_ONCE(txq->xmit_lock_owner, current);
+#else
WRITE_ONCE(txq->xmit_lock_owner, smp_processor_id());
+#endif
}
return ok;
}
@@ -3956,14 +3968,22 @@ static inline bool __netif_tx_trylock(struct netdev_queue *txq)
static inline void __netif_tx_unlock(struct netdev_queue *txq)
{
/* Pairs with READ_ONCE() in __dev_queue_xmit() */
+#ifdef CONFIG_PREEMPT_RT_FULL
+ WRITE_ONCE(txq->xmit_lock_owner, NULL);
+#else
WRITE_ONCE(txq->xmit_lock_owner, -1);
+#endif
spin_unlock(&txq->_xmit_lock);
}
static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
{
/* Pairs with READ_ONCE() in __dev_queue_xmit() */
+#ifdef CONFIG_PREEMPT_RT_FULL
+ WRITE_ONCE(txq->xmit_lock_owner, NULL);
+#else
WRITE_ONCE(txq->xmit_lock_owner, -1);
+#endif
spin_unlock_bh(&txq->_xmit_lock);
}
--
2.34.1
reply other threads:[~2022-01-31 16:28 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20220131162838.1C48CC340ED@smtp.kernel.org \
--to=williams@redhat.com \
--cc=bigeasy@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=tglx@linutronix.de \
/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