Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

Cross-merge networking fixes after downstream PR.

Conflicts:

drivers/net/ethernet/intel/iavf/iavf_ethtool.c
  3a0b5a2929 ("iavf: Introduce new state machines for flow director")
  95260816b4 ("iavf: use iavf_schedule_aq_request() helper")
https://lore.kernel.org/all/84e12519-04dc-bd80-bc34-8cf50d7898ce@intel.com/

drivers/net/ethernet/broadcom/bnxt/bnxt.c
  c13e268c07 ("bnxt_en: Fix HWTSTAMP_FILTER_ALL packet timestamp logic")
  c2f8063309 ("bnxt_en: Refactor RX VLAN acceleration logic.")
  a7445d6980 ("bnxt_en: Add support for new RX and TPA_START completion types for P7")
  1c7fd6ee2f ("bnxt_en: Rename some macros for the P5 chips")
https://lore.kernel.org/all/20231211110022.27926ad9@canb.auug.org.au/

drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c
  bd6781c18c ("bnxt_en: Fix wrong return value check in bnxt_close_nic()")
  84793a4995 ("bnxt_en: Skip nic close/open when configuring tstamp filters")
https://lore.kernel.org/all/20231214113041.3a0c003c@canb.auug.org.au/

drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c
  3d7a3f2612 ("net/mlx5: Nack sync reset request when HotPlug is enabled")
  cecf44ea1a ("net/mlx5: Allow sync reset flow when BF MGT interface device is present")
https://lore.kernel.org/all/20231211110328.76c925af@canb.auug.org.au/

No adjacent changes.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jakub Kicinski 2023-12-14 17:13:35 -08:00
commit 8f674972d6
388 changed files with 4303 additions and 2263 deletions

View file

@ -117,6 +117,7 @@ Changbin Du <changbin.du@intel.com> <changbin.du@gmail.com>
Changbin Du <changbin.du@intel.com> <changbin.du@intel.com> Changbin Du <changbin.du@intel.com> <changbin.du@intel.com>
Chao Yu <chao@kernel.org> <chao2.yu@samsung.com> Chao Yu <chao@kernel.org> <chao2.yu@samsung.com>
Chao Yu <chao@kernel.org> <yuchao0@huawei.com> Chao Yu <chao@kernel.org> <yuchao0@huawei.com>
Chester Lin <chester62515@gmail.com> <clin@suse.com>
Chris Chiu <chris.chiu@canonical.com> <chiu@endlessm.com> Chris Chiu <chris.chiu@canonical.com> <chiu@endlessm.com>
Chris Chiu <chris.chiu@canonical.com> <chiu@endlessos.org> Chris Chiu <chris.chiu@canonical.com> <chiu@endlessos.org>
Chris Lew <quic_clew@quicinc.com> <clew@codeaurora.org> Chris Lew <quic_clew@quicinc.com> <clew@codeaurora.org>
@ -265,6 +266,9 @@ Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
Jernej Skrabec <jernej.skrabec@gmail.com> <jernej.skrabec@siol.net> Jernej Skrabec <jernej.skrabec@gmail.com> <jernej.skrabec@siol.net>
Jessica Zhang <quic_jesszhan@quicinc.com> <jesszhan@codeaurora.org> Jessica Zhang <quic_jesszhan@quicinc.com> <jesszhan@codeaurora.org>
Jilai Wang <quic_jilaiw@quicinc.com> <jilaiw@codeaurora.org> Jilai Wang <quic_jilaiw@quicinc.com> <jilaiw@codeaurora.org>
Jiri Kosina <jikos@kernel.org> <jikos@jikos.cz>
Jiri Kosina <jikos@kernel.org> <jkosina@suse.cz>
Jiri Kosina <jikos@kernel.org> <jkosina@suse.com>
Jiri Pirko <jiri@resnulli.us> <jiri@nvidia.com> Jiri Pirko <jiri@resnulli.us> <jiri@nvidia.com>
Jiri Pirko <jiri@resnulli.us> <jiri@mellanox.com> Jiri Pirko <jiri@resnulli.us> <jiri@mellanox.com>
Jiri Pirko <jiri@resnulli.us> <jpirko@redhat.com> Jiri Pirko <jiri@resnulli.us> <jpirko@redhat.com>

View file

@ -2944,6 +2944,14 @@ D: IPX development and support
N: Venkatesh Pallipadi (Venki) N: Venkatesh Pallipadi (Venki)
D: x86/HPET D: x86/HPET
N: Antti Palosaari
E: crope@iki.fi
D: Various DVB drivers
W: https://palosaari.fi/linux/
S: Yliopistokatu 1 D 513
S: FI-90570 Oulu
S: FINLAND
N: Kyungmin Park N: Kyungmin Park
E: kyungmin.park@samsung.com E: kyungmin.park@samsung.com
D: Samsung S5Pv210 and Exynos4210 mobile platforms D: Samsung S5Pv210 and Exynos4210 mobile platforms

View file

@ -6,3 +6,12 @@ Description:
OP-TEE bus provides reference to registered drivers under this directory. The <uuid> OP-TEE bus provides reference to registered drivers under this directory. The <uuid>
matches Trusted Application (TA) driver and corresponding TA in secure OS. Drivers matches Trusted Application (TA) driver and corresponding TA in secure OS. Drivers
are free to create needed API under optee-ta-<uuid> directory. are free to create needed API under optee-ta-<uuid> directory.
What: /sys/bus/tee/devices/optee-ta-<uuid>/need_supplicant
Date: November 2023
KernelVersion: 6.7
Contact: op-tee@lists.trustedfirmware.org
Description:
Allows to distinguish whether an OP-TEE based TA/device requires user-space
tee-supplicant to function properly or not. This attribute will be present for
devices which depend on tee-supplicant to be running.

View file

@ -90,7 +90,7 @@ properties:
bitmap of all MHPMCOUNTERx that can monitor the range of events bitmap of all MHPMCOUNTERx that can monitor the range of events
dependencies: dependencies:
"riscv,event-to-mhpmevent": [ "riscv,event-to-mhpmcounters" ] riscv,event-to-mhpmevent: [ "riscv,event-to-mhpmcounters" ]
required: required:
- compatible - compatible

View file

@ -14,12 +14,10 @@ allOf:
properties: properties:
"#pwm-cells": "#pwm-cells":
description: | description:
Should be 2 for i.MX1 and 3 for i.MX27 and newer SoCs. See pwm.yaml The only third cell flag supported by this binding is
in this directory for a description of the cells format. PWM_POLARITY_INVERTED. fsl,imx1-pwm does not support this flags.
enum: const: 3
- 2
- 3
compatible: compatible:
oneOf: oneOf:

View file

@ -233,6 +233,7 @@ allOf:
- rockchip,rk3399-grf - rockchip,rk3399-grf
- rockchip,rk3399-pmugrf - rockchip,rk3399-pmugrf
- rockchip,rk3568-pmugrf - rockchip,rk3568-pmugrf
- rockchip,rk3588-pmugrf
- rockchip,rv1108-grf - rockchip,rv1108-grf
- rockchip,rv1108-pmugrf - rockchip,rv1108-pmugrf

View file

@ -15,7 +15,8 @@ The direct-io mode can be selected with the FOPEN_DIRECT_IO flag in the
FUSE_OPEN reply. FUSE_OPEN reply.
In direct-io mode the page cache is completely bypassed for reads and writes. In direct-io mode the page cache is completely bypassed for reads and writes.
No read-ahead takes place. Shared mmap is disabled. No read-ahead takes place. Shared mmap is disabled by default. To allow shared
mmap, the FUSE_DIRECT_IO_ALLOW_MMAP flag may be enabled in the FUSE_INIT reply.
In cached mode reads may be satisfied from the page cache, and data may be In cached mode reads may be satisfied from the page cache, and data may be
read-ahead by the kernel to fill the cache. The cache is always kept consistent read-ahead by the kernel to fill the cache. The cache is always kept consistent

View file

@ -130,7 +130,7 @@ Misc:
Device Tree Bindings Device Tree Bindings
-------------------- --------------------
See Documentation/devicetree/bindings/arm/arm,coresight-\*.yaml for details. See ``Documentation/devicetree/bindings/arm/arm,coresight-*.yaml`` for details.
As of this writing drivers for ITM, STMs and CTIs are not provided but are As of this writing drivers for ITM, STMs and CTIs are not provided but are
expected to be added as the solution matures. expected to be added as the solution matures.

View file

@ -171,13 +171,10 @@ S: Supported
F: drivers/soc/fujitsu/a64fx-diag.c F: drivers/soc/fujitsu/a64fx-diag.c
A8293 MEDIA DRIVER A8293 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/a8293* F: drivers/media/dvb-frontends/a8293*
AACRAID SCSI RAID DRIVER AACRAID SCSI RAID DRIVER
@ -576,23 +573,17 @@ F: drivers/iio/accel/adxl372_i2c.c
F: drivers/iio/accel/adxl372_spi.c F: drivers/iio/accel/adxl372_spi.c
AF9013 MEDIA DRIVER AF9013 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/af9013* F: drivers/media/dvb-frontends/af9013*
AF9033 MEDIA DRIVER AF9033 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/af9033* F: drivers/media/dvb-frontends/af9033*
AFFS FILE SYSTEM AFFS FILE SYSTEM
@ -650,13 +641,10 @@ F: fs/aio.c
F: include/linux/*aio*.h F: include/linux/*aio*.h
AIRSPY MEDIA DRIVER AIRSPY MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/airspy/ F: drivers/media/usb/airspy/
ALACRITECH GIGABIT ETHERNET DRIVER ALACRITECH GIGABIT ETHERNET DRIVER
@ -2155,6 +2143,7 @@ S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
F: arch/arm/boot/dts/nxp/imx/ F: arch/arm/boot/dts/nxp/imx/
F: arch/arm/boot/dts/nxp/mxs/ F: arch/arm/boot/dts/nxp/mxs/
F: arch/arm64/boot/dts/freescale/
X: arch/arm64/boot/dts/freescale/fsl-* X: arch/arm64/boot/dts/freescale/fsl-*
X: arch/arm64/boot/dts/freescale/qoriq-* X: arch/arm64/boot/dts/freescale/qoriq-*
X: drivers/media/i2c/ X: drivers/media/i2c/
@ -2534,7 +2523,7 @@ F: drivers/*/*/*wpcm*
F: drivers/*/*wpcm* F: drivers/*/*wpcm*
ARM/NXP S32G ARCHITECTURE ARM/NXP S32G ARCHITECTURE
M: Chester Lin <clin@suse.com> M: Chester Lin <chester62515@gmail.com>
R: Andreas Färber <afaerber@suse.de> R: Andreas Färber <afaerber@suse.de>
R: Matthias Brugger <mbrugger@suse.com> R: Matthias Brugger <mbrugger@suse.com>
R: NXP S32 Linux Team <s32@nxp.com> R: NXP S32 Linux Team <s32@nxp.com>
@ -5596,13 +5585,10 @@ F: Documentation/driver-api/media/drivers/cx88*
F: drivers/media/pci/cx88/ F: drivers/media/pci/cx88/
CXD2820R MEDIA DRIVER CXD2820R MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/cxd2820r* F: drivers/media/dvb-frontends/cxd2820r*
CXGB3 ETHERNET DRIVER (CXGB3) CXGB3 ETHERNET DRIVER (CXGB3)
@ -5715,13 +5701,10 @@ F: Documentation/devicetree/bindings/input/cypress-sf.yaml
F: drivers/input/keyboard/cypress-sf.c F: drivers/input/keyboard/cypress-sf.c
CYPRESS_FIRMWARE MEDIA DRIVER CYPRESS_FIRMWARE MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/common/cypress_firmware* F: drivers/media/common/cypress_firmware*
CYTTSP TOUCHSCREEN DRIVER CYTTSP TOUCHSCREEN DRIVER
@ -7311,53 +7294,38 @@ T: git git://linuxtv.org/media_tree.git
F: drivers/media/pci/dt3155/ F: drivers/media/pci/dt3155/
DVB_USB_AF9015 MEDIA DRIVER DVB_USB_AF9015 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/af9015* F: drivers/media/usb/dvb-usb-v2/af9015*
DVB_USB_AF9035 MEDIA DRIVER DVB_USB_AF9035 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/af9035* F: drivers/media/usb/dvb-usb-v2/af9035*
DVB_USB_ANYSEE MEDIA DRIVER DVB_USB_ANYSEE MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/anysee* F: drivers/media/usb/dvb-usb-v2/anysee*
DVB_USB_AU6610 MEDIA DRIVER DVB_USB_AU6610 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/au6610* F: drivers/media/usb/dvb-usb-v2/au6610*
DVB_USB_CE6230 MEDIA DRIVER DVB_USB_CE6230 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/ce6230* F: drivers/media/usb/dvb-usb-v2/ce6230*
DVB_USB_CXUSB MEDIA DRIVER DVB_USB_CXUSB MEDIA DRIVER
@ -7371,22 +7339,17 @@ T: git git://linuxtv.org/media_tree.git
F: drivers/media/usb/dvb-usb/cxusb* F: drivers/media/usb/dvb-usb/cxusb*
DVB_USB_EC168 MEDIA DRIVER DVB_USB_EC168 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/ec168* F: drivers/media/usb/dvb-usb-v2/ec168*
DVB_USB_GL861 MEDIA DRIVER DVB_USB_GL861 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/gl861* F: drivers/media/usb/dvb-usb-v2/gl861*
DVB_USB_MXL111SF MEDIA DRIVER DVB_USB_MXL111SF MEDIA DRIVER
@ -7400,23 +7363,18 @@ T: git git://linuxtv.org/mkrufky/mxl111sf.git
F: drivers/media/usb/dvb-usb-v2/mxl111sf* F: drivers/media/usb/dvb-usb-v2/mxl111sf*
DVB_USB_RTL28XXU MEDIA DRIVER DVB_USB_RTL28XXU MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/rtl28xxu* F: drivers/media/usb/dvb-usb-v2/rtl28xxu*
DVB_USB_V2 MEDIA DRIVER DVB_USB_V2 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/ W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/dvb-usb-v2/dvb_usb* F: drivers/media/usb/dvb-usb-v2/dvb_usb*
F: drivers/media/usb/dvb-usb-v2/usb_urb.c F: drivers/media/usb/dvb-usb-v2/usb_urb.c
@ -7458,13 +7416,10 @@ F: Documentation/devicetree/bindings/input/e3x0-button.txt
F: drivers/input/misc/e3x0-button.c F: drivers/input/misc/e3x0-button.c
E4000 MEDIA DRIVER E4000 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/e4000* F: drivers/media/tuners/e4000*
EARTH_PT1 MEDIA DRIVER EARTH_PT1 MEDIA DRIVER
@ -7480,13 +7435,10 @@ S: Odd Fixes
F: drivers/media/pci/pt3/ F: drivers/media/pci/pt3/
EC100 MEDIA DRIVER EC100 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/ec100* F: drivers/media/dvb-frontends/ec100*
ECRYPT FILE SYSTEM ECRYPT FILE SYSTEM
@ -8104,13 +8056,10 @@ F: drivers/media/tuners/fc0011.c
F: drivers/media/tuners/fc0011.h F: drivers/media/tuners/fc0011.h
FC2580 MEDIA DRIVER FC2580 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/fc2580* F: drivers/media/tuners/fc2580*
FCOE SUBSYSTEM (libfc, libfcoe, fcoe) FCOE SUBSYSTEM (libfc, libfcoe, fcoe)
@ -9240,13 +9189,10 @@ F: include/trace/events/habanalabs.h
F: include/uapi/drm/habanalabs_accel.h F: include/uapi/drm/habanalabs_accel.h
HACKRF MEDIA DRIVER HACKRF MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/hackrf/ F: drivers/media/usb/hackrf/
HANDSHAKE UPCALL FOR TRANSPORT LAYER SECURITY HANDSHAKE UPCALL FOR TRANSPORT LAYER SECURITY
@ -9619,6 +9565,7 @@ F: drivers/crypto/hisilicon/sgl.c
F: include/linux/hisi_acc_qm.h F: include/linux/hisi_acc_qm.h
HISILICON ROCE DRIVER HISILICON ROCE DRIVER
M: Chengchang Tang <tangchengchang@huawei.com>
M: Junxian Huang <huangjunxian6@hisilicon.com> M: Junxian Huang <huangjunxian6@hisilicon.com>
L: linux-rdma@vger.kernel.org L: linux-rdma@vger.kernel.org
S: Maintained S: Maintained
@ -11315,13 +11262,10 @@ F: Documentation/hwmon/it87.rst
F: drivers/hwmon/it87.c F: drivers/hwmon/it87.c
IT913X MEDIA DRIVER IT913X MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/it913x* F: drivers/media/tuners/it913x*
ITE IT66121 HDMI BRIDGE DRIVER ITE IT66121 HDMI BRIDGE DRIVER
@ -12202,6 +12146,13 @@ F: include/linux/nd.h
F: include/uapi/linux/ndctl.h F: include/uapi/linux/ndctl.h
F: tools/testing/nvdimm/ F: tools/testing/nvdimm/
LIBRARY CODE
M: Andrew Morton <akpm@linux-foundation.org>
L: linux-kernel@vger.kernel.org
S: Supported
T: git git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-nonmm-unstable
F: lib/*
LICENSES and SPDX stuff LICENSES and SPDX stuff
M: Thomas Gleixner <tglx@linutronix.de> M: Thomas Gleixner <tglx@linutronix.de>
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@ -12681,13 +12632,10 @@ W: http://www.tazenda.demon.co.uk/phil/linux-hp
F: arch/m68k/hp300/ F: arch/m68k/hp300/
M88DS3103 MEDIA DRIVER M88DS3103 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/m88ds3103* F: drivers/media/dvb-frontends/m88ds3103*
M88RS2000 MEDIA DRIVER M88RS2000 MEDIA DRIVER
@ -14582,20 +14530,16 @@ F: include/asm-generic/tlb.h
F: mm/mmu_gather.c F: mm/mmu_gather.c
MN88472 MEDIA DRIVER MN88472 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
F: drivers/media/dvb-frontends/mn88472* F: drivers/media/dvb-frontends/mn88472*
MN88473 MEDIA DRIVER MN88473 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
F: drivers/media/dvb-frontends/mn88473* F: drivers/media/dvb-frontends/mn88473*
@ -14683,23 +14627,17 @@ S: Orphan
F: drivers/platform/x86/msi-wmi.c F: drivers/platform/x86/msi-wmi.c
MSI001 MEDIA DRIVER MSI001 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/msi001* F: drivers/media/tuners/msi001*
MSI2500 MEDIA DRIVER MSI2500 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/usb/msi2500/ F: drivers/media/usb/msi2500/
MSTAR INTERRUPT CONTROLLER DRIVER MSTAR INTERRUPT CONTROLLER DRIVER
@ -17767,13 +17705,10 @@ F: drivers/bus/fsl-mc/
F: include/uapi/linux/fsl_mc.h F: include/uapi/linux/fsl_mc.h
QT1010 MEDIA DRIVER QT1010 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/qt1010* F: drivers/media/tuners/qt1010*
QUALCOMM ATH12K WIRELESS DRIVER QUALCOMM ATH12K WIRELESS DRIVER
@ -18823,33 +18758,24 @@ S: Maintained
F: drivers/tty/rpmsg_tty.c F: drivers/tty/rpmsg_tty.c
RTL2830 MEDIA DRIVER RTL2830 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/rtl2830* F: drivers/media/dvb-frontends/rtl2830*
RTL2832 MEDIA DRIVER RTL2832 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/rtl2832* F: drivers/media/dvb-frontends/rtl2832*
RTL2832_SDR MEDIA DRIVER RTL2832_SDR MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/rtl2832_sdr* F: drivers/media/dvb-frontends/rtl2832_sdr*
RTL8180 WIRELESS DRIVER RTL8180 WIRELESS DRIVER
@ -19626,7 +19552,6 @@ S: Maintained
F: drivers/misc/sgi-xp/ F: drivers/misc/sgi-xp/
SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
M: Karsten Graul <kgraul@linux.ibm.com>
M: Wenjia Zhang <wenjia@linux.ibm.com> M: Wenjia Zhang <wenjia@linux.ibm.com>
M: Jan Karcher <jaka@linux.ibm.com> M: Jan Karcher <jaka@linux.ibm.com>
R: D. Wythe <alibuda@linux.alibaba.com> R: D. Wythe <alibuda@linux.alibaba.com>
@ -19659,13 +19584,10 @@ F: drivers/media/platform/renesas/sh_vou.c
F: include/media/drv-intf/sh_vou.h F: include/media/drv-intf/sh_vou.h
SI2157 MEDIA DRIVER SI2157 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/si2157* F: drivers/media/tuners/si2157*
SI2165 MEDIA DRIVER SI2165 MEDIA DRIVER
@ -19677,13 +19599,10 @@ Q: http://patchwork.linuxtv.org/project/linux-media/list/
F: drivers/media/dvb-frontends/si2165* F: drivers/media/dvb-frontends/si2165*
SI2168 MEDIA DRIVER SI2168 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/si2168* F: drivers/media/dvb-frontends/si2168*
SI470X FM RADIO RECEIVER I2C DRIVER SI470X FM RADIO RECEIVER I2C DRIVER
@ -21185,33 +21104,24 @@ W: http://tcp-lp-mod.sourceforge.net/
F: net/ipv4/tcp_lp.c F: net/ipv4/tcp_lp.c
TDA10071 MEDIA DRIVER TDA10071 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/dvb-frontends/tda10071* F: drivers/media/dvb-frontends/tda10071*
TDA18212 MEDIA DRIVER TDA18212 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/tda18212* F: drivers/media/tuners/tda18212*
TDA18218 MEDIA DRIVER TDA18218 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/tda18218* F: drivers/media/tuners/tda18218*
TDA18250 MEDIA DRIVER TDA18250 MEDIA DRIVER
@ -22147,13 +22057,10 @@ F: include/uapi/linux/serial_core.h
F: include/uapi/linux/tty.h F: include/uapi/linux/tty.h
TUA9001 MEDIA DRIVER TUA9001 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org W: https://linuxtv.org
W: http://palosaari.fi/linux/
Q: http://patchwork.linuxtv.org/project/linux-media/list/ Q: http://patchwork.linuxtv.org/project/linux-media/list/
T: git git://linuxtv.org/anttip/media_tree.git
F: drivers/media/tuners/tua9001* F: drivers/media/tuners/tua9001*
TULIP NETWORK DRIVERS TULIP NETWORK DRIVERS
@ -24082,20 +23989,16 @@ S: Orphan
F: drivers/net/wireless/zydas/zd1211rw/ F: drivers/net/wireless/zydas/zd1211rw/
ZD1301 MEDIA DRIVER ZD1301 MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org/ W: https://linuxtv.org/
W: http://palosaari.fi/linux/
Q: https://patchwork.linuxtv.org/project/linux-media/list/ Q: https://patchwork.linuxtv.org/project/linux-media/list/
F: drivers/media/usb/dvb-usb-v2/zd1301* F: drivers/media/usb/dvb-usb-v2/zd1301*
ZD1301_DEMOD MEDIA DRIVER ZD1301_DEMOD MEDIA DRIVER
M: Antti Palosaari <crope@iki.fi>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Orphan
W: https://linuxtv.org/ W: https://linuxtv.org/
W: http://palosaari.fi/linux/
Q: https://patchwork.linuxtv.org/project/linux-media/list/ Q: https://patchwork.linuxtv.org/project/linux-media/list/
F: drivers/media/dvb-frontends/zd1301_demod* F: drivers/media/dvb-frontends/zd1301_demod*

View file

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

View file

@ -36,9 +36,7 @@ &led_pwr {
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>; gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
}; };
&leds { /delete-node/ &led_act;
/delete-node/ led_act;
};
&pm { &pm {
/delete-property/ system-power-controller; /delete-property/ system-power-controller;

View file

@ -37,9 +37,9 @@ panel_in: endpoint {
&clks { &clks {
assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
<&clks IMX6QDL_CLK_LDB_DI1_SEL>; <&clks IMX6QDL_CLK_LDB_DI1_SEL>, <&clks IMX6QDL_CLK_ENET_REF_SEL>;
assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>,
<&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>; <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, <&clk50m_phy>;
}; };
&hdmi { &hdmi {

View file

@ -121,6 +121,8 @@ ethphy1: ethernet-phy@1 {
max-speed = <100>; max-speed = <100>;
interrupt-parent = <&gpio5>; interrupt-parent = <&gpio5>;
interrupts = <6 IRQ_TYPE_LEVEL_LOW>; interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
clocks = <&clks IMX6UL_CLK_ENET_REF>;
clock-names = "rmii-ref";
}; };
}; };
}; };

View file

@ -454,7 +454,7 @@ iomuxc_lpsr: pinctrl@302c0000 {
}; };
gpt1: timer@302d0000 { gpt1: timer@302d0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302d0000 0x10000>; reg = <0x302d0000 0x10000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT1_ROOT_CLK>, clocks = <&clks IMX7D_GPT1_ROOT_CLK>,
@ -463,7 +463,7 @@ gpt1: timer@302d0000 {
}; };
gpt2: timer@302e0000 { gpt2: timer@302e0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302e0000 0x10000>; reg = <0x302e0000 0x10000>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT2_ROOT_CLK>, clocks = <&clks IMX7D_GPT2_ROOT_CLK>,
@ -473,7 +473,7 @@ gpt2: timer@302e0000 {
}; };
gpt3: timer@302f0000 { gpt3: timer@302f0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302f0000 0x10000>; reg = <0x302f0000 0x10000>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT3_ROOT_CLK>, clocks = <&clks IMX7D_GPT3_ROOT_CLK>,
@ -483,7 +483,7 @@ gpt3: timer@302f0000 {
}; };
gpt4: timer@30300000 { gpt4: timer@30300000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x30300000 0x10000>; reg = <0x30300000 0x10000>;
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT4_ROOT_CLK>, clocks = <&clks IMX7D_GPT4_ROOT_CLK>,

View file

@ -8,6 +8,7 @@
#include "imx28-lwe.dtsi" #include "imx28-lwe.dtsi"
/ { / {
model = "Liebherr XEA board";
compatible = "lwn,imx28-xea", "fsl,imx28"; compatible = "lwn,imx28-xea", "fsl,imx28";
}; };

View file

@ -848,7 +848,7 @@ sdmmc_wp: sdmmc-wp {
}; };
sdmmc_pwren: sdmmc-pwren { sdmmc_pwren: sdmmc-pwren {
rockchip,pins = <1 RK_PB6 1 &pcfg_pull_default>; rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_default>;
}; };
sdmmc_bus4: sdmmc-bus4 { sdmmc_bus4: sdmmc-bus4 {

View file

@ -215,9 +215,9 @@ power-domain@RK3228_PD_VIO {
power-domain@RK3228_PD_VOP { power-domain@RK3228_PD_VOP {
reg = <RK3228_PD_VOP>; reg = <RK3228_PD_VOP>;
clocks =<&cru ACLK_VOP>, clocks = <&cru ACLK_VOP>,
<&cru DCLK_VOP>, <&cru DCLK_VOP>,
<&cru HCLK_VOP>; <&cru HCLK_VOP>;
pm_qos = <&qos_vop>; pm_qos = <&qos_vop>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };

View file

@ -2,8 +2,6 @@
#ifndef _ARM_KEXEC_H #ifndef _ARM_KEXEC_H
#define _ARM_KEXEC_H #define _ARM_KEXEC_H
#ifdef CONFIG_KEXEC
/* Maximum physical address we can use pages from */ /* Maximum physical address we can use pages from */
#define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)
/* Maximum address we can reach in physical address mode */ /* Maximum address we can reach in physical address mode */
@ -82,6 +80,4 @@ static inline struct page *boot_pfn_to_page(unsigned long boot_pfn)
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* CONFIG_KEXEC */
#endif /* _ARM_KEXEC_H */ #endif /* _ARM_KEXEC_H */

View file

@ -59,7 +59,7 @@ obj-$(CONFIG_FUNCTION_TRACER) += entry-ftrace.o
obj-$(CONFIG_DYNAMIC_FTRACE) += ftrace.o insn.o patch.o obj-$(CONFIG_DYNAMIC_FTRACE) += ftrace.o insn.o patch.o
obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += ftrace.o insn.o patch.o obj-$(CONFIG_FUNCTION_GRAPH_TRACER) += ftrace.o insn.o patch.o
obj-$(CONFIG_JUMP_LABEL) += jump_label.o insn.o patch.o obj-$(CONFIG_JUMP_LABEL) += jump_label.o insn.o patch.o
obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o obj-$(CONFIG_KEXEC_CORE) += machine_kexec.o relocate_kernel.o
# Main staffs in KPROBES are in arch/arm/probes/ . # Main staffs in KPROBES are in arch/arm/probes/ .
obj-$(CONFIG_KPROBES) += patch.o insn.o obj-$(CONFIG_KPROBES) += patch.o insn.o
obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o

View file

@ -501,6 +501,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
name = devm_kasprintf(&pdev->dev, name = devm_kasprintf(&pdev->dev,
GFP_KERNEL, "mmdc%d", ret); GFP_KERNEL, "mmdc%d", ret);
if (!name) {
ret = -ENOMEM;
goto pmu_release_id;
}
pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk; pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;
pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data; pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data;
@ -523,9 +527,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
pmu_register_err: pmu_register_err:
pr_warn("MMDC Perf PMU failed (%d), disabled\n", ret); pr_warn("MMDC Perf PMU failed (%d), disabled\n", ret);
ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node); cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node);
hrtimer_cancel(&pmu_mmdc->hrtimer); hrtimer_cancel(&pmu_mmdc->hrtimer);
pmu_release_id:
ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
pmu_free: pmu_free:
kfree(pmu_mmdc); kfree(pmu_mmdc);
return ret; return ret;

View file

@ -82,12 +82,9 @@ reg_module_wifi: regulator-module-wifi {
pinctrl-0 = <&pinctrl_wifi_pdn>; pinctrl-0 = <&pinctrl_wifi_pdn>;
gpio = <&lsio_gpio1 28 GPIO_ACTIVE_HIGH>; gpio = <&lsio_gpio1 28 GPIO_ACTIVE_HIGH>;
enable-active-high; enable-active-high;
regulator-always-on;
regulator-name = "wifi_pwrdn_fake_regulator"; regulator-name = "wifi_pwrdn_fake_regulator";
regulator-settling-time-us = <100>; regulator-settling-time-us = <100>;
regulator-state-mem {
regulator-off-in-suspend;
};
}; };
reg_pcie_switch: regulator-pcie-switch { reg_pcie_switch: regulator-pcie-switch {

View file

@ -149,7 +149,7 @@ adma_pwm: pwm@5a190000 {
clock-names = "ipg", "per"; clock-names = "ipg", "per";
assigned-clocks = <&clk IMX_SC_R_LCD_0_PWM_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_LCD_0_PWM_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <2>; #pwm-cells = <3>;
power-domains = <&pd IMX_SC_R_LCD_0_PWM_0>; power-domains = <&pd IMX_SC_R_LCD_0_PWM_0>;
}; };

View file

@ -29,7 +29,7 @@ lsio_pwm0: pwm@5d000000 {
<&pwm0_lpcg 1>; <&pwm0_lpcg 1>;
assigned-clocks = <&clk IMX_SC_R_PWM_0 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_0 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <2>; #pwm-cells = <3>;
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
}; };
@ -42,7 +42,7 @@ lsio_pwm1: pwm@5d010000 {
<&pwm1_lpcg 1>; <&pwm1_lpcg 1>;
assigned-clocks = <&clk IMX_SC_R_PWM_1 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_1 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <2>; #pwm-cells = <3>;
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
}; };
@ -55,7 +55,7 @@ lsio_pwm2: pwm@5d020000 {
<&pwm2_lpcg 1>; <&pwm2_lpcg 1>;
assigned-clocks = <&clk IMX_SC_R_PWM_2 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_2 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <2>; #pwm-cells = <3>;
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
}; };
@ -68,7 +68,7 @@ lsio_pwm3: pwm@5d030000 {
<&pwm3_lpcg 1>; <&pwm3_lpcg 1>;
assigned-clocks = <&clk IMX_SC_R_PWM_3 IMX_SC_PM_CLK_PER>; assigned-clocks = <&clk IMX_SC_R_PWM_3 IMX_SC_PM_CLK_PER>;
assigned-clock-rates = <24000000>; assigned-clock-rates = <24000000>;
#pwm-cells = <2>; #pwm-cells = <3>;
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
}; };

View file

@ -2072,6 +2072,7 @@ usb_dwc3_0: usb@38100000 {
phys = <&usb3_phy0>, <&usb3_phy0>; phys = <&usb3_phy0>, <&usb3_phy0>;
phy-names = "usb2-phy", "usb3-phy"; phy-names = "usb2-phy", "usb3-phy";
snps,gfladj-refclk-lpm-sel-quirk; snps,gfladj-refclk-lpm-sel-quirk;
snps,parkmode-disable-ss-quirk;
}; };
}; };
@ -2114,6 +2115,7 @@ usb_dwc3_1: usb@38200000 {
phys = <&usb3_phy1>, <&usb3_phy1>; phys = <&usb3_phy1>, <&usb3_phy1>;
phy-names = "usb2-phy", "usb3-phy"; phy-names = "usb2-phy", "usb3-phy";
snps,gfladj-refclk-lpm-sel-quirk; snps,gfladj-refclk-lpm-sel-quirk;
snps,parkmode-disable-ss-quirk;
}; };
}; };

View file

@ -1649,6 +1649,7 @@ usb_dwc3_0: usb@38100000 {
phys = <&usb3_phy0>, <&usb3_phy0>; phys = <&usb3_phy0>, <&usb3_phy0>;
phy-names = "usb2-phy", "usb3-phy"; phy-names = "usb2-phy", "usb3-phy";
power-domains = <&pgc_otg1>; power-domains = <&pgc_otg1>;
snps,parkmode-disable-ss-quirk;
status = "disabled"; status = "disabled";
}; };
@ -1680,6 +1681,7 @@ usb_dwc3_1: usb@38200000 {
phys = <&usb3_phy1>, <&usb3_phy1>; phys = <&usb3_phy1>, <&usb3_phy1>;
phy-names = "usb2-phy", "usb3-phy"; phy-names = "usb2-phy", "usb3-phy";
power-domains = <&pgc_otg2>; power-domains = <&pgc_otg2>;
snps,parkmode-disable-ss-quirk;
status = "disabled"; status = "disabled";
}; };

View file

@ -96,6 +96,17 @@ &edma2 {
status = "okay"; status = "okay";
}; };
&edma3 {
power-domains = <&pd IMX_SC_R_DMA_1_CH0>,
<&pd IMX_SC_R_DMA_1_CH1>,
<&pd IMX_SC_R_DMA_1_CH2>,
<&pd IMX_SC_R_DMA_1_CH3>,
<&pd IMX_SC_R_DMA_1_CH4>,
<&pd IMX_SC_R_DMA_1_CH5>,
<&pd IMX_SC_R_DMA_1_CH6>,
<&pd IMX_SC_R_DMA_1_CH7>;
};
&flexcan1 { &flexcan1 {
fsl,clk-source = /bits/ 8 <1>; fsl,clk-source = /bits/ 8 <1>;
}; };

View file

@ -483,7 +483,7 @@ fec: ethernet@29950000 {
}; };
}; };
gpioe: gpio@2d000080 { gpioe: gpio@2d000000 {
compatible = "fsl,imx8ulp-gpio"; compatible = "fsl,imx8ulp-gpio";
reg = <0x2d000000 0x1000>; reg = <0x2d000000 0x1000>;
gpio-controller; gpio-controller;
@ -498,7 +498,7 @@ gpioe: gpio@2d000080 {
gpio-ranges = <&iomuxc1 0 32 24>; gpio-ranges = <&iomuxc1 0 32 24>;
}; };
gpiof: gpio@2d010080 { gpiof: gpio@2d010000 {
compatible = "fsl,imx8ulp-gpio"; compatible = "fsl,imx8ulp-gpio";
reg = <0x2d010000 0x1000>; reg = <0x2d010000 0x1000>;
gpio-controller; gpio-controller;
@ -534,7 +534,7 @@ pcc5: clock-controller@2da70000 {
}; };
}; };
gpiod: gpio@2e200080 { gpiod: gpio@2e200000 {
compatible = "fsl,imx8ulp-gpio"; compatible = "fsl,imx8ulp-gpio";
reg = <0x2e200000 0x1000>; reg = <0x2e200000 0x1000>;
gpio-controller; gpio-controller;

View file

@ -577,7 +577,7 @@ pinctrl_uart2: uart2grp {
fsl,pins = < fsl,pins = <
MX93_PAD_UART2_TXD__LPUART2_TX 0x31e MX93_PAD_UART2_TXD__LPUART2_TX 0x31e
MX93_PAD_UART2_RXD__LPUART2_RX 0x31e MX93_PAD_UART2_RXD__LPUART2_RX 0x31e
MX93_PAD_SAI1_TXD0__LPUART2_RTS_B 0x31e MX93_PAD_SAI1_TXD0__LPUART2_RTS_B 0x51e
>; >;
}; };

View file

@ -417,7 +417,7 @@ mediamix: power-domain@44462400 {
compatible = "fsl,imx93-src-slice"; compatible = "fsl,imx93-src-slice";
reg = <0x44462400 0x400>, <0x44465800 0x400>; reg = <0x44462400 0x400>, <0x44465800 0x400>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
clocks = <&clk IMX93_CLK_MEDIA_AXI>, clocks = <&clk IMX93_CLK_NIC_MEDIA_GATE>,
<&clk IMX93_CLK_MEDIA_APB>; <&clk IMX93_CLK_MEDIA_APB>;
}; };
}; };
@ -957,7 +957,7 @@ usdhc3: mmc@428b0000 {
}; };
}; };
gpio2: gpio@43810080 { gpio2: gpio@43810000 {
compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio"; compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
reg = <0x43810000 0x1000>; reg = <0x43810000 0x1000>;
gpio-controller; gpio-controller;
@ -972,7 +972,7 @@ gpio2: gpio@43810080 {
gpio-ranges = <&iomuxc 0 4 30>; gpio-ranges = <&iomuxc 0 4 30>;
}; };
gpio3: gpio@43820080 { gpio3: gpio@43820000 {
compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio"; compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
reg = <0x43820000 0x1000>; reg = <0x43820000 0x1000>;
gpio-controller; gpio-controller;
@ -988,7 +988,7 @@ gpio3: gpio@43820080 {
<&iomuxc 26 34 2>, <&iomuxc 28 0 4>; <&iomuxc 26 34 2>, <&iomuxc 28 0 4>;
}; };
gpio4: gpio@43830080 { gpio4: gpio@43830000 {
compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio"; compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
reg = <0x43830000 0x1000>; reg = <0x43830000 0x1000>;
gpio-controller; gpio-controller;
@ -1003,7 +1003,7 @@ gpio4: gpio@43830080 {
gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc 28 36 2>; gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc 28 36 2>;
}; };
gpio1: gpio@47400080 { gpio1: gpio@47400000 {
compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio"; compatible = "fsl,imx93-gpio", "fsl,imx8ulp-gpio";
reg = <0x47400000 0x1000>; reg = <0x47400000 0x1000>;
gpio-controller; gpio-controller;

View file

@ -73,7 +73,7 @@ led-1 {
}; };
}; };
memory { memory@40000000 {
reg = <0 0x40000000 0 0x40000000>; reg = <0 0x40000000 0 0x40000000>;
}; };

View file

@ -55,7 +55,7 @@ key-wps {
}; };
}; };
memory { memory@40000000 {
reg = <0 0x40000000 0 0x20000000>; reg = <0 0x40000000 0 0x20000000>;
}; };

View file

@ -126,6 +126,7 @@ sfp1: sfp-1 {
compatible = "sff,sfp"; compatible = "sff,sfp";
i2c-bus = <&i2c_sfp1>; i2c-bus = <&i2c_sfp1>;
los-gpios = <&pio 46 GPIO_ACTIVE_HIGH>; los-gpios = <&pio 46 GPIO_ACTIVE_HIGH>;
maximum-power-milliwatt = <3000>;
mod-def0-gpios = <&pio 49 GPIO_ACTIVE_LOW>; mod-def0-gpios = <&pio 49 GPIO_ACTIVE_LOW>;
tx-disable-gpios = <&pio 20 GPIO_ACTIVE_HIGH>; tx-disable-gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
tx-fault-gpios = <&pio 7 GPIO_ACTIVE_HIGH>; tx-fault-gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
@ -137,6 +138,7 @@ sfp2: sfp-2 {
i2c-bus = <&i2c_sfp2>; i2c-bus = <&i2c_sfp2>;
los-gpios = <&pio 31 GPIO_ACTIVE_HIGH>; los-gpios = <&pio 31 GPIO_ACTIVE_HIGH>;
mod-def0-gpios = <&pio 47 GPIO_ACTIVE_LOW>; mod-def0-gpios = <&pio 47 GPIO_ACTIVE_LOW>;
maximum-power-milliwatt = <3000>;
tx-disable-gpios = <&pio 15 GPIO_ACTIVE_HIGH>; tx-disable-gpios = <&pio 15 GPIO_ACTIVE_HIGH>;
tx-fault-gpios = <&pio 48 GPIO_ACTIVE_HIGH>; tx-fault-gpios = <&pio 48 GPIO_ACTIVE_HIGH>;
}; };
@ -150,16 +152,16 @@ cpu-active-high {
trip = <&cpu_trip_active_high>; trip = <&cpu_trip_active_high>;
}; };
cpu-active-low { cpu-active-med {
/* active: set fan to cooling level 1 */ /* active: set fan to cooling level 1 */
cooling-device = <&fan 1 1>; cooling-device = <&fan 1 1>;
trip = <&cpu_trip_active_low>; trip = <&cpu_trip_active_med>;
}; };
cpu-passive { cpu-active-low {
/* passive: set fan to cooling level 0 */ /* active: set fan to cooling level 0 */
cooling-device = <&fan 0 0>; cooling-device = <&fan 0 0>;
trip = <&cpu_trip_passive>; trip = <&cpu_trip_active_low>;
}; };
}; };
}; };

View file

@ -374,6 +374,10 @@ mmc0: mmc@11230000 {
reg = <0 0x11230000 0 0x1000>, reg = <0 0x11230000 0 0x1000>,
<0 0x11c20000 0 0x1000>; <0 0x11c20000 0 0x1000>;
interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
assigned-clocks = <&topckgen CLK_TOP_EMMC_416M_SEL>,
<&topckgen CLK_TOP_EMMC_250M_SEL>;
assigned-clock-parents = <&apmixedsys CLK_APMIXED_MPLL>,
<&topckgen CLK_TOP_NET1PLL_D5_D2>;
clocks = <&topckgen CLK_TOP_EMMC_416M_SEL>, clocks = <&topckgen CLK_TOP_EMMC_416M_SEL>,
<&infracfg CLK_INFRA_MSDC_HCK_CK>, <&infracfg CLK_INFRA_MSDC_HCK_CK>,
<&infracfg CLK_INFRA_MSDC_CK>, <&infracfg CLK_INFRA_MSDC_CK>,
@ -610,22 +614,34 @@ cpu_thermal: cpu-thermal {
thermal-sensors = <&thermal 0>; thermal-sensors = <&thermal 0>;
trips { trips {
cpu_trip_crit: crit {
temperature = <125000>;
hysteresis = <2000>;
type = "critical";
};
cpu_trip_hot: hot {
temperature = <120000>;
hysteresis = <2000>;
type = "hot";
};
cpu_trip_active_high: active-high { cpu_trip_active_high: active-high {
temperature = <115000>; temperature = <115000>;
hysteresis = <2000>; hysteresis = <2000>;
type = "active"; type = "active";
}; };
cpu_trip_active_low: active-low { cpu_trip_active_med: active-med {
temperature = <85000>; temperature = <85000>;
hysteresis = <2000>; hysteresis = <2000>;
type = "active"; type = "active";
}; };
cpu_trip_passive: passive { cpu_trip_active_low: active-low {
temperature = <40000>; temperature = <60000>;
hysteresis = <2000>; hysteresis = <2000>;
type = "passive"; type = "active";
}; };
}; };
}; };

View file

