Skip to content

Commit 0c4842d

Browse files
authored
Merge branch 'rpi-6.12.y' into bugfix/txp-atomic-check
2 parents 950266e + f761351 commit 0c4842d

File tree

254 files changed

+2823
-1465
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

254 files changed

+2823
-1465
lines changed

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7249,6 +7249,9 @@
72497249
p = USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT
72507250
(Reduce timeout of the SET_ADDRESS
72517251
request from 5000 ms to 500 ms);
7252+
q = USB_QUIRK_FORCE_ONE_CONFIG (Device
7253+
claims zero configurations,
7254+
forcing to 1);
72527255
Example: quirks=0781:5580:bk,0a5c:5834:gij
72537256

72547257
usbhid.mousepoll=

Documentation/filesystems/overlayfs.rst

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,56 @@ controlled by the "uuid" mount option, which supports these values:
745745
mounted with "uuid=on".
746746

747747

748+
Durability and copy up
749+
----------------------
750+
751+
The fsync(2) system call ensures that the data and metadata of a file
752+
are safely written to the backing storage, which is expected to
753+
guarantee the existence of the information post system crash.
754+
755+
Without an fsync(2) call, there is no guarantee that the observed
756+
data after a system crash will be either the old or the new data, but
757+
in practice, the observed data after crash is often the old or new data
758+
or a mix of both.
759+
760+
When an overlayfs file is modified for the first time, copy up will
761+
create a copy of the lower file and its parent directories in the upper
762+
layer. Since the Linux filesystem API does not enforce any particular
763+
ordering on storing changes without explicit fsync(2) calls, in case
764+
of a system crash, the upper file could end up with no data at all
765+
(i.e. zeros), which would be an unusual outcome. To avoid this
766+
experience, overlayfs calls fsync(2) on the upper file before completing
767+
data copy up with rename(2) or link(2) to make the copy up "atomic".
768+
769+
By default, overlayfs does not explicitly call fsync(2) on copied up
770+
directories or on metadata-only copy up, so it provides no guarantee to
771+
persist the user's modification unless the user calls fsync(2).
772+
The fsync during copy up only guarantees that if a copy up is observed
773+
after a crash, the observed data is not zeroes or intermediate values
774+
from the copy up staging area.
775+
776+
On traditional local filesystems with a single journal (e.g. ext4, xfs),
777+
fsync on a file also persists the parent directory changes, because they
778+
are usually modified in the same transaction, so metadata durability during
779+
data copy up effectively comes for free. Overlayfs further limits risk by
780+
disallowing network filesystems as upper layer.
781+
782+
Overlayfs can be tuned to prefer performance or durability when storing
783+
to the underlying upper layer. This is controlled by the "fsync" mount
784+
option, which supports these values:
785+
786+
- "auto": (default)
787+
Call fsync(2) on upper file before completion of data copy up.
788+
No explicit fsync(2) on directory or metadata-only copy up.
789+
- "strict":
790+
Call fsync(2) on upper file and directories before completion of any
791+
copy up.
792+
- "volatile": [*]
793+
Prefer performance over durability (see `Volatile mount`_)
794+
795+
[*] The mount option "volatile" is an alias to "fsync=volatile".
796+
797+
748798
Volatile mount
749799
--------------
750800

Documentation/hwmon/adm1177.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ for details.
2727
Sysfs entries
2828
-------------
2929

30-
The following attributes are supported. Current maxim attribute
30+
The following attributes are supported. Current maximum attribute
3131
is read-write, all other attributes are read-only.
3232

33-
in0_input Measured voltage in microvolts.
33+
in0_input Measured voltage in millivolts.
3434

35-
curr1_input Measured current in microamperes.
36-
curr1_max_alarm Overcurrent alarm in microamperes.
35+
curr1_input Measured current in milliamperes.
36+
curr1_max Overcurrent shutdown threshold in milliamperes.

Documentation/hwmon/peci-cputemp.rst

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,9 @@ temp1_max Provides thermal control temperature of the CPU package
5151
temp1_crit Provides shutdown temperature of the CPU package which
5252
is also known as the maximum processor junction
5353
temperature, Tjmax or Tprochot.
54-
temp1_crit_hyst Provides the hysteresis value from Tcontrol to Tjmax of
55-
the CPU package.
54+
temp1_crit_hyst Provides the hysteresis temperature of the CPU
55+
package. Returns Tcontrol, the temperature at which
56+
the critical condition clears.
5657

5758
temp2_label "DTS"
5859
temp2_input Provides current temperature of the CPU package scaled
@@ -62,8 +63,9 @@ temp2_max Provides thermal control temperature of the CPU package
6263
temp2_crit Provides shutdown temperature of the CPU package which
6364
is also known as the maximum processor junction
6465
temperature, Tjmax or Tprochot.
65-
temp2_crit_hyst Provides the hysteresis value from Tcontrol to Tjmax of
66-
the CPU package.
66+
temp2_crit_hyst Provides the hysteresis temperature of the CPU
67+
package. Returns Tcontrol, the temperature at which
68+
the critical condition clears.
6769

6870
temp3_label "Tcontrol"
6971
temp3_input Provides current Tcontrol temperature of the CPU

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0
22
VERSION = 6
33
PATCHLEVEL = 12
4-
SUBLEVEL = 79
4+
SUBLEVEL = 80
55
EXTRAVERSION =
66
NAME = Baby Opossum Posse
77

arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@
6464
};
6565
};
6666

67+
&reg_usdhc2_vqmmc {
68+
status = "okay";
69+
};
70+
6771
&sai3 {
6872
assigned-clocks = <&clk IMX8MN_CLK_SAI3>;
6973
assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
@@ -207,8 +211,7 @@
207211
<MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>,
208212
<MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>,
209213
<MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>,
210-
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>,
211-
<MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>;
214+
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>;
212215
};
213216

214217
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
@@ -217,8 +220,7 @@
217220
<MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>,
218221
<MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>,
219222
<MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>,
220-
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>,
221-
<MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>;
223+
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>;
222224
};
223225

224226
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
@@ -227,8 +229,7 @@
227229
<MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4>,
228230
<MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4>,
229231
<MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4>,
230-
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>,
231-
<MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x84>;
232+
<MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4>;
232233
};
233234

234235
pinctrl_usdhc2_gpio: usdhc2-gpiogrp {

arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@
3030
regulator-max-microvolt = <3300000>;
3131
};
3232

33+
reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
34+
compatible = "regulator-gpio";
35+
pinctrl-names = "default";
36+
pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>;
37+
regulator-name = "V_SD2";
38+
regulator-min-microvolt = <1800000>;
39+
regulator-max-microvolt = <3300000>;
40+
gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
41+
states = <1800000 0x1>,
42+
<3300000 0x0>;
43+
vin-supply = <&ldo5_reg>;
44+
status = "disabled";
45+
};
46+
3347
reserved-memory {
3448
#address-cells = <2>;
3549
#size-cells = <2>;
@@ -228,6 +242,10 @@
228242
vddio-supply = <&ldo3_reg>;
229243
};
230244

245+
&usdhc2 {
246+
vqmmc-supply = <&reg_usdhc2_vqmmc>;
247+
};
248+
231249
&usdhc3 {
232250
pinctrl-names = "default", "state_100mhz", "state_200mhz";
233251
pinctrl-0 = <&pinctrl_usdhc3>;
@@ -282,6 +300,10 @@
282300
fsl,pins = <MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x84>;
283301
};
284302

303+
pinctrl_reg_usdhc2_vqmmc: regusdhc2vqmmcgrp {
304+
fsl,pins = <MX8MN_IOMUXC_GPIO1_IO04_GPIO1_IO4 0xc0>;
305+
};
306+
285307
pinctrl_usdhc3: usdhc3grp {
286308
fsl,pins = <MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x1d4>,
287309
<MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d2>,

arch/arm64/kvm/reset.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,20 @@ void kvm_reset_vcpu(struct kvm_vcpu *vcpu)
257257
kvm_vcpu_set_be(vcpu);
258258

259259
*vcpu_pc(vcpu) = target_pc;
260+
261+
/*
262+
* We may come from a state where either a PC update was
263+
* pending (SMC call resulting in PC being increpented to
264+
* skip the SMC) or a pending exception. Make sure we get
265+
* rid of all that, as this cannot be valid out of reset.
266+
*
267+
* Note that clearing the exception mask also clears PC
268+
* updates, but that's an implementation detail, and we
269+
* really want to make it explicit.
270+
*/
271+
vcpu_clear_flag(vcpu, PENDING_EXCEPTION);
272+
vcpu_clear_flag(vcpu, EXCEPT_MASK);
273+
vcpu_clear_flag(vcpu, INCREMENT_PC);
260274
vcpu_set_reg(vcpu, 0, reset_state.r0);
261275
}
262276

arch/loongarch/include/asm/linkage.h

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,40 @@
4141
.cfi_endproc; \
4242
SYM_END(name, SYM_T_NONE)
4343

44+
/*
45+
* This is for the signal handler trampoline, which is used as the return
46+
* address of the signal handlers in userspace instead of called normally.
47+
* The long standing libgcc bug https://gcc.gnu.org/PR124050 requires a
48+
* nop between .cfi_startproc and the actual address of the trampoline, so
49+
* we cannot simply use SYM_FUNC_START.
50+
*
51+
* This wrapper also contains all the .cfi_* directives for recovering
52+
* the content of the GPRs and the "return address" (where the rt_sigreturn
53+
* syscall will jump to), assuming there is a struct rt_sigframe (where
54+
* a struct sigcontext containing those information we need to recover) at
55+
* $sp. The "DWARF for the LoongArch(TM) Architecture" manual states
56+
* column 0 is for $zero, but it does not make too much sense to
57+
* save/restore the hardware zero register. Repurpose this column here
58+
* for the return address (here it's not the content of $ra we cannot use
59+
* the default column 3).
60+
*/
61+
#define SYM_SIGFUNC_START(name) \
62+
.cfi_startproc; \
63+
.cfi_signal_frame; \
64+
.cfi_def_cfa 3, RT_SIGFRAME_SC; \
65+
.cfi_return_column 0; \
66+
.cfi_offset 0, SC_PC; \
67+
\
68+
.irp num, 1, 2, 3, 4, 5, 6, 7, 8, \
69+
9, 10, 11, 12, 13, 14, 15, 16, \
70+
17, 18, 19, 20, 21, 22, 23, 24, \
71+
25, 26, 27, 28, 29, 30, 31; \
72+
.cfi_offset \num, SC_REGS + \num * SZREG; \
73+
.endr; \
74+
\
75+
nop; \
76+
SYM_START(name, SYM_L_GLOBAL, SYM_A_ALIGN)
77+
78+
#define SYM_SIGFUNC_END(name) SYM_FUNC_END(name)
79+
4480
#endif
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/* SPDX-License-Identifier: GPL-2.0+ */
2+
3+
#include <asm/siginfo.h>
4+
#include <asm/ucontext.h>
5+
6+
struct rt_sigframe {
7+
struct siginfo rs_info;
8+
struct ucontext rs_uctx;
9+
};

0 commit comments

Comments
 (0)