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 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.