All of lore.kernel.org
 help / color / mirror / Atom feed
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.