Merge 6.9-rc5 into driver-core-next

We want the kernfs fixes in here as well.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Greg Kroah-Hartman 2024-04-23 13:27:43 +02:00
commit e5019b1423
1346 changed files with 19980 additions and 9202 deletions

View file

@ -20,6 +20,7 @@ Adam Oldham <oldhamca@gmail.com>
Adam Radford <aradford@gmail.com> Adam Radford <aradford@gmail.com>
Adriana Reus <adi.reus@gmail.com> <adriana.reus@intel.com> Adriana Reus <adi.reus@gmail.com> <adriana.reus@intel.com>
Adrian Bunk <bunk@stusta.de> Adrian Bunk <bunk@stusta.de>
Ajay Kaher <ajay.kaher@broadcom.com> <akaher@vmware.com>
Akhil P Oommen <quic_akhilpo@quicinc.com> <akhilpo@codeaurora.org> Akhil P Oommen <quic_akhilpo@quicinc.com> <akhilpo@codeaurora.org>
Alan Cox <alan@lxorguk.ukuu.org.uk> Alan Cox <alan@lxorguk.ukuu.org.uk>
Alan Cox <root@hraefn.swansea.linux.org.uk> Alan Cox <root@hraefn.swansea.linux.org.uk>
@ -36,6 +37,7 @@ Alexei Avshalom Lazar <quic_ailizaro@quicinc.com> <ailizaro@codeaurora.org>
Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com> Alexei Starovoitov <ast@kernel.org> <alexei.starovoitov@gmail.com>
Alexei Starovoitov <ast@kernel.org> <ast@fb.com> Alexei Starovoitov <ast@kernel.org> <ast@fb.com>
Alexei Starovoitov <ast@kernel.org> <ast@plumgrid.com> Alexei Starovoitov <ast@kernel.org> <ast@plumgrid.com>
Alexey Makhalov <alexey.amakhalov@broadcom.com> <amakhalov@vmware.com>
Alex Hung <alexhung@gmail.com> <alex.hung@canonical.com> Alex Hung <alexhung@gmail.com> <alex.hung@canonical.com>
Alex Shi <alexs@kernel.org> <alex.shi@intel.com> Alex Shi <alexs@kernel.org> <alex.shi@intel.com>
Alex Shi <alexs@kernel.org> <alex.shi@linaro.org> Alex Shi <alexs@kernel.org> <alex.shi@linaro.org>
@ -110,6 +112,7 @@ Brendan Higgins <brendan.higgins@linux.dev> <brendanhiggins@google.com>
Brian Avery <b.avery@hp.com> Brian Avery <b.avery@hp.com>
Brian King <brking@us.ibm.com> Brian King <brking@us.ibm.com>
Brian Silverman <bsilver16384@gmail.com> <brian.silverman@bluerivertech.com> Brian Silverman <bsilver16384@gmail.com> <brian.silverman@bluerivertech.com>
Bryan Tan <bryan-bt.tan@broadcom.com> <bryantan@vmware.com>
Cai Huoqing <cai.huoqing@linux.dev> <caihuoqing@baidu.com> Cai Huoqing <cai.huoqing@linux.dev> <caihuoqing@baidu.com>
Can Guo <quic_cang@quicinc.com> <cang@codeaurora.org> Can Guo <quic_cang@quicinc.com> <cang@codeaurora.org>
Carl Huang <quic_cjhuang@quicinc.com> <cjhuang@codeaurora.org> Carl Huang <quic_cjhuang@quicinc.com> <cjhuang@codeaurora.org>
@ -340,7 +343,8 @@ Lee Jones <lee@kernel.org> <joneslee@google.com>
Lee Jones <lee@kernel.org> <lee.jones@canonical.com> Lee Jones <lee@kernel.org> <lee.jones@canonical.com>
Lee Jones <lee@kernel.org> <lee.jones@linaro.org> Lee Jones <lee@kernel.org> <lee.jones@linaro.org>
Lee Jones <lee@kernel.org> <lee@ubuntu.com> Lee Jones <lee@kernel.org> <lee@ubuntu.com>
Leonard Crestez <leonard.crestez@nxp.com> Leonard Crestez <cdleonard@gmail.com> Leonard Crestez <cdleonard@gmail.com> <leonard.crestez@nxp.com>
Leonard Crestez <cdleonard@gmail.com> <leonard.crestez@intel.com>
Leonardo Bras <leobras.c@gmail.com> <leonardo@linux.ibm.com> Leonardo Bras <leobras.c@gmail.com> <leonardo@linux.ibm.com>
Leonard Göhrs <l.goehrs@pengutronix.de> Leonard Göhrs <l.goehrs@pengutronix.de>
Leonid I Ananiev <leonid.i.ananiev@intel.com> Leonid I Ananiev <leonid.i.ananiev@intel.com>
@ -442,7 +446,8 @@ Mythri P K <mythripk@ti.com>
Nadav Amit <nadav.amit@gmail.com> <namit@vmware.com> Nadav Amit <nadav.amit@gmail.com> <namit@vmware.com>
Nadav Amit <nadav.amit@gmail.com> <namit@cs.technion.ac.il> Nadav Amit <nadav.amit@gmail.com> <namit@cs.technion.ac.il>
Nadia Yvette Chambers <nyc@holomorphy.com> William Lee Irwin III <wli@holomorphy.com> Nadia Yvette Chambers <nyc@holomorphy.com> William Lee Irwin III <wli@holomorphy.com>
Naoya Horiguchi <naoya.horiguchi@nec.com> <n-horiguchi@ah.jp.nec.com> Naoya Horiguchi <nao.horiguchi@gmail.com> <n-horiguchi@ah.jp.nec.com>
Naoya Horiguchi <nao.horiguchi@gmail.com> <naoya.horiguchi@nec.com>
Nathan Chancellor <nathan@kernel.org> <natechancellor@gmail.com> Nathan Chancellor <nathan@kernel.org> <natechancellor@gmail.com>
Neeraj Upadhyay <quic_neeraju@quicinc.com> <neeraju@codeaurora.org> Neeraj Upadhyay <quic_neeraju@quicinc.com> <neeraju@codeaurora.org>
Neil Armstrong <neil.armstrong@linaro.org> <narmstrong@baylibre.com> Neil Armstrong <neil.armstrong@linaro.org> <narmstrong@baylibre.com>
@ -497,7 +502,8 @@ Prasad Sodagudi <quic_psodagud@quicinc.com> <psodagud@codeaurora.org>
Punit Agrawal <punitagrawal@gmail.com> <punit.agrawal@arm.com> Punit Agrawal <punitagrawal@gmail.com> <punit.agrawal@arm.com>
Qais Yousef <qyousef@layalina.io> <qais.yousef@imgtec.com> Qais Yousef <qyousef@layalina.io> <qais.yousef@imgtec.com>
Qais Yousef <qyousef@layalina.io> <qais.yousef@arm.com> Qais Yousef <qyousef@layalina.io> <qais.yousef@arm.com>
Quentin Monnet <quentin@isovalent.com> <quentin.monnet@netronome.com> Quentin Monnet <qmo@kernel.org> <quentin.monnet@netronome.com>
Quentin Monnet <qmo@kernel.org> <quentin@isovalent.com>
Quentin Perret <qperret@qperret.net> <quentin.perret@arm.com> Quentin Perret <qperret@qperret.net> <quentin.perret@arm.com>
Rafael J. Wysocki <rjw@rjwysocki.net> <rjw@sisk.pl> Rafael J. Wysocki <rjw@rjwysocki.net> <rjw@sisk.pl>
Rajeev Nandan <quic_rajeevny@quicinc.com> <rajeevny@codeaurora.org> Rajeev Nandan <quic_rajeevny@quicinc.com> <rajeevny@codeaurora.org>
@ -519,6 +525,7 @@ Rémi Denis-Courmont <rdenis@simphalempin.com>
Ricardo Ribalda <ribalda@kernel.org> <ricardo@ribalda.com> Ricardo Ribalda <ribalda@kernel.org> <ricardo@ribalda.com>
Ricardo Ribalda <ribalda@kernel.org> Ricardo Ribalda Delgado <ribalda@kernel.org> Ricardo Ribalda <ribalda@kernel.org> Ricardo Ribalda Delgado <ribalda@kernel.org>
Ricardo Ribalda <ribalda@kernel.org> <ricardo.ribalda@gmail.com> Ricardo Ribalda <ribalda@kernel.org> <ricardo.ribalda@gmail.com>
Richard Genoud <richard.genoud@bootlin.com> <richard.genoud@gmail.com>
Richard Leitner <richard.leitner@linux.dev> <dev@g0hl1n.net> Richard Leitner <richard.leitner@linux.dev> <dev@g0hl1n.net>
Richard Leitner <richard.leitner@linux.dev> <me@g0hl1n.net> Richard Leitner <richard.leitner@linux.dev> <me@g0hl1n.net>
Richard Leitner <richard.leitner@linux.dev> <richard.leitner@skidata.com> Richard Leitner <richard.leitner@linux.dev> <richard.leitner@skidata.com>
@ -527,6 +534,7 @@ Rocky Liao <quic_rjliao@quicinc.com> <rjliao@codeaurora.org>
Roman Gushchin <roman.gushchin@linux.dev> <guro@fb.com> Roman Gushchin <roman.gushchin@linux.dev> <guro@fb.com>
Roman Gushchin <roman.gushchin@linux.dev> <guroan@gmail.com> Roman Gushchin <roman.gushchin@linux.dev> <guroan@gmail.com>
Roman Gushchin <roman.gushchin@linux.dev> <klamm@yandex-team.ru> Roman Gushchin <roman.gushchin@linux.dev> <klamm@yandex-team.ru>
Ronak Doshi <ronak.doshi@broadcom.com> <doshir@vmware.com>
Muchun Song <muchun.song@linux.dev> <songmuchun@bytedance.com> Muchun Song <muchun.song@linux.dev> <songmuchun@bytedance.com>
Muchun Song <muchun.song@linux.dev> <smuchun@gmail.com> Muchun Song <muchun.song@linux.dev> <smuchun@gmail.com>
Ross Zwisler <zwisler@kernel.org> <ross.zwisler@linux.intel.com> Ross Zwisler <zwisler@kernel.org> <ross.zwisler@linux.intel.com>
@ -649,6 +657,7 @@ Viresh Kumar <vireshk@kernel.org> <viresh.kumar@st.com>
Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com> Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
Viresh Kumar <viresh.kumar@linaro.org> <viresh.kumar@linaro.org> Viresh Kumar <viresh.kumar@linaro.org> <viresh.kumar@linaro.org>
Viresh Kumar <viresh.kumar@linaro.org> <viresh.kumar@linaro.com> Viresh Kumar <viresh.kumar@linaro.org> <viresh.kumar@linaro.com>
Vishnu Dasa <vishnu.dasa@broadcom.com> <vdasa@vmware.com>
Vivek Aknurwar <quic_viveka@quicinc.com> <viveka@codeaurora.org> Vivek Aknurwar <quic_viveka@quicinc.com> <viveka@codeaurora.org>
Vivien Didelot <vivien.didelot@gmail.com> <vivien.didelot@savoirfairelinux.com> Vivien Didelot <vivien.didelot@gmail.com> <vivien.didelot@savoirfairelinux.com>
Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com> Vlad Dogaru <ddvlad@gmail.com> <vlad.dogaru@intel.com>

View file

@ -3146,6 +3146,10 @@ S: Triftstra=DFe 55
S: 13353 Berlin S: 13353 Berlin
S: Germany S: Germany
N: Gustavo Pimental
E: gustavo.pimentel@synopsys.com
D: PCI driver for Synopsys DesignWare
N: Emanuel Pirker N: Emanuel Pirker
E: epirker@edu.uni-klu.ac.at E: epirker@edu.uni-klu.ac.at
D: AIC5800 IEEE 1394, RAW I/O on 1394 D: AIC5800 IEEE 1394, RAW I/O on 1394

View file

@ -138,11 +138,10 @@ associated with the source address of the indirect branch. Specifically,
the BHB might be shared across privilege levels even in the presence of the BHB might be shared across privilege levels even in the presence of
Enhanced IBRS. Enhanced IBRS.
Currently the only known real-world BHB attack vector is via Previously the only known real-world BHB attack vector was via unprivileged
unprivileged eBPF. Therefore, it's highly recommended to not enable eBPF. Further research has found attacks that don't require unprivileged eBPF.
unprivileged eBPF, especially when eIBRS is used (without retpolines). For a full mitigation against BHB attacks it is recommended to set BHI_DIS_S or
For a full mitigation against BHB attacks, it's recommended to use use the BHB clearing sequence.
retpolines (or eIBRS combined with retpolines).
Attack scenarios Attack scenarios
---------------- ----------------
@ -430,6 +429,23 @@ The possible values in this file are:
'PBRSB-eIBRS: Not affected' CPU is not affected by PBRSB 'PBRSB-eIBRS: Not affected' CPU is not affected by PBRSB
=========================== ======================================================= =========================== =======================================================
- Branch History Injection (BHI) protection status:
.. list-table::
* - BHI: Not affected
- System is not affected
* - BHI: Retpoline
- System is protected by retpoline
* - BHI: BHI_DIS_S
- System is protected by BHI_DIS_S
* - BHI: SW loop, KVM SW loop
- System is protected by software clearing sequence
* - BHI: Vulnerable
- System is vulnerable to BHI
* - BHI: Vulnerable, KVM: SW loop
- System is vulnerable; KVM is protected by software clearing sequence
Full mitigation might require a microcode update from the CPU Full mitigation might require a microcode update from the CPU
vendor. When the necessary microcode is not available, the kernel will vendor. When the necessary microcode is not available, the kernel will
report vulnerability. report vulnerability.
@ -484,7 +500,11 @@ Spectre variant 2
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
boot, by setting the IBRS bit, and they're automatically protected against boot, by setting the IBRS bit, and they're automatically protected against
Spectre v2 variant attacks. some Spectre v2 variant attacks. The BHB can still influence the choice of
indirect branch predictor entry, and although branch predictor entries are
isolated between modes when eIBRS is enabled, the BHB itself is not isolated
between modes. Systems which support BHI_DIS_S will set it to protect against
BHI attacks.
On Intel's enhanced IBRS systems, this includes cross-thread branch target On Intel's enhanced IBRS systems, this includes cross-thread branch target
injections on SMT systems (STIBP). In other words, Intel eIBRS enables injections on SMT systems (STIBP). In other words, Intel eIBRS enables
@ -638,6 +658,18 @@ kernel command line.
spectre_v2=off. Spectre variant 1 mitigations spectre_v2=off. Spectre variant 1 mitigations
cannot be disabled. cannot be disabled.
spectre_bhi=
[X86] Control mitigation of Branch History Injection
(BHI) vulnerability. This setting affects the deployment
of the HW BHI control and the SW BHB clearing sequence.
on
(default) Enable the HW or SW mitigation as
needed.
off
Disable the mitigation.
For spectre_v2_user see Documentation/admin-guide/kernel-parameters.txt For spectre_v2_user see Documentation/admin-guide/kernel-parameters.txt
Mitigation selection guide Mitigation selection guide

View file

@ -3444,6 +3444,7 @@
retbleed=off [X86] retbleed=off [X86]
spec_rstack_overflow=off [X86] spec_rstack_overflow=off [X86]
spec_store_bypass_disable=off [X86,PPC] spec_store_bypass_disable=off [X86,PPC]
spectre_bhi=off [X86]
spectre_v2_user=off [X86] spectre_v2_user=off [X86]
srbds=off [X86,INTEL] srbds=off [X86,INTEL]
ssbd=force-off [ARM64] ssbd=force-off [ARM64]
@ -6063,6 +6064,15 @@
sonypi.*= [HW] Sony Programmable I/O Control Device driver sonypi.*= [HW] Sony Programmable I/O Control Device driver
See Documentation/admin-guide/laptops/sonypi.rst See Documentation/admin-guide/laptops/sonypi.rst
spectre_bhi= [X86] Control mitigation of Branch History Injection
(BHI) vulnerability. This setting affects the
deployment of the HW BHI control and the SW BHB
clearing sequence.
on - (default) Enable the HW or SW mitigation
as needed.
off - Disable the mitigation.
spectre_v2= [X86,EARLY] Control mitigation of Spectre variant 2 spectre_v2= [X86,EARLY] Control mitigation of Spectre variant 2
(indirect branch speculation) vulnerability. (indirect branch speculation) vulnerability.
The default operation protects the kernel from The default operation protects the kernel from
@ -6599,7 +6609,7 @@
To turn off having tracepoints sent to printk, To turn off having tracepoints sent to printk,
echo 0 > /proc/sys/kernel/tracepoint_printk echo 0 > /proc/sys/kernel/tracepoint_printk
Note, echoing 1 into this file without the Note, echoing 1 into this file without the
tracepoint_printk kernel cmdline option has no effect. tp_printk kernel cmdline option has no effect.
The tp_printk_stop_on_boot (see below) can also be used The tp_printk_stop_on_boot (see below) can also be used
to stop the printing of events to console at to stop the printing of events to console at

View file

@ -155,7 +155,7 @@ Setting this parameter to 100 will disable the hysteresis.
Some users cannot tolerate the swapping that comes with zswap store failures Some users cannot tolerate the swapping that comes with zswap store failures
and zswap writebacks. Swapping can be disabled entirely (without disabling and zswap writebacks. Swapping can be disabled entirely (without disabling
zswap itself) on a cgroup-basis as follows: zswap itself) on a cgroup-basis as follows::
echo 0 > /sys/fs/cgroup/<cgroup-name>/memory.zswap.writeback echo 0 > /sys/fs/cgroup/<cgroup-name>/memory.zswap.writeback
@ -166,7 +166,7 @@ writeback (because the same pages might be rejected again and again).
When there is a sizable amount of cold memory residing in the zswap pool, it When there is a sizable amount of cold memory residing in the zswap pool, it
can be advantageous to proactively write these cold pages to swap and reclaim can be advantageous to proactively write these cold pages to swap and reclaim
the memory for other use cases. By default, the zswap shrinker is disabled. the memory for other use cases. By default, the zswap shrinker is disabled.
User can enable it as follows: User can enable it as follows::
echo Y > /sys/module/zswap/parameters/shrinker_enabled echo Y > /sys/module/zswap/parameters/shrinker_enabled

View file

@ -574,7 +574,7 @@ Memory b/w domain is L3 cache.
MB:<cache_id0>=bandwidth0;<cache_id1>=bandwidth1;... MB:<cache_id0>=bandwidth0;<cache_id1>=bandwidth1;...
Memory bandwidth Allocation specified in MiBps Memory bandwidth Allocation specified in MiBps
--------------------------------------------- ----------------------------------------------
Memory bandwidth domain is L3 cache. Memory bandwidth domain is L3 cache.
:: ::

View file

