Skip to contentSkip to conversation

6.12.6-rc1 review

PATCH In review Greg Kroah-Hartman 18 participants 195 messages Dec 17, 2024 – Jan 13, 2025 Page 2 of 2

Subsystems (6)
lore
Share & tools
lore
author maintainer
#136 lore raw

PATCH 136/172 net: mana: Fix memory leak in mana_gd_setup_irqs

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Maxim Levitsky <[email protected]>

[ Upstream commit bb1e3eb57d2cc38951f9a9f1b8c298ced175798f ]

Commit 8afefc361209 ("net: mana: Assigning IRQ affinity on HT cores") added memory allocation in mana_gd_setup_irqs of 'irqs' but the code doesn't free this temporary array in the success path.

This was caught by kmemleak.

---
 drivers/net/ethernet/microsoft/mana/gdma_main.c | 1 +
 1 file changed, 1 insertion(+)
drivers/net/ethernet/microsoft/mana/gdma_main.c +1 -0
index ca4ed58f1206..42076c90ce87 100644
@@ -1372,6 +1372,7 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
 	gc->max_num_msix = nvec;
 	gc->num_msix_usable = nvec;
 	cpus_read_unlock();
+	kfree(irqs);
 	return 0;
 
 free_irq:
Signature · 1 line
2.39.5
author maintainer
#137 lore raw

PATCH 137/172 net: mana: Fix irq_contexts memory leak in mana_gd_setup_irqs

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Maxim Levitsky <[email protected]>

[ Upstream commit 9a5beb6ca6305de5c5210efab0702ea79b62eb39 ]

gc->irq_contexts is not freeded if one of the later operations fail.

---
 drivers/net/ethernet/microsoft/mana/gdma_main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/ethernet/microsoft/mana/gdma_main.c +3 -2
index 42076c90ce87..0c2ba2fa88c4 100644
@@ -1315,7 +1315,7 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
 				   GFP_KERNEL);
 	if (!gc->irq_contexts) {
 		err = -ENOMEM;
-		goto free_irq_vector;
+		goto free_irq_array;
 	}
 
 	for (i = 0; i < nvec; i++) {
@@ -1385,8 +1385,9 @@ static int mana_gd_setup_irqs(struct pci_dev *pdev)
 	}
 
 	kfree(gc->irq_contexts);
-	kfree(irqs);
 	gc->irq_contexts = NULL;
+free_irq_array:
+	kfree(irqs);
 free_irq_vector:
 	cpus_read_unlock();
 	pci_free_irq_vectors(pdev);
Signature · 1 line
2.39.5
author maintainer
#138 lore raw

PATCH 138/172 net: dsa: felix: fix stuck CPU-injected packets with short taprio windows

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Vladimir Oltean <[email protected]>

[ Upstream commit acfcdb78d5d4cdb78e975210c8825b9a112463f6 ]

With this port schedule:

tc qdisc replace dev $send_if parent root handle 100 taprio \

	num_tc 8 queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 \
	map 0 1 2 3 4 5 6 7 \
	base-time 0 cycle-time 10000 \
	sched-entry S 01 1250 \
	sched-entry S 02 1250 \
	sched-entry S 04 1250 \
	sched-entry S 08 1250 \
	sched-entry S 10 1250 \
	sched-entry S 20 1250 \
	sched-entry S 40 1250 \
	sched-entry S 80 1250 \
	flags 2

ptp4l would fail to take TX timestamps of Pdelay_Resp messages like this:

increasing tx_timestamp_timeout may correct this issue, but it is likely caused by a driver bug ptp4l[4134.168]: port 2: send peer delay response failed

It turns out that the driver can't take their TX timestamps because it can't transmit them in the first place. And there's nothing special about the Pdelay_Resp packets - they're just regular 68 byte packets. But with this taprio configuration, the switch would refuse to send even the ETH_ZLEN minimum packet size.

This should have definitely not been the case. When applying the taprio config, the driver prints:

mscc_felix 0000:00:00.5: port 0 tc 0 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 1 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 2 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 3 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 4 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 5 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 6 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 7 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 132 octets including FCS

and thus, everything under 132 bytes - ETH_FCS_LEN should have been sent without problems. Yet it's not.

For the forwarding path, the configuration is fine, yet packets injected from Linux get stuck with this schedule no matter what.

The first hint that the static guard bands are the cause of the problem is that reverting Michael Walle's commit 297c4de6f780 ("net: dsa: felix:
re-enable TAS guard band mode") made things work. It must be that the guard bands are calculated incorrectly.

I remembered that there is a magic constant in the driver, set to 33 ns for no logical reason other than experimentation, which says "never let the static guard bands get so large as to leave less than this amount of remaining space in the time slot, because the queue system will refuse to schedule packets otherwise, and they will get stuck". I had a hunch that my previous experimentally-determined value was only good for packets coming from the forwarding path, and that the CPU injection path needed more.

I came to the new value of 35 ns through binary search, after seeing that with 544 ns (the bit time required to send the Pdelay_Resp packet at gigabit) it works. Again, this is purely experimental, there's no logic and the manual doesn't say anything.

The new driver prints for this schedule look like this:

mscc_felix 0000:00:00.5: port 0 tc 0 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 1 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 2 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 3 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 4 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 5 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 6 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS mscc_felix 0000:00:00.5: port 0 tc 7 min gate length 1250 ns not enough for max frame size 1526 at 1000 Mbps, dropping frames over 131 octets including FCS

So yes, the maximum MTU is now even smaller by 1 byte than before. This is maybe counter-intuitive, but makes more sense with a diagram of one time slot.

Before:

Gate open Gate close

 |                                                    |
 v           1250 ns total time slot duration         v

<----------------------------------------------------> <----><---------------------------------------------->
33 ns 1217 ns static guard band
useful

Gate open Gate close

 |                                                    |
 v           1250 ns total time slot duration         v

<----------------------------------------------------> <-----><--------------------------------------------->
35 ns 1215 ns static guard band
useful

The static guard band implemented by this switch hardware directly determines the maximum allowable MTU for that traffic class. The larger it is, the earlier the switch will stop scheduling frames for transmission, because otherwise they might overrun the gate close time (and avoiding that is the entire purpose of Michael's patch). So, we now have guard bands smaller by 2 ns, thus, in this particular case, we lose a byte of the maximum MTU.

Fixes 11afdc6526de ("net: dsa: felix: tc-taprio intervals smaller than MTU should send at least one packet")
---
 drivers/net/dsa/ocelot/felix_vsc9959.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)
drivers/net/dsa/ocelot/felix_vsc9959.c +11 -6
index 0102a82e88cc..940f1b71226d 100644
@@ -24,7 +24,7 @@
 #define VSC9959_NUM_PORTS		6
 
 #define VSC9959_TAS_GCL_ENTRY_MAX	63
-#define VSC9959_TAS_MIN_GATE_LEN_NS	33
+#define VSC9959_TAS_MIN_GATE_LEN_NS	35
 #define VSC9959_VCAP_POLICER_BASE	63
 #define VSC9959_VCAP_POLICER_MAX	383
 #define VSC9959_SWITCH_PCI_BAR		4
@@ -1056,11 +1056,15 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot)
 	mdiobus_free(felix->imdio);
 }
 
-/* The switch considers any frame (regardless of size) as eligible for
- * transmission if the traffic class gate is open for at least 33 ns.
+/* The switch considers any frame (regardless of size) as eligible
+ * for transmission if the traffic class gate is open for at least
+ * VSC9959_TAS_MIN_GATE_LEN_NS.
+ *
  * Overruns are prevented by cropping an interval at the end of the gate time
- * slot for which egress scheduling is blocked, but we need to still keep 33 ns
- * available for one packet to be transmitted, otherwise the port tc will hang.
+ * slot for which egress scheduling is blocked, but we need to still keep
+ * VSC9959_TAS_MIN_GATE_LEN_NS available for one packet to be transmitted,
+ * otherwise the port tc will hang.
+ *
  * This function returns the size of a gate interval that remains available for
  * setting the guard band, after reserving the space for one egress frame.
  */
@@ -1303,7 +1307,8 @@ static void vsc9959_tas_guard_bands_update(struct ocelot *ocelot, int port)
 			 * per-tc static guard band lengths, so it reduces the
 			 * useful gate interval length. Therefore, be careful
 			 * to calculate a guard band (and therefore max_sdu)
-			 * that still leaves 33 ns available in the time slot.
+			 * that still leaves VSC9959_TAS_MIN_GATE_LEN_NS
+			 * available in the time slot.
 			 */
 			max_sdu = div_u64(remaining_gate_len_ps, picos_per_byte);
 			/* A TC gate may be completely closed, which is a
Signature · 1 line
2.39.5
author maintainer
#139 lore raw

PATCH 139/172 net/sched: netem: account for backlog updates from child qdisc

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Martin Ottens <[email protected]>

[ Upstream commit f8d4bc455047cf3903cd6f85f49978987dbb3027 ]

In general, 'qlen' of any classful qdisc should keep track of the number of packets that the qdisc itself and all of its children holds. In case of netem, 'qlen' only accounts for the packets in its internal tfifo. When netem is used with a child qdisc, the child qdisc can use 'qdisc_tree_reduce_backlog' to inform its parent, netem, about created or dropped SKBs. This function updates 'qlen' and the backlog statistics of netem, but netem does not account for changes made by a child qdisc. 'qlen' then indicates the wrong number of packets in the tfifo. If a child qdisc creates new SKBs during enqueue and informs its parent about this, netem's 'qlen' value is increased. When netem dequeues the newly created SKBs from the child, the 'qlen' in netem is not updated. If 'qlen' reaches the configured sch->limit, the enqueue function stops working, even though the tfifo is not full.

Reproduce the bug:
Ensure that the sender machine has GSO enabled. Configure netem as root qdisc and tbf as its child on the outgoing interface of the machine as follows:

$ tc qdisc add dev <oif> root handle 1: netem delay 100ms limit 100
$ tc qdisc add dev <oif> parent 1:0 tbf rate 50Mbit burst 1542 latency 50ms

Send bulk TCP traffic out via this interface, e.g., by running an iPerf3 client on the machine. Check the qdisc statistics:

$ tc -s qdisc show dev <oif>

Statistics after 10s of iPerf3 TCP test before the fix (note that netem's backlog > limit, netem stopped accepting packets):
qdisc netem 1: root refcnt 2 limit 1000 delay 100ms
Sent 2767766 bytes 1848 pkt (dropped 652, overlimits 0 requeues 0) backlog 4294528236b 1155p requeues 0
qdisc tbf 10: parent 1:1 rate 50Mbit burst 1537b lat 50ms
Sent 2767766 bytes 1848 pkt (dropped 327, overlimits 7601 requeues 0) backlog 0b 0p requeues 0

Statistics after the fix:
qdisc netem 1: root refcnt 2 limit 1000 delay 100ms
Sent 37766372 bytes 24974 pkt (dropped 9, overlimits 0 requeues 0) backlog 0b 0p requeues 0
qdisc tbf 10: parent 1:1 rate 50Mbit burst 1537b lat 50ms
Sent 37766372 bytes 24974 pkt (dropped 327, overlimits 96017 requeues 0) backlog 0b 0p requeues 0

tbf segments the GSO SKBs (tbf_segment) and updates the netem's 'qlen'. The interface fully stops transferring packets and "locks". In this case, the child qdisc and tfifo are empty, but 'qlen' indicates the tfifo is at its limit and no more packets are accepted.

This patch adds a counter for the entries in the tfifo. Netem's 'qlen' is only decreased when a packet is returned by its dequeue function, and not during enqueuing into the child qdisc. External updates to 'qlen' are thus accounted for and only the behavior of the backlog statistics changes. As in other qdiscs, 'qlen' then keeps track of how many packets are held in netem and all of its children. As before, sch->limit remains as the maximum number of packets in the tfifo. The same applies to netem's backlog statistics.

---
 net/sched/sch_netem.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)
net/sched/sch_netem.c +16 -6
index 39382ee1e331..3b519adc0125 100644
@@ -78,6 +78,8 @@ struct netem_sched_data {
 	struct sk_buff	*t_head;
 	struct sk_buff	*t_tail;
 
+	u32 t_len;
+
 	/* optional qdisc for classful handling (NULL at netem init) */
 	struct Qdisc	*qdisc;
 
@@ -382,6 +384,7 @@ static void tfifo_reset(struct Qdisc *sch)
 	rtnl_kfree_skbs(q->t_head, q->t_tail);
 	q->t_head = NULL;
 	q->t_tail = NULL;
+	q->t_len = 0;
 }
 
 static void tfifo_enqueue(struct sk_buff *nskb, struct Qdisc *sch)
@@ -411,6 +414,7 @@ static void tfifo_enqueue(struct sk_buff *nskb, struct Qdisc *sch)
 		rb_link_node(&nskb->rbnode, parent, p);
 		rb_insert_color(&nskb->rbnode, &q->t_root);
 	}
+	q->t_len++;
 	sch->q.qlen++;
 }
 
@@ -517,7 +521,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch,
 			1<<get_random_u32_below(8);
 	}
 
