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:
commit
e5019b1423
15
.mailmap
15
.mailmap
@ -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>
|
||||||
|
4
CREDITS
4
CREDITS
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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.
|
||||||
::
|
::
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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].
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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].
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -52,6 +52,9 @@ properties:
|
|||||||
- const: main
|
- const: main
|
||||||
- const: mm
|
- const: mm
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
|
@ -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.
|
||||||
|
@ -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:
|
||||||
|
@ -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:
|
||||||
|
@ -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:
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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,
|
||||||
|
11
Documentation/filesystems/bcachefs/index.rst
Normal file
11
Documentation/filesystems/bcachefs/index.rst
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
======================
|
||||||
|
bcachefs Documentation
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:numbered:
|
||||||
|
|
||||||
|
errorcodes
|
@ -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
|
||||||
|
@ -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``
|
||||||
|
@ -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
|
||||||
|
76
Documentation/networking/devlink/devlink-eswitch-attr.rst
Normal file
76
Documentation/networking/devlink/devlink-eswitch-attr.rst
Normal 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
|
@ -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
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
.. _representors:
|
||||||
|
|
||||||
=============================
|
=============================
|
||||||
Network Function Representors
|
Network Function Representors
|
||||||
|
@ -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>
|
||||||
|
@ -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
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
192
MAINTAINERS
192
MAINTAINERS
@ -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/
|
||||||
|
2
Makefile
2
Makefile
@ -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*
|
||||||
|
12
arch/Kconfig
12
arch/Kconfig
@ -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
|
||||||
|
@ -666,7 +666,7 @@
|
|||||||
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";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -210,6 +210,7 @@
|
|||||||
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>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
14
arch/arm/include/asm/mman.h
Normal file
14
arch/arm/include/asm/mman.h
Normal 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__ */
|
@ -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;
|
||||||
|
@ -41,7 +41,7 @@ conn_subsys: bus@5b000000 {
|
|||||||
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 @@ conn_subsys: bus@5b000000 {
|
|||||||
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 @@ conn_subsys: bus@5b000000 {
|
|||||||
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 @@ conn_subsys: bus@5b000000 {
|
|||||||
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 @@ conn_subsys: bus@5b000000 {
|
|||||||
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";
|
||||||
|
@ -28,8 +28,8 @@ dma_subsys: bus@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 @@ dma_subsys: bus@5a000000 {
|
|||||||
#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 @@ dma_subsys: bus@5a000000 {
|
|||||||
#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 @@ dma_subsys: bus@5a000000 {
|
|||||||
#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 @@ dma_subsys: bus@5a000000 {
|
|||||||
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 @@ dma_subsys: bus@5a000000 {
|
|||||||
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 @@ dma_subsys: bus@5a000000 {
|
|||||||
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 @@ dma_subsys: bus@5a000000 {
|
|||||||
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 @@ dma_subsys: bus@5a000000 {
|
|||||||
* 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 @@ dma_subsys: bus@5a000000 {
|
|||||||
* 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>;
|
||||||
|
@ -25,8 +25,8 @@ lsio_subsys: bus@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_subsys: bus@5d000000 {
|
|||||||
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_subsys: bus@5d000000 {
|
|||||||
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_subsys: bus@5d000000 {
|
|||||||
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>;
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
pinctrl-0 = <&pinctrl_usbcon1>;
|
pinctrl-0 = <&pinctrl_usbcon1>;
|
||||||
type = "micro";
|
type = "micro";
|
||||||
label = "otg";
|
label = "otg";
|
||||||
|
vbus-supply = <®_usb1_vbus>;
|
||||||
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
port {
|
port {
|
||||||
@ -183,7 +184,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&usb3_phy0 {
|
&usb3_phy0 {
|
||||||
vbus-supply = <®_usb1_vbus>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
pinctrl-0 = <&pinctrl_usbcon1>;
|
pinctrl-0 = <&pinctrl_usbcon1>;
|
||||||
type = "micro";
|
type = "micro";
|
||||||
label = "otg";
|
label = "otg";
|
||||||
|
vbus-supply = <®_usb1_vbus>;
|
||||||
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
id-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
port {
|
port {
|
||||||
@ -202,7 +203,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&usb3_phy0 {
|
&usb3_phy0 {
|
||||||
vbus-supply = <®_usb1_vbus>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -153,15 +153,15 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&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>;
|
||||||
};
|
};
|
||||||
|
@ -944,6 +944,8 @@ ap_spi_fp: &spi10 {
|
|||||||
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;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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) \
|
||||||
|
@ -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:
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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 @@ emit_cond_jmp:
|
|||||||
} 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);
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,7 @@ SECTIONS
|
|||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
.hexagon.attributes 0 : { *(.hexagon.attributes) }
|
||||||
|
|
||||||
DISCARDS
|
DISCARDS
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,13 @@
|
|||||||
#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>,
|
||||||
|
@ -61,12 +61,45 @@
|
|||||||
|
|
||||||
&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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -51,6 +51,13 @@
|
|||||||
#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 @@
|
|||||||
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 @@
|
|||||||
#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";
|
||||||
};
|
};
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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))
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
14
arch/parisc/include/asm/mman.h
Normal file
14
arch/parisc/include/asm/mman.h
Normal 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__ */
|
@ -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)");
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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, ...) \
|
||||||
|
@ -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)) \
|
||||||
|
@ -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 */
|
||||||
|
@ -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 $@ $<
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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(¤t->thread.vstate, &state->v_state,
|
err = __copy_from_user(¤t->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)
|
||||||
|
@ -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
Loading…
x
Reference in New Issue
Block a user