@ -104,6 +104,8 @@ Some of these tools are listed below:
KASAN and can be used in production. See Documentation/dev-tools/kfence.rst KASAN and can be used in production. See Documentation/dev-tools/kfence.rst
* lockdep is a locking correctness validator. See * lockdep is a locking correctness validator. See
Documentation/locking/lockdep-design.rst Documentation/locking/lockdep-design.rst
* Runtime Verification (RV) supports checking specific behaviours for a given
subsystem. See Documentation/trace/rv/runtime-verification.rst
* There are several other pieces of debug instrumentation in the kernel, many * There are several other pieces of debug instrumentation in the kernel, many
of which can be found in lib/Kconfig.debug of which can be found in lib/Kconfig.debug

View file

@ -1,5 +1,3 @@
Status: Unstable - ABI compatibility may be broken in the future
Binding for Keystone gate control driver which uses PSC controller IP. Binding for Keystone gate control driver which uses PSC controller IP.
This binding uses the common clock binding[1]. This binding uses the common clock binding[1].

View file

@ -1,5 +1,3 @@
Status: Unstable - ABI compatibility may be broken in the future
Binding for keystone PLLs. The main PLL IP typically has a multiplier, Binding for keystone PLLs. The main PLL IP typically has a multiplier,
a divider and a post divider. The additional PLL IPs like ARMPLL, DDRPLL a divider and a post divider. The additional PLL IPs like ARMPLL, DDRPLL
and PAPLL are controlled by the memory mapped register where as the Main and PAPLL are controlled by the memory mapped register where as the Main

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments ADPLL clock. Binding for Texas Instruments ADPLL clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a This binding uses the common clock binding[1]. It assumes a
register-mapped ADPLL with two to three selectable input clocks register-mapped ADPLL with two to three selectable input clocks
and three to four children. and three to four children.

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments APLL clock. Binding for Texas Instruments APLL clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a This binding uses the common clock binding[1]. It assumes a
register-mapped APLL with usually two selectable input clocks register-mapped APLL with usually two selectable input clocks
(reference clock and bypass clock), with analog phase locked (reference clock and bypass clock), with analog phase locked

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments autoidle clock. Binding for Texas Instruments autoidle clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a register mapped This binding uses the common clock binding[1]. It assumes a register mapped
clock which can be put to idle automatically by hardware based on the usage clock which can be put to idle automatically by hardware based on the usage
and a configuration bit setting. Autoidle clock is never an individual and a configuration bit setting. Autoidle clock is never an individual

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments clockdomain. Binding for Texas Instruments clockdomain.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1] in consumer role. This binding uses the common clock binding[1] in consumer role.
Every clock on TI SoC belongs to one clockdomain, but software Every clock on TI SoC belongs to one clockdomain, but software
only needs this information for specific clocks which require only needs this information for specific clocks which require

View file

@ -1,7 +1,5 @@
Binding for TI composite clock. Binding for TI composite clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a This binding uses the common clock binding[1]. It assumes a
register-mapped composite clock with multiple different sub-types; register-mapped composite clock with multiple different sub-types;

View file

@ -1,7 +1,5 @@
Binding for TI divider clock Binding for TI divider clock
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a This binding uses the common clock binding[1]. It assumes a
register-mapped adjustable clock rate divider that does not gate and has register-mapped adjustable clock rate divider that does not gate and has
only one input clock or parent. By default the value programmed into only one input clock or parent. By default the value programmed into

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments DPLL clock. Binding for Texas Instruments DPLL clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a This binding uses the common clock binding[1]. It assumes a
register-mapped DPLL with usually two selectable input clocks register-mapped DPLL with usually two selectable input clocks
(reference clock and bypass clock), with digital phase locked (reference clock and bypass clock), with digital phase locked

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments FAPLL clock. Binding for Texas Instruments FAPLL clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a This binding uses the common clock binding[1]. It assumes a
register-mapped FAPLL with usually two selectable input clocks register-mapped FAPLL with usually two selectable input clocks
(reference clock and bypass clock), and one or more child (reference clock and bypass clock), and one or more child

View file

@ -1,7 +1,5 @@
Binding for TI fixed factor rate clock sources. Binding for TI fixed factor rate clock sources.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1], and also uses the autoidle This binding uses the common clock binding[1], and also uses the autoidle
support from TI autoidle clock [2]. support from TI autoidle clock [2].

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments gate clock. Binding for Texas Instruments gate clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. This clock is This binding uses the common clock binding[1]. This clock is
quite much similar to the basic gate-clock [2], however, quite much similar to the basic gate-clock [2], however,
it supports a number of additional features. If no register it supports a number of additional features. If no register

View file

@ -1,7 +1,5 @@
Binding for Texas Instruments interface clock. Binding for Texas Instruments interface clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. This clock is This binding uses the common clock binding[1]. This clock is
quite much similar to the basic gate-clock [2], however, quite much similar to the basic gate-clock [2], however,
it supports a number of additional features, including it supports a number of additional features, including

View file

@ -1,7 +1,5 @@
Binding for TI mux clock. Binding for TI mux clock.
Binding status: Unstable - ABI compatibility may be broken in the future
This binding uses the common clock binding[1]. It assumes a This binding uses the common clock binding[1]. It assumes a
register-mapped multiplexer with multiple input clock signals or register-mapped multiplexer with multiple input clock signals or
parents, one of which can be selected as output. This clock does not parents, one of which can be selected as output. This clock does not

View file

@ -53,6 +53,15 @@ patternProperties:
compatible: compatible:
const: qcom,sm8150-dpu const: qcom,sm8150-dpu
"^displayport-controller@[0-9a-f]+$":
type: object
additionalProperties: true
properties:
compatible:
contains:
const: qcom,sm8150-dp
"^dsi@[0-9a-f]+$": "^dsi@[0-9a-f]+$":
type: object type: object
additionalProperties: true additionalProperties: true

View file

@ -144,6 +144,8 @@ Example::
#dma-cells = <1>; #dma-cells = <1>;
clocks = <&clock_controller 0>, <&clock_controller 1>; clocks = <&clock_controller 0>, <&clock_controller 1>;
clock-names = "bus", "host"; clock-names = "bus", "host";
#address-cells = <1>;
#size-cells = <1>;
vendor,custom-property = <2>; vendor,custom-property = <2>;
status = "disabled"; status = "disabled";

View file

@ -94,6 +94,10 @@ properties:
local-bd-address: true local-bd-address: true
qcom,local-bd-address-broken:
type: boolean
description:
boot firmware is incorrectly passing the address in big-endian order
required: required:
- compatible - compatible

View file

@ -52,6 +52,9 @@ properties:
- const: main - const: main
- const: mm - const: mm
power-domains:
maxItems: 1
required: required:
- compatible - compatible
- reg - reg

View file

@ -1,9 +1,6 @@
TI Davinci DSP devices TI Davinci DSP devices
======================= =======================
Binding status: Unstable - Subject to changes for DT representation of clocks
and resets
The TI Davinci family of SoCs usually contains a TI DSP Core sub-system that The TI Davinci family of SoCs usually contains a TI DSP Core sub-system that
is used to offload some of the processor-intensive tasks or algorithms, for is used to offload some of the processor-intensive tasks or algorithms, for
achieving various system level goals. achieving various system level goals.

View file

@ -8,7 +8,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART) title: Atmel Universal Synchronous Asynchronous Receiver/Transmitter (USART)
maintainers: maintainers:
- Richard Genoud <richard.genoud@gmail.com> - Richard Genoud <richard.genoud@bootlin.com>
properties: properties:
compatible: compatible:

View file

@ -51,7 +51,7 @@ properties:
ranges: true ranges: true
patternProperties: patternProperties:
"^clock-controller@[0-9a-z]+$": "^clock-controller@[0-9a-f]+$":
$ref: /schemas/clock/fsl,flexspi-clock.yaml# $ref: /schemas/clock/fsl,flexspi-clock.yaml#
required: required:

View file

@ -41,7 +41,7 @@ properties:
ranges: true ranges: true
patternProperties: patternProperties:
"^interrupt-controller@[a-z0-9]+$": "^interrupt-controller@[a-f0-9]+$":
$ref: /schemas/interrupt-controller/fsl,ls-extirq.yaml# $ref: /schemas/interrupt-controller/fsl,ls-extirq.yaml#
required: required:

View file

@ -60,7 +60,7 @@ properties:
be implemented in an always-on power domain." be implemented in an always-on power domain."
patternProperties: patternProperties:
'^frame@[0-9a-z]*$': '^frame@[0-9a-f]+$':
type: object type: object
additionalProperties: false additionalProperties: false
description: A timer node has up to 8 frame sub-nodes, each with the following properties. description: A timer node has up to 8 frame sub-nodes, each with the following properties.

View file

@ -27,10 +27,13 @@ properties:
- qcom,msm8996-ufshc - qcom,msm8996-ufshc
- qcom,msm8998-ufshc - qcom,msm8998-ufshc
- qcom,sa8775p-ufshc - qcom,sa8775p-ufshc
- qcom,sc7180-ufshc
- qcom,sc7280-ufshc - qcom,sc7280-ufshc
- qcom,sc8180x-ufshc
- qcom,sc8280xp-ufshc - qcom,sc8280xp-ufshc
- qcom,sdm845-ufshc - qcom,sdm845-ufshc
- qcom,sm6115-ufshc - qcom,sm6115-ufshc
- qcom,sm6125-ufshc
- qcom,sm6350-ufshc - qcom,sm6350-ufshc
- qcom,sm8150-ufshc - qcom,sm8150-ufshc
- qcom,sm8250-ufshc - qcom,sm8250-ufshc
@ -42,11 +45,11 @@ properties:
- const: jedec,ufs-2.0 - const: jedec,ufs-2.0
clocks: clocks:
minItems: 8 minItems: 7
maxItems: 11 maxItems: 11
clock-names: clock-names:
minItems: 8 minItems: 7
maxItems: 11 maxItems: 11
dma-coherent: true dma-coherent: true
@ -112,6 +115,31 @@ required:
allOf: allOf:
- $ref: ufs-common.yaml - $ref: ufs-common.yaml
- if:
properties:
compatible:
contains:
enum:
- qcom,sc7180-ufshc
then:
properties:
clocks:
minItems: 7
maxItems: 7
clock-names:
items:
- const: core_clk
- const: bus_aggr_clk
- const: iface_clk
- const: core_clk_unipro
- const: ref_clk
- const: tx_lane0_sync_clk
- const: rx_lane0_sync_clk
reg:
maxItems: 1
reg-names:
maxItems: 1
- if: - if:
properties: properties:
compatible: compatible:
@ -120,6 +148,7 @@ allOf:
- qcom,msm8998-ufshc - qcom,msm8998-ufshc
- qcom,sa8775p-ufshc - qcom,sa8775p-ufshc
- qcom,sc7280-ufshc - qcom,sc7280-ufshc
- qcom,sc8180x-ufshc
- qcom,sc8280xp-ufshc - qcom,sc8280xp-ufshc
- qcom,sm8250-ufshc - qcom,sm8250-ufshc
- qcom,sm8350-ufshc - qcom,sm8350-ufshc
@ -215,6 +244,7 @@ allOf:
contains: contains:
enum: enum:
- qcom,sm6115-ufshc - qcom,sm6115-ufshc
- qcom,sm6125-ufshc
then: then:
properties: properties:
clocks: clocks:
@ -248,7 +278,7 @@ allOf:
reg: reg:
maxItems: 1 maxItems: 1
clocks: clocks:
minItems: 8 minItems: 7
maxItems: 8 maxItems: 8
else: else:
properties: properties:
@ -256,7 +286,7 @@ allOf:
minItems: 1 minItems: 1
maxItems: 2 maxItems: 2
clocks: clocks:
minItems: 8 minItems: 7
maxItems: 11 maxItems: 11
unevaluatedProperties: false unevaluatedProperties: false

View file

