Linux 3.2.57-rt84-rc1
Subsystems (2)
cover Linux 3.2.57-rt84-rc1
Dear RT Folks,
This is the RT stable review cycle of patch 3.2.57-rt84-rc1.
Please scream at me if I messed something up. Please test the patches too.
The -rc release will be uploaded to kernel.org and will be deleted when the final release is out. This is just a review release (or release candidate).
The pre-releases will not be pushed to the git repository, only the final release is.
If all goes well, this patch will be converted to the next main release on 4/30/2014.
Enjoy,
-- Steve
To build 3.2.57-rt84-rc1 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.tar.xz
http://www.kernel.org/pub/linux/kernel/v3.x/patch-3.2.57.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/patch-3.2.57-rt84-rc1.patch.xz
You can also build from 3.2.57-rt83 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/incr/patch-3.2.57-rt83-rt84-rc1.patch.xz
Changes from 3.2.57-rt83:
---
Sebastian Andrzej Siewior (2):
net: gianfar: do not disable interrupts
rcu: make RCU_BOOST default on RT
Steven Rostedt (Red Hat) (1):
Linux 3.2.57-rt84-rc1
----
drivers/net/ethernet/freescale/gianfar.c | 16 ++++++++-------- drivers/net/ethernet/freescale/gianfar_ethtool.c | 8 ++++---- drivers/net/ethernet/freescale/gianfar_sysfs.c | 24 ++++++++++++------------ init/Kconfig | 2 +- localversion-rt | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-)
PATCH 1/3 net: gianfar: do not disable interrupts
3.2.57-rt84-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <[email protected]>
each per-queue lock is taken with spin_lock_irqsave() except in the case where all of them are taken for some kind of serialisation. As an optimisation local_irq_save() is used so that lock_tx_qs() and lock_rx_qs() can use just the spin_lock() variant instead. On RT local_irq_save() behaves differently so we use the nort() variant.
Lockdep screems easily by "ethtool -K eth0 rx off tx off"
What remains is missing lockdep annotation that makes lockdep think lock_tx_qs() may cause a dead lock.
--- drivers/net/ethernet/freescale/gianfar.c | 16 ++++++++-------- drivers/net/ethernet/freescale/gianfar_ethtool.c | 8 ++++---- drivers/net/ethernet/freescale/gianfar_sysfs.c | 24 ++++++++++++------------ 3 files changed, 24 insertions(+), 24 deletions(-)
drivers/net/ethernet/freescale/gianfar.c +8 -8
@@ -1285,7 +1285,7 @@ static int gfar_suspend(struct device *dev)if (netif_running (ndev)) { -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv);lock_rx_qs (priv);
@@ -1303,7 +1303,7 @@ static int gfar_suspend(struct device *dev)unlock_rx_qs (priv);unlock_tx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);disable_napi (priv);
@@ -1344,7 +1344,7 @@ static int gfar_resume(struct device *dev)/* Disable Magic Packet mode, in case something * else woke us up. */ -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv);lock_rx_qs (priv);
@@ -1356,7 +1356,7 @@ static int gfar_resume(struct device *dev)unlock_rx_qs (priv);unlock_tx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);netif_device_attach (ndev);
@@ -2323,7 +2323,7 @@ void gfar_vlan_mode(struct net_device *dev, u32 features)u32 tempval; regs = priv->gfargrp[0 ].regs; -local_irq_save (flags); +local_irq_save_nort (flags);lock_rx_qs (priv);if (features &NETIF_F_HW_VLAN_TX ) {
@@ -2355,7 +2355,7 @@ void gfar_vlan_mode(struct net_device *dev, u32 features)gfar_change_mtu (dev, dev->mtu);unlock_rx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags); }static int gfar_change_mtu (struct net_device *dev,int new_mtu)
@@ -3225,14 +3225,14 @@ static irqreturn_t gfar_error(int irq, void *grp_id) dev->stats.tx_dropped++; priv->extra_stats.tx_underrun++; -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv);/* Reactivate the Tx Queues */ gfar_write (®s->tstat, gfargrp->tstat);unlock_tx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags); }netif_dbg (priv, tx_err, dev,"Transmit Error\n" ); }
drivers/net/ethernet/freescale/gianfar_ethtool.c +4 -4
@@ -486,7 +486,7 @@ static int gfar_sringparam(struct net_device *dev, struct ethtool_ringparam *rva/* Halt TX and RX, and process the frames which * have already been received */ -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv);lock_rx_qs (priv);
@@ -494,7 +494,7 @@ static int gfar_sringparam(struct net_device *dev, struct ethtool_ringparam *rvaunlock_rx_qs (priv);unlock_tx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);for (i =0 ; i < priv->num_rx_queues; i++) gfar_clean_rx_ring(priv->rx_queue[i],
@@ -535,7 +535,7 @@ int gfar_set_features(struct net_device *dev, u32 features)if (dev->flags &IFF_UP ) {/* Halt TX and RX, and process the frames which * have already been received */ -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv);lock_rx_qs (priv);
@@ -543,7 +543,7 @@ int gfar_set_features(struct net_device *dev, u32 features)unlock_tx_qs (priv);unlock_rx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);for (i =0 ; i < priv->num_rx_queues; i++) gfar_clean_rx_ring(priv->rx_queue[i],
drivers/net/ethernet/freescale/gianfar_sysfs.c +12 -12
@@ -68,7 +68,7 @@ static ssize_t gfar_set_bd_stash(struct device *dev,return count; -local_irq_save (flags); +local_irq_save_nort (flags);lock_rx_qs (priv);/* Set the new stashing value */
@@ -84,7 +84,7 @@ static ssize_t gfar_set_bd_stash(struct device *dev,gfar_write (®s->attr, temp);unlock_rx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);return count; }
@@ -112,7 +112,7 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev,if (!(priv->device_flags &FSL_GIANFAR_DEV_HAS_BUF_STASHING ))return count; -local_irq_save (flags); +local_irq_save_nort (flags);lock_rx_qs (priv);if (length > priv->rx_buffer_size)
@@ -140,7 +140,7 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev, out:unlock_rx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);return count; }
@@ -171,7 +171,7 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev,if (!(priv->device_flags &FSL_GIANFAR_DEV_HAS_BUF_STASHING ))return count; -local_irq_save (flags); +local_irq_save_nort (flags);lock_rx_qs (priv);if (index > priv->rx_stash_size)
@@ -189,7 +189,7 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev, out:unlock_rx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);return count; }
@@ -219,7 +219,7 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev,if (length >GFAR_MAX_FIFO_THRESHOLD )return count; -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv); priv->fifo_threshold = length;
@@ -230,7 +230,7 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev,gfar_write (®s->fifo_tx_thr, temp);unlock_tx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);return count; }
@@ -259,7 +259,7 @@ static ssize_t gfar_set_fifo_starve(struct device *dev,if (num >GFAR_MAX_FIFO_STARVE )return count; -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv); priv->fifo_starve = num;
@@ -270,7 +270,7 @@ static ssize_t gfar_set_fifo_starve(struct device *dev,gfar_write (®s->fifo_tx_starve, temp);unlock_tx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);return count; }
@@ -300,7 +300,7 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev,if (num >GFAR_MAX_FIFO_STARVE_OFF )return count; -local_irq_save (flags); +local_irq_save_nort (flags);lock_tx_qs (priv); priv->fifo_starve_off = num;
@@ -311,7 +311,7 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev,gfar_write (®s->fifo_tx_starve_shutoff, temp);unlock_tx_qs (priv); -local_irq_restore (flags); +local_irq_restore_nort (flags);return count; }
Signature · 1 line
1.8.5.3
PATCH 2/3 rcu: make RCU_BOOST default on RT
In reply to Steven Rostedt3.2.57-rt84-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <[email protected]>
Since it is no longer invoked from the softirq people run into OOM more often if the priority of the RCU thread is too low. Making boosting default on RT should help in those case and it can be switched off if someone knows better.
--- init/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
init/Kconfig +1 -1
@@ -494,7 +494,7 @@ config TREE_RCU_TRACE config RCU_BOOST bool "Enable RCU priority boosting" depends on RT_MUTEXES && PREEMPT_RCU - default n + default y if PREEMPT_RT_FULL help This option boosts the priority of preempted RCU readers that block the current preemptible RCU grace period for too long.
Signature · 1 line
1.8.5.3
PATCH 3/3 Linux 3.2.57-rt84-rc1
In reply to Steven Rostedt3.2.57-rt84-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: "Steven Rostedt (Red Hat)" <[email protected]>
--- localversion-rt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
localversion-rt +1 -1
@@ -1 +1 @@ --rt83 +-rt84-rc1
Signature · 1 line
1.8.5.3
27.04.2014 18:39, Steven Rostedt пишет:
Quoted 5 lines
Dear RT Folks,
This is the RT stable review cycle of patch 3.2.57-rt84-rc1.
Please scream at me if I messed something up. Please test the patches too.
More than two years our thin clients (about 5000 machines, Intel Atom, x86_32) work with RCU_BOOST.
CONFIG_RCU_BOOST=yCONFIG_RCU_BOOST_PRIO=80CONFIG_RCU_BOOST_DELAY=400
Signature · 1 line
Pavel.
Quoted 8 lines · On Mon, 28 Apr 2014 02:15:28 +0400 Pavel Vasilyev <[email protected]> wrote:
27.04.2014 18:39, Steven Rostedt пишет:
Quoted 5 lines
Dear RT Folks,
This is the RT stable review cycle of patch 3.2.57-rt84-rc1.
Please scream at me if I messed something up. Please test the patches too.
Quoted 7 lines
More than two years our thin clients (about 5000 machines, Intel Atom,
x86_32) work withRCU_BOOST.
CONFIG_RCU_BOOST=yCONFIG_RCU_BOOST_PRIO=80CONFIG_RCU_BOOST_DELAY=400
Is this just a confirmation of having RCU_BOOST default y for PREEMPT_RT is a good thing?
Thanks,
-- Steve
28.04.2014 17:39, Steven Rostedt пишет:
Quoted 14 lines
Quoted 11 lines · On Mon, 28 Apr 2014 02:15:28 +0400 Pavel Vasilyev <[email protected]> wrote:
27.04.2014 18:39, Steven Rostedt пишет:
Quoted 5 lines
Dear RT Folks,
This is the RT stable review cycle of patch 3.2.57-rt84-rc1.
Please scream at me if I messed something up. Please test the patches too.
More than two years our thin clients (about 5000 machines, Intel Atom,
x86_32) work withRCU_BOOST.
Quoted 7 lines
Quoted 4 lines
CONFIG_RCU_BOOST=yCONFIG_RCU_BOOST_PRIO=80CONFIG_RCU_BOOST_DELAY=400Is this just a confirmation of having
RCU_BOOSTdefault y forPREEMPT_RTis a good thing?
Only 3.2-rt
Signature · 1 line
Pavel.