Linux 4.12-rc6
-----BEGIN PGP SIGNATURE----- iQEbBAABAgAGBQJZR92EAAoJEHm+PkMAQRiGT1oH+KW2FLrRaYxtut+KyGA6l7tc R/hFx1n9BibkjXeqD+y6/4SjRTe6/pT8Zkihv3/19eZ5algUWeQa0Hm+/455sl58 IdIXx/pzuCO3kqR3//fP9ZFD657GNDsuQ0fYnZESItFwiWQtO1TNfZD6KQjkqBdI L3MVhDUVBZA2ZtPwC4ERei5/sToV9woykKoJ/A3+OkWjgX6w4SBimqgkSEFk4uE8 xS0pycyDZci93rJlECi1UueewdODTKSmhwdC80qvGEiYXzsC6UFtaF0Fj66XO1AL UMjxqI/gkm5ZuCIjRsmPmJjgL5q1RT6UX/qtw9yn71XTmcgMiPW2/DF/v/OaTg== =XbW2 -----END PGP SIGNATURE----- Merge tag 'v4.12-rc6' into patchwork Linux 4.12-rc6 * tag 'v4.12-rc6': (813 commits) Linux 4.12-rc6 mm: larger stack guard gap, between vmas virtio_balloon: disable VIOMMU support mm: correct the comment when reclaimed pages exceed the scanned pages userfaultfd: shmem: handle coredumping in handle_userfault() mm: numa: avoid waiting on freed migrated pages swap: cond_resched in swap_cgroup_prepare() mm/memory-failure.c: use compound_head() flags for huge pages perf unwind: Report module before querying isactivation in dwfl unwind fs: pass on flags in compat_writev objtool: Add fortify_panic as __noreturn function powerpc/debug: Add missing warn flag to WARN_ON's non-builtin path USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks drm: mxsfb_crtc: Reset the eLCDIF controller drm/mgag200: Fix to always set HiPri for G200e4 V2 i2c: ismt: fix wrong device address when unmap the data buffer i2c: rcar: use correct length when unmapping DMA powerpc/xive: Fix offset for store EOI MMIOs drm/tegra: Correct idr_alloc() minimum id drm/tegra: Fix lockup on a use of staging API ... Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
commit
ff6ccad361
|
@ -866,6 +866,15 @@
|
||||||
|
|
||||||
dscc4.setup= [NET]
|
dscc4.setup= [NET]
|
||||||
|
|
||||||
|
dt_cpu_ftrs= [PPC]
|
||||||
|
Format: {"off" | "known"}
|
||||||
|
Control how the dt_cpu_ftrs device-tree binding is
|
||||||
|
used for CPU feature discovery and setup (if it
|
||||||
|
exists).
|
||||||
|
off: Do not use it, fall back to legacy cpu table.
|
||||||
|
known: Do not pass through unknown features to guests
|
||||||
|
or userspace, only those that the kernel is aware of.
|
||||||
|
|
||||||
dump_apple_properties [X86]
|
dump_apple_properties [X86]
|
||||||
Dump name and content of EFI device properties on
|
Dump name and content of EFI device properties on
|
||||||
x86 Macs. Useful for driver authors to determine
|
x86 Macs. Useful for driver authors to determine
|
||||||
|
@ -3802,6 +3811,13 @@
|
||||||
expediting. Set to zero to disable automatic
|
expediting. Set to zero to disable automatic
|
||||||
expediting.
|
expediting.
|
||||||
|
|
||||||
|
stack_guard_gap= [MM]
|
||||||
|
override the default stack gap protection. The value
|
||||||
|
is in page units and it defines how many pages prior
|
||||||
|
to (for stacks growing down) resp. after (for stacks
|
||||||
|
growing up) the main stack are reserved for no other
|
||||||
|
mapping. Default value is 256 pages.
|
||||||
|
|
||||||
stacktrace [FTRACE]
|
stacktrace [FTRACE]
|
||||||
Enabled the stack tracer on boot up.
|
Enabled the stack tracer on boot up.
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,10 @@ Optional properties:
|
||||||
- interrupt-controller : Indicates the switch is itself an interrupt
|
- interrupt-controller : Indicates the switch is itself an interrupt
|
||||||
controller. This is used for the PHY interrupts.
|
controller. This is used for the PHY interrupts.
|
||||||
#interrupt-cells = <2> : Controller uses two cells, number and flag
|
#interrupt-cells = <2> : Controller uses two cells, number and flag
|
||||||
|
- eeprom-length : Set to the length of an EEPROM connected to the
|
||||||
|
switch. Must be set if the switch can not detect
|
||||||
|
the presence and/or size of a connected EEPROM,
|
||||||
|
otherwise optional.
|
||||||
- mdio : Container of PHY and devices on the switches MDIO
|
- mdio : Container of PHY and devices on the switches MDIO
|
||||||
bus.
|
bus.
|
||||||
- mdio? : Container of PHYs and devices on the external MDIO
|
- mdio? : Container of PHYs and devices on the external MDIO
|
||||||
|
|
|
@ -247,7 +247,6 @@ bias-bus-hold - latch weakly
|
||||||
bias-pull-up - pull up the pin
|
bias-pull-up - pull up the pin
|
||||||
bias-pull-down - pull down the pin
|
bias-pull-down - pull down the pin
|
||||||
bias-pull-pin-default - use pin-default pull state
|
bias-pull-pin-default - use pin-default pull state
|
||||||
bi-directional - pin supports simultaneous input/output operations
|
|
||||||
drive-push-pull - drive actively high and low
|
drive-push-pull - drive actively high and low
|
||||||
drive-open-drain - drive with open drain
|
drive-open-drain - drive with open drain
|
||||||
drive-open-source - drive with open source
|
drive-open-source - drive with open source
|
||||||
|
@ -260,7 +259,6 @@ input-debounce - debounce mode with debound time X
|
||||||
power-source - select between different power supplies
|
power-source - select between different power supplies
|
||||||
low-power-enable - enable low power mode
|
low-power-enable - enable low power mode
|
||||||
low-power-disable - disable low power mode
|
low-power-disable - disable low power mode
|
||||||
output-enable - enable output on pin regardless of output value
|
|
||||||
output-low - set the pin to output mode with low level
|
output-low - set the pin to output mode with low level
|
||||||
output-high - set the pin to output mode with high level
|
output-high - set the pin to output mode with high level
|
||||||
slew-rate - set the slew rate
|
slew-rate - set the slew rate
|
||||||
|
|
|
@ -10,6 +10,7 @@ Required properties:
|
||||||
- "rockchip,rk3288-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3288 Soc;
|
- "rockchip,rk3288-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3288 Soc;
|
||||||
- "lantiq,arx100-usb": The DWC2 USB controller instance in Lantiq ARX SoCs;
|
- "lantiq,arx100-usb": The DWC2 USB controller instance in Lantiq ARX SoCs;
|
||||||
- "lantiq,xrx200-usb": The DWC2 USB controller instance in Lantiq XRX SoCs;
|
- "lantiq,xrx200-usb": The DWC2 USB controller instance in Lantiq XRX SoCs;
|
||||||
|
- "amlogic,meson8-usb": The DWC2 USB controller instance in Amlogic Meson8 SoCs;
|
||||||
- "amlogic,meson8b-usb": The DWC2 USB controller instance in Amlogic Meson8b SoCs;
|
- "amlogic,meson8b-usb": The DWC2 USB controller instance in Amlogic Meson8b SoCs;
|
||||||
- "amlogic,meson-gxbb-usb": The DWC2 USB controller instance in Amlogic S905 SoCs;
|
- "amlogic,meson-gxbb-usb": The DWC2 USB controller instance in Amlogic S905 SoCs;
|
||||||
- "amcc,dwc-otg": The DWC2 USB controller instance in AMCC Canyonlands 460EX SoCs;
|
- "amcc,dwc-otg": The DWC2 USB controller instance in AMCC Canyonlands 460EX SoCs;
|
||||||
|
|
|
@ -0,0 +1,194 @@
|
||||||
|
The QorIQ DPAA Ethernet Driver
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Authors:
|
||||||
|
Madalin Bucur <madalin.bucur@nxp.com>
|
||||||
|
Camelia Groza <camelia.groza@nxp.com>
|
||||||
|
|
||||||
|
Contents
|
||||||
|
========
|
||||||
|
|
||||||
|
- DPAA Ethernet Overview
|
||||||
|
- DPAA Ethernet Supported SoCs
|
||||||
|
- Configuring DPAA Ethernet in your kernel
|
||||||
|
- DPAA Ethernet Frame Processing
|
||||||
|
- DPAA Ethernet Features
|
||||||
|
- Debugging
|
||||||
|
|
||||||
|
DPAA Ethernet Overview
|
||||||
|
======================
|
||||||
|
|
||||||
|
DPAA stands for Data Path Acceleration Architecture and it is a
|
||||||
|
set of networking acceleration IPs that are available on several
|
||||||
|
generations of SoCs, both on PowerPC and ARM64.
|
||||||
|
|
||||||
|
The Freescale DPAA architecture consists of a series of hardware blocks
|
||||||
|
that support Ethernet connectivity. The Ethernet driver depends upon the
|
||||||
|
following drivers in the Linux kernel:
|
||||||
|
|
||||||
|
- Peripheral Access Memory Unit (PAMU) (* needed only for PPC platforms)
|
||||||
|
drivers/iommu/fsl_*
|
||||||
|
- Frame Manager (FMan)
|
||||||
|
drivers/net/ethernet/freescale/fman
|
||||||
|
- Queue Manager (QMan), Buffer Manager (BMan)
|
||||||
|
drivers/soc/fsl/qbman
|
||||||
|
|
||||||
|
A simplified view of the dpaa_eth interfaces mapped to FMan MACs:
|
||||||
|
|
||||||
|
dpaa_eth /eth0\ ... /ethN\
|
||||||
|
driver | | | |
|
||||||
|
------------- ---- ----------- ---- -------------
|
||||||
|
-Ports / Tx Rx \ ... / Tx Rx \
|
||||||
|
FMan | | | |
|
||||||
|
-MACs | MAC0 | | MACN |
|
||||||
|
/ dtsec0 \ ... / dtsecN \ (or tgec)
|
||||||
|
/ \ / \(or memac)
|
||||||
|
--------- -------------- --- -------------- ---------
|
||||||
|
FMan, FMan Port, FMan SP, FMan MURAM drivers
|
||||||
|
---------------------------------------------------------
|
||||||
|
FMan HW blocks: MURAM, MACs, Ports, SP
|
||||||
|
---------------------------------------------------------
|
||||||
|
|
||||||
|
The dpaa_eth relation to the QMan, BMan and FMan:
|
||||||
|
________________________________
|
||||||
|
dpaa_eth / eth0 \
|
||||||
|
driver / \
|
||||||
|
--------- -^- -^- -^- --- ---------
|
||||||
|
QMan driver / \ / \ / \ \ / | BMan |
|
||||||
|
|Rx | |Rx | |Tx | |Tx | | driver |
|
||||||
|
--------- |Dfl| |Err| |Cnf| |FQs| | |
|
||||||
|
QMan HW |FQ | |FQ | |FQs| | | | |
|
||||||
|
/ \ / \ / \ \ / | |
|
||||||
|
--------- --- --- --- -v- ---------
|
||||||
|
| FMan QMI | |
|
||||||
|
| FMan HW FMan BMI | BMan HW |
|
||||||
|
----------------------- --------
|
||||||
|
|
||||||
|
where the acronyms used above (and in the code) are:
|
||||||
|
DPAA = Data Path Acceleration Architecture
|
||||||
|
FMan = DPAA Frame Manager
|
||||||
|
QMan = DPAA Queue Manager
|
||||||
|
BMan = DPAA Buffers Manager
|
||||||
|
QMI = QMan interface in FMan
|
||||||
|
BMI = BMan interface in FMan
|
||||||
|
FMan SP = FMan Storage Profiles
|
||||||
|
MURAM = Multi-user RAM in FMan
|
||||||
|
FQ = QMan Frame Queue
|
||||||
|
Rx Dfl FQ = default reception FQ
|
||||||
|
Rx Err FQ = Rx error frames FQ
|
||||||
|
Tx Cnf FQ = Tx confirmation FQs
|
||||||
|
Tx FQs = transmission frame queues
|
||||||
|
dtsec = datapath three speed Ethernet controller (10/100/1000 Mbps)
|
||||||
|
tgec = ten gigabit Ethernet controller (10 Gbps)
|
||||||
|
memac = multirate Ethernet MAC (10/100/1000/10000)
|
||||||
|
|
||||||
|
DPAA Ethernet Supported SoCs
|
||||||
|
============================
|
||||||
|
|
||||||
|
The DPAA drivers enable the Ethernet controllers present on the following SoCs:
|
||||||
|
|
||||||
|
# PPC
|
||||||
|
P1023
|
||||||
|
P2041
|
||||||
|
P3041
|
||||||
|
P4080
|
||||||
|
P5020
|
||||||
|
P5040
|
||||||
|
T1023
|
||||||
|
T1024
|
||||||
|
T1040
|
||||||
|
T1042
|
||||||
|
T2080
|
||||||
|
T4240
|
||||||
|
B4860
|
||||||
|
|
||||||
|
# ARM
|
||||||
|
LS1043A
|
||||||
|
LS1046A
|
||||||
|
|
||||||
|
Configuring DPAA Ethernet in your kernel
|
||||||
|
========================================
|
||||||
|
|
||||||
|
To enable the DPAA Ethernet driver, the following Kconfig options are required:
|
||||||
|
|
||||||
|
# common for arch/arm64 and arch/powerpc platforms
|
||||||
|
CONFIG_FSL_DPAA=y
|
||||||
|
CONFIG_FSL_FMAN=y
|
||||||
|
CONFIG_FSL_DPAA_ETH=y
|
||||||
|
CONFIG_FSL_XGMAC_MDIO=y
|
||||||
|
|
||||||
|
# for arch/powerpc only
|
||||||
|
CONFIG_FSL_PAMU=y
|
||||||
|
|
||||||
|
# common options needed for the PHYs used on the RDBs
|
||||||
|
CONFIG_VITESSE_PHY=y
|
||||||
|
CONFIG_REALTEK_PHY=y
|
||||||
|
CONFIG_AQUANTIA_PHY=y
|
||||||
|
|
||||||
|
DPAA Ethernet Frame Processing
|
||||||
|
==============================
|
||||||
|
|
||||||
|
On Rx, buffers for the incoming frames are retrieved from one of the three
|
||||||
|
existing buffers pools. The driver initializes and seeds these, each with
|
||||||
|
buffers of different sizes: 1KB, 2KB and 4KB.
|
||||||
|
|
||||||
|
On Tx, all transmitted frames are returned to the driver through Tx
|
||||||
|
confirmation frame queues. The driver is then responsible for freeing the
|
||||||
|
buffers. In order to do this properly, a backpointer is added to the buffer
|
||||||
|
before transmission that points to the skb. When the buffer returns to the
|
||||||
|
driver on a confirmation FQ, the skb can be correctly consumed.
|
||||||
|
|
||||||
|
DPAA Ethernet Features
|
||||||
|
======================
|
||||||
|
|
||||||
|
Currently the DPAA Ethernet driver enables the basic features required for
|
||||||
|
a Linux Ethernet driver. The support for advanced features will be added
|
||||||
|
gradually.
|
||||||
|
|
||||||
|
The driver has Rx and Tx checksum offloading for UDP and TCP. Currently the Rx
|
||||||
|
checksum offload feature is enabled by default and cannot be controlled through
|
||||||
|
ethtool.
|
||||||
|
|
||||||
|
The driver has support for multiple prioritized Tx traffic classes. Priorities
|
||||||
|
range from 0 (lowest) to 3 (highest). These are mapped to HW workqueues with
|
||||||
|
strict priority levels. Each traffic class contains NR_CPU TX queues. By
|
||||||
|
default, only one traffic class is enabled and the lowest priority Tx queues
|
||||||
|
are used. Higher priority traffic classes can be enabled with the mqprio
|
||||||
|
qdisc. For example, all four traffic classes are enabled on an interface with
|
||||||
|
the following command. Furthermore, skb priority levels are mapped to traffic
|
||||||
|
classes as follows:
|
||||||
|
|
||||||
|
* priorities 0 to 3 - traffic class 0 (low priority)
|
||||||
|
* priorities 4 to 7 - traffic class 1 (medium-low priority)
|
||||||
|
* priorities 8 to 11 - traffic class 2 (medium-high priority)
|
||||||
|
* priorities 12 to 15 - traffic class 3 (high priority)
|
||||||
|
|
||||||
|
tc qdisc add dev <int> root handle 1: \
|
||||||
|
mqprio num_tc 4 map 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 hw 1
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
=========
|
||||||
|
|
||||||
|
The following statistics are exported for each interface through ethtool:
|
||||||
|
|
||||||
|
- interrupt count per CPU
|
||||||
|
- Rx packets count per CPU
|
||||||
|
- Tx packets count per CPU
|
||||||
|
- Tx confirmed packets count per CPU
|
||||||
|
- Tx S/G frames count per CPU
|
||||||
|
- Tx error count per CPU
|
||||||
|
- Rx error count per CPU
|
||||||
|
- Rx error count per type
|
||||||
|
- congestion related statistics:
|
||||||
|
- congestion status
|
||||||
|
- time spent in congestion
|
||||||
|
- number of time the device entered congestion
|
||||||
|
- dropped packets count per cause
|
||||||
|
|
||||||
|
The driver also exports the following information in sysfs:
|
||||||
|
|
||||||
|
- the FQ IDs for each FQ type
|
||||||
|
/sys/devices/platform/dpaa-ethernet.0/net/<int>/fqids
|
||||||
|
|
||||||
|
- the IDs of the buffer pools in use
|
||||||
|
/sys/devices/platform/dpaa-ethernet.0/net/<int>/bpids
|
|
@ -122,7 +122,7 @@ associated flow of the packet. The hash is either provided by hardware
|
||||||
or will be computed in the stack. Capable hardware can pass the hash in
|
or will be computed in the stack. Capable hardware can pass the hash in
|
||||||
the receive descriptor for the packet; this would usually be the same
|
the receive descriptor for the packet; this would usually be the same
|
||||||
hash used for RSS (e.g. computed Toeplitz hash). The hash is saved in
|
hash used for RSS (e.g. computed Toeplitz hash). The hash is saved in
|
||||||
skb->rx_hash and can be used elsewhere in the stack as a hash of the
|
skb->hash and can be used elsewhere in the stack as a hash of the
|
||||||
packet’s flow.
|
packet’s flow.
|
||||||
|
|
||||||
Each receive hardware queue has an associated list of CPUs to which
|
Each receive hardware queue has an associated list of CPUs to which
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
TCP protocol
|
TCP protocol
|
||||||
============
|
============
|
||||||
|
|
||||||
Last updated: 9 February 2008
|
Last updated: 3 June 2017
|
||||||
|
|
||||||
Contents
|
Contents
|
||||||
========
|
========
|
||||||
|
@ -29,18 +29,19 @@ As of 2.6.13, Linux supports pluggable congestion control algorithms.
|
||||||
A congestion control mechanism can be registered through functions in
|
A congestion control mechanism can be registered through functions in
|
||||||
tcp_cong.c. The functions used by the congestion control mechanism are
|
tcp_cong.c. The functions used by the congestion control mechanism are
|
||||||
registered via passing a tcp_congestion_ops struct to
|
registered via passing a tcp_congestion_ops struct to
|
||||||
tcp_register_congestion_control. As a minimum name, ssthresh,
|
tcp_register_congestion_control. As a minimum, the congestion control
|
||||||
cong_avoid must be valid.
|
mechanism must provide a valid name and must implement either ssthresh,
|
||||||
|
cong_avoid and undo_cwnd hooks or the "omnipotent" cong_control hook.
|
||||||
|
|
||||||
Private data for a congestion control mechanism is stored in tp->ca_priv.
|
Private data for a congestion control mechanism is stored in tp->ca_priv.
|
||||||
tcp_ca(tp) returns a pointer to this space. This is preallocated space - it
|
tcp_ca(tp) returns a pointer to this space. This is preallocated space - it
|
||||||
is important to check the size of your private data will fit this space, or
|
is important to check the size of your private data will fit this space, or
|
||||||
alternatively space could be allocated elsewhere and a pointer to it could
|
alternatively, space could be allocated elsewhere and a pointer to it could
|
||||||
be stored here.
|
be stored here.
|
||||||
|
|
||||||
There are three kinds of congestion control algorithms currently: The
|
There are three kinds of congestion control algorithms currently: The
|
||||||
simplest ones are derived from TCP reno (highspeed, scalable) and just
|
simplest ones are derived from TCP reno (highspeed, scalable) and just
|
||||||
provide an alternative the congestion window calculation. More complex
|
provide an alternative congestion window calculation. More complex
|
||||||
ones like BIC try to look at other events to provide better
|
ones like BIC try to look at other events to provide better
|
||||||
heuristics. There are also round trip time based algorithms like
|
heuristics. There are also round trip time based algorithms like
|
||||||
Vegas and Westwood+.
|
Vegas and Westwood+.
|
||||||
|
@ -49,21 +50,15 @@ Good TCP congestion control is a complex problem because the algorithm
|
||||||
needs to maintain fairness and performance. Please review current
|
needs to maintain fairness and performance. Please review current
|
||||||
research and RFC's before developing new modules.
|
research and RFC's before developing new modules.
|
||||||
|
|
||||||
The method that is used to determine which congestion control mechanism is
|
The default congestion control mechanism is chosen based on the
|
||||||
determined by the setting of the sysctl net.ipv4.tcp_congestion_control.
|
DEFAULT_TCP_CONG Kconfig parameter. If you really want a particular default
|
||||||
The default congestion control will be the last one registered (LIFO);
|
value then you can set it using sysctl net.ipv4.tcp_congestion_control. The
|
||||||
so if you built everything as modules, the default will be reno. If you
|
module will be autoloaded if needed and you will get the expected protocol. If
|
||||||
build with the defaults from Kconfig, then CUBIC will be builtin (not a
|
you ask for an unknown congestion method, then the sysctl attempt will fail.
|
||||||
module) and it will end up the default.
|
|
||||||
|
|
||||||
If you really want a particular default value then you will need
|
If you remove a TCP congestion control module, then you will get the next
|
||||||
to set it with the sysctl. If you use a sysctl, the module will be autoloaded
|
|
||||||
if needed and you will get the expected protocol. If you ask for an
|
|
||||||
unknown congestion method, then the sysctl attempt will fail.
|
|
||||||
|
|
||||||
If you remove a tcp congestion control module, then you will get the next
|
|
||||||
available one. Since reno cannot be built as a module, and cannot be
|
available one. Since reno cannot be built as a module, and cannot be
|
||||||
deleted, it will always be available.
|
removed, it will always be available.
|
||||||
|
|
||||||
How the new TCP output machine [nyi] works.
|
How the new TCP output machine [nyi] works.
|
||||||
===========================================
|
===========================================
|
||||||
|
|
33
MAINTAINERS
33
MAINTAINERS
|
@ -1172,7 +1172,7 @@ N: clps711x
|
||||||
|
|
||||||
ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE
|
ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE
|
||||||
M: Hartley Sweeten <hsweeten@visionengravers.com>
|
M: Hartley Sweeten <hsweeten@visionengravers.com>
|
||||||
M: Ryan Mallon <rmallon@gmail.com>
|
M: Alexander Sverdlin <alexander.sverdlin@gmail.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-ep93xx/
|
F: arch/arm/mach-ep93xx/
|
||||||
|
@ -1489,13 +1489,15 @@ M: Gregory Clement <gregory.clement@free-electrons.com>
|
||||||
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-mvebu/
|
|
||||||
F: drivers/rtc/rtc-armada38x.c
|
|
||||||
F: arch/arm/boot/dts/armada*
|
F: arch/arm/boot/dts/armada*
|
||||||
F: arch/arm/boot/dts/kirkwood*
|
F: arch/arm/boot/dts/kirkwood*
|
||||||
|
F: arch/arm/configs/mvebu_*_defconfig
|
||||||
|
F: arch/arm/mach-mvebu/
|
||||||
F: arch/arm64/boot/dts/marvell/armada*
|
F: arch/arm64/boot/dts/marvell/armada*
|
||||||
F: drivers/cpufreq/mvebu-cpufreq.c
|
F: drivers/cpufreq/mvebu-cpufreq.c
|
||||||
F: arch/arm/configs/mvebu_*_defconfig
|
F: drivers/irqchip/irq-armada-370-xp.c
|
||||||
|
F: drivers/irqchip/irq-mvebu-*
|
||||||
|
F: drivers/rtc/rtc-armada38x.c
|
||||||
|
|
||||||
ARM/Marvell Berlin SoC support
|
ARM/Marvell Berlin SoC support
|
||||||
M: Jisheng Zhang <jszhang@marvell.com>
|
M: Jisheng Zhang <jszhang@marvell.com>
|
||||||
|
@ -1721,7 +1723,6 @@ N: rockchip
|
||||||
ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
|
ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
|
||||||
M: Kukjin Kim <kgene@kernel.org>
|
M: Kukjin Kim <kgene@kernel.org>
|
||||||
M: Krzysztof Kozlowski <krzk@kernel.org>
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
R: Javier Martinez Canillas <javier@osg.samsung.com>
|
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||||
Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/
|
Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/
|
||||||
|
@ -1829,7 +1830,6 @@ F: drivers/edac/altera_edac.
|
||||||
ARM/STI ARCHITECTURE
|
ARM/STI ARCHITECTURE
|
||||||
M: Patrice Chotard <patrice.chotard@st.com>
|
M: Patrice Chotard <patrice.chotard@st.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
L: kernel@stlinux.com
|
|
||||||
W: http://www.stlinux.com
|
W: http://www.stlinux.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-sti/
|
F: arch/arm/mach-sti/
|
||||||
|
@ -5630,7 +5630,7 @@ F: scripts/get_maintainer.pl
|
||||||
|
|
||||||
GENWQE (IBM Generic Workqueue Card)
|
GENWQE (IBM Generic Workqueue Card)
|
||||||
M: Frank Haverkamp <haver@linux.vnet.ibm.com>
|
M: Frank Haverkamp <haver@linux.vnet.ibm.com>
|
||||||
M: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
|
M: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/misc/genwqe/
|
F: drivers/misc/genwqe/
|
||||||
|
|
||||||
|
@ -5675,7 +5675,6 @@ F: tools/testing/selftests/gpio/
|
||||||
|
|
||||||
GPIO SUBSYSTEM
|
GPIO SUBSYSTEM
|
||||||
M: Linus Walleij <linus.walleij@linaro.org>
|
M: Linus Walleij <linus.walleij@linaro.org>
|
||||||
M: Alexandre Courbot <gnurou@gmail.com>
|
|
||||||
L: linux-gpio@vger.kernel.org
|
L: linux-gpio@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -7715,7 +7714,7 @@ F: drivers/platform/x86/hp_accel.c
|
||||||
|
|
||||||
LIVE PATCHING
|
LIVE PATCHING
|
||||||
M: Josh Poimboeuf <jpoimboe@redhat.com>
|
M: Josh Poimboeuf <jpoimboe@redhat.com>
|
||||||
M: Jessica Yu <jeyu@redhat.com>
|
M: Jessica Yu <jeyu@kernel.org>
|
||||||
M: Jiri Kosina <jikos@kernel.org>
|
M: Jiri Kosina <jikos@kernel.org>
|
||||||
M: Miroslav Benes <mbenes@suse.cz>
|
M: Miroslav Benes <mbenes@suse.cz>
|
||||||
R: Petr Mladek <pmladek@suse.com>
|
R: Petr Mladek <pmladek@suse.com>
|
||||||
|
@ -8547,7 +8546,7 @@ S: Odd Fixes
|
||||||
F: drivers/media/radio/radio-miropcm20*
|
F: drivers/media/radio/radio-miropcm20*
|
||||||
|
|
||||||
MELLANOX MLX4 core VPI driver
|
MELLANOX MLX4 core VPI driver
|
||||||
M: Yishai Hadas <yishaih@mellanox.com>
|
M: Tariq Toukan <tariqt@mellanox.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: linux-rdma@vger.kernel.org
|
L: linux-rdma@vger.kernel.org
|
||||||
W: http://www.mellanox.com
|
W: http://www.mellanox.com
|
||||||
|
@ -8555,7 +8554,6 @@ Q: http://patchwork.ozlabs.org/project/netdev/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/mellanox/mlx4/
|
F: drivers/net/ethernet/mellanox/mlx4/
|
||||||
F: include/linux/mlx4/
|
F: include/linux/mlx4/
|
||||||
F: include/uapi/rdma/mlx4-abi.h
|
|
||||||
|
|
||||||
MELLANOX MLX4 IB driver
|
MELLANOX MLX4 IB driver
|
||||||
M: Yishai Hadas <yishaih@mellanox.com>
|
M: Yishai Hadas <yishaih@mellanox.com>
|
||||||
|
@ -8565,6 +8563,7 @@ Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/infiniband/hw/mlx4/
|
F: drivers/infiniband/hw/mlx4/
|
||||||
F: include/linux/mlx4/
|
F: include/linux/mlx4/
|
||||||
|
F: include/uapi/rdma/mlx4-abi.h
|
||||||
|
|
||||||
MELLANOX MLX5 core VPI driver
|
MELLANOX MLX5 core VPI driver
|
||||||
M: Saeed Mahameed <saeedm@mellanox.com>
|
M: Saeed Mahameed <saeedm@mellanox.com>
|
||||||
|
@ -8577,7 +8576,6 @@ Q: http://patchwork.ozlabs.org/project/netdev/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/mellanox/mlx5/core/
|
F: drivers/net/ethernet/mellanox/mlx5/core/
|
||||||
F: include/linux/mlx5/
|
F: include/linux/mlx5/
|
||||||
F: include/uapi/rdma/mlx5-abi.h
|
|
||||||
|
|
||||||
MELLANOX MLX5 IB driver
|
MELLANOX MLX5 IB driver
|
||||||
M: Matan Barak <matanb@mellanox.com>
|
M: Matan Barak <matanb@mellanox.com>
|
||||||
|
@ -8588,6 +8586,7 @@ Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/infiniband/hw/mlx5/
|
F: drivers/infiniband/hw/mlx5/
|
||||||
F: include/linux/mlx5/
|
F: include/linux/mlx5/
|
||||||
|
F: include/uapi/rdma/mlx5-abi.h
|
||||||
|
|
||||||
MELEXIS MLX90614 DRIVER
|
MELEXIS MLX90614 DRIVER
|
||||||
M: Crt Mori <cmo@melexis.com>
|
M: Crt Mori <cmo@melexis.com>
|
||||||
|
@ -8627,7 +8626,7 @@ S: Maintained
|
||||||
F: drivers/media/dvb-frontends/mn88473*
|
F: drivers/media/dvb-frontends/mn88473*
|
||||||
|
|
||||||
MODULE SUPPORT
|
MODULE SUPPORT
|
||||||
M: Jessica Yu <jeyu@redhat.com>
|
M: Jessica Yu <jeyu@kernel.org>
|
||||||
M: Rusty Russell <rusty@rustcorp.com.au>
|
M: Rusty Russell <rusty@rustcorp.com.au>
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git modules-next
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git modules-next
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -10503,7 +10502,7 @@ S: Orphan
|
||||||
|
|
||||||
PXA RTC DRIVER
|
PXA RTC DRIVER
|
||||||
M: Robert Jarzmik <robert.jarzmik@free.fr>
|
M: Robert Jarzmik <robert.jarzmik@free.fr>
|
||||||
L: rtc-linux@googlegroups.com
|
L: linux-rtc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
QAT DRIVER
|
QAT DRIVER
|
||||||
|
@ -10810,7 +10809,7 @@ X: kernel/torture.c
|
||||||
REAL TIME CLOCK (RTC) SUBSYSTEM
|
REAL TIME CLOCK (RTC) SUBSYSTEM
|
||||||
M: Alessandro Zummo <a.zummo@towertech.it>
|
M: Alessandro Zummo <a.zummo@towertech.it>
|
||||||
M: Alexandre Belloni <alexandre.belloni@free-electrons.com>
|
M: Alexandre Belloni <alexandre.belloni@free-electrons.com>
|
||||||
L: rtc-linux@googlegroups.com
|
L: linux-rtc@vger.kernel.org
|
||||||
Q: http://patchwork.ozlabs.org/project/rtc-linux/list/
|
Q: http://patchwork.ozlabs.org/project/rtc-linux/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -11321,7 +11320,6 @@ F: drivers/media/rc/serial_ir.c
|
||||||
|
|
||||||
STI CEC DRIVER
|
STI CEC DRIVER
|
||||||
M: Benjamin Gaignard <benjamin.gaignard@linaro.org>
|
M: Benjamin Gaignard <benjamin.gaignard@linaro.org>
|
||||||
L: kernel@stlinux.com
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/staging/media/st-cec/
|
F: drivers/staging/media/st-cec/
|
||||||
F: Documentation/devicetree/bindings/media/stih-cec.txt
|
F: Documentation/devicetree/bindings/media/stih-cec.txt
|
||||||
|
@ -11831,6 +11829,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/arm/mach-davinci/
|
F: arch/arm/mach-davinci/
|
||||||
F: drivers/i2c/busses/i2c-davinci.c
|
F: drivers/i2c/busses/i2c-davinci.c
|
||||||
|
F: arch/arm/boot/dts/da850*
|
||||||
|
|
||||||
TI DAVINCI SERIES MEDIA DRIVER
|
TI DAVINCI SERIES MEDIA DRIVER
|
||||||
M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
|
M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
|
||||||
|
@ -13920,7 +13919,7 @@ S: Odd fixes
|
||||||
F: drivers/net/wireless/wl3501*
|
F: drivers/net/wireless/wl3501*
|
||||||
|
|
||||||
WOLFSON MICROELECTRONICS DRIVERS
|
WOLFSON MICROELECTRONICS DRIVERS
|
||||||
L: patches@opensource.wolfsonmicro.com
|
L: patches@opensource.cirrus.com
|
||||||
T: git https://github.com/CirrusLogic/linux-drivers.git
|
T: git https://github.com/CirrusLogic/linux-drivers.git
|
||||||
W: https://github.com/CirrusLogic/linux-drivers/wiki
|
W: https://github.com/CirrusLogic/linux-drivers/wiki
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 12
|
PATCHLEVEL = 12
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION = -rc6
|
||||||
NAME = Fearless Coyote
|
NAME = Fearless Coyote
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -65,7 +65,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||||
|
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,14 +17,12 @@
|
||||||
@ there.
|
@ there.
|
||||||
.inst 'M' | ('Z' << 8) | (0x1310 << 16) @ tstne r0, #0x4d000
|
.inst 'M' | ('Z' << 8) | (0x1310 << 16) @ tstne r0, #0x4d000
|
||||||
#else
|
#else
|
||||||
mov r0, r0
|
W(mov) r0, r0
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro __EFI_HEADER
|
.macro __EFI_HEADER
|
||||||
#ifdef CONFIG_EFI_STUB
|
#ifdef CONFIG_EFI_STUB
|
||||||
b __efi_start
|
|
||||||
|
|
||||||
.set start_offset, __efi_start - start
|
.set start_offset, __efi_start - start
|
||||||
.org start + 0x3c
|
.org start + 0x3c
|
||||||
@
|
@
|
||||||
|
|
|
@ -130,19 +130,22 @@ start:
|
||||||
.rept 7
|
.rept 7
|
||||||
__nop
|
__nop
|
||||||
.endr
|
.endr
|
||||||
ARM( mov r0, r0 )
|
#ifndef CONFIG_THUMB2_KERNEL
|
||||||
ARM( b 1f )
|
mov r0, r0
|
||||||
THUMB( badr r12, 1f )
|
#else
|
||||||
THUMB( bx r12 )
|
AR_CLASS( sub pc, pc, #3 ) @ A/R: switch to Thumb2 mode
|
||||||
|
M_CLASS( nop.w ) @ M: already in Thumb2 mode
|
||||||
|
.thumb
|
||||||
|
#endif
|
||||||
|
W(b) 1f
|
||||||
|
|
||||||
.word _magic_sig @ Magic numbers to help the loader
|
.word _magic_sig @ Magic numbers to help the loader
|
||||||
.word _magic_start @ absolute load/run zImage address
|
.word _magic_start @ absolute load/run zImage address
|
||||||
.word _magic_end @ zImage end address
|
.word _magic_end @ zImage end address
|
||||||
.word 0x04030201 @ endianness flag
|
.word 0x04030201 @ endianness flag
|
||||||
|
|
||||||
THUMB( .thumb )
|
__EFI_HEADER
|
||||||
1: __EFI_HEADER
|
1:
|
||||||
|
|
||||||
ARM_BE8( setend be ) @ go BE8 if compiled for BE8
|
ARM_BE8( setend be ) @ go BE8 if compiled for BE8
|
||||||
AR_CLASS( mrs r9, cpsr )
|
AR_CLASS( mrs r9, cpsr )
|
||||||
#ifdef CONFIG_ARM_VIRT_EXT
|
#ifdef CONFIG_ARM_VIRT_EXT
|
||||||
|
|
|
@ -220,7 +220,7 @@
|
||||||
|
|
||||||
mmc1_pins: pinmux_mmc1_pins {
|
mmc1_pins: pinmux_mmc1_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */
|
AM33XX_IOPAD(0x96c, PIN_INPUT | MUX_MODE7) /* uart0_rtsn.gpio1_9 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -280,10 +280,6 @@
|
||||||
AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdReset - gpmc_ad13.gpio1_13 */
|
AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE7) /* nKbdReset - gpmc_ad13.gpio1_13 */
|
||||||
AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE7) /* nDispReset - gpmc_ad14.gpio1_14 */
|
AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE7) /* nDispReset - gpmc_ad14.gpio1_14 */
|
||||||
AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE7) /* USB1_enPower - gpmc_a1.gpio1_17 */
|
AM33XX_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE7) /* USB1_enPower - gpmc_a1.gpio1_17 */
|
||||||
/* AVR Programming - SPI Bus (bit bang) - Screen and Keyboard */
|
|
||||||
AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE7) /* Kbd/Disp/BattMOSI spi0_d0.gpio0_3 */
|
|
||||||
AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE7) /* Kbd/Disp/BattMISO spi0_d1.gpio0_4 */
|
|
||||||
AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE7) /* Kbd/Disp/BattSCLK spi0_clk.gpio0_2 */
|
|
||||||
/* PDI Bus - Battery system */
|
/* PDI Bus - Battery system */
|
||||||
AM33XX_IOPAD(0x840, PIN_INPUT_PULLUP | MUX_MODE7) /* nBattReset gpmc_a0.gpio1_16 */
|
AM33XX_IOPAD(0x840, PIN_INPUT_PULLUP | MUX_MODE7) /* nBattReset gpmc_a0.gpio1_16 */
|
||||||
AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE7) /* BattPDIData gpmc_ad15.gpio1_15 */
|
AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE7) /* BattPDIData gpmc_ad15.gpio1_15 */
|
||||||
|
@ -384,7 +380,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmc1_pins>;
|
pinctrl-0 = <&mmc1_pins>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
|
||||||
vmmc-supply = <&vmmcsd_fixed>;
|
vmmc-supply = <&vmmcsd_fixed>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
#include <dt-bindings/clock/bcm2835-aux.h>
|
#include <dt-bindings/clock/bcm2835-aux.h>
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
/* firmware-provided startup stubs live here, where the secondary CPUs are
|
||||||
|
* spinning.
|
||||||
|
*/
|
||||||
|
/memreserve/ 0x00000000 0x00001000;
|
||||||
|
|
||||||
/* This include file covers the common peripherals and configuration between
|
/* This include file covers the common peripherals and configuration between
|
||||||
* bcm2835 and bcm2836 implementations, leaving the CPU configuration to
|
* bcm2835 and bcm2836 implementations, leaving the CPU configuration to
|
||||||
* bcm2835.dtsi and bcm2836.dtsi.
|
* bcm2835.dtsi and bcm2836.dtsi.
|
||||||
|
|
|
@ -120,10 +120,16 @@
|
||||||
|
|
||||||
ethphy0: ethernet-phy@2 {
|
ethphy0: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
|
micrel,led-mode = <1>;
|
||||||
|
clocks = <&clks IMX6UL_CLK_ENET_REF>;
|
||||||
|
clock-names = "rmii-ref";
|
||||||
};
|
};
|
||||||
|
|
||||||
ethphy1: ethernet-phy@1 {
|
ethphy1: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
|
micrel,led-mode = <1>;
|
||||||
|
clocks = <&clks IMX6UL_CLK_ENET2_REF>;
|
||||||
|
clock-names = "rmii-ref";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -137,8 +137,8 @@ netcp: netcp@26000000 {
|
||||||
/* NetCP address range */
|
/* NetCP address range */
|
||||||
ranges = <0 0x26000000 0x1000000>;
|
ranges = <0 0x26000000 0x1000000>;
|
||||||
|
|
||||||
clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>, <&clkosr>;
|
clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>;
|
||||||
clock-names = "pa_clk", "ethss_clk", "cpts", "osr_clk";
|
clock-names = "pa_clk", "ethss_clk", "cpts";
|
||||||
dma-coherent;
|
dma-coherent;
|
||||||
|
|
||||||
ti,navigator-dmas = <&dma_gbe 0>,
|
ti,navigator-dmas = <&dma_gbe 0>,
|
||||||
|
|
|
@ -232,6 +232,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
osr: sram@70000000 {
|
||||||
|
compatible = "mmio-sram";
|
||||||
|
reg = <0x70000000 0x10000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
clocks = <&clkosr>;
|
||||||
|
};
|
||||||
|
|
||||||
dspgpio0: keystone_dsp_gpio@02620240 {
|
dspgpio0: keystone_dsp_gpio@02620240 {
|
||||||
compatible = "ti,keystone-dsp-gpio";
|
compatible = "ti,keystone-dsp-gpio";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
|
|
@ -558,10 +558,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
r_ccu: clock@1f01400 {
|
r_ccu: clock@1f01400 {
|
||||||
compatible = "allwinner,sun50i-a64-r-ccu";
|
compatible = "allwinner,sun8i-h3-r-ccu";
|
||||||
reg = <0x01f01400 0x100>;
|
reg = <0x01f01400 0x100>;
|
||||||
clocks = <&osc24M>, <&osc32k>, <&iosc>;
|
clocks = <&osc24M>, <&osc32k>, <&iosc>,
|
||||||
clock-names = "hosc", "losc", "iosc";
|
<&ccu 9>;
|
||||||
|
clock-names = "hosc", "losc", "iosc", "pll-periph";
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include <versatile-ab.dts>
|
#include "versatile-ab.dts"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "ARM Versatile PB";
|
model = "ARM Versatile PB";
|
||||||
|
|
|
@ -235,7 +235,7 @@ int mcpm_cpu_power_up(unsigned int cpu, unsigned int cluster)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef void (*phys_reset_t)(unsigned long);
|
typedef typeof(cpu_reset) phys_reset_t;
|
||||||
|
|
||||||
void mcpm_cpu_power_down(void)
|
void mcpm_cpu_power_down(void)
|
||||||
{
|
{
|
||||||
|
@ -300,7 +300,7 @@ void mcpm_cpu_power_down(void)
|
||||||
* on the CPU.
|
* on the CPU.
|
||||||
*/
|
*/
|
||||||
phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset);
|
phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset);
|
||||||
phys_reset(__pa_symbol(mcpm_entry_point));
|
phys_reset(__pa_symbol(mcpm_entry_point), false);
|
||||||
|
|
||||||
/* should never get here */
|
/* should never get here */
|
||||||
BUG();
|
BUG();
|
||||||
|
@ -389,7 +389,7 @@ static int __init nocache_trampoline(unsigned long _arg)
|
||||||
__mcpm_cpu_down(cpu, cluster);
|
__mcpm_cpu_down(cpu, cluster);
|
||||||
|
|
||||||
phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset);
|
phys_reset = (phys_reset_t)(unsigned long)__pa_symbol(cpu_reset);
|
||||||
phys_reset(__pa_symbol(mcpm_entry_point));
|
phys_reset(__pa_symbol(mcpm_entry_point), false);
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,8 @@ struct dev_archdata {
|
||||||
#ifdef CONFIG_XEN
|
#ifdef CONFIG_XEN
|
||||||
const struct dma_map_ops *dev_dma_ops;
|
const struct dma_map_ops *dev_dma_ops;
|
||||||
#endif
|
#endif
|
||||||
bool dma_coherent;
|
unsigned int dma_coherent:1;
|
||||||
|
unsigned int dma_ops_setup:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct omap_device;
|
struct omap_device;
|
||||||
|
|
|
@ -66,6 +66,7 @@ typedef pte_t *pte_addr_t;
|
||||||
#define pgprot_noncached(prot) (prot)
|
#define pgprot_noncached(prot) (prot)
|
||||||
#define pgprot_writecombine(prot) (prot)
|
#define pgprot_writecombine(prot) (prot)
|
||||||
#define pgprot_dmacoherent(prot) (prot)
|
#define pgprot_dmacoherent(prot) (prot)
|
||||||
|
#define pgprot_device(prot) (prot)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -104,7 +104,6 @@ __do_hyp_init:
|
||||||
@ - Write permission implies XN: disabled
|
@ - Write permission implies XN: disabled
|
||||||
@ - Instruction cache: enabled
|
@ - Instruction cache: enabled
|
||||||
@ - Data/Unified cache: enabled
|
@ - Data/Unified cache: enabled
|
||||||
@ - Memory alignment checks: enabled
|
|
||||||
@ - MMU: enabled (this code must be run from an identity mapping)
|
@ - MMU: enabled (this code must be run from an identity mapping)
|
||||||
mrc p15, 4, r0, c1, c0, 0 @ HSCR
|
mrc p15, 4, r0, c1, c0, 0 @ HSCR
|
||||||
ldr r2, =HSCTLR_MASK
|
ldr r2, =HSCTLR_MASK
|
||||||
|
@ -112,8 +111,8 @@ __do_hyp_init:
|
||||||
mrc p15, 0, r1, c1, c0, 0 @ SCTLR
|
mrc p15, 0, r1, c1, c0, 0 @ SCTLR
|
||||||
ldr r2, =(HSCTLR_EE | HSCTLR_FI | HSCTLR_I | HSCTLR_C)
|
ldr r2, =(HSCTLR_EE | HSCTLR_FI | HSCTLR_I | HSCTLR_C)
|
||||||
and r1, r1, r2
|
and r1, r1, r2
|
||||||
ARM( ldr r2, =(HSCTLR_M | HSCTLR_A) )
|
ARM( ldr r2, =(HSCTLR_M) )
|
||||||
THUMB( ldr r2, =(HSCTLR_M | HSCTLR_A | HSCTLR_TE) )
|
THUMB( ldr r2, =(HSCTLR_M | HSCTLR_TE) )
|
||||||
orr r1, r1, r2
|
orr r1, r1, r2
|
||||||
orr r0, r0, r1
|
orr r0, r0, r1
|
||||||
mcr p15, 4, r0, c1, c0, 0 @ HSCR
|
mcr p15, 4, r0, c1, c0, 0 @ HSCR
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
menuconfig ARCH_AT91
|
menuconfig ARCH_AT91
|
||||||
bool "Atmel SoCs"
|
bool "Atmel SoCs"
|
||||||
depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7
|
depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7
|
||||||
|
select ARM_CPU_SUSPEND if PM
|
||||||
select COMMON_CLK_AT91
|
select COMMON_CLK_AT91
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
select PINCTRL
|
select PINCTRL
|
||||||
|
|
|
@ -153,7 +153,8 @@ int __init davinci_pm_init(void)
|
||||||
davinci_sram_suspend = sram_alloc(davinci_cpu_suspend_sz, NULL);
|
davinci_sram_suspend = sram_alloc(davinci_cpu_suspend_sz, NULL);
|
||||||
if (!davinci_sram_suspend) {
|
if (!davinci_sram_suspend) {
|
||||||
pr_err("PM: cannot allocate SRAM memory\n");
|
pr_err("PM: cannot allocate SRAM memory\n");
|
||||||
return -ENOMEM;
|
ret = -ENOMEM;
|
||||||
|
goto no_sram_mem;
|
||||||
}
|
}
|
||||||
|
|
||||||
davinci_sram_push(davinci_sram_suspend, davinci_cpu_suspend,
|
davinci_sram_push(davinci_sram_suspend, davinci_cpu_suspend,
|
||||||
|
@ -161,6 +162,10 @@ int __init davinci_pm_init(void)
|
||||||
|
|
||||||
suspend_set_ops(&davinci_pm_ops);
|
suspend_set_ops(&davinci_pm_ops);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
no_sram_mem:
|
||||||
|
iounmap(pm_config.ddrpsc_reg_base);
|
||||||
no_ddrpsc_mem:
|
no_ddrpsc_mem:
|
||||||
iounmap(pm_config.ddrpll_reg_base);
|
iounmap(pm_config.ddrpll_reg_base);
|
||||||
no_ddrpll_mem:
|
no_ddrpll_mem:
|
||||||
|
|
|
@ -2311,7 +2311,14 @@ int arm_iommu_attach_device(struct device *dev,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(arm_iommu_attach_device);
|
EXPORT_SYMBOL_GPL(arm_iommu_attach_device);
|
||||||
|
|
||||||
static void __arm_iommu_detach_device(struct device *dev)
|
/**
|
||||||
|
* arm_iommu_detach_device
|
||||||
|
* @dev: valid struct device pointer
|
||||||
|
*
|
||||||
|
* Detaches the provided device from a previously attached map.
|
||||||
|
* This voids the dma operations (dma_map_ops pointer)
|
||||||
|
*/
|
||||||
|
void arm_iommu_detach_device(struct device *dev)
|
||||||
{
|
{
|
||||||
struct dma_iommu_mapping *mapping;
|
struct dma_iommu_mapping *mapping;
|
||||||
|
|
||||||
|
@ -2324,22 +2331,10 @@ static void __arm_iommu_detach_device(struct device *dev)
|
||||||
iommu_detach_device(mapping->domain, dev);
|
iommu_detach_device(mapping->domain, dev);
|
||||||
kref_put(&mapping->kref, release_iommu_mapping);
|
kref_put(&mapping->kref, release_iommu_mapping);
|
||||||
to_dma_iommu_mapping(dev) = NULL;
|
to_dma_iommu_mapping(dev) = NULL;
|
||||||
|
set_dma_ops(dev, NULL);
|
||||||
|
|
||||||
pr_debug("Detached IOMMU controller from %s device.\n", dev_name(dev));
|
pr_debug("Detached IOMMU controller from %s device.\n", dev_name(dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* arm_iommu_detach_device
|
|
||||||
* @dev: valid struct device pointer
|
|
||||||
*
|
|
||||||
* Detaches the provided device from a previously attached map.
|
|
||||||
* This voids the dma operations (dma_map_ops pointer)
|
|
||||||
*/
|
|
||||||
void arm_iommu_detach_device(struct device *dev)
|
|
||||||
{
|
|
||||||
__arm_iommu_detach_device(dev);
|
|
||||||
set_dma_ops(dev, NULL);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(arm_iommu_detach_device);
|
EXPORT_SYMBOL_GPL(arm_iommu_detach_device);
|
||||||
|
|
||||||
static const struct dma_map_ops *arm_get_iommu_dma_map_ops(bool coherent)
|
static const struct dma_map_ops *arm_get_iommu_dma_map_ops(bool coherent)
|
||||||
|
@ -2379,7 +2374,7 @@ static void arm_teardown_iommu_dma_ops(struct device *dev)
|
||||||
if (!mapping)
|
if (!mapping)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
__arm_iommu_detach_device(dev);
|
arm_iommu_detach_device(dev);
|
||||||
arm_iommu_release_mapping(mapping);
|
arm_iommu_release_mapping(mapping);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2430,9 +2425,13 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
|
||||||
dev->dma_ops = xen_dma_ops;
|
dev->dma_ops = xen_dma_ops;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
dev->archdata.dma_ops_setup = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void arch_teardown_dma_ops(struct device *dev)
|
void arch_teardown_dma_ops(struct device *dev)
|
||||||
{
|
{
|
||||||
|
if (!dev->archdata.dma_ops_setup)
|
||||||
|
return;
|
||||||
|
|
||||||
arm_teardown_iommu_dma_ops(dev);
|
arm_teardown_iommu_dma_ops(dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||||
|
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1084,10 +1084,6 @@ config SYSVIPC_COMPAT
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on COMPAT && SYSVIPC
|
depends on COMPAT && SYSVIPC
|
||||||
|
|
||||||
config KEYS_COMPAT
|
|
||||||
def_bool y
|
|
||||||
depends on COMPAT && KEYS
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu "Power management options"
|
menu "Power management options"
|
||||||
|
|
|
@ -406,8 +406,9 @@
|
||||||
r_ccu: clock@1f01400 {
|
r_ccu: clock@1f01400 {
|
||||||
compatible = "allwinner,sun50i-a64-r-ccu";
|
compatible = "allwinner,sun50i-a64-r-ccu";
|
||||||
reg = <0x01f01400 0x100>;
|
reg = <0x01f01400 0x100>;
|
||||||
clocks = <&osc24M>, <&osc32k>, <&iosc>;
|
clocks = <&osc24M>, <&osc32k>, <&iosc>,
|
||||||
clock-names = "hosc", "losc", "iosc";
|
<&ccu 11>;
|
||||||
|
clock-names = "hosc", "losc", "iosc", "pll-periph";
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "sunxi-h3-h5.dtsi"
|
#include <arm/sunxi-h3-h5.dtsi>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
cpus {
|
cpus {
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
../../../../arm/boot/dts/sunxi-h3-h5.dtsi
|
|
|
@ -231,8 +231,7 @@
|
||||||
cpm_crypto: crypto@800000 {
|
cpm_crypto: crypto@800000 {
|
||||||
compatible = "inside-secure,safexcel-eip197";
|
compatible = "inside-secure,safexcel-eip197";
|
||||||
reg = <0x800000 0x200000>;
|
reg = <0x800000 0x200000>;
|
||||||
interrupts = <GIC_SPI 34 (IRQ_TYPE_EDGE_RISING
|
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
| IRQ_TYPE_LEVEL_HIGH)>,
|
|
||||||
<GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
|
|
@ -221,8 +221,7 @@
|
||||||
cps_crypto: crypto@800000 {
|
cps_crypto: crypto@800000 {
|
||||||
compatible = "inside-secure,safexcel-eip197";
|
compatible = "inside-secure,safexcel-eip197";
|
||||||
reg = <0x800000 0x200000>;
|
reg = <0x800000 0x200000>;
|
||||||
interrupts = <GIC_SPI 34 (IRQ_TYPE_EDGE_RISING
|
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
| IRQ_TYPE_LEVEL_HIGH)>,
|
|
||||||
<GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
|
|
@ -68,6 +68,7 @@ CONFIG_PCIE_QCOM=y
|
||||||
CONFIG_PCIE_ARMADA_8K=y
|
CONFIG_PCIE_ARMADA_8K=y
|
||||||
CONFIG_PCI_AARDVARK=y
|
CONFIG_PCI_AARDVARK=y
|
||||||
CONFIG_PCIE_RCAR=y
|
CONFIG_PCIE_RCAR=y
|
||||||
|
CONFIG_PCIE_ROCKCHIP=m
|
||||||
CONFIG_PCI_HOST_GENERIC=y
|
CONFIG_PCI_HOST_GENERIC=y
|
||||||
CONFIG_PCI_XGENE=y
|
CONFIG_PCI_XGENE=y
|
||||||
CONFIG_ARM64_VA_BITS_48=y
|
CONFIG_ARM64_VA_BITS_48=y
|
||||||
|
@ -208,6 +209,8 @@ CONFIG_BRCMFMAC=m
|
||||||
CONFIG_WL18XX=m
|
CONFIG_WL18XX=m
|
||||||
CONFIG_WLCORE_SDIO=m
|
CONFIG_WLCORE_SDIO=m
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
|
CONFIG_KEYBOARD_ADC=m
|
||||||
|
CONFIG_KEYBOARD_CROS_EC=y
|
||||||
CONFIG_KEYBOARD_GPIO=y
|
CONFIG_KEYBOARD_GPIO=y
|
||||||
CONFIG_INPUT_MISC=y
|
CONFIG_INPUT_MISC=y
|
||||||
CONFIG_INPUT_PM8941_PWRKEY=y
|
CONFIG_INPUT_PM8941_PWRKEY=y
|
||||||
|
@ -263,6 +266,7 @@ CONFIG_SPI_MESON_SPIFC=m
|
||||||
CONFIG_SPI_ORION=y
|
CONFIG_SPI_ORION=y
|
||||||
CONFIG_SPI_PL022=y
|
CONFIG_SPI_PL022=y
|
||||||
CONFIG_SPI_QUP=y
|
CONFIG_SPI_QUP=y
|
||||||
|
CONFIG_SPI_ROCKCHIP=y
|
||||||
CONFIG_SPI_S3C64XX=y
|
CONFIG_SPI_S3C64XX=y
|
||||||
CONFIG_SPI_SPIDEV=m
|
CONFIG_SPI_SPIDEV=m
|
||||||
CONFIG_SPMI=y
|
CONFIG_SPMI=y
|
||||||
|
@ -292,6 +296,7 @@ CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
|
||||||
CONFIG_CPU_THERMAL=y
|
CONFIG_CPU_THERMAL=y
|
||||||
CONFIG_THERMAL_EMULATION=y
|
CONFIG_THERMAL_EMULATION=y
|
||||||
CONFIG_EXYNOS_THERMAL=y
|
CONFIG_EXYNOS_THERMAL=y
|
||||||
|
CONFIG_ROCKCHIP_THERMAL=m
|
||||||
CONFIG_WATCHDOG=y
|
CONFIG_WATCHDOG=y
|
||||||
CONFIG_S3C2410_WATCHDOG=y
|
CONFIG_S3C2410_WATCHDOG=y
|
||||||
CONFIG_MESON_GXBB_WATCHDOG=m
|
CONFIG_MESON_GXBB_WATCHDOG=m
|
||||||
|
@ -300,12 +305,14 @@ CONFIG_RENESAS_WDT=y
|
||||||
CONFIG_BCM2835_WDT=y
|
CONFIG_BCM2835_WDT=y
|
||||||
CONFIG_MFD_CROS_EC=y
|
CONFIG_MFD_CROS_EC=y
|
||||||
CONFIG_MFD_CROS_EC_I2C=y
|
CONFIG_MFD_CROS_EC_I2C=y
|
||||||
|
CONFIG_MFD_CROS_EC_SPI=y
|
||||||
CONFIG_MFD_EXYNOS_LPASS=m
|
CONFIG_MFD_EXYNOS_LPASS=m
|
||||||
CONFIG_MFD_HI655X_PMIC=y
|
CONFIG_MFD_HI655X_PMIC=y
|
||||||
CONFIG_MFD_MAX77620=y
|
CONFIG_MFD_MAX77620=y
|
||||||
CONFIG_MFD_SPMI_PMIC=y
|
CONFIG_MFD_SPMI_PMIC=y
|
||||||
CONFIG_MFD_RK808=y
|
CONFIG_MFD_RK808=y
|
||||||
CONFIG_MFD_SEC_CORE=y
|
CONFIG_MFD_SEC_CORE=y
|
||||||
|
CONFIG_REGULATOR_FAN53555=y
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||||
CONFIG_REGULATOR_GPIO=y
|
CONFIG_REGULATOR_GPIO=y
|
||||||
CONFIG_REGULATOR_HI655X=y
|
CONFIG_REGULATOR_HI655X=y
|
||||||
|
@ -473,8 +480,10 @@ CONFIG_ARCH_TEGRA_186_SOC=y
|
||||||
CONFIG_EXTCON_USB_GPIO=y
|
CONFIG_EXTCON_USB_GPIO=y
|
||||||
CONFIG_IIO=y
|
CONFIG_IIO=y
|
||||||
CONFIG_EXYNOS_ADC=y
|
CONFIG_EXYNOS_ADC=y
|
||||||
|
CONFIG_ROCKCHIP_SARADC=m
|
||||||
CONFIG_PWM=y
|
CONFIG_PWM=y
|
||||||
CONFIG_PWM_BCM2835=m
|
CONFIG_PWM_BCM2835=m
|
||||||
|
CONFIG_PWM_CROS_EC=m
|
||||||
CONFIG_PWM_MESON=m
|
CONFIG_PWM_MESON=m
|
||||||
CONFIG_PWM_ROCKCHIP=y
|
CONFIG_PWM_ROCKCHIP=y
|
||||||
CONFIG_PWM_SAMSUNG=y
|
CONFIG_PWM_SAMSUNG=y
|
||||||
|
@ -484,6 +493,7 @@ CONFIG_PHY_HI6220_USB=y
|
||||||
CONFIG_PHY_SUN4I_USB=y
|
CONFIG_PHY_SUN4I_USB=y
|
||||||
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||||
|
CONFIG_PHY_ROCKCHIP_PCIE=m
|
||||||
CONFIG_PHY_XGENE=y
|
CONFIG_PHY_XGENE=y
|
||||||
CONFIG_PHY_TEGRA_XUSB=y
|
CONFIG_PHY_TEGRA_XUSB=y
|
||||||
CONFIG_ARM_SCPI_PROTOCOL=y
|
CONFIG_ARM_SCPI_PROTOCOL=y
|
||||||
|
|
|
@ -23,9 +23,9 @@
|
||||||
#define ACPI_MADT_GICC_LENGTH \
|
#define ACPI_MADT_GICC_LENGTH \
|
||||||
(acpi_gbl_FADT.header.revision < 6 ? 76 : 80)
|
(acpi_gbl_FADT.header.revision < 6 ? 76 : 80)
|
||||||
|
|
||||||
#define BAD_MADT_GICC_ENTRY(entry, end) \
|
#define BAD_MADT_GICC_ENTRY(entry, end) \
|
||||||
(!(entry) || (unsigned long)(entry) + sizeof(*(entry)) > (end) || \
|
(!(entry) || (entry)->header.length != ACPI_MADT_GICC_LENGTH || \
|
||||||
(entry)->header.length != ACPI_MADT_GICC_LENGTH)
|
(unsigned long)(entry) + ACPI_MADT_GICC_LENGTH > (end))
|
||||||
|
|
||||||
/* Basic configuration for ACPI */
|
/* Basic configuration for ACPI */
|
||||||
#ifdef CONFIG_ACPI
|
#ifdef CONFIG_ACPI
|
||||||
|
|
|
@ -286,6 +286,10 @@
|
||||||
#define SCTLR_ELx_A (1 << 1)
|
#define SCTLR_ELx_A (1 << 1)
|
||||||
#define SCTLR_ELx_M 1
|
#define SCTLR_ELx_M 1
|
||||||
|
|
||||||
|
#define SCTLR_EL2_RES1 ((1 << 4) | (1 << 5) | (1 << 11) | (1 << 16) | \
|
||||||
|
(1 << 16) | (1 << 18) | (1 << 22) | (1 << 23) | \
|
||||||
|
(1 << 28) | (1 << 29))
|
||||||
|
|
||||||
#define SCTLR_ELx_FLAGS (SCTLR_ELx_M | SCTLR_ELx_A | SCTLR_ELx_C | \
|
#define SCTLR_ELx_FLAGS (SCTLR_ELx_M | SCTLR_ELx_A | SCTLR_ELx_C | \
|
||||||
SCTLR_ELx_SA | SCTLR_ELx_I)
|
SCTLR_ELx_SA | SCTLR_ELx_I)
|
||||||
|
|
||||||
|
|
|
@ -191,8 +191,10 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
root_ops = kzalloc_node(sizeof(*root_ops), GFP_KERNEL, node);
|
root_ops = kzalloc_node(sizeof(*root_ops), GFP_KERNEL, node);
|
||||||
if (!root_ops)
|
if (!root_ops) {
|
||||||
|
kfree(ri);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
ri->cfg = pci_acpi_setup_ecam_mapping(root);
|
ri->cfg = pci_acpi_setup_ecam_mapping(root);
|
||||||
if (!ri->cfg) {
|
if (!ri->cfg) {
|
||||||
|
|
|
@ -106,10 +106,13 @@ __do_hyp_init:
|
||||||
tlbi alle2
|
tlbi alle2
|
||||||
dsb sy
|
dsb sy
|
||||||
|
|
||||||
mrs x4, sctlr_el2
|
/*
|
||||||
and x4, x4, #SCTLR_ELx_EE // preserve endianness of EL2
|
* Preserve all the RES1 bits while setting the default flags,
|
||||||
ldr x5, =SCTLR_ELx_FLAGS
|
* as well as the EE bit on BE. Drop the A flag since the compiler
|
||||||
orr x4, x4, x5
|
* is allowed to generate unaligned accesses.
|
||||||
|
*/
|
||||||
|
ldr x4, =(SCTLR_EL2_RES1 | (SCTLR_ELx_FLAGS & ~SCTLR_ELx_A))
|
||||||
|
CPU_BE( orr x4, x4, #SCTLR_ELx_EE)
|
||||||
msr sctlr_el2, x4
|
msr sctlr_el2, x4
|
||||||
isb
|
isb
|
||||||
|
|
||||||
|
|
|
@ -65,8 +65,8 @@ static bool access_gic_ctlr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
|
||||||
* Here set VMCR.CTLR in ICC_CTLR_EL1 layout.
|
* Here set VMCR.CTLR in ICC_CTLR_EL1 layout.
|
||||||
* The vgic_set_vmcr() will convert to ICH_VMCR layout.
|
* The vgic_set_vmcr() will convert to ICH_VMCR layout.
|
||||||
*/
|
*/
|
||||||
vmcr.ctlr = val & ICC_CTLR_EL1_CBPR_MASK;
|
vmcr.cbpr = (val & ICC_CTLR_EL1_CBPR_MASK) >> ICC_CTLR_EL1_CBPR_SHIFT;
|
||||||
vmcr.ctlr |= val & ICC_CTLR_EL1_EOImode_MASK;
|
vmcr.eoim = (val & ICC_CTLR_EL1_EOImode_MASK) >> ICC_CTLR_EL1_EOImode_SHIFT;
|
||||||
vgic_set_vmcr(vcpu, &vmcr);
|
vgic_set_vmcr(vcpu, &vmcr);
|
||||||
} else {
|
} else {
|
||||||
val = 0;
|
val = 0;
|
||||||
|
@ -83,8 +83,8 @@ static bool access_gic_ctlr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
|
||||||
* The VMCR.CTLR value is in ICC_CTLR_EL1 layout.
|
* The VMCR.CTLR value is in ICC_CTLR_EL1 layout.
|
||||||
* Extract it directly using ICC_CTLR_EL1 reg definitions.
|
* Extract it directly using ICC_CTLR_EL1 reg definitions.
|
||||||
*/
|
*/
|
||||||
val |= vmcr.ctlr & ICC_CTLR_EL1_CBPR_MASK;
|
val |= (vmcr.cbpr << ICC_CTLR_EL1_CBPR_SHIFT) & ICC_CTLR_EL1_CBPR_MASK;
|
||||||
val |= vmcr.ctlr & ICC_CTLR_EL1_EOImode_MASK;
|
val |= (vmcr.eoim << ICC_CTLR_EL1_EOImode_SHIFT) & ICC_CTLR_EL1_EOImode_MASK;
|
||||||
|
|
||||||
p->regval = val;
|
p->regval = val;
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ static bool access_gic_bpr1(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
|
||||||
p->regval = 0;
|
p->regval = 0;
|
||||||
|
|
||||||
vgic_get_vmcr(vcpu, &vmcr);
|
vgic_get_vmcr(vcpu, &vmcr);
|
||||||
if (!((vmcr.ctlr & ICH_VMCR_CBPR_MASK) >> ICH_VMCR_CBPR_SHIFT)) {
|
if (!vmcr.cbpr) {
|
||||||
if (p->is_write) {
|
if (p->is_write) {
|
||||||
vmcr.abpr = (p->regval & ICC_BPR1_EL1_MASK) >>
|
vmcr.abpr = (p->regval & ICC_BPR1_EL1_MASK) >>
|
||||||
ICC_BPR1_EL1_SHIFT;
|
ICC_BPR1_EL1_SHIFT;
|
||||||
|
|
|
@ -36,6 +36,7 @@ int bpf_jit_enable __read_mostly;
|
||||||
#define TMP_REG_1 (MAX_BPF_JIT_REG + 0)
|
#define TMP_REG_1 (MAX_BPF_JIT_REG + 0)
|
||||||
#define TMP_REG_2 (MAX_BPF_JIT_REG + 1)
|
#define TMP_REG_2 (MAX_BPF_JIT_REG + 1)
|
||||||
#define TCALL_CNT (MAX_BPF_JIT_REG + 2)
|
#define TCALL_CNT (MAX_BPF_JIT_REG + 2)
|
||||||
|
#define TMP_REG_3 (MAX_BPF_JIT_REG + 3)
|
||||||
|
|
||||||
/* Map BPF registers to A64 registers */
|
/* Map BPF registers to A64 registers */
|
||||||
static const int bpf2a64[] = {
|
static const int bpf2a64[] = {
|
||||||
|
@ -57,6 +58,7 @@ static const int bpf2a64[] = {
|
||||||
/* temporary registers for internal BPF JIT */
|
/* temporary registers for internal BPF JIT */
|
||||||
[TMP_REG_1] = A64_R(10),
|
[TMP_REG_1] = A64_R(10),
|
||||||
[TMP_REG_2] = A64_R(11),
|
[TMP_REG_2] = A64_R(11),
|
||||||
|
[TMP_REG_3] = A64_R(12),
|
||||||
/* tail_call_cnt */
|
/* tail_call_cnt */
|
||||||
[TCALL_CNT] = A64_R(26),
|
[TCALL_CNT] = A64_R(26),
|
||||||
/* temporary register for blinding constants */
|
/* temporary register for blinding constants */
|
||||||
|
@ -319,6 +321,7 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx)
|
||||||
const u8 src = bpf2a64[insn->src_reg];
|
const u8 src = bpf2a64[insn->src_reg];
|
||||||
const u8 tmp = bpf2a64[TMP_REG_1];
|
const u8 tmp = bpf2a64[TMP_REG_1];
|
||||||
const u8 tmp2 = bpf2a64[TMP_REG_2];
|
const u8 tmp2 = bpf2a64[TMP_REG_2];
|
||||||
|
const u8 tmp3 = bpf2a64[TMP_REG_3];
|
||||||
const s16 off = insn->off;
|
const s16 off = insn->off;
|
||||||
const s32 imm = insn->imm;
|
const s32 imm = insn->imm;
|
||||||
const int i = insn - ctx->prog->insnsi;
|
const int i = insn - ctx->prog->insnsi;
|
||||||
|
@ -689,10 +692,10 @@ emit_cond_jmp:
|
||||||
emit(A64_PRFM(tmp, PST, L1, STRM), ctx);
|
emit(A64_PRFM(tmp, PST, L1, STRM), ctx);
|
||||||
emit(A64_LDXR(isdw, tmp2, tmp), ctx);
|
emit(A64_LDXR(isdw, tmp2, tmp), ctx);
|
||||||
emit(A64_ADD(isdw, tmp2, tmp2, src), ctx);
|
emit(A64_ADD(isdw, tmp2, tmp2, src), ctx);
|
||||||
emit(A64_STXR(isdw, tmp2, tmp, tmp2), ctx);
|
emit(A64_STXR(isdw, tmp2, tmp, tmp3), ctx);
|
||||||
jmp_offset = -3;
|
jmp_offset = -3;
|
||||||
check_imm19(jmp_offset);
|
check_imm19(jmp_offset);
|
||||||
emit(A64_CBNZ(0, tmp2, jmp_offset), ctx);
|
emit(A64_CBNZ(0, tmp3, jmp_offset), ctx);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* R0 = ntohx(*(size *)(((struct sk_buff *)R6)->data + imm)) */
|
/* R0 = ntohx(*(size *)(((struct sk_buff *)R6)->data + imm)) */
|
||||||
|
|
|
@ -16,5 +16,11 @@ static inline cycles_t get_cycles(void)
|
||||||
#define vxtime_lock() do {} while (0)
|
#define vxtime_lock() do {} while (0)
|
||||||
#define vxtime_unlock() do {} while (0)
|
#define vxtime_unlock() do {} while (0)
|
||||||
|
|
||||||
|
/* This attribute is used in include/linux/jiffies.h alongside with
|
||||||
|
* __cacheline_aligned_in_smp. It is assumed that __cacheline_aligned_in_smp
|
||||||
|
* for frv does not contain another section specification.
|
||||||
|
*/
|
||||||
|
#define __jiffy_arch_data __attribute__((__section__(".data")))
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsi
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
vma = find_vma(current->mm, addr);
|
vma = find_vma(current->mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
goto success;
|
goto success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,15 +37,14 @@ __kernel_size_t __clear_user_hexagon(void __user *dest, unsigned long count)
|
||||||
long uncleared;
|
long uncleared;
|
||||||
|
|
||||||
while (count > PAGE_SIZE) {
|
while (count > PAGE_SIZE) {
|
||||||
uncleared = __copy_to_user_hexagon(dest, &empty_zero_page,
|
uncleared = raw_copy_to_user(dest, &empty_zero_page, PAGE_SIZE);
|
||||||
PAGE_SIZE);
|
|
||||||
if (uncleared)
|
if (uncleared)
|
||||||
return count - (PAGE_SIZE - uncleared);
|
return count - (PAGE_SIZE - uncleared);
|
||||||
count -= PAGE_SIZE;
|
count -= PAGE_SIZE;
|
||||||
dest += PAGE_SIZE;
|
dest += PAGE_SIZE;
|
||||||
}
|
}
|
||||||
if (count)
|
if (count)
|
||||||
count = __copy_to_user_hexagon(dest, &empty_zero_page, count);
|
count = raw_copy_to_user(dest, &empty_zero_page, count);
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,19 +128,19 @@ quiet_cmd_cpp_its_S = ITS $@
|
||||||
-DADDR_BITS=$(ADDR_BITS) \
|
-DADDR_BITS=$(ADDR_BITS) \
|
||||||
-DADDR_CELLS=$(itb_addr_cells)
|
-DADDR_CELLS=$(itb_addr_cells)
|
||||||
|
|
||||||
$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||||
$(call if_changed_dep,cpp_its_S,none,vmlinux.bin)
|
$(call if_changed_dep,cpp_its_S,none,vmlinux.bin)
|
||||||
|
|
||||||
$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||||
$(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz)
|
$(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz)
|
||||||
|
|
||||||
$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||||
$(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2)
|
$(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2)
|
||||||
|
|
||||||
$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||||
$(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma)
|
$(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma)
|
||||||
|
|
||||||
$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||||
$(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo)
|
$(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo)
|
||||||
|
|
||||||
quiet_cmd_itb-image = ITB $@
|
quiet_cmd_itb-image = ITB $@
|
||||||
|
|
|
@ -35,7 +35,12 @@ extern pte_t *pkmap_page_table;
|
||||||
* easily, subsequent pte tables have to be allocated in one physical
|
* easily, subsequent pte tables have to be allocated in one physical
|
||||||
* chunk of RAM.
|
* chunk of RAM.
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_PHYS_ADDR_T_64BIT
|
||||||
|
#define LAST_PKMAP 512
|
||||||
|
#else
|
||||||
#define LAST_PKMAP 1024
|
#define LAST_PKMAP 1024
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LAST_PKMAP_MASK (LAST_PKMAP-1)
|
#define LAST_PKMAP_MASK (LAST_PKMAP-1)
|
||||||
#define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT)
|
#define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT)
|
||||||
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
|
#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))
|
||||||
|
|
|
@ -43,7 +43,8 @@ typedef union mips_instruction kprobe_opcode_t;
|
||||||
|
|
||||||
#define flush_insn_slot(p) \
|
#define flush_insn_slot(p) \
|
||||||
do { \
|
do { \
|
||||||
flush_icache_range((unsigned long)p->addr, \
|
if (p->addr) \
|
||||||
|
flush_icache_range((unsigned long)p->addr, \
|
||||||
(unsigned long)p->addr + \
|
(unsigned long)p->addr + \
|
||||||
(MAX_INSN_SIZE * sizeof(kprobe_opcode_t))); \
|
(MAX_INSN_SIZE * sizeof(kprobe_opcode_t))); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
|
@ -19,6 +19,10 @@
|
||||||
#define __ARCH_USE_5LEVEL_HACK
|
#define __ARCH_USE_5LEVEL_HACK
|
||||||
#include <asm-generic/pgtable-nopmd.h>
|
#include <asm-generic/pgtable-nopmd.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_HIGHMEM
|
||||||
|
#include <asm/highmem.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int temp_tlb_entry;
|
extern int temp_tlb_entry;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -62,7 +66,8 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
|
||||||
|
|
||||||
#define VMALLOC_START MAP_BASE
|
#define VMALLOC_START MAP_BASE
|
||||||
|
|
||||||
#define PKMAP_BASE (0xfe000000UL)
|
#define PKMAP_END ((FIXADDR_START) & ~((LAST_PKMAP << PAGE_SHIFT)-1))
|
||||||
|
#define PKMAP_BASE (PKMAP_END - PAGE_SIZE * LAST_PKMAP)
|
||||||
|
|
||||||
#ifdef CONFIG_HIGHMEM
|
#ifdef CONFIG_HIGHMEM
|
||||||
# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE)
|
# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE)
|
||||||
|
|
|
@ -804,8 +804,10 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* Compact branch: BNEZC || JIALC */
|
/* Compact branch: BNEZC || JIALC */
|
||||||
if (insn.i_format.rs)
|
if (!insn.i_format.rs) {
|
||||||
|
/* JIALC: set $31/ra */
|
||||||
regs->regs[31] = epc + 4;
|
regs->regs[31] = epc + 4;
|
||||||
|
}
|
||||||
regs->cp0_epc += 8;
|
regs->cp0_epc += 8;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,20 +38,6 @@ void arch_ftrace_update_code(int command)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* Check if the address is in kernel space
|
|
||||||
*
|
|
||||||
* Clone core_kernel_text() from kernel/extable.c, but doesn't call
|
|
||||||
* init_kernel_text() for Ftrace doesn't trace functions in init sections.
|
|
||||||
*/
|
|
||||||
static inline int in_kernel_space(unsigned long ip)
|
|
||||||
{
|
|
||||||
if (ip >= (unsigned long)_stext &&
|
|
||||||
ip <= (unsigned long)_etext)
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||||
|
|
||||||
#define JAL 0x0c000000 /* jump & link: ip --> ra, jump to target */
|
#define JAL 0x0c000000 /* jump & link: ip --> ra, jump to target */
|
||||||
|
@ -198,7 +184,7 @@ int ftrace_make_nop(struct module *mod,
|
||||||
* If ip is in kernel space, no long call, otherwise, long call is
|
* If ip is in kernel space, no long call, otherwise, long call is
|
||||||
* needed.
|
* needed.
|
||||||
*/
|
*/
|
||||||
new = in_kernel_space(ip) ? INSN_NOP : INSN_B_1F;
|
new = core_kernel_text(ip) ? INSN_NOP : INSN_B_1F;
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
return ftrace_modify_code(ip, new);
|
return ftrace_modify_code(ip, new);
|
||||||
#else
|
#else
|
||||||
|
@ -218,12 +204,12 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
||||||
unsigned int new;
|
unsigned int new;
|
||||||
unsigned long ip = rec->ip;
|
unsigned long ip = rec->ip;
|
||||||
|
|
||||||
new = in_kernel_space(ip) ? insn_jal_ftrace_caller : insn_la_mcount[0];
|
new = core_kernel_text(ip) ? insn_jal_ftrace_caller : insn_la_mcount[0];
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
return ftrace_modify_code(ip, new);
|
return ftrace_modify_code(ip, new);
|
||||||
#else
|
#else
|
||||||
return ftrace_modify_code_2r(ip, new, in_kernel_space(ip) ?
|
return ftrace_modify_code_2r(ip, new, core_kernel_text(ip) ?
|
||||||
INSN_NOP : insn_la_mcount[1]);
|
INSN_NOP : insn_la_mcount[1]);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -289,7 +275,7 @@ unsigned long ftrace_get_parent_ra_addr(unsigned long self_ra, unsigned long
|
||||||
* instruction "lui v1, hi_16bit_of_mcount"(offset is 24), but for
|
* instruction "lui v1, hi_16bit_of_mcount"(offset is 24), but for
|
||||||
* kernel, move after the instruction "move ra, at"(offset is 16)
|
* kernel, move after the instruction "move ra, at"(offset is 16)
|
||||||
*/
|
*/
|
||||||
ip = self_ra - (in_kernel_space(self_ra) ? 16 : 24);
|
ip = self_ra - (core_kernel_text(self_ra) ? 16 : 24);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* search the text until finding the non-store instruction or "s{d,w}
|
* search the text until finding the non-store instruction or "s{d,w}
|
||||||
|
@ -394,7 +380,7 @@ void prepare_ftrace_return(unsigned long *parent_ra_addr, unsigned long self_ra,
|
||||||
* entries configured through the tracing/set_graph_function interface.
|
* entries configured through the tracing/set_graph_function interface.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
insns = in_kernel_space(self_ra) ? 2 : MCOUNT_OFFSET_INSNS + 1;
|
insns = core_kernel_text(self_ra) ? 2 : MCOUNT_OFFSET_INSNS + 1;
|
||||||
trace.func = self_ra - (MCOUNT_INSN_SIZE * insns);
|
trace.func = self_ra - (MCOUNT_INSN_SIZE * insns);
|
||||||
|
|
||||||
/* Only trace if the calling function expects to */
|
/* Only trace if the calling function expects to */
|
||||||
|
|
|
@ -1597,7 +1597,6 @@ static const struct mips_perf_event *mipsxx_pmu_map_raw_event(u64 config)
|
||||||
break;
|
break;
|
||||||
case CPU_P5600:
|
case CPU_P5600:
|
||||||
case CPU_P6600:
|
case CPU_P6600:
|
||||||
case CPU_I6400:
|
|
||||||
/* 8-bit event numbers */
|
/* 8-bit event numbers */
|
||||||
raw_id = config & 0x1ff;
|
raw_id = config & 0x1ff;
|
||||||
base_id = raw_id & 0xff;
|
base_id = raw_id & 0xff;
|
||||||
|
@ -1610,6 +1609,11 @@ static const struct mips_perf_event *mipsxx_pmu_map_raw_event(u64 config)
|
||||||
raw_event.range = P;
|
raw_event.range = P;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
case CPU_I6400:
|
||||||
|
/* 8-bit event numbers */
|
||||||
|
base_id = config & 0xff;
|
||||||
|
raw_event.cntr_mask = CNTR_EVEN | CNTR_ODD;
|
||||||
|
break;
|
||||||
case CPU_1004K:
|
case CPU_1004K:
|
||||||
if (IS_BOTH_COUNTERS_1004K_EVENT(base_id))
|
if (IS_BOTH_COUNTERS_1004K_EVENT(base_id))
|
||||||
raw_event.cntr_mask = CNTR_EVEN | CNTR_ODD;
|
raw_event.cntr_mask = CNTR_EVEN | CNTR_ODD;
|
||||||
|
|
|
@ -120,7 +120,6 @@ int copy_thread_tls(unsigned long clone_flags, unsigned long usp,
|
||||||
struct thread_info *ti = task_thread_info(p);
|
struct thread_info *ti = task_thread_info(p);
|
||||||
struct pt_regs *childregs, *regs = current_pt_regs();
|
struct pt_regs *childregs, *regs = current_pt_regs();
|
||||||
unsigned long childksp;
|
unsigned long childksp;
|
||||||
p->set_child_tid = p->clear_child_tid = NULL;
|
|
||||||
|
|
||||||
childksp = (unsigned long)task_stack_page(p) + THREAD_SIZE - 32;
|
childksp = (unsigned long)task_stack_page(p) + THREAD_SIZE - 32;
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
|
||||||
|
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,15 +51,15 @@ void __init pagetable_init(void)
|
||||||
/*
|
/*
|
||||||
* Fixed mappings:
|
* Fixed mappings:
|
||||||
*/
|
*/
|
||||||
vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
|
vaddr = __fix_to_virt(__end_of_fixed_addresses - 1);
|
||||||
fixrange_init(vaddr, vaddr + FIXADDR_SIZE, pgd_base);
|
fixrange_init(vaddr & PMD_MASK, vaddr + FIXADDR_SIZE, pgd_base);
|
||||||
|
|
||||||
#ifdef CONFIG_HIGHMEM
|
#ifdef CONFIG_HIGHMEM
|
||||||
/*
|
/*
|
||||||
* Permanent kmaps:
|
* Permanent kmaps:
|
||||||
*/
|
*/
|
||||||
vaddr = PKMAP_BASE;
|
vaddr = PKMAP_BASE;
|
||||||
fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
|
fixrange_init(vaddr & PMD_MASK, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
|
||||||
|
|
||||||
pgd = swapper_pg_dir + __pgd_offset(vaddr);
|
pgd = swapper_pg_dir + __pgd_offset(vaddr);
|
||||||
pud = pud_offset(pgd, vaddr);
|
pud = pud_offset(pgd, vaddr);
|
||||||
|
|
|
@ -167,8 +167,6 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
|
||||||
|
|
||||||
top_of_kernel_stack = sp;
|
top_of_kernel_stack = sp;
|
||||||
|
|
||||||
p->set_child_tid = p->clear_child_tid = NULL;
|
|
||||||
|
|
||||||
/* Locate userspace context on stack... */
|
/* Locate userspace context on stack... */
|
||||||
sp -= STACK_FRAME_OVERHEAD; /* redzone */
|
sp -= STACK_FRAME_OVERHEAD; /* redzone */
|
||||||
sp -= sizeof(struct pt_regs);
|
sp -= sizeof(struct pt_regs);
|
||||||
|
|
|
@ -90,7 +90,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||||
unsigned long len, unsigned long pgoff, unsigned long flags)
|
unsigned long len, unsigned long pgoff, unsigned long flags)
|
||||||
{
|
{
|
||||||
struct mm_struct *mm = current->mm;
|
struct mm_struct *mm = current->mm;
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma, *prev;
|
||||||
unsigned long task_size = TASK_SIZE;
|
unsigned long task_size = TASK_SIZE;
|
||||||
int do_color_align, last_mmap;
|
int do_color_align, last_mmap;
|
||||||
struct vm_unmapped_area_info info;
|
struct vm_unmapped_area_info info;
|
||||||
|
@ -117,9 +117,10 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||||
else
|
else
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
|
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma_prev(mm, addr, &prev);
|
||||||
if (task_size - len >= addr &&
|
if (task_size - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)) &&
|
||||||
|
(!prev || addr >= vm_end_gap(prev)))
|
||||||
goto found_addr;
|
goto found_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +144,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
|
||||||
const unsigned long len, const unsigned long pgoff,
|
const unsigned long len, const unsigned long pgoff,
|
||||||
const unsigned long flags)
|
const unsigned long flags)
|
||||||
{
|
{
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma, *prev;
|
||||||
struct mm_struct *mm = current->mm;
|
struct mm_struct *mm = current->mm;
|
||||||
unsigned long addr = addr0;
|
unsigned long addr = addr0;
|
||||||
int do_color_align, last_mmap;
|
int do_color_align, last_mmap;
|
||||||
|
@ -177,9 +178,11 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
|
||||||
addr = COLOR_ALIGN(addr, last_mmap, pgoff);
|
addr = COLOR_ALIGN(addr, last_mmap, pgoff);
|
||||||
else
|
else
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
vma = find_vma(mm, addr);
|
|
||||||
|
vma = find_vma_prev(mm, addr, &prev);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)) &&
|
||||||
|
(!prev || addr >= vm_end_gap(prev)))
|
||||||
goto found_addr;
|
goto found_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -380,22 +380,6 @@ source "arch/powerpc/platforms/Kconfig"
|
||||||
|
|
||||||
menu "Kernel options"
|
menu "Kernel options"
|
||||||
|
|
||||||
config PPC_DT_CPU_FTRS
|
|
||||||
bool "Device-tree based CPU feature discovery & setup"
|
|
||||||
depends on PPC_BOOK3S_64
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
This enables code to use a new device tree binding for describing CPU
|
|
||||||
compatibility and features. Saying Y here will attempt to use the new
|
|
||||||
binding if the firmware provides it. Currently only the skiboot
|
|
||||||
firmware provides this binding.
|
|
||||||
If you're not sure say Y.
|
|
||||||
|
|
||||||
config PPC_CPUFEATURES_ENABLE_UNKNOWN
|
|
||||||
bool "cpufeatures pass through unknown features to guest/userspace"
|
|
||||||
depends on PPC_DT_CPU_FTRS
|
|
||||||
default y
|
|
||||||
|
|
||||||
config HIGHMEM
|
config HIGHMEM
|
||||||
bool "High memory support"
|
bool "High memory support"
|
||||||
depends on PPC32
|
depends on PPC32
|
||||||
|
@ -1215,11 +1199,6 @@ source "arch/powerpc/Kconfig.debug"
|
||||||
|
|
||||||
source "security/Kconfig"
|
source "security/Kconfig"
|
||||||
|
|
||||||
config KEYS_COMPAT
|
|
||||||
bool
|
|
||||||
depends on COMPAT && KEYS
|
|
||||||
default y
|
|
||||||
|
|
||||||
source "crypto/Kconfig"
|
source "crypto/Kconfig"
|
||||||
|
|
||||||
config PPC_LIB_RHEAP
|
config PPC_LIB_RHEAP
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#define H_PTE_INDEX_SIZE 9
|
#define H_PTE_INDEX_SIZE 9
|
||||||
#define H_PMD_INDEX_SIZE 7
|
#define H_PMD_INDEX_SIZE 7
|
||||||
#define H_PUD_INDEX_SIZE 9
|
#define H_PUD_INDEX_SIZE 9
|
||||||
#define H_PGD_INDEX_SIZE 12
|
#define H_PGD_INDEX_SIZE 9
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
#define H_PTE_TABLE_SIZE (sizeof(pte_t) << H_PTE_INDEX_SIZE)
|
#define H_PTE_TABLE_SIZE (sizeof(pte_t) << H_PTE_INDEX_SIZE)
|
||||||
|
|
|
@ -104,7 +104,7 @@
|
||||||
"1: "PPC_TLNEI" %4,0\n" \
|
"1: "PPC_TLNEI" %4,0\n" \
|
||||||
_EMIT_BUG_ENTRY \
|
_EMIT_BUG_ENTRY \
|
||||||
: : "i" (__FILE__), "i" (__LINE__), \
|
: : "i" (__FILE__), "i" (__LINE__), \
|
||||||
"i" (BUGFLAG_TAINT(TAINT_WARN)), \
|
"i" (BUGFLAG_WARNING|BUGFLAG_TAINT(TAINT_WARN)),\
|
||||||
"i" (sizeof(struct bug_entry)), \
|
"i" (sizeof(struct bug_entry)), \
|
||||||
"r" (__ret_warn_on)); \
|
"r" (__ret_warn_on)); \
|
||||||
} \
|
} \
|
||||||
|
|
|
@ -214,7 +214,6 @@ enum {
|
||||||
#define CPU_FTR_DAWR LONG_ASM_CONST(0x0400000000000000)
|
#define CPU_FTR_DAWR LONG_ASM_CONST(0x0400000000000000)
|
||||||
#define CPU_FTR_DABRX LONG_ASM_CONST(0x0800000000000000)
|
#define CPU_FTR_DABRX LONG_ASM_CONST(0x0800000000000000)
|
||||||
#define CPU_FTR_PMAO_BUG LONG_ASM_CONST(0x1000000000000000)
|
#define CPU_FTR_PMAO_BUG LONG_ASM_CONST(0x1000000000000000)
|
||||||
#define CPU_FTR_SUBCORE LONG_ASM_CONST(0x2000000000000000)
|
|
||||||
#define CPU_FTR_POWER9_DD1 LONG_ASM_CONST(0x4000000000000000)
|
#define CPU_FTR_POWER9_DD1 LONG_ASM_CONST(0x4000000000000000)
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
@ -463,7 +462,7 @@ enum {
|
||||||
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||||
CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
|
CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
|
||||||
CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | \
|
CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | \
|
||||||
CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP | CPU_FTR_SUBCORE)
|
CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP)
|
||||||
#define CPU_FTRS_POWER8E (CPU_FTRS_POWER8 | CPU_FTR_PMAO_BUG)
|
#define CPU_FTRS_POWER8E (CPU_FTRS_POWER8 | CPU_FTR_PMAO_BUG)
|
||||||
#define CPU_FTRS_POWER8_DD1 (CPU_FTRS_POWER8 & ~CPU_FTR_DBELL)
|
#define CPU_FTRS_POWER8_DD1 (CPU_FTRS_POWER8 & ~CPU_FTR_DBELL)
|
||||||
#define CPU_FTRS_POWER9 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
|
#define CPU_FTRS_POWER9 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
|
||||||
|
|
|
@ -110,13 +110,18 @@ void release_thread(struct task_struct *);
|
||||||
#define TASK_SIZE_128TB (0x0000800000000000UL)
|
#define TASK_SIZE_128TB (0x0000800000000000UL)
|
||||||
#define TASK_SIZE_512TB (0x0002000000000000UL)
|
#define TASK_SIZE_512TB (0x0002000000000000UL)
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_BOOK3S_64
|
/*
|
||||||
|
* For now 512TB is only supported with book3s and 64K linux page size.
|
||||||
|
*/
|
||||||
|
#if defined(CONFIG_PPC_BOOK3S_64) && defined(CONFIG_PPC_64K_PAGES)
|
||||||
/*
|
/*
|
||||||
* Max value currently used:
|
* Max value currently used:
|
||||||
*/
|
*/
|
||||||
#define TASK_SIZE_USER64 TASK_SIZE_512TB
|
#define TASK_SIZE_USER64 TASK_SIZE_512TB
|
||||||
|
#define DEFAULT_MAP_WINDOW_USER64 TASK_SIZE_128TB
|
||||||
#else
|
#else
|
||||||
#define TASK_SIZE_USER64 TASK_SIZE_64TB
|
#define TASK_SIZE_USER64 TASK_SIZE_64TB
|
||||||
|
#define DEFAULT_MAP_WINDOW_USER64 TASK_SIZE_64TB
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -132,7 +137,7 @@ void release_thread(struct task_struct *);
|
||||||
* space during mmap's.
|
* space during mmap's.
|
||||||
*/
|
*/
|
||||||
#define TASK_UNMAPPED_BASE_USER32 (PAGE_ALIGN(TASK_SIZE_USER32 / 4))
|
#define TASK_UNMAPPED_BASE_USER32 (PAGE_ALIGN(TASK_SIZE_USER32 / 4))
|
||||||
#define TASK_UNMAPPED_BASE_USER64 (PAGE_ALIGN(TASK_SIZE_128TB / 4))
|
#define TASK_UNMAPPED_BASE_USER64 (PAGE_ALIGN(DEFAULT_MAP_WINDOW_USER64 / 4))
|
||||||
|
|
||||||
#define TASK_UNMAPPED_BASE ((is_32bit_task()) ? \
|
#define TASK_UNMAPPED_BASE ((is_32bit_task()) ? \
|
||||||
TASK_UNMAPPED_BASE_USER32 : TASK_UNMAPPED_BASE_USER64 )
|
TASK_UNMAPPED_BASE_USER32 : TASK_UNMAPPED_BASE_USER64 )
|
||||||
|
@ -143,21 +148,15 @@ void release_thread(struct task_struct *);
|
||||||
* with 128TB and conditionally enable upto 512TB
|
* with 128TB and conditionally enable upto 512TB
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_PPC_BOOK3S_64
|
#ifdef CONFIG_PPC_BOOK3S_64
|
||||||
#define DEFAULT_MAP_WINDOW ((is_32bit_task()) ? \
|
#define DEFAULT_MAP_WINDOW ((is_32bit_task()) ? \
|
||||||
TASK_SIZE_USER32 : TASK_SIZE_128TB)
|
TASK_SIZE_USER32 : DEFAULT_MAP_WINDOW_USER64)
|
||||||
#else
|
#else
|
||||||
#define DEFAULT_MAP_WINDOW TASK_SIZE
|
#define DEFAULT_MAP_WINDOW TASK_SIZE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __powerpc64__
|
#ifdef __powerpc64__
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_BOOK3S_64
|
#define STACK_TOP_USER64 DEFAULT_MAP_WINDOW_USER64
|
||||||
/* Limit stack to 128TB */
|
|
||||||
#define STACK_TOP_USER64 TASK_SIZE_128TB
|
|
||||||
#else
|
|
||||||
#define STACK_TOP_USER64 TASK_SIZE_USER64
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define STACK_TOP_USER32 TASK_SIZE_USER32
|
#define STACK_TOP_USER32 TASK_SIZE_USER32
|
||||||
|
|
||||||
#define STACK_TOP (is_32bit_task() ? \
|
#define STACK_TOP (is_32bit_task() ? \
|
||||||
|
|
|
@ -44,8 +44,22 @@ extern void __init dump_numa_cpu_topology(void);
|
||||||
extern int sysfs_add_device_to_node(struct device *dev, int nid);
|
extern int sysfs_add_device_to_node(struct device *dev, int nid);
|
||||||
extern void sysfs_remove_device_from_node(struct device *dev, int nid);
|
extern void sysfs_remove_device_from_node(struct device *dev, int nid);
|
||||||
|
|
||||||
|
static inline int early_cpu_to_node(int cpu)
|
||||||
|
{
|
||||||
|
int nid;
|
||||||
|
|
||||||
|
nid = numa_cpu_lookup_table[cpu];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fall back to node 0 if nid is unset (it should be, except bugs).
|
||||||
|
* This allows callers to safely do NODE_DATA(early_cpu_to_node(cpu)).
|
||||||
|
*/
|
||||||
|
return (nid < 0) ? 0 : nid;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
static inline int early_cpu_to_node(int cpu) { return 0; }
|
||||||
|
|
||||||
static inline void dump_numa_cpu_topology(void) {}
|
static inline void dump_numa_cpu_topology(void) {}
|
||||||
|
|
||||||
static inline int sysfs_add_device_to_node(struct device *dev, int nid)
|
static inline int sysfs_add_device_to_node(struct device *dev, int nid)
|
||||||
|
|
|
@ -94,11 +94,13 @@ struct xive_q {
|
||||||
* store at 0 and some ESBs support doing a trigger via a
|
* store at 0 and some ESBs support doing a trigger via a
|
||||||
* separate trigger page.
|
* separate trigger page.
|
||||||
*/
|
*/
|
||||||
#define XIVE_ESB_GET 0x800
|
#define XIVE_ESB_STORE_EOI 0x400 /* Store */
|
||||||
#define XIVE_ESB_SET_PQ_00 0xc00
|
#define XIVE_ESB_LOAD_EOI 0x000 /* Load */
|
||||||
#define XIVE_ESB_SET_PQ_01 0xd00
|
#define XIVE_ESB_GET 0x800 /* Load */
|
||||||
#define XIVE_ESB_SET_PQ_10 0xe00
|
#define XIVE_ESB_SET_PQ_00 0xc00 /* Load */
|
||||||
#define XIVE_ESB_SET_PQ_11 0xf00
|
#define XIVE_ESB_SET_PQ_01 0xd00 /* Load */
|
||||||
|
#define XIVE_ESB_SET_PQ_10 0xe00 /* Load */
|
||||||
|
#define XIVE_ESB_SET_PQ_11 0xf00 /* Load */
|
||||||
|
|
||||||
#define XIVE_ESB_VAL_P 0x2
|
#define XIVE_ESB_VAL_P 0x2
|
||||||
#define XIVE_ESB_VAL_Q 0x1
|
#define XIVE_ESB_VAL_Q 0x1
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/jump_label.h>
|
#include <linux/jump_label.h>
|
||||||
|
#include <linux/libfdt.h>
|
||||||
#include <linux/memblock.h>
|
#include <linux/memblock.h>
|
||||||
#include <linux/printk.h>
|
#include <linux/printk.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
@ -642,7 +643,6 @@ static struct dt_cpu_feature_match __initdata
|
||||||
{"processor-control-facility", feat_enable_dbell, CPU_FTR_DBELL},
|
{"processor-control-facility", feat_enable_dbell, CPU_FTR_DBELL},
|
||||||
{"processor-control-facility-v3", feat_enable_dbell, CPU_FTR_DBELL},
|
{"processor-control-facility-v3", feat_enable_dbell, CPU_FTR_DBELL},
|
||||||
{"processor-utilization-of-resources-register", feat_enable_purr, 0},
|
{"processor-utilization-of-resources-register", feat_enable_purr, 0},
|
||||||
{"subcore", feat_enable, CPU_FTR_SUBCORE},
|
|
||||||
{"no-execute", feat_enable, 0},
|
{"no-execute", feat_enable, 0},
|
||||||
{"strong-access-ordering", feat_enable, CPU_FTR_SAO},
|
{"strong-access-ordering", feat_enable, CPU_FTR_SAO},
|
||||||
{"cache-inhibited-large-page", feat_enable_large_ci, 0},
|
{"cache-inhibited-large-page", feat_enable_large_ci, 0},
|
||||||
|
@ -671,12 +671,24 @@ static struct dt_cpu_feature_match __initdata
|
||||||
{"wait-v3", feat_enable, 0},
|
{"wait-v3", feat_enable, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* XXX: how to configure this? Default + boot time? */
|
static bool __initdata using_dt_cpu_ftrs;
|
||||||
#ifdef CONFIG_PPC_CPUFEATURES_ENABLE_UNKNOWN
|
static bool __initdata enable_unknown = true;
|
||||||
#define CPU_FEATURE_ENABLE_UNKNOWN 1
|
|
||||||
#else
|
static int __init dt_cpu_ftrs_parse(char *str)
|
||||||
#define CPU_FEATURE_ENABLE_UNKNOWN 0
|
{
|
||||||
#endif
|
if (!str)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!strcmp(str, "off"))
|
||||||
|
using_dt_cpu_ftrs = false;
|
||||||
|
else if (!strcmp(str, "known"))
|
||||||
|
enable_unknown = false;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
early_param("dt_cpu_ftrs", dt_cpu_ftrs_parse);
|
||||||
|
|
||||||
static void __init cpufeatures_setup_start(u32 isa)
|
static void __init cpufeatures_setup_start(u32 isa)
|
||||||
{
|
{
|
||||||
|
@ -707,7 +719,7 @@ static bool __init cpufeatures_process_feature(struct dt_cpu_feature *f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!known && CPU_FEATURE_ENABLE_UNKNOWN) {
|
if (!known && enable_unknown) {
|
||||||
if (!feat_try_enable_unknown(f)) {
|
if (!feat_try_enable_unknown(f)) {
|
||||||
pr_info("not enabling: %s (unknown and unsupported by kernel)\n",
|
pr_info("not enabling: %s (unknown and unsupported by kernel)\n",
|
||||||
f->name);
|
f->name);
|
||||||
|
@ -756,6 +768,26 @@ static void __init cpufeatures_setup_finished(void)
|
||||||
cur_cpu_spec->cpu_features, cur_cpu_spec->mmu_features);
|
cur_cpu_spec->cpu_features, cur_cpu_spec->mmu_features);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __init disabled_on_cmdline(void)
|
||||||
|
{
|
||||||
|
unsigned long root, chosen;
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
root = of_get_flat_dt_root();
|
||||||
|
chosen = of_get_flat_dt_subnode_by_name(root, "chosen");
|
||||||
|
if (chosen == -FDT_ERR_NOTFOUND)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
p = of_get_flat_dt_prop(chosen, "bootargs", NULL);
|
||||||
|
if (!p)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (strstr(p, "dt_cpu_ftrs=off"))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static int __init fdt_find_cpu_features(unsigned long node, const char *uname,
|
static int __init fdt_find_cpu_features(unsigned long node, const char *uname,
|
||||||
int depth, void *data)
|
int depth, void *data)
|
||||||
{
|
{
|
||||||
|
@ -766,8 +798,6 @@ static int __init fdt_find_cpu_features(unsigned long node, const char *uname,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool __initdata using_dt_cpu_ftrs = false;
|
|
||||||
|
|
||||||
bool __init dt_cpu_ftrs_in_use(void)
|
bool __init dt_cpu_ftrs_in_use(void)
|
||||||
{
|
{
|
||||||
return using_dt_cpu_ftrs;
|
return using_dt_cpu_ftrs;
|
||||||
|
@ -775,6 +805,8 @@ bool __init dt_cpu_ftrs_in_use(void)
|
||||||
|
|
||||||
bool __init dt_cpu_ftrs_init(void *fdt)
|
bool __init dt_cpu_ftrs_init(void *fdt)
|
||||||
{
|
{
|
||||||
|
using_dt_cpu_ftrs = false;
|
||||||
|
|
||||||
/* Setup and verify the FDT, if it fails we just bail */
|
/* Setup and verify the FDT, if it fails we just bail */
|
||||||
if (!early_init_dt_verify(fdt))
|
if (!early_init_dt_verify(fdt))
|
||||||
return false;
|
return false;
|
||||||
|
@ -782,6 +814,9 @@ bool __init dt_cpu_ftrs_init(void *fdt)
|
||||||
if (!of_scan_flat_dt(fdt_find_cpu_features, NULL))
|
if (!of_scan_flat_dt(fdt_find_cpu_features, NULL))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (disabled_on_cmdline())
|
||||||
|
return false;
|
||||||
|
|
||||||
cpufeatures_setup_cpu();
|
cpufeatures_setup_cpu();
|
||||||
|
|
||||||
using_dt_cpu_ftrs = true;
|
using_dt_cpu_ftrs = true;
|
||||||
|
@ -1027,5 +1062,8 @@ static int __init dt_cpu_ftrs_scan_callback(unsigned long node, const char
|
||||||
|
|
||||||
void __init dt_cpu_ftrs_scan(void)
|
void __init dt_cpu_ftrs_scan(void)
|
||||||
{
|
{
|
||||||
|
if (!using_dt_cpu_ftrs)
|
||||||
|
return;
|
||||||
|
|
||||||
of_scan_flat_dt(dt_cpu_ftrs_scan_callback, NULL);
|
of_scan_flat_dt(dt_cpu_ftrs_scan_callback, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1666,6 +1666,7 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp)
|
||||||
#ifdef CONFIG_VSX
|
#ifdef CONFIG_VSX
|
||||||
current->thread.used_vsr = 0;
|
current->thread.used_vsr = 0;
|
||||||
#endif
|
#endif
|
||||||
|
current->thread.load_fp = 0;
|
||||||
memset(¤t->thread.fp_state, 0, sizeof(current->thread.fp_state));
|
memset(¤t->thread.fp_state, 0, sizeof(current->thread.fp_state));
|
||||||
current->thread.fp_save_area = NULL;
|
current->thread.fp_save_area = NULL;
|
||||||
#ifdef CONFIG_ALTIVEC
|
#ifdef CONFIG_ALTIVEC
|
||||||
|
@ -1674,6 +1675,7 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp)
|
||||||
current->thread.vr_save_area = NULL;
|
current->thread.vr_save_area = NULL;
|
||||||
current->thread.vrsave = 0;
|
current->thread.vrsave = 0;
|
||||||
current->thread.used_vr = 0;
|
current->thread.used_vr = 0;
|
||||||
|
current->thread.load_vec = 0;
|
||||||
#endif /* CONFIG_ALTIVEC */
|
#endif /* CONFIG_ALTIVEC */
|
||||||
#ifdef CONFIG_SPE
|
#ifdef CONFIG_SPE
|
||||||
memset(current->thread.evr, 0, sizeof(current->thread.evr));
|
memset(current->thread.evr, 0, sizeof(current->thread.evr));
|
||||||
|
@ -1685,6 +1687,7 @@ void start_thread(struct pt_regs *regs, unsigned long start, unsigned long sp)
|
||||||
current->thread.tm_tfhar = 0;
|
current->thread.tm_tfhar = 0;
|
||||||
current->thread.tm_texasr = 0;
|
current->thread.tm_texasr = 0;
|
||||||
current->thread.tm_tfiar = 0;
|
current->thread.tm_tfiar = 0;
|
||||||
|
current->thread.load_tm = 0;
|
||||||
#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
|
#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(start_thread);
|
EXPORT_SYMBOL(start_thread);
|
||||||
|
|
|
@ -928,7 +928,7 @@ void __init setup_arch(char **cmdline_p)
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_MM_SLICES
|
#ifdef CONFIG_PPC_MM_SLICES
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
init_mm.context.addr_limit = TASK_SIZE_128TB;
|
init_mm.context.addr_limit = DEFAULT_MAP_WINDOW_USER64;
|
||||||
#else
|
#else
|
||||||
#error "context.addr_limit not initialized."
|
#error "context.addr_limit not initialized."
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -661,7 +661,7 @@ void __init emergency_stack_init(void)
|
||||||
|
|
||||||
static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, size_t align)
|
static void * __init pcpu_fc_alloc(unsigned int cpu, size_t size, size_t align)
|
||||||
{
|
{
|
||||||
return __alloc_bootmem_node(NODE_DATA(cpu_to_node(cpu)), size, align,
|
return __alloc_bootmem_node(NODE_DATA(early_cpu_to_node(cpu)), size, align,
|
||||||
__pa(MAX_DMA_ADDRESS));
|
__pa(MAX_DMA_ADDRESS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -672,7 +672,7 @@ static void __init pcpu_fc_free(void *ptr, size_t size)
|
||||||
|
|
||||||
static int pcpu_cpu_distance(unsigned int from, unsigned int to)
|
static int pcpu_cpu_distance(unsigned int from, unsigned int to)
|
||||||
{
|
{
|
||||||
if (cpu_to_node(from) == cpu_to_node(to))
|
if (early_cpu_to_node(from) == early_cpu_to_node(to))
|
||||||
return LOCAL_DISTANCE;
|
return LOCAL_DISTANCE;
|
||||||
else
|
else
|
||||||
return REMOTE_DISTANCE;
|
return REMOTE_DISTANCE;
|
||||||
|
|
|
@ -69,7 +69,7 @@ static void GLUE(X_PFX,source_eoi)(u32 hw_irq, struct xive_irq_data *xd)
|
||||||
{
|
{
|
||||||
/* If the XIVE supports the new "store EOI facility, use it */
|
/* If the XIVE supports the new "store EOI facility, use it */
|
||||||
if (xd->flags & XIVE_IRQ_FLAG_STORE_EOI)
|
if (xd->flags & XIVE_IRQ_FLAG_STORE_EOI)
|
||||||
__x_writeq(0, __x_eoi_page(xd));
|
__x_writeq(0, __x_eoi_page(xd) + XIVE_ESB_STORE_EOI);
|
||||||
else if (hw_irq && xd->flags & XIVE_IRQ_FLAG_EOI_FW) {
|
else if (hw_irq && xd->flags & XIVE_IRQ_FLAG_EOI_FW) {
|
||||||
opal_int_eoi(hw_irq);
|
opal_int_eoi(hw_irq);
|
||||||
} else {
|
} else {
|
||||||
|
@ -89,7 +89,7 @@ static void GLUE(X_PFX,source_eoi)(u32 hw_irq, struct xive_irq_data *xd)
|
||||||
* properly.
|
* properly.
|
||||||
*/
|
*/
|
||||||
if (xd->flags & XIVE_IRQ_FLAG_LSI)
|
if (xd->flags & XIVE_IRQ_FLAG_LSI)
|
||||||
__x_readq(__x_eoi_page(xd));
|
__x_readq(__x_eoi_page(xd) + XIVE_ESB_LOAD_EOI);
|
||||||
else {
|
else {
|
||||||
eoi_val = GLUE(X_PFX,esb_load)(xd, XIVE_ESB_SET_PQ_00);
|
eoi_val = GLUE(X_PFX,esb_load)(xd, XIVE_ESB_SET_PQ_00);
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
|
||||||
addr = ALIGN(addr, huge_page_size(h));
|
addr = ALIGN(addr, huge_page_size(h));
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (mm->task_size - len >= addr &&
|
if (mm->task_size - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -112,7 +112,7 @@ radix__arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (mm->task_size - len >= addr && addr >= mmap_min_addr &&
|
if (mm->task_size - len >= addr && addr >= mmap_min_addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ radix__arch_get_unmapped_area_topdown(struct file *filp,
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (mm->task_size - len >= addr && addr >= mmap_min_addr &&
|
if (mm->task_size - len >= addr && addr >= mmap_min_addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ static int hash__init_new_context(struct mm_struct *mm)
|
||||||
* mm->context.addr_limit. Default to max task size so that we copy the
|
* mm->context.addr_limit. Default to max task size so that we copy the
|
||||||
* default values to paca which will help us to handle slb miss early.
|
* default values to paca which will help us to handle slb miss early.
|
||||||
*/
|
*/
|
||||||
mm->context.addr_limit = TASK_SIZE_128TB;
|
mm->context.addr_limit = DEFAULT_MAP_WINDOW_USER64;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The old code would re-promote on fork, we don't do that when using
|
* The old code would re-promote on fork, we don't do that when using
|
||||||
|
|
|
@ -99,7 +99,7 @@ static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
|
||||||
if ((mm->task_size - len) < addr)
|
if ((mm->task_size - len) < addr)
|
||||||
return 0;
|
return 0;
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
return (!vma || (addr + len) <= vma->vm_start);
|
return (!vma || (addr + len) <= vm_start_gap(vma));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int slice_low_has_vma(struct mm_struct *mm, unsigned long slice)
|
static int slice_low_has_vma(struct mm_struct *mm, unsigned long slice)
|
||||||
|
|
|
@ -402,7 +402,7 @@ static struct power_pmu power9_isa207_pmu = {
|
||||||
.name = "POWER9",
|
.name = "POWER9",
|
||||||
.n_counter = MAX_PMU_COUNTERS,
|
.n_counter = MAX_PMU_COUNTERS,
|
||||||
.add_fields = ISA207_ADD_FIELDS,
|
.add_fields = ISA207_ADD_FIELDS,
|
||||||
.test_adder = ISA207_TEST_ADDER,
|
.test_adder = P9_DD1_TEST_ADDER,
|
||||||
.compute_mmcr = isa207_compute_mmcr,
|
.compute_mmcr = isa207_compute_mmcr,
|
||||||
.config_bhrb = power9_config_bhrb,
|
.config_bhrb = power9_config_bhrb,
|
||||||
.bhrb_filter_map = power9_bhrb_filter_map,
|
.bhrb_filter_map = power9_bhrb_filter_map,
|
||||||
|
@ -421,7 +421,7 @@ static struct power_pmu power9_pmu = {
|
||||||
.name = "POWER9",
|
.name = "POWER9",
|
||||||
.n_counter = MAX_PMU_COUNTERS,
|
.n_counter = MAX_PMU_COUNTERS,
|
||||||
.add_fields = ISA207_ADD_FIELDS,
|
.add_fields = ISA207_ADD_FIELDS,
|
||||||
.test_adder = P9_DD1_TEST_ADDER,
|
.test_adder = ISA207_TEST_ADDER,
|
||||||
.compute_mmcr = isa207_compute_mmcr,
|
.compute_mmcr = isa207_compute_mmcr,
|
||||||
.config_bhrb = power9_config_bhrb,
|
.config_bhrb = power9_config_bhrb,
|
||||||
.bhrb_filter_map = power9_bhrb_filter_map,
|
.bhrb_filter_map = power9_bhrb_filter_map,
|
||||||
|
|
|
@ -59,6 +59,17 @@ config PPC_OF_BOOT_TRAMPOLINE
|
||||||
|
|
||||||
In case of doubt, say Y
|
In case of doubt, say Y
|
||||||
|
|
||||||
|
config PPC_DT_CPU_FTRS
|
||||||
|
bool "Device-tree based CPU feature discovery & setup"
|
||||||
|
depends on PPC_BOOK3S_64
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This enables code to use a new device tree binding for describing CPU
|
||||||
|
compatibility and features. Saying Y here will attempt to use the new
|
||||||
|
binding if the firmware provides it. Currently only the skiboot
|
||||||
|
firmware provides this binding.
|
||||||
|
If you're not sure say Y.
|
||||||
|
|
||||||
config UDBG_RTAS_CONSOLE
|
config UDBG_RTAS_CONSOLE
|
||||||
bool "RTAS based debug console"
|
bool "RTAS based debug console"
|
||||||
depends on PPC_RTAS
|
depends on PPC_RTAS
|
||||||
|
|
|
@ -175,6 +175,8 @@ static int spufs_arch_write_note(struct spu_context *ctx, int i,
|
||||||
skip = roundup(cprm->pos - total + sz, 4) - cprm->pos;
|
skip = roundup(cprm->pos - total + sz, 4) - cprm->pos;
|
||||||
if (!dump_skip(cprm, skip))
|
if (!dump_skip(cprm, skip))
|
||||||
goto Eio;
|
goto Eio;
|
||||||
|
|
||||||
|
rc = 0;
|
||||||
out:
|
out:
|
||||||
free_page((unsigned long)buf);
|
free_page((unsigned long)buf);
|
||||||
return rc;
|
return rc;
|
||||||
|
|
|
@ -75,7 +75,8 @@ struct pci_dev *pnv_pci_get_npu_dev(struct pci_dev *gpdev, int index)
|
||||||
if (WARN_ON(!gpdev))
|
if (WARN_ON(!gpdev))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (WARN_ON(!gpdev->dev.of_node))
|
/* Not all PCI devices have device-tree nodes */
|
||||||
|
if (!gpdev->dev.of_node)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Get assoicated PCI device */
|
/* Get assoicated PCI device */
|
||||||
|
|
|
@ -407,7 +407,13 @@ static DEVICE_ATTR(subcores_per_core, 0644,
|
||||||
|
|
||||||
static int subcore_init(void)
|
static int subcore_init(void)
|
||||||
{
|
{
|
||||||
if (!cpu_has_feature(CPU_FTR_SUBCORE))
|
unsigned pvr_ver;
|
||||||
|
|
||||||
|
pvr_ver = PVR_VER(mfspr(SPRN_PVR));
|
||||||
|
|
||||||
|
if (pvr_ver != PVR_POWER8 &&
|
||||||
|
pvr_ver != PVR_POWER8E &&
|
||||||
|
pvr_ver != PVR_POWER8NVL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -124,6 +124,7 @@ static struct property *dlpar_clone_drconf_property(struct device_node *dn)
|
||||||
for (i = 0; i < num_lmbs; i++) {
|
for (i = 0; i < num_lmbs; i++) {
|
||||||
lmbs[i].base_addr = be64_to_cpu(lmbs[i].base_addr);
|
lmbs[i].base_addr = be64_to_cpu(lmbs[i].base_addr);
|
||||||
lmbs[i].drc_index = be32_to_cpu(lmbs[i].drc_index);
|
lmbs[i].drc_index = be32_to_cpu(lmbs[i].drc_index);
|
||||||
|
lmbs[i].aa_index = be32_to_cpu(lmbs[i].aa_index);
|
||||||
lmbs[i].flags = be32_to_cpu(lmbs[i].flags);
|
lmbs[i].flags = be32_to_cpu(lmbs[i].flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +148,7 @@ static void dlpar_update_drconf_property(struct device_node *dn,
|
||||||
for (i = 0; i < num_lmbs; i++) {
|
for (i = 0; i < num_lmbs; i++) {
|
||||||
lmbs[i].base_addr = cpu_to_be64(lmbs[i].base_addr);
|
lmbs[i].base_addr = cpu_to_be64(lmbs[i].base_addr);
|
||||||
lmbs[i].drc_index = cpu_to_be32(lmbs[i].drc_index);
|
lmbs[i].drc_index = cpu_to_be32(lmbs[i].drc_index);
|
||||||
|
lmbs[i].aa_index = cpu_to_be32(lmbs[i].aa_index);
|
||||||
lmbs[i].flags = cpu_to_be32(lmbs[i].flags);
|
lmbs[i].flags = cpu_to_be32(lmbs[i].flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,8 @@ static int u8_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
|
||||||
|
|
||||||
static void u8_gpio_save_regs(struct of_mm_gpio_chip *mm_gc)
|
static void u8_gpio_save_regs(struct of_mm_gpio_chip *mm_gc)
|
||||||
{
|
{
|
||||||
struct u8_gpio_chip *u8_gc = gpiochip_get_data(&mm_gc->gc);
|
struct u8_gpio_chip *u8_gc =
|
||||||
|
container_of(mm_gc, struct u8_gpio_chip, mm_gc);
|
||||||
|
|
||||||
u8_gc->data = in_8(mm_gc->regs);
|
u8_gc->data = in_8(mm_gc->regs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -297,7 +297,7 @@ void xive_do_source_eoi(u32 hw_irq, struct xive_irq_data *xd)
|
||||||
{
|
{
|
||||||
/* If the XIVE supports the new "store EOI facility, use it */
|
/* If the XIVE supports the new "store EOI facility, use it */
|
||||||
if (xd->flags & XIVE_IRQ_FLAG_STORE_EOI)
|
if (xd->flags & XIVE_IRQ_FLAG_STORE_EOI)
|
||||||
out_be64(xd->eoi_mmio, 0);
|
out_be64(xd->eoi_mmio + XIVE_ESB_STORE_EOI, 0);
|
||||||
else if (hw_irq && xd->flags & XIVE_IRQ_FLAG_EOI_FW) {
|
else if (hw_irq && xd->flags & XIVE_IRQ_FLAG_EOI_FW) {
|
||||||
/*
|
/*
|
||||||
* The FW told us to call it. This happens for some
|
* The FW told us to call it. This happens for some
|
||||||
|
|
|
@ -363,9 +363,6 @@ config COMPAT
|
||||||
config SYSVIPC_COMPAT
|
config SYSVIPC_COMPAT
|
||||||
def_bool y if COMPAT && SYSVIPC
|
def_bool y if COMPAT && SYSVIPC
|
||||||
|
|
||||||
config KEYS_COMPAT
|
|
||||||
def_bool y if COMPAT && KEYS
|
|
||||||
|
|
||||||
config SMP
|
config SMP
|
||||||
def_bool y
|
def_bool y
|
||||||
prompt "Symmetric multi-processing support"
|
prompt "Symmetric multi-processing support"
|
||||||
|
|
|
@ -30,6 +30,7 @@ CONFIG_USER_NS=y
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
@ -44,7 +45,10 @@ CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||||
|
CONFIG_BLK_DEV_INTEGRITY=y
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
CONFIG_BLK_DEV_THROTTLING=y
|
||||||
|
CONFIG_BLK_WBT=y
|
||||||
|
CONFIG_BLK_WBT_SQ=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
CONFIG_IBM_PARTITION=y
|
CONFIG_IBM_PARTITION=y
|
||||||
CONFIG_BSD_DISKLABEL=y
|
CONFIG_BSD_DISKLABEL=y
|
||||||
|
@ -90,6 +94,8 @@ CONFIG_UNIX=y
|
||||||
CONFIG_UNIX_DIAG=m
|
CONFIG_UNIX_DIAG=m
|
||||||
CONFIG_XFRM_USER=m
|
CONFIG_XFRM_USER=m
|
||||||
CONFIG_NET_KEY=m
|
CONFIG_NET_KEY=m
|
||||||
|
CONFIG_SMC=m
|
||||||
|
CONFIG_SMC_DIAG=m
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_MULTICAST=y
|
CONFIG_IP_MULTICAST=y
|
||||||
CONFIG_IP_ADVANCED_ROUTER=y
|
CONFIG_IP_ADVANCED_ROUTER=y
|
||||||
|
@ -359,6 +365,7 @@ CONFIG_NET_ACT_SIMP=m
|
||||||
CONFIG_NET_ACT_SKBEDIT=m
|
CONFIG_NET_ACT_SKBEDIT=m
|
||||||
CONFIG_NET_ACT_CSUM=m
|
CONFIG_NET_ACT_CSUM=m
|
||||||
CONFIG_DNS_RESOLVER=y
|
CONFIG_DNS_RESOLVER=y
|
||||||
|
CONFIG_NETLINK_DIAG=m
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
CONFIG_CGROUP_NET_PRIO=y
|
||||||
CONFIG_BPF_JIT=y
|
CONFIG_BPF_JIT=y
|
||||||
CONFIG_NET_PKTGEN=m
|
CONFIG_NET_PKTGEN=m
|
||||||
|
@ -367,16 +374,19 @@ CONFIG_DEVTMPFS=y
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=0
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
CONFIG_CONNECTOR=y
|
CONFIG_CONNECTOR=y
|
||||||
|
CONFIG_ZRAM=m
|
||||||
CONFIG_BLK_DEV_LOOP=m
|
CONFIG_BLK_DEV_LOOP=m
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||||
|
CONFIG_BLK_DEV_DRBD=m
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_OSD=m
|
CONFIG_BLK_DEV_OSD=m
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||||
CONFIG_CDROM_PKTCDVD=m
|
CONFIG_BLK_DEV_RAM_DAX=y
|
||||||
CONFIG_ATA_OVER_ETH=m
|
|
||||||
CONFIG_VIRTIO_BLK=y
|
CONFIG_VIRTIO_BLK=y
|
||||||
|
CONFIG_BLK_DEV_RBD=m
|
||||||
CONFIG_ENCLOSURE_SERVICES=m
|
CONFIG_ENCLOSURE_SERVICES=m
|
||||||
|
CONFIG_GENWQE=m
|
||||||
CONFIG_RAID_ATTRS=m
|
CONFIG_RAID_ATTRS=m
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
@ -442,6 +452,8 @@ CONFIG_NLMON=m
|
||||||
# CONFIG_NET_VENDOR_INTEL is not set
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
CONFIG_MLX4_EN=m
|
CONFIG_MLX4_EN=m
|
||||||
|
CONFIG_MLX5_CORE=m
|
||||||
|
CONFIG_MLX5_CORE_EN=y
|
||||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
CONFIG_PPP_BSDCOMP=m
|
CONFIG_PPP_BSDCOMP=m
|
||||||
|
@ -452,7 +464,6 @@ CONFIG_PPTP=m
|
||||||
CONFIG_PPPOL2TP=m
|
CONFIG_PPPOL2TP=m
|
||||||
CONFIG_PPP_ASYNC=m
|
CONFIG_PPP_ASYNC=m
|
||||||
CONFIG_PPP_SYNC_TTY=m
|
CONFIG_PPP_SYNC_TTY=m
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
|
@ -471,6 +482,7 @@ CONFIG_DIAG288_WATCHDOG=m
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||||
CONFIG_MLX4_INFINIBAND=m
|
CONFIG_MLX4_INFINIBAND=m
|
||||||
|
CONFIG_MLX5_INFINIBAND=m
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
CONFIG_EXT4_FS=y
|
CONFIG_EXT4_FS=y
|
||||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||||
|
@ -487,12 +499,18 @@ CONFIG_XFS_POSIX_ACL=y
|
||||||
CONFIG_XFS_RT=y
|
CONFIG_XFS_RT=y
|
||||||
CONFIG_XFS_DEBUG=y
|
CONFIG_XFS_DEBUG=y
|
||||||
CONFIG_GFS2_FS=m
|
CONFIG_GFS2_FS=m
|
||||||
|
CONFIG_GFS2_FS_LOCKING_DLM=y
|
||||||
CONFIG_OCFS2_FS=m
|
CONFIG_OCFS2_FS=m
|
||||||
CONFIG_BTRFS_FS=y
|
CONFIG_BTRFS_FS=y
|
||||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||||
|
CONFIG_BTRFS_DEBUG=y
|
||||||
CONFIG_NILFS2_FS=m
|
CONFIG_NILFS2_FS=m
|
||||||
|
CONFIG_FS_DAX=y
|
||||||
|
CONFIG_EXPORTFS_BLOCK_OPS=y
|
||||||
CONFIG_FANOTIFY=y
|
CONFIG_FANOTIFY=y
|
||||||
|
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
||||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||||
|
CONFIG_QUOTA_DEBUG=y
|
||||||
CONFIG_QFMT_V1=m
|
CONFIG_QFMT_V1=m
|
||||||
CONFIG_QFMT_V2=m
|
CONFIG_QFMT_V2=m
|
||||||
CONFIG_AUTOFS4_FS=m
|
CONFIG_AUTOFS4_FS=m
|
||||||
|
@ -558,6 +576,7 @@ CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_DEBUG_SECTION_MISMATCH=y
|
CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_PAGEALLOC=y
|
CONFIG_DEBUG_PAGEALLOC=y
|
||||||
|
CONFIG_DEBUG_RODATA_TEST=y
|
||||||
CONFIG_DEBUG_OBJECTS=y
|
CONFIG_DEBUG_OBJECTS=y
|
||||||
CONFIG_DEBUG_OBJECTS_SELFTEST=y
|
CONFIG_DEBUG_OBJECTS_SELFTEST=y
|
||||||
CONFIG_DEBUG_OBJECTS_FREE=y
|
CONFIG_DEBUG_OBJECTS_FREE=y
|
||||||
|
@ -580,7 +599,6 @@ CONFIG_DETECT_HUNG_TASK=y
|
||||||
CONFIG_WQ_WATCHDOG=y
|
CONFIG_WQ_WATCHDOG=y
|
||||||
CONFIG_PANIC_ON_OOPS=y
|
CONFIG_PANIC_ON_OOPS=y
|
||||||
CONFIG_DEBUG_TIMEKEEPING=y
|
CONFIG_DEBUG_TIMEKEEPING=y
|
||||||
CONFIG_TIMER_STATS=y
|
|
||||||
CONFIG_DEBUG_RT_MUTEXES=y
|
CONFIG_DEBUG_RT_MUTEXES=y
|
||||||
CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
|
CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
|
||||||
CONFIG_PROVE_LOCKING=y
|
CONFIG_PROVE_LOCKING=y
|
||||||
|
@ -595,6 +613,7 @@ CONFIG_RCU_TORTURE_TEST=m
|
||||||
CONFIG_RCU_CPU_STALL_TIMEOUT=300
|
CONFIG_RCU_CPU_STALL_TIMEOUT=300
|
||||||
CONFIG_NOTIFIER_ERROR_INJECTION=m
|
CONFIG_NOTIFIER_ERROR_INJECTION=m
|
||||||
CONFIG_PM_NOTIFIER_ERROR_INJECT=m
|
CONFIG_PM_NOTIFIER_ERROR_INJECT=m
|
||||||
|
CONFIG_NETDEV_NOTIFIER_ERROR_INJECT=m
|
||||||
CONFIG_FAULT_INJECTION=y
|
CONFIG_FAULT_INJECTION=y
|
||||||
CONFIG_FAILSLAB=y
|
CONFIG_FAILSLAB=y
|
||||||
CONFIG_FAIL_PAGE_ALLOC=y
|
CONFIG_FAIL_PAGE_ALLOC=y
|
||||||
|
@ -616,13 +635,12 @@ CONFIG_HIST_TRIGGERS=y
|
||||||
CONFIG_TRACE_ENUM_MAP_FILE=y
|
CONFIG_TRACE_ENUM_MAP_FILE=y
|
||||||
CONFIG_LKDTM=m
|
CONFIG_LKDTM=m
|
||||||
CONFIG_TEST_LIST_SORT=y
|
CONFIG_TEST_LIST_SORT=y
|
||||||
|
CONFIG_TEST_SORT=y
|
||||||
CONFIG_KPROBES_SANITY_TEST=y
|
CONFIG_KPROBES_SANITY_TEST=y
|
||||||
CONFIG_RBTREE_TEST=y
|
CONFIG_RBTREE_TEST=y
|
||||||
CONFIG_INTERVAL_TREE_TEST=m
|
CONFIG_INTERVAL_TREE_TEST=m
|
||||||
CONFIG_PERCPU_TEST=m
|
CONFIG_PERCPU_TEST=m
|
||||||
CONFIG_ATOMIC64_SELFTEST=y
|
CONFIG_ATOMIC64_SELFTEST=y
|
||||||
CONFIG_TEST_STRING_HELPERS=y
|
|
||||||
CONFIG_TEST_KSTRTOX=y
|
|
||||||
CONFIG_DMA_API_DEBUG=y
|
CONFIG_DMA_API_DEBUG=y
|
||||||
CONFIG_TEST_BPF=m
|
CONFIG_TEST_BPF=m
|
||||||
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
||||||
|
@ -630,6 +648,7 @@ CONFIG_S390_PTDUMP=y
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
CONFIG_ENCRYPTED_KEYS=m
|
||||||
CONFIG_SECURITY=y
|
CONFIG_SECURITY=y
|
||||||
CONFIG_SECURITY_NETWORK=y
|
CONFIG_SECURITY_NETWORK=y
|
||||||
|
CONFIG_HARDENED_USERCOPY=y
|
||||||
CONFIG_SECURITY_SELINUX=y
|
CONFIG_SECURITY_SELINUX=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
||||||
|
@ -640,7 +659,9 @@ CONFIG_CRYPTO_RSA=m
|
||||||
CONFIG_CRYPTO_DH=m
|
CONFIG_CRYPTO_DH=m
|
||||||
CONFIG_CRYPTO_ECDH=m
|
CONFIG_CRYPTO_ECDH=m
|
||||||
CONFIG_CRYPTO_USER=m
|
CONFIG_CRYPTO_USER=m
|
||||||
|
CONFIG_CRYPTO_PCRYPT=m
|
||||||
CONFIG_CRYPTO_CRYPTD=m
|
CONFIG_CRYPTO_CRYPTD=m
|
||||||
|
CONFIG_CRYPTO_MCRYPTD=m
|
||||||
CONFIG_CRYPTO_TEST=m
|
CONFIG_CRYPTO_TEST=m
|
||||||
CONFIG_CRYPTO_CCM=m
|
CONFIG_CRYPTO_CCM=m
|
||||||
CONFIG_CRYPTO_GCM=m
|
CONFIG_CRYPTO_GCM=m
|
||||||
|
@ -648,6 +669,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_CRC32=m
|
CONFIG_CRYPTO_CRC32=m
|
||||||
|
@ -657,8 +679,10 @@ CONFIG_CRYPTO_RMD160=m
|
||||||
CONFIG_CRYPTO_RMD256=m
|
CONFIG_CRYPTO_RMD256=m
|
||||||
CONFIG_CRYPTO_RMD320=m
|
CONFIG_CRYPTO_RMD320=m
|
||||||
CONFIG_CRYPTO_SHA512=m
|
CONFIG_CRYPTO_SHA512=m
|
||||||
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -674,6 +698,7 @@ CONFIG_CRYPTO_TWOFISH=m
|
||||||
CONFIG_CRYPTO_842=m
|
CONFIG_CRYPTO_842=m
|
||||||
CONFIG_CRYPTO_LZ4=m
|
CONFIG_CRYPTO_LZ4=m
|
||||||
CONFIG_CRYPTO_LZ4HC=m
|
CONFIG_CRYPTO_LZ4HC=m
|
||||||
|
CONFIG_CRYPTO_ANSI_CPRNG=m
|
||||||
CONFIG_CRYPTO_USER_API_HASH=m
|
CONFIG_CRYPTO_USER_API_HASH=m
|
||||||
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
|
@ -685,6 +710,7 @@ CONFIG_CRYPTO_SHA256_S390=m
|
||||||
CONFIG_CRYPTO_SHA512_S390=m
|
CONFIG_CRYPTO_SHA512_S390=m
|
||||||
CONFIG_CRYPTO_DES_S390=m
|
CONFIG_CRYPTO_DES_S390=m
|
||||||
CONFIG_CRYPTO_AES_S390=m
|
CONFIG_CRYPTO_AES_S390=m
|
||||||
|
CONFIG_CRYPTO_PAES_S390=m
|
||||||
CONFIG_CRYPTO_GHASH_S390=m
|
CONFIG_CRYPTO_GHASH_S390=m
|
||||||
CONFIG_CRYPTO_CRC32_S390=y
|
CONFIG_CRYPTO_CRC32_S390=y
|
||||||
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
||||||
|
@ -692,6 +718,7 @@ CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
|
||||||
CONFIG_X509_CERTIFICATE_PARSER=m
|
CONFIG_X509_CERTIFICATE_PARSER=m
|
||||||
CONFIG_CRC7=m
|
CONFIG_CRC7=m
|
||||||
CONFIG_CRC8=m
|
CONFIG_CRC8=m
|
||||||
|
CONFIG_RANDOM32_SELFTEST=y
|
||||||
CONFIG_CORDIC=m
|
CONFIG_CORDIC=m
|
||||||
CONFIG_CMM=m
|
CONFIG_CMM=m
|
||||||
CONFIG_APPLDATA_BASE=y
|
CONFIG_APPLDATA_BASE=y
|
||||||
|
|
|
@ -31,6 +31,7 @@ CONFIG_USER_NS=y
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
@ -46,7 +47,10 @@ CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||||
|
CONFIG_BLK_DEV_INTEGRITY=y
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
CONFIG_BLK_DEV_THROTTLING=y
|
||||||
|
CONFIG_BLK_WBT=y
|
||||||
|
CONFIG_BLK_WBT_SQ=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
CONFIG_IBM_PARTITION=y
|
CONFIG_IBM_PARTITION=y
|
||||||
CONFIG_BSD_DISKLABEL=y
|
CONFIG_BSD_DISKLABEL=y
|
||||||
|
@ -88,6 +92,8 @@ CONFIG_UNIX=y
|
||||||
CONFIG_UNIX_DIAG=m
|
CONFIG_UNIX_DIAG=m
|
||||||
CONFIG_XFRM_USER=m
|
CONFIG_XFRM_USER=m
|
||||||
CONFIG_NET_KEY=m
|
CONFIG_NET_KEY=m
|
||||||
|
CONFIG_SMC=m
|
||||||
|
CONFIG_SMC_DIAG=m
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_MULTICAST=y
|
CONFIG_IP_MULTICAST=y
|
||||||
CONFIG_IP_ADVANCED_ROUTER=y
|
CONFIG_IP_ADVANCED_ROUTER=y
|
||||||
|
@ -356,6 +362,7 @@ CONFIG_NET_ACT_SIMP=m
|
||||||
CONFIG_NET_ACT_SKBEDIT=m
|
CONFIG_NET_ACT_SKBEDIT=m
|
||||||
CONFIG_NET_ACT_CSUM=m
|
CONFIG_NET_ACT_CSUM=m
|
||||||
CONFIG_DNS_RESOLVER=y
|
CONFIG_DNS_RESOLVER=y
|
||||||
|
CONFIG_NETLINK_DIAG=m
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
CONFIG_CGROUP_NET_PRIO=y
|
||||||
CONFIG_BPF_JIT=y
|
CONFIG_BPF_JIT=y
|
||||||
CONFIG_NET_PKTGEN=m
|
CONFIG_NET_PKTGEN=m
|
||||||
|
@ -364,16 +371,18 @@ CONFIG_DEVTMPFS=y
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=0
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
CONFIG_CONNECTOR=y
|
CONFIG_CONNECTOR=y
|
||||||
|
CONFIG_ZRAM=m
|
||||||
CONFIG_BLK_DEV_LOOP=m
|
CONFIG_BLK_DEV_LOOP=m
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||||
|
CONFIG_BLK_DEV_DRBD=m
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_OSD=m
|
CONFIG_BLK_DEV_OSD=m
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||||
CONFIG_CDROM_PKTCDVD=m
|
CONFIG_BLK_DEV_RAM_DAX=y
|
||||||
CONFIG_ATA_OVER_ETH=m
|
|
||||||
CONFIG_VIRTIO_BLK=y
|
CONFIG_VIRTIO_BLK=y
|
||||||
CONFIG_ENCLOSURE_SERVICES=m
|
CONFIG_ENCLOSURE_SERVICES=m
|
||||||
|
CONFIG_GENWQE=m
|
||||||
CONFIG_RAID_ATTRS=m
|
CONFIG_RAID_ATTRS=m
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
@ -439,6 +448,8 @@ CONFIG_NLMON=m
|
||||||
# CONFIG_NET_VENDOR_INTEL is not set
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
CONFIG_MLX4_EN=m
|
CONFIG_MLX4_EN=m
|
||||||
|
CONFIG_MLX5_CORE=m
|
||||||
|
CONFIG_MLX5_CORE_EN=y
|
||||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
CONFIG_PPP_BSDCOMP=m
|
CONFIG_PPP_BSDCOMP=m
|
||||||
|
@ -449,7 +460,6 @@ CONFIG_PPTP=m
|
||||||
CONFIG_PPPOL2TP=m
|
CONFIG_PPPOL2TP=m
|
||||||
CONFIG_PPP_ASYNC=m
|
CONFIG_PPP_ASYNC=m
|
||||||
CONFIG_PPP_SYNC_TTY=m
|
CONFIG_PPP_SYNC_TTY=m
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
|
@ -468,6 +478,7 @@ CONFIG_DIAG288_WATCHDOG=m
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||||
CONFIG_MLX4_INFINIBAND=m
|
CONFIG_MLX4_INFINIBAND=m
|
||||||
|
CONFIG_MLX5_INFINIBAND=m
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
CONFIG_EXT4_FS=y
|
CONFIG_EXT4_FS=y
|
||||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||||
|
@ -483,11 +494,15 @@ CONFIG_XFS_QUOTA=y
|
||||||
CONFIG_XFS_POSIX_ACL=y
|
CONFIG_XFS_POSIX_ACL=y
|
||||||
CONFIG_XFS_RT=y
|
CONFIG_XFS_RT=y
|
||||||
CONFIG_GFS2_FS=m
|
CONFIG_GFS2_FS=m
|
||||||
|
CONFIG_GFS2_FS_LOCKING_DLM=y
|
||||||
CONFIG_OCFS2_FS=m
|
CONFIG_OCFS2_FS=m
|
||||||
CONFIG_BTRFS_FS=y
|
CONFIG_BTRFS_FS=y
|
||||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||||
CONFIG_NILFS2_FS=m
|
CONFIG_NILFS2_FS=m
|
||||||
|
CONFIG_FS_DAX=y
|
||||||
|
CONFIG_EXPORTFS_BLOCK_OPS=y
|
||||||
CONFIG_FANOTIFY=y
|
CONFIG_FANOTIFY=y
|
||||||
|
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
||||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||||
CONFIG_QFMT_V1=m
|
CONFIG_QFMT_V1=m
|
||||||
CONFIG_QFMT_V2=m
|
CONFIG_QFMT_V2=m
|
||||||
|
@ -553,7 +568,6 @@ CONFIG_UNUSED_SYMBOLS=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_MEMORY_INIT=y
|
CONFIG_DEBUG_MEMORY_INIT=y
|
||||||
CONFIG_PANIC_ON_OOPS=y
|
CONFIG_PANIC_ON_OOPS=y
|
||||||
CONFIG_TIMER_STATS=y
|
|
||||||
CONFIG_RCU_TORTURE_TEST=m
|
CONFIG_RCU_TORTURE_TEST=m
|
||||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||||
CONFIG_LATENCYTOP=y
|
CONFIG_LATENCYTOP=y
|
||||||
|
@ -576,6 +590,7 @@ CONFIG_BIG_KEYS=y
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
CONFIG_ENCRYPTED_KEYS=m
|
||||||
CONFIG_SECURITY=y
|
CONFIG_SECURITY=y
|
||||||
CONFIG_SECURITY_NETWORK=y
|
CONFIG_SECURITY_NETWORK=y
|
||||||
|
CONFIG_HARDENED_USERCOPY=y
|
||||||
CONFIG_SECURITY_SELINUX=y
|
CONFIG_SECURITY_SELINUX=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
||||||
|
@ -599,6 +614,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_CRC32=m
|
CONFIG_CRYPTO_CRC32=m
|
||||||
|
@ -611,6 +627,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -626,16 +643,19 @@ CONFIG_CRYPTO_TWOFISH=m
|
||||||
CONFIG_CRYPTO_842=m
|
CONFIG_CRYPTO_842=m
|
||||||
CONFIG_CRYPTO_LZ4=m
|
CONFIG_CRYPTO_LZ4=m
|
||||||
CONFIG_CRYPTO_LZ4HC=m
|
CONFIG_CRYPTO_LZ4HC=m
|
||||||
|
CONFIG_CRYPTO_ANSI_CPRNG=m
|
||||||
CONFIG_CRYPTO_USER_API_HASH=m
|
CONFIG_CRYPTO_USER_API_HASH=m
|
||||||
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||||
CONFIG_ZCRYPT=m
|
CONFIG_ZCRYPT=m
|
||||||
|
CONFIG_PKEY=m
|
||||||
CONFIG_CRYPTO_SHA1_S390=m
|
CONFIG_CRYPTO_SHA1_S390=m
|
||||||
CONFIG_CRYPTO_SHA256_S390=m
|
CONFIG_CRYPTO_SHA256_S390=m
|
||||||
CONFIG_CRYPTO_SHA512_S390=m
|
CONFIG_CRYPTO_SHA512_S390=m
|
||||||
CONFIG_CRYPTO_DES_S390=m
|
CONFIG_CRYPTO_DES_S390=m
|
||||||
CONFIG_CRYPTO_AES_S390=m
|
CONFIG_CRYPTO_AES_S390=m
|
||||||
|
CONFIG_CRYPTO_PAES_S390=m
|
||||||
CONFIG_CRYPTO_GHASH_S390=m
|
CONFIG_CRYPTO_GHASH_S390=m
|
||||||
CONFIG_CRYPTO_CRC32_S390=y
|
CONFIG_CRYPTO_CRC32_S390=y
|
||||||
CONFIG_CRC7=m
|
CONFIG_CRC7=m
|
||||||
|
|
|
@ -31,6 +31,7 @@ CONFIG_USER_NS=y
|
||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
@ -44,7 +45,10 @@ CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
CONFIG_MODVERSIONS=y
|
CONFIG_MODVERSIONS=y
|
||||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||||
|
CONFIG_BLK_DEV_INTEGRITY=y
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
CONFIG_BLK_DEV_THROTTLING=y
|
||||||
|
CONFIG_BLK_WBT=y
|
||||||
|
CONFIG_BLK_WBT_SQ=y
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
CONFIG_IBM_PARTITION=y
|
CONFIG_IBM_PARTITION=y
|
||||||
CONFIG_BSD_DISKLABEL=y
|
CONFIG_BSD_DISKLABEL=y
|
||||||
|
@ -86,6 +90,8 @@ CONFIG_UNIX=y
|
||||||
CONFIG_UNIX_DIAG=m
|
CONFIG_UNIX_DIAG=m
|
||||||
CONFIG_XFRM_USER=m
|
CONFIG_XFRM_USER=m
|
||||||
CONFIG_NET_KEY=m
|
CONFIG_NET_KEY=m
|
||||||
|
CONFIG_SMC=m
|
||||||
|
CONFIG_SMC_DIAG=m
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_MULTICAST=y
|
CONFIG_IP_MULTICAST=y
|
||||||
CONFIG_IP_ADVANCED_ROUTER=y
|
CONFIG_IP_ADVANCED_ROUTER=y
|
||||||
|
@ -354,6 +360,7 @@ CONFIG_NET_ACT_SIMP=m
|
||||||
CONFIG_NET_ACT_SKBEDIT=m
|
CONFIG_NET_ACT_SKBEDIT=m
|
||||||
CONFIG_NET_ACT_CSUM=m
|
CONFIG_NET_ACT_CSUM=m
|
||||||
CONFIG_DNS_RESOLVER=y
|
CONFIG_DNS_RESOLVER=y
|
||||||
|
CONFIG_NETLINK_DIAG=m
|
||||||
CONFIG_CGROUP_NET_PRIO=y
|
CONFIG_CGROUP_NET_PRIO=y
|
||||||
CONFIG_BPF_JIT=y
|
CONFIG_BPF_JIT=y
|
||||||
CONFIG_NET_PKTGEN=m
|
CONFIG_NET_PKTGEN=m
|
||||||
|
@ -362,16 +369,18 @@ CONFIG_DEVTMPFS=y
|
||||||
CONFIG_DMA_CMA=y
|
CONFIG_DMA_CMA=y
|
||||||
CONFIG_CMA_SIZE_MBYTES=0
|
CONFIG_CMA_SIZE_MBYTES=0
|
||||||
CONFIG_CONNECTOR=y
|
CONFIG_CONNECTOR=y
|
||||||
|
CONFIG_ZRAM=m
|
||||||
CONFIG_BLK_DEV_LOOP=m
|
CONFIG_BLK_DEV_LOOP=m
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||||
|
CONFIG_BLK_DEV_DRBD=m
|
||||||
CONFIG_BLK_DEV_NBD=m
|
CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_OSD=m
|
CONFIG_BLK_DEV_OSD=m
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||||
CONFIG_CDROM_PKTCDVD=m
|
CONFIG_BLK_DEV_RAM_DAX=y
|
||||||
CONFIG_ATA_OVER_ETH=m
|
|
||||||
CONFIG_VIRTIO_BLK=y
|
CONFIG_VIRTIO_BLK=y
|
||||||
CONFIG_ENCLOSURE_SERVICES=m
|
CONFIG_ENCLOSURE_SERVICES=m
|
||||||
|
CONFIG_GENWQE=m
|
||||||
CONFIG_RAID_ATTRS=m
|
CONFIG_RAID_ATTRS=m
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
|
@ -437,6 +446,8 @@ CONFIG_NLMON=m
|
||||||
# CONFIG_NET_VENDOR_INTEL is not set
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
CONFIG_MLX4_EN=m
|
CONFIG_MLX4_EN=m
|
||||||
|
CONFIG_MLX5_CORE=m
|
||||||
|
CONFIG_MLX5_CORE_EN=y
|
||||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
CONFIG_PPP_BSDCOMP=m
|
CONFIG_PPP_BSDCOMP=m
|
||||||
|
@ -447,7 +458,6 @@ CONFIG_PPTP=m
|
||||||
CONFIG_PPPOL2TP=m
|
CONFIG_PPPOL2TP=m
|
||||||
CONFIG_PPP_ASYNC=m
|
CONFIG_PPP_ASYNC=m
|
||||||
CONFIG_PPP_SYNC_TTY=m
|
CONFIG_PPP_SYNC_TTY=m
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
|
@ -466,6 +476,7 @@ CONFIG_DIAG288_WATCHDOG=m
|
||||||
CONFIG_INFINIBAND=m
|
CONFIG_INFINIBAND=m
|
||||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||||
CONFIG_MLX4_INFINIBAND=m
|
CONFIG_MLX4_INFINIBAND=m
|
||||||
|
CONFIG_MLX5_INFINIBAND=m
|
||||||
CONFIG_VIRTIO_BALLOON=m
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
CONFIG_EXT4_FS=y
|
CONFIG_EXT4_FS=y
|
||||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||||
|
@ -481,11 +492,15 @@ CONFIG_XFS_QUOTA=y
|
||||||
CONFIG_XFS_POSIX_ACL=y
|
CONFIG_XFS_POSIX_ACL=y
|
||||||
CONFIG_XFS_RT=y
|
CONFIG_XFS_RT=y
|
||||||
CONFIG_GFS2_FS=m
|
CONFIG_GFS2_FS=m
|
||||||
|
CONFIG_GFS2_FS_LOCKING_DLM=y
|
||||||
CONFIG_OCFS2_FS=m
|
CONFIG_OCFS2_FS=m
|
||||||
CONFIG_BTRFS_FS=y
|
CONFIG_BTRFS_FS=y
|
||||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||||
CONFIG_NILFS2_FS=m
|
CONFIG_NILFS2_FS=m
|
||||||
|
CONFIG_FS_DAX=y
|
||||||
|
CONFIG_EXPORTFS_BLOCK_OPS=y
|
||||||
CONFIG_FANOTIFY=y
|
CONFIG_FANOTIFY=y
|
||||||
|
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
||||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||||
CONFIG_QFMT_V1=m
|
CONFIG_QFMT_V1=m
|
||||||
CONFIG_QFMT_V2=m
|
CONFIG_QFMT_V2=m
|
||||||
|
@ -551,7 +566,6 @@ CONFIG_UNUSED_SYMBOLS=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_MEMORY_INIT=y
|
CONFIG_DEBUG_MEMORY_INIT=y
|
||||||
CONFIG_PANIC_ON_OOPS=y
|
CONFIG_PANIC_ON_OOPS=y
|
||||||
CONFIG_TIMER_STATS=y
|
|
||||||
CONFIG_RCU_TORTURE_TEST=m
|
CONFIG_RCU_TORTURE_TEST=m
|
||||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||||
CONFIG_LATENCYTOP=y
|
CONFIG_LATENCYTOP=y
|
||||||
|
@ -574,6 +588,7 @@ CONFIG_BIG_KEYS=y
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
CONFIG_ENCRYPTED_KEYS=m
|
||||||
CONFIG_SECURITY=y
|
CONFIG_SECURITY=y
|
||||||
CONFIG_SECURITY_NETWORK=y
|
CONFIG_SECURITY_NETWORK=y
|
||||||
|
CONFIG_HARDENED_USERCOPY=y
|
||||||
CONFIG_SECURITY_SELINUX=y
|
CONFIG_SECURITY_SELINUX=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
|
||||||
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
|
||||||
|
@ -597,6 +612,7 @@ CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_KEYWRAP=m
|
CONFIG_CRYPTO_KEYWRAP=m
|
||||||
|
CONFIG_CRYPTO_CMAC=m
|
||||||
CONFIG_CRYPTO_XCBC=m
|
CONFIG_CRYPTO_XCBC=m
|
||||||
CONFIG_CRYPTO_VMAC=m
|
CONFIG_CRYPTO_VMAC=m
|
||||||
CONFIG_CRYPTO_CRC32=m
|
CONFIG_CRYPTO_CRC32=m
|
||||||
|
@ -609,6 +625,7 @@ CONFIG_CRYPTO_SHA512=m
|
||||||
CONFIG_CRYPTO_SHA3=m
|
CONFIG_CRYPTO_SHA3=m
|
||||||
CONFIG_CRYPTO_TGR192=m
|
CONFIG_CRYPTO_TGR192=m
|
||||||
CONFIG_CRYPTO_WP512=m
|
CONFIG_CRYPTO_WP512=m
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
||||||
CONFIG_CRYPTO_ANUBIS=m
|
CONFIG_CRYPTO_ANUBIS=m
|
||||||
CONFIG_CRYPTO_BLOWFISH=m
|
CONFIG_CRYPTO_BLOWFISH=m
|
||||||
CONFIG_CRYPTO_CAMELLIA=m
|
CONFIG_CRYPTO_CAMELLIA=m
|
||||||
|
@ -624,6 +641,7 @@ CONFIG_CRYPTO_TWOFISH=m
|
||||||
CONFIG_CRYPTO_842=m
|
CONFIG_CRYPTO_842=m
|
||||||
CONFIG_CRYPTO_LZ4=m
|
CONFIG_CRYPTO_LZ4=m
|
||||||
CONFIG_CRYPTO_LZ4HC=m
|
CONFIG_CRYPTO_LZ4HC=m
|
||||||
|
CONFIG_CRYPTO_ANSI_CPRNG=m
|
||||||
CONFIG_CRYPTO_USER_API_HASH=m
|
CONFIG_CRYPTO_USER_API_HASH=m
|
||||||
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
|
@ -635,6 +653,7 @@ CONFIG_CRYPTO_SHA256_S390=m
|
||||||
CONFIG_CRYPTO_SHA512_S390=m
|
CONFIG_CRYPTO_SHA512_S390=m
|
||||||
CONFIG_CRYPTO_DES_S390=m
|
CONFIG_CRYPTO_DES_S390=m
|
||||||
CONFIG_CRYPTO_AES_S390=m
|
CONFIG_CRYPTO_AES_S390=m
|
||||||
|
CONFIG_CRYPTO_PAES_S390=m
|
||||||
CONFIG_CRYPTO_GHASH_S390=m
|
CONFIG_CRYPTO_GHASH_S390=m
|
||||||
CONFIG_CRYPTO_CRC32_S390=y
|
CONFIG_CRYPTO_CRC32_S390=y
|
||||||
CONFIG_CRC7=m
|
CONFIG_CRC7=m
|
||||||
|
|
|
@ -12,8 +12,10 @@ CONFIG_TUNE_ZEC12=y
|
||||||
CONFIG_NR_CPUS=2
|
CONFIG_NR_CPUS=2
|
||||||
# CONFIG_HOTPLUG_CPU is not set
|
# CONFIG_HOTPLUG_CPU is not set
|
||||||
CONFIG_HZ_100=y
|
CONFIG_HZ_100=y
|
||||||
|
# CONFIG_ARCH_RANDOM is not set
|
||||||
# CONFIG_COMPACTION is not set
|
# CONFIG_COMPACTION is not set
|
||||||
# CONFIG_MIGRATION is not set
|
# CONFIG_MIGRATION is not set
|
||||||
|
# CONFIG_BOUNCE is not set
|
||||||
# CONFIG_CHECK_STACK is not set
|
# CONFIG_CHECK_STACK is not set
|
||||||
# CONFIG_CHSC_SCH is not set
|
# CONFIG_CHSC_SCH is not set
|
||||||
# CONFIG_SCM_BUS is not set
|
# CONFIG_SCM_BUS is not set
|
||||||
|
@ -36,11 +38,11 @@ CONFIG_SCSI_CONSTANTS=y
|
||||||
CONFIG_SCSI_LOGGING=y
|
CONFIG_SCSI_LOGGING=y
|
||||||
CONFIG_SCSI_FC_ATTRS=y
|
CONFIG_SCSI_FC_ATTRS=y
|
||||||
CONFIG_ZFCP=y
|
CONFIG_ZFCP=y
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
# CONFIG_HVC_IUCV is not set
|
# CONFIG_HVC_IUCV is not set
|
||||||
|
# CONFIG_HW_RANDOM_S390 is not set
|
||||||
CONFIG_RAW_DRIVER=y
|
CONFIG_RAW_DRIVER=y
|
||||||
# CONFIG_SCLP_ASYNC is not set
|
# CONFIG_SCLP_ASYNC is not set
|
||||||
# CONFIG_HMC_DRV is not set
|
# CONFIG_HMC_DRV is not set
|
||||||
|
@ -54,9 +56,9 @@ CONFIG_RAW_DRIVER=y
|
||||||
# CONFIG_INOTIFY_USER is not set
|
# CONFIG_INOTIFY_USER is not set
|
||||||
CONFIG_CONFIGFS_FS=y
|
CONFIG_CONFIGFS_FS=y
|
||||||
# CONFIG_MISC_FILESYSTEMS is not set
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
|
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_DEBUG_FS=y
|
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_PANIC_ON_OOPS=y
|
CONFIG_PANIC_ON_OOPS=y
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
|
|
|
@ -28,6 +28,7 @@ CONFIG_NAMESPACES=y
|
||||||
CONFIG_USER_NS=y
|
CONFIG_USER_NS=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EXPERT=y
|
CONFIG_EXPERT=y
|
||||||
|
# CONFIG_SYSFS_SYSCALL is not set
|
||||||
CONFIG_BPF_SYSCALL=y
|
CONFIG_BPF_SYSCALL=y
|
||||||
CONFIG_USERFAULTFD=y
|
CONFIG_USERFAULTFD=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
@ -108,7 +109,6 @@ CONFIG_ZFCP=y
|
||||||
CONFIG_SCSI_VIRTIO=y
|
CONFIG_SCSI_VIRTIO=y
|
||||||
CONFIG_MD=y
|
CONFIG_MD=y
|
||||||
CONFIG_MD_LINEAR=m
|
CONFIG_MD_LINEAR=m
|
||||||
CONFIG_MD_RAID0=m
|
|
||||||
CONFIG_MD_MULTIPATH=m
|
CONFIG_MD_MULTIPATH=m
|
||||||
CONFIG_BLK_DEV_DM=y
|
CONFIG_BLK_DEV_DM=y
|
||||||
CONFIG_DM_CRYPT=m
|
CONFIG_DM_CRYPT=m
|
||||||
|
@ -131,6 +131,7 @@ CONFIG_TUN=m
|
||||||
CONFIG_VIRTIO_NET=y
|
CONFIG_VIRTIO_NET=y
|
||||||
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
# CONFIG_NET_VENDOR_ALACRITECH is not set
|
||||||
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
# CONFIG_NET_VENDOR_SOLARFLARE is not set
|
||||||
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||||
# CONFIG_INPUT is not set
|
# CONFIG_INPUT is not set
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
CONFIG_DEVKMEM=y
|
CONFIG_DEVKMEM=y
|
||||||
|
@ -162,7 +163,6 @@ CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_PAGEALLOC=y
|
CONFIG_DEBUG_PAGEALLOC=y
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
CONFIG_PANIC_ON_OOPS=y
|
CONFIG_PANIC_ON_OOPS=y
|
||||||
CONFIG_TIMER_STATS=y
|
|
||||||
CONFIG_DEBUG_RT_MUTEXES=y
|
CONFIG_DEBUG_RT_MUTEXES=y
|
||||||
CONFIG_PROVE_LOCKING=y
|
CONFIG_PROVE_LOCKING=y
|
||||||
CONFIG_LOCK_STAT=y
|
CONFIG_LOCK_STAT=y
|
||||||
|
@ -172,14 +172,12 @@ CONFIG_DEBUG_LIST=y
|
||||||
CONFIG_DEBUG_SG=y
|
CONFIG_DEBUG_SG=y
|
||||||
CONFIG_DEBUG_NOTIFIERS=y
|
CONFIG_DEBUG_NOTIFIERS=y
|
||||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||||
CONFIG_RCU_TRACE=y
|
|
||||||
CONFIG_LATENCYTOP=y
|
CONFIG_LATENCYTOP=y
|
||||||
CONFIG_SCHED_TRACER=y
|
CONFIG_SCHED_TRACER=y
|
||||||
CONFIG_FTRACE_SYSCALLS=y
|
CONFIG_FTRACE_SYSCALLS=y
|
||||||
CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
|
CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
|
||||||
CONFIG_STACK_TRACER=y
|
CONFIG_STACK_TRACER=y
|
||||||
CONFIG_BLK_DEV_IO_TRACE=y
|
CONFIG_BLK_DEV_IO_TRACE=y
|
||||||
CONFIG_UPROBE_EVENTS=y
|
|
||||||
CONFIG_FUNCTION_PROFILER=y
|
CONFIG_FUNCTION_PROFILER=y
|
||||||
CONFIG_TRACE_ENUM_MAP_FILE=y
|
CONFIG_TRACE_ENUM_MAP_FILE=y
|
||||||
CONFIG_KPROBES_SANITY_TEST=y
|
CONFIG_KPROBES_SANITY_TEST=y
|
||||||
|
@ -190,7 +188,6 @@ CONFIG_CRYPTO_CCM=m
|
||||||
CONFIG_CRYPTO_GCM=m
|
CONFIG_CRYPTO_GCM=m
|
||||||
CONFIG_CRYPTO_CBC=y
|
CONFIG_CRYPTO_CBC=y
|
||||||
CONFIG_CRYPTO_CTS=m
|
CONFIG_CRYPTO_CTS=m
|
||||||
CONFIG_CRYPTO_ECB=m
|
|
||||||
CONFIG_CRYPTO_LRW=m
|
CONFIG_CRYPTO_LRW=m
|
||||||
CONFIG_CRYPTO_PCBC=m
|
CONFIG_CRYPTO_PCBC=m
|
||||||
CONFIG_CRYPTO_XTS=m
|
CONFIG_CRYPTO_XTS=m
|
||||||
|
@ -230,6 +227,7 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||||
CONFIG_CRYPTO_USER_API_RNG=m
|
CONFIG_CRYPTO_USER_API_RNG=m
|
||||||
CONFIG_ZCRYPT=m
|
CONFIG_ZCRYPT=m
|
||||||
CONFIG_PKEY=m
|
CONFIG_PKEY=m
|
||||||
|
CONFIG_CRYPTO_PAES_S390=m
|
||||||
CONFIG_CRYPTO_SHA1_S390=m
|
CONFIG_CRYPTO_SHA1_S390=m
|
||||||
CONFIG_CRYPTO_SHA256_S390=m
|
CONFIG_CRYPTO_SHA256_S390=m
|
||||||
CONFIG_CRYPTO_SHA512_S390=m
|
CONFIG_CRYPTO_SHA512_S390=m
|
||||||
|
|
|
@ -541,7 +541,6 @@ struct kvm_s390_float_interrupt {
|
||||||
struct mutex ais_lock;
|
struct mutex ais_lock;
|
||||||
u8 simm;
|
u8 simm;
|
||||||
u8 nimm;
|
u8 nimm;
|
||||||
int ais_enabled;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kvm_hw_wp_info_arch {
|
struct kvm_hw_wp_info_arch {
|
||||||
|
|
|
@ -231,12 +231,17 @@ ENTRY(sie64a)
|
||||||
lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
|
lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
|
||||||
.Lsie_done:
|
.Lsie_done:
|
||||||
# some program checks are suppressing. C code (e.g. do_protection_exception)
|
# some program checks are suppressing. C code (e.g. do_protection_exception)
|
||||||
# will rewind the PSW by the ILC, which is 4 bytes in case of SIE. Other
|
# will rewind the PSW by the ILC, which is often 4 bytes in case of SIE. There
|
||||||
# instructions between sie64a and .Lsie_done should not cause program
|
# are some corner cases (e.g. runtime instrumentation) where ILC is unpredictable.
|
||||||
# interrupts. So lets use a nop (47 00 00 00) as a landing pad.
|
# Other instructions between sie64a and .Lsie_done should not cause program
|
||||||
|
# interrupts. So lets use 3 nops as a landing pad for all possible rewinds.
|
||||||
# See also .Lcleanup_sie
|
# See also .Lcleanup_sie
|
||||||
.Lrewind_pad:
|
.Lrewind_pad6:
|
||||||
nop 0
|
nopr 7
|
||||||
|
.Lrewind_pad4:
|
||||||
|
nopr 7
|
||||||
|
.Lrewind_pad2:
|
||||||
|
nopr 7
|
||||||
.globl sie_exit
|
.globl sie_exit
|
||||||
sie_exit:
|
sie_exit:
|
||||||
lg %r14,__SF_EMPTY+8(%r15) # load guest register save area
|
lg %r14,__SF_EMPTY+8(%r15) # load guest register save area
|
||||||
|
@ -249,7 +254,9 @@ sie_exit:
|
||||||
stg %r14,__SF_EMPTY+16(%r15) # set exit reason code
|
stg %r14,__SF_EMPTY+16(%r15) # set exit reason code
|
||||||
j sie_exit
|
j sie_exit
|
||||||
|
|
||||||
EX_TABLE(.Lrewind_pad,.Lsie_fault)
|
EX_TABLE(.Lrewind_pad6,.Lsie_fault)
|
||||||
|
EX_TABLE(.Lrewind_pad4,.Lsie_fault)
|
||||||
|
EX_TABLE(.Lrewind_pad2,.Lsie_fault)
|
||||||
EX_TABLE(sie_exit,.Lsie_fault)
|
EX_TABLE(sie_exit,.Lsie_fault)
|
||||||
EXPORT_SYMBOL(sie64a)
|
EXPORT_SYMBOL(sie64a)
|
||||||
EXPORT_SYMBOL(sie_exit)
|
EXPORT_SYMBOL(sie_exit)
|
||||||
|
|
|
@ -2160,7 +2160,7 @@ static int modify_ais_mode(struct kvm *kvm, struct kvm_device_attr *attr)
|
||||||
struct kvm_s390_ais_req req;
|
struct kvm_s390_ais_req req;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (!fi->ais_enabled)
|
if (!test_kvm_facility(kvm, 72))
|
||||||
return -ENOTSUPP;
|
return -ENOTSUPP;
|
||||||
|
|
||||||
if (copy_from_user(&req, (void __user *)attr->addr, sizeof(req)))
|
if (copy_from_user(&req, (void __user *)attr->addr, sizeof(req)))
|
||||||
|
@ -2204,7 +2204,7 @@ static int kvm_s390_inject_airq(struct kvm *kvm,
|
||||||
};
|
};
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (!fi->ais_enabled || !adapter->suppressible)
|
if (!test_kvm_facility(kvm, 72) || !adapter->suppressible)
|
||||||
return kvm_s390_inject_vm(kvm, &s390int);
|
return kvm_s390_inject_vm(kvm, &s390int);
|
||||||
|
|
||||||
mutex_lock(&fi->ais_lock);
|
mutex_lock(&fi->ais_lock);
|
||||||
|
|
|
@ -558,7 +558,6 @@ static int kvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
|
||||||
} else {
|
} else {
|
||||||
set_kvm_facility(kvm->arch.model.fac_mask, 72);
|
set_kvm_facility(kvm->arch.model.fac_mask, 72);
|
||||||
set_kvm_facility(kvm->arch.model.fac_list, 72);
|
set_kvm_facility(kvm->arch.model.fac_list, 72);
|
||||||
kvm->arch.float_int.ais_enabled = 1;
|
|
||||||
r = 0;
|
r = 0;
|
||||||
}
|
}
|
||||||
mutex_unlock(&kvm->lock);
|
mutex_unlock(&kvm->lock);
|
||||||
|
@ -1533,7 +1532,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
|
||||||
mutex_init(&kvm->arch.float_int.ais_lock);
|
mutex_init(&kvm->arch.float_int.ais_lock);
|
||||||
kvm->arch.float_int.simm = 0;
|
kvm->arch.float_int.simm = 0;
|
||||||
kvm->arch.float_int.nimm = 0;
|
kvm->arch.float_int.nimm = 0;
|
||||||
kvm->arch.float_int.ais_enabled = 0;
|
|
||||||
spin_lock_init(&kvm->arch.float_int.lock);
|
spin_lock_init(&kvm->arch.float_int.lock);
|
||||||
for (i = 0; i < FIRQ_LIST_COUNT; i++)
|
for (i = 0; i < FIRQ_LIST_COUNT; i++)
|
||||||
INIT_LIST_HEAD(&kvm->arch.float_int.lists[i]);
|
INIT_LIST_HEAD(&kvm->arch.float_int.lists[i]);
|
||||||
|
|
|
@ -101,7 +101,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
|
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
goto check_asce_limit;
|
goto check_asce_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
|
||||||
addr = PAGE_ALIGN(addr);
|
addr = PAGE_ALIGN(addr);
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
|
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
goto check_asce_limit;
|
goto check_asce_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
||||||
|
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
|
||||||
|
|
||||||
vma = find_vma(mm, addr);
|
vma = find_vma(mm, addr);
|
||||||
if (TASK_SIZE - len >= addr &&
|
if (TASK_SIZE - len >= addr &&
|
||||||
(!vma || addr + len <= vma->vm_start))
|
(!vma || addr + len <= vm_start_gap(vma)))
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -192,9 +192,9 @@ config NR_CPUS
|
||||||
int "Maximum number of CPUs"
|
int "Maximum number of CPUs"
|
||||||
depends on SMP
|
depends on SMP
|
||||||
range 2 32 if SPARC32
|
range 2 32 if SPARC32
|
||||||
range 2 1024 if SPARC64
|
range 2 4096 if SPARC64
|
||||||
default 32 if SPARC32
|
default 32 if SPARC32
|
||||||
default 64 if SPARC64
|
default 4096 if SPARC64
|
||||||
|
|
||||||
source kernel/Kconfig.hz
|
source kernel/Kconfig.hz
|
||||||
|
|
||||||
|
@ -295,9 +295,13 @@ config NUMA
|
||||||
depends on SPARC64 && SMP
|
depends on SPARC64 && SMP
|
||||||
|
|
||||||
config NODES_SHIFT
|
config NODES_SHIFT
|
||||||
int
|
int "Maximum NUMA Nodes (as a power of 2)"
|
||||||
default "4"
|
range 4 5 if SPARC64
|
||||||
|
default "5"
|
||||||
depends on NEED_MULTIPLE_NODES
|
depends on NEED_MULTIPLE_NODES
|
||||||
|
help
|
||||||
|
Specify the maximum number of NUMA Nodes available on the target
|
||||||
|
system. Increases memory reserved to accommodate various tables.
|
||||||
|
|
||||||
# Some NUMA nodes have memory ranges that span
|
# Some NUMA nodes have memory ranges that span
|
||||||
# other nodes. Even though a pfn is valid and
|
# other nodes. Even though a pfn is valid and
|
||||||
|
@ -573,9 +577,6 @@ config SYSVIPC_COMPAT
|
||||||
depends on COMPAT && SYSVIPC
|
depends on COMPAT && SYSVIPC
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config KEYS_COMPAT
|
|
||||||
def_bool y if COMPAT && KEYS
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "net/Kconfig"
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
#define CTX_NR_MASK TAG_CONTEXT_BITS
|
#define CTX_NR_MASK TAG_CONTEXT_BITS
|
||||||
#define CTX_HW_MASK (CTX_NR_MASK | CTX_PGSZ_MASK)
|
#define CTX_HW_MASK (CTX_NR_MASK | CTX_PGSZ_MASK)
|
||||||
|
|
||||||
#define CTX_FIRST_VERSION ((_AC(1,UL) << CTX_VERSION_SHIFT) + _AC(1,UL))
|
#define CTX_FIRST_VERSION BIT(CTX_VERSION_SHIFT)
|
||||||
#define CTX_VALID(__ctx) \
|
#define CTX_VALID(__ctx) \
|
||||||
(!(((__ctx.sparc64_ctx_val) ^ tlb_context_cache) & CTX_VERSION_MASK))
|
(!(((__ctx.sparc64_ctx_val) ^ tlb_context_cache) & CTX_VERSION_MASK))
|
||||||
#define CTX_HWBITS(__ctx) ((__ctx.sparc64_ctx_val) & CTX_HW_MASK)
|
#define CTX_HWBITS(__ctx) ((__ctx.sparc64_ctx_val) & CTX_HW_MASK)
|
||||||
|
|
|
@ -19,13 +19,8 @@ extern spinlock_t ctx_alloc_lock;
|
||||||
extern unsigned long tlb_context_cache;
|
extern unsigned long tlb_context_cache;
|
||||||
extern unsigned long mmu_context_bmap[];
|
extern unsigned long mmu_context_bmap[];
|
||||||
|
|
||||||
|
DECLARE_PER_CPU(struct mm_struct *, per_cpu_secondary_mm);
|
||||||
void get_new_mmu_context(struct mm_struct *mm);
|
void get_new_mmu_context(struct mm_struct *mm);
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
void smp_new_mmu_context_version(void);
|
|
||||||
#else
|
|
||||||
#define smp_new_mmu_context_version() do { } while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
|
int init_new_context(struct task_struct *tsk, struct mm_struct *mm);
|
||||||
void destroy_context(struct mm_struct *mm);
|
void destroy_context(struct mm_struct *mm);
|
||||||
|
|
||||||
|
@ -76,8 +71,9 @@ void __flush_tlb_mm(unsigned long, unsigned long);
|
||||||
static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, struct task_struct *tsk)
|
static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, struct task_struct *tsk)
|
||||||
{
|
{
|
||||||
unsigned long ctx_valid, flags;
|
unsigned long ctx_valid, flags;
|
||||||
int cpu;
|
int cpu = smp_processor_id();
|
||||||
|
|
||||||
|
per_cpu(per_cpu_secondary_mm, cpu) = mm;
|
||||||
if (unlikely(mm == &init_mm))
|
if (unlikely(mm == &init_mm))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -123,7 +119,6 @@ static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, str
|
||||||
* for the first time, we must flush that context out of the
|
* for the first time, we must flush that context out of the
|
||||||
* local TLB.
|
* local TLB.
|
||||||
*/
|
*/
|
||||||
cpu = smp_processor_id();
|
|
||||||
if (!ctx_valid || !cpumask_test_cpu(cpu, mm_cpumask(mm))) {
|
if (!ctx_valid || !cpumask_test_cpu(cpu, mm_cpumask(mm))) {
|
||||||
cpumask_set_cpu(cpu, mm_cpumask(mm));
|
cpumask_set_cpu(cpu, mm_cpumask(mm));
|
||||||
__flush_tlb_mm(CTX_HWBITS(mm->context),
|
__flush_tlb_mm(CTX_HWBITS(mm->context),
|
||||||
|
@ -133,26 +128,7 @@ static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, str
|
||||||
}
|
}
|
||||||
|
|
||||||
#define deactivate_mm(tsk,mm) do { } while (0)
|
#define deactivate_mm(tsk,mm) do { } while (0)
|
||||||
|
#define activate_mm(active_mm, mm) switch_mm(active_mm, mm, NULL)
|
||||||
/* Activate a new MM instance for the current task. */
|
|
||||||
static inline void activate_mm(struct mm_struct *active_mm, struct mm_struct *mm)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
int cpu;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&mm->context.lock, flags);
|
|
||||||
if (!CTX_VALID(mm->context))
|
|
||||||
get_new_mmu_context(mm);
|
|
||||||
cpu = smp_processor_id();
|
|
||||||
if (!cpumask_test_cpu(cpu, mm_cpumask(mm)))
|
|
||||||
cpumask_set_cpu(cpu, mm_cpumask(mm));
|
|
||||||
|
|
||||||
load_secondary_context(mm);
|
|
||||||
__flush_tlb_mm(CTX_HWBITS(mm->context), SECONDARY_CONTEXT);
|
|
||||||
tsb_context_switch(mm);
|
|
||||||
spin_unlock_irqrestore(&mm->context.lock, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* !(__ASSEMBLY__) */
|
#endif /* !(__ASSEMBLY__) */
|
||||||
|
|
||||||
#endif /* !(__SPARC64_MMU_CONTEXT_H) */
|
#endif /* !(__SPARC64_MMU_CONTEXT_H) */
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
#define PIL_SMP_CALL_FUNC 1
|
#define PIL_SMP_CALL_FUNC 1
|
||||||
#define PIL_SMP_RECEIVE_SIGNAL 2
|
#define PIL_SMP_RECEIVE_SIGNAL 2
|
||||||
#define PIL_SMP_CAPTURE 3
|
#define PIL_SMP_CAPTURE 3
|
||||||
#define PIL_SMP_CTX_NEW_VERSION 4
|
|
||||||
#define PIL_DEVICE_IRQ 5
|
#define PIL_DEVICE_IRQ 5
|
||||||
#define PIL_SMP_CALL_FUNC_SNGL 6
|
#define PIL_SMP_CALL_FUNC_SNGL 6
|
||||||
#define PIL_DEFERRED_PCR_WORK 7
|
#define PIL_DEFERRED_PCR_WORK 7
|
||||||
|
|
|
@ -327,6 +327,7 @@ struct vio_dev {
|
||||||
int compat_len;
|
int compat_len;
|
||||||
|
|
||||||
u64 dev_no;
|
u64 dev_no;
|
||||||
|
u64 id;
|
||||||
|
|
||||||
unsigned long channel_id;
|
unsigned long channel_id;
|
||||||
|
|
||||||
|
|
|
@ -909,7 +909,7 @@ static int register_services(struct ds_info *dp)
|
||||||
pbuf.req.handle = cp->handle;
|
pbuf.req.handle = cp->handle;
|
||||||
pbuf.req.major = 1;
|
pbuf.req.major = 1;
|
||||||
pbuf.req.minor = 0;
|
pbuf.req.minor = 0;
|
||||||
strcpy(pbuf.req.svc_id, cp->service_id);
|
strcpy(pbuf.id_buf, cp->service_id);
|
||||||
|
|
||||||
err = __ds_send(lp, &pbuf, msg_len);
|
err = __ds_send(lp, &pbuf, msg_len);
|
||||||
if (err > 0)
|
if (err > 0)
|
||||||
|
|
|
@ -1034,17 +1034,26 @@ static void __init init_cpu_send_mondo_info(struct trap_per_cpu *tb)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
unsigned long page;
|
unsigned long page;
|
||||||
|
void *mondo, *p;
|
||||||
|
|
||||||
BUILD_BUG_ON((NR_CPUS * sizeof(u16)) > (PAGE_SIZE - 64));
|
BUILD_BUG_ON((NR_CPUS * sizeof(u16)) > PAGE_SIZE);
|
||||||
|
|
||||||
|
/* Make sure mondo block is 64byte aligned */
|
||||||
|
p = kzalloc(127, GFP_KERNEL);
|
||||||
|
if (!p) {
|
||||||
|
prom_printf("SUN4V: Error, cannot allocate mondo block.\n");
|
||||||
|
prom_halt();
|
||||||
|
}
|
||||||
|
mondo = (void *)(((unsigned long)p + 63) & ~0x3f);
|
||||||
|
tb->cpu_mondo_block_pa = __pa(mondo);
|
||||||
|
|
||||||
page = get_zeroed_page(GFP_KERNEL);
|
page = get_zeroed_page(GFP_KERNEL);
|
||||||
if (!page) {
|
if (!page) {
|
||||||
prom_printf("SUN4V: Error, cannot allocate cpu mondo page.\n");
|
prom_printf("SUN4V: Error, cannot allocate cpu list page.\n");
|
||||||
prom_halt();
|
prom_halt();
|
||||||
}
|
}
|
||||||
|
|
||||||
tb->cpu_mondo_block_pa = __pa(page);
|
tb->cpu_list_pa = __pa(page);
|
||||||
tb->cpu_list_pa = __pa(page + 64);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ void handle_stdfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr
|
||||||
/* smp_64.c */
|
/* smp_64.c */
|
||||||
void __irq_entry smp_call_function_client(int irq, struct pt_regs *regs);
|
void __irq_entry smp_call_function_client(int irq, struct pt_regs *regs);
|
||||||
void __irq_entry smp_call_function_single_client(int irq, struct pt_regs *regs);
|
void __irq_entry smp_call_function_single_client(int irq, struct pt_regs *regs);
|
||||||
void __irq_entry smp_new_mmu_context_version_client(int irq, struct pt_regs *regs);
|
|
||||||
void __irq_entry smp_penguin_jailcell(int irq, struct pt_regs *regs);
|
void __irq_entry smp_penguin_jailcell(int irq, struct pt_regs *regs);
|
||||||
void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs);
|
void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs);
|
||||||
|
|
||||||
|
|
|
@ -964,37 +964,6 @@ void flush_dcache_page_all(struct mm_struct *mm, struct page *page)
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
void __irq_entry smp_new_mmu_context_version_client(int irq, struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
struct mm_struct *mm;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
clear_softint(1 << irq);
|
|
||||||
|
|
||||||
/* See if we need to allocate a new TLB context because
|
|
||||||
* the version of the one we are using is now out of date.
|
|
||||||
*/
|
|
||||||
mm = current->active_mm;
|
|
||||||
if (unlikely(!mm || (mm == &init_mm)))
|
|
||||||
return;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&mm->context.lock, flags);
|
|
||||||
|
|
||||||
if (unlikely(!CTX_VALID(mm->context)))
|
|
||||||
get_new_mmu_context(mm);
|
|
||||||
|
|
||||||
spin_unlock_irqrestore(&mm->context.lock, flags);
|
|
||||||
|
|
||||||
load_secondary_context(mm);
|
|
||||||
__flush_tlb_mm(CTX_HWBITS(mm->context),
|
|
||||||
SECONDARY_CONTEXT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void smp_new_mmu_context_version(void)
|
|
||||||
{
|
|
||||||
smp_cross_call(&xcall_new_mmu_context_version, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_KGDB
|
#ifdef CONFIG_KGDB
|
||||||
void kgdb_roundup_cpus(unsigned long flags)
|
void kgdb_roundup_cpus(unsigned long flags)
|
||||||
{
|
{
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue