Merge 7.0-rc4 into usb-next
We need the USB fixes in this branch as well to build on top of Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>master
commit
de6c925db9
15
.mailmap
15
.mailmap
|
|
@ -210,10 +210,16 @@ Daniel Borkmann <daniel@iogearbox.net> <daniel.borkmann@tik.ee.ethz.ch>
|
||||||
Daniel Borkmann <daniel@iogearbox.net> <dborkmann@redhat.com>
|
Daniel Borkmann <daniel@iogearbox.net> <dborkmann@redhat.com>
|
||||||
Daniel Borkmann <daniel@iogearbox.net> <dborkman@redhat.com>
|
Daniel Borkmann <daniel@iogearbox.net> <dborkman@redhat.com>
|
||||||
Daniel Borkmann <daniel@iogearbox.net> <dxchgb@gmail.com>
|
Daniel Borkmann <daniel@iogearbox.net> <dxchgb@gmail.com>
|
||||||
|
Daniel Lezcano <daniel.lezcano@kernel.org> <daniel.lezcano@linaro.org>
|
||||||
|
Daniel Lezcano <daniel.lezcano@kernel.org> <daniel.lezcano@free.fr>
|
||||||
|
Daniel Lezcano <daniel.lezcano@kernel.org> <daniel.lezcano@linexp.org>
|
||||||
|
Daniel Lezcano <daniel.lezcano@kernel.org> <dlezcano@fr.ibm.com>
|
||||||
Daniel Thompson <danielt@kernel.org> <daniel.thompson@linaro.org>
|
Daniel Thompson <danielt@kernel.org> <daniel.thompson@linaro.org>
|
||||||
|
Daniele Alessandrelli <daniele.alessandrelli@gmail.com> <daniele.alessandrelli@intel.com>
|
||||||
Danilo Krummrich <dakr@kernel.org> <dakr@redhat.com>
|
Danilo Krummrich <dakr@kernel.org> <dakr@redhat.com>
|
||||||
David Brownell <david-b@pacbell.net>
|
David Brownell <david-b@pacbell.net>
|
||||||
David Collins <quic_collinsd@quicinc.com> <collinsd@codeaurora.org>
|
David Collins <quic_collinsd@quicinc.com> <collinsd@codeaurora.org>
|
||||||
|
David Gow <david@davidgow.net> <davidgow@google.com>
|
||||||
David Heidelberg <david@ixit.cz> <d.okias@gmail.com>
|
David Heidelberg <david@ixit.cz> <d.okias@gmail.com>
|
||||||
David Hildenbrand <david@kernel.org> <david@redhat.com>
|
David Hildenbrand <david@kernel.org> <david@redhat.com>
|
||||||
David Rheinsberg <david@readahead.eu> <dh.herrmann@gmail.com>
|
David Rheinsberg <david@readahead.eu> <dh.herrmann@gmail.com>
|
||||||
|
|
@ -348,6 +354,7 @@ Jarkko Sakkinen <jarkko@kernel.org> <jarkko.sakkinen@opinsys.com>
|
||||||
Jason Gunthorpe <jgg@ziepe.ca> <jgg@mellanox.com>
|
Jason Gunthorpe <jgg@ziepe.ca> <jgg@mellanox.com>
|
||||||
Jason Gunthorpe <jgg@ziepe.ca> <jgg@nvidia.com>
|
Jason Gunthorpe <jgg@ziepe.ca> <jgg@nvidia.com>
|
||||||
Jason Gunthorpe <jgg@ziepe.ca> <jgunthorpe@obsidianresearch.com>
|
Jason Gunthorpe <jgg@ziepe.ca> <jgunthorpe@obsidianresearch.com>
|
||||||
|
Jason Xing <kerneljasonxing@gmail.com> <kernelxing@tencent.com>
|
||||||
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
|
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
|
||||||
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
|
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
|
||||||
Jayachandran C <c.jayachandran@gmail.com> <jayachandranc@netlogicmicro.com>
|
Jayachandran C <c.jayachandran@gmail.com> <jayachandranc@netlogicmicro.com>
|
||||||
|
|
@ -396,6 +403,7 @@ Jiri Slaby <jirislaby@kernel.org> <xslaby@fi.muni.cz>
|
||||||
Jisheng Zhang <jszhang@kernel.org> <jszhang@marvell.com>
|
Jisheng Zhang <jszhang@kernel.org> <jszhang@marvell.com>
|
||||||
Jisheng Zhang <jszhang@kernel.org> <Jisheng.Zhang@synaptics.com>
|
Jisheng Zhang <jszhang@kernel.org> <Jisheng.Zhang@synaptics.com>
|
||||||
Jishnu Prakash <quic_jprakash@quicinc.com> <jprakash@codeaurora.org>
|
Jishnu Prakash <quic_jprakash@quicinc.com> <jprakash@codeaurora.org>
|
||||||
|
Joe Damato <joe@dama.to> <jdamato@fastly.com>
|
||||||
Joel Granados <joel.granados@kernel.org> <j.granados@samsung.com>
|
Joel Granados <joel.granados@kernel.org> <j.granados@samsung.com>
|
||||||
Johan Hovold <johan@kernel.org> <jhovold@gmail.com>
|
Johan Hovold <johan@kernel.org> <jhovold@gmail.com>
|
||||||
Johan Hovold <johan@kernel.org> <johan@hovoldconsulting.com>
|
Johan Hovold <johan@kernel.org> <johan@hovoldconsulting.com>
|
||||||
|
|
@ -490,7 +498,8 @@ Lior David <quic_liord@quicinc.com> <liord@codeaurora.org>
|
||||||
Loic Poulain <loic.poulain@oss.qualcomm.com> <loic.poulain@linaro.org>
|
Loic Poulain <loic.poulain@oss.qualcomm.com> <loic.poulain@linaro.org>
|
||||||
Loic Poulain <loic.poulain@oss.qualcomm.com> <loic.poulain@intel.com>
|
Loic Poulain <loic.poulain@oss.qualcomm.com> <loic.poulain@intel.com>
|
||||||
Lorenzo Pieralisi <lpieralisi@kernel.org> <lorenzo.pieralisi@arm.com>
|
Lorenzo Pieralisi <lpieralisi@kernel.org> <lorenzo.pieralisi@arm.com>
|
||||||
Lorenzo Stoakes <lorenzo.stoakes@oracle.com> <lstoakes@gmail.com>
|
Lorenzo Stoakes <ljs@kernel.org> <lstoakes@gmail.com>
|
||||||
|
Lorenzo Stoakes <ljs@kernel.org> <lorenzo.stoakes@oracle.com>
|
||||||
Luca Ceresoli <luca.ceresoli@bootlin.com> <luca@lucaceresoli.net>
|
Luca Ceresoli <luca.ceresoli@bootlin.com> <luca@lucaceresoli.net>
|
||||||
Luca Weiss <luca@lucaweiss.eu> <luca@z3ntu.xyz>
|
Luca Weiss <luca@lucaweiss.eu> <luca@z3ntu.xyz>
|
||||||
Lucas De Marchi <demarchi@kernel.org> <lucas.demarchi@intel.com>
|
Lucas De Marchi <demarchi@kernel.org> <lucas.demarchi@intel.com>
|
||||||
|
|
@ -876,6 +885,7 @@ 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>
|
||||||
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
|
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
|
||||||
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
|
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
|
||||||
|
Vlastimil Babka <vbabka@kernel.org> <vbabka@suse.cz>
|
||||||
WangYuli <wangyuli@aosc.io> <wangyl5933@chinaunicom.cn>
|
WangYuli <wangyuli@aosc.io> <wangyl5933@chinaunicom.cn>
|
||||||
WangYuli <wangyuli@aosc.io> <wangyuli@deepin.org>
|
WangYuli <wangyuli@aosc.io> <wangyuli@deepin.org>
|
||||||
Weiwen Hu <huweiwen@linux.alibaba.com> <sehuww@mail.scut.edu.cn>
|
Weiwen Hu <huweiwen@linux.alibaba.com> <sehuww@mail.scut.edu.cn>
|
||||||
|
|
@ -890,7 +900,8 @@ Yanteng Si <si.yanteng@linux.dev> <siyanteng@loongson.cn>
|
||||||
Ying Huang <huang.ying.caritas@gmail.com> <ying.huang@intel.com>
|
Ying Huang <huang.ying.caritas@gmail.com> <ying.huang@intel.com>
|
||||||
Yixun Lan <dlan@kernel.org> <dlan@gentoo.org>
|
Yixun Lan <dlan@kernel.org> <dlan@gentoo.org>
|
||||||
Yixun Lan <dlan@kernel.org> <yixun.lan@amlogic.com>
|
Yixun Lan <dlan@kernel.org> <yixun.lan@amlogic.com>
|
||||||
Yosry Ahmed <yosry.ahmed@linux.dev> <yosryahmed@google.com>
|
Yosry Ahmed <yosry@kernel.org> <yosryahmed@google.com>
|
||||||
|
Yosry Ahmed <yosry@kernel.org> <yosry.ahmed@linux.dev>
|
||||||
Yu-Chun Lin <eleanor.lin@realtek.com> <eleanor15x@gmail.com>
|
Yu-Chun Lin <eleanor.lin@realtek.com> <eleanor15x@gmail.com>
|
||||||
Yusuke Goda <goda.yusuke@renesas.com>
|
Yusuke Goda <goda.yusuke@renesas.com>
|
||||||
Zack Rusin <zack.rusin@broadcom.com> <zackr@vmware.com>
|
Zack Rusin <zack.rusin@broadcom.com> <zackr@vmware.com>
|
||||||
|
|
|
||||||
8
CREDITS
8
CREDITS
|
|
@ -1242,6 +1242,10 @@ N: Veaceslav Falico
|
||||||
E: vfalico@gmail.com
|
E: vfalico@gmail.com
|
||||||
D: Co-maintainer and co-author of the network bonding driver.
|
D: Co-maintainer and co-author of the network bonding driver.
|
||||||
|
|
||||||
|
N: Thomas Falcon
|
||||||
|
E: tlfalcon@linux.ibm.com
|
||||||
|
D: Initial author of the IBM ibmvnic network driver
|
||||||
|
|
||||||
N: János Farkas
|
N: János Farkas
|
||||||
E: chexum@shadow.banki.hu
|
E: chexum@shadow.banki.hu
|
||||||
D: romfs, various (mostly networking) fixes
|
D: romfs, various (mostly networking) fixes
|
||||||
|
|
@ -2415,6 +2419,10 @@ S: Am Muehlenweg 38
|
||||||
S: D53424 Remagen
|
S: D53424 Remagen
|
||||||
S: Germany
|
S: Germany
|
||||||
|
|
||||||
|
N: Jonathan Lemon
|
||||||
|
E: jonathan.lemon@gmail.com
|
||||||
|
D: OpenCompute PTP clock driver (ptp_ocp)
|
||||||
|
|
||||||
N: Colin Leroy
|
N: Colin Leroy
|
||||||
E: colin@colino.net
|
E: colin@colino.net
|
||||||
W: http://www.geekounet.org/
|
W: http://www.geekounet.org/
|
||||||
|
|
|
||||||
|
|
@ -151,11 +151,11 @@ Description:
|
||||||
The algorithm_params file is write-only and is used to setup
|
The algorithm_params file is write-only and is used to setup
|
||||||
compression algorithm parameters.
|
compression algorithm parameters.
|
||||||
|
|
||||||
What: /sys/block/zram<id>/writeback_compressed
|
What: /sys/block/zram<id>/compressed_writeback
|
||||||
Date: Decemeber 2025
|
Date: Decemeber 2025
|
||||||
Contact: Richard Chang <richardycc@google.com>
|
Contact: Richard Chang <richardycc@google.com>
|
||||||
Description:
|
Description:
|
||||||
The writeback_compressed device atrribute toggles compressed
|
The compressed_writeback device atrribute toggles compressed
|
||||||
writeback feature.
|
writeback feature.
|
||||||
|
|
||||||
What: /sys/block/zram<id>/writeback_batch_size
|
What: /sys/block/zram<id>/writeback_batch_size
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
What: /sys/bus/platform/devices/INOU0000:XX/fn_lock_toggle_enable
|
What: /sys/bus/platform/devices/INOU0000:XX/fn_lock
|
||||||
Date: November 2025
|
Date: November 2025
|
||||||
KernelVersion: 6.19
|
KernelVersion: 6.19
|
||||||
Contact: Armin Wolf <W_Armin@gmx.de>
|
Contact: Armin Wolf <W_Armin@gmx.de>
|
||||||
|
|
@ -8,15 +8,15 @@ Description:
|
||||||
|
|
||||||
Reading this file returns the current enable status of the FN lock functionality.
|
Reading this file returns the current enable status of the FN lock functionality.
|
||||||
|
|
||||||
What: /sys/bus/platform/devices/INOU0000:XX/super_key_toggle_enable
|
What: /sys/bus/platform/devices/INOU0000:XX/super_key_enable
|
||||||
Date: November 2025
|
Date: November 2025
|
||||||
KernelVersion: 6.19
|
KernelVersion: 6.19
|
||||||
Contact: Armin Wolf <W_Armin@gmx.de>
|
Contact: Armin Wolf <W_Armin@gmx.de>
|
||||||
Description:
|
Description:
|
||||||
Allows userspace applications to enable/disable the super key functionality
|
Allows userspace applications to enable/disable the super key of the integrated
|
||||||
of the integrated keyboard by writing "1"/"0" into this file.
|
keyboard by writing "1"/"0" into this file.
|
||||||
|
|
||||||
Reading this file returns the current enable status of the super key functionality.
|
Reading this file returns the current enable status of the super key.
|
||||||
|
|
||||||
What: /sys/bus/platform/devices/INOU0000:XX/touchpad_toggle_enable
|
What: /sys/bus/platform/devices/INOU0000:XX/touchpad_toggle_enable
|
||||||
Date: November 2025
|
Date: November 2025
|
||||||
|
|
|
||||||
|
|
@ -216,7 +216,7 @@ writeback_limit WO specifies the maximum amount of write IO zram
|
||||||
writeback_limit_enable RW show and set writeback_limit feature
|
writeback_limit_enable RW show and set writeback_limit feature
|
||||||
writeback_batch_size RW show and set maximum number of in-flight
|
writeback_batch_size RW show and set maximum number of in-flight
|
||||||
writeback operations
|
writeback operations
|
||||||
writeback_compressed RW show and set compressed writeback feature
|
compressed_writeback RW show and set compressed writeback feature
|
||||||
comp_algorithm RW show and change the compression algorithm
|
comp_algorithm RW show and change the compression algorithm
|
||||||
algorithm_params WO setup compression algorithm parameters
|
algorithm_params WO setup compression algorithm parameters
|
||||||
compact WO trigger memory compaction
|
compact WO trigger memory compaction
|
||||||
|
|
@ -439,11 +439,11 @@ budget in next setting is user's job.
|
||||||
By default zram stores written back pages in decompressed (raw) form, which
|
By default zram stores written back pages in decompressed (raw) form, which
|
||||||
means that writeback operation involves decompression of the page before
|
means that writeback operation involves decompression of the page before
|
||||||
writing it to the backing device. This behavior can be changed by enabling
|
writing it to the backing device. This behavior can be changed by enabling
|
||||||
`writeback_compressed` feature, which causes zram to write compressed pages
|
`compressed_writeback` feature, which causes zram to write compressed pages
|
||||||
to the backing device, thus avoiding decompression overhead. To enable
|
to the backing device, thus avoiding decompression overhead. To enable
|
||||||
this feature, execute::
|
this feature, execute::
|
||||||
|
|
||||||
$ echo yes > /sys/block/zramX/writeback_compressed
|
$ echo yes > /sys/block/zramX/compressed_writeback
|
||||||
|
|
||||||
Note that this feature should be configured before the `zramX` device is
|
Note that this feature should be configured before the `zramX` device is
|
||||||
initialized.
|
initialized.
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@
|
||||||
TPM TPM drivers are enabled.
|
TPM TPM drivers are enabled.
|
||||||
UMS USB Mass Storage support is enabled.
|
UMS USB Mass Storage support is enabled.
|
||||||
USB USB support is enabled.
|
USB USB support is enabled.
|
||||||
|
NVME NVMe support is enabled
|
||||||
USBHID USB Human Interface Device support is enabled.
|
USBHID USB Human Interface Device support is enabled.
|
||||||
V4L Video For Linux support is enabled.
|
V4L Video For Linux support is enabled.
|
||||||
VGA The VGA console has been enabled.
|
VGA The VGA console has been enabled.
|
||||||
|
|
@ -4787,6 +4788,18 @@ Kernel parameters
|
||||||
This can be set from sysctl after boot.
|
This can be set from sysctl after boot.
|
||||||
See Documentation/admin-guide/sysctl/vm.rst for details.
|
See Documentation/admin-guide/sysctl/vm.rst for details.
|
||||||
|
|
||||||
|
nvme.quirks= [NVME] A list of quirk entries to augment the built-in
|
||||||
|
nvme quirk list. List entries are separated by a
|
||||||
|
'-' character.
|
||||||
|
Each entry has the form VendorID:ProductID:quirk_names.
|
||||||
|
The IDs are 4-digits hex numbers and quirk_names is a
|
||||||
|
list of quirk names separated by commas. A quirk name
|
||||||
|
can be prefixed by '^', meaning that the specified
|
||||||
|
quirk must be disabled.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
nvme.quirks=7710:2267:bogus_nid,^identify_cns-9900:7711:broken_msi
|
||||||
|
|
||||||
ohci1394_dma=early [HW,EARLY] enable debugging via the ohci1394 driver.
|
ohci1394_dma=early [HW,EARLY] enable debugging via the ohci1394 driver.
|
||||||
See Documentation/core-api/debugging-via-ohci1394.rst for more
|
See Documentation/core-api/debugging-via-ohci1394.rst for more
|
||||||
info.
|
info.
|
||||||
|
|
@ -8183,6 +8196,9 @@ Kernel parameters
|
||||||
p = USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT
|
p = USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT
|
||||||
(Reduce timeout of the SET_ADDRESS
|
(Reduce timeout of the SET_ADDRESS
|
||||||
request from 5000 ms to 500 ms);
|
request from 5000 ms to 500 ms);
|
||||||
|
q = USB_QUIRK_FORCE_ONE_CONFIG (Device
|
||||||
|
claims zero configurations,
|
||||||
|
forcing to 1);
|
||||||
Example: quirks=0781:5580:bk,0a5c:5834:gij
|
Example: quirks=0781:5580:bk,0a5c:5834:gij
|
||||||
|
|
||||||
usbhid.mousepoll=
|
usbhid.mousepoll=
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ Keyboard settings
|
||||||
|
|
||||||
The ``uniwill-laptop`` driver allows the user to enable/disable:
|
The ``uniwill-laptop`` driver allows the user to enable/disable:
|
||||||
|
|
||||||
- the FN and super key lock functionality of the integrated keyboard
|
- the FN lock and super key of the integrated keyboard
|
||||||
- the touchpad toggle functionality of the integrated touchpad
|
- the touchpad toggle functionality of the integrated touchpad
|
||||||
|
|
||||||
See Documentation/ABI/testing/sysfs-driver-uniwill-laptop for details.
|
See Documentation/ABI/testing/sysfs-driver-uniwill-laptop for details.
|
||||||
|
|
|
||||||
|
|
@ -594,6 +594,9 @@ Values:
|
||||||
their sockets will only be able to connect within their own
|
their sockets will only be able to connect within their own
|
||||||
namespace.
|
namespace.
|
||||||
|
|
||||||
|
The first write to ``child_ns_mode`` locks its value. Subsequent writes of the
|
||||||
|
same value succeed, but writing a different value returns ``-EBUSY``.
|
||||||
|
|
||||||
Changing ``child_ns_mode`` only affects namespaces created after the change;
|
Changing ``child_ns_mode`` only affects namespaces created after the change;
|
||||||
it does not modify the current namespace or any existing children.
|
it does not modify the current namespace or any existing children.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -253,7 +253,6 @@ allOf:
|
||||||
enum:
|
enum:
|
||||||
# these platforms support 2 streams MST on some interfaces,
|
# these platforms support 2 streams MST on some interfaces,
|
||||||
# others are SST only
|
# others are SST only
|
||||||
- qcom,glymur-dp
|
|
||||||
- qcom,sc8280xp-dp
|
- qcom,sc8280xp-dp
|
||||||
- qcom,x1e80100-dp
|
- qcom,x1e80100-dp
|
||||||
then:
|
then:
|
||||||
|
|
@ -310,6 +309,26 @@ allOf:
|
||||||
minItems: 6
|
minItems: 6
|
||||||
maxItems: 8
|
maxItems: 8
|
||||||
|
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
enum:
|
||||||
|
# these platforms support 2 streams MST on some interfaces,
|
||||||
|
# others are SST only, but all controllers have 4 ports
|
||||||
|
- qcom,glymur-dp
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
minItems: 9
|
||||||
|
maxItems: 9
|
||||||
|
clocks:
|
||||||
|
minItems: 5
|
||||||
|
maxItems: 6
|
||||||
|
clocks-names:
|
||||||
|
minItems: 5
|
||||||
|
maxItems: 6
|
||||||
|
|
||||||
unevaluatedProperties: false
|
unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
|
|
|
||||||
|
|
@ -176,13 +176,17 @@ examples:
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
displayport-controller@ae90000 {
|
displayport-controller@af54000 {
|
||||||
compatible = "qcom,glymur-dp";
|
compatible = "qcom,glymur-dp";
|
||||||
reg = <0xae90000 0x200>,
|
reg = <0xaf54000 0x200>,
|
||||||
<0xae90200 0x200>,
|
<0xaf54200 0x200>,
|
||||||
<0xae90400 0x600>,
|
<0xaf55000 0xc00>,
|
||||||
<0xae91000 0x400>,
|
<0xaf56000 0x400>,
|
||||||
<0xae91400 0x400>;
|
<0xaf57000 0x400>,
|
||||||
|
<0xaf58000 0x400>,
|
||||||
|
<0xaf59000 0x400>,
|
||||||
|
<0xaf5a000 0x600>,
|
||||||
|
<0xaf5b000 0x600>;
|
||||||
|
|
||||||
interrupt-parent = <&mdss>;
|
interrupt-parent = <&mdss>;
|
||||||
interrupts = <12>;
|
interrupts = <12>;
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ maintainers:
|
||||||
- Krzysztof Kozlowski <krzk@kernel.org>
|
- Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
|
SM8750 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
|
||||||
DPU display controller, DSI and DP interfaces etc.
|
DPU display controller, DSI and DP interfaces etc.
|
||||||
|
|
||||||
$ref: /schemas/display/msm/mdss-common.yaml#
|
$ref: /schemas/display/msm/mdss-common.yaml#
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ description: |
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
enum:
|
enum:
|
||||||
- kontron,sa67mcu-hwmon
|
|
||||||
- kontron,sl28cpld-fan
|
- kontron,sl28cpld-fan
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: Synopsys DesignWare APB I2C Controller
|
title: Synopsys DesignWare APB I2C Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Jarkko Nikula <jarkko.nikula@linux.intel.com>
|
- Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: /schemas/i2c/i2c-controller.yaml#
|
- $ref: /schemas/i2c/i2c-controller.yaml#
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ required:
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: can-controller.yaml#
|
- $ref: can-controller.yaml#
|
||||||
|
- $ref: /schemas/memory-controllers/mc-peripheral-props.yaml
|
||||||
- if:
|
- if:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/powerpc/fsl/fsl,mpc83xx.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Freescale PowerQUICC II Pro (MPC83xx) platforms
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- J. Neuschäfer <j.ne@posteo.net>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
$nodename:
|
||||||
|
const: '/'
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- description: MPC83xx Reference Design Boards
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- fsl,mpc8308rdb
|
||||||
|
- fsl,mpc8315erdb
|
||||||
|
- fsl,mpc8360rdk
|
||||||
|
- fsl,mpc8377rdb
|
||||||
|
- fsl,mpc8377wlan
|
||||||
|
- fsl,mpc8378rdb
|
||||||
|
- fsl,mpc8379rdb
|
||||||
|
|
||||||
|
- description: MPC8313E Reference Design Board
|
||||||
|
items:
|
||||||
|
- const: MPC8313ERDB
|
||||||
|
- const: MPC831xRDB
|
||||||
|
- const: MPC83xxRDB
|
||||||
|
|
||||||
|
- description: MPC8323E Reference Design Board
|
||||||
|
items:
|
||||||
|
- const: MPC8323ERDB
|
||||||
|
- const: MPC832xRDB
|
||||||
|
- const: MPC83xxRDB
|
||||||
|
|
||||||
|
- description: MPC8349E-mITX(-GP) Reference Design Platform
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- MPC8349EMITX
|
||||||
|
- MPC8349EMITXGP
|
||||||
|
- const: MPC834xMITX
|
||||||
|
- const: MPC83xxMITX
|
||||||
|
|
||||||
|
- description: Keymile KMETER1 board
|
||||||
|
const: keymile,KMETER1
|
||||||
|
|
||||||
|
- description: MPC8308 P1M board
|
||||||
|
const: denx,mpc8308_p1m
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^soc@.*$":
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- fsl,mpc8315-immr
|
||||||
|
- fsl,mpc8308-immr
|
||||||
|
- const: simple-bus
|
||||||
|
- items:
|
||||||
|
- const: fsl,mpc8360-immr
|
||||||
|
- const: fsl,immr
|
||||||
|
- const: fsl,soc
|
||||||
|
- const: simple-bus
|
||||||
|
- const: simple-bus
|
||||||
|
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
/ {
|
||||||
|
compatible = "fsl,mpc8315erdb";
|
||||||
|
model = "MPC8315E-RDB";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
soc@e0000000 {
|
||||||
|
compatible = "fsl,mpc8315-immr", "simple-bus";
|
||||||
|
reg = <0xe0000000 0x00000200>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
device_type = "soc";
|
||||||
|
ranges = <0 0xe0000000 0x00100000>;
|
||||||
|
bus-frequency = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
||||||
|
|
@ -287,7 +287,7 @@ examples:
|
||||||
regulator-max-microvolt = <1700000>;
|
regulator-max-microvolt = <1700000>;
|
||||||
};
|
};
|
||||||
mt6359_vrfck_1_ldo_reg: ldo_vrfck_1 {
|
mt6359_vrfck_1_ldo_reg: ldo_vrfck_1 {
|
||||||
regulator-name = "vrfck";
|
regulator-name = "vrfck_1";
|
||||||
regulator-min-microvolt = <1240000>;
|
regulator-min-microvolt = <1240000>;
|
||||||
regulator-max-microvolt = <1600000>;
|
regulator-max-microvolt = <1600000>;
|
||||||
};
|
};
|
||||||
|
|
@ -309,7 +309,7 @@ examples:
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
};
|
};
|
||||||
mt6359_vemc_1_ldo_reg: ldo_vemc_1 {
|
mt6359_vemc_1_ldo_reg: ldo_vemc_1 {
|
||||||
regulator-name = "vemc";
|
regulator-name = "vemc_1";
|
||||||
regulator-min-microvolt = <2500000>;
|
regulator-min-microvolt = <2500000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ properties:
|
||||||
enum:
|
enum:
|
||||||
- nvidia,tegra210-audio-graph-card
|
- nvidia,tegra210-audio-graph-card
|
||||||
- nvidia,tegra186-audio-graph-card
|
- nvidia,tegra186-audio-graph-card
|
||||||
|
- nvidia,tegra238-audio-graph-card
|
||||||
- nvidia,tegra264-audio-graph-card
|
- nvidia,tegra264-audio-graph-card
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ properties:
|
||||||
- renesas,r9a07g044-ssi # RZ/G2{L,LC}
|
- renesas,r9a07g044-ssi # RZ/G2{L,LC}
|
||||||
- renesas,r9a07g054-ssi # RZ/V2L
|
- renesas,r9a07g054-ssi # RZ/V2L
|
||||||
- renesas,r9a08g045-ssi # RZ/G3S
|
- renesas,r9a08g045-ssi # RZ/G3S
|
||||||
|
- renesas,r9a08g046-ssi # RZ/G3L
|
||||||
- const: renesas,rz-ssi
|
- const: renesas,rz-ssi
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,6 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
title: Allwinner A31 SPI Controller
|
title: Allwinner A31 SPI Controller
|
||||||
|
|
||||||
allOf:
|
|
||||||
- $ref: spi-controller.yaml
|
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Chen-Yu Tsai <wens@csie.org>
|
- Chen-Yu Tsai <wens@csie.org>
|
||||||
- Maxime Ripard <mripard@kernel.org>
|
- Maxime Ripard <mripard@kernel.org>
|
||||||
|
|
@ -82,11 +79,11 @@ patternProperties:
|
||||||
|
|
||||||
spi-rx-bus-width:
|
spi-rx-bus-width:
|
||||||
items:
|
items:
|
||||||
- const: 1
|
enum: [0, 1, 2, 4]
|
||||||
|
|
||||||
spi-tx-bus-width:
|
spi-tx-bus-width:
|
||||||
items:
|
items:
|
||||||
- const: 1
|
enum: [0, 1, 2, 4]
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
|
@ -95,6 +92,28 @@ required:
|
||||||
- clocks
|
- clocks
|
||||||
- clock-names
|
- clock-names
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: spi-controller.yaml
|
||||||
|
- if:
|
||||||
|
not:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
enum:
|
||||||
|
- allwinner,sun50i-r329-spi
|
||||||
|
- allwinner,sun55i-a523-spi
|
||||||
|
then:
|
||||||
|
patternProperties:
|
||||||
|
"^.*@[0-9a-f]+":
|
||||||
|
properties:
|
||||||
|
spi-rx-bus-width:
|
||||||
|
items:
|
||||||
|
enum: [0, 1]
|
||||||
|
|
||||||
|
spi-tx-bus-width:
|
||||||
|
items:
|
||||||
|
enum: [0, 1]
|
||||||
|
|
||||||
unevaluatedProperties: false
|
unevaluatedProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
|
|
|
||||||
|
|
@ -22,21 +22,6 @@ allOf:
|
||||||
properties:
|
properties:
|
||||||
reg:
|
reg:
|
||||||
minItems: 2
|
minItems: 2
|
||||||
- if:
|
|
||||||
properties:
|
|
||||||
compatible:
|
|
||||||
contains:
|
|
||||||
enum:
|
|
||||||
- baikal,bt1-sys-ssi
|
|
||||||
then:
|
|
||||||
properties:
|
|
||||||
mux-controls:
|
|
||||||
maxItems: 1
|
|
||||||
required:
|
|
||||||
- mux-controls
|
|
||||||
else:
|
|
||||||
required:
|
|
||||||
- interrupts
|
|
||||||
- if:
|
- if:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
|
@ -75,10 +60,6 @@ properties:
|
||||||
const: intel,mountevans-imc-ssi
|
const: intel,mountevans-imc-ssi
|
||||||
- description: AMD Pensando Elba SoC SPI Controller
|
- description: AMD Pensando Elba SoC SPI Controller
|
||||||
const: amd,pensando-elba-spi
|
const: amd,pensando-elba-spi
|
||||||
- description: Baikal-T1 SPI Controller
|
|
||||||
const: baikal,bt1-ssi
|
|
||||||
- description: Baikal-T1 System Boot SPI Controller
|
|
||||||
const: baikal,bt1-sys-ssi
|
|
||||||
- description: Canaan Kendryte K210 SoS SPI Controller
|
- description: Canaan Kendryte K210 SoS SPI Controller
|
||||||
const: canaan,k210-spi
|
const: canaan,k210-spi
|
||||||
- description: Renesas RZ/N1 SPI Controller
|
- description: Renesas RZ/N1 SPI Controller
|
||||||
|
|
@ -170,6 +151,7 @@ required:
|
||||||
- "#address-cells"
|
- "#address-cells"
|
||||||
- "#size-cells"
|
- "#size-cells"
|
||||||
- clocks
|
- clocks
|
||||||
|
- interrupts
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
|
|
@ -190,15 +172,4 @@ examples:
|
||||||
rx-sample-delay-ns = <7>;
|
rx-sample-delay-ns = <7>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
- |
|
|
||||||
spi@1f040100 {
|
|
||||||
compatible = "baikal,bt1-sys-ssi";
|
|
||||||
reg = <0x1f040100 0x900>,
|
|
||||||
<0x1c000000 0x1000000>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
mux-controls = <&boot_mux>;
|
|
||||||
clocks = <&ccu_sys>;
|
|
||||||
clock-names = "ssi_clk";
|
|
||||||
};
|
|
||||||
...
|
...
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ Supported chips:
|
||||||
- https://ww1.microchip.com/downloads/en/DeviceDoc/EMC1438%20DS%20Rev.%201.0%20(04-29-10).pdf
|
- https://ww1.microchip.com/downloads/en/DeviceDoc/EMC1438%20DS%20Rev.%201.0%20(04-29-10).pdf
|
||||||
|
|
||||||
Author:
|
Author:
|
||||||
Kalhan Trisal <kalhan.trisal@intel.com
|
Kalhan Trisal <kalhan.trisal@intel.com>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
||||||
|
|
@ -220,7 +220,6 @@ Hardware Monitoring Kernel Drivers
|
||||||
q54sj108a2
|
q54sj108a2
|
||||||
qnap-mcu-hwmon
|
qnap-mcu-hwmon
|
||||||
raspberrypi-hwmon
|
raspberrypi-hwmon
|
||||||
sa67
|
|
||||||
sbrmi
|
sbrmi
|
||||||
sbtsi_temp
|
sbtsi_temp
|
||||||
sch5627
|
sch5627
|
||||||
|
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
|
|
||||||
Kernel driver sa67mcu
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Supported chips:
|
|
||||||
|
|
||||||
* Kontron sa67mcu
|
|
||||||
|
|
||||||
Prefix: 'sa67mcu'
|
|
||||||
|
|
||||||
Datasheet: not available
|
|
||||||
|
|
||||||
Authors: Michael Walle <mwalle@kernel.org>
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
The sa67mcu is a board management controller which also exposes a hardware
|
|
||||||
monitoring controller.
|
|
||||||
|
|
||||||
The controller has two voltage and one temperature sensor. The values are
|
|
||||||
hold in two 8 bit registers to form one 16 bit value. Reading the lower byte
|
|
||||||
will also capture the high byte to make the access atomic. The unit of the
|
|
||||||
volatge sensors are 1mV and the unit of the temperature sensor is 0.1degC.
|
|
||||||
|
|
||||||
Sysfs entries
|
|
||||||
-------------
|
|
||||||
|
|
||||||
The following attributes are supported.
|
|
||||||
|
|
||||||
======================= ========================================================
|
|
||||||
in0_label "VDDIN"
|
|
||||||
in0_input Measured VDDIN voltage.
|
|
||||||
|
|
||||||
in1_label "VDD_RTC"
|
|
||||||
in1_input Measured VDD_RTC voltage.
|
|
||||||
|
|
||||||
temp1_input MCU temperature. Roughly the board temperature.
|
|
||||||
======================= ========================================================
|
|
||||||
|
|
||||||
|
|
@ -152,7 +152,7 @@ operations:
|
||||||
- compound-ops
|
- compound-ops
|
||||||
-
|
-
|
||||||
name: threads-set
|
name: threads-set
|
||||||
doc: set the number of running threads
|
doc: set the maximum number of running threads
|
||||||
attribute-set: server
|
attribute-set: server
|
||||||
flags: [admin-perm]
|
flags: [admin-perm]
|
||||||
do:
|
do:
|
||||||
|
|
@ -165,7 +165,7 @@ operations:
|
||||||
- min-threads
|
- min-threads
|
||||||
-
|
-
|
||||||
name: threads-get
|
name: threads-get
|
||||||
doc: get the number of running threads
|
doc: get the maximum number of running threads
|
||||||
attribute-set: server
|
attribute-set: server
|
||||||
do:
|
do:
|
||||||
reply:
|
reply:
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@ options should be enabled to use sched_ext:
|
||||||
CONFIG_DEBUG_INFO_BTF=y
|
CONFIG_DEBUG_INFO_BTF=y
|
||||||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||||
CONFIG_BPF_JIT_DEFAULT_ON=y
|
CONFIG_BPF_JIT_DEFAULT_ON=y
|
||||||
CONFIG_PAHOLE_HAS_BTF_TAG=y
|
|
||||||
|
|
||||||
sched_ext is used only when the BPF scheduler is loaded and running.
|
sched_ext is used only when the BPF scheduler is loaded and running.
|
||||||
|
|
||||||
|
|
@ -58,7 +57,8 @@ in ``ops->flags``, all ``SCHED_NORMAL``, ``SCHED_BATCH``, ``SCHED_IDLE``, and
|
||||||
However, when the BPF scheduler is loaded and ``SCX_OPS_SWITCH_PARTIAL`` is
|
However, when the BPF scheduler is loaded and ``SCX_OPS_SWITCH_PARTIAL`` is
|
||||||
set in ``ops->flags``, only tasks with the ``SCHED_EXT`` policy are scheduled
|
set in ``ops->flags``, only tasks with the ``SCHED_EXT`` policy are scheduled
|
||||||
by sched_ext, while tasks with ``SCHED_NORMAL``, ``SCHED_BATCH`` and
|
by sched_ext, while tasks with ``SCHED_NORMAL``, ``SCHED_BATCH`` and
|
||||||
``SCHED_IDLE`` policies are scheduled by the fair-class scheduler.
|
``SCHED_IDLE`` policies are scheduled by the fair-class scheduler which has
|
||||||
|
higher sched_class precedence than ``SCHED_EXT``.
|
||||||
|
|
||||||
Terminating the sched_ext scheduler program, triggering `SysRq-S`, or
|
Terminating the sched_ext scheduler program, triggering `SysRq-S`, or
|
||||||
detection of any internal error including stalled runnable tasks aborts the
|
detection of any internal error including stalled runnable tasks aborts the
|
||||||
|
|
@ -345,6 +345,8 @@ Where to Look
|
||||||
The functions prefixed with ``scx_bpf_`` can be called from the BPF
|
The functions prefixed with ``scx_bpf_`` can be called from the BPF
|
||||||
scheduler.
|
scheduler.
|
||||||
|
|
||||||
|
* ``kernel/sched/ext_idle.c`` contains the built-in idle CPU selection policy.
|
||||||
|
|
||||||
* ``tools/sched_ext/`` hosts example BPF scheduler implementations.
|
* ``tools/sched_ext/`` hosts example BPF scheduler implementations.
|
||||||
|
|
||||||
* ``scx_simple[.bpf].c``: Minimal global FIFO scheduler example using a
|
* ``scx_simple[.bpf].c``: Minimal global FIFO scheduler example using a
|
||||||
|
|
@ -353,13 +355,35 @@ Where to Look
|
||||||
* ``scx_qmap[.bpf].c``: A multi-level FIFO scheduler supporting five
|
* ``scx_qmap[.bpf].c``: A multi-level FIFO scheduler supporting five
|
||||||
levels of priority implemented with ``BPF_MAP_TYPE_QUEUE``.
|
levels of priority implemented with ``BPF_MAP_TYPE_QUEUE``.
|
||||||
|
|
||||||
|
* ``scx_central[.bpf].c``: A central FIFO scheduler where all scheduling
|
||||||
|
decisions are made on one CPU, demonstrating ``LOCAL_ON`` dispatching,
|
||||||
|
tickless operation, and kthread preemption.
|
||||||
|
|
||||||
|
* ``scx_cpu0[.bpf].c``: A scheduler that queues all tasks to a shared DSQ
|
||||||
|
and only dispatches them on CPU0 in FIFO order. Useful for testing bypass
|
||||||
|
behavior.
|
||||||
|
|
||||||
|
* ``scx_flatcg[.bpf].c``: A flattened cgroup hierarchy scheduler
|
||||||
|
implementing hierarchical weight-based cgroup CPU control by compounding
|
||||||
|
each cgroup's share at every level into a single flat scheduling layer.
|
||||||
|
|
||||||
|
* ``scx_pair[.bpf].c``: A core-scheduling example that always makes
|
||||||
|
sibling CPU pairs execute tasks from the same CPU cgroup.
|
||||||
|
|
||||||
|
* ``scx_sdt[.bpf].c``: A variation of ``scx_simple`` demonstrating BPF
|
||||||
|
arena memory management for per-task data.
|
||||||
|
|
||||||
|
* ``scx_userland[.bpf].c``: A minimal scheduler demonstrating user space
|
||||||
|
scheduling. Tasks with CPU affinity are direct-dispatched in FIFO order;
|
||||||
|
all others are scheduled in user space by a simple vruntime scheduler.
|
||||||
|
|
||||||
ABI Instability
|
ABI Instability
|
||||||
===============
|
===============
|
||||||
|
|
||||||
The APIs provided by sched_ext to BPF schedulers programs have no stability
|
The APIs provided by sched_ext to BPF schedulers programs have no stability
|
||||||
guarantees. This includes the ops table callbacks and constants defined in
|
guarantees. This includes the ops table callbacks and constants defined in
|
||||||
``include/linux/sched/ext.h``, as well as the ``scx_bpf_`` kfuncs defined in
|
``include/linux/sched/ext.h``, as well as the ``scx_bpf_`` kfuncs defined in
|
||||||
``kernel/sched/ext.c``.
|
``kernel/sched/ext.c`` and ``kernel/sched/ext_idle.c``.
|
||||||
|
|
||||||
While we will attempt to provide a relatively stable API surface when
|
While we will attempt to provide a relatively stable API surface when
|
||||||
possible, they are subject to change without warning between kernel
|
possible, they are subject to change without warning between kernel
|
||||||
|
|
|
||||||
|
|
@ -2372,6 +2372,10 @@ quirk_flags
|
||||||
audible volume
|
audible volume
|
||||||
* bit 25: ``mixer_capture_min_mute``
|
* bit 25: ``mixer_capture_min_mute``
|
||||||
Similar to bit 24 but for capture streams
|
Similar to bit 24 but for capture streams
|
||||||
|
* bit 26: ``skip_iface_setup``
|
||||||
|
Skip the probe-time interface setup (usb_set_interface,
|
||||||
|
init_pitch, init_sample_rate); redundant with
|
||||||
|
snd_usb_endpoint_prepare() at stream-open time
|
||||||
|
|
||||||
This module supports multiple devices, autoprobe and hotplugging.
|
This module supports multiple devices, autoprobe and hotplugging.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1396,7 +1396,10 @@ or its flags may be modified, but it may not be resized.
|
||||||
Memory for the region is taken starting at the address denoted by the
|
Memory for the region is taken starting at the address denoted by the
|
||||||
field userspace_addr, which must point at user addressable memory for
|
field userspace_addr, which must point at user addressable memory for
|
||||||
the entire memory slot size. Any object may back this memory, including
|
the entire memory slot size. Any object may back this memory, including
|
||||||
anonymous memory, ordinary files, and hugetlbfs.
|
anonymous memory, ordinary files, and hugetlbfs. Changes in the backing
|
||||||
|
of the memory region are automatically reflected into the guest.
|
||||||
|
For example, an mmap() that affects the region will be made visible
|
||||||
|
immediately. Another example is madvise(MADV_DROP).
|
||||||
|
|
||||||
On architectures that support a form of address tagging, userspace_addr must
|
On architectures that support a form of address tagging, userspace_addr must
|
||||||
be an untagged address.
|
be an untagged address.
|
||||||
|
|
@ -1412,11 +1415,6 @@ use it. The latter can be set, if KVM_CAP_READONLY_MEM capability allows it,
|
||||||
to make a new slot read-only. In this case, writes to this memory will be
|
to make a new slot read-only. In this case, writes to this memory will be
|
||||||
posted to userspace as KVM_EXIT_MMIO exits.
|
posted to userspace as KVM_EXIT_MMIO exits.
|
||||||
|
|
||||||
When the KVM_CAP_SYNC_MMU capability is available, changes in the backing of
|
|
||||||
the memory region are automatically reflected into the guest. For example, an
|
|
||||||
mmap() that affects the region will be made visible immediately. Another
|
|
||||||
example is madvise(MADV_DROP).
|
|
||||||
|
|
||||||
For TDX guest, deleting/moving memory region loses guest memory contents.
|
For TDX guest, deleting/moving memory region loses guest memory contents.
|
||||||
Read only region isn't supported. Only as-id 0 is supported.
|
Read only region isn't supported. Only as-id 0 is supported.
|
||||||
|
|
||||||
|
|
@ -8437,115 +8435,123 @@ KVM_CHECK_EXTENSION.
|
||||||
|
|
||||||
The valid bits in cap.args[0] are:
|
The valid bits in cap.args[0] are:
|
||||||
|
|
||||||
=================================== ============================================
|
======================================== ================================================
|
||||||
KVM_X86_QUIRK_LINT0_REENABLED By default, the reset value for the LVT
|
KVM_X86_QUIRK_LINT0_REENABLED By default, the reset value for the LVT
|
||||||
LINT0 register is 0x700 (APIC_MODE_EXTINT).
|
LINT0 register is 0x700 (APIC_MODE_EXTINT).
|
||||||
When this quirk is disabled, the reset value
|
When this quirk is disabled, the reset value
|
||||||
is 0x10000 (APIC_LVT_MASKED).
|
is 0x10000 (APIC_LVT_MASKED).
|
||||||
|
|
||||||
KVM_X86_QUIRK_CD_NW_CLEARED By default, KVM clears CR0.CD and CR0.NW on
|
KVM_X86_QUIRK_CD_NW_CLEARED By default, KVM clears CR0.CD and CR0.NW on
|
||||||
AMD CPUs to workaround buggy guest firmware
|
AMD CPUs to workaround buggy guest firmware
|
||||||
that runs in perpetuity with CR0.CD, i.e.
|
that runs in perpetuity with CR0.CD, i.e.
|
||||||
with caches in "no fill" mode.
|
with caches in "no fill" mode.
|
||||||
|
|
||||||
When this quirk is disabled, KVM does not
|
When this quirk is disabled, KVM does not
|
||||||
change the value of CR0.CD and CR0.NW.
|
change the value of CR0.CD and CR0.NW.
|
||||||
|
|
||||||
KVM_X86_QUIRK_LAPIC_MMIO_HOLE By default, the MMIO LAPIC interface is
|
KVM_X86_QUIRK_LAPIC_MMIO_HOLE By default, the MMIO LAPIC interface is
|
||||||
available even when configured for x2APIC
|
available even when configured for x2APIC
|
||||||
mode. When this quirk is disabled, KVM
|
mode. When this quirk is disabled, KVM
|
||||||
disables the MMIO LAPIC interface if the
|
disables the MMIO LAPIC interface if the
|
||||||
LAPIC is in x2APIC mode.
|
LAPIC is in x2APIC mode.
|
||||||
|
|
||||||
KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
|
KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
|
||||||
exiting to userspace for an OUT instruction
|
exiting to userspace for an OUT instruction
|
||||||
to port 0x7e. When this quirk is disabled,
|
to port 0x7e. When this quirk is disabled,
|
||||||
KVM does not pre-increment %rip before
|
KVM does not pre-increment %rip before
|
||||||
exiting to userspace.
|
exiting to userspace.
|
||||||
|
|
||||||
KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT When this quirk is disabled, KVM sets
|
KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT When this quirk is disabled, KVM sets
|
||||||
CPUID.01H:ECX[bit 3] (MONITOR/MWAIT) if
|
CPUID.01H:ECX[bit 3] (MONITOR/MWAIT) if
|
||||||
IA32_MISC_ENABLE[bit 18] (MWAIT) is set.
|
IA32_MISC_ENABLE[bit 18] (MWAIT) is set.
|
||||||
Additionally, when this quirk is disabled,
|
Additionally, when this quirk is disabled,
|
||||||
KVM clears CPUID.01H:ECX[bit 3] if
|
KVM clears CPUID.01H:ECX[bit 3] if
|
||||||
IA32_MISC_ENABLE[bit 18] is cleared.
|
IA32_MISC_ENABLE[bit 18] is cleared.
|
||||||
|
|
||||||
KVM_X86_QUIRK_FIX_HYPERCALL_INSN By default, KVM rewrites guest
|
KVM_X86_QUIRK_FIX_HYPERCALL_INSN By default, KVM rewrites guest
|
||||||
VMMCALL/VMCALL instructions to match the
|
VMMCALL/VMCALL instructions to match the
|
||||||
vendor's hypercall instruction for the
|
vendor's hypercall instruction for the
|
||||||
system. When this quirk is disabled, KVM
|
system. When this quirk is disabled, KVM
|
||||||
will no longer rewrite invalid guest
|
will no longer rewrite invalid guest
|
||||||
hypercall instructions. Executing the
|
hypercall instructions. Executing the
|
||||||
incorrect hypercall instruction will
|
incorrect hypercall instruction will
|
||||||
generate a #UD within the guest.
|
generate a #UD within the guest.
|
||||||
|
|
||||||
KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS By default, KVM emulates MONITOR/MWAIT (if
|
KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS By default, KVM emulates MONITOR/MWAIT (if
|
||||||
they are intercepted) as NOPs regardless of
|
they are intercepted) as NOPs regardless of
|
||||||
whether or not MONITOR/MWAIT are supported
|
whether or not MONITOR/MWAIT are supported
|
||||||
according to guest CPUID. When this quirk
|
according to guest CPUID. When this quirk
|
||||||
is disabled and KVM_X86_DISABLE_EXITS_MWAIT
|
is disabled and KVM_X86_DISABLE_EXITS_MWAIT
|
||||||
is not set (MONITOR/MWAIT are intercepted),
|
is not set (MONITOR/MWAIT are intercepted),
|
||||||
KVM will inject a #UD on MONITOR/MWAIT if
|
KVM will inject a #UD on MONITOR/MWAIT if
|
||||||
they're unsupported per guest CPUID. Note,
|
they're unsupported per guest CPUID. Note,
|
||||||
KVM will modify MONITOR/MWAIT support in
|
KVM will modify MONITOR/MWAIT support in
|
||||||
guest CPUID on writes to MISC_ENABLE if
|
guest CPUID on writes to MISC_ENABLE if
|
||||||
KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT is
|
KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT is
|
||||||
disabled.
|
disabled.
|
||||||
|
|
||||||
KVM_X86_QUIRK_SLOT_ZAP_ALL By default, for KVM_X86_DEFAULT_VM VMs, KVM
|
KVM_X86_QUIRK_SLOT_ZAP_ALL By default, for KVM_X86_DEFAULT_VM VMs, KVM
|
||||||
invalidates all SPTEs in all memslots and
|
invalidates all SPTEs in all memslots and
|
||||||
address spaces when a memslot is deleted or
|
address spaces when a memslot is deleted or
|
||||||
moved. When this quirk is disabled (or the
|
moved. When this quirk is disabled (or the
|
||||||
VM type isn't KVM_X86_DEFAULT_VM), KVM only
|
VM type isn't KVM_X86_DEFAULT_VM), KVM only
|
||||||
ensures the backing memory of the deleted
|
ensures the backing memory of the deleted
|
||||||
or moved memslot isn't reachable, i.e KVM
|
or moved memslot isn't reachable, i.e KVM
|
||||||
_may_ invalidate only SPTEs related to the
|
_may_ invalidate only SPTEs related to the
|
||||||
memslot.
|
memslot.
|
||||||
|
|
||||||
KVM_X86_QUIRK_STUFF_FEATURE_MSRS By default, at vCPU creation, KVM sets the
|
KVM_X86_QUIRK_STUFF_FEATURE_MSRS By default, at vCPU creation, KVM sets the
|
||||||
vCPU's MSR_IA32_PERF_CAPABILITIES (0x345),
|
vCPU's MSR_IA32_PERF_CAPABILITIES (0x345),
|
||||||
MSR_IA32_ARCH_CAPABILITIES (0x10a),
|
MSR_IA32_ARCH_CAPABILITIES (0x10a),
|
||||||
MSR_PLATFORM_INFO (0xce), and all VMX MSRs
|
MSR_PLATFORM_INFO (0xce), and all VMX MSRs
|
||||||
(0x480..0x492) to the maximal capabilities
|
(0x480..0x492) to the maximal capabilities
|
||||||
supported by KVM. KVM also sets
|
supported by KVM. KVM also sets
|
||||||
MSR_IA32_UCODE_REV (0x8b) to an arbitrary
|
MSR_IA32_UCODE_REV (0x8b) to an arbitrary
|
||||||
value (which is different for Intel vs.
|
value (which is different for Intel vs.
|
||||||
AMD). Lastly, when guest CPUID is set (by
|
AMD). Lastly, when guest CPUID is set (by
|
||||||
userspace), KVM modifies select VMX MSR
|
userspace), KVM modifies select VMX MSR
|
||||||
fields to force consistency between guest
|
fields to force consistency between guest
|
||||||
CPUID and L2's effective ISA. When this
|
CPUID and L2's effective ISA. When this
|
||||||
quirk is disabled, KVM zeroes the vCPU's MSR
|
quirk is disabled, KVM zeroes the vCPU's MSR
|
||||||
values (with two exceptions, see below),
|
values (with two exceptions, see below),
|
||||||
i.e. treats the feature MSRs like CPUID
|
i.e. treats the feature MSRs like CPUID
|
||||||
leaves and gives userspace full control of
|
leaves and gives userspace full control of
|
||||||
the vCPU model definition. This quirk does
|
the vCPU model definition. This quirk does
|
||||||
not affect VMX MSRs CR0/CR4_FIXED1 (0x487
|
not affect VMX MSRs CR0/CR4_FIXED1 (0x487
|
||||||
and 0x489), as KVM does now allow them to
|
and 0x489), as KVM does now allow them to
|
||||||
be set by userspace (KVM sets them based on
|
be set by userspace (KVM sets them based on
|
||||||
guest CPUID, for safety purposes).
|
guest CPUID, for safety purposes).
|
||||||
|
|
||||||
KVM_X86_QUIRK_IGNORE_GUEST_PAT By default, on Intel platforms, KVM ignores
|
KVM_X86_QUIRK_IGNORE_GUEST_PAT By default, on Intel platforms, KVM ignores
|
||||||
guest PAT and forces the effective memory
|
guest PAT and forces the effective memory
|
||||||
type to WB in EPT. The quirk is not available
|
type to WB in EPT. The quirk is not available
|
||||||
on Intel platforms which are incapable of
|
on Intel platforms which are incapable of
|
||||||
safely honoring guest PAT (i.e., without CPU
|
safely honoring guest PAT (i.e., without CPU
|
||||||
self-snoop, KVM always ignores guest PAT and
|
self-snoop, KVM always ignores guest PAT and
|
||||||
forces effective memory type to WB). It is
|
forces effective memory type to WB). It is
|
||||||
also ignored on AMD platforms or, on Intel,
|
also ignored on AMD platforms or, on Intel,
|
||||||
when a VM has non-coherent DMA devices
|
when a VM has non-coherent DMA devices
|
||||||
assigned; KVM always honors guest PAT in
|
assigned; KVM always honors guest PAT in
|
||||||
such case. The quirk is needed to avoid
|
such case. The quirk is needed to avoid
|
||||||
slowdowns on certain Intel Xeon platforms
|
slowdowns on certain Intel Xeon platforms
|
||||||
(e.g. ICX, SPR) where self-snoop feature is
|
(e.g. ICX, SPR) where self-snoop feature is
|
||||||
supported but UC is slow enough to cause
|
supported but UC is slow enough to cause
|
||||||
issues with some older guests that use
|
issues with some older guests that use
|
||||||
UC instead of WC to map the video RAM.
|
UC instead of WC to map the video RAM.
|
||||||
Userspace can disable the quirk to honor
|
Userspace can disable the quirk to honor
|
||||||
guest PAT if it knows that there is no such
|
guest PAT if it knows that there is no such
|
||||||
guest software, for example if it does not
|
guest software, for example if it does not
|
||||||
expose a bochs graphics device (which is
|
expose a bochs graphics device (which is
|
||||||
known to have had a buggy driver).
|
known to have had a buggy driver).
|
||||||
=================================== ============================================
|
|
||||||
|
KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM By default, KVM relaxes the consistency
|
||||||
|
check for GUEST_IA32_DEBUGCTL in vmcs12
|
||||||
|
to allow FREEZE_IN_SMM to be set. When
|
||||||
|
this quirk is disabled, KVM requires this
|
||||||
|
bit to be cleared. Note that the vmcs02
|
||||||
|
bit is still completely controlled by the
|
||||||
|
host, regardless of the quirk setting.
|
||||||
|
======================================== ================================================
|
||||||
|
|
||||||
7.32 KVM_CAP_MAX_VCPU_ID
|
7.32 KVM_CAP_MAX_VCPU_ID
|
||||||
------------------------
|
------------------------
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ The acquisition orders for mutexes are as follows:
|
||||||
|
|
||||||
- kvm->lock is taken outside kvm->slots_lock and kvm->irq_lock
|
- kvm->lock is taken outside kvm->slots_lock and kvm->irq_lock
|
||||||
|
|
||||||
|
- vcpu->mutex is taken outside kvm->slots_lock and kvm->slots_arch_lock
|
||||||
|
|
||||||
- kvm->slots_lock is taken outside kvm->irq_lock, though acquiring
|
- kvm->slots_lock is taken outside kvm->irq_lock, though acquiring
|
||||||
them together is quite rare.
|
them together is quite rare.
|
||||||
|
|
||||||
|
|
|
||||||
122
MAINTAINERS
122
MAINTAINERS
|
|
@ -993,10 +993,8 @@ F: Documentation/devicetree/bindings/thermal/amazon,al-thermal.yaml
|
||||||
F: drivers/thermal/thermal_mmio.c
|
F: drivers/thermal/thermal_mmio.c
|
||||||
|
|
||||||
AMAZON ETHERNET DRIVERS
|
AMAZON ETHERNET DRIVERS
|
||||||
M: Shay Agroskin <shayagr@amazon.com>
|
|
||||||
M: Arthur Kiyanovski <akiyano@amazon.com>
|
M: Arthur Kiyanovski <akiyano@amazon.com>
|
||||||
R: David Arinzon <darinzon@amazon.com>
|
M: David Arinzon <darinzon@amazon.com>
|
||||||
R: Saeed Bishara <saeedb@amazon.com>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/networking/device_drivers/ethernet/amazon/ena.rst
|
F: Documentation/networking/device_drivers/ethernet/amazon/ena.rst
|
||||||
|
|
@ -1292,7 +1290,6 @@ F: include/trace/events/amdxdna.h
|
||||||
F: include/uapi/drm/amdxdna_accel.h
|
F: include/uapi/drm/amdxdna_accel.h
|
||||||
|
|
||||||
AMD XGBE DRIVER
|
AMD XGBE DRIVER
|
||||||
M: "Shyam Sundar S K" <Shyam-sundar.S-k@amd.com>
|
|
||||||
M: Raju Rangoju <Raju.Rangoju@amd.com>
|
M: Raju Rangoju <Raju.Rangoju@amd.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -4618,7 +4615,6 @@ F: drivers/bluetooth/
|
||||||
|
|
||||||
BLUETOOTH SUBSYSTEM
|
BLUETOOTH SUBSYSTEM
|
||||||
M: Marcel Holtmann <marcel@holtmann.org>
|
M: Marcel Holtmann <marcel@holtmann.org>
|
||||||
M: Johan Hedberg <johan.hedberg@gmail.com>
|
|
||||||
M: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
|
M: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
|
||||||
L: linux-bluetooth@vger.kernel.org
|
L: linux-bluetooth@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
@ -6213,20 +6209,20 @@ F: drivers/scsi/fnic/
|
||||||
|
|
||||||
CISCO SCSI HBA DRIVER
|
CISCO SCSI HBA DRIVER
|
||||||
M: Karan Tilak Kumar <kartilak@cisco.com>
|
M: Karan Tilak Kumar <kartilak@cisco.com>
|
||||||
|
M: Narsimhulu Musini <nmusini@cisco.com>
|
||||||
M: Sesidhar Baddela <sebaddel@cisco.com>
|
M: Sesidhar Baddela <sebaddel@cisco.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/scsi/snic/
|
F: drivers/scsi/snic/
|
||||||
|
|
||||||
CISCO VIC ETHERNET NIC DRIVER
|
CISCO VIC ETHERNET NIC DRIVER
|
||||||
M: Christian Benvenuti <benve@cisco.com>
|
|
||||||
M: Satish Kharat <satishkh@cisco.com>
|
M: Satish Kharat <satishkh@cisco.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/cisco/enic/
|
F: drivers/net/ethernet/cisco/enic/
|
||||||
|
|
||||||
CISCO VIC LOW LATENCY NIC DRIVER
|
CISCO VIC LOW LATENCY NIC DRIVER
|
||||||
M: Christian Benvenuti <benve@cisco.com>
|
|
||||||
M: Nelson Escobar <neescoba@cisco.com>
|
M: Nelson Escobar <neescoba@cisco.com>
|
||||||
|
M: Satish Kharat <satishkh@cisco.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/infiniband/hw/usnic/
|
F: drivers/infiniband/hw/usnic/
|
||||||
|
|
||||||
|
|
@ -6280,7 +6276,7 @@ S: Maintained
|
||||||
F: include/linux/clk.h
|
F: include/linux/clk.h
|
||||||
|
|
||||||
CLOCKSOURCE, CLOCKEVENT DRIVERS
|
CLOCKSOURCE, CLOCKEVENT DRIVERS
|
||||||
M: Daniel Lezcano <daniel.lezcano@linaro.org>
|
M: Daniel Lezcano <daniel.lezcano@kernel.org>
|
||||||
M: Thomas Gleixner <tglx@kernel.org>
|
M: Thomas Gleixner <tglx@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
@ -6669,7 +6665,7 @@ F: rust/kernel/cpu.rs
|
||||||
|
|
||||||
CPU IDLE TIME MANAGEMENT FRAMEWORK
|
CPU IDLE TIME MANAGEMENT FRAMEWORK
|
||||||
M: "Rafael J. Wysocki" <rafael@kernel.org>
|
M: "Rafael J. Wysocki" <rafael@kernel.org>
|
||||||
M: Daniel Lezcano <daniel.lezcano@linaro.org>
|
M: Daniel Lezcano <daniel.lezcano@kernel.org>
|
||||||
R: Christian Loehle <christian.loehle@arm.com>
|
R: Christian Loehle <christian.loehle@arm.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -6699,7 +6695,7 @@ F: arch/x86/kernel/msr.c
|
||||||
|
|
||||||
CPUIDLE DRIVER - ARM BIG LITTLE
|
CPUIDLE DRIVER - ARM BIG LITTLE
|
||||||
M: Lorenzo Pieralisi <lpieralisi@kernel.org>
|
M: Lorenzo Pieralisi <lpieralisi@kernel.org>
|
||||||
M: Daniel Lezcano <daniel.lezcano@linaro.org>
|
M: Daniel Lezcano <daniel.lezcano@kernel.org>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.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: Maintained
|
||||||
|
|
@ -6707,7 +6703,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
|
||||||
F: drivers/cpuidle/cpuidle-big_little.c
|
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@kernel.org>
|
||||||
M: Kukjin Kim <kgene@kernel.org>
|
M: Kukjin Kim <kgene@kernel.org>
|
||||||
R: Krzysztof Kozlowski <krzk@kernel.org>
|
R: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
|
|
@ -8630,9 +8626,8 @@ F: drivers/gpu/drm/lima/
|
||||||
F: include/uapi/drm/lima_drm.h
|
F: include/uapi/drm/lima_drm.h
|
||||||
|
|
||||||
DRM DRIVERS FOR LOONGSON
|
DRM DRIVERS FOR LOONGSON
|
||||||
M: Sui Jingfeng <suijingfeng@loongson.cn>
|
|
||||||
L: dri-devel@lists.freedesktop.org
|
L: dri-devel@lists.freedesktop.org
|
||||||
S: Supported
|
S: Orphan
|
||||||
T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
|
T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
|
||||||
F: drivers/gpu/drm/loongson/
|
F: drivers/gpu/drm/loongson/
|
||||||
|
|
||||||
|
|
@ -10172,8 +10167,8 @@ F: drivers/i2c/busses/i2c-cpm.c
|
||||||
|
|
||||||
FREESCALE IMX / MXC FEC DRIVER
|
FREESCALE IMX / MXC FEC DRIVER
|
||||||
M: Wei Fang <wei.fang@nxp.com>
|
M: Wei Fang <wei.fang@nxp.com>
|
||||||
|
R: Frank Li <frank.li@nxp.com>
|
||||||
R: Shenwei Wang <shenwei.wang@nxp.com>
|
R: Shenwei Wang <shenwei.wang@nxp.com>
|
||||||
R: Clark Wang <xiaoning.wang@nxp.com>
|
|
||||||
L: imx@lists.linux.dev
|
L: imx@lists.linux.dev
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -10485,7 +10480,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
|
||||||
F: Documentation/trace/ftrace*
|
F: Documentation/trace/ftrace*
|
||||||
F: arch/*/*/*/*ftrace*
|
F: arch/*/*/*/*ftrace*
|
||||||
F: arch/*/*/*ftrace*
|
F: arch/*/*/*ftrace*
|
||||||
F: include/*/ftrace.h
|
F: include/*/*ftrace*
|
||||||
F: kernel/trace/fgraph.c
|
F: kernel/trace/fgraph.c
|
||||||
F: kernel/trace/ftrace*
|
F: kernel/trace/ftrace*
|
||||||
F: samples/ftrace
|
F: samples/ftrace
|
||||||
|
|
@ -12217,7 +12212,6 @@ IBM Power SRIOV Virtual NIC Device Driver
|
||||||
M: Haren Myneni <haren@linux.ibm.com>
|
M: Haren Myneni <haren@linux.ibm.com>
|
||||||
M: Rick Lindsley <ricklind@linux.ibm.com>
|
M: Rick Lindsley <ricklind@linux.ibm.com>
|
||||||
R: Nick Child <nnac123@linux.ibm.com>
|
R: Nick Child <nnac123@linux.ibm.com>
|
||||||
R: Thomas Falcon <tlfalcon@linux.ibm.com>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/ibm/ibmvnic.*
|
F: drivers/net/ethernet/ibm/ibmvnic.*
|
||||||
|
|
@ -13943,7 +13937,7 @@ F: fs/smb/server/
|
||||||
|
|
||||||
KERNEL UNIT TESTING FRAMEWORK (KUnit)
|
KERNEL UNIT TESTING FRAMEWORK (KUnit)
|
||||||
M: Brendan Higgins <brendan.higgins@linux.dev>
|
M: Brendan Higgins <brendan.higgins@linux.dev>
|
||||||
M: David Gow <davidgow@google.com>
|
M: David Gow <david@davidgow.net>
|
||||||
R: Rae Moar <raemoar63@gmail.com>
|
R: Rae Moar <raemoar63@gmail.com>
|
||||||
L: linux-kselftest@vger.kernel.org
|
L: linux-kselftest@vger.kernel.org
|
||||||
L: kunit-dev@googlegroups.com
|
L: kunit-dev@googlegroups.com
|
||||||
|
|
@ -14412,9 +14406,9 @@ LANTIQ PEF2256 DRIVER
|
||||||
M: Herve Codina <herve.codina@bootlin.com>
|
M: Herve Codina <herve.codina@bootlin.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/net/lantiq,pef2256.yaml
|
F: Documentation/devicetree/bindings/net/lantiq,pef2256.yaml
|
||||||
F: drivers/net/wan/framer/pef2256/
|
F: drivers/net/wan/framer/
|
||||||
F: drivers/pinctrl/pinctrl-pef2256.c
|
F: drivers/pinctrl/pinctrl-pef2256.c
|
||||||
F: include/linux/framer/pef2256.h
|
F: include/linux/framer/
|
||||||
|
|
||||||
LASI 53c700 driver for PARISC
|
LASI 53c700 driver for PARISC
|
||||||
M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
|
M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
|
||||||
|
|
@ -14763,7 +14757,7 @@ F: drivers/misc/lis3lv02d/
|
||||||
F: drivers/platform/x86/hp/hp_accel.c
|
F: drivers/platform/x86/hp/hp_accel.c
|
||||||
|
|
||||||
LIST KUNIT TEST
|
LIST KUNIT TEST
|
||||||
M: David Gow <davidgow@google.com>
|
M: David Gow <david@davidgow.net>
|
||||||
L: linux-kselftest@vger.kernel.org
|
L: linux-kselftest@vger.kernel.org
|
||||||
L: kunit-dev@googlegroups.com
|
L: kunit-dev@googlegroups.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -15376,10 +15370,8 @@ F: drivers/crypto/marvell/
|
||||||
F: include/linux/soc/marvell/octeontx2/
|
F: include/linux/soc/marvell/octeontx2/
|
||||||
|
|
||||||
MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2)
|
MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2)
|
||||||
M: Mirko Lindner <mlindner@marvell.com>
|
|
||||||
M: Stephen Hemminger <stephen@networkplumber.org>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Odd fixes
|
S: Orphan
|
||||||
F: drivers/net/ethernet/marvell/sk*
|
F: drivers/net/ethernet/marvell/sk*
|
||||||
|
|
||||||
MARVELL LIBERTAS WIRELESS DRIVER
|
MARVELL LIBERTAS WIRELESS DRIVER
|
||||||
|
|
@ -15476,7 +15468,6 @@ MARVELL OCTEONTX2 RVU ADMIN FUNCTION DRIVER
|
||||||
M: Sunil Goutham <sgoutham@marvell.com>
|
M: Sunil Goutham <sgoutham@marvell.com>
|
||||||
M: Linu Cherian <lcherian@marvell.com>
|
M: Linu Cherian <lcherian@marvell.com>
|
||||||
M: Geetha sowjanya <gakula@marvell.com>
|
M: Geetha sowjanya <gakula@marvell.com>
|
||||||
M: Jerin Jacob <jerinj@marvell.com>
|
|
||||||
M: hariprasad <hkelam@marvell.com>
|
M: hariprasad <hkelam@marvell.com>
|
||||||
M: Subbaraya Sundeep <sbhatta@marvell.com>
|
M: Subbaraya Sundeep <sbhatta@marvell.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
|
@ -15491,7 +15482,7 @@ S: Supported
|
||||||
F: drivers/perf/marvell_pem_pmu.c
|
F: drivers/perf/marvell_pem_pmu.c
|
||||||
|
|
||||||
MARVELL PRESTERA ETHERNET SWITCH DRIVER
|
MARVELL PRESTERA ETHERNET SWITCH DRIVER
|
||||||
M: Taras Chornyi <taras.chornyi@plvision.eu>
|
M: Elad Nachman <enachman@marvell.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
W: https://github.com/Marvell-switching/switchdev-prestera
|
W: https://github.com/Marvell-switching/switchdev-prestera
|
||||||
F: drivers/net/ethernet/marvell/prestera/
|
F: drivers/net/ethernet/marvell/prestera/
|
||||||
|
|
@ -16165,7 +16156,6 @@ F: drivers/dma/mediatek/
|
||||||
|
|
||||||
MEDIATEK ETHERNET DRIVER
|
MEDIATEK ETHERNET DRIVER
|
||||||
M: Felix Fietkau <nbd@nbd.name>
|
M: Felix Fietkau <nbd@nbd.name>
|
||||||
M: Sean Wang <sean.wang@mediatek.com>
|
|
||||||
M: Lorenzo Bianconi <lorenzo@kernel.org>
|
M: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -16358,8 +16348,6 @@ F: include/soc/mediatek/smi.h
|
||||||
MEDIATEK SWITCH DRIVER
|
MEDIATEK SWITCH DRIVER
|
||||||
M: Chester A. Unal <chester.a.unal@arinc9.com>
|
M: Chester A. Unal <chester.a.unal@arinc9.com>
|
||||||
M: Daniel Golle <daniel@makrotopia.org>
|
M: Daniel Golle <daniel@makrotopia.org>
|
||||||
M: DENG Qingfang <dqfext@gmail.com>
|
|
||||||
M: Sean Wang <sean.wang@mediatek.com>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/dsa/mt7530-mdio.c
|
F: drivers/net/dsa/mt7530-mdio.c
|
||||||
|
|
@ -16369,7 +16357,6 @@ F: net/dsa/tag_mtk.c
|
||||||
|
|
||||||
MEDIATEK T7XX 5G WWAN MODEM DRIVER
|
MEDIATEK T7XX 5G WWAN MODEM DRIVER
|
||||||
M: Chandrashekar Devegowda <chandrashekar.devegowda@intel.com>
|
M: Chandrashekar Devegowda <chandrashekar.devegowda@intel.com>
|
||||||
R: Chiranjeevi Rapolu <chiranjeevi.rapolu@linux.intel.com>
|
|
||||||
R: Liu Haijun <haijun.liu@mediatek.com>
|
R: Liu Haijun <haijun.liu@mediatek.com>
|
||||||
R: Ricardo Martinez <ricardo.martinez@linux.intel.com>
|
R: Ricardo Martinez <ricardo.martinez@linux.intel.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
|
@ -16654,9 +16641,9 @@ F: mm/balloon.c
|
||||||
MEMORY MANAGEMENT - CORE
|
MEMORY MANAGEMENT - CORE
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: David Hildenbrand <david@kernel.org>
|
M: David Hildenbrand <david@kernel.org>
|
||||||
R: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
R: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
R: Vlastimil Babka <vbabka@suse.cz>
|
R: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Mike Rapoport <rppt@kernel.org>
|
R: Mike Rapoport <rppt@kernel.org>
|
||||||
R: Suren Baghdasaryan <surenb@google.com>
|
R: Suren Baghdasaryan <surenb@google.com>
|
||||||
R: Michal Hocko <mhocko@suse.com>
|
R: Michal Hocko <mhocko@suse.com>
|
||||||
|
|
@ -16784,9 +16771,9 @@ F: mm/workingset.c
|
||||||
MEMORY MANAGEMENT - MISC
|
MEMORY MANAGEMENT - MISC
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: David Hildenbrand <david@kernel.org>
|
M: David Hildenbrand <david@kernel.org>
|
||||||
R: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
R: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
R: Vlastimil Babka <vbabka@suse.cz>
|
R: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Mike Rapoport <rppt@kernel.org>
|
R: Mike Rapoport <rppt@kernel.org>
|
||||||
R: Suren Baghdasaryan <surenb@google.com>
|
R: Suren Baghdasaryan <surenb@google.com>
|
||||||
R: Michal Hocko <mhocko@suse.com>
|
R: Michal Hocko <mhocko@suse.com>
|
||||||
|
|
@ -16841,7 +16828,7 @@ F: mm/oom_kill.c
|
||||||
|
|
||||||
MEMORY MANAGEMENT - PAGE ALLOCATOR
|
MEMORY MANAGEMENT - PAGE ALLOCATOR
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: Vlastimil Babka <vbabka@suse.cz>
|
M: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Suren Baghdasaryan <surenb@google.com>
|
R: Suren Baghdasaryan <surenb@google.com>
|
||||||
R: Michal Hocko <mhocko@suse.com>
|
R: Michal Hocko <mhocko@suse.com>
|
||||||
R: Brendan Jackman <jackmanb@google.com>
|
R: Brendan Jackman <jackmanb@google.com>
|
||||||
|
|
@ -16875,7 +16862,7 @@ R: David Hildenbrand <david@kernel.org>
|
||||||
R: Michal Hocko <mhocko@kernel.org>
|
R: Michal Hocko <mhocko@kernel.org>
|
||||||
R: Qi Zheng <zhengqi.arch@bytedance.com>
|
R: Qi Zheng <zhengqi.arch@bytedance.com>
|
||||||
R: Shakeel Butt <shakeel.butt@linux.dev>
|
R: Shakeel Butt <shakeel.butt@linux.dev>
|
||||||
R: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
R: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: mm/vmscan.c
|
F: mm/vmscan.c
|
||||||
|
|
@ -16884,10 +16871,10 @@ F: mm/workingset.c
|
||||||
MEMORY MANAGEMENT - RMAP (REVERSE MAPPING)
|
MEMORY MANAGEMENT - RMAP (REVERSE MAPPING)
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: David Hildenbrand <david@kernel.org>
|
M: David Hildenbrand <david@kernel.org>
|
||||||
M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
M: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Rik van Riel <riel@surriel.com>
|
R: Rik van Riel <riel@surriel.com>
|
||||||
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
R: Vlastimil Babka <vbabka@suse.cz>
|
R: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Harry Yoo <harry.yoo@oracle.com>
|
R: Harry Yoo <harry.yoo@oracle.com>
|
||||||
R: Jann Horn <jannh@google.com>
|
R: Jann Horn <jannh@google.com>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
|
|
@ -16929,7 +16916,7 @@ F: mm/swapfile.c
|
||||||
MEMORY MANAGEMENT - THP (TRANSPARENT HUGE PAGE)
|
MEMORY MANAGEMENT - THP (TRANSPARENT HUGE PAGE)
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: David Hildenbrand <david@kernel.org>
|
M: David Hildenbrand <david@kernel.org>
|
||||||
M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
M: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Zi Yan <ziy@nvidia.com>
|
R: Zi Yan <ziy@nvidia.com>
|
||||||
R: Baolin Wang <baolin.wang@linux.alibaba.com>
|
R: Baolin Wang <baolin.wang@linux.alibaba.com>
|
||||||
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
|
|
@ -16969,7 +16956,7 @@ F: tools/testing/selftests/mm/uffd-*.[ch]
|
||||||
|
|
||||||
MEMORY MANAGEMENT - RUST
|
MEMORY MANAGEMENT - RUST
|
||||||
M: Alice Ryhl <aliceryhl@google.com>
|
M: Alice Ryhl <aliceryhl@google.com>
|
||||||
R: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
R: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
L: rust-for-linux@vger.kernel.org
|
L: rust-for-linux@vger.kernel.org
|
||||||
|
|
@ -16985,8 +16972,8 @@ F: rust/kernel/page.rs
|
||||||
MEMORY MAPPING
|
MEMORY MAPPING
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: Liam R. Howlett <Liam.Howlett@oracle.com>
|
M: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
M: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Vlastimil Babka <vbabka@suse.cz>
|
R: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Jann Horn <jannh@google.com>
|
R: Jann Horn <jannh@google.com>
|
||||||
R: Pedro Falcato <pfalcato@suse.de>
|
R: Pedro Falcato <pfalcato@suse.de>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
|
|
@ -17015,8 +17002,8 @@ MEMORY MAPPING - LOCKING
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: Suren Baghdasaryan <surenb@google.com>
|
M: Suren Baghdasaryan <surenb@google.com>
|
||||||
M: Liam R. Howlett <Liam.Howlett@oracle.com>
|
M: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
M: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Vlastimil Babka <vbabka@suse.cz>
|
R: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Shakeel Butt <shakeel.butt@linux.dev>
|
R: Shakeel Butt <shakeel.butt@linux.dev>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -17030,9 +17017,9 @@ F: mm/mmap_lock.c
|
||||||
MEMORY MAPPING - MADVISE (MEMORY ADVICE)
|
MEMORY MAPPING - MADVISE (MEMORY ADVICE)
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
M: Liam R. Howlett <Liam.Howlett@oracle.com>
|
M: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
M: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
M: David Hildenbrand <david@kernel.org>
|
M: David Hildenbrand <david@kernel.org>
|
||||||
R: Vlastimil Babka <vbabka@suse.cz>
|
R: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Jann Horn <jannh@google.com>
|
R: Jann Horn <jannh@google.com>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -19227,8 +19214,6 @@ F: tools/objtool/
|
||||||
|
|
||||||
OCELOT ETHERNET SWITCH DRIVER
|
OCELOT ETHERNET SWITCH DRIVER
|
||||||
M: Vladimir Oltean <vladimir.oltean@nxp.com>
|
M: Vladimir Oltean <vladimir.oltean@nxp.com>
|
||||||
M: Claudiu Manoil <claudiu.manoil@nxp.com>
|
|
||||||
M: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
|
||||||
M: UNGLinuxDriver@microchip.com
|
M: UNGLinuxDriver@microchip.com
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
@ -19814,7 +19799,6 @@ F: arch/*/boot/dts/
|
||||||
F: include/dt-bindings/
|
F: include/dt-bindings/
|
||||||
|
|
||||||
OPENCOMPUTE PTP CLOCK DRIVER
|
OPENCOMPUTE PTP CLOCK DRIVER
|
||||||
M: Jonathan Lemon <jonathan.lemon@gmail.com>
|
|
||||||
M: Vadim Fedorenko <vadim.fedorenko@linux.dev>
|
M: Vadim Fedorenko <vadim.fedorenko@linux.dev>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -20122,9 +20106,8 @@ F: Documentation/devicetree/bindings/pci/marvell,armada-3700-pcie.yaml
|
||||||
F: drivers/pci/controller/pci-aardvark.c
|
F: drivers/pci/controller/pci-aardvark.c
|
||||||
|
|
||||||
PCI DRIVER FOR ALTERA PCIE IP
|
PCI DRIVER FOR ALTERA PCIE IP
|
||||||
M: Joyce Ooi <joyce.ooi@intel.com>
|
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Supported
|
S: Orphan
|
||||||
F: Documentation/devicetree/bindings/pci/altr,pcie-root-port.yaml
|
F: Documentation/devicetree/bindings/pci/altr,pcie-root-port.yaml
|
||||||
F: drivers/pci/controller/pcie-altera.c
|
F: drivers/pci/controller/pcie-altera.c
|
||||||
|
|
||||||
|
|
@ -20369,9 +20352,8 @@ S: Supported
|
||||||
F: Documentation/PCI/pci-error-recovery.rst
|
F: Documentation/PCI/pci-error-recovery.rst
|
||||||
|
|
||||||
PCI MSI DRIVER FOR ALTERA MSI IP
|
PCI MSI DRIVER FOR ALTERA MSI IP
|
||||||
M: Joyce Ooi <joyce.ooi@intel.com>
|
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Supported
|
S: Orphan
|
||||||
F: Documentation/devicetree/bindings/interrupt-controller/altr,msi-controller.yaml
|
F: Documentation/devicetree/bindings/interrupt-controller/altr,msi-controller.yaml
|
||||||
F: drivers/pci/controller/pcie-altera-msi.c
|
F: drivers/pci/controller/pcie-altera-msi.c
|
||||||
|
|
||||||
|
|
@ -20509,7 +20491,7 @@ F: Documentation/devicetree/bindings/pci/hisilicon,kirin-pcie.yaml
|
||||||
F: drivers/pci/controller/dwc/pcie-kirin.c
|
F: drivers/pci/controller/dwc/pcie-kirin.c
|
||||||
|
|
||||||
PCIE DRIVER FOR HISILICON STB
|
PCIE DRIVER FOR HISILICON STB
|
||||||
M: Shawn Guo <shawn.guo@linaro.org>
|
M: Shawn Guo <shawnguo@kernel.org>
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/pci/hisilicon-histb-pcie.txt
|
F: Documentation/devicetree/bindings/pci/hisilicon-histb-pcie.txt
|
||||||
|
|
@ -21458,9 +21440,8 @@ S: Supported
|
||||||
F: drivers/scsi/qedi/
|
F: drivers/scsi/qedi/
|
||||||
|
|
||||||
QLOGIC QL4xxx ETHERNET DRIVER
|
QLOGIC QL4xxx ETHERNET DRIVER
|
||||||
M: Manish Chopra <manishc@marvell.com>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Orphan
|
||||||
F: drivers/net/ethernet/qlogic/qed/
|
F: drivers/net/ethernet/qlogic/qed/
|
||||||
F: drivers/net/ethernet/qlogic/qede/
|
F: drivers/net/ethernet/qlogic/qede/
|
||||||
F: include/linux/qed/
|
F: include/linux/qed/
|
||||||
|
|
@ -21695,7 +21676,7 @@ S: Maintained
|
||||||
F: drivers/net/ethernet/qualcomm/emac/
|
F: drivers/net/ethernet/qualcomm/emac/
|
||||||
|
|
||||||
QUALCOMM ETHQOS ETHERNET DRIVER
|
QUALCOMM ETHQOS ETHERNET DRIVER
|
||||||
M: Vinod Koul <vkoul@kernel.org>
|
M: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: linux-arm-msm@vger.kernel.org
|
L: linux-arm-msm@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
@ -21955,7 +21936,7 @@ F: drivers/media/radio/radio-tea5777.c
|
||||||
|
|
||||||
RADOS BLOCK DEVICE (RBD)
|
RADOS BLOCK DEVICE (RBD)
|
||||||
M: Ilya Dryomov <idryomov@gmail.com>
|
M: Ilya Dryomov <idryomov@gmail.com>
|
||||||
R: Dongsheng Yang <dongsheng.yang@easystack.cn>
|
R: Dongsheng Yang <dongsheng.yang@linux.dev>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
|
|
@ -22284,6 +22265,16 @@ L: linux-wireless@vger.kernel.org
|
||||||
S: Orphan
|
S: Orphan
|
||||||
F: drivers/net/wireless/rsi/
|
F: drivers/net/wireless/rsi/
|
||||||
|
|
||||||
|
RELAY
|
||||||
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
|
M: Jens Axboe <axboe@kernel.dk>
|
||||||
|
M: Jason Xing <kernelxing@tencent.com>
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/filesystems/relay.rst
|
||||||
|
F: include/linux/relay.h
|
||||||
|
F: kernel/relay.c
|
||||||
|
|
||||||
REGISTER MAP ABSTRACTION
|
REGISTER MAP ABSTRACTION
|
||||||
M: Mark Brown <broonie@kernel.org>
|
M: Mark Brown <broonie@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
|
|
@ -23173,8 +23164,8 @@ K: \b(?i:rust)\b
|
||||||
|
|
||||||
RUST [ALLOC]
|
RUST [ALLOC]
|
||||||
M: Danilo Krummrich <dakr@kernel.org>
|
M: Danilo Krummrich <dakr@kernel.org>
|
||||||
R: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
|
R: Lorenzo Stoakes <ljs@kernel.org>
|
||||||
R: Vlastimil Babka <vbabka@suse.cz>
|
R: Vlastimil Babka <vbabka@kernel.org>
|
||||||
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||||
R: Uladzislau Rezki <urezki@gmail.com>
|
R: Uladzislau Rezki <urezki@gmail.com>
|
||||||
L: rust-for-linux@vger.kernel.org
|
L: rust-for-linux@vger.kernel.org
|
||||||
|
|
@ -24337,7 +24328,6 @@ F: Documentation/devicetree/bindings/interrupt-controller/kontron,sl28cpld-intc.
|
||||||
F: Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
|
F: Documentation/devicetree/bindings/pwm/kontron,sl28cpld-pwm.yaml
|
||||||
F: Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
|
F: Documentation/devicetree/bindings/watchdog/kontron,sl28cpld-wdt.yaml
|
||||||
F: drivers/gpio/gpio-sl28cpld.c
|
F: drivers/gpio/gpio-sl28cpld.c
|
||||||
F: drivers/hwmon/sa67mcu-hwmon.c
|
|
||||||
F: drivers/hwmon/sl28cpld-hwmon.c
|
F: drivers/hwmon/sl28cpld-hwmon.c
|
||||||
F: drivers/irqchip/irq-sl28cpld.c
|
F: drivers/irqchip/irq-sl28cpld.c
|
||||||
F: drivers/pwm/pwm-sl28cpld.c
|
F: drivers/pwm/pwm-sl28cpld.c
|
||||||
|
|
@ -24350,12 +24340,13 @@ F: Documentation/devicetree/bindings/nvmem/layouts/kontron,sl28-vpd.yaml
|
||||||
F: drivers/nvmem/layouts/sl28vpd.c
|
F: drivers/nvmem/layouts/sl28vpd.c
|
||||||
|
|
||||||
SLAB ALLOCATOR
|
SLAB ALLOCATOR
|
||||||
M: Vlastimil Babka <vbabka@suse.cz>
|
M: Vlastimil Babka <vbabka@kernel.org>
|
||||||
|
M: Harry Yoo <harry.yoo@oracle.com>
|
||||||
M: Andrew Morton <akpm@linux-foundation.org>
|
M: Andrew Morton <akpm@linux-foundation.org>
|
||||||
|
R: Hao Li <hao.li@linux.dev>
|
||||||
R: Christoph Lameter <cl@gentwo.org>
|
R: Christoph Lameter <cl@gentwo.org>
|
||||||
R: David Rientjes <rientjes@google.com>
|
R: David Rientjes <rientjes@google.com>
|
||||||
R: Roman Gushchin <roman.gushchin@linux.dev>
|
R: Roman Gushchin <roman.gushchin@linux.dev>
|
||||||
R: Harry Yoo <harry.yoo@oracle.com>
|
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git
|
||||||
|
|
@ -25766,6 +25757,7 @@ F: include/net/pkt_cls.h
|
||||||
F: include/net/pkt_sched.h
|
F: include/net/pkt_sched.h
|
||||||
F: include/net/sch_priv.h
|
F: include/net/sch_priv.h
|
||||||
F: include/net/tc_act/
|
F: include/net/tc_act/
|
||||||
|
F: include/net/tc_wrapper.h
|
||||||
F: include/uapi/linux/pkt_cls.h
|
F: include/uapi/linux/pkt_cls.h
|
||||||
F: include/uapi/linux/pkt_sched.h
|
F: include/uapi/linux/pkt_sched.h
|
||||||
F: include/uapi/linux/tc_act/
|
F: include/uapi/linux/tc_act/
|
||||||
|
|
@ -26217,7 +26209,7 @@ F: drivers/media/radio/radio-raremono.c
|
||||||
|
|
||||||
THERMAL
|
THERMAL
|
||||||
M: Rafael J. Wysocki <rafael@kernel.org>
|
M: Rafael J. Wysocki <rafael@kernel.org>
|
||||||
M: Daniel Lezcano <daniel.lezcano@linaro.org>
|
M: Daniel Lezcano <daniel.lezcano@kernel.org>
|
||||||
R: Zhang Rui <rui.zhang@intel.com>
|
R: Zhang Rui <rui.zhang@intel.com>
|
||||||
R: Lukasz Luba <lukasz.luba@arm.com>
|
R: Lukasz Luba <lukasz.luba@arm.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
|
|
@ -26247,7 +26239,7 @@ F: drivers/thermal/amlogic_thermal.c
|
||||||
|
|
||||||
THERMAL/CPU_COOLING
|
THERMAL/CPU_COOLING
|
||||||
M: Amit Daniel Kachhap <amit.kachhap@gmail.com>
|
M: Amit Daniel Kachhap <amit.kachhap@gmail.com>
|
||||||
M: Daniel Lezcano <daniel.lezcano@linaro.org>
|
M: Daniel Lezcano <daniel.lezcano@kernel.org>
|
||||||
M: Viresh Kumar <viresh.kumar@linaro.org>
|
M: Viresh Kumar <viresh.kumar@linaro.org>
|
||||||
R: Lukasz Luba <lukasz.luba@arm.com>
|
R: Lukasz Luba <lukasz.luba@arm.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
|
|
@ -29186,7 +29178,7 @@ K: zstd
|
||||||
|
|
||||||
ZSWAP COMPRESSED SWAP CACHING
|
ZSWAP COMPRESSED SWAP CACHING
|
||||||
M: Johannes Weiner <hannes@cmpxchg.org>
|
M: Johannes Weiner <hannes@cmpxchg.org>
|
||||||
M: Yosry Ahmed <yosry.ahmed@linux.dev>
|
M: Yosry Ahmed <yosry@kernel.org>
|
||||||
M: Nhat Pham <nphamcs@gmail.com>
|
M: Nhat Pham <nphamcs@gmail.com>
|
||||||
R: Chengming Zhou <chengming.zhou@linux.dev>
|
R: Chengming Zhou <chengming.zhou@linux.dev>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
|
|
|
||||||
14
Makefile
14
Makefile
|
|
@ -2,7 +2,7 @@
|
||||||
VERSION = 7
|
VERSION = 7
|
||||||
PATCHLEVEL = 0
|
PATCHLEVEL = 0
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION = -rc4
|
||||||
NAME = Baby Opossum Posse
|
NAME = Baby Opossum Posse
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
@ -476,6 +476,7 @@ KBUILD_USERLDFLAGS := $(USERLDFLAGS)
|
||||||
export rust_common_flags := --edition=2021 \
|
export rust_common_flags := --edition=2021 \
|
||||||
-Zbinary_dep_depinfo=y \
|
-Zbinary_dep_depinfo=y \
|
||||||
-Astable_features \
|
-Astable_features \
|
||||||
|
-Aunused_features \
|
||||||
-Dnon_ascii_idents \
|
-Dnon_ascii_idents \
|
||||||
-Dunsafe_op_in_unsafe_fn \
|
-Dunsafe_op_in_unsafe_fn \
|
||||||
-Wmissing_docs \
|
-Wmissing_docs \
|
||||||
|
|
@ -1113,6 +1114,9 @@ KBUILD_CFLAGS += -fno-builtin-wcslen
|
||||||
# change __FILE__ to the relative path to the source directory
|
# change __FILE__ to the relative path to the source directory
|
||||||
ifdef building_out_of_srctree
|
ifdef building_out_of_srctree
|
||||||
KBUILD_CPPFLAGS += -fmacro-prefix-map=$(srcroot)/=
|
KBUILD_CPPFLAGS += -fmacro-prefix-map=$(srcroot)/=
|
||||||
|
ifeq ($(call rustc-option-yn, --remap-path-scope=macro),y)
|
||||||
|
KBUILD_RUSTFLAGS += --remap-path-prefix=$(srcroot)/= --remap-path-scope=macro
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# include additional Makefiles when needed
|
# include additional Makefiles when needed
|
||||||
|
|
@ -1497,13 +1501,13 @@ ifneq ($(wildcard $(resolve_btfids_O)),)
|
||||||
$(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean
|
$(Q)$(MAKE) -sC $(srctree)/tools/bpf/resolve_btfids O=$(resolve_btfids_O) clean
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PHONY += objtool_clean
|
PHONY += objtool_clean objtool_mrproper
|
||||||
|
|
||||||
objtool_O = $(abspath $(objtree))/tools/objtool
|
objtool_O = $(abspath $(objtree))/tools/objtool
|
||||||
|
|
||||||
objtool_clean:
|
objtool_clean objtool_mrproper:
|
||||||
ifneq ($(wildcard $(objtool_O)),)
|
ifneq ($(wildcard $(objtool_O)),)
|
||||||
$(Q)$(MAKE) -sC $(abs_srctree)/tools/objtool O=$(objtool_O) srctree=$(abs_srctree) clean
|
$(Q)$(MAKE) -sC $(abs_srctree)/tools/objtool O=$(objtool_O) srctree=$(abs_srctree) $(patsubst objtool_%,%,$@)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
tools/: FORCE
|
tools/: FORCE
|
||||||
|
|
@ -1686,7 +1690,7 @@ PHONY += $(mrproper-dirs) mrproper
|
||||||
$(mrproper-dirs):
|
$(mrproper-dirs):
|
||||||
$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
|
$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
|
||||||
|
|
||||||
mrproper: clean $(mrproper-dirs)
|
mrproper: clean objtool_mrproper $(mrproper-dirs)
|
||||||
$(call cmd,rmfiles)
|
$(call cmd,rmfiles)
|
||||||
@find . $(RCS_FIND_IGNORE) \
|
@find . $(RCS_FIND_IGNORE) \
|
||||||
\( -name '*.rmeta' \) \
|
\( -name '*.rmeta' \) \
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
DISCARDS
|
DISCARDS
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,7 @@ SECTIONS
|
||||||
_end = . ;
|
_end = . ;
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
DISCARDS
|
DISCARDS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ SECTIONS
|
||||||
COMMON_DISCARDS
|
COMMON_DISCARDS
|
||||||
*(.ARM.exidx*)
|
*(.ARM.exidx*)
|
||||||
*(.ARM.extab*)
|
*(.ARM.extab*)
|
||||||
|
*(.modinfo)
|
||||||
*(.note.*)
|
*(.note.*)
|
||||||
*(.rel.*)
|
*(.rel.*)
|
||||||
*(.printk_index)
|
*(.printk_index)
|
||||||
|
|
|
||||||
|
|
@ -154,6 +154,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ARM_DETAILS
|
ARM_DETAILS
|
||||||
|
|
||||||
ARM_ASSERTS
|
ARM_ASSERTS
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ARM_DETAILS
|
ARM_DETAILS
|
||||||
|
|
||||||
ARM_ASSERTS
|
ARM_ASSERTS
|
||||||
|
|
|
||||||
|
|
@ -91,8 +91,9 @@ __XCHG_GEN(_mb)
|
||||||
#define __xchg_wrapper(sfx, ptr, x) \
|
#define __xchg_wrapper(sfx, ptr, x) \
|
||||||
({ \
|
({ \
|
||||||
__typeof__(*(ptr)) __ret; \
|
__typeof__(*(ptr)) __ret; \
|
||||||
__ret = (__typeof__(*(ptr))) \
|
__ret = (__force __typeof__(*(ptr))) \
|
||||||
__arch_xchg##sfx((unsigned long)(x), (ptr), sizeof(*(ptr))); \
|
__arch_xchg##sfx((__force unsigned long)(x), (ptr), \
|
||||||
|
sizeof(*(ptr))); \
|
||||||
__ret; \
|
__ret; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -175,9 +176,10 @@ __CMPXCHG_GEN(_mb)
|
||||||
#define __cmpxchg_wrapper(sfx, ptr, o, n) \
|
#define __cmpxchg_wrapper(sfx, ptr, o, n) \
|
||||||
({ \
|
({ \
|
||||||
__typeof__(*(ptr)) __ret; \
|
__typeof__(*(ptr)) __ret; \
|
||||||
__ret = (__typeof__(*(ptr))) \
|
__ret = (__force __typeof__(*(ptr))) \
|
||||||
__cmpxchg##sfx((ptr), (unsigned long)(o), \
|
__cmpxchg##sfx((ptr), (__force unsigned long)(o), \
|
||||||
(unsigned long)(n), sizeof(*(ptr))); \
|
(__force unsigned long)(n), \
|
||||||
|
sizeof(*(ptr))); \
|
||||||
__ret; \
|
__ret; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -264,19 +264,33 @@ __iowrite64_copy(void __iomem *to, const void *from, size_t count)
|
||||||
typedef int (*ioremap_prot_hook_t)(phys_addr_t phys_addr, size_t size,
|
typedef int (*ioremap_prot_hook_t)(phys_addr_t phys_addr, size_t size,
|
||||||
pgprot_t *prot);
|
pgprot_t *prot);
|
||||||
int arm64_ioremap_prot_hook_register(const ioremap_prot_hook_t hook);
|
int arm64_ioremap_prot_hook_register(const ioremap_prot_hook_t hook);
|
||||||
|
void __iomem *__ioremap_prot(phys_addr_t phys, size_t size, pgprot_t prot);
|
||||||
|
|
||||||
|
static inline void __iomem *ioremap_prot(phys_addr_t phys, size_t size,
|
||||||
|
pgprot_t user_prot)
|
||||||
|
{
|
||||||
|
pgprot_t prot;
|
||||||
|
ptdesc_t user_prot_val = pgprot_val(user_prot);
|
||||||
|
|
||||||
|
if (WARN_ON_ONCE(!(user_prot_val & PTE_USER)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
prot = __pgprot_modify(PAGE_KERNEL, PTE_ATTRINDX_MASK,
|
||||||
|
user_prot_val & PTE_ATTRINDX_MASK);
|
||||||
|
return __ioremap_prot(phys, size, prot);
|
||||||
|
}
|
||||||
#define ioremap_prot ioremap_prot
|
#define ioremap_prot ioremap_prot
|
||||||
|
|
||||||
#define _PAGE_IOREMAP PROT_DEVICE_nGnRE
|
#define ioremap(addr, size) \
|
||||||
|
__ioremap_prot((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
|
||||||
#define ioremap_wc(addr, size) \
|
#define ioremap_wc(addr, size) \
|
||||||
ioremap_prot((addr), (size), __pgprot(PROT_NORMAL_NC))
|
__ioremap_prot((addr), (size), __pgprot(PROT_NORMAL_NC))
|
||||||
#define ioremap_np(addr, size) \
|
#define ioremap_np(addr, size) \
|
||||||
ioremap_prot((addr), (size), __pgprot(PROT_DEVICE_nGnRnE))
|
__ioremap_prot((addr), (size), __pgprot(PROT_DEVICE_nGnRnE))
|
||||||
|
|
||||||
|
|
||||||
#define ioremap_encrypted(addr, size) \
|
#define ioremap_encrypted(addr, size) \
|
||||||
ioremap_prot((addr), (size), PAGE_KERNEL)
|
__ioremap_prot((addr), (size), PAGE_KERNEL)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* io{read,write}{16,32,64}be() macros
|
* io{read,write}{16,32,64}be() macros
|
||||||
|
|
@ -297,7 +311,7 @@ static inline void __iomem *ioremap_cache(phys_addr_t addr, size_t size)
|
||||||
if (pfn_is_map_memory(__phys_to_pfn(addr)))
|
if (pfn_is_map_memory(__phys_to_pfn(addr)))
|
||||||
return (void __iomem *)__phys_to_virt(addr);
|
return (void __iomem *)__phys_to_virt(addr);
|
||||||
|
|
||||||
return ioremap_prot(addr, size, __pgprot(PROT_NORMAL));
|
return __ioremap_prot(addr, size, __pgprot(PROT_NORMAL));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -784,6 +784,9 @@ struct kvm_host_data {
|
||||||
/* Number of debug breakpoints/watchpoints for this CPU (minus 1) */
|
/* Number of debug breakpoints/watchpoints for this CPU (minus 1) */
|
||||||
unsigned int debug_brps;
|
unsigned int debug_brps;
|
||||||
unsigned int debug_wrps;
|
unsigned int debug_wrps;
|
||||||
|
|
||||||
|
/* Last vgic_irq part of the AP list recorded in an LR */
|
||||||
|
struct vgic_irq *last_lr_irq;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kvm_host_psci_config {
|
struct kvm_host_psci_config {
|
||||||
|
|
@ -1616,7 +1619,8 @@ void kvm_set_vm_id_reg(struct kvm *kvm, u32 reg, u64 val);
|
||||||
(kvm_has_feat((k), ID_AA64MMFR3_EL1, S1PIE, IMP))
|
(kvm_has_feat((k), ID_AA64MMFR3_EL1, S1PIE, IMP))
|
||||||
|
|
||||||
#define kvm_has_s1poe(k) \
|
#define kvm_has_s1poe(k) \
|
||||||
(kvm_has_feat((k), ID_AA64MMFR3_EL1, S1POE, IMP))
|
(system_supports_poe() && \
|
||||||
|
kvm_has_feat((k), ID_AA64MMFR3_EL1, S1POE, IMP))
|
||||||
|
|
||||||
#define kvm_has_ras(k) \
|
#define kvm_has_ras(k) \
|
||||||
(kvm_has_feat((k), ID_AA64PFR0_EL1, RAS, IMP))
|
(kvm_has_feat((k), ID_AA64PFR0_EL1, RAS, IMP))
|
||||||
|
|
|
||||||
|
|
@ -397,6 +397,8 @@ int kvm_vcpu_allocate_vncr_tlb(struct kvm_vcpu *vcpu);
|
||||||
int kvm_handle_vncr_abort(struct kvm_vcpu *vcpu);
|
int kvm_handle_vncr_abort(struct kvm_vcpu *vcpu);
|
||||||
void kvm_handle_s1e2_tlbi(struct kvm_vcpu *vcpu, u32 inst, u64 val);
|
void kvm_handle_s1e2_tlbi(struct kvm_vcpu *vcpu, u32 inst, u64 val);
|
||||||
|
|
||||||
|
u16 get_asid_by_regime(struct kvm_vcpu *vcpu, enum trans_regime regime);
|
||||||
|
|
||||||
#define vncr_fixmap(c) \
|
#define vncr_fixmap(c) \
|
||||||
({ \
|
({ \
|
||||||
u32 __c = (c); \
|
u32 __c = (c); \
|
||||||
|
|
|
||||||
|
|
@ -50,11 +50,11 @@
|
||||||
|
|
||||||
#define _PAGE_DEFAULT (_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL))
|
#define _PAGE_DEFAULT (_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL))
|
||||||
|
|
||||||
#define _PAGE_KERNEL (PROT_NORMAL)
|
#define _PAGE_KERNEL (PROT_NORMAL | PTE_DIRTY)
|
||||||
#define _PAGE_KERNEL_RO ((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY)
|
#define _PAGE_KERNEL_RO ((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY | PTE_DIRTY)
|
||||||
#define _PAGE_KERNEL_ROX ((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY)
|
#define _PAGE_KERNEL_ROX ((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY | PTE_DIRTY)
|
||||||
#define _PAGE_KERNEL_EXEC (PROT_NORMAL & ~PTE_PXN)
|
#define _PAGE_KERNEL_EXEC ((PROT_NORMAL & ~PTE_PXN) | PTE_DIRTY)
|
||||||
#define _PAGE_KERNEL_EXEC_CONT ((PROT_NORMAL & ~PTE_PXN) | PTE_CONT)
|
#define _PAGE_KERNEL_EXEC_CONT ((PROT_NORMAL & ~PTE_PXN) | PTE_CONT | PTE_DIRTY)
|
||||||
|
|
||||||
#define _PAGE_SHARED (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE)
|
#define _PAGE_SHARED (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE)
|
||||||
#define _PAGE_SHARED_EXEC (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_WRITE)
|
#define _PAGE_SHARED_EXEC (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_WRITE)
|
||||||
|
|
@ -164,9 +164,6 @@ static inline bool __pure lpa2_is_enabled(void)
|
||||||
#define _PAGE_GCS (_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_WRITE | PTE_USER)
|
#define _PAGE_GCS (_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_WRITE | PTE_USER)
|
||||||
#define _PAGE_GCS_RO (_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_USER)
|
#define _PAGE_GCS_RO (_PAGE_DEFAULT | PTE_NG | PTE_UXN | PTE_USER)
|
||||||
|
|
||||||
#define PAGE_GCS __pgprot(_PAGE_GCS)
|
|
||||||
#define PAGE_GCS_RO __pgprot(_PAGE_GCS_RO)
|
|
||||||
|
|
||||||
#define PIE_E0 ( \
|
#define PIE_E0 ( \
|
||||||
PIRx_ELx_PERM_PREP(pte_pi_index(_PAGE_GCS), PIE_GCS) | \
|
PIRx_ELx_PERM_PREP(pte_pi_index(_PAGE_GCS), PIE_GCS) | \
|
||||||
PIRx_ELx_PERM_PREP(pte_pi_index(_PAGE_GCS_RO), PIE_R) | \
|
PIRx_ELx_PERM_PREP(pte_pi_index(_PAGE_GCS_RO), PIE_R) | \
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,10 @@
|
||||||
#ifndef _ASM_RUNTIME_CONST_H
|
#ifndef _ASM_RUNTIME_CONST_H
|
||||||
#define _ASM_RUNTIME_CONST_H
|
#define _ASM_RUNTIME_CONST_H
|
||||||
|
|
||||||
|
#ifdef MODULE
|
||||||
|
#error "Cannot use runtime-const infrastructure from modules"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
|
|
||||||
/* Sigh. You can still run arm64 in BE mode */
|
/* Sigh. You can still run arm64 in BE mode */
|
||||||
|
|
|
||||||
|
|
@ -31,19 +31,11 @@
|
||||||
*/
|
*/
|
||||||
#define __TLBI_0(op, arg) asm (ARM64_ASM_PREAMBLE \
|
#define __TLBI_0(op, arg) asm (ARM64_ASM_PREAMBLE \
|
||||||
"tlbi " #op "\n" \
|
"tlbi " #op "\n" \
|
||||||
ALTERNATIVE("nop\n nop", \
|
|
||||||
"dsb ish\n tlbi " #op, \
|
|
||||||
ARM64_WORKAROUND_REPEAT_TLBI, \
|
|
||||||
CONFIG_ARM64_WORKAROUND_REPEAT_TLBI) \
|
|
||||||
: : )
|
: : )
|
||||||
|
|
||||||
#define __TLBI_1(op, arg) asm (ARM64_ASM_PREAMBLE \
|
#define __TLBI_1(op, arg) asm (ARM64_ASM_PREAMBLE \
|
||||||
"tlbi " #op ", %0\n" \
|
"tlbi " #op ", %x0\n" \
|
||||||
ALTERNATIVE("nop\n nop", \
|
: : "rZ" (arg))
|
||||||
"dsb ish\n tlbi " #op ", %0", \
|
|
||||||
ARM64_WORKAROUND_REPEAT_TLBI, \
|
|
||||||
CONFIG_ARM64_WORKAROUND_REPEAT_TLBI) \
|
|
||||||
: : "r" (arg))
|
|
||||||
|
|
||||||
#define __TLBI_N(op, arg, n, ...) __TLBI_##n(op, arg)
|
#define __TLBI_N(op, arg, n, ...) __TLBI_##n(op, arg)
|
||||||
|
|
||||||
|
|
@ -181,6 +173,34 @@ static inline unsigned long get_trans_granule(void)
|
||||||
(__pages >> (5 * (scale) + 1)) - 1; \
|
(__pages >> (5 * (scale) + 1)) - 1; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
#define __repeat_tlbi_sync(op, arg...) \
|
||||||
|
do { \
|
||||||
|
if (!alternative_has_cap_unlikely(ARM64_WORKAROUND_REPEAT_TLBI)) \
|
||||||
|
break; \
|
||||||
|
__tlbi(op, ##arg); \
|
||||||
|
dsb(ish); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete broadcast TLB maintenance issued by the host which invalidates
|
||||||
|
* stage 1 information in the host's own translation regime.
|
||||||
|
*/
|
||||||
|
static inline void __tlbi_sync_s1ish(void)
|
||||||
|
{
|
||||||
|
dsb(ish);
|
||||||
|
__repeat_tlbi_sync(vale1is, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete broadcast TLB maintenance issued by hyp code which invalidates
|
||||||
|
* stage 1 translation information in any translation regime.
|
||||||
|
*/
|
||||||
|
static inline void __tlbi_sync_s1ish_hyp(void)
|
||||||
|
{
|
||||||
|
dsb(ish);
|
||||||
|
__repeat_tlbi_sync(vale2is, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TLB Invalidation
|
* TLB Invalidation
|
||||||
* ================
|
* ================
|
||||||
|
|
@ -279,7 +299,7 @@ static inline void flush_tlb_all(void)
|
||||||
{
|
{
|
||||||
dsb(ishst);
|
dsb(ishst);
|
||||||
__tlbi(vmalle1is);
|
__tlbi(vmalle1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
isb();
|
isb();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -291,7 +311,7 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
|
||||||
asid = __TLBI_VADDR(0, ASID(mm));
|
asid = __TLBI_VADDR(0, ASID(mm));
|
||||||
__tlbi(aside1is, asid);
|
__tlbi(aside1is, asid);
|
||||||
__tlbi_user(aside1is, asid);
|
__tlbi_user(aside1is, asid);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
mmu_notifier_arch_invalidate_secondary_tlbs(mm, 0, -1UL);
|
mmu_notifier_arch_invalidate_secondary_tlbs(mm, 0, -1UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -345,20 +365,11 @@ static inline void flush_tlb_page(struct vm_area_struct *vma,
|
||||||
unsigned long uaddr)
|
unsigned long uaddr)
|
||||||
{
|
{
|
||||||
flush_tlb_page_nosync(vma, uaddr);
|
flush_tlb_page_nosync(vma, uaddr);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool arch_tlbbatch_should_defer(struct mm_struct *mm)
|
static inline bool arch_tlbbatch_should_defer(struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* TLB flush deferral is not required on systems which are affected by
|
|
||||||
* ARM64_WORKAROUND_REPEAT_TLBI, as __tlbi()/__tlbi_user() implementation
|
|
||||||
* will have two consecutive TLBI instructions with a dsb(ish) in between
|
|
||||||
* defeating the purpose (i.e save overall 'dsb ish' cost).
|
|
||||||
*/
|
|
||||||
if (alternative_has_cap_unlikely(ARM64_WORKAROUND_REPEAT_TLBI))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -374,7 +385,7 @@ static inline bool arch_tlbbatch_should_defer(struct mm_struct *mm)
|
||||||
*/
|
*/
|
||||||
static inline void arch_tlbbatch_flush(struct arch_tlbflush_unmap_batch *batch)
|
static inline void arch_tlbbatch_flush(struct arch_tlbflush_unmap_batch *batch)
|
||||||
{
|
{
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -509,7 +520,7 @@ static inline void __flush_tlb_range(struct vm_area_struct *vma,
|
||||||
{
|
{
|
||||||
__flush_tlb_range_nosync(vma->vm_mm, start, end, stride,
|
__flush_tlb_range_nosync(vma->vm_mm, start, end, stride,
|
||||||
last_level, tlb_level);
|
last_level, tlb_level);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void local_flush_tlb_contpte(struct vm_area_struct *vma,
|
static inline void local_flush_tlb_contpte(struct vm_area_struct *vma,
|
||||||
|
|
@ -557,7 +568,7 @@ static inline void flush_tlb_kernel_range(unsigned long start, unsigned long end
|
||||||
dsb(ishst);
|
dsb(ishst);
|
||||||
__flush_tlb_range_op(vaale1is, start, pages, stride, 0,
|
__flush_tlb_range_op(vaale1is, start, pages, stride, 0,
|
||||||
TLBI_TTL_UNKNOWN, false, lpa2_is_enabled());
|
TLBI_TTL_UNKNOWN, false, lpa2_is_enabled());
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
isb();
|
isb();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -571,7 +582,7 @@ static inline void __flush_tlb_kernel_pgtable(unsigned long kaddr)
|
||||||
|
|
||||||
dsb(ishst);
|
dsb(ishst);
|
||||||
__tlbi(vaae1is, addr);
|
__tlbi(vaae1is, addr);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
isb();
|
isb();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -377,7 +377,7 @@ void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size)
|
||||||
prot = __acpi_get_writethrough_mem_attribute();
|
prot = __acpi_get_writethrough_mem_attribute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ioremap_prot(phys, size, prot);
|
return __ioremap_prot(phys, size, prot);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -2345,6 +2345,15 @@ static bool can_trap_icv_dir_el1(const struct arm64_cpu_capabilities *entry,
|
||||||
!is_midr_in_range_list(has_vgic_v3))
|
!is_midr_in_range_list(has_vgic_v3))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* pKVM prevents late onlining of CPUs. This means that whatever
|
||||||
|
* state the capability is in after deprivilege cannot be affected
|
||||||
|
* by a new CPU booting -- this is garanteed to be a CPU we have
|
||||||
|
* already seen, and the cap is therefore unchanged.
|
||||||
|
*/
|
||||||
|
if (system_capabilities_finalized() && is_protected_kvm_enabled())
|
||||||
|
return cpus_have_final_cap(ARM64_HAS_ICH_HCR_EL2_TDIR);
|
||||||
|
|
||||||
if (is_kernel_in_hyp_mode())
|
if (is_kernel_in_hyp_mode())
|
||||||
res.a1 = read_sysreg_s(SYS_ICH_VTR_EL2);
|
res.a1 = read_sysreg_s(SYS_ICH_VTR_EL2);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ __do_compat_cache_op(unsigned long start, unsigned long end)
|
||||||
* We pick the reserved-ASID to minimise the impact.
|
* We pick the reserved-ASID to minimise the impact.
|
||||||
*/
|
*/
|
||||||
__tlbi(aside1is, __TLBI_VADDR(0, 0));
|
__tlbi(aside1is, __TLBI_VADDR(0, 0));
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish();
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = caches_clean_inval_user_pou(start, start + chunk);
|
ret = caches_clean_inval_user_pou(start, start + chunk);
|
||||||
|
|
|
||||||
|
|
@ -400,16 +400,25 @@ static inline
|
||||||
int counters_read_on_cpu(int cpu, smp_call_func_t func, u64 *val)
|
int counters_read_on_cpu(int cpu, smp_call_func_t func, u64 *val)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Abort call on counterless CPU or when interrupts are
|
* Abort call on counterless CPU.
|
||||||
* disabled - can lead to deadlock in smp sync call.
|
|
||||||
*/
|
*/
|
||||||
if (!cpu_has_amu_feat(cpu))
|
if (!cpu_has_amu_feat(cpu))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (WARN_ON_ONCE(irqs_disabled()))
|
if (irqs_disabled()) {
|
||||||
return -EPERM;
|
/*
|
||||||
|
* When IRQs are disabled (tick path: sched_tick ->
|
||||||
smp_call_function_single(cpu, func, val, 1);
|
* topology_scale_freq_tick or cppc_scale_freq_tick), only local
|
||||||
|
* CPU counter reads are allowed. Remote CPU counter read would
|
||||||
|
* require smp_call_function_single() which is unsafe with IRQs
|
||||||
|
* disabled.
|
||||||
|
*/
|
||||||
|
if (WARN_ON_ONCE(cpu != smp_processor_id()))
|
||||||
|
return -EPERM;
|
||||||
|
func(val);
|
||||||
|
} else {
|
||||||
|
smp_call_function_single(cpu, func, val, 1);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -349,6 +349,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
HEAD_SYMBOLS
|
HEAD_SYMBOLS
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ menuconfig KVM
|
||||||
bool "Kernel-based Virtual Machine (KVM) support"
|
bool "Kernel-based Virtual Machine (KVM) support"
|
||||||
select KVM_COMMON
|
select KVM_COMMON
|
||||||
select KVM_GENERIC_HARDWARE_ENABLING
|
select KVM_GENERIC_HARDWARE_ENABLING
|
||||||
select KVM_GENERIC_MMU_NOTIFIER
|
|
||||||
select HAVE_KVM_CPU_RELAX_INTERCEPT
|
select HAVE_KVM_CPU_RELAX_INTERCEPT
|
||||||
select KVM_MMIO
|
select KVM_MMIO
|
||||||
select KVM_GENERIC_DIRTYLOG_READ_PROTECT
|
select KVM_GENERIC_DIRTYLOG_READ_PROTECT
|
||||||
|
|
|
||||||
|
|
@ -358,7 +358,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
|
||||||
break;
|
break;
|
||||||
case KVM_CAP_IOEVENTFD:
|
case KVM_CAP_IOEVENTFD:
|
||||||
case KVM_CAP_USER_MEMORY:
|
case KVM_CAP_USER_MEMORY:
|
||||||
case KVM_CAP_SYNC_MMU:
|
|
||||||
case KVM_CAP_DESTROY_MEMORY_REGION_WORKS:
|
case KVM_CAP_DESTROY_MEMORY_REGION_WORKS:
|
||||||
case KVM_CAP_ONE_REG:
|
case KVM_CAP_ONE_REG:
|
||||||
case KVM_CAP_ARM_PSCI:
|
case KVM_CAP_ARM_PSCI:
|
||||||
|
|
|
||||||
|
|
@ -540,31 +540,8 @@ static int walk_s1(struct kvm_vcpu *vcpu, struct s1_walk_info *wi,
|
||||||
wr->pa |= va & GENMASK_ULL(va_bottom - 1, 0);
|
wr->pa |= va & GENMASK_ULL(va_bottom - 1, 0);
|
||||||
|
|
||||||
wr->nG = (wi->regime != TR_EL2) && (desc & PTE_NG);
|
wr->nG = (wi->regime != TR_EL2) && (desc & PTE_NG);
|
||||||
if (wr->nG) {
|
if (wr->nG)
|
||||||
u64 asid_ttbr, tcr;
|
wr->asid = get_asid_by_regime(vcpu, wi->regime);
|
||||||
|
|
||||||
switch (wi->regime) {
|
|
||||||
case TR_EL10:
|
|
||||||
tcr = vcpu_read_sys_reg(vcpu, TCR_EL1);
|
|
||||||
asid_ttbr = ((tcr & TCR_A1) ?
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR1_EL1) :
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR0_EL1));
|
|
||||||
break;
|
|
||||||
case TR_EL20:
|
|
||||||
tcr = vcpu_read_sys_reg(vcpu, TCR_EL2);
|
|
||||||
asid_ttbr = ((tcr & TCR_A1) ?
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR1_EL2) :
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR0_EL2));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
BUG();
|
|
||||||
}
|
|
||||||
|
|
||||||
wr->asid = FIELD_GET(TTBR_ASID_MASK, asid_ttbr);
|
|
||||||
if (!kvm_has_feat_enum(vcpu->kvm, ID_AA64MMFR0_EL1, ASIDBITS, 16) ||
|
|
||||||
!(tcr & TCR_ASID16))
|
|
||||||
wr->asid &= GENMASK(7, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
@ -1527,8 +1504,6 @@ int __kvm_at_s1e2(struct kvm_vcpu *vcpu, u32 op, u64 vaddr)
|
||||||
fail = true;
|
fail = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
isb();
|
|
||||||
|
|
||||||
if (!fail)
|
if (!fail)
|
||||||
par = read_sysreg_par();
|
par = read_sysreg_par();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|
||||||
const struct _kvm_stats_desc kvm_vm_stats_desc[] = {
|
const struct kvm_stats_desc kvm_vm_stats_desc[] = {
|
||||||
KVM_GENERIC_VM_STATS()
|
KVM_GENERIC_VM_STATS()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -42,7 +42,7 @@ const struct kvm_stats_header kvm_vm_stats_header = {
|
||||||
sizeof(kvm_vm_stats_desc),
|
sizeof(kvm_vm_stats_desc),
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
const struct kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
||||||
KVM_GENERIC_VCPU_STATS(),
|
KVM_GENERIC_VCPU_STATS(),
|
||||||
STATS_DESC_COUNTER(VCPU, hvc_exit_stat),
|
STATS_DESC_COUNTER(VCPU, hvc_exit_stat),
|
||||||
STATS_DESC_COUNTER(VCPU, wfe_exit_stat),
|
STATS_DESC_COUNTER(VCPU, wfe_exit_stat),
|
||||||
|
|
|
||||||
|
|
@ -518,7 +518,7 @@ static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range)
|
||||||
granule = kvm_granule_size(level);
|
granule = kvm_granule_size(level);
|
||||||
cur.start = ALIGN_DOWN(addr, granule);
|
cur.start = ALIGN_DOWN(addr, granule);
|
||||||
cur.end = cur.start + granule;
|
cur.end = cur.start + granule;
|
||||||
if (!range_included(&cur, range))
|
if (!range_included(&cur, range) && level < KVM_PGTABLE_LAST_LEVEL)
|
||||||
continue;
|
continue;
|
||||||
*range = cur;
|
*range = cur;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@ static void fixmap_clear_slot(struct hyp_fixmap_slot *slot)
|
||||||
*/
|
*/
|
||||||
dsb(ishst);
|
dsb(ishst);
|
||||||
__tlbi_level(vale2is, __TLBI_VADDR(addr, 0), level);
|
__tlbi_level(vale2is, __TLBI_VADDR(addr, 0), level);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -342,6 +342,7 @@ static void pkvm_init_features_from_host(struct pkvm_hyp_vm *hyp_vm, const struc
|
||||||
/* No restrictions for non-protected VMs. */
|
/* No restrictions for non-protected VMs. */
|
||||||
if (!kvm_vm_is_protected(kvm)) {
|
if (!kvm_vm_is_protected(kvm)) {
|
||||||
hyp_vm->kvm.arch.flags = host_arch_flags;
|
hyp_vm->kvm.arch.flags = host_arch_flags;
|
||||||
|
hyp_vm->kvm.arch.flags &= ~BIT_ULL(KVM_ARCH_FLAG_ID_REGS_INITIALIZED);
|
||||||
|
|
||||||
bitmap_copy(kvm->arch.vcpu_features,
|
bitmap_copy(kvm->arch.vcpu_features,
|
||||||
host_kvm->arch.vcpu_features,
|
host_kvm->arch.vcpu_features,
|
||||||
|
|
@ -391,7 +392,7 @@ static void unpin_host_sve_state(struct pkvm_hyp_vcpu *hyp_vcpu)
|
||||||
if (!vcpu_has_feature(&hyp_vcpu->vcpu, KVM_ARM_VCPU_SVE))
|
if (!vcpu_has_feature(&hyp_vcpu->vcpu, KVM_ARM_VCPU_SVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sve_state = kern_hyp_va(hyp_vcpu->vcpu.arch.sve_state);
|
sve_state = hyp_vcpu->vcpu.arch.sve_state;
|
||||||
hyp_unpin_shared_mem(sve_state,
|
hyp_unpin_shared_mem(sve_state,
|
||||||
sve_state + vcpu_sve_state_size(&hyp_vcpu->vcpu));
|
sve_state + vcpu_sve_state_size(&hyp_vcpu->vcpu));
|
||||||
}
|
}
|
||||||
|
|
@ -471,6 +472,35 @@ err:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vm_copy_id_regs(struct pkvm_hyp_vcpu *hyp_vcpu)
|
||||||
|
{
|
||||||
|
struct pkvm_hyp_vm *hyp_vm = pkvm_hyp_vcpu_to_hyp_vm(hyp_vcpu);
|
||||||
|
const struct kvm *host_kvm = hyp_vm->host_kvm;
|
||||||
|
struct kvm *kvm = &hyp_vm->kvm;
|
||||||
|
|
||||||
|
if (!test_bit(KVM_ARCH_FLAG_ID_REGS_INITIALIZED, &host_kvm->arch.flags))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (test_and_set_bit(KVM_ARCH_FLAG_ID_REGS_INITIALIZED, &kvm->arch.flags))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
memcpy(kvm->arch.id_regs, host_kvm->arch.id_regs, sizeof(kvm->arch.id_regs));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int pkvm_vcpu_init_sysregs(struct pkvm_hyp_vcpu *hyp_vcpu)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (pkvm_hyp_vcpu_is_protected(hyp_vcpu))
|
||||||
|
kvm_init_pvm_id_regs(&hyp_vcpu->vcpu);
|
||||||
|
else
|
||||||
|
ret = vm_copy_id_regs(hyp_vcpu);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu,
|
static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu,
|
||||||
struct pkvm_hyp_vm *hyp_vm,
|
struct pkvm_hyp_vm *hyp_vm,
|
||||||
struct kvm_vcpu *host_vcpu)
|
struct kvm_vcpu *host_vcpu)
|
||||||
|
|
@ -490,8 +520,9 @@ static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu,
|
||||||
hyp_vcpu->vcpu.arch.cflags = READ_ONCE(host_vcpu->arch.cflags);
|
hyp_vcpu->vcpu.arch.cflags = READ_ONCE(host_vcpu->arch.cflags);
|
||||||
hyp_vcpu->vcpu.arch.mp_state.mp_state = KVM_MP_STATE_STOPPED;
|
hyp_vcpu->vcpu.arch.mp_state.mp_state = KVM_MP_STATE_STOPPED;
|
||||||
|
|
||||||
if (pkvm_hyp_vcpu_is_protected(hyp_vcpu))
|
ret = pkvm_vcpu_init_sysregs(hyp_vcpu);
|
||||||
kvm_init_pvm_id_regs(&hyp_vcpu->vcpu);
|
if (ret)
|
||||||
|
goto done;
|
||||||
|
|
||||||
ret = pkvm_vcpu_init_traps(hyp_vcpu);
|
ret = pkvm_vcpu_init_traps(hyp_vcpu);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ void __kvm_tlb_flush_vmid_ipa(struct kvm_s2_mmu *mmu,
|
||||||
*/
|
*/
|
||||||
dsb(ish);
|
dsb(ish);
|
||||||
__tlbi(vmalle1is);
|
__tlbi(vmalle1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
|
|
||||||
exit_vmid_context(&cxt);
|
exit_vmid_context(&cxt);
|
||||||
|
|
@ -226,7 +226,7 @@ void __kvm_tlb_flush_vmid_range(struct kvm_s2_mmu *mmu,
|
||||||
|
|
||||||
dsb(ish);
|
dsb(ish);
|
||||||
__tlbi(vmalle1is);
|
__tlbi(vmalle1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
|
|
||||||
exit_vmid_context(&cxt);
|
exit_vmid_context(&cxt);
|
||||||
|
|
@ -240,7 +240,7 @@ void __kvm_tlb_flush_vmid(struct kvm_s2_mmu *mmu)
|
||||||
enter_vmid_context(mmu, &cxt, false);
|
enter_vmid_context(mmu, &cxt, false);
|
||||||
|
|
||||||
__tlbi(vmalls12e1is);
|
__tlbi(vmalls12e1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
|
|
||||||
exit_vmid_context(&cxt);
|
exit_vmid_context(&cxt);
|
||||||
|
|
@ -266,5 +266,5 @@ void __kvm_flush_vm_context(void)
|
||||||
/* Same remark as in enter_vmid_context() */
|
/* Same remark as in enter_vmid_context() */
|
||||||
dsb(ish);
|
dsb(ish);
|
||||||
__tlbi(alle1is);
|
__tlbi(alle1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -501,7 +501,7 @@ static int hyp_unmap_walker(const struct kvm_pgtable_visit_ctx *ctx,
|
||||||
*unmapped += granule;
|
*unmapped += granule;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
mm_ops->put_page(ctx->ptep);
|
mm_ops->put_page(ctx->ptep);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ void __kvm_tlb_flush_vmid_ipa(struct kvm_s2_mmu *mmu,
|
||||||
*/
|
*/
|
||||||
dsb(ish);
|
dsb(ish);
|
||||||
__tlbi(vmalle1is);
|
__tlbi(vmalle1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
|
|
||||||
exit_vmid_context(&cxt);
|
exit_vmid_context(&cxt);
|
||||||
|
|
@ -176,7 +176,7 @@ void __kvm_tlb_flush_vmid_range(struct kvm_s2_mmu *mmu,
|
||||||
|
|
||||||
dsb(ish);
|
dsb(ish);
|
||||||
__tlbi(vmalle1is);
|
__tlbi(vmalle1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
|
|
||||||
exit_vmid_context(&cxt);
|
exit_vmid_context(&cxt);
|
||||||
|
|
@ -192,7 +192,7 @@ void __kvm_tlb_flush_vmid(struct kvm_s2_mmu *mmu)
|
||||||
enter_vmid_context(mmu, &cxt);
|
enter_vmid_context(mmu, &cxt);
|
||||||
|
|
||||||
__tlbi(vmalls12e1is);
|
__tlbi(vmalls12e1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
|
|
||||||
exit_vmid_context(&cxt);
|
exit_vmid_context(&cxt);
|
||||||
|
|
@ -217,7 +217,7 @@ void __kvm_flush_vm_context(void)
|
||||||
{
|
{
|
||||||
dsb(ishst);
|
dsb(ishst);
|
||||||
__tlbi(alle1is);
|
__tlbi(alle1is);
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -358,7 +358,7 @@ int __kvm_tlbi_s1e2(struct kvm_s2_mmu *mmu, u64 va, u64 sys_encoding)
|
||||||
default:
|
default:
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
}
|
}
|
||||||
dsb(ish);
|
__tlbi_sync_s1ish_hyp();
|
||||||
isb();
|
isb();
|
||||||
|
|
||||||
if (mmu)
|
if (mmu)
|
||||||
|
|
|
||||||
|
|
@ -1751,17 +1751,16 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
|
||||||
|
|
||||||
force_pte = (max_map_size == PAGE_SIZE);
|
force_pte = (max_map_size == PAGE_SIZE);
|
||||||
vma_pagesize = min_t(long, vma_pagesize, max_map_size);
|
vma_pagesize = min_t(long, vma_pagesize, max_map_size);
|
||||||
|
vma_shift = __ffs(vma_pagesize);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Both the canonical IPA and fault IPA must be hugepage-aligned to
|
* Both the canonical IPA and fault IPA must be aligned to the
|
||||||
* ensure we find the right PFN and lay down the mapping in the right
|
* mapping size to ensure we find the right PFN and lay down the
|
||||||
* place.
|
* mapping in the right place.
|
||||||
*/
|
*/
|
||||||
if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE) {
|
fault_ipa = ALIGN_DOWN(fault_ipa, vma_pagesize);
|
||||||
fault_ipa &= ~(vma_pagesize - 1);
|
ipa = ALIGN_DOWN(ipa, vma_pagesize);
|
||||||
ipa &= ~(vma_pagesize - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
gfn = ipa >> PAGE_SHIFT;
|
gfn = ipa >> PAGE_SHIFT;
|
||||||
mte_allowed = kvm_vma_mte_allowed(vma);
|
mte_allowed = kvm_vma_mte_allowed(vma);
|
||||||
|
|
@ -1839,10 +1838,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
|
||||||
if (exec_fault && s2_force_noncacheable)
|
if (exec_fault && s2_force_noncacheable)
|
||||||
ret = -ENOEXEC;
|
ret = -ENOEXEC;
|
||||||
|
|
||||||
if (ret) {
|
if (ret)
|
||||||
kvm_release_page_unused(page);
|
goto out_put_page;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Guest performs atomic/exclusive operations on memory with unsupported
|
* Guest performs atomic/exclusive operations on memory with unsupported
|
||||||
|
|
@ -1852,7 +1849,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
|
||||||
*/
|
*/
|
||||||
if (esr_fsc_is_excl_atomic_fault(kvm_vcpu_get_esr(vcpu))) {
|
if (esr_fsc_is_excl_atomic_fault(kvm_vcpu_get_esr(vcpu))) {
|
||||||
kvm_inject_dabt_excl_atomic(vcpu, kvm_vcpu_get_hfar(vcpu));
|
kvm_inject_dabt_excl_atomic(vcpu, kvm_vcpu_get_hfar(vcpu));
|
||||||
return 1;
|
ret = 1;
|
||||||
|
goto out_put_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nested)
|
if (nested)
|
||||||
|
|
@ -1938,6 +1936,10 @@ out_unlock:
|
||||||
mark_page_dirty_in_slot(kvm, memslot, gfn);
|
mark_page_dirty_in_slot(kvm, memslot, gfn);
|
||||||
|
|
||||||
return ret != -EAGAIN ? ret : 0;
|
return ret != -EAGAIN ? ret : 0;
|
||||||
|
|
||||||
|
out_put_page:
|
||||||
|
kvm_release_page_unused(page);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Resolve the access fault by making the page young again. */
|
/* Resolve the access fault by making the page young again. */
|
||||||
|
|
|
||||||
|
|
@ -152,31 +152,31 @@ static int get_ia_size(struct s2_walk_info *wi)
|
||||||
return 64 - wi->t0sz;
|
return 64 - wi->t0sz;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int check_base_s2_limits(struct s2_walk_info *wi,
|
static int check_base_s2_limits(struct kvm_vcpu *vcpu, struct s2_walk_info *wi,
|
||||||
int level, int input_size, int stride)
|
int level, int input_size, int stride)
|
||||||
{
|
{
|
||||||
int start_size, ia_size;
|
int start_size, pa_max;
|
||||||
|
|
||||||
ia_size = get_ia_size(wi);
|
pa_max = kvm_get_pa_bits(vcpu->kvm);
|
||||||
|
|
||||||
/* Check translation limits */
|
/* Check translation limits */
|
||||||
switch (BIT(wi->pgshift)) {
|
switch (BIT(wi->pgshift)) {
|
||||||
case SZ_64K:
|
case SZ_64K:
|
||||||
if (level == 0 || (level == 1 && ia_size <= 42))
|
if (level == 0 || (level == 1 && pa_max <= 42))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
break;
|
break;
|
||||||
case SZ_16K:
|
case SZ_16K:
|
||||||
if (level == 0 || (level == 1 && ia_size <= 40))
|
if (level == 0 || (level == 1 && pa_max <= 40))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
break;
|
break;
|
||||||
case SZ_4K:
|
case SZ_4K:
|
||||||
if (level < 0 || (level == 0 && ia_size <= 42))
|
if (level < 0 || (level == 0 && pa_max <= 42))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check input size limits */
|
/* Check input size limits */
|
||||||
if (input_size > ia_size)
|
if (input_size > pa_max)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
/* Check number of entries in starting level table */
|
/* Check number of entries in starting level table */
|
||||||
|
|
@ -269,16 +269,19 @@ static int walk_nested_s2_pgd(struct kvm_vcpu *vcpu, phys_addr_t ipa,
|
||||||
if (input_size > 48 || input_size < 25)
|
if (input_size > 48 || input_size < 25)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
ret = check_base_s2_limits(wi, level, input_size, stride);
|
ret = check_base_s2_limits(vcpu, wi, level, input_size, stride);
|
||||||
if (WARN_ON(ret))
|
if (WARN_ON(ret)) {
|
||||||
|
out->esr = compute_fsc(0, ESR_ELx_FSC_FAULT);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
base_lower_bound = 3 + input_size - ((3 - level) * stride +
|
base_lower_bound = 3 + input_size - ((3 - level) * stride +
|
||||||
wi->pgshift);
|
wi->pgshift);
|
||||||
base_addr = wi->baddr & GENMASK_ULL(47, base_lower_bound);
|
base_addr = wi->baddr & GENMASK_ULL(47, base_lower_bound);
|
||||||
|
|
||||||
if (check_output_size(wi, base_addr)) {
|
if (check_output_size(wi, base_addr)) {
|
||||||
out->esr = compute_fsc(level, ESR_ELx_FSC_ADDRSZ);
|
/* R_BFHQH */
|
||||||
|
out->esr = compute_fsc(0, ESR_ELx_FSC_ADDRSZ);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -293,8 +296,10 @@ static int walk_nested_s2_pgd(struct kvm_vcpu *vcpu, phys_addr_t ipa,
|
||||||
|
|
||||||
paddr = base_addr | index;
|
paddr = base_addr | index;
|
||||||
ret = read_guest_s2_desc(vcpu, paddr, &desc, wi);
|
ret = read_guest_s2_desc(vcpu, paddr, &desc, wi);
|
||||||
if (ret < 0)
|
if (ret < 0) {
|
||||||
|
out->esr = ESR_ELx_FSC_SEA_TTW(level);
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
new_desc = desc;
|
new_desc = desc;
|
||||||
|
|
||||||
|
|
@ -854,6 +859,33 @@ int kvm_inject_s2_fault(struct kvm_vcpu *vcpu, u64 esr_el2)
|
||||||
return kvm_inject_nested_sync(vcpu, esr_el2);
|
return kvm_inject_nested_sync(vcpu, esr_el2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u16 get_asid_by_regime(struct kvm_vcpu *vcpu, enum trans_regime regime)
|
||||||
|
{
|
||||||
|
enum vcpu_sysreg ttbr_elx;
|
||||||
|
u64 tcr;
|
||||||
|
u16 asid;
|
||||||
|
|
||||||
|
switch (regime) {
|
||||||
|
case TR_EL10:
|
||||||
|
tcr = vcpu_read_sys_reg(vcpu, TCR_EL1);
|
||||||
|
ttbr_elx = (tcr & TCR_A1) ? TTBR1_EL1 : TTBR0_EL1;
|
||||||
|
break;
|
||||||
|
case TR_EL20:
|
||||||
|
tcr = vcpu_read_sys_reg(vcpu, TCR_EL2);
|
||||||
|
ttbr_elx = (tcr & TCR_A1) ? TTBR1_EL2 : TTBR0_EL2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
|
||||||
|
asid = FIELD_GET(TTBRx_EL1_ASID, vcpu_read_sys_reg(vcpu, ttbr_elx));
|
||||||
|
if (!kvm_has_feat_enum(vcpu->kvm, ID_AA64MMFR0_EL1, ASIDBITS, 16) ||
|
||||||
|
!(tcr & TCR_ASID16))
|
||||||
|
asid &= GENMASK(7, 0);
|
||||||
|
|
||||||
|
return asid;
|
||||||
|
}
|
||||||
|
|
||||||
static void invalidate_vncr(struct vncr_tlb *vt)
|
static void invalidate_vncr(struct vncr_tlb *vt)
|
||||||
{
|
{
|
||||||
vt->valid = false;
|
vt->valid = false;
|
||||||
|
|
@ -1154,9 +1186,6 @@ void kvm_arch_flush_shadow_all(struct kvm *kvm)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!kvm->arch.nested_mmus_size)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < kvm->arch.nested_mmus_size; i++) {
|
for (i = 0; i < kvm->arch.nested_mmus_size; i++) {
|
||||||
struct kvm_s2_mmu *mmu = &kvm->arch.nested_mmus[i];
|
struct kvm_s2_mmu *mmu = &kvm->arch.nested_mmus[i];
|
||||||
|
|
||||||
|
|
@ -1336,20 +1365,8 @@ static bool kvm_vncr_tlb_lookup(struct kvm_vcpu *vcpu)
|
||||||
if (read_vncr_el2(vcpu) != vt->gva)
|
if (read_vncr_el2(vcpu) != vt->gva)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (vt->wr.nG) {
|
if (vt->wr.nG)
|
||||||
u64 tcr = vcpu_read_sys_reg(vcpu, TCR_EL2);
|
return get_asid_by_regime(vcpu, TR_EL20) == vt->wr.asid;
|
||||||
u64 ttbr = ((tcr & TCR_A1) ?
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR1_EL2) :
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR0_EL2));
|
|
||||||
u16 asid;
|
|
||||||
|
|
||||||
asid = FIELD_GET(TTBR_ASID_MASK, ttbr);
|
|
||||||
if (!kvm_has_feat_enum(vcpu->kvm, ID_AA64MMFR0_EL1, ASIDBITS, 16) ||
|
|
||||||
!(tcr & TCR_ASID16))
|
|
||||||
asid &= GENMASK(7, 0);
|
|
||||||
|
|
||||||
return asid == vt->wr.asid;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1452,21 +1469,8 @@ static void kvm_map_l1_vncr(struct kvm_vcpu *vcpu)
|
||||||
if (read_vncr_el2(vcpu) != vt->gva)
|
if (read_vncr_el2(vcpu) != vt->gva)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (vt->wr.nG) {
|
if (vt->wr.nG && get_asid_by_regime(vcpu, TR_EL20) != vt->wr.asid)
|
||||||
u64 tcr = vcpu_read_sys_reg(vcpu, TCR_EL2);
|
return;
|
||||||
u64 ttbr = ((tcr & TCR_A1) ?
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR1_EL2) :
|
|
||||||
vcpu_read_sys_reg(vcpu, TTBR0_EL2));
|
|
||||||
u16 asid;
|
|
||||||
|
|
||||||
asid = FIELD_GET(TTBR_ASID_MASK, ttbr);
|
|
||||||
if (!kvm_has_feat_enum(vcpu->kvm, ID_AA64MMFR0_EL1, ASIDBITS, 16) ||
|
|
||||||
!(tcr & TCR_ASID16))
|
|
||||||
asid &= GENMASK(7, 0);
|
|
||||||
|
|
||||||
if (asid != vt->wr.asid)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vt->cpu = smp_processor_id();
|
vt->cpu = smp_processor_id();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1816,6 +1816,9 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,
|
||||||
ID_AA64MMFR3_EL1_SCTLRX |
|
ID_AA64MMFR3_EL1_SCTLRX |
|
||||||
ID_AA64MMFR3_EL1_S1POE |
|
ID_AA64MMFR3_EL1_S1POE |
|
||||||
ID_AA64MMFR3_EL1_S1PIE;
|
ID_AA64MMFR3_EL1_S1PIE;
|
||||||
|
|
||||||
|
if (!system_supports_poe())
|
||||||
|
val &= ~ID_AA64MMFR3_EL1_S1POE;
|
||||||
break;
|
break;
|
||||||
case SYS_ID_MMFR4_EL1:
|
case SYS_ID_MMFR4_EL1:
|
||||||
val &= ~ID_MMFR4_EL1_CCIDX;
|
val &= ~ID_MMFR4_EL1_CCIDX;
|
||||||
|
|
|
||||||
|
|
@ -143,23 +143,6 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
|
||||||
kvm->arch.vgic.in_kernel = true;
|
kvm->arch.vgic.in_kernel = true;
|
||||||
kvm->arch.vgic.vgic_model = type;
|
kvm->arch.vgic.vgic_model = type;
|
||||||
kvm->arch.vgic.implementation_rev = KVM_VGIC_IMP_REV_LATEST;
|
kvm->arch.vgic.implementation_rev = KVM_VGIC_IMP_REV_LATEST;
|
||||||
|
|
||||||
kvm_for_each_vcpu(i, vcpu, kvm) {
|
|
||||||
ret = vgic_allocate_private_irqs_locked(vcpu, type);
|
|
||||||
if (ret)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
kvm_for_each_vcpu(i, vcpu, kvm) {
|
|
||||||
struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
|
|
||||||
kfree(vgic_cpu->private_irqs);
|
|
||||||
vgic_cpu->private_irqs = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
goto out_unlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
kvm->arch.vgic.vgic_dist_base = VGIC_ADDR_UNDEF;
|
kvm->arch.vgic.vgic_dist_base = VGIC_ADDR_UNDEF;
|
||||||
|
|
||||||
aa64pfr0 = kvm_read_vm_id_reg(kvm, SYS_ID_AA64PFR0_EL1) & ~ID_AA64PFR0_EL1_GIC;
|
aa64pfr0 = kvm_read_vm_id_reg(kvm, SYS_ID_AA64PFR0_EL1) & ~ID_AA64PFR0_EL1_GIC;
|
||||||
|
|
@ -176,6 +159,23 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
|
||||||
kvm_set_vm_id_reg(kvm, SYS_ID_AA64PFR0_EL1, aa64pfr0);
|
kvm_set_vm_id_reg(kvm, SYS_ID_AA64PFR0_EL1, aa64pfr0);
|
||||||
kvm_set_vm_id_reg(kvm, SYS_ID_PFR1_EL1, pfr1);
|
kvm_set_vm_id_reg(kvm, SYS_ID_PFR1_EL1, pfr1);
|
||||||
|
|
||||||
|
kvm_for_each_vcpu(i, vcpu, kvm) {
|
||||||
|
ret = vgic_allocate_private_irqs_locked(vcpu, type);
|
||||||
|
if (ret)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
kvm_for_each_vcpu(i, vcpu, kvm) {
|
||||||
|
struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
|
||||||
|
kfree(vgic_cpu->private_irqs);
|
||||||
|
vgic_cpu->private_irqs = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
kvm->arch.vgic.vgic_model = 0;
|
||||||
|
goto out_unlock;
|
||||||
|
}
|
||||||
|
|
||||||
if (type == KVM_DEV_TYPE_ARM_VGIC_V3)
|
if (type == KVM_DEV_TYPE_ARM_VGIC_V3)
|
||||||
kvm->arch.vgic.nassgicap = system_supports_direct_sgis();
|
kvm->arch.vgic.nassgicap = system_supports_direct_sgis();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu)
|
||||||
struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
|
struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
|
||||||
struct vgic_v2_cpu_if *cpuif = &vgic_cpu->vgic_v2;
|
struct vgic_v2_cpu_if *cpuif = &vgic_cpu->vgic_v2;
|
||||||
u32 eoicount = FIELD_GET(GICH_HCR_EOICOUNT, cpuif->vgic_hcr);
|
u32 eoicount = FIELD_GET(GICH_HCR_EOICOUNT, cpuif->vgic_hcr);
|
||||||
struct vgic_irq *irq;
|
struct vgic_irq *irq = *host_data_ptr(last_lr_irq);
|
||||||
|
|
||||||
DEBUG_SPINLOCK_BUG_ON(!irqs_disabled());
|
DEBUG_SPINLOCK_BUG_ON(!irqs_disabled());
|
||||||
|
|
||||||
|
|
@ -123,7 +123,7 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu)
|
||||||
vgic_v2_fold_lr(vcpu, cpuif->vgic_lr[lr]);
|
vgic_v2_fold_lr(vcpu, cpuif->vgic_lr[lr]);
|
||||||
|
|
||||||
/* See the GICv3 equivalent for the EOIcount handling rationale */
|
/* See the GICv3 equivalent for the EOIcount handling rationale */
|
||||||
list_for_each_entry(irq, &vgic_cpu->ap_list_head, ap_list) {
|
list_for_each_entry_continue(irq, &vgic_cpu->ap_list_head, ap_list) {
|
||||||
u32 lr;
|
u32 lr;
|
||||||
|
|
||||||
if (!eoicount) {
|
if (!eoicount) {
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ void vgic_v3_fold_lr_state(struct kvm_vcpu *vcpu)
|
||||||
struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
|
struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
|
||||||
struct vgic_v3_cpu_if *cpuif = &vgic_cpu->vgic_v3;
|
struct vgic_v3_cpu_if *cpuif = &vgic_cpu->vgic_v3;
|
||||||
u32 eoicount = FIELD_GET(ICH_HCR_EL2_EOIcount, cpuif->vgic_hcr);
|
u32 eoicount = FIELD_GET(ICH_HCR_EL2_EOIcount, cpuif->vgic_hcr);
|
||||||
struct vgic_irq *irq;
|
struct vgic_irq *irq = *host_data_ptr(last_lr_irq);
|
||||||
|
|
||||||
DEBUG_SPINLOCK_BUG_ON(!irqs_disabled());
|
DEBUG_SPINLOCK_BUG_ON(!irqs_disabled());
|
||||||
|
|
||||||
|
|
@ -158,12 +158,12 @@ void vgic_v3_fold_lr_state(struct kvm_vcpu *vcpu)
|
||||||
/*
|
/*
|
||||||
* EOIMode=0: use EOIcount to emulate deactivation. We are
|
* EOIMode=0: use EOIcount to emulate deactivation. We are
|
||||||
* guaranteed to deactivate in reverse order of the activation, so
|
* guaranteed to deactivate in reverse order of the activation, so
|
||||||
* just pick one active interrupt after the other in the ap_list,
|
* just pick one active interrupt after the other in the tail part
|
||||||
* and replay the deactivation as if the CPU was doing it. We also
|
* of the ap_list, past the LRs, and replay the deactivation as if
|
||||||
* rely on priority drop to have taken place, and the list to be
|
* the CPU was doing it. We also rely on priority drop to have taken
|
||||||
* sorted by priority.
|
* place, and the list to be sorted by priority.
|
||||||
*/
|
*/
|
||||||
list_for_each_entry(irq, &vgic_cpu->ap_list_head, ap_list) {
|
list_for_each_entry_continue(irq, &vgic_cpu->ap_list_head, ap_list) {
|
||||||
u64 lr;
|
u64 lr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -814,6 +814,9 @@ retry:
|
||||||
|
|
||||||
static inline void vgic_fold_lr_state(struct kvm_vcpu *vcpu)
|
static inline void vgic_fold_lr_state(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
|
if (!*host_data_ptr(last_lr_irq))
|
||||||
|
return;
|
||||||
|
|
||||||
if (kvm_vgic_global_state.type == VGIC_V2)
|
if (kvm_vgic_global_state.type == VGIC_V2)
|
||||||
vgic_v2_fold_lr_state(vcpu);
|
vgic_v2_fold_lr_state(vcpu);
|
||||||
else
|
else
|
||||||
|
|
@ -960,10 +963,13 @@ static void vgic_flush_lr_state(struct kvm_vcpu *vcpu)
|
||||||
if (irqs_outside_lrs(&als))
|
if (irqs_outside_lrs(&als))
|
||||||
vgic_sort_ap_list(vcpu);
|
vgic_sort_ap_list(vcpu);
|
||||||
|
|
||||||
|
*host_data_ptr(last_lr_irq) = NULL;
|
||||||
|
|
||||||
list_for_each_entry(irq, &vgic_cpu->ap_list_head, ap_list) {
|
list_for_each_entry(irq, &vgic_cpu->ap_list_head, ap_list) {
|
||||||
scoped_guard(raw_spinlock, &irq->irq_lock) {
|
scoped_guard(raw_spinlock, &irq->irq_lock) {
|
||||||
if (likely(vgic_target_oracle(irq) == vcpu)) {
|
if (likely(vgic_target_oracle(irq) == vcpu)) {
|
||||||
vgic_populate_lr(vcpu, irq, count++);
|
vgic_populate_lr(vcpu, irq, count++);
|
||||||
|
*host_data_ptr(last_lr_irq) = irq;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,11 @@ static inline unsigned long xloops_to_cycles(unsigned long xloops)
|
||||||
* Note that userspace cannot change the offset behind our back either,
|
* Note that userspace cannot change the offset behind our back either,
|
||||||
* as the vcpu mutex is held as long as KVM_RUN is in progress.
|
* as the vcpu mutex is held as long as KVM_RUN is in progress.
|
||||||
*/
|
*/
|
||||||
#define __delay_cycles() __arch_counter_get_cntvct_stable()
|
static cycles_t notrace __delay_cycles(void)
|
||||||
|
{
|
||||||
|
guard(preempt_notrace)();
|
||||||
|
return __arch_counter_get_cntvct_stable();
|
||||||
|
}
|
||||||
|
|
||||||
void __delay(unsigned long cycles)
|
void __delay(unsigned long cycles)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -599,6 +599,27 @@ void contpte_clear_young_dirty_ptes(struct vm_area_struct *vma,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(contpte_clear_young_dirty_ptes);
|
EXPORT_SYMBOL_GPL(contpte_clear_young_dirty_ptes);
|
||||||
|
|
||||||
|
static bool contpte_all_subptes_match_access_flags(pte_t *ptep, pte_t entry)
|
||||||
|
{
|
||||||
|
pte_t *cont_ptep = contpte_align_down(ptep);
|
||||||
|
/*
|
||||||
|
* PFNs differ per sub-PTE. Match only bits consumed by
|
||||||
|
* __ptep_set_access_flags(): AF, DIRTY and write permission.
|
||||||
|
*/
|
||||||
|
const pteval_t cmp_mask = PTE_RDONLY | PTE_AF | PTE_WRITE | PTE_DIRTY;
|
||||||
|
pteval_t entry_cmp = pte_val(entry) & cmp_mask;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < CONT_PTES; i++) {
|
||||||
|
pteval_t pte_cmp = pte_val(__ptep_get(cont_ptep + i)) & cmp_mask;
|
||||||
|
|
||||||
|
if (pte_cmp != entry_cmp)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int contpte_ptep_set_access_flags(struct vm_area_struct *vma,
|
int contpte_ptep_set_access_flags(struct vm_area_struct *vma,
|
||||||
unsigned long addr, pte_t *ptep,
|
unsigned long addr, pte_t *ptep,
|
||||||
pte_t entry, int dirty)
|
pte_t entry, int dirty)
|
||||||
|
|
@ -608,13 +629,37 @@ int contpte_ptep_set_access_flags(struct vm_area_struct *vma,
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Gather the access/dirty bits for the contiguous range. If nothing has
|
* Check whether all sub-PTEs in the CONT block already match the
|
||||||
* changed, its a noop.
|
* requested access flags/write permission, using raw per-PTE values
|
||||||
|
* rather than the gathered ptep_get() view.
|
||||||
|
*
|
||||||
|
* __ptep_set_access_flags() can update AF, dirty and write
|
||||||
|
* permission, but only to make the mapping more permissive.
|
||||||
|
*
|
||||||
|
* ptep_get() gathers AF/dirty state across the whole CONT block,
|
||||||
|
* which is correct for a CPU with FEAT_HAFDBS. But page-table
|
||||||
|
* walkers that evaluate each descriptor individually (e.g. a CPU
|
||||||
|
* without DBM support, or an SMMU without HTTU, or with HA/HD
|
||||||
|
* disabled in CD.TCR) can keep faulting on the target sub-PTE if
|
||||||
|
* only a sibling has been updated. Gathering can therefore cause
|
||||||
|
* false no-ops when only a sibling has been updated:
|
||||||
|
* - write faults: target still has PTE_RDONLY (needs PTE_RDONLY cleared)
|
||||||
|
* - read faults: target still lacks PTE_AF
|
||||||
|
*
|
||||||
|
* Per Arm ARM (DDI 0487) D8.7.1, any sub-PTE in a CONT range may
|
||||||
|
* become the effective cached translation, so all entries must have
|
||||||
|
* consistent attributes. Check the full CONT block before returning
|
||||||
|
* no-op, and when any sub-PTE mismatches, proceed to update the whole
|
||||||
|
* range.
|
||||||
*/
|
*/
|
||||||
orig_pte = pte_mknoncont(ptep_get(ptep));
|
if (contpte_all_subptes_match_access_flags(ptep, entry))
|
||||||
if (pte_val(orig_pte) == pte_val(entry))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use raw target pte (not gathered) for write-bit unfold decision.
|
||||||
|
*/
|
||||||
|
orig_pte = pte_mknoncont(__ptep_get(ptep));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We can fix up access/dirty bits without having to unfold the contig
|
* We can fix up access/dirty bits without having to unfold the contig
|
||||||
* range. But if the write bit is changing, we must unfold.
|
* range. But if the write bit is changing, we must unfold.
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ int arm64_ioremap_prot_hook_register(ioremap_prot_hook_t hook)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __iomem *ioremap_prot(phys_addr_t phys_addr, size_t size,
|
void __iomem *__ioremap_prot(phys_addr_t phys_addr, size_t size,
|
||||||
pgprot_t pgprot)
|
pgprot_t pgprot)
|
||||||
{
|
{
|
||||||
unsigned long last_addr = phys_addr + size - 1;
|
unsigned long last_addr = phys_addr + size - 1;
|
||||||
|
|
||||||
|
|
@ -39,7 +39,7 @@ void __iomem *ioremap_prot(phys_addr_t phys_addr, size_t size,
|
||||||
|
|
||||||
return generic_ioremap_prot(phys_addr, size, pgprot);
|
return generic_ioremap_prot(phys_addr, size, pgprot);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ioremap_prot);
|
EXPORT_SYMBOL(__ioremap_prot);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Must be called after early_fixmap_init
|
* Must be called after early_fixmap_init
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,8 @@ static pgprot_t protection_map[16] __ro_after_init = {
|
||||||
[VM_SHARED | VM_EXEC | VM_WRITE | VM_READ] = PAGE_SHARED_EXEC
|
[VM_SHARED | VM_EXEC | VM_WRITE | VM_READ] = PAGE_SHARED_EXEC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static ptdesc_t gcs_page_prot __ro_after_init = _PAGE_GCS_RO;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* You really shouldn't be using read() or write() on /dev/mem. This might go
|
* You really shouldn't be using read() or write() on /dev/mem. This might go
|
||||||
* away in the future.
|
* away in the future.
|
||||||
|
|
@ -73,9 +75,11 @@ static int __init adjust_protection_map(void)
|
||||||
protection_map[VM_EXEC | VM_SHARED] = PAGE_EXECONLY;
|
protection_map[VM_EXEC | VM_SHARED] = PAGE_EXECONLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lpa2_is_enabled())
|
if (lpa2_is_enabled()) {
|
||||||
for (int i = 0; i < ARRAY_SIZE(protection_map); i++)
|
for (int i = 0; i < ARRAY_SIZE(protection_map); i++)
|
||||||
pgprot_val(protection_map[i]) &= ~PTE_SHARED;
|
pgprot_val(protection_map[i]) &= ~PTE_SHARED;
|
||||||
|
gcs_page_prot &= ~PTE_SHARED;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -87,7 +91,11 @@ pgprot_t vm_get_page_prot(vm_flags_t vm_flags)
|
||||||
|
|
||||||
/* Short circuit GCS to avoid bloating the table. */
|
/* Short circuit GCS to avoid bloating the table. */
|
||||||
if (system_supports_gcs() && (vm_flags & VM_SHADOW_STACK)) {
|
if (system_supports_gcs() && (vm_flags & VM_SHADOW_STACK)) {
|
||||||
prot = _PAGE_GCS_RO;
|
/* Honour mprotect(PROT_NONE) on shadow stack mappings */
|
||||||
|
if (vm_flags & VM_ACCESS_FLAGS)
|
||||||
|
prot = gcs_page_prot;
|
||||||
|
else
|
||||||
|
prot = pgprot_val(protection_map[VM_NONE]);
|
||||||
} else {
|
} else {
|
||||||
prot = pgprot_val(protection_map[vm_flags &
|
prot = pgprot_val(protection_map[vm_flags &
|
||||||
(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]);
|
(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]);
|
||||||
|
|
|
||||||
|
|
@ -2119,7 +2119,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
|
||||||
extable_offset = round_up(prog_size + PLT_TARGET_SIZE, extable_align);
|
extable_offset = round_up(prog_size + PLT_TARGET_SIZE, extable_align);
|
||||||
image_size = extable_offset + extable_size;
|
image_size = extable_offset + extable_size;
|
||||||
ro_header = bpf_jit_binary_pack_alloc(image_size, &ro_image_ptr,
|
ro_header = bpf_jit_binary_pack_alloc(image_size, &ro_image_ptr,
|
||||||
sizeof(u32), &header, &image_ptr,
|
sizeof(u64), &header, &image_ptr,
|
||||||
jit_fill_hole);
|
jit_fill_hole);
|
||||||
if (!ro_header) {
|
if (!ro_header) {
|
||||||
prog = orig_prog;
|
prog = orig_prog;
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
DISCARDS
|
DISCARDS
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
.hexagon.attributes 0 : { *(.hexagon.attributes) }
|
.hexagon.attributes 0 : { *(.hexagon.attributes) }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
#ifdef CONFIG_EFI_STUB
|
#ifdef CONFIG_EFI_STUB
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ config KVM
|
||||||
select KVM_COMMON
|
select KVM_COMMON
|
||||||
select KVM_GENERIC_DIRTYLOG_READ_PROTECT
|
select KVM_GENERIC_DIRTYLOG_READ_PROTECT
|
||||||
select KVM_GENERIC_HARDWARE_ENABLING
|
select KVM_GENERIC_HARDWARE_ENABLING
|
||||||
select KVM_GENERIC_MMU_NOTIFIER
|
|
||||||
select KVM_MMIO
|
select KVM_MMIO
|
||||||
select VIRT_XFER_TO_GUEST_WORK
|
select VIRT_XFER_TO_GUEST_WORK
|
||||||
select SCHED_INFO
|
select SCHED_INFO
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
#define CREATE_TRACE_POINTS
|
#define CREATE_TRACE_POINTS
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
|
||||||
const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
const struct kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
||||||
KVM_GENERIC_VCPU_STATS(),
|
KVM_GENERIC_VCPU_STATS(),
|
||||||
STATS_DESC_COUNTER(VCPU, int_exits),
|
STATS_DESC_COUNTER(VCPU, int_exits),
|
||||||
STATS_DESC_COUNTER(VCPU, idle_exits),
|
STATS_DESC_COUNTER(VCPU, idle_exits),
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
#include <asm/kvm_eiointc.h>
|
#include <asm/kvm_eiointc.h>
|
||||||
#include <asm/kvm_pch_pic.h>
|
#include <asm/kvm_pch_pic.h>
|
||||||
|
|
||||||
const struct _kvm_stats_desc kvm_vm_stats_desc[] = {
|
const struct kvm_stats_desc kvm_vm_stats_desc[] = {
|
||||||
KVM_GENERIC_VM_STATS(),
|
KVM_GENERIC_VM_STATS(),
|
||||||
STATS_DESC_ICOUNTER(VM, pages),
|
STATS_DESC_ICOUNTER(VM, pages),
|
||||||
STATS_DESC_ICOUNTER(VM, hugepages),
|
STATS_DESC_ICOUNTER(VM, hugepages),
|
||||||
|
|
@ -118,7 +118,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
|
||||||
case KVM_CAP_ONE_REG:
|
case KVM_CAP_ONE_REG:
|
||||||
case KVM_CAP_ENABLE_CAP:
|
case KVM_CAP_ENABLE_CAP:
|
||||||
case KVM_CAP_READONLY_MEM:
|
case KVM_CAP_READONLY_MEM:
|
||||||
case KVM_CAP_SYNC_MMU:
|
|
||||||
case KVM_CAP_IMMEDIATE_EXIT:
|
case KVM_CAP_IMMEDIATE_EXIT:
|
||||||
case KVM_CAP_IOEVENTFD:
|
case KVM_CAP_IOEVENTFD:
|
||||||
case KVM_CAP_MP_STATE:
|
case KVM_CAP_MP_STATE:
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ SECTIONS {
|
||||||
_end = .;
|
_end = .;
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
/* Sections to be discarded */
|
/* Sections to be discarded */
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ SECTIONS
|
||||||
_end = . ;
|
_end = . ;
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
/* Sections to be discarded */
|
/* Sections to be discarded */
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ __init_begin = .;
|
||||||
_end = . ;
|
_end = . ;
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
/* Sections to be discarded */
|
/* Sections to be discarded */
|
||||||
|
|
|
||||||
|
|
@ -217,6 +217,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
/* These must appear regardless of . */
|
/* These must appear regardless of . */
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ config KVM
|
||||||
select KVM_COMMON
|
select KVM_COMMON
|
||||||
select KVM_GENERIC_DIRTYLOG_READ_PROTECT
|
select KVM_GENERIC_DIRTYLOG_READ_PROTECT
|
||||||
select KVM_MMIO
|
select KVM_MMIO
|
||||||
select KVM_GENERIC_MMU_NOTIFIER
|
|
||||||
select KVM_GENERIC_HARDWARE_ENABLING
|
select KVM_GENERIC_HARDWARE_ENABLING
|
||||||
select HAVE_KVM_READONLY_MEM
|
select HAVE_KVM_READONLY_MEM
|
||||||
help
|
help
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
#define VECTORSPACING 0x100 /* for EI/VI mode */
|
#define VECTORSPACING 0x100 /* for EI/VI mode */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const struct _kvm_stats_desc kvm_vm_stats_desc[] = {
|
const struct kvm_stats_desc kvm_vm_stats_desc[] = {
|
||||||
KVM_GENERIC_VM_STATS()
|
KVM_GENERIC_VM_STATS()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -51,7 +51,7 @@ const struct kvm_stats_header kvm_vm_stats_header = {
|
||||||
sizeof(kvm_vm_stats_desc),
|
sizeof(kvm_vm_stats_desc),
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
const struct kvm_stats_desc kvm_vcpu_stats_desc[] = {
|
||||||
KVM_GENERIC_VCPU_STATS(),
|
KVM_GENERIC_VCPU_STATS(),
|
||||||
STATS_DESC_COUNTER(VCPU, wait_exits),
|
STATS_DESC_COUNTER(VCPU, wait_exits),
|
||||||
STATS_DESC_COUNTER(VCPU, cache_exits),
|
STATS_DESC_COUNTER(VCPU, cache_exits),
|
||||||
|
|
@ -1035,7 +1035,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
|
||||||
case KVM_CAP_ONE_REG:
|
case KVM_CAP_ONE_REG:
|
||||||
case KVM_CAP_ENABLE_CAP:
|
case KVM_CAP_ENABLE_CAP:
|
||||||
case KVM_CAP_READONLY_MEM:
|
case KVM_CAP_READONLY_MEM:
|
||||||
case KVM_CAP_SYNC_MMU:
|
|
||||||
case KVM_CAP_IMMEDIATE_EXIT:
|
case KVM_CAP_IMMEDIATE_EXIT:
|
||||||
r = 1;
|
r = 1;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ SECTIONS
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
DISCARDS
|
DISCARDS
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ SECTIONS
|
||||||
/* Throw in the debugging sections */
|
/* Throw in the debugging sections */
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
|
||||||
/* Sections to be discarded -- must be last */
|
/* Sections to be discarded -- must be last */
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@ SECTIONS
|
||||||
/* Sections to be discarded */
|
/* Sections to be discarded */
|
||||||
DISCARDS
|
DISCARDS
|
||||||
/DISCARD/ : {
|
/DISCARD/ : {
|
||||||
|
*(.modinfo)
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
/* temporary hack until binutils is fixed to not emit these
|
/* temporary hack until binutils is fixed to not emit these
|
||||||
* for static binaries
|
* for static binaries
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ extern void __update_cache(pte_t pte);
|
||||||
printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, (unsigned long)pgd_val(e))
|
printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, (unsigned long)pgd_val(e))
|
||||||
|
|
||||||
/* This is the size of the initially mapped kernel memory */
|
/* This is the size of the initially mapped kernel memory */
|
||||||
#if defined(CONFIG_64BIT)
|
#if defined(CONFIG_64BIT) || defined(CONFIG_KALLSYMS)
|
||||||
#define KERNEL_INITIAL_ORDER 26 /* 1<<26 = 64MB */
|
#define KERNEL_INITIAL_ORDER 26 /* 1<<26 = 64MB */
|
||||||
#else
|
#else
|
||||||
#define KERNEL_INITIAL_ORDER 25 /* 1<<25 = 32MB */
|
#define KERNEL_INITIAL_ORDER 25 /* 1<<25 = 32MB */
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ ENTRY(parisc_kernel_start)
|
||||||
|
|
||||||
.import __bss_start,data
|
.import __bss_start,data
|
||||||
.import __bss_stop,data
|
.import __bss_stop,data
|
||||||
|
.import __end,data
|
||||||
|
|
||||||
load32 PA(__bss_start),%r3
|
load32 PA(__bss_start),%r3
|
||||||
load32 PA(__bss_stop),%r4
|
load32 PA(__bss_stop),%r4
|
||||||
|
|
@ -149,7 +150,11 @@ $cpu_ok:
|
||||||
* everything ... it will get remapped correctly later */
|
* everything ... it will get remapped correctly later */
|
||||||
ldo 0+_PAGE_KERNEL_RWX(%r0),%r3 /* Hardwired 0 phys addr start */
|
ldo 0+_PAGE_KERNEL_RWX(%r0),%r3 /* Hardwired 0 phys addr start */
|
||||||
load32 (1<<(KERNEL_INITIAL_ORDER-PAGE_SHIFT)),%r11 /* PFN count */
|
load32 (1<<(KERNEL_INITIAL_ORDER-PAGE_SHIFT)),%r11 /* PFN count */
|
||||||
load32 PA(pg0),%r1
|
load32 PA(_end),%r1
|
||||||
|
SHRREG %r1,PAGE_SHIFT,%r1 /* %r1 is PFN count for _end symbol */
|
||||||
|
cmpb,<<,n %r11,%r1,1f
|
||||||
|
copy %r1,%r11 /* %r1 PFN count smaller than %r11 */
|
||||||
|
1: load32 PA(pg0),%r1
|
||||||
|
|
||||||
$pgt_fill_loop:
|
$pgt_fill_loop:
|
||||||
STREGM %r3,ASM_PTE_ENTRY_SIZE(%r1)
|
STREGM %r3,ASM_PTE_ENTRY_SIZE(%r1)
|
||||||
|
|
|
||||||
|
|
@ -120,14 +120,6 @@ void __init setup_arch(char **cmdline_p)
|
||||||
#endif
|
#endif
|
||||||
printk(KERN_CONT ".\n");
|
printk(KERN_CONT ".\n");
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if initial kernel page mappings are sufficient.
|
|
||||||
* panic early if not, else we may access kernel functions
|
|
||||||
* and variables which can't be reached.
|
|
||||||
*/
|
|
||||||
if (__pa((unsigned long) &_end) >= KERNEL_INITIAL_SIZE)
|
|
||||||
panic("KERNEL_INITIAL_ORDER too small!");
|
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
if(parisc_narrow_firmware) {
|
if(parisc_narrow_firmware) {
|
||||||
printk(KERN_INFO "Kernel is using PDC in 32-bit mode.\n");
|
printk(KERN_INFO "Kernel is using PDC in 32-bit mode.\n");
|
||||||
|
|
@ -279,6 +271,18 @@ void __init start_parisc(void)
|
||||||
int ret, cpunum;
|
int ret, cpunum;
|
||||||
struct pdc_coproc_cfg coproc_cfg;
|
struct pdc_coproc_cfg coproc_cfg;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if initial kernel page mapping is sufficient.
|
||||||
|
* Print warning if not, because we may access kernel functions and
|
||||||
|
* variables which can't be reached yet through the initial mappings.
|
||||||
|
* Note that the panic() and printk() functions are not functional
|
||||||
|
* yet, so we need to use direct iodc() firmware calls instead.
|
||||||
|
*/
|
||||||
|
const char warn1[] = "CRITICAL: Kernel may crash because "
|
||||||
|
"KERNEL_INITIAL_ORDER is too small.\n";
|
||||||
|
if (__pa((unsigned long) &_end) >= KERNEL_INITIAL_SIZE)
|
||||||
|
pdc_iodc_print(warn1, sizeof(warn1) - 1);
|
||||||
|
|
||||||
/* check QEMU/SeaBIOS marker in PAGE0 */
|
/* check QEMU/SeaBIOS marker in PAGE0 */
|
||||||
running_on_qemu = (memcmp(&PAGE0->pad0, "SeaBIOS", 8) == 0);
|
running_on_qemu = (memcmp(&PAGE0->pad0, "SeaBIOS", 8) == 0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,7 @@ SECTIONS
|
||||||
_end = . ;
|
_end = . ;
|
||||||
|
|
||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
|
MODINFO
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
.note 0 : { *(.note) }
|
.note 0 : { *(.note) }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -573,8 +573,8 @@ config ARCH_USING_PATCHABLE_FUNCTION_ENTRY
|
||||||
depends on FUNCTION_TRACER && (PPC32 || PPC64_ELF_ABI_V2)
|
depends on FUNCTION_TRACER && (PPC32 || PPC64_ELF_ABI_V2)
|
||||||
depends on $(cc-option,-fpatchable-function-entry=2)
|
depends on $(cc-option,-fpatchable-function-entry=2)
|
||||||
def_bool y if PPC32
|
def_bool y if PPC32
|
||||||
def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh $(CC) -mlittle-endian) if PPC64 && CPU_LITTLE_ENDIAN
|
def_bool $(success,$(srctree)/arch/powerpc/tools/check-fpatchable-function-entry.sh $(CC) $(CLANG_FLAGS) -mlittle-endian) if PPC64 && CPU_LITTLE_ENDIAN
|
||||||
def_bool $(success,$(srctree)/arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh $(CC) -mbig-endian) if PPC64 && CPU_BIG_ENDIAN
|
def_bool $(success,$(srctree)/arch/powerpc/tools/check-fpatchable-function-entry.sh $(CC) -mbig-endian) if PPC64 && CPU_BIG_ENDIAN
|
||||||
|
|
||||||
config PPC_FTRACE_OUT_OF_LINE
|
config PPC_FTRACE_OUT_OF_LINE
|
||||||
def_bool PPC64 && ARCH_USING_PATCHABLE_FUNCTION_ENTRY
|
def_bool PPC64 && ARCH_USING_PATCHABLE_FUNCTION_ENTRY
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x8000000>; // 128MB at 0
|
reg = <0x00000000 0x8000000>; // 128MB at 0
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,156 +0,0 @@
|
||||||
/* T4240 Interlaken LAC Portal device tree stub with 24 portals.
|
|
||||||
*
|
|
||||||
* Copyright 2012 Freescale Semiconductor Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of Freescale Semiconductor nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* ALTERNATIVELY, this software may be distributed under the terms of the
|
|
||||||
* GNU General Public License ("GPL") as published by the Free Software
|
|
||||||
* Foundation, either version 2 of that License or (at your option) any
|
|
||||||
* later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#address-cells = <0x1>;
|
|
||||||
#size-cells = <0x1>;
|
|
||||||
compatible = "fsl,interlaken-lac-portals";
|
|
||||||
|
|
||||||
lportal0: lac-portal@0 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x0 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal1: lac-portal@1000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x1000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal2: lac-portal@2000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x2000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal3: lac-portal@3000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x3000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal4: lac-portal@4000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x4000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal5: lac-portal@5000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x5000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal6: lac-portal@6000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x6000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal7: lac-portal@7000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x7000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal8: lac-portal@8000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x8000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal9: lac-portal@9000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x9000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal10: lac-portal@A000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0xA000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal11: lac-portal@B000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0xB000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal12: lac-portal@C000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0xC000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal13: lac-portal@D000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0xD000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal14: lac-portal@E000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0xE000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal15: lac-portal@F000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0xF000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal16: lac-portal@10000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x10000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal17: lac-portal@11000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x11000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal18: lac-portal@1200 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x12000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal19: lac-portal@13000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x13000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal20: lac-portal@14000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x14000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal21: lac-portal@15000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x15000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal22: lac-portal@16000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x16000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lportal23: lac-portal@17000 {
|
|
||||||
compatible = "fsl,interlaken-lac-portal-v1.0";
|
|
||||||
reg = <0x17000 0x1000>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
/*
|
|
||||||
* T4 Interlaken Look-aside Controller (LAC) device tree stub
|
|
||||||
*
|
|
||||||
* Copyright 2012 Freescale Semiconductor Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of Freescale Semiconductor nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* ALTERNATIVELY, this software may be distributed under the terms of the
|
|
||||||
* GNU General Public License ("GPL") as published by the Free Software
|
|
||||||
* Foundation, either version 2 of that License or (at your option) any
|
|
||||||
* later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
lac: lac@229000 {
|
|
||||||
compatible = "fsl,interlaken-lac";
|
|
||||||
reg = <0x229000 0x1000>;
|
|
||||||
interrupts = <16 2 1 18>;
|
|
||||||
};
|
|
||||||
|
|
||||||
lac-hv@228000 {
|
|
||||||
compatible = "fsl,interlaken-lac-hv";
|
|
||||||
reg = <0x228000 0x1000>;
|
|
||||||
fsl,non-hv-node = <&lac>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
/*
|
|
||||||
* PQ3 MPIC Message (Group B) device tree stub [ controller @ offset 0x42400 ]
|
|
||||||
*
|
|
||||||
* Copyright 2012 Freescale Semiconductor Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of Freescale Semiconductor nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* ALTERNATIVELY, this software may be distributed under the terms of the
|
|
||||||
* GNU General Public License ("GPL") as published by the Free Software
|
|
||||||
* Foundation, either version 2 of that License or (at your option) any
|
|
||||||
* later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
message@42400 {
|
|
||||||
compatible = "fsl,mpic-v3.1-msgr";
|
|
||||||
reg = <0x42400 0x200>;
|
|
||||||
interrupts = <
|
|
||||||
0xb4 2 0 0
|
|
||||||
0xb5 2 0 0
|
|
||||||
0xb6 2 0 0
|
|
||||||
0xb7 2 0 0>;
|
|
||||||
};
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
/*
|
|
||||||
* QorIQ FMan v3 1g port #1 device tree stub [ controller @ offset 0x400000 ]
|
|
||||||
*
|
|
||||||
* Copyright 2012 - 2015 Freescale Semiconductor Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of Freescale Semiconductor nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* ALTERNATIVELY, this software may be distributed under the terms of the
|
|
||||||
* GNU General Public License ("GPL") as published by the Free Software
|
|
||||||
* Foundation, either version 2 of that License or (at your option) any
|
|
||||||
* later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
fman@400000 {
|
|
||||||
fman0_rx_0x09: port@89000 {
|
|
||||||
cell-index = <0x9>;
|
|
||||||
compatible = "fsl,fman-v3-port-rx";
|
|
||||||
reg = <0x89000 0x1000>;
|
|
||||||
fsl,fman-10g-port;
|
|
||||||
fsl,fman-best-effort-port;
|
|
||||||
};
|
|
||||||
|
|
||||||
fman0_tx_0x29: port@a9000 {
|
|
||||||
cell-index = <0x29>;
|
|
||||||
compatible = "fsl,fman-v3-port-tx";
|
|
||||||
reg = <0xa9000 0x1000>;
|
|
||||||
fsl,fman-10g-port;
|
|
||||||
fsl,fman-best-effort-port;
|
|
||||||
};
|
|
||||||
|
|
||||||
ethernet@e2000 {
|
|
||||||
cell-index = <1>;
|
|
||||||
compatible = "fsl,fman-memac";
|
|
||||||
reg = <0xe2000 0x1000>;
|
|
||||||
fsl,fman-ports = <&fman0_rx_0x09 &fman0_tx_0x29>;
|
|
||||||
ptp-timer = <&ptp_timer0>;
|
|
||||||
pcsphy-handle = <&pcsphy1>, <&qsgmiia_pcs1>;
|
|
||||||
pcs-handle-names = "sgmii", "qsgmii";
|
|
||||||
};
|
|
||||||
|
|
||||||
mdio@e1000 {
|
|
||||||
qsgmiia_pcs1: ethernet-pcs@1 {
|
|
||||||
compatible = "fsl,lynx-pcs";
|
|
||||||
reg = <1>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
mdio@e3000 {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "fsl,fman-memac-mdio", "fsl,fman-xmdio";
|
|
||||||
reg = <0xe3000 0x1000>;
|
|
||||||
fsl,erratum-a011043; /* must ignore read errors */
|
|
||||||
|
|
||||||
pcsphy1: ethernet-phy@0 {
|
|
||||||
reg = <0x0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x08000000>; // 128MB at 0
|
reg = <0x00000000 0x08000000>; // 128MB at 0
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x08000000>; // 128MB at 0
|
reg = <0x00000000 0x08000000>; // 128MB at 0
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "MPC8313ERDB";
|
model = "MPC8313ERDB";
|
||||||
|
|
@ -38,7 +39,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x08000000>; // 128MB at 0
|
reg = <0x00000000 0x08000000>; // 128MB at 0
|
||||||
};
|
};
|
||||||
|
|
@ -48,7 +49,7 @@
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus";
|
compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus";
|
||||||
reg = <0xe0005000 0x1000>;
|
reg = <0xe0005000 0x1000>;
|
||||||
interrupts = <77 0x8>;
|
interrupts = <77 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
|
|
||||||
// CS0 and CS1 are swapped when
|
// CS0 and CS1 are swapped when
|
||||||
|
|
@ -118,7 +119,7 @@
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
compatible = "fsl-i2c";
|
compatible = "fsl-i2c";
|
||||||
reg = <0x3000 0x100>;
|
reg = <0x3000 0x100>;
|
||||||
interrupts = <14 0x8>;
|
interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
dfsrr;
|
dfsrr;
|
||||||
rtc@68 {
|
rtc@68 {
|
||||||
|
|
@ -131,7 +132,7 @@
|
||||||
compatible = "fsl,sec2.2", "fsl,sec2.1",
|
compatible = "fsl,sec2.2", "fsl,sec2.1",
|
||||||
"fsl,sec2.0";
|
"fsl,sec2.0";
|
||||||
reg = <0x30000 0x10000>;
|
reg = <0x30000 0x10000>;
|
||||||
interrupts = <11 0x8>;
|
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
fsl,num-channels = <1>;
|
fsl,num-channels = <1>;
|
||||||
fsl,channel-fifo-len = <24>;
|
fsl,channel-fifo-len = <24>;
|
||||||
|
|
@ -146,7 +147,7 @@
|
||||||
cell-index = <1>;
|
cell-index = <1>;
|
||||||
compatible = "fsl-i2c";
|
compatible = "fsl-i2c";
|
||||||
reg = <0x3100 0x100>;
|
reg = <0x3100 0x100>;
|
||||||
interrupts = <15 0x8>;
|
interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
dfsrr;
|
dfsrr;
|
||||||
};
|
};
|
||||||
|
|
@ -155,7 +156,7 @@
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
compatible = "fsl,spi";
|
compatible = "fsl,spi";
|
||||||
reg = <0x7000 0x1000>;
|
reg = <0x7000 0x1000>;
|
||||||
interrupts = <16 0x8>;
|
interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
mode = "cpu";
|
mode = "cpu";
|
||||||
};
|
};
|
||||||
|
|
@ -167,7 +168,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <38 0x8>;
|
interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
|
||||||
phy_type = "utmi_wide";
|
phy_type = "utmi_wide";
|
||||||
sleep = <&pmc 0x00300000>;
|
sleep = <&pmc 0x00300000>;
|
||||||
};
|
};
|
||||||
|
|
@ -175,7 +176,8 @@
|
||||||
ptp_clock@24E00 {
|
ptp_clock@24E00 {
|
||||||
compatible = "fsl,etsec-ptp";
|
compatible = "fsl,etsec-ptp";
|
||||||
reg = <0x24E00 0xB0>;
|
reg = <0x24E00 0xB0>;
|
||||||
interrupts = <12 0x8 13 0x8>;
|
interrupts = <12 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<13 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = < &ipic >;
|
interrupt-parent = < &ipic >;
|
||||||
fsl,tclk-period = <10>;
|
fsl,tclk-period = <10>;
|
||||||
fsl,tmr-prsc = <100>;
|
fsl,tmr-prsc = <100>;
|
||||||
|
|
@ -197,7 +199,9 @@
|
||||||
compatible = "gianfar";
|
compatible = "gianfar";
|
||||||
reg = <0x24000 0x1000>;
|
reg = <0x24000 0x1000>;
|
||||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||||
interrupts = <37 0x8 36 0x8 35 0x8>;
|
interrupts = <37 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<36 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<35 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
tbi-handle = < &tbi0 >;
|
tbi-handle = < &tbi0 >;
|
||||||
/* Vitesse 7385 isn't on the MDIO bus */
|
/* Vitesse 7385 isn't on the MDIO bus */
|
||||||
|
|
@ -211,7 +215,7 @@
|
||||||
reg = <0x520 0x20>;
|
reg = <0x520 0x20>;
|
||||||
phy4: ethernet-phy@4 {
|
phy4: ethernet-phy@4 {
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <20 0x8>;
|
interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
|
||||||
reg = <0x4>;
|
reg = <0x4>;
|
||||||
};
|
};
|
||||||
tbi0: tbi-phy@11 {
|
tbi0: tbi-phy@11 {
|
||||||
|
|
@ -231,7 +235,9 @@
|
||||||
reg = <0x25000 0x1000>;
|
reg = <0x25000 0x1000>;
|
||||||
ranges = <0x0 0x25000 0x1000>;
|
ranges = <0x0 0x25000 0x1000>;
|
||||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||||
interrupts = <34 0x8 33 0x8 32 0x8>;
|
interrupts = <34 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<33 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<32 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
tbi-handle = < &tbi1 >;
|
tbi-handle = < &tbi1 >;
|
||||||
phy-handle = < &phy4 >;
|
phy-handle = < &phy4 >;
|
||||||
|
|
@ -259,7 +265,7 @@
|
||||||
compatible = "fsl,ns16550", "ns16550";
|
compatible = "fsl,ns16550", "ns16550";
|
||||||
reg = <0x4500 0x100>;
|
reg = <0x4500 0x100>;
|
||||||
clock-frequency = <0>;
|
clock-frequency = <0>;
|
||||||
interrupts = <9 0x8>;
|
interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -269,15 +275,12 @@
|
||||||
compatible = "fsl,ns16550", "ns16550";
|
compatible = "fsl,ns16550", "ns16550";
|
||||||
reg = <0x4600 0x100>;
|
reg = <0x4600 0x100>;
|
||||||
clock-frequency = <0>;
|
clock-frequency = <0>;
|
||||||
interrupts = <10 0x8>;
|
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* IPIC
|
/* IPIC
|
||||||
* interrupts cell = <intr #, sense>
|
* interrupts cell = <intr #, type>
|
||||||
* sense values match linux IORESOURCE_IRQ_* defines:
|
|
||||||
* sense == 8: Level, low assertion
|
|
||||||
* sense == 2: Edge, high-to-low change
|
|
||||||
*/
|
*/
|
||||||
ipic: pic@700 {
|
ipic: pic@700 {
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
|
@ -290,7 +293,7 @@
|
||||||
pmc: power@b00 {
|
pmc: power@b00 {
|
||||||
compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc";
|
compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc";
|
||||||
reg = <0xb00 0x100 0xa00 0x100>;
|
reg = <0xb00 0x100 0xa00 0x100>;
|
||||||
interrupts = <80 8>;
|
interrupts = <80 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
fsl,mpc8313-wakeup-timer = <>m1>;
|
fsl,mpc8313-wakeup-timer = <>m1>;
|
||||||
|
|
||||||
|
|
@ -306,14 +309,20 @@
|
||||||
gtm1: timer@500 {
|
gtm1: timer@500 {
|
||||||
compatible = "fsl,mpc8313-gtm", "fsl,gtm";
|
compatible = "fsl,mpc8313-gtm", "fsl,gtm";
|
||||||
reg = <0x500 0x100>;
|
reg = <0x500 0x100>;
|
||||||
interrupts = <90 8 78 8 84 8 72 8>;
|
interrupts = <90 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<78 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<84 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<72 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
timer@600 {
|
timer@600 {
|
||||||
compatible = "fsl,mpc8313-gtm", "fsl,gtm";
|
compatible = "fsl,mpc8313-gtm", "fsl,gtm";
|
||||||
reg = <0x600 0x100>;
|
reg = <0x600 0x100>;
|
||||||
interrupts = <91 8 79 8 85 8 73 8>;
|
interrupts = <91 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<79 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<85 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<73 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
@ -341,7 +350,7 @@
|
||||||
0x7800 0x0 0x0 0x3 &ipic 17 0x8
|
0x7800 0x0 0x0 0x3 &ipic 17 0x8
|
||||||
0x7800 0x0 0x0 0x4 &ipic 18 0x8>;
|
0x7800 0x0 0x0 0x4 &ipic 18 0x8>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <66 0x8>;
|
interrupts = <66 IRQ_TYPE_LEVEL_LOW>;
|
||||||
bus-range = <0x0 0x0>;
|
bus-range = <0x0 0x0>;
|
||||||
ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
|
ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
|
||||||
0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
|
0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
|
||||||
|
|
@ -363,14 +372,14 @@
|
||||||
reg = <0xe00082a8 4>;
|
reg = <0xe00082a8 4>;
|
||||||
ranges = <0 0xe0008100 0x1a8>;
|
ranges = <0 0xe0008100 0x1a8>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
dma-channel@0 {
|
dma-channel@0 {
|
||||||
compatible = "fsl,mpc8313-dma-channel",
|
compatible = "fsl,mpc8313-dma-channel",
|
||||||
"fsl,elo-dma-channel";
|
"fsl,elo-dma-channel";
|
||||||
reg = <0 0x28>;
|
reg = <0 0x28>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -379,7 +388,7 @@
|
||||||
"fsl,elo-dma-channel";
|
"fsl,elo-dma-channel";
|
||||||
reg = <0x80 0x28>;
|
reg = <0x80 0x28>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
cell-index = <1>;
|
cell-index = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -388,7 +397,7 @@
|
||||||
"fsl,elo-dma-channel";
|
"fsl,elo-dma-channel";
|
||||||
reg = <0x100 0x28>;
|
reg = <0x100 0x28>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
cell-index = <2>;
|
cell-index = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -397,7 +406,7 @@
|
||||||
"fsl,elo-dma-channel";
|
"fsl,elo-dma-channel";
|
||||||
reg = <0x180 0x28>;
|
reg = <0x180 0x28>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
cell-index = <3>;
|
cell-index = <3>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x08000000>; // 128MB at 0
|
reg = <0x00000000 0x08000000>; // 128MB at 0
|
||||||
};
|
};
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
compatible = "fsl,mpc8315-elbc", "fsl,elbc", "simple-bus";
|
compatible = "fsl,mpc8315-elbc", "fsl,elbc", "simple-bus";
|
||||||
reg = <0xe0005000 0x1000>;
|
reg = <0xe0005000 0x1000>;
|
||||||
interrupts = <77 0x8>;
|
interrupts = <77 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
|
|
||||||
// CS0 and CS1 are swapped when
|
// CS0 and CS1 are swapped when
|
||||||
|
|
@ -112,7 +112,7 @@
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
compatible = "fsl-i2c";
|
compatible = "fsl-i2c";
|
||||||
reg = <0x3000 0x100>;
|
reg = <0x3000 0x100>;
|
||||||
interrupts = <14 0x8>;
|
interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
dfsrr;
|
dfsrr;
|
||||||
rtc@68 {
|
rtc@68 {
|
||||||
|
|
@ -133,8 +133,10 @@
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
compatible = "fsl,spi";
|
compatible = "fsl,spi";
|
||||||
reg = <0x7000 0x1000>;
|
reg = <0x7000 0x1000>;
|
||||||
interrupts = <16 0x8>;
|
interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
mode = "cpu";
|
mode = "cpu";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -145,35 +147,35 @@
|
||||||
reg = <0x82a8 4>;
|
reg = <0x82a8 4>;
|
||||||
ranges = <0 0x8100 0x1a8>;
|
ranges = <0 0x8100 0x1a8>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
dma-channel@0 {
|
dma-channel@0 {
|
||||||
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
||||||
reg = <0 0x80>;
|
reg = <0 0x80>;
|
||||||
cell-index = <0>;
|
cell-index = <0>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
};
|
};
|
||||||
dma-channel@80 {
|
dma-channel@80 {
|
||||||
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
||||||
reg = <0x80 0x80>;
|
reg = <0x80 0x80>;
|
||||||
cell-index = <1>;
|
cell-index = <1>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
};
|
};
|
||||||
dma-channel@100 {
|
dma-channel@100 {
|
||||||
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
||||||
reg = <0x100 0x80>;
|
reg = <0x100 0x80>;
|
||||||
cell-index = <2>;
|
cell-index = <2>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
};
|
};
|
||||||
dma-channel@180 {
|
dma-channel@180 {
|
||||||
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
compatible = "fsl,mpc8315-dma-channel", "fsl,elo-dma-channel";
|
||||||
reg = <0x180 0x28>;
|
reg = <0x180 0x28>;
|
||||||
cell-index = <3>;
|
cell-index = <3>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <71 8>;
|
interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -183,7 +185,7 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <38 0x8>;
|
interrupts = <38 IRQ_TYPE_LEVEL_LOW>;
|
||||||
phy_type = "utmi";
|
phy_type = "utmi";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -197,7 +199,9 @@
|
||||||
reg = <0x24000 0x1000>;
|
reg = <0x24000 0x1000>;
|
||||||
ranges = <0x0 0x24000 0x1000>;
|
ranges = <0x0 0x24000 0x1000>;
|
||||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||||
interrupts = <32 0x8 33 0x8 34 0x8>;
|
interrupts = <32 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<33 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<34 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
tbi-handle = <&tbi0>;
|
tbi-handle = <&tbi0>;
|
||||||
phy-handle = < &phy0 >;
|
phy-handle = < &phy0 >;
|
||||||
|
|
@ -238,7 +242,9 @@
|
||||||
reg = <0x25000 0x1000>;
|
reg = <0x25000 0x1000>;
|
||||||
ranges = <0x0 0x25000 0x1000>;
|
ranges = <0x0 0x25000 0x1000>;
|
||||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||||
interrupts = <35 0x8 36 0x8 37 0x8>;
|
interrupts = <35 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<36 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<37 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
tbi-handle = <&tbi1>;
|
tbi-handle = <&tbi1>;
|
||||||
phy-handle = < &phy1 >;
|
phy-handle = < &phy1 >;
|
||||||
|
|
@ -263,7 +269,7 @@
|
||||||
compatible = "fsl,ns16550", "ns16550";
|
compatible = "fsl,ns16550", "ns16550";
|
||||||
reg = <0x4500 0x100>;
|
reg = <0x4500 0x100>;
|
||||||
clock-frequency = <133333333>;
|
clock-frequency = <133333333>;
|
||||||
interrupts = <9 0x8>;
|
interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -273,7 +279,7 @@
|
||||||
compatible = "fsl,ns16550", "ns16550";
|
compatible = "fsl,ns16550", "ns16550";
|
||||||
reg = <0x4600 0x100>;
|
reg = <0x4600 0x100>;
|
||||||
clock-frequency = <133333333>;
|
clock-frequency = <133333333>;
|
||||||
interrupts = <10 0x8>;
|
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -282,7 +288,7 @@
|
||||||
"fsl,sec2.4", "fsl,sec2.2", "fsl,sec2.1",
|
"fsl,sec2.4", "fsl,sec2.2", "fsl,sec2.1",
|
||||||
"fsl,sec2.0";
|
"fsl,sec2.0";
|
||||||
reg = <0x30000 0x10000>;
|
reg = <0x30000 0x10000>;
|
||||||
interrupts = <11 0x8>;
|
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
fsl,num-channels = <4>;
|
fsl,num-channels = <4>;
|
||||||
fsl,channel-fifo-len = <24>;
|
fsl,channel-fifo-len = <24>;
|
||||||
|
|
@ -294,7 +300,7 @@
|
||||||
compatible = "fsl,mpc8315-sata", "fsl,pq-sata";
|
compatible = "fsl,mpc8315-sata", "fsl,pq-sata";
|
||||||
reg = <0x18000 0x1000>;
|
reg = <0x18000 0x1000>;
|
||||||
cell-index = <1>;
|
cell-index = <1>;
|
||||||
interrupts = <44 0x8>;
|
interrupts = <44 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -302,14 +308,17 @@
|
||||||
compatible = "fsl,mpc8315-sata", "fsl,pq-sata";
|
compatible = "fsl,mpc8315-sata", "fsl,pq-sata";
|
||||||
reg = <0x19000 0x1000>;
|
reg = <0x19000 0x1000>;
|
||||||
cell-index = <2>;
|
cell-index = <2>;
|
||||||
interrupts = <45 0x8>;
|
interrupts = <45 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gtm1: timer@500 {
|
gtm1: timer@500 {
|
||||||
compatible = "fsl,mpc8315-gtm", "fsl,gtm";
|
compatible = "fsl,mpc8315-gtm", "fsl,gtm";
|
||||||
reg = <0x500 0x100>;
|
reg = <0x500 0x100>;
|
||||||
interrupts = <90 8 78 8 84 8 72 8>;
|
interrupts = <90 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<78 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<84 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<72 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
clock-frequency = <133333333>;
|
clock-frequency = <133333333>;
|
||||||
};
|
};
|
||||||
|
|
@ -317,16 +326,16 @@
|
||||||
timer@600 {
|
timer@600 {
|
||||||
compatible = "fsl,mpc8315-gtm", "fsl,gtm";
|
compatible = "fsl,mpc8315-gtm", "fsl,gtm";
|
||||||
reg = <0x600 0x100>;
|
reg = <0x600 0x100>;
|
||||||
interrupts = <91 8 79 8 85 8 73 8>;
|
interrupts = <91 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<79 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<85 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<73 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
clock-frequency = <133333333>;
|
clock-frequency = <133333333>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* IPIC
|
/* IPIC
|
||||||
* interrupts cell = <intr #, sense>
|
* interrupts cell = <intr #, type>
|
||||||
* sense values match linux IORESOURCE_IRQ_* defines:
|
|
||||||
* sense == 8: Level, low assertion
|
|
||||||
* sense == 2: Edge, high-to-low change
|
|
||||||
*/
|
*/
|
||||||
ipic: interrupt-controller@700 {
|
ipic: interrupt-controller@700 {
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
|
@ -340,14 +349,14 @@
|
||||||
compatible = "fsl,ipic-msi";
|
compatible = "fsl,ipic-msi";
|
||||||
reg = <0x7c0 0x40>;
|
reg = <0x7c0 0x40>;
|
||||||
msi-available-ranges = <0 0x100>;
|
msi-available-ranges = <0 0x100>;
|
||||||
interrupts = <0x43 0x8
|
interrupts = <0x43 IRQ_TYPE_LEVEL_LOW
|
||||||
0x4 0x8
|
0x4 IRQ_TYPE_LEVEL_LOW
|
||||||
0x51 0x8
|
0x51 IRQ_TYPE_LEVEL_LOW
|
||||||
0x52 0x8
|
0x52 IRQ_TYPE_LEVEL_LOW
|
||||||
0x56 0x8
|
0x56 IRQ_TYPE_LEVEL_LOW
|
||||||
0x57 0x8
|
0x57 IRQ_TYPE_LEVEL_LOW
|
||||||
0x58 0x8
|
0x58 IRQ_TYPE_LEVEL_LOW
|
||||||
0x59 0x8>;
|
0x59 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = < &ipic >;
|
interrupt-parent = < &ipic >;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -355,7 +364,7 @@
|
||||||
compatible = "fsl,mpc8315-pmc", "fsl,mpc8313-pmc",
|
compatible = "fsl,mpc8315-pmc", "fsl,mpc8313-pmc",
|
||||||
"fsl,mpc8349-pmc";
|
"fsl,mpc8349-pmc";
|
||||||
reg = <0xb00 0x100 0xa00 0x100>;
|
reg = <0xb00 0x100 0xa00 0x100>;
|
||||||
interrupts = <80 8>;
|
interrupts = <80 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
fsl,mpc8313-wakeup-timer = <>m1>;
|
fsl,mpc8313-wakeup-timer = <>m1>;
|
||||||
};
|
};
|
||||||
|
|
@ -374,24 +383,24 @@
|
||||||
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
||||||
interrupt-map = <
|
interrupt-map = <
|
||||||
/* IDSEL 0x0E -mini PCI */
|
/* IDSEL 0x0E -mini PCI */
|
||||||
0x7000 0x0 0x0 0x1 &ipic 18 0x8
|
0x7000 0x0 0x0 0x1 &ipic 18 IRQ_TYPE_LEVEL_LOW
|
||||||
0x7000 0x0 0x0 0x2 &ipic 18 0x8
|
0x7000 0x0 0x0 0x2 &ipic 18 IRQ_TYPE_LEVEL_LOW
|
||||||
0x7000 0x0 0x0 0x3 &ipic 18 0x8
|
0x7000 0x0 0x0 0x3 &ipic 18 IRQ_TYPE_LEVEL_LOW
|
||||||
0x7000 0x0 0x0 0x4 &ipic 18 0x8
|
0x7000 0x0 0x0 0x4 &ipic 18 IRQ_TYPE_LEVEL_LOW
|
||||||
|
|
||||||
/* IDSEL 0x0F -mini PCI */
|
/* IDSEL 0x0F -mini PCI */
|
||||||
0x7800 0x0 0x0 0x1 &ipic 17 0x8
|
0x7800 0x0 0x0 0x1 &ipic 17 IRQ_TYPE_LEVEL_LOW
|
||||||
0x7800 0x0 0x0 0x2 &ipic 17 0x8
|
0x7800 0x0 0x0 0x2 &ipic 17 IRQ_TYPE_LEVEL_LOW
|
||||||
0x7800 0x0 0x0 0x3 &ipic 17 0x8
|
0x7800 0x0 0x0 0x3 &ipic 17 IRQ_TYPE_LEVEL_LOW
|
||||||
0x7800 0x0 0x0 0x4 &ipic 17 0x8
|
0x7800 0x0 0x0 0x4 &ipic 17 IRQ_TYPE_LEVEL_LOW
|
||||||
|
|
||||||
/* IDSEL 0x10 - PCI slot */
|
/* IDSEL 0x10 - PCI slot */
|
||||||
0x8000 0x0 0x0 0x1 &ipic 48 0x8
|
0x8000 0x0 0x0 0x1 &ipic 48 IRQ_TYPE_LEVEL_LOW
|
||||||
0x8000 0x0 0x0 0x2 &ipic 17 0x8
|
0x8000 0x0 0x0 0x2 &ipic 17 IRQ_TYPE_LEVEL_LOW
|
||||||
0x8000 0x0 0x0 0x3 &ipic 48 0x8
|
0x8000 0x0 0x0 0x3 &ipic 48 IRQ_TYPE_LEVEL_LOW
|
||||||
0x8000 0x0 0x0 0x4 &ipic 17 0x8>;
|
0x8000 0x0 0x0 0x4 &ipic 17 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-parent = <&ipic>;
|
interrupt-parent = <&ipic>;
|
||||||
interrupts = <66 0x8>;
|
interrupts = <66 IRQ_TYPE_LEVEL_LOW>;
|
||||||
bus-range = <0x0 0x0>;
|
bus-range = <0x0 0x0>;
|
||||||
ranges = <0x02000000 0 0x90000000 0x90000000 0 0x10000000
|
ranges = <0x02000000 0 0x90000000 0x90000000 0 0x10000000
|
||||||
0x42000000 0 0x80000000 0x80000000 0 0x10000000
|
0x42000000 0 0x80000000 0x80000000 0 0x10000000
|
||||||
|
|
@ -417,10 +426,10 @@
|
||||||
0x01000000 0 0x00000000 0xb1000000 0 0x00800000>;
|
0x01000000 0 0x00000000 0xb1000000 0 0x00800000>;
|
||||||
bus-range = <0 255>;
|
bus-range = <0 255>;
|
||||||
interrupt-map-mask = <0xf800 0 0 7>;
|
interrupt-map-mask = <0xf800 0 0 7>;
|
||||||
interrupt-map = <0 0 0 1 &ipic 1 8
|
interrupt-map = <0 0 0 1 &ipic 1 IRQ_TYPE_LEVEL_LOW
|
||||||
0 0 0 2 &ipic 1 8
|
0 0 0 2 &ipic 1 IRQ_TYPE_LEVEL_LOW
|
||||||
0 0 0 3 &ipic 1 8
|
0 0 0 3 &ipic 1 IRQ_TYPE_LEVEL_LOW
|
||||||
0 0 0 4 &ipic 1 8>;
|
0 0 0 4 &ipic 1 IRQ_TYPE_LEVEL_LOW>;
|
||||||
clock-frequency = <0>;
|
clock-frequency = <0>;
|
||||||
|
|
||||||
pcie@0 {
|
pcie@0 {
|
||||||
|
|
@ -448,10 +457,10 @@
|
||||||
0x01000000 0 0x00000000 0xd1000000 0 0x00800000>;
|
0x01000000 0 0x00000000 0xd1000000 0 0x00800000>;
|
||||||
bus-range = <0 255>;
|
bus-range = <0 255>;
|
||||||
interrupt-map-mask = <0xf800 0 0 7>;
|
interrupt-map-mask = <0xf800 0 0 7>;
|
||||||
interrupt-map = <0 0 0 1 &ipic 2 8
|
interrupt-map = <0 0 0 1 &ipic 2 IRQ_TYPE_LEVEL_LOW
|
||||||
0 0 0 2 &ipic 2 8
|
0 0 0 2 &ipic 2 IRQ_TYPE_LEVEL_LOW
|
||||||
0 0 0 3 &ipic 2 8
|
0 0 0 3 &ipic 2 IRQ_TYPE_LEVEL_LOW
|
||||||
0 0 0 4 &ipic 2 8>;
|
0 0 0 4 &ipic 2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
clock-frequency = <0>;
|
clock-frequency = <0>;
|
||||||
|
|
||||||
pcie@0 {
|
pcie@0 {
|
||||||
|
|
@ -471,12 +480,12 @@
|
||||||
leds {
|
leds {
|
||||||
compatible = "gpio-leds";
|
compatible = "gpio-leds";
|
||||||
|
|
||||||
pwr {
|
led-pwr {
|
||||||
gpios = <&mcu_pio 0 0>;
|
gpios = <&mcu_pio 0 0>;
|
||||||
default-state = "on";
|
default-state = "on";
|
||||||
};
|
};
|
||||||
|
|
||||||
hdd {
|
led-hdd {
|
||||||
gpios = <&mcu_pio 1 0>;
|
gpios = <&mcu_pio 1 0>;
|
||||||
linux,default-trigger = "disk-activity";
|
linux,default-trigger = "disk-activity";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x04000000>;
|
reg = <0x00000000 0x04000000>;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x10000000>;
|
reg = <0x00000000 0x10000000>;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue