mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
Merge 6.19-rc5 into char-misc-next
We need the char/misc fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
12
.mailmap
12
.mailmap
@@ -127,7 +127,8 @@ Barry Song <baohua@kernel.org> <Baohua.Song@csr.com>
|
||||
Barry Song <baohua@kernel.org> <barry.song@analog.com>
|
||||
Bart Van Assche <bvanassche@acm.org> <bart.vanassche@sandisk.com>
|
||||
Bart Van Assche <bvanassche@acm.org> <bart.vanassche@wdc.com>
|
||||
Bartosz Golaszewski <brgl@bgdev.pl> <bgolaszewski@baylibre.com>
|
||||
Bartosz Golaszewski <brgl@kernel.org> <bartosz.golaszewski@linaro.org>
|
||||
Bartosz Golaszewski <brgl@kernel.org> <bgolaszewski@baylibre.com>
|
||||
Ben Dooks <ben-linux@fluff.org> <ben.dooks@simtec.co.uk>
|
||||
Ben Dooks <ben-linux@fluff.org> <ben.dooks@sifive.com>
|
||||
Ben Gardner <bgardner@wabtec.com>
|
||||
@@ -415,6 +416,7 @@ Juha Yrjola <at solidboot.com>
|
||||
Juha Yrjola <juha.yrjola@nokia.com>
|
||||
Juha Yrjola <juha.yrjola@solidboot.com>
|
||||
Julien Thierry <julien.thierry.kdev@gmail.com> <julien.thierry@arm.com>
|
||||
Justin Iurman <justin.iurman@gmail.com> <justin.iurman@uliege.be>
|
||||
Iskren Chernev <me@iskren.info> <iskren.chernev@gmail.com>
|
||||
Kalle Valo <kvalo@kernel.org> <kvalo@codeaurora.org>
|
||||
Kalle Valo <kvalo@kernel.org> <quic_kvalo@quicinc.com>
|
||||
@@ -471,6 +473,10 @@ Linas Vepstas <linas@austin.ibm.com>
|
||||
Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch>
|
||||
Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@web.de>
|
||||
Linus Lüssing <linus.luessing@c0d3.blue> <ll@simonwunderlich.de>
|
||||
Linus Walleij <linusw@kernel.org> <linus.walleij@ericsson.com>
|
||||
Linus Walleij <linusw@kernel.org> <linus.walleij@stericsson.com>
|
||||
Linus Walleij <linusw@kernel.org> <linus.walleij@linaro.org>
|
||||
Linus Walleij <linusw@kernel.org> <triad@df.lth.se>
|
||||
<linux-hardening@vger.kernel.org> <kernel-hardening@lists.openwall.com>
|
||||
Li Yang <leoyang.li@nxp.com> <leoli@freescale.com>
|
||||
Li Yang <leoyang.li@nxp.com> <leo@zh-kernel.org>
|
||||
@@ -704,6 +710,8 @@ Sankeerth Billakanti <quic_sbillaka@quicinc.com> <sbillaka@codeaurora.org>
|
||||
Santosh Shilimkar <santosh.shilimkar@oracle.org>
|
||||
Santosh Shilimkar <ssantosh@kernel.org>
|
||||
Sarangdhar Joshi <spjoshi@codeaurora.org>
|
||||
Saravana Kannan <saravanak@kernel.org> <skannan@codeaurora.org>
|
||||
Saravana Kannan <saravanak@kernel.org> <saravanak@google.com>
|
||||
Sascha Hauer <s.hauer@pengutronix.de>
|
||||
Sahitya Tummala <quic_stummala@quicinc.com> <stummala@codeaurora.org>
|
||||
Sathishkumar Muruganandam <quic_murugana@quicinc.com> <murugana@codeaurora.org>
|
||||
@@ -793,6 +801,7 @@ Tanzir Hasan <tanzhasanwork@gmail.com> <tanzirh@google.com>
|
||||
Tejun Heo <htejun@gmail.com>
|
||||
Tomeu Vizoso <tomeu@tomeuvizoso.net> <tomeu.vizoso@collabora.com>
|
||||
Thomas Graf <tgraf@suug.ch>
|
||||
Thomas Gleixner <tglx@kernel.org> <tglx@linutronix.de>
|
||||
Thomas Körper <socketcan@esd.eu> <thomas.koerper@esd.eu>
|
||||
Thomas Pedersen <twp@codeaurora.org>
|
||||
Thorsten Blum <thorsten.blum@linux.dev> <thorsten.blum@toblux.com>
|
||||
@@ -857,7 +866,6 @@ Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
|
||||
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
|
||||
WangYuli <wangyuli@aosc.io> <wangyl5933@chinaunicom.cn>
|
||||
WangYuli <wangyuli@aosc.io> <wangyuli@deepin.org>
|
||||
WangYuli <wangyuli@aosc.io> <wangyuli@uniontech.com>
|
||||
Weiwen Hu <huweiwen@linux.alibaba.com> <sehuww@mail.scut.edu.cn>
|
||||
WeiXiong Liao <gmpy.liaowx@gmail.com> <liaoweixiong@allwinnertech.com>
|
||||
Wen Gong <quic_wgong@quicinc.com> <wgong@codeaurora.org>
|
||||
|
||||
2
CREDITS
2
CREDITS
@@ -1398,7 +1398,7 @@ D: SRM environment driver (for Alpha systems)
|
||||
P: 1024D/8399E1BB 250D 3BCF 7127 0D8C A444 A961 1DBD 5E75 8399 E1BB
|
||||
|
||||
N: Thomas Gleixner
|
||||
E: tglx@linutronix.de
|
||||
E: tglx@kernel.org
|
||||
D: NAND flash hardware support, JFFS2 on NAND flash
|
||||
|
||||
N: Jérôme Glisse
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
What: /sys/kernel/time/aux_clocks/<ID>/enable
|
||||
Date: May 2025
|
||||
Contact: Thomas Gleixner <tglx@linutronix.de>
|
||||
Contact: Thomas Gleixner <tglx@kernel.org>
|
||||
Description:
|
||||
Controls the enablement of auxiliary clock timekeepers.
|
||||
|
||||
@@ -17,14 +17,14 @@ Date: January 2012
|
||||
contact: Lee Jones <lee@kernel.org>
|
||||
Description:
|
||||
Read-only attribute common to all SoCs. Contains the SoC machine
|
||||
name (e.g. Ux500).
|
||||
name (e.g. DB8500).
|
||||
|
||||
What: /sys/devices/socX/family
|
||||
Date: January 2012
|
||||
contact: Lee Jones <lee@kernel.org>
|
||||
Description:
|
||||
Read-only attribute common to all SoCs. Contains SoC family name
|
||||
(e.g. DB8500).
|
||||
(e.g. ux500).
|
||||
|
||||
On many of ARM based silicon with SMCCC v1.2+ compliant firmware
|
||||
this will contain the JEDEC JEP106 manufacturer’s identification
|
||||
|
||||
@@ -281,6 +281,14 @@ The following keys are defined:
|
||||
* :c:macro:`RISCV_HWPROBE_EXT_ZICBOP`: The Zicbop extension is supported, as
|
||||
ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs.
|
||||
|
||||
* :c:macro:`RISCV_HWPROBE_EXT_ZILSD`: The Zilsd extension is supported as
|
||||
defined in the RISC-V ISA manual starting from commit f88abf1 ("Integrating
|
||||
load/store pair for RV32 with the main manual") of the riscv-isa-manual.
|
||||
|
||||
* :c:macro:`RISCV_HWPROBE_EXT_ZCLSD`: The Zclsd extension is supported as
|
||||
defined in the RISC-V ISA manual starting from commit f88abf1 ("Integrating
|
||||
load/store pair for RV32 with the main manual") of the riscv-isa-manual.
|
||||
|
||||
* :c:macro:`RISCV_HWPROBE_KEY_CPUPERF_0`: Deprecated. Returns similar values to
|
||||
:c:macro:`RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF`, but the key was
|
||||
mistakenly classified as a bitmask rather than a value.
|
||||
|
||||
@@ -17,7 +17,7 @@ with the generic one and look at this one in parallel for the x86 specifics.
|
||||
Needless to say, code should use the generic functions - this file is *only*
|
||||
here to *document* the inner workings of x86 topology.
|
||||
|
||||
Started by Thomas Gleixner <tglx@linutronix.de> and Borislav Petkov <bp@alien8.de>.
|
||||
Started by Thomas Gleixner <tglx@kernel.org> and Borislav Petkov <bp@alien8.de>.
|
||||
|
||||
The main aim of the topology facilities is to present adequate interfaces to
|
||||
code which needs to know/query/use the structure of the running system wrt
|
||||
|
||||
@@ -8,7 +8,7 @@ CPU hotplug in the Kernel
|
||||
Srivatsa Vaddagiri <vatsa@in.ibm.com>,
|
||||
Ashok Raj <ashok.raj@intel.com>,
|
||||
Joel Schopp <jschopp@austin.ibm.com>,
|
||||
Thomas Gleixner <tglx@linutronix.de>
|
||||
Thomas Gleixner <tglx@kernel.org>
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
@@ -439,6 +439,6 @@ Credits
|
||||
|
||||
The following people have contributed to this document:
|
||||
|
||||
1. Thomas Gleixner tglx@linutronix.de
|
||||
1. Thomas Gleixner tglx@kernel.org
|
||||
|
||||
2. Ingo Molnar mingo@elte.hu
|
||||
|
||||
@@ -209,4 +209,4 @@ testing. Thanks a lot.
|
||||
|
||||
The following people have contributed to this document:
|
||||
|
||||
Thomas Gleixner\ tglx@linutronix.de
|
||||
Thomas Gleixner\ tglx@kernel.org
|
||||
|
||||
@@ -1105,7 +1105,6 @@ properties:
|
||||
- gateworks,imx8mp-gw74xx # i.MX8MP Gateworks Board
|
||||
- gateworks,imx8mp-gw75xx-2x # i.MX8MP Gateworks Board
|
||||
- gateworks,imx8mp-gw82xx-2x # i.MX8MP Gateworks Board
|
||||
- gocontroll,moduline-display # GOcontroll Moduline Display controller
|
||||
- prt,prt8ml # Protonic PRT8ML
|
||||
- skov,imx8mp-skov-basic # SKOV i.MX8MP baseboard without frontplate
|
||||
- skov,imx8mp-skov-revb-hdmi # SKOV i.MX8MP climate control without panel
|
||||
@@ -1164,6 +1163,14 @@ properties:
|
||||
- const: engicam,icore-mx8mp # i.MX8MP Engicam i.Core MX8M Plus SoM
|
||||
- const: fsl,imx8mp
|
||||
|
||||
- description: Ka-Ro TX8P-ML81 SoM based boards
|
||||
items:
|
||||
- enum:
|
||||
- gocontroll,moduline-display
|
||||
- gocontroll,moduline-display-106
|
||||
- const: karo,tx8p-ml81
|
||||
- const: fsl,imx8mp
|
||||
|
||||
- description: Kontron i.MX8MP OSM-S SoM based Boards
|
||||
items:
|
||||
- const: kontron,imx8mp-bl-osm-s # Kontron BL i.MX8MP OSM-S Board
|
||||
|
||||
@@ -25,6 +25,10 @@ properties:
|
||||
items:
|
||||
- const: pci1de4,1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
description: The PCI Bus-Device-Function address.
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
description: |
|
||||
@@ -101,6 +105,7 @@ unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- '#interrupt-cells'
|
||||
- interrupt-controller
|
||||
- pci-ep-bus@1
|
||||
@@ -111,8 +116,9 @@ examples:
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
rp1@0,0 {
|
||||
dev@0,0 {
|
||||
compatible = "pci1de4,1";
|
||||
reg = <0x10000 0x0 0x0 0x0 0x0>;
|
||||
ranges = <0x01 0x00 0x00000000 0x82010000 0x00 0x00 0x00 0x400000>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
@@ -377,6 +377,20 @@ properties:
|
||||
guarantee on LR/SC sequences, as ratified in commit b1d806605f87
|
||||
("Updated to ratified state.") of the riscv profiles specification.
|
||||
|
||||
- const: zilsd
|
||||
description:
|
||||
The standard Zilsd extension which provides support for aligned
|
||||
register-pair load and store operations in 32-bit instruction
|
||||
encodings, as ratified in commit f88abf1 ("Integrating
|
||||
load/store pair for RV32 with the main manual") of riscv-isa-manual.
|
||||
|
||||
- const: zclsd
|
||||
description:
|
||||
The Zclsd extension implements the compressed (16-bit) version of the
|
||||
Load/Store Pair for RV32. As with Zilsd, this extension was ratified
|
||||
in commit f88abf1 ("Integrating load/store pair for RV32 with the
|
||||
main manual") of riscv-isa-manual.
|
||||
|
||||
- const: zk
|
||||
description:
|
||||
The standard Zk Standard Scalar cryptography extension as ratified
|
||||
@@ -882,6 +896,16 @@ properties:
|
||||
anyOf:
|
||||
- const: v
|
||||
- const: zve32x
|
||||
# Zclsd depends on Zilsd and Zca
|
||||
- if:
|
||||
contains:
|
||||
anyOf:
|
||||
- const: zclsd
|
||||
then:
|
||||
contains:
|
||||
allOf:
|
||||
- const: zilsd
|
||||
- const: zca
|
||||
|
||||
allOf:
|
||||
# Zcf extension does not exist on rv64
|
||||
@@ -899,6 +923,18 @@ allOf:
|
||||
not:
|
||||
contains:
|
||||
const: zcf
|
||||
# Zilsd extension does not exist on rv64
|
||||
- if:
|
||||
properties:
|
||||
riscv,isa-base:
|
||||
contains:
|
||||
const: rv64i
|
||||
then:
|
||||
properties:
|
||||
riscv,isa-extensions:
|
||||
not:
|
||||
contains:
|
||||
const: zilsd
|
||||
|
||||
additionalProperties: true
|
||||
...
|
||||
|
||||
@@ -17,6 +17,7 @@ properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: allwinner,sun50i-r329-spi
|
||||
- const: allwinner,sun55i-a523-spi
|
||||
- const: allwinner,sun6i-a31-spi
|
||||
- const: allwinner,sun8i-h3-spi
|
||||
- items:
|
||||
@@ -35,6 +36,9 @@ properties:
|
||||
- const: allwinner,sun20i-d1-spi-dbi
|
||||
- const: allwinner,sun50i-r329-spi-dbi
|
||||
- const: allwinner,sun50i-r329-spi
|
||||
- items:
|
||||
- const: allwinner,sun55i-a523-spi-dbi
|
||||
- const: allwinner,sun55i-a523-spi
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -8,7 +8,7 @@ title: Marvell MMP Timer
|
||||
|
||||
maintainers:
|
||||
- Daniel Lezcano <daniel.lezcano@linaro.org>
|
||||
- Thomas Gleixner <tglx@linutronix.de>
|
||||
- Thomas Gleixner <tglx@kernel.org>
|
||||
- Rob Herring <robh@kernel.org>
|
||||
|
||||
properties:
|
||||
|
||||
@@ -996,11 +996,11 @@ The following people have contributed to the NAND driver:
|
||||
|
||||
2. David Woodhouse\ dwmw2@infradead.org
|
||||
|
||||
3. Thomas Gleixner\ tglx@linutronix.de
|
||||
3. Thomas Gleixner\ tglx@kernel.org
|
||||
|
||||
A lot of users have provided bugfixes, improvements and helping hands
|
||||
for testing. Thanks a lot.
|
||||
|
||||
The following people have contributed to this document:
|
||||
|
||||
1. Thomas Gleixner\ tglx@linutronix.de
|
||||
1. Thomas Gleixner\ tglx@kernel.org
|
||||
|
||||
@@ -416,6 +416,7 @@ lm_change yes no no
|
||||
lm_breaker_owns_lease: yes no no
|
||||
lm_lock_expirable yes no no
|
||||
lm_expire_lock no no yes
|
||||
lm_open_conflict yes no no
|
||||
====================== ============= ================= =========
|
||||
|
||||
buffer_head
|
||||
|
||||
@@ -142,7 +142,7 @@ attribute-sets:
|
||||
name: ifindex
|
||||
doc: |
|
||||
ifindex of the netdev to which the pool belongs.
|
||||
May be reported as 0 if the page pool was allocated for a netdev
|
||||
May not be reported if the page pool was allocated for a netdev
|
||||
which got destroyed already (page pools may outlast their netdevs
|
||||
because they wait for all memory to be returned).
|
||||
type: u32
|
||||
@@ -601,7 +601,9 @@ operations:
|
||||
name: page-pool-get
|
||||
doc: |
|
||||
Get / dump information about Page Pools.
|
||||
(Only Page Pools associated with a net_device can be listed.)
|
||||
Only Page Pools associated by the driver with a net_device
|
||||
can be listed. ifindex will not be reported if the net_device
|
||||
no longer exists.
|
||||
attribute-set: page-pool
|
||||
do:
|
||||
request:
|
||||
|
||||
@@ -57,8 +57,10 @@ Submitting Patches for Given SoC
|
||||
|
||||
All typical platform related patches should be sent via SoC submaintainers
|
||||
(platform-specific maintainers). This includes also changes to per-platform or
|
||||
shared defconfigs (scripts/get_maintainer.pl might not provide correct
|
||||
addresses in such case).
|
||||
shared defconfigs. Note that scripts/get_maintainer.pl might not provide
|
||||
correct addresses for the shared defconfig, so ignore its output and manually
|
||||
create CC-list based on MAINTAINERS file or use something like
|
||||
``scripts/get_maintainer.pl -f drivers/soc/FOO/``).
|
||||
|
||||
Submitting Patches to the Main SoC Maintainers
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -114,9 +116,9 @@ coordinating how the changes get merged through different maintainer trees.
|
||||
Usually the branch that includes a driver change will also include the
|
||||
corresponding change to the devicetree binding description, to ensure they are
|
||||
in fact compatible. This means that the devicetree branch can end up causing
|
||||
warnings in the "make dtbs_check" step. If a devicetree change depends on
|
||||
warnings in the ``make dtbs_check`` step. If a devicetree change depends on
|
||||
missing additions to a header file in include/dt-bindings/, it will fail the
|
||||
"make dtbs" step and not get merged.
|
||||
``make dtbs`` step and not get merged.
|
||||
|
||||
There are multiple ways to deal with this:
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
Srivatsa Vaddagiri <vatsa@in.ibm.com>,
|
||||
Ashok Raj <ashok.raj@intel.com>,
|
||||
Joel Schopp <jschopp@austin.ibm.com>,
|
||||
Thomas Gleixner <tglx@linutronix.de>
|
||||
Thomas Gleixner <tglx@kernel.org>
|
||||
|
||||
简介
|
||||
====
|
||||
|
||||
@@ -404,6 +404,6 @@ kernel/irq/chip.c
|
||||
|
||||
感谢以下人士对本文档作出的贡献:
|
||||
|
||||
1. Thomas Gleixner tglx@linutronix.de
|
||||
1. Thomas Gleixner tglx@kernel.org
|
||||
|
||||
2. Ingo Molnar mingo@elte.hu
|
||||
|
||||
70
MAINTAINERS
70
MAINTAINERS
@@ -1283,6 +1283,7 @@ F: include/uapi/drm/amdxdna_accel.h
|
||||
|
||||
AMD XGBE DRIVER
|
||||
M: "Shyam Sundar S K" <Shyam-sundar.S-k@amd.com>
|
||||
M: Raju Rangoju <Raju.Rangoju@amd.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
|
||||
@@ -2011,7 +2012,7 @@ ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS)
|
||||
M: Arnd Bergmann <arnd@arndb.de>
|
||||
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||
M: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
M: Linus Walleij <linus.walleij@linaro.org>
|
||||
M: Linus Walleij <linusw@kernel.org>
|
||||
R: Drew Fustini <fustini@kernel.org>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
L: soc@lists.linux.dev
|
||||
@@ -2158,7 +2159,7 @@ M: Alice Ryhl <aliceryhl@google.com>
|
||||
L: dri-devel@lists.freedesktop.org
|
||||
S: Supported
|
||||
W: https://rust-for-linux.com/tyr-gpu-driver
|
||||
W https://drm.pages.freedesktop.org/maintainer-tools/drm-rust.html
|
||||
W: https://drm.pages.freedesktop.org/maintainer-tools/drm-rust.html
|
||||
B: https://gitlab.freedesktop.org/panfrost/linux/-/issues
|
||||
T: git https://gitlab.freedesktop.org/drm/rust/kernel.git
|
||||
F: Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml
|
||||
@@ -5801,7 +5802,8 @@ F: drivers/power/supply/cw2015_battery.c
|
||||
|
||||
CEPH COMMON CODE (LIBCEPH)
|
||||
M: Ilya Dryomov <idryomov@gmail.com>
|
||||
M: Xiubo Li <xiubli@redhat.com>
|
||||
M: Alex Markuze <amarkuze@redhat.com>
|
||||
M: Viacheslav Dubeyko <slava@dubeyko.com>
|
||||
L: ceph-devel@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://ceph.com/
|
||||
@@ -5812,8 +5814,9 @@ F: include/linux/crush/
|
||||
F: net/ceph/
|
||||
|
||||
CEPH DISTRIBUTED FILE SYSTEM CLIENT (CEPH)
|
||||
M: Xiubo Li <xiubli@redhat.com>
|
||||
M: Ilya Dryomov <idryomov@gmail.com>
|
||||
M: Alex Markuze <amarkuze@redhat.com>
|
||||
M: Viacheslav Dubeyko <slava@dubeyko.com>
|
||||
L: ceph-devel@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://ceph.com/
|
||||
@@ -6172,7 +6175,7 @@ F: include/linux/clk.h
|
||||
|
||||
CLOCKSOURCE, CLOCKEVENT DRIVERS
|
||||
M: Daniel Lezcano <daniel.lezcano@linaro.org>
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
|
||||
@@ -6532,13 +6535,13 @@ F: rust/kernel/cpufreq.rs
|
||||
F: tools/testing/selftests/cpufreq/
|
||||
|
||||
CPU FREQUENCY DRIVERS - VIRTUAL MACHINE CPUFREQ
|
||||
M: Saravana Kannan <saravanak@google.com>
|
||||
M: Saravana Kannan <saravanak@kernel.org>
|
||||
L: linux-pm@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/cpufreq/virtual-cpufreq.c
|
||||
|
||||
CPU HOTPLUG
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: Peter Zijlstra <peterz@infradead.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
@@ -6705,6 +6708,7 @@ S: Maintained
|
||||
T: git https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git libcrypto-next
|
||||
T: git https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git libcrypto-fixes
|
||||
F: lib/crypto/
|
||||
F: scripts/crypto/
|
||||
|
||||
CRYPTO SPEED TEST COMPARE
|
||||
M: Wang Jinchao <wangjinchao@xfusion.com>
|
||||
@@ -6965,7 +6969,7 @@ F: Documentation/scsi/dc395x.rst
|
||||
F: drivers/scsi/dc395x.*
|
||||
|
||||
DEBUGOBJECTS:
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/debugobjects
|
||||
@@ -7170,7 +7174,7 @@ F: drivers/base/devcoredump.c
|
||||
F: include/linux/devcoredump.h
|
||||
|
||||
DEVICE DEPENDENCY HELPER SCRIPT
|
||||
M: Saravana Kannan <saravanak@google.com>
|
||||
M: Saravana Kannan <saravanak@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
F: scripts/dev-needs.sh
|
||||
@@ -8067,7 +8071,7 @@ W: https://rust-for-linux.com/nova-gpu-driver
|
||||
Q: https://patchwork.freedesktop.org/project/nouveau/
|
||||
B: https://gitlab.freedesktop.org/drm/nova/-/issues
|
||||
C: irc://irc.oftc.net/nouveau
|
||||
T: git https://gitlab.freedesktop.org/drm/nova.git nova-next
|
||||
T: git https://gitlab.freedesktop.org/drm/rust/kernel.git drm-rust-next
|
||||
F: Documentation/gpu/nova/
|
||||
F: drivers/gpu/nova-core/
|
||||
|
||||
@@ -8079,7 +8083,7 @@ W: https://rust-for-linux.com/nova-gpu-driver
|
||||
Q: https://patchwork.freedesktop.org/project/nouveau/
|
||||
B: https://gitlab.freedesktop.org/drm/nova/-/issues
|
||||
C: irc://irc.oftc.net/nouveau
|
||||
T: git https://gitlab.freedesktop.org/drm/nova.git nova-next
|
||||
T: git https://gitlab.freedesktop.org/drm/rust/kernel.git drm-rust-next
|
||||
F: Documentation/gpu/nova/
|
||||
F: drivers/gpu/drm/nova/
|
||||
F: include/uapi/drm/nova_drm.h
|
||||
@@ -8357,6 +8361,7 @@ X: drivers/gpu/drm/msm/
|
||||
X: drivers/gpu/drm/nova/
|
||||
X: drivers/gpu/drm/radeon/
|
||||
X: drivers/gpu/drm/tegra/
|
||||
X: drivers/gpu/drm/tyr/
|
||||
X: drivers/gpu/drm/xe/
|
||||
|
||||
DRM DRIVERS AND COMMON INFRASTRUCTURE [RUST]
|
||||
@@ -10367,7 +10372,7 @@ F: include/uapi/linux/fuse.h
|
||||
F: tools/testing/selftests/filesystems/fuse/
|
||||
|
||||
FUTEX SUBSYSTEM
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: Ingo Molnar <mingo@redhat.com>
|
||||
R: Peter Zijlstra <peterz@infradead.org>
|
||||
R: Darren Hart <dvhart@infradead.org>
|
||||
@@ -10511,7 +10516,7 @@ F: drivers/base/arch_topology.c
|
||||
F: include/linux/arch_topology.h
|
||||
|
||||
GENERIC ENTRY CODE
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: Peter Zijlstra <peterz@infradead.org>
|
||||
M: Andy Lutomirski <luto@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
@@ -10624,7 +10629,7 @@ F: drivers/uio/uio_pci_generic.c
|
||||
|
||||
GENERIC VDSO LIBRARY
|
||||
M: Andy Lutomirski <luto@kernel.org>
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: Vincenzo Frascino <vincenzo.frascino@arm.com>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
@@ -11237,7 +11242,7 @@ F: drivers/hid/hid-logitech-hidpp.c
|
||||
HIGH-RESOLUTION TIMERS, TIMER WHEEL, CLOCKEVENTS
|
||||
M: Anna-Maria Behnsen <anna-maria@linutronix.de>
|
||||
M: Frederic Weisbecker <frederic@kernel.org>
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
|
||||
@@ -11260,7 +11265,7 @@ R: Boqun Feng <boqun.feng@gmail.com>
|
||||
R: FUJITA Tomonori <fujita.tomonori@gmail.com>
|
||||
R: Frederic Weisbecker <frederic@kernel.org>
|
||||
R: Lyude Paul <lyude@redhat.com>
|
||||
R: Thomas Gleixner <tglx@linutronix.de>
|
||||
R: Thomas Gleixner <tglx@kernel.org>
|
||||
R: Anna-Maria Behnsen <anna-maria@linutronix.de>
|
||||
R: John Stultz <jstultz@google.com>
|
||||
R: Stephen Boyd <sboyd@kernel.org>
|
||||
@@ -13330,7 +13335,7 @@ F: Documentation/devicetree/bindings/sound/irondevice,*
|
||||
F: sound/soc/codecs/sma*
|
||||
|
||||
IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
|
||||
F: Documentation/core-api/irq/irq-domain.rst
|
||||
@@ -13340,7 +13345,7 @@ F: kernel/irq/irqdomain.c
|
||||
F: kernel/irq/msi.c
|
||||
|
||||
IRQ SUBSYSTEM
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
|
||||
@@ -13353,7 +13358,7 @@ F: kernel/irq/
|
||||
F: lib/group_cpus.c
|
||||
|
||||
IRQCHIP DRIVERS
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
|
||||
@@ -13959,6 +13964,7 @@ S: Maintained
|
||||
F: Documentation/admin-guide/mm/kho.rst
|
||||
F: Documentation/core-api/kho/*
|
||||
F: include/linux/kexec_handover.h
|
||||
F: include/linux/kho/
|
||||
F: kernel/liveupdate/kexec_handover*
|
||||
F: lib/test_kho.c
|
||||
F: tools/testing/selftests/kho/
|
||||
@@ -14446,7 +14452,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-nonmm-unstab
|
||||
F: lib/*
|
||||
|
||||
LICENSES and SPDX stuff
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
L: linux-spdx@vger.kernel.org
|
||||
S: Maintained
|
||||
@@ -14637,6 +14643,7 @@ S: Maintained
|
||||
F: Documentation/core-api/liveupdate.rst
|
||||
F: Documentation/mm/memfd_preservation.rst
|
||||
F: Documentation/userspace-api/liveupdate.rst
|
||||
F: include/linux/kho/abi/
|
||||
F: include/linux/liveupdate.h
|
||||
F: include/linux/liveupdate/
|
||||
F: include/uapi/linux/liveupdate.h
|
||||
@@ -16426,6 +16433,7 @@ MEMORY HOT(UN)PLUG
|
||||
M: David Hildenbrand <david@kernel.org>
|
||||
M: Oscar Salvador <osalvador@suse.de>
|
||||
L: linux-mm@kvack.org
|
||||
L: linux-cxl@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/admin-guide/mm/memory-hotplug.rst
|
||||
F: Documentation/core-api/memory-hotplug.rst
|
||||
@@ -16751,6 +16759,7 @@ F: tools/testing/selftests/mm/transhuge-stress.c
|
||||
|
||||
MEMORY MANAGEMENT - USERFAULTFD
|
||||
M: Andrew Morton <akpm@linux-foundation.org>
|
||||
M: Mike Rapoport <rppt@kernel.org>
|
||||
R: Peter Xu <peterx@redhat.com>
|
||||
L: linux-mm@kvack.org
|
||||
S: Maintained
|
||||
@@ -18279,7 +18288,7 @@ X: net/wireless/
|
||||
X: tools/testing/selftests/net/can/
|
||||
|
||||
NETWORKING [IOAM]
|
||||
M: Justin Iurman <justin.iurman@uliege.be>
|
||||
M: Justin Iurman <justin.iurman@gmail.com>
|
||||
S: Maintained
|
||||
F: Documentation/networking/ioam6*
|
||||
F: include/linux/ioam6*
|
||||
@@ -18568,7 +18577,7 @@ NOHZ, DYNTICKS SUPPORT
|
||||
M: Anna-Maria Behnsen <anna-maria@linutronix.de>
|
||||
M: Frederic Weisbecker <frederic@kernel.org>
|
||||
M: Ingo Molnar <mingo@kernel.org>
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/nohz
|
||||
@@ -19543,7 +19552,7 @@ F: include/linux/oa_tc6.h
|
||||
|
||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
||||
M: Rob Herring <robh@kernel.org>
|
||||
M: Saravana Kannan <saravanak@google.com>
|
||||
M: Saravana Kannan <saravanak@kernel.org>
|
||||
L: devicetree@vger.kernel.org
|
||||
S: Maintained
|
||||
Q: http://patchwork.kernel.org/project/devicetree/list/
|
||||
@@ -20753,7 +20762,7 @@ F: drivers/platform/x86/portwell-ec.c
|
||||
POSIX CLOCKS and TIMERS
|
||||
M: Anna-Maria Behnsen <anna-maria@linutronix.de>
|
||||
M: Frederic Weisbecker <frederic@kernel.org>
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
|
||||
@@ -21345,7 +21354,7 @@ F: Documentation/devicetree/bindings/net/qcom,bam-dmux.yaml
|
||||
F: drivers/net/wwan/qcom_bam_dmux.c
|
||||
|
||||
QUALCOMM BLUETOOTH DRIVER
|
||||
M: Bartosz Golaszewski <brgl@bgdev.pl>
|
||||
M: Bartosz Golaszewski <brgl@kernel.org>
|
||||
L: linux-arm-msm@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/bluetooth/btqca.[ch]
|
||||
@@ -24571,7 +24580,7 @@ F: drivers/tty/vcc.c
|
||||
F: include/linux/sunserialcore.h
|
||||
|
||||
SPARSE CHECKER
|
||||
M: "Luc Van Oostenryck" <luc.vanoostenryck@gmail.com>
|
||||
M: Chris Li <sparse@chrisli.org>
|
||||
L: linux-sparse@vger.kernel.org
|
||||
S: Maintained
|
||||
W: https://sparse.docs.kernel.org/
|
||||
@@ -26264,7 +26273,7 @@ F: drivers/net/wireless/ti/
|
||||
|
||||
TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
|
||||
M: John Stultz <jstultz@google.com>
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
R: Stephen Boyd <sboyd@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
@@ -27920,6 +27929,7 @@ F: drivers/regulator/
|
||||
F: rust/kernel/regulator.rs
|
||||
F: include/dt-bindings/regulator/
|
||||
F: include/linux/regulator/
|
||||
F: include/uapi/regulator/
|
||||
K: regulator_get_optional
|
||||
|
||||
VOLTAGE AND CURRENT REGULATOR IRQ HELPERS
|
||||
@@ -28194,7 +28204,7 @@ F: net/lapb/
|
||||
F: net/x25/
|
||||
|
||||
X86 ARCHITECTURE (32-BIT AND 64-BIT)
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: Ingo Molnar <mingo@redhat.com>
|
||||
M: Borislav Petkov <bp@alien8.de>
|
||||
M: Dave Hansen <dave.hansen@linux.intel.com>
|
||||
@@ -28210,7 +28220,7 @@ F: tools/testing/selftests/x86
|
||||
|
||||
X86 CPUID DATABASE
|
||||
M: Borislav Petkov <bp@alien8.de>
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: x86@kernel.org
|
||||
R: Ahmed S. Darwish <darwi@linutronix.de>
|
||||
L: x86-cpuid@lists.linux.dev
|
||||
@@ -28226,7 +28236,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/asm
|
||||
F: arch/x86/entry/
|
||||
|
||||
X86 HARDWARE VULNERABILITIES
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
M: Thomas Gleixner <tglx@kernel.org>
|
||||
M: Borislav Petkov <bp@alien8.de>
|
||||
M: Peter Zijlstra <peterz@infradead.org>
|
||||
M: Josh Poimboeuf <jpoimboe@kernel.org>
|
||||
|
||||
2
Makefile
2
Makefile
@@ -2,7 +2,7 @@
|
||||
VERSION = 6
|
||||
PATCHLEVEL = 19
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc2
|
||||
EXTRAVERSION = -rc5
|
||||
NAME = Baby Opossum Posse
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
||||
@@ -12,6 +12,17 @@
|
||||
model = "Actiontec MI424WR rev A/C";
|
||||
compatible = "actiontec,mi424wr-ac", "intel,ixp42x";
|
||||
|
||||
/* Connect the switch to EthC */
|
||||
spi {
|
||||
ethernet-switch@0 {
|
||||
ethernet-ports {
|
||||
ethernet-port@4 {
|
||||
ethernet = <ðc>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
/* EthB used for WAN */
|
||||
ethernet@c8009000 {
|
||||
|
||||
@@ -12,6 +12,17 @@
|
||||
model = "Actiontec MI424WR rev D";
|
||||
compatible = "actiontec,mi424wr-d", "intel,ixp42x";
|
||||
|
||||
/* Connect the switch to EthB */
|
||||
spi {
|
||||
ethernet-switch@0 {
|
||||
ethernet-ports {
|
||||
ethernet-port@4 {
|
||||
ethernet = <ðb>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
/* EthB used for LAN */
|
||||
ethernet@c8009000 {
|
||||
|
||||
@@ -152,7 +152,6 @@
|
||||
};
|
||||
ethernet-port@4 {
|
||||
reg = <4>;
|
||||
ethernet = <ðc>;
|
||||
phy-mode = "mii";
|
||||
fixed-link {
|
||||
speed = <100>;
|
||||
|
||||
@@ -248,14 +248,14 @@
|
||||
linux,default-trigger = "nand-disk";
|
||||
};
|
||||
|
||||
ledg3: led@10 {
|
||||
reg = <10>;
|
||||
ledg3: led@a {
|
||||
reg = <0xa>;
|
||||
label = "system:green3:live";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
|
||||
ledb3: led@11 {
|
||||
reg = <11>;
|
||||
ledb3: led@b {
|
||||
reg = <0xb>;
|
||||
label = "system:blue3:cpu";
|
||||
linux,default-trigger = "cpu0";
|
||||
};
|
||||
|
||||
@@ -398,13 +398,13 @@
|
||||
#size-cells = <0>;
|
||||
led-control = <0x0 0x0 0x3f83f8 0x0>;
|
||||
|
||||
sysled0@3 {
|
||||
led@3 {
|
||||
reg = <3>;
|
||||
label = "system:green:status";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
sysled1@4 {
|
||||
led@4 {
|
||||
reg = <4>;
|
||||
label = "system:green:act";
|
||||
linux,default-trigger = "heartbeat";
|
||||
|
||||
@@ -225,13 +225,13 @@
|
||||
#size-cells = <0>;
|
||||
led-control = <0x0 0x0 0x3f83f8 0x0>;
|
||||
|
||||
sysled3: led3@3 {
|
||||
sysled3: led@3 {
|
||||
reg = <3>;
|
||||
label = "system:red:power";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
sysled4: led4@4 {
|
||||
sysled4: led@4 {
|
||||
reg = <4>;
|
||||
label = "system:green:act";
|
||||
linux,default-trigger = "heartbeat";
|
||||
|
||||
@@ -153,13 +153,13 @@
|
||||
#size-cells = <0>;
|
||||
led-control = <0x0 0x0 0x3f83f8 0x0>;
|
||||
|
||||
sysled3: led3@3 {
|
||||
sysled3: led@3 {
|
||||
reg = <3>;
|
||||
label = "system:red:power";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
sysled4: led4@4 {
|
||||
sysled4: led@4 {
|
||||
reg = <4>;
|
||||
label = "system:green:act";
|
||||
linux,default-trigger = "heartbeat";
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
pinctrl-0 = <&pinctrl_rtc>;
|
||||
reg = <0x32>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -7,15 +7,13 @@ dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-400.dtb \
|
||||
bcm2711-rpi-4-b.dtb \
|
||||
bcm2711-rpi-cm4-io.dtb \
|
||||
bcm2712-rpi-5-b.dtb \
|
||||
bcm2712-rpi-5-b-ovl-rp1.dtb \
|
||||
bcm2712-d-rpi-5-b.dtb \
|
||||
bcm2837-rpi-2-b.dtb \
|
||||
bcm2837-rpi-3-a-plus.dtb \
|
||||
bcm2837-rpi-3-b.dtb \
|
||||
bcm2837-rpi-3-b-plus.dtb \
|
||||
bcm2837-rpi-cm3-io3.dtb \
|
||||
bcm2837-rpi-zero-2-w.dtb \
|
||||
rp1.dtbo
|
||||
bcm2837-rpi-zero-2-w.dtb
|
||||
|
||||
subdir-y += bcmbca
|
||||
subdir-y += northstar2
|
||||
|
||||
@@ -1,22 +1,16 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||
/*
|
||||
* bcm2712-rpi-5-b-ovl-rp1.dts is the overlay-ready DT which will make
|
||||
* the RP1 driver to load the RP1 dtb overlay at runtime, while
|
||||
* bcm2712-rpi-5-b.dts (this file) is the fully defined one (i.e. it
|
||||
* already contains RP1 node, so no overlay is loaded nor needed).
|
||||
* This file is intended to host the override nodes for the RP1 peripherals,
|
||||
* e.g. to declare the phy of the ethernet interface or the custom pin setup
|
||||
* for several RP1 peripherals.
|
||||
* This in turn is due to the fact that there's no current generic
|
||||
* infrastructure to reference nodes (i.e. the nodes in rp1-common.dtsi) that
|
||||
* are not yet defined in the DT since they are loaded at runtime via overlay.
|
||||
* As a loose attempt to separate RP1 customizations from SoC peripherals
|
||||
* definitioni, this file is intended to host the override nodes for the RP1
|
||||
* peripherals, e.g. to declare the phy of the ethernet interface or custom
|
||||
* pin setup.
|
||||
* All other nodes that do not have anything to do with RP1 should be added
|
||||
* to the included bcm2712-rpi-5-b-ovl-rp1.dts instead.
|
||||
* to the included bcm2712-rpi-5-b-base.dtsi instead.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm2712-rpi-5-b-ovl-rp1.dts"
|
||||
#include "bcm2712-rpi-5-b-base.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
@@ -25,7 +19,26 @@
|
||||
};
|
||||
|
||||
&pcie2 {
|
||||
#include "rp1-nexus.dtsi"
|
||||
pci@0,0 {
|
||||
reg = <0x0 0x0 0x0 0x0 0x0>;
|
||||
ranges;
|
||||
bus-range = <0 1>;
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
dev@0,0 {
|
||||
compatible = "pci1de4,1";
|
||||
reg = <0x10000 0x0 0x0 0x0 0x0>;
|
||||
ranges = <0x1 0x0 0x0 0x82010000 0x0 0x0 0x0 0x400000>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
#include "rp1-common.dtsi"
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&rp1_eth {
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||
|
||||
rp1_nexus {
|
||||
compatible = "pci1de4,1";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x01 0x00 0x00000000
|
||||
0x02000000 0x00 0x00000000
|
||||
0x0 0x400000>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
#include "rp1-common.dtsi"
|
||||
};
|
||||
@@ -1,11 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
&pcie2 {
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
||||
#include "rp1-nexus.dtsi"
|
||||
};
|
||||
@@ -113,6 +113,7 @@
|
||||
ethphy0f: ethernet-phy@1 { /* SMSC LAN8740Ai */
|
||||
compatible = "ethernet-phy-id0007.c110",
|
||||
"ethernet-phy-ieee802.3-c22";
|
||||
clocks = <&clk IMX8MP_CLK_ENET_QOS>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
|
||||
pinctrl-0 = <&pinctrl_ethphy0>;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "imx8mp-tx8p-ml81.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "gocontroll,moduline-display", "fsl,imx8mp";
|
||||
compatible = "gocontroll,moduline-display-106", "karo,tx8p-ml81", "fsl,imx8mp";
|
||||
chassis-type = "embedded";
|
||||
hardware = "Moduline Display V1.06";
|
||||
model = "GOcontroll Moduline Display baseboard";
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
<&clk IMX8MP_SYS_PLL2_100M>,
|
||||
<&clk IMX8MP_SYS_PLL2_50M>;
|
||||
assigned-clock-rates = <266000000>, <100000000>, <50000000>;
|
||||
nvmem-cells = <ð_mac1>;
|
||||
phy-handle = <ðphy0>;
|
||||
phy-mode = "rmii";
|
||||
pinctrl-0 = <&pinctrl_eqos>;
|
||||
@@ -75,6 +76,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
&fec {
|
||||
nvmem-cells = <ð_mac2>;
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
gpio-line-names = "SODIMM_152",
|
||||
"SODIMM_42",
|
||||
|
||||
@@ -263,6 +263,7 @@
|
||||
regulator-max-microvolt = <3000000>;
|
||||
gpio = <&lsio_gpio4 7 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
off-on-delay-us = <4800>;
|
||||
};
|
||||
|
||||
reg_audio: regulator-audio {
|
||||
@@ -576,7 +577,7 @@
|
||||
compatible = "isil,isl29023";
|
||||
reg = <0x44>;
|
||||
interrupt-parent = <&lsio_gpio4>;
|
||||
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
|
||||
pressure-sensor@60 {
|
||||
|
||||
@@ -172,25 +172,25 @@
|
||||
|
||||
&lpuart0 {
|
||||
compatible = "fsl,imx8qm-lpuart", "fsl,imx8qxp-lpuart";
|
||||
dmas = <&edma2 13 0 0>, <&edma2 12 0 1>;
|
||||
dmas = <&edma2 12 0 FSL_EDMA_RX>, <&edma2 13 0 0>;
|
||||
dma-names = "rx","tx";
|
||||
};
|
||||
|
||||
&lpuart1 {
|
||||
compatible = "fsl,imx8qm-lpuart", "fsl,imx8qxp-lpuart";
|
||||
dmas = <&edma2 15 0 0>, <&edma2 14 0 1>;
|
||||
dmas = <&edma2 14 0 FSL_EDMA_RX>, <&edma2 15 0 0>;
|
||||
dma-names = "rx","tx";
|
||||
};
|
||||
|
||||
&lpuart2 {
|
||||
compatible = "fsl,imx8qm-lpuart", "fsl,imx8qxp-lpuart";
|
||||
dmas = <&edma2 17 0 0>, <&edma2 16 0 1>;
|
||||
dmas = <&edma2 16 0 FSL_EDMA_RX>, <&edma2 17 0 0>;
|
||||
dma-names = "rx","tx";
|
||||
};
|
||||
|
||||
&lpuart3 {
|
||||
compatible = "fsl,imx8qm-lpuart", "fsl,imx8qxp-lpuart";
|
||||
dmas = <&edma2 19 0 0>, <&edma2 18 0 1>;
|
||||
dmas = <&edma2 18 0 FSL_EDMA_RX>, <&edma2 19 0 0>;
|
||||
dma-names = "rx","tx";
|
||||
};
|
||||
|
||||
|
||||
@@ -406,8 +406,6 @@
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"SMARC_SDIO_WP";
|
||||
};
|
||||
|
||||
@@ -582,7 +580,7 @@
|
||||
ethphy1: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
interrupt-parent = <&som_gpio_expander_1>;
|
||||
interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
|
||||
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
|
||||
ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
|
||||
};
|
||||
|
||||
@@ -828,7 +828,7 @@
|
||||
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&scmi_clk IMX95_CLK_BUSAON>,
|
||||
clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>,
|
||||
<&scmi_clk IMX95_CLK_I3C2SLOW>;
|
||||
clock-names = "pclk", "fast_clk";
|
||||
status = "disabled";
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
reset-assert-us = <500000>;
|
||||
reset-deassert-us = <500>;
|
||||
interrupt-parent = <&expander2>;
|
||||
interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -675,10 +675,7 @@
|
||||
snps,lfps_filter_quirk;
|
||||
snps,dis_u2_susphy_quirk;
|
||||
snps,dis_u3_susphy_quirk;
|
||||
snps,tx_de_emphasis_quirk;
|
||||
snps,tx_de_emphasis = <1>;
|
||||
snps,dis_enblslpm_quirk;
|
||||
snps,gctl-reset-quirk;
|
||||
usb-role-switch;
|
||||
role-switch-default-mode = "host";
|
||||
port {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
};
|
||||
|
||||
&main_pmx0 {
|
||||
gpmc0_pins_default: gpmc0-pins-default {
|
||||
gpmc0_pins_default: gpmc0-default-pins {
|
||||
pinctrl-single,pins = <
|
||||
AM62X_IOPAD(0x003c, PIN_INPUT, 0) /* (K19) GPMC0_AD0 */
|
||||
AM62X_IOPAD(0x0040, PIN_INPUT, 0) /* (L19) GPMC0_AD1 */
|
||||
|
||||
@@ -30,13 +30,10 @@
|
||||
<&main_pktdma 0xc206 15>, /* egress slice 1 */
|
||||
<&main_pktdma 0xc207 15>, /* egress slice 1 */
|
||||
<&main_pktdma 0x4200 15>, /* ingress slice 0 */
|
||||
<&main_pktdma 0x4201 15>, /* ingress slice 1 */
|
||||
<&main_pktdma 0x4202 0>, /* mgmnt rsp slice 0 */
|
||||
<&main_pktdma 0x4203 0>; /* mgmnt rsp slice 1 */
|
||||
<&main_pktdma 0x4201 15>; /* ingress slice 1 */
|
||||
dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
|
||||
"tx1-0", "tx1-1", "tx1-2", "tx1-3",
|
||||
"rx0", "rx1",
|
||||
"rxmgm0", "rxmgm1";
|
||||
"rx0", "rx1";
|
||||
|
||||
firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
|
||||
"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
};
|
||||
|
||||
&main_pmx0 {
|
||||
main_gpio1_exp_header_gpio_pins_default: main-gpio1-exp-header-gpio-pins-default {
|
||||
main_gpio1_exp_header_gpio_pins_default: main-gpio1-exp-header-gpio-default-pins {
|
||||
pinctrl-single,pins = <
|
||||
AM64X_IOPAD(0x0220, PIN_INPUT, 7) /* (D14) SPI1_CS1.GPIO1_48 */
|
||||
>;
|
||||
};
|
||||
|
||||
main_spi1_pins_default: main-spi1-pins-default {
|
||||
main_spi1_pins_default: main-spi1-default-pins {
|
||||
pinctrl-single,pins = <
|
||||
AM64X_IOPAD(0x0224, PIN_INPUT, 0) /* (C14) SPI1_CLK */
|
||||
AM64X_IOPAD(0x021C, PIN_OUTPUT, 0) /* (B14) SPI1_CS0 */
|
||||
@@ -35,7 +35,7 @@
|
||||
>;
|
||||
};
|
||||
|
||||
main_uart3_pins_default: main-uart3-pins-default {
|
||||
main_uart3_pins_default: main-uart3-default-pins {
|
||||
pinctrl-single,pins = <
|
||||
AM64X_IOPAD(0x0048, PIN_INPUT, 2) /* (U20) GPMC0_AD3.UART3_RXD */
|
||||
AM64X_IOPAD(0x004c, PIN_OUTPUT, 2) /* (U18) GPMC0_AD4.UART3_TXD */
|
||||
@@ -52,7 +52,7 @@
|
||||
&main_spi1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&main_spi1_pins_default>;
|
||||
ti,pindir-d0-out-d1-in = <1>;
|
||||
ti,pindir-d0-out-d1-in;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ void arch_efi_call_virt_teardown(void);
|
||||
* switching to the EFI runtime stack.
|
||||
*/
|
||||
#define current_in_efi() \
|
||||
(!preemptible() && efi_rt_stack_top != NULL && \
|
||||
(efi_rt_stack_top != NULL && \
|
||||
on_task_stack(current, READ_ONCE(efi_rt_stack_top[-1]), 1))
|
||||
|
||||
#define ARCH_EFI_IRQ_FLAGS_MASK (PSR_D_BIT | PSR_A_BIT | PSR_I_BIT | PSR_F_BIT)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#ifndef __ASM_SUSPEND_H
|
||||
#define __ASM_SUSPEND_H
|
||||
|
||||
#define NR_CTX_REGS 13
|
||||
#define NR_CTX_REGS 14
|
||||
#define NR_CALLEE_SAVED_REGS 12
|
||||
|
||||
/*
|
||||
|
||||
@@ -171,7 +171,8 @@ static int change_memory_common(unsigned long addr, int numpages,
|
||||
*/
|
||||
area = find_vm_area((void *)addr);
|
||||
if (!area ||
|
||||
end > (unsigned long)kasan_reset_tag(area->addr) + area->size ||
|
||||
((unsigned long)kasan_reset_tag((void *)end) >
|
||||
(unsigned long)kasan_reset_tag(area->addr) + area->size) ||
|
||||
((area->flags & (VM_ALLOC | VM_ALLOW_HUGE_VMAP)) != VM_ALLOC))
|
||||
return -EINVAL;
|
||||
|
||||
@@ -184,7 +185,8 @@ static int change_memory_common(unsigned long addr, int numpages,
|
||||
*/
|
||||
if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
|
||||
pgprot_val(clear_mask) == PTE_RDONLY)) {
|
||||
unsigned long idx = (start - (unsigned long)kasan_reset_tag(area->addr))
|
||||
unsigned long idx = ((unsigned long)kasan_reset_tag((void *)start) -
|
||||
(unsigned long)kasan_reset_tag(area->addr))
|
||||
>> PAGE_SHIFT;
|
||||
for (; numpages; idx++, numpages--) {
|
||||
ret = __change_memory_common((u64)page_address(area->pages[idx]),
|
||||
|
||||
@@ -110,6 +110,10 @@ SYM_FUNC_START(cpu_do_suspend)
|
||||
* call stack.
|
||||
*/
|
||||
str x18, [x0, #96]
|
||||
alternative_if ARM64_HAS_TCR2
|
||||
mrs x2, REG_TCR2_EL1
|
||||
str x2, [x0, #104]
|
||||
alternative_else_nop_endif
|
||||
ret
|
||||
SYM_FUNC_END(cpu_do_suspend)
|
||||
|
||||
@@ -144,6 +148,10 @@ SYM_FUNC_START(cpu_do_resume)
|
||||
msr tcr_el1, x8
|
||||
msr vbar_el1, x9
|
||||
msr mdscr_el1, x10
|
||||
alternative_if ARM64_HAS_TCR2
|
||||
ldr x2, [x0, #104]
|
||||
msr REG_TCR2_EL1, x2
|
||||
alternative_else_nop_endif
|
||||
|
||||
msr sctlr_el1, x12
|
||||
set_this_cpu_offset x13
|
||||
|
||||
@@ -94,6 +94,12 @@
|
||||
#define CPUCFG2_LSPW BIT(21)
|
||||
#define CPUCFG2_LAM BIT(22)
|
||||
#define CPUCFG2_PTW BIT(24)
|
||||
#define CPUCFG2_FRECIPE BIT(25)
|
||||
#define CPUCFG2_DIV32 BIT(26)
|
||||
#define CPUCFG2_LAM_BH BIT(27)
|
||||
#define CPUCFG2_LAMCAS BIT(28)
|
||||
#define CPUCFG2_LLACQ_SCREL BIT(29)
|
||||
#define CPUCFG2_SCQ BIT(30)
|
||||
|
||||
#define LOONGARCH_CPUCFG3 0x3
|
||||
#define CPUCFG3_CCDMA BIT(0)
|
||||
@@ -108,6 +114,7 @@
|
||||
#define CPUCFG3_SPW_HG_HF BIT(11)
|
||||
#define CPUCFG3_RVA BIT(12)
|
||||
#define CPUCFG3_RVAMAX GENMASK(16, 13)
|
||||
#define CPUCFG3_DBAR_HINTS BIT(17)
|
||||
#define CPUCFG3_ALDORDER_CAP BIT(18) /* All address load ordered, capability */
|
||||
#define CPUCFG3_ASTORDER_CAP BIT(19) /* All address store ordered, capability */
|
||||
#define CPUCFG3_ALDORDER_STA BIT(20) /* All address load ordered, status */
|
||||
|
||||
@@ -42,6 +42,7 @@ SYM_DATA(kernel_fsize, .long _kernel_fsize);
|
||||
.align 12
|
||||
|
||||
SYM_CODE_START(kernel_entry) # kernel entry point
|
||||
UNWIND_HINT_END_OF_STACK
|
||||
|
||||
SETUP_TWINS
|
||||
SETUP_MODES t0
|
||||
@@ -113,6 +114,7 @@ SYM_CODE_END(kernel_entry)
|
||||
* function after setting up the stack and tp registers.
|
||||
*/
|
||||
SYM_CODE_START(smpboot_entry)
|
||||
UNWIND_HINT_END_OF_STACK
|
||||
|
||||
SETUP_TWINS
|
||||
SETUP_MODES t0
|
||||
@@ -142,5 +144,3 @@ SYM_CODE_START(smpboot_entry)
|
||||
SYM_CODE_END(smpboot_entry)
|
||||
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
SYM_ENTRY(kernel_entry_end, SYM_L_GLOBAL, SYM_A_NONE)
|
||||
|
||||
@@ -94,7 +94,6 @@ SYM_INNER_LABEL(ftrace_graph_call, SYM_L_GLOBAL)
|
||||
* at the callsite, so there is no need to restore the T series regs.
|
||||
*/
|
||||
ftrace_common_return:
|
||||
PTR_L ra, sp, PT_R1
|
||||
PTR_L a0, sp, PT_R4
|
||||
PTR_L a1, sp, PT_R5
|
||||
PTR_L a2, sp, PT_R6
|
||||
@@ -104,12 +103,17 @@ ftrace_common_return:
|
||||
PTR_L a6, sp, PT_R10
|
||||
PTR_L a7, sp, PT_R11
|
||||
PTR_L fp, sp, PT_R22
|
||||
PTR_L t0, sp, PT_ERA
|
||||
PTR_L t1, sp, PT_R13
|
||||
PTR_ADDI sp, sp, PT_SIZE
|
||||
bnez t1, .Ldirect
|
||||
|
||||
PTR_L ra, sp, PT_R1
|
||||
PTR_L t0, sp, PT_ERA
|
||||
PTR_ADDI sp, sp, PT_SIZE
|
||||
jr t0
|
||||
.Ldirect:
|
||||
PTR_L t0, sp, PT_R1
|
||||
PTR_L ra, sp, PT_ERA
|
||||
PTR_ADDI sp, sp, PT_SIZE
|
||||
jr t1
|
||||
SYM_CODE_END(ftrace_common)
|
||||
|
||||
@@ -161,6 +165,8 @@ SYM_CODE_END(return_to_handler)
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
|
||||
SYM_CODE_START(ftrace_stub_direct_tramp)
|
||||
UNWIND_HINT_UNDEFINED
|
||||
jr t0
|
||||
move t1, ra
|
||||
move ra, t0
|
||||
jr t1
|
||||
SYM_CODE_END(ftrace_stub_direct_tramp)
|
||||
#endif /* CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS */
|
||||
|
||||
@@ -535,10 +535,15 @@ out:
|
||||
asmlinkage void noinstr do_ade(struct pt_regs *regs)
|
||||
{
|
||||
irqentry_state_t state = irqentry_enter(regs);
|
||||
unsigned int esubcode = FIELD_GET(CSR_ESTAT_ESUBCODE, regs->csr_estat);
|
||||
|
||||
if ((esubcode == EXSUBCODE_ADEM) && fixup_exception(regs))
|
||||
goto out;
|
||||
|
||||
die_if_kernel("Kernel ade access", regs);
|
||||
force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)regs->csr_badvaddr);
|
||||
|
||||
out:
|
||||
irqentry_exit(regs, state);
|
||||
}
|
||||
|
||||
|
||||
@@ -348,24 +348,10 @@ void unwind_start(struct unwind_state *state, struct task_struct *task,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(unwind_start);
|
||||
|
||||
static bool is_entry_func(unsigned long addr)
|
||||
{
|
||||
extern u32 kernel_entry;
|
||||
extern u32 kernel_entry_end;
|
||||
|
||||
return addr >= (unsigned long)&kernel_entry && addr < (unsigned long)&kernel_entry_end;
|
||||
}
|
||||
|
||||
static inline unsigned long bt_address(unsigned long ra)
|
||||
{
|
||||
extern unsigned long eentry;
|
||||
|
||||
if (__kernel_text_address(ra))
|
||||
return ra;
|
||||
|
||||
if (__module_text_address(ra))
|
||||
return ra;
|
||||
|
||||
if (ra >= eentry && ra < eentry + EXCCODE_INT_END * VECSIZE) {
|
||||
unsigned long func;
|
||||
unsigned long type = (ra - eentry) / VECSIZE;
|
||||
@@ -383,10 +369,13 @@ static inline unsigned long bt_address(unsigned long ra)
|
||||
break;
|
||||
}
|
||||
|
||||
return func + offset;
|
||||
ra = func + offset;
|
||||
}
|
||||
|
||||
return ra;
|
||||
if (__kernel_text_address(ra))
|
||||
return ra;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool unwind_next_frame(struct unwind_state *state)
|
||||
@@ -402,9 +391,6 @@ bool unwind_next_frame(struct unwind_state *state)
|
||||
/* Don't let modules unload while we're reading their ORC data. */
|
||||
guard(rcu)();
|
||||
|
||||
if (is_entry_func(state->pc))
|
||||
goto end;
|
||||
|
||||
orc = orc_find(state->pc);
|
||||
if (!orc) {
|
||||
/*
|
||||
@@ -512,9 +498,6 @@ bool unwind_next_frame(struct unwind_state *state)
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!__kernel_text_address(state->pc))
|
||||
goto err;
|
||||
|
||||
return true;
|
||||
|
||||
err:
|
||||
|
||||
@@ -160,8 +160,8 @@ void cpu_cache_init(void)
|
||||
|
||||
static const pgprot_t protection_map[16] = {
|
||||
[VM_NONE] = __pgprot(_CACHE_CC | _PAGE_USER |
|
||||
_PAGE_PROTNONE | _PAGE_NO_EXEC |
|
||||
_PAGE_NO_READ),
|
||||
_PAGE_NO_EXEC | _PAGE_NO_READ |
|
||||
(_PAGE_PROTNONE ? : _PAGE_PRESENT)),
|
||||
[VM_READ] = __pgprot(_CACHE_CC | _PAGE_VALID |
|
||||
_PAGE_USER | _PAGE_PRESENT |
|
||||
_PAGE_NO_EXEC),
|
||||
@@ -180,8 +180,8 @@ static const pgprot_t protection_map[16] = {
|
||||
[VM_EXEC | VM_WRITE | VM_READ] = __pgprot(_CACHE_CC | _PAGE_VALID |
|
||||
_PAGE_USER | _PAGE_PRESENT),
|
||||
[VM_SHARED] = __pgprot(_CACHE_CC | _PAGE_USER |
|
||||
_PAGE_PROTNONE | _PAGE_NO_EXEC |
|
||||
_PAGE_NO_READ),
|
||||
_PAGE_NO_EXEC | _PAGE_NO_READ |
|
||||
(_PAGE_PROTNONE ? : _PAGE_PRESENT)),
|
||||
[VM_SHARED | VM_READ] = __pgprot(_CACHE_CC | _PAGE_VALID |
|
||||
_PAGE_USER | _PAGE_PRESENT |
|
||||
_PAGE_NO_EXEC),
|
||||
|
||||
@@ -139,6 +139,7 @@ static void build_prologue(struct jit_ctx *ctx)
|
||||
stack_adjust = round_up(stack_adjust, 16);
|
||||
stack_adjust += bpf_stack_adjust;
|
||||
|
||||
move_reg(ctx, LOONGARCH_GPR_T0, LOONGARCH_GPR_RA);
|
||||
/* Reserve space for the move_imm + jirl instruction */
|
||||
for (i = 0; i < LOONGARCH_LONG_JUMP_NINSNS; i++)
|
||||
emit_insn(ctx, nop);
|
||||
@@ -238,7 +239,7 @@ static void __build_epilogue(struct jit_ctx *ctx, bool is_tail_call)
|
||||
* Call the next bpf prog and skip the first instruction
|
||||
* of TCC initialization.
|
||||
*/
|
||||
emit_insn(ctx, jirl, LOONGARCH_GPR_ZERO, LOONGARCH_GPR_T3, 6);
|
||||
emit_insn(ctx, jirl, LOONGARCH_GPR_ZERO, LOONGARCH_GPR_T3, 7);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,6 +281,8 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx, int insn)
|
||||
* goto out;
|
||||
*/
|
||||
tc_ninsn = insn ? ctx->offset[insn+1] - ctx->offset[insn] : ctx->offset[0];
|
||||
emit_zext_32(ctx, a2, true);
|
||||
|
||||
off = offsetof(struct bpf_array, map.max_entries);
|
||||
emit_insn(ctx, ldwu, t1, a1, off);
|
||||
/* bgeu $a2, $t1, jmp_offset */
|
||||
@@ -950,6 +953,22 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
|
||||
emit_insn(ctx, ldd, REG_TCC, LOONGARCH_GPR_SP, tcc_ptr_off);
|
||||
}
|
||||
|
||||
if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) {
|
||||
const struct btf_func_model *m;
|
||||
int i;
|
||||
|
||||
m = bpf_jit_find_kfunc_model(ctx->prog, insn);
|
||||
if (!m)
|
||||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < m->nr_args; i++) {
|
||||
u8 reg = regmap[BPF_REG_1 + i];
|
||||
bool sign = m->arg_flags[i] & BTF_FMODEL_SIGNED_ARG;
|
||||
|
||||
emit_abi_ext(ctx, reg, m->arg_size[i], sign);
|
||||
}
|
||||
}
|
||||
|
||||
move_addr(ctx, t1, func_addr);
|
||||
emit_insn(ctx, jirl, LOONGARCH_GPR_RA, t1, 0);
|
||||
|
||||
@@ -1265,7 +1284,7 @@ static int emit_jump_or_nops(void *target, void *ip, u32 *insns, bool is_call)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return emit_jump_and_link(&ctx, is_call ? LOONGARCH_GPR_T0 : LOONGARCH_GPR_ZERO, (u64)target);
|
||||
return emit_jump_and_link(&ctx, is_call ? LOONGARCH_GPR_RA : LOONGARCH_GPR_ZERO, (u64)target);
|
||||
}
|
||||
|
||||
static int emit_call(struct jit_ctx *ctx, u64 addr)
|
||||
@@ -1290,15 +1309,30 @@ int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type old_t,
|
||||
{
|
||||
int ret;
|
||||
bool is_call;
|
||||
unsigned long size = 0;
|
||||
unsigned long offset = 0;
|
||||
void *image = NULL;
|
||||
char namebuf[KSYM_NAME_LEN];
|
||||
u32 old_insns[LOONGARCH_LONG_JUMP_NINSNS] = {[0 ... 4] = INSN_NOP};
|
||||
u32 new_insns[LOONGARCH_LONG_JUMP_NINSNS] = {[0 ... 4] = INSN_NOP};
|
||||
|
||||
/* Only poking bpf text is supported. Since kernel function entry
|
||||
* is set up by ftrace, we rely on ftrace to poke kernel functions.
|
||||
*/
|
||||
if (!is_bpf_text_address((unsigned long)ip))
|
||||
if (!__bpf_address_lookup((unsigned long)ip, &size, &offset, namebuf))
|
||||
return -ENOTSUPP;
|
||||
|
||||
image = ip - offset;
|
||||
|
||||
/* zero offset means we're poking bpf prog entry */
|
||||
if (offset == 0) {
|
||||
/* skip to the nop instruction in bpf prog entry:
|
||||
* move t0, ra
|
||||
* nop
|
||||
*/
|
||||
ip = image + LOONGARCH_INSN_SIZE;
|
||||
}
|
||||
|
||||
is_call = old_t == BPF_MOD_CALL;
|
||||
ret = emit_jump_or_nops(old_addr, ip, old_insns, is_call);
|
||||
if (ret)
|
||||
@@ -1622,14 +1656,12 @@ static int __arch_prepare_bpf_trampoline(struct jit_ctx *ctx, struct bpf_tramp_i
|
||||
|
||||
/* To traced function */
|
||||
/* Ftrace jump skips 2 NOP instructions */
|
||||
if (is_kernel_text((unsigned long)orig_call))
|
||||
if (is_kernel_text((unsigned long)orig_call) ||
|
||||
is_module_text_address((unsigned long)orig_call))
|
||||
orig_call += LOONGARCH_FENTRY_NBYTES;
|
||||
/* Direct jump skips 5 NOP instructions */
|
||||
else if (is_bpf_text_address((unsigned long)orig_call))
|
||||
orig_call += LOONGARCH_BPF_FENTRY_NBYTES;
|
||||
/* Module tracing not supported - cause kernel lockups */
|
||||
else if (is_module_text_address((unsigned long)orig_call))
|
||||
return -ENOTSUPP;
|
||||
|
||||
if (flags & BPF_TRAMP_F_CALL_ORIG) {
|
||||
move_addr(ctx, LOONGARCH_GPR_A0, (const u64)im);
|
||||
@@ -1722,12 +1754,16 @@ static int __arch_prepare_bpf_trampoline(struct jit_ctx *ctx, struct bpf_tramp_i
|
||||
emit_insn(ctx, ldd, LOONGARCH_GPR_FP, LOONGARCH_GPR_SP, 0);
|
||||
emit_insn(ctx, addid, LOONGARCH_GPR_SP, LOONGARCH_GPR_SP, 16);
|
||||
|
||||
if (flags & BPF_TRAMP_F_SKIP_FRAME)
|
||||
if (flags & BPF_TRAMP_F_SKIP_FRAME) {
|
||||
/* return to parent function */
|
||||
emit_insn(ctx, jirl, LOONGARCH_GPR_ZERO, LOONGARCH_GPR_RA, 0);
|
||||
else
|
||||
/* return to traced function */
|
||||
move_reg(ctx, LOONGARCH_GPR_RA, LOONGARCH_GPR_T0);
|
||||
emit_insn(ctx, jirl, LOONGARCH_GPR_ZERO, LOONGARCH_GPR_T0, 0);
|
||||
} else {
|
||||
/* return to traced function */
|
||||
move_reg(ctx, LOONGARCH_GPR_T1, LOONGARCH_GPR_RA);
|
||||
move_reg(ctx, LOONGARCH_GPR_RA, LOONGARCH_GPR_T0);
|
||||
emit_insn(ctx, jirl, LOONGARCH_GPR_ZERO, LOONGARCH_GPR_T1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
ret = ctx->idx;
|
||||
|
||||
@@ -88,6 +88,32 @@ static inline void emit_sext_32(struct jit_ctx *ctx, enum loongarch_gpr reg, boo
|
||||
emit_insn(ctx, addiw, reg, reg, 0);
|
||||
}
|
||||
|
||||
/* Emit proper extension according to ABI requirements.
|
||||
* Note that it requires a value of size `size` already resides in register `reg`.
|
||||
*/
|
||||
static inline void emit_abi_ext(struct jit_ctx *ctx, int reg, u8 size, bool sign)
|
||||
{
|
||||
/* ABI requires unsigned char/short to be zero-extended */
|
||||
if (!sign && (size == 1 || size == 2))
|
||||
return;
|
||||
|
||||
switch (size) {
|
||||
case 1:
|
||||
emit_insn(ctx, extwb, reg, reg);
|
||||
break;
|
||||
case 2:
|
||||
emit_insn(ctx, extwh, reg, reg);
|
||||
break;
|
||||
case 4:
|
||||
emit_insn(ctx, addiw, reg, reg, 0);
|
||||
break;
|
||||
case 8:
|
||||
break;
|
||||
default:
|
||||
pr_warn("bpf_jit: invalid size %d for extension\n", size);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void move_addr(struct jit_ctx *ctx, enum loongarch_gpr rd, u64 addr)
|
||||
{
|
||||
u64 imm_11_0, imm_31_12, imm_51_32, imm_63_52;
|
||||
|
||||
@@ -90,7 +90,7 @@ static inline void __hard_EE_RI_disable(void)
|
||||
if (IS_ENABLED(CONFIG_BOOKE))
|
||||
wrtee(0);
|
||||
else if (IS_ENABLED(CONFIG_PPC_8xx))
|
||||
wrtspr(SPRN_NRI);
|
||||
wrtspr_sync(SPRN_NRI);
|
||||
else if (IS_ENABLED(CONFIG_PPC_BOOK3S_64))
|
||||
__mtmsrd(0, 1);
|
||||
else
|
||||
|
||||
@@ -1400,6 +1400,7 @@ static inline void mtmsr_isync(unsigned long val)
|
||||
: "r" ((unsigned long)(v)) \
|
||||
: "memory")
|
||||
#define wrtspr(rn) asm volatile("mtspr " __stringify(rn) ",2" : : : "memory")
|
||||
#define wrtspr_sync(rn) asm volatile("mtspr " __stringify(rn) ",2; sync" : : : "memory")
|
||||
|
||||
static inline void wrtee(unsigned long val)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/udbg.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
#define NO_SCROLL
|
||||
|
||||
@@ -463,7 +464,7 @@ static noinline void draw_byte(unsigned char c, long locX, long locY)
|
||||
{
|
||||
unsigned char *base = calc_base(locX << 3, locY << 4);
|
||||
unsigned int font_index = c * 16;
|
||||
const unsigned char *font = font_sun_8x16.data + font_index;
|
||||
const unsigned char *font = PTRRELOC(font_sun_8x16.data) + font_index;
|
||||
int rb = dispDeviceRowBytes;
|
||||
|
||||
rmci_maybe_on();
|
||||
|
||||
@@ -101,17 +101,6 @@ SYM_FUNC_END(__kuep_unlock)
|
||||
.endm
|
||||
#endif
|
||||
|
||||
.macro clr_ri trash
|
||||
#ifndef CONFIG_BOOKE
|
||||
#ifdef CONFIG_PPC_8xx
|
||||
mtspr SPRN_NRI, \trash
|
||||
#else
|
||||
li \trash, MSR_KERNEL & ~MSR_RI
|
||||
mtmsr \trash
|
||||
#endif
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.globl transfer_to_syscall
|
||||
transfer_to_syscall:
|
||||
stw r3, ORIG_GPR3(r1)
|
||||
@@ -160,7 +149,6 @@ ret_from_syscall:
|
||||
cmpwi r3,0
|
||||
REST_GPR(3, r1)
|
||||
syscall_exit_finish:
|
||||
clr_ri r4
|
||||
mtspr SPRN_SRR0,r7
|
||||
mtspr SPRN_SRR1,r8
|
||||
|
||||
@@ -237,7 +225,6 @@ fast_exception_return:
|
||||
/* Clear the exception marker on the stack to avoid confusing stacktrace */
|
||||
li r10, 0
|
||||
stw r10, 8(r11)
|
||||
clr_ri r10
|
||||
mtspr SPRN_SRR1,r9
|
||||
mtspr SPRN_SRR0,r12
|
||||
REST_GPR(9, r11)
|
||||
@@ -270,7 +257,6 @@ interrupt_return:
|
||||
.Lfast_user_interrupt_return:
|
||||
lwz r11,_NIP(r1)
|
||||
lwz r12,_MSR(r1)
|
||||
clr_ri r4
|
||||
mtspr SPRN_SRR0,r11
|
||||
mtspr SPRN_SRR1,r12
|
||||
|
||||
@@ -313,7 +299,6 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX)
|
||||
cmpwi cr1,r3,0
|
||||
lwz r11,_NIP(r1)
|
||||
lwz r12,_MSR(r1)
|
||||
clr_ri r4
|
||||
mtspr SPRN_SRR0,r11
|
||||
mtspr SPRN_SRR1,r12
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ static inline bool exit_must_hard_disable(void)
|
||||
#else
|
||||
static inline bool exit_must_hard_disable(void)
|
||||
{
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -443,6 +443,9 @@ again:
|
||||
|
||||
if (unlikely(stack_store))
|
||||
__hard_EE_RI_disable();
|
||||
#else
|
||||
} else {
|
||||
__hard_EE_RI_disable();
|
||||
#endif /* CONFIG_PPC64 */
|
||||
}
|
||||
|
||||
|
||||
@@ -202,6 +202,23 @@ static void kexec_prepare_cpus_wait(int wait_state)
|
||||
mb();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* The add_cpu() call in wake_offline_cpus() can fail as cpu_bootable()
|
||||
* returns false for CPUs that fail the cpu_smt_thread_allowed() check
|
||||
* or non primary threads if SMT is disabled. Re-enable SMT and set the
|
||||
* number of SMT threads to threads per core.
|
||||
*/
|
||||
static void kexec_smt_reenable(void)
|
||||
{
|
||||
#if defined(CONFIG_SMP) && defined(CONFIG_HOTPLUG_SMT)
|
||||
lock_device_hotplug();
|
||||
cpu_smt_num_threads = threads_per_core;
|
||||
cpu_smt_control = CPU_SMT_ENABLED;
|
||||
unlock_device_hotplug();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* We need to make sure each present CPU is online. The next kernel will scan
|
||||
* the device tree and assume primary threads are online and query secondary
|
||||
@@ -216,6 +233,8 @@ static void wake_offline_cpus(void)
|
||||
{
|
||||
int cpu = 0;
|
||||
|
||||
kexec_smt_reenable();
|
||||
|
||||
for_each_present_cpu(cpu) {
|
||||
if (!cpu_online(cpu)) {
|
||||
printk(KERN_INFO "kexec: Waking offline cpu %d.\n",
|
||||
|
||||
@@ -1171,8 +1171,9 @@ static void __init pnv_arch300_idle_init(void)
|
||||
u64 max_residency_ns = 0;
|
||||
int i;
|
||||
|
||||
/* stop is not really architected, we only have p9,p10 drivers */
|
||||
if (!pvr_version_is(PVR_POWER10) && !pvr_version_is(PVR_POWER9))
|
||||
/* stop is not really architected, we only have p9,p10 and p11 drivers */
|
||||
if (!pvr_version_is(PVR_POWER9) && !pvr_version_is(PVR_POWER10) &&
|
||||
!pvr_version_is(PVR_POWER11))
|
||||
return;
|
||||
|
||||
/*
|
||||
@@ -1189,8 +1190,8 @@ static void __init pnv_arch300_idle_init(void)
|
||||
struct pnv_idle_states_t *state = &pnv_idle_states[i];
|
||||
u64 psscr_rl = state->psscr_val & PSSCR_RL_MASK;
|
||||
|
||||
/* No deep loss driver implemented for POWER10 yet */
|
||||
if (pvr_version_is(PVR_POWER10) &&
|
||||
/* No deep loss driver implemented for POWER10 and POWER11 yet */
|
||||
if ((pvr_version_is(PVR_POWER10) || pvr_version_is(PVR_POWER11)) &&
|
||||
state->flags & (OPAL_PM_TIMEBASE_STOP|OPAL_PM_LOSE_FULL_CONTEXT))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
# To debug, uncomment the following line
|
||||
# set -x
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
# To debug, uncomment the following line
|
||||
# set -x
|
||||
|
||||
@@ -31,11 +31,7 @@ $(obj)/xipImage: vmlinux FORCE
|
||||
|
||||
endif
|
||||
|
||||
ifdef CONFIG_RELOCATABLE
|
||||
$(obj)/Image: vmlinux.unstripped FORCE
|
||||
else
|
||||
$(obj)/Image: vmlinux FORCE
|
||||
endif
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
$(obj)/Image.gz: $(obj)/Image FORCE
|
||||
|
||||
@@ -55,7 +55,6 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_DEVMEM is not set
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_I2C_COMPAT is not set
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
# CONFIG_I2C_HELPER_AUTO is not set
|
||||
CONFIG_I2C_DESIGNWARE_CORE=y
|
||||
@@ -89,7 +88,6 @@ CONFIG_PRINTK_TIME=y
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
# CONFIG_DEBUG_MISC is not set
|
||||
CONFIG_PANIC_ON_OOPS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_RCU_TRACE is not set
|
||||
# CONFIG_FTRACE is not set
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
|
||||
@@ -86,7 +86,6 @@ CONFIG_PRINTK_TIME=y
|
||||
# CONFIG_FRAME_POINTER is not set
|
||||
# CONFIG_DEBUG_MISC is not set
|
||||
CONFIG_PANIC_ON_OOPS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_RCU_TRACE is not set
|
||||
# CONFIG_FTRACE is not set
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
|
||||
@@ -66,7 +66,6 @@ CONFIG_EXT2_FS=y
|
||||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
CONFIG_LSM="[]"
|
||||
CONFIG_PRINTK_TIME=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_RCU_TRACE is not set
|
||||
# CONFIG_FTRACE is not set
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
||||
|
||||
@@ -203,7 +203,7 @@ ATOMIC_OPS(xor, xor, i)
|
||||
" add %[rc], %[p], %[a]\n" \
|
||||
" sc." sfx ".rl %[rc], %[rc], %[c]\n" \
|
||||
" bnez %[rc], 0b\n" \
|
||||
" fence rw, rw\n" \
|
||||
RISCV_FULL_BARRIER \
|
||||
"1:\n" \
|
||||
: [p]"=&r" (_prev), [rc]"=&r" (_rc), [c]"+A" (counter) \
|
||||
: [a]"r" (_a), [u]"r" (_u) \
|
||||
@@ -242,7 +242,7 @@ static __always_inline s64 arch_atomic64_fetch_add_unless(atomic64_t *v, s64 a,
|
||||
" addi %[rc], %[p], 1\n" \
|
||||
" sc." sfx ".rl %[rc], %[rc], %[c]\n" \
|
||||
" bnez %[rc], 0b\n" \
|
||||
" fence rw, rw\n" \
|
||||
RISCV_FULL_BARRIER \
|
||||
"1:\n" \
|
||||
: [p]"=&r" (_prev), [rc]"=&r" (_rc), [c]"+A" (counter) \
|
||||
: \
|
||||
@@ -268,7 +268,7 @@ static __always_inline bool arch_atomic_inc_unless_negative(atomic_t *v)
|
||||
" addi %[rc], %[p], -1\n" \
|
||||
" sc." sfx ".rl %[rc], %[rc], %[c]\n" \
|
||||
" bnez %[rc], 0b\n" \
|
||||
" fence rw, rw\n" \
|
||||
RISCV_FULL_BARRIER \
|
||||
"1:\n" \
|
||||
: [p]"=&r" (_prev), [rc]"=&r" (_rc), [c]"+A" (counter) \
|
||||
: \
|
||||
@@ -294,7 +294,7 @@ static __always_inline bool arch_atomic_dec_unless_positive(atomic_t *v)
|
||||
" bltz %[rc], 1f\n" \
|
||||
" sc." sfx ".rl %[rc], %[rc], %[c]\n" \
|
||||
" bnez %[rc], 0b\n" \
|
||||
" fence rw, rw\n" \
|
||||
RISCV_FULL_BARRIER \
|
||||
"1:\n" \
|
||||
: [p]"=&r" (_prev), [rc]"=&r" (_rc), [c]"+A" (counter) \
|
||||
: \
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#endif /* _LINUX_BITOPS_H */
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/irqflags.h>
|
||||
#include <asm/barrier.h>
|
||||
#include <asm/bitsperlong.h>
|
||||
|
||||
|
||||
@@ -108,6 +108,8 @@
|
||||
#define RISCV_ISA_EXT_ZICBOP 99
|
||||
#define RISCV_ISA_EXT_SVRSW60T59B 100
|
||||
#define RISCV_ISA_EXT_ZALASR 101
|
||||
#define RISCV_ISA_EXT_ZILSD 102
|
||||
#define RISCV_ISA_EXT_ZCLSD 103
|
||||
|
||||
#define RISCV_ISA_EXT_XLINUXENVCFG 127
|
||||
|
||||
|
||||
@@ -124,10 +124,6 @@
|
||||
#ifdef CONFIG_64BIT
|
||||
#include <asm/pgtable-64.h>
|
||||
|
||||
#define VA_USER_SV39 (UL(1) << (VA_BITS_SV39 - 1))
|
||||
#define VA_USER_SV48 (UL(1) << (VA_BITS_SV48 - 1))
|
||||
#define VA_USER_SV57 (UL(1) << (VA_BITS_SV57 - 1))
|
||||
|
||||
#define MMAP_VA_BITS_64 ((VA_BITS >= VA_BITS_SV48) ? VA_BITS_SV48 : VA_BITS)
|
||||
#define MMAP_MIN_VA_BITS_64 (VA_BITS_SV39)
|
||||
#define MMAP_VA_BITS (is_compat_task() ? VA_BITS_SV32 : MMAP_VA_BITS_64)
|
||||
@@ -660,7 +656,13 @@ extern int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long a
|
||||
static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
|
||||
unsigned long address, pte_t *ptep)
|
||||
{
|
||||
pte_t pte = __pte(atomic_long_xchg((atomic_long_t *)ptep, 0));
|
||||
#ifdef CONFIG_SMP
|
||||
pte_t pte = __pte(xchg(&ptep->pte, 0));
|
||||
#else
|
||||
pte_t pte = *ptep;
|
||||
|
||||
set_pte(ptep, __pte(0));
|
||||
#endif
|
||||
|
||||
page_table_check_pte_clear(mm, pte);
|
||||
|
||||
@@ -997,7 +999,13 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
|
||||
static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,
|
||||
unsigned long address, pmd_t *pmdp)
|
||||
{
|
||||
pmd_t pmd = __pmd(atomic_long_xchg((atomic_long_t *)pmdp, 0));
|
||||
#ifdef CONFIG_SMP
|
||||
pmd_t pmd = __pmd(xchg(&pmdp->pmd, 0));
|
||||
#else
|
||||
pmd_t pmd = *pmdp;
|
||||
|
||||
pmd_clear(pmdp);
|
||||
#endif
|
||||
|
||||
page_table_check_pmd_clear(mm, pmd);
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ enum sbi_ext_id {
|
||||
SBI_EXT_NACL = 0x4E41434C,
|
||||
SBI_EXT_FWFT = 0x46574654,
|
||||
SBI_EXT_MPXY = 0x4D505859,
|
||||
SBI_EXT_DBTR = 0x44425452,
|
||||
|
||||
/* Experimentals extensions must lie within this range */
|
||||
SBI_EXT_EXPERIMENTAL_START = 0x08000000,
|
||||
@@ -505,6 +506,34 @@ enum sbi_mpxy_rpmi_attribute_id {
|
||||
#define SBI_MPXY_CHAN_CAP_SEND_WITHOUT_RESP BIT(4)
|
||||
#define SBI_MPXY_CHAN_CAP_GET_NOTIFICATIONS BIT(5)
|
||||
|
||||
/* SBI debug triggers function IDs */
|
||||
enum sbi_ext_dbtr_fid {
|
||||
SBI_EXT_DBTR_NUM_TRIGGERS = 0,
|
||||
SBI_EXT_DBTR_SETUP_SHMEM,
|
||||
SBI_EXT_DBTR_TRIG_READ,
|
||||
SBI_EXT_DBTR_TRIG_INSTALL,
|
||||
SBI_EXT_DBTR_TRIG_UPDATE,
|
||||
SBI_EXT_DBTR_TRIG_UNINSTALL,
|
||||
SBI_EXT_DBTR_TRIG_ENABLE,
|
||||
SBI_EXT_DBTR_TRIG_DISABLE,
|
||||
};
|
||||
|
||||
struct sbi_dbtr_data_msg {
|
||||
unsigned long tstate;
|
||||
unsigned long tdata1;
|
||||
unsigned long tdata2;
|
||||
unsigned long tdata3;
|
||||
};
|
||||
|
||||
struct sbi_dbtr_id_msg {
|
||||
unsigned long idx;
|
||||
};
|
||||
|
||||
union sbi_dbtr_shmem_entry {
|
||||
struct sbi_dbtr_data_msg data;
|
||||
struct sbi_dbtr_id_msg id;
|
||||
};
|
||||
|
||||
/* SBI spec version fields */
|
||||
#define SBI_SPEC_VERSION_DEFAULT 0x1
|
||||
#define SBI_SPEC_VERSION_MAJOR_SHIFT 24
|
||||
|
||||
@@ -424,6 +424,9 @@ static inline bool riscv_v_vstate_ctrl_user_allowed(void) { return false; }
|
||||
#define riscv_v_thread_free(tsk) do {} while (0)
|
||||
#define riscv_v_setup_ctx_cache() do {} while (0)
|
||||
#define riscv_v_thread_alloc(tsk) do {} while (0)
|
||||
#define get_cpu_vector_context() do {} while (0)
|
||||
#define put_cpu_vector_context() do {} while (0)
|
||||
#define riscv_v_vstate_set_restore(task, regs) do {} while (0)
|
||||
|
||||
#endif /* CONFIG_RISCV_ISA_V */
|
||||
|
||||
|
||||
@@ -84,6 +84,9 @@ struct riscv_hwprobe {
|
||||
#define RISCV_HWPROBE_EXT_ZABHA (1ULL << 58)
|
||||
#define RISCV_HWPROBE_EXT_ZALASR (1ULL << 59)
|
||||
#define RISCV_HWPROBE_EXT_ZICBOP (1ULL << 60)
|
||||
#define RISCV_HWPROBE_EXT_ZILSD (1ULL << 61)
|
||||
#define RISCV_HWPROBE_EXT_ZCLSD (1ULL << 62)
|
||||
|
||||
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
|
||||
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
|
||||
#define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0)
|
||||
|
||||
@@ -3,12 +3,6 @@
|
||||
# Makefile for the RISC-V Linux kernel
|
||||
#
|
||||
|
||||
ifdef CONFIG_FTRACE
|
||||
CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_patch.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_sbi.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE)
|
||||
endif
|
||||
CFLAGS_syscall_table.o += $(call cc-disable-warning, override-init)
|
||||
CFLAGS_compat_syscall_table.o += $(call cc-disable-warning, override-init)
|
||||
|
||||
@@ -24,7 +18,6 @@ CFLAGS_sbi_ecall.o := -mcmodel=medany
|
||||
ifdef CONFIG_FTRACE
|
||||
CFLAGS_REMOVE_alternative.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_cpufeature.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_sbi_ecall.o = $(CC_FLAGS_FTRACE)
|
||||
endif
|
||||
ifdef CONFIG_RELOCATABLE
|
||||
CFLAGS_alternative.o += -fno-pie
|
||||
@@ -43,6 +36,14 @@ CFLAGS_sbi_ecall.o += -D__NO_FORTIFY
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef CONFIG_FTRACE
|
||||
CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_patch.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_sbi.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE)
|
||||
CFLAGS_REMOVE_sbi_ecall.o = $(CC_FLAGS_FTRACE)
|
||||
endif
|
||||
|
||||
always-$(KBUILD_BUILTIN) += vmlinux.lds
|
||||
|
||||
obj-y += head.o
|
||||
|
||||
@@ -85,7 +85,7 @@ static void sbi_cpu_stop(void)
|
||||
int ret;
|
||||
|
||||
ret = sbi_hsm_hart_stop();
|
||||
pr_crit("Unable to stop the cpu %u (%d)\n", smp_processor_id(), ret);
|
||||
pr_crit("Unable to stop the cpu %d (%d)\n", smp_processor_id(), ret);
|
||||
}
|
||||
|
||||
static int sbi_cpu_is_stopped(unsigned int cpuid)
|
||||
|
||||
@@ -242,6 +242,28 @@ static int riscv_ext_zcf_validate(const struct riscv_isa_ext_data *data,
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
static int riscv_ext_zilsd_validate(const struct riscv_isa_ext_data *data,
|
||||
const unsigned long *isa_bitmap)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_64BIT))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int riscv_ext_zclsd_validate(const struct riscv_isa_ext_data *data,
|
||||
const unsigned long *isa_bitmap)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_64BIT))
|
||||
return -EINVAL;
|
||||
|
||||
if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZILSD) &&
|
||||
__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZCA))
|
||||
return 0;
|
||||
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
static int riscv_vector_f_validate(const struct riscv_isa_ext_data *data,
|
||||
const unsigned long *isa_bitmap)
|
||||
{
|
||||
@@ -279,23 +301,22 @@ static const unsigned int riscv_a_exts[] = {
|
||||
RISCV_ISA_EXT_ZALRSC,
|
||||
};
|
||||
|
||||
#define RISCV_ISA_EXT_ZKN \
|
||||
RISCV_ISA_EXT_ZBKB, \
|
||||
RISCV_ISA_EXT_ZBKC, \
|
||||
RISCV_ISA_EXT_ZBKX, \
|
||||
RISCV_ISA_EXT_ZKND, \
|
||||
RISCV_ISA_EXT_ZKNE, \
|
||||
RISCV_ISA_EXT_ZKNH
|
||||
|
||||
static const unsigned int riscv_zk_bundled_exts[] = {
|
||||
RISCV_ISA_EXT_ZBKB,
|
||||
RISCV_ISA_EXT_ZBKC,
|
||||
RISCV_ISA_EXT_ZBKX,
|
||||
RISCV_ISA_EXT_ZKND,
|
||||
RISCV_ISA_EXT_ZKNE,
|
||||
RISCV_ISA_EXT_ZKN,
|
||||
RISCV_ISA_EXT_ZKR,
|
||||
RISCV_ISA_EXT_ZKT,
|
||||
RISCV_ISA_EXT_ZKT
|
||||
};
|
||||
|
||||
static const unsigned int riscv_zkn_bundled_exts[] = {
|
||||
RISCV_ISA_EXT_ZBKB,
|
||||
RISCV_ISA_EXT_ZBKC,
|
||||
RISCV_ISA_EXT_ZBKX,
|
||||
RISCV_ISA_EXT_ZKND,
|
||||
RISCV_ISA_EXT_ZKNE,
|
||||
RISCV_ISA_EXT_ZKNH,
|
||||
RISCV_ISA_EXT_ZKN
|
||||
};
|
||||
|
||||
static const unsigned int riscv_zks_bundled_exts[] = {
|
||||
@@ -484,6 +505,8 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = {
|
||||
__RISCV_ISA_EXT_DATA_VALIDATE(zcd, RISCV_ISA_EXT_ZCD, riscv_ext_zcd_validate),
|
||||
__RISCV_ISA_EXT_DATA_VALIDATE(zcf, RISCV_ISA_EXT_ZCF, riscv_ext_zcf_validate),
|
||||
__RISCV_ISA_EXT_DATA_VALIDATE(zcmop, RISCV_ISA_EXT_ZCMOP, riscv_ext_zca_depends),
|
||||
__RISCV_ISA_EXT_DATA_VALIDATE(zclsd, RISCV_ISA_EXT_ZCLSD, riscv_ext_zclsd_validate),
|
||||
__RISCV_ISA_EXT_DATA_VALIDATE(zilsd, RISCV_ISA_EXT_ZILSD, riscv_ext_zilsd_validate),
|
||||
__RISCV_ISA_EXT_DATA(zba, RISCV_ISA_EXT_ZBA),
|
||||
__RISCV_ISA_EXT_DATA(zbb, RISCV_ISA_EXT_ZBB),
|
||||
__RISCV_ISA_EXT_DATA(zbc, RISCV_ISA_EXT_ZBC),
|
||||
|
||||
@@ -22,7 +22,7 @@ static int image_probe(const char *kernel_buf, unsigned long kernel_len)
|
||||
if (!h || kernel_len < sizeof(*h))
|
||||
return -EINVAL;
|
||||
|
||||
/* According to Documentation/riscv/boot-image-header.rst,
|
||||
/* According to Documentation/arch/riscv/boot-image-header.rst,
|
||||
* use "magic2" field to check when version >= 0.2.
|
||||
*/
|
||||
|
||||
|
||||
@@ -68,18 +68,19 @@ static long save_fp_state(struct pt_regs *regs,
|
||||
#define restore_fp_state(task, regs) (0)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RISCV_ISA_V
|
||||
|
||||
static long save_v_state(struct pt_regs *regs, void __user **sc_vec)
|
||||
static long save_v_state(struct pt_regs *regs, void __user *sc_vec)
|
||||
{
|
||||
struct __riscv_ctx_hdr __user *hdr;
|
||||
struct __sc_riscv_v_state __user *state;
|
||||
void __user *datap;
|
||||
long err;
|
||||
|
||||
hdr = *sc_vec;
|
||||
/* Place state to the user's signal context space after the hdr */
|
||||
state = (struct __sc_riscv_v_state __user *)(hdr + 1);
|
||||
if (!IS_ENABLED(CONFIG_RISCV_ISA_V) ||
|
||||
!((has_vector() || has_xtheadvector()) &&
|
||||
riscv_v_vstate_query(regs)))
|
||||
return 0;
|
||||
|
||||
/* Place state to the user's signal context space */
|
||||
state = (struct __sc_riscv_v_state __user *)sc_vec;
|
||||
/* Point datap right after the end of __sc_riscv_v_state */
|
||||
datap = state + 1;
|
||||
|
||||
@@ -97,15 +98,11 @@ static long save_v_state(struct pt_regs *regs, void __user **sc_vec)
|
||||
err |= __put_user((__force void *)datap, &state->v_state.datap);
|
||||
/* Copy the whole vector content to user space datap. */
|
||||
err |= __copy_to_user(datap, current->thread.vstate.datap, riscv_v_vsize);
|
||||
/* Copy magic to the user space after saving all vector conetext */
|
||||
err |= __put_user(RISCV_V_MAGIC, &hdr->magic);
|
||||
err |= __put_user(riscv_v_sc_size, &hdr->size);
|
||||
if (unlikely(err))
|
||||
return err;
|
||||
return -EFAULT;
|
||||
|
||||
/* Only progress the sv_vec if everything has done successfully */
|
||||
*sc_vec += riscv_v_sc_size;
|
||||
return 0;
|
||||
/* Only return the size if everything has done successfully */
|
||||
return riscv_v_sc_size;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -142,10 +139,20 @@ static long __restore_v_state(struct pt_regs *regs, void __user *sc_vec)
|
||||
*/
|
||||
return copy_from_user(current->thread.vstate.datap, datap, riscv_v_vsize);
|
||||
}
|
||||
#else
|
||||
#define save_v_state(task, regs) (0)
|
||||
#define __restore_v_state(task, regs) (0)
|
||||
#endif
|
||||
|
||||
struct arch_ext_priv {
|
||||
__u32 magic;
|
||||
long (*save)(struct pt_regs *regs, void __user *sc_vec);
|
||||
};
|
||||
|
||||
struct arch_ext_priv arch_ext_list[] = {
|
||||
{
|
||||
.magic = RISCV_V_MAGIC,
|
||||
.save = &save_v_state,
|
||||
},
|
||||
};
|
||||
|
||||
const size_t nr_arch_exts = ARRAY_SIZE(arch_ext_list);
|
||||
|
||||
static long restore_sigcontext(struct pt_regs *regs,
|
||||
struct sigcontext __user *sc)
|
||||
@@ -270,7 +277,8 @@ static long setup_sigcontext(struct rt_sigframe __user *frame,
|
||||
{
|
||||
struct sigcontext __user *sc = &frame->uc.uc_mcontext;
|
||||
struct __riscv_ctx_hdr __user *sc_ext_ptr = &sc->sc_extdesc.hdr;
|
||||
long err;
|
||||
struct arch_ext_priv *arch_ext;
|
||||
long err, i, ext_size;
|
||||
|
||||
/* sc_regs is structured the same as the start of pt_regs */
|
||||
err = __copy_to_user(&sc->sc_regs, regs, sizeof(sc->sc_regs));
|
||||
@@ -278,8 +286,20 @@ static long setup_sigcontext(struct rt_sigframe __user *frame,
|
||||
if (has_fpu())
|
||||
err |= save_fp_state(regs, &sc->sc_fpregs);
|
||||
/* Save the vector state. */
|
||||
if ((has_vector() || has_xtheadvector()) && riscv_v_vstate_query(regs))
|
||||
err |= save_v_state(regs, (void __user **)&sc_ext_ptr);
|
||||
for (i = 0; i < nr_arch_exts; i++) {
|
||||
arch_ext = &arch_ext_list[i];
|
||||
if (!arch_ext->save)
|
||||
continue;
|
||||
|
||||
ext_size = arch_ext->save(regs, sc_ext_ptr + 1);
|
||||
if (ext_size <= 0) {
|
||||
err |= ext_size;
|
||||
} else {
|
||||
err |= __put_user(arch_ext->magic, &sc_ext_ptr->magic);
|
||||
err |= __put_user(ext_size, &sc_ext_ptr->size);
|
||||
sc_ext_ptr = (void *)sc_ext_ptr + ext_size;
|
||||
}
|
||||
}
|
||||
/* Write zero to fp-reserved space and check it on restore_sigcontext */
|
||||
err |= __put_user(0, &sc->sc_extdesc.reserved);
|
||||
/* And put END __riscv_ctx_hdr at the end. */
|
||||
|
||||
@@ -121,6 +121,7 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
|
||||
EXT_KEY(ZBS);
|
||||
EXT_KEY(ZCA);
|
||||
EXT_KEY(ZCB);
|
||||
EXT_KEY(ZCLSD);
|
||||
EXT_KEY(ZCMOP);
|
||||
EXT_KEY(ZICBOM);
|
||||
EXT_KEY(ZICBOP);
|
||||
@@ -130,6 +131,7 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
|
||||
EXT_KEY(ZIHINTNTL);
|
||||
EXT_KEY(ZIHINTPAUSE);
|
||||
EXT_KEY(ZIHPM);
|
||||
EXT_KEY(ZILSD);
|
||||
EXT_KEY(ZIMOP);
|
||||
EXT_KEY(ZKND);
|
||||
EXT_KEY(ZKNE);
|
||||
|
||||
@@ -181,6 +181,7 @@ SYM_FUNC_END(test_kprobes_c_bnez)
|
||||
|
||||
#endif /* CONFIG_RISCV_ISA_C */
|
||||
|
||||
.section .rodata
|
||||
SYM_DATA_START(test_kprobes_addresses)
|
||||
RISCV_PTR test_kprobes_add_addr1
|
||||
RISCV_PTR test_kprobes_add_addr2
|
||||
@@ -212,6 +213,7 @@ SYM_DATA_START(test_kprobes_addresses)
|
||||
RISCV_PTR 0
|
||||
SYM_DATA_END(test_kprobes_addresses)
|
||||
|
||||
.section .rodata
|
||||
SYM_DATA_START(test_kprobes_functions)
|
||||
RISCV_PTR test_kprobes_add
|
||||
RISCV_PTR test_kprobes_jal
|
||||
|
||||
@@ -339,8 +339,10 @@ void do_trap_ecall_u(struct pt_regs *regs)
|
||||
|
||||
add_random_kstack_offset();
|
||||
|
||||
if (syscall >= 0 && syscall < NR_syscalls)
|
||||
if (syscall >= 0 && syscall < NR_syscalls) {
|
||||
syscall = array_index_nospec(syscall, NR_syscalls);
|
||||
syscall_handler(regs, syscall);
|
||||
}
|
||||
|
||||
/*
|
||||
* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(),
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Heavily based on the x86 and PowerPC implementations.
|
||||
*
|
||||
* x86:
|
||||
* Copyright (C) 2008 Thomas Gleixner <tglx@linutronix.de>
|
||||
* Copyright (C) 2008 Linutronix GmbH, Thomas Gleixner <tglx@kernel.org>
|
||||
* Copyright (C) 2008-2009 Red Hat, Inc., Ingo Molnar
|
||||
* Copyright (C) 2009 Jaswinder Singh Rajput
|
||||
* Copyright (C) 2009 Advanced Micro Devices, Inc., Robert Richter
|
||||
|
||||
@@ -181,6 +181,28 @@ static int __init ofpci_debug(char *str)
|
||||
|
||||
__setup("ofpci_debug=", ofpci_debug);
|
||||
|
||||
static void of_fixup_pci_pref(struct pci_dev *dev, int index,
|
||||
struct resource *res)
|
||||
{
|
||||
struct pci_bus_region region;
|
||||
|
||||
if (!(res->flags & IORESOURCE_MEM_64))
|
||||
return;
|
||||
|
||||
if (!resource_size(res))
|
||||
return;
|
||||
|
||||
pcibios_resource_to_bus(dev->bus, ®ion, res);
|
||||
if (region.end <= ~((u32)0))
|
||||
return;
|
||||
|
||||
if (!(res->flags & IORESOURCE_PREFETCH)) {
|
||||
res->flags |= IORESOURCE_PREFETCH;
|
||||
pci_info(dev, "reg 0x%x: fixup: pref added to 64-bit resource\n",
|
||||
index);
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned long pci_parse_of_flags(u32 addr0)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
@@ -244,6 +266,7 @@ static void pci_parse_of_addrs(struct platform_device *op,
|
||||
res->end = op_res->end;
|
||||
res->flags = flags;
|
||||
res->name = pci_name(dev);
|
||||
of_fixup_pci_pref(dev, i, res);
|
||||
|
||||
pci_info(dev, "reg 0x%x: %pR\n", i, res);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* This code is based almost entirely upon the x86 perf event
|
||||
* code, which is:
|
||||
*
|
||||
* Copyright (C) 2008 Thomas Gleixner <tglx@linutronix.de>
|
||||
* Copyright (C) 2008 Linutronix GmbH, Thomas Gleixner <tglx@kernel.org>
|
||||
* Copyright (C) 2008-2009 Red Hat, Inc., Ingo Molnar
|
||||
* Copyright (C) 2009 Jaswinder Singh Rajput
|
||||
* Copyright (C) 2009 Advanced Micro Devices, Inc., Robert Richter
|
||||
|
||||
@@ -8,3 +8,5 @@ UBSAN_SANITIZE_noinstr.o := n
|
||||
# GCC may fail to respect __no_sanitize_address or __no_kcsan when inlining
|
||||
KASAN_SANITIZE_noinstr.o := n
|
||||
KCSAN_SANITIZE_noinstr.o := n
|
||||
|
||||
GCOV_PROFILE_noinstr.o := n
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Performance events x86 architecture code
|
||||
*
|
||||
* Copyright (C) 2008 Thomas Gleixner <tglx@linutronix.de>
|
||||
* Copyright (C) 2008 Linutronix GmbH, Thomas Gleixner <tglx@kernel.org>
|
||||
* Copyright (C) 2008-2009 Red Hat, Inc., Ingo Molnar
|
||||
* Copyright (C) 2009 Jaswinder Singh Rajput
|
||||
* Copyright (C) 2009 Advanced Micro Devices, Inc., Robert Richter
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Performance events x86 architecture header
|
||||
*
|
||||
* Copyright (C) 2008 Thomas Gleixner <tglx@linutronix.de>
|
||||
* Copyright (C) 2008 Linutronix GmbH, Thomas Gleixner <tglx@kernel.org>
|
||||
* Copyright (C) 2008-2009 Red Hat, Inc., Ingo Molnar
|
||||
* Copyright (C) 2009 Jaswinder Singh Rajput
|
||||
* Copyright (C) 2009 Advanced Micro Devices, Inc., Robert Richter
|
||||
|
||||
@@ -258,7 +258,7 @@ static bool cpu_has_entrysign(void)
|
||||
if (fam == 0x1a) {
|
||||
if (model <= 0x2f ||
|
||||
(0x40 <= model && model <= 0x4f) ||
|
||||
(0x60 <= model && model <= 0x6f))
|
||||
(0x60 <= model && model <= 0x7f))
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2009 Thomas Gleixner <tglx@linutronix.de>
|
||||
* Copyright (C) 2009 Linutronix GmbH, Thomas Gleixner <tglx@kernel.org>
|
||||
*
|
||||
* For licencing details see kernel-base/COPYING
|
||||
*/
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* Signed-off-by: Michael Schwarz <michael.schwarz@iaik.tugraz.at>
|
||||
*
|
||||
* Major changes to the original code by: Dave Hansen <dave.hansen@intel.com>
|
||||
* Mostly rewritten by Thomas Gleixner <tglx@linutronix.de> and
|
||||
* Mostly rewritten by Thomas Gleixner <tglx@kernel.org> and
|
||||
* Andy Lutomirsky <luto@amacapital.net>
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
|
||||
@@ -380,7 +380,7 @@ static void bfqg_stats_add_aux(struct bfqg_stats *to, struct bfqg_stats *from)
|
||||
blkg_rwstat_add_aux(&to->merged, &from->merged);
|
||||
blkg_rwstat_add_aux(&to->service_time, &from->service_time);
|
||||
blkg_rwstat_add_aux(&to->wait_time, &from->wait_time);
|
||||
bfq_stat_add_aux(&from->time, &from->time);
|
||||
bfq_stat_add_aux(&to->time, &from->time);
|
||||
bfq_stat_add_aux(&to->avg_queue_size_sum, &from->avg_queue_size_sum);
|
||||
bfq_stat_add_aux(&to->avg_queue_size_samples,
|
||||
&from->avg_queue_size_samples);
|
||||
|
||||
@@ -984,7 +984,7 @@ struct bfq_group_data {
|
||||
* unused for the root group. Used to know whether there
|
||||
* are groups with more than one active @bfq_entity
|
||||
* (see the comments to the function
|
||||
* bfq_bfqq_may_idle()).
|
||||
* bfq_better_to_idle()).
|
||||
* @rq_pos_tree: rbtree sorted by next_request position, used when
|
||||
* determining if two or more queues have interleaving
|
||||
* requests (see bfq_find_close_cooperator()).
|
||||
|
||||
@@ -140,14 +140,21 @@ EXPORT_SYMBOL_GPL(blk_rq_integrity_map_user);
|
||||
bool blk_integrity_merge_rq(struct request_queue *q, struct request *req,
|
||||
struct request *next)
|
||||
{
|
||||
struct bio_integrity_payload *bip, *bip_next;
|
||||
|
||||
if (blk_integrity_rq(req) == 0 && blk_integrity_rq(next) == 0)
|
||||
return true;
|
||||
|
||||
if (blk_integrity_rq(req) == 0 || blk_integrity_rq(next) == 0)
|
||||
return false;
|
||||
|
||||
if (bio_integrity(req->bio)->bip_flags !=
|
||||
bio_integrity(next->bio)->bip_flags)
|
||||
bip = bio_integrity(req->bio);
|
||||
bip_next = bio_integrity(next->bio);
|
||||
if (bip->bip_flags != bip_next->bip_flags)
|
||||
return false;
|
||||
|
||||
if (bip->bip_flags & BIP_CHECK_APPTAG &&
|
||||
bip->app_tag != bip_next->app_tag)
|
||||
return false;
|
||||
|
||||
if (req->nr_integrity_segments + next->nr_integrity_segments >
|
||||
@@ -163,15 +170,21 @@ bool blk_integrity_merge_rq(struct request_queue *q, struct request *req,
|
||||
bool blk_integrity_merge_bio(struct request_queue *q, struct request *req,
|
||||
struct bio *bio)
|
||||
{
|
||||
struct bio_integrity_payload *bip, *bip_bio = bio_integrity(bio);
|
||||
int nr_integrity_segs;
|
||||
|
||||
if (blk_integrity_rq(req) == 0 && bio_integrity(bio) == NULL)
|
||||
if (blk_integrity_rq(req) == 0 && bip_bio == NULL)
|
||||
return true;
|
||||
|
||||
if (blk_integrity_rq(req) == 0 || bio_integrity(bio) == NULL)
|
||||
if (blk_integrity_rq(req) == 0 || bip_bio == NULL)
|
||||
return false;
|
||||
|
||||
if (bio_integrity(req->bio)->bip_flags != bio_integrity(bio)->bip_flags)
|
||||
bip = bio_integrity(req->bio);
|
||||
if (bip->bip_flags != bip_bio->bip_flags)
|
||||
return false;
|
||||
|
||||
if (bip->bip_flags & BIP_CHECK_APPTAG &&
|
||||
bip->app_tag != bip_bio->app_tag)
|
||||
return false;
|
||||
|
||||
nr_integrity_segs = blk_rq_count_integrity_sg(q, bio);
|
||||
|
||||
@@ -3721,7 +3721,7 @@ static int blk_mq_hctx_notify_offline(unsigned int cpu, struct hlist_node *node)
|
||||
struct blk_mq_hw_ctx, cpuhp_online);
|
||||
int ret = 0;
|
||||
|
||||
if (blk_mq_hctx_has_online_cpu(hctx, cpu))
|
||||
if (!hctx->nr_ctx || blk_mq_hctx_has_online_cpu(hctx, cpu))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
@@ -4553,8 +4553,7 @@ static void __blk_mq_realloc_hw_ctxs(struct blk_mq_tag_set *set,
|
||||
* Make sure reading the old queue_hw_ctx from other
|
||||
* context concurrently won't trigger uaf.
|
||||
*/
|
||||
synchronize_rcu_expedited();
|
||||
kfree(hctxs);
|
||||
kfree_rcu_mightsleep(hctxs);
|
||||
hctxs = new_hctxs;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user