Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR. Conflicts: net/mptcp/protocol.cadf1bb78da
("mptcp: fix snd_wnd initialization for passive socket")9426ce476a
("mptcp: annotate lockless access for RX path fields") https://lore.kernel.org/all/20240228103048.19255709@canb.auug.org.au/ Adjacent changes: drivers/dpll/dpll_core.c0d60d8df6f
("dpll: rely on rcu for netdev_dpll_pin()")e7f8df0e81
("dpll: move xa_erase() call in to match dpll_pin_alloc() error path order") drivers/net/veth.c1ce7d306ea
("veth: try harder when allocating queue memory")0bef512012
("net: add netdev_lockdep_set_classes() to virtual drivers") drivers/net/wireless/intel/iwlwifi/mvm/d3.c8c9bef26e9
("wifi: iwlwifi: mvm: d3: implement suspend with MLO")78f65fbf42
("wifi: iwlwifi: mvm: ensure offloading TID queue exists") net/wireless/nl80211.cf78c137533
("wifi: nl80211: reject iftype change with mesh ID change")414532d8aa
("wifi: cfg80211: use IEEE80211_MAX_MESH_ID_LEN appropriately") Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
65f5dd4f02
1
.mailmap
1
.mailmap
|
@ -553,6 +553,7 @@ Senthilkumar N L <quic_snlakshm@quicinc.com> <snlakshm@codeaurora.org>
|
|||
Serge Hallyn <sergeh@kernel.org> <serge.hallyn@canonical.com>
|
||||
Serge Hallyn <sergeh@kernel.org> <serue@us.ibm.com>
|
||||
Seth Forshee <sforshee@kernel.org> <seth.forshee@canonical.com>
|
||||
Shakeel Butt <shakeel.butt@linux.dev> <shakeelb@google.com>
|
||||
Shannon Nelson <shannon.nelson@amd.com> <snelson@pensando.io>
|
||||
Shannon Nelson <shannon.nelson@amd.com> <shannon.nelson@intel.com>
|
||||
Shannon Nelson <shannon.nelson@amd.com> <shannon.nelson@oracle.com>
|
||||
|
|
|
@ -95,6 +95,9 @@ The kernel provides a function to invoke the buffer clearing:
|
|||
|
||||
mds_clear_cpu_buffers()
|
||||
|
||||
Also macro CLEAR_CPU_BUFFERS can be used in ASM late in exit-to-user path.
|
||||
Other than CFLAGS.ZF, this macro doesn't clobber any registers.
|
||||
|
||||
The mitigation is invoked on kernel/userspace, hypervisor/guest and C-state
|
||||
(idle) transitions.
|
||||
|
||||
|
@ -138,17 +141,30 @@ Mitigation points
|
|||
|
||||
When transitioning from kernel to user space the CPU buffers are flushed
|
||||
on affected CPUs when the mitigation is not disabled on the kernel
|
||||
command line. The migitation is enabled through the static key
|
||||
mds_user_clear.
|
||||
command line. The mitigation is enabled through the feature flag
|
||||
X86_FEATURE_CLEAR_CPU_BUF.
|
||||
|
||||
The mitigation is invoked in prepare_exit_to_usermode() which covers
|
||||
all but one of the kernel to user space transitions. The exception
|
||||
is when we return from a Non Maskable Interrupt (NMI), which is
|
||||
handled directly in do_nmi().
|
||||
The mitigation is invoked just before transitioning to userspace after
|
||||
user registers are restored. This is done to minimize the window in
|
||||
which kernel data could be accessed after VERW e.g. via an NMI after
|
||||
VERW.
|
||||
|
||||
(The reason that NMI is special is that prepare_exit_to_usermode() can
|
||||
enable IRQs. In NMI context, NMIs are blocked, and we don't want to
|
||||
enable IRQs with NMIs blocked.)
|
||||
**Corner case not handled**
|
||||
Interrupts returning to kernel don't clear CPUs buffers since the
|
||||
exit-to-user path is expected to do that anyways. But, there could be
|
||||
a case when an NMI is generated in kernel after the exit-to-user path
|
||||
has cleared the buffers. This case is not handled and NMI returning to
|
||||
kernel don't clear CPU buffers because:
|
||||
|
||||
1. It is rare to get an NMI after VERW, but before returning to userspace.
|
||||
2. For an unprivileged user, there is no known way to make that NMI
|
||||
less rare or target it.
|
||||
3. It would take a large number of these precisely-timed NMIs to mount
|
||||
an actual attack. There's presumably not enough bandwidth.
|
||||
4. The NMI in question occurs after a VERW, i.e. when user state is
|
||||
restored and most interesting data is already scrubbed. Whats left
|
||||
is only the data that NMI touches, and that may or may not be of
|
||||
any interest.
|
||||
|
||||
|
||||
2. C-State transition
|
||||
|
|
|
@ -388,6 +388,12 @@ latex_elements = {
|
|||
verbatimhintsturnover=false,
|
||||
''',
|
||||
|
||||
#
|
||||
# Some of our authors are fond of deep nesting; tell latex to
|
||||
# cope.
|
||||
#
|
||||
'maxlistdepth': '10',
|
||||
|
||||
# For CJK One-half spacing, need to be in front of hyperref
|
||||
'extrapackages': r'\usepackage{setspace}',
|
||||
|
||||
|
|
|
@ -85,8 +85,8 @@ allOf:
|
|||
|
||||
clock-names:
|
||||
items:
|
||||
- const: dout_cmu_misc_bus
|
||||
- const: dout_cmu_misc_sss
|
||||
- const: bus
|
||||
- const: sss
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
.. Copyright (C) 2023 Google LLC
|
||||
|
||||
=====================================================
|
||||
inet_connection_sock struct fast path usage breakdown
|
||||
=====================================================
|
||||
==========================================
|
||||
inet_sock struct fast path usage breakdown
|
||||
==========================================
|
||||
|
||||
Type Name fastpath_tx_access fastpath_rx_access comment
|
||||
..struct ..inet_sock
|
||||
|
|
|
@ -29,10 +29,7 @@ all_languages = {
|
|||
}
|
||||
|
||||
class LanguagesNode(nodes.Element):
|
||||
def __init__(self, current_language, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.current_language = current_language
|
||||
pass
|
||||
|
||||
class TranslationsTransform(Transform):
|
||||
default_priority = 900
|
||||
|
@ -49,7 +46,8 @@ class TranslationsTransform(Transform):
|
|||
# normalize docname to be the untranslated one
|
||||
docname = os.path.join(*components[2:])
|
||||
|
||||
new_nodes = LanguagesNode(all_languages[this_lang_code])
|
||||
new_nodes = LanguagesNode()
|
||||
new_nodes['current_language'] = all_languages[this_lang_code]
|
||||
|
||||
for lang_code, lang_name in all_languages.items():
|
||||
if lang_code == this_lang_code:
|
||||
|
@ -84,7 +82,7 @@ def process_languages(app, doctree, docname):
|
|||
|
||||
html_content = app.builder.templates.render('translations.html',
|
||||
context={
|
||||
'current_language': node.current_language,
|
||||
'current_language': node['current_language'],
|
||||
'languages': languages,
|
||||
})
|
||||
|
||||
|
|
29
MAINTAINERS
29
MAINTAINERS
|
@ -5381,7 +5381,7 @@ CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
|
|||
M: Johannes Weiner <hannes@cmpxchg.org>
|
||||
M: Michal Hocko <mhocko@kernel.org>
|
||||
M: Roman Gushchin <roman.gushchin@linux.dev>
|
||||
M: Shakeel Butt <shakeelb@google.com>
|
||||
M: Shakeel Butt <shakeel.butt@linux.dev>
|
||||
R: Muchun Song <muchun.song@linux.dev>
|
||||
L: cgroups@vger.kernel.org
|
||||
L: linux-mm@kvack.org
|
||||
|
@ -14130,6 +14130,17 @@ F: mm/
|
|||
F: tools/mm/
|
||||
F: tools/testing/selftests/mm/
|
||||
|
||||
MEMORY MAPPING
|
||||
M: Andrew Morton <akpm@linux-foundation.org>
|
||||
R: Liam R. Howlett <Liam.Howlett@oracle.com>
|
||||
R: Vlastimil Babka <vbabka@suse.cz>
|
||||
R: Lorenzo Stoakes <lstoakes@gmail.com>
|
||||
L: linux-mm@kvack.org
|
||||
S: Maintained
|
||||
W: http://www.linux-mm.org
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
|
||||
F: mm/mmap.c
|
||||
|
||||
MEMORY TECHNOLOGY DEVICES (MTD)
|
||||
M: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
M: Richard Weinberger <richard@nod.at>
|
||||
|
@ -14388,7 +14399,7 @@ MICROCHIP MCP16502 PMIC DRIVER
|
|||
M: Claudiu Beznea <claudiu.beznea@tuxon.dev>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/regulator/mcp16502-regulator.txt
|
||||
F: Documentation/devicetree/bindings/regulator/microchip,mcp16502.yaml
|
||||
F: drivers/regulator/mcp16502.c
|
||||
|
||||
MICROCHIP MCP3564 ADC DRIVER
|
||||
|
@ -18004,33 +18015,34 @@ F: drivers/media/tuners/qt1010*
|
|||
|
||||
QUALCOMM ATH12K WIRELESS DRIVER
|
||||
M: Kalle Valo <kvalo@kernel.org>
|
||||
M: Jeff Johnson <quic_jjohnson@quicinc.com>
|
||||
M: Jeff Johnson <jjohnson@kernel.org>
|
||||
L: ath12k@lists.infradead.org
|
||||
S: Supported
|
||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
||||
F: drivers/net/wireless/ath/ath12k/
|
||||
N: ath12k
|
||||
|
||||
QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
|
||||
M: Kalle Valo <kvalo@kernel.org>
|
||||
M: Jeff Johnson <quic_jjohnson@quicinc.com>
|
||||
M: Jeff Johnson <jjohnson@kernel.org>
|
||||
L: ath10k@lists.infradead.org
|
||||
S: Supported
|
||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
||||
F: Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml
|
||||
F: drivers/net/wireless/ath/ath10k/
|
||||
N: ath10k
|
||||
|
||||
QUALCOMM ATHEROS ATH11K WIRELESS DRIVER
|
||||
M: Kalle Valo <kvalo@kernel.org>
|
||||
M: Jeff Johnson <quic_jjohnson@quicinc.com>
|
||||
M: Jeff Johnson <jjohnson@kernel.org>
|
||||
L: ath11k@lists.infradead.org
|
||||
S: Supported
|
||||
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k
|
||||
B: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k/bugreport
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
||||
F: Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml
|
||||
F: drivers/net/wireless/ath/ath11k/
|
||||
N: ath11k
|
||||
|
||||
QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
|
||||
M: Toke Høiland-Jørgensen <toke@toke.dk>
|
||||
|
@ -22907,9 +22919,8 @@ S: Maintained
|
|||
F: drivers/usb/typec/mux/pi3usb30532.c
|
||||
|
||||
USB TYPEC PORT CONTROLLER DRIVERS
|
||||
M: Guenter Roeck <linux@roeck-us.net>
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
S: Orphan
|
||||
F: drivers/usb/typec/tcpm/
|
||||
|
||||
USB UHCI DRIVER
|
||||
|
|
2
Makefile
2
Makefile
|
@ -2,7 +2,7 @@
|
|||
VERSION = 6
|
||||
PATCHLEVEL = 8
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc5
|
||||
EXTRAVERSION = -rc6
|
||||
NAME = Hurr durr I'ma ninja sloth
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -167,7 +167,6 @@
|
|||
msix: msix@fbe00000 {
|
||||
compatible = "al,alpine-msix";
|
||||
reg = <0x0 0xfbe00000 0x0 0x100000>;
|
||||
interrupt-controller;
|
||||
msi-controller;
|
||||
al,msi-base-spi = <96>;
|
||||
al,msi-num-spis = <64>;
|
||||
|
|
|
@ -466,7 +466,6 @@
|
|||
i2c0: i2c-bus@40 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x40 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -482,7 +481,6 @@
|
|||
i2c1: i2c-bus@80 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x80 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -498,7 +496,6 @@
|
|||
i2c2: i2c-bus@c0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0xc0 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -515,7 +512,6 @@
|
|||
i2c3: i2c-bus@100 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x100 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -532,7 +528,6 @@
|
|||
i2c4: i2c-bus@140 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x140 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -549,7 +544,6 @@
|
|||
i2c5: i2c-bus@180 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x180 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -566,7 +560,6 @@
|
|||
i2c6: i2c-bus@1c0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x1c0 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -583,7 +576,6 @@
|
|||
i2c7: i2c-bus@300 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x300 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -600,7 +592,6 @@
|
|||
i2c8: i2c-bus@340 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x340 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -617,7 +608,6 @@
|
|||
i2c9: i2c-bus@380 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x380 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -634,7 +624,6 @@
|
|||
i2c10: i2c-bus@3c0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x3c0 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -651,7 +640,6 @@
|
|||
i2c11: i2c-bus@400 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x400 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -668,7 +656,6 @@
|
|||
i2c12: i2c-bus@440 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x440 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
@ -685,7 +672,6 @@
|
|||
i2c13: i2c-bus@480 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x480 0x40>;
|
||||
compatible = "aspeed,ast2400-i2c-bus";
|
||||
|
|
|
@ -363,6 +363,7 @@
|
|||
interrupts = <40>;
|
||||
reg = <0x1e780200 0x0100>;
|
||||
clocks = <&syscon ASPEED_CLK_APB>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
bus-frequency = <12000000>;
|
||||
pinctrl-names = "default";
|
||||
|
@ -594,7 +595,6 @@
|
|||
i2c0: i2c-bus@40 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x40 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -610,7 +610,6 @@
|
|||
i2c1: i2c-bus@80 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x80 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -626,7 +625,6 @@
|
|||
i2c2: i2c-bus@c0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0xc0 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -643,7 +641,6 @@
|
|||
i2c3: i2c-bus@100 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x100 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -660,7 +657,6 @@
|
|||
i2c4: i2c-bus@140 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x140 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -677,7 +673,6 @@
|
|||
i2c5: i2c-bus@180 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x180 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -694,7 +689,6 @@
|
|||
i2c6: i2c-bus@1c0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x1c0 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -711,7 +705,6 @@
|
|||
i2c7: i2c-bus@300 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x300 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -728,7 +721,6 @@
|
|||
i2c8: i2c-bus@340 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x340 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -745,7 +737,6 @@
|
|||
i2c9: i2c-bus@380 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x380 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -762,7 +753,6 @@
|
|||
i2c10: i2c-bus@3c0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x3c0 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -779,7 +769,6 @@
|
|||
i2c11: i2c-bus@400 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x400 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -796,7 +785,6 @@
|
|||
i2c12: i2c-bus@440 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x440 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
@ -813,7 +801,6 @@
|
|||
i2c13: i2c-bus@480 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x480 0x40>;
|
||||
compatible = "aspeed,ast2500-i2c-bus";
|
||||
|
|
|
@ -474,6 +474,7 @@
|
|||
reg = <0x1e780500 0x100>;
|
||||
interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
bus-frequency = <12000000>;
|
||||
pinctrl-names = "default";
|
||||
|
@ -488,6 +489,7 @@
|
|||
reg = <0x1e780600 0x100>;
|
||||
interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
bus-frequency = <12000000>;
|
||||
pinctrl-names = "default";
|
||||
|
@ -902,7 +904,6 @@
|
|||
i2c0: i2c-bus@80 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x80 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -917,7 +918,6 @@
|
|||
i2c1: i2c-bus@100 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x100 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -932,7 +932,6 @@
|
|||
i2c2: i2c-bus@180 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x180 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -947,7 +946,6 @@
|
|||
i2c3: i2c-bus@200 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x200 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -962,7 +960,6 @@
|
|||
i2c4: i2c-bus@280 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x280 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -977,7 +974,6 @@
|
|||
i2c5: i2c-bus@300 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x300 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -992,7 +988,6 @@
|
|||
i2c6: i2c-bus@380 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x380 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1007,7 +1002,6 @@
|
|||
i2c7: i2c-bus@400 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x400 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1022,7 +1016,6 @@
|
|||
i2c8: i2c-bus@480 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x480 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1037,7 +1030,6 @@
|
|||
i2c9: i2c-bus@500 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x500 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1052,7 +1044,6 @@
|
|||
i2c10: i2c-bus@580 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x580 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1067,7 +1058,6 @@
|
|||
i2c11: i2c-bus@600 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x600 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1082,7 +1072,6 @@
|
|||
i2c12: i2c-bus@680 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x680 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1097,7 +1086,6 @@
|
|||
i2c13: i2c-bus@700 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x700 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1112,7 +1100,6 @@
|
|||
i2c14: i2c-bus@780 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x780 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
@ -1127,7 +1114,6 @@
|
|||
i2c15: i2c-bus@800 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0x800 0x80>;
|
||||
compatible = "aspeed,ast2600-i2c-bus";
|
||||
clocks = <&syscon ASPEED_CLK_APB2>;
|
||||
|
|
|
@ -167,6 +167,7 @@
|
|||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&mailbox>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
@ -247,6 +248,7 @@
|
|||
gpio-controller;
|
||||
interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
i2c1: i2c@1800b000 {
|
||||
|
@ -518,6 +520,7 @@
|
|||
gpio-controller;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
|
||||
gpio-ranges = <&pinctrl 0 42 1>,
|
||||
<&pinctrl 1 44 3>,
|
||||
|
|
|
@ -200,6 +200,7 @@
|
|||
gpio-controller;
|
||||
ngpios = <4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
|
|
|
@ -180,6 +180,7 @@
|
|||
gpio-controller;
|
||||
ngpios = <32>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
|
||||
gpio-ranges = <&pinctrl 0 0 32>;
|
||||
};
|
||||
|
@ -352,6 +353,7 @@
|
|||
gpio-controller;
|
||||
ngpios = <4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
|
|
|
@ -60,6 +60,8 @@
|
|||
* We have slots (IDSEL) 1 and 2 with one assigned IRQ
|
||||
* each handling all IRQs.
|
||||
*/
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0xf800 0 0 7>;
|
||||
interrupt-map =
|
||||
/* IDSEL 1 */
|
||||
<0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
|
||||
|
|
|
@ -89,6 +89,8 @@
|
|||
* The slots have Ethernet, Ethernet, NEC and MPCI.
|
||||
* The IDSELs are 11, 12, 13, 14.
|
||||
*/
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0xf800 0 0 7>;
|
||||
interrupt-map =
|
||||
/* IDSEL 11 - Ethernet A */
|
||||
<0x5800 0 0 1 &gpio0 4 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 11 is irq 4 */
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
gpio2: gpio-expander@20 {
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
compatible = "semtech,sx1505q";
|
||||
reg = <0x20>;
|
||||
|
||||
|
@ -79,6 +80,7 @@
|
|||
gpio3: gpio-expander@21 {
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
compatible = "semtech,sx1505q";
|
||||
reg = <0x21>;
|
||||
|
||||
|
|
|
@ -120,6 +120,7 @@
|
|||
interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<3 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
|
@ -128,6 +129,7 @@
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
|
|
|
@ -997,7 +997,6 @@
|
|||
compatible = "st,stmpe811";
|
||||
reg = <0x41>;
|
||||
irq-gpio = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
|
||||
interrupt-controller;
|
||||
id = <0>;
|
||||
blocks = <0x5>;
|
||||
irq-trigger = <0x1>;
|
||||
|
|
|
@ -980,7 +980,6 @@
|
|||
compatible = "st,stmpe811";
|
||||
reg = <0x41>;
|
||||
irq-gpio = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
|
||||
interrupt-controller;
|
||||
id = <0>;
|
||||
blocks = <0x5>;
|
||||
irq-trigger = <0x1>;
|
||||
|
|
|
@ -861,7 +861,6 @@
|
|||
compatible = "st,stmpe811";
|
||||
reg = <0x41>;
|
||||
irq-gpio = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
|
||||
interrupt-controller;
|
||||
id = <0>;
|
||||
blocks = <0x5>;
|
||||
irq-trigger = <0x1>;
|
||||
|
|
|
@ -227,7 +227,6 @@
|
|||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
bridge@2,1 {
|
||||
compatible = "pci10b5,8605";
|
||||
|
@ -235,7 +234,6 @@
|
|||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
/* Intel Corporation I210 Gigabit Network Connection */
|
||||
ethernet@3,0 {
|
||||
|
@ -250,7 +248,6 @@
|
|||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
/* Intel Corporation I210 Gigabit Network Connection */
|
||||
switch_nic: ethernet@4,0 {
|
||||
|
|
|
@ -245,6 +245,7 @@
|
|||
reg = <0x74>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
@ -390,7 +391,6 @@
|
|||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -626,7 +626,6 @@
|
|||
blocks = <0x5>;
|
||||
id = <0>;
|
||||
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
interrupt-parent = <&gpio4>;
|
||||
irq-trigger = <0x1>;
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -550,7 +550,6 @@
|
|||
blocks = <0x5>;
|
||||
interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupt-controller;
|
||||
id = <0>;
|
||||
irq-trigger = <0x1>;
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -225,7 +225,6 @@
|
|||
pinctrl-0 = <&pinctrl_pmic>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
|
||||
onkey {
|
||||
compatible = "dlg,da9063-onkey";
|
||||
|
|
|
@ -124,6 +124,7 @@
|
|||
reg = <0x58>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <9 IRQ_TYPE_LEVEL_LOW>; /* active-low GPIO2_9 */
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
regulators {
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
reg = <0x25>;
|
||||
};
|
||||
|
||||
|
|
|
@ -338,6 +338,7 @@
|
|||
reg = <0x22>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
|
|
@ -340,10 +340,10 @@
|
|||
"msi8";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0x7>;
|
||||
interrupt-map = <0 0 0 1 &intc 0 0 0 141 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||
<0 0 0 2 &intc 0 0 0 142 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||
<0 0 0 3 &intc 0 0 0 143 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||
<0 0 0 4 &intc 0 0 0 144 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||
interrupt-map = <0 0 0 1 &intc 0 141 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||
<0 0 0 2 &intc 0 142 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||
<0 0 0 3 &intc 0 143 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||
<0 0 0 4 &intc 0 144 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||
|
||||
clocks = <&gcc GCC_PCIE_PIPE_CLK>,
|
||||
<&gcc GCC_PCIE_AUX_CLK>,
|
||||
|
|
|
@ -447,6 +447,7 @@
|
|||
interrupt-parent = <&irqc0>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
rtc {
|
||||
compatible = "dlg,da9063-rtc";
|
||||
|
|
|
@ -347,6 +347,7 @@
|
|||
interrupt-parent = <&irqc0>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
onkey {
|
||||
compatible = "dlg,da9063-onkey";
|
||||
|
|
|
@ -819,6 +819,7 @@
|
|||
interrupt-parent = <&irqc0>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
rtc {
|
||||
compatible = "dlg,da9063-rtc";
|
||||
|
|
|
@ -413,6 +413,7 @@
|
|||
interrupt-parent = <&irqc0>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
watchdog {
|
||||
compatible = "dlg,da9063-watchdog";
|
||||
|
|
|
@ -381,6 +381,7 @@
|
|||
interrupt-parent = <&irqc>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
rtc {
|
||||
compatible = "dlg,da9063-rtc";
|
||||
|
|
|
@ -759,6 +759,7 @@
|
|||
interrupt-parent = <&irqc0>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
rtc {
|
||||
compatible = "dlg,da9063-rtc";
|
||||
|
|
|
@ -453,6 +453,7 @@
|
|||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <31 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
rtc {
|
||||
compatible = "dlg,da9063-rtc";
|
||||
|
|
|
@ -439,6 +439,7 @@
|
|||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <31 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
onkey {
|
||||
compatible = "dlg,da9063-onkey";
|
||||
|
|
|
@ -196,7 +196,6 @@
|
|||
pwm4: pwm@10280000 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x10280000 0x10>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
@ -208,7 +207,6 @@
|
|||
pwm5: pwm@10280010 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x10280010 0x10>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
@ -220,7 +218,6 @@
|
|||
pwm6: pwm@10280020 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x10280020 0x10>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
@ -232,7 +229,6 @@
|
|||
pwm7: pwm@10280030 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x10280030 0x10>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
@ -386,7 +382,6 @@
|
|||
pwm0: pwm@20040000 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x20040000 0x10>;
|
||||
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM0_PMU>, <&cru PCLK_PWM0_PMU>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
@ -398,7 +393,6 @@
|
|||
pwm1: pwm@20040010 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x20040010 0x10>;
|
||||
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM0_PMU>, <&cru PCLK_PWM0_PMU>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
@ -410,7 +404,6 @@
|
|||
pwm2: pwm@20040020 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x20040020 0x10>;
|
||||
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM0_PMU>, <&cru PCLK_PWM0_PMU>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
@ -422,7 +415,6 @@
|
|||
pwm3: pwm@20040030 {
|
||||
compatible = "rockchip,rv1108-pwm", "rockchip,rk3288-pwm";
|
||||
reg = <0x20040030 0x10>;
|
||||
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM0_PMU>, <&cru PCLK_PWM0_PMU>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -222,7 +222,6 @@
|
|||
reg = <0x42>;
|
||||
interrupts = <8 3>;
|
||||
interrupt-parent = <&gpioi>;
|
||||
interrupt-controller;
|
||||
wakeup-source;
|
||||
|
||||
stmpegpio: stmpe_gpio {
|
||||
|
|
|
@ -64,7 +64,6 @@
|
|||
reg = <0x38>;
|
||||
interrupts = <2 2>;
|
||||
interrupt-parent = <&gpiof>;
|
||||
interrupt-controller;
|
||||
touchscreen-size-x = <480>;
|
||||
touchscreen-size-y = <800>;
|
||||
status = "okay";
|
||||
|
|
|
@ -415,7 +415,6 @@
|
|||
reg = <0x41>;
|
||||
interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupt-controller;
|
||||
id = <0>;
|
||||
blocks = <0x5>;
|
||||
irq-trigger = <0x1>;
|
||||
|
|
|
@ -339,6 +339,7 @@ static struct gpiod_lookup_table ep93xx_i2c_gpiod_table = {
|
|||
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
||||
GPIO_LOOKUP_IDX("G", 0, NULL, 1,
|
||||
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
||||
{ }
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -145,7 +145,6 @@
|
|||
msix: msix@fbe00000 {
|
||||
compatible = "al,alpine-msix";
|
||||
reg = <0x0 0xfbe00000 0x0 0x100000>;
|
||||
interrupt-controller;
|
||||
msi-controller;
|
||||
al,msi-base-spi = <160>;
|
||||
al,msi-num-spis = <160>;
|
||||
|
|
|
@ -355,7 +355,6 @@
|
|||
msix: msix@fbe00000 {
|
||||
compatible = "al,alpine-msix";
|
||||
reg = <0x0 0xfbe00000 0x0 0x100000>;
|
||||
interrupt-controller;
|
||||
msi-controller;
|
||||
al,msi-base-spi = <336>;
|
||||
al,msi-num-spis = <959>;
|
||||
|
|
|
@ -586,6 +586,7 @@
|
|||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
|
|
|
@ -450,6 +450,7 @@
|
|||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
|
||||
gpio-ranges = <&pinmux 0 0 16>,
|
||||
<&pinmux 16 71 2>,
|
||||
|
|
|
@ -20,23 +20,41 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1046a-frwy.dtb
|
|||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1046a-qds.dtb
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1046a-rdb.dtb
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1046a-tqmls1046a-mbls10xxa.dtb
|
||||
DTC_FLAGS_fsl-ls1088a-qds := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-qds.dtb
|
||||
DTC_FLAGS_fsl-ls1088a-rdb := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-rdb.dtb
|
||||
DTC_FLAGS_fsl-ls1088a-ten64 := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-ten64.dtb
|
||||
DTC_FLAGS_fsl-ls1088a-tqmls1088a-mbls10xxa := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-tqmls1088a-mbls10xxa.dtb
|
||||
DTC_FLAGS_fsl-ls2080a-qds := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-qds.dtb
|
||||
DTC_FLAGS_fsl-ls2080a-rdb := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-rdb.dtb
|
||||
DTC_FLAGS_fsl-ls2081a-rdb := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2081a-rdb.dtb
|
||||
DTC_FLAGS_fsl-ls2080a-simu := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-simu.dtb
|
||||
DTC_FLAGS_fsl-ls2088a-qds := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2088a-qds.dtb
|
||||
DTC_FLAGS_fsl-ls2088a-rdb := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2088a-rdb.dtb
|
||||
DTC_FLAGS_fsl-lx2160a-bluebox3 := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-bluebox3.dtb
|
||||
DTC_FLAGS_fsl-lx2160a-bluebox3-rev-a := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-bluebox3-rev-a.dtb
|
||||
DTC_FLAGS_fsl-lx2160a-clearfog-cx := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-clearfog-cx.dtb
|
||||
DTC_FLAGS_fsl-lx2160a-honeycomb := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-honeycomb.dtb
|
||||
DTC_FLAGS_fsl-lx2160a-qds := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb
|
||||
DTC_FLAGS_fsl-lx2160a-rdb := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-rdb.dtb
|
||||
DTC_FLAGS_fsl-lx2162a-clearfog := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2162a-clearfog.dtb
|
||||
DTC_FLAGS_fsl-lx2162a-qds := -Wno-interrupt_map
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2162a-qds.dtb
|
||||
|
||||
fsl-ls1028a-qds-13bb-dtbs := fsl-ls1028a-qds.dtb fsl-ls1028a-qds-13bb.dtbo
|
||||
|
@ -53,6 +71,7 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1028a-qds-85bb.dtb
|
|||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1028a-qds-899b.dtb
|
||||
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1028a-qds-9999.dtb
|
||||
|
||||
DTC_FLAGS_fsl-lx2160a-tqmlx2160a-mblx2160a := -Wno-interrupt_map
|
||||
fsl-lx2160a-tqmlx2160a-mblx2160a-12-11-x-dtbs := fsl-lx2160a-tqmlx2160a-mblx2160a.dtb \
|
||||
fsl-lx2160a-tqmlx2160a-mblx2160a_12_x_x.dtbo \
|
||||
fsl-lx2160a-tqmlx2160a-mblx2160a_x_11_x.dtbo
|
||||
|
|
|
@ -128,17 +128,12 @@
|
|||
pinctrl-0 = <&pinctrl_ptn5150>;
|
||||
status = "okay";
|
||||
|
||||
connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C";
|
||||
|
||||
port {
|
||||
typec1_dr_sw: endpoint {
|
||||
remote-endpoint = <&usb1_drd_sw>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
|
|
|
@ -486,7 +486,7 @@
|
|||
&uart4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart4>;
|
||||
status = "okay";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usb3_phy0 {
|
||||
|
|
|
@ -175,17 +175,13 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ptn5150>;
|
||||
|
||||
connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C";
|
||||
|
||||
port {
|
||||
|
||||
ptn5150_out_ep: endpoint {
|
||||
remote-endpoint = <&dwc3_0_ep>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
power-sensor@40 {
|
||||
compatible = "ti,ina238";
|
||||
|
|
|
@ -184,6 +184,13 @@
|
|||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_vcc_1v8: regulator-1v8 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VCC_1V8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
reg_vcc_3v3: regulator-3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VCC_3V3";
|
||||
|
@ -480,7 +487,7 @@
|
|||
clock-names = "mclk";
|
||||
clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>;
|
||||
reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
|
||||
iov-supply = <®_vcc_3v3>;
|
||||
iov-supply = <®_vcc_1v8>;
|
||||
ldoin-supply = <®_vcc_3v3>;
|
||||
};
|
||||
|
||||
|
|
|
@ -126,7 +126,6 @@
|
|||
amba {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
#interrupt-cells = <3>;
|
||||
|
||||
compatible = "simple-bus";
|
||||
interrupt-parent = <&gic>;
|
||||
|
|
|
@ -126,7 +126,6 @@
|
|||
amba {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
#interrupt-cells = <3>;
|
||||
|
||||
compatible = "simple-bus";
|
||||
interrupt-parent = <&gic>;
|
||||
|
|
|
@ -138,7 +138,6 @@
|
|||
|
||||
odmi: odmi@300000 {
|
||||
compatible = "marvell,odmi-controller";
|
||||
interrupt-controller;
|
||||
msi-controller;
|
||||
marvell,odmi-frames = <4>;
|
||||
reg = <0x300000 0x4000>,
|
||||
|
|
|
@ -128,6 +128,7 @@
|
|||
compatible = "mediatek,mt6360";
|
||||
reg = <0x34>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
interrupts-extended = <&pio 101 IRQ_TYPE_EDGE_FALLING>;
|
||||
interrupt-names = "IRQB";
|
||||
|
||||
|
|
|
@ -830,10 +830,10 @@
|
|||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0x7>;
|
||||
interrupt-map = <0 0 0 1 &intc 0 75 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||
<0 0 0 2 &intc 0 78 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||
<0 0 0 3 &intc 0 79 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||
<0 0 0 4 &intc 0 83 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||
interrupt-map = <0 0 0 1 &intc 0 0 0 75 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||
<0 0 0 2 &intc 0 0 0 78 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||
<0 0 0 3 &intc 0 0 0 79 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||
<0 0 0 4 &intc 0 0 0 83 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||
|
||||
clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
|
||||
<&gcc GCC_PCIE0_AXI_M_CLK>,
|
||||
|
|
|
@ -814,13 +814,13 @@
|
|||
interrupt-names = "msi";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0x7>;
|
||||
interrupt-map = <0 0 0 1 &intc 0 142
|
||||
interrupt-map = <0 0 0 1 &intc 0 0 142
|
||||
IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||
<0 0 0 2 &intc 0 143
|
||||
<0 0 0 2 &intc 0 0 143
|
||||
IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||
<0 0 0 3 &intc 0 144
|
||||
<0 0 0 3 &intc 0 0 144
|
||||
IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||
<0 0 0 4 &intc 0 145
|
||||
<0 0 0 4 &intc 0 0 145
|
||||
IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||
|
||||
clocks = <&gcc GCC_SYS_NOC_PCIE1_AXI_CLK>,
|
||||
|
@ -876,13 +876,13 @@
|
|||
interrupt-names = "msi";
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0x7>;
|
||||
interrupt-map = <0 0 0 1 &intc 0 75
|
||||
interrupt-map = <0 0 0 1 &intc 0 0 75
|
||||
IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||
<0 0 0 2 &intc 0 78
|
||||
<0 0 0 2 &intc 0 0 78
|
||||
IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||
<0 0 0 3 &intc 0 79
|
||||
<0 0 0 3 &intc 0 0 79
|
||||
IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||
<0 0 0 4 &intc 0 83
|
||||
<0 0 0 4 &intc 0 0 83
|
||||
IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||
|
||||
clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
|
||||
|
|
|
@ -234,6 +234,7 @@
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
|
||||
|
||||
|
@ -294,6 +295,7 @@
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
|
||||
};
|
||||
|
@ -314,6 +316,7 @@
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&gpio7>;
|
||||
interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
|
||||
};
|
||||
|
@ -324,6 +327,7 @@
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&gpio5>;
|
||||
interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
|
||||
};
|
||||
|
|
|
@ -631,6 +631,7 @@
|
|||
clock-names = "spiclk", "apb_pclk";
|
||||
dmas = <&dmac 12>, <&dmac 13>;
|
||||
dma-names = "tx", "rx";
|
||||
num-cs = <2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_clk &spi0_csn &spi0_miso &spi0_mosi>;
|
||||
#address-cells = <1>;
|
||||
|
@ -646,6 +647,7 @@
|
|||
clock-names = "spiclk", "apb_pclk";
|
||||
dmas = <&dmac 14>, <&dmac 15>;
|
||||
dma-names = "tx", "rx";
|
||||
num-cs = <2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi1_clk &spi1_csn0 &spi1_csn1 &spi1_miso &spi1_mosi>;
|
||||
#address-cells = <1>;
|
||||
|
|
|
@ -488,7 +488,6 @@
|
|||
pwm3: pwm@ff1b0030 {
|
||||
compatible = "rockchip,rk3328-pwm";
|
||||
reg = <0x0 0xff1b0030 0x0 0x10>;
|
||||
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cru SCLK_PWM>, <&cru PCLK_PWM>;
|
||||
clock-names = "pwm", "pclk";
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
vin-supply = <&vcc3v3_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_usb30_host: vcc5v0-usb30-host-regulator {
|
||||
vcc5v0_usb_host1: vcc5v0_usb_host2: vcc5v0-usb-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_host";
|
||||
regulator-boot-on;
|
||||
|
@ -114,6 +114,7 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
/* Standard pcie */
|
||||
&pcie3x2 {
|
||||
reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_sys>;
|
||||
|
@ -122,6 +123,7 @@
|
|||
|
||||
/* M.2 M-Key ssd */
|
||||
&pcie3x4 {
|
||||
num-lanes = <2>;
|
||||
reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_sys>;
|
||||
status = "okay";
|
||||
|
@ -188,12 +190,12 @@
|
|||
};
|
||||
|
||||
&u2phy2_host {
|
||||
phy-supply = <&vcc5v0_usb30_host>;
|
||||
phy-supply = <&vcc5v0_usb_host1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&u2phy3_host {
|
||||
phy-supply = <&vcc5v0_usb30_host>;
|
||||
phy-supply = <&vcc5v0_usb_host2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
|
||||
aliases {
|
||||
mmc0 = &sdhci;
|
||||
mmc1 = &sdio;
|
||||
mmc2 = &sdmmc;
|
||||
mmc1 = &sdmmc;
|
||||
mmc2 = &sdio;
|
||||
serial2 = &uart2;
|
||||
};
|
||||
|
||||
|
|
|
@ -448,6 +448,7 @@
|
|||
<&rk806_dvs2_null>, <&rk806_dvs3_null>;
|
||||
pinctrl-names = "default";
|
||||
spi-max-frequency = <1000000>;
|
||||
system-power-controller;
|
||||
|
||||
vcc1-supply = <&vcc5v0_sys>;
|
||||
vcc2-supply = <&vcc5v0_sys>;
|
||||
|
|
|
@ -62,7 +62,6 @@
|
|||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&led1_pin>;
|
||||
status = "okay";
|
||||
|
||||
/* LED1 on PCB */
|
||||
led-1 {
|
||||
|
|
|
@ -189,19 +189,19 @@
|
|||
cpu-supply = <&vdd_cpu_lit_s0>;
|
||||
};
|
||||
|
||||
&cpu_b0{
|
||||
&cpu_b0 {
|
||||
cpu-supply = <&vdd_cpu_big0_s0>;
|
||||
};
|
||||
|
||||
&cpu_b1{
|
||||
&cpu_b1 {
|
||||
cpu-supply = <&vdd_cpu_big0_s0>;
|
||||
};
|
||||
|
||||
&cpu_b2{
|
||||
&cpu_b2 {
|
||||
cpu-supply = <&vdd_cpu_big1_s0>;
|
||||
};
|
||||
|
||||
&cpu_b3{
|
||||
&cpu_b3 {
|
||||
cpu-supply = <&vdd_cpu_big1_s0>;
|
||||
};
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
|
||||
aliases {
|
||||
mmc0 = &sdhci;
|
||||
mmc1 = &sdio;
|
||||
mmc2 = &sdmmc;
|
||||
mmc1 = &sdmmc;
|
||||
mmc2 = &sdio;
|
||||
};
|
||||
|
||||
analog-sound {
|
||||
|
|
|
@ -195,13 +195,13 @@
|
|||
|
||||
&gpio1 {
|
||||
gpio-line-names = /* GPIO1 A0-A7 */
|
||||
"HEADER_27_3v3", "HEADER_28_3v3", "", "",
|
||||
"HEADER_27_3v3", "", "", "",
|
||||
"HEADER_29_1v8", "", "HEADER_7_1v8", "",
|
||||
/* GPIO1 B0-B7 */
|
||||
"", "HEADER_31_1v8", "HEADER_33_1v8", "",
|
||||
"HEADER_11_1v8", "HEADER_13_1v8", "", "",
|
||||
/* GPIO1 C0-C7 */
|
||||
"", "", "", "",
|
||||
"", "HEADER_28_3v3", "", "",
|
||||
"", "", "", "",
|
||||
/* GPIO1 D0-D7 */
|
||||
"", "", "", "",
|
||||
|
@ -225,11 +225,11 @@
|
|||
|
||||
&gpio4 {
|
||||
gpio-line-names = /* GPIO4 A0-A7 */
|
||||
"", "", "HEADER_37_3v3", "HEADER_32_3v3",
|
||||
"HEADER_36_3v3", "", "HEADER_35_3v3", "HEADER_38_3v3",
|
||||
"", "", "HEADER_37_3v3", "HEADER_8_3v3",
|
||||
"HEADER_10_3v3", "", "HEADER_32_3v3", "HEADER_35_3v3",
|
||||
/* GPIO4 B0-B7 */
|
||||
"", "", "", "HEADER_40_3v3",
|
||||
"HEADER_8_3v3", "HEADER_10_3v3", "", "",
|
||||
"HEADER_38_3v3", "HEADER_36_3v3", "", "",
|
||||
/* GPIO4 C0-C7 */
|
||||
"", "", "", "",
|
||||
"", "", "", "",
|
||||
|
|
|
@ -227,8 +227,19 @@ static int ctr_encrypt(struct skcipher_request *req)
|
|||
src += blocks * AES_BLOCK_SIZE;
|
||||
}
|
||||
if (nbytes && walk.nbytes == walk.total) {
|
||||
u8 buf[AES_BLOCK_SIZE];
|
||||
u8 *d = dst;
|
||||
|
||||
if (unlikely(nbytes < AES_BLOCK_SIZE))
|
||||
src = dst = memcpy(buf + sizeof(buf) - nbytes,
|
||||
src, nbytes);
|
||||
|
||||
neon_aes_ctr_encrypt(dst, src, ctx->enc, ctx->key.rounds,
|
||||
nbytes, walk.iv);
|
||||
|
||||
if (unlikely(nbytes < AES_BLOCK_SIZE))
|
||||
memcpy(d, dst, nbytes);
|
||||
|
||||
nbytes = 0;
|
||||
}
|
||||
kernel_neon_end();
|
||||
|
|
|
@ -386,6 +386,7 @@ extern void sme_alloc(struct task_struct *task, bool flush);
|
|||
extern unsigned int sme_get_vl(void);
|
||||
extern int sme_set_current_vl(unsigned long arg);
|
||||
extern int sme_get_current_vl(void);
|
||||
extern void sme_suspend_exit(void);
|
||||
|
||||
/*
|
||||
* Return how many bytes of memory are required to store the full SME
|
||||
|
@ -421,6 +422,7 @@ static inline int sme_max_vl(void) { return 0; }
|
|||
static inline int sme_max_virtualisable_vl(void) { return 0; }
|
||||
static inline int sme_set_current_vl(unsigned long arg) { return -EINVAL; }
|
||||
static inline int sme_get_current_vl(void) { return -EINVAL; }
|
||||
static inline void sme_suspend_exit(void) { }
|
||||
|
||||
static inline size_t sme_state_size(struct task_struct const *task)
|
||||
{
|
||||
|
|
|
@ -15,10 +15,6 @@
|
|||
|
||||
#define JUMP_LABEL_NOP_SIZE AARCH64_INSN_SIZE
|
||||
|
||||
/*
|
||||
* Prefer the constraint "S" to support PIC with GCC. Clang before 19 does not
|
||||
* support "S" on a symbol with a constant offset, so we use "i" as a fallback.
|
||||
*/
|
||||
static __always_inline bool arch_static_branch(struct static_key * const key,
|
||||
const bool branch)
|
||||
{
|
||||
|
@ -27,9 +23,9 @@ static __always_inline bool arch_static_branch(struct static_key * const key,
|
|||
" .pushsection __jump_table, \"aw\" \n\t"
|
||||
" .align 3 \n\t"
|
||||
" .long 1b - ., %l[l_yes] - . \n\t"
|
||||
" .quad (%[key] - .) + %[bit0] \n\t"
|
||||
" .quad %c0 - . \n\t"
|
||||
" .popsection \n\t"
|
||||
: : [key]"Si"(key), [bit0]"i"(branch) : : l_yes);
|
||||
: : "i"(&((char *)key)[branch]) : : l_yes);
|
||||
|
||||
return false;
|
||||
l_yes:
|
||||
|
@ -44,9 +40,9 @@ static __always_inline bool arch_static_branch_jump(struct static_key * const ke
|
|||
" .pushsection __jump_table, \"aw\" \n\t"
|
||||
" .align 3 \n\t"
|
||||
" .long 1b - ., %l[l_yes] - . \n\t"
|
||||
" .quad (%[key] - .) + %[bit0] \n\t"
|
||||
" .quad %c0 - . \n\t"
|
||||
" .popsection \n\t"
|
||||
: : [key]"Si"(key), [bit0]"i"(branch) : : l_yes);
|
||||
: : "i"(&((char *)key)[branch]) : : l_yes);
|
||||
|
||||
return false;
|
||||
l_yes:
|
||||
|
|
|
@ -1311,6 +1311,22 @@ void __init sme_setup(void)
|
|||
get_sme_default_vl());
|
||||
}
|
||||
|
||||
void sme_suspend_exit(void)
|
||||
{
|
||||
u64 smcr = 0;
|
||||
|
||||
if (!system_supports_sme())
|
||||
return;
|
||||
|
||||
if (system_supports_fa64())
|
||||
smcr |= SMCR_ELx_FA64;
|
||||
if (system_supports_sme2())
|
||||
smcr |= SMCR_ELx_EZT0;
|
||||
|
||||
write_sysreg_s(smcr, SYS_SMCR_EL1);
|
||||
write_sysreg_s(0, SYS_SMPRI_EL1);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_ARM64_SME */
|
||||
|
||||
static void sve_init_regs(void)
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <asm/daifflags.h>
|
||||
#include <asm/debug-monitors.h>
|
||||
#include <asm/exec.h>
|
||||
#include <asm/fpsimd.h>
|
||||
#include <asm/mte.h>
|
||||
#include <asm/memory.h>
|
||||
#include <asm/mmu_context.h>
|
||||
|
@ -80,6 +81,8 @@ void notrace __cpu_suspend_exit(void)
|
|||
*/
|
||||
spectre_v4_enable_mitigation(NULL);
|
||||
|
||||
sme_suspend_exit();
|
||||
|
||||
/* Restore additional feature-specific configuration */
|
||||
ptrauth_suspend_exit();
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
eeprom@57{
|
||||
eeprom@57 {
|
||||
compatible = "atmel,24c16";
|
||||
reg = <0x57>;
|
||||
pagesize = <16>;
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
eeprom@57{
|
||||
eeprom@57 {
|
||||
compatible = "atmel,24c16";
|
||||
reg = <0x57>;
|
||||
pagesize = <16>;
|
||||
|
|
|
@ -357,6 +357,8 @@ void __init platform_init(void)
|
|||
acpi_gbl_use_default_register_widths = false;
|
||||
acpi_boot_table_init();
|
||||
#endif
|
||||
|
||||
early_init_fdt_scan_reserved_mem();
|
||||
unflatten_and_copy_device_tree();
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
|
@ -390,8 +392,6 @@ static void __init arch_mem_init(char **cmdline_p)
|
|||
|
||||
check_kernel_sections_mem();
|
||||
|
||||
early_init_fdt_scan_reserved_mem();
|
||||
|
||||
/*
|
||||
* In order to reduce the possibility of kernel panic when failed to
|
||||
* get IO TLB memory under CONFIG_SWIOTLB, it is better to allocate
|
||||
|
|
|
@ -88,6 +88,73 @@ void show_ipi_list(struct seq_file *p, int prec)
|
|||
}
|
||||
}
|
||||
|
||||
static inline void set_cpu_core_map(int cpu)
|
||||
{
|
||||
int i;
|
||||
|
||||
cpumask_set_cpu(cpu, &cpu_core_setup_map);
|
||||
|
||||
for_each_cpu(i, &cpu_core_setup_map) {
|
||||
if (cpu_data[cpu].package == cpu_data[i].package) {
|
||||
cpumask_set_cpu(i, &cpu_core_map[cpu]);
|
||||
cpumask_set_cpu(cpu, &cpu_core_map[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void set_cpu_sibling_map(int cpu)
|
||||
{
|
||||
int i;
|
||||
|
||||
cpumask_set_cpu(cpu, &cpu_sibling_setup_map);
|
||||
|
||||
for_each_cpu(i, &cpu_sibling_setup_map) {
|
||||
if (cpus_are_siblings(cpu, i)) {
|
||||
cpumask_set_cpu(i, &cpu_sibling_map[cpu]);
|
||||
cpumask_set_cpu(cpu, &cpu_sibling_map[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void clear_cpu_sibling_map(int cpu)
|
||||
{
|
||||
int i;
|
||||
|
||||
for_each_cpu(i, &cpu_sibling_setup_map) {
|
||||
if (cpus_are_siblings(cpu, i)) {
|
||||
cpumask_clear_cpu(i, &cpu_sibling_map[cpu]);
|
||||
cpumask_clear_cpu(cpu, &cpu_sibling_map[i]);
|
||||
}
|
||||
}
|
||||
|
||||
cpumask_clear_cpu(cpu, &cpu_sibling_setup_map);
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate a new cpu_foreign_map mask whenever a
|
||||
* new cpu appears or disappears.
|
||||
*/
|
||||
void calculate_cpu_foreign_map(void)
|
||||
{
|
||||
int i, k, core_present;
|
||||
cpumask_t temp_foreign_map;
|
||||
|
||||
/* Re-calculate the mask */
|
||||
cpumask_clear(&temp_foreign_map);
|
||||
for_each_online_cpu(i) {
|
||||
core_present = 0;
|
||||
for_each_cpu(k, &temp_foreign_map)
|
||||
if (cpus_are_siblings(i, k))
|
||||
core_present = 1;
|
||||
if (!core_present)
|
||||
cpumask_set_cpu(i, &temp_foreign_map);
|
||||
}
|
||||
|
||||
for_each_online_cpu(i)
|
||||
cpumask_andnot(&cpu_foreign_map[i],
|
||||
&temp_foreign_map, &cpu_sibling_map[i]);
|
||||
}
|
||||
|
||||
/* Send mailbox buffer via Mail_Send */
|
||||
static void csr_mail_send(uint64_t data, int cpu, int mailbox)
|
||||
{
|
||||
|
@ -303,6 +370,7 @@ int loongson_cpu_disable(void)
|
|||
numa_remove_cpu(cpu);
|
||||
#endif
|
||||
set_cpu_online(cpu, false);
|
||||
clear_cpu_sibling_map(cpu);
|
||||
calculate_cpu_foreign_map();
|
||||
local_irq_save(flags);
|
||||
irq_migrate_all_off_this_cpu();
|
||||
|
@ -337,6 +405,7 @@ void __noreturn arch_cpu_idle_dead(void)
|
|||
addr = iocsr_read64(LOONGARCH_IOCSR_MBUF0);
|
||||
} while (addr == 0);
|
||||
|
||||
local_irq_disable();
|
||||
init_fn = (void *)TO_CACHE(addr);
|
||||
iocsr_write32(0xffffffff, LOONGARCH_IOCSR_IPI_CLEAR);
|
||||
|
||||
|
@ -379,59 +448,6 @@ static int __init ipi_pm_init(void)
|
|||
core_initcall(ipi_pm_init);
|
||||
#endif
|
||||
|
||||
static inline void set_cpu_sibling_map(int cpu)
|
||||
{
|
||||
int i;
|
||||
|
||||
cpumask_set_cpu(cpu, &cpu_sibling_setup_map);
|
||||
|
||||
for_each_cpu(i, &cpu_sibling_setup_map) {
|
||||
if (cpus_are_siblings(cpu, i)) {
|
||||
cpumask_set_cpu(i, &cpu_sibling_map[cpu]);
|
||||
cpumask_set_cpu(cpu, &cpu_sibling_map[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void set_cpu_core_map(int cpu)
|
||||
{
|
||||
int i;
|
||||
|
||||
cpumask_set_cpu(cpu, &cpu_core_setup_map);
|
||||
|
||||
for_each_cpu(i, &cpu_core_setup_map) {
|
||||
if (cpu_data[cpu].package == cpu_data[i].package) {
|
||||
cpumask_set_cpu(i, &cpu_core_map[cpu]);
|
||||
cpumask_set_cpu(cpu, &cpu_core_map[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate a new cpu_foreign_map mask whenever a
|
||||
* new cpu appears or disappears.
|
||||
*/
|
||||
void calculate_cpu_foreign_map(void)
|
||||
{
|
||||
int i, k, core_present;
|
||||
cpumask_t temp_foreign_map;
|
||||
|
||||
/* Re-calculate the mask */
|
||||
cpumask_clear(&temp_foreign_map);
|
||||
for_each_online_cpu(i) {
|
||||
core_present = 0;
|
||||
for_each_cpu(k, &temp_foreign_map)
|
||||
if (cpus_are_siblings(i, k))
|
||||
core_present = 1;
|
||||
if (!core_present)
|
||||
cpumask_set_cpu(i, &temp_foreign_map);
|
||||
}
|
||||
|
||||
for_each_online_cpu(i)
|
||||
cpumask_andnot(&cpu_foreign_map[i],
|
||||
&temp_foreign_map, &cpu_sibling_map[i]);
|
||||
}
|
||||
|
||||
/* Preload SMP state for boot cpu */
|
||||
void smp_prepare_boot_cpu(void)
|
||||
{
|
||||
|
|
|
@ -298,74 +298,73 @@ static int _kvm_setcsr(struct kvm_vcpu *vcpu, unsigned int id, u64 val)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int _kvm_get_cpucfg(int id, u64 *v)
|
||||
static int _kvm_get_cpucfg_mask(int id, u64 *v)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (id < 0 && id >= KVM_MAX_CPUCFG_REGS)
|
||||
if (id < 0 || id >= KVM_MAX_CPUCFG_REGS)
|
||||
return -EINVAL;
|
||||
|
||||
switch (id) {
|
||||
case 2:
|
||||
/* Return CPUCFG2 features which have been supported by KVM */
|
||||
/* CPUCFG2 features unconditionally supported by KVM */
|
||||
*v = CPUCFG2_FP | CPUCFG2_FPSP | CPUCFG2_FPDP |
|
||||
CPUCFG2_FPVERS | CPUCFG2_LLFTP | CPUCFG2_LLFTPREV |
|
||||
CPUCFG2_LAM;
|
||||
/*
|
||||
* If LSX is supported by CPU, it is also supported by KVM,
|
||||
* as we implement it.
|
||||
* For the ISA extensions listed below, if one is supported
|
||||
* by the host, then it is also supported by KVM.
|
||||
*/
|
||||
if (cpu_has_lsx)
|
||||
*v |= CPUCFG2_LSX;
|
||||
/*
|
||||
* if LASX is supported by CPU, it is also supported by KVM,
|
||||
* as we implement it.
|
||||
*/
|
||||
if (cpu_has_lasx)
|
||||
*v |= CPUCFG2_LASX;
|
||||
|
||||
break;
|
||||
return 0;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
/*
|
||||
* No restrictions on other valid CPUCFG IDs' values, but
|
||||
* CPUCFG data is limited to 32 bits as the LoongArch ISA
|
||||
* manual says (Volume 1, Section 2.2.10.5 "CPUCFG").
|
||||
*/
|
||||
*v = U32_MAX;
|
||||
return 0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int kvm_check_cpucfg(int id, u64 val)
|
||||
{
|
||||
u64 mask;
|
||||
int ret = 0;
|
||||
int ret;
|
||||
u64 mask = 0;
|
||||
|
||||
if (id < 0 && id >= KVM_MAX_CPUCFG_REGS)
|
||||
return -EINVAL;
|
||||
|
||||
if (_kvm_get_cpucfg(id, &mask))
|
||||
ret = _kvm_get_cpucfg_mask(id, &mask);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (val & ~mask)
|
||||
/* Unsupported features and/or the higher 32 bits should not be set */
|
||||
return -EINVAL;
|
||||
|
||||
switch (id) {
|
||||
case 2:
|
||||
/* CPUCFG2 features checking */
|
||||
if (val & ~mask)
|
||||
/* The unsupported features should not be set */
|
||||
ret = -EINVAL;
|
||||
else if (!(val & CPUCFG2_LLFTP))
|
||||
/* The LLFTP must be set, as guest must has a constant timer */
|
||||
ret = -EINVAL;
|
||||
else if ((val & CPUCFG2_FP) && (!(val & CPUCFG2_FPSP) || !(val & CPUCFG2_FPDP)))
|
||||
/* Single and double float point must both be set when enable FP */
|
||||
ret = -EINVAL;
|
||||
else if ((val & CPUCFG2_LSX) && !(val & CPUCFG2_FP))
|
||||
/* FP should be set when enable LSX */
|
||||
ret = -EINVAL;
|
||||
else if ((val & CPUCFG2_LASX) && !(val & CPUCFG2_LSX))
|
||||
/* LSX, FP should be set when enable LASX, and FP has been checked before. */
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
if (!(val & CPUCFG2_LLFTP))
|
||||
/* Guests must have a constant timer */
|
||||
return -EINVAL;
|
||||
if ((val & CPUCFG2_FP) && (!(val & CPUCFG2_FPSP) || !(val & CPUCFG2_FPDP)))
|
||||
/* Single and double float point must both be set when FP is enabled */
|
||||
return -EINVAL;
|
||||
if ((val & CPUCFG2_LSX) && !(val & CPUCFG2_FP))
|
||||
/* LSX architecturally implies FP but val does not satisfy that */
|
||||
return -EINVAL;
|
||||
if ((val & CPUCFG2_LASX) && !(val & CPUCFG2_LSX))
|
||||
/* LASX architecturally implies LSX and FP but val does not satisfy that */
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
/*
|
||||
* Values for the other CPUCFG IDs are not being further validated
|
||||
* besides the mask check above.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int kvm_get_one_reg(struct kvm_vcpu *vcpu,
|
||||
|
@ -566,7 +565,7 @@ static int kvm_loongarch_get_cpucfg_attr(struct kvm_vcpu *vcpu,
|
|||
uint64_t val;
|
||||
uint64_t __user *uaddr = (uint64_t __user *)attr->addr;
|
||||
|
||||
ret = _kvm_get_cpucfg(attr->attr, &val);
|
||||
ret = _kvm_get_cpucfg_mask(attr->attr, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -10,9 +10,10 @@
|
|||
#ifndef _PARISC_KPROBES_H
|
||||
#define _PARISC_KPROBES_H
|
||||
|
||||
#include <asm-generic/kprobes.h>
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
|
||||
#include <asm-generic/kprobes.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/notifier.h>
|
||||
|
|
|
@ -78,7 +78,7 @@ asmlinkage void notrace __hot ftrace_function_trampoline(unsigned long parent,
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
#if defined(CONFIG_DYNAMIC_FTRACE) && defined(CONFIG_FUNCTION_GRAPH_TRACER)
|
||||
int ftrace_enable_ftrace_graph_caller(void)
|
||||
{
|
||||
static_key_enable(&ftrace_graph_enable.key);
|
||||
|
|
|
@ -172,7 +172,6 @@ static int __init processor_probe(struct parisc_device *dev)
|
|||
p->cpu_num = cpu_info.cpu_num;
|
||||
p->cpu_loc = cpu_info.cpu_loc;
|
||||
|
||||
set_cpu_possible(cpuid, true);
|
||||
store_cpu_topology(cpuid);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
@ -474,13 +473,6 @@ static struct parisc_driver cpu_driver __refdata = {
|
|||
*/
|
||||
void __init processor_init(void)
|
||||
{
|
||||
unsigned int cpu;
|
||||
|
||||
reset_cpu_topology();
|
||||
|
||||
/* reset possible mask. We will mark those which are possible. */
|
||||
for_each_possible_cpu(cpu)
|
||||
set_cpu_possible(cpu, false);
|
||||
|
||||
register_parisc_driver(&cpu_driver);
|
||||
}
|
||||
|
|
|
@ -228,10 +228,8 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
|
|||
#ifdef CONFIG_IRQSTACKS
|
||||
extern void * const _call_on_stack;
|
||||
#endif /* CONFIG_IRQSTACKS */
|
||||
void *ptr;
|
||||
|
||||
ptr = dereference_kernel_function_descriptor(&handle_interruption);
|
||||
if (pc_is_kernel_fn(pc, ptr)) {
|
||||
if (pc_is_kernel_fn(pc, handle_interruption)) {
|
||||
struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN);
|
||||
dbg("Unwinding through handle_interruption()\n");
|
||||
info->prev_sp = regs->gr[30];
|
||||
|
@ -239,13 +237,13 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
|
|||
return 1;
|
||||
}
|
||||
|
||||
if (pc_is_kernel_fn(pc, ret_from_kernel_thread) ||
|
||||
pc_is_kernel_fn(pc, syscall_exit)) {
|
||||
if (pc == (unsigned long)&ret_from_kernel_thread ||
|
||||
pc == (unsigned long)&syscall_exit) {
|
||||
info->prev_sp = info->prev_ip = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (pc_is_kernel_fn(pc, intr_return)) {
|
||||
if (pc == (unsigned long)&intr_return) {
|
||||
struct pt_regs *regs;
|
||||
|
||||
dbg("Found intr_return()\n");
|
||||
|
@ -257,14 +255,14 @@ static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int
|
|||
}
|
||||
|
||||
if (pc_is_kernel_fn(pc, _switch_to) ||
|
||||
pc_is_kernel_fn(pc, _switch_to_ret)) {
|
||||
pc == (unsigned long)&_switch_to_ret) {
|
||||
info->prev_sp = info->sp - CALLEE_SAVE_FRAME_SIZE;
|
||||
info->prev_ip = *(unsigned long *)(info->prev_sp - RP_OFFSET);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IRQSTACKS
|
||||
if (pc_is_kernel_fn(pc, _call_on_stack)) {
|
||||
if (pc == (unsigned long)&_call_on_stack) {
|
||||
info->prev_sp = *(unsigned long *)(info->sp - FRAME_SIZE - REG_SZ);
|
||||
info->prev_ip = *(unsigned long *)(info->sp - FRAME_SIZE - RP_OFFSET);
|
||||
return 1;
|
||||
|
|
|
@ -30,6 +30,16 @@ void *pci_traverse_device_nodes(struct device_node *start,
|
|||
void *data);
|
||||
extern void pci_devs_phb_init_dynamic(struct pci_controller *phb);
|
||||
|
||||
#if defined(CONFIG_IOMMU_API) && (defined(CONFIG_PPC_PSERIES) || \
|
||||
defined(CONFIG_PPC_POWERNV))
|
||||
extern void ppc_iommu_register_device(struct pci_controller *phb);
|
||||
extern void ppc_iommu_unregister_device(struct pci_controller *phb);
|
||||
#else
|
||||
static inline void ppc_iommu_register_device(struct pci_controller *phb) { }
|
||||
static inline void ppc_iommu_unregister_device(struct pci_controller *phb) { }
|
||||
#endif
|
||||
|
||||
|
||||
/* From rtas_pci.h */
|
||||
extern void init_pci_config_tokens (void);
|
||||
extern unsigned long get_phb_buid (struct device_node *);
|
||||
|
|
|
@ -1360,7 +1360,7 @@ static struct iommu_device *spapr_tce_iommu_probe_device(struct device *dev)
|
|||
struct pci_controller *hose;
|
||||
|
||||
if (!dev_is_pci(dev))
|
||||
return ERR_PTR(-EPERM);
|
||||
return ERR_PTR(-ENODEV);
|
||||
|
||||
pdev = to_pci_dev(dev);
|
||||
hose = pdev->bus->sysdata;
|
||||
|
@ -1409,6 +1409,21 @@ static const struct attribute_group *spapr_tce_iommu_groups[] = {
|
|||
NULL,
|
||||
};
|
||||
|
||||
void ppc_iommu_register_device(struct pci_controller *phb)
|
||||
{
|
||||
iommu_device_sysfs_add(&phb->iommu, phb->parent,
|
||||
spapr_tce_iommu_groups, "iommu-phb%04x",
|
||||
phb->global_number);
|
||||
iommu_device_register(&phb->iommu, &spapr_tce_iommu_ops,
|
||||
phb->parent);
|
||||
}
|
||||
|
||||
void ppc_iommu_unregister_device(struct pci_controller *phb)
|
||||
{
|
||||
iommu_device_unregister(&phb->iommu);
|
||||
iommu_device_sysfs_remove(&phb->iommu);
|
||||
}
|
||||
|
||||
/*
|
||||
* This registers IOMMU devices of PHBs. This needs to happen
|
||||
* after core_initcall(iommu_init) + postcore_initcall(pci_driver_init) and
|
||||
|
@ -1419,11 +1434,7 @@ static int __init spapr_tce_setup_phb_iommus_initcall(void)
|
|||
struct pci_controller *hose;
|
||||
|
||||
list_for_each_entry(hose, &hose_list, list_node) {
|
||||
iommu_device_sysfs_add(&hose->iommu, hose->parent,
|
||||
spapr_tce_iommu_groups, "iommu-phb%04x",
|
||||
hose->global_number);
|
||||
iommu_device_register(&hose->iommu, &spapr_tce_iommu_ops,
|
||||
hose->parent);
|
||||
ppc_iommu_register_device(hose);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -391,6 +391,24 @@ static void kvmppc_set_pvr_hv(struct kvm_vcpu *vcpu, u32 pvr)
|
|||
/* Dummy value used in computing PCR value below */
|
||||
#define PCR_ARCH_31 (PCR_ARCH_300 << 1)
|
||||
|
||||
static inline unsigned long map_pcr_to_cap(unsigned long pcr)
|
||||
{
|
||||
unsigned long cap = 0;
|
||||
|
||||
switch (pcr) {
|
||||
case PCR_ARCH_300:
|
||||
cap = H_GUEST_CAP_POWER9;
|
||||
break;
|
||||
case PCR_ARCH_31:
|
||||
cap = H_GUEST_CAP_POWER10;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return cap;
|
||||
}
|
||||
|
||||
static int kvmppc_set_arch_compat(struct kvm_vcpu *vcpu, u32 arch_compat)
|
||||
{
|
||||
unsigned long host_pcr_bit = 0, guest_pcr_bit = 0, cap = 0;
|
||||
|
@ -424,11 +442,9 @@ static int kvmppc_set_arch_compat(struct kvm_vcpu *vcpu, u32 arch_compat)
|
|||
break;
|
||||
case PVR_ARCH_300:
|
||||
guest_pcr_bit = PCR_ARCH_300;
|
||||
cap = H_GUEST_CAP_POWER9;
|
||||
break;
|
||||
case PVR_ARCH_31:
|
||||
guest_pcr_bit = PCR_ARCH_31;
|
||||
cap = H_GUEST_CAP_POWER10;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
@ -440,6 +456,12 @@ static int kvmppc_set_arch_compat(struct kvm_vcpu *vcpu, u32 arch_compat)
|
|||
return -EINVAL;
|
||||
|
||||
if (kvmhv_on_pseries() && kvmhv_is_nestedv2()) {
|
||||
/*
|
||||
* 'arch_compat == 0' would mean the guest should default to
|
||||
* L1's compatibility. In this case, the guest would pick
|
||||
* host's PCR and evaluate the corresponding capabilities.
|
||||
*/
|
||||
cap = map_pcr_to_cap(guest_pcr_bit);
|
||||
if (!(cap & nested_capabilities))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -138,6 +138,7 @@ static int gs_msg_ops_vcpu_fill_info(struct kvmppc_gs_buff *gsb,
|
|||
vector128 v;
|
||||
int rc, i;
|
||||
u16 iden;
|
||||
u32 arch_compat = 0;
|
||||
|
||||
vcpu = gsm->data;
|
||||
|
||||
|
@ -347,8 +348,23 @@ static int gs_msg_ops_vcpu_fill_info(struct kvmppc_gs_buff *gsb,
|
|||
break;
|
||||
}
|
||||
case KVMPPC_GSID_LOGICAL_PVR:
|
||||
rc = kvmppc_gse_put_u32(gsb, iden,
|
||||
vcpu->arch.vcore->arch_compat);
|
||||
/*
|
||||
* Though 'arch_compat == 0' would mean the default
|
||||
* compatibility, arch_compat, being a Guest Wide
|
||||
* Element, cannot be filled with a value of 0 in GSB
|
||||
* as this would result into a kernel trap.
|
||||
* Hence, when `arch_compat == 0`, arch_compat should
|
||||
* default to L1's PVR.
|
||||
*/
|
||||
if (!vcpu->arch.vcore->arch_compat) {
|
||||
if (cpu_has_feature(CPU_FTR_ARCH_31))
|
||||
arch_compat = PVR_ARCH_31;
|
||||
else if (cpu_has_feature(CPU_FTR_ARCH_300))
|
||||
arch_compat = PVR_ARCH_300;
|
||||
} else {
|
||||
arch_compat = vcpu->arch.vcore->arch_compat;
|
||||
}
|
||||
rc = kvmppc_gse_put_u32(gsb, iden, arch_compat);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ struct pci_controller *init_phb_dynamic(struct device_node *dn)
|
|||
|
||||
pseries_msi_allocate_domains(phb);
|
||||
|
||||
ppc_iommu_register_device(phb);
|
||||
|
||||
/* Create EEH devices for the PHB */
|
||||
eeh_phb_pe_create(phb);
|
||||
|
||||
|
@ -76,6 +78,8 @@ int remove_phb_dynamic(struct pci_controller *phb)
|
|||
}
|
||||
}
|
||||
|
||||
ppc_iommu_unregister_device(phb);
|
||||
|
||||
pseries_msi_free_domains(phb);
|
||||
|
||||
/* Keep a reference so phb isn't freed yet */
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
interrupt-parent = <&gpio>;
|
||||
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
onkey {
|
||||
compatible = "dlg,da9063-onkey";
|
||||
|
|
|
@ -96,14 +96,14 @@
|
|||
thermal-sensors = <&sfctemp>;
|
||||
|
||||
trips {
|
||||
cpu_alert0 {
|
||||
cpu-alert0 {
|
||||
/* milliCelsius */
|
||||
temperature = <75000>;
|
||||
hysteresis = <2000>;
|
||||
type = "passive";
|
||||
};
|
||||
|
||||
cpu_crit {
|
||||
cpu-crit {
|
||||
/* milliCelsius */
|
||||
temperature = <90000>;
|
||||
hysteresis = <2000>;
|
||||
|
@ -113,28 +113,28 @@
|
|||
};
|
||||
};
|
||||
|
||||
osc_sys: osc_sys {
|
||||
osc_sys: osc-sys {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
/* This value must be overridden by the board */
|
||||
clock-frequency = <0>;
|
||||
};
|
||||
|
||||
osc_aud: osc_aud {
|
||||
osc_aud: osc-aud {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
/* This value must be overridden by the board */
|
||||
clock-frequency = <0>;
|
||||
};
|
||||
|
||||
gmac_rmii_ref: gmac_rmii_ref {
|
||||
gmac_rmii_ref: gmac-rmii-ref {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
/* Should be overridden by the board when needed */
|
||||
clock-frequency = <0>;
|
||||
};
|
||||
|
||||
gmac_gr_mii_rxclk: gmac_gr_mii_rxclk {
|
||||
gmac_gr_mii_rxclk: gmac-gr-mii-rxclk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
/* Should be overridden by the board when needed */
|
||||
|
|
|
@ -237,14 +237,14 @@
|
|||
};
|
||||
|
||||
trips {
|
||||
cpu_alert0: cpu_alert0 {
|
||||
cpu_alert0: cpu-alert0 {
|
||||
/* milliCelsius */
|
||||
temperature = <85000>;
|
||||
hysteresis = <2000>;
|
||||
type = "passive";
|
||||
};
|
||||
|
||||
cpu_crit {
|
||||
cpu-crit {
|
||||
/* milliCelsius */
|
||||
temperature = <100000>;
|
||||
hysteresis = <2000>;
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# Help: Enable compat support
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
|
@ -118,7 +118,6 @@ CONFIG_UNIX=y
|
|||
CONFIG_UNIX_DIAG=m
|
||||
CONFIG_XFRM_USER=m
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_SMC=m
|
||||
CONFIG_SMC_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
|
@ -374,6 +373,7 @@ CONFIG_NET_ACT_POLICE=m
|
|||
CONFIG_NET_ACT_GACT=m
|
||||
CONFIG_GACT_PROB=y
|
||||
CONFIG_NET_ACT_MIRRED=m
|
||||
CONFIG_NET_ACT_IPT=m
|
||||
CONFIG_NET_ACT_NAT=m
|
||||
CONFIG_NET_ACT_PEDIT=m
|
||||
CONFIG_NET_ACT_SIMP=m
|
||||
|
@ -436,9 +436,6 @@ CONFIG_SCSI_DH_ALUA=m
|
|||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_MD=y
|
||||
# CONFIG_MD_BITMAP_FILE is not set
|
||||
CONFIG_MD_LINEAR=m
|
||||
CONFIG_MD_MULTIPATH=m
|
||||
CONFIG_MD_FAULTY=m
|
||||
CONFIG_MD_CLUSTER=m
|
||||
CONFIG_BCACHE=m
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
|
@ -637,7 +634,6 @@ CONFIG_FUSE_FS=y
|
|||
CONFIG_CUSE=m
|
||||
CONFIG_VIRTIO_FS=m
|
||||
CONFIG_OVERLAY_FS=m
|
||||
CONFIG_NETFS_SUPPORT=m
|
||||
CONFIG_NETFS_STATS=y
|
||||
CONFIG_FSCACHE=y
|
||||
CONFIG_CACHEFILES=m
|
||||
|
@ -709,7 +705,6 @@ CONFIG_IMA_DEFAULT_HASH_SHA256=y
|
|||
CONFIG_IMA_WRITE_POLICY=y
|
||||
CONFIG_IMA_APPRAISE=y
|
||||
CONFIG_LSM="yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor"
|
||||
CONFIG_INIT_STACK_NONE=y
|
||||
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
||||
CONFIG_CRYPTO_USER=m
|
||||
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||
|
@ -739,7 +734,6 @@ CONFIG_CRYPTO_TEA=m
|
|||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_HCTR2=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
|
|
|
@ -109,7 +109,6 @@ CONFIG_UNIX=y
|
|||
CONFIG_UNIX_DIAG=m
|
||||
CONFIG_XFRM_USER=m
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_SMC=m
|
||||
CONFIG_SMC_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
|
@ -364,6 +363,7 @@ CONFIG_NET_ACT_POLICE=m
|
|||
CONFIG_NET_ACT_GACT=m
|
||||
CONFIG_GACT_PROB=y
|
||||
CONFIG_NET_ACT_MIRRED=m
|
||||
CONFIG_NET_ACT_IPT=m
|
||||
CONFIG_NET_ACT_NAT=m
|
||||
CONFIG_NET_ACT_PEDIT=m
|
||||
CONFIG_NET_ACT_SIMP=m
|
||||
|
@ -426,9 +426,6 @@ CONFIG_SCSI_DH_ALUA=m
|
|||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_MD=y
|
||||
# CONFIG_MD_BITMAP_FILE is not set
|
||||
CONFIG_MD_LINEAR=m
|
||||
CONFIG_MD_MULTIPATH=m
|
||||
CONFIG_MD_FAULTY=m
|
||||
CONFIG_MD_CLUSTER=m
|
||||
CONFIG_BCACHE=m
|
||||
CONFIG_BLK_DEV_DM=y
|
||||
|
@ -622,7 +619,6 @@ CONFIG_FUSE_FS=y
|
|||
CONFIG_CUSE=m
|
||||
CONFIG_VIRTIO_FS=m
|
||||
CONFIG_OVERLAY_FS=m
|
||||
CONFIG_NETFS_SUPPORT=m
|
||||
CONFIG_NETFS_STATS=y
|
||||
CONFIG_FSCACHE=y
|
||||
CONFIG_CACHEFILES=m
|
||||
|
@ -693,7 +689,6 @@ CONFIG_IMA_DEFAULT_HASH_SHA256=y
|
|||
CONFIG_IMA_WRITE_POLICY=y
|
||||
CONFIG_IMA_APPRAISE=y
|
||||
CONFIG_LSM="yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor"
|
||||
CONFIG_INIT_STACK_NONE=y
|
||||
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
||||
CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_USER=m
|
||||
|
@ -724,11 +719,9 @@ CONFIG_CRYPTO_TEA=m
|
|||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_HCTR2=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_AEGIS128=m
|
||||
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||
|
|
|
@ -8,6 +8,7 @@ CONFIG_BPF_SYSCALL=y
|
|||
# CONFIG_NET_NS is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_MARCH_Z13=y
|
||||
CONFIG_NR_CPUS=2
|
||||
|
@ -64,7 +65,6 @@ CONFIG_ZFCP=y
|
|||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_LSM="yama,loadpin,safesetid,integrity"
|
||||
CONFIG_INIT_STACK_NONE=y
|
||||
# CONFIG_ZLIB_DFLTCC is not set
|
||||
CONFIG_XZ_DEC_MICROLZMA=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
|
|
|
@ -252,7 +252,7 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,
|
|||
/* combine single writes by using store-block insn */
|
||||
void __iowrite64_copy(void __iomem *to, const void *from, size_t count)
|
||||
{
|
||||
zpci_memcpy_toio(to, from, count);
|
||||
zpci_memcpy_toio(to, from, count * 8);
|
||||
}
|
||||
|
||||
void __iomem *ioremap_prot(phys_addr_t phys_addr, size_t size,
|
||||
|
|
|
@ -60,7 +60,7 @@ libs-y += arch/sparc/prom/
|
|||
libs-y += arch/sparc/lib/
|
||||
|
||||
drivers-$(CONFIG_PM) += arch/sparc/power/
|
||||
drivers-$(CONFIG_FB) += arch/sparc/video/
|
||||
drivers-$(CONFIG_FB_CORE) += arch/sparc/video/
|
||||
|
||||
boot := arch/sparc/boot
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
obj-$(CONFIG_FB) += fbdev.o
|
||||
obj-$(CONFIG_FB_CORE) += fbdev.o
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
#include <linux/export.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/msr-index.h>
|
||||
#include <asm/unwind_hints.h>
|
||||
#include <asm/segment.h>
|
||||
#include <asm/cache.h>
|
||||
|
||||
.pushsection .noinstr.text, "ax"
|
||||
|
||||
|
@ -20,3 +23,23 @@ SYM_FUNC_END(entry_ibpb)
|
|||
EXPORT_SYMBOL_GPL(entry_ibpb);
|
||||
|
||||
.popsection
|
||||
|
||||
/*
|
||||
* Define the VERW operand that is disguised as entry code so that
|
||||
* it can be referenced with KPTI enabled. This ensure VERW can be
|
||||
* used late in exit-to-user path after page tables are switched.
|
||||
*/
|
||||
.pushsection .entry.text, "ax"
|
||||
|
||||
.align L1_CACHE_BYTES, 0xcc
|
||||
SYM_CODE_START_NOALIGN(mds_verw_sel)
|
||||
UNWIND_HINT_UNDEFINED
|
||||
ANNOTATE_NOENDBR
|
||||
.word __KERNEL_DS
|
||||
.align L1_CACHE_BYTES, 0xcc
|
||||
SYM_CODE_END(mds_verw_sel);
|
||||
/* For KVM */
|
||||
EXPORT_SYMBOL_GPL(mds_verw_sel);
|
||||
|
||||
.popsection
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue