workspace: update linux to 6.12.15

Switch to the current 6.12 LTS branch and rebase the patches.
Also switch to using savedefconfig for config instead of just including
the entire thing. This makes it much more readable as it only contains
settings we've touched.

Change-Id: I2b15944f0083399290a2539c42e37205e839bf36
Reviewed-on: https://review.monogon.dev/c/monogon/+/3908
Tested-by: Jenkins CI
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
diff --git a/third_party/linux/patches/0001-block-partition-expose-PARTUUID-through-uevent.patch b/third_party/linux/patches/0001-block-partition-expose-PARTUUID-through-uevent.patch
index ad25836..ce2517e 100644
--- a/third_party/linux/patches/0001-block-partition-expose-PARTUUID-through-uevent.patch
+++ b/third_party/linux/patches/0001-block-partition-expose-PARTUUID-through-uevent.patch
@@ -1,4 +1,4 @@
-From 114d7d050fee217ec68bf7caee9e0ae465fec732 Mon Sep 17 00:00:00 2001
+From 9693b78c15c8d925b80d976de715302e422c312e Mon Sep 17 00:00:00 2001
 From: Mateusz Zalega <mateusz@monogon.tech>
 Date: Tue, 19 Oct 2021 18:18:14 +0200
 Subject: [PATCH] block: partition: expose PARTUUID through uevent
@@ -9,11 +9,11 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/block/partitions/core.c b/block/partitions/core.c
-index 7bea19dd9458..5a42f0b0eb8f 100644
+index 5bd7a603092e..aa54c1f4eaa5 100644
 --- a/block/partitions/core.c
 +++ b/block/partitions/core.c
-@@ -270,6 +270,8 @@ static int part_uevent(struct device *dev, struct kobj_uevent_env *env)
- 	add_uevent_var(env, "PARTN=%u", part->bd_partno);
+@@ -253,6 +253,8 @@ static int part_uevent(const struct device *dev, struct kobj_uevent_env *env)
+ 	add_uevent_var(env, "PARTN=%u", bdev_partno(part));
  	if (part->bd_meta_info && part->bd_meta_info->volname[0])
  		add_uevent_var(env, "PARTNAME=%s", part->bd_meta_info->volname);
 +	if (part->bd_meta_info && part->bd_meta_info->uuid[0])
diff --git a/third_party/linux/patches/disable-static-ifs.patch b/third_party/linux/patches/disable-static-ifs.patch
index 8ffad1e..78ba491 100644
--- a/third_party/linux/patches/disable-static-ifs.patch
+++ b/third_party/linux/patches/disable-static-ifs.patch
@@ -1,3 +1,4 @@
+
 A few virtual drivers (bonding, dummy) predate netlink (~2003), which means that
 the kernel had no way to dynamically create network interfaces.
 The solution was kernel module paramter which statically precreated a list of
diff --git a/third_party/linux/patches/enable-pmsg.patch b/third_party/linux/patches/enable-pmsg.patch
index 8886d94..11b67cb 100644
--- a/third_party/linux/patches/enable-pmsg.patch
+++ b/third_party/linux/patches/enable-pmsg.patch
@@ -1,10 +1,20 @@
-This enables pstore for userspace messages for the ACPI ERST as well as the
-EFI variable pstore backend, both of which are expected to be used frequently
-with Metropolis. We need that to reliably store panics of core processes
-regardless of the system state. This is not enabled upstream, either because
-pmsg was a later addition to pstore or for concerns of accidentally running
-out of pstore space. We work around the limited space issue by always clearing
-pstore after every boot, so this poses little extra risk to us.
+From 9558d3ae7a94a56e64e1ba00469b21c721323d0c Mon Sep 17 00:00:00 2001
+From: Lorenz Brun <lorenz@monogon.tech>
+Date: Mon, 29 Jan 2024 22:17:13 +0100
+Subject: [PATCH] drivers: pstore: enable pmsg for ERST and EFI backends
+
+This enables pstore for userspace messages for the ACPI ERST as well as
+the EFI variable pstore backend, both of which are expected to be used
+frequently with Metropolis. We need that to reliably store panics of
+core processes regardless of the system state. This is not enabled
+upstream, either because pmsg was a later addition to pstore or for
+concerns of accidentally running out of pstore space. We work around
+the limited space issue by always clearing pstore after every boot, so
+this poses little extra risk to us.
+---
+ drivers/acpi/apei/erst.c          | 2 +-
+ drivers/firmware/efi/efi-pstore.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
 index bf65e3461531..fe2c331b4b99 100644
@@ -20,10 +30,10 @@
  	.close		= erst_close_pstore,
  	.read		= erst_reader,
 diff --git a/drivers/firmware/efi/efi-pstore.c b/drivers/firmware/efi/efi-pstore.c
-index e7b9ec6f8a86..7570499b46e0 100644
+index 552c78f5f059..9e5651fd1439 100644
 --- a/drivers/firmware/efi/efi-pstore.c
 +++ b/drivers/firmware/efi/efi-pstore.c
-@@ -210,7 +210,7 @@ static int efi_pstore_erase(struct pstore_record *record)
+@@ -245,7 +245,7 @@ static int efi_pstore_erase(struct pstore_record *record)
  static struct pstore_info efi_pstore_info = {
  	.owner		= THIS_MODULE,
  	.name		= KBUILD_MODNAME,
@@ -32,3 +42,6 @@
  	.open		= efi_pstore_open,
  	.close		= efi_pstore_close,
  	.read		= efi_pstore_read,
+-- 
+2.47.2
+
diff --git a/third_party/linux/patches/fb-devs-knob.patch b/third_party/linux/patches/fb-devs-knob.patch
index 5f8c409..1054461 100644
--- a/third_party/linux/patches/fb-devs-knob.patch
+++ b/third_party/linux/patches/fb-devs-knob.patch
@@ -1,4 +1,4 @@
-From 884ecf096ba58528cca2a4c4be4b30089036a55a Mon Sep 17 00:00:00 2001
+From c3812bf1e990bdb282fd27cfa3dc3987e5a80607 Mon Sep 17 00:00:00 2001
 From: Lorenz Brun <lorenz@monogon.tech>
 Date: Thu, 12 Sep 2024 17:22:04 +0200
 Subject: [PATCH] net: add config option for tunnel fallback devs
@@ -18,10 +18,10 @@
  2 files changed, 34 insertions(+), 1 deletion(-)
 
 diff --git a/net/Kconfig b/net/Kconfig
-index d27d0deac0bf..bc3f70f81b5e 100644
+index a629f92dc86b..13d508908a66 100644
 --- a/net/Kconfig
 +++ b/net/Kconfig
-@@ -447,6 +447,39 @@ config LWTUNNEL_BPF
+@@ -453,6 +453,39 @@ config LWTUNNEL_BPF
  	  Allows to run BPF programs as a nexthop action following a route
  	  lookup for incoming and outgoing packets.
  
@@ -62,7 +62,7 @@
  	bool
  	default n
 diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
-index 86a2476678c4..d9a0b13ceb4a 100644
+index 5dd54a813398..45d0d5dab5ff 100644
 --- a/net/core/sysctl_net_core.c
 +++ b/net/core/sysctl_net_core.c
 @@ -37,7 +37,7 @@ static int min_mem_pcpu_rsv = SK_MEMORY_PCPU_RESERVE;
@@ -75,5 +75,5 @@
  
  /* 0 - Keep current behavior:
 -- 
-2.44.1
+2.47.2
 
diff --git a/third_party/linux/patches/lacp_fix.patch b/third_party/linux/patches/lacp_fix.patch
index b1eecfb..722c25b 100644
--- a/third_party/linux/patches/lacp_fix.patch
+++ b/third_party/linux/patches/lacp_fix.patch
@@ -1,4 +1,4 @@
-From dd369885e1c0e3a6eff97db6acc5c765ee5dd421 Mon Sep 17 00:00:00 2001
+From faa5b0ac734399a5dd4458545484d22b2234c184 Mon Sep 17 00:00:00 2001
 From: Lorenz Brun <lorenz@monogon.tech>
 Date: Thu, 2 May 2024 10:17:14 +0200
 Subject: [PATCH] bonding: 3ad: fix carrier and tx with no active ports
@@ -13,10 +13,10 @@
  1 file changed, 21 insertions(+), 18 deletions(-)
 
 diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
-index c99ffe6c683a..a310c27ea659 100644
+index c6807e473ab7..27dc5f2f8cf1 100644
 --- a/drivers/net/bonding/bond_3ad.c
 +++ b/drivers/net/bonding/bond_3ad.c
-@@ -699,6 +699,22 @@ static int __agg_active_ports(struct aggregator *agg)
+@@ -746,6 +746,22 @@ static int __agg_active_ports(struct aggregator *agg)
  	return active;
  }
  
@@ -29,7 +29,7 @@
 +
 +	for (port = agg->lag_ports; port;
 +	     port = port->next_port_in_aggregator) {
-+		if (__port_is_enabled(port))
++		if (__port_is_collecting_distributing(port))
 +			en_count++;
 +	}
 +
@@ -39,7 +39,7 @@
  /**
   * __get_agg_bandwidth - get the total bandwidth of an aggregator
   * @aggregator: the aggregator we're looking at
-@@ -1086,6 +1102,8 @@ static void ad_mux_machine(struct port *port, bool *update_slave_arr)
+@@ -1186,6 +1202,8 @@ static void ad_mux_machine(struct port *port, bool *update_slave_arr)
  			break;
  		}
  	}
@@ -48,7 +48,7 @@
  }
  
  /**
-@@ -1780,21 +1798,6 @@ static void ad_agg_selection_logic(struct aggregator *agg,
+@@ -1880,21 +1898,6 @@ static void ad_agg_selection_logic(struct aggregator *agg,
  		*update_slave_arr = true;
  	}
  
@@ -70,7 +70,7 @@
  	rcu_read_unlock();
  
  	bond_3ad_set_carrier(bond);
-@@ -1852,7 +1855,7 @@ static void ad_initialize_port(struct port *port, int lacp_fast)
+@@ -1952,7 +1955,7 @@ static void ad_initialize_port(struct port *port, int lacp_fast)
  		.key             = 1,
  		.port_number     = 1,
  		.port_priority   = 0xff,
@@ -79,7 +79,7 @@
  	};
  	static const struct lacpdu lacpdu = {
  		.subtype		= 0x01,
-@@ -1994,7 +1997,7 @@ static void ad_marker_response_received(struct bond_marker *marker,
+@@ -2129,7 +2132,7 @@ static void ad_marker_response_received(struct bond_marker *marker,
  /* ========= AD exported functions to the main bonding code ========= */
  
  /* Check aggregators status in team every T seconds */
@@ -88,7 +88,7 @@
  
  /**
   * bond_3ad_initiate_agg_selection - initate aggregator selection
-@@ -2619,7 +2622,7 @@ int bond_3ad_set_carrier(struct bonding *bond)
+@@ -2754,7 +2757,7 @@ int bond_3ad_set_carrier(struct bonding *bond)
  	active = __get_active_agg(&(SLAVE_AD_INFO(first_slave)->aggregator));
  	if (active) {
  		/* are enough slaves available to consider link up? */
@@ -98,5 +98,5 @@
  				netif_carrier_off(bond->dev);
  				goto out;
 -- 
-2.42.0
+2.47.2