@ -44,7 +44,7 @@ extcon_usb: extcon_iddig {
id-gpio = <&pio 16 GPIO_ACTIVE_HIGH>; id-gpio = <&pio 16 GPIO_ACTIVE_HIGH>;
}; };
usb_p1_vbus: regulator@0 { usb_p1_vbus: regulator-usb-p1 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "usb_vbus"; regulator-name = "usb_vbus";
regulator-min-microvolt = <5000000>; regulator-min-microvolt = <5000000>;
@ -53,7 +53,7 @@ usb_p1_vbus: regulator@0 {
enable-active-high; enable-active-high;
}; };
usb_p0_vbus: regulator@1 { usb_p0_vbus: regulator-usb-p0 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "vbus"; regulator-name = "vbus";
regulator-min-microvolt = <5000000>; regulator-min-microvolt = <5000000>;

View file

@ -31,14 +31,14 @@ reserved-memory {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
scp_mem_reserved: scp_mem_region { scp_mem_reserved: memory@50000000 {
compatible = "shared-dma-pool"; compatible = "shared-dma-pool";
reg = <0 0x50000000 0 0x2900000>; reg = <0 0x50000000 0 0x2900000>;
no-map; no-map;
}; };
}; };
ntc@0 { thermal-sensor {
compatible = "murata,ncp03wf104"; compatible = "murata,ncp03wf104";
pullup-uv = <1800000>; pullup-uv = <1800000>;
pullup-ohm = <390000>; pullup-ohm = <390000>;

View file

@ -91,6 +91,8 @@ cros_ec_pwm: pwm {
&dsi0 { &dsi0 {
status = "okay"; status = "okay";
/delete-property/#size-cells;
/delete-property/#address-cells;
/delete-node/panel@0; /delete-node/panel@0;
ports { ports {
port { port {
@ -441,20 +443,20 @@ pins2 {
}; };
touchscreen_pins: touchscreen-pins { touchscreen_pins: touchscreen-pins {
touch_int_odl { touch-int-odl {
pinmux = <PINMUX_GPIO155__FUNC_GPIO155>; pinmux = <PINMUX_GPIO155__FUNC_GPIO155>;
input-enable; input-enable;
bias-pull-up; bias-pull-up;
}; };
touch_rst_l { touch-rst-l {
pinmux = <PINMUX_GPIO156__FUNC_GPIO156>; pinmux = <PINMUX_GPIO156__FUNC_GPIO156>;
output-high; output-high;
}; };
}; };
trackpad_pins: trackpad-pins { trackpad_pins: trackpad-pins {
trackpad_int { trackpad-int {
pinmux = <PINMUX_GPIO7__FUNC_GPIO7>; pinmux = <PINMUX_GPIO7__FUNC_GPIO7>;
input-enable; input-enable;
bias-disable; /* pulled externally */ bias-disable; /* pulled externally */

View file

@ -116,7 +116,7 @@ reserved_memory: reserved-memory {
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
scp_mem_reserved: scp_mem_region { scp_mem_reserved: memory@50000000 {
compatible = "shared-dma-pool"; compatible = "shared-dma-pool";
reg = <0 0x50000000 0 0x2900000>; reg = <0 0x50000000 0 0x2900000>;
no-map; no-map;
@ -460,7 +460,7 @@ &mt6358_vsram_gpu_reg {
&pio { &pio {
aud_pins_default: audiopins { aud_pins_default: audiopins {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO97__FUNC_I2S2_MCK>, pinmux = <PINMUX_GPIO97__FUNC_I2S2_MCK>,
<PINMUX_GPIO98__FUNC_I2S2_BCK>, <PINMUX_GPIO98__FUNC_I2S2_BCK>,
<PINMUX_GPIO101__FUNC_I2S2_LRCK>, <PINMUX_GPIO101__FUNC_I2S2_LRCK>,
@ -482,7 +482,7 @@ pins_bus {
}; };
aud_pins_tdm_out_on: audiotdmouton { aud_pins_tdm_out_on: audiotdmouton {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO169__FUNC_TDM_BCK_2ND>, pinmux = <PINMUX_GPIO169__FUNC_TDM_BCK_2ND>,
<PINMUX_GPIO170__FUNC_TDM_LRCK_2ND>, <PINMUX_GPIO170__FUNC_TDM_LRCK_2ND>,
<PINMUX_GPIO171__FUNC_TDM_DATA0_2ND>, <PINMUX_GPIO171__FUNC_TDM_DATA0_2ND>,
@ -494,7 +494,7 @@ pins_bus {
}; };
aud_pins_tdm_out_off: audiotdmoutoff { aud_pins_tdm_out_off: audiotdmoutoff {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO169__FUNC_GPIO169>, pinmux = <PINMUX_GPIO169__FUNC_GPIO169>,
<PINMUX_GPIO170__FUNC_GPIO170>, <PINMUX_GPIO170__FUNC_GPIO170>,
<PINMUX_GPIO171__FUNC_GPIO171>, <PINMUX_GPIO171__FUNC_GPIO171>,
@ -508,13 +508,13 @@ pins_bus {
}; };
bt_pins: bt-pins { bt_pins: bt-pins {
pins_bt_en { pins-bt-en {
pinmux = <PINMUX_GPIO120__FUNC_GPIO120>; pinmux = <PINMUX_GPIO120__FUNC_GPIO120>;
output-low; output-low;
}; };
}; };
ec_ap_int_odl: ec_ap_int_odl { ec_ap_int_odl: ec-ap-int-odl {
pins1 { pins1 {
pinmux = <PINMUX_GPIO151__FUNC_GPIO151>; pinmux = <PINMUX_GPIO151__FUNC_GPIO151>;
input-enable; input-enable;
@ -522,7 +522,7 @@ pins1 {
}; };
}; };
h1_int_od_l: h1_int_od_l { h1_int_od_l: h1-int-od-l {
pins1 { pins1 {
pinmux = <PINMUX_GPIO153__FUNC_GPIO153>; pinmux = <PINMUX_GPIO153__FUNC_GPIO153>;
input-enable; input-enable;
@ -530,7 +530,7 @@ pins1 {
}; };
i2c0_pins: i2c0 { i2c0_pins: i2c0 {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO82__FUNC_SDA0>, pinmux = <PINMUX_GPIO82__FUNC_SDA0>,
<PINMUX_GPIO83__FUNC_SCL0>; <PINMUX_GPIO83__FUNC_SCL0>;
mediatek,pull-up-adv = <3>; mediatek,pull-up-adv = <3>;
@ -539,7 +539,7 @@ pins_bus {
}; };
i2c1_pins: i2c1 { i2c1_pins: i2c1 {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO81__FUNC_SDA1>, pinmux = <PINMUX_GPIO81__FUNC_SDA1>,
<PINMUX_GPIO84__FUNC_SCL1>; <PINMUX_GPIO84__FUNC_SCL1>;
mediatek,pull-up-adv = <3>; mediatek,pull-up-adv = <3>;
@ -548,7 +548,7 @@ pins_bus {
}; };
i2c2_pins: i2c2 { i2c2_pins: i2c2 {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO103__FUNC_SCL2>, pinmux = <PINMUX_GPIO103__FUNC_SCL2>,
<PINMUX_GPIO104__FUNC_SDA2>; <PINMUX_GPIO104__FUNC_SDA2>;
bias-disable; bias-disable;
@ -557,7 +557,7 @@ pins_bus {
}; };
i2c3_pins: i2c3 { i2c3_pins: i2c3 {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO50__FUNC_SCL3>, pinmux = <PINMUX_GPIO50__FUNC_SCL3>,
<PINMUX_GPIO51__FUNC_SDA3>; <PINMUX_GPIO51__FUNC_SDA3>;
mediatek,pull-up-adv = <3>; mediatek,pull-up-adv = <3>;
@ -566,7 +566,7 @@ pins_bus {
}; };
i2c4_pins: i2c4 { i2c4_pins: i2c4 {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO105__FUNC_SCL4>, pinmux = <PINMUX_GPIO105__FUNC_SCL4>,
<PINMUX_GPIO106__FUNC_SDA4>; <PINMUX_GPIO106__FUNC_SDA4>;
bias-disable; bias-disable;
@ -575,7 +575,7 @@ pins_bus {
}; };
i2c5_pins: i2c5 { i2c5_pins: i2c5 {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO48__FUNC_SCL5>, pinmux = <PINMUX_GPIO48__FUNC_SCL5>,
<PINMUX_GPIO49__FUNC_SDA5>; <PINMUX_GPIO49__FUNC_SDA5>;
mediatek,pull-up-adv = <3>; mediatek,pull-up-adv = <3>;
@ -584,7 +584,7 @@ pins_bus {
}; };
i2c6_pins: i2c6 { i2c6_pins: i2c6 {
pins_bus { pins-bus {
pinmux = <PINMUX_GPIO11__FUNC_SCL6>, pinmux = <PINMUX_GPIO11__FUNC_SCL6>,
<PINMUX_GPIO12__FUNC_SDA6>; <PINMUX_GPIO12__FUNC_SDA6>;
bias-disable; bias-disable;
@ -592,7 +592,7 @@ pins_bus {
}; };
mmc0_pins_default: mmc0-pins-default { mmc0_pins_default: mmc0-pins-default {
pins_cmd_dat { pins-cmd-dat {
pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>, pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>,
<PINMUX_GPIO128__FUNC_MSDC0_DAT1>, <PINMUX_GPIO128__FUNC_MSDC0_DAT1>,
<PINMUX_GPIO125__FUNC_MSDC0_DAT2>, <PINMUX_GPIO125__FUNC_MSDC0_DAT2>,
@ -607,13 +607,13 @@ pins_cmd_dat {
mediatek,pull-up-adv = <01>; mediatek,pull-up-adv = <01>;
}; };
pins_clk { pins-clk {
pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>; pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>;
drive-strength = <MTK_DRIVE_14mA>; drive-strength = <MTK_DRIVE_14mA>;
mediatek,pull-down-adv = <10>; mediatek,pull-down-adv = <10>;
}; };
pins_rst { pins-rst {
pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>; pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>;
drive-strength = <MTK_DRIVE_14mA>; drive-strength = <MTK_DRIVE_14mA>;
mediatek,pull-down-adv = <01>; mediatek,pull-down-adv = <01>;
@ -621,7 +621,7 @@ pins_rst {
}; };
mmc0_pins_uhs: mmc0-pins-uhs { mmc0_pins_uhs: mmc0-pins-uhs {
pins_cmd_dat { pins-cmd-dat {
pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>, pinmux = <PINMUX_GPIO123__FUNC_MSDC0_DAT0>,
<PINMUX_GPIO128__FUNC_MSDC0_DAT1>, <PINMUX_GPIO128__FUNC_MSDC0_DAT1>,
<PINMUX_GPIO125__FUNC_MSDC0_DAT2>, <PINMUX_GPIO125__FUNC_MSDC0_DAT2>,
@ -636,19 +636,19 @@ pins_cmd_dat {
mediatek,pull-up-adv = <01>; mediatek,pull-up-adv = <01>;
}; };
pins_clk { pins-clk {
pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>; pinmux = <PINMUX_GPIO124__FUNC_MSDC0_CLK>;
drive-strength = <MTK_DRIVE_14mA>; drive-strength = <MTK_DRIVE_14mA>;
mediatek,pull-down-adv = <10>; mediatek,pull-down-adv = <10>;
}; };
pins_ds { pins-ds {
pinmux = <PINMUX_GPIO131__FUNC_MSDC0_DSL>; pinmux = <PINMUX_GPIO131__FUNC_MSDC0_DSL>;
drive-strength = <MTK_DRIVE_14mA>; drive-strength = <MTK_DRIVE_14mA>;
mediatek,pull-down-adv = <10>; mediatek,pull-down-adv = <10>;
}; };
pins_rst { pins-rst {
pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>; pinmux = <PINMUX_GPIO133__FUNC_MSDC0_RSTB>;
drive-strength = <MTK_DRIVE_14mA>; drive-strength = <MTK_DRIVE_14mA>;
mediatek,pull-up-adv = <01>; mediatek,pull-up-adv = <01>;
@ -656,7 +656,7 @@ pins_rst {
}; };
mmc1_pins_default: mmc1-pins-default { mmc1_pins_default: mmc1-pins-default {
pins_cmd_dat { pins-cmd-dat {
pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>, pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>,
<PINMUX_GPIO32__FUNC_MSDC1_DAT0>, <PINMUX_GPIO32__FUNC_MSDC1_DAT0>,
<PINMUX_GPIO34__FUNC_MSDC1_DAT1>, <PINMUX_GPIO34__FUNC_MSDC1_DAT1>,
@ -666,7 +666,7 @@ pins_cmd_dat {
mediatek,pull-up-adv = <10>; mediatek,pull-up-adv = <10>;
}; };
pins_clk { pins-clk {
pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>; pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>;
input-enable; input-enable;
mediatek,pull-down-adv = <10>; mediatek,pull-down-adv = <10>;
@ -674,7 +674,7 @@ pins_clk {
}; };
mmc1_pins_uhs: mmc1-pins-uhs { mmc1_pins_uhs: mmc1-pins-uhs {
pins_cmd_dat { pins-cmd-dat {
pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>, pinmux = <PINMUX_GPIO31__FUNC_MSDC1_CMD>,
<PINMUX_GPIO32__FUNC_MSDC1_DAT0>, <PINMUX_GPIO32__FUNC_MSDC1_DAT0>,
<PINMUX_GPIO34__FUNC_MSDC1_DAT1>, <PINMUX_GPIO34__FUNC_MSDC1_DAT1>,
@ -685,7 +685,7 @@ pins_cmd_dat {
mediatek,pull-up-adv = <10>; mediatek,pull-up-adv = <10>;
}; };
pins_clk { pins-clk {
pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>; pinmux = <PINMUX_GPIO29__FUNC_MSDC1_CLK>;
drive-strength = <MTK_DRIVE_8mA>; drive-strength = <MTK_DRIVE_8mA>;
mediatek,pull-down-adv = <10>; mediatek,pull-down-adv = <10>;
@ -693,15 +693,15 @@ pins_clk {
}; };
}; };
panel_pins_default: panel_pins_default { panel_pins_default: panel-pins-default {
panel_reset { panel-reset {
pinmux = <PINMUX_GPIO45__FUNC_GPIO45>; pinmux = <PINMUX_GPIO45__FUNC_GPIO45>;
output-low; output-low;
bias-pull-up; bias-pull-up;
}; };
}; };
pwm0_pin_default: pwm0_pin_default { pwm0_pin_default: pwm0-pin-default {
pins1 { pins1 {
pinmux = <PINMUX_GPIO176__FUNC_GPIO176>; pinmux = <PINMUX_GPIO176__FUNC_GPIO176>;
output-high; output-high;
@ -713,14 +713,14 @@ pins2 {
}; };
scp_pins: scp { scp_pins: scp {
pins_scp_uart { pins-scp-uart {
pinmux = <PINMUX_GPIO110__FUNC_TP_URXD1_AO>, pinmux = <PINMUX_GPIO110__FUNC_TP_URXD1_AO>,
<PINMUX_GPIO112__FUNC_TP_UTXD1_AO>; <PINMUX_GPIO112__FUNC_TP_UTXD1_AO>;
}; };
}; };
spi0_pins: spi0 { spi0_pins: spi0 {
pins_spi { pins-spi {
pinmux = <PINMUX_GPIO85__FUNC_SPI0_MI>, pinmux = <PINMUX_GPIO85__FUNC_SPI0_MI>,
<PINMUX_GPIO86__FUNC_GPIO86>, <PINMUX_GPIO86__FUNC_GPIO86>,
<PINMUX_GPIO87__FUNC_SPI0_MO>, <PINMUX_GPIO87__FUNC_SPI0_MO>,
@ -730,7 +730,7 @@ pins_spi {
}; };
spi1_pins: spi1 { spi1_pins: spi1 {
pins_spi { pins-spi {
pinmux = <PINMUX_GPIO161__FUNC_SPI1_A_MI>, pinmux = <PINMUX_GPIO161__FUNC_SPI1_A_MI>,
<PINMUX_GPIO162__FUNC_SPI1_A_CSB>, <PINMUX_GPIO162__FUNC_SPI1_A_CSB>,
<PINMUX_GPIO163__FUNC_SPI1_A_MO>, <PINMUX_GPIO163__FUNC_SPI1_A_MO>,
@ -740,20 +740,20 @@ pins_spi {
}; };
spi2_pins: spi2 { spi2_pins: spi2 {
pins_spi { pins-spi {
pinmux = <PINMUX_GPIO0__FUNC_SPI2_CSB>, pinmux = <PINMUX_GPIO0__FUNC_SPI2_CSB>,
<PINMUX_GPIO1__FUNC_SPI2_MO>, <PINMUX_GPIO1__FUNC_SPI2_MO>,
<PINMUX_GPIO2__FUNC_SPI2_CLK>; <PINMUX_GPIO2__FUNC_SPI2_CLK>;
bias-disable; bias-disable;
}; };
pins_spi_mi { pins-spi-mi {
pinmux = <PINMUX_GPIO94__FUNC_SPI2_MI>; pinmux = <PINMUX_GPIO94__FUNC_SPI2_MI>;
mediatek,pull-down-adv = <00>; mediatek,pull-down-adv = <00>;
}; };
}; };
spi3_pins: spi3 { spi3_pins: spi3 {
pins_spi { pins-spi {
pinmux = <PINMUX_GPIO21__FUNC_SPI3_MI>, pinmux = <PINMUX_GPIO21__FUNC_SPI3_MI>,
<PINMUX_GPIO22__FUNC_SPI3_CSB>, <PINMUX_GPIO22__FUNC_SPI3_CSB>,
<PINMUX_GPIO23__FUNC_SPI3_MO>, <PINMUX_GPIO23__FUNC_SPI3_MO>,
@ -763,7 +763,7 @@ pins_spi {
}; };
spi4_pins: spi4 { spi4_pins: spi4 {
pins_spi { pins-spi {
pinmux = <PINMUX_GPIO17__FUNC_SPI4_MI>, pinmux = <PINMUX_GPIO17__FUNC_SPI4_MI>,
<PINMUX_GPIO18__FUNC_SPI4_CSB>, <PINMUX_GPIO18__FUNC_SPI4_CSB>,
<PINMUX_GPIO19__FUNC_SPI4_MO>, <PINMUX_GPIO19__FUNC_SPI4_MO>,
@ -773,7 +773,7 @@ pins_spi {
}; };
spi5_pins: spi5 { spi5_pins: spi5 {
pins_spi { pins-spi {
pinmux = <PINMUX_GPIO13__FUNC_SPI5_MI>, pinmux = <PINMUX_GPIO13__FUNC_SPI5_MI>,
<PINMUX_GPIO14__FUNC_SPI5_CSB>, <PINMUX_GPIO14__FUNC_SPI5_CSB>,
<PINMUX_GPIO15__FUNC_SPI5_MO>, <PINMUX_GPIO15__FUNC_SPI5_MO>,
@ -783,63 +783,63 @@ pins_spi {
}; };
uart0_pins_default: uart0-pins-default { uart0_pins_default: uart0-pins-default {
pins_rx { pins-rx {
pinmux = <PINMUX_GPIO95__FUNC_URXD0>; pinmux = <PINMUX_GPIO95__FUNC_URXD0>;
input-enable; input-enable;
bias-pull-up; bias-pull-up;
}; };
pins_tx { pins-tx {
pinmux = <PINMUX_GPIO96__FUNC_UTXD0>; pinmux = <PINMUX_GPIO96__FUNC_UTXD0>;
}; };
}; };
uart1_pins_default: uart1-pins-default { uart1_pins_default: uart1-pins-default {
pins_rx { pins-rx {
pinmux = <PINMUX_GPIO121__FUNC_URXD1>; pinmux = <PINMUX_GPIO121__FUNC_URXD1>;
input-enable; input-enable;
bias-pull-up; bias-pull-up;
}; };
pins_tx { pins-tx {
pinmux = <PINMUX_GPIO115__FUNC_UTXD1>; pinmux = <PINMUX_GPIO115__FUNC_UTXD1>;
}; };
pins_rts { pins-rts {
pinmux = <PINMUX_GPIO47__FUNC_URTS1>; pinmux = <PINMUX_GPIO47__FUNC_URTS1>;
output-enable; output-enable;
}; };
pins_cts { pins-cts {
pinmux = <PINMUX_GPIO46__FUNC_UCTS1>; pinmux = <PINMUX_GPIO46__FUNC_UCTS1>;
input-enable; input-enable;
}; };
}; };
uart1_pins_sleep: uart1-pins-sleep { uart1_pins_sleep: uart1-pins-sleep {
pins_rx { pins-rx {
pinmux = <PINMUX_GPIO121__FUNC_GPIO121>; pinmux = <PINMUX_GPIO121__FUNC_GPIO121>;
input-enable; input-enable;
bias-pull-up; bias-pull-up;
}; };
pins_tx { pins-tx {
pinmux = <PINMUX_GPIO115__FUNC_UTXD1>; pinmux = <PINMUX_GPIO115__FUNC_UTXD1>;
}; };
pins_rts { pins-rts {
pinmux = <PINMUX_GPIO47__FUNC_URTS1>; pinmux = <PINMUX_GPIO47__FUNC_URTS1>;
output-enable; output-enable;
}; };
pins_cts { pins-cts {
pinmux = <PINMUX_GPIO46__FUNC_UCTS1>; pinmux = <PINMUX_GPIO46__FUNC_UCTS1>;
input-enable; input-enable;
}; };
}; };
wifi_pins_pwrseq: wifi-pins-pwrseq { wifi_pins_pwrseq: wifi-pins-pwrseq {
pins_wifi_enable { pins-wifi-enable {
pinmux = <PINMUX_GPIO119__FUNC_GPIO119>; pinmux = <PINMUX_GPIO119__FUNC_GPIO119>;
output-low; output-low;
}; };
}; };
wifi_pins_wakeup: wifi-pins-wakeup { wifi_pins_wakeup: wifi-pins-wakeup {
pins_wifi_wakeup { pins-wifi-wakeup {
pinmux = <PINMUX_GPIO113__FUNC_GPIO113>; pinmux = <PINMUX_GPIO113__FUNC_GPIO113>;
input-enable; input-enable;
}; };

View file

@ -1210,127 +1210,6 @@ thermal: thermal@1100b000 {
nvmem-cell-names = "calibration-data"; nvmem-cell-names = "calibration-data";
}; };
thermal_zones: thermal-zones {
cpu_thermal: cpu-thermal {
polling-delay-passive = <100>;
polling-delay = <500>;
thermal-sensors = <&thermal 0>;
sustainable-power = <5000>;
trips {
threshold: trip-point0 {
temperature = <68000>;
hysteresis = <2000>;
type = "passive";
};
target: trip-point1 {
temperature = <80000>;
hysteresis = <2000>;
type = "passive";
};
cpu_crit: cpu-crit {
temperature = <115000>;
hysteresis = <2000>;
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&target>;
cooling-device = <&cpu0
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu1
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu2
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu3
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>;
contribution = <3072>;
};
map1 {
trip = <&target>;
cooling-device = <&cpu4
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu5
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu6
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu7
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>;
contribution = <1024>;
};
};
};
/* The tzts1 ~ tzts6 don't need to polling */
/* The tzts1 ~ tzts6 don't need to thermal throttle */
tzts1: tzts1 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 1>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts2: tzts2 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 2>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts3: tzts3 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 3>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts4: tzts4 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 4>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts5: tzts5 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 5>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tztsABB: tztsABB {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 6>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
};
pwm0: pwm@1100e000 { pwm0: pwm@1100e000 {
compatible = "mediatek,mt8183-disp-pwm"; compatible = "mediatek,mt8183-disp-pwm";
reg = <0 0x1100e000 0 0x1000>; reg = <0 0x1100e000 0 0x1000>;
@ -2105,4 +1984,125 @@ larb3: larb@1a002000 {
power-domains = <&spm MT8183_POWER_DOMAIN_CAM>; power-domains = <&spm MT8183_POWER_DOMAIN_CAM>;
}; };
}; };
thermal_zones: thermal-zones {
cpu_thermal: cpu-thermal {
polling-delay-passive = <100>;
polling-delay = <500>;
thermal-sensors = <&thermal 0>;
sustainable-power = <5000>;
trips {
threshold: trip-point0 {
temperature = <68000>;
hysteresis = <2000>;
type = "passive";
};
target: trip-point1 {
temperature = <80000>;
hysteresis = <2000>;
type = "passive";
};
cpu_crit: cpu-crit {
temperature = <115000>;
hysteresis = <2000>;
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&target>;
cooling-device = <&cpu0
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu1
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu2
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu3
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>;
contribution = <3072>;
};
map1 {
trip = <&target>;
cooling-device = <&cpu4
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu5
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu6
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>,
<&cpu7
THERMAL_NO_LIMIT
THERMAL_NO_LIMIT>;
contribution = <1024>;
};
};
};
/* The tzts1 ~ tzts6 don't need to polling */
/* The tzts1 ~ tzts6 don't need to thermal throttle */
tzts1: tzts1 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 1>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts2: tzts2 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 2>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts3: tzts3 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 3>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts4: tzts4 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 4>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tzts5: tzts5 {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 5>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
tztsABB: tztsABB {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-sensors = <&thermal 6>;
sustainable-power = <5000>;
trips {};
cooling-maps {};
};
};
}; };

View file

@ -924,7 +924,8 @@ power-domain@MT8186_POWER_DOMAIN_CSIRX_TOP {
reg = <MT8186_POWER_DOMAIN_CSIRX_TOP>; reg = <MT8186_POWER_DOMAIN_CSIRX_TOP>;
clocks = <&topckgen CLK_TOP_SENINF>, clocks = <&topckgen CLK_TOP_SENINF>,
<&topckgen CLK_TOP_SENINF1>; <&topckgen CLK_TOP_SENINF1>;
clock-names = "csirx_top0", "csirx_top1"; clock-names = "subsys-csirx-top0",
"subsys-csirx-top1";
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };
@ -942,7 +943,8 @@ power-domain@MT8186_POWER_DOMAIN_ADSP_AO {
reg = <MT8186_POWER_DOMAIN_ADSP_AO>; reg = <MT8186_POWER_DOMAIN_ADSP_AO>;
clocks = <&topckgen CLK_TOP_AUDIODSP>, clocks = <&topckgen CLK_TOP_AUDIODSP>,
<&topckgen CLK_TOP_ADSP_BUS>; <&topckgen CLK_TOP_ADSP_BUS>;
clock-names = "audioadsp", "adsp_bus"; clock-names = "audioadsp",
"subsys-adsp-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
#power-domain-cells = <1>; #power-domain-cells = <1>;
@ -975,8 +977,11 @@ power-domain@MT8186_POWER_DOMAIN_DIS {
<&mmsys CLK_MM_SMI_COMMON>, <&mmsys CLK_MM_SMI_COMMON>,
<&mmsys CLK_MM_SMI_GALS>, <&mmsys CLK_MM_SMI_GALS>,
<&mmsys CLK_MM_SMI_IOMMU>; <&mmsys CLK_MM_SMI_IOMMU>;
clock-names = "disp", "mdp", "smi_infra", "smi_common", clock-names = "disp", "mdp",
"smi_gals", "smi_iommu"; "subsys-smi-infra",
"subsys-smi-common",
"subsys-smi-gals",
"subsys-smi-iommu";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
@ -993,15 +998,17 @@ power-domain@MT8186_POWER_DOMAIN_VDEC {
power-domain@MT8186_POWER_DOMAIN_CAM { power-domain@MT8186_POWER_DOMAIN_CAM {
reg = <MT8186_POWER_DOMAIN_CAM>; reg = <MT8186_POWER_DOMAIN_CAM>;
clocks = <&topckgen CLK_TOP_CAM>, clocks = <&topckgen CLK_TOP_SENINF>,
<&topckgen CLK_TOP_SENINF>,
<&topckgen CLK_TOP_SENINF1>, <&topckgen CLK_TOP_SENINF1>,
<&topckgen CLK_TOP_SENINF2>, <&topckgen CLK_TOP_SENINF2>,
<&topckgen CLK_TOP_SENINF3>, <&topckgen CLK_TOP_SENINF3>,
<&camsys CLK_CAM2MM_GALS>,
<&topckgen CLK_TOP_CAMTM>, <&topckgen CLK_TOP_CAMTM>,
<&camsys CLK_CAM2MM_GALS>; <&topckgen CLK_TOP_CAM>;
clock-names = "cam-top", "cam0", "cam1", "cam2", clock-names = "cam0", "cam1", "cam2",
"cam3", "cam-tm", "gals"; "cam3", "gals",
"subsys-cam-tm",
"subsys-cam-top";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
@ -1020,9 +1027,9 @@ power-domain@MT8186_POWER_DOMAIN_CAM_RAWA {
power-domain@MT8186_POWER_DOMAIN_IMG { power-domain@MT8186_POWER_DOMAIN_IMG {
reg = <MT8186_POWER_DOMAIN_IMG>; reg = <MT8186_POWER_DOMAIN_IMG>;
clocks = <&topckgen CLK_TOP_IMG1>, clocks = <&imgsys1 CLK_IMG1_GALS_IMG1>,
<&imgsys1 CLK_IMG1_GALS_IMG1>; <&topckgen CLK_TOP_IMG1>;
clock-names = "img-top", "gals"; clock-names = "gals", "subsys-img-top";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
@ -1041,8 +1048,11 @@ power-domain@MT8186_POWER_DOMAIN_IPE {
<&ipesys CLK_IPE_LARB20>, <&ipesys CLK_IPE_LARB20>,
<&ipesys CLK_IPE_SMI_SUBCOM>, <&ipesys CLK_IPE_SMI_SUBCOM>,
<&ipesys CLK_IPE_GALS_IPE>; <&ipesys CLK_IPE_GALS_IPE>;
clock-names = "ipe-top", "ipe-larb0", "ipe-larb1", clock-names = "subsys-ipe-top",
"ipe-smi", "ipe-gals"; "subsys-ipe-larb0",
"subsys-ipe-larb1",
"subsys-ipe-smi",
"subsys-ipe-gals";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };
@ -1061,7 +1071,9 @@ power-domain@MT8186_POWER_DOMAIN_WPE {
clocks = <&topckgen CLK_TOP_WPE>, clocks = <&topckgen CLK_TOP_WPE>,
<&wpesys CLK_WPE_SMI_LARB8_CK_EN>, <&wpesys CLK_WPE_SMI_LARB8_CK_EN>,
<&wpesys CLK_WPE_SMI_LARB8_PCLK_EN>; <&wpesys CLK_WPE_SMI_LARB8_PCLK_EN>;
clock-names = "wpe0", "larb-ck", "larb-pclk"; clock-names = "wpe0",
"subsys-larb-ck",
"subsys-larb-pclk";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };
@ -1656,7 +1668,7 @@ efuse: efuse@11cb0000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
gpu_speedbin: gpu-speed-bin@59c { gpu_speedbin: gpu-speedbin@59c {
reg = <0x59c 0x4>; reg = <0x59c 0x4>;
bits = <0 3>; bits = <0 3>;
}; };

View file

@ -389,7 +389,7 @@ &i2c7 {
pinctrl-0 = <&i2c7_pins>; pinctrl-0 = <&i2c7_pins>;
pmic@34 { pmic@34 {
#interrupt-cells = <1>; #interrupt-cells = <2>;
compatible = "mediatek,mt6360"; compatible = "mediatek,mt6360";
reg = <0x34>; reg = <0x34>;
interrupt-controller; interrupt-controller;

View file

@ -627,6 +627,8 @@ power-domain@MT8195_POWER_DOMAIN_VDEC1 {
power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 { power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 {
reg = <MT8195_POWER_DOMAIN_VENC_CORE1>; reg = <MT8195_POWER_DOMAIN_VENC_CORE1>;
clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>;
clock-names = "venc1-larb";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };
@ -689,6 +691,8 @@ power-domain@MT8195_POWER_DOMAIN_VDEC2 {
power-domain@MT8195_POWER_DOMAIN_VENC { power-domain@MT8195_POWER_DOMAIN_VENC {
reg = <MT8195_POWER_DOMAIN_VENC>; reg = <MT8195_POWER_DOMAIN_VENC>;
clocks = <&vencsys CLK_VENC_LARB>;
clock-names = "venc0-larb";
mediatek,infracfg = <&infracfg_ao>; mediatek,infracfg = <&infracfg_ao>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
}; };
@ -2665,7 +2669,7 @@ larb20: larb@1b010000 {
reg = <0 0x1b010000 0 0x1000>; reg = <0 0x1b010000 0 0x1000>;
mediatek,larb-id = <20>; mediatek,larb-id = <20>;
mediatek,smi = <&smi_common_vpp>; mediatek,smi = <&smi_common_vpp>;
clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>, clocks = <&vencsys_core1 CLK_VENC_CORE1_VENC>,
<&vencsys_core1 CLK_VENC_CORE1_GALS>, <&vencsys_core1 CLK_VENC_CORE1_GALS>,
<&vppsys0 CLK_VPP0_GALS_VDO0_VDO1_VENCSYS_CORE1>; <&vppsys0 CLK_VPP0_GALS_VDO0_VDO1_VENCSYS_CORE1>;
clock-names = "apb", "smi", "gals"; clock-names = "apb", "smi", "gals";

View file

@ -86,7 +86,7 @@ simple-audio-card,cpu {
sgtl5000_clk: sgtl5000-oscillator { sgtl5000_clk: sgtl5000-oscillator {
compatible = "fixed-clock"; compatible = "fixed-clock";
#clock-cells = <0>; #clock-cells = <0>;
clock-frequency = <24576000>; clock-frequency = <24576000>;
}; };
dc_12v: dc-12v-regulator { dc_12v: dc-12v-regulator {

View file

@ -668,7 +668,7 @@ vpu_mmu: iommu@ff350800 {
vdec: video-codec@ff360000 { vdec: video-codec@ff360000 {
compatible = "rockchip,rk3328-vdec", "rockchip,rk3399-vdec"; compatible = "rockchip,rk3328-vdec", "rockchip,rk3399-vdec";
reg = <0x0 0xff360000 0x0 0x400>; reg = <0x0 0xff360000 0x0 0x480>;
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>, clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>,
<&cru SCLK_VDEC_CABAC>, <&cru SCLK_VDEC_CORE>; <&cru SCLK_VDEC_CABAC>, <&cru SCLK_VDEC_CORE>;

View file

@ -509,8 +509,7 @@ wacky_spi_audio: spi2@0 {
&pci_rootport { &pci_rootport {
mvl_wifi: wifi@0,0 { mvl_wifi: wifi@0,0 {
compatible = "pci1b4b,2b42"; compatible = "pci1b4b,2b42";
reg = <0x83010000 0x0 0x00000000 0x0 0x00100000 reg = <0x0000 0x0 0x0 0x0 0x0>;
0x83010000 0x0 0x00100000 0x0 0x00100000>;
interrupt-parent = <&gpio0>; interrupt-parent = <&gpio0>;
interrupts = <8 IRQ_TYPE_LEVEL_LOW>; interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default"; pinctrl-names = "default";

View file

@ -34,8 +34,8 @@ &mipi_panel {
&pci_rootport { &pci_rootport {
wifi@0,0 { wifi@0,0 {
compatible = "qcom,ath10k"; compatible = "qcom,ath10k";
reg = <0x00010000 0x0 0x00000000 0x0 0x00000000>, reg = <0x00000000 0x0 0x00000000 0x0 0x00000000>,
<0x03010010 0x0 0x00000000 0x0 0x00200000>; <0x03000010 0x0 0x00000000 0x0 0x00200000>;
qcom,ath10k-calibration-variant = "GO_DUMO"; qcom,ath10k-calibration-variant = "GO_DUMO";
}; };
}; };

View file

@ -489,6 +489,7 @@ pci_rootport: pcie@0,0 {
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
device_type = "pci";
}; };
}; };

View file

@ -1109,7 +1109,9 @@ power-domain@RK3399_PD_VCODEC {
power-domain@RK3399_PD_VDU { power-domain@RK3399_PD_VDU {
reg = <RK3399_PD_VDU>; reg = <RK3399_PD_VDU>;
clocks = <&cru ACLK_VDU>, clocks = <&cru ACLK_VDU>,
<&cru HCLK_VDU>; <&cru HCLK_VDU>,
<&cru SCLK_VDU_CA>,
<&cru SCLK_VDU_CORE>;
pm_qos = <&qos_video_m1_r>, pm_qos = <&qos_video_m1_r>,
<&qos_video_m1_w>; <&qos_video_m1_w>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
@ -1384,7 +1386,7 @@ vpu_mmu: iommu@ff650800 {
vdec: video-codec@ff660000 { vdec: video-codec@ff660000 {
compatible = "rockchip,rk3399-vdec"; compatible = "rockchip,rk3399-vdec";
reg = <0x0 0xff660000 0x0 0x400>; reg = <0x0 0xff660000 0x0 0x480>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>; interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>, clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>,
<&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>; <&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>;

View file

@ -977,7 +977,7 @@ pcie2x1: pcie@fe260000 {
<GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "sys", "pmc", "msi", "legacy", "err"; interrupt-names = "sys", "pmc", "msg", "legacy", "err";
bus-range = <0x0 0xf>; bus-range = <0x0 0xf>;
clocks = <&cru ACLK_PCIE20_MST>, <&cru ACLK_PCIE20_SLV>, clocks = <&cru ACLK_PCIE20_MST>, <&cru ACLK_PCIE20_SLV>,
<&cru ACLK_PCIE20_DBI>, <&cru PCLK_PCIE20>, <&cru ACLK_PCIE20_DBI>, <&cru PCLK_PCIE20>,

View file

@ -235,13 +235,13 @@ &pcie3x4 {
&pinctrl { &pinctrl {
fan { fan {
fan_int: fan-int { fan_int: fan-int {
rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
}; };
}; };
hym8563 { hym8563 {
hym8563_int: hym8563-int { hym8563_int: hym8563-int {
rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
}; };
}; };

View file

@ -38,7 +38,7 @@ button-recovery {
leds { leds {
compatible = "gpio-leds"; compatible = "gpio-leds";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 =<&leds_gpio>; pinctrl-0 = <&leds_gpio>;
led-1 { led-1 {
gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>; gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;

View file

@ -369,7 +369,7 @@ emmc_cmd: emmc-cmd {
emmc_data_strobe: emmc-data-strobe { emmc_data_strobe: emmc-data-strobe {
rockchip,pins = rockchip,pins =
/* emmc_data_strobe */ /* emmc_data_strobe */
<2 RK_PA2 1 &pcfg_pull_none>; <2 RK_PA2 1 &pcfg_pull_down>;
}; };
}; };

View file

@ -1362,7 +1362,6 @@ dfi: dfi@fe060000 {
<GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH 0>, <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH 0>,
<GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH 0>, <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH 0>,
<GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH 0>; <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH 0>;
interrupt-names = "ch0", "ch1", "ch2", "ch3";
rockchip,pmu = <&pmu1grf>; rockchip,pmu = <&pmu1grf>;
}; };

View file

@ -436,6 +436,10 @@ int kvm_vgic_v4_set_forwarding(struct kvm *kvm, int virq,
if (ret) if (ret)
goto out; goto out;
/* Silently exit if the vLPI is already mapped */
if (irq->hw)
goto out;
/* /*
* Emit the mapping request. If it fails, the ITS probably * Emit the mapping request. If it fails, the ITS probably
* isn't v4 compatible, so let's silently bail out. Holding * isn't v4 compatible, so let's silently bail out. Holding

View file

@ -83,7 +83,7 @@ endif
ifeq ($(CONFIG_RELOCATABLE),y) ifeq ($(CONFIG_RELOCATABLE),y)
KBUILD_CFLAGS_KERNEL += -fPIE KBUILD_CFLAGS_KERNEL += -fPIE
LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext $(call ld-option, --apply-dynamic-relocs)
endif endif
cflags-y += $(call cc-option, -mno-check-zero-division) cflags-y += $(call cc-option, -mno-check-zero-division)

View file

@ -32,6 +32,6 @@ static inline unsigned long efi_get_kimg_min_align(void)
#define EFI_KIMG_PREFERRED_ADDRESS PHYSADDR(VMLINUX_LOAD_ADDRESS) #define EFI_KIMG_PREFERRED_ADDRESS PHYSADDR(VMLINUX_LOAD_ADDRESS)
unsigned long kernel_entry_address(void); unsigned long kernel_entry_address(unsigned long kernel_addr);
#endif /* _ASM_LOONGARCH_EFI_H */ #endif /* _ASM_LOONGARCH_EFI_H */

View file

@ -293,7 +293,7 @@ extern const char *__elf_platform;
#define ELF_PLAT_INIT(_r, load_addr) do { \ #define ELF_PLAT_INIT(_r, load_addr) do { \
_r->regs[1] = _r->regs[2] = _r->regs[3] = _r->regs[4] = 0; \ _r->regs[1] = _r->regs[2] = _r->regs[3] = _r->regs[4] = 0; \
_r->regs[5] = _r->regs[6] = _r->regs[7] = _r->regs[8] = 0; \ _r->regs[5] = _r->regs[6] = _r->regs[7] = _r->regs[8] = 0; \
_r->regs[9] = _r->regs[10] = _r->regs[11] = _r->regs[12] = 0; \ _r->regs[9] = _r->regs[10] /* syscall n */ = _r->regs[12] = 0; \
_r->regs[13] = _r->regs[14] = _r->regs[15] = _r->regs[16] = 0; \ _r->regs[13] = _r->regs[14] = _r->regs[15] = _r->regs[16] = 0; \
_r->regs[17] = _r->regs[18] = _r->regs[19] = _r->regs[20] = 0; \ _r->regs[17] = _r->regs[18] = _r->regs[19] = _r->regs[20] = 0; \
_r->regs[21] = _r->regs[22] = _r->regs[23] = _r->regs[24] = 0; \ _r->regs[21] = _r->regs[22] = _r->regs[23] = _r->regs[24] = 0; \

View file

@ -1098,12 +1098,11 @@
static __always_inline u64 drdtime(void) static __always_inline u64 drdtime(void)
{ {
int rID = 0;
u64 val = 0; u64 val = 0;
__asm__ __volatile__( __asm__ __volatile__(
"rdtime.d %0, %1 \n\t" "rdtime.d %0, $zero\n\t"
: "=r"(val), "=r"(rID) : "=r"(val)
: :
); );
return val; return val;

View file

@ -32,7 +32,7 @@ void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,
} }
for (unwind_start(&state, task, regs); for (unwind_start(&state, task, regs);
!unwind_done(&state) && !unwind_error(&state); unwind_next_frame(&state)) { !unwind_done(&state); unwind_next_frame(&state)) {
addr = unwind_get_return_address(&state); addr = unwind_get_return_address(&state);
if (!addr || !consume_entry(cookie, addr)) if (!addr || !consume_entry(cookie, addr))
break; break;

View file

@ -28,6 +28,5 @@ bool default_next_frame(struct unwind_state *state)
} while (!get_stack_info(state->sp, state->task, info)); } while (!get_stack_info(state->sp, state->task, info));
state->error = true;
return false; return false;
} }

View file

@ -227,7 +227,7 @@ static bool next_frame(struct unwind_state *state)
} while (!get_stack_info(state->sp, state->task, info)); } while (!get_stack_info(state->sp, state->task, info));
out: out:
state->error = true; state->stack_info.type = STACK_TYPE_UNKNOWN;
return false; return false;
} }

View file

@ -480,10 +480,12 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
case 8: case 8:
move_reg(ctx, t1, src); move_reg(ctx, t1, src);
emit_insn(ctx, extwb, dst, t1); emit_insn(ctx, extwb, dst, t1);
emit_zext_32(ctx, dst, is32);
break; break;
case 16: case 16:
move_reg(ctx, t1, src); move_reg(ctx, t1, src);
emit_insn(ctx, extwh, dst, t1); emit_insn(ctx, extwh, dst, t1);
emit_zext_32(ctx, dst, is32);
break; break;
case 32: case 32:
emit_insn(ctx, addw, dst, src, LOONGARCH_GPR_ZERO); emit_insn(ctx, addw, dst, src, LOONGARCH_GPR_ZERO);
@ -772,8 +774,8 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
break; break;
case 32: case 32:
emit_insn(ctx, revb2w, dst, dst); emit_insn(ctx, revb2w, dst, dst);
/* zero-extend 32 bits into 64 bits */ /* clear the upper 32 bits */
emit_zext_32(ctx, dst, is32); emit_zext_32(ctx, dst, true);
break; break;
case 64: case 64:
emit_insn(ctx, revbd, dst, dst); emit_insn(ctx, revbd, dst, dst);
@ -911,8 +913,6 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
/* function return */ /* function return */
case BPF_JMP | BPF_EXIT: case BPF_JMP | BPF_EXIT:
emit_sext_32(ctx, regmap[BPF_REG_0], true);
if (i == ctx->prog->len - 1) if (i == ctx->prog->len - 1)
break; break;
@ -988,14 +988,8 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool ext
} }
break; break;
case BPF_DW: case BPF_DW:
if (is_signed_imm12(off)) { move_imm(ctx, t1, off, is32);
emit_insn(ctx, ldd, dst, src, off); emit_insn(ctx, ldxd, dst, src, t1);
} else if (is_signed_imm14(off)) {
emit_insn(ctx, ldptrd, dst, src, off);
} else {
move_imm(ctx, t1, off, is32);
emit_insn(ctx, ldxd, dst, src, t1);
}
break; break;
} }

View file

@ -460,6 +460,7 @@ config MACH_LOONGSON2EF
config MACH_LOONGSON64 config MACH_LOONGSON64
bool "Loongson 64-bit family of machines" bool "Loongson 64-bit family of machines"
select ARCH_DMA_DEFAULT_COHERENT
select ARCH_SPARSEMEM_ENABLE select ARCH_SPARSEMEM_ENABLE
select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_PARPORT
select ARCH_MIGHT_HAVE_PC_SERIO select ARCH_MIGHT_HAVE_PC_SERIO
@ -1251,6 +1252,7 @@ config CPU_LOONGSON64
select CPU_SUPPORTS_MSA select CPU_SUPPORTS_MSA
select CPU_DIEI_BROKEN if !LOONGSON3_ENHANCEMENT select CPU_DIEI_BROKEN if !LOONGSON3_ENHANCEMENT
select CPU_MIPSR2_IRQ_VI select CPU_MIPSR2_IRQ_VI
select DMA_NONCOHERENT
select WEAK_ORDERING select WEAK_ORDERING
select WEAK_REORDERING_BEYOND_LLSC select WEAK_REORDERING_BEYOND_LLSC
select MIPS_ASID_BITS_VARIABLE select MIPS_ASID_BITS_VARIABLE

View file

@ -130,8 +130,7 @@ gmac@3,0 {
compatible = "pci0014,7a03.0", compatible = "pci0014,7a03.0",
"pci0014,7a03", "pci0014,7a03",
"pciclass0c0320", "pciclass0c0320",
"pciclass0c03", "pciclass0c03";
"loongson, pci-gmac";
reg = <0x1800 0x0 0x0 0x0 0x0>; reg = <0x1800 0x0 0x0 0x0 0x0>;
interrupts = <12 IRQ_TYPE_LEVEL_LOW>, interrupts = <12 IRQ_TYPE_LEVEL_LOW>,

View file

@ -193,8 +193,7 @@ gmac@3,0 {
compatible = "pci0014,7a03.0", compatible = "pci0014,7a03.0",
"pci0014,7a03", "pci0014,7a03",
"pciclass020000", "pciclass020000",
"pciclass0200", "pciclass0200";
"loongson, pci-gmac";
reg = <0x1800 0x0 0x0 0x0 0x0>; reg = <0x1800 0x0 0x0 0x0 0x0>;
interrupts = <12 IRQ_TYPE_LEVEL_HIGH>, interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,

View file

@ -14,7 +14,11 @@
#define ADAPTER_ROM 8 #define ADAPTER_ROM 8
#define ACPI_TABLE 9 #define ACPI_TABLE 9
#define SMBIOS_TABLE 10 #define SMBIOS_TABLE 10
#define MAX_MEMORY_TYPE 11 #define UMA_VIDEO_RAM 11
#define VUMA_VIDEO_RAM 12
#define MAX_MEMORY_TYPE 13
#define MEM_SIZE_IS_IN_BYTES (1 << 31)
#define LOONGSON3_BOOT_MEM_MAP_MAX 128 #define LOONGSON3_BOOT_MEM_MAP_MAX 128
struct efi_memory_map_loongson { struct efi_memory_map_loongson {
@ -117,7 +121,8 @@ struct irq_source_routing_table {
u64 pci_io_start_addr; u64 pci_io_start_addr;
u64 pci_io_end_addr; u64 pci_io_end_addr;
u64 pci_config_addr; u64 pci_config_addr;
u32 dma_mask_bits; u16 dma_mask_bits;
u16 dma_noncoherent;
} __packed; } __packed;
struct interface_info { struct interface_info {

View file

@ -121,6 +121,19 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
/* Put the stack after the struct pt_regs. */ /* Put the stack after the struct pt_regs. */
childksp = (unsigned long) childregs; childksp = (unsigned long) childregs;
p->thread.cp0_status = (read_c0_status() & ~(ST0_CU2|ST0_CU1)) | ST0_KERNEL_CUMASK; p->thread.cp0_status = (read_c0_status() & ~(ST0_CU2|ST0_CU1)) | ST0_KERNEL_CUMASK;
/*
* New tasks lose permission to use the fpu. This accelerates context
* switching for most programs since they don't use the fpu.
*/
clear_tsk_thread_flag(p, TIF_USEDFPU);
clear_tsk_thread_flag(p, TIF_USEDMSA);
clear_tsk_thread_flag(p, TIF_MSA_CTX_LIVE);
#ifdef CONFIG_MIPS_MT_FPAFF
clear_tsk_thread_flag(p, TIF_FPUBOUND);
#endif /* CONFIG_MIPS_MT_FPAFF */
if (unlikely(args->fn)) { if (unlikely(args->fn)) {
/* kernel thread */ /* kernel thread */
unsigned long status = p->thread.cp0_status; unsigned long status = p->thread.cp0_status;
@ -149,20 +162,8 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)
p->thread.reg29 = (unsigned long) childregs; p->thread.reg29 = (unsigned long) childregs;
p->thread.reg31 = (unsigned long) ret_from_fork; p->thread.reg31 = (unsigned long) ret_from_fork;
/*
* New tasks lose permission to use the fpu. This accelerates context
* switching for most programs since they don't use the fpu.
*/
childregs->cp0_status &= ~(ST0_CU2|ST0_CU1); childregs->cp0_status &= ~(ST0_CU2|ST0_CU1);
clear_tsk_thread_flag(p, TIF_USEDFPU);
clear_tsk_thread_flag(p, TIF_USEDMSA);
clear_tsk_thread_flag(p, TIF_MSA_CTX_LIVE);
#ifdef CONFIG_MIPS_MT_FPAFF
clear_tsk_thread_flag(p, TIF_FPUBOUND);
#endif /* CONFIG_MIPS_MT_FPAFF */
#ifdef CONFIG_MIPS_FP_SUPPORT #ifdef CONFIG_MIPS_FP_SUPPORT
atomic_set(&p->thread.bd_emu_frame, BD_EMUFRAME_NONE); atomic_set(&p->thread.bd_emu_frame, BD_EMUFRAME_NONE);
#endif #endif

View file

@ -351,10 +351,11 @@ early_initcall(mips_smp_ipi_init);
*/ */
asmlinkage void start_secondary(void) asmlinkage void start_secondary(void)
{ {
unsigned int cpu; unsigned int cpu = raw_smp_processor_id();
cpu_probe(); cpu_probe();
per_cpu_trap_init(false); per_cpu_trap_init(false);
rcutree_report_cpu_starting(cpu);
mips_clockevent_init(); mips_clockevent_init();
mp_ops->init_secondary(); mp_ops->init_secondary();
cpu_report(); cpu_report();
@ -366,7 +367,6 @@ asmlinkage void start_secondary(void)
*/ */
calibrate_delay(); calibrate_delay();
cpu = smp_processor_id();
cpu_data[cpu].udelay_val = loops_per_jiffy; cpu_data[cpu].udelay_val = loops_per_jiffy;
set_cpu_sibling_map(cpu); set_cpu_sibling_map(cpu);

View file

@ -13,6 +13,8 @@
* Copyright (C) 2009 Lemote Inc. * Copyright (C) 2009 Lemote Inc.
* Author: Wu Zhangjin, wuzhangjin@gmail.com * Author: Wu Zhangjin, wuzhangjin@gmail.com
*/ */
#include <linux/dma-map-ops.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/pci_ids.h> #include <linux/pci_ids.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
@ -147,8 +149,14 @@ void __init prom_lefi_init_env(void)
loongson_sysconf.dma_mask_bits = eirq_source->dma_mask_bits; loongson_sysconf.dma_mask_bits = eirq_source->dma_mask_bits;
if (loongson_sysconf.dma_mask_bits < 32 || if (loongson_sysconf.dma_mask_bits < 32 ||
loongson_sysconf.dma_mask_bits > 64) loongson_sysconf.dma_mask_bits > 64) {
loongson_sysconf.dma_mask_bits = 32; loongson_sysconf.dma_mask_bits = 32;
dma_default_coherent = true;
} else {
dma_default_coherent = !eirq_source->dma_noncoherent;
}
pr_info("Firmware: Coherent DMA: %s\n", dma_default_coherent ? "on" : "off");
loongson_sysconf.restart_addr = boot_p->reset_system.ResetWarm; loongson_sysconf.restart_addr = boot_p->reset_system.ResetWarm;
loongson_sysconf.poweroff_addr = boot_p->reset_system.Shutdown; loongson_sysconf.poweroff_addr = boot_p->reset_system.Shutdown;

View file

@ -49,8 +49,7 @@ void virtual_early_config(void)
void __init szmem(unsigned int node) void __init szmem(unsigned int node)
{ {
u32 i, mem_type; u32 i, mem_type;
static unsigned long num_physpages; phys_addr_t node_id, mem_start, mem_size;
u64 node_id, node_psize, start_pfn, end_pfn, mem_start, mem_size;
/* Otherwise come from DTB */ /* Otherwise come from DTB */
if (loongson_sysconf.fw_interface != LOONGSON_LEFI) if (loongson_sysconf.fw_interface != LOONGSON_LEFI)
@ -64,30 +63,46 @@ void __init szmem(unsigned int node)
mem_type = loongson_memmap->map[i].mem_type; mem_type = loongson_memmap->map[i].mem_type;
mem_size = loongson_memmap->map[i].mem_size; mem_size = loongson_memmap->map[i].mem_size;
mem_start = loongson_memmap->map[i].mem_start;
/* Memory size comes in MB if MEM_SIZE_IS_IN_BYTES not set */
if (mem_size & MEM_SIZE_IS_IN_BYTES)
mem_size &= ~MEM_SIZE_IS_IN_BYTES;
else
mem_size = mem_size << 20;
mem_start = (node_id << 44) | loongson_memmap->map[i].mem_start;
switch (mem_type) { switch (mem_type) {
case SYSTEM_RAM_LOW: case SYSTEM_RAM_LOW:
case SYSTEM_RAM_HIGH: case SYSTEM_RAM_HIGH:
start_pfn = ((node_id << 44) + mem_start) >> PAGE_SHIFT; case UMA_VIDEO_RAM:
node_psize = (mem_size << 20) >> PAGE_SHIFT; pr_info("Node %d, mem_type:%d\t[%pa], %pa bytes usable\n",
end_pfn = start_pfn + node_psize; (u32)node_id, mem_type, &mem_start, &mem_size);
num_physpages += node_psize; memblock_add_node(mem_start, mem_size, node,
pr_info("Node%d: mem_type:%d, mem_start:0x%llx, mem_size:0x%llx MB\n",
(u32)node_id, mem_type, mem_start, mem_size);
pr_info(" start_pfn:0x%llx, end_pfn:0x%llx, num_physpages:0x%lx\n",
start_pfn, end_pfn, num_physpages);
memblock_add_node(PFN_PHYS(start_pfn),
PFN_PHYS(node_psize), node,
MEMBLOCK_NONE); MEMBLOCK_NONE);
break; break;
case SYSTEM_RAM_RESERVED: case SYSTEM_RAM_RESERVED:
pr_info("Node%d: mem_type:%d, mem_start:0x%llx, mem_size:0x%llx MB\n", case VIDEO_ROM:
(u32)node_id, mem_type, mem_start, mem_size); case ADAPTER_ROM:
memblock_reserve(((node_id << 44) + mem_start), mem_size << 20); case ACPI_TABLE:
case SMBIOS_TABLE:
pr_info("Node %d, mem_type:%d\t[%pa], %pa bytes reserved\n",
(u32)node_id, mem_type, &mem_start, &mem_size);
memblock_reserve(mem_start, mem_size);
break;
/* We should not reserve VUMA_VIDEO_RAM as it overlaps with MMIO */
case VUMA_VIDEO_RAM:
default:
pr_info("Node %d, mem_type:%d\t[%pa], %pa bytes unhandled\n",
(u32)node_id, mem_type, &mem_start, &mem_size);
break; break;
} }
} }
/* Reserve vgabios if it comes from firmware */
if (loongson_sysconf.vgabios_addr)
memblock_reserve(virt_to_phys((void *)loongson_sysconf.vgabios_addr),
SZ_256K);
} }
#ifndef CONFIG_NUMA #ifndef CONFIG_NUMA

View file

@ -62,7 +62,7 @@
.endif .endif
/* Save previous stack pointer (r1) */ /* Save previous stack pointer (r1) */
addi r8, r1, SWITCH_FRAME_SIZE addi r8, r1, SWITCH_FRAME_SIZE+STACK_FRAME_MIN_SIZE
PPC_STL r8, GPR1(r1) PPC_STL r8, GPR1(r1)
.if \allregs == 1 .if \allregs == 1
@ -182,7 +182,7 @@ ftrace_no_trace:
mflr r3 mflr r3
mtctr r3 mtctr r3
REST_GPR(3, r1) REST_GPR(3, r1)
addi r1, r1, SWITCH_FRAME_SIZE addi r1, r1, SWITCH_FRAME_SIZE+STACK_FRAME_MIN_SIZE
mtlr r0 mtlr r0
bctr bctr
#endif #endif

View file

@ -8,9 +8,6 @@
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
/* Clock frequency (in Hz) of the rtcclk */
#define RTCCLK_FREQ 1000000
/ { / {
model = "Microchip PolarFire-SoC Icicle Kit"; model = "Microchip PolarFire-SoC Icicle Kit";
compatible = "microchip,mpfs-icicle-reference-rtlv2210", "microchip,mpfs-icicle-kit", compatible = "microchip,mpfs-icicle-reference-rtlv2210", "microchip,mpfs-icicle-kit",
@ -29,10 +26,6 @@ chosen {
stdout-path = "serial1:115200n8"; stdout-path = "serial1:115200n8";
}; };
cpus {
timebase-frequency = <RTCCLK_FREQ>;
};
leds { leds {
compatible = "gpio-leds"; compatible = "gpio-leds";

View file

@ -10,9 +10,6 @@
#include "mpfs.dtsi" #include "mpfs.dtsi"
#include "mpfs-m100pfs-fabric.dtsi" #include "mpfs-m100pfs-fabric.dtsi"
/* Clock frequency (in Hz) of the rtcclk */
#define MTIMER_FREQ 1000000
/ { / {
model = "Aries Embedded M100PFEVPS"; model = "Aries Embedded M100PFEVPS";
compatible = "aries,m100pfsevp", "microchip,mpfs"; compatible = "aries,m100pfsevp", "microchip,mpfs";
@ -33,10 +30,6 @@ chosen {
stdout-path = "serial1:115200n8"; stdout-path = "serial1:115200n8";
}; };
cpus {
timebase-frequency = <MTIMER_FREQ>;
};
ddrc_cache_lo: memory@80000000 { ddrc_cache_lo: memory@80000000 {
device_type = "memory"; device_type = "memory";
reg = <0x0 0x80000000 0x0 0x40000000>; reg = <0x0 0x80000000 0x0 0x40000000>;

View file

@ -6,9 +6,6 @@
#include "mpfs.dtsi" #include "mpfs.dtsi"
#include "mpfs-polarberry-fabric.dtsi" #include "mpfs-polarberry-fabric.dtsi"
/* Clock frequency (in Hz) of the rtcclk */
#define MTIMER_FREQ 1000000
/ { / {
model = "Sundance PolarBerry"; model = "Sundance PolarBerry";
compatible = "sundance,polarberry", "microchip,mpfs"; compatible = "sundance,polarberry", "microchip,mpfs";
@ -22,10 +19,6 @@ chosen {
stdout-path = "serial0:115200n8"; stdout-path = "serial0:115200n8";
}; };
cpus {
timebase-frequency = <MTIMER_FREQ>;
};
ddrc_cache_lo: memory@80000000 { ddrc_cache_lo: memory@80000000 {
device_type = "memory"; device_type = "memory";
reg = <0x0 0x80000000 0x0 0x2e000000>; reg = <0x0 0x80000000 0x0 0x2e000000>;

View file

@ -6,9 +6,6 @@
#include "mpfs.dtsi" #include "mpfs.dtsi"
#include "mpfs-sev-kit-fabric.dtsi" #include "mpfs-sev-kit-fabric.dtsi"
/* Clock frequency (in Hz) of the rtcclk */
#define MTIMER_FREQ 1000000
/ { / {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
@ -28,10 +25,6 @@ chosen {
stdout-path = "serial1:115200n8"; stdout-path = "serial1:115200n8";
}; };
cpus {
timebase-frequency = <MTIMER_FREQ>;
};
reserved-memory { reserved-memory {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;

View file

@ -11,9 +11,6 @@
#include "mpfs.dtsi" #include "mpfs.dtsi"
#include "mpfs-tysom-m-fabric.dtsi" #include "mpfs-tysom-m-fabric.dtsi"
/* Clock frequency (in Hz) of the rtcclk */
#define MTIMER_FREQ 1000000
/ { / {
model = "Aldec TySOM-M-MPFS250T-REV2"; model = "Aldec TySOM-M-MPFS250T-REV2";
compatible = "aldec,tysom-m-mpfs250t-rev2", "microchip,mpfs"; compatible = "aldec,tysom-m-mpfs250t-rev2", "microchip,mpfs";
@ -34,10 +31,6 @@ chosen {
stdout-path = "serial1:115200n8"; stdout-path = "serial1:115200n8";
}; };
cpus {
timebase-frequency = <MTIMER_FREQ>;
};
ddrc_cache_lo: memory@80000000 { ddrc_cache_lo: memory@80000000 {
device_type = "memory"; device_type = "memory";
reg = <0x0 0x80000000 0x0 0x30000000>; reg = <0x0 0x80000000 0x0 0x30000000>;

View file

@ -13,6 +13,7 @@ / {
cpus { cpus {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
timebase-frequency = <1000000>;
cpu0: cpu@0 { cpu0: cpu@0 {
compatible = "sifive,e51", "sifive,rocket0", "riscv"; compatible = "sifive,e51", "sifive,rocket0", "riscv";

View file

@ -34,7 +34,6 @@ cpu0: cpu@0 {
cpu0_intc: interrupt-controller { cpu0_intc: interrupt-controller {
compatible = "riscv,cpu-intc"; compatible = "riscv,cpu-intc";
interrupt-controller; interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <1>; #interrupt-cells = <1>;
}; };
}; };

View file

@ -38,29 +38,35 @@ static long ax45mp_iocp_sw_workaround(void)
return ret.error ? 0 : ret.value; return ret.error ? 0 : ret.value;
} }
static bool errata_probe_iocp(unsigned int stage, unsigned long arch_id, unsigned long impid) static void errata_probe_iocp(unsigned int stage, unsigned long arch_id, unsigned long impid)
{ {
static bool done;
if (!IS_ENABLED(CONFIG_ERRATA_ANDES_CMO)) if (!IS_ENABLED(CONFIG_ERRATA_ANDES_CMO))
return false; return;
if (done)
return;
done = true;
if (arch_id != ANDESTECH_AX45MP_MARCHID || impid != ANDESTECH_AX45MP_MIMPID) if (arch_id != ANDESTECH_AX45MP_MARCHID || impid != ANDESTECH_AX45MP_MIMPID)
return false; return;
if (!ax45mp_iocp_sw_workaround()) if (!ax45mp_iocp_sw_workaround())
return false; return;
/* Set this just to make core cbo code happy */ /* Set this just to make core cbo code happy */
riscv_cbom_block_size = 1; riscv_cbom_block_size = 1;
riscv_noncoherent_supported(); riscv_noncoherent_supported();
return true;
} }
void __init_or_module andes_errata_patch_func(struct alt_entry *begin, struct alt_entry *end, void __init_or_module andes_errata_patch_func(struct alt_entry *begin, struct alt_entry *end,
unsigned long archid, unsigned long impid, unsigned long archid, unsigned long impid,
unsigned int stage) unsigned int stage)
{ {
errata_probe_iocp(stage, archid, impid); if (stage == RISCV_ALTERNATIVES_BOOT)
errata_probe_iocp(stage, archid, impid);
/* we have nothing to patch here ATM so just return back */ /* we have nothing to patch here ATM so just return back */
} }

View file

@ -154,7 +154,6 @@ secondary_start_sbi:
XIP_FIXUP_OFFSET a3 XIP_FIXUP_OFFSET a3
add a3, a3, a1 add a3, a3, a1
REG_L sp, (a3) REG_L sp, (a3)
scs_load_current
.Lsecondary_start_common: .Lsecondary_start_common:
@ -165,6 +164,7 @@ secondary_start_sbi:
call relocate_enable_mmu call relocate_enable_mmu
#endif #endif
call .Lsetup_trap_vector call .Lsetup_trap_vector
scs_load_current
tail smp_callin tail smp_callin
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */

View file

@ -40,15 +40,6 @@ struct relocation_handlers {
long buffer); long buffer);
}; };
unsigned int initialize_relocation_hashtable(unsigned int num_relocations);
void process_accumulated_relocations(struct module *me);
int add_relocation_to_accumulate(struct module *me, int type, void *location,
unsigned int hashtable_bits, Elf_Addr v);
struct hlist_head *relocation_hashtable;
struct list_head used_buckets_list;
/* /*
* The auipc+jalr instruction pair can reach any PC-relative offset * The auipc+jalr instruction pair can reach any PC-relative offset
* in the range [-2^31 - 2^11, 2^31 - 2^11) * in the range [-2^31 - 2^11, 2^31 - 2^11)
@ -64,7 +55,7 @@ static bool riscv_insn_valid_32bit_offset(ptrdiff_t val)
static int riscv_insn_rmw(void *location, u32 keep, u32 set) static int riscv_insn_rmw(void *location, u32 keep, u32 set)
{ {
u16 *parcel = location; __le16 *parcel = location;
u32 insn = (u32)le16_to_cpu(parcel[0]) | (u32)le16_to_cpu(parcel[1]) << 16; u32 insn = (u32)le16_to_cpu(parcel[0]) | (u32)le16_to_cpu(parcel[1]) << 16;
insn &= keep; insn &= keep;
@ -77,7 +68,7 @@ static int riscv_insn_rmw(void *location, u32 keep, u32 set)
static int riscv_insn_rvc_rmw(void *location, u16 keep, u16 set) static int riscv_insn_rvc_rmw(void *location, u16 keep, u16 set)
{ {
u16 *parcel = location; __le16 *parcel = location;
u16 insn = le16_to_cpu(*parcel); u16 insn = le16_to_cpu(*parcel);
insn &= keep; insn &= keep;
@ -604,7 +595,10 @@ static const struct relocation_handlers reloc_handlers[] = {
/* 192-255 nonstandard ABI extensions */ /* 192-255 nonstandard ABI extensions */
}; };
void process_accumulated_relocations(struct module *me) static void
process_accumulated_relocations(struct module *me,
struct hlist_head **relocation_hashtable,
struct list_head *used_buckets_list)
{ {
/* /*
* Only ADD/SUB/SET/ULEB128 should end up here. * Only ADD/SUB/SET/ULEB128 should end up here.
@ -624,18 +618,25 @@ void process_accumulated_relocations(struct module *me)
* - Each relocation entry for a location address * - Each relocation entry for a location address
*/ */
struct used_bucket *bucket_iter; struct used_bucket *bucket_iter;
struct used_bucket *bucket_iter_tmp;
struct relocation_head *rel_head_iter; struct relocation_head *rel_head_iter;
struct hlist_node *rel_head_iter_tmp;
struct relocation_entry *rel_entry_iter; struct relocation_entry *rel_entry_iter;
struct relocation_entry *rel_entry_iter_tmp;
int curr_type; int curr_type;
void *location; void *location;
long buffer; long buffer;
list_for_each_entry(bucket_iter, &used_buckets_list, head) { list_for_each_entry_safe(bucket_iter, bucket_iter_tmp,
hlist_for_each_entry(rel_head_iter, bucket_iter->bucket, node) { used_buckets_list, head) {
hlist_for_each_entry_safe(rel_head_iter, rel_head_iter_tmp,
bucket_iter->bucket, node) {
buffer = 0; buffer = 0;
location = rel_head_iter->location; location = rel_head_iter->location;
list_for_each_entry(rel_entry_iter, list_for_each_entry_safe(rel_entry_iter,
rel_head_iter->rel_entry, head) { rel_entry_iter_tmp,
rel_head_iter->rel_entry,
head) {
curr_type = rel_entry_iter->type; curr_type = rel_entry_iter->type;
reloc_handlers[curr_type].reloc_handler( reloc_handlers[curr_type].reloc_handler(
me, &buffer, rel_entry_iter->value); me, &buffer, rel_entry_iter->value);
@ -648,11 +649,14 @@ void process_accumulated_relocations(struct module *me)
kfree(bucket_iter); kfree(bucket_iter);
} }
kfree(relocation_hashtable); kfree(*relocation_hashtable);
} }
int add_relocation_to_accumulate(struct module *me, int type, void *location, static int add_relocation_to_accumulate(struct module *me, int type,
unsigned int hashtable_bits, Elf_Addr v) void *location,
unsigned int hashtable_bits, Elf_Addr v,
struct hlist_head *relocation_hashtable,
struct list_head *used_buckets_list)
{ {
struct relocation_entry *entry; struct relocation_entry *entry;
struct relocation_head *rel_head; struct relocation_head *rel_head;
@ -661,6 +665,10 @@ int add_relocation_to_accumulate(struct module *me, int type, void *location,
unsigned long hash; unsigned long hash;
entry = kmalloc(sizeof(*entry), GFP_KERNEL); entry = kmalloc(sizeof(*entry), GFP_KERNEL);
if (!entry)
return -ENOMEM;
INIT_LIST_HEAD(&entry->head); INIT_LIST_HEAD(&entry->head);
entry->type = type; entry->type = type;
entry->value = v; entry->value = v;
@ -669,7 +677,10 @@ int add_relocation_to_accumulate(struct module *me, int type, void *location,
current_head = &relocation_hashtable[hash]; current_head = &relocation_hashtable[hash];
/* Find matching location (if any) */ /*
* Search for the relocation_head for the relocations that happen at the
* provided location
*/
bool found = false; bool found = false;
struct relocation_head *rel_head_iter; struct relocation_head *rel_head_iter;
@ -681,19 +692,45 @@ int add_relocation_to_accumulate(struct module *me, int type, void *location,
} }
} }
/*
* If there has not yet been any relocations at the provided location,
* create a relocation_head for that location and populate it with this
* relocation_entry.
*/
if (!found) { if (!found) {
rel_head = kmalloc(sizeof(*rel_head), GFP_KERNEL); rel_head = kmalloc(sizeof(*rel_head), GFP_KERNEL);
if (!rel_head) {
kfree(entry);
return -ENOMEM;
}
rel_head->rel_entry = rel_head->rel_entry =
kmalloc(sizeof(struct list_head), GFP_KERNEL); kmalloc(sizeof(struct list_head), GFP_KERNEL);
if (!rel_head->rel_entry) {
kfree(entry);
kfree(rel_head);
return -ENOMEM;
}
INIT_LIST_HEAD(rel_head->rel_entry); INIT_LIST_HEAD(rel_head->rel_entry);
rel_head->location = location; rel_head->location = location;
INIT_HLIST_NODE(&rel_head->node); INIT_HLIST_NODE(&rel_head->node);
if (!current_head->first) { if (!current_head->first) {
bucket = bucket =
kmalloc(sizeof(struct used_bucket), GFP_KERNEL); kmalloc(sizeof(struct used_bucket), GFP_KERNEL);
if (!bucket) {
kfree(entry);
kfree(rel_head);
kfree(rel_head->rel_entry);
return -ENOMEM;
}
INIT_LIST_HEAD(&bucket->head); INIT_LIST_HEAD(&bucket->head);
bucket->bucket = current_head; bucket->bucket = current_head;
list_add(&bucket->head, &used_buckets_list); list_add(&bucket->head, used_buckets_list);
} }
hlist_add_head(&rel_head->node, current_head); hlist_add_head(&rel_head->node, current_head);
} }
@ -704,7 +741,9 @@ int add_relocation_to_accumulate(struct module *me, int type, void *location,
return 0; return 0;
} }
unsigned int initialize_relocation_hashtable(unsigned int num_relocations) static unsigned int
initialize_relocation_hashtable(unsigned int num_relocations,
struct hlist_head **relocation_hashtable)
{ {
/* Can safely assume that bits is not greater than sizeof(long) */ /* Can safely assume that bits is not greater than sizeof(long) */
unsigned long hashtable_size = roundup_pow_of_two(num_relocations); unsigned long hashtable_size = roundup_pow_of_two(num_relocations);
@ -720,12 +759,13 @@ unsigned int initialize_relocation_hashtable(unsigned int num_relocations)
hashtable_size <<= should_double_size; hashtable_size <<= should_double_size;
relocation_hashtable = kmalloc_array(hashtable_size, *relocation_hashtable = kmalloc_array(hashtable_size,
sizeof(*relocation_hashtable), sizeof(*relocation_hashtable),
GFP_KERNEL); GFP_KERNEL);
__hash_init(relocation_hashtable, hashtable_size); if (!*relocation_hashtable)
return -ENOMEM;
INIT_LIST_HEAD(&used_buckets_list); __hash_init(*relocation_hashtable, hashtable_size);
return hashtable_bits; return hashtable_bits;
} }
@ -742,7 +782,17 @@ int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab,
Elf_Addr v; Elf_Addr v;
int res; int res;
unsigned int num_relocations = sechdrs[relsec].sh_size / sizeof(*rel); unsigned int num_relocations = sechdrs[relsec].sh_size / sizeof(*rel);
unsigned int hashtable_bits = initialize_relocation_hashtable(num_relocations); struct hlist_head *relocation_hashtable;
struct list_head used_buckets_list;
unsigned int hashtable_bits;
hashtable_bits = initialize_relocation_hashtable(num_relocations,
&relocation_hashtable);
if (hashtable_bits < 0)
return hashtable_bits;
INIT_LIST_HEAD(&used_buckets_list);
pr_debug("Applying relocate section %u to %u\n", relsec, pr_debug("Applying relocate section %u to %u\n", relsec,
sechdrs[relsec].sh_info); sechdrs[relsec].sh_info);
@ -823,14 +873,18 @@ int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab,
} }
if (reloc_handlers[type].accumulate_handler) if (reloc_handlers[type].accumulate_handler)
res = add_relocation_to_accumulate(me, type, location, hashtable_bits, v); res = add_relocation_to_accumulate(me, type, location,
hashtable_bits, v,
relocation_hashtable,
&used_buckets_list);
else else
res = handler(me, location, v); res = handler(me, location, v);
if (res) if (res)
return res; return res;
} }
process_accumulated_relocations(me); process_accumulated_relocations(me, &relocation_hashtable,
&used_buckets_list);
return 0; return 0;
} }

View file

@ -169,7 +169,7 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair,
pair->value &= ~missing; pair->value &= ~missing;
} }
static bool hwprobe_ext0_has(const struct cpumask *cpus, unsigned long ext) static bool hwprobe_ext0_has(const struct cpumask *cpus, u64 ext)
{ {
struct riscv_hwprobe pair; struct riscv_hwprobe pair;

View file

@ -6,13 +6,13 @@
.text .text
.global test_uleb_basic .global test_uleb_basic
test_uleb_basic: test_uleb_basic:
ld a0, second lw a0, second
addi a0, a0, -127 addi a0, a0, -127
ret ret
.global test_uleb_large .global test_uleb_large
test_uleb_large: test_uleb_large:
ld a0, fourth lw a0, fourth
addi a0, a0, -0x07e8 addi a0, a0, -0x07e8
ret ret
@ -22,10 +22,10 @@ first:
second: second:
.reloc second, R_RISCV_SET_ULEB128, second .reloc second, R_RISCV_SET_ULEB128, second
.reloc second, R_RISCV_SUB_ULEB128, first .reloc second, R_RISCV_SUB_ULEB128, first
.dword 0 .word 0
third: third:
.space 1000 .space 1000
fourth: fourth:
.reloc fourth, R_RISCV_SET_ULEB128, fourth .reloc fourth, R_RISCV_SET_ULEB128, fourth
.reloc fourth, R_RISCV_SUB_ULEB128, third .reloc fourth, R_RISCV_SUB_ULEB128, third
.dword 0 .word 0

View file

@ -550,16 +550,14 @@ int handle_misaligned_store(struct pt_regs *regs)
} else if ((insn & INSN_MASK_C_SD) == INSN_MATCH_C_SD) { } else if ((insn & INSN_MASK_C_SD) == INSN_MATCH_C_SD) {
len = 8; len = 8;
val.data_ulong = GET_RS2S(insn, regs); val.data_ulong = GET_RS2S(insn, regs);
} else if ((insn & INSN_MASK_C_SDSP) == INSN_MATCH_C_SDSP && } else if ((insn & INSN_MASK_C_SDSP) == INSN_MATCH_C_SDSP) {
((insn >> SH_RD) & 0x1f)) {
len = 8; len = 8;
val.data_ulong = GET_RS2C(insn, regs); val.data_ulong = GET_RS2C(insn, regs);
#endif #endif
} else if ((insn & INSN_MASK_C_SW) == INSN_MATCH_C_SW) { } else if ((insn & INSN_MASK_C_SW) == INSN_MATCH_C_SW) {
len = 4; len = 4;
val.data_ulong = GET_RS2S(insn, regs); val.data_ulong = GET_RS2S(insn, regs);
} else if ((insn & INSN_MASK_C_SWSP) == INSN_MATCH_C_SWSP && } else if ((insn & INSN_MASK_C_SWSP) == INSN_MATCH_C_SWSP) {
((insn >> SH_RD) & 0x1f)) {
len = 4; len = 4;
val.data_ulong = GET_RS2C(insn, regs); val.data_ulong = GET_RS2C(insn, regs);
} else if ((insn & INSN_MASK_C_FSD) == INSN_MATCH_C_FSD) { } else if ((insn & INSN_MASK_C_FSD) == INSN_MATCH_C_FSD) {

View file

@ -587,10 +587,6 @@ void kvm_s390_vsie_gmap_notifier(struct gmap *gmap, unsigned long start,
if (!gmap_is_shadow(gmap)) if (!gmap_is_shadow(gmap))
return; return;
if (start >= 1UL << 31)
/* We are only interested in prefix pages */
return;
/* /*
* Only new shadow blocks are added to the list during runtime, * Only new shadow blocks are added to the list during runtime,
* therefore we can safely reference them all the time. * therefore we can safely reference them all the time.

View file

@ -756,7 +756,7 @@ void ptep_zap_unused(struct mm_struct *mm, unsigned long addr,
pte_clear(mm, addr, ptep); pte_clear(mm, addr, ptep);
} }
if (reset) if (reset)
pgste_val(pgste) &= ~_PGSTE_GPS_USAGE_MASK; pgste_val(pgste) &= ~(_PGSTE_GPS_USAGE_MASK | _PGSTE_GPS_NODAT);
pgste_set_unlock(ptep, pgste); pgste_set_unlock(ptep, pgste);
preempt_enable(); preempt_enable();
} }

View file

@ -1320,6 +1320,9 @@ static void zenbleed_check_cpu(void *unused)
void amd_check_microcode(void) void amd_check_microcode(void)
{ {
if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
return;
on_each_cpu(zenbleed_check_cpu, NULL, 1); on_each_cpu(zenbleed_check_cpu, NULL, 1);
} }

View file

@ -1234,10 +1234,6 @@ void setup_ghcb(void)
if (!cc_platform_has(CC_ATTR_GUEST_STATE_ENCRYPT)) if (!cc_platform_has(CC_ATTR_GUEST_STATE_ENCRYPT))
return; return;
/* First make sure the hypervisor talks a supported protocol. */
if (!sev_es_negotiate_protocol())
sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ);
/* /*
* Check whether the runtime #VC exception handler is active. It uses * Check whether the runtime #VC exception handler is active. It uses
* the per-CPU GHCB page which is set up by sev_es_init_vc_handling(). * the per-CPU GHCB page which is set up by sev_es_init_vc_handling().
@ -1254,6 +1250,13 @@ void setup_ghcb(void)
return; return;
} }
/*
* Make sure the hypervisor talks a supported protocol.
* This gets called only in the BSP boot phase.
*/
if (!sev_es_negotiate_protocol())
sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ);
/* /*
* Clear the boot_ghcb. The first exception comes in before the bss * Clear the boot_ghcb. The first exception comes in before the bss
* section is cleared. * section is cleared.

View file

@ -182,6 +182,7 @@ static int kvm_mmu_rmaps_stat_release(struct inode *inode, struct file *file)
} }
static const struct file_operations mmu_rmaps_stat_fops = { static const struct file_operations mmu_rmaps_stat_fops = {
.owner = THIS_MODULE,
.open = kvm_mmu_rmaps_stat_open, .open = kvm_mmu_rmaps_stat_open,
.read = seq_read, .read = seq_read,
.llseek = seq_lseek, .llseek = seq_lseek,

View file

@ -1855,15 +1855,17 @@ void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
bool old_paging = is_paging(vcpu); bool old_paging = is_paging(vcpu);
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
if (vcpu->arch.efer & EFER_LME && !vcpu->arch.guest_state_protected) { if (vcpu->arch.efer & EFER_LME) {
if (!is_paging(vcpu) && (cr0 & X86_CR0_PG)) { if (!is_paging(vcpu) && (cr0 & X86_CR0_PG)) {
vcpu->arch.efer |= EFER_LMA; vcpu->arch.efer |= EFER_LMA;
svm->vmcb->save.efer |= EFER_LMA | EFER_LME; if (!vcpu->arch.guest_state_protected)
svm->vmcb->save.efer |= EFER_LMA | EFER_LME;
} }
if (is_paging(vcpu) && !(cr0 & X86_CR0_PG)) { if (is_paging(vcpu) && !(cr0 & X86_CR0_PG)) {
vcpu->arch.efer &= ~EFER_LMA; vcpu->arch.efer &= ~EFER_LMA;
svm->vmcb->save.efer &= ~(EFER_LMA | EFER_LME); if (!vcpu->arch.guest_state_protected)
svm->vmcb->save.efer &= ~(EFER_LMA | EFER_LME);
} }
} }
#endif #endif

View file

@ -5518,8 +5518,8 @@ static void kvm_vcpu_ioctl_x86_get_xsave2(struct kvm_vcpu *vcpu,
static void kvm_vcpu_ioctl_x86_get_xsave(struct kvm_vcpu *vcpu, static void kvm_vcpu_ioctl_x86_get_xsave(struct kvm_vcpu *vcpu,
struct kvm_xsave *guest_xsave) struct kvm_xsave *guest_xsave)
{ {
return kvm_vcpu_ioctl_x86_get_xsave2(vcpu, (void *)guest_xsave->region, kvm_vcpu_ioctl_x86_get_xsave2(vcpu, (void *)guest_xsave->region,
sizeof(guest_xsave->region)); sizeof(guest_xsave->region));
} }
static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu, static int kvm_vcpu_ioctl_x86_set_xsave(struct kvm_vcpu *vcpu,
@ -13031,7 +13031,10 @@ bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu)
if (vcpu->arch.guest_state_protected) if (vcpu->arch.guest_state_protected)
return true; return true;
return vcpu->arch.preempted_in_kernel; if (vcpu != kvm_get_running_vcpu())
return vcpu->arch.preempted_in_kernel;
return static_call(kvm_x86_get_cpl)(vcpu) == 0;
} }
unsigned long kvm_arch_vcpu_get_ip(struct kvm_vcpu *vcpu) unsigned long kvm_arch_vcpu_get_ip(struct kvm_vcpu *vcpu)

View file

@ -399,13 +399,13 @@ acpi_evaluate_reference(acpi_handle handle,
acpi_handle_debug(list->handles[i], "Found in reference list\n"); acpi_handle_debug(list->handles[i], "Found in reference list\n");
} }
end:
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
list->count = 0; list->count = 0;
kfree(list->handles); kfree(list->handles);
list->handles = NULL; list->handles = NULL;
} }
end:
kfree(buffer.pointer); kfree(buffer.pointer);
return status; return status;

View file

@ -449,9 +449,9 @@ static ssize_t console_show(struct device *dev, struct device_attribute *attr,
struct sk_buff *skb; struct sk_buff *skb;
unsigned int len; unsigned int len;
spin_lock(&card->cli_queue_lock); spin_lock_bh(&card->cli_queue_lock);
skb = skb_dequeue(&card->cli_queue[SOLOS_CHAN(atmdev)]); skb = skb_dequeue(&card->cli_queue[SOLOS_CHAN(atmdev)]);
spin_unlock(&card->cli_queue_lock); spin_unlock_bh(&card->cli_queue_lock);
if(skb == NULL) if(skb == NULL)
return sprintf(buf, "No data.\n"); return sprintf(buf, "No data.\n");
@ -956,14 +956,14 @@ static void pclose(struct atm_vcc *vcc)
struct pkt_hdr *header; struct pkt_hdr *header;
/* Remove any yet-to-be-transmitted packets from the pending queue */ /* Remove any yet-to-be-transmitted packets from the pending queue */
spin_lock(&card->tx_queue_lock); spin_lock_bh(&card->tx_queue_lock);
skb_queue_walk_safe(&card->tx_queue[port], skb, tmpskb) { skb_queue_walk_safe(&card->tx_queue[port], skb, tmpskb) {
if (SKB_CB(skb)->vcc == vcc) { if (SKB_CB(skb)->vcc == vcc) {
skb_unlink(skb, &card->tx_queue[port]); skb_unlink(skb, &card->tx_queue[port]);
solos_pop(vcc, skb); solos_pop(vcc, skb);
} }
} }
spin_unlock(&card->tx_queue_lock); spin_unlock_bh(&card->tx_queue_lock);
skb = alloc_skb(sizeof(*header), GFP_KERNEL); skb = alloc_skb(sizeof(*header), GFP_KERNEL);
if (!skb) { if (!skb) {

View file

@ -144,7 +144,7 @@ static DEVICE_ATTR(release, S_IWUSR, NULL, cpu_release_store);
#endif /* CONFIG_ARCH_CPU_PROBE_RELEASE */ #endif /* CONFIG_ARCH_CPU_PROBE_RELEASE */
#endif /* CONFIG_HOTPLUG_CPU */ #endif /* CONFIG_HOTPLUG_CPU */
#ifdef CONFIG_KEXEC #ifdef CONFIG_KEXEC_CORE
#include <linux/kexec.h> #include <linux/kexec.h>
static ssize_t crash_notes_show(struct device *dev, static ssize_t crash_notes_show(struct device *dev,
@ -189,14 +189,14 @@ static const struct attribute_group crash_note_cpu_attr_group = {
#endif #endif
static const struct attribute_group *common_cpu_attr_groups[] = { static const struct attribute_group *common_cpu_attr_groups[] = {
#ifdef CONFIG_KEXEC #ifdef CONFIG_KEXEC_CORE
&crash_note_cpu_attr_group, &crash_note_cpu_attr_group,
#endif #endif
NULL NULL
}; };
static const struct attribute_group *hotplugable_cpu_attr_groups[] = { static const struct attribute_group *hotplugable_cpu_attr_groups[] = {
#ifdef CONFIG_KEXEC #ifdef CONFIG_KEXEC_CORE
&crash_note_cpu_attr_group, &crash_note_cpu_attr_group,
#endif #endif
NULL NULL

View file

@ -362,6 +362,7 @@ void dev_coredumpm(struct device *dev, struct module *owner,
devcd->devcd_dev.class = &devcd_class; devcd->devcd_dev.class = &devcd_class;
mutex_lock(&devcd->mutex); mutex_lock(&devcd->mutex);
dev_set_uevent_suppress(&devcd->devcd_dev, true);
if (device_add(&devcd->devcd_dev)) if (device_add(&devcd->devcd_dev))
goto put_device; goto put_device;
@ -376,6 +377,8 @@ void dev_coredumpm(struct device *dev, struct module *owner,
"devcoredump")) "devcoredump"))
dev_warn(dev, "devcoredump create_link failed\n"); dev_warn(dev, "devcoredump create_link failed\n");
dev_set_uevent_suppress(&devcd->devcd_dev, false);
kobject_uevent(&devcd->devcd_dev.kobj, KOBJ_ADD);
INIT_DELAYED_WORK(&devcd->del_wk, devcd_del); INIT_DELAYED_WORK(&devcd->del_wk, devcd_del);
schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT); schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT);
mutex_unlock(&devcd->mutex); mutex_unlock(&devcd->mutex);

View file

@ -180,6 +180,9 @@ static inline unsigned long memblk_nr_poison(struct memory_block *mem)
} }
#endif #endif
/*
* Must acquire mem_hotplug_lock in write mode.
*/
static int memory_block_online(struct memory_block *mem) static int memory_block_online(struct memory_block *mem)
{ {
unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr); unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr);
@ -204,10 +207,11 @@ static int memory_block_online(struct memory_block *mem)
if (mem->altmap) if (mem->altmap)
nr_vmemmap_pages = mem->altmap->free; nr_vmemmap_pages = mem->altmap->free;
mem_hotplug_begin();
if (nr_vmemmap_pages) { if (nr_vmemmap_pages) {
ret = mhp_init_memmap_on_memory(start_pfn, nr_vmemmap_pages, zone); ret = mhp_init_memmap_on_memory(start_pfn, nr_vmemmap_pages, zone);
if (ret) if (ret)
return ret; goto out;
} }
ret = online_pages(start_pfn + nr_vmemmap_pages, ret = online_pages(start_pfn + nr_vmemmap_pages,
@ -215,7 +219,7 @@ static int memory_block_online(struct memory_block *mem)
if (ret) { if (ret) {
if (nr_vmemmap_pages) if (nr_vmemmap_pages)
mhp_deinit_memmap_on_memory(start_pfn, nr_vmemmap_pages); mhp_deinit_memmap_on_memory(start_pfn, nr_vmemmap_pages);
return ret; goto out;
} }
/* /*
@ -227,9 +231,14 @@ static int memory_block_online(struct memory_block *mem)
nr_vmemmap_pages); nr_vmemmap_pages);
mem->zone = zone; mem->zone = zone;
out:
mem_hotplug_done();
return ret; return ret;
} }
/*
* Must acquire mem_hotplug_lock in write mode.
*/
static int memory_block_offline(struct memory_block *mem) static int memory_block_offline(struct memory_block *mem)
{ {
unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr); unsigned long start_pfn = section_nr_to_pfn(mem->start_section_nr);
@ -247,6 +256,7 @@ static int memory_block_offline(struct memory_block *mem)
if (mem->altmap) if (mem->altmap)
nr_vmemmap_pages = mem->altmap->free; nr_vmemmap_pages = mem->altmap->free;
mem_hotplug_begin();
if (nr_vmemmap_pages) if (nr_vmemmap_pages)
adjust_present_page_count(pfn_to_page(start_pfn), mem->group, adjust_present_page_count(pfn_to_page(start_pfn), mem->group,
-nr_vmemmap_pages); -nr_vmemmap_pages);
@ -258,13 +268,15 @@ static int memory_block_offline(struct memory_block *mem)
if (nr_vmemmap_pages) if (nr_vmemmap_pages)
adjust_present_page_count(pfn_to_page(start_pfn), adjust_present_page_count(pfn_to_page(start_pfn),
mem->group, nr_vmemmap_pages); mem->group, nr_vmemmap_pages);
return ret; goto out;
} }
if (nr_vmemmap_pages) if (nr_vmemmap_pages)
mhp_deinit_memmap_on_memory(start_pfn, nr_vmemmap_pages); mhp_deinit_memmap_on_memory(start_pfn, nr_vmemmap_pages);
mem->zone = NULL; mem->zone = NULL;
out:
mem_hotplug_done();
return ret; return ret;
} }

View file

@ -929,7 +929,6 @@ dpll_pin_parent_pin_set(struct dpll_pin *pin, struct nlattr *parent_nest,
struct netlink_ext_ack *extack) struct netlink_ext_ack *extack)
{ {
struct nlattr *tb[DPLL_A_PIN_MAX + 1]; struct nlattr *tb[DPLL_A_PIN_MAX + 1];
enum dpll_pin_state state;
u32 ppin_idx; u32 ppin_idx;
int ret; int ret;
@ -940,10 +939,14 @@ dpll_pin_parent_pin_set(struct dpll_pin *pin, struct nlattr *parent_nest,
return -EINVAL; return -EINVAL;
} }
ppin_idx = nla_get_u32(tb[DPLL_A_PIN_PARENT_ID]); ppin_idx = nla_get_u32(tb[DPLL_A_PIN_PARENT_ID]);
state = nla_get_u32(tb[DPLL_A_PIN_STATE]);
ret = dpll_pin_on_pin_state_set(pin, ppin_idx, state, extack); if (tb[DPLL_A_PIN_STATE]) {
if (ret) enum dpll_pin_state state = nla_get_u32(tb[DPLL_A_PIN_STATE]);
return ret;
ret = dpll_pin_on_pin_state_set(pin, ppin_idx, state, extack);
if (ret)
return ret;
}
return 0; return 0;
} }

View file

@ -99,6 +99,7 @@ struct ffa_drv_info {
void *tx_buffer; void *tx_buffer;
bool mem_ops_native; bool mem_ops_native;
bool bitmap_created; bool bitmap_created;
bool notif_enabled;
unsigned int sched_recv_irq; unsigned int sched_recv_irq;
unsigned int cpuhp_state; unsigned int cpuhp_state;
struct ffa_pcpu_irq __percpu *irq_pcpu; struct ffa_pcpu_irq __percpu *irq_pcpu;
@ -782,7 +783,7 @@ static void ffa_notification_info_get(void)
if (ids_processed >= max_ids - 1) if (ids_processed >= max_ids - 1)
break; break;
part_id = packed_id_list[++ids_processed]; part_id = packed_id_list[ids_processed++];
if (!ids_count[list]) { /* Global Notification */ if (!ids_count[list]) { /* Global Notification */
__do_sched_recv_cb(part_id, 0, false); __do_sched_recv_cb(part_id, 0, false);
@ -794,7 +795,7 @@ static void ffa_notification_info_get(void)
if (ids_processed >= max_ids - 1) if (ids_processed >= max_ids - 1)
break; break;
vcpu_id = packed_id_list[++ids_processed]; vcpu_id = packed_id_list[ids_processed++];
__do_sched_recv_cb(part_id, vcpu_id, true); __do_sched_recv_cb(part_id, vcpu_id, true);
} }
@ -889,6 +890,8 @@ static int ffa_memory_lend(struct ffa_mem_ops_args *args)
#define FFA_SECURE_PARTITION_ID_FLAG BIT(15) #define FFA_SECURE_PARTITION_ID_FLAG BIT(15)
#define ffa_notifications_disabled() (!drv_info->notif_enabled)
enum notify_type { enum notify_type {
NON_SECURE_VM, NON_SECURE_VM,
SECURE_PARTITION, SECURE_PARTITION,
@ -908,6 +911,9 @@ static int ffa_sched_recv_cb_update(u16 part_id, ffa_sched_recv_cb callback,
struct ffa_dev_part_info *partition; struct ffa_dev_part_info *partition;
bool cb_valid; bool cb_valid;
if (ffa_notifications_disabled())
return -EOPNOTSUPP;
partition = xa_load(&drv_info->partition_info, part_id); partition = xa_load(&drv_info->partition_info, part_id);
write_lock(&partition->rw_lock); write_lock(&partition->rw_lock);
@ -1001,6 +1007,9 @@ static int ffa_notify_relinquish(struct ffa_device *dev, int notify_id)
int rc; int rc;
enum notify_type type = ffa_notify_type_get(dev->vm_id); enum notify_type type = ffa_notify_type_get(dev->vm_id);
if (ffa_notifications_disabled())
return -EOPNOTSUPP;
if (notify_id >= FFA_MAX_NOTIFICATIONS) if (notify_id >= FFA_MAX_NOTIFICATIONS)
return -EINVAL; return -EINVAL;
@ -1027,6 +1036,9 @@ static int ffa_notify_request(struct ffa_device *dev, bool is_per_vcpu,
u32 flags = 0; u32 flags = 0;
enum notify_type type = ffa_notify_type_get(dev->vm_id); enum notify_type type = ffa_notify_type_get(dev->vm_id);
if (ffa_notifications_disabled())
return -EOPNOTSUPP;
if (notify_id >= FFA_MAX_NOTIFICATIONS) if (notify_id >= FFA_MAX_NOTIFICATIONS)
return -EINVAL; return -EINVAL;
@ -1057,6 +1069,9 @@ static int ffa_notify_send(struct ffa_device *dev, int notify_id,
{ {
u32 flags = 0; u32 flags = 0;
if (ffa_notifications_disabled())
return -EOPNOTSUPP;
if (is_per_vcpu) if (is_per_vcpu)
flags |= (PER_VCPU_NOTIFICATION_FLAG | vcpu << 16); flags |= (PER_VCPU_NOTIFICATION_FLAG | vcpu << 16);
@ -1233,7 +1248,7 @@ static void ffa_partitions_cleanup(void)
if (!count) if (!count)
return; return;
info = kcalloc(count, sizeof(**info), GFP_KERNEL); info = kcalloc(count, sizeof(*info), GFP_KERNEL);
if (!info) if (!info)
return; return;
@ -1311,8 +1326,10 @@ static int ffa_sched_recv_irq_map(void)
static void ffa_sched_recv_irq_unmap(void) static void ffa_sched_recv_irq_unmap(void)
{ {
if (drv_info->sched_recv_irq) if (drv_info->sched_recv_irq) {
irq_dispose_mapping(drv_info->sched_recv_irq); irq_dispose_mapping(drv_info->sched_recv_irq);
drv_info->sched_recv_irq = 0;
}
} }
static int ffa_cpuhp_pcpu_irq_enable(unsigned int cpu) static int ffa_cpuhp_pcpu_irq_enable(unsigned int cpu)
@ -1329,17 +1346,23 @@ static int ffa_cpuhp_pcpu_irq_disable(unsigned int cpu)
static void ffa_uninit_pcpu_irq(void) static void ffa_uninit_pcpu_irq(void)
{ {
if (drv_info->cpuhp_state) if (drv_info->cpuhp_state) {
cpuhp_remove_state(drv_info->cpuhp_state); cpuhp_remove_state(drv_info->cpuhp_state);
drv_info->cpuhp_state = 0;
}
if (drv_info->notif_pcpu_wq) if (drv_info->notif_pcpu_wq) {
destroy_workqueue(drv_info->notif_pcpu_wq); destroy_workqueue(drv_info->notif_pcpu_wq);
drv_info->notif_pcpu_wq = NULL;
}
if (drv_info->sched_recv_irq) if (drv_info->sched_recv_irq)
free_percpu_irq(drv_info->sched_recv_irq, drv_info->irq_pcpu); free_percpu_irq(drv_info->sched_recv_irq, drv_info->irq_pcpu);
if (drv_info->irq_pcpu) if (drv_info->irq_pcpu) {
free_percpu(drv_info->irq_pcpu); free_percpu(drv_info->irq_pcpu);
drv_info->irq_pcpu = NULL;
}
} }
static int ffa_init_pcpu_irq(unsigned int irq) static int ffa_init_pcpu_irq(unsigned int irq)
@ -1388,22 +1411,23 @@ static void ffa_notifications_cleanup(void)
ffa_notification_bitmap_destroy(); ffa_notification_bitmap_destroy();
drv_info->bitmap_created = false; drv_info->bitmap_created = false;
} }
drv_info->notif_enabled = false;
} }
static int ffa_notifications_setup(void) static void ffa_notifications_setup(void)
{ {
int ret, irq; int ret, irq;
ret = ffa_features(FFA_NOTIFICATION_BITMAP_CREATE, 0, NULL, NULL); ret = ffa_features(FFA_NOTIFICATION_BITMAP_CREATE, 0, NULL, NULL);
if (ret) { if (ret) {
pr_err("Notifications not supported, continuing with it ..\n"); pr_info("Notifications not supported, continuing with it ..\n");
return 0; return;
} }
ret = ffa_notification_bitmap_create(); ret = ffa_notification_bitmap_create();
if (ret) { if (ret) {
pr_err("notification_bitmap_create error %d\n", ret); pr_info("Notification bitmap create error %d\n", ret);
return ret; return;
} }
drv_info->bitmap_created = true; drv_info->bitmap_created = true;
@ -1422,14 +1446,11 @@ static int ffa_notifications_setup(void)
hash_init(drv_info->notifier_hash); hash_init(drv_info->notifier_hash);
mutex_init(&drv_info->notify_lock); mutex_init(&drv_info->notify_lock);
/* Register internal scheduling callback */ drv_info->notif_enabled = true;
ret = ffa_sched_recv_cb_update(drv_info->vm_id, ffa_self_notif_handle, return;
drv_info, true);
if (!ret)
return ret;
cleanup: cleanup:
pr_info("Notification setup failed %d, not enabled\n", ret);
ffa_notifications_cleanup(); ffa_notifications_cleanup();
return ret;
} }
static int __init ffa_init(void) static int __init ffa_init(void)
@ -1483,17 +1504,18 @@ static int __init ffa_init(void)
mutex_init(&drv_info->rx_lock); mutex_init(&drv_info->rx_lock);
mutex_init(&drv_info->tx_lock); mutex_init(&drv_info->tx_lock);
ffa_setup_partitions();
ffa_set_up_mem_ops_native_flag(); ffa_set_up_mem_ops_native_flag();
ret = ffa_notifications_setup(); ffa_notifications_setup();
ffa_setup_partitions();
ret = ffa_sched_recv_cb_update(drv_info->vm_id, ffa_self_notif_handle,
drv_info, true);
if (ret) if (ret)
goto partitions_cleanup; pr_info("Failed to register driver sched callback %d\n", ret);
return 0; return 0;
partitions_cleanup:
ffa_partitions_cleanup();
free_pages: free_pages:
if (drv_info->tx_buffer) if (drv_info->tx_buffer)
free_pages_exact(drv_info->tx_buffer, RXTX_BUFFER_SIZE); free_pages_exact(drv_info->tx_buffer, RXTX_BUFFER_SIZE);

View file

@ -152,7 +152,7 @@ struct perf_dom_info {
u32 opp_count; u32 opp_count;
u32 sustained_freq_khz; u32 sustained_freq_khz;
u32 sustained_perf_level; u32 sustained_perf_level;
u32 mult_factor; unsigned long mult_factor;
struct scmi_perf_domain_info info; struct scmi_perf_domain_info info;
struct scmi_opp opp[MAX_OPPS]; struct scmi_opp opp[MAX_OPPS];
struct scmi_fc_info *fc_info; struct scmi_fc_info *fc_info;
@ -268,13 +268,14 @@ scmi_perf_domain_attributes_get(const struct scmi_protocol_handle *ph,
dom_info->sustained_perf_level = dom_info->sustained_perf_level =
le32_to_cpu(attr->sustained_perf_level); le32_to_cpu(attr->sustained_perf_level);
if (!dom_info->sustained_freq_khz || if (!dom_info->sustained_freq_khz ||
!dom_info->sustained_perf_level) !dom_info->sustained_perf_level ||
dom_info->level_indexing_mode)
/* CPUFreq converts to kHz, hence default 1000 */ /* CPUFreq converts to kHz, hence default 1000 */
dom_info->mult_factor = 1000; dom_info->mult_factor = 1000;
else else
dom_info->mult_factor = dom_info->mult_factor =
(dom_info->sustained_freq_khz * 1000) / (dom_info->sustained_freq_khz * 1000UL)
dom_info->sustained_perf_level; / dom_info->sustained_perf_level;
strscpy(dom_info->info.name, attr->name, strscpy(dom_info->info.name, attr->name,
SCMI_SHORT_NAME_MAX_SIZE); SCMI_SHORT_NAME_MAX_SIZE);
} }
@ -798,7 +799,7 @@ static int scmi_dvfs_device_opps_add(const struct scmi_protocol_handle *ph,
if (!dom->level_indexing_mode) if (!dom->level_indexing_mode)
freq = dom->opp[idx].perf * dom->mult_factor; freq = dom->opp[idx].perf * dom->mult_factor;
else else
freq = dom->opp[idx].indicative_freq * 1000; freq = dom->opp[idx].indicative_freq * dom->mult_factor;
data.level = dom->opp[idx].perf; data.level = dom->opp[idx].perf;
data.freq = freq; data.freq = freq;
@ -845,7 +846,8 @@ static int scmi_dvfs_freq_set(const struct scmi_protocol_handle *ph, u32 domain,
} else { } else {
struct scmi_opp *opp; struct scmi_opp *opp;
opp = LOOKUP_BY_FREQ(dom->opps_by_freq, freq / 1000); opp = LOOKUP_BY_FREQ(dom->opps_by_freq,
freq / dom->mult_factor);
if (!opp) if (!opp)
return -EIO; return -EIO;
@ -879,7 +881,7 @@ static int scmi_dvfs_freq_get(const struct scmi_protocol_handle *ph, u32 domain,
if (!opp) if (!opp)
return -EIO; return -EIO;
*freq = opp->indicative_freq * 1000; *freq = opp->indicative_freq * dom->mult_factor;
} }
return ret; return ret;
@ -902,7 +904,7 @@ static int scmi_dvfs_est_power_get(const struct scmi_protocol_handle *ph,
if (!dom->level_indexing_mode) if (!dom->level_indexing_mode)
opp_freq = opp->perf * dom->mult_factor; opp_freq = opp->perf * dom->mult_factor;
else else
opp_freq = opp->indicative_freq * 1000; opp_freq = opp->indicative_freq * dom->mult_factor;
if (opp_freq < *freq) if (opp_freq < *freq)
continue; continue;

View file

@ -35,9 +35,9 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
return status; return status;
} }
unsigned long kernel_entry_address(void) unsigned long kernel_entry_address(unsigned long kernel_addr)
{ {
unsigned long base = (unsigned long)&kernel_offset - kernel_offset; unsigned long base = (unsigned long)&kernel_offset - kernel_offset;
return (unsigned long)&kernel_entry - base + VMLINUX_LOAD_ADDRESS; return (unsigned long)&kernel_entry - base + kernel_addr;
} }

View file

@ -37,9 +37,9 @@ static efi_status_t exit_boot_func(struct efi_boot_memmap *map, void *priv)
return EFI_SUCCESS; return EFI_SUCCESS;
} }
unsigned long __weak kernel_entry_address(void) unsigned long __weak kernel_entry_address(unsigned long kernel_addr)
{ {
return *(unsigned long *)(PHYSADDR(VMLINUX_LOAD_ADDRESS) + 8); return *(unsigned long *)(kernel_addr + 8) - VMLINUX_LOAD_ADDRESS + kernel_addr;
} }
efi_status_t efi_boot_kernel(void *handle, efi_loaded_image_t *image, efi_status_t efi_boot_kernel(void *handle, efi_loaded_image_t *image,
@ -73,7 +73,7 @@ efi_status_t efi_boot_kernel(void *handle, efi_loaded_image_t *image,
csr_write64(CSR_DMW0_INIT, LOONGARCH_CSR_DMWIN0); csr_write64(CSR_DMW0_INIT, LOONGARCH_CSR_DMWIN0);
csr_write64(CSR_DMW1_INIT, LOONGARCH_CSR_DMWIN1); csr_write64(CSR_DMW1_INIT, LOONGARCH_CSR_DMWIN1);
real_kernel_entry = (void *)kernel_entry_address(); real_kernel_entry = (void *)kernel_entry_address(kernel_addr);
real_kernel_entry(true, (unsigned long)cmdline_ptr, real_kernel_entry(true, (unsigned long)cmdline_ptr,
(unsigned long)efi_system_table); (unsigned long)efi_system_table);

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