-	if (unlikely(sch->q.qlen >= sch->limit)) {
+	if (unlikely(q->t_len >= sch->limit)) {
 		/* re-link segs, so that qdisc_drop_all() frees them all */
 		skb->next = segs;
 		qdisc_drop_all(skb, sch, to_free);
@@ -701,8 +705,8 @@ static struct sk_buff *netem_dequeue(struct Qdisc *sch)
 tfifo_dequeue:
 	skb = __qdisc_dequeue_head(&sch->q);
 	if (skb) {
-		qdisc_qstats_backlog_dec(sch, skb);
 deliver:
+		qdisc_qstats_backlog_dec(sch, skb);
 		qdisc_bstats_update(sch, skb);
 		return skb;
 	}
@@ -718,8 +722,7 @@ static struct sk_buff *netem_dequeue(struct Qdisc *sch)
 
 		if (time_to_send <= now && q->slot.slot_next <= now) {
 			netem_erase_head(q, skb);
-			sch->q.qlen--;
-			qdisc_qstats_backlog_dec(sch, skb);
+			q->t_len--;
 			skb->next = NULL;
 			skb->prev = NULL;
 			/* skb->dev shares skb->rbnode area,
@@ -746,16 +749,21 @@ static struct sk_buff *netem_dequeue(struct Qdisc *sch)
 					if (net_xmit_drop_count(err))
 						qdisc_qstats_drop(sch);
 					qdisc_tree_reduce_backlog(sch, 1, pkt_len);
+					sch->qstats.backlog -= pkt_len;
+					sch->q.qlen--;
 				}
 				goto tfifo_dequeue;
 			}
+			sch->q.qlen--;
 			goto deliver;
 		}
 
 		if (q->qdisc) {
 			skb = q->qdisc->ops->dequeue(q->qdisc);
-			if (skb)
+			if (skb) {
+				sch->q.qlen--;
 				goto deliver;
+			}
 		}
 
 		qdisc_watchdog_schedule_ns(&q->watchdog,
@@ -765,8 +773,10 @@ static struct sk_buff *netem_dequeue(struct Qdisc *sch)
 
 	if (q->qdisc) {
 		skb = q->qdisc->ops->dequeue(q->qdisc);
-		if (skb)
+		if (skb) {
+			sch->q.qlen--;
 			goto deliver;
+		}
 	}
 	return NULL;
 }
Signature · 1 line
2.39.5
author maintainer
#140 lore raw

PATCH 140/172 net, team, bonding: Add netdev_base_features helper

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Daniel Borkmann <[email protected]>

[ Upstream commit d2516c3a53705f783bb6868df0f4a2b977898a71 ]

Both bonding and team driver have logic to derive the base feature flags before iterating over their slave devices to refine the set via netdev_increment_features().

Add a small helper netdev_base_features() so this can be reused instead of having it open-coded multiple times.

Stable-dep-of: d064ea7fe2a2 ("bonding: Fix initial {vlan,mpls}_feature set in bond_compute_features")

---
 drivers/net/bonding/bond_main.c | 4 +---
 drivers/net/team/team_core.c    | 3 +--
 include/linux/netdev_features.h | 7 +++++++
 3 files changed, 9 insertions(+), 5 deletions(-)
drivers/net/bonding/bond_main.c +1 -3
index 15e0f14d0d49..166910693fd7 100644
@@ -1520,9 +1520,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
 	struct slave *slave;
 
 	mask = features;
-
-	features &= ~NETIF_F_ONE_FOR_ALL;
-	features |= NETIF_F_ALL_FOR_ALL;
+	features = netdev_base_features(features);
 
 	bond_for_each_slave(bond, slave, iter) {
 		features = netdev_increment_features(features,
drivers/net/team/team_core.c +1 -2
index 18191d5a8bd4..481c8df8842f 100644
@@ -2012,8 +2012,7 @@ static netdev_features_t team_fix_features(struct net_device *dev,
 	netdev_features_t mask;
 
 	mask = features;
-	features &= ~NETIF_F_ONE_FOR_ALL;
-	features |= NETIF_F_ALL_FOR_ALL;
+	features = netdev_base_features(features);
 
 	rcu_read_lock();
 	list_for_each_entry_rcu(port, &team->port_list, list) {
include/linux/netdev_features.h +7 -0
index 66e7d26b70a4..11be70a7929f 100644
@@ -253,4 +253,11 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start)
 				 NETIF_F_GSO_UDP_TUNNEL |		\
 				 NETIF_F_GSO_UDP_TUNNEL_CSUM)
 
+static inline netdev_features_t netdev_base_features(netdev_features_t features)
+{
+	features &= ~NETIF_F_ONE_FOR_ALL;
+	features |= NETIF_F_ALL_FOR_ALL;
+	return features;
+}
+
 #endif	/* _LINUX_NETDEV_FEATURES_H */
Signature · 1 line
2.39.5
author maintainer
#141 lore raw

PATCH 141/172 bonding: Fix initial {vlan,mpls}_feature set in bond_compute_features

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Daniel Borkmann <[email protected]>

[ Upstream commit d064ea7fe2a24938997b5e88e6b61cbb0a4bb906 ]

If a bonding device has slave devices, then the current logic to derive the feature set for the master bond device is limited in that flags which are fully supported by the underlying slave devices cannot be propagated up to vlan devices which sit on top of bond devices. Instead, these get blindly masked out via current NETIF_F_ALL_FOR_ALL logic.

vlan_features and mpls_features should reuse netdev_base_features() in order derive the set in the same way as ndo_fix_features before iterating through the slave devices to refine the feature set.

Fixes a9b3ace44c7d ("bonding: fix vlan_features computing")
Fixes 2e770b507ccd ("net: bonding: Inherit MPLS features from slave devices")
Cc Nikolay Aleksandrov <[email protected]>
Cc Ido Schimmel <[email protected]>
Cc Jiri Pirko <[email protected]>
---
 drivers/net/bonding/bond_main.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/bonding/bond_main.c +3 -2
index 166910693fd7..dfad7b6f9f35 100644
@@ -1562,8 +1562,9 @@ static void bond_compute_features(struct bonding *bond)
 
 	if (!bond_has_slaves(bond))
 		goto done;
-	vlan_features &= NETIF_F_ALL_FOR_ALL;
-	mpls_features &= NETIF_F_ALL_FOR_ALL;
+
+	vlan_features = netdev_base_features(vlan_features);
+	mpls_features = netdev_base_features(mpls_features);
 
 	bond_for_each_slave(bond, slave, iter) {
 		vlan_features = netdev_increment_features(vlan_features,
Signature · 1 line
2.39.5
author maintainer
#142 lore raw

PATCH 142/172 bonding: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Daniel Borkmann <[email protected]>

[ Upstream commit 77b11c8bf3a228d1c63464534c2dcc8d9c8bf7ff ]

Drivers like mlx5 expose NIC's vlan_features such as NETIF_F_GSO_UDP_TUNNEL & NETIF_F_GSO_UDP_TUNNEL_CSUM which are later not propagated when the underlying devices are bonded and a vlan device created on top of the bond.

Right now, the more cumbersome workaround for this is to create the vlan on top of the mlx5 and then enslave the vlan devices to a bond.

To fix this, add NETIF_F_GSO_ENCAP_ALL to BOND_VLAN_FEATURES such that bond_compute_features() can probe and propagate the vlan_features from the slave devices up to the vlan device.

Given the following bond:

  # ethtool -i enp2s0f{0,1}np{0,1}
  driver: mlx5_core
  [...]
  # ethtool -k enp2s0f0np0 | grep udp
  tx-udp_tnl-segmentation: on
  tx-udp_tnl-csum-segmentation: on
  tx-udp-segmentation: on
  rx-udp_tunnel-port-offload: on
  rx-udp-gro-forwarding: off
  # ethtool -k enp2s0f1np1 | grep udp
  tx-udp_tnl-segmentation: on
  tx-udp_tnl-csum-segmentation: on
  tx-udp-segmentation: on
  rx-udp_tunnel-port-offload: on
  rx-udp-gro-forwarding: off
  # ethtool -k bond0 | grep udp
  tx-udp_tnl-segmentation: on
  tx-udp_tnl-csum-segmentation: on
  tx-udp-segmentation: on
  rx-udp_tunnel-port-offload: off [fixed]
  rx-udp-gro-forwarding: off

Before:

  # ethtool -k bond0.100 | grep udp
  tx-udp_tnl-segmentation: off [requested on]
  tx-udp_tnl-csum-segmentation: off [requested on]
  tx-udp-segmentation: on
  rx-udp_tunnel-port-offload: off [fixed]
  rx-udp-gro-forwarding: off

After:

  # ethtool -k bond0.100 | grep udp
  tx-udp_tnl-segmentation: on
  tx-udp_tnl-csum-segmentation: on
  tx-udp-segmentation: on
  rx-udp_tunnel-port-offload: off [fixed]
  rx-udp-gro-forwarding: off

Various users have run into this reporting performance issues when configuring Cilium in vxlan tunneling mode and having the combination of bond & vlan for the core devices connecting the Kubernetes cluster to the outside world.

Fixes a9b3ace44c7d ("bonding: fix vlan_features computing")
Cc Nikolay Aleksandrov <[email protected]>
Cc Ido Schimmel <[email protected]>
Cc Jiri Pirko <[email protected]>
---
 drivers/net/bonding/bond_main.c | 1 +
 1 file changed, 1 insertion(+)
drivers/net/bonding/bond_main.c +1 -0
index dfad7b6f9f35..4d73abae503d 100644
@@ -1534,6 +1534,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev,
 
 #define BOND_VLAN_FEATURES	(NETIF_F_HW_CSUM | NETIF_F_SG | \
 				 NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE | \
+				 NETIF_F_GSO_ENCAP_ALL | \
 				 NETIF_F_HIGHDMA | NETIF_F_LRO)
 
 #define BOND_ENC_FEATURES	(NETIF_F_HW_CSUM | NETIF_F_SG | \
Signature · 1 line
2.39.5
author maintainer
#143 lore raw

PATCH 143/172 team: Fix initial vlan_feature set in __team_compute_features

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Daniel Borkmann <[email protected]>

[ Upstream commit 396699ac2cb1bc4e3485abb48a1e3e41956de0cd ]

Similarly as with bonding, fix the calculation of vlan_features to reuse netdev_base_features() in order derive the set in the same way as ndo_fix_features before iterating through the slave devices to refine the feature set.

Fixes 3625920b62c3 ("teaming: fix vlan_features computing")
Cc Nikolay Aleksandrov <[email protected]>
Cc Ido Schimmel <[email protected]>
Cc Jiri Pirko <[email protected]>
---
 drivers/net/team/team_core.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/team/team_core.c +3 -2
index 481c8df8842f..ddd9ae7085c7 100644
@@ -991,13 +991,14 @@ static void team_port_disable(struct team *team,
 static void __team_compute_features(struct team *team)
 {
 	struct team_port *port;
-	netdev_features_t vlan_features = TEAM_VLAN_FEATURES &
-					  NETIF_F_ALL_FOR_ALL;
+	netdev_features_t vlan_features = TEAM_VLAN_FEATURES;
 	netdev_features_t enc_features  = TEAM_ENC_FEATURES;
 	unsigned short max_hard_header_len = ETH_HLEN;
 	unsigned int dst_release_flag = IFF_XMIT_DST_RELEASE |
 					IFF_XMIT_DST_RELEASE_PERM;
 
+	vlan_features = netdev_base_features(vlan_features);
+
 	rcu_read_lock();
 	list_for_each_entry_rcu(port, &team->port_list, list) {
 		vlan_features = netdev_increment_features(vlan_features,
Signature · 1 line
2.39.5
author maintainer
#144 lore raw

PATCH 144/172 team: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Daniel Borkmann <[email protected]>

[ Upstream commit 98712844589e06d9aa305b5077169942139fd75c ]

Similar to bonding driver, add NETIF_F_GSO_ENCAP_ALL to TEAM_VLAN_FEATURES in order to support slave devices which propagate NETIF_F_GSO_UDP_TUNNEL & NETIF_F_GSO_UDP_TUNNEL_CSUM as vlan_features.

Fixes 3625920b62c3 ("teaming: fix vlan_features computing")
Cc Nikolay Aleksandrov <[email protected]>
Cc Ido Schimmel <[email protected]>
Cc Jiri Pirko <[email protected]>
---
 drivers/net/team/team_core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/net/team/team_core.c +2 -1
index ddd9ae7085c7..6ace5a74cddb 100644
@@ -983,7 +983,8 @@ static void team_port_disable(struct team *team,
 
 #define TEAM_VLAN_FEATURES (NETIF_F_HW_CSUM | NETIF_F_SG | \
 			    NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE | \
-			    NETIF_F_HIGHDMA | NETIF_F_LRO)
+			    NETIF_F_HIGHDMA | NETIF_F_LRO | \
+			    NETIF_F_GSO_ENCAP_ALL)
 
 #define TEAM_ENC_FEATURES	(NETIF_F_HW_CSUM | NETIF_F_SG | \
 				 NETIF_F_RXCSUM | NETIF_F_GSO_SOFTWARE)
Signature · 1 line
2.39.5
author maintainer
#145 lore raw

PATCH 145/172 ASoC: Intel: sof_sdw: Add space for a terminator into DAIs array

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Charles Keepax <[email protected]>

[ Upstream commit 255cc582e6e16191a20d54bcdbca6c91d3e90c5e ]

The code uses the initialised member of the asoc_sdw_dailink struct to determine if a member of the array is in use. However in the case the array is completely full this will lead to an access 1 past the end of the array, expand the array by one entry to include a space for a terminator.

Fixes 27fd36aefa00 ("ASoC: Intel: sof-sdw: Add new code for parsing the snd_soc_acpi structs")
---
 sound/soc/intel/boards/sof_sdw.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
sound/soc/intel/boards/sof_sdw.c +6 -2
index a58842a8c8a6..db57292c00ca 100644
@@ -1003,8 +1003,12 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
 		return ret;
 	}
 
-	/* One per DAI link, worst case is a DAI link for every endpoint */
-	sof_dais = kcalloc(num_ends, sizeof(*sof_dais), GFP_KERNEL);
+	/*
+	 * One per DAI link, worst case is a DAI link for every endpoint, also
+	 * add one additional to act as a terminator such that code can iterate
+	 * until it hits an uninitialised DAI.
+	 */
+	sof_dais = kcalloc(num_ends + 1, sizeof(*sof_dais), GFP_KERNEL);
 	if (!sof_dais)
 		return -ENOMEM;
 
Signature · 1 line
2.39.5
author maintainer
#146 lore raw

PATCH 146/172 ACPICA: events/evxfregn: dont release the ContextMutex that was never acquired

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Daniil Tatianin <[email protected]>

[ Upstream commit c53d96a4481f42a1635b96d2c1acbb0a126bfd54 ]

This bug was first introduced in c27f3d011b08, where the author of the patch probably meant to do DeleteMutex instead of ReleaseMutex. The mutex leak was noticed later on and fixed in e4dfe108371, but the bogus MutexRelease line was never removed, so do it now.

Fixes c27f3d011b08 ("ACPICA: Fix race in generic_serial_bus (I2C) and GPIO op_region parameter handling")
---
 drivers/acpi/acpica/evxfregn.c | 2 --
 1 file changed, 2 deletions(-)
drivers/acpi/acpica/evxfregn.c +0 -2
index 95f78383bbdb..bff2d099f469 100644
@@ -232,8 +232,6 @@ acpi_remove_address_space_handler(acpi_handle device,
 
 			/* Now we can delete the handler object */
 
-			acpi_os_release_mutex(handler_obj->address_space.
-					      context_mutex);
 			acpi_ut_remove_reference(handler_obj);
 			goto unlock_and_exit;
 		}
Signature · 1 line
2.39.5
author maintainer
#147 lore raw

PATCH 147/172 Bluetooth: hci_event: Fix using rcu_read_(un)lock while iterating

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Luiz Augusto von Dentz <[email protected]>

[ Upstream commit 581dd2dc168fe0ed2a7a5534a724f0d3751c93ae ]

The usage of rcu_read_(un)lock while inside list_for_each_entry_rcu is not safe since for the most part entries fetched this way shall be treated as rcu_dereference:

	Note that the value returned by rcu_dereference() is valid
	only within the enclosing RCU read-side critical section [1]_.
	For example, the following is **not** legal::

		rcu_read_lock();
		p = rcu_dereference(head.next);
		rcu_read_unlock();
		x = p->address;	/* BUG!!! */
		rcu_read_lock();
		y = p->data;	/* BUG!!! */
		rcu_read_unlock();
Fixes a0bfde167b50 ("Bluetooth: ISO: Add support for connecting multiple BISes")
---
 net/bluetooth/hci_event.c | 33 +++++++++++----------------------
 1 file changed, 11 insertions(+), 22 deletions(-)
net/bluetooth/hci_event.c +11 -22
index 2b5ba8acd1d8..388d46c6a043 100644
@@ -6872,38 +6872,27 @@ static void hci_le_create_big_complete_evt(struct hci_dev *hdev, void *data,
 		return;
 
 	hci_dev_lock(hdev);
-	rcu_read_lock();
 
 	/* Connect all BISes that are bound to the BIG */
-	list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) {
-		if (bacmp(&conn->dst, BDADDR_ANY) ||
-		    conn->type != ISO_LINK ||
-		    conn->iso_qos.bcast.big != ev->handle)
+	while ((conn = hci_conn_hash_lookup_big_state(hdev, ev->handle,
+						      BT_BOUND))) {
+		if (ev->status) {
+			hci_connect_cfm(conn, ev->status);
+			hci_conn_del(conn);
 			continue;
+		}
 
 		if (hci_conn_set_handle(conn,
 					__le16_to_cpu(ev->bis_handle[i++])))
 			continue;
 
-		if (!ev->status) {
-			conn->state = BT_CONNECTED;
-			set_bit(HCI_CONN_BIG_CREATED, &conn->flags);
-			rcu_read_unlock();
-			hci_debugfs_create_conn(conn);
-			hci_conn_add_sysfs(conn);
-			hci_iso_setup_path(conn);
-			rcu_read_lock();
-			continue;
-		}
-
-		hci_connect_cfm(conn, ev->status);
-		rcu_read_unlock();
-		hci_conn_del(conn);
-		rcu_read_lock();
+		conn->state = BT_CONNECTED;
+		set_bit(HCI_CONN_BIG_CREATED, &conn->flags);
+		hci_debugfs_create_conn(conn);
+		hci_conn_add_sysfs(conn);
+		hci_iso_setup_path(conn);
 	}
 
-	rcu_read_unlock();
-
 	if (!ev->status && !i)
 		/* If no BISes have been connected for the BIG,
 		 * terminate. This is in case all bound connections
Signature · 1 line
2.39.5
author maintainer
#148 lore raw

PATCH 148/172 Bluetooth: iso: Always release hdev at the end of iso_listen_bis

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Iulia Tanasescu <[email protected]>

[ Upstream commit 9c76fff747a73ba01d1d87ed53dd9c00cb40ba05 ]

Since hci_get_route holds the device before returning, the hdev should be released with hci_dev_put at the end of iso_listen_bis even if the function returns with an error.

Fixes 02171da6e86a ("Bluetooth: ISO: Add hcon for listening bis sk")
---
 net/bluetooth/iso.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
net/bluetooth/iso.c +1 -2
index 7212fd6047b9..34eade4b0587 100644
@@ -1158,10 +1158,9 @@ static int iso_listen_bis(struct sock *sk)
 		goto unlock;
 	}
 
-	hci_dev_put(hdev);
-
 unlock:
 	hci_dev_unlock(hdev);
+	hci_dev_put(hdev);
 	return err;
 }
 
Signature · 1 line
2.39.5
author maintainer
#149 lore raw

PATCH 149/172 Bluetooth: iso: Fix recursive locking warning

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Iulia Tanasescu <[email protected]>

[ Upstream commit 9bde7c3b3ad0e1f39d6df93dd1c9caf63e19e50f ]

This updates iso_sock_accept to use nested locking for the parent socket, to avoid lockdep warnings caused because the parent and child sockets are locked by the same thread:

[   41.585683] ============================================
[   41.585688] WARNING: possible recursive locking detected
[   41.585694] 6.12.0-rc6+ #22 Not tainted
[   41.585701] --------------------------------------------
[   41.585705] iso-tester/3139 is trying to acquire lock:
[   41.585711] ffff988b29530a58 (sk_lock-AF_BLUETOOTH)
               at: bt_accept_dequeue+0xe3/0x280 [bluetooth]
[   41.585905]
               but task is already holding lock:
[   41.585909] ffff988b29533a58 (sk_lock-AF_BLUETOOTH)
               at: iso_sock_accept+0x61/0x2d0 [bluetooth]
[   41.586064]
               other info that might help us debug this:
[   41.586069]  Possible unsafe locking scenario:
[   41.586072]        CPU0
[   41.586076]        ----
[   41.586079]   lock(sk_lock-AF_BLUETOOTH);
[   41.586086]   lock(sk_lock-AF_BLUETOOTH);
[   41.586093]
                *** DEADLOCK ***
[   41.586097]  May be due to missing lock nesting notation
[   41.586101] 1 lock held by iso-tester/3139:
[   41.586107]  #0: ffff988b29533a58 (sk_lock-AF_BLUETOOTH)
                at: iso_sock_accept+0x61/0x2d0 [bluetooth]
Fixes ccf74f2390d6 ("Bluetooth: Add BTPROTO_ISO socket type")
---
 net/bluetooth/iso.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
net/bluetooth/iso.c +6 -2
index 34eade4b0587..269ce0bb73a1 100644
@@ -1225,7 +1225,11 @@ static int iso_sock_accept(struct socket *sock, struct socket *newsock,
 	long timeo;
 	int err = 0;
 
-	lock_sock(sk);
+	/* Use explicit nested locking to avoid lockdep warnings generated
+	 * because the parent socket and the child socket are locked on the
+	 * same thread.
+	 */
+	lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
 
 	timeo = sock_rcvtimeo(sk, arg->flags & O_NONBLOCK);
 
@@ -1256,7 +1260,7 @@ static int iso_sock_accept(struct socket *sock, struct socket *newsock,
 		release_sock(sk);
 
 		timeo = wait_woken(&wait, TASK_INTERRUPTIBLE, timeo);
-		lock_sock(sk);
+		lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
 	}
 	remove_wait_queue(sk_sleep(sk), &wait);
 
Signature · 1 line
2.39.5
author maintainer
#150 lore raw

PATCH 150/172 Bluetooth: SCO: Add support for 16 bits transparent voice setting

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Frédéric Danis <[email protected]>

[ Upstream commit 29a651451e6c264f58cd9d9a26088e579d17b242 ]

The voice setting is used by sco_connect() or sco_conn_defer_accept() after being set by sco_sock_setsockopt().

The PCM part of the voice setting is used for offload mode through PCM chipset port.
This commits add support for mSBC 16 bits offloading, i.e. audio data not transported over HCI.

The BCM4349B1 supports 16 bits transparent data on its I2S port. If BT_VOICE_TRANSPARENT is used when accepting a SCO connection, this gives only garbage audio while using BT_VOICE_TRANSPARENT_16BIT gives correct audio.
This has been tested with connection to iPhone 14 and Samsung S24.

Fixes ad10b1a48754 ("Bluetooth: Add Bluetooth socket voice option")
---
 include/net/bluetooth/bluetooth.h |  1 +
 net/bluetooth/sco.c               | 29 +++++++++++++++--------------
 2 files changed, 16 insertions(+), 14 deletions(-)
include/net/bluetooth/bluetooth.h +1 -0
index e6760c11f007..435250c72d56 100644
@@ -123,6 +123,7 @@ struct bt_voice {
 
 #define BT_VOICE_TRANSPARENT			0x0003
 #define BT_VOICE_CVSD_16BIT			0x0060
+#define BT_VOICE_TRANSPARENT_16BIT		0x0063
 
 #define BT_SNDMTU		12
 #define BT_RCVMTU		13
net/bluetooth/sco.c +15 -14
index 700abb639a55..b872a2ca3ff3 100644
@@ -267,10 +267,13 @@ static int sco_connect(struct sock *sk)
 	else
 		type = SCO_LINK;
 
-	if (sco_pi(sk)->setting == BT_VOICE_TRANSPARENT &&
-	    (!lmp_transp_capable(hdev) || !lmp_esco_capable(hdev))) {
-		err = -EOPNOTSUPP;
-		goto unlock;
+	switch (sco_pi(sk)->setting & SCO_AIRMODE_MASK) {
+	case SCO_AIRMODE_TRANSP:
+		if (!lmp_transp_capable(hdev) || !lmp_esco_capable(hdev)) {
+			err = -EOPNOTSUPP;
+			goto unlock;
+		}
+		break;
 	}
 
 	hcon = hci_connect_sco(hdev, type, &sco_pi(sk)->dst,
@@ -877,13 +880,6 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
 		if (err)
 			break;
 
-		/* Explicitly check for these values */
-		if (voice.setting != BT_VOICE_TRANSPARENT &&
-		    voice.setting != BT_VOICE_CVSD_16BIT) {
-			err = -EINVAL;
-			break;
-		}
-
 		sco_pi(sk)->setting = voice.setting;
 		hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
 				     BDADDR_BREDR);
@@ -891,9 +887,14 @@ static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
 			err = -EBADFD;
 			break;
 		}
-		if (enhanced_sync_conn_capable(hdev) &&
-		    voice.setting == BT_VOICE_TRANSPARENT)
-			sco_pi(sk)->codec.id = BT_CODEC_TRANSPARENT;
+
+		switch (sco_pi(sk)->setting & SCO_AIRMODE_MASK) {
+		case SCO_AIRMODE_TRANSP:
+			if (enhanced_sync_conn_capable(hdev))
+				sco_pi(sk)->codec.id = BT_CODEC_TRANSPARENT;
+			break;
+		}
+
 		hci_dev_put(hdev);
 		break;
 
Signature · 1 line
2.39.5
author maintainer
#151 lore raw

PATCH 151/172 Bluetooth: iso: Fix circular lock in iso_listen_bis

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Iulia Tanasescu <[email protected]>

[ Upstream commit 168e28305b871d8ec604a8f51f35467b8d7ba05b ]

This fixes the circular locking dependency warning below, by releasing the socket lock before enterning iso_listen_bis, to avoid any potential deadlock with hdev lock.

[   75.307983] ======================================================
[   75.307984] WARNING: possible circular locking dependency detected
[   75.307985] 6.12.0-rc6+ #22 Not tainted
[   75.307987] ------------------------------------------------------
[   75.307987] kworker/u81:2/2623 is trying to acquire lock:
[   75.307988] ffff8fde1769da58 (sk_lock-AF_BLUETOOTH-BTPROTO_ISO)
               at: iso_connect_cfm+0x253/0x840 [bluetooth]
[   75.308021]
               but task is already holding lock:
[   75.308022] ffff8fdd61a10078 (&hdev->lock)
               at: hci_le_per_adv_report_evt+0x47/0x2f0 [bluetooth]
[   75.308053]
               which lock already depends on the new lock.
[   75.308054]
               the existing dependency chain (in reverse order) is:
[   75.308055]
               -> #1 (&hdev->lock){+.+.}-{3:3}:
[   75.308057]        __mutex_lock+0xad/0xc50
[   75.308061]        mutex_lock_nested+0x1b/0x30
[   75.308063]        iso_sock_listen+0x143/0x5c0 [bluetooth]
[   75.308085]        __sys_listen_socket+0x49/0x60
[   75.308088]        __x64_sys_listen+0x4c/0x90
[   75.308090]        x64_sys_call+0x2517/0x25f0
[   75.308092]        do_syscall_64+0x87/0x150
[   75.308095]        entry_SYSCALL_64_after_hwframe+0x76/0x7e
[   75.308098]
               -> #0 (sk_lock-AF_BLUETOOTH-BTPROTO_ISO){+.+.}-{0:0}:
[   75.308100]        __lock_acquire+0x155e/0x25f0
[   75.308103]        lock_acquire+0xc9/0x300
[   75.308105]        lock_sock_nested+0x32/0x90
[   75.308107]        iso_connect_cfm+0x253/0x840 [bluetooth]
[   75.308128]        hci_connect_cfm+0x6c/0x190 [bluetooth]
[   75.308155]        hci_le_per_adv_report_evt+0x27b/0x2f0 [bluetooth]
[   75.308180]        hci_le_meta_evt+0xe7/0x200 [bluetooth]
[   75.308206]        hci_event_packet+0x21f/0x5c0 [bluetooth]
[   75.308230]        hci_rx_work+0x3ae/0xb10 [bluetooth]
[   75.308254]        process_one_work+0x212/0x740
[   75.308256]        worker_thread+0x1bd/0x3a0
[   75.308258]        kthread+0xe4/0x120
[   75.308259]        ret_from_fork+0x44/0x70
[   75.308261]        ret_from_fork_asm+0x1a/0x30
[   75.308263]
               other info that might help us debug this:
[   75.308264]  Possible unsafe locking scenario:
[   75.308264]        CPU0                CPU1
[   75.308265]        ----                ----
[   75.308265]   lock(&hdev->lock);
[   75.308267]                            lock(sk_lock-
                                                AF_BLUETOOTH-BTPROTO_ISO);
[   75.308268]                            lock(&hdev->lock);
[   75.308269]   lock(sk_lock-AF_BLUETOOTH-BTPROTO_ISO);
[   75.308270]
                *** DEADLOCK ***
[   75.308271] 4 locks held by kworker/u81:2/2623:
[   75.308272]  #0: ffff8fdd66e52148 ((wq_completion)hci0#2){+.+.}-{0:0},
                at: process_one_work+0x443/0x740
[   75.308276]  #1: ffffafb488b7fe48 ((work_completion)(&hdev->rx_work)),
                at: process_one_work+0x1ce/0x740
[   75.308280]  #2: ffff8fdd61a10078 (&hdev->lock){+.+.}-{3:3}
                at: hci_le_per_adv_report_evt+0x47/0x2f0 [bluetooth]
[   75.308304]  #3: ffffffffb6ba4900 (rcu_read_lock){....}-{1:2},
                at: hci_connect_cfm+0x29/0x190 [bluetooth]
Fixes 02171da6e86a ("Bluetooth: ISO: Add hcon for listening bis sk")
---
 net/bluetooth/iso.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
net/bluetooth/iso.c +12 -2
index 269ce0bb73a1..809e88fd3fcb 100644
@@ -1129,6 +1129,7 @@ static int iso_listen_bis(struct sock *sk)
 		return -EHOSTUNREACH;
 
 	hci_dev_lock(hdev);
+	lock_sock(sk);
 
 	/* Fail if user set invalid QoS */
 	if (iso_pi(sk)->qos_user_set && !check_bcast_qos(&iso_pi(sk)->qos)) {
@@ -1159,6 +1160,7 @@ static int iso_listen_bis(struct sock *sk)
 	}
 
 unlock:
+	release_sock(sk);
 	hci_dev_unlock(hdev);
 	hci_dev_put(hdev);
 	return err;
@@ -1187,6 +1189,7 @@ static int iso_sock_listen(struct socket *sock, int backlog)
 
 	BT_DBG("sk %p backlog %d", sk, backlog);
 
+	sock_hold(sk);
 	lock_sock(sk);
 
 	if (sk->sk_state != BT_BOUND) {
@@ -1199,10 +1202,16 @@ static int iso_sock_listen(struct socket *sock, int backlog)
 		goto done;
 	}
 
-	if (!bacmp(&iso_pi(sk)->dst, BDADDR_ANY))
+	if (!bacmp(&iso_pi(sk)->dst, BDADDR_ANY)) {
 		err = iso_listen_cis(sk);
-	else
+	} else {
+		/* Drop sock lock to avoid potential
+		 * deadlock with the hdev lock.
+		 */
+		release_sock(sk);
 		err = iso_listen_bis(sk);
+		lock_sock(sk);
+	}
 
 	if (err)
 		goto done;
@@ -1214,6 +1223,7 @@ static int iso_sock_listen(struct socket *sock, int backlog)
 
 done:
 	release_sock(sk);
+	sock_put(sk);
 	return err;
 }
 
Signature · 1 line
2.39.5
author maintainer
#152 lore raw

PATCH 152/172 Bluetooth: iso: Fix circular lock in iso_conn_big_sync

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Iulia Tanasescu <[email protected]>

[ Upstream commit 7a17308c17880d259105f6e591eb1bc77b9612f0 ]

This fixes the circular locking dependency warning below, by reworking iso_sock_recvmsg, to ensure that the socket lock is always released before calling a function that locks hdev.

[  561.670344] ======================================================
[  561.670346] WARNING: possible circular locking dependency detected
[  561.670349] 6.12.0-rc6+ #26 Not tainted
[  561.670351] ------------------------------------------------------
[  561.670353] iso-tester/3289 is trying to acquire lock:
[  561.670355] ffff88811f600078 (&hdev->lock){+.+.}-{3:3},
               at: iso_conn_big_sync+0x73/0x260 [bluetooth]
[  561.670405]
               but task is already holding lock:
[  561.670407] ffff88815af58258 (sk_lock-AF_BLUETOOTH){+.+.}-{0:0},
               at: iso_sock_recvmsg+0xbf/0x500 [bluetooth]
[  561.670450]
               which lock already depends on the new lock.
[  561.670452]
               the existing dependency chain (in reverse order) is:
[  561.670453]
               -> #2 (sk_lock-AF_BLUETOOTH){+.+.}-{0:0}:
[  561.670458]        lock_acquire+0x7c/0xc0
[  561.670463]        lock_sock_nested+0x3b/0xf0
[  561.670467]        bt_accept_dequeue+0x1a5/0x4d0 [bluetooth]
[  561.670510]        iso_sock_accept+0x271/0x830 [bluetooth]
[  561.670547]        do_accept+0x3dd/0x610
[  561.670550]        __sys_accept4+0xd8/0x170
[  561.670553]        __x64_sys_accept+0x74/0xc0
[  561.670556]        x64_sys_call+0x17d6/0x25f0
[  561.670559]        do_syscall_64+0x87/0x150
[  561.670563]        entry_SYSCALL_64_after_hwframe+0x76/0x7e
[  561.670567]
               -> #1 (sk_lock-AF_BLUETOOTH-BTPROTO_ISO){+.+.}-{0:0}:
[  561.670571]        lock_acquire+0x7c/0xc0
[  561.670574]        lock_sock_nested+0x3b/0xf0
[  561.670577]        iso_sock_listen+0x2de/0xf30 [bluetooth]
[  561.670617]        __sys_listen_socket+0xef/0x130
[  561.670620]        __x64_sys_listen+0xe1/0x190
[  561.670623]        x64_sys_call+0x2517/0x25f0
[  561.670626]        do_syscall_64+0x87/0x150
[  561.670629]        entry_SYSCALL_64_after_hwframe+0x76/0x7e
[  561.670632]
               -> #0 (&hdev->lock){+.+.}-{3:3}:
[  561.670636]        __lock_acquire+0x32ad/0x6ab0
[  561.670639]        lock_acquire.part.0+0x118/0x360
[  561.670642]        lock_acquire+0x7c/0xc0
[  561.670644]        __mutex_lock+0x18d/0x12f0
[  561.670647]        mutex_lock_nested+0x1b/0x30
[  561.670651]        iso_conn_big_sync+0x73/0x260 [bluetooth]
[  561.670687]        iso_sock_recvmsg+0x3e9/0x500 [bluetooth]
[  561.670722]        sock_recvmsg+0x1d5/0x240
[  561.670725]        sock_read_iter+0x27d/0x470
[  561.670727]        vfs_read+0x9a0/0xd30
[  561.670731]        ksys_read+0x1a8/0x250
[  561.670733]        __x64_sys_read+0x72/0xc0
[  561.670736]        x64_sys_call+0x1b12/0x25f0
[  561.670738]        do_syscall_64+0x87/0x150
[  561.670741]        entry_SYSCALL_64_after_hwframe+0x76/0x7e
[  561.670744]
               other info that might help us debug this:
[  561.670745] Chain exists of:

&hdev->lock --> sk_lock-AF_BLUETOOTH-BTPROTO_ISO --> sk_lock-AF_BLUETOOTH

[  561.670751]  Possible unsafe locking scenario:
[  561.670753]        CPU0                    CPU1
[  561.670754]        ----                    ----
[  561.670756]   lock(sk_lock-AF_BLUETOOTH);
[  561.670758]                                lock(sk_lock
                                              AF_BLUETOOTH-BTPROTO_ISO);
[  561.670761]                                lock(sk_lock-AF_BLUETOOTH);
[  561.670764]   lock(&hdev->lock);
[  561.670767]
                *** DEADLOCK ***
Fixes 07a9342b94a9 ("Bluetooth: ISO: Send BIG Create Sync via hci_sync")
---
 net/bluetooth/iso.c | 34 +++++++++++++++++++++++++++-------
 1 file changed, 27 insertions(+), 7 deletions(-)
net/bluetooth/iso.c +27 -7
index 809e88fd3fcb..644b606743e2 100644
@@ -1411,6 +1411,7 @@ static void iso_conn_big_sync(struct sock *sk)
 	 * change.
 	 */
 	hci_dev_lock(hdev);
+	lock_sock(sk);
 
 	if (!test_and_set_bit(BT_SK_BIG_SYNC, &iso_pi(sk)->flags)) {
 		err = hci_le_big_create_sync(hdev, iso_pi(sk)->conn->hcon,
@@ -1423,6 +1424,7 @@ static void iso_conn_big_sync(struct sock *sk)
 				   err);
 	}
 
+	release_sock(sk);
 	hci_dev_unlock(hdev);
 }
 
@@ -1431,39 +1433,57 @@ static int iso_sock_recvmsg(struct socket *sock, struct msghdr *msg,
 {
 	struct sock *sk = sock->sk;
 	struct iso_pinfo *pi = iso_pi(sk);
+	bool early_ret = false;
+	int err = 0;
 
 	BT_DBG("sk %p", sk);
 
 	if (test_and_clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
+		sock_hold(sk);
 		lock_sock(sk);
+
 		switch (sk->sk_state) {
 		case BT_CONNECT2:
 			if (test_bit(BT_SK_PA_SYNC, &pi->flags)) {
+				release_sock(sk);
 				iso_conn_big_sync(sk);
+				lock_sock(sk);
+
 				sk->sk_state = BT_LISTEN;
 			} else {
 				iso_conn_defer_accept(pi->conn->hcon);
 				sk->sk_state = BT_CONFIG;
 			}
-			release_sock(sk);
-			return 0;
+
+			early_ret = true;
+			break;
 		case BT_CONNECTED:
 			if (test_bit(BT_SK_PA_SYNC, &iso_pi(sk)->flags)) {
+				release_sock(sk);
 				iso_conn_big_sync(sk);
+				lock_sock(sk);
+
 				sk->sk_state = BT_LISTEN;
-				release_sock(sk);
-				return 0;
+				early_ret = true;
 			}
 
-			release_sock(sk);
 			break;
 		case BT_CONNECT:
 			release_sock(sk);
-			return iso_connect_cis(sk);
+			err = iso_connect_cis(sk);
+			lock_sock(sk);
+
+			early_ret = true;
+			break;
 		default:
-			release_sock(sk);
 			break;
 		}
+
+		release_sock(sk);
+		sock_put(sk);
+
+		if (early_ret)
+			return err;
 	}
 
 	return bt_sock_recvmsg(sock, msg, len, flags);
Signature · 1 line
2.39.5
author maintainer
#153 lore raw

PATCH 153/172 Bluetooth: btmtk: avoid UAF in btmtk_process_coredump

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Thadeu Lima de Souza Cascardo <[email protected]>

[ Upstream commit b548f5e9456c568155499d9ebac675c0d7a296e8 ]

hci_devcd_append may lead to the release of the skb, so it cannot be accessed once it is called.

==================================================================

BUG: KASAN: slab-use-after-free in btmtk_process_coredump+0x2a7/0x2d0 [btmtk]
Read of size 4 at addr ffff888033cfabb0 by task kworker/0:3/82

CPU: 0 PID: 82 Comm: kworker/0:3 Tainted: G     U             6.6.40-lockdep-03464-g1d8b4eb3060e #1 b0b3c1cc0c842735643fb411799d97921d1f688c
Hardware name: Google Yaviks_Ufs/Yaviks_Ufs, BIOS Google_Yaviks_Ufs.15217.552.0 05/07/2024
Workqueue: events btusb_rx_work [btusb]
Call Trace:
 <TASK>
 dump_stack_lvl+0xfd/0x150
 print_report+0x131/0x780
 kasan_report+0x177/0x1c0
 btmtk_process_coredump+0x2a7/0x2d0 [btmtk 03edd567dd71a65958807c95a65db31d433e1d01]
 btusb_recv_acl_mtk+0x11c/0x1a0 [btusb 675430d1e87c4f24d0c1f80efe600757a0f32bec]
 btusb_rx_work+0x9e/0xe0 [btusb 675430d1e87c4f24d0c1f80efe600757a0f32bec]
 worker_thread+0xe44/0x2cc0
 kthread+0x2ff/0x3a0
 ret_from_fork+0x51/0x80
 ret_from_fork_asm+0x1b/0x30
 </TASK>

Allocated by task 82:
 stack_trace_save+0xdc/0x190
 kasan_set_track+0x4e/0x80
 __kasan_slab_alloc+0x4e/0x60
 kmem_cache_alloc+0x19f/0x360
 skb_clone+0x132/0xf70
 btusb_recv_acl_mtk+0x104/0x1a0 [btusb]
 btusb_rx_work+0x9e/0xe0 [btusb]
 worker_thread+0xe44/0x2cc0
 kthread+0x2ff/0x3a0
 ret_from_fork+0x51/0x80
 ret_from_fork_asm+0x1b/0x30

Freed by task 1733:
 stack_trace_save+0xdc/0x190
 kasan_set_track+0x4e/0x80
 kasan_save_free_info+0x28/0xb0
 ____kasan_slab_free+0xfd/0x170
 kmem_cache_free+0x183/0x3f0
 hci_devcd_rx+0x91a/0x2060 [bluetooth]
 worker_thread+0xe44/0x2cc0
 kthread+0x2ff/0x3a0
 ret_from_fork+0x51/0x80
 ret_from_fork_asm+0x1b/0x30

The buggy address belongs to the object at ffff888033cfab40
 which belongs to the cache skbuff_head_cache of size 232

The buggy address is located 112 bytes inside of
freed 232-byte region [ffff888033cfab40, ffff888033cfac28)

The buggy address belongs to the physical page:

page:00000000a174ba93 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x33cfa head:00000000a174ba93 order:1 entire_mapcount:0 nr_pages_mapped:0 pincount:0 anon flags: 0x4000000000000840(slab|head|zone=1)
page_type: 0xffffffff()

raw: 4000000000000840 ffff888100848a00 0000000000000000 0000000000000001
raw: 0000000000000000 0000000080190019 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff888033cfaa80: fb fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc
 ffff888033cfab00: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
>ffff888033cfab80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                     ^
 ffff888033cfac00: fb fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc
 ffff888033cfac80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Check if we need to call hci_devcd_complete before calling hci_devcd_append. That requires that we check data->cd_info.cnt >= MTK_COREDUMP_NUM instead of data->cd_info.cnt > MTK_COREDUMP_NUM, as we increment data->cd_info.cnt only once the call to hci_devcd_append succeeds.

Fixes 0b7015132878 ("Bluetooth: btusb: mediatek: add MediaTek devcoredump support")
---
 drivers/bluetooth/btmtk.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)
drivers/bluetooth/btmtk.c +12 -8
index 480e4adba9fa..85e99641eaae 100644
@@ -395,6 +395,7 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
 {
 	struct btmtk_data *data = hci_get_priv(hdev);
 	int err;
+	bool complete = false;
 
 	if (!IS_ENABLED(CONFIG_DEV_COREDUMP)) {
 		kfree_skb(skb);
@@ -416,19 +417,22 @@ int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
 		fallthrough;
 	case HCI_DEVCOREDUMP_ACTIVE:
 	default:
+		/* Mediatek coredump data would be more than MTK_COREDUMP_NUM */
+		if (data->cd_info.cnt >= MTK_COREDUMP_NUM &&
+		    skb->len > MTK_COREDUMP_END_LEN)
+			if (!memcmp((char *)&skb->data[skb->len - MTK_COREDUMP_END_LEN],
+				    MTK_COREDUMP_END, MTK_COREDUMP_END_LEN - 1))
+				complete = true;
+
 		err = hci_devcd_append(hdev, skb);
 		if (err < 0)
 			break;
 		data->cd_info.cnt++;
 
-		/* Mediatek coredump data would be more than MTK_COREDUMP_NUM */
-		if (data->cd_info.cnt > MTK_COREDUMP_NUM &&
-		    skb->len > MTK_COREDUMP_END_LEN)
-			if (!memcmp((char *)&skb->data[skb->len - MTK_COREDUMP_END_LEN],
-				    MTK_COREDUMP_END, MTK_COREDUMP_END_LEN - 1)) {
-				bt_dev_info(hdev, "Mediatek coredump end");
-				hci_devcd_complete(hdev);
-			}
+		if (complete) {
+			bt_dev_info(hdev, "Mediatek coredump end");
+			hci_devcd_complete(hdev);
+		}
 
 		break;
 	}
Signature · 1 line
2.39.5
author maintainer
#154 lore raw

PATCH 154/172 net: renesas: rswitch: fix initial MPIC register setting

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Nikita Yushchenko <[email protected]>

[ Upstream commit fb9e6039c325cc205a368046dc03c56c87df2310 ]

MPIC.PIS must be set per phy interface type.
MPIC.LSC must be set per speed.

Do that strictly per datasheet, instead of hardcoding MPIC.PIS to GMII.

Fixes 3590918b5d07 ("net: ethernet: renesas: Add support for "Ethernet Switch"")
---
 drivers/net/ethernet/renesas/rswitch.c | 27 ++++++++++++++++++++------
 drivers/net/ethernet/renesas/rswitch.h | 14 ++++++-------
 2 files changed, 28 insertions(+), 13 deletions(-)
drivers/net/ethernet/renesas/rswitch.c +21 -6
index 9dffb7cf1254..09117110e3dd 100644
@@ -1116,25 +1116,40 @@ static int rswitch_etha_wait_link_verification(struct rswitch_etha *etha)
 
 static void rswitch_rmac_setting(struct rswitch_etha *etha, const u8 *mac)
 {
-	u32 val;
+	u32 pis, lsc;
 
 	rswitch_etha_write_mac_address(etha, mac);
 
+	switch (etha->phy_interface) {
+	case PHY_INTERFACE_MODE_SGMII:
+		pis = MPIC_PIS_GMII;
+		break;
+	case PHY_INTERFACE_MODE_USXGMII:
+	case PHY_INTERFACE_MODE_5GBASER:
+		pis = MPIC_PIS_XGMII;
+		break;
+	default:
+		pis = FIELD_GET(MPIC_PIS, ioread32(etha->addr + MPIC));
+		break;
+	}
+
 	switch (etha->speed) {
 	case 100:
-		val = MPIC_LSC_100M;
+		lsc = MPIC_LSC_100M;
 		break;
 	case 1000:
-		val = MPIC_LSC_1G;
+		lsc = MPIC_LSC_1G;
 		break;
 	case 2500:
-		val = MPIC_LSC_2_5G;
+		lsc = MPIC_LSC_2_5G;
 		break;
 	default:
-		return;
+		lsc = FIELD_GET(MPIC_LSC, ioread32(etha->addr + MPIC));
+		break;
 	}
 
-	iowrite32(MPIC_PIS_GMII | val, etha->addr + MPIC);
+	rswitch_modify(etha->addr, MPIC, MPIC_PIS | MPIC_LSC,
+		       FIELD_PREP(MPIC_PIS, pis) | FIELD_PREP(MPIC_LSC, lsc));
 }
 
 static void rswitch_etha_enable_mii(struct rswitch_etha *etha)
drivers/net/ethernet/renesas/rswitch.h +7 -7
index 72e3ff596d31..e020800dcc57 100644
@@ -724,13 +724,13 @@ enum rswitch_etha_mode {
 
 #define EAVCC_VEM_SC_TAG	(0x3 << 16)
 
-#define MPIC_PIS_MII		0x00
-#define MPIC_PIS_GMII		0x02
-#define MPIC_PIS_XGMII		0x04
-#define MPIC_LSC_SHIFT		3
-#define MPIC_LSC_100M		(1 << MPIC_LSC_SHIFT)
-#define MPIC_LSC_1G		(2 << MPIC_LSC_SHIFT)
-#define MPIC_LSC_2_5G		(3 << MPIC_LSC_SHIFT)
+#define MPIC_PIS		GENMASK(2, 0)
+#define MPIC_PIS_GMII		2
+#define MPIC_PIS_XGMII		4
+#define MPIC_LSC		GENMASK(5, 3)
+#define MPIC_LSC_100M		1
+#define MPIC_LSC_1G		2
+#define MPIC_LSC_2_5G		3
 
 #define MDIO_READ_C45		0x03
 #define MDIO_WRITE_C45		0x01
Signature · 1 line
2.39.5
author maintainer
#155 lore raw

PATCH 155/172 net: dsa: microchip: KSZ9896 register regmap alignment to 32 bit boundaries

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Jesse Van Gavere <[email protected]>

[ Upstream commit 5af53577c64fa84da032d490b701127fe8d1a6aa ]

Commit 8d7ae22ae9f8 ("net: dsa: microchip: KSZ9477 register regmap alignment to 32 bit boundaries") fixed an issue whereby regmap_reg_range did not allow writes as 32 bit words to KSZ9477 PHY registers, this fix for KSZ9896 is adapted from there as the same errata is present in KSZ9896C as "Module 5: Certain PHY registers must be written as pairs instead of singly" the explanation below is likewise taken from this commit.

The commit provided code
to apply "Module 6: Certain PHY registers must be written as pairs instead of singly" errata for KSZ9477 as this chip for certain PHY registers (0xN120 to 0xN13F, N=1,2,3,4,5) must be accessed as 32 bit words instead of 16 or 8 bit access.
Otherwise, adjacent registers (no matter if reserved or not) are overwritten with 0x0.

Without this patch some registers (e.g. 0x113c or 0x1134) required for 32 bit access are out of valid regmap ranges.

As a result, following error is observed and KSZ9896 is not properly configured:

ksz-switch spi1.0: can't rmw 32bit reg 0x113c: -EIO
ksz-switch spi1.0: can't rmw 32bit reg 0x1134: -EIO
ksz-switch spi1.0 lan1 (uninitialized): failed to connect to PHY: -EIO ksz-switch spi1.0 lan1 (uninitialized): error -5 setting up PHY for tree 0, switch 0, port 0

The solution is to modify regmap_reg_range to allow accesses with 4 bytes boundaries.

Fixes 5c844d57aa78 ("net: dsa: microchip: fix writes to phy registers >= 0x10")
---
 drivers/net/dsa/microchip/ksz_common.c | 42 +++++++++++---------------
 1 file changed, 18 insertions(+), 24 deletions(-)
drivers/net/dsa/microchip/ksz_common.c +18 -24
index 5290f5ad98f3..bf26cd0abf6d 100644
@@ -1098,10 +1098,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
 	regmap_reg_range(0x1030, 0x1030),
 	regmap_reg_range(0x1100, 0x1115),
 	regmap_reg_range(0x111a, 0x111f),
-	regmap_reg_range(0x1122, 0x1127),
-	regmap_reg_range(0x112a, 0x112b),
-	regmap_reg_range(0x1136, 0x1139),
-	regmap_reg_range(0x113e, 0x113f),
+	regmap_reg_range(0x1120, 0x112b),
+	regmap_reg_range(0x1134, 0x113b),
+	regmap_reg_range(0x113c, 0x113f),
 	regmap_reg_range(0x1400, 0x1401),
 	regmap_reg_range(0x1403, 0x1403),
 	regmap_reg_range(0x1410, 0x1417),
@@ -1128,10 +1127,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
 	regmap_reg_range(0x2030, 0x2030),
 	regmap_reg_range(0x2100, 0x2115),
 	regmap_reg_range(0x211a, 0x211f),
-	regmap_reg_range(0x2122, 0x2127),
-	regmap_reg_range(0x212a, 0x212b),
-	regmap_reg_range(0x2136, 0x2139),
-	regmap_reg_range(0x213e, 0x213f),
+	regmap_reg_range(0x2120, 0x212b),
+	regmap_reg_range(0x2134, 0x213b),
+	regmap_reg_range(0x213c, 0x213f),
 	regmap_reg_range(0x2400, 0x2401),
 	regmap_reg_range(0x2403, 0x2403),
 	regmap_reg_range(0x2410, 0x2417),
@@ -1158,10 +1156,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
 	regmap_reg_range(0x3030, 0x3030),
 	regmap_reg_range(0x3100, 0x3115),
 	regmap_reg_range(0x311a, 0x311f),
-	regmap_reg_range(0x3122, 0x3127),
-	regmap_reg_range(0x312a, 0x312b),
-	regmap_reg_range(0x3136, 0x3139),
-	regmap_reg_range(0x313e, 0x313f),
+	regmap_reg_range(0x3120, 0x312b),
+	regmap_reg_range(0x3134, 0x313b),
+	regmap_reg_range(0x313c, 0x313f),
 	regmap_reg_range(0x3400, 0x3401),
 	regmap_reg_range(0x3403, 0x3403),
 	regmap_reg_range(0x3410, 0x3417),
@@ -1188,10 +1185,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
 	regmap_reg_range(0x4030, 0x4030),
 	regmap_reg_range(0x4100, 0x4115),
 	regmap_reg_range(0x411a, 0x411f),
-	regmap_reg_range(0x4122, 0x4127),
-	regmap_reg_range(0x412a, 0x412b),
-	regmap_reg_range(0x4136, 0x4139),
-	regmap_reg_range(0x413e, 0x413f),
+	regmap_reg_range(0x4120, 0x412b),
+	regmap_reg_range(0x4134, 0x413b),
+	regmap_reg_range(0x413c, 0x413f),
 	regmap_reg_range(0x4400, 0x4401),
 	regmap_reg_range(0x4403, 0x4403),
 	regmap_reg_range(0x4410, 0x4417),
@@ -1218,10 +1214,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
 	regmap_reg_range(0x5030, 0x5030),
 	regmap_reg_range(0x5100, 0x5115),
 	regmap_reg_range(0x511a, 0x511f),
-	regmap_reg_range(0x5122, 0x5127),
-	regmap_reg_range(0x512a, 0x512b),
-	regmap_reg_range(0x5136, 0x5139),
-	regmap_reg_range(0x513e, 0x513f),
+	regmap_reg_range(0x5120, 0x512b),
+	regmap_reg_range(0x5134, 0x513b),
+	regmap_reg_range(0x513c, 0x513f),
 	regmap_reg_range(0x5400, 0x5401),
 	regmap_reg_range(0x5403, 0x5403),
 	regmap_reg_range(0x5410, 0x5417),
@@ -1248,10 +1243,9 @@ static const struct regmap_range ksz9896_valid_regs[] = {
 	regmap_reg_range(0x6030, 0x6030),
 	regmap_reg_range(0x6100, 0x6115),
 	regmap_reg_range(0x611a, 0x611f),
-	regmap_reg_range(0x6122, 0x6127),
-	regmap_reg_range(0x612a, 0x612b),
-	regmap_reg_range(0x6136, 0x6139),
-	regmap_reg_range(0x613e, 0x613f),
+	regmap_reg_range(0x6120, 0x612b),
+	regmap_reg_range(0x6134, 0x613b),
+	regmap_reg_range(0x613c, 0x613f),
 	regmap_reg_range(0x6300, 0x6301),
 	regmap_reg_range(0x6400, 0x6401),
 	regmap_reg_range(0x6403, 0x6403),
Signature · 1 line
2.39.5
author maintainer
#156 lore raw

PATCH 156/172 net: dsa: tag_ocelot_8021q: fix broken reception

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Robert Hodaszi <[email protected]>

[ Upstream commit 36ff681d2283410742489ce77e7b01419eccf58c ]

The blamed commit changed the dsa_8021q_rcv() calling convention to accept pre-populated source_port and switch_id arguments. If those are not available, as in the case of tag_ocelot_8021q, the arguments must be pre-initialized with -1.

Due to the bug of passing uninitialized arguments in tag_ocelot_8021q, dsa_8021q_rcv() does not detect that it needs to populate the source_port and switch_id, and this makes dsa_conduit_find_user() fail, which leads to packet loss on reception.

Fixes dcfe7673787b ("net: dsa: tag_sja1105: absorb logic for not overwriting precise info into dsa_8021q_rcv()")
---
 net/dsa/tag_ocelot_8021q.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
net/dsa/tag_ocelot_8021q.c +1 -1
index 8e8b1bef6af6..11ea8cfd6266 100644
@@ -79,7 +79,7 @@ static struct sk_buff *ocelot_xmit(struct sk_buff *skb,
 static struct sk_buff *ocelot_rcv(struct sk_buff *skb,
 				  struct net_device *netdev)
 {
-	int src_port, switch_id;
+	int src_port = -1, switch_id = -1;
 
 	dsa_8021q_rcv(skb, &src_port, &switch_id, NULL, NULL);
 
Signature · 1 line
2.39.5
author maintainer
#157 lore raw

PATCH 157/172 drm/xe: fix the ERR_PTR() returned on failure to allocate tiny pt

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Mirsad Todorovac <[email protected]>

[ Upstream commit ed69b28b3a5e39871ba5599992f80562d6ee59db ]

Running coccinelle spatch gave the following warning:

./drivers/gpu/drm/xe/tests/xe_migrate.c:226:5-11: inconsistent IS_ERR and PTR_ERR on line 228.

The code reports PTR_ERR(pt) when IS_ERR(tiny) is checked:

→ 211 pt = xe_bo_create_pin_map(xe, tile, m->q->vm, XE_PAGE_SIZE,

  212                            ttm_bo_type_kernel,
  213                            XE_BO_FLAG_VRAM_IF_DGFX(tile) |
  214                            XE_BO_FLAG_PINNED);

215 if (IS_ERR(pt)) {
216 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
217 PTR_ERR(pt));
218 goto free_big;
219 }
220
221 tiny = xe_bo_create_pin_map(xe, tile, m->q->vm,
→ 222 2 * SZ_4K,

  223                              ttm_bo_type_kernel,
  224                              XE_BO_FLAG_VRAM_IF_DGFX(tile) |
  225                              XE_BO_FLAG_PINNED);

→ 226 if (IS_ERR(tiny)) {
→ 227 KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
→ 228 PTR_ERR(pt));
229 goto free_pt;
230 }

Now, the IS_ERR(tiny) and the corresponding PTR_ERR(pt) do not match.

Returning PTR_ERR(tiny), as the last failed function call, seems logical.

Fixes dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
(cherry picked from commit cb57c75098c1c449a007ba301f9073f96febaaa9)
---
 drivers/gpu/drm/xe/tests/xe_migrate.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/xe/tests/xe_migrate.c +2 -2
index 1a192a2a941b..3bbdb362d6f0 100644
@@ -224,8 +224,8 @@ static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test)
 				    XE_BO_FLAG_VRAM_IF_DGFX(tile) |
 				    XE_BO_FLAG_PINNED);
 	if (IS_ERR(tiny)) {
-		KUNIT_FAIL(test, "Failed to allocate fake pt: %li\n",
-			   PTR_ERR(pt));
+		KUNIT_FAIL(test, "Failed to allocate tiny fake pt: %li\n",
+			   PTR_ERR(tiny));
 		goto free_pt;
 	}
 
Signature · 1 line
2.39.5
author maintainer
#158 lore raw

PATCH 158/172 drm/xe/reg_sr: Remove register pool

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Lucas De Marchi <[email protected]>

[ Upstream commit d7b028656c29b22fcde1c6ee1df5b28fbba987b5 ]

That pool implementation doesn't really work: if the krealloc happens to move the memory and return another address, the entries in the xarray become invalid, leading to use-after-free later:

	BUG: KASAN: slab-use-after-free in xe_reg_sr_apply_mmio+0x570/0x760 [xe]
	Read of size 4 at addr ffff8881244b2590 by task modprobe/2753

	Allocated by task 2753:
	 kasan_save_stack+0x39/0x70
	 kasan_save_track+0x14/0x40
	 kasan_save_alloc_info+0x37/0x60
	 __kasan_kmalloc+0xc3/0xd0
	 __kmalloc_node_track_caller_noprof+0x200/0x6d0
	 krealloc_noprof+0x229/0x380

Simplify the code to fix the bug. A better pooling strategy may be added back later if needed.

Fixes dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
(cherry picked from commit e5283bd4dfecbd3335f43b62a68e24dae23f59e4)
---
 drivers/gpu/drm/xe/xe_reg_sr.c       | 31 ++++++----------------------
 drivers/gpu/drm/xe/xe_reg_sr_types.h |  6 ------
 2 files changed, 6 insertions(+), 31 deletions(-)
drivers/gpu/drm/xe/xe_reg_sr.c +6 -25
index 440ac572f6e5..52969c090965 100644
@@ -26,46 +26,27 @@
 #include "xe_reg_whitelist.h"
 #include "xe_rtp_types.h"
 
-#define XE_REG_SR_GROW_STEP_DEFAULT	16
-
 static void reg_sr_fini(struct drm_device *drm, void *arg)
 {
 	struct xe_reg_sr *sr = arg;
+	struct xe_reg_sr_entry *entry;
+	unsigned long reg;
+
+	xa_for_each(&sr->xa, reg, entry)
+		kfree(entry);
 
 	xa_destroy(&sr->xa);
-	kfree(sr->pool.arr);
-	memset(&sr->pool, 0, sizeof(sr->pool));
 }
 
 int xe_reg_sr_init(struct xe_reg_sr *sr, const char *name, struct xe_device *xe)
 {
 	xa_init(&sr->xa);
-	memset(&sr->pool, 0, sizeof(sr->pool));
-	sr->pool.grow_step = XE_REG_SR_GROW_STEP_DEFAULT;
 	sr->name = name;
 
 	return drmm_add_action_or_reset(&xe->drm, reg_sr_fini, sr);
 }
 EXPORT_SYMBOL_IF_KUNIT(xe_reg_sr_init);
 
-static struct xe_reg_sr_entry *alloc_entry(struct xe_reg_sr *sr)
-{
-	if (sr->pool.used == sr->pool.allocated) {
-		struct xe_reg_sr_entry *arr;
-
-		arr = krealloc_array(sr->pool.arr,
-				     ALIGN(sr->pool.allocated + 1, sr->pool.grow_step),
-				     sizeof(*arr), GFP_KERNEL);
-		if (!arr)
-			return NULL;
-
-		sr->pool.arr = arr;
-		sr->pool.allocated += sr->pool.grow_step;
-	}
-
-	return &sr->pool.arr[sr->pool.used++];
-}
-
 static bool compatible_entries(const struct xe_reg_sr_entry *e1,
 			       const struct xe_reg_sr_entry *e2)
 {
@@ -111,7 +92,7 @@ int xe_reg_sr_add(struct xe_reg_sr *sr,
 		return 0;
 	}
 
-	pentry = alloc_entry(sr);
+	pentry = kmalloc(sizeof(*pentry), GFP_KERNEL);
 	if (!pentry) {
 		ret = -ENOMEM;
 		goto fail;
drivers/gpu/drm/xe/xe_reg_sr_types.h +0 -6
index ad48a52b824a..ebe11f237fa2 100644
@@ -20,12 +20,6 @@ struct xe_reg_sr_entry {
 };
 
 struct xe_reg_sr {
-	struct {
-		struct xe_reg_sr_entry *arr;
-		unsigned int used;
-		unsigned int allocated;
-		unsigned int grow_step;
-	} pool;
 	struct xarray xa;
 	const char *name;
 
Signature · 1 line
2.39.5
author maintainer
#159 lore raw

PATCH 159/172 blk-iocost: Avoid using clamp() on inuse in __propagate_weights()

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Nathan Chancellor <[email protected]>

[ Upstream commit 57e420c84f9ab55ba4c5e2ae9c5f6c8e1ea834d2 ]

After a recent change to clamp() and its variants [1] that increases the coverage of the check that high is greater than low because it can be done through inlining, certain build configurations (such as s390 defconfig) fail to build with clang with:

  block/blk-iocost.c:1101:11: error: call to '__compiletime_assert_557' declared with 'error' attribute: clamp() low limit 1 greater than high limit active
   1101 |                 inuse = clamp_t(u32, inuse, 1, active);
        |                         ^
  include/linux/minmax.h:218:36: note: expanded from macro 'clamp_t'
    218 | #define clamp_t(type, val, lo, hi) __careful_clamp(type, val, lo, hi)
        |                                    ^
  include/linux/minmax.h:195:2: note: expanded from macro '__careful_clamp'
    195 |         __clamp_once(type, val, lo, hi, __UNIQUE_ID(v_), __UNIQUE_ID(l_), __UNIQUE_ID(h_))
        |         ^
  include/linux/minmax.h:188:2: note: expanded from macro '__clamp_once'
    188 |         BUILD_BUG_ON_MSG(statically_true(ulo > uhi),                            \
        |         ^

__propagate_weights() is called with an active value of zero in ioc_check_iocgs(), which results in the high value being less than the low value, which is undefined because the value returned depends on the order of the comparisons.

The purpose of this expression is to ensure inuse is not more than active and at least 1. This could be written more simply with a ternary expression that uses min(inuse, active) as the condition so that the value of that condition can be used if it is not zero and one if it is. Do this conversion to resolve the error and add a comment to deter people from turning this back into clamp().

---
 block/blk-iocost.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
block/blk-iocost.c +8 -1
index 384aa15e8260..a5894ec9696e 100644
@@ -1098,7 +1098,14 @@ static void __propagate_weights(struct ioc_gq *iocg, u32 active, u32 inuse,
 		inuse = DIV64_U64_ROUND_UP(active * iocg->child_inuse_sum,
 					   iocg->child_active_sum);
 	} else {
-		inuse = clamp_t(u32, inuse, 1, active);
+		/*
+		 * It may be tempting to turn this into a clamp expression with
+		 * a lower limit of 1 but active may be 0, which cannot be used
+		 * as an upper limit in that situation. This expression allows
+		 * active to clamp inuse unless it is 0, in which case inuse
+		 * becomes 1.
+		 */
+		inuse = min(inuse, active) ?: 1;
 	}
 
 	iocg->last_inuse = iocg->inuse;
Signature · 1 line
2.39.5
author maintainer
#160 lore raw

PATCH 160/172 kselftest/arm64: abi: fix SVCR detection

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Weizhao Ouyang <[email protected]>

[ Upstream commit ce03573a1917532da06057da9f8e74a2ee9e2ac9 ]

When using svcr_in to check ZA and Streaming Mode, we should make sure that the value in x2 is correct, otherwise it may trigger an Illegal instruction if FEAT_SVE and !FEAT_SME.

Fixes 43e3f85523e4 ("kselftest/arm64: Add SME support to syscall ABI test")
---
 .../selftests/arm64/abi/syscall-abi-asm.S     | 32 +++++++++----------
 1 file changed, 15 insertions(+), 17 deletions(-)
tools/testing/selftests/arm64/abi/syscall-abi-asm.S +15 -17
index df3230fdac39..66ab2e0bae5f 100644
@@ -81,32 +81,31 @@ do_syscall:
 	stp	x27, x28, [sp, #96]
 
 	// Set SVCR if we're doing SME
-	cbz	x1, 1f
+	cbz	x1, load_gpr
 	adrp	x2, svcr_in
 	ldr	x2, [x2, :lo12:svcr_in]
 	msr	S3_3_C4_C2_2, x2
-1:
 
 	// Load ZA and ZT0 if enabled - uses x12 as scratch due to SME LDR
-	tbz	x2, #SVCR_ZA_SHIFT, 1f
+	tbz	x2, #SVCR_ZA_SHIFT, load_gpr
 	mov	w12, #0
 	ldr	x2, =za_in
-2:	_ldr_za 12, 2
+1:	_ldr_za 12, 2
 	add	x2, x2, x1
 	add	x12, x12, #1
 	cmp	x1, x12
-	bne	2b
+	bne	1b
 
 	// ZT0
 	mrs	x2, S3_0_C0_C4_5	// ID_AA64SMFR0_EL1
 	ubfx	x2, x2, #ID_AA64SMFR0_EL1_SMEver_SHIFT, \
 			 #ID_AA64SMFR0_EL1_SMEver_WIDTH
-	cbz	x2, 1f
+	cbz	x2, load_gpr
 	adrp	x2, zt_in
 	add	x2, x2, :lo12:zt_in
 	_ldr_zt 2
-1:
 
+load_gpr:
 	// Load GPRs x8-x28, and save our SP/FP for later comparison
 	ldr	x2, =gpr_in
 	add	x2, x2, #64
@@ -125,9 +124,9 @@ do_syscall:
 	str	x30, [x2], #8		// LR
 
 	// Load FPRs if we're not doing neither SVE nor streaming SVE
-	cbnz	x0, 1f
+	cbnz	x0, check_sve_in
 	ldr	x2, =svcr_in
-	tbnz	x2, #SVCR_SM_SHIFT, 1f
+	tbnz	x2, #SVCR_SM_SHIFT, check_sve_in
 
 	ldr	x2, =fpr_in
 	ldp	q0, q1, [x2]
@@ -148,8 +147,8 @@ do_syscall:
 	ldp	q30, q31, [x2, #16 * 30]
 
 	b	2f
-1:
 
+check_sve_in:
 	// Load the SVE registers if we're doing SVE/SME
 
 	ldr	x2, =z_in
@@ -256,32 +255,31 @@ do_syscall:
 	stp	q30, q31, [x2, #16 * 30]
 
 	// Save SVCR if we're doing SME
-	cbz	x1, 1f
+	cbz	x1, check_sve_out
 	mrs	x2, S3_3_C4_C2_2
 	adrp	x3, svcr_out
 	str	x2, [x3, :lo12:svcr_out]
-1:
 
 	// Save ZA if it's enabled - uses x12 as scratch due to SME STR
-	tbz	x2, #SVCR_ZA_SHIFT, 1f
+	tbz	x2, #SVCR_ZA_SHIFT, check_sve_out
 	mov	w12, #0
 	ldr	x2, =za_out
-2:	_str_za 12, 2
+1:	_str_za 12, 2
 	add	x2, x2, x1
 	add	x12, x12, #1
 	cmp	x1, x12
-	bne	2b
+	bne	1b
 
 	// ZT0
 	mrs	x2, S3_0_C0_C4_5	// ID_AA64SMFR0_EL1
 	ubfx	x2, x2, #ID_AA64SMFR0_EL1_SMEver_SHIFT, \
 			#ID_AA64SMFR0_EL1_SMEver_WIDTH
-	cbz	x2, 1f
+	cbz	x2, check_sve_out
 	adrp	x2, zt_out
 	add	x2, x2, :lo12:zt_out
 	_str_zt 2
-1:
 
+check_sve_out:
 	// Save the SVE state if we have some
 	cbz	x0, 1f
 
Signature · 1 line
2.39.5
author maintainer
#161 lore raw

PATCH 161/172 blk-mq: move cpuhp callback registering out of q->sysfs_lock

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Ming Lei <[email protected]>

[ Upstream commit 22465bbac53c821319089016f268a2437de9b00a ]

Registering and unregistering cpuhp callback requires global cpu hotplug lock, which is used everywhere. Meantime q->sysfs_lock is used in block layer almost everywhere.

It is easy to trigger lockdep warning[1] by connecting the two locks.

Fix the warning by moving blk-mq's cpuhp callback registering out of q->sysfs_lock. Add one dedicated global lock for covering registering & unregistering hctx's cpuhp, and it is safe to do so because hctx is guaranteed to be live if our request_queue is live.

[1] https://lore.kernel.org/lkml/Z04pz3AlvI4o0Mr8@agluck-desk3/

Stable-dep-of: be26ba96421a ("block: Fix potential deadlock while freezing queue and acquiring sysfs_lock")

---
 block/blk-mq.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 92 insertions(+), 6 deletions(-)
block/blk-mq.c +92 -6
index b4fba7b398e5..1030875a3e95 100644
@@ -43,6 +43,7 @@
 
 static DEFINE_PER_CPU(struct llist_head, blk_cpu_done);
 static DEFINE_PER_CPU(call_single_data_t, blk_cpu_csd);
+static DEFINE_MUTEX(blk_mq_cpuhp_lock);
 
 static void blk_mq_insert_request(struct request *rq, blk_insert_t flags);
 static void blk_mq_request_bypass_insert(struct request *rq,
@@ -3740,13 +3741,91 @@ static int blk_mq_hctx_notify_dead(unsigned int cpu, struct hlist_node *node)
 	return 0;
 }
 
-static void blk_mq_remove_cpuhp(struct blk_mq_hw_ctx *hctx)
+static void __blk_mq_remove_cpuhp(struct blk_mq_hw_ctx *hctx)
 {
-	if (!(hctx->flags & BLK_MQ_F_STACKING))
+	lockdep_assert_held(&blk_mq_cpuhp_lock);
+
+	if (!(hctx->flags & BLK_MQ_F_STACKING) &&
+	    !hlist_unhashed(&hctx->cpuhp_online)) {
 		cpuhp_state_remove_instance_nocalls(CPUHP_AP_BLK_MQ_ONLINE,
 						    &hctx->cpuhp_online);
-	cpuhp_state_remove_instance_nocalls(CPUHP_BLK_MQ_DEAD,
-					    &hctx->cpuhp_dead);
+		INIT_HLIST_NODE(&hctx->cpuhp_online);
+	}
+
+	if (!hlist_unhashed(&hctx->cpuhp_dead)) {
+		cpuhp_state_remove_instance_nocalls(CPUHP_BLK_MQ_DEAD,
+						    &hctx->cpuhp_dead);
+		INIT_HLIST_NODE(&hctx->cpuhp_dead);
+	}
+}
+
+static void blk_mq_remove_cpuhp(struct blk_mq_hw_ctx *hctx)
+{
+	mutex_lock(&blk_mq_cpuhp_lock);
+	__blk_mq_remove_cpuhp(hctx);
+	mutex_unlock(&blk_mq_cpuhp_lock);
+}
+
+static void __blk_mq_add_cpuhp(struct blk_mq_hw_ctx *hctx)
+{
+	lockdep_assert_held(&blk_mq_cpuhp_lock);
+
+	if (!(hctx->flags & BLK_MQ_F_STACKING) &&
+	    hlist_unhashed(&hctx->cpuhp_online))
+		cpuhp_state_add_instance_nocalls(CPUHP_AP_BLK_MQ_ONLINE,
+				&hctx->cpuhp_online);
+
+	if (hlist_unhashed(&hctx->cpuhp_dead))
+		cpuhp_state_add_instance_nocalls(CPUHP_BLK_MQ_DEAD,
+				&hctx->cpuhp_dead);
+}
+
+static void __blk_mq_remove_cpuhp_list(struct list_head *head)
+{
+	struct blk_mq_hw_ctx *hctx;
+
+	lockdep_assert_held(&blk_mq_cpuhp_lock);
+
+	list_for_each_entry(hctx, head, hctx_list)
+		__blk_mq_remove_cpuhp(hctx);
+}
+
+/*
+ * Unregister cpuhp callbacks from exited hw queues
+ *
+ * Safe to call if this `request_queue` is live
+ */
+static void blk_mq_remove_hw_queues_cpuhp(struct request_queue *q)
+{
+	LIST_HEAD(hctx_list);
+
+	spin_lock(&q->unused_hctx_lock);
+	list_splice_init(&q->unused_hctx_list, &hctx_list);
+	spin_unlock(&q->unused_hctx_lock);
+
+	mutex_lock(&blk_mq_cpuhp_lock);
+	__blk_mq_remove_cpuhp_list(&hctx_list);
+	mutex_unlock(&blk_mq_cpuhp_lock);
+
+	spin_lock(&q->unused_hctx_lock);
+	list_splice(&hctx_list, &q->unused_hctx_list);
+	spin_unlock(&q->unused_hctx_lock);
+}
+
+/*
+ * Register cpuhp callbacks from all hw queues
+ *
+ * Safe to call if this `request_queue` is live
+ */
+static void blk_mq_add_hw_queues_cpuhp(struct request_queue *q)
+{
+	struct blk_mq_hw_ctx *hctx;
+	unsigned long i;
+
+	mutex_lock(&blk_mq_cpuhp_lock);
+	queue_for_each_hw_ctx(q, hctx, i)
+		__blk_mq_add_cpuhp(hctx);
+	mutex_unlock(&blk_mq_cpuhp_lock);
 }
 
 /*
@@ -3797,8 +3876,6 @@ static void blk_mq_exit_hctx(struct request_queue *q,
 	if (set->ops->exit_hctx)
 		set->ops->exit_hctx(hctx, hctx_idx);
 
-	blk_mq_remove_cpuhp(hctx);
-
 	xa_erase(&q->hctx_table, hctx_idx);
 
 	spin_lock(&q->unused_hctx_lock);
@@ -3815,6 +3892,7 @@ static void blk_mq_exit_hw_queues(struct request_queue *q,
 	queue_for_each_hw_ctx(q, hctx, i) {
 		if (i == nr_queue)
 			break;
+		blk_mq_remove_cpuhp(hctx);
 		blk_mq_exit_hctx(q, set, hctx, i);
 	}
 }
@@ -3878,6 +3956,8 @@ blk_mq_alloc_hctx(struct request_queue *q, struct blk_mq_tag_set *set,
 	INIT_DELAYED_WORK(&hctx->run_work, blk_mq_run_work_fn);
 	spin_lock_init(&hctx->lock);
 	INIT_LIST_HEAD(&hctx->dispatch);
+	INIT_HLIST_NODE(&hctx->cpuhp_dead);
+	INIT_HLIST_NODE(&hctx->cpuhp_online);
 	hctx->queue = q;
 	hctx->flags = set->flags & ~BLK_MQ_F_TAG_QUEUE_SHARED;
 
@@ -4416,6 +4496,12 @@ static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set,
 	xa_for_each_start(&q->hctx_table, j, hctx, j)
 		blk_mq_exit_hctx(q, set, hctx, j);
 	mutex_unlock(&q->sysfs_lock);
+
+	/* unregister cpuhp callbacks for exited hctxs */
+	blk_mq_remove_hw_queues_cpuhp(q);
+
+	/* register cpuhp for new initialized hctxs */
+	blk_mq_add_hw_queues_cpuhp(q);
 }
 
 int blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
Signature · 1 line
2.39.5
author maintainer
#162 lore raw

PATCH 162/172 block: Fix potential deadlock while freezing queue and acquiring sysfs_lock

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Nilay Shroff <[email protected]>

[ Upstream commit be26ba96421ab0a8fa2055ccf7db7832a13c44d2 ]

For storing a value to a queue attribute, the queue_attr_store function first freezes the queue (->q_usage_counter(io)) and then acquire ->sysfs_lock. This seems not correct as the usual ordering should be to acquire ->sysfs_lock before freezing the queue. This incorrect ordering causes the following lockdep splat which we are able to reproduce always simply by accessing /sys/kernel/debug file using ls command:

[   57.597146] WARNING: possible circular locking dependency detected
[   57.597154] 6.12.0-10553-gb86545e02e8c #20 Tainted: G        W
[   57.597162] ------------------------------------------------------
[   57.597168] ls/4605 is trying to acquire lock:
[   57.597176] c00000003eb56710 (&mm->mmap_lock){++++}-{4:4}, at: __might_fault+0x58/0xc0
[   57.597200]
               but task is already holding lock:
[   57.597207] c0000018e27c6810 (&sb->s_type->i_mutex_key#3){++++}-{4:4}, at: iterate_dir+0x94/0x1d4
[   57.597226]
               which lock already depends on the new lock.
[   57.597233]
               the existing dependency chain (in reverse order) is:
[   57.597241]
               -> #5 (&sb->s_type->i_mutex_key#3){++++}-{4:4}:
[   57.597255]        down_write+0x6c/0x18c
[   57.597264]        start_creating+0xb4/0x24c
[   57.597274]        debugfs_create_dir+0x2c/0x1e8
[   57.597283]        blk_register_queue+0xec/0x294
[   57.597292]        add_disk_fwnode+0x2e4/0x548
[   57.597302]        brd_alloc+0x2c8/0x338
[   57.597309]        brd_init+0x100/0x178
[   57.597317]        do_one_initcall+0x88/0x3e4
[   57.597326]        kernel_init_freeable+0x3cc/0x6e0
[   57.597334]        kernel_init+0x34/0x1cc
[   57.597342]        ret_from_kernel_user_thread+0x14/0x1c
[   57.597350]
               -> #4 (&q->debugfs_mutex){+.+.}-{4:4}:
[   57.597362]        __mutex_lock+0xfc/0x12a0
[   57.597370]        blk_register_queue+0xd4/0x294
[   57.597379]        add_disk_fwnode+0x2e4/0x548
[   57.597388]        brd_alloc+0x2c8/0x338
[   57.597395]        brd_init+0x100/0x178
[   57.597402]        do_one_initcall+0x88/0x3e4
[   57.597410]        kernel_init_freeable+0x3cc/0x6e0
[   57.597418]        kernel_init+0x34/0x1cc
[   57.597426]        ret_from_kernel_user_thread+0x14/0x1c
[   57.597434]
               -> #3 (&q->sysfs_lock){+.+.}-{4:4}:
[   57.597446]        __mutex_lock+0xfc/0x12a0
[   57.597454]        queue_attr_store+0x9c/0x110
[   57.597462]        sysfs_kf_write+0x70/0xb0
[   57.597471]        kernfs_fop_write_iter+0x1b0/0x2ac
[   57.597480]        vfs_write+0x3dc/0x6e8
[   57.597488]        ksys_write+0x84/0x140
[   57.597495]        system_call_exception+0x130/0x360
[   57.597504]        system_call_common+0x160/0x2c4
[   57.597516]
               -> #2 (&q->q_usage_counter(io)#21){++++}-{0:0}:
[   57.597530]        __submit_bio+0x5ec/0x828
[   57.597538]        submit_bio_noacct_nocheck+0x1e4/0x4f0
[   57.597547]        iomap_readahead+0x2a0/0x448
[   57.597556]        xfs_vm_readahead+0x28/0x3c
[   57.597564]        read_pages+0x88/0x41c
[   57.597571]        page_cache_ra_unbounded+0x1ac/0x2d8
[   57.597580]        filemap_get_pages+0x188/0x984
[   57.597588]        filemap_read+0x13c/0x4bc
[   57.597596]        xfs_file_buffered_read+0x88/0x17c
[   57.597605]        xfs_file_read_iter+0xac/0x158
[   57.597614]        vfs_read+0x2d4/0x3b4
[   57.597622]        ksys_read+0x84/0x144
[   57.597629]        system_call_exception+0x130/0x360
[   57.597637]        system_call_common+0x160/0x2c4
[   57.597647]
               -> #1 (mapping.invalidate_lock#2){++++}-{4:4}:
[   57.597661]        down_read+0x6c/0x220
[   57.597669]        filemap_fault+0x870/0x100c
[   57.597677]        xfs_filemap_fault+0xc4/0x18c
[   57.597684]        __do_fault+0x64/0x164
[   57.597693]        __handle_mm_fault+0x1274/0x1dac
[   57.597702]        handle_mm_fault+0x248/0x484
[   57.597711]        ___do_page_fault+0x428/0xc0c
[   57.597719]        hash__do_page_fault+0x30/0x68
[   57.597727]        do_hash_fault+0x90/0x35c
[   57.597736]        data_access_common_virt+0x210/0x220
[   57.597745]        _copy_from_user+0xf8/0x19c
[   57.597754]        sel_write_load+0x178/0xd54
[   57.597762]        vfs_write+0x108/0x6e8
[   57.597769]        ksys_write+0x84/0x140
[   57.597777]        system_call_exception+0x130/0x360
[   57.597785]        system_call_common+0x160/0x2c4
[   57.597794]
               -> #0 (&mm->mmap_lock){++++}-{4:4}:
[   57.597806]        __lock_acquire+0x17cc/0x2330
[   57.597814]        lock_acquire+0x138/0x400
[   57.597822]        __might_fault+0x7c/0xc0
[   57.597830]        filldir64+0xe8/0x390
[   57.597839]        dcache_readdir+0x80/0x2d4
[   57.597846]        iterate_dir+0xd8/0x1d4
[   57.597855]        sys_getdents64+0x88/0x2d4
[   57.597864]        system_call_exception+0x130/0x360
[   57.597872]        system_call_common+0x160/0x2c4
[   57.597881]
               other info that might help us debug this:
[   57.597888] Chain exists of:
                 &mm->mmap_lock --> &q->debugfs_mutex --> &sb->s_type->i_mutex_key#3
[   57.597905]  Possible unsafe locking scenario:
[   57.597911]        CPU0                    CPU1
[   57.597917]        ----                    ----
[   57.597922]   rlock(&sb->s_type->i_mutex_key#3);
[   57.597932]                                lock(&q->debugfs_mutex);
[   57.597940]                                lock(&sb->s_type->i_mutex_key#3);
[   57.597950]   rlock(&mm->mmap_lock);
[   57.597958]
                *** DEADLOCK ***
[   57.597965] 2 locks held by ls/4605:
[   57.597971]  #0: c0000000137c12f8 (&f->f_pos_lock){+.+.}-{4:4}, at: fdget_pos+0xcc/0x154
[   57.597989]  #1: c0000018e27c6810 (&sb->s_type->i_mutex_key#3){++++}-{4:4}, at: iterate_dir+0x94/0x1d4

Prevent the above lockdep warning by acquiring ->sysfs_lock before freezing the queue while storing a queue attribute in queue_attr_store function. Later, we also found[1] another function __blk_mq_update_nr_ hw_queues where we first freeze queue and then acquire the ->sysfs_lock. So we've also updated lock ordering in __blk_mq_update_nr_hw_queues function and ensured that in all code paths we follow the correct lock ordering i.e. acquire ->sysfs_lock before freezing the queue.

[1] https://lore.kernel.org/all/CAFj5m9Ke8+EHKQBs_Nk6hqd=LGXtk4mUxZUN5==ZcCjnZSBwHw@mail.gmail.com/

---
 block/blk-mq-sysfs.c | 16 ++++++----------
 block/blk-mq.c       | 29 ++++++++++++++++++-----------
 block/blk-sysfs.c    |  4 ++--
 3 files changed, 26 insertions(+), 23 deletions(-)
block/blk-mq-sysfs.c +6 -10
index 156e9bb07abf..cd5ea6eaa76b 100644
@@ -275,15 +275,13 @@ void blk_mq_sysfs_unregister_hctxs(struct request_queue *q)
 	struct blk_mq_hw_ctx *hctx;
 	unsigned long i;
 
-	mutex_lock(&q->sysfs_dir_lock);
+	lockdep_assert_held(&q->sysfs_dir_lock);
+
 	if (!q->mq_sysfs_init_done)
-		goto unlock;
+		return;
 
 	queue_for_each_hw_ctx(q, hctx, i)
 		blk_mq_unregister_hctx(hctx);
-
-unlock:
-	mutex_unlock(&q->sysfs_dir_lock);
 }
 
 int blk_mq_sysfs_register_hctxs(struct request_queue *q)
@@ -292,9 +290,10 @@ int blk_mq_sysfs_register_hctxs(struct request_queue *q)
 	unsigned long i;
 	int ret = 0;
 
-	mutex_lock(&q->sysfs_dir_lock);
+	lockdep_assert_held(&q->sysfs_dir_lock);
+
 	if (!q->mq_sysfs_init_done)
-		goto unlock;
+		return ret;
 
 	queue_for_each_hw_ctx(q, hctx, i) {
 		ret = blk_mq_register_hctx(hctx);
@@ -302,8 +301,5 @@ int blk_mq_sysfs_register_hctxs(struct request_queue *q)
 			break;
 	}
 
-unlock:
-	mutex_unlock(&q->sysfs_dir_lock);
-
 	return ret;
 }
block/blk-mq.c +18 -11
index 1030875a3e95..cc1b32023838 100644
@@ -4462,7 +4462,8 @@ static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set,
 	unsigned long i, j;
 
 	/* protect against switching io scheduler  */
-	mutex_lock(&q->sysfs_lock);
+	lockdep_assert_held(&q->sysfs_lock);
+
 	for (i = 0; i < set->nr_hw_queues; i++) {
 		int old_node;
 		int node = blk_mq_get_hctx_node(set, i);
@@ -4495,7 +4496,6 @@ static void blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set,
 
 	xa_for_each_start(&q->hctx_table, j, hctx, j)
 		blk_mq_exit_hctx(q, set, hctx, j);
-	mutex_unlock(&q->sysfs_lock);
 
 	/* unregister cpuhp callbacks for exited hctxs */
 	blk_mq_remove_hw_queues_cpuhp(q);
@@ -4527,10 +4527,14 @@ int blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
 
 	xa_init(&q->hctx_table);
 
+	mutex_lock(&q->sysfs_lock);
+
 	blk_mq_realloc_hw_ctxs(set, q);
 	if (!q->nr_hw_queues)
 		goto err_hctxs;
 
+	mutex_unlock(&q->sysfs_lock);
+
 	INIT_WORK(&q->timeout_work, blk_mq_timeout_work);
 	blk_queue_rq_timeout(q, set->timeout ? set->timeout : 30 * HZ);
 
@@ -4549,6 +4553,7 @@ int blk_mq_init_allocated_queue(struct blk_mq_tag_set *set,
 	return 0;
 
 err_hctxs:
+	mutex_unlock(&q->sysfs_lock);
 	blk_mq_release(q);
 err_exit:
 	q->mq_ops = NULL;
@@ -4929,12 +4934,12 @@ static bool blk_mq_elv_switch_none(struct list_head *head,
 		return false;
 
 	/* q->elevator needs protection from ->sysfs_lock */
-	mutex_lock(&q->sysfs_lock);
+	lockdep_assert_held(&q->sysfs_lock);
 
 	/* the check has to be done with holding sysfs_lock */
 	if (!q->elevator) {
 		kfree(qe);
-		goto unlock;
+		goto out;
 	}
 
 	INIT_LIST_HEAD(&qe->node);
@@ -4944,9 +4949,7 @@ static bool blk_mq_elv_switch_none(struct list_head *head,
 	__elevator_get(qe->type);
 	list_add(&qe->node, head);
 	elevator_disable(q);
-unlock:
-	mutex_unlock(&q->sysfs_lock);
-
+out:
 	return true;
 }
 
@@ -4975,11 +4978,9 @@ static void blk_mq_elv_switch_back(struct list_head *head,
 	list_del(&qe->node);
 	kfree(qe);
 
-	mutex_lock(&q->sysfs_lock);
 	elevator_switch(q, t);
 	/* drop the reference acquired in blk_mq_elv_switch_none */
 	elevator_put(t);
-	mutex_unlock(&q->sysfs_lock);
 }
 
 static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,
@@ -4999,8 +5000,11 @@ static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,
 	if (set->nr_maps == 1 && nr_hw_queues == set->nr_hw_queues)
 		return;
 
-	list_for_each_entry(q, &set->tag_list, tag_set_list)
+	list_for_each_entry(q, &set->tag_list, tag_set_list) {
+		mutex_lock(&q->sysfs_dir_lock);
+		mutex_lock(&q->sysfs_lock);
 		blk_mq_freeze_queue(q);
+	}
 	/*
 	 * Switch IO scheduler to 'none', cleaning up the data associated
 	 * with the previous scheduler. We will switch back once we are done
@@ -5056,8 +5060,11 @@ static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set,
 	list_for_each_entry(q, &set->tag_list, tag_set_list)
 		blk_mq_elv_switch_back(&head, q);
 
-	list_for_each_entry(q, &set->tag_list, tag_set_list)
+	list_for_each_entry(q, &set->tag_list, tag_set_list) {
 		blk_mq_unfreeze_queue(q);
+		mutex_unlock(&q->sysfs_lock);
+		mutex_unlock(&q->sysfs_dir_lock);
+	}
 
 	/* Free the excess tags when nr_hw_queues shrink. */
 	for (i = set->nr_hw_queues; i < prev_nr_hw_queues; i++)
block/blk-sysfs.c +2 -2
index 207577145c54..42c2cb97d778 100644
@@ -690,11 +690,11 @@ queue_attr_store(struct kobject *kobj, struct attribute *attr,
 			return res;
 	}
 
-	blk_mq_freeze_queue(q);
 	mutex_lock(&q->sysfs_lock);
+	blk_mq_freeze_queue(q);
 	res = entry->store(disk, page, length);
-	mutex_unlock(&q->sysfs_lock);
 	blk_mq_unfreeze_queue(q);
+	mutex_unlock(&q->sysfs_lock);
 	return res;
 }
 
Signature · 1 line
2.39.5
author maintainer
#163 lore raw

PATCH 163/172 rust: kbuild: set `bindgen`s Rust target version

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Miguel Ojeda <[email protected]>

commit 7a5f93ea5862da91488975acaa0c7abd508f192b upstream.

Each bindgen release may upgrade the list of Rust targets. For instance, currently, in their master branch [1], the latest ones are:

    Nightly => {
        vectorcall_abi: #124485,
        ptr_metadata: #81513,
        layout_for_ptr: #69835,
    },
    Stable_1_77(77) => { offset_of: #106655 },
    Stable_1_73(73) => { thiscall_abi: #42202 },
    Stable_1_71(71) => { c_unwind_abi: #106075 },
    Stable_1_68(68) => { abi_efiapi: #105795 },

By default, the highest stable release in their list is used, and users are expected to set one if they need to support older Rust versions (e.g. see [2]).

Thus, over time, new Rust features are used by default, and at some point, it is likely that bindgen will emit Rust code that requires a Rust version higher than our minimum (or perhaps enabling an unstable feature). Currently, there is no problem because the maximum they have, as seen above, is Rust 1.77.0, and our current minimum is Rust 1.78.0.

Therefore, set a Rust target explicitly now to prevent going forward in time too much and thus getting potential build failures at some point.

Since we also support a minimum bindgen version, and since bindgen does not support passing unknown Rust target versions, we need to use the list of our minimum bindgen version, rather than the latest. So, since bindgen 0.65.1 had this list [3], we need to use Rust 1.68.0:

    /// Rust stable 1.64
    ///  * `core_ffi_c` ([Tracking issue](https://github.com/rust-lang/rust/issues/94501))
    => Stable_1_64 => 1.64;
    /// Rust stable 1.68
    ///  * `abi_efiapi` calling convention ([Tracking issue](https://github.com/rust-lang/rust/issues/65815))
    => Stable_1_68 => 1.68;
    /// Nightly rust
    ///  * `thiscall` calling convention ([Tracking issue](https://github.com/rust-lang/rust/issues/42202))
    ///  * `vectorcall` calling convention (no tracking issue)
    ///  * `c_unwind` calling convention ([Tracking issue](https://github.com/rust-lang/rust/issues/74990))
    => Nightly => nightly;

    ...

    /// Latest stable release of Rust
    pub const LATEST_STABLE_RUST: RustTarget = RustTarget::Stable_1_68;

Thus add the --rust-target 1.68 parameter. Add a comment as well explaining this.

An alternative would be to use the currently running (i.e. actual) rustc and bindgen versions to pick a "better" Rust target version. However, that would introduce more moving parts depending on the user setup and is also more complex to implement.

Starting with bindgen 0.71.0 [4], we will be able to set any future Rust version instead, i.e. we will be able to set here our minimum supported Rust version. Christian implemented it [5] after seeing this patch. Thanks!

---
 rust/Makefile |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
rust/Makefile +14 -1
@@ -267,9 +267,22 @@ endif
 
 bindgen_c_flags_final = $(bindgen_c_flags_lto) -D__BINDGEN__
 
+# Each `bindgen` release may upgrade the list of Rust target versions. By
+# default, the highest stable release in their list is used. Thus we need to set
+# a `--rust-target` to avoid future `bindgen` releases emitting code that
+# `rustc` may not understand. On top of that, `bindgen` does not support passing
+# an unknown Rust target version.
+#
+# Therefore, the Rust target for `bindgen` can be only as high as the minimum
+# Rust version the kernel supports and only as high as the greatest stable Rust
+# target supported by the minimum `bindgen` version the kernel supports (that
+# is, if we do not test the actual `rustc`/`bindgen` versions running).
+#
+# Starting with `bindgen` 0.71.0, we will be able to set any future Rust version
+# instead, i.e. we will be able to set here our minimum supported Rust version.
 quiet_cmd_bindgen = BINDGEN $@
       cmd_bindgen = \
-	$(BINDGEN) $< $(bindgen_target_flags) \
+	$(BINDGEN) $< $(bindgen_target_flags) --rust-target 1.68 \
 		--use-core --with-derive-default --ctypes-prefix core::ffi --no-layout-tests \
 		--no-debug '.*' --enable-function-attribute-detection \
 		-o $@ -- $(bindgen_c_flags_final) -DMODULE \
author maintainer
#164 lore raw

PATCH 164/172 KVM: arm64: Disable MPAM visibility by default and ignore VMM writes

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: James Morse <[email protected]>

commit 6685f5d572c22e1003e7c0d089afe1c64340ab1f upstream.

commit 011e5f5bf529f ("arm64/cpufeature: Add remaining feature bits in ID_AA64PFR0 register") exposed the MPAM field of AA64PFR0_EL1 to guests, but didn't add trap handling. A previous patch supplied the missing trap handling.

Existing VMs that have the MPAM field of ID_AA64PFR0_EL1 set need to be migratable, but there is little point enabling the MPAM CPU interface on new VMs until there is something a guest can do with it.

Clear the MPAM field from the guest's ID_AA64PFR0_EL1 and on hardware that supports MPAM, politely ignore the VMMs attempts to set this bit.

Guests exposed to this bug have the sanitised value of the MPAM field, so only the correct value needs to be ignored. This means the field can continue to be used to block migration to incompatible hardware (between MPAM=1 and MPAM=5), and the VMM can't rely on the field being ignored.

---
 arch/arm64/kvm/sys_regs.c |   55 +++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 52 insertions(+), 3 deletions(-)
arch/arm64/kvm/sys_regs.c +52 -3
@@ -1535,6 +1535,7 @@ static u64 __kvm_read_sanitised_id_reg(c
 		val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_MTEX);
 		val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_DF2);
 		val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_PFAR);
+		val &= ~ARM64_FEATURE_MASK(ID_AA64PFR1_EL1_MPAM_frac);
 		break;
 	case SYS_ID_AA64PFR2_EL1:
 		/* We only expose FPMR */
@@ -1724,6 +1725,13 @@ static u64 read_sanitised_id_aa64pfr0_el
 
 	val &= ~ID_AA64PFR0_EL1_AMU_MASK;
 
+	/*
+	 * MPAM is disabled by default as KVM also needs a set of PARTID to
+	 * program the MPAMVPMx_EL2 PARTID remapping registers with. But some
+	 * older kernels let the guest see the ID bit.
+	 */
+	val &= ~ID_AA64PFR0_EL1_MPAM_MASK;
+
 	return val;
 }
 
@@ -1834,6 +1842,42 @@ static int set_id_dfr0_el1(struct kvm_vc
 	return set_id_reg(vcpu, rd, val);
 }
 
+static int set_id_aa64pfr0_el1(struct kvm_vcpu *vcpu,
+			       const struct sys_reg_desc *rd, u64 user_val)
+{
+	u64 hw_val = read_sanitised_ftr_reg(SYS_ID_AA64PFR0_EL1);
+	u64 mpam_mask = ID_AA64PFR0_EL1_MPAM_MASK;
+
+	/*
+	 * Commit 011e5f5bf529f ("arm64/cpufeature: Add remaining feature bits
+	 * in ID_AA64PFR0 register") exposed the MPAM field of AA64PFR0_EL1 to
+	 * guests, but didn't add trap handling. KVM doesn't support MPAM and
+	 * always returns an UNDEF for these registers. The guest must see 0
+	 * for this field.
+	 *
+	 * But KVM must also accept values from user-space that were provided
+	 * by KVM. On CPUs that support MPAM, permit user-space to write
+	 * the sanitizied value to ID_AA64PFR0_EL1.MPAM, but ignore this field.
+	 */
+	if ((hw_val & mpam_mask) == (user_val & mpam_mask))
+		user_val &= ~ID_AA64PFR0_EL1_MPAM_MASK;
+
+	return set_id_reg(vcpu, rd, user_val);
+}
+
+static int set_id_aa64pfr1_el1(struct kvm_vcpu *vcpu,
+			       const struct sys_reg_desc *rd, u64 user_val)
+{
+	u64 hw_val = read_sanitised_ftr_reg(SYS_ID_AA64PFR1_EL1);
+	u64 mpam_mask = ID_AA64PFR1_EL1_MPAM_frac_MASK;
+
+	/* See set_id_aa64pfr0_el1 for comment about MPAM */
+	if ((hw_val & mpam_mask) == (user_val & mpam_mask))
+		user_val &= ~ID_AA64PFR1_EL1_MPAM_frac_MASK;
+
+	return set_id_reg(vcpu, rd, user_val);
+}
+
 /*
  * cpufeature ID register user accessors
  *
@@ -2377,7 +2421,7 @@ static const struct sys_reg_desc sys_reg
 	{ SYS_DESC(SYS_ID_AA64PFR0_EL1),
 	  .access = access_id_reg,
 	  .get_user = get_id_reg,
-	  .set_user = set_id_reg,
+	  .set_user = set_id_aa64pfr0_el1,
 	  .reset = read_sanitised_id_aa64pfr0_el1,
 	  .val = ~(ID_AA64PFR0_EL1_AMU |
 		   ID_AA64PFR0_EL1_MPAM |
@@ -2385,7 +2429,12 @@ static const struct sys_reg_desc sys_reg
 		   ID_AA64PFR0_EL1_RAS |
 		   ID_AA64PFR0_EL1_AdvSIMD |
 		   ID_AA64PFR0_EL1_FP), },
-	ID_WRITABLE(ID_AA64PFR1_EL1, ~(ID_AA64PFR1_EL1_PFAR |
+	{ SYS_DESC(SYS_ID_AA64PFR1_EL1),
+	  .access	= access_id_reg,
+	  .get_user	= get_id_reg,
+	  .set_user	= set_id_aa64pfr1_el1,
+	  .reset	= kvm_read_sanitised_id_reg,
+	  .val		=	     ~(ID_AA64PFR1_EL1_PFAR |
 				       ID_AA64PFR1_EL1_DF2 |
 				       ID_AA64PFR1_EL1_MTEX |
 				       ID_AA64PFR1_EL1_THE |
@@ -2397,7 +2446,7 @@ static const struct sys_reg_desc sys_reg
 				       ID_AA64PFR1_EL1_RES0 |
 				       ID_AA64PFR1_EL1_MPAM_frac |
 				       ID_AA64PFR1_EL1_RAS_frac |
-				       ID_AA64PFR1_EL1_MTE)),
+				       ID_AA64PFR1_EL1_MTE), },
 	ID_WRITABLE(ID_AA64PFR2_EL1, ID_AA64PFR2_EL1_FPMR),
 	ID_UNALLOCATED(4,3),
 	ID_WRITABLE(ID_AA64ZFR0_EL1, ~ID_AA64ZFR0_EL1_RES0),
author maintainer
#165 lore raw

PATCH 165/172 xen/netfront: fix crash when removing device

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit f9244fb55f37356f75c739c57323d9422d7aa0f8 upstream.

When removing a netfront device directly after a suspend/resume cycle it might happen that the queues have not been setup again, causing a crash during the attempt to stop the queues another time.

Fix that by checking the queues are existing before trying to stop them.

This is XSA-465 / CVE-2024-53240.

Fixes d50b7914fae0 ("xen-netfront: Fix NULL sring after live migration")
---
 drivers/net/xen-netfront.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/net/xen-netfront.c +4 -1
@@ -867,7 +867,7 @@ static netdev_tx_t xennet_start_xmit(str
 static int xennet_close(struct net_device *dev)
 {
 	struct netfront_info *np = netdev_priv(dev);
-	unsigned int num_queues = dev->real_num_tx_queues;
+	unsigned int num_queues = np->queues ? dev->real_num_tx_queues : 0;
 	unsigned int i;
 	struct netfront_queue *queue;
 	netif_tx_stop_all_queues(np->netdev);
@@ -882,6 +882,9 @@ static void xennet_destroy_queues(struct
 {
 	unsigned int i;
 
+	if (!info->queues)
+		return;
+
 	for (i = 0; i < info->netdev->real_num_tx_queues; i++) {
 		struct netfront_queue *queue = &info->queues[i];
 
author maintainer
#166 lore raw

PATCH 166/172 x86: make get_cpu_vendor() accessible from Xen code

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit efbcd61d9bebb771c836a3b8bfced8165633db7c upstream.

In order to be able to differentiate between AMD and Intel based systems for very early hypercalls without having to rely on the Xen hypercall page, make get_cpu_vendor() non-static.

Refactor early_cpu_init() for the same reason by splitting out the loop initializing cpu_devs() into an externally callable function.

This is part of XSA-466 / CVE-2024-53241.

---
 arch/x86/include/asm/processor.h |    2 ++
 arch/x86/kernel/cpu/common.c     |   36 +++++++++++++++++++++---------------
 2 files changed, 23 insertions(+), 15 deletions(-)
arch/x86/include/asm/processor.h +2 -0
@@ -212,6 +212,8 @@ static inline unsigned long long l1tf_pf
 	return BIT_ULL(boot_cpu_data.x86_cache_bits - 1 - PAGE_SHIFT);
 }
 
+void init_cpu_devs(void);
+void get_cpu_vendor(struct cpuinfo_x86 *c);
 extern void early_cpu_init(void);
 extern void identify_secondary_cpu(struct cpuinfo_x86 *);
 extern void print_cpu_info(struct cpuinfo_x86 *);
arch/x86/kernel/cpu/common.c +21 -15
@@ -868,7 +868,7 @@ static void cpu_detect_tlb(struct cpuinf
 		tlb_lld_4m[ENTRIES], tlb_lld_1g[ENTRIES]);
 }
 
-static void get_cpu_vendor(struct cpuinfo_x86 *c)
+void get_cpu_vendor(struct cpuinfo_x86 *c)
 {
 	char *v = c->x86_vendor_id;
 	int i;
@@ -1652,15 +1652,11 @@ static void __init early_identify_cpu(st
 	detect_nopl();
 }
 
-void __init early_cpu_init(void)
+void __init init_cpu_devs(void)
 {
 	const struct cpu_dev *const *cdev;
 	int count = 0;
 
-#ifdef CONFIG_PROCESSOR_SELECT
-	pr_info("KERNEL supported cpus:\n");
-#endif
-
 	for (cdev = __x86_cpu_dev_start; cdev < __x86_cpu_dev_end; cdev++) {
 		const struct cpu_dev *cpudev = *cdev;
 
@@ -1668,20 +1664,30 @@ void __init early_cpu_init(void)
 			break;
 		cpu_devs[count] = cpudev;
 		count++;
+	}
+}
 
+void __init early_cpu_init(void)
+{
 #ifdef CONFIG_PROCESSOR_SELECT
-		{
-			unsigned int j;
+	unsigned int i, j;
 
-			for (j = 0; j < 2; j++) {
-				if (!cpudev->c_ident[j])
-					continue;
-				pr_info("  %s %s\n", cpudev->c_vendor,
-					cpudev->c_ident[j]);
-			}
-		}
+	pr_info("KERNEL supported cpus:\n");
 #endif
+
+	init_cpu_devs();
+
+#ifdef CONFIG_PROCESSOR_SELECT
+	for (i = 0; i < X86_VENDOR_NUM && cpu_devs[i]; i++) {
+		for (j = 0; j < 2; j++) {
+			if (!cpu_devs[i]->c_ident[j])
+				continue;
+			pr_info("  %s %s\n", cpu_devs[i]->c_vendor,
+				cpu_devs[i]->c_ident[j]);
+		}
 	}
+#endif
+
 	early_identify_cpu(&boot_cpu_data);
 }
 
author maintainer
#167 lore raw

PATCH 167/172 objtool/x86: allow syscall instruction

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit dda014ba59331dee4f3b773a020e109932f4bd24 upstream.

The syscall instruction is used in Xen PV mode for doing hypercalls. Allow syscall to be used in the kernel in case it is tagged with an unwind hint for objtool.

This is part of XSA-466 / CVE-2024-53241.

---
 tools/objtool/check.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
tools/objtool/check.c +6 -3
@@ -3820,9 +3820,12 @@ static int validate_branch(struct objtoo
 			break;
 
 		case INSN_CONTEXT_SWITCH:
-			if (func && (!next_insn || !next_insn->hint)) {
-				WARN_INSN(insn, "unsupported instruction in callable function");
-				return 1;
+			if (func) {
+				if (!next_insn || !next_insn->hint) {
+					WARN_INSN(insn, "unsupported instruction in callable function");
+					return 1;
+				}
+				break;
 			}
 			return 0;
 
author maintainer
#168 lore raw

PATCH 168/172 x86/static-call: provide a way to do very early static-call updates

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit 0ef8047b737d7480a5d4c46d956e97c190f13050 upstream.

Add static_call_update_early() for updating static-call targets in very early boot.

This will be needed for support of Xen guest type specific hypercall functions.

This is part of XSA-466 / CVE-2024-53241.

---
 arch/x86/include/asm/static_call.h |   15 +++++++++++++++
 arch/x86/include/asm/sync_core.h   |    6 +++---
 arch/x86/kernel/static_call.c      |    9 +++++++++
 include/linux/compiler.h           |   37 ++++++++++++++++++++++++++-----------
 include/linux/static_call.h        |    1 +
 kernel/static_call_inline.c        |    2 +-
 6 files changed, 55 insertions(+), 15 deletions(-)
arch/x86/include/asm/static_call.h +15 -0
@@ -65,4 +65,19 @@
 
 extern bool __static_call_fixup(void *tramp, u8 op, void *dest);
 
+extern void __static_call_update_early(void *tramp, void *func);
+
+#define static_call_update_early(name, _func)				\
+({									\
+	typeof(&STATIC_CALL_TRAMP(name)) __F = (_func);			\
+	if (static_call_initialized) {					\
+		__static_call_update(&STATIC_CALL_KEY(name),		\
+				     STATIC_CALL_TRAMP_ADDR(name), __F);\
+	} else {							\
+		WRITE_ONCE(STATIC_CALL_KEY(name).func, _func);		\
+		__static_call_update_early(STATIC_CALL_TRAMP_ADDR(name),\
+					   __F);			\
+	}								\
+})
+
 #endif /* _ASM_STATIC_CALL_H */
arch/x86/include/asm/sync_core.h +3 -3
@@ -8,7 +8,7 @@
 #include <asm/special_insns.h>
 
 #ifdef CONFIG_X86_32
-static inline void iret_to_self(void)
+static __always_inline void iret_to_self(void)
 {
 	asm volatile (
 		"pushfl\n\t"
@@ -19,7 +19,7 @@ static inline void iret_to_self(void)
 		: ASM_CALL_CONSTRAINT : : "memory");
 }
 #else
-static inline void iret_to_self(void)
+static __always_inline void iret_to_self(void)
 {
 	unsigned int tmp;
 
@@ -55,7 +55,7 @@ static inline void iret_to_self(void)
  * Like all of Linux's memory ordering operations, this is a
  * compiler barrier as well.
  */
-static inline void sync_core(void)
+static __always_inline void sync_core(void)
 {
 	/*
 	 * The SERIALIZE instruction is the most straightforward way to
arch/x86/kernel/static_call.c +9 -0
@@ -172,6 +172,15 @@ void arch_static_call_transform(void *si
 }
 EXPORT_SYMBOL_GPL(arch_static_call_transform);
 
+noinstr void __static_call_update_early(void *tramp, void *func)
+{
+	BUG_ON(system_state != SYSTEM_BOOTING);
+	BUG_ON(!early_boot_irqs_disabled);
+	BUG_ON(static_call_initialized);
+	__text_gen_insn(tramp, JMP32_INSN_OPCODE, tramp, func, JMP32_INSN_SIZE);
+	sync_core();
+}
+
 #ifdef CONFIG_MITIGATION_RETHUNK
 /*
  * This is called by apply_returns() to fix up static call trampolines,
include/linux/compiler.h +26 -11
@@ -216,28 +216,43 @@ void ftrace_likely_update(struct ftrace_
 
 #endif /* __KERNEL__ */
 
+/**
+ * offset_to_ptr - convert a relative memory offset to an absolute pointer
+ * @off:	the address of the 32-bit offset value
+ */
+static inline void *offset_to_ptr(const int *off)
+{
+	return (void *)((unsigned long)off + *off);
+}
+
+#endif /* __ASSEMBLY__ */
+
+#ifdef CONFIG_64BIT
+#define ARCH_SEL(a,b) a
+#else
+#define ARCH_SEL(a,b) b
+#endif
+
 /*
  * Force the compiler to emit 'sym' as a symbol, so that we can reference
  * it from inline assembler. Necessary in case 'sym' could be inlined
  * otherwise, or eliminated entirely due to lack of references that are
  * visible to the compiler.
  */
-#define ___ADDRESSABLE(sym, __attrs) \
-	static void * __used __attrs \
+#define ___ADDRESSABLE(sym, __attrs)						\
+	static void * __used __attrs						\
 	__UNIQUE_ID(__PASTE(__addressable_,sym)) = (void *)(uintptr_t)&sym;
+
 #define __ADDRESSABLE(sym) \
 	___ADDRESSABLE(sym, __section(".discard.addressable"))
 
-/**
- * offset_to_ptr - convert a relative memory offset to an absolute pointer
- * @off:	the address of the 32-bit offset value
- */
-static inline void *offset_to_ptr(const int *off)
-{
-	return (void *)((unsigned long)off + *off);
-}
+#define __ADDRESSABLE_ASM(sym)						\
+	.pushsection .discard.addressable,"aw";				\
+	.align ARCH_SEL(8,4);						\
+	ARCH_SEL(.quad, .long) __stringify(sym);			\
+	.popsection;
 
-#endif /* __ASSEMBLY__ */
+#define __ADDRESSABLE_ASM_STR(sym) __stringify(__ADDRESSABLE_ASM(sym))
 
 /* &a[0] degrades to a pointer: a different type from an array */
 #define __must_be_array(a)	BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
include/linux/static_call.h +1 -0
@@ -138,6 +138,7 @@
 #ifdef CONFIG_HAVE_STATIC_CALL
 #include <asm/static_call.h>
 
+extern int static_call_initialized;
 /*
  * Either @site or @tramp can be NULL.
  */
kernel/static_call_inline.c +1 -1
@@ -15,7 +15,7 @@ extern struct static_call_site __start_s
 extern struct static_call_tramp_key __start_static_call_tramp_key[],
 				    __stop_static_call_tramp_key[];
 
-static int static_call_initialized;
+int static_call_initialized;
 
 /*
  * Must be called before early_initcall() to be effective.
#169 lore raw

Re: [PATCH 6.12 168/172] x86/static-call: provide a way to do very early static-call updates

Quoted 50 lines · Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit 0ef8047b737d7480a5d4c46d956e97c190f13050 upstream.

Add static_call_update_early() for updating static-call targets in very early boot.

This will be needed for support of Xen guest type specific hypercall functions.

This is part of XSA-466 / CVE-2024-53241.

---
  arch/x86/include/asm/static_call.h |   15 +++++++++++++++
  arch/x86/include/asm/sync_core.h   |    6 +++---
  arch/x86/kernel/static_call.c      |    9 +++++++++
  include/linux/compiler.h           |   37 ++++++++++++++++++++++++++-----------
  include/linux/static_call.h        |    1 +
  kernel/static_call_inline.c        |    2 +-
  6 files changed, 55 insertions(+), 15 deletions(-)
arch/x86/include/asm/static_call.h +14 -0
@@ -65,4 +65,19 @@
 
  extern bool __static_call_fixup(void *tramp, u8 op, void *dest);
 
+extern void __static_call_update_early(void *tramp, void *func);
+
+#define static_call_update_early(name, _func)				\
+({									\
+	typeof(&STATIC_CALL_TRAMP(name)) __F = (_func);			\
+	if (static_call_initialized) {					\
+		__static_call_update(&STATIC_CALL_KEY(name),		\
+				     STATIC_CALL_TRAMP_ADDR(name), __F);\
+	} else {							\
+		WRITE_ONCE(STATIC_CALL_KEY(name).func, _func);		\
+		__static_call_update_early(STATIC_CALL_TRAMP_ADDR(name),\
+					   __F);			\
+	}								\
+})

...

kernel/static_call_inline.c extern struct static_call_site __start_s · line 18

Quoted 8 lines
kernel/static_call_inline.c +1 -1
@@ -15,7 +15,7 @@ extern struct static_call_site __start_s
  extern struct static_call_tramp_key __start_static_call_tramp_key[],
  				    __stop_static_call_tramp_key[];
 
-static int static_call_initialized;
+int static_call_initialized;

This breaks the build on i386:

Quoted 5 lines

ld: arch/x86/xen/enlighten.o: in function `__xen_hypercall_setfunc':
enlighten.c:(.noinstr.text+0x2a): undefined reference to `static_call_initialized'
ld: enlighten.c:(.noinstr.text+0x62): undefined reference to `static_call_initialized'
ld: arch/x86/kernel/static_call.o: in function `__static_call_update_early':
static_call.c:(.noinstr.text+0x15): undefined reference to `static_call_initialized'

kernel/static_call_inline.c containing this static_call_initialized is not built there as:
HAVE_STATIC_CALL_INLINE=n
-> HAVE_OBJTOOL=n

    -> X86_64=n

This is broken in upstream too.

thanks,

Signature · 2 lines
js
suse labs
#170 lore raw

Re: [PATCH 6.12 168/172] x86/static-call: provide a way to do very early static-call updates

Quoted 65 lines · Jiri Slaby
Quoted 48 lines · Greg Kroah-Hartman

6.12-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit 0ef8047b737d7480a5d4c46d956e97c190f13050 upstream.

Add static_call_update_early() for updating static-call targets in very early boot.

This will be needed for support of Xen guest type specific hypercall functions.

This is part of XSA-466 / CVE-2024-53241.

---
  arch/x86/include/asm/static_call.h |   15 +++++++++++++++ arch/x86/include/asm/sync_core.h   |    6 +++--- arch/x86/kernel/static_call.c      |    9 +++++++++ include/linux/compiler.h           |   37 ++++++++++++++++++++++++++----------- include/linux/static_call.h        |    1 + kernel/static_call_inline.c        |    2 +-

  6 files changed, 55 insertions(+), 15 deletions(-)
arch/x86/include/asm/static_call.h +14 -0
@@ -65,4 +65,19 @@
   extern bool __static_call_fixup(void *tramp, u8 op, void *dest);
+extern void __static_call_update_early(void *tramp, void *func);
+
+#define static_call_update_early(name, _func)                \
+({                                    \
+    typeof(&STATIC_CALL_TRAMP(name)) __F = (_func);            \
+    if (static_call_initialized) {                    \
+        __static_call_update(&STATIC_CALL_KEY(name),        \
+                     STATIC_CALL_TRAMP_ADDR(name), __F);\
+    } else {                            \
+        WRITE_ONCE(STATIC_CALL_KEY(name).func, _func);        \
+        __static_call_update_early(STATIC_CALL_TRAMP_ADDR(name),\
+                       __F);            \
+    }                                \
+})

...

kernel/static_call_inline.c extern struct static_call_site __start_s · line 17

Quoted 7 lines
kernel/static_call_inline.c +1 -1
@@ -15,7 +15,7 @@ extern struct static_call_site __start_s
   extern struct static_call_tramp_key __start_static_call_tramp_key[],
                       __stop_static_call_tramp_key[];
-static int static_call_initialized;
+int static_call_initialized;

This breaks the build on i386:

Quoted 5 lines

ld: arch/x86/xen/enlighten.o: in function `__xen_hypercall_setfunc':
enlighten.c:(.noinstr.text+0x2a): undefined reference to `static_call_initialized'
ld: enlighten.c:(.noinstr.text+0x62): undefined reference to `static_call_initialized'
ld: arch/x86/kernel/static_call.o: in function `__static_call_update_early':
static_call.c:(.noinstr.text+0x15): undefined reference to `static_call_initialized'

Quoted 6 lines

kernel/static_call_inline.c containing this static_call_initialized is not built there as:
HAVE_STATIC_CALL_INLINE=n
 -> HAVE_OBJTOOL=n
    -> X86_64=n

This is broken in upstream too.

I've sent a fix already:

https://lore.kernel.org/lkml/[email protected]/T/#u

Juergen

author maintainer
#171 lore raw

Re: [PATCH 6.12 168/172] x86/static-call: provide a way to do very early static-call updates

Quoted 75 lines · Jürgen Groß
Quoted 74 lines · Jiri Slaby
Quoted 48 lines · Greg Kroah-Hartman

6.12-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit 0ef8047b737d7480a5d4c46d956e97c190f13050 upstream.

Add static_call_update_early() for updating static-call targets in very early boot.

This will be needed for support of Xen guest type specific hypercall functions.

This is part of XSA-466 / CVE-2024-53241.

---
  arch/x86/include/asm/static_call.h |   15 +++++++++++++++ arch/x86/include/asm/sync_core.h   |    6 +++--- arch/x86/kernel/static_call.c      |    9 +++++++++ include/linux/compiler.h           |   37 ++++++++++++++++++++++++++----------- include/linux/static_call.h        |    1 + kernel/static_call_inline.c        |    2 +-

  6 files changed, 55 insertions(+), 15 deletions(-)
arch/x86/include/asm/static_call.h +14 -0
@@ -65,4 +65,19 @@
   extern bool __static_call_fixup(void *tramp, u8 op, void *dest);
+extern void __static_call_update_early(void *tramp, void *func);
+
+#define static_call_update_early(name, _func)                \
+({                                    \
+    typeof(&STATIC_CALL_TRAMP(name)) __F = (_func);            \
+    if (static_call_initialized) {                    \
+        __static_call_update(&STATIC_CALL_KEY(name),        \
+                     STATIC_CALL_TRAMP_ADDR(name), __F);\
+    } else {                            \
+        WRITE_ONCE(STATIC_CALL_KEY(name).func, _func);        \
+        __static_call_update_early(STATIC_CALL_TRAMP_ADDR(name),\
+                       __F);            \
+    }                                \
+})

...

kernel/static_call_inline.c extern struct static_call_site __start_s · line 17

Quoted 7 lines
kernel/static_call_inline.c +1 -1
@@ -15,7 +15,7 @@ extern struct static_call_site __start_s
   extern struct static_call_tramp_key __start_static_call_tramp_key[],
                       __stop_static_call_tramp_key[];
-static int static_call_initialized;
+int static_call_initialized;

This breaks the build on i386:

Quoted 8 lines

ld: arch/x86/xen/enlighten.o: in function `__xen_hypercall_setfunc':
enlighten.c:(.noinstr.text+0x2a): undefined reference to `static_call_initialized'
ld: enlighten.c:(.noinstr.text+0x62): undefined reference to `static_call_initialized'
ld: arch/x86/kernel/static_call.o: in function `__static_call_update_early':
static_call.c:(.noinstr.text+0x15): undefined reference to `static_call_initialized'

kernel/static_call_inline.c containing this static_call_initialized is not built there as:
HAVE_STATIC_CALL_INLINE=n
 -> HAVE_OBJTOOL=n
    -> X86_64=n

Quoted 5 lines
Quoted 1 line

This is broken in upstream too.

I've sent a fix already:

https://lore.kernel.org/lkml/[email protected]/T/#u

Thanks, I'll go queue that up (after fixing it up for the different branches...)

greg k-h

author maintainer
#172 lore raw

PATCH 169/172 x86/xen: dont do PV iret hypercall through hypercall page

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit a2796dff62d6c6bfc5fbebdf2bee0d5ac0438906 upstream.

Instead of jumping to the Xen hypercall page for doing the iret hypercall, directly code the required sequence in xen-asm.S.

This is done in preparation of no longer using hypercall page at all, as it has shown to cause problems with speculation mitigations.

This is part of XSA-466 / CVE-2024-53241.

---
 arch/x86/xen/xen-asm.S |   27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)
arch/x86/xen/xen-asm.S +18 -9
@@ -176,7 +176,6 @@ SYM_CODE_START(xen_early_idt_handler_arr
 SYM_CODE_END(xen_early_idt_handler_array)
 	__FINIT
 
-hypercall_iret = hypercall_page + __HYPERVISOR_iret * 32
 /*
  * Xen64 iret frame:
  *
@@ -186,17 +185,28 @@ hypercall_iret = hypercall_page + __HYPE
  *	cs
  *	rip		<-- standard iret frame
  *
- *	flags
+ *	flags		<-- xen_iret must push from here on
  *
- *	rcx		}
- *	r11		}<-- pushed by hypercall page
- * rsp->rax		}
+ *	rcx
+ *	r11
+ * rsp->rax
  */
+.macro xen_hypercall_iret
+	pushq $0	/* Flags */
+	push %rcx
+	push %r11
+	push %rax
+	mov  $__HYPERVISOR_iret, %eax
+	syscall		/* Do the IRET. */
+#ifdef CONFIG_MITIGATION_SLS
+	int3
+#endif
+.endm
+
 SYM_CODE_START(xen_iret)
 	UNWIND_HINT_UNDEFINED
 	ANNOTATE_NOENDBR
-	pushq $0
-	jmp hypercall_iret
+	xen_hypercall_iret
 SYM_CODE_END(xen_iret)
 
 /*
@@ -301,8 +311,7 @@ SYM_CODE_START(xen_entry_SYSENTER_compat
 	ENDBR
 	lea 16(%rsp), %rsp	/* strip %rcx, %r11 */
 	mov $-ENOSYS, %rax
-	pushq $0
-	jmp hypercall_iret
+	xen_hypercall_iret
 SYM_CODE_END(xen_entry_SYSENTER_compat)
 SYM_CODE_END(xen_entry_SYSCALL_compat)
 
author maintainer
#173 lore raw

PATCH 170/172 x86/xen: add central hypercall functions

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit b4845bb6383821a9516ce30af3a27dc873e37fd4 upstream.

Add generic hypercall functions usable for all normal (i.e. not iret) hypercalls. Depending on the guest type and the processor vendor different functions need to be used due to the to be used instruction for entering the hypervisor:

- PV guests need to use syscall
- HVM/PVH guests on Intel need to use vmcall
- HVM/PVH guests on AMD and Hygon need to use vmmcall

As PVH guests need to issue hypercalls very early during boot, there is a 4th hypercall function needed for HVM/PVH which can be used on Intel and AMD processors. It will check the vendor type and then set the Intel or AMD specific function to use via static_call().

This is part of XSA-466 / CVE-2024-53241.

---
 arch/x86/include/asm/xen/hypercall.h |    3 +
 arch/x86/xen/enlighten.c             |   64 ++++++++++++++++++++++++++
 arch/x86/xen/enlighten_hvm.c         |    4 +
 arch/x86/xen/enlighten_pv.c          |    4 +
 arch/x86/xen/xen-asm.S               |   23 +++++++++
 arch/x86/xen/xen-head.S              |   83 +++++++++++++++++++++++++++++++++++
 arch/x86/xen/xen-ops.h               |    9 +++
 7 files changed, 189 insertions(+), 1 deletion(-)
arch/x86/include/asm/xen/hypercall.h +3 -0
@@ -88,6 +88,9 @@ struct xen_dm_op_buf;
 
 extern struct { char _entry[32]; } hypercall_page[];
 
+void xen_hypercall_func(void);
+DECLARE_STATIC_CALL(xen_hypercall, xen_hypercall_func);
+
 #define __HYPERCALL		"call hypercall_page+%c[offset]"
 #define __HYPERCALL_ENTRY(x)						\
 	[offset] "i" (__HYPERVISOR_##x * sizeof(hypercall_page[0]))
arch/x86/xen/enlighten.c +64 -0

82 lines not on this page · raw message

arch/x86/xen/enlighten_hvm.c +4 -0
@@ -300,6 +300,10 @@ static uint32_t __init xen_platform_hvm(
 	if (xen_pv_domain())
 		return 0;
 
+	/* Set correct hypercall function. */
+	if (xen_domain)
+		xen_hypercall_setfunc();
+
 	if (xen_pvh_domain() && nopv) {
 		/* Guest booting via the Xen-PVH boot entry goes here */
 		pr_info("\"nopv\" parameter is ignored in PVH guest\n");
arch/x86/xen/enlighten_pv.c +3 -1
@@ -1341,6 +1341,9 @@ asmlinkage __visible void __init xen_sta
 
 	xen_domain_type = XEN_PV_DOMAIN;
 	xen_start_flags = xen_start_info->flags;
+	/* Interrupts are guaranteed to be off initially. */
+	early_boot_irqs_disabled = true;
+	static_call_update_early(xen_hypercall, xen_hypercall_pv);
 
 	xen_setup_features();
 
@@ -1431,7 +1434,6 @@ asmlinkage __visible void __init xen_sta
 	WARN_ON(xen_cpuhp_setup(xen_cpu_up_prepare_pv, xen_cpu_dead_pv));
 
 	local_irq_disable();
-	early_boot_irqs_disabled = true;
 
 	xen_raw_console_write("mapping kernel into physical memory\n");
 	xen_setup_kernel_pagetable((pgd_t *)xen_start_info->pt_base,
arch/x86/xen/xen-asm.S +23 -0
@@ -20,10 +20,33 @@
 
 #include <linux/init.h>
 #include <linux/linkage.h>
+#include <linux/objtool.h>
 #include <../entry/calling.h>
 
 .pushsection .noinstr.text, "ax"
 /*
+ * PV hypercall interface to the hypervisor.
+ *
+ * Called via inline asm(), so better preserve %rcx and %r11.
+ *
+ * Input:
+ *	%eax: hypercall number
+ *	%rdi, %rsi, %rdx, %r10, %r8: args 1..5 for the hypercall
+ * Output: %rax
+ */
+SYM_FUNC_START(xen_hypercall_pv)
+	ANNOTATE_NOENDBR
+	push %rcx
+	push %r11
+	UNWIND_HINT_SAVE
+	syscall
+	UNWIND_HINT_RESTORE
+	pop %r11
+	pop %rcx
+	RET
+SYM_FUNC_END(xen_hypercall_pv)
+
+/*
  * Disabling events is simply a matter of making the event mask
  * non-zero.
  */
arch/x86/xen/xen-head.S +83 -0

98 lines not on this page · raw message

arch/x86/xen/xen-ops.h +9 -0
@@ -326,4 +326,13 @@ static inline void xen_smp_intr_free_pv(
 static inline void xen_smp_count_cpus(void) { }
 #endif /* CONFIG_SMP */
 
+#ifdef CONFIG_XEN_PV
+void xen_hypercall_pv(void);
+#endif
+void xen_hypercall_hvm(void);
+void xen_hypercall_amd(void);
+void xen_hypercall_intel(void);
+void xen_hypercall_setfunc(void);
+void *__xen_hypercall_setfunc(void);
+
 #endif /* XEN_OPS_H */
author maintainer
#174 lore raw

PATCH 171/172 x86/xen: use new hypercall functions instead of hypercall page

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit b1c2cb86f4a7861480ad54bb9a58df3cbebf8e92 upstream.

Call the Xen hypervisor via the new xen_hypercall_func static-call instead of the hypercall page.

This is part of XSA-466 / CVE-2024-53241.

---
 arch/x86/include/asm/xen/hypercall.h |   33 ++++++++++++++++++++-------------
 1 file changed, 20 insertions(+), 13 deletions(-)
arch/x86/include/asm/xen/hypercall.h +20 -13
@@ -39,9 +39,11 @@
 #include <linux/string.h>
 #include <linux/types.h>
 #include <linux/pgtable.h>
+#include <linux/instrumentation.h>
 
 #include <trace/events/xen.h>
 
+#include <asm/alternative.h>
 #include <asm/page.h>
 #include <asm/smap.h>
 #include <asm/nospec-branch.h>
@@ -91,9 +93,17 @@ extern struct { char _entry[32]; } hyper
 void xen_hypercall_func(void);
 DECLARE_STATIC_CALL(xen_hypercall, xen_hypercall_func);
 
-#define __HYPERCALL		"call hypercall_page+%c[offset]"
-#define __HYPERCALL_ENTRY(x)						\
-	[offset] "i" (__HYPERVISOR_##x * sizeof(hypercall_page[0]))
+#ifdef MODULE
+#define __ADDRESSABLE_xen_hypercall
+#else
+#define __ADDRESSABLE_xen_hypercall __ADDRESSABLE_ASM_STR(__SCK__xen_hypercall)
+#endif
+
+#define __HYPERCALL					\
+	__ADDRESSABLE_xen_hypercall			\
+	"call __SCT__xen_hypercall"
+
+#define __HYPERCALL_ENTRY(x)	"a" (x)
 
 #ifdef CONFIG_X86_32
 #define __HYPERCALL_RETREG	"eax"
@@ -151,7 +161,7 @@ DECLARE_STATIC_CALL(xen_hypercall, xen_h
 	__HYPERCALL_0ARG();						\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_0PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER0);				\
 	(type)__res;							\
 })
@@ -162,7 +172,7 @@ DECLARE_STATIC_CALL(xen_hypercall, xen_h
 	__HYPERCALL_1ARG(a1);						\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_1PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER1);				\
 	(type)__res;							\
 })
@@ -173,7 +183,7 @@ DECLARE_STATIC_CALL(xen_hypercall, xen_h
 	__HYPERCALL_2ARG(a1, a2);					\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_2PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER2);				\
 	(type)__res;							\
 })
@@ -184,7 +194,7 @@ DECLARE_STATIC_CALL(xen_hypercall, xen_h
 	__HYPERCALL_3ARG(a1, a2, a3);					\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_3PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER3);				\
 	(type)__res;							\
 })
@@ -195,7 +205,7 @@ DECLARE_STATIC_CALL(xen_hypercall, xen_h
 	__HYPERCALL_4ARG(a1, a2, a3, a4);				\
 	asm volatile (__HYPERCALL					\
 		      : __HYPERCALL_4PARAM				\
-		      : __HYPERCALL_ENTRY(name)				\
+		      : __HYPERCALL_ENTRY(__HYPERVISOR_ ## name)	\
 		      : __HYPERCALL_CLOBBER4);				\
 	(type)__res;							\
 })
@@ -209,12 +219,9 @@ xen_single_call(unsigned int call,
 	__HYPERCALL_DECLS;
 	__HYPERCALL_5ARG(a1, a2, a3, a4, a5);
 
-	if (call >= PAGE_SIZE / sizeof(hypercall_page[0]))
-		return -EINVAL;
-
-	asm volatile(CALL_NOSPEC
+	asm volatile(__HYPERCALL
 		     : __HYPERCALL_5PARAM
-		     : [thunk_target] "a" (&hypercall_page[call])
+		     : __HYPERCALL_ENTRY(call)
 		     : __HYPERCALL_CLOBBER5);
 
 	return (long)__res;
author maintainer
#175 lore raw

PATCH 172/172 x86/xen: remove hypercall page

In reply to Greg Kroah-Hartman

6.12-stable review patch. If anyone has any objections, please let me know.

------------------

From: Juergen Gross <[email protected]>

commit 7fa0da5373685e7ed249af3fa317ab1e1ba8b0a6 upstream.

The hypercall page is no longer needed. It can be removed, as from the Xen perspective it is optional.

But, from Linux's perspective, it removes naked RET instructions that escape the speculative protections that Call Depth Tracking and/or Untrain Ret are trying to achieve.

This is part of XSA-466 / CVE-2024-53241.

---
 arch/x86/include/asm/xen/hypercall.h |    2 --
 arch/x86/kernel/callthunks.c         |    5 -----
 arch/x86/xen/enlighten.c             |    2 --
 arch/x86/xen/enlighten_hvm.c         |    9 +--------
 arch/x86/xen/enlighten_pvh.c         |    7 -------
 arch/x86/xen/xen-head.S              |   23 -----------------------
 6 files changed, 1 insertion(+), 47 deletions(-)
arch/x86/include/asm/xen/hypercall.h +0 -2
@@ -88,8 +88,6 @@ struct xen_dm_op_buf;
  * there aren't more than 5 arguments...)
  */
 
-extern struct { char _entry[32]; } hypercall_page[];
-
 void xen_hypercall_func(void);
 DECLARE_STATIC_CALL(xen_hypercall, xen_hypercall_func);
 
arch/x86/kernel/callthunks.c +0 -5
@@ -143,11 +143,6 @@ static bool skip_addr(void *dest)
 	    dest < (void*)relocate_kernel + KEXEC_CONTROL_CODE_MAX_SIZE)
 		return true;
 #endif
-#ifdef CONFIG_XEN
-	if (dest >= (void *)hypercall_page &&
-	    dest < (void*)hypercall_page + PAGE_SIZE)
-		return true;
-#endif
 	return false;
 }
 
arch/x86/xen/enlighten.c +0 -2
@@ -22,8 +22,6 @@
 
 #include "xen-ops.h"
 
-EXPORT_SYMBOL_GPL(hypercall_page);
-
 DEFINE_STATIC_CALL(xen_hypercall, xen_hypercall_hvm);
 EXPORT_STATIC_CALL_TRAMP(xen_hypercall);
 
arch/x86/xen/enlighten_hvm.c +1 -8
@@ -106,15 +106,8 @@ static void __init init_hvm_pv_info(void
 	/* PVH set up hypercall page in xen_prepare_pvh(). */
 	if (xen_pvh_domain())
 		pv_info.name = "Xen PVH";
-	else {
-		u64 pfn;
-		uint32_t msr;
-
+	else
 		pv_info.name = "Xen HVM";
-		msr = cpuid_ebx(base + 2);
-		pfn = __pa(hypercall_page);
-		wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32));
-	}
 
 	xen_setup_features();
 
arch/x86/xen/enlighten_pvh.c +0 -7
@@ -129,17 +129,10 @@ static void __init pvh_arch_setup(void)
 
 void __init xen_pvh_init(struct boot_params *boot_params)
 {
-	u32 msr;
-	u64 pfn;
-
 	xen_pvh = 1;
 	xen_domain_type = XEN_HVM_DOMAIN;
 	xen_start_flags = pvh_start_info.flags;
 
-	msr = cpuid_ebx(xen_cpuid_base() + 2);
-	pfn = __pa(hypercall_page);
-	wrmsr_safe(msr, (u32)pfn, (u32)(pfn >> 32));
-
 	x86_init.oem.arch_setup = pvh_arch_setup;
 	x86_init.oem.banner = xen_banner;
 
arch/x86/xen/xen-head.S +0 -23
@@ -22,28 +22,6 @@
 #include <xen/interface/xen-mca.h>
 #include <asm/xen/interface.h>
 
-.pushsection .noinstr.text, "ax"
-	.balign PAGE_SIZE
-SYM_CODE_START(hypercall_page)
-	.rept (PAGE_SIZE / 32)
-		UNWIND_HINT_FUNC
-		ANNOTATE_NOENDBR
-		ANNOTATE_UNRET_SAFE
-		ret
-		/*
-		 * Xen will write the hypercall page, and sort out ENDBR.
-		 */
-		.skip 31, 0xcc
-	.endr
-
-#define HYPERCALL(n) \
-	.equ xen_hypercall_##n, hypercall_page + __HYPERVISOR_##n * 32; \
-	.type xen_hypercall_##n, @function; .size xen_hypercall_##n, 32
-#include <asm/xen-hypercalls.h>
-#undef HYPERCALL
-SYM_CODE_END(hypercall_page)
-.popsection
-
 #ifdef CONFIG_XEN_PV
 	__INIT
 SYM_CODE_START(startup_xen)
@@ -198,7 +176,6 @@ SYM_FUNC_END(xen_hypercall_intel)
 #else
 # define FEATURES_DOM0 0
 #endif
-	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, _ASM_PTR hypercall_page)
 	ELFNOTE(Xen, XEN_ELFNOTE_SUPPORTED_FEATURES,
 		.long FEATURES_PV | FEATURES_PVH | FEATURES_DOM0)
 	ELFNOTE(Xen, XEN_ELFNOTE_LOADER,         .asciz "generic")
Tested-by on the v1 series
#176 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:

Signature · 1 line
Florian
Tested-by on the v1 series
#177 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 9 lines
	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

Compiled and booted on my test system. No dmesg regressions.

thanks,
-- Shuah

#178 lore raw
In reply to Greg Kroah-Hartman
Quoted 7 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

Hey everyone,

when testing the 6.12.6-rc1 release candidate on my Steam Deck I have found that the following issue came up (once). On my laptop everything works fine and even though the issue below came up the device was ususal like always.

I added the relevant Maintainers into CC so they can judge if it's something serious or not. I have also added a full dmesg as an attachment. If anybody has idea about possible reproducers I would be interested in that aswell, as I only saw the issue once so far.

Cheers,
Chris

kernel: CPU: 4 UID: 0 PID: 436 Comm: kworker/u32:4 Not tainted 6.12.6-rc1-1home #1 c49ee701ad1a1a28c82c80281ff6159df069d19b
kernel: Hardware name: Valve Jupiter/Jupiter, BIOS F7A0131 01/30/2024
kernel: Workqueue: sdma0 drm_sched_run_job_work [gpu_sched]
kernel: RIP: 0010:check_flush_dependency+0xfc/0x120
kernel: Code: 8b 45 18 48 8d b2 c0 00 00 00 49 89 e8 48 8d 8b c0 00 00 00 48 c7 c7 e0 a1 ae a8 c6 05 29 03 16 02 01 48 89 c2 e8 04 8e fd ff <0f> 0b e9 1f ff ff ff 80 3d 14 03 16 02 00 75 93 e9 4a ff ff ff 66
kernel: RSP: 0018:ffffa65802707c60 EFLAGS: 00010082
kernel: RAX: 0000000000000000 RBX: ffff958c80050800 RCX: 0000000000000027
kernel: RDX: ffff958fb00218c8 RSI: 0000000000000001 RDI: ffff958fb00218c0
kernel: RBP: ffffffffc0a2eb00 R08: 0000000000000000 R09: ffffa65802707ae0
kernel: R10: ffffffffa92b54e8 R11: 0000000000000003 R12: ffff958c899b3580
kernel: R13: ffff958c8cc71c00 R14: ffffa65802707c90 R15: 0000000000000001
kernel: FS:  0000000000000000(0000) GS:ffff958fb0000000(0000) knlGS:0000000000000000
kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kernel: CR2: 00007f764c0d5000 CR3: 00000001b6222000 CR4: 0000000000350ef0
kernel: Call Trace:
kernel:  <TASK>
kernel:  ? check_flush_dependency+0xfc/0x120
kernel:  ? __warn.cold+0x93/0xf6
kernel:  ? check_flush_dependency+0xfc/0x120
kernel:  ? report_bug+0xff/0x140
kernel:  ? handle_bug+0x58/0x90
kernel:  ? exc_invalid_op+0x17/0x70
kernel:  ? asm_exc_invalid_op+0x1a/0x20
kernel:  ? __pfx_amdgpu_device_delay_enable_gfx_off+0x10/0x10 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  ? check_flush_dependency+0xfc/0x120
kernel:  __flush_work+0x110/0x2c0
kernel:  cancel_delayed_work_sync+0x5e/0x80
kernel:  amdgpu_gfx_off_ctrl+0xad/0x140 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  amdgpu_ring_alloc+0x43/0x60 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  amdgpu_ib_schedule+0xf0/0x730 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  amdgpu_job_run+0x8c/0x170 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  ? mod_delayed_work_on+0xa4/0xb0
kernel:  drm_sched_run_job_work+0x25c/0x3f0 [gpu_sched da7f9c92395781c75e4ac0d605a4cf839a336d2f]
kernel:  ? srso_return_thunk+0x5/0x5f
kernel:  process_one_work+0x17e/0x330
kernel:  worker_thread+0x2ce/0x3f0
kernel:  ? __pfx_worker_thread+0x10/0x10
kernel:  kthread+0xd2/0x100
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork+0x34/0x50
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork_asm+0x1a/0x30
kernel:  </TASK>
kernel: ---[ end trace 0000000000000000 ]---
Dec 17 21:11:57 archlinux-steamdeck kernel: Linux version 6.12.6-rc1-1home (linux@archlinux) (gcc (GCC) 14.2.1 20240910, GNU ld (GNU Binutils) 2.43.0) #1 SMP PREEMPT_DYNAMIC Tue, 17 Dec 2024 19:08:03 +0000
Dec 17 21:11:57 archlinux-steamdeck kernel: Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=b7c7e656-fdad-4a9c-bf62-5226971802ce rw loglevel=3 quiet
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-provided physical RAM map:
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009efff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000000009f000-0x00000000000bffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x0000000000100000-0x0000000009afffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x0000000009b00000-0x0000000009dfffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x0000000009e00000-0x0000000009efffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x0000000009f00000-0x0000000009f20fff] ACPI NVS
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x0000000009f21000-0x000000006b367fff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000006b368000-0x000000006c567fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000006c568000-0x000000006c56efff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000006c56f000-0x000000006c56ffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000006c570000-0x000000007877efff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000007877f000-0x000000007af7efff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000007af7f000-0x000000007cf7efff] ACPI NVS
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000007cf7f000-0x000000007cffefff] ACPI data
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000007cfff000-0x000000007cffffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000007d000000-0x000000007dffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000007f000000-0x000000007fffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000a0000000-0x00000000a00fffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000fec00000-0x00000000fec01fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000fec20000-0x00000000fec20fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000fed80000-0x00000000fed81fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000fedc0000-0x00000000feddffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x0000000100000000-0x000000043f37ffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: BIOS-e820: [mem 0x000000043f380000-0x000000047fffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: NX (Execute Disable) protection: active
Dec 17 21:11:57 archlinux-steamdeck kernel: APIC: Static calls initialized
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: update [mem 0x69c27018-0x69c32057] usable ==> usable
Dec 17 21:11:57 archlinux-steamdeck kernel: extended physical RAM map:
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000000000000-0x000000000009efff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000000009f000-0x00000000000bffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000000100000-0x0000000009afffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000009b00000-0x0000000009dfffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000009e00000-0x0000000009efffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000009f00000-0x0000000009f20fff] ACPI NVS
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000009f21000-0x0000000069c27017] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000069c27018-0x0000000069c32057] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000069c32058-0x000000006b367fff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000006b368000-0x000000006c567fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000006c568000-0x000000006c56efff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000006c56f000-0x000000006c56ffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000006c570000-0x000000007877efff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000007877f000-0x000000007af7efff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000007af7f000-0x000000007cf7efff] ACPI NVS
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000007cf7f000-0x000000007cffefff] ACPI data
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000007cfff000-0x000000007cffffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000007d000000-0x000000007dffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000007f000000-0x000000007fffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000a0000000-0x00000000a00fffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000fec00000-0x00000000fec01fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000fec20000-0x00000000fec20fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000fed80000-0x00000000fed81fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000fedc0000-0x00000000feddffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x0000000100000000-0x000000043f37ffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: reserve setup_data: [mem 0x000000043f380000-0x000000047fffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: EFI v2.7 by Valve
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: ACPI=0x7cffe000 ACPI 2.0=0x7cffe014 TPMFinalLog=0x7cf40000 SMBIOS=0x796fd000 SMBIOS 3.0=0x796fb000 MEMATTR=0x7467b018 ESRT=0x74078d18 INITRD=0x6c578b18 RNG=0x7cfbb018 TPMEventLog=0x7cfba018 
Dec 17 21:11:57 archlinux-steamdeck kernel: random: crng init done
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Remove mem95: MMIO range=[0xa0000000-0xa00fffff] (1MB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: remove [mem 0xa0000000-0xa00fffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Remove mem96: MMIO range=[0xf8000000-0xfbffffff] (64MB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: remove [mem 0xf8000000-0xfbffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Not removing mem97: MMIO range=[0xfec00000-0xfec01fff] (8KB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Not removing mem98: MMIO range=[0xfec10000-0xfec10fff] (4KB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Not removing mem99: MMIO range=[0xfec20000-0xfec20fff] (4KB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Not removing mem100: MMIO range=[0xfed80000-0xfed81fff] (8KB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Not removing mem101: MMIO range=[0xfedc0000-0xfeddffff] (128KB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Not removing mem102: MMIO range=[0xfee00000-0xfee00fff] (4KB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: efi: Remove mem103: MMIO range=[0xff000000-0xffffffff] (16MB) from e820 map
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: remove [mem 0xff000000-0xffffffff] reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: SMBIOS 3.3.0 present.
Dec 17 21:11:57 archlinux-steamdeck kernel: DMI: Valve Jupiter/Jupiter, BIOS F7A0131 01/30/2024
Dec 17 21:11:57 archlinux-steamdeck kernel: DMI: Memory slots populated: 4/4
Dec 17 21:11:57 archlinux-steamdeck kernel: tsc: Fast TSC calibration using PIT
Dec 17 21:11:57 archlinux-steamdeck kernel: tsc: Detected 2799.865 MHz processor
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: remove [mem 0x000a0000-0x000fffff] usable
Dec 17 21:11:57 archlinux-steamdeck kernel: last_pfn = 0x43f380 max_arch_pfn = 0x400000000
Dec 17 21:11:57 archlinux-steamdeck kernel: MTRR map: 7 entries (3 fixed + 4 variable; max 20), built from 9 variable MTRRs
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
Dec 17 21:11:57 archlinux-steamdeck kernel: last_pfn = 0x7d000 max_arch_pfn = 0x400000000
Dec 17 21:11:57 archlinux-steamdeck kernel: esrt: Reserving ESRT space from 0x0000000074078d18 to 0x0000000074078da0.
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: update [mem 0x74078000-0x74078fff] usable ==> reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: Using GB pages for direct mapping
Dec 17 21:11:57 archlinux-steamdeck kernel: Secure boot disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: RAMDISK: [mem 0x6078c000-0x6337efff]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Early table checksum verification disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: RSDP 0x000000007CFFE014 000024 (v02 AMDYDE)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: XSDT 0x000000007CFCB188 00010C (v01 AMDYDE EDK2     00000002      01000013)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: FACP 0x000000007CFEF000 00010C (v05 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: DSDT 0x000000007CFE0000 00801B (v01 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: FACS 0x000000007CEF7000 000040
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: UEFI 0x000000007CF7E000 000236 (v01 AMDYDE EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFF5000 007237 (v02 AMD    EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFF4000 00046D (v01 AMDyde EDK2     00001000 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: TPM2 0x000000007CFF3000 00004C (v04 AMD    EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: ASF! 0x000000007CFF1000 0000A5 (v32 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: BOOT 0x000000007CFF0000 000028 (v01 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: HPET 0x000000007CFEE000 000038 (v01 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: APIC 0x000000007CFED000 000138 (v03 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: MCFG 0x000000007CFEC000 00003C (v01 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SLIC 0x000000007CFEB000 000176 (v01 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: WDAT 0x000000007CFEA000 00017C (v01 AMDYDE EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: WDRT 0x000000007CFE9000 000047 (v01 AMD    EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFDF000 000099 (v01 AMDyde EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFDE000 00078E (v02 AMDRUS EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: VFCT 0x000000007CFD2000 00B084 (v01 AMDYDE EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFD1000 0000F8 (v01 AMD    EDK2     00001000 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFCE000 0029BC (v02 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: CRAT 0x000000007CFCD000 0007E8 (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: CDIT 0x000000007CFCC000 000029 (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFFD000 000503 (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFC9000 001436 (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFC7000 0014AD (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFC1000 0051CF (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: FPDT 0x000000007CFC0000 000044 (v01 AMD    EDK2     00000002 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: WSMT 0x000000007CFBE000 000028 (v01 AMDYDE EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFBD000 00008D (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: SSDT 0x000000007CFBC000 000AE8 (v01 AMD    EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: BGRT 0x000000007CFBF000 000038 (v01 AMDYDE EDK2     00000001 ACPI 00040000)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving FACP table memory at [mem 0x7cfef000-0x7cfef10b]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving DSDT table memory at [mem 0x7cfe0000-0x7cfe801a]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving FACS table memory at [mem 0x7cef7000-0x7cef703f]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving UEFI table memory at [mem 0x7cf7e000-0x7cf7e235]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cff5000-0x7cffc236]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cff4000-0x7cff446c]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving TPM2 table memory at [mem 0x7cff3000-0x7cff304b]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving ASF! table memory at [mem 0x7cff1000-0x7cff10a4]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving BOOT table memory at [mem 0x7cff0000-0x7cff0027]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving HPET table memory at [mem 0x7cfee000-0x7cfee037]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving APIC table memory at [mem 0x7cfed000-0x7cfed137]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving MCFG table memory at [mem 0x7cfec000-0x7cfec03b]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SLIC table memory at [mem 0x7cfeb000-0x7cfeb175]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving WDAT table memory at [mem 0x7cfea000-0x7cfea17b]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving WDRT table memory at [mem 0x7cfe9000-0x7cfe9046]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfdf000-0x7cfdf098]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfde000-0x7cfde78d]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving VFCT table memory at [mem 0x7cfd2000-0x7cfdd083]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfd1000-0x7cfd10f7]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfce000-0x7cfd09bb]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving CRAT table memory at [mem 0x7cfcd000-0x7cfcd7e7]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving CDIT table memory at [mem 0x7cfcc000-0x7cfcc028]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cffd000-0x7cffd502]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfc9000-0x7cfca435]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfc7000-0x7cfc84ac]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfc1000-0x7cfc61ce]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving FPDT table memory at [mem 0x7cfc0000-0x7cfc0043]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving WSMT table memory at [mem 0x7cfbe000-0x7cfbe027]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfbd000-0x7cfbd08c]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving SSDT table memory at [mem 0x7cfbc000-0x7cfbcae7]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Reserving BGRT table memory at [mem 0x7cfbf000-0x7cfbf037]
Dec 17 21:11:57 archlinux-steamdeck kernel: No NUMA configuration found
Dec 17 21:11:57 archlinux-steamdeck kernel: Faking a node at [mem 0x0000000000000000-0x000000043f37ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: NODE_DATA(0) allocated [mem 0x43f3552c0-0x43f37ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: Zone ranges:
Dec 17 21:11:57 archlinux-steamdeck kernel:   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   Normal   [mem 0x0000000100000000-0x000000043f37ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   Device   empty
Dec 17 21:11:57 archlinux-steamdeck kernel: Movable zone start for each node
Dec 17 21:11:57 archlinux-steamdeck kernel: Early memory node ranges
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x0000000000001000-0x000000000009efff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x0000000000100000-0x0000000009afffff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x0000000009e00000-0x0000000009efffff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x0000000009f21000-0x000000006b367fff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x000000006c568000-0x000000006c56efff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x000000006c570000-0x000000007877efff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x000000007cfff000-0x000000007cffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel:   node   0: [mem 0x0000000100000000-0x000000043f37ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: Initmem setup node 0 [mem 0x0000000000001000-0x000000043f37ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone DMA: 1 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone DMA: 97 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone DMA32: 768 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone DMA32: 33 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone DMA32: 4608 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone DMA32: 1 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone DMA32: 18560 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone Normal: 12288 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: On node 0, zone Normal: 3200 pages in unavailable ranges
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PM-Timer IO Port: 0x408
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Ignoring hot-pluggable APIC ID 0 in present package.
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x05] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x06] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x07] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x08] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x09] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x0a] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x0b] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x0c] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x0d] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x0e] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: LAPIC_NMI (acpi_id[0x0f] high edge lint[0x1])
Dec 17 21:11:57 archlinux-steamdeck kernel: IOAPIC[0]: apic_id 33, version 33, address 0xfec00000, GSI 0-23
Dec 17 21:11:57 archlinux-steamdeck kernel: IOAPIC[1]: apic_id 34, version 33, address 0xfec01000, GSI 24-55
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Using ACPI (MADT) for SMP configuration information
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: HPET id: 0x10228210 base: 0xfed00000
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: update [mem 0x721e1000-0x72484fff] usable ==> reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Max. logical packages:   1
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Max. logical dies:       1
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Max. dies per package:   1
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Max. threads per core:   2
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Num. cores per package:     4
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Num. threads per package:   8
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Allowing 8 present CPUs plus 0 hotplug CPUs
Dec 17 21:11:57 archlinux-steamdeck kernel: CPU topo: Rejected CPUs 8
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x0009f000-0x000bffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x000c0000-0x000fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x09b00000-0x09dfffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x09f00000-0x09f20fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x69c27000-0x69c27fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x69c32000-0x69c32fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x6b368000-0x6c567fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x6c56f000-0x6c56ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x721e1000-0x72484fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x74078000-0x74078fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x7877f000-0x7af7efff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x7af7f000-0x7cf7efff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x7cf7f000-0x7cffefff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x7d000000-0x7dffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x7e000000-0x7effffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x7f000000-0x7fffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0x80000000-0xfebfffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfec00000-0xfec01fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfec02000-0xfec0ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfec10000-0xfec10fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfec11000-0xfec1ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfec20000-0xfec20fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfec21000-0xfed7ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfed80000-0xfed81fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfed82000-0xfedbffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfedc0000-0xfeddffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfede0000-0xfedfffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: hibernation: Registered nosave memory: [mem 0xfee01000-0xffffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: [mem 0x80000000-0xfebfffff] available for PCI devices
Dec 17 21:11:57 archlinux-steamdeck kernel: Booting paravirtualized kernel on bare hardware
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370452778343963 ns
Dec 17 21:11:57 archlinux-steamdeck kernel: setup_percpu: NR_CPUS:8192 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1
Dec 17 21:11:57 archlinux-steamdeck kernel: percpu: Embedded 67 pages/cpu s237568 r8192 d28672 u524288
Dec 17 21:11:57 archlinux-steamdeck kernel: pcpu-alloc: s237568 r8192 d28672 u524288 alloc=1*2097152
Dec 17 21:11:57 archlinux-steamdeck kernel: pcpu-alloc: [0] 0 1 2 3 [0] 4 5 6 7 
Dec 17 21:11:57 archlinux-steamdeck kernel: Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=b7c7e656-fdad-4a9c-bf62-5226971802ce rw loglevel=3 quiet
Dec 17 21:11:57 archlinux-steamdeck kernel: Unknown kernel command line parameters "BOOT_IMAGE=/vmlinuz-linux", will be passed to user space.
Dec 17 21:11:57 archlinux-steamdeck kernel: Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: Fallback order for Node 0: 0 
Dec 17 21:11:57 archlinux-steamdeck kernel: Built 1 zonelists, mobility grouping on.  Total pages: 3892604
Dec 17 21:11:57 archlinux-steamdeck kernel: Policy zone: Normal
Dec 17 21:11:57 archlinux-steamdeck kernel: mem auto-init: stack:all(zero), heap alloc:on, heap free:off
Dec 17 21:11:57 archlinux-steamdeck kernel: software IO TLB: area num 8.
Dec 17 21:11:57 archlinux-steamdeck kernel: SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
Dec 17 21:11:57 archlinux-steamdeck kernel: ftrace: allocating 51143 entries in 200 pages
Dec 17 21:11:57 archlinux-steamdeck kernel: ftrace: allocated 200 pages with 3 groups
Dec 17 21:11:57 archlinux-steamdeck kernel: Dynamic Preempt: full
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu: Preemptible hierarchical RCU implementation.
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu:         RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=8.
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu:         RCU priority boosting: priority 1 delay 500 ms.
Dec 17 21:11:57 archlinux-steamdeck kernel:         Trampoline variant of Tasks RCU enabled.
Dec 17 21:11:57 archlinux-steamdeck kernel:         Rude variant of Tasks RCU enabled.
Dec 17 21:11:57 archlinux-steamdeck kernel:         Tracing variant of Tasks RCU enabled.
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu: RCU calculated value of scheduler-enlistment delay is 30 jiffies.
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
Dec 17 21:11:57 archlinux-steamdeck kernel: RCU Tasks: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
Dec 17 21:11:57 archlinux-steamdeck kernel: RCU Tasks Rude: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
Dec 17 21:11:57 archlinux-steamdeck kernel: RCU Tasks Trace: Setting shift to 3 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=8.
Dec 17 21:11:57 archlinux-steamdeck kernel: NR_IRQS: 524544, nr_irqs: 1032, preallocated irqs: 16
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu: srcu_init: Setting srcu_struct sizes based on contention.
Dec 17 21:11:57 archlinux-steamdeck kernel: kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
Dec 17 21:11:57 archlinux-steamdeck kernel: Console: colour dummy device 80x25
Dec 17 21:11:57 archlinux-steamdeck kernel: printk: legacy console [tty0] enabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Core revision 20240827
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484873504 ns
Dec 17 21:11:57 archlinux-steamdeck kernel: APIC: Switch to symmetric I/O mode setup
Dec 17 21:11:57 archlinux-steamdeck kernel: ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x285bc13aba8, max_idle_ns: 440795309353 ns
Dec 17 21:11:57 archlinux-steamdeck kernel: Calibrating delay loop (skipped), value calculated using timer frequency.. 5601.05 BogoMIPS (lpj=9332883)
Dec 17 21:11:57 archlinux-steamdeck kernel: Zenbleed: please update your microcode for the most optimal fix
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/cpu: User Mode Instruction Prevention (UMIP) activated
Dec 17 21:11:57 archlinux-steamdeck kernel: LVT offset 1 assigned for vector 0xf9
Dec 17 21:11:57 archlinux-steamdeck kernel: LVT offset 2 assigned for vector 0xf4
Dec 17 21:11:57 archlinux-steamdeck kernel: Last level iTLB entries: 4KB 1024, 2MB 1024, 4MB 512
Dec 17 21:11:57 archlinux-steamdeck kernel: Last level dTLB entries: 4KB 2048, 2MB 2048, 4MB 1024, 1GB 0
Dec 17 21:11:57 archlinux-steamdeck kernel: process: using mwait in idle threads
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : Mitigation: Retpolines
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : Enabling Speculation Barrier for firmware calls
Dec 17 21:11:57 archlinux-steamdeck kernel: RETBleed: Mitigation: untrained return thunk
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : Selecting STIBP always-on mode to complement retbleed mitigation
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : User space: Mitigation: STIBP always-on protection
Dec 17 21:11:57 archlinux-steamdeck kernel: Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
Dec 17 21:11:57 archlinux-steamdeck kernel: Speculative Return Stack Overflow: Mitigation: Safe RET
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format.
Dec 17 21:11:57 archlinux-steamdeck kernel: Freeing SMP alternatives memory: 40K
Dec 17 21:11:57 archlinux-steamdeck kernel: pid_max: default: 32768 minimum: 301
Dec 17 21:11:57 archlinux-steamdeck kernel: LSM: initializing lsm=capability,landlock,lockdown,yama,bpf
Dec 17 21:11:57 archlinux-steamdeck kernel: landlock: Up and running.
Dec 17 21:11:57 archlinux-steamdeck kernel: Yama: becoming mindful.
Dec 17 21:11:57 archlinux-steamdeck kernel: LSM support for eBPF active
Dec 17 21:11:57 archlinux-steamdeck kernel: Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: smpboot: CPU0: AMD Custom APU 0405 (family: 0x17, model: 0x90, stepping: 0x2)
Dec 17 21:11:57 archlinux-steamdeck kernel: Performance Events: Fam17h+ core perfctr, AMD PMU driver.
Dec 17 21:11:57 archlinux-steamdeck kernel: ... version:                0
Dec 17 21:11:57 archlinux-steamdeck kernel: ... bit width:              48
Dec 17 21:11:57 archlinux-steamdeck kernel: ... generic registers:      6
Dec 17 21:11:57 archlinux-steamdeck kernel: ... value mask:             0000ffffffffffff
Dec 17 21:11:57 archlinux-steamdeck kernel: ... max period:             00007fffffffffff
Dec 17 21:11:57 archlinux-steamdeck kernel: ... fixed-purpose events:   0
Dec 17 21:11:57 archlinux-steamdeck kernel: ... event mask:             000000000000003f
Dec 17 21:11:57 archlinux-steamdeck kernel: signal: max sigframe size: 1776
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu: Hierarchical SRCU implementation.
Dec 17 21:11:57 archlinux-steamdeck kernel: rcu:         Max phase no-delay instances is 1000.
Dec 17 21:11:57 archlinux-steamdeck kernel: Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
Dec 17 21:11:57 archlinux-steamdeck kernel: MCE: In-kernel MCE decoding enabled.
Dec 17 21:11:57 archlinux-steamdeck kernel: NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
Dec 17 21:11:57 archlinux-steamdeck kernel: smp: Bringing up secondary CPUs ...
Dec 17 21:11:57 archlinux-steamdeck kernel: smpboot: x86: Booting SMP configuration:
Dec 17 21:11:57 archlinux-steamdeck kernel: .... node  #0, CPUs:      #2 #4 #6 #1 #3 #5 #7
Dec 17 21:11:57 archlinux-steamdeck kernel: Spectre V2 : Update user space SMT mitigation: STIBP always-on
Dec 17 21:11:57 archlinux-steamdeck kernel: smp: Brought up 1 node, 8 CPUs
Dec 17 21:11:57 archlinux-steamdeck kernel: smpboot: Total of 8 processors activated (44815.41 BogoMIPS)
Dec 17 21:11:57 archlinux-steamdeck kernel: Memory: 15119304K/15570416K available (18432K kernel code, 2654K rwdata, 14220K rodata, 4252K init, 4084K bss, 439008K reserved, 0K cma-reserved)
Dec 17 21:11:57 archlinux-steamdeck kernel: devtmpfs: initialized
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/mm: Memory block size: 128MB
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PM: Registering ACPI NVS region [mem 0x09f00000-0x09f20fff] (135168 bytes)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PM: Registering ACPI NVS region [mem 0x7af7f000-0x7cf7efff] (33554432 bytes)
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370867519511994 ns
Dec 17 21:11:57 archlinux-steamdeck kernel: futex hash table entries: 2048 (order: 5, 131072 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: pinctrl core: initialized pinctrl subsystem
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: RTC time: 20:11:52, date: 2024-12-17
Dec 17 21:11:57 archlinux-steamdeck kernel: NET: Registered PF_NETLINK/PF_ROUTE protocol family
Dec 17 21:11:57 archlinux-steamdeck kernel: DMA: preallocated 2048 KiB GFP_KERNEL pool for atomic allocations
Dec 17 21:11:57 archlinux-steamdeck kernel: DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
Dec 17 21:11:57 archlinux-steamdeck kernel: DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
Dec 17 21:11:57 archlinux-steamdeck kernel: audit: initializing netlink subsys (disabled)
Dec 17 21:11:57 archlinux-steamdeck kernel: audit: type=2000 audit(1734466312.189:1): state=initialized audit_enabled=0 res=1
Dec 17 21:11:57 archlinux-steamdeck kernel: thermal_sys: Registered thermal governor 'fair_share'
Dec 17 21:11:57 archlinux-steamdeck kernel: thermal_sys: Registered thermal governor 'bang_bang'
Dec 17 21:11:57 archlinux-steamdeck kernel: thermal_sys: Registered thermal governor 'step_wise'
Dec 17 21:11:57 archlinux-steamdeck kernel: thermal_sys: Registered thermal governor 'user_space'
Dec 17 21:11:57 archlinux-steamdeck kernel: thermal_sys: Registered thermal governor 'power_allocator'
Dec 17 21:11:57 archlinux-steamdeck kernel: cpuidle: using governor ladder
Dec 17 21:11:57 archlinux-steamdeck kernel: cpuidle: using governor menu
Dec 17 21:11:57 archlinux-steamdeck kernel: Simple Boot Flag at 0x44 set to 0x1
Dec 17 21:11:57 archlinux-steamdeck kernel: acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI: ECAM [mem 0xf8000000-0xfbffffff] (base 0xf8000000) for domain 0000 [bus 00-3f]
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI: Using configuration type 1 for base access
Dec 17 21:11:57 archlinux-steamdeck kernel: kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
Dec 17 21:11:57 archlinux-steamdeck kernel: HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
Dec 17 21:11:57 archlinux-steamdeck kernel: HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
Dec 17 21:11:57 archlinux-steamdeck kernel: HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
Dec 17 21:11:57 archlinux-steamdeck kernel: HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Added _OSI(Module Device)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Added _OSI(Processor Device)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Added _OSI(3.0 _SCP Extensions)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Added _OSI(Processor Aggregator Device)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: 13 ACPI AML tables successfully acquired and loaded
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: EC: EC started
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: EC: interrupt blocked
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: EC: EC_CMD/EC_SC=0x66, EC_DATA=0x62
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: \_SB_.PCI0.LPC0.EC0_: Boot DSDT EC used to handle transactions
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Interpreter enabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PM: (supports S0 S3 S4 S5)
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Using IOAPIC for interrupt routing
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI: Ignoring E820 reservations for host bridge windows
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: Enabled 5 GPEs in block 00 to 1F
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: \_SB_.PRWL: New power resource
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
Dec 17 21:11:57 archlinux-steamdeck kernel: acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
Dec 17 21:11:57 archlinux-steamdeck kernel: acpi PNP0A08:00: _OSC: platform does not support [SHPCHotplug LTR DPC]
Dec 17 21:11:57 archlinux-steamdeck kernel: acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME AER PCIeCapability]
Dec 17 21:11:57 archlinux-steamdeck kernel: acpi PNP0A08:00: [Firmware Info]: ECAM [mem 0xf8000000-0xfbffffff] for domain 0000 [bus 00-3f] only partially covers this bridge
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI host bridge to bus 0000:00
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000cffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0x000d0000-0x000effff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0x80000000-0xf7ffffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0xfc000000-0xfeafffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0xfed45000-0xfed814ff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0xfed81900-0xfed81fff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0xfedc0000-0xfedc0fff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0xfedc6000-0xfedc6fff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [mem 0x4a0200000-0xf8ffffffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: root bus resource [bus 00-ff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:00.0: [1022:1645] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.0: [1022:1632] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.2: [1022:1647] type 01 class 0x060400 PCIe Root Port
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.2: PCI bridge to [bus 01]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.2:   bridge window [mem 0x80600000-0x806fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.2: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.3: [1022:1647] type 01 class 0x060400 PCIe Root Port
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.3: PCI bridge to [bus 02]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.3:   bridge window [mem 0x80500000-0x805fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.3: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4: [1022:1647] type 01 class 0x060400 PCIe Root Port
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4: PCI bridge to [bus 03]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4:   bridge window [io  0x2000-0x2fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4:   bridge window [mem 0x80400000-0x804fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.0: [1022:1632] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1: [1022:1648] type 01 class 0x060400 PCIe Root Port
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1: PCI bridge to [bus 04]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1:   bridge window [io  0x1000-0x1fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1:   bridge window [mem 0x80000000-0x803fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1:   bridge window [mem 0xf8e0000000-0xf8f01fffff 64bit pref]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.2: [1022:1648] type 01 class 0x060400 PCIe Root Port
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.2: PCI bridge to [bus 05]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.2: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.2: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.3: [1022:1648] type 01 class 0x060400 PCIe Root Port
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.3: PCI bridge to [bus 06]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.3: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.3: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:14.0: [1022:790b] type 00 class 0x0c0500 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:14.3: [1022:790e] type 00 class 0x060100 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.0: [1022:1660] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.1: [1022:1661] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.2: [1022:1662] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.3: [1022:1663] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.4: [1022:1664] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.5: [1022:1665] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.6: [1022:1666] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:18.7: [1022:1667] type 00 class 0x060000 conventional PCI endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:01:00.0: [2646:500d] type 00 class 0x010802 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:01:00.0: BAR 0 [mem 0x80600000-0x80603fff 64bit]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.2: PCI bridge to [bus 01]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:02:00.0: [1217:8621] type 00 class 0x080501 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:02:00.0: BAR 0 [mem 0x80501000-0x80501fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:02:00.0: BAR 1 [mem 0x80500000-0x805007ff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:02:00.0: PME# supported from D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.3: PCI bridge to [bus 02]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:03:00.0: [10ec:c822] type 00 class 0x028000 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:03:00.0: BAR 0 [io  0x2000-0x20ff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:03:00.0: BAR 2 [mem 0x80400000-0x8040ffff 64bit]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:03:00.0: supports D1 D2
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4: PCI bridge to [bus 03]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: [1002:163f] type 00 class 0x030000 PCIe Legacy Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: BAR 0 [mem 0xf8e0000000-0xf8efffffff 64bit pref]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: BAR 2 [mem 0xf8f0000000-0xf8f01fffff 64bit pref]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: BAR 4 [io  0x1000-0x10ff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: BAR 5 [mem 0x80300000-0x8037ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: PME# supported from D1 D2 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: 126.016 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x16 link at 0000:00:08.1 (capable of 252.048 Gb/s with 16.0 GT/s PCIe x16 link)
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.1: [1002:1640] type 00 class 0x040300 PCIe Legacy Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.1: BAR 0 [mem 0x803c0000-0x803c3fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.1: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.1: PME# supported from D1 D2 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.2: [1022:1649] type 00 class 0x108000 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.2: BAR 2 [mem 0x80200000-0x802fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.2: BAR 5 [mem 0x803c4000-0x803c5fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.2: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.3: [1022:162c] type 00 class 0x0c0330 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.3: BAR 0 [mem 0x80000000-0x800fffff 64bit]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.3: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.3: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.4: [1022:163b] type 00 class 0x0c0330 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.4: BAR 0 [mem 0x80100000-0x801fffff 64bit]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.4: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.4: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.5: [1022:15e2] type 00 class 0x048000 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.5: BAR 0 [mem 0x80380000-0x803bffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.5: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.5: PME# supported from D0 D3hot D3cold
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1: PCI bridge to [bus 04]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:05:00.0: [1022:145a] type 00 class 0x130000 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:05:00.0: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:05:00.0: 126.016 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x16 link at 0000:00:08.2 (capable of 252.048 Gb/s with 16.0 GT/s PCIe x16 link)
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.2: PCI bridge to [bus 05]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:06:00.0: [1022:145a] type 00 class 0x130000 PCIe Endpoint
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:06:00.0: enabling Extended Tags
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:06:00.0: 126.016 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x16 link at 0000:00:08.3 (capable of 252.048 Gb/s with 16.0 GT/s PCIe x16 link)
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.3: PCI bridge to [bus 06]
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKA configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKA disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKB configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKB disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKC configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKC disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKD configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKD disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKE configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKE disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKF configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKF disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKG configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKG disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKH configured for IRQ 0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: PCI: Interrupt link LNKH disabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: EC: interrupt unblocked
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: EC: event unblocked
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: EC: EC_CMD/EC_SC=0x66, EC_DATA=0x62
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: EC: GPE=0xa
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: \_SB_.PCI0.LPC0.EC0_: Boot DSDT EC initialization complete
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: \_SB_.PCI0.LPC0.EC0_: EC: Used to handle transactions and events
Dec 17 21:11:57 archlinux-steamdeck kernel: iommu: Default domain type: Translated
Dec 17 21:11:57 archlinux-steamdeck kernel: iommu: DMA domain TLB invalidation policy: lazy mode
Dec 17 21:11:57 archlinux-steamdeck kernel: SCSI subsystem initialized
Dec 17 21:11:57 archlinux-steamdeck kernel: libata version 3.00 loaded.
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: bus type USB registered
Dec 17 21:11:57 archlinux-steamdeck kernel: usbcore: registered new interface driver usbfs
Dec 17 21:11:57 archlinux-steamdeck kernel: usbcore: registered new interface driver hub
Dec 17 21:11:57 archlinux-steamdeck kernel: usbcore: registered new device driver usb
Dec 17 21:11:57 archlinux-steamdeck kernel: EDAC MC: Ver: 3.0.0
Dec 17 21:11:57 archlinux-steamdeck kernel: efivars: Registered efivars operations
Dec 17 21:11:57 archlinux-steamdeck kernel: NetLabel: Initializing
Dec 17 21:11:57 archlinux-steamdeck kernel: NetLabel:  domain hash size = 128
Dec 17 21:11:57 archlinux-steamdeck kernel: NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
Dec 17 21:11:57 archlinux-steamdeck kernel: NetLabel:  unlabeled traffic allowed by default
Dec 17 21:11:57 archlinux-steamdeck kernel: mctp: management component transport protocol core
Dec 17 21:11:57 archlinux-steamdeck kernel: NET: Registered PF_MCTP protocol family
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI: Using ACPI for IRQ routing
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI: pci_cache_line_size set to 64 bytes
Dec 17 21:11:57 archlinux-steamdeck kernel: resource: Expanded resource Reserved due to conflict with PCI Bus 0000:00
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x0009f000-0x0009ffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x09b00000-0x0bffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x09f00000-0x0bffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x69c27018-0x6bffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x6b368000-0x6bffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x6c56f000-0x6fffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x721e1000-0x73ffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x74078000-0x77ffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x7877f000-0x7bffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x7d000000-0x7fffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: e820: reserve RAM buffer [mem 0x43f380000-0x43fffffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: vgaarb: setting as boot VGA device
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: vgaarb: bridge control possible
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
Dec 17 21:11:57 archlinux-steamdeck kernel: vgaarb: loaded
Dec 17 21:11:57 archlinux-steamdeck kernel: hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
Dec 17 21:11:57 archlinux-steamdeck kernel: hpet0: 3 comparators, 32-bit 14.318180 MHz counter
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: Switched to clocksource tsc-early
Dec 17 21:11:57 archlinux-steamdeck kernel: VFS: Disk quotas dquot_6.6.0
Dec 17 21:11:57 archlinux-steamdeck kernel: VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
Dec 17 21:11:57 archlinux-steamdeck kernel: pnp: PnP ACPI init
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:00: [mem 0xfec00000-0xfec01fff] could not be reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:00: [mem 0xa0000000-0xa00fffff] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x0400-0x04cf] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x04d0-0x04d1] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x04d6] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x0c00-0x0c01] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x0c14] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x0c50-0x0c52] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x0c6c] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x0c6f] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:03: [io  0x0cd0-0x0cdb] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:04: [mem 0x000e0000-0x000fffff] could not be reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:04: [mem 0xff000000-0xffffffff] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: system 00:05: [mem 0xf8000000-0xfbffffff] has been reserved
Dec 17 21:11:57 archlinux-steamdeck kernel: pnp: PnP ACPI: found 6 devices
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
Dec 17 21:11:57 archlinux-steamdeck kernel: NET: Registered PF_INET protocol family
Dec 17 21:11:57 archlinux-steamdeck kernel: IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: tcp_listen_portaddr_hash hash table entries: 8192 (order: 5, 131072 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: TCP: Hash tables configured (established 131072 bind 65536)
Dec 17 21:11:57 archlinux-steamdeck kernel: MPTCP token hash table entries: 16384 (order: 6, 393216 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: UDP hash table entries: 8192 (order: 6, 262144 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes, linear)
Dec 17 21:11:57 archlinux-steamdeck kernel: NET: Registered PF_UNIX/PF_LOCAL protocol family
Dec 17 21:11:57 archlinux-steamdeck kernel: NET: Registered PF_XDP protocol family
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.2: PCI bridge to [bus 01]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.2:   bridge window [mem 0x80600000-0x806fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.3: PCI bridge to [bus 02]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.3:   bridge window [mem 0x80500000-0x805fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4: PCI bridge to [bus 03]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4:   bridge window [io  0x2000-0x2fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:01.4:   bridge window [mem 0x80400000-0x804fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1: PCI bridge to [bus 04]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1:   bridge window [io  0x1000-0x1fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1:   bridge window [mem 0x80000000-0x803fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.1:   bridge window [mem 0xf8e0000000-0xf8f01fffff 64bit pref]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.2: PCI bridge to [bus 05]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:00:08.3: PCI bridge to [bus 06]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000cffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 8 [mem 0x000d0000-0x000effff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 9 [mem 0x80000000-0xf7ffffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 10 [mem 0xfc000000-0xfeafffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 11 [mem 0xfed45000-0xfed814ff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 12 [mem 0xfed81900-0xfed81fff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 13 [mem 0xfedc0000-0xfedc0fff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 14 [mem 0xfedc6000-0xfedc6fff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:00: resource 15 [mem 0x4a0200000-0xf8ffffffff window]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:01: resource 1 [mem 0x80600000-0x806fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:02: resource 1 [mem 0x80500000-0x805fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:03: resource 0 [io  0x2000-0x2fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:03: resource 1 [mem 0x80400000-0x804fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:04: resource 0 [io  0x1000-0x1fff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:04: resource 1 [mem 0x80000000-0x803fffff]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci_bus 0000:04: resource 2 [mem 0xf8e0000000-0xf8f01fffff 64bit pref]
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.1: D0 power state depends on 0000:04:00.0
Dec 17 21:11:57 archlinux-steamdeck kernel: pci 0000:04:00.4: quirk_usb_early_handoff+0x0/0x740 took 19222 usecs
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI: CLS 64 bytes, default 64
Dec 17 21:11:57 archlinux-steamdeck kernel: PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
Dec 17 21:11:57 archlinux-steamdeck kernel: software IO TLB: mapped [mem 0x00000000657fe000-0x00000000697fe000] (64MB)
Dec 17 21:11:57 archlinux-steamdeck kernel: Trying to unpack rootfs image as initramfs...
Dec 17 21:11:57 archlinux-steamdeck kernel: LVT offset 0 assigned for vector 0x400
Dec 17 21:11:57 archlinux-steamdeck kernel: perf: AMD IBS detected (0x000003ff)
Dec 17 21:11:57 archlinux-steamdeck kernel: Initialise system trusted keyrings
Dec 17 21:11:57 archlinux-steamdeck kernel: Key type blacklist registered
Dec 17 21:11:57 archlinux-steamdeck kernel: workingset: timestamp_bits=36 max_order=22 bucket_order=0
Dec 17 21:11:57 archlinux-steamdeck kernel: fuse: init (API version 7.41)
Dec 17 21:11:57 archlinux-steamdeck kernel: integrity: Platform Keyring initialized
Dec 17 21:11:57 archlinux-steamdeck kernel: integrity: Machine keyring initialized
Dec 17 21:11:57 archlinux-steamdeck kernel: Key type asymmetric registered
Dec 17 21:11:57 archlinux-steamdeck kernel: Asymmetric key parser 'x509' registered
Dec 17 21:11:57 archlinux-steamdeck kernel: Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
Dec 17 21:11:57 archlinux-steamdeck kernel: io scheduler mq-deadline registered
Dec 17 21:11:57 archlinux-steamdeck kernel: io scheduler kyber registered
Dec 17 21:11:57 archlinux-steamdeck kernel: io scheduler bfq registered
Dec 17 21:11:57 archlinux-steamdeck kernel: ledtrig-cpu: registered to indicate activity on CPUs
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.2: PME: Signaling with IRQ 25
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.2: AER: enabled with IRQ 25
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.2: DPC: enabled with IRQ 25
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.2: DPC: error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 6, DL_ActiveErr+
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.3: PME: Signaling with IRQ 26
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.3: AER: enabled with IRQ 26
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.3: DPC: enabled with IRQ 26
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.3: DPC: error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 6, DL_ActiveErr+
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.4: PME: Signaling with IRQ 27
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.4: AER: enabled with IRQ 27
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.4: DPC: enabled with IRQ 27
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:01.4: DPC: error containment capabilities: Int Msg #0, RPExt+ PoisonedTLP+ SwTrigger+ RP PIO Log 6, DL_ActiveErr+
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:08.1: PME: Signaling with IRQ 28
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:08.2: PME: Signaling with IRQ 29
Dec 17 21:11:57 archlinux-steamdeck kernel: pcieport 0000:00:08.3: PME: Signaling with IRQ 30
Dec 17 21:11:57 archlinux-steamdeck kernel: shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: AC: AC Adapter [ACAD] (off-line)
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: button: Power Button [PWRB]
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: button: Lid Switch [LID]
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: button: Power Button [PWRF]
Dec 17 21:11:57 archlinux-steamdeck kernel: Monitor-Mwait will be used to enter C-1 state
Dec 17 21:11:57 archlinux-steamdeck kernel: Estimated ratio of average max frequency by base frequency (times 1024): 1152
Dec 17 21:11:57 archlinux-steamdeck kernel: thermal LNXTHERM:00: registered as thermal_zone0
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: thermal: Thermal Zone [TZ01] (57 C)
Dec 17 21:11:57 archlinux-steamdeck kernel: Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: battery: Slot [BAT1] (battery present)
Dec 17 21:11:57 archlinux-steamdeck kernel: Non-volatile memory driver v1.3
Dec 17 21:11:57 archlinux-steamdeck kernel: Linux agpgart interface v0.103
Dec 17 21:11:57 archlinux-steamdeck kernel: Freeing initrd memory: 45004K
Dec 17 21:11:57 archlinux-steamdeck kernel: tpm_crb MSFT0101:00: Disabling hwrng
Dec 17 21:11:57 archlinux-steamdeck kernel: tpm tpm0: tpm_read_log_acpi: Failed to map ACPI memory
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: bus type drm_connector registered
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.3: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.3: new USB bus registered, assigned bus number 1
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.3: hcc params 0x0110ffe5 hci version 0x110 quirks 0x0000000000000010
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.3: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.3: new USB bus registered, assigned bus number 2
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.3: Host supports USB 3.1 Enhanced SuperSpeed
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb1: Product: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb1: Manufacturer: Linux 6.12.6-rc1-1home xhci-hcd
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb1: SerialNumber: 0000:04:00.3
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 1-0:1.0: USB hub found
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 1-0:1.0: 1 port detected
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.12
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb2: Product: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb2: Manufacturer: Linux 6.12.6-rc1-1home xhci-hcd
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb2: SerialNumber: 0000:04:00.3
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 2-0:1.0: USB hub found
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 2-0:1.0: 1 port detected
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.4: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.4: new USB bus registered, assigned bus number 3
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.4: hcc params 0x0128ffe5 hci version 0x110 quirks 0x0000000000000010
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.4: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.4: new USB bus registered, assigned bus number 4
Dec 17 21:11:57 archlinux-steamdeck kernel: xhci_hcd 0000:04:00.4: Host supports USB 3.1 Enhanced SuperSpeed
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb3: Product: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb3: Manufacturer: Linux 6.12.6-rc1-1home xhci-hcd
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb3: SerialNumber: 0000:04:00.4
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 3-0:1.0: USB hub found
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 3-0:1.0: 6 ports detected
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.12
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb4: Product: xHCI Host Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb4: Manufacturer: Linux 6.12.6-rc1-1home xhci-hcd
Dec 17 21:11:57 archlinux-steamdeck kernel: usb usb4: SerialNumber: 0000:04:00.4
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 4-0:1.0: USB hub found
Dec 17 21:11:57 archlinux-steamdeck kernel: hub 4-0:1.0: 2 ports detected
Dec 17 21:11:57 archlinux-steamdeck kernel: usbcore: registered new interface driver usbserial_generic
Dec 17 21:11:57 archlinux-steamdeck kernel: usbserial: USB Serial support registered for generic
Dec 17 21:11:57 archlinux-steamdeck kernel: rtc_cmos 00:01: RTC can wake from S4
Dec 17 21:11:57 archlinux-steamdeck kernel: rtc_cmos 00:01: registered as rtc0
Dec 17 21:11:57 archlinux-steamdeck kernel: rtc_cmos 00:01: setting system clock to 2024-12-17T20:11:52 UTC (1734466312)
Dec 17 21:11:57 archlinux-steamdeck kernel: rtc_cmos 00:01: alarms up to one month, 114 bytes nvram
Dec 17 21:11:57 archlinux-steamdeck kernel: simple-framebuffer simple-framebuffer.0: [drm] Registered 1 planes with drm panic
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] Initialized simpledrm 1.0.0 for simple-framebuffer.0 on minor 0
Dec 17 21:11:57 archlinux-steamdeck kernel: fbcon: Deferring console take-over
Dec 17 21:11:57 archlinux-steamdeck kernel: simple-framebuffer simple-framebuffer.0: [drm] fb0: simpledrmdrmfb frame buffer device
Dec 17 21:11:57 archlinux-steamdeck kernel: hid: raw HID events driver (C) Jiri Kosina
Dec 17 21:11:57 archlinux-steamdeck kernel: drop_monitor: Initializing network drop monitor service
Dec 17 21:11:57 archlinux-steamdeck kernel: NET: Registered PF_INET6 protocol family
Dec 17 21:11:57 archlinux-steamdeck kernel: Segment Routing with IPv6
Dec 17 21:11:57 archlinux-steamdeck kernel: RPL Segment Routing with IPv6
Dec 17 21:11:57 archlinux-steamdeck kernel: In-situ OAM (IOAM) with IPv6
Dec 17 21:11:57 archlinux-steamdeck kernel: NET: Registered PF_PACKET protocol family
Dec 17 21:11:57 archlinux-steamdeck kernel: microcode: Current revision: 0x08900203
Dec 17 21:11:57 archlinux-steamdeck kernel: resctrl: L3 allocation detected
Dec 17 21:11:57 archlinux-steamdeck kernel: resctrl: MB allocation detected
Dec 17 21:11:57 archlinux-steamdeck kernel: resctrl: L3 monitoring detected
Dec 17 21:11:57 archlinux-steamdeck kernel: IPI shorthand broadcast: enabled
Dec 17 21:11:57 archlinux-steamdeck kernel: sched_clock: Marking stable (679693952, 373757)->(685049860, -4982151)
Dec 17 21:11:57 archlinux-steamdeck kernel: registered taskstats version 1
Dec 17 21:11:57 archlinux-steamdeck kernel: Loading compiled-in X.509 certificates
Dec 17 21:11:57 archlinux-steamdeck kernel: Loaded X.509 cert 'Build time autogenerated kernel key: 66d38863f013dabad0e570149fb9f472d78a0994'
Dec 17 21:11:57 archlinux-steamdeck kernel: Demotion targets for Node 0: null
Dec 17 21:11:57 archlinux-steamdeck kernel: Key type .fscrypt registered
Dec 17 21:11:57 archlinux-steamdeck kernel: Key type fscrypt-provisioning registered
Dec 17 21:11:57 archlinux-steamdeck kernel: PM:   Magic number: 4:55:195
Dec 17 21:11:57 archlinux-steamdeck kernel: RAS: Correctable Errors collector initialized.
Dec 17 21:11:57 archlinux-steamdeck kernel: clk: Disabling unused clocks
Dec 17 21:11:57 archlinux-steamdeck kernel: PM: genpd: Disabling unused power domains
Dec 17 21:11:57 archlinux-steamdeck kernel: Freeing unused decrypted memory: 2028K
Dec 17 21:11:57 archlinux-steamdeck kernel: Freeing unused kernel image (initmem) memory: 4252K
Dec 17 21:11:57 archlinux-steamdeck kernel: Write protecting the kernel read-only data: 32768k
Dec 17 21:11:57 archlinux-steamdeck kernel: Freeing unused kernel image (rodata/data gap) memory: 116K
Dec 17 21:11:57 archlinux-steamdeck kernel: x86/mm: Checked W+X mappings: passed, no W+X pages found.
Dec 17 21:11:57 archlinux-steamdeck kernel: rodata_test: all tests were successful
Dec 17 21:11:57 archlinux-steamdeck kernel: Run /init as init process
Dec 17 21:11:57 archlinux-steamdeck kernel:   with arguments:
Dec 17 21:11:57 archlinux-steamdeck kernel:     /init
Dec 17 21:11:57 archlinux-steamdeck kernel:   with environment:
Dec 17 21:11:57 archlinux-steamdeck kernel:     HOME=/
Dec 17 21:11:57 archlinux-steamdeck kernel:     TERM=linux
Dec 17 21:11:57 archlinux-steamdeck kernel:     BOOT_IMAGE=/vmlinuz-linux
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-3: new full-speed USB device number 2 using xhci_hcd
Dec 17 21:11:57 archlinux-steamdeck kernel: ACPI: video: Video Device [VGA1] (multi-head: yes  rom: no  post: no)
Dec 17 21:11:57 archlinux-steamdeck kernel: i8042: PNP: PS/2 Controller [PNP0303:KBC0] at 0x60,0x64 irq 1
Dec 17 21:11:57 archlinux-steamdeck kernel: i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0d/LNXVIDEO:01/input/input3
Dec 17 21:11:57 archlinux-steamdeck kernel: serio: i8042 KBD port at 0x60,0x64 irq 1
Dec 17 21:11:57 archlinux-steamdeck kernel: sdhci: Secure Digital Host Controller Interface driver
Dec 17 21:11:57 archlinux-steamdeck kernel: sdhci: Copyright(c) Pierre Ossman
Dec 17 21:11:57 archlinux-steamdeck kernel: nvme nvme0: pci function 0000:01:00.0
Dec 17 21:11:57 archlinux-steamdeck kernel: sdhci-pci 0000:02:00.0: SDHCI controller found [1217:8621] (rev 1)
Dec 17 21:11:57 archlinux-steamdeck kernel: nvme nvme0: missing or invalid SUBNQN field.
Dec 17 21:11:57 archlinux-steamdeck kernel: mmc0: SDHCI controller on PCI [0000:02:00.0] using ADMA
Dec 17 21:11:57 archlinux-steamdeck kernel: nvme nvme0: 8/0/0 default/read/poll queues
Dec 17 21:11:57 archlinux-steamdeck kernel:  nvme0n1: p1 p2 p3 p4 p5 p6 p7 p8
Dec 17 21:11:57 archlinux-steamdeck kernel: raid6: skipped pq benchmark and selected avx2x4
Dec 17 21:11:57 archlinux-steamdeck kernel: raid6: using avx2x2 recovery algorithm
Dec 17 21:11:57 archlinux-steamdeck kernel: xor: automatically using best checksumming function   avx       
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-3: New USB device found, idVendor=28de, idProduct=1205, bcdDevice= 1.00
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-3: Product: Steam Deck Controller
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-3: Manufacturer: Valve Software
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-3: SerialNumber: MEDA20906627
Dec 17 21:11:57 archlinux-steamdeck kernel: input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
Dec 17 21:11:57 archlinux-steamdeck kernel: Btrfs loaded, zoned=yes, fsverity=yes
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-5: new full-speed USB device number 3 using xhci_hcd
Dec 17 21:11:57 archlinux-steamdeck kernel: tsc: Refined TSC clocksource calibration: 2799.999 MHz
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x285c3fb0b68, max_idle_ns: 440795224466 ns
Dec 17 21:11:57 archlinux-steamdeck kernel: clocksource: Switched to clocksource tsc
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-5: New USB device found, idVendor=13d3, idProduct=3553, bcdDevice= 0.00
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-5: Product: Bluetooth Radio
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-5: Manufacturer: Realtek
Dec 17 21:11:57 archlinux-steamdeck kernel: usb 3-5: SerialNumber: 00e04c000001
Dec 17 21:11:57 archlinux-steamdeck kernel: mmc0: new ultra high speed SDR104 SDHC card at address aaaa
Dec 17 21:11:57 archlinux-steamdeck kernel: mmcblk0: mmc0:aaaa SC32G 29.7 GiB
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] amdgpu kernel modesetting enabled.
Dec 17 21:11:57 archlinux-steamdeck kernel:  mmcblk0: p1 p2
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu: Virtual CRAT table created for CPU
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu: Topology: Add CPU node
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: enabling device (0006 -> 0007)
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] initializing kernel modesetting (IP DISCOVERY 0x1002:0x163F 0x1002:0x0123 0xAE).
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] register mmio base: 0x80300000
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] register mmio size: 524288
Dec 17 21:11:57 archlinux-steamdeck kernel: usbcore: registered new interface driver usbhid
Dec 17 21:11:57 archlinux-steamdeck kernel: usbhid: USB HID core driver
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 0 <nv_common>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 1 <gmc_v10_0>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 2 <navi10_ih>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 3 <psp>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 4 <smu>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 5 <dm>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 6 <gfx_v10_0>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 7 <sdma_v5_2>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 8 <vcn_v3_0>
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] add ip block number 9 <jpeg_v3_0>
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: Fetched VBIOS from VFCT
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu: ATOM BIOS: 113-AMDAerithJ-005
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.0/0003:28DE:1205.0001/input/input5
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-generic 0003:28DE:1205.0001: input,hidraw0: USB HID v1.11 Keyboard [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input0
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.1/0003:28DE:1205.0002/input/input6
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-generic 0003:28DE:1205.0002: input,hidraw1: USB HID v1.11 Mouse [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input1
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-generic 0003:28DE:1205.0003: hiddev96,hidraw2: USB HID v1.11 Device [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input2
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: vgaarb: deactivate vga console
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: Trusted Memory Zone (TMZ) feature disabled as experimental (default)
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] vm size is 262144 GB, 4 levels, block size is 9-bit, fragment size is 9-bit
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: VRAM: 1024M 0x000000F400000000 - 0x000000F43FFFFFFF (1024M used)
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: GART: 1024M 0x0000000000000000 - 0x000000003FFFFFFF
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] Detected VRAM RAM=1024M, BAR=1024M
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] RAM width 128bits LPDDR5
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] amdgpu: 1024M of VRAM memory ready
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] amdgpu: 7413M of GTT memory ready.
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] GART: num cpu pages 262144, num gpu pages 262144
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] PCIE GART of 1024M enabled (table at 0x000000F43FC00000).
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] Loading DMUB firmware via PSP: version=0x0300000A
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] use_doorbell being set to: [true]
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] Found VCN firmware Version ENC: 1.27 DEC: 2 VEP: 0 Revision: 0
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.0/0003:28DE:1205.0001/input/input7
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: reserve 0xa00000 from 0xf43e000000 for PSP TMR
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-steam 0003:28DE:1205.0001: input,hidraw0: USB HID v1.11 Keyboard [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input0
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Valve Software Steam Deck Controller as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.1/0003:28DE:1205.0002/input/input8
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-steam 0003:28DE:1205.0002: input,hidraw1: USB HID v1.11 Mouse [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input1
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-steam 0003:28DE:1205.0003: hiddev96: USB HID v1.11 Device [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input2
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: SMU is initialized successfully!
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] Seamless boot condition check passed
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] Display Core v3.2.301 initialized on DCN 3.0.1
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] DP-HDMI FRL PCON supported
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] DMUB hardware initialized: version=0x0300000A
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-steam 0003:28DE:1205.0003: Steam Controller 'FVAA21201907' connected
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Steam Deck as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input9
Dec 17 21:11:57 archlinux-steamdeck kernel: input: Steam Deck Motion Sensors as /devices/pci0000:00/0000:00:08.1/0000:04:00.4/usb3/3-3/3-3:1.2/0003:28DE:1205.0003/input/input10
Dec 17 21:11:57 archlinux-steamdeck kernel: hid-steam 0003:28DE:1205.0004: hidraw2: USB HID v1.11 Device [Valve Software Steam Deck Controller] on usb-0000:04:00.4-3/input2
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] kiq ring mec 2 pipe 1 q 0
Dec 17 21:11:57 archlinux-steamdeck kernel: kfd kfd: amdgpu: Allocated 3969056 bytes on gart
Dec 17 21:11:57 archlinux-steamdeck kernel: kfd kfd: amdgpu: Total number of KFD nodes to be created: 1
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu: Virtual CRAT table created for GPU
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu: Topology: Add dGPU node [0x163f:0x1002]
Dec 17 21:11:57 archlinux-steamdeck kernel: kfd kfd: amdgpu: added device 1002:163f
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: SE 1, SH per SE 1, CU per SH 8, active_cu_number 8
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring gfx_0.1.0 uses VM inv eng 1 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.0.0 uses VM inv eng 4 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.1.0 uses VM inv eng 5 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.2.0 uses VM inv eng 6 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.3.0 uses VM inv eng 7 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.0.1 uses VM inv eng 8 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.1.1 uses VM inv eng 9 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.2.1 uses VM inv eng 10 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring comp_1.3.1 uses VM inv eng 11 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring kiq_0.2.1.0 uses VM inv eng 12 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring sdma0 uses VM inv eng 13 on hub 0
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring vcn_dec_0 uses VM inv eng 0 on hub 8
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring vcn_enc_0.0 uses VM inv eng 1 on hub 8
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring vcn_enc_0.1 uses VM inv eng 4 on hub 8
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: ring jpeg_dec uses VM inv eng 5 on hub 8
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: amdgpu: Runtime PM not available
Dec 17 21:11:57 archlinux-steamdeck kernel: [drm] Initialized amdgpu 3.59.0 for 0000:04:00.0 on minor 1
Dec 17 21:11:57 archlinux-steamdeck kernel: fbcon: amdgpudrmfb (fb0) is primary device
Dec 17 21:11:57 archlinux-steamdeck kernel: fbcon: Deferring console take-over
Dec 17 21:11:57 archlinux-steamdeck kernel: amdgpu 0000:04:00.0: [drm] fb0: amdgpudrmfb frame buffer device
Dec 17 21:11:57 archlinux-steamdeck kernel: BTRFS: device fsid b7c7e656-fdad-4a9c-bf62-5226971802ce devid 1 transid 3244 /dev/mmcblk0p2 (179:2) scanned by mount (283)
Dec 17 21:11:57 archlinux-steamdeck kernel: BTRFS info (device mmcblk0p2): first mount of filesystem b7c7e656-fdad-4a9c-bf62-5226971802ce
Dec 17 21:11:57 archlinux-steamdeck kernel: BTRFS info (device mmcblk0p2): using crc32c (crc32c-intel) checksum algorithm
Dec 17 21:11:57 archlinux-steamdeck kernel: BTRFS info (device mmcblk0p2): using free-space-tree
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: systemd 257-1-arch running in system mode (+PAM +AUDIT -SELINUX -APPARMOR -IMA +IPE +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF +XKBCOMMON +UTMP -SYSVINIT +LIBARCHIVE)
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Detected architecture x86-64.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Hostname set to <archlinux-steamdeck>.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: bpf-restrict-fs: LSM BPF program attached
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Queued start job for default target Graphical Interface.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/dirmngr.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/getty.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/gpg-agent.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/gpg-agent-browser.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/gpg-agent-extra.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/gpg-agent-ssh.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/keyboxd.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice Slice /system/modprobe.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Created slice User and Session Slice.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Started Forward Password Requests to Wall Directory Watch.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Expecting device /dev/mmcblk0p1...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Reached target Local Encrypted Volumes.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Reached target Login Prompts.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Reached target Local Integrity Protected Volumes.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Reached target Path Units.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Reached target Remote File Systems.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Reached target Slice Units.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Reached target Local Verity Protected Volumes.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on Device-mapper event daemon FIFOs.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on Process Core Dump Socket.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on Credential Encryption/Decryption.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on Journal Socket (/dev/log).
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on Journal Sockets.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: TPM PCR Measurements was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Make TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on udev Control Socket.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on udev Kernel Socket.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Listening on User Database Manager Socket.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounting Huge Pages File System...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounting POSIX Message Queue File System...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounting Kernel Debug File System...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounting Kernel Trace File System...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Create List of Static Device Nodes...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Load Kernel Module configfs...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Load Kernel Module dm_mod...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Load Kernel Module drm...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Load Kernel Module fuse...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Load Kernel Module loop...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Journal Service...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Load Kernel Modules...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: TPM PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Remount Root and Kernel File Systems...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Early TPM SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Load udev Rules from Credentials...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Coldplug All udev Devices...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounted Huge Pages File System.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounted POSIX Message Queue File System.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounted Kernel Debug File System.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounted Kernel Trace File System.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Create List of Static Device Nodes.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: [email protected]: Deactivated successfully.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Load Kernel Module configfs.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: [email protected]: Deactivated successfully.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Load Kernel Module drm.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: [email protected]: Deactivated successfully.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Load Kernel Module fuse.
Dec 17 21:11:57 archlinux-steamdeck kernel: loop: module loaded
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounting FUSE Control File System...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounting Kernel Configuration File System...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Create Static Device Nodes in /dev gracefully...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: [email protected]: Deactivated successfully.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Load Kernel Module loop.
Dec 17 21:11:57 archlinux-steamdeck kernel: device-mapper: uevent: version 1.0.3
Dec 17 21:11:57 archlinux-steamdeck kernel: device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: [email protected]
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Load Kernel Module dm_mod.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Repartition Root Disk was skipped because no trigger condition checks were met.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounted FUSE Control File System.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Mounted Kernel Configuration File System.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Load udev Rules from Credentials.
Dec 17 21:11:57 archlinux-steamdeck systemd-journald[342]: Collecting audit messages is disabled.
Dec 17 21:11:57 archlinux-steamdeck kernel: i2c_dev: i2c /dev entries driver
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Finished Load Kernel Modules.
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting Apply Kernel Variables...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Starting User Database Manager...
Dec 17 21:11:57 archlinux-steamdeck systemd[1]: Started Journal Service.
Dec 17 21:11:58 archlinux-steamdeck systemd-journald[342]: Received client request to flush runtime journal.
Dec 17 21:11:58 archlinux-steamdeck kernel: Adding 16777212k swap on /swap/swapfile.  Priority:-2 extents:2 across:17017632k SS
Dec 17 21:11:58 archlinux-steamdeck kernel: AMDI0020:00: ttyS4 at MMIO 0xfedc9000 (irq = 3, base_baud = 3000000) is a 16550A
Dec 17 21:11:58 archlinux-steamdeck kernel: piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0
Dec 17 21:11:58 archlinux-steamdeck kernel: piix4_smbus 0000:00:14.0: Using register 0x02 for SMBus port selection
Dec 17 21:11:58 archlinux-steamdeck kernel: piix4_smbus 0000:00:14.0: Auxiliary SMBus Host Controller at 0xb20
Dec 17 21:11:58 archlinux-steamdeck kernel: i2c i2c-10: Successfully instantiated SPD at 0x50
Dec 17 21:11:58 archlinux-steamdeck kernel: i2c i2c-10: Successfully instantiated SPD at 0x51
Dec 17 21:11:58 archlinux-steamdeck kernel: opt3001 i2c-PRP0001:00: failed to read register 7e
Dec 17 21:11:58 archlinux-steamdeck kernel: i2c i2c-10: Successfully instantiated SPD at 0x52
Dec 17 21:11:58 archlinux-steamdeck kernel: i2c i2c-10: Successfully instantiated SPD at 0x53
Dec 17 21:11:58 archlinux-steamdeck kernel: opt3001 i2c-PRP0001:00: probe with driver opt3001 failed with error -121
Dec 17 21:11:58 archlinux-steamdeck kernel: i2c_designware AMDI0010:00: i2c_dw_handle_tx_abort: lost arbitration
Dec 17 21:11:58 archlinux-steamdeck kernel: ccp 0000:04:00.2: enabling device (0000 -> 0002)
Dec 17 21:11:58 archlinux-steamdeck kernel: ccp 0000:04:00.2: tee enabled
Dec 17 21:11:58 archlinux-steamdeck kernel: ccp 0000:04:00.2: psp enabled
Dec 17 21:11:58 archlinux-steamdeck kernel: input: PC Speaker as /devices/platform/pcspkr/input/input11
Dec 17 21:11:58 archlinux-steamdeck kernel: mousedev: PS/2 mouse device common for all mice
Dec 17 21:11:58 archlinux-steamdeck kernel: input: FTS3528:00 2808:1015 Touchscreen as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0005/input/input12
Dec 17 21:11:58 archlinux-steamdeck kernel: input: FTS3528:00 2808:1015 as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0005/input/input14
Dec 17 21:11:58 archlinux-steamdeck kernel: hid-generic 0018:2808:1015.0005: input,hidraw3: I2C HID v1.00 Device [FTS3528:00 2808:1015] on i2c-FTS3528:00
Dec 17 21:11:58 archlinux-steamdeck kernel: cfg80211: Loading compiled-in X.509 certificates for regulatory database
Dec 17 21:11:58 archlinux-steamdeck kernel: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
Dec 17 21:11:58 archlinux-steamdeck kernel: Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
Dec 17 21:11:58 archlinux-steamdeck kernel: sp5100_tco: SP5100/SB800 TCO WatchDog Timer Driver
Dec 17 21:11:58 archlinux-steamdeck kernel: sp5100-tco sp5100-tco: Using 0xfed80b00 for watchdog MMIO address
Dec 17 21:11:58 archlinux-steamdeck kernel: sp5100-tco sp5100-tco: initialized. heartbeat=60 sec (nowayout=0)
Dec 17 21:11:58 archlinux-steamdeck kernel: platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
Dec 17 21:11:58 archlinux-steamdeck kernel: cfg80211: failed to load regulatory.db
Dec 17 21:11:58 archlinux-steamdeck kernel: Bluetooth: Core ver 2.22
Dec 17 21:11:58 archlinux-steamdeck kernel: NET: Registered PF_BLUETOOTH protocol family
Dec 17 21:11:58 archlinux-steamdeck kernel: Bluetooth: HCI device and connection manager initialized
Dec 17 21:11:58 archlinux-steamdeck kernel: Bluetooth: HCI socket layer initialized
Dec 17 21:11:58 archlinux-steamdeck kernel: Bluetooth: L2CAP socket layer initialized
Dec 17 21:11:58 archlinux-steamdeck kernel: Bluetooth: SCO socket layer initialized
Dec 17 21:11:58 archlinux-steamdeck kernel: RAPL PMU: API unit is 2^-32 Joules, 1 fixed counters, 163840 ms ovfl timer
Dec 17 21:11:58 archlinux-steamdeck kernel: RAPL PMU: hw unit of domain package 2^-16 Joules
Dec 17 21:11:58 archlinux-steamdeck kernel: snd_pci_acp5x 0000:04:00.5: enabling device (0000 -> 0002)
Dec 17 21:11:58 archlinux-steamdeck kernel: cryptd: max_cpu_qlen set to 1000
Dec 17 21:11:58 archlinux-steamdeck kernel: cdc_acm 3-3:1.3: ttyACM0: USB ACM device
Dec 17 21:11:58 archlinux-steamdeck kernel: usbcore: registered new interface driver cdc_acm
Dec 17 21:11:58 archlinux-steamdeck kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Dec 17 21:11:59 archlinux-steamdeck kernel: AES CTR mode by8 optimization enabled
Dec 17 21:11:59 archlinux-steamdeck kernel: FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Dec 17 21:11:59 archlinux-steamdeck kernel: usbcore: registered new interface driver btusb
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: RTL: examining hci_ver=0a hci_rev=000c lmp_ver=0a lmp_subver=8822
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: RTL: rom_version status=0 version=3
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: RTL: loading rtl_bt/rtl8822cu_fw.bin
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: RTL: loading rtl_bt/rtl8822cu_config.bin
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: RTL: cfg_sz 6, total sz 37346
Dec 17 21:11:59 archlinux-steamdeck kernel: rtw_8822ce 0000:03:00.0: enabling device (0000 -> 0003)
Dec 17 21:11:59 archlinux-steamdeck kernel: snd_hda_intel 0000:04:00.1: enabling device (0000 -> 0002)
Dec 17 21:11:59 archlinux-steamdeck kernel: snd_hda_intel 0000:04:00.1: Handle vga_switcheroo audio client
Dec 17 21:11:59 archlinux-steamdeck kernel: rtw_8822ce 0000:03:00.0: WOW Firmware version 9.9.4, H2C version 15
Dec 17 21:11:59 archlinux-steamdeck kernel: rtw_8822ce 0000:03:00.0: Firmware version 9.9.15, H2C version 15
Dec 17 21:11:59 archlinux-steamdeck kernel: snd_hda_intel 0000:04:00.1: bound 0000:04:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
Dec 17 21:11:59 archlinux-steamdeck kernel: input: HD-Audio Generic HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input15
Dec 17 21:11:59 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: supply VA not found, using dummy regulator
Dec 17 21:11:59 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: supply VP not found, using dummy regulator
Dec 17 21:11:59 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: Cirrus Logic CS35L41 (35a40), Revision: B2
Dec 17 21:11:59 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: supply VA not found, using dummy regulator
Dec 17 21:11:59 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: supply VP not found, using dummy regulator
Dec 17 21:11:59 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: Reset line busy, assuming shared reset
Dec 17 21:11:59 archlinux-steamdeck kernel: rtw_8822ce 0000:03:00.0 wlo1: renamed from wlan0
Dec 17 21:11:59 archlinux-steamdeck kernel: input: HD-Audio Generic HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input16
Dec 17 21:11:59 archlinux-steamdeck kernel: input: HD-Audio Generic HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input17
Dec 17 21:11:59 archlinux-steamdeck kernel: input: HD-Audio Generic HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:08.1/0000:04:00.1/sound/card0/input18
Dec 17 21:11:59 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: Cirrus Logic CS35L41 (35a40), Revision: B2
Dec 17 21:11:59 archlinux-steamdeck kernel: input: FTS3528:00 2808:1015 as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0005/input/input19
Dec 17 21:11:59 archlinux-steamdeck kernel: input: FTS3528:00 2808:1015 UNKNOWN as /devices/platform/AMDI0010:01/i2c-1/i2c-FTS3528:00/0018:2808:1015.0005/input/input21
Dec 17 21:11:59 archlinux-steamdeck kernel: hid-multitouch 0018:2808:1015.0005: input,hidraw3: I2C HID v1.00 Device [FTS3528:00 2808:1015] on i2c-FTS3528:00
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: TSC scaling supported
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: Nested Virtualization enabled
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: Nested Paging enabled
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: LBR virtualization supported
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: SEV enabled (ASIDs 1 - 14)
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: SEV-ES disabled (ASIDs 0 - 0)
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: Virtual VMLOAD VMSAVE supported
Dec 17 21:11:59 archlinux-steamdeck kernel: kvm_amd: Virtual GIF supported
Dec 17 21:11:59 archlinux-steamdeck kernel: intel_rapl_common: Found RAPL domain package
Dec 17 21:11:59 archlinux-steamdeck kernel: intel_rapl_common: Found RAPL domain core
Dec 17 21:11:59 archlinux-steamdeck kernel: acp5x_mach acp5x_mach.0: ASoC: CPU DAI acp5x_i2s_playcap.1 not registered
Dec 17 21:11:59 archlinux-steamdeck kernel: input: acp5x Headset Jack as /devices/pci0000:00/0000:00:08.1/0000:04:00.5/acp5x_mach.0/sound/card1/input22
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: RTL: fw version 0xaed66dcb
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: AOSP extensions version v1.00
Dec 17 21:11:59 archlinux-steamdeck kernel: Bluetooth: hci0: AOSP quality report is supported
Dec 17 21:12:00 archlinux-steamdeck kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Dec 17 21:12:00 archlinux-steamdeck kernel: Bluetooth: BNEP filters: protocol multicast
Dec 17 21:12:00 archlinux-steamdeck kernel: Bluetooth: BNEP socket layer initialized
Dec 17 21:12:00 archlinux-steamdeck kernel: Bluetooth: MGMT ver 1.23
Dec 17 21:12:00 archlinux-steamdeck kernel: NET: Registered PF_ALG protocol family
Dec 17 21:12:02 archlinux-steamdeck kernel: [drm] pre_validate_dsc:1589 MST_DSC dsc precompute is not needed
Dec 17 21:12:11 archlinux-steamdeck kernel: [drm] Failed to add display topology, DTM TA is not initialized.
Dec 17 21:12:11 archlinux-steamdeck kernel: warning: `QSampleCache::L' uses wireless extensions which will stop working for Wi-Fi 7 hardware; use nl80211
Dec 17 21:12:11 archlinux-steamdeck kernel: Bluetooth: RFCOMM TTY layer initialized
Dec 17 21:12:11 archlinux-steamdeck kernel: Bluetooth: RFCOMM socket layer initialized
Dec 17 21:12:11 archlinux-steamdeck kernel: Bluetooth: RFCOMM ver 1.11
Dec 17 21:12:11 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: DSP1: cirrus/cs35l41-dsp1-spk-prot.wmfw: format 3 timestamp 0x62b5c26c
Dec 17 21:12:11 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: DSP1: cirrus/cs35l41-dsp1-spk-prot.wmfw: Fri 24 Jun 2022 14:55:56 GMT Daylight Time
Dec 17 21:12:11 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: DSP1: Firmware: 400a4 vendor: 0x2 v0.58.0, 2 algorithms
Dec 17 21:12:11 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: DSP1: cirrus/cs35l41-dsp1-spk-prot.bin: v0.58.0
Dec 17 21:12:11 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: DSP1: Protection: e:\workspace\workspace\tibranch_release_playback_6.76_2\ormis\staging\default_tunings\internal\CS35L
Dec 17 21:12:11 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: DSP1: cirrus/cs35l41-dsp1-spk-prot.wmfw: format 3 timestamp 0x62b5c26c
Dec 17 21:12:11 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: DSP1: cirrus/cs35l41-dsp1-spk-prot.wmfw: Fri 24 Jun 2022 14:55:56 GMT Daylight Time
Dec 17 21:12:12 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: DSP1: Firmware: 400a4 vendor: 0x2 v0.58.0, 2 algorithms
Dec 17 21:12:12 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: DSP1: cirrus/cs35l41-dsp1-spk-prot.bin: v0.58.0
Dec 17 21:12:12 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: DSP1: Protection: e:\workspace\workspace\tibranch_release_playback_6.76_2\ormis\staging\default_tunings\internal\CS35L
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: authenticate with 60:b5:8d:41:97:29 (local address=90:e8:68:74:6c:d1)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: send auth to 60:b5:8d:41:97:29 (try 1/3)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: send auth to 60:b5:8d:41:97:29 (try 2/3)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: send auth to 60:b5:8d:41:97:29 (try 3/3)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: authenticate with 60:b5:8d:41:97:29 (local address=90:e8:68:74:6c:d1)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: send auth to 60:b5:8d:41:97:29 (try 1/3)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: authenticated
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: associate with 60:b5:8d:41:97:29 (try 1/3)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: RX AssocResp from 60:b5:8d:41:97:29 (capab=0x1431 status=0 aid=3)
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: associated
Dec 17 21:12:15 archlinux-steamdeck kernel: wlo1: Limiting TX power to 20 (20 - 0) dBm as advertised by 60:b5:8d:41:97:29
Dec 17 21:12:19 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:00: DSP1: Legacy support not available
Dec 17 21:12:19 archlinux-steamdeck kernel: cs35l41 spi-VLV1776:01: DSP1: Legacy support not available
Dec 17 21:12:25 archlinux-steamdeck kernel: wlo1: deauthenticating from 60:b5:8d:41:97:29 by local choice (Reason: 3=DEAUTH_LEAVING)
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: authenticate with fa:48:b8:9b:59:04 (local address=90:e8:68:74:6c:d1)
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: send auth to fa:48:b8:9b:59:04 (try 1/3)
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: authenticate with fa:48:b8:9b:59:04 (local address=90:e8:68:74:6c:d1)
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: send auth to fa:48:b8:9b:59:04 (try 1/3)
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: authenticated
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: associate with fa:48:b8:9b:59:04 (try 1/3)
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: RX AssocResp from fa:48:b8:9b:59:04 (capab=0x1431 status=0 aid=4)
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: associated
Dec 17 21:12:30 archlinux-steamdeck kernel: wlo1: Limiting TX power to 20 (20 - 0) dBm as advertised by fa:48:b8:9b:59:04
Dec 17 21:14:32 archlinux-steamdeck kernel: zsh[1439]: segfault at 55f6c9e8ad21 ip 000055f3780b1107 sp 00007ffcef3fa520 error 4 in zsh[5c107,55f378065000+b5000] likely on CPU 2 (core 1, socket 0)
Dec 17 21:14:32 archlinux-steamdeck kernel: Code: 53 48 8b 3f 48 85 ff 75 21 eb 67 0f 1f 84 00 00 00 00 00 45 85 e4 74 7b 48 89 df ff 15 42 5a 08 00 48 8b 7d 00 48 85 ff 74 48 <48> 8b 07 48 8b 5f 10 48 89 45 00 48 85 c0 74 29 48 89 68 08 ff 15
Dec 17 21:15:02 archlinux-steamdeck kernel: ------------[ cut here ]------------
Dec 17 21:15:02 archlinux-steamdeck kernel: workqueue: WQ_MEM_RECLAIM sdma0:drm_sched_run_job_work [gpu_sched] is flushing !WQ_MEM_RECLAIM events:amdgpu_device_delay_enable_gfx_off [amdgpu]
Dec 17 21:15:02 archlinux-steamdeck kernel: WARNING: CPU: 4 PID: 436 at kernel/workqueue.c:3704 check_flush_dependency+0xfc/0x120
Dec 17 21:15:02 archlinux-steamdeck kernel: Modules linked in: ccm rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device cmac algif_hash algif_skcipher af_alg bnep intel_rapl_msr snd_soc_acp5x_mach intel_rapl_common snd_acp5x_i2s snd_acp5x_pcm_dma snd_sof_amd_acp70 snd_sof_amd_acp63 snd_soc_acpi_amd_match snd_sof_amd_vangogh snd_sof_amd_rembrandt snd_sof_amd_renoir snd_sof_amd_acp snd_sof_pci kvm_amd snd_sof_xtensa_dsp snd_sof snd_sof_utils kvm snd_pci_ps snd_soc_cs35l41_spi snd_amd_sdw_acpi soundwire_amd snd_soc_cs35l41 soundwire_generic_allocation snd_hda_codec_hdmi snd_soc_wm_adsp crct10dif_pclmul soundwire_bus crc32_pclmul snd_hda_intel rtw88_8822ce snd_soc_cs35l41_lib polyval_clmulni snd_soc_nau8821 cs_dsp btusb polyval_generic rtw88_8822c snd_rpl_pci_acp6x ghash_clmulni_intel snd_intel_dspcfg rtw88_pci sha512_ssse3 snd_intel_sdw_acpi btrtl sha1_ssse3 snd_acp_pci snd_soc_core rtw88_core snd_hda_codec aesni_intel snd_acp_legacy_common btintel vfat snd_compress hid_multitouch spd5118 fat gf128mul snd_hda_core crypto_simd snd_pci_acp6x btbcm
Dec 17 21:15:02 archlinux-steamdeck kernel:  ac97_bus snd_hwdep btmtk cryptd snd_pci_acp5x cdc_acm snd_pcm_dmaengine mac80211 rapl snd_rn_pci_acp3x wdat_wdt snd_pcm bluetooth snd_acp_config sp5100_tco libarc4 snd_timer snd_soc_acpi joydev mousedev cfg80211 pcspkr snd rfkill ccp snd_pci_acp3x soundcore ltrf216a opt3001 i2c_piix4 i2c_hid_acpi i2c_hid industrialio 8250_dw mac_hid i2c_smbus i2c_dev crypto_user dm_mod loop nfnetlink ip_tables x_tables hid_steam ff_memless hid_generic mmc_block rpmb_core usbhid amdgpu btrfs blake2b_generic crc16 libcrc32c amdxcp crc32c_generic i2c_algo_bit xor drm_ttm_helper raid6_pq ttm serio_raw drm_exec atkbd gpu_sched libps2 sdhci_pci drm_suballoc_helper vivaldi_fmap cqhci nvme crc32c_intel drm_buddy sdhci sha256_ssse3 drm_display_helper nvme_core cec mmc_core i8042 video nvme_auth serio wmi spi_amd
Dec 17 21:15:02 archlinux-steamdeck kernel: CPU: 4 UID: 0 PID: 436 Comm: kworker/u32:4 Not tainted 6.12.6-rc1-1home #1 c49ee701ad1a1a28c82c80281ff6159df069d19b
Dec 17 21:15:02 archlinux-steamdeck kernel: Hardware name: Valve Jupiter/Jupiter, BIOS F7A0131 01/30/2024
Dec 17 21:15:02 archlinux-steamdeck kernel: Workqueue: sdma0 drm_sched_run_job_work [gpu_sched]
Dec 17 21:15:02 archlinux-steamdeck kernel: RIP: 0010:check_flush_dependency+0xfc/0x120
Dec 17 21:15:02 archlinux-steamdeck kernel: Code: 8b 45 18 48 8d b2 c0 00 00 00 49 89 e8 48 8d 8b c0 00 00 00 48 c7 c7 e0 a1 ae a8 c6 05 29 03 16 02 01 48 89 c2 e8 04 8e fd ff <0f> 0b e9 1f ff ff ff 80 3d 14 03 16 02 00 75 93 e9 4a ff ff ff 66
Dec 17 21:15:02 archlinux-steamdeck kernel: RSP: 0018:ffffa65802707c60 EFLAGS: 00010082
Dec 17 21:15:02 archlinux-steamdeck kernel: RAX: 0000000000000000 RBX: ffff958c80050800 RCX: 0000000000000027
Dec 17 21:15:02 archlinux-steamdeck kernel: RDX: ffff958fb00218c8 RSI: 0000000000000001 RDI: ffff958fb00218c0
Dec 17 21:15:02 archlinux-steamdeck kernel: RBP: ffffffffc0a2eb00 R08: 0000000000000000 R09: ffffa65802707ae0
Dec 17 21:15:02 archlinux-steamdeck kernel: R10: ffffffffa92b54e8 R11: 0000000000000003 R12: ffff958c899b3580
Dec 17 21:15:02 archlinux-steamdeck kernel: R13: ffff958c8cc71c00 R14: ffffa65802707c90 R15: 0000000000000001
Dec 17 21:15:02 archlinux-steamdeck kernel: FS:  0000000000000000(0000) GS:ffff958fb0000000(0000) knlGS:0000000000000000
Dec 17 21:15:02 archlinux-steamdeck kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Dec 17 21:15:02 archlinux-steamdeck kernel: CR2: 00007f764c0d5000 CR3: 00000001b6222000 CR4: 0000000000350ef0
Dec 17 21:15:02 archlinux-steamdeck kernel: Call Trace:
Dec 17 21:15:02 archlinux-steamdeck kernel:  <TASK>
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? check_flush_dependency+0xfc/0x120
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? __warn.cold+0x93/0xf6
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? check_flush_dependency+0xfc/0x120
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? report_bug+0xff/0x140
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? handle_bug+0x58/0x90
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? exc_invalid_op+0x17/0x70
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? asm_exc_invalid_op+0x1a/0x20
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? __pfx_amdgpu_device_delay_enable_gfx_off+0x10/0x10 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? check_flush_dependency+0xfc/0x120
Dec 17 21:15:02 archlinux-steamdeck kernel:  __flush_work+0x110/0x2c0
Dec 17 21:15:02 archlinux-steamdeck kernel:  cancel_delayed_work_sync+0x5e/0x80
Dec 17 21:15:02 archlinux-steamdeck kernel:  amdgpu_gfx_off_ctrl+0xad/0x140 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
Dec 17 21:15:02 archlinux-steamdeck kernel:  amdgpu_ring_alloc+0x43/0x60 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
Dec 17 21:15:02 archlinux-steamdeck kernel:  amdgpu_ib_schedule+0xf0/0x730 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
Dec 17 21:15:02 archlinux-steamdeck kernel:  amdgpu_job_run+0x8c/0x170 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? mod_delayed_work_on+0xa4/0xb0
Dec 17 21:15:02 archlinux-steamdeck kernel:  drm_sched_run_job_work+0x25c/0x3f0 [gpu_sched da7f9c92395781c75e4ac0d605a4cf839a336d2f]
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? srso_return_thunk+0x5/0x5f
Dec 17 21:15:02 archlinux-steamdeck kernel:  process_one_work+0x17e/0x330
Dec 17 21:15:02 archlinux-steamdeck kernel:  worker_thread+0x2ce/0x3f0
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? __pfx_worker_thread+0x10/0x10
Dec 17 21:15:02 archlinux-steamdeck kernel:  kthread+0xd2/0x100
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? __pfx_kthread+0x10/0x10
Dec 17 21:15:02 archlinux-steamdeck kernel:  ret_from_fork+0x34/0x50
Dec 17 21:15:02 archlinux-steamdeck kernel:  ? __pfx_kthread+0x10/0x10
Dec 17 21:15:02 archlinux-steamdeck kernel:  ret_from_fork_asm+0x1a/0x30
Dec 17 21:15:02 archlinux-steamdeck kernel:  </TASK>
Dec 17 21:15:02 archlinux-steamdeck kernel: ---[ end trace 0000000000000000 ]---
Dec 17 21:18:36 archlinux-steamdeck kernel: wlo1: deauthenticating from fa:48:b8:9b:59:04 by local choice (Reason: 3=DEAUTH_LEAVING)
Dec 17 21:18:37 archlinux-steamdeck systemd-shutdown[1]: Syncing filesystems and block devices.
Dec 17 21:18:38 archlinux-steamdeck systemd-shutdown[1]: Sending SIGTERM to remaining processes...
Dec 17 21:18:38 archlinux-steamdeck systemd-journald[342]: Received SIGTERM from PID 1 (systemd-shutdow).
#179 lore raw
Quoted 16 lines · Christian Heusel
Quoted 7 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

Hey everyone,

when testing the 6.12.6-rc1 release candidate on my Steam Deck I have found that the following issue came up (once). On my laptop everything works fine and even though the issue below came up the device was ususal like always.

Quoted 5 lines

I added the relevant Maintainers into CC so they can judge if it's something serious or not. I have also added a full dmesg as an attachment. If anybody has idea about possible reproducers I would be interested in that aswell, as I only saw the issue once so far.

You might hit

https://gitlab.freedesktop.org/drm/amd/-/issues/3799

Guenter

Quoted 48 lines

Cheers,
Chris

kernel: CPU: 4 UID: 0 PID: 436 Comm: kworker/u32:4 Not tainted 6.12.6-rc1-1home #1 c49ee701ad1a1a28c82c80281ff6159df069d19b
kernel: Hardware name: Valve Jupiter/Jupiter, BIOS F7A0131 01/30/2024
kernel: Workqueue: sdma0 drm_sched_run_job_work [gpu_sched]
kernel: RIP: 0010:check_flush_dependency+0xfc/0x120
kernel: Code: 8b 45 18 48 8d b2 c0 00 00 00 49 89 e8 48 8d 8b c0 00 00 00 48 c7 c7 e0 a1 ae a8 c6 05 29 03 16 02 01 48 89 c2 e8 04 8e fd ff <0f> 0b e9 1f ff ff ff 80 3d 14 03 16 02 00 75 93 e9 4a ff ff ff 66
kernel: RSP: 0018:ffffa65802707c60 EFLAGS: 00010082
kernel: RAX: 0000000000000000 RBX: ffff958c80050800 RCX: 0000000000000027
kernel: RDX: ffff958fb00218c8 RSI: 0000000000000001 RDI: ffff958fb00218c0
kernel: RBP: ffffffffc0a2eb00 R08: 0000000000000000 R09: ffffa65802707ae0
kernel: R10: ffffffffa92b54e8 R11: 0000000000000003 R12: ffff958c899b3580
kernel: R13: ffff958c8cc71c00 R14: ffffa65802707c90 R15: 0000000000000001
kernel: FS:  0000000000000000(0000) GS:ffff958fb0000000(0000) knlGS:0000000000000000
kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kernel: CR2: 00007f764c0d5000 CR3: 00000001b6222000 CR4: 0000000000350ef0
kernel: Call Trace:
kernel:  <TASK>
kernel:  ? check_flush_dependency+0xfc/0x120
kernel:  ? __warn.cold+0x93/0xf6
kernel:  ? check_flush_dependency+0xfc/0x120
kernel:  ? report_bug+0xff/0x140
kernel:  ? handle_bug+0x58/0x90
kernel:  ? exc_invalid_op+0x17/0x70
kernel:  ? asm_exc_invalid_op+0x1a/0x20
kernel:  ? __pfx_amdgpu_device_delay_enable_gfx_off+0x10/0x10 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  ? check_flush_dependency+0xfc/0x120
kernel:  __flush_work+0x110/0x2c0
kernel:  cancel_delayed_work_sync+0x5e/0x80
kernel:  amdgpu_gfx_off_ctrl+0xad/0x140 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  amdgpu_ring_alloc+0x43/0x60 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  amdgpu_ib_schedule+0xf0/0x730 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  amdgpu_job_run+0x8c/0x170 [amdgpu 857aca8165f9b9ab3793f37419bdc9a45d24aff0]
kernel:  ? mod_delayed_work_on+0xa4/0xb0
kernel:  drm_sched_run_job_work+0x25c/0x3f0 [gpu_sched da7f9c92395781c75e4ac0d605a4cf839a336d2f]
kernel:  ? srso_return_thunk+0x5/0x5f
kernel:  process_one_work+0x17e/0x330
kernel:  worker_thread+0x2ce/0x3f0
kernel:  ? __pfx_worker_thread+0x10/0x10
kernel:  kthread+0xd2/0x100
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork+0x34/0x50
kernel:  ? __pfx_kthread+0x10/0x10
kernel:  ret_from_fork_asm+0x1a/0x30
kernel:  </TASK>
kernel: ---[ end trace 0000000000000000 ]---
Tested-by on the v1 series
#180 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

Built and booted successfully on RISC-V RV64 (HiFive Unmatched).

Tested-by on the v1 series
#181 lore raw
In reply to Greg Kroah-Hartman

Hi Greg

Quoted 10 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
        https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

6.12.6-rc1 tested.

Build successfully completed.
Boot successfully completed.
No dmesg regressions.
Video output normal.
Sound output normal.

Lenovo ThinkPad X1 Carbon Gen10(Intel i7-1260P(x86_64) arch linux)

[    0.000000] Linux version 6.12.6-rc1rv

(takeshi@ThinkPadX1Gen10J0764) (gcc (GCC) 14.2.1 20240910, GNU ld (GNU Binutils) 2.43.0) #1 SMP PREEMPT_DYNAMIC Wed Dec 18 20:05:26 JST 2024

Thanks

Tested-by on the v1 series
#183 lore raw
In reply to Greg Kroah-Hartman

Am 17.12.2024 um 18:05 schrieb Greg Kroah-Hartman:

Quoted 4 lines

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Builds, boots and works on my 2-socket Ivy Bridge Xeon E5-2697 v2 server. No dmesg oddities or regressions found.

Beste Grüße,
Peter Schneider

Signature · 8 lines
Climb the mountain not to plant your flag, but to embrace the challenge,
enjoy the air and behold the view. Climb it so you can see the world,
not so the world can see you.                    -- David McCullough Jr.

OpenPGP:  0xA3828BD796CCE11A8CADE8866E3A92C92C3FF244
Download: https://www.peters-netzplatz.de/download/pschneider1968_pub.asc
https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
#184 lore raw
In reply to Greg Kroah-Hartman
Quoted 10 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
        https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

The all i386 builds failed with the gcc-13 and clang-19 toolchain builds on following branches,
- linux-6.12.y
- linux-6.6.y
- linux-6.1.y
- linux-5.15.y
- linux-5.10.y

* i386, build
- clang-19-defconfig
- gcc-13-defconfig

Build log:
-------------
i686-linux-gnu-ld: arch/x86/kernel/static_call.o: in function `__static_call_update_early':
static_call.c:(.noinstr.text+0x15): undefined reference to `static_call_initialized'

The recent commit on this file is,
x86/static-call: provide a way to do very early static-call updates commit 0ef8047b737d7480a5d4c46d956e97c190f13050 upstream.

links:
- https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.12.y/build/v6.12.5-173-g83a2a70d2d65/testrun/26375840/suite/build/test/gcc-13-defconfig/log
- https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.12.y/build/v6.12.5-173-g83a2a70d2d65/testrun/26374171/suite/build/test/gcc-13-defconfig/history/

## Build
* kernel: 6.12.6-rc1
* git: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
* git commit: 83a2a70d2d652a062cd4373f4e09baa111160de0
* git describe: v6.12.5-173-g83a2a70d2d65
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.12.y/build/v6.12.5-173-g83a2a70d2d65

## Test Regressions (compared to v6.12.4-468-g602e3159e817)

* i386, build
- clang-19-allnoconfig
- clang-19-defconfig
- clang-19-lkftconfig-no-kselftest-frag
- clang-19-tinyconfig
- clang-nightly-allnoconfig
- clang-nightly-defconfig
- clang-nightly-lkftconfig-kselftest
- clang-nightly-tinyconfig
- gcc-13-allmodconfig
- gcc-13-allnoconfig
- gcc-13-defconfig
- gcc-13-lkftconfig-kselftest
- gcc-13-lkftconfig-no-kselftest-frag
- gcc-13-lkftconfig-perf
- gcc-13-tinyconfig
- gcc-8-allnoconfig
- gcc-8-i386_defconfig
- gcc-8-tinyconfig

## Metric Regressions (compared to v6.12.4-468-g602e3159e817)

## Test Fixes (compared to v6.12.4-468-g602e3159e817)

## Metric Fixes (compared to v6.12.4-468-g602e3159e817)

## Test result summary
total: 106171, pass: 85929, fail: 3687, skip: 16555, xfail: 0

## Build Summary
* arc: 5 total, 5 passed, 0 failed
* arm: 139 total, 137 passed, 2 failed
* arm64: 54 total, 54 passed, 0 failed
* i386: 18 total, 0 passed, 18 failed
* mips: 34 total, 33 passed, 1 failed
* parisc: 4 total, 3 passed, 1 failed
* powerpc: 40 total, 39 passed, 1 failed
* riscv: 24 total, 23 passed, 1 failed
* s390: 22 total, 21 passed, 1 failed
* sh: 5 total, 5 passed, 0 failed
* sparc: 4 total, 3 passed, 1 failed
* x86_64: 46 total, 46 passed, 0 failed

## Test suites summary
* boot
* commands
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-efivarfs
* kselftest-exec
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-filesystems-epoll
* kselftest-firmware
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-kcmp
* kselftest-kvm
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-mincore
* kselftest-mqueue
* kselftest-net
* kselftest-net-mptcp
* kselftest-openat2
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-rust
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-tc-testing
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user_events
* kselftest-vDSO
* kselftest-x86
* kunit
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-build-clang
* log-parser-build-gcc
* log-parser-test
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-hugetlb
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* perf
* rcutorture

--
Linaro LKFT
https://lkft.linaro.org

#185 lore raw
Quoted 42 lines · Naresh Kamboju
Quoted 10 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
         https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

The all i386 builds failed with the gcc-13 and clang-19 toolchain builds on following branches,
- linux-6.12.y
- linux-6.6.y
- linux-6.1.y
- linux-5.15.y
- linux-5.10.y

* i386, build
- clang-19-defconfig
- gcc-13-defconfig

Build log:
-------------
i686-linux-gnu-ld: arch/x86/kernel/static_call.o: in function `__static_call_update_early':
static_call.c:(.noinstr.text+0x15): undefined reference to `static_call_initialized'

Quoted 3 lines

The recent commit on this file is,
x86/static-call: provide a way to do very early static-call updates commit 0ef8047b737d7480a5d4c46d956e97c190f13050 upstream.

Yes, the fix is at (via one hop):
https://lore.kernel.org/all/[email protected]/

Signature · 2 lines
js
suse labs
#186 lore raw
Quoted 43 lines · Jiri Slaby
Quoted 42 lines · Naresh Kamboju
Quoted 15 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one.  If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:
         https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz
or in the git tree and branch at:
         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y and the diffstat can be found below.

Quoted 3 lines

thanks,

greg k-h

The all i386 builds failed with the gcc-13 and clang-19 toolchain builds on following branches,
  - linux-6.12.y
  - linux-6.6.y
  - linux-6.1.y
  - linux-5.15.y
  - linux-5.10.y

* i386, build
   - clang-19-defconfig
   - gcc-13-defconfig

Build log:
-------------
i686-linux-gnu-ld: arch/x86/kernel/static_call.o: in function `__static_call_update_early':
static_call.c:(.noinstr.text+0x15): undefined reference to `static_call_initialized'

Quoted 7 lines
Quoted 3 lines

The recent commit on this file is,
   x86/static-call: provide a way to do very early static-call updates commit 0ef8047b737d7480a5d4c46d956e97c190f13050 upstream.

Yes, the fix is at (via one hop):
https://lore.kernel.org/all/[email protected]/

The fix is not yet in mainline, meaning the offending patch now results in the same build failure there.

Guenter

#187 lore raw
Quoted 2 lines · Guenter Roeck

The fix is not yet in mainline, meaning the offending patch now results in the same build failure there.

It's a test, to see if anybody except the build robots actually gives a damn about i386 :-)

/me runs

#188 lore raw
Quoted 4 lines · Peter Zijlstra
Quoted 2 lines · Guenter Roeck

The fix is not yet in mainline, meaning the offending patch now results in the same build failure there.

Yes, as I wrote in the aforementioned message :).

Quoted 2 lines

It's a test, to see if anybody except the build robots actually gives a damn about i386 :-)

This is not much of a robot -- openSUSE still provides 386. As a port now. I failed to destroy that port in past several attempts :P -- there were still users.

Signature · 2 lines
js
suse labs
#189 lore raw
Quoted 6 lines · Jiri Slaby
Quoted 4 lines · Peter Zijlstra
Quoted 2 lines · Guenter Roeck

The fix is not yet in mainline, meaning the offending patch now results in the same build failure there.

Quoted 7 lines

Yes, as I wrote in the aforementioned message :).

Quoted 2 lines

It's a test, to see if anybody except the build robots actually gives a damn about i386 :-)

This is not much of a robot -- openSUSE still provides 386. As a port now. I failed to destroy that port in past several attempts :P -- there were still users.

For my part, if I get a few more of the "nobody except the build robots actually gives a damn" or "why are you testing this or "you should not be testing this" responses, I _will_ stop testing this and any other configuration where people make such statements. I am getting tired of it. If anyone doesn't want something tested, it should be dropped from the kernel or at least be marked broken or disabled for build tests.

Guenter

#190 lore raw
In reply to Peter Zijlstra
Quoted 7 lines · Peter Zijlstra
Quoted 2 lines · Guenter Roeck

The fix is not yet in mainline, meaning the offending patch now results in the same build failure there.

It's a test, to see if anybody except the build robots actually gives a damn about i386 :-)

You should run, hide, and not come back. Breaking i386 is not okay.

Best regards,
Pavel

Signature · 2 lines
DENX Software Engineering GmbH,        Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
maintainer Tested-by on the v1 series
#191 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

All tests passing for Tegra ...

Test results for stable-v6.12:

    10 builds:	10 pass, 0 fail
    26 boots:	26 pass, 0 fail
    116 tests:	116 pass, 0 fail

Linux version: 6.12.6-rc1-g83a2a70d2d65
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,

                tegra194-p2972-0000, tegra194-p3509-0000+p3668-0000,
                tegra20-ventana, tegra210-p2371-2180,
                tegra210-p3450-0000, tegra30-cardhu-a04

Jon

Tested-by on the v1 series
#192 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:

Quoted 8 lines
	https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz

or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y
and the diffstat can be found below.

thanks,

greg k-h

Tested rc1 against the Fedora build system (aarch64, ppc64le, s390x, x86_64), and boot tested x86_64. No regressions noted.

Tested-by on the v1 series
#193 lore raw
In reply to Greg Kroah-Hartman

Hi Greg,

Quoted 7 lines · Greg Kroah-Hartman

This is the start of the stable review cycle for the 6.12.6 release. There are 172 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

We now made tests for 6.12.y stable rc testing ready.

No problems seen on x86_64 and aarch64 with our testing. (Boot/ Install/ LTP so far)

We do see some problems with failing kselftests, will investigate them and report them here. They are not specific to 6.12.6, most of them were reproducible on 6.12.5, but we will have to look at all of the failing kselftests before reporting.

Thanks,
Harshit

Tested-by on the v1 series
#194 lore raw
In reply to Greg Kroah-Hartman
Quoted 9 lines · On Tue, 17 Dec 2024 18:05:56 +0100 Greg Kroah-Hartman…

Responses should be made by Thu, 19 Dec 2024 17:05:03 +0000. Anything received after that time might be too late.

The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.12.6-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.12.y and the diffstat can be found below.

(Late reply, but for the record)

Boot-tested under QEMU for Rust x86_64, arm64 and riscv64; built-tested for loongarch64:

Thanks!

Cheers,
Miguel