@ -97,7 +97,6 @@ like this::
static struct virtio_driver virtio_dummy_driver = { static struct virtio_driver virtio_dummy_driver = {
.driver.name = KBUILD_MODNAME, .driver.name = KBUILD_MODNAME,
.driver.owner = THIS_MODULE,
.id_table = id_table, .id_table = id_table,
.probe = virtio_dummy_probe, .probe = virtio_dummy_probe,
.remove = virtio_dummy_remove, .remove = virtio_dummy_remove,

View file

@ -0,0 +1,11 @@
.. SPDX-License-Identifier: GPL-2.0
======================
bcachefs Documentation
======================
.. toctree::
:maxdepth: 2
:numbered:
errorcodes

View file

@ -69,6 +69,7 @@ Documentation for filesystem implementations.
afs afs
autofs autofs
autofs-mount-control autofs-mount-control
bcachefs/index
befs befs
bfs bfs
btrfs btrfs

View file

@ -178,7 +178,7 @@ yet. Bug reports are always welcome at the issue tracker below!
- ``LLVM=1`` - ``LLVM=1``
* - s390 * - s390
- Maintained - Maintained
- ``CC=clang`` - ``LLVM=1`` (LLVM >= 18.1.0), ``CC=clang`` (LLVM < 18.1.0)
* - um (User Mode) * - um (User Mode)
- Maintained - Maintained
- ``LLVM=1`` - ``LLVM=1``

View file

@ -24,10 +24,10 @@ fragmentation statistics can be obtained through gfp flag information of
each page. It is already implemented and activated if page owner is each page. It is already implemented and activated if page owner is
enabled. Other usages are more than welcome. enabled. Other usages are more than welcome.
It can also be used to show all the stacks and their outstanding It can also be used to show all the stacks and their current number of
allocations, which gives us a quick overview of where the memory is going allocated base pages, which gives us a quick overview of where the memory
without the need to screen through all the pages and match the allocation is going without the need to screen through all the pages and match the
and free operation. allocation and free operation.
page owner is disabled by default. So, if you'd like to use it, you need page owner is disabled by default. So, if you'd like to use it, you need
to add "page_owner=on" to your boot cmdline. If the kernel is built to add "page_owner=on" to your boot cmdline. If the kernel is built
@ -75,42 +75,45 @@ Usage
cat /sys/kernel/debug/page_owner_stacks/show_stacks > stacks.txt cat /sys/kernel/debug/page_owner_stacks/show_stacks > stacks.txt
cat stacks.txt cat stacks.txt
prep_new_page+0xa9/0x120 post_alloc_hook+0x177/0x1a0
get_page_from_freelist+0x7e6/0x2140 get_page_from_freelist+0xd01/0xd80
__alloc_pages+0x18a/0x370 __alloc_pages+0x39e/0x7e0
new_slab+0xc8/0x580 allocate_slab+0xbc/0x3f0
___slab_alloc+0x1f2/0xaf0 ___slab_alloc+0x528/0x8a0
__slab_alloc.isra.86+0x22/0x40 kmem_cache_alloc+0x224/0x3b0
kmem_cache_alloc+0x31b/0x350 sk_prot_alloc+0x58/0x1a0
__khugepaged_enter+0x39/0x100 sk_alloc+0x32/0x4f0
dup_mmap+0x1c7/0x5ce inet_create+0x427/0xb50
copy_process+0x1afe/0x1c90 __sock_create+0x2e4/0x650
kernel_clone+0x9a/0x3c0 inet_ctl_sock_create+0x30/0x180
__do_sys_clone+0x66/0x90 igmp_net_init+0xc1/0x130
do_syscall_64+0x7f/0x160 ops_init+0x167/0x410
entry_SYSCALL_64_after_hwframe+0x6c/0x74 setup_net+0x304/0xa60
stack_count: 234 copy_net_ns+0x29b/0x4a0
create_new_namespaces+0x4a1/0x820
nr_base_pages: 16
... ...
... ...
echo 7000 > /sys/kernel/debug/page_owner_stacks/count_threshold echo 7000 > /sys/kernel/debug/page_owner_stacks/count_threshold
cat /sys/kernel/debug/page_owner_stacks/show_stacks> stacks_7000.txt cat /sys/kernel/debug/page_owner_stacks/show_stacks> stacks_7000.txt
cat stacks_7000.txt cat stacks_7000.txt
prep_new_page+0xa9/0x120 post_alloc_hook+0x177/0x1a0
get_page_from_freelist+0x7e6/0x2140 get_page_from_freelist+0xd01/0xd80
__alloc_pages+0x18a/0x370 __alloc_pages+0x39e/0x7e0
alloc_pages_mpol+0xdf/0x1e0 alloc_pages_mpol+0x22e/0x490
folio_alloc+0x14/0x50 folio_alloc+0xd5/0x110
filemap_alloc_folio+0xb0/0x100 filemap_alloc_folio+0x78/0x230
page_cache_ra_unbounded+0x97/0x180 page_cache_ra_order+0x287/0x6f0
filemap_fault+0x4b4/0x1200 filemap_get_pages+0x517/0x1160
__do_fault+0x2d/0x110 filemap_read+0x304/0x9f0
do_pte_missing+0x4b0/0xa30 xfs_file_buffered_read+0xe6/0x1d0 [xfs]
__handle_mm_fault+0x7fa/0xb70 xfs_file_read_iter+0x1f0/0x380 [xfs]
handle_mm_fault+0x125/0x300 __kernel_read+0x3b9/0x730
do_user_addr_fault+0x3c9/0x840 kernel_read_file+0x309/0x4d0
exc_page_fault+0x68/0x150 __do_sys_finit_module+0x381/0x730
asm_exc_page_fault+0x22/0x30 do_syscall_64+0x8d/0x150
stack_count: 8248 entry_SYSCALL_64_after_hwframe+0x62/0x6a
nr_base_pages: 20824
... ...
cat /sys/kernel/debug/page_owner > page_owner_full.txt cat /sys/kernel/debug/page_owner > page_owner_full.txt

View file

@ -0,0 +1,76 @@
.. SPDX-License-Identifier: GPL-2.0
==========================
Devlink E-Switch Attribute
==========================
Devlink E-Switch supports two modes of operation: legacy and switchdev.
Legacy mode operates based on traditional MAC/VLAN steering rules. Switching
decisions are made based on MAC addresses, VLANs, etc. There is limited ability
to offload switching rules to hardware.
On the other hand, switchdev mode allows for more advanced offloading
capabilities of the E-Switch to hardware. In switchdev mode, more switching
rules and logic can be offloaded to the hardware switch ASIC. It enables
representor netdevices that represent the slow path of virtual functions (VFs)
or scalable-functions (SFs) of the device. See more information about
:ref:`Documentation/networking/switchdev.rst <switchdev>` and
:ref:`Documentation/networking/representors.rst <representors>`.
In addition, the devlink E-Switch also comes with other attributes listed
in the following section.
Attributes Description
======================
The following is a list of E-Switch attributes.
.. list-table:: E-Switch attributes
:widths: 8 5 45
* - Name
- Type
- Description
* - ``mode``
- enum
- The mode of the device. The mode can be one of the following:
* ``legacy`` operates based on traditional MAC/VLAN steering
rules.
* ``switchdev`` allows for more advanced offloading capabilities of
the E-Switch to hardware.
* - ``inline-mode``
- enum
- Some HWs need the VF driver to put part of the packet
headers on the TX descriptor so the e-switch can do proper
matching and steering. Support for both switchdev mode and legacy mode.
* ``none`` none.
* ``link`` L2 mode.
* ``network`` L3 mode.
* ``transport`` L4 mode.
* - ``encap-mode``
- enum
- The encapsulation mode of the device. Support for both switchdev mode
and legacy mode. The mode can be one of the following:
* ``none`` Disable encapsulation support.
* ``basic`` Enable encapsulation support.
Example Usage
=============
.. code:: shell
# enable switchdev mode
$ devlink dev eswitch set pci/0000:08:00.0 mode switchdev
# set inline-mode and encap-mode
$ devlink dev eswitch set pci/0000:08:00.0 inline-mode none encap-mode basic
# display devlink device eswitch attributes
$ devlink dev eswitch show pci/0000:08:00.0
pci/0000:08:00.0: mode switchdev inline-mode none encap-mode basic
# enable encap-mode with legacy mode
$ devlink dev eswitch set pci/0000:08:00.0 mode legacy inline-mode none encap-mode basic

View file

@ -67,6 +67,7 @@ general.
devlink-selftests devlink-selftests
devlink-trap devlink-trap
devlink-linecard devlink-linecard
devlink-eswitch-attr
Driver-specific documentation Driver-specific documentation
----------------------------- -----------------------------

View file

@ -1,4 +1,5 @@
.. SPDX-License-Identifier: GPL-2.0 .. SPDX-License-Identifier: GPL-2.0
.. _representors:
============================= =============================
Network Function Representors Network Function Representors

View file

@ -252,7 +252,7 @@ an involved disclosed party. The current ambassadors list:
AMD Tom Lendacky <thomas.lendacky@amd.com> AMD Tom Lendacky <thomas.lendacky@amd.com>
Ampere Darren Hart <darren@os.amperecomputing.com> Ampere Darren Hart <darren@os.amperecomputing.com>
ARM Catalin Marinas <catalin.marinas@arm.com> ARM Catalin Marinas <catalin.marinas@arm.com>
IBM Power Anton Blanchard <anton@linux.ibm.com> IBM Power Michael Ellerman <ellerman@au.ibm.com>
IBM Z Christian Borntraeger <borntraeger@de.ibm.com> IBM Z Christian Borntraeger <borntraeger@de.ibm.com>
Intel Tony Luck <tony.luck@intel.com> Intel Tony Luck <tony.luck@intel.com>
Qualcomm Trilok Soni <quic_tsoni@quicinc.com> Qualcomm Trilok Soni <quic_tsoni@quicinc.com>

View file

@ -46,21 +46,16 @@ SEV hardware uses ASIDs to associate a memory encryption key with a VM.
Hence, the ASID for the SEV-enabled guests must be from 1 to a maximum value Hence, the ASID for the SEV-enabled guests must be from 1 to a maximum value
defined in the CPUID 0x8000001f[ecx] field. defined in the CPUID 0x8000001f[ecx] field.
SEV Key Management The KVM_MEMORY_ENCRYPT_OP ioctl
================== ===============================
The SEV guest key management is handled by a separate processor called the AMD The main ioctl to access SEV is KVM_MEMORY_ENCRYPT_OP, which operates on
Secure Processor (AMD-SP). Firmware running inside the AMD-SP provides a secure the VM file descriptor. If the argument to KVM_MEMORY_ENCRYPT_OP is NULL,
key management interface to perform common hypervisor activities such as the ioctl returns 0 if SEV is enabled and ``ENOTTY`` if it is disabled
encrypting bootstrap code, snapshot, migrating and debugging the guest. For more (on some older versions of Linux, the ioctl tries to run normally even
information, see the SEV Key Management spec [api-spec]_ with a NULL argument, and therefore will likely return ``EFAULT`` instead
of zero if SEV is enabled). If non-NULL, the argument to
The main ioctl to access SEV is KVM_MEMORY_ENCRYPT_OP. If the argument KVM_MEMORY_ENCRYPT_OP must be a struct kvm_sev_cmd::
to KVM_MEMORY_ENCRYPT_OP is NULL, the ioctl returns 0 if SEV is enabled
and ``ENOTTY`` if it is disabled (on some older versions of Linux,
the ioctl runs normally even with a NULL argument, and therefore will
likely return ``EFAULT``). If non-NULL, the argument to KVM_MEMORY_ENCRYPT_OP
must be a struct kvm_sev_cmd::
struct kvm_sev_cmd { struct kvm_sev_cmd {
__u32 id; __u32 id;
@ -87,10 +82,6 @@ guests, such as launching, running, snapshotting, migrating and decommissioning.
The KVM_SEV_INIT command is used by the hypervisor to initialize the SEV platform The KVM_SEV_INIT command is used by the hypervisor to initialize the SEV platform
context. In a typical workflow, this command should be the first command issued. context. In a typical workflow, this command should be the first command issued.
The firmware can be initialized either by using its own non-volatile storage or
the OS can manage the NV storage for the firmware using the module parameter
``init_ex_path``. If the file specified by ``init_ex_path`` does not exist or
is invalid, the OS will create or override the file with output from PSP.
Returns: 0 on success, -negative on error Returns: 0 on success, -negative on error
@ -434,6 +425,21 @@ issued by the hypervisor to make the guest ready for execution.
Returns: 0 on success, -negative on error Returns: 0 on success, -negative on error
Firmware Management
===================
The SEV guest key management is handled by a separate processor called the AMD
Secure Processor (AMD-SP). Firmware running inside the AMD-SP provides a secure
key management interface to perform common hypervisor activities such as
encrypting bootstrap code, snapshot, migrating and debugging the guest. For more
information, see the SEV Key Management spec [api-spec]_
The AMD-SP firmware can be initialized either by using its own non-volatile
storage or the OS can manage the NV storage for the firmware using
parameter ``init_ex_path`` of the ``ccp`` module. If the file specified
by ``init_ex_path`` does not exist or is invalid, the OS will create or
override the file with PSP non-volatile storage.
References References
========== ==========

View file

@ -193,8 +193,8 @@ data:
Asynchronous page fault (APF) control MSR. Asynchronous page fault (APF) control MSR.
Bits 63-6 hold 64-byte aligned physical address of a 64 byte memory area Bits 63-6 hold 64-byte aligned physical address of a 64 byte memory area
which must be in guest RAM and must be zeroed. This memory is expected which must be in guest RAM. This memory is expected to hold the
to hold a copy of the following structure:: following structure::
struct kvm_vcpu_pv_apf_data { struct kvm_vcpu_pv_apf_data {
/* Used for 'page not present' events delivered via #PF */ /* Used for 'page not present' events delivered via #PF */
@ -204,7 +204,6 @@ data:
__u32 token; __u32 token;
__u8 pad[56]; __u8 pad[56];
__u32 enabled;
}; };
Bits 5-4 of the MSR are reserved and should be zero. Bit 0 is set to 1 Bits 5-4 of the MSR are reserved and should be zero. Bit 0 is set to 1
@ -232,14 +231,14 @@ data:
as regular page fault, guest must reset 'flags' to '0' before it does as regular page fault, guest must reset 'flags' to '0' before it does
something that can generate normal page fault. something that can generate normal page fault.
Bytes 5-7 of 64 byte memory location ('token') will be written to by the Bytes 4-7 of 64 byte memory location ('token') will be written to by the
hypervisor at the time of APF 'page ready' event injection. The content hypervisor at the time of APF 'page ready' event injection. The content
of these bytes is a token which was previously delivered as 'page not of these bytes is a token which was previously delivered in CR2 as
present' event. The event indicates the page in now available. Guest is 'page not present' event. The event indicates the page is now available.
supposed to write '0' to 'token' when it is done handling 'page ready' Guest is supposed to write '0' to 'token' when it is done handling
event and to write 1' to MSR_KVM_ASYNC_PF_ACK after clearing the location; 'page ready' event and to write '1' to MSR_KVM_ASYNC_PF_ACK after
writing to the MSR forces KVM to re-scan its queue and deliver the next clearing the location; writing to the MSR forces KVM to re-scan its
pending notification. queue and deliver the next pending notification.
Note, MSR_KVM_ASYNC_PF_INT MSR specifying the interrupt vector for 'page Note, MSR_KVM_ASYNC_PF_INT MSR specifying the interrupt vector for 'page
ready' APF delivery needs to be written to before enabling APF mechanism ready' APF delivery needs to be written to before enabling APF mechanism

View file

@ -2191,7 +2191,6 @@ N: mxs
ARM/FREESCALE LAYERSCAPE ARM ARCHITECTURE ARM/FREESCALE LAYERSCAPE ARM ARCHITECTURE
M: Shawn Guo <shawnguo@kernel.org> M: Shawn Guo <shawnguo@kernel.org>
M: Li Yang <leoyang.li@nxp.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
@ -2708,7 +2707,7 @@ F: sound/soc/rockchip/
N: rockchip N: rockchip
ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
R: Alim Akhtar <alim.akhtar@samsung.com> R: Alim Akhtar <alim.akhtar@samsung.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
@ -3573,6 +3572,7 @@ S: Supported
C: irc://irc.oftc.net/bcache C: irc://irc.oftc.net/bcache
T: git https://evilpiepirate.org/git/bcachefs.git T: git https://evilpiepirate.org/git/bcachefs.git
F: fs/bcachefs/ F: fs/bcachefs/
F: Documentation/filesystems/bcachefs/
BDISP ST MEDIA DRIVER BDISP ST MEDIA DRIVER
M: Fabien Dessenne <fabien.dessenne@foss.st.com> M: Fabien Dessenne <fabien.dessenne@foss.st.com>
@ -3942,8 +3942,7 @@ F: kernel/bpf/ringbuf.c
BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF) BPF [SECURITY & LSM] (Security Audit and Enforcement using BPF)
M: KP Singh <kpsingh@kernel.org> M: KP Singh <kpsingh@kernel.org>
R: Florent Revest <revest@chromium.org> R: Matt Bobrowski <mattbobrowski@google.com>
R: Brendan Jackman <jackmanb@chromium.org>
L: bpf@vger.kernel.org L: bpf@vger.kernel.org
S: Maintained S: Maintained
F: Documentation/bpf/prog_lsm.rst F: Documentation/bpf/prog_lsm.rst
@ -3968,7 +3967,7 @@ F: kernel/bpf/bpf_lru*
F: kernel/bpf/cgroup.c F: kernel/bpf/cgroup.c
BPF [TOOLING] (bpftool) BPF [TOOLING] (bpftool)
M: Quentin Monnet <quentin@isovalent.com> M: Quentin Monnet <qmo@kernel.org>
L: bpf@vger.kernel.org L: bpf@vger.kernel.org
S: Maintained S: Maintained
F: kernel/bpf/disasm.* F: kernel/bpf/disasm.*
@ -4870,7 +4869,6 @@ F: drivers/power/supply/cw2015_battery.c
CEPH COMMON CODE (LIBCEPH) CEPH COMMON CODE (LIBCEPH)
M: Ilya Dryomov <idryomov@gmail.com> M: Ilya Dryomov <idryomov@gmail.com>
M: Xiubo Li <xiubli@redhat.com> M: Xiubo Li <xiubli@redhat.com>
R: Jeff Layton <jlayton@kernel.org>
L: ceph-devel@vger.kernel.org L: ceph-devel@vger.kernel.org
S: Supported S: Supported
W: http://ceph.com/ W: http://ceph.com/
@ -4882,7 +4880,6 @@ F: net/ceph/
CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH) CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH)
M: Xiubo Li <xiubli@redhat.com> M: Xiubo Li <xiubli@redhat.com>
M: Ilya Dryomov <idryomov@gmail.com> M: Ilya Dryomov <idryomov@gmail.com>
R: Jeff Layton <jlayton@kernel.org>
L: ceph-devel@vger.kernel.org L: ceph-devel@vger.kernel.org
S: Supported S: Supported
W: http://ceph.com/ W: http://ceph.com/
@ -5558,7 +5555,7 @@ F: drivers/cpuidle/cpuidle-big_little.c
CPUIDLE DRIVER - ARM EXYNOS CPUIDLE DRIVER - ARM EXYNOS
M: Daniel Lezcano <daniel.lezcano@linaro.org> M: Daniel Lezcano <daniel.lezcano@linaro.org>
M: Kukjin Kim <kgene@kernel.org> M: Kukjin Kim <kgene@kernel.org>
R: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> R: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
@ -6157,7 +6154,6 @@ DEVICE-MAPPER (LVM)
M: Alasdair Kergon <agk@redhat.com> M: Alasdair Kergon <agk@redhat.com>
M: Mike Snitzer <snitzer@kernel.org> M: Mike Snitzer <snitzer@kernel.org>
M: Mikulas Patocka <mpatocka@redhat.com> M: Mikulas Patocka <mpatocka@redhat.com>
M: dm-devel@lists.linux.dev
L: dm-devel@lists.linux.dev L: dm-devel@lists.linux.dev
S: Maintained S: Maintained
Q: http://patchwork.kernel.org/project/dm-devel/list/ Q: http://patchwork.kernel.org/project/dm-devel/list/
@ -6173,7 +6169,6 @@ F: include/uapi/linux/dm-*.h
DEVICE-MAPPER VDO TARGET DEVICE-MAPPER VDO TARGET
M: Matthew Sakai <msakai@redhat.com> M: Matthew Sakai <msakai@redhat.com>
M: dm-devel@lists.linux.dev
L: dm-devel@lists.linux.dev L: dm-devel@lists.linux.dev
S: Maintained S: Maintained
F: Documentation/admin-guide/device-mapper/vdo*.rst F: Documentation/admin-guide/device-mapper/vdo*.rst
@ -7941,6 +7936,7 @@ M: Gao Xiang <xiang@kernel.org>
M: Chao Yu <chao@kernel.org> M: Chao Yu <chao@kernel.org>
R: Yue Hu <huyue2@coolpad.com> R: Yue Hu <huyue2@coolpad.com>
R: Jeffle Xu <jefflexu@linux.alibaba.com> R: Jeffle Xu <jefflexu@linux.alibaba.com>
R: Sandeep Dhavale <dhavale@google.com>
L: linux-erofs@lists.ozlabs.org L: linux-erofs@lists.ozlabs.org
S: Maintained S: Maintained
W: https://erofs.docs.kernel.org W: https://erofs.docs.kernel.org
@ -8525,7 +8521,6 @@ S: Maintained
F: drivers/video/fbdev/fsl-diu-fb.* F: drivers/video/fbdev/fsl-diu-fb.*
FREESCALE DMA DRIVER FREESCALE DMA DRIVER
M: Li Yang <leoyang.li@nxp.com>
M: Zhang Wei <zw@zh-kernel.org> M: Zhang Wei <zw@zh-kernel.org>
L: linuxppc-dev@lists.ozlabs.org L: linuxppc-dev@lists.ozlabs.org
S: Maintained S: Maintained
@ -8690,10 +8685,9 @@ F: drivers/soc/fsl/qe/tsa.h
F: include/dt-bindings/soc/cpm1-fsl,tsa.h F: include/dt-bindings/soc/cpm1-fsl,tsa.h
FREESCALE QUICC ENGINE UCC ETHERNET DRIVER FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
M: Li Yang <leoyang.li@nxp.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
L: linuxppc-dev@lists.ozlabs.org L: linuxppc-dev@lists.ozlabs.org
S: Maintained S: Orphan
F: drivers/net/ethernet/freescale/ucc_geth* F: drivers/net/ethernet/freescale/ucc_geth*
FREESCALE QUICC ENGINE UCC HDLC DRIVER FREESCALE QUICC ENGINE UCC HDLC DRIVER
@ -8710,10 +8704,9 @@ S: Maintained
F: drivers/tty/serial/ucc_uart.c F: drivers/tty/serial/ucc_uart.c
FREESCALE SOC DRIVERS FREESCALE SOC DRIVERS
M: Li Yang <leoyang.li@nxp.com>
L: linuxppc-dev@lists.ozlabs.org L: linuxppc-dev@lists.ozlabs.org
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Orphan
F: Documentation/devicetree/bindings/misc/fsl,dpaa2-console.yaml F: Documentation/devicetree/bindings/misc/fsl,dpaa2-console.yaml
F: Documentation/devicetree/bindings/soc/fsl/ F: Documentation/devicetree/bindings/soc/fsl/
F: drivers/soc/fsl/ F: drivers/soc/fsl/
@ -8747,17 +8740,15 @@ F: Documentation/devicetree/bindings/sound/fsl,qmc-audio.yaml
F: sound/soc/fsl/fsl_qmc_audio.c F: sound/soc/fsl/fsl_qmc_audio.c
FREESCALE USB PERIPHERAL DRIVERS FREESCALE USB PERIPHERAL DRIVERS
M: Li Yang <leoyang.li@nxp.com>
L: linux-usb@vger.kernel.org L: linux-usb@vger.kernel.org
L: linuxppc-dev@lists.ozlabs.org L: linuxppc-dev@lists.ozlabs.org
S: Maintained S: Orphan
F: drivers/usb/gadget/udc/fsl* F: drivers/usb/gadget/udc/fsl*
FREESCALE USB PHY DRIVER FREESCALE USB PHY DRIVER
M: Ran Wang <ran.wang_1@nxp.com>
L: linux-usb@vger.kernel.org L: linux-usb@vger.kernel.org
L: linuxppc-dev@lists.ozlabs.org L: linuxppc-dev@lists.ozlabs.org
S: Maintained S: Orphan
F: drivers/usb/phy/phy-fsl-usb* F: drivers/usb/phy/phy-fsl-usb*
FREEVXFS FILESYSTEM FREEVXFS FILESYSTEM
@ -9002,7 +8993,7 @@ F: drivers/i2c/muxes/i2c-mux-gpio.c
F: include/linux/platform_data/i2c-mux-gpio.h F: include/linux/platform_data/i2c-mux-gpio.h
GENERIC GPIO RESET DRIVER GENERIC GPIO RESET DRIVER
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
S: Maintained S: Maintained
F: drivers/reset/reset-gpio.c F: drivers/reset/reset-gpio.c
@ -9653,7 +9644,9 @@ L: linux-input@vger.kernel.org
S: Maintained S: Maintained
F: drivers/hid/hid-logitech-hidpp.c F: drivers/hid/hid-logitech-hidpp.c
HIGH-RESOLUTION TIMERS, CLOCKEVENTS HIGH-RESOLUTION TIMERS, TIMER WHEEL, CLOCKEVENTS
M: Anna-Maria Behnsen <anna-maria@linutronix.de>
M: Frederic Weisbecker <frederic@kernel.org>
M: Thomas Gleixner <tglx@linutronix.de> M: Thomas Gleixner <tglx@linutronix.de>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
@ -9661,9 +9654,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
F: Documentation/timers/ F: Documentation/timers/
F: include/linux/clockchips.h F: include/linux/clockchips.h
F: include/linux/hrtimer.h F: include/linux/hrtimer.h
F: include/linux/timer.h
F: kernel/time/clockevents.c F: kernel/time/clockevents.c
F: kernel/time/hrtimer.c F: kernel/time/hrtimer.c
F: kernel/time/timer_*.c F: kernel/time/timer.c
F: kernel/time/timer_list.c
F: kernel/time/timer_migration.*
F: tools/testing/selftests/timers/
HIGH-SPEED SCC DRIVER FOR AX.25 HIGH-SPEED SCC DRIVER FOR AX.25
L: linux-hams@vger.kernel.org L: linux-hams@vger.kernel.org
@ -10026,7 +10023,7 @@ F: drivers/media/platform/st/sti/hva
HWPOISON MEMORY FAILURE HANDLING HWPOISON MEMORY FAILURE HANDLING
M: Miaohe Lin <linmiaohe@huawei.com> M: Miaohe Lin <linmiaohe@huawei.com>
R: Naoya Horiguchi <naoya.horiguchi@nec.com> R: Naoya Horiguchi <nao.horiguchi@gmail.com>
L: linux-mm@kvack.org L: linux-mm@kvack.org
S: Maintained S: Maintained
F: mm/hwpoison-inject.c F: mm/hwpoison-inject.c
@ -11997,7 +11994,7 @@ F: include/keys/encrypted-type.h
F: security/keys/encrypted-keys/ F: security/keys/encrypted-keys/
KEYS-TRUSTED KEYS-TRUSTED
M: James Bottomley <jejb@linux.ibm.com> M: James Bottomley <James.Bottomley@HansenPartnership.com>
M: Jarkko Sakkinen <jarkko@kernel.org> M: Jarkko Sakkinen <jarkko@kernel.org>
M: Mimi Zohar <zohar@linux.ibm.com> M: Mimi Zohar <zohar@linux.ibm.com>
L: linux-integrity@vger.kernel.org L: linux-integrity@vger.kernel.org
@ -13134,6 +13131,7 @@ F: drivers/net/ethernet/marvell/mvpp2/
MARVELL MWIFIEX WIRELESS DRIVER MARVELL MWIFIEX WIRELESS DRIVER
M: Brian Norris <briannorris@chromium.org> M: Brian Norris <briannorris@chromium.org>
R: Francesco Dolcini <francesco@dolcini.it>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Odd Fixes S: Odd Fixes
F: drivers/net/wireless/marvell/mwifiex/ F: drivers/net/wireless/marvell/mwifiex/
@ -13290,7 +13288,7 @@ F: drivers/iio/adc/max11205.c
MAXIM MAX17040 FAMILY FUEL GAUGE DRIVERS MAXIM MAX17040 FAMILY FUEL GAUGE DRIVERS
R: Iskren Chernev <iskren.chernev@gmail.com> R: Iskren Chernev <iskren.chernev@gmail.com>
R: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> R: Krzysztof Kozlowski <krzk@kernel.org>
R: Marek Szyprowski <m.szyprowski@samsung.com> R: Marek Szyprowski <m.szyprowski@samsung.com>
R: Matheus Castello <matheus@castello.eng.br> R: Matheus Castello <matheus@castello.eng.br>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
@ -13300,7 +13298,7 @@ F: drivers/power/supply/max17040_battery.c
MAXIM MAX17042 FAMILY FUEL GAUGE DRIVERS MAXIM MAX17042 FAMILY FUEL GAUGE DRIVERS
R: Hans de Goede <hdegoede@redhat.com> R: Hans de Goede <hdegoede@redhat.com>
R: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> R: Krzysztof Kozlowski <krzk@kernel.org>
R: Marek Szyprowski <m.szyprowski@samsung.com> R: Marek Szyprowski <m.szyprowski@samsung.com>
R: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm> R: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
R: Purism Kernel Team <kernel@puri.sm> R: Purism Kernel Team <kernel@puri.sm>
@ -13358,7 +13356,7 @@ F: Documentation/devicetree/bindings/power/supply/maxim,max77976.yaml
F: drivers/power/supply/max77976_charger.c F: drivers/power/supply/max77976_charger.c
MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
S: Maintained S: Maintained
B: mailto:linux-samsung-soc@vger.kernel.org B: mailto:linux-samsung-soc@vger.kernel.org
@ -13369,7 +13367,7 @@ F: drivers/power/supply/max77693_charger.c
MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
M: Chanwoo Choi <cw00.choi@samsung.com> M: Chanwoo Choi <cw00.choi@samsung.com>
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
B: mailto:linux-samsung-soc@vger.kernel.org B: mailto:linux-samsung-soc@vger.kernel.org
@ -14014,6 +14012,7 @@ F: drivers/net/ethernet/mellanox/mlx4/en_*
MELLANOX ETHERNET DRIVER (mlx5e) MELLANOX ETHERNET DRIVER (mlx5e)
M: Saeed Mahameed <saeedm@nvidia.com> M: Saeed Mahameed <saeedm@nvidia.com>
M: Tariq Toukan <tariqt@nvidia.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Supported S: Supported
W: http://www.mellanox.com W: http://www.mellanox.com
@ -14081,6 +14080,7 @@ F: include/uapi/rdma/mlx4-abi.h
MELLANOX MLX5 core VPI driver MELLANOX MLX5 core VPI driver
M: Saeed Mahameed <saeedm@nvidia.com> M: Saeed Mahameed <saeedm@nvidia.com>
M: Leon Romanovsky <leonro@nvidia.com> M: Leon Romanovsky <leonro@nvidia.com>
M: Tariq Toukan <tariqt@nvidia.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
L: linux-rdma@vger.kernel.org L: linux-rdma@vger.kernel.org
S: Supported S: Supported
@ -14151,7 +14151,7 @@ F: mm/mm_init.c
F: tools/testing/memblock/ F: tools/testing/memblock/
MEMORY CONTROLLER DRIVERS MEMORY CONTROLLER DRIVERS
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
B: mailto:krzysztof.kozlowski@linaro.org B: mailto:krzysztof.kozlowski@linaro.org
@ -14356,7 +14356,7 @@ F: drivers/dma/at_xdmac.c
F: include/dt-bindings/dma/at91.h F: include/dt-bindings/dma/at91.h
MICROCHIP AT91 SERIAL DRIVER MICROCHIP AT91 SERIAL DRIVER
M: Richard Genoud <richard.genoud@gmail.com> M: Richard Genoud <richard.genoud@bootlin.com>
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml F: Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml
F: drivers/tty/serial/atmel_serial.c F: drivers/tty/serial/atmel_serial.c
@ -15532,7 +15532,7 @@ F: include/uapi/linux/nexthop.h
F: net/ipv4/nexthop.c F: net/ipv4/nexthop.c
NFC SUBSYSTEM NFC SUBSYSTEM
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/net/nfc/ F: Documentation/devicetree/bindings/net/nfc/
@ -15627,9 +15627,10 @@ F: drivers/misc/nsm.c
F: include/uapi/linux/nsm.h F: include/uapi/linux/nsm.h
NOHZ, DYNTICKS SUPPORT NOHZ, DYNTICKS SUPPORT
M: Anna-Maria Behnsen <anna-maria@linutronix.de>
M: Frederic Weisbecker <frederic@kernel.org> M: Frederic Weisbecker <frederic@kernel.org>
M: Thomas Gleixner <tglx@linutronix.de>
M: Ingo Molnar <mingo@kernel.org> M: Ingo Molnar <mingo@kernel.org>
M: Thomas Gleixner <tglx@linutronix.de>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/nohz T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/nohz
@ -15908,7 +15909,7 @@ F: Documentation/devicetree/bindings/regulator/nxp,pf8x00-regulator.yaml
F: drivers/regulator/pf8x00-regulator.c F: drivers/regulator/pf8x00-regulator.c
NXP PTN5150A CC LOGIC AND EXTCON DRIVER NXP PTN5150A CC LOGIC AND EXTCON DRIVER
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml F: Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml
@ -16519,7 +16520,7 @@ K: of_overlay_remove
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
M: Rob Herring <robh@kernel.org> M: Rob Herring <robh@kernel.org>
M: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> M: Krzysztof Kozlowski <krzk+dt@kernel.org>
M: Conor Dooley <conor+dt@kernel.org> M: Conor Dooley <conor+dt@kernel.org>
L: devicetree@vger.kernel.org L: devicetree@vger.kernel.org
S: Maintained S: Maintained
@ -16725,9 +16726,9 @@ F: include/uapi/linux/ppdev.h
PARAVIRT_OPS INTERFACE PARAVIRT_OPS INTERFACE
M: Juergen Gross <jgross@suse.com> M: Juergen Gross <jgross@suse.com>
R: Ajay Kaher <akaher@vmware.com> R: Ajay Kaher <ajay.kaher@broadcom.com>
R: Alexey Makhalov <amakhalov@vmware.com> R: Alexey Makhalov <alexey.amakhalov@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: virtualization@lists.linux.dev L: virtualization@lists.linux.dev
L: x86@kernel.org L: x86@kernel.org
S: Supported S: Supported
@ -16966,7 +16967,6 @@ F: drivers/pci/controller/dwc/pci-exynos.c
PCI DRIVER FOR SYNOPSYS DESIGNWARE PCI DRIVER FOR SYNOPSYS DESIGNWARE
M: Jingoo Han <jingoohan1@gmail.com> M: Jingoo Han <jingoohan1@gmail.com>
M: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> M: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
L: linux-pci@vger.kernel.org L: linux-pci@vger.kernel.org
S: Maintained S: Maintained
@ -17477,7 +17477,7 @@ F: Documentation/devicetree/bindings/pinctrl/renesas,*
F: drivers/pinctrl/renesas/ F: drivers/pinctrl/renesas/
PIN CONTROLLER - SAMSUNG PIN CONTROLLER - SAMSUNG
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
M: Sylwester Nawrocki <s.nawrocki@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com>
R: Alim Akhtar <alim.akhtar@samsung.com> R: Alim Akhtar <alim.akhtar@samsung.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@ -17590,15 +17590,20 @@ F: drivers/pnp/
F: include/linux/pnp.h F: include/linux/pnp.h
POSIX CLOCKS and TIMERS POSIX CLOCKS and TIMERS
M: Anna-Maria Behnsen <anna-maria@linutronix.de>
M: Frederic Weisbecker <frederic@kernel.org>
M: Thomas Gleixner <tglx@linutronix.de> M: Thomas Gleixner <tglx@linutronix.de>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
F: fs/timerfd.c F: fs/timerfd.c
F: include/linux/time_namespace.h F: include/linux/time_namespace.h
F: include/linux/timer* F: include/linux/timerfd.h
F: include/uapi/linux/time.h
F: include/uapi/linux/timerfd.h
F: include/trace/events/timer* F: include/trace/events/timer*
F: kernel/time/*timer* F: kernel/time/itimer.c
F: kernel/time/posix-*
F: kernel/time/namespace.c F: kernel/time/namespace.c
POWER MANAGEMENT CORE POWER MANAGEMENT CORE
@ -18645,18 +18650,21 @@ REALTEK WIRELESS DRIVER (rtlwifi family)
M: Ping-Ke Shih <pkshih@realtek.com> M: Ping-Ke Shih <pkshih@realtek.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtlwifi/ F: drivers/net/wireless/realtek/rtlwifi/
REALTEK WIRELESS DRIVER (rtw88) REALTEK WIRELESS DRIVER (rtw88)
M: Ping-Ke Shih <pkshih@realtek.com> M: Ping-Ke Shih <pkshih@realtek.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtw88/ F: drivers/net/wireless/realtek/rtw88/
REALTEK WIRELESS DRIVER (rtw89) REALTEK WIRELESS DRIVER (rtw89)
M: Ping-Ke Shih <pkshih@realtek.com> M: Ping-Ke Shih <pkshih@realtek.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtw89/ F: drivers/net/wireless/realtek/rtw89/
REDPINE WIRELESS DRIVER REDPINE WIRELESS DRIVER
@ -18727,13 +18735,24 @@ S: Supported
F: Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml F: Documentation/devicetree/bindings/i2c/renesas,iic-emev2.yaml
F: drivers/i2c/busses/i2c-emev2.c F: drivers/i2c/busses/i2c-emev2.c
RENESAS ETHERNET DRIVERS RENESAS ETHERNET AVB DRIVER
R: Sergey Shtylyov <s.shtylyov@omp.ru> R: Sergey Shtylyov <s.shtylyov@omp.ru>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
L: linux-renesas-soc@vger.kernel.org L: linux-renesas-soc@vger.kernel.org
F: Documentation/devicetree/bindings/net/renesas,*.yaml F: Documentation/devicetree/bindings/net/renesas,etheravb.yaml
F: drivers/net/ethernet/renesas/ F: drivers/net/ethernet/renesas/Kconfig
F: include/linux/sh_eth.h F: drivers/net/ethernet/renesas/Makefile
F: drivers/net/ethernet/renesas/ravb*
RENESAS ETHERNET SWITCH DRIVER
R: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
L: netdev@vger.kernel.org
L: linux-renesas-soc@vger.kernel.org
F: Documentation/devicetree/bindings/net/renesas,*ether-switch.yaml
F: drivers/net/ethernet/renesas/Kconfig
F: drivers/net/ethernet/renesas/Makefile
F: drivers/net/ethernet/renesas/rcar_gen4*
F: drivers/net/ethernet/renesas/rswitch*
RENESAS IDT821034 ASoC CODEC RENESAS IDT821034 ASoC CODEC
M: Herve Codina <herve.codina@bootlin.com> M: Herve Codina <herve.codina@bootlin.com>
@ -18843,6 +18862,16 @@ S: Supported
F: Documentation/devicetree/bindings/i2c/renesas,rzv2m.yaml F: Documentation/devicetree/bindings/i2c/renesas,rzv2m.yaml
F: drivers/i2c/busses/i2c-rzv2m.c F: drivers/i2c/busses/i2c-rzv2m.c
RENESAS SUPERH ETHERNET DRIVER
R: Sergey Shtylyov <s.shtylyov@omp.ru>
L: netdev@vger.kernel.org
L: linux-renesas-soc@vger.kernel.org
F: Documentation/devicetree/bindings/net/renesas,ether.yaml
F: drivers/net/ethernet/renesas/Kconfig
F: drivers/net/ethernet/renesas/Makefile
F: drivers/net/ethernet/renesas/sh_eth*
F: include/linux/sh_eth.h
RENESAS USB PHY DRIVER RENESAS USB PHY DRIVER
M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
L: linux-renesas-soc@vger.kernel.org L: linux-renesas-soc@vger.kernel.org
@ -19179,12 +19208,14 @@ M: Hin-Tak Leung <hintak.leung@gmail.com>
M: Larry Finger <Larry.Finger@lwfinger.net> M: Larry Finger <Larry.Finger@lwfinger.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtl818x/rtl8187/ F: drivers/net/wireless/realtek/rtl818x/rtl8187/
RTL8XXXU WIRELESS DRIVER (rtl8xxxu) RTL8XXXU WIRELESS DRIVER (rtl8xxxu)
M: Jes Sorensen <Jes.Sorensen@gmail.com> M: Jes Sorensen <Jes.Sorensen@gmail.com>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
T: git https://github.com/pkshih/rtw.git
F: drivers/net/wireless/realtek/rtl8xxxu/ F: drivers/net/wireless/realtek/rtl8xxxu/
RTRS TRANSPORT DRIVERS RTRS TRANSPORT DRIVERS
@ -19414,7 +19445,7 @@ F: Documentation/devicetree/bindings/sound/samsung*
F: sound/soc/samsung/ F: sound/soc/samsung/
SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-crypto@vger.kernel.org L: linux-crypto@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
@ -19449,7 +19480,7 @@ S: Maintained
F: drivers/platform/x86/samsung-laptop.c F: drivers/platform/x86/samsung-laptop.c
SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
@ -19475,7 +19506,7 @@ F: drivers/media/platform/samsung/s3c-camif/
F: include/media/drv-intf/s3c_camif.h F: include/media/drv-intf/s3c_camif.h
SAMSUNG S3FWRN5 NFC DRIVER SAMSUNG S3FWRN5 NFC DRIVER
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml F: Documentation/devicetree/bindings/net/nfc/samsung,s3fwrn5.yaml
F: drivers/nfc/s3fwrn5 F: drivers/nfc/s3fwrn5
@ -19496,7 +19527,7 @@ S: Supported
F: drivers/media/i2c/s5k5baf.c F: drivers/media/i2c/s5k5baf.c
SAMSUNG S5P Security SubSystem (SSS) DRIVER SAMSUNG S5P Security SubSystem (SSS) DRIVER
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
M: Vladimir Zapolskiy <vz@mleia.com> M: Vladimir Zapolskiy <vz@mleia.com>
L: linux-crypto@vger.kernel.org L: linux-crypto@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
@ -19518,7 +19549,7 @@ F: Documentation/devicetree/bindings/media/samsung,fimc.yaml
F: drivers/media/platform/samsung/exynos4-is/ F: drivers/media/platform/samsung/exynos4-is/
SAMSUNG SOC CLOCK DRIVERS SAMSUNG SOC CLOCK DRIVERS
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
M: Sylwester Nawrocki <s.nawrocki@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com>
M: Chanwoo Choi <cw00.choi@samsung.com> M: Chanwoo Choi <cw00.choi@samsung.com>
R: Alim Akhtar <alim.akhtar@samsung.com> R: Alim Akhtar <alim.akhtar@samsung.com>
@ -19550,7 +19581,7 @@ F: drivers/net/ethernet/samsung/sxgbe/
SAMSUNG THERMAL DRIVER SAMSUNG THERMAL DRIVER
M: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> M: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
@ -19637,7 +19668,7 @@ F: drivers/scsi/sg.c
F: include/scsi/sg.h F: include/scsi/sg.h
SCSI SUBSYSTEM SCSI SUBSYSTEM
M: "James E.J. Bottomley" <jejb@linux.ibm.com> M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
M: "Martin K. Petersen" <martin.petersen@oracle.com> M: "Martin K. Petersen" <martin.petersen@oracle.com>
L: linux-scsi@vger.kernel.org L: linux-scsi@vger.kernel.org
S: Maintained S: Maintained
@ -22254,13 +22285,20 @@ S: Supported
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
F: include/linux/clocksource.h F: include/linux/clocksource.h
F: include/linux/time.h F: include/linux/time.h
F: include/linux/timekeeper_internal.h
F: include/linux/timekeeping.h
F: include/linux/timex.h F: include/linux/timex.h
F: include/uapi/linux/time.h F: include/uapi/linux/time.h
F: include/uapi/linux/timex.h F: include/uapi/linux/timex.h
F: kernel/time/alarmtimer.c F: kernel/time/alarmtimer.c
F: kernel/time/clocksource.c F: kernel/time/clocksource*
F: kernel/time/ntp.c F: kernel/time/ntp*
F: kernel/time/time*.c F: kernel/time/time.c
F: kernel/time/timeconst.bc
F: kernel/time/timeconv.c
F: kernel/time/timecounter.c
F: kernel/time/timekeeping*
F: kernel/time/time_test.c
F: tools/testing/selftests/timers/ F: tools/testing/selftests/timers/
TIPC NETWORK LAYER TIPC NETWORK LAYER
@ -22384,6 +22422,7 @@ S: Maintained
W: https://kernsec.org/wiki/index.php/Linux_Kernel_Integrity W: https://kernsec.org/wiki/index.php/Linux_Kernel_Integrity
Q: https://patchwork.kernel.org/project/linux-integrity/list/ Q: https://patchwork.kernel.org/project/linux-integrity/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git
F: Documentation/devicetree/bindings/tpm/
F: drivers/char/tpm/ F: drivers/char/tpm/
TPS546D24 DRIVER TPS546D24 DRIVER
@ -22530,6 +22569,7 @@ Q: https://patchwork.kernel.org/project/linux-pm/list/
B: https://bugzilla.kernel.org B: https://bugzilla.kernel.org
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git turbostat T: git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux.git turbostat
F: tools/power/x86/turbostat/ F: tools/power/x86/turbostat/
F: tools/testing/selftests/turbostat/
TW5864 VIDEO4LINUX DRIVER TW5864 VIDEO4LINUX DRIVER
M: Bluecherry Maintainers <maintainers@bluecherrydvr.com> M: Bluecherry Maintainers <maintainers@bluecherrydvr.com>
@ -23608,9 +23648,9 @@ S: Supported
F: drivers/misc/vmw_balloon.c F: drivers/misc/vmw_balloon.c
VMWARE HYPERVISOR INTERFACE VMWARE HYPERVISOR INTERFACE
M: Ajay Kaher <akaher@vmware.com> M: Ajay Kaher <ajay.kaher@broadcom.com>
M: Alexey Makhalov <amakhalov@vmware.com> M: Alexey Makhalov <alexey.amakhalov@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: virtualization@lists.linux.dev L: virtualization@lists.linux.dev
L: x86@kernel.org L: x86@kernel.org
S: Supported S: Supported
@ -23619,34 +23659,34 @@ F: arch/x86/include/asm/vmware.h
F: arch/x86/kernel/cpu/vmware.c F: arch/x86/kernel/cpu/vmware.c
VMWARE PVRDMA DRIVER VMWARE PVRDMA DRIVER
M: Bryan Tan <bryantan@vmware.com> M: Bryan Tan <bryan-bt.tan@broadcom.com>
M: Vishnu Dasa <vdasa@vmware.com> M: Vishnu Dasa <vishnu.dasa@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: linux-rdma@vger.kernel.org L: linux-rdma@vger.kernel.org
S: Supported S: Supported
F: drivers/infiniband/hw/vmw_pvrdma/ F: drivers/infiniband/hw/vmw_pvrdma/
VMWARE PVSCSI DRIVER VMWARE PVSCSI DRIVER
M: Vishal Bhakta <vbhakta@vmware.com> M: Vishal Bhakta <vishal.bhakta@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: linux-scsi@vger.kernel.org L: linux-scsi@vger.kernel.org
S: Supported S: Supported
F: drivers/scsi/vmw_pvscsi.c F: drivers/scsi/vmw_pvscsi.c
F: drivers/scsi/vmw_pvscsi.h F: drivers/scsi/vmw_pvscsi.h
VMWARE VIRTUAL PTP CLOCK DRIVER VMWARE VIRTUAL PTP CLOCK DRIVER
M: Jeff Sipek <jsipek@vmware.com> M: Nick Shi <nick.shi@broadcom.com>
R: Ajay Kaher <akaher@vmware.com> R: Ajay Kaher <ajay.kaher@broadcom.com>
R: Alexey Makhalov <amakhalov@vmware.com> R: Alexey Makhalov <alexey.amakhalov@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Supported S: Supported
F: drivers/ptp/ptp_vmw.c F: drivers/ptp/ptp_vmw.c
VMWARE VMCI DRIVER VMWARE VMCI DRIVER
M: Bryan Tan <bryantan@vmware.com> M: Bryan Tan <bryan-bt.tan@broadcom.com>
M: Vishnu Dasa <vdasa@vmware.com> M: Vishnu Dasa <vishnu.dasa@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Supported S: Supported
F: drivers/misc/vmw_vmci/ F: drivers/misc/vmw_vmci/
@ -23661,16 +23701,16 @@ F: drivers/input/mouse/vmmouse.c
F: drivers/input/mouse/vmmouse.h F: drivers/input/mouse/vmmouse.h
VMWARE VMXNET3 ETHERNET DRIVER VMWARE VMXNET3 ETHERNET DRIVER
M: Ronak Doshi <doshir@vmware.com> M: Ronak Doshi <ronak.doshi@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Supported S: Supported
F: drivers/net/vmxnet3/ F: drivers/net/vmxnet3/
VMWARE VSOCK VMCI TRANSPORT DRIVER VMWARE VSOCK VMCI TRANSPORT DRIVER
M: Bryan Tan <bryantan@vmware.com> M: Bryan Tan <bryan-bt.tan@broadcom.com>
M: Vishnu Dasa <vdasa@vmware.com> M: Vishnu Dasa <vishnu.dasa@broadcom.com>
R: VMware PV-Drivers Reviewers <pv-drivers@vmware.com> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Supported S: Supported
F: net/vmw_vsock/vmci_transport* F: net/vmw_vsock/vmci_transport*
@ -23738,7 +23778,7 @@ S: Orphan
F: drivers/mmc/host/vub300.c F: drivers/mmc/host/vub300.c
W1 DALLAS'S 1-WIRE BUS W1 DALLAS'S 1-WIRE BUS
M: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> M: Krzysztof Kozlowski <krzk@kernel.org>
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/w1/ F: Documentation/devicetree/bindings/w1/
F: Documentation/w1/ F: Documentation/w1/

View file

@ -2,7 +2,7 @@
VERSION = 6 VERSION = 6
PATCHLEVEL = 9 PATCHLEVEL = 9
SUBLEVEL = 0 SUBLEVEL = 0
EXTRAVERSION = -rc1 EXTRAVERSION = -rc5
NAME = Hurr durr I'ma ninja sloth NAME = Hurr durr I'ma ninja sloth
# *DOCUMENTATION* # *DOCUMENTATION*

View file

@ -1172,12 +1172,12 @@ config PAGE_SIZE_LESS_THAN_256KB
config PAGE_SHIFT config PAGE_SHIFT
int int
default 12 if PAGE_SIZE_4KB default 12 if PAGE_SIZE_4KB
default 13 if PAGE_SIZE_8KB default 13 if PAGE_SIZE_8KB
default 14 if PAGE_SIZE_16KB default 14 if PAGE_SIZE_16KB
default 15 if PAGE_SIZE_32KB default 15 if PAGE_SIZE_32KB
default 16 if PAGE_SIZE_64KB default 16 if PAGE_SIZE_64KB
default 18 if PAGE_SIZE_256KB default 18 if PAGE_SIZE_256KB
# This allows to use a set of generic functions to determine mmap base # This allows to use a set of generic functions to determine mmap base
# address by giving priority to top-down scheme only if the process # address by giving priority to top-down scheme only if the process

View file

@ -666,7 +666,7 @@ &usdhc1 {
bus-width = <4>; bus-width = <4>;
no-1-8-v; no-1-8-v;
no-sdio; no-sdio;
no-emmc; no-mmc;
status = "okay"; status = "okay";
}; };

View file

@ -210,6 +210,7 @@ ov2680_to_mipi: endpoint {
remote-endpoint = <&mipi_from_sensor>; remote-endpoint = <&mipi_from_sensor>;
clock-lanes = <0>; clock-lanes = <0>;
data-lanes = <1>; data-lanes = <1>;
link-frequencies = /bits/ 64 <330000000>;
}; };
}; };
}; };

View file

@ -0,0 +1,14 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MMAN_H__
#define __ASM_MMAN_H__
#include <asm/system_info.h>
#include <uapi/asm/mman.h>
static inline bool arch_memory_deny_write_exec_supported(void)
{
return cpu_architecture() >= CPU_ARCH_ARMv6;
}
#define arch_memory_deny_write_exec_supported arch_memory_deny_write_exec_supported
#endif /* __ASM_MMAN_H__ */

View file

@ -79,10 +79,8 @@ static struct musb_hdrc_platform_data tusb_data = {
static struct gpiod_lookup_table tusb_gpio_table = { static struct gpiod_lookup_table tusb_gpio_table = {
.dev_id = "musb-tusb", .dev_id = "musb-tusb",
.table = { .table = {
GPIO_LOOKUP("gpio-0-15", 0, "enable", GPIO_LOOKUP("gpio-0-31", 0, "enable", GPIO_ACTIVE_HIGH),
GPIO_ACTIVE_HIGH), GPIO_LOOKUP("gpio-32-63", 26, "int", GPIO_ACTIVE_HIGH),
GPIO_LOOKUP("gpio-48-63", 10, "int",
GPIO_ACTIVE_HIGH),
{ } { }
}, },
}; };
@ -140,12 +138,11 @@ static int slot1_cover_open;
static int slot2_cover_open; static int slot2_cover_open;
static struct device *mmc_device; static struct device *mmc_device;
static struct gpiod_lookup_table nokia8xx_mmc_gpio_table = { static struct gpiod_lookup_table nokia800_mmc_gpio_table = {
.dev_id = "mmci-omap.0", .dev_id = "mmci-omap.0",
.table = { .table = {
/* Slot switch, GPIO 96 */ /* Slot switch, GPIO 96 */
GPIO_LOOKUP("gpio-80-111", 16, GPIO_LOOKUP("gpio-96-127", 0, "switch", GPIO_ACTIVE_HIGH),
"switch", GPIO_ACTIVE_HIGH),
{ } { }
}, },
}; };
@ -153,12 +150,12 @@ static struct gpiod_lookup_table nokia8xx_mmc_gpio_table = {
static struct gpiod_lookup_table nokia810_mmc_gpio_table = { static struct gpiod_lookup_table nokia810_mmc_gpio_table = {
.dev_id = "mmci-omap.0", .dev_id = "mmci-omap.0",
.table = { .table = {
/* Slot switch, GPIO 96 */
GPIO_LOOKUP("gpio-96-127", 0, "switch", GPIO_ACTIVE_HIGH),
/* Slot index 1, VSD power, GPIO 23 */ /* Slot index 1, VSD power, GPIO 23 */
GPIO_LOOKUP_IDX("gpio-16-31", 7, GPIO_LOOKUP_IDX("gpio-0-31", 23, "vsd", 1, GPIO_ACTIVE_HIGH),
"vsd", 1, GPIO_ACTIVE_HIGH),
/* Slot index 1, VIO power, GPIO 9 */ /* Slot index 1, VIO power, GPIO 9 */
GPIO_LOOKUP_IDX("gpio-0-15", 9, GPIO_LOOKUP_IDX("gpio-0-31", 9, "vio", 1, GPIO_ACTIVE_HIGH),
"vio", 1, GPIO_ACTIVE_HIGH),
{ } { }
}, },
}; };
@ -415,8 +412,6 @@ static struct omap_mmc_platform_data *mmc_data[OMAP24XX_NR_MMC];
static void __init n8x0_mmc_init(void) static void __init n8x0_mmc_init(void)
{ {
gpiod_add_lookup_table(&nokia8xx_mmc_gpio_table);
if (board_is_n810()) { if (board_is_n810()) {
mmc1_data.slots[0].name = "external"; mmc1_data.slots[0].name = "external";
@ -429,6 +424,8 @@ static void __init n8x0_mmc_init(void)
mmc1_data.slots[1].name = "internal"; mmc1_data.slots[1].name = "internal";
mmc1_data.slots[1].ban_openended = 1; mmc1_data.slots[1].ban_openended = 1;
gpiod_add_lookup_table(&nokia810_mmc_gpio_table); gpiod_add_lookup_table(&nokia810_mmc_gpio_table);
} else {
gpiod_add_lookup_table(&nokia800_mmc_gpio_table);
} }
mmc1_data.nr_slots = 2; mmc1_data.nr_slots = 2;

View file

@ -41,7 +41,7 @@ usbotg1: usb@5b0d0000 {
interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>;
fsl,usbphy = <&usbphy1>; fsl,usbphy = <&usbphy1>;
fsl,usbmisc = <&usbmisc1 0>; fsl,usbmisc = <&usbmisc1 0>;
clocks = <&usb2_lpcg 0>; clocks = <&usb2_lpcg IMX_LPCG_CLK_6>;
ahb-burst-config = <0x0>; ahb-burst-config = <0x0>;
tx-burst-size-dword = <0x10>; tx-burst-size-dword = <0x10>;
rx-burst-size-dword = <0x10>; rx-burst-size-dword = <0x10>;
@ -58,7 +58,7 @@ usbmisc1: usbmisc@5b0d0200 {
usbphy1: usbphy@5b100000 { usbphy1: usbphy@5b100000 {
compatible = "fsl,imx7ulp-usbphy"; compatible = "fsl,imx7ulp-usbphy";
reg = <0x5b100000 0x1000>; reg = <0x5b100000 0x1000>;
clocks = <&usb2_lpcg 1>; clocks = <&usb2_lpcg IMX_LPCG_CLK_7>;
power-domains = <&pd IMX_SC_R_USB_0_PHY>; power-domains = <&pd IMX_SC_R_USB_0_PHY>;
status = "disabled"; status = "disabled";
}; };
@ -67,8 +67,8 @@ usdhc1: mmc@5b010000 {
interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x5b010000 0x10000>; reg = <0x5b010000 0x10000>;
clocks = <&sdhc0_lpcg IMX_LPCG_CLK_4>, clocks = <&sdhc0_lpcg IMX_LPCG_CLK_4>,
<&sdhc0_lpcg IMX_LPCG_CLK_0>, <&sdhc0_lpcg IMX_LPCG_CLK_5>,
<&sdhc0_lpcg IMX_LPCG_CLK_5>; <&sdhc0_lpcg IMX_LPCG_CLK_0>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
power-domains = <&pd IMX_SC_R_SDHC_0>; power-domains = <&pd IMX_SC_R_SDHC_0>;
status = "disabled"; status = "disabled";
@ -78,8 +78,8 @@ usdhc2: mmc@5b020000 {
interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x5b020000 0x10000>; reg = <0x5b020000 0x10000>;
clocks = <&sdhc1_lpcg IMX_LPCG_CLK_4>, clocks = <&sdhc1_lpcg IMX_LPCG_CLK_4>,
<&sdhc1_lpcg IMX_LPCG_CLK_0>, <&sdhc1_lpcg IMX_LPCG_CLK_5>,
<&sdhc1_lpcg IMX_LPCG_CLK_5>; <&sdhc1_lpcg IMX_LPCG_CLK_0>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
power-domains = <&pd IMX_SC_R_SDHC_1>; power-domains = <&pd IMX_SC_R_SDHC_1>;
fsl,tuning-start-tap = <20>; fsl,tuning-start-tap = <20>;
@ -91,8 +91,8 @@ usdhc3: mmc@5b030000 {
interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x5b030000 0x10000>; reg = <0x5b030000 0x10000>;
clocks = <&sdhc2_lpcg IMX_LPCG_CLK_4>, clocks = <&sdhc2_lpcg IMX_LPCG_CLK_4>,
<&sdhc2_lpcg IMX_LPCG_CLK_0>, <&sdhc2_lpcg IMX_LPCG_CLK_5>,
<&sdhc2_lpcg IMX_LPCG_CLK_5>; <&sdhc2_lpcg IMX_LPCG_CLK_0>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
power-domains = <&pd IMX_SC_R_SDHC_2>; power-domains = <&pd IMX_SC_R_SDHC_2>;
status = "disabled"; status = "disabled";

View file

@ -28,8 +28,8 @@ lpspi0: spi@5a000000 {
#size-cells = <0>; #size-cells = <0>;
interrupts = <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&spi0_lpcg 0>, clocks = <&spi0_lpcg IMX_LPCG_CLK_0>,
<&spi0_lpcg 1>; <&spi0_lpcg IMX_LPCG_CLK_4>;
clock-names = "per", "ipg"; clock-names = "per", "ipg";
assigned-clocks = <&clk IMX_SC_R_SPI_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_SPI_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <60000000>; assigned-clock-rates = <60000000>;
@ -44,8 +44,8 @@ lpspi1: spi@5a010000 {
#size-cells = <0>; #size-cells = <0>;
interrupts = <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&spi1_lpcg 0>, clocks = <&spi1_lpcg IMX_LPCG_CLK_0>,
<&spi1_lpcg 1>; <&spi1_lpcg IMX_LPCG_CLK_4>;
clock-names = "per", "ipg"; clock-names = "per", "ipg";
assigned-clocks = <&clk IMX_SC_R_SPI_1 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_SPI_1 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <60000000>; assigned-clock-rates = <60000000>;
@ -60,8 +60,8 @@ lpspi2: spi@5a020000 {
#size-cells = <0>; #size-cells = <0>;
interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&spi2_lpcg 0>, clocks = <&spi2_lpcg IMX_LPCG_CLK_0>,
<&spi2_lpcg 1>; <&spi2_lpcg IMX_LPCG_CLK_4>;
clock-names = "per", "ipg"; clock-names = "per", "ipg";
assigned-clocks = <&clk IMX_SC_R_SPI_2 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_SPI_2 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <60000000>; assigned-clock-rates = <60000000>;
@ -76,8 +76,8 @@ lpspi3: spi@5a030000 {
#size-cells = <0>; #size-cells = <0>;
interrupts = <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&spi3_lpcg 0>, clocks = <&spi3_lpcg IMX_LPCG_CLK_0>,
<&spi3_lpcg 1>; <&spi3_lpcg IMX_LPCG_CLK_4>;
clock-names = "per", "ipg"; clock-names = "per", "ipg";
assigned-clocks = <&clk IMX_SC_R_SPI_3 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_SPI_3 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <60000000>; assigned-clock-rates = <60000000>;
@ -145,8 +145,8 @@ adma_pwm: pwm@5a190000 {
compatible = "fsl,imx8qxp-pwm", "fsl,imx27-pwm"; compatible = "fsl,imx8qxp-pwm", "fsl,imx27-pwm";
reg = <0x5a190000 0x1000>; reg = <0x5a190000 0x1000>;
interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&adma_pwm_lpcg 1>, clocks = <&adma_pwm_lpcg IMX_LPCG_CLK_4>,
<&adma_pwm_lpcg 0>; <&adma_pwm_lpcg IMX_LPCG_CLK_0>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
assigned-clocks = <&clk IMX_SC_R_LCD_0_PWM_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_LCD_0_PWM_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
@ -355,8 +355,8 @@ adc0: adc@5a880000 {
reg = <0x5a880000 0x10000>; reg = <0x5a880000 0x10000>;
interrupts = <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&adc0_lpcg 0>, clocks = <&adc0_lpcg IMX_LPCG_CLK_0>,
<&adc0_lpcg 1>; <&adc0_lpcg IMX_LPCG_CLK_4>;
clock-names = "per", "ipg"; clock-names = "per", "ipg";
assigned-clocks = <&clk IMX_SC_R_ADC_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_ADC_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
@ -370,8 +370,8 @@ adc1: adc@5a890000 {
reg = <0x5a890000 0x10000>; reg = <0x5a890000 0x10000>;
interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&adc1_lpcg 0>, clocks = <&adc1_lpcg IMX_LPCG_CLK_0>,
<&adc1_lpcg 1>; <&adc1_lpcg IMX_LPCG_CLK_4>;
clock-names = "per", "ipg"; clock-names = "per", "ipg";
assigned-clocks = <&clk IMX_SC_R_ADC_1 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_ADC_1 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
@ -384,8 +384,8 @@ flexcan1: can@5a8d0000 {
reg = <0x5a8d0000 0x10000>; reg = <0x5a8d0000 0x10000>;
interrupts = <GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&can0_lpcg 1>, clocks = <&can0_lpcg IMX_LPCG_CLK_4>,
<&can0_lpcg 0>; <&can0_lpcg IMX_LPCG_CLK_0>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
assigned-clocks = <&clk IMX_SC_R_CAN_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_CAN_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <40000000>; assigned-clock-rates = <40000000>;
@ -405,8 +405,8 @@ flexcan2: can@5a8e0000 {
* CAN1 shares CAN0's clock and to enable CAN0's clock it * CAN1 shares CAN0's clock and to enable CAN0's clock it
* has to be powered on. * has to be powered on.
*/ */
clocks = <&can0_lpcg 1>, clocks = <&can0_lpcg IMX_LPCG_CLK_4>,
<&can0_lpcg 0>; <&can0_lpcg IMX_LPCG_CLK_0>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
assigned-clocks = <&clk IMX_SC_R_CAN_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_CAN_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <40000000>; assigned-clock-rates = <40000000>;
@ -426,8 +426,8 @@ flexcan3: can@5a8f0000 {
* CAN2 shares CAN0's clock and to enable CAN0's clock it * CAN2 shares CAN0's clock and to enable CAN0's clock it
* has to be powered on. * has to be powered on.
*/ */
clocks = <&can0_lpcg 1>, clocks = <&can0_lpcg IMX_LPCG_CLK_4>,
<&can0_lpcg 0>; <&can0_lpcg IMX_LPCG_CLK_0>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
assigned-clocks = <&clk IMX_SC_R_CAN_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_CAN_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <40000000>; assigned-clock-rates = <40000000>;

View file

@ -25,8 +25,8 @@ lsio_pwm0: pwm@5d000000 {
compatible = "fsl,imx27-pwm"; compatible = "fsl,imx27-pwm";
reg = <0x5d000000 0x10000>; reg = <0x5d000000 0x10000>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
clocks = <&pwm0_lpcg 4>, clocks = <&pwm0_lpcg IMX_LPCG_CLK_6>,
<&pwm0_lpcg 1>; <&pwm0_lpcg IMX_LPCG_CLK_1>;
assigned-clocks = <&clk IMX_SC_R_PWM_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <3>; #pwm-cells = <3>;
@ -38,8 +38,8 @@ lsio_pwm1: pwm@5d010000 {
compatible = "fsl,imx27-pwm"; compatible = "fsl,imx27-pwm";
reg = <0x5d010000 0x10000>; reg = <0x5d010000 0x10000>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
clocks = <&pwm1_lpcg 4>, clocks = <&pwm1_lpcg IMX_LPCG_CLK_6>,
<&pwm1_lpcg 1>; <&pwm1_lpcg IMX_LPCG_CLK_1>;
assigned-clocks = <&clk IMX_SC_R_PWM_1 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_1 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <3>; #pwm-cells = <3>;
@ -51,8 +51,8 @@ lsio_pwm2: pwm@5d020000 {
compatible = "fsl,imx27-pwm"; compatible = "fsl,imx27-pwm";
reg = <0x5d020000 0x10000>; reg = <0x5d020000 0x10000>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
clocks = <&pwm2_lpcg 4>, clocks = <&pwm2_lpcg IMX_LPCG_CLK_6>,
<&pwm2_lpcg 1>; <&pwm2_lpcg IMX_LPCG_CLK_1>;
assigned-clocks = <&clk IMX_SC_R_PWM_2 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_2 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <3>; #pwm-cells = <3>;
@ -64,8 +64,8 @@ lsio_pwm3: pwm@5d030000 {
compatible = "fsl,imx27-pwm"; compatible = "fsl,imx27-pwm";
reg = <0x5d030000 0x10000>; reg = <0x5d030000 0x10000>;
clock-names = "ipg", "per"; clock-names = "ipg", "per";
clocks = <&pwm3_lpcg 4>, clocks = <&pwm3_lpcg IMX_LPCG_CLK_6>,
<&pwm3_lpcg 1>; <&pwm3_lpcg IMX_LPCG_CLK_1>;
assigned-clocks = <&clk IMX_SC_R_PWM_3 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_3 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <3>; #pwm-cells = <3>;

View file

@ -14,6 +14,7 @@ connector {
pinctrl-0 = <&pinctrl_usbcon1>; pinctrl-0 = <&pinctrl_usbcon1>;
type = "micro"; type = "micro";
label = "otg"; label = "otg";
vbus-supply = <&reg_usb1_vbus>;
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
port { port {
@ -183,7 +184,6 @@ &usb3_0 {
}; };
&usb3_phy0 { &usb3_phy0 {
vbus-supply = <&reg_usb1_vbus>;
status = "okay"; status = "okay";
}; };

View file

@ -14,6 +14,7 @@ connector {
pinctrl-0 = <&pinctrl_usbcon1>; pinctrl-0 = <&pinctrl_usbcon1>;
type = "micro"; type = "micro";
label = "otg"; label = "otg";
vbus-supply = <&reg_usb1_vbus>;
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
port { port {
@ -202,7 +203,6 @@ &usb3_0 {
}; };
&usb3_phy0 { &usb3_phy0 {
vbus-supply = <&reg_usb1_vbus>;
status = "okay"; status = "okay";
}; };

View file

@ -153,15 +153,15 @@ &flexcan1 {
}; };
&flexcan2 { &flexcan2 {
clocks = <&can1_lpcg 1>, clocks = <&can1_lpcg IMX_LPCG_CLK_4>,
<&can1_lpcg 0>; <&can1_lpcg IMX_LPCG_CLK_0>;
assigned-clocks = <&clk IMX_SC_R_CAN_1 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_CAN_1 IMX_SC_PM_CLK_PER>;
fsl,clk-source = /bits/ 8 <1>; fsl,clk-source = /bits/ 8 <1>;
}; };
&flexcan3 { &flexcan3 {
clocks = <&can2_lpcg 1>, clocks = <&can2_lpcg IMX_LPCG_CLK_4>,
<&can2_lpcg 0>; <&can2_lpcg IMX_LPCG_CLK_0>;
assigned-clocks = <&clk IMX_SC_R_CAN_2 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_CAN_2 IMX_SC_PM_CLK_PER>;
fsl,clk-source = /bits/ 8 <1>; fsl,clk-source = /bits/ 8 <1>;
}; };

View file

@ -944,6 +944,8 @@ bluetooth: bluetooth {
vddrf-supply = <&pp1300_l2c>; vddrf-supply = <&pp1300_l2c>;
vddch0-supply = <&pp3300_l10c>; vddch0-supply = <&pp3300_l10c>;
max-speed = <3200000>; max-speed = <3200000>;
qcom,local-bd-address-broken;
}; };
}; };

View file

@ -161,12 +161,18 @@ static inline unsigned long get_trans_granule(void)
#define MAX_TLBI_RANGE_PAGES __TLBI_RANGE_PAGES(31, 3) #define MAX_TLBI_RANGE_PAGES __TLBI_RANGE_PAGES(31, 3)
/* /*
* Generate 'num' values from -1 to 30 with -1 rejected by the * Generate 'num' values from -1 to 31 with -1 rejected by the
* __flush_tlb_range() loop below. * __flush_tlb_range() loop below. Its return value is only
* significant for a maximum of MAX_TLBI_RANGE_PAGES pages. If
* 'pages' is more than that, you must iterate over the overall
* range.
*/ */
#define TLBI_RANGE_MASK GENMASK_ULL(4, 0) #define __TLBI_RANGE_NUM(pages, scale) \
#define __TLBI_RANGE_NUM(pages, scale) \ ({ \
((((pages) >> (5 * (scale) + 1)) & TLBI_RANGE_MASK) - 1) int __pages = min((pages), \
__TLBI_RANGE_PAGES(31, (scale))); \
(__pages >> (5 * (scale) + 1)) - 1; \
})
/* /*
* TLB Invalidation * TLB Invalidation
@ -379,10 +385,6 @@ static inline void arch_tlbbatch_flush(struct arch_tlbflush_unmap_batch *batch)
* 3. If there is 1 page remaining, flush it through non-range operations. Range * 3. If there is 1 page remaining, flush it through non-range operations. Range
* operations can only span an even number of pages. We save this for last to * operations can only span an even number of pages. We save this for last to
* ensure 64KB start alignment is maintained for the LPA2 case. * ensure 64KB start alignment is maintained for the LPA2 case.
*
* Note that certain ranges can be represented by either num = 31 and
* scale or num = 0 and scale + 1. The loop below favours the latter
* since num is limited to 30 by the __TLBI_RANGE_NUM() macro.
*/ */
#define __flush_tlb_range_op(op, start, pages, stride, \ #define __flush_tlb_range_op(op, start, pages, stride, \
asid, tlb_level, tlbi_user, lpa2) \ asid, tlb_level, tlbi_user, lpa2) \

View file

@ -289,8 +289,28 @@ SYM_INNER_LABEL(init_el2, SYM_L_LOCAL)
adr_l x1, __hyp_text_end adr_l x1, __hyp_text_end
adr_l x2, dcache_clean_poc adr_l x2, dcache_clean_poc
blr x2 blr x2
mov_q x0, INIT_SCTLR_EL2_MMU_OFF
pre_disable_mmu_workaround
msr sctlr_el2, x0
isb
0: 0:
mov_q x0, HCR_HOST_NVHE_FLAGS mov_q x0, HCR_HOST_NVHE_FLAGS
/*
* Compliant CPUs advertise their VHE-onlyness with
* ID_AA64MMFR4_EL1.E2H0 < 0. HCR_EL2.E2H can be
* RES1 in that case. Publish the E2H bit early so that
* it can be picked up by the init_el2_state macro.
*
* Fruity CPUs seem to have HCR_EL2.E2H set to RAO/WI, but
* don't advertise it (they predate this relaxation).
*/
mrs_s x1, SYS_ID_AA64MMFR4_EL1
tbz x1, #(ID_AA64MMFR4_EL1_E2H0_SHIFT + ID_AA64MMFR4_EL1_E2H0_WIDTH - 1), 1f
orr x0, x0, #HCR_E2H
1:
msr hcr_el2, x0 msr hcr_el2, x0
isb isb
@ -303,30 +323,16 @@ SYM_INNER_LABEL(init_el2, SYM_L_LOCAL)
mov_q x1, INIT_SCTLR_EL1_MMU_OFF mov_q x1, INIT_SCTLR_EL1_MMU_OFF
/*
* Compliant CPUs advertise their VHE-onlyness with
* ID_AA64MMFR4_EL1.E2H0 < 0. HCR_EL2.E2H can be
* RES1 in that case.
*
* Fruity CPUs seem to have HCR_EL2.E2H set to RES1, but
* don't advertise it (they predate this relaxation).
*/
mrs_s x0, SYS_ID_AA64MMFR4_EL1
ubfx x0, x0, #ID_AA64MMFR4_EL1_E2H0_SHIFT, #ID_AA64MMFR4_EL1_E2H0_WIDTH
tbnz x0, #(ID_AA64MMFR4_EL1_E2H0_SHIFT + ID_AA64MMFR4_EL1_E2H0_WIDTH - 1), 1f
mrs x0, hcr_el2 mrs x0, hcr_el2
and x0, x0, #HCR_E2H and x0, x0, #HCR_E2H
cbz x0, 2f cbz x0, 2f
1:
/* Set a sane SCTLR_EL1, the VHE way */ /* Set a sane SCTLR_EL1, the VHE way */
pre_disable_mmu_workaround
msr_s SYS_SCTLR_EL12, x1 msr_s SYS_SCTLR_EL12, x1
mov x2, #BOOT_CPU_FLAG_E2H mov x2, #BOOT_CPU_FLAG_E2H
b 3f b 3f
2: 2:
pre_disable_mmu_workaround
msr sctlr_el1, x1 msr sctlr_el1, x1
mov x2, xzr mov x2, xzr
3: 3:

View file

@ -761,7 +761,6 @@ static void sve_init_header_from_task(struct user_sve_header *header,
{ {
unsigned int vq; unsigned int vq;
bool active; bool active;
bool fpsimd_only;
enum vec_type task_type; enum vec_type task_type;
memset(header, 0, sizeof(*header)); memset(header, 0, sizeof(*header));
@ -777,12 +776,10 @@ static void sve_init_header_from_task(struct user_sve_header *header,
case ARM64_VEC_SVE: case ARM64_VEC_SVE:
if (test_tsk_thread_flag(target, TIF_SVE_VL_INHERIT)) if (test_tsk_thread_flag(target, TIF_SVE_VL_INHERIT))
header->flags |= SVE_PT_VL_INHERIT; header->flags |= SVE_PT_VL_INHERIT;
fpsimd_only = !test_tsk_thread_flag(target, TIF_SVE);
break; break;
case ARM64_VEC_SME: case ARM64_VEC_SME:
if (test_tsk_thread_flag(target, TIF_SME_VL_INHERIT)) if (test_tsk_thread_flag(target, TIF_SME_VL_INHERIT))
header->flags |= SVE_PT_VL_INHERIT; header->flags |= SVE_PT_VL_INHERIT;
fpsimd_only = false;
break; break;
default: default:
WARN_ON_ONCE(1); WARN_ON_ONCE(1);
@ -790,7 +787,7 @@ static void sve_init_header_from_task(struct user_sve_header *header,
} }
if (active) { if (active) {
if (fpsimd_only) { if (target->thread.fp_type == FP_STATE_FPSIMD) {
header->flags |= SVE_PT_REGS_FPSIMD; header->flags |= SVE_PT_REGS_FPSIMD;
} else { } else {
header->flags |= SVE_PT_REGS_SVE; header->flags |= SVE_PT_REGS_SVE;

View file

@ -2597,14 +2597,11 @@ static __init int kvm_arm_init(void)
if (err) if (err)
goto out_hyp; goto out_hyp;
if (is_protected_kvm_enabled()) { kvm_info("%s%sVHE mode initialized successfully\n",
kvm_info("Protected nVHE mode initialized successfully\n"); in_hyp_mode ? "" : (is_protected_kvm_enabled() ?
} else if (in_hyp_mode) { "Protected " : "Hyp "),
kvm_info("VHE mode initialized successfully\n"); in_hyp_mode ? "" : (cpus_have_final_cap(ARM64_KVM_HVHE) ?
} else { "h" : "n"));
char mode = cpus_have_final_cap(ARM64_KVM_HVHE) ? 'h' : 'n';
kvm_info("Hyp mode (%cVHE) initialized successfully\n", mode);
}
/* /*
* FIXME: Do something reasonable if kvm_init() fails after pKVM * FIXME: Do something reasonable if kvm_init() fails after pKVM

View file

@ -154,7 +154,8 @@ void __kvm_tlb_flush_vmid_range(struct kvm_s2_mmu *mmu,
/* Switch to requested VMID */ /* Switch to requested VMID */
__tlb_switch_to_guest(mmu, &cxt, false); __tlb_switch_to_guest(mmu, &cxt, false);
__flush_s2_tlb_range_op(ipas2e1is, start, pages, stride, 0); __flush_s2_tlb_range_op(ipas2e1is, start, pages, stride,
TLBI_TTL_UNKNOWN);
dsb(ish); dsb(ish);
__tlbi(vmalle1is); __tlbi(vmalle1is);

View file

@ -528,7 +528,7 @@ static int hyp_unmap_walker(const struct kvm_pgtable_visit_ctx *ctx,
kvm_clear_pte(ctx->ptep); kvm_clear_pte(ctx->ptep);
dsb(ishst); dsb(ishst);
__tlbi_level(vae2is, __TLBI_VADDR(ctx->addr, 0), ctx->level); __tlbi_level(vae2is, __TLBI_VADDR(ctx->addr, 0), TLBI_TTL_UNKNOWN);
} else { } else {
if (ctx->end - ctx->addr < granule) if (ctx->end - ctx->addr < granule)
return -EINVAL; return -EINVAL;
@ -843,12 +843,15 @@ static bool stage2_try_break_pte(const struct kvm_pgtable_visit_ctx *ctx,
* Perform the appropriate TLB invalidation based on the * Perform the appropriate TLB invalidation based on the
* evicted pte value (if any). * evicted pte value (if any).
*/ */
if (kvm_pte_table(ctx->old, ctx->level)) if (kvm_pte_table(ctx->old, ctx->level)) {
kvm_tlb_flush_vmid_range(mmu, ctx->addr, u64 size = kvm_granule_size(ctx->level);
kvm_granule_size(ctx->level)); u64 addr = ALIGN_DOWN(ctx->addr, size);
else if (kvm_pte_valid(ctx->old))
kvm_tlb_flush_vmid_range(mmu, addr, size);
} else if (kvm_pte_valid(ctx->old)) {
kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, mmu, kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, mmu,
ctx->addr, ctx->level); ctx->addr, ctx->level);
}
} }
if (stage2_pte_is_counted(ctx->old)) if (stage2_pte_is_counted(ctx->old))
@ -896,9 +899,13 @@ static void stage2_unmap_put_pte(const struct kvm_pgtable_visit_ctx *ctx,
if (kvm_pte_valid(ctx->old)) { if (kvm_pte_valid(ctx->old)) {
kvm_clear_pte(ctx->ptep); kvm_clear_pte(ctx->ptep);
if (!stage2_unmap_defer_tlb_flush(pgt)) if (kvm_pte_table(ctx->old, ctx->level)) {
kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, mmu, kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, mmu, ctx->addr,
ctx->addr, ctx->level); TLBI_TTL_UNKNOWN);
} else if (!stage2_unmap_defer_tlb_flush(pgt)) {
kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, mmu, ctx->addr,
ctx->level);
}
} }
mm_ops->put_page(ctx->ptep); mm_ops->put_page(ctx->ptep);

View file

@ -171,7 +171,8 @@ void __kvm_tlb_flush_vmid_range(struct kvm_s2_mmu *mmu,
/* Switch to requested VMID */ /* Switch to requested VMID */
__tlb_switch_to_guest(mmu, &cxt); __tlb_switch_to_guest(mmu, &cxt);
__flush_s2_tlb_range_op(ipas2e1is, start, pages, stride, 0); __flush_s2_tlb_range_op(ipas2e1is, start, pages, stride,
TLBI_TTL_UNKNOWN);
dsb(ish); dsb(ish);
__tlbi(vmalle1is); __tlbi(vmalle1is);

View file

@ -1637,7 +1637,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu)
fault_ipa = kvm_vcpu_get_fault_ipa(vcpu); fault_ipa = kvm_vcpu_get_fault_ipa(vcpu);
is_iabt = kvm_vcpu_trap_is_iabt(vcpu); is_iabt = kvm_vcpu_trap_is_iabt(vcpu);
if (esr_fsc_is_permission_fault(esr)) { if (esr_fsc_is_translation_fault(esr)) {
/* Beyond sanitised PARange (which is the IPA limit) */ /* Beyond sanitised PARange (which is the IPA limit) */
if (fault_ipa >= BIT_ULL(get_kvm_ipa_limit())) { if (fault_ipa >= BIT_ULL(get_kvm_ipa_limit())) {
kvm_inject_size_fault(vcpu); kvm_inject_size_fault(vcpu);

View file

@ -276,7 +276,10 @@ pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
pte_t *ptep = NULL; pte_t *ptep = NULL;
pgdp = pgd_offset(mm, addr); pgdp = pgd_offset(mm, addr);
p4dp = p4d_offset(pgdp, addr); p4dp = p4d_alloc(mm, pgdp, addr);
if (!p4dp)
return NULL;
pudp = pud_alloc(mm, p4dp, addr); pudp = pud_alloc(mm, p4dp, addr);
if (!pudp) if (!pudp)
return NULL; return NULL;

View file

@ -219,9 +219,6 @@ bool kernel_page_present(struct page *page)
pte_t *ptep; pte_t *ptep;
unsigned long addr = (unsigned long)page_address(page); unsigned long addr = (unsigned long)page_address(page);
if (!can_set_direct_map())
return true;
pgdp = pgd_offset_k(addr); pgdp = pgd_offset_k(addr);
if (pgd_none(READ_ONCE(*pgdp))) if (pgd_none(READ_ONCE(*pgdp)))
return false; return false;

View file

@ -943,7 +943,7 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
emit(A64_UXTH(is64, dst, dst), ctx); emit(A64_UXTH(is64, dst, dst), ctx);
break; break;
case 32: case 32:
emit(A64_REV32(is64, dst, dst), ctx); emit(A64_REV32(0, dst, dst), ctx);
/* upper 32 bits already cleared */ /* upper 32 bits already cleared */
break; break;
case 64: case 64:
@ -1256,7 +1256,7 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
} else { } else {
emit_a64_mov_i(1, tmp, off, ctx); emit_a64_mov_i(1, tmp, off, ctx);
if (sign_extend) if (sign_extend)
emit(A64_LDRSW(dst, src_adj, off_adj), ctx); emit(A64_LDRSW(dst, src, tmp), ctx);
else else
emit(A64_LDR32(dst, src, tmp), ctx); emit(A64_LDR32(dst, src, tmp), ctx);
} }

View file

@ -63,6 +63,7 @@ SECTIONS
STABS_DEBUG STABS_DEBUG
DWARF_DEBUG DWARF_DEBUG
ELF_DETAILS ELF_DETAILS
.hexagon.attributes 0 : { *(.hexagon.attributes) }
DISCARDS DISCARDS
} }

View file

@ -100,6 +100,13 @@ bus@10000000 {
#size-cells = <2>; #size-cells = <2>;
dma-coherent; dma-coherent;
isa@18000000 {
compatible = "isa";
#size-cells = <1>;
#address-cells = <2>;
ranges = <1 0x0 0x0 0x18000000 0x4000>;
};
liointc0: interrupt-controller@1fe01400 { liointc0: interrupt-controller@1fe01400 {
compatible = "loongson,liointc-2.0"; compatible = "loongson,liointc-2.0";
reg = <0x0 0x1fe01400 0x0 0x40>, reg = <0x0 0x1fe01400 0x0 0x40>,

View file

@ -61,12 +61,45 @@ &xhci1 {
&gmac0 { &gmac0 {
status = "okay"; status = "okay";
phy-mode = "gmii";
phy-handle = <&phy0>;
mdio {
compatible = "snps,dwmac-mdio";
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@0 {
reg = <2>;
};
};
}; };
&gmac1 { &gmac1 {
status = "okay"; status = "okay";
phy-mode = "gmii";
phy-handle = <&phy1>;
mdio {
compatible = "snps,dwmac-mdio";
#address-cells = <1>;
#size-cells = <0>;
phy1: ethernet-phy@1 {
reg = <2>;
};
};
}; };
&gmac2 { &gmac2 {
status = "okay"; status = "okay";
phy-mode = "rgmii";
phy-handle = <&phy2>;
mdio {
compatible = "snps,dwmac-mdio";
#address-cells = <1>;
#size-cells = <0>;
phy2: ethernet-phy@2 {
reg = <0>;
};
};
}; };

View file

@ -51,6 +51,13 @@ bus@10000000 {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
isa@18400000 {
compatible = "isa";
#size-cells = <1>;
#address-cells = <2>;
ranges = <1 0x0 0x0 0x18400000 0x4000>;
};
pmc: power-management@100d0000 { pmc: power-management@100d0000 {
compatible = "loongson,ls2k2000-pmc", "loongson,ls2k0500-pmc", "syscon"; compatible = "loongson,ls2k2000-pmc", "loongson,ls2k0500-pmc", "syscon";
reg = <0x0 0x100d0000 0x0 0x58>; reg = <0x0 0x100d0000 0x0 0x58>;
@ -109,6 +116,8 @@ pic: interrupt-controller@10000000 {
msi: msi-controller@1fe01140 { msi: msi-controller@1fe01140 {
compatible = "loongson,pch-msi-1.0"; compatible = "loongson,pch-msi-1.0";
reg = <0x0 0x1fe01140 0x0 0x8>; reg = <0x0 0x1fe01140 0x0 0x8>;
interrupt-controller;
#interrupt-cells = <1>;
msi-controller; msi-controller;
loongson,msi-base-vec = <64>; loongson,msi-base-vec = <64>;
loongson,msi-num-vecs = <192>; loongson,msi-num-vecs = <192>;
@ -140,27 +149,34 @@ pcie@1a000000 {
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
device_type = "pci"; device_type = "pci";
msi-parent = <&msi>;
bus-range = <0x0 0xff>; bus-range = <0x0 0xff>;
ranges = <0x01000000 0x0 0x00008000 0x0 0x18400000 0x0 0x00008000>, ranges = <0x01000000 0x0 0x00008000 0x0 0x18408000 0x0 0x00008000>,
<0x02000000 0x0 0x60000000 0x0 0x60000000 0x0 0x20000000>; <0x02000000 0x0 0x60000000 0x0 0x60000000 0x0 0x20000000>;
gmac0: ethernet@3,0 { gmac0: ethernet@3,0 {
reg = <0x1800 0x0 0x0 0x0 0x0>; reg = <0x1800 0x0 0x0 0x0 0x0>;
interrupts = <12 IRQ_TYPE_LEVEL_HIGH>; interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
<13 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "macirq", "eth_lpi";
interrupt-parent = <&pic>; interrupt-parent = <&pic>;
status = "disabled"; status = "disabled";
}; };
gmac1: ethernet@3,1 { gmac1: ethernet@3,1 {
reg = <0x1900 0x0 0x0 0x0 0x0>; reg = <0x1900 0x0 0x0 0x0 0x0>;
interrupts = <14 IRQ_TYPE_LEVEL_HIGH>; interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
<15 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "macirq", "eth_lpi";
interrupt-parent = <&pic>; interrupt-parent = <&pic>;
status = "disabled"; status = "disabled";
}; };
gmac2: ethernet@3,2 { gmac2: ethernet@3,2 {
reg = <0x1a00 0x0 0x0 0x0 0x0>; reg = <0x1a00 0x0 0x0 0x0 0x0>;
interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
<18 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "macirq", "eth_lpi";
interrupt-parent = <&pic>; interrupt-parent = <&pic>;
status = "disabled"; status = "disabled";
}; };

View file

@ -11,6 +11,7 @@
#define _ASM_ADDRSPACE_H #define _ASM_ADDRSPACE_H
#include <linux/const.h> #include <linux/const.h>
#include <linux/sizes.h>
#include <asm/loongarch.h> #include <asm/loongarch.h>

View file

@ -14,11 +14,6 @@
#include <asm/pgtable-bits.h> #include <asm/pgtable-bits.h>
#include <asm/string.h> #include <asm/string.h>
/*
* Change "struct page" to physical address.
*/
#define page_to_phys(page) ((phys_addr_t)page_to_pfn(page) << PAGE_SHIFT)
extern void __init __iomem *early_ioremap(u64 phys_addr, unsigned long size); extern void __init __iomem *early_ioremap(u64 phys_addr, unsigned long size);
extern void __init early_iounmap(void __iomem *addr, unsigned long size); extern void __init early_iounmap(void __iomem *addr, unsigned long size);
@ -73,6 +68,21 @@ extern void __memcpy_fromio(void *to, const volatile void __iomem *from, size_t
#define __io_aw() mmiowb() #define __io_aw() mmiowb()
#ifdef CONFIG_KFENCE
#define virt_to_phys(kaddr) \
({ \
(likely((unsigned long)kaddr < vm_map_base)) ? __pa((unsigned long)kaddr) : \
page_to_phys(tlb_virt_to_page((unsigned long)kaddr)) + offset_in_page((unsigned long)kaddr);\
})
#define phys_to_virt(paddr) \
({ \
extern char *__kfence_pool; \
(unlikely(__kfence_pool == NULL)) ? __va((unsigned long)paddr) : \
page_address(phys_to_page((unsigned long)paddr)) + offset_in_page((unsigned long)paddr);\
})
#endif
#include <asm-generic/io.h> #include <asm-generic/io.h>
#define ARCH_HAS_VALID_PHYS_ADDR_RANGE #define ARCH_HAS_VALID_PHYS_ADDR_RANGE

View file

@ -16,6 +16,7 @@
static inline bool arch_kfence_init_pool(void) static inline bool arch_kfence_init_pool(void)
{ {
int err; int err;
char *kaddr, *vaddr;
char *kfence_pool = __kfence_pool; char *kfence_pool = __kfence_pool;
struct vm_struct *area; struct vm_struct *area;
@ -35,6 +36,14 @@ static inline bool arch_kfence_init_pool(void)
return false; return false;
} }
kaddr = kfence_pool;
vaddr = __kfence_pool;
while (kaddr < kfence_pool + KFENCE_POOL_SIZE) {
set_page_address(virt_to_page(kaddr), vaddr);
kaddr += PAGE_SIZE;
vaddr += PAGE_SIZE;
}
return true; return true;
} }

View file

@ -78,7 +78,26 @@ typedef struct { unsigned long pgprot; } pgprot_t;
struct page *dmw_virt_to_page(unsigned long kaddr); struct page *dmw_virt_to_page(unsigned long kaddr);
struct page *tlb_virt_to_page(unsigned long kaddr); struct page *tlb_virt_to_page(unsigned long kaddr);
#define virt_to_pfn(kaddr) PFN_DOWN(PHYSADDR(kaddr)) #define pfn_to_phys(pfn) __pfn_to_phys(pfn)
#define phys_to_pfn(paddr) __phys_to_pfn(paddr)
#define page_to_phys(page) pfn_to_phys(page_to_pfn(page))
#define phys_to_page(paddr) pfn_to_page(phys_to_pfn(paddr))
#ifndef CONFIG_KFENCE
#define page_to_virt(page) __va(page_to_phys(page))
#define virt_to_page(kaddr) phys_to_page(__pa(kaddr))
#else
#define WANT_PAGE_VIRTUAL
#define page_to_virt(page) \
({ \
extern char *__kfence_pool; \
(__kfence_pool == NULL) ? __va(page_to_phys(page)) : page_address(page); \
})
#define virt_to_page(kaddr) \ #define virt_to_page(kaddr) \
({ \ ({ \
@ -86,6 +105,11 @@ struct page *tlb_virt_to_page(unsigned long kaddr);
dmw_virt_to_page((unsigned long)kaddr) : tlb_virt_to_page((unsigned long)kaddr);\ dmw_virt_to_page((unsigned long)kaddr) : tlb_virt_to_page((unsigned long)kaddr);\
}) })
#endif
#define pfn_to_virt(pfn) page_to_virt(pfn_to_page(pfn))
#define virt_to_pfn(kaddr) page_to_pfn(virt_to_page(kaddr))
extern int __virt_addr_valid(volatile void *kaddr); extern int __virt_addr_valid(volatile void *kaddr);
#define virt_addr_valid(kaddr) __virt_addr_valid((volatile void *)(kaddr)) #define virt_addr_valid(kaddr) __virt_addr_valid((volatile void *)(kaddr))

View file

@ -4,6 +4,7 @@
*/ */
#include <linux/export.h> #include <linux/export.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/kfence.h>
#include <linux/memblock.h> #include <linux/memblock.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/mman.h> #include <linux/mman.h>
@ -111,6 +112,9 @@ int __virt_addr_valid(volatile void *kaddr)
{ {
unsigned long vaddr = (unsigned long)kaddr; unsigned long vaddr = (unsigned long)kaddr;
if (is_kfence_address((void *)kaddr))
return 1;
if ((vaddr < PAGE_OFFSET) || (vaddr >= vm_map_base)) if ((vaddr < PAGE_OFFSET) || (vaddr >= vm_map_base))
return 0; return 0;

View file

@ -11,13 +11,13 @@
struct page *dmw_virt_to_page(unsigned long kaddr) struct page *dmw_virt_to_page(unsigned long kaddr)
{ {
return pfn_to_page(virt_to_pfn(kaddr)); return phys_to_page(__pa(kaddr));
} }
EXPORT_SYMBOL(dmw_virt_to_page); EXPORT_SYMBOL(dmw_virt_to_page);
struct page *tlb_virt_to_page(unsigned long kaddr) struct page *tlb_virt_to_page(unsigned long kaddr)
{ {
return pfn_to_page(pte_pfn(*virt_to_kpte(kaddr))); return phys_to_page(pfn_to_phys(pte_pfn(*virt_to_kpte(kaddr))));
} }
EXPORT_SYMBOL(tlb_virt_to_page); EXPORT_SYMBOL(tlb_virt_to_page);

View file

@ -619,15 +619,6 @@ config MACH_EYEQ5
bool bool
config FIT_IMAGE_FDT_EPM5
bool "Include FDT for Mobileye EyeQ5 development platforms"
depends on MACH_EYEQ5
default n
help
Enable this to include the FDT for the EyeQ5 development platforms
from Mobileye in the FIT kernel image.
This requires u-boot on the platform.
config MACH_NINTENDO64 config MACH_NINTENDO64
bool "Nintendo 64 console" bool "Nintendo 64 console"
select CEVT_R4K select CEVT_R4K
@ -1011,6 +1002,15 @@ config CAVIUM_OCTEON_SOC
endchoice endchoice
config FIT_IMAGE_FDT_EPM5
bool "Include FDT for Mobileye EyeQ5 development platforms"
depends on MACH_EYEQ5
default n
help
Enable this to include the FDT for the EyeQ5 development platforms
from Mobileye in the FIT kernel image.
This requires u-boot on the platform.
source "arch/mips/alchemy/Kconfig" source "arch/mips/alchemy/Kconfig"
source "arch/mips/ath25/Kconfig" source "arch/mips/ath25/Kconfig"
source "arch/mips/ath79/Kconfig" source "arch/mips/ath79/Kconfig"

View file

@ -159,7 +159,7 @@ extern unsigned long exception_ip(struct pt_regs *regs);
#define exception_ip(regs) exception_ip(regs) #define exception_ip(regs) exception_ip(regs)
#define profile_pc(regs) instruction_pointer(regs) #define profile_pc(regs) instruction_pointer(regs)
extern asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall); extern asmlinkage long syscall_trace_enter(struct pt_regs *regs);
extern asmlinkage void syscall_trace_leave(struct pt_regs *regs); extern asmlinkage void syscall_trace_leave(struct pt_regs *regs);
extern void die(const char *, struct pt_regs *) __noreturn; extern void die(const char *, struct pt_regs *) __noreturn;

View file

@ -101,6 +101,7 @@ void output_thread_info_defines(void)
OFFSET(TI_CPU, thread_info, cpu); OFFSET(TI_CPU, thread_info, cpu);
OFFSET(TI_PRE_COUNT, thread_info, preempt_count); OFFSET(TI_PRE_COUNT, thread_info, preempt_count);
OFFSET(TI_REGS, thread_info, regs); OFFSET(TI_REGS, thread_info, regs);
OFFSET(TI_SYSCALL, thread_info, syscall);
DEFINE(_THREAD_SIZE, THREAD_SIZE); DEFINE(_THREAD_SIZE, THREAD_SIZE);
DEFINE(_THREAD_MASK, THREAD_MASK); DEFINE(_THREAD_MASK, THREAD_MASK);
DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE); DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);

View file

@ -1317,16 +1317,13 @@ long arch_ptrace(struct task_struct *child, long request,
* Notification of system call entry/exit * Notification of system call entry/exit
* - triggered by current->work.syscall_trace * - triggered by current->work.syscall_trace
*/ */
asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall) asmlinkage long syscall_trace_enter(struct pt_regs *regs)
{ {
user_exit(); user_exit();
current_thread_info()->syscall = syscall;
if (test_thread_flag(TIF_SYSCALL_TRACE)) { if (test_thread_flag(TIF_SYSCALL_TRACE)) {
if (ptrace_report_syscall_entry(regs)) if (ptrace_report_syscall_entry(regs))
return -1; return -1;
syscall = current_thread_info()->syscall;
} }
#ifdef CONFIG_SECCOMP #ifdef CONFIG_SECCOMP
@ -1335,7 +1332,7 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
struct seccomp_data sd; struct seccomp_data sd;
unsigned long args[6]; unsigned long args[6];
sd.nr = syscall; sd.nr = current_thread_info()->syscall;
sd.arch = syscall_get_arch(current); sd.arch = syscall_get_arch(current);
syscall_get_arguments(current, regs, args); syscall_get_arguments(current, regs, args);
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
@ -1345,23 +1342,23 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
ret = __secure_computing(&sd); ret = __secure_computing(&sd);
if (ret == -1) if (ret == -1)
return ret; return ret;
syscall = current_thread_info()->syscall;
} }
#endif #endif
if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
trace_sys_enter(regs, regs->regs[2]); trace_sys_enter(regs, regs->regs[2]);
audit_syscall_entry(syscall, regs->regs[4], regs->regs[5], audit_syscall_entry(current_thread_info()->syscall,
regs->regs[4], regs->regs[5],
regs->regs[6], regs->regs[7]); regs->regs[6], regs->regs[7]);
/* /*
* Negative syscall numbers are mistaken for rejected syscalls, but * Negative syscall numbers are mistaken for rejected syscalls, but
* won't have had the return value set appropriately, so we do so now. * won't have had the return value set appropriately, so we do so now.
*/ */
if (syscall < 0) if (current_thread_info()->syscall < 0)
syscall_set_return_value(current, regs, -ENOSYS, 0); syscall_set_return_value(current, regs, -ENOSYS, 0);
return syscall; return current_thread_info()->syscall;
} }
/* /*

View file

@ -77,6 +77,18 @@ loads_done:
PTR_WD load_a7, bad_stack_a7 PTR_WD load_a7, bad_stack_a7
.previous .previous
/*
* syscall number is in v0 unless we called syscall(__NR_###)
* where the real syscall number is in a0
*/
subu t2, v0, __NR_O32_Linux
bnez t2, 1f /* __NR_syscall at offset 0 */
LONG_S a0, TI_SYSCALL($28) # Save a0 as syscall number
b 2f
1:
LONG_S v0, TI_SYSCALL($28) # Save v0 as syscall number
2:
lw t0, TI_FLAGS($28) # syscall tracing enabled? lw t0, TI_FLAGS($28) # syscall tracing enabled?
li t1, _TIF_WORK_SYSCALL_ENTRY li t1, _TIF_WORK_SYSCALL_ENTRY
and t0, t1 and t0, t1
@ -114,16 +126,7 @@ syscall_trace_entry:
SAVE_STATIC SAVE_STATIC
move a0, sp move a0, sp
/* jal syscall_trace_enter
* syscall number is in v0 unless we called syscall(__NR_###)
* where the real syscall number is in a0
*/
move a1, v0
subu t2, v0, __NR_O32_Linux
bnez t2, 1f /* __NR_syscall at offset 0 */
lw a1, PT_R4(sp)
1: jal syscall_trace_enter
bltz v0, 1f # seccomp failed? Skip syscall bltz v0, 1f # seccomp failed? Skip syscall

View file

@ -44,6 +44,8 @@ NESTED(handle_sysn32, PT_SIZE, sp)
sd a3, PT_R26(sp) # save a3 for syscall restarting sd a3, PT_R26(sp) # save a3 for syscall restarting
LONG_S v0, TI_SYSCALL($28) # Store syscall number
li t1, _TIF_WORK_SYSCALL_ENTRY li t1, _TIF_WORK_SYSCALL_ENTRY
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled? LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
and t0, t1, t0 and t0, t1, t0
@ -72,7 +74,6 @@ syscall_common:
n32_syscall_trace_entry: n32_syscall_trace_entry:
SAVE_STATIC SAVE_STATIC
move a0, sp move a0, sp
move a1, v0
jal syscall_trace_enter jal syscall_trace_enter
bltz v0, 1f # seccomp failed? Skip syscall bltz v0, 1f # seccomp failed? Skip syscall

View file

@ -46,6 +46,8 @@ NESTED(handle_sys64, PT_SIZE, sp)
sd a3, PT_R26(sp) # save a3 for syscall restarting sd a3, PT_R26(sp) # save a3 for syscall restarting
LONG_S v0, TI_SYSCALL($28) # Store syscall number
li t1, _TIF_WORK_SYSCALL_ENTRY li t1, _TIF_WORK_SYSCALL_ENTRY
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled? LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
and t0, t1, t0 and t0, t1, t0
@ -82,7 +84,6 @@ n64_syscall_exit:
syscall_trace_entry: syscall_trace_entry:
SAVE_STATIC SAVE_STATIC
move a0, sp move a0, sp
move a1, v0
jal syscall_trace_enter jal syscall_trace_enter
bltz v0, 1f # seccomp failed? Skip syscall bltz v0, 1f # seccomp failed? Skip syscall

View file

@ -79,6 +79,22 @@ loads_done:
PTR_WD load_a7, bad_stack_a7 PTR_WD load_a7, bad_stack_a7
.previous .previous
/*
* absolute syscall number is in v0 unless we called syscall(__NR_###)
* where the real syscall number is in a0
* note: NR_syscall is the first O32 syscall but the macro is
* only defined when compiling with -mabi=32 (CONFIG_32BIT)
* therefore __NR_O32_Linux is used (4000)
*/
subu t2, v0, __NR_O32_Linux
bnez t2, 1f /* __NR_syscall at offset 0 */
LONG_S a0, TI_SYSCALL($28) # Save a0 as syscall number
b 2f
1:
LONG_S v0, TI_SYSCALL($28) # Save v0 as syscall number
2:
li t1, _TIF_WORK_SYSCALL_ENTRY li t1, _TIF_WORK_SYSCALL_ENTRY
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled? LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
and t0, t1, t0 and t0, t1, t0
@ -113,22 +129,7 @@ trace_a_syscall:
sd a7, PT_R11(sp) # For indirect syscalls sd a7, PT_R11(sp) # For indirect syscalls
move a0, sp move a0, sp
/* jal syscall_trace_enter
* absolute syscall number is in v0 unless we called syscall(__NR_###)
* where the real syscall number is in a0
* note: NR_syscall is the first O32 syscall but the macro is
* only defined when compiling with -mabi=32 (CONFIG_32BIT)
* therefore __NR_O32_Linux is used (4000)
*/
.set push
.set reorder
subu t1, v0, __NR_O32_Linux
move a1, v0
bnez t1, 1f /* __NR_syscall at offset 0 */
ld a1, PT_R4(sp) /* Arg1 for __NR_syscall case */
.set pop
1: jal syscall_trace_enter
bltz v0, 1f # seccomp failed? Skip syscall bltz v0, 1f # seccomp failed? Skip syscall

View file

@ -21,7 +21,8 @@
void __init early_init_devtree(void *params) void __init early_init_devtree(void *params)
{ {
__be32 *dtb = (u32 *)__dtb_start; __be32 __maybe_unused *dtb = (u32 *)__dtb_start;
#if defined(CONFIG_NIOS2_DTB_AT_PHYS_ADDR) #if defined(CONFIG_NIOS2_DTB_AT_PHYS_ADDR)
if (be32_to_cpup((__be32 *)CONFIG_NIOS2_DTB_PHYS_ADDR) == if (be32_to_cpup((__be32 *)CONFIG_NIOS2_DTB_PHYS_ADDR) ==
OF_DT_HEADER) { OF_DT_HEADER) {
@ -30,8 +31,11 @@ void __init early_init_devtree(void *params)
return; return;
} }
#endif #endif
#ifdef CONFIG_NIOS2_DTB_SOURCE_BOOL
if (be32_to_cpu((__be32) *dtb) == OF_DT_HEADER) if (be32_to_cpu((__be32) *dtb) == OF_DT_HEADER)
params = (void *)__dtb_start; params = (void *)__dtb_start;
#endif
early_init_dt_scan(params); early_init_dt_scan(params);
} }

View file

@ -0,0 +1,14 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MMAN_H__
#define __ASM_MMAN_H__
#include <uapi/asm/mman.h>
/* PARISC cannot allow mdwe as it needs writable stacks */
static inline bool arch_memory_deny_write_exec_supported(void)
{
return false;
}
#define arch_memory_deny_write_exec_supported arch_memory_deny_write_exec_supported
#endif /* __ASM_MMAN_H__ */

View file

@ -197,6 +197,9 @@ static struct skcipher_alg algs[] = {
static int __init chacha_p10_init(void) static int __init chacha_p10_init(void)
{ {
if (!cpu_has_feature(CPU_FTR_ARCH_31))
return 0;
static_branch_enable(&have_p10); static_branch_enable(&have_p10);
return crypto_register_skciphers(algs, ARRAY_SIZE(algs)); return crypto_register_skciphers(algs, ARRAY_SIZE(algs));
@ -204,10 +207,13 @@ static int __init chacha_p10_init(void)
static void __exit chacha_p10_exit(void) static void __exit chacha_p10_exit(void)
{ {
if (!static_branch_likely(&have_p10))
return;
crypto_unregister_skciphers(algs, ARRAY_SIZE(algs)); crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
} }
module_cpu_feature_match(PPC_MODULE_FEATURE_P10, chacha_p10_init); module_init(chacha_p10_init);
module_exit(chacha_p10_exit); module_exit(chacha_p10_exit);
MODULE_DESCRIPTION("ChaCha and XChaCha stream ciphers (P10 accelerated)"); MODULE_DESCRIPTION("ChaCha and XChaCha stream ciphers (P10 accelerated)");

View file

@ -4,7 +4,6 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <asm/page.h>
#include <asm/vdso/timebase.h> #include <asm/vdso/timebase.h>
#include <asm/barrier.h> #include <asm/barrier.h>
#include <asm/unistd.h> #include <asm/unistd.h>
@ -95,7 +94,7 @@ const struct vdso_data *__arch_get_vdso_data(void);
static __always_inline static __always_inline
const struct vdso_data *__arch_get_timens_vdso_data(const struct vdso_data *vd) const struct vdso_data *__arch_get_timens_vdso_data(const struct vdso_data *vd)
{ {
return (void *)vd + PAGE_SIZE; return (void *)vd + (1U << CONFIG_PAGE_SHIFT);
} }
#endif #endif

View file

@ -1285,15 +1285,14 @@ spapr_tce_platform_iommu_attach_dev(struct iommu_domain *platform_domain,
struct device *dev) struct device *dev)
{ {
struct iommu_domain *domain = iommu_get_domain_for_dev(dev); struct iommu_domain *domain = iommu_get_domain_for_dev(dev);
struct iommu_group *grp = iommu_group_get(dev);
struct iommu_table_group *table_group; struct iommu_table_group *table_group;
struct iommu_group *grp;
/* At first attach the ownership is already set */ /* At first attach the ownership is already set */
if (!domain) { if (!domain)
iommu_group_put(grp);
return 0; return 0;
}
grp = iommu_group_get(dev);
table_group = iommu_group_get_iommudata(grp); table_group = iommu_group_get_iommudata(grp);
/* /*
* The domain being set to PLATFORM from earlier * The domain being set to PLATFORM from earlier

View file

@ -151,7 +151,7 @@ endif
endif endif
vdso-install-y += arch/riscv/kernel/vdso/vdso.so.dbg vdso-install-y += arch/riscv/kernel/vdso/vdso.so.dbg
vdso-install-$(CONFIG_COMPAT) += arch/riscv/kernel/compat_vdso/compat_vdso.so.dbg:../compat_vdso/compat_vdso.so vdso-install-$(CONFIG_COMPAT) += arch/riscv/kernel/compat_vdso/compat_vdso.so.dbg
ifneq ($(CONFIG_XIP_KERNEL),y) ifneq ($(CONFIG_XIP_KERNEL),y)
ifeq ($(CONFIG_RISCV_M_MODE)$(CONFIG_ARCH_CANAAN),yy) ifeq ($(CONFIG_RISCV_M_MODE)$(CONFIG_ARCH_CANAAN),yy)

View file

@ -593,6 +593,12 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
return ptep_test_and_clear_young(vma, address, ptep); return ptep_test_and_clear_young(vma, address, ptep);
} }
#define pgprot_nx pgprot_nx
static inline pgprot_t pgprot_nx(pgprot_t _prot)
{
return __pgprot(pgprot_val(_prot) & ~_PAGE_EXEC);
}
#define pgprot_noncached pgprot_noncached #define pgprot_noncached pgprot_noncached
static inline pgprot_t pgprot_noncached(pgprot_t _prot) static inline pgprot_t pgprot_noncached(pgprot_t _prot)
{ {

View file

@ -36,7 +36,8 @@ asmlinkage long __riscv_sys_ni_syscall(const struct pt_regs *);
ulong) \ ulong) \
__attribute__((alias(__stringify(___se_##prefix##name)))); \ __attribute__((alias(__stringify(___se_##prefix##name)))); \
__diag_pop(); \ __diag_pop(); \
static long noinline ___se_##prefix##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ static long noinline ___se_##prefix##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
__used; \
static long ___se_##prefix##name(__MAP(x,__SC_LONG,__VA_ARGS__)) static long ___se_##prefix##name(__MAP(x,__SC_LONG,__VA_ARGS__))
#define SC_RISCV_REGS_TO_ARGS(x, ...) \ #define SC_RISCV_REGS_TO_ARGS(x, ...) \

View file

@ -319,7 +319,7 @@ unsigned long __must_check clear_user(void __user *to, unsigned long n)
#define __get_kernel_nofault(dst, src, type, err_label) \ #define __get_kernel_nofault(dst, src, type, err_label) \
do { \ do { \
long __kr_err; \ long __kr_err = 0; \
\ \
__get_user_nocheck(*((type *)(dst)), (type *)(src), __kr_err); \ __get_user_nocheck(*((type *)(dst)), (type *)(src), __kr_err); \
if (unlikely(__kr_err)) \ if (unlikely(__kr_err)) \
@ -328,7 +328,7 @@ do { \
#define __put_kernel_nofault(dst, src, type, err_label) \ #define __put_kernel_nofault(dst, src, type, err_label) \
do { \ do { \
long __kr_err; \ long __kr_err = 0; \
\ \
__put_user_nocheck(*((type *)(src)), (type *)(dst), __kr_err); \ __put_user_nocheck(*((type *)(src)), (type *)(dst), __kr_err); \
if (unlikely(__kr_err)) \ if (unlikely(__kr_err)) \

View file

@ -34,7 +34,7 @@
#define AT_L3_CACHEGEOMETRY 47 #define AT_L3_CACHEGEOMETRY 47
/* entries in ARCH_DLINFO */ /* entries in ARCH_DLINFO */
#define AT_VECTOR_SIZE_ARCH 9 #define AT_VECTOR_SIZE_ARCH 10
#define AT_MINSIGSTKSZ 51 #define AT_MINSIGSTKSZ 51
#endif /* _UAPI_ASM_RISCV_AUXVEC_H */ #endif /* _UAPI_ASM_RISCV_AUXVEC_H */

View file

@ -74,5 +74,5 @@ quiet_cmd_compat_vdsold = VDSOLD $@
rm $@.tmp rm $@.tmp
# actual build commands # actual build commands
quiet_cmd_compat_vdsoas = VDSOAS $@ quiet_cmd_compat_vdsoas = VDSOAS $@
cmd_compat_vdsoas = $(COMPAT_CC) $(a_flags) $(COMPAT_CC_FLAGS) -c -o $@ $< cmd_compat_vdsoas = $(COMPAT_CC) $(a_flags) $(COMPAT_CC_FLAGS) -c -o $@ $<

View file

@ -80,6 +80,8 @@ static int __patch_insn_set(void *addr, u8 c, size_t len)
*/ */
lockdep_assert_held(&text_mutex); lockdep_assert_held(&text_mutex);
preempt_disable();
if (across_pages) if (across_pages)
patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1); patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1);
@ -92,6 +94,8 @@ static int __patch_insn_set(void *addr, u8 c, size_t len)
if (across_pages) if (across_pages)
patch_unmap(FIX_TEXT_POKE1); patch_unmap(FIX_TEXT_POKE1);
preempt_enable();
return 0; return 0;
} }
NOKPROBE_SYMBOL(__patch_insn_set); NOKPROBE_SYMBOL(__patch_insn_set);
@ -122,6 +126,8 @@ static int __patch_insn_write(void *addr, const void *insn, size_t len)
if (!riscv_patch_in_stop_machine) if (!riscv_patch_in_stop_machine)
lockdep_assert_held(&text_mutex); lockdep_assert_held(&text_mutex);
preempt_disable();
if (across_pages) if (across_pages)
patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1); patch_map(addr + PAGE_SIZE, FIX_TEXT_POKE1);
@ -134,6 +140,8 @@ static int __patch_insn_write(void *addr, const void *insn, size_t len)
if (across_pages) if (across_pages)
patch_unmap(FIX_TEXT_POKE1); patch_unmap(FIX_TEXT_POKE1);
preempt_enable();
return ret; return ret;
} }
NOKPROBE_SYMBOL(__patch_insn_write); NOKPROBE_SYMBOL(__patch_insn_write);

View file

@ -27,8 +27,6 @@
#include <asm/vector.h> #include <asm/vector.h>
#include <asm/cpufeature.h> #include <asm/cpufeature.h>
register unsigned long gp_in_global __asm__("gp");
#if defined(CONFIG_STACKPROTECTOR) && !defined(CONFIG_STACKPROTECTOR_PER_TASK) #if defined(CONFIG_STACKPROTECTOR) && !defined(CONFIG_STACKPROTECTOR_PER_TASK)
#include <linux/stackprotector.h> #include <linux/stackprotector.h>
unsigned long __stack_chk_guard __read_mostly; unsigned long __stack_chk_guard __read_mostly;
@ -37,7 +35,7 @@ EXPORT_SYMBOL(__stack_chk_guard);
extern asmlinkage void ret_from_fork(void); extern asmlinkage void ret_from_fork(void);
void arch_cpu_idle(void) void noinstr arch_cpu_idle(void)
{ {
cpu_do_idle(); cpu_do_idle();
} }
@ -207,7 +205,6 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
if (unlikely(args->fn)) { if (unlikely(args->fn)) {
/* Kernel thread */ /* Kernel thread */
memset(childregs, 0, sizeof(struct pt_regs)); memset(childregs, 0, sizeof(struct pt_regs));
childregs->gp = gp_in_global;
/* Supervisor/Machine, irqs on: */ /* Supervisor/Machine, irqs on: */
childregs->status = SR_PP | SR_PIE; childregs->status = SR_PP | SR_PIE;

View file

@ -119,6 +119,13 @@ static long __restore_v_state(struct pt_regs *regs, void __user *sc_vec)
struct __sc_riscv_v_state __user *state = sc_vec; struct __sc_riscv_v_state __user *state = sc_vec;
void __user *datap; void __user *datap;
/*
* Mark the vstate as clean prior performing the actual copy,
* to avoid getting the vstate incorrectly clobbered by the
* discarded vector state.
*/
riscv_v_vstate_set_restore(current, regs);
/* Copy everything of __sc_riscv_v_state except datap. */ /* Copy everything of __sc_riscv_v_state except datap. */
err = __copy_from_user(&current->thread.vstate, &state->v_state, err = __copy_from_user(&current->thread.vstate, &state->v_state,
offsetof(struct __riscv_v_ext_state, datap)); offsetof(struct __riscv_v_ext_state, datap));
@ -133,13 +140,7 @@ static long __restore_v_state(struct pt_regs *regs, void __user *sc_vec)
* Copy the whole vector content from user space datap. Use * Copy the whole vector content from user space datap. Use
* copy_from_user to prevent information leak. * copy_from_user to prevent information leak.
*/ */
err = copy_from_user(current->thread.vstate.datap, datap, riscv_v_vsize); return copy_from_user(current->thread.vstate.datap, datap, riscv_v_vsize);
if (unlikely(err))
return err;
riscv_v_vstate_set_restore(current, regs);
return err;
} }
#else #else
#define save_v_state(task, regs) (0) #define save_v_state(task, regs) (0)

View file

@ -122,7 +122,7 @@ void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)
print_vma_addr(KERN_CONT " in ", instruction_pointer(regs)); print_vma_addr(KERN_CONT " in ", instruction_pointer(regs));
pr_cont("\n"); pr_cont("\n");
__show_regs(regs); __show_regs(regs);
dump_instr(KERN_EMERG, regs); dump_instr(KERN_INFO, regs);
} }
force_sig_fault(signo, code, (void __user *)addr); force_sig_fault(signo, code, (void __user *)addr);

Some files were not shown because too many files have changed in this diff Show more