Merge branch 'for-4.3-fixes' into for-4.4
This commit is contained in:
commit
159b5bb464
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -36,6 +36,7 @@
|
||||||
modules.builtin
|
modules.builtin
|
||||||
Module.symvers
|
Module.symvers
|
||||||
*.dwo
|
*.dwo
|
||||||
|
*.su
|
||||||
|
|
||||||
#
|
#
|
||||||
# Top-level generic files
|
# Top-level generic files
|
||||||
|
@ -44,6 +45,7 @@ Module.symvers
|
||||||
/TAGS
|
/TAGS
|
||||||
/linux
|
/linux
|
||||||
/vmlinux
|
/vmlinux
|
||||||
|
/vmlinux.32
|
||||||
/vmlinux-gdb.py
|
/vmlinux-gdb.py
|
||||||
/vmlinuz
|
/vmlinuz
|
||||||
/System.map
|
/System.map
|
||||||
|
@ -89,6 +91,9 @@ GRTAGS
|
||||||
GSYMS
|
GSYMS
|
||||||
GTAGS
|
GTAGS
|
||||||
|
|
||||||
|
# id-utils files
|
||||||
|
ID
|
||||||
|
|
||||||
*.orig
|
*.orig
|
||||||
*~
|
*~
|
||||||
\#*#
|
\#*#
|
||||||
|
@ -97,6 +102,7 @@ GTAGS
|
||||||
# Leavings from module signing
|
# Leavings from module signing
|
||||||
#
|
#
|
||||||
extra_certificates
|
extra_certificates
|
||||||
|
signing_key.pem
|
||||||
signing_key.priv
|
signing_key.priv
|
||||||
signing_key.x509
|
signing_key.x509
|
||||||
x509.genkey
|
x509.genkey
|
||||||
|
|
4
CREDITS
4
CREDITS
|
@ -2992,6 +2992,10 @@ S: 2200 Mission College Blvd
|
||||||
S: Santa Clara, CA 95052
|
S: Santa Clara, CA 95052
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
|
N: Anil Ravindranath
|
||||||
|
E: anil_ravindranath@pmc-sierra.com
|
||||||
|
D: PMC-Sierra MaxRAID driver
|
||||||
|
|
||||||
N: Eric S. Raymond
|
N: Eric S. Raymond
|
||||||
E: esr@thyrsus.com
|
E: esr@thyrsus.com
|
||||||
W: http://www.tuxedo.org/~esr/
|
W: http://www.tuxedo.org/~esr/
|
||||||
|
|
23
Documentation/ABI/testing/sysfs-hypervisor-pmu
Normal file
23
Documentation/ABI/testing/sysfs-hypervisor-pmu
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
What: /sys/hypervisor/pmu/pmu_mode
|
||||||
|
Date: August 2015
|
||||||
|
KernelVersion: 4.3
|
||||||
|
Contact: Boris Ostrovsky <boris.ostrovsky@oracle.com>
|
||||||
|
Description:
|
||||||
|
Describes mode that Xen's performance-monitoring unit (PMU)
|
||||||
|
uses. Accepted values are
|
||||||
|
"off" -- PMU is disabled
|
||||||
|
"self" -- The guest can profile itself
|
||||||
|
"hv" -- The guest can profile itself and, if it is
|
||||||
|
privileged (e.g. dom0), the hypervisor
|
||||||
|
"all" -- The guest can profile itself, the hypervisor
|
||||||
|
and all other guests. Only available to
|
||||||
|
privileged guests.
|
||||||
|
|
||||||
|
What: /sys/hypervisor/pmu/pmu_features
|
||||||
|
Date: August 2015
|
||||||
|
KernelVersion: 4.3
|
||||||
|
Contact: Boris Ostrovsky <boris.ostrovsky@oracle.com>
|
||||||
|
Description:
|
||||||
|
Describes Xen PMU features (as an integer). A set bit indicates
|
||||||
|
that the corresponding feature is enabled. See
|
||||||
|
include/xen/interface/xenpmu.h for available features
|
|
@ -43,6 +43,7 @@ o udev 081 # udevd --version
|
||||||
o grub 0.93 # grub --version || grub-install --version
|
o grub 0.93 # grub --version || grub-install --version
|
||||||
o mcelog 0.6 # mcelog --version
|
o mcelog 0.6 # mcelog --version
|
||||||
o iptables 1.4.2 # iptables -V
|
o iptables 1.4.2 # iptables -V
|
||||||
|
o openssl & libcrypto 1.0.1k # openssl version
|
||||||
|
|
||||||
|
|
||||||
Kernel compilation
|
Kernel compilation
|
||||||
|
@ -79,6 +80,17 @@ BC
|
||||||
You will need bc to build kernels 3.10 and higher
|
You will need bc to build kernels 3.10 and higher
|
||||||
|
|
||||||
|
|
||||||
|
OpenSSL
|
||||||
|
-------
|
||||||
|
|
||||||
|
Module signing and external certificate handling use the OpenSSL program and
|
||||||
|
crypto library to do key creation and signature generation.
|
||||||
|
|
||||||
|
You will need openssl to build kernels 3.7 and higher if module signing is
|
||||||
|
enabled. You will also need openssl development packages to build kernels 4.3
|
||||||
|
and higher.
|
||||||
|
|
||||||
|
|
||||||
System utilities
|
System utilities
|
||||||
================
|
================
|
||||||
|
|
||||||
|
@ -295,6 +307,10 @@ Binutils
|
||||||
--------
|
--------
|
||||||
o <ftp://ftp.kernel.org/pub/linux/devel/binutils/>
|
o <ftp://ftp.kernel.org/pub/linux/devel/binutils/>
|
||||||
|
|
||||||
|
OpenSSL
|
||||||
|
-------
|
||||||
|
o <https://www.openssl.org/>
|
||||||
|
|
||||||
System utilities
|
System utilities
|
||||||
****************
|
****************
|
||||||
|
|
||||||
|
@ -392,4 +408,3 @@ o <http://oprofile.sf.net/download/>
|
||||||
NFS-Utils
|
NFS-Utils
|
||||||
---------
|
---------
|
||||||
o <http://nfs.sourceforge.net/>
|
o <http://nfs.sourceforge.net/>
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,13 @@ crossing restrictions, pass 0 for alloc; passing 4096 says memory allocated
|
||||||
from this pool must not cross 4KByte boundaries.
|
from this pool must not cross 4KByte boundaries.
|
||||||
|
|
||||||
|
|
||||||
|
void *dma_pool_zalloc(struct dma_pool *pool, gfp_t mem_flags,
|
||||||
|
dma_addr_t *handle)
|
||||||
|
|
||||||
|
Wraps dma_pool_alloc() and also zeroes the returned memory if the
|
||||||
|
allocation attempt succeeded.
|
||||||
|
|
||||||
|
|
||||||
void *dma_pool_alloc(struct dma_pool *pool, gfp_t gfp_flags,
|
void *dma_pool_alloc(struct dma_pool *pool, gfp_t gfp_flags,
|
||||||
dma_addr_t *dma_handle);
|
dma_addr_t *dma_handle);
|
||||||
|
|
||||||
|
|
|
@ -490,4 +490,31 @@ X!Ilib/fonts/fonts.c
|
||||||
!Edrivers/hsi/hsi.c
|
!Edrivers/hsi/hsi.c
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="pwm">
|
||||||
|
<title>Pulse-Width Modulation (PWM)</title>
|
||||||
|
<para>
|
||||||
|
Pulse-width modulation is a modulation technique primarily used to
|
||||||
|
control power supplied to electrical devices.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
The PWM framework provides an abstraction for providers and consumers
|
||||||
|
of PWM signals. A controller that provides one or more PWM signals is
|
||||||
|
registered as <structname>struct pwm_chip</structname>. Providers are
|
||||||
|
expected to embed this structure in a driver-specific structure. This
|
||||||
|
structure contains fields that describe a particular chip.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
A chip exposes one or more PWM signal sources, each of which exposed
|
||||||
|
as a <structname>struct pwm_device</structname>. Operations can be
|
||||||
|
performed on PWM devices to control the period, duty cycle, polarity
|
||||||
|
and active state of the signal.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Note that PWM devices are exclusive resources: they can always only be
|
||||||
|
used by one consumer at a time.
|
||||||
|
</para>
|
||||||
|
!Iinclude/linux/pwm.h
|
||||||
|
!Edrivers/pwm/core.c
|
||||||
|
</chapter>
|
||||||
|
|
||||||
</book>
|
</book>
|
||||||
|
|
|
@ -144,7 +144,8 @@ mem_used_max RW the maximum amount memory zram have consumed to
|
||||||
store compressed data
|
store compressed data
|
||||||
mem_limit RW the maximum amount of memory ZRAM can use to store
|
mem_limit RW the maximum amount of memory ZRAM can use to store
|
||||||
the compressed data
|
the compressed data
|
||||||
num_migrated RO the number of objects migrated migrated by compaction
|
pages_compacted RO the number of pages freed during compaction
|
||||||
|
(available only via zram<id>/mm_stat node)
|
||||||
compact WO trigger memory compaction
|
compact WO trigger memory compaction
|
||||||
|
|
||||||
WARNING
|
WARNING
|
||||||
|
|
|
@ -201,7 +201,7 @@ Proportional weight policy files
|
||||||
specifies the number of bytes.
|
specifies the number of bytes.
|
||||||
|
|
||||||
- blkio.io_serviced
|
- blkio.io_serviced
|
||||||
- Number of IOs completed to/from the disk by the group. These
|
- Number of IOs (bio) issued to the disk by the group. These
|
||||||
are further divided by the type of operation - read or write, sync
|
are further divided by the type of operation - read or write, sync
|
||||||
or async. First two fields specify the major and minor number of the
|
or async. First two fields specify the major and minor number of the
|
||||||
device, third field specifies the operation type and the fourth field
|
device, third field specifies the operation type and the fourth field
|
||||||
|
@ -327,18 +327,11 @@ Note: If both BW and IOPS rules are specified for a device, then IO is
|
||||||
subjected to both the constraints.
|
subjected to both the constraints.
|
||||||
|
|
||||||
- blkio.throttle.io_serviced
|
- blkio.throttle.io_serviced
|
||||||
- Number of IOs (bio) completed to/from the disk by the group (as
|
- Number of IOs (bio) issued to the disk by the group. These
|
||||||
seen by throttling policy). These are further divided by the type
|
are further divided by the type of operation - read or write, sync
|
||||||
of operation - read or write, sync or async. First two fields specify
|
or async. First two fields specify the major and minor number of the
|
||||||
the major and minor number of the device, third field specifies the
|
device, third field specifies the operation type and the fourth field
|
||||||
operation type and the fourth field specifies the number of IOs.
|
specifies the number of IOs.
|
||||||
|
|
||||||
blkio.io_serviced does accounting as seen by CFQ and counts are in
|
|
||||||
number of requests (struct request). On the other hand,
|
|
||||||
blkio.throttle.io_serviced counts number of IO in terms of number
|
|
||||||
of bios as seen by throttling policy. These bios can later be
|
|
||||||
merged by elevator and total number of requests completed can be
|
|
||||||
lesser.
|
|
||||||
|
|
||||||
- blkio.throttle.io_service_bytes
|
- blkio.throttle.io_service_bytes
|
||||||
- Number of bytes transferred to/from the disk by the group. These
|
- Number of bytes transferred to/from the disk by the group. These
|
||||||
|
@ -347,11 +340,6 @@ Note: If both BW and IOPS rules are specified for a device, then IO is
|
||||||
device, third field specifies the operation type and the fourth field
|
device, third field specifies the operation type and the fourth field
|
||||||
specifies the number of bytes.
|
specifies the number of bytes.
|
||||||
|
|
||||||
These numbers should roughly be same as blkio.io_service_bytes as
|
|
||||||
updated by CFQ. The difference between two is that
|
|
||||||
blkio.io_service_bytes will not be updated if CFQ is not operating
|
|
||||||
on request queue.
|
|
||||||
|
|
||||||
Common files among various policies
|
Common files among various policies
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
- blkio.reset_stats
|
- blkio.reset_stats
|
||||||
|
|
|
@ -27,7 +27,7 @@ CONTENTS
|
||||||
5-3-1. Format
|
5-3-1. Format
|
||||||
5-3-2. Control Knobs
|
5-3-2. Control Knobs
|
||||||
5-4. Per-Controller Changes
|
5-4. Per-Controller Changes
|
||||||
5-4-1. blkio
|
5-4-1. io
|
||||||
5-4-2. cpuset
|
5-4-2. cpuset
|
||||||
5-4-3. memory
|
5-4-3. memory
|
||||||
6. Planned Changes
|
6. Planned Changes
|
||||||
|
@ -203,7 +203,7 @@ other issues. The mapping from nice level to weight isn't obvious or
|
||||||
universal, and there are various other knobs which simply aren't
|
universal, and there are various other knobs which simply aren't
|
||||||
available for tasks.
|
available for tasks.
|
||||||
|
|
||||||
The blkio controller implicitly creates a hidden leaf node for each
|
The io controller implicitly creates a hidden leaf node for each
|
||||||
cgroup to host the tasks. The hidden leaf has its own copies of all
|
cgroup to host the tasks. The hidden leaf has its own copies of all
|
||||||
the knobs with "leaf_" prefixed. While this allows equivalent control
|
the knobs with "leaf_" prefixed. While this allows equivalent control
|
||||||
over internal tasks, it's with serious drawbacks. It always adds an
|
over internal tasks, it's with serious drawbacks. It always adds an
|
||||||
|
@ -438,9 +438,62 @@ may be specified in any order and not all pairs have to be specified.
|
||||||
|
|
||||||
5-4. Per-Controller Changes
|
5-4. Per-Controller Changes
|
||||||
|
|
||||||
5-4-1. blkio
|
5-4-1. io
|
||||||
|
|
||||||
- blk-throttle becomes properly hierarchical.
|
- blkio is renamed to io. The interface is overhauled anyway. The
|
||||||
|
new name is more in line with the other two major controllers, cpu
|
||||||
|
and memory, and better suited given that it may be used for cgroup
|
||||||
|
writeback without involving block layer.
|
||||||
|
|
||||||
|
- Everything including stat is always hierarchical making separate
|
||||||
|
recursive stat files pointless and, as no internal node can have
|
||||||
|
tasks, leaf weights are meaningless. The operation model is
|
||||||
|
simplified and the interface is overhauled accordingly.
|
||||||
|
|
||||||
|
io.stat
|
||||||
|
|
||||||
|
The stat file. The reported stats are from the point where
|
||||||
|
bio's are issued to request_queue. The stats are counted
|
||||||
|
independent of which policies are enabled. Each line in the
|
||||||
|
file follows the following format. More fields may later be
|
||||||
|
added at the end.
|
||||||
|
|
||||||
|
$MAJ:$MIN rbytes=$RBYTES wbytes=$WBYTES rios=$RIOS wrios=$WIOS
|
||||||
|
|
||||||
|
io.weight
|
||||||
|
|
||||||
|
The weight setting, currently only available and effective if
|
||||||
|
cfq-iosched is in use for the target device. The weight is
|
||||||
|
between 1 and 10000 and defaults to 100. The first line
|
||||||
|
always contains the default weight in the following format to
|
||||||
|
use when per-device setting is missing.
|
||||||
|
|
||||||
|
default $WEIGHT
|
||||||
|
|
||||||
|
Subsequent lines list per-device weights of the following
|
||||||
|
format.
|
||||||
|
|
||||||
|
$MAJ:$MIN $WEIGHT
|
||||||
|
|
||||||
|
Writing "$WEIGHT" or "default $WEIGHT" changes the default
|
||||||
|
setting. Writing "$MAJ:$MIN $WEIGHT" sets per-device weight
|
||||||
|
while "$MAJ:$MIN default" clears it.
|
||||||
|
|
||||||
|
This file is available only on non-root cgroups.
|
||||||
|
|
||||||
|
io.max
|
||||||
|
|
||||||
|
The maximum bandwidth and/or iops setting, only available if
|
||||||
|
blk-throttle is enabled. The file is of the following format.
|
||||||
|
|
||||||
|
$MAJ:$MIN rbps=$RBPS wbps=$WBPS riops=$RIOPS wiops=$WIOPS
|
||||||
|
|
||||||
|
${R|W}BPS are read/write bytes per second and ${R|W}IOPS are
|
||||||
|
read/write IOs per second. "max" indicates no limit. Writing
|
||||||
|
to the file follows the same format but the individual
|
||||||
|
settings may be ommitted or specified in any order.
|
||||||
|
|
||||||
|
This file is available only on non-root cgroups.
|
||||||
|
|
||||||
|
|
||||||
5-4-2. cpuset
|
5-4-2. cpuset
|
||||||
|
|
|
@ -2,7 +2,11 @@ Binding for the Cadence I2C controller
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- reg: Physical base address and size of the controller's register area.
|
- reg: Physical base address and size of the controller's register area.
|
||||||
- compatible: Compatibility string. Must be 'cdns,i2c-r1p10'.
|
- compatible: Should contain one of:
|
||||||
|
* "cdns,i2c-r1p10"
|
||||||
|
Note: Use this when cadence i2c controller version 1.0 is used.
|
||||||
|
* "cdns,i2c-r1p14"
|
||||||
|
Note: Use this when cadence i2c controller version 1.4 is used.
|
||||||
- clocks: Input clock specifier. Refer to common clock bindings.
|
- clocks: Input clock specifier. Refer to common clock bindings.
|
||||||
- interrupts: Interrupt specifier. Refer to interrupt bindings.
|
- interrupts: Interrupt specifier. Refer to interrupt bindings.
|
||||||
- #address-cells: Should be 1.
|
- #address-cells: Should be 1.
|
||||||
|
|
22
Documentation/devicetree/bindings/i2c/i2c-emev2.txt
Normal file
22
Documentation/devicetree/bindings/i2c/i2c-emev2.txt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
Device tree configuration for Renesas EMEV2 IIC controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "renesas,iic-emev2"
|
||||||
|
- reg : address start and address range size of device
|
||||||
|
- interrupts : specifier for the IIC controller interrupt
|
||||||
|
- clocks : phandle to the IP core SCLK
|
||||||
|
- clock-names : must be "sclk"
|
||||||
|
- #address-cells : should be <1>
|
||||||
|
- #size-cells : should be <0>
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
iic0: i2c@e0070000 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
compatible = "renesas,iic-emev2";
|
||||||
|
reg = <0xe0070000 0x28>;
|
||||||
|
interrupts = <0 32 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
clocks = <&iic0_sclk>;
|
||||||
|
clock-names = "sclk";
|
||||||
|
};
|
33
Documentation/devicetree/bindings/i2c/i2c-lpc2k.txt
Normal file
33
Documentation/devicetree/bindings/i2c/i2c-lpc2k.txt
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
NXP I2C controller for LPC2xxx/178x/18xx/43xx
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: must be "nxp,lpc1788-i2c"
|
||||||
|
- reg: physical address and length of the device registers
|
||||||
|
- interrupts: a single interrupt specifier
|
||||||
|
- clocks: clock for the device
|
||||||
|
- #address-cells: should be <1>
|
||||||
|
- #size-cells: should be <0>
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- clock-frequency: the desired I2C bus clock frequency in Hz; in
|
||||||
|
absence of this property the default value is used (100 kHz).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
i2c0: i2c@400a1000 {
|
||||||
|
compatible = "nxp,lpc1788-i2c";
|
||||||
|
reg = <0x400a1000 0x1000>;
|
||||||
|
interrupts = <18>;
|
||||||
|
clocks = <&ccu1 CLK_APB1_I2C0>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c0 {
|
||||||
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
|
lm75@48 {
|
||||||
|
compatible = "nxp,lm75";
|
||||||
|
reg = <0x48>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
74
Documentation/devicetree/bindings/i2c/i2c-mux-reg.txt
Normal file
74
Documentation/devicetree/bindings/i2c/i2c-mux-reg.txt
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
Register-based I2C Bus Mux
|
||||||
|
|
||||||
|
This binding describes an I2C bus multiplexer that uses a single register
|
||||||
|
to route the I2C signals.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: i2c-mux-reg
|
||||||
|
- i2c-parent: The phandle of the I2C bus that this multiplexer's master-side
|
||||||
|
port is connected to.
|
||||||
|
* Standard I2C mux properties. See mux.txt in this directory.
|
||||||
|
* I2C child bus nodes. See mux.txt in this directory.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- reg: this pair of <offset size> specifies the register to control the mux.
|
||||||
|
The <offset size> depends on its parent node. It can be any memory-mapped
|
||||||
|
address. The size must be either 1, 2, or 4 bytes. If reg is omitted, the
|
||||||
|
resource of this device will be used.
|
||||||
|
- little-endian: The existence indicates the register is in little endian.
|
||||||
|
- big-endian: The existence indicates the register is in big endian.
|
||||||
|
If both little-endian and big-endian are omitted, the endianness of the
|
||||||
|
CPU will be used.
|
||||||
|
- write-only: The existence indicates the register is write-only.
|
||||||
|
- idle-state: value to set the muxer to when idle. When no value is
|
||||||
|
given, it defaults to the last value used.
|
||||||
|
|
||||||
|
Whenever an access is made to a device on a child bus, the value set
|
||||||
|
in the revelant node's reg property will be output to the register.
|
||||||
|
|
||||||
|
If an idle state is defined, using the idle-state (optional) property,
|
||||||
|
whenever an access is not being made to a device on a child bus, the
|
||||||
|
register will be set according to the idle value.
|
||||||
|
|
||||||
|
If an idle state is not defined, the most recently used value will be
|
||||||
|
left programmed into the register.
|
||||||
|
|
||||||
|
Example of a mux on PCIe card, the host is a powerpc SoC (big endian):
|
||||||
|
|
||||||
|
i2c-mux {
|
||||||
|
/* the <offset size> depends on the address translation
|
||||||
|
* of the parent device. If omitted, device resource
|
||||||
|
* will be used instead. The size is to determine
|
||||||
|
* whether iowrite32, iowrite16, or iowrite8 will be used.
|
||||||
|
*/
|
||||||
|
reg = <0x6028 0x4>;
|
||||||
|
little-endian; /* little endian register on PCIe */
|
||||||
|
compatible = "i2c-mux-reg";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
i2c-parent = <&i2c1>;
|
||||||
|
i2c@0 {
|
||||||
|
reg = <0>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
si5338: clock-generator@70 {
|
||||||
|
compatible = "silabs,si5338";
|
||||||
|
reg = <0x70>;
|
||||||
|
/* other stuff */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c@1 {
|
||||||
|
/* data is written using iowrite32 */
|
||||||
|
reg = <1>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
si5338: clock-generator@70 {
|
||||||
|
compatible = "silabs,si5338";
|
||||||
|
reg = <0x70>;
|
||||||
|
/* other stuff */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
45
Documentation/devicetree/bindings/i2c/i2c.txt
Normal file
45
Documentation/devicetree/bindings/i2c/i2c.txt
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
Generic device tree bindings for I2C busses
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
This document describes generic bindings which can be used to describe I2C
|
||||||
|
busses in a device tree.
|
||||||
|
|
||||||
|
Required properties
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
- #address-cells - should be <1>. Read more about addresses below.
|
||||||
|
- #size-cells - should be <0>.
|
||||||
|
- compatible - name of I2C bus controller following generic names
|
||||||
|
recommended practice.
|
||||||
|
|
||||||
|
For other required properties e.g. to describe register sets,
|
||||||
|
clocks, etc. check the binding documentation of the specific driver.
|
||||||
|
|
||||||
|
The cells properties above define that an address of children of an I2C bus
|
||||||
|
are described by a single value. This is usually a 7 bit address. However,
|
||||||
|
flags can be attached to the address. I2C_TEN_BIT_ADDRESS is used to mark a 10
|
||||||
|
bit address. It is needed to avoid the ambiguity between e.g. a 7 bit address
|
||||||
|
of 0x50 and a 10 bit address of 0x050 which, in theory, can be on the same bus.
|
||||||
|
Another flag is I2C_OWN_SLAVE_ADDRESS to mark addresses on which we listen to
|
||||||
|
be devices ourselves.
|
||||||
|
|
||||||
|
Optional properties
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
These properties may not be supported by all drivers. However, if a driver
|
||||||
|
wants to support one of the below features, it should adapt the bindings below.
|
||||||
|
|
||||||
|
- clock-frequency - frequency of bus clock in Hz.
|
||||||
|
- wakeup-source - device can be used as a wakeup source.
|
||||||
|
|
||||||
|
- interrupts - interrupts used by the device.
|
||||||
|
- interrupt-names - "irq" and "wakeup" names are recognized by I2C core,
|
||||||
|
other names are left to individual drivers.
|
||||||
|
|
||||||
|
Binding may contain optional "interrupts" property, describing interrupts
|
||||||
|
used by the device. I2C core will assign "irq" interrupt (or the very first
|
||||||
|
interrupt if not using interrupt names) as primary interrupt for the slave.
|
||||||
|
|
||||||
|
Also, if device is marked as a wakeup source, I2C core will set up "wakeup"
|
||||||
|
interrupt for the device. If "wakeup" interrupt name is not present in the
|
||||||
|
binding, then primary interrupt will be used as wakeup interrupt.
|
|
@ -95,6 +95,8 @@ stm,m41t00 Serial Access TIMEKEEPER
|
||||||
stm,m41t62 Serial real-time clock (RTC) with alarm
|
stm,m41t62 Serial real-time clock (RTC) with alarm
|
||||||
stm,m41t80 M41T80 - SERIAL ACCESS RTC WITH ALARMS
|
stm,m41t80 M41T80 - SERIAL ACCESS RTC WITH ALARMS
|
||||||
taos,tsl2550 Ambient Light Sensor with SMBUS/Two Wire Serial Interface
|
taos,tsl2550 Ambient Light Sensor with SMBUS/Two Wire Serial Interface
|
||||||
|
ti,ads7828 8-Channels, 12-bit ADC
|
||||||
|
ti,ads7830 8-Channels, 8-bit ADC
|
||||||
ti,tsc2003 I2C Touch-Screen Controller
|
ti,tsc2003 I2C Touch-Screen Controller
|
||||||
ti,tmp102 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
|
ti,tmp102 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
|
||||||
ti,tmp103 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
|
ti,tmp103 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
* Toradex Colibri VF50 Touchscreen driver
|
||||||
|
|
||||||
|
Required Properties:
|
||||||
|
- compatible must be toradex,vf50-touchscreen
|
||||||
|
- io-channels: adc channels being used by the Colibri VF50 module
|
||||||
|
- xp-gpios: FET gate driver for input of X+
|
||||||
|
- xm-gpios: FET gate driver for input of X-
|
||||||
|
- yp-gpios: FET gate driver for input of Y+
|
||||||
|
- ym-gpios: FET gate driver for input of Y-
|
||||||
|
- interrupt-parent: phandle for the interrupt controller
|
||||||
|
- interrupts: pen irq interrupt for touch detection
|
||||||
|
- pinctrl-names: "idle", "default", "gpios"
|
||||||
|
- pinctrl-0: pinctrl node for pen/touch detection state pinmux
|
||||||
|
- pinctrl-1: pinctrl node for X/Y and pressure measurement (ADC) state pinmux
|
||||||
|
- pinctrl-2: pinctrl node for gpios functioning as FET gate drivers
|
||||||
|
- vf50-ts-min-pressure: pressure level at which to stop measuring X/Y values
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
touchctrl: vf50_touchctrl {
|
||||||
|
compatible = "toradex,vf50-touchscreen";
|
||||||
|
io-channels = <&adc1 0>,<&adc0 0>,
|
||||||
|
<&adc0 1>,<&adc1 2>;
|
||||||
|
xp-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
|
||||||
|
xm-gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
|
||||||
|
yp-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
||||||
|
ym-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
|
||||||
|
interrupt-parent = <&gpio0>;
|
||||||
|
interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
pinctrl-names = "idle","default","gpios";
|
||||||
|
pinctrl-0 = <&pinctrl_touchctrl_idle>;
|
||||||
|
pinctrl-1 = <&pinctrl_touchctrl_default>;
|
||||||
|
pinctrl-2 = <&pinctrl_touchctrl_gpios>;
|
||||||
|
vf50-ts-min-pressure = <200>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
|
@ -0,0 +1,36 @@
|
||||||
|
* Freescale i.MX6UL Touch Controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: must be "fsl,imx6ul-tsc".
|
||||||
|
- reg: this touch controller address and the ADC2 address.
|
||||||
|
- interrupts: the interrupt of this touch controller and ADC2.
|
||||||
|
- clocks: the root clock of touch controller and ADC2.
|
||||||
|
- clock-names; must be "tsc" and "adc".
|
||||||
|
- xnur-gpio: the X- gpio this controller connect to.
|
||||||
|
This xnur-gpio returns to low once the finger leave the touch screen (The
|
||||||
|
last touch event the touch controller capture).
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- measure-delay-time: the value of measure delay time.
|
||||||
|
Before X-axis or Y-axis measurement, the screen need some time before
|
||||||
|
even potential distribution ready.
|
||||||
|
This value depends on the touch screen.
|
||||||
|
- pre-charge-time: the touch screen need some time to precharge.
|
||||||
|
This value depends on the touch screen.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
tsc: tsc@02040000 {
|
||||||
|
compatible = "fsl,imx6ul-tsc";
|
||||||
|
reg = <0x02040000 0x4000>, <0x0219c000 0x4000>;
|
||||||
|
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&clks IMX6UL_CLK_IPG>,
|
||||||
|
<&clks IMX6UL_CLK_ADC2>;
|
||||||
|
clock-names = "tsc", "adc";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_tsc>;
|
||||||
|
xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
||||||
|
measure-delay-time = <0xfff>;
|
||||||
|
pre-charge-time = <0xffff>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
|
@ -43,6 +43,12 @@ conditions.
|
||||||
|
|
||||||
** System MMU optional properties:
|
** System MMU optional properties:
|
||||||
|
|
||||||
|
- dma-coherent : Present if page table walks made by the SMMU are
|
||||||
|
cache coherent with the CPU.
|
||||||
|
|
||||||
|
NOTE: this only applies to the SMMU itself, not
|
||||||
|
masters connected upstream of the SMMU.
|
||||||
|
|
||||||
- calxeda,smmu-secure-config-access : Enable proper handling of buggy
|
- calxeda,smmu-secure-config-access : Enable proper handling of buggy
|
||||||
implementations that always use secure access to
|
implementations that always use secure access to
|
||||||
SMMU configuration registers. In this case non-secure
|
SMMU configuration registers. In this case non-secure
|
||||||
|
|
|
@ -8,6 +8,11 @@ Required properties:
|
||||||
- ti,hwmods : Name of the hwmod associated with the IOMMU instance
|
- ti,hwmods : Name of the hwmod associated with the IOMMU instance
|
||||||
- reg : Address space for the configuration registers
|
- reg : Address space for the configuration registers
|
||||||
- interrupts : Interrupt specifier for the IOMMU instance
|
- interrupts : Interrupt specifier for the IOMMU instance
|
||||||
|
- #iommu-cells : Should be 0. OMAP IOMMUs are all "single-master" devices,
|
||||||
|
and needs no additional data in the pargs specifier. Please
|
||||||
|
also refer to the generic bindings document for more info
|
||||||
|
on this property,
|
||||||
|
Documentation/devicetree/bindings/iommu/iommu.txt
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- ti,#tlb-entries : Number of entries in the translation look-aside buffer.
|
- ti,#tlb-entries : Number of entries in the translation look-aside buffer.
|
||||||
|
@ -18,6 +23,7 @@ Optional properties:
|
||||||
Example:
|
Example:
|
||||||
/* OMAP3 ISP MMU */
|
/* OMAP3 ISP MMU */
|
||||||
mmu_isp: mmu@480bd400 {
|
mmu_isp: mmu@480bd400 {
|
||||||
|
#iommu-cells = <0>;
|
||||||
compatible = "ti,omap2-iommu";
|
compatible = "ti,omap2-iommu";
|
||||||
reg = <0x480bd400 0x80>;
|
reg = <0x480bd400 0x80>;
|
||||||
interrupts = <24>;
|
interrupts = <24>;
|
||||||
|
|
25
Documentation/devicetree/bindings/ipmi.txt
Normal file
25
Documentation/devicetree/bindings/ipmi.txt
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
IPMI device
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: should be one of ipmi-kcs, ipmi-smic, or ipmi-bt
|
||||||
|
- device_type: should be ipmi
|
||||||
|
- reg: Address and length of the register set for the device
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- interrupts: The interrupt for the device. Without this the interface
|
||||||
|
is polled.
|
||||||
|
- reg-size - The size of the register. Defaults to 1
|
||||||
|
- reg-spacing - The number of bytes between register starts. Defaults to 1
|
||||||
|
- reg-shift - The amount to shift the registers to the right to get the data
|
||||||
|
into bit zero.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
smic@fff3a000 {
|
||||||
|
compatible = "ipmi-smic";
|
||||||
|
device_type = "ipmi";
|
||||||
|
reg = <0xfff3a000 0x1000>;
|
||||||
|
interrupts = <0 24 4>;
|
||||||
|
reg-size = <4>;
|
||||||
|
reg-spacing = <4>;
|
||||||
|
};
|
|
@ -9,7 +9,7 @@ Device Tree Bindings for the Arasan SDHCI Controller
|
||||||
|
|
||||||
Required Properties:
|
Required Properties:
|
||||||
- compatible: Compatibility string. Must be 'arasan,sdhci-8.9a' or
|
- compatible: Compatibility string. Must be 'arasan,sdhci-8.9a' or
|
||||||
'arasan,sdhci-4.9a'
|
'arasan,sdhci-4.9a' or 'arasan,sdhci-5.1'
|
||||||
- reg: From mmc bindings: Register location and length.
|
- reg: From mmc bindings: Register location and length.
|
||||||
- clocks: From clock bindings: Handles to clock inputs.
|
- clocks: From clock bindings: Handles to clock inputs.
|
||||||
- clock-names: From clock bindings: Tuple including "clk_xin" and "clk_ahb"
|
- clock-names: From clock bindings: Tuple including "clk_xin" and "clk_ahb"
|
||||||
|
|
|
@ -15,6 +15,7 @@ Required properties:
|
||||||
"fsl,imx6q-usdhc"
|
"fsl,imx6q-usdhc"
|
||||||
"fsl,imx6sl-usdhc"
|
"fsl,imx6sl-usdhc"
|
||||||
"fsl,imx6sx-usdhc"
|
"fsl,imx6sx-usdhc"
|
||||||
|
"fsl,imx7d-usdhc"
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- fsl,wp-controller : Indicate to use controller internal write protection
|
- fsl,wp-controller : Indicate to use controller internal write protection
|
||||||
|
@ -27,6 +28,11 @@ Optional properties:
|
||||||
transparent level shifters on the outputs of the controller. Two cells are
|
transparent level shifters on the outputs of the controller. Two cells are
|
||||||
required, first cell specifies minimum slot voltage (mV), second cell
|
required, first cell specifies minimum slot voltage (mV), second cell
|
||||||
specifies maximum slot voltage (mV). Several ranges could be specified.
|
specifies maximum slot voltage (mV). Several ranges could be specified.
|
||||||
|
- fsl,tuning-step: Specify the increasing delay cell steps in tuning procedure.
|
||||||
|
The uSDHC use one delay cell as default increasing step to do tuning process.
|
||||||
|
This property allows user to change the tuning step to more than one delay
|
||||||
|
cells which is useful for some special boards or cards when the default
|
||||||
|
tuning step can't find the proper delay window within limited tuning retries.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
|
21
Documentation/devicetree/bindings/mmc/sdhci-atmel.txt
Normal file
21
Documentation/devicetree/bindings/mmc/sdhci-atmel.txt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
* Atmel SDHCI controller
|
||||||
|
|
||||||
|
This file documents the differences between the core properties in
|
||||||
|
Documentation/devicetree/bindings/mmc/mmc.txt and the properties used by the
|
||||||
|
sdhci-of-at91 driver.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Must be "atmel,sama5d2-sdhci".
|
||||||
|
- clocks: Phandlers to the clocks.
|
||||||
|
- clock-names: Must be "hclock", "multclk", "baseclk";
|
||||||
|
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
sdmmc0: sdio-host@a0000000 {
|
||||||
|
compatible = "atmel,sama5d2-sdhci";
|
||||||
|
reg = <0xa0000000 0x300>;
|
||||||
|
interrupts = <31 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
|
clocks = <&sdmmc0_hclk>, <&sdmmc0_gclk>, <&main>;
|
||||||
|
clock-names = "hclock", "multclk", "baseclk";
|
||||||
|
};
|
|
@ -102,7 +102,7 @@ not every application needs SDIO irq, e.g. MMC cards.
|
||||||
pinctrl-1 = <&mmc1_idle>;
|
pinctrl-1 = <&mmc1_idle>;
|
||||||
pinctrl-2 = <&mmc1_sleep>;
|
pinctrl-2 = <&mmc1_sleep>;
|
||||||
...
|
...
|
||||||
interrupts-extended = <&intc 64 &gpio2 28 0>;
|
interrupts-extended = <&intc 64 &gpio2 28 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1_idle : pinmux_cirq_pin {
|
mmc1_idle : pinmux_cirq_pin {
|
||||||
|
|
20
Documentation/devicetree/bindings/pwm/lpc1850-sct-pwm.txt
Normal file
20
Documentation/devicetree/bindings/pwm/lpc1850-sct-pwm.txt
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
* NXP LPC18xx State Configurable Timer - Pulse Width Modulator driver
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Should be "nxp,lpc1850-sct-pwm"
|
||||||
|
- reg: Should contain physical base address and length of pwm registers.
|
||||||
|
- clocks: Must contain an entry for each entry in clock-names.
|
||||||
|
See ../clock/clock-bindings.txt for details.
|
||||||
|
- clock-names: Must include the following entries.
|
||||||
|
- pwm: PWM operating clock.
|
||||||
|
- #pwm-cells: Should be 3. See pwm.txt in this directory for the description
|
||||||
|
of the cells format.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
pwm: pwm@40000000 {
|
||||||
|
compatible = "nxp,lpc1850-sct-pwm";
|
||||||
|
reg = <0x40000000 0x1000>;
|
||||||
|
clocks =<&ccu1 CLK_CPU_SCT>;
|
||||||
|
clock-names = "pwm";
|
||||||
|
#pwm-cells = <3>;
|
||||||
|
};
|
21
Documentation/devicetree/bindings/rtc/nxp,lpc1788-rtc.txt
Normal file
21
Documentation/devicetree/bindings/rtc/nxp,lpc1788-rtc.txt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
NXP LPC1788 real-time clock
|
||||||
|
|
||||||
|
The LPC1788 RTC provides calendar and clock functionality
|
||||||
|
together with periodic tick and alarm interrupt support.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : must contain "nxp,lpc1788-rtc"
|
||||||
|
- reg : Specifies base physical address and size of the registers.
|
||||||
|
- interrupts : A single interrupt specifier.
|
||||||
|
- clocks : Must contain clock specifiers for rtc and register clock
|
||||||
|
- clock-names : Must contain "rtc" and "reg"
|
||||||
|
See ../clocks/clock-bindings.txt for details.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
rtc: rtc@40046000 {
|
||||||
|
compatible = "nxp,lpc1788-rtc";
|
||||||
|
reg = <0x40046000 0x1000>;
|
||||||
|
interrupts = <47>;
|
||||||
|
clocks = <&creg_clk 0>, <&ccu1 CLK_CPU_BUS>;
|
||||||
|
clock-names = "rtc", "reg";
|
||||||
|
};
|
|
@ -16,6 +16,8 @@ Required properties:
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- system-power-controller: whether the rtc is controlling the system power
|
- system-power-controller: whether the rtc is controlling the system power
|
||||||
through pmic_power_en
|
through pmic_power_en
|
||||||
|
- clocks: Any internal or external clocks feeding in to rtc
|
||||||
|
- clock-names: Corresponding names of the clocks
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -26,4 +28,6 @@ rtc@1c23000 {
|
||||||
19>;
|
19>;
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
system-power-controller;
|
system-power-controller;
|
||||||
|
clocks = <&clk_32k_rtc>, <&clk_32768_ck>;
|
||||||
|
clock-names = "ext-clk", "int-clk";
|
||||||
};
|
};
|
||||||
|
|
25
Documentation/devicetree/bindings/rtc/xlnx-rtc.txt
Normal file
25
Documentation/devicetree/bindings/rtc/xlnx-rtc.txt
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
* Xilinx Zynq Ultrascale+ MPSoC Real Time Clock
|
||||||
|
|
||||||
|
RTC controller for the Xilinx Zynq MPSoC Real Time Clock
|
||||||
|
Separate IRQ lines for seconds and alarm
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Should be "xlnx,zynqmp-rtc"
|
||||||
|
- reg: Physical base address of the controller and length
|
||||||
|
of memory mapped region.
|
||||||
|
- interrupts: IRQ lines for the RTC.
|
||||||
|
- interrupt-names: interrupt line names eg. "sec" "alarm"
|
||||||
|
|
||||||
|
Optional:
|
||||||
|
- calibration: calibration value for 1 sec period which will
|
||||||
|
be programmed directly to calibration register
|
||||||
|
|
||||||
|
Example:
|
||||||
|
rtc: rtc@ffa60000 {
|
||||||
|
compatible = "xlnx,zynqmp-rtc";
|
||||||
|
reg = <0x0 0xffa60000 0x100>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupts = <0 26 4>, <0 27 4>;
|
||||||
|
interrupt-names = "alarm", "sec";
|
||||||
|
calibration = <0x198233>;
|
||||||
|
};
|
|
@ -37,6 +37,12 @@ The edge is described by the following properties:
|
||||||
Definition: the identifier of the remote processor in the smd channel
|
Definition: the identifier of the remote processor in the smd channel
|
||||||
allocation table
|
allocation table
|
||||||
|
|
||||||
|
- qcom,remote-pid:
|
||||||
|
Usage: optional
|
||||||
|
Value type: <u32>
|
||||||
|
Definition: the identifier for the remote processor as known by the rest
|
||||||
|
of the system.
|
||||||
|
|
||||||
= SMD DEVICES
|
= SMD DEVICES
|
||||||
|
|
||||||
In turn, subnodes of the "edges" represent devices tied to SMD channels on that
|
In turn, subnodes of the "edges" represent devices tied to SMD channels on that
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
* Atmel SAMA5D4 Watchdog Timer (WDT) Controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: "atmel,sama5d4-wdt"
|
||||||
|
- reg: base physical address and length of memory mapped region.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- timeout-sec: watchdog timeout value (in seconds).
|
||||||
|
- interrupts: interrupt number to the CPU.
|
||||||
|
- atmel,watchdog-type: should be "hardware" or "software".
|
||||||
|
"hardware": enable watchdog fault reset. A watchdog fault triggers
|
||||||
|
watchdog reset.
|
||||||
|
"software": enable watchdog fault interrupt. A watchdog fault asserts
|
||||||
|
watchdog interrupt.
|
||||||
|
- atmel,idle-halt: present if you want to stop the watchdog when the CPU is
|
||||||
|
in idle state.
|
||||||
|
CAUTION: This property should be used with care, it actually makes the
|
||||||
|
watchdog not counting when the CPU is in idle state, therefore the
|
||||||
|
watchdog reset time depends on mean CPU usage and will not reset at all
|
||||||
|
if the CPU stop working while it is in idle state, which is probably
|
||||||
|
not what you want.
|
||||||
|
- atmel,dbg-halt: present if you want to stop the watchdog when the CPU is
|
||||||
|
in debug state.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
watchdog@fc068640 {
|
||||||
|
compatible = "atmel,sama5d4-wdt";
|
||||||
|
reg = <0xfc068640 0x10>;
|
||||||
|
interrupts = <4 IRQ_TYPE_LEVEL_HIGH 5>;
|
||||||
|
timeout-sec = <10>;
|
||||||
|
atmel,watchdog-type = "hardware";
|
||||||
|
atmel,dbg-halt;
|
||||||
|
atmel,idle-halt;
|
||||||
|
status = "okay";
|
||||||
|
};
|
19
Documentation/devicetree/bindings/watchdog/lpc18xx-wdt.txt
Normal file
19
Documentation/devicetree/bindings/watchdog/lpc18xx-wdt.txt
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
* NXP LPC18xx Watchdog Timer (WDT)
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Should be "nxp,lpc1850-wwdt"
|
||||||
|
- reg: Should contain WDT registers location and length
|
||||||
|
- clocks: Must contain an entry for each entry in clock-names.
|
||||||
|
- clock-names: Should contain "wdtclk" and "reg"; the watchdog counter
|
||||||
|
clock and register interface clock respectively.
|
||||||
|
- interrupts: Should contain WDT interrupt
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
watchdog@40080000 {
|
||||||
|
compatible = "nxp,lpc1850-wwdt";
|
||||||
|
reg = <0x40080000 0x24>;
|
||||||
|
clocks = <&cgu BASE_SAFE_CLK>, <&ccu1 CLK_CPU_WWDT>;
|
||||||
|
clock-names = "wdtclk", "reg";
|
||||||
|
interrupts = <49>;
|
||||||
|
};
|
|
@ -20,7 +20,7 @@
|
||||||
| ia64: | TODO |
|
| ia64: | TODO |
|
||||||
| m32r: | .. |
|
| m32r: | .. |
|
||||||
| m68k: | .. |
|
| m68k: | .. |
|
||||||
| metag: | .. |
|
| metag: | TODO |
|
||||||
| microblaze: | .. |
|
| microblaze: | .. |
|
||||||
| mips: | ok |
|
| mips: | ok |
|
||||||
| mn10300: | .. |
|
| mn10300: | .. |
|
||||||
|
|
|
@ -397,7 +397,8 @@ prototypes:
|
||||||
int (*release) (struct gendisk *, fmode_t);
|
int (*release) (struct gendisk *, fmode_t);
|
||||||
int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
|
int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
|
||||||
int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
|
int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
|
||||||
int (*direct_access) (struct block_device *, sector_t, void **, unsigned long *);
|
int (*direct_access) (struct block_device *, sector_t, void __pmem **,
|
||||||
|
unsigned long *);
|
||||||
int (*media_changed) (struct gendisk *);
|
int (*media_changed) (struct gendisk *);
|
||||||
void (*unlock_native_capacity) (struct gendisk *);
|
void (*unlock_native_capacity) (struct gendisk *);
|
||||||
int (*revalidate_disk) (struct gendisk *);
|
int (*revalidate_disk) (struct gendisk *);
|
||||||
|
|
|
@ -60,9 +60,10 @@ Filesystem support consists of
|
||||||
- implementing the direct_IO address space operation, and calling
|
- implementing the direct_IO address space operation, and calling
|
||||||
dax_do_io() instead of blockdev_direct_IO() if S_DAX is set
|
dax_do_io() instead of blockdev_direct_IO() if S_DAX is set
|
||||||
- implementing an mmap file operation for DAX files which sets the
|
- implementing an mmap file operation for DAX files which sets the
|
||||||
VM_MIXEDMAP flag on the VMA, and setting the vm_ops to include handlers
|
VM_MIXEDMAP and VM_HUGEPAGE flags on the VMA, and setting the vm_ops to
|
||||||
for fault and page_mkwrite (which should probably call dax_fault() and
|
include handlers for fault, pmd_fault and page_mkwrite (which should
|
||||||
dax_mkwrite(), passing the appropriate get_block() callback)
|
probably call dax_fault(), dax_pmd_fault() and dax_mkwrite(), passing the
|
||||||
|
appropriate get_block() callback)
|
||||||
- calling dax_truncate_page() instead of block_truncate_page() for DAX files
|
- calling dax_truncate_page() instead of block_truncate_page() for DAX files
|
||||||
- calling dax_zero_page_range() instead of zero_user() for DAX files
|
- calling dax_zero_page_range() instead of zero_user() for DAX files
|
||||||
- ensuring that there is sufficient locking between reads, writes,
|
- ensuring that there is sufficient locking between reads, writes,
|
||||||
|
|
|
@ -424,6 +424,7 @@ Private_Dirty: 0 kB
|
||||||
Referenced: 892 kB
|
Referenced: 892 kB
|
||||||
Anonymous: 0 kB
|
Anonymous: 0 kB
|
||||||
Swap: 0 kB
|
Swap: 0 kB
|
||||||
|
SwapPss: 0 kB
|
||||||
KernelPageSize: 4 kB
|
KernelPageSize: 4 kB
|
||||||
MMUPageSize: 4 kB
|
MMUPageSize: 4 kB
|
||||||
Locked: 374 kB
|
Locked: 374 kB
|
||||||
|
@ -433,16 +434,23 @@ the first of these lines shows the same information as is displayed for the
|
||||||
mapping in /proc/PID/maps. The remaining lines show the size of the mapping
|
mapping in /proc/PID/maps. The remaining lines show the size of the mapping
|
||||||
(size), the amount of the mapping that is currently resident in RAM (RSS), the
|
(size), the amount of the mapping that is currently resident in RAM (RSS), the
|
||||||
process' proportional share of this mapping (PSS), the number of clean and
|
process' proportional share of this mapping (PSS), the number of clean and
|
||||||
dirty private pages in the mapping. Note that even a page which is part of a
|
dirty private pages in the mapping.
|
||||||
MAP_SHARED mapping, but has only a single pte mapped, i.e. is currently used
|
|
||||||
by only one process, is accounted as private and not as shared. "Referenced"
|
The "proportional set size" (PSS) of a process is the count of pages it has
|
||||||
indicates the amount of memory currently marked as referenced or accessed.
|
in memory, where each page is divided by the number of processes sharing it.
|
||||||
|
So if a process has 1000 pages all to itself, and 1000 shared with one other
|
||||||
|
process, its PSS will be 1500.
|
||||||
|
Note that even a page which is part of a MAP_SHARED mapping, but has only
|
||||||
|
a single pte mapped, i.e. is currently used by only one process, is accounted
|
||||||
|
as private and not as shared.
|
||||||
|
"Referenced" indicates the amount of memory currently marked as referenced or
|
||||||
|
accessed.
|
||||||
"Anonymous" shows the amount of memory that does not belong to any file. Even
|
"Anonymous" shows the amount of memory that does not belong to any file. Even
|
||||||
a mapping associated with a file may contain anonymous pages: when MAP_PRIVATE
|
a mapping associated with a file may contain anonymous pages: when MAP_PRIVATE
|
||||||
and a page is modified, the file page is replaced by a private anonymous copy.
|
and a page is modified, the file page is replaced by a private anonymous copy.
|
||||||
"Swap" shows how much would-be-anonymous memory is also used, but out on
|
"Swap" shows how much would-be-anonymous memory is also used, but out on
|
||||||
swap.
|
swap.
|
||||||
|
"SwapPss" shows proportional swap share of this mapping.
|
||||||
"VmFlags" field deserves a separate description. This member represents the kernel
|
"VmFlags" field deserves a separate description. This member represents the kernel
|
||||||
flags associated with the particular virtual memory area in two letter encoded
|
flags associated with the particular virtual memory area in two letter encoded
|
||||||
manner. The codes are the following:
|
manner. The codes are the following:
|
||||||
|
|
|
@ -20,6 +20,7 @@ It currently supports the following devices:
|
||||||
* (type=5) Analog Devices evaluation boards: ADM1025, ADM1030, ADM1031
|
* (type=5) Analog Devices evaluation boards: ADM1025, ADM1030, ADM1031
|
||||||
* (type=6) Barco LPT->DVI (K5800236) adapter
|
* (type=6) Barco LPT->DVI (K5800236) adapter
|
||||||
* (type=7) One For All JP1 parallel port adapter
|
* (type=7) One For All JP1 parallel port adapter
|
||||||
|
* (type=8) VCT-jig
|
||||||
|
|
||||||
These devices use different pinout configurations, so you have to tell
|
These devices use different pinout configurations, so you have to tell
|
||||||
the driver what you have, using the type module parameter. There is no
|
the driver what you have, using the type module parameter. There is no
|
||||||
|
|
|
@ -31,10 +31,13 @@ User manual
|
||||||
===========
|
===========
|
||||||
|
|
||||||
I2C slave backends behave like standard I2C clients. So, you can instantiate
|
I2C slave backends behave like standard I2C clients. So, you can instantiate
|
||||||
them as described in the document 'instantiating-devices'. A quick example for
|
them as described in the document 'instantiating-devices'. The only difference
|
||||||
instantiating the slave-eeprom driver from userspace at address 0x64 on bus 1:
|
is that i2c slave backends have their own address space. So, you have to add
|
||||||
|
0x1000 to the address you would originally request. An example for
|
||||||
|
instantiating the slave-eeprom driver from userspace at the 7 bit address 0x64
|
||||||
|
on bus 1:
|
||||||
|
|
||||||
# echo slave-24c02 0x64 > /sys/bus/i2c/devices/i2c-1/new_device
|
# echo slave-24c02 0x1064 > /sys/bus/i2c/devices/i2c-1/new_device
|
||||||
|
|
||||||
Each backend should come with separate documentation to describe its specific
|
Each backend should come with separate documentation to describe its specific
|
||||||
behaviour and setup.
|
behaviour and setup.
|
||||||
|
|
|
@ -2,6 +2,10 @@ The I2C protocol knows about two kinds of device addresses: normal 7 bit
|
||||||
addresses, and an extended set of 10 bit addresses. The sets of addresses
|
addresses, and an extended set of 10 bit addresses. The sets of addresses
|
||||||
do not intersect: the 7 bit address 0x10 is not the same as the 10 bit
|
do not intersect: the 7 bit address 0x10 is not the same as the 10 bit
|
||||||
address 0x10 (though a single device could respond to both of them).
|
address 0x10 (though a single device could respond to both of them).
|
||||||
|
To avoid ambiguity, the user sees 10 bit addresses mapped to a different
|
||||||
|
address space, namely 0xa000-0xa3ff. The leading 0xa (= 10) represents the
|
||||||
|
10 bit mode. This is used for creating device names in sysfs. It is also
|
||||||
|
needed when instantiating 10 bit devices via the new_device file in sysfs.
|
||||||
|
|
||||||
I2C messages to and from 10-bit address devices have a different format.
|
I2C messages to and from 10-bit address devices have a different format.
|
||||||
See the I2C specification for the details.
|
See the I2C specification for the details.
|
||||||
|
|
|
@ -64,3 +64,23 @@ MTHCA
|
||||||
fw_ver - Firmware version
|
fw_ver - Firmware version
|
||||||
hca_type - HCA type: "MT23108", "MT25208 (MT23108 compat mode)",
|
hca_type - HCA type: "MT23108", "MT25208 (MT23108 compat mode)",
|
||||||
or "MT25208"
|
or "MT25208"
|
||||||
|
|
||||||
|
HFI1
|
||||||
|
|
||||||
|
The hfi1 driver also creates these additional files:
|
||||||
|
|
||||||
|
hw_rev - hardware revision
|
||||||
|
board_id - manufacturing board id
|
||||||
|
tempsense - thermal sense information
|
||||||
|
serial - board serial number
|
||||||
|
nfreectxts - number of free user contexts
|
||||||
|
nctxts - number of allowed contexts (PSM2)
|
||||||
|
chip_reset - diagnostic (root only)
|
||||||
|
boardversion - board version
|
||||||
|
ports/1/
|
||||||
|
CMgtA/
|
||||||
|
cc_settings_bin - CCA tables used by PSM2
|
||||||
|
cc_table_bin
|
||||||
|
sc2v/ - 32 files (0 - 31) used to translate sl->vl
|
||||||
|
sl2sc/ - 32 files (0 - 31) used to translate sl->sc
|
||||||
|
vl2mtu/ - 16 (0 - 15) files used to determine MTU for vl
|
||||||
|
|
|
@ -265,7 +265,7 @@ Code Seq#(hex) Include File Comments
|
||||||
's' all linux/cdk.h
|
's' all linux/cdk.h
|
||||||
't' 00-7F linux/ppp-ioctl.h
|
't' 00-7F linux/ppp-ioctl.h
|
||||||
't' 80-8F linux/isdn_ppp.h
|
't' 80-8F linux/isdn_ppp.h
|
||||||
't' 90 linux/toshiba.h
|
't' 90-91 linux/toshiba.h toshiba and toshiba_acpi SMM
|
||||||
'u' 00-1F linux/smb_fs.h gone
|
'u' 00-1F linux/smb_fs.h gone
|
||||||
'u' 20-3F linux/uvcvideo.h USB video class host driver
|
'u' 20-3F linux/uvcvideo.h USB video class host driver
|
||||||
'v' 00-1F linux/ext2_fs.h conflict!
|
'v' 00-1F linux/ext2_fs.h conflict!
|
||||||
|
|
|
@ -174,6 +174,11 @@ The output directory is often set using "O=..." on the commandline.
|
||||||
|
|
||||||
The value can be overridden in which case the default value is ignored.
|
The value can be overridden in which case the default value is ignored.
|
||||||
|
|
||||||
|
KBUILD_SIGN_PIN
|
||||||
|
--------------------------------------------------
|
||||||
|
This variable allows a passphrase or PIN to be passed to the sign-file
|
||||||
|
utility when signing kernel modules, if the private key requires such.
|
||||||
|
|
||||||
KBUILD_MODPOST_WARN
|
KBUILD_MODPOST_WARN
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
KBUILD_MODPOST_WARN can be set to avoid errors in case of undefined
|
KBUILD_MODPOST_WARN can be set to avoid errors in case of undefined
|
||||||
|
|
|
@ -4106,6 +4106,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||||
plus one apbt timer for broadcast timer.
|
plus one apbt timer for broadcast timer.
|
||||||
x86_intel_mid_timer=apbt_only | lapic_and_apbt
|
x86_intel_mid_timer=apbt_only | lapic_and_apbt
|
||||||
|
|
||||||
|
xen_512gb_limit [KNL,X86-64,XEN]
|
||||||
|
Restricts the kernel running paravirtualized under Xen
|
||||||
|
to use only up to 512 GB of RAM. The reason to do so is
|
||||||
|
crash analysis tools and Xen tools for doing domain
|
||||||
|
save/restore/migration must be enabled to handle larger
|
||||||
|
domains.
|
||||||
|
|
||||||
xen_emul_unplug= [HW,X86,XEN]
|
xen_emul_unplug= [HW,X86,XEN]
|
||||||
Unplug Xen emulated devices
|
Unplug Xen emulated devices
|
||||||
Format: [unplug0,][unplug1]
|
Format: [unplug0,][unplug1]
|
||||||
|
|
|
@ -89,6 +89,32 @@ This has a number of options available:
|
||||||
their signatures checked without causing a dependency loop.
|
their signatures checked without causing a dependency loop.
|
||||||
|
|
||||||
|
|
||||||
|
(4) "File name or PKCS#11 URI of module signing key" (CONFIG_MODULE_SIG_KEY)
|
||||||
|
|
||||||
|
Setting this option to something other than its default of
|
||||||
|
"certs/signing_key.pem" will disable the autogeneration of signing keys
|
||||||
|
and allow the kernel modules to be signed with a key of your choosing.
|
||||||
|
The string provided should identify a file containing both a private key
|
||||||
|
and its corresponding X.509 certificate in PEM form, or — on systems where
|
||||||
|
the OpenSSL ENGINE_pkcs11 is functional — a PKCS#11 URI as defined by
|
||||||
|
RFC7512. In the latter case, the PKCS#11 URI should reference both a
|
||||||
|
certificate and a private key.
|
||||||
|
|
||||||
|
If the PEM file containing the private key is encrypted, or if the
|
||||||
|
PKCS#11 token requries a PIN, this can be provided at build time by
|
||||||
|
means of the KBUILD_SIGN_PIN variable.
|
||||||
|
|
||||||
|
|
||||||
|
(5) "Additional X.509 keys for default system keyring" (CONFIG_SYSTEM_TRUSTED_KEYS)
|
||||||
|
|
||||||
|
This option can be set to the filename of a PEM-encoded file containing
|
||||||
|
additional certificates which will be included in the system keyring by
|
||||||
|
default.
|
||||||
|
|
||||||
|
Note that enabling module signing adds a dependency on the OpenSSL devel
|
||||||
|
packages to the kernel build processes for the tool that does the signing.
|
||||||
|
|
||||||
|
|
||||||
=======================
|
=======================
|
||||||
GENERATING SIGNING KEYS
|
GENERATING SIGNING KEYS
|
||||||
=======================
|
=======================
|
||||||
|
@ -100,16 +126,16 @@ it can be deleted or stored securely. The public key gets built into the
|
||||||
kernel so that it can be used to check the signatures as the modules are
|
kernel so that it can be used to check the signatures as the modules are
|
||||||
loaded.
|
loaded.
|
||||||
|
|
||||||
Under normal conditions, the kernel build will automatically generate a new
|
Under normal conditions, when CONFIG_MODULE_SIG_KEY is unchanged from its
|
||||||
keypair using openssl if one does not exist in the files:
|
default, the kernel build will automatically generate a new keypair using
|
||||||
|
openssl if one does not exist in the file:
|
||||||
|
|
||||||
signing_key.priv
|
certs/signing_key.pem
|
||||||
signing_key.x509
|
|
||||||
|
|
||||||
during the building of vmlinux (the public part of the key needs to be built
|
during the building of vmlinux (the public part of the key needs to be built
|
||||||
into vmlinux) using parameters in the:
|
into vmlinux) using parameters in the:
|
||||||
|
|
||||||
x509.genkey
|
certs/x509.genkey
|
||||||
|
|
||||||
file (which is also generated if it does not already exist).
|
file (which is also generated if it does not already exist).
|
||||||
|
|
||||||
|
@ -135,8 +161,12 @@ kernel sources tree and the openssl command. The following is an example to
|
||||||
generate the public/private key files:
|
generate the public/private key files:
|
||||||
|
|
||||||
openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
|
openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
|
||||||
-config x509.genkey -outform DER -out signing_key.x509 \
|
-config x509.genkey -outform PEM -out kernel_key.pem \
|
||||||
-keyout signing_key.priv
|
-keyout kernel_key.pem
|
||||||
|
|
||||||
|
The full pathname for the resulting kernel_key.pem file can then be specified
|
||||||
|
in the CONFIG_MODULE_SIG_KEY option, and the certificate and key therein will
|
||||||
|
be used instead of an autogenerated keypair.
|
||||||
|
|
||||||
|
|
||||||
=========================
|
=========================
|
||||||
|
@ -152,10 +182,9 @@ in a keyring called ".system_keyring" that can be seen by:
|
||||||
302d2d52 I------ 1 perm 1f010000 0 0 asymmetri Fedora kernel signing key: d69a84e6bce3d216b979e9505b3e3ef9a7118079: X509.RSA a7118079 []
|
302d2d52 I------ 1 perm 1f010000 0 0 asymmetri Fedora kernel signing key: d69a84e6bce3d216b979e9505b3e3ef9a7118079: X509.RSA a7118079 []
|
||||||
...
|
...
|
||||||
|
|
||||||
Beyond the public key generated specifically for module signing, any file
|
Beyond the public key generated specifically for module signing, additional
|
||||||
placed in the kernel source root directory or the kernel build root directory
|
trusted certificates can be provided in a PEM-encoded file referenced by the
|
||||||
whose name is suffixed with ".x509" will be assumed to be an X.509 public key
|
CONFIG_SYSTEM_TRUSTED_KEYS configuration option.
|
||||||
and will be added to the keyring.
|
|
||||||
|
|
||||||
Further, the architecture code may take public keys from a hardware store and
|
Further, the architecture code may take public keys from a hardware store and
|
||||||
add those in also (e.g. from the UEFI key database).
|
add those in also (e.g. from the UEFI key database).
|
||||||
|
@ -181,7 +210,7 @@ To manually sign a module, use the scripts/sign-file tool available in
|
||||||
the Linux kernel source tree. The script requires 4 arguments:
|
the Linux kernel source tree. The script requires 4 arguments:
|
||||||
|
|
||||||
1. The hash algorithm (e.g., sha256)
|
1. The hash algorithm (e.g., sha256)
|
||||||
2. The private key filename
|
2. The private key filename or PKCS#11 URI
|
||||||
3. The public key filename
|
3. The public key filename
|
||||||
4. The kernel module to be signed
|
4. The kernel module to be signed
|
||||||
|
|
||||||
|
@ -194,6 +223,9 @@ The hash algorithm used does not have to match the one configured, but if it
|
||||||
doesn't, you should make sure that hash algorithm is either built into the
|
doesn't, you should make sure that hash algorithm is either built into the
|
||||||
kernel or can be loaded without requiring itself.
|
kernel or can be loaded without requiring itself.
|
||||||
|
|
||||||
|
If the private key requires a passphrase or PIN, it can be provided in the
|
||||||
|
$KBUILD_SIGN_PIN environment variable.
|
||||||
|
|
||||||
|
|
||||||
============================
|
============================
|
||||||
SIGNED MODULES AND STRIPPING
|
SIGNED MODULES AND STRIPPING
|
||||||
|
|
|
@ -28,6 +28,10 @@ Smack kernels use the CIPSO IP option. Some network
|
||||||
configurations are intolerant of IP options and can impede
|
configurations are intolerant of IP options and can impede
|
||||||
access to systems that use them as Smack does.
|
access to systems that use them as Smack does.
|
||||||
|
|
||||||
|
Smack is used in the Tizen operating system. Please
|
||||||
|
go to http://wiki.tizen.org for information about how
|
||||||
|
Smack is used in Tizen.
|
||||||
|
|
||||||
The current git repository for Smack user space is:
|
The current git repository for Smack user space is:
|
||||||
|
|
||||||
git://github.com/smack-team/smack.git
|
git://github.com/smack-team/smack.git
|
||||||
|
@ -108,6 +112,8 @@ in the smackfs filesystem. This pseudo-filesystem is mounted
|
||||||
on /sys/fs/smackfs.
|
on /sys/fs/smackfs.
|
||||||
|
|
||||||
access
|
access
|
||||||
|
Provided for backward compatibility. The access2 interface
|
||||||
|
is preferred and should be used instead.
|
||||||
This interface reports whether a subject with the specified
|
This interface reports whether a subject with the specified
|
||||||
Smack label has a particular access to an object with a
|
Smack label has a particular access to an object with a
|
||||||
specified Smack label. Write a fixed format access rule to
|
specified Smack label. Write a fixed format access rule to
|
||||||
|
@ -136,6 +142,8 @@ change-rule
|
||||||
those in the fourth string. If there is no such rule it will be
|
those in the fourth string. If there is no such rule it will be
|
||||||
created using the access specified in the third and the fourth strings.
|
created using the access specified in the third and the fourth strings.
|
||||||
cipso
|
cipso
|
||||||
|
Provided for backward compatibility. The cipso2 interface
|
||||||
|
is preferred and should be used instead.
|
||||||
This interface allows a specific CIPSO header to be assigned
|
This interface allows a specific CIPSO header to be assigned
|
||||||
to a Smack label. The format accepted on write is:
|
to a Smack label. The format accepted on write is:
|
||||||
"%24s%4d%4d"["%4d"]...
|
"%24s%4d%4d"["%4d"]...
|
||||||
|
@ -157,7 +165,19 @@ direct
|
||||||
doi
|
doi
|
||||||
This contains the CIPSO domain of interpretation used in
|
This contains the CIPSO domain of interpretation used in
|
||||||
network packets.
|
network packets.
|
||||||
|
ipv6host
|
||||||
|
This interface allows specific IPv6 internet addresses to be
|
||||||
|
treated as single label hosts. Packets are sent to single
|
||||||
|
label hosts only from processes that have Smack write access
|
||||||
|
to the host label. All packets received from single label hosts
|
||||||
|
are given the specified label. The format accepted on write is:
|
||||||
|
"%h:%h:%h:%h:%h:%h:%h:%h label" or
|
||||||
|
"%h:%h:%h:%h:%h:%h:%h:%h/%d label".
|
||||||
|
The "::" address shortcut is not supported.
|
||||||
|
If label is "-DELETE" a matched entry will be deleted.
|
||||||
load
|
load
|
||||||
|
Provided for backward compatibility. The load2 interface
|
||||||
|
is preferred and should be used instead.
|
||||||
This interface allows access control rules in addition to
|
This interface allows access control rules in addition to
|
||||||
the system defined rules to be specified. The format accepted
|
the system defined rules to be specified. The format accepted
|
||||||
on write is:
|
on write is:
|
||||||
|
@ -181,6 +201,8 @@ load2
|
||||||
permissions that are not allowed. The string "r-x--" would
|
permissions that are not allowed. The string "r-x--" would
|
||||||
specify read and execute access.
|
specify read and execute access.
|
||||||
load-self
|
load-self
|
||||||
|
Provided for backward compatibility. The load-self2 interface
|
||||||
|
is preferred and should be used instead.
|
||||||
This interface allows process specific access rules to be
|
This interface allows process specific access rules to be
|
||||||
defined. These rules are only consulted if access would
|
defined. These rules are only consulted if access would
|
||||||
otherwise be permitted, and are intended to provide additional
|
otherwise be permitted, and are intended to provide additional
|
||||||
|
@ -205,6 +227,8 @@ netlabel
|
||||||
received from single label hosts are given the specified
|
received from single label hosts are given the specified
|
||||||
label. The format accepted on write is:
|
label. The format accepted on write is:
|
||||||
"%d.%d.%d.%d label" or "%d.%d.%d.%d/%d label".
|
"%d.%d.%d.%d label" or "%d.%d.%d.%d/%d label".
|
||||||
|
If the label specified is "-CIPSO" the address is treated
|
||||||
|
as a host that supports CIPSO headers.
|
||||||
onlycap
|
onlycap
|
||||||
This contains labels processes must have for CAP_MAC_ADMIN
|
This contains labels processes must have for CAP_MAC_ADMIN
|
||||||
and CAP_MAC_OVERRIDE to be effective. If this file is empty
|
and CAP_MAC_OVERRIDE to be effective. If this file is empty
|
||||||
|
@ -232,7 +256,8 @@ unconfined
|
||||||
is dangerous and can ruin the proper labeling of your system.
|
is dangerous and can ruin the proper labeling of your system.
|
||||||
It should never be used in production.
|
It should never be used in production.
|
||||||
|
|
||||||
You can add access rules in /etc/smack/accesses. They take the form:
|
If you are using the smackload utility
|
||||||
|
you can add access rules in /etc/smack/accesses. They take the form:
|
||||||
|
|
||||||
subjectlabel objectlabel access
|
subjectlabel objectlabel access
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
Yama is a Linux Security Module that collects a number of system-wide DAC
|
Yama is a Linux Security Module that collects system-wide DAC security
|
||||||
security protections that are not handled by the core kernel itself. To
|
protections that are not handled by the core kernel itself. This is
|
||||||
select it at boot time, specify "security=yama" (though this will disable
|
selectable at build-time with CONFIG_SECURITY_YAMA, and can be controlled
|
||||||
any other LSM).
|
at run-time through sysctls in /proc/sys/kernel/yama:
|
||||||
|
|
||||||
Yama is controlled through sysctl in /proc/sys/kernel/yama:
|
|
||||||
|
|
||||||
- ptrace_scope
|
- ptrace_scope
|
||||||
|
|
||||||
|
|
|
@ -349,7 +349,7 @@ zone[i]'s protection[j] is calculated by following expression.
|
||||||
|
|
||||||
(i < j):
|
(i < j):
|
||||||
zone[i]->protection[j]
|
zone[i]->protection[j]
|
||||||
= (total sums of present_pages from zone[i+1] to zone[j] on the node)
|
= (total sums of managed_pages from zone[i+1] to zone[j] on the node)
|
||||||
/ lowmem_reserve_ratio[i];
|
/ lowmem_reserve_ratio[i];
|
||||||
(i = j):
|
(i = j):
|
||||||
(should not be protected. = 0;
|
(should not be protected. = 0;
|
||||||
|
@ -360,7 +360,7 @@ The default values of lowmem_reserve_ratio[i] are
|
||||||
256 (if zone[i] means DMA or DMA32 zone)
|
256 (if zone[i] means DMA or DMA32 zone)
|
||||||
32 (others).
|
32 (others).
|
||||||
As above expression, they are reciprocal number of ratio.
|
As above expression, they are reciprocal number of ratio.
|
||||||
256 means 1/256. # of protection pages becomes about "0.39%" of total present
|
256 means 1/256. # of protection pages becomes about "0.39%" of total managed
|
||||||
pages of higher zones on the node.
|
pages of higher zones on the node.
|
||||||
|
|
||||||
If you would like to protect more pages, smaller values are effective.
|
If you would like to protect more pages, smaller values are effective.
|
||||||
|
|
|
@ -75,7 +75,8 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
|
||||||
|
|
||||||
'e' - Send a SIGTERM to all processes, except for init.
|
'e' - Send a SIGTERM to all processes, except for init.
|
||||||
|
|
||||||
'f' - Will call oom_kill to kill a memory hog process.
|
'f' - Will call the oom killer to kill a memory hog process, but do not
|
||||||
|
panic if nothing can be killed.
|
||||||
|
|
||||||
'g' - Used by kgdb (kernel debugger)
|
'g' - Used by kgdb (kernel debugger)
|
||||||
|
|
||||||
|
|
|
@ -180,6 +180,7 @@ Thermal zone device sys I/F, created once it's registered:
|
||||||
|---temp: Current temperature
|
|---temp: Current temperature
|
||||||
|---mode: Working mode of the thermal zone
|
|---mode: Working mode of the thermal zone
|
||||||
|---policy: Thermal governor used for this zone
|
|---policy: Thermal governor used for this zone
|
||||||
|
|---available_policies: Available thermal governors for this zone
|
||||||
|---trip_point_[0-*]_temp: Trip point temperature
|
|---trip_point_[0-*]_temp: Trip point temperature
|
||||||
|---trip_point_[0-*]_type: Trip point type
|
|---trip_point_[0-*]_type: Trip point type
|
||||||
|---trip_point_[0-*]_hyst: Hysteresis value for this trip point
|
|---trip_point_[0-*]_hyst: Hysteresis value for this trip point
|
||||||
|
@ -256,6 +257,10 @@ policy
|
||||||
One of the various thermal governors used for a particular zone.
|
One of the various thermal governors used for a particular zone.
|
||||||
RW, Required
|
RW, Required
|
||||||
|
|
||||||
|
available_policies
|
||||||
|
Available thermal governors which can be used for a particular zone.
|
||||||
|
RO, Required
|
||||||
|
|
||||||
trip_point_[0-*]_temp
|
trip_point_[0-*]_temp
|
||||||
The temperature above which trip point will be fired.
|
The temperature above which trip point will be fired.
|
||||||
Unit: millidegree Celsius
|
Unit: millidegree Celsius
|
||||||
|
@ -417,6 +422,7 @@ method, the sys I/F structure will be built like this:
|
||||||
|---temp: 37000
|
|---temp: 37000
|
||||||
|---mode: enabled
|
|---mode: enabled
|
||||||
|---policy: step_wise
|
|---policy: step_wise
|
||||||
|
|---available_policies: step_wise fair_share
|
||||||
|---trip_point_0_temp: 100000
|
|---trip_point_0_temp: 100000
|
||||||
|---trip_point_0_type: critical
|
|---trip_point_0_type: critical
|
||||||
|---trip_point_1_temp: 80000
|
|---trip_point_1_temp: 80000
|
||||||
|
|
|
@ -691,6 +691,8 @@ The above is mostly meaningful for kernel developers.
|
||||||
The marks are determined by the difference between this
|
The marks are determined by the difference between this
|
||||||
current trace and the next trace.
|
current trace and the next trace.
|
||||||
'$' - greater than 1 second
|
'$' - greater than 1 second
|
||||||
|
'@' - greater than 100 milisecond
|
||||||
|
'*' - greater than 10 milisecond
|
||||||
'#' - greater than 1000 microsecond
|
'#' - greater than 1000 microsecond
|
||||||
'!' - greater than 100 microsecond
|
'!' - greater than 100 microsecond
|
||||||
'+' - greater than 10 microsecond
|
'+' - greater than 10 microsecond
|
||||||
|
@ -1944,26 +1946,49 @@ want, depending on your needs.
|
||||||
|
|
||||||
ie:
|
ie:
|
||||||
|
|
||||||
0) | up_write() {
|
3) # 1837.709 us | } /* __switch_to */
|
||||||
0) 0.646 us | _spin_lock_irqsave();
|
3) | finish_task_switch() {
|
||||||
0) 0.684 us | _spin_unlock_irqrestore();
|
3) 0.313 us | _raw_spin_unlock_irq();
|
||||||
0) 3.123 us | }
|
3) 3.177 us | }
|
||||||
0) 0.548 us | fput();
|
3) # 1889.063 us | } /* __schedule */
|
||||||
0) + 58.628 us | }
|
3) ! 140.417 us | } /* __schedule */
|
||||||
|
3) # 2034.948 us | } /* schedule */
|
||||||
|
3) * 33998.59 us | } /* schedule_preempt_disabled */
|
||||||
|
|
||||||
[...]
|
[...]
|
||||||
|
|
||||||
0) | putname() {
|
1) 0.260 us | msecs_to_jiffies();
|
||||||
0) | kmem_cache_free() {
|
1) 0.313 us | __rcu_read_unlock();
|
||||||
0) 0.518 us | __phys_addr();
|
1) + 61.770 us | }
|
||||||
0) 1.757 us | }
|
1) + 64.479 us | }
|
||||||
0) 2.861 us | }
|
1) 0.313 us | rcu_bh_qs();
|
||||||
0) ! 115.305 us | }
|
1) 0.313 us | __local_bh_enable();
|
||||||
0) ! 116.402 us | }
|
1) ! 217.240 us | }
|
||||||
|
1) 0.365 us | idle_cpu();
|
||||||
|
1) | rcu_irq_exit() {
|
||||||
|
1) 0.417 us | rcu_eqs_enter_common.isra.47();
|
||||||
|
1) 3.125 us | }
|
||||||
|
1) ! 227.812 us | }
|
||||||
|
1) ! 457.395 us | }
|
||||||
|
1) @ 119760.2 us | }
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
2) | handle_IPI() {
|
||||||
|
1) 6.979 us | }
|
||||||
|
2) 0.417 us | scheduler_ipi();
|
||||||
|
1) 9.791 us | }
|
||||||
|
1) + 12.917 us | }
|
||||||
|
2) 3.490 us | }
|
||||||
|
1) + 15.729 us | }
|
||||||
|
1) + 18.542 us | }
|
||||||
|
2) $ 3594274 us | }
|
||||||
|
|
||||||
+ means that the function exceeded 10 usecs.
|
+ means that the function exceeded 10 usecs.
|
||||||
! means that the function exceeded 100 usecs.
|
! means that the function exceeded 100 usecs.
|
||||||
# means that the function exceeded 1000 usecs.
|
# means that the function exceeded 1000 usecs.
|
||||||
|
* means that the function exceeded 10 msecs.
|
||||||
|
@ means that the function exceeded 100 msecs.
|
||||||
$ means that the function exceeded 1 sec.
|
$ means that the function exceeded 1 sec.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2671,7 +2671,7 @@ handled.
|
||||||
4.87 KVM_SET_GUEST_DEBUG
|
4.87 KVM_SET_GUEST_DEBUG
|
||||||
|
|
||||||
Capability: KVM_CAP_SET_GUEST_DEBUG
|
Capability: KVM_CAP_SET_GUEST_DEBUG
|
||||||
Architectures: x86, s390, ppc
|
Architectures: x86, s390, ppc, arm64
|
||||||
Type: vcpu ioctl
|
Type: vcpu ioctl
|
||||||
Parameters: struct kvm_guest_debug (in)
|
Parameters: struct kvm_guest_debug (in)
|
||||||
Returns: 0 on success; -1 on error
|
Returns: 0 on success; -1 on error
|
||||||
|
@ -2693,8 +2693,8 @@ when running. Common control bits are:
|
||||||
The top 16 bits of the control field are architecture specific control
|
The top 16 bits of the control field are architecture specific control
|
||||||
flags which can include the following:
|
flags which can include the following:
|
||||||
|
|
||||||
- KVM_GUESTDBG_USE_SW_BP: using software breakpoints [x86]
|
- KVM_GUESTDBG_USE_SW_BP: using software breakpoints [x86, arm64]
|
||||||
- KVM_GUESTDBG_USE_HW_BP: using hardware breakpoints [x86, s390]
|
- KVM_GUESTDBG_USE_HW_BP: using hardware breakpoints [x86, s390, arm64]
|
||||||
- KVM_GUESTDBG_INJECT_DB: inject DB type exception [x86]
|
- KVM_GUESTDBG_INJECT_DB: inject DB type exception [x86]
|
||||||
- KVM_GUESTDBG_INJECT_BP: inject BP type exception [x86]
|
- KVM_GUESTDBG_INJECT_BP: inject BP type exception [x86]
|
||||||
- KVM_GUESTDBG_EXIT_PENDING: trigger an immediate guest exit [s390]
|
- KVM_GUESTDBG_EXIT_PENDING: trigger an immediate guest exit [s390]
|
||||||
|
@ -2709,6 +2709,11 @@ updated to the correct (supplied) values.
|
||||||
The second part of the structure is architecture specific and
|
The second part of the structure is architecture specific and
|
||||||
typically contains a set of debug registers.
|
typically contains a set of debug registers.
|
||||||
|
|
||||||
|
For arm64 the number of debug registers is implementation defined and
|
||||||
|
can be determined by querying the KVM_CAP_GUEST_DEBUG_HW_BPS and
|
||||||
|
KVM_CAP_GUEST_DEBUG_HW_WPS capabilities which return a positive number
|
||||||
|
indicating the number of supported registers.
|
||||||
|
|
||||||
When debug events exit the main run loop with the reason
|
When debug events exit the main run loop with the reason
|
||||||
KVM_EXIT_DEBUG with the kvm_debug_exit_arch part of the kvm_run
|
KVM_EXIT_DEBUG with the kvm_debug_exit_arch part of the kvm_run
|
||||||
structure containing architecture specific debug information.
|
structure containing architecture specific debug information.
|
||||||
|
@ -3111,11 +3116,13 @@ data_offset describes where the data is located (KVM_EXIT_IO_OUT) or
|
||||||
where kvm expects application code to place the data for the next
|
where kvm expects application code to place the data for the next
|
||||||
KVM_RUN invocation (KVM_EXIT_IO_IN). Data format is a packed array.
|
KVM_RUN invocation (KVM_EXIT_IO_IN). Data format is a packed array.
|
||||||
|
|
||||||
|
/* KVM_EXIT_DEBUG */
|
||||||
struct {
|
struct {
|
||||||
struct kvm_debug_exit_arch arch;
|
struct kvm_debug_exit_arch arch;
|
||||||
} debug;
|
} debug;
|
||||||
|
|
||||||
Unused.
|
If the exit_reason is KVM_EXIT_DEBUG, then a vcpu is processing a debug event
|
||||||
|
for which architecture specific information is returned.
|
||||||
|
|
||||||
/* KVM_EXIT_MMIO */
|
/* KVM_EXIT_MMIO */
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -14,6 +14,8 @@ hugetlbpage.txt
|
||||||
- a brief summary of hugetlbpage support in the Linux kernel.
|
- a brief summary of hugetlbpage support in the Linux kernel.
|
||||||
hwpoison.txt
|
hwpoison.txt
|
||||||
- explains what hwpoison is
|
- explains what hwpoison is
|
||||||
|
idle_page_tracking.txt
|
||||||
|
- description of the idle page tracking feature.
|
||||||
ksm.txt
|
ksm.txt
|
||||||
- how to use the Kernel Samepage Merging feature.
|
- how to use the Kernel Samepage Merging feature.
|
||||||
numa
|
numa
|
||||||
|
|
|
@ -329,7 +329,14 @@ Examples
|
||||||
|
|
||||||
3) hugepage-mmap: see tools/testing/selftests/vm/hugepage-mmap.c
|
3) hugepage-mmap: see tools/testing/selftests/vm/hugepage-mmap.c
|
||||||
|
|
||||||
4) The libhugetlbfs (http://libhugetlbfs.sourceforge.net) library provides a
|
4) The libhugetlbfs (https://github.com/libhugetlbfs/libhugetlbfs) library
|
||||||
wide range of userspace tools to help with huge page usability, environment
|
provides a wide range of userspace tools to help with huge page usability,
|
||||||
setup, and control. Furthermore it provides useful test cases that should be
|
environment setup, and control.
|
||||||
used when modifying code to ensure no regressions are introduced.
|
|
||||||
|
Kernel development regression testing
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
The most complete set of hugetlb tests are in the libhugetlbfs repository.
|
||||||
|
If you modify any hugetlb related code, use the libhugetlbfs test suite
|
||||||
|
to check for regressions. In addition, if you add any new hugetlb
|
||||||
|
functionality, please add appropriate tests to libhugetlbfs.
|
||||||
|
|
98
Documentation/vm/idle_page_tracking.txt
Normal file
98
Documentation/vm/idle_page_tracking.txt
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
MOTIVATION
|
||||||
|
|
||||||
|
The idle page tracking feature allows to track which memory pages are being
|
||||||
|
accessed by a workload and which are idle. This information can be useful for
|
||||||
|
estimating the workload's working set size, which, in turn, can be taken into
|
||||||
|
account when configuring the workload parameters, setting memory cgroup limits,
|
||||||
|
or deciding where to place the workload within a compute cluster.
|
||||||
|
|
||||||
|
It is enabled by CONFIG_IDLE_PAGE_TRACKING=y.
|
||||||
|
|
||||||
|
USER API
|
||||||
|
|
||||||
|
The idle page tracking API is located at /sys/kernel/mm/page_idle. Currently,
|
||||||
|
it consists of the only read-write file, /sys/kernel/mm/page_idle/bitmap.
|
||||||
|
|
||||||
|
The file implements a bitmap where each bit corresponds to a memory page. The
|
||||||
|
bitmap is represented by an array of 8-byte integers, and the page at PFN #i is
|
||||||
|
mapped to bit #i%64 of array element #i/64, byte order is native. When a bit is
|
||||||
|
set, the corresponding page is idle.
|
||||||
|
|
||||||
|
A page is considered idle if it has not been accessed since it was marked idle
|
||||||
|
(for more details on what "accessed" actually means see the IMPLEMENTATION
|
||||||
|
DETAILS section). To mark a page idle one has to set the bit corresponding to
|
||||||
|
the page by writing to the file. A value written to the file is OR-ed with the
|
||||||
|
current bitmap value.
|
||||||
|
|
||||||
|
Only accesses to user memory pages are tracked. These are pages mapped to a
|
||||||
|
process address space, page cache and buffer pages, swap cache pages. For other
|
||||||
|
page types (e.g. SLAB pages) an attempt to mark a page idle is silently ignored,
|
||||||
|
and hence such pages are never reported idle.
|
||||||
|
|
||||||
|
For huge pages the idle flag is set only on the head page, so one has to read
|
||||||
|
/proc/kpageflags in order to correctly count idle huge pages.
|
||||||
|
|
||||||
|
Reading from or writing to /sys/kernel/mm/page_idle/bitmap will return
|
||||||
|
-EINVAL if you are not starting the read/write on an 8-byte boundary, or
|
||||||
|
if the size of the read/write is not a multiple of 8 bytes. Writing to
|
||||||
|
this file beyond max PFN will return -ENXIO.
|
||||||
|
|
||||||
|
That said, in order to estimate the amount of pages that are not used by a
|
||||||
|
workload one should:
|
||||||
|
|
||||||
|
1. Mark all the workload's pages as idle by setting corresponding bits in
|
||||||
|
/sys/kernel/mm/page_idle/bitmap. The pages can be found by reading
|
||||||
|
/proc/pid/pagemap if the workload is represented by a process, or by
|
||||||
|
filtering out alien pages using /proc/kpagecgroup in case the workload is
|
||||||
|
placed in a memory cgroup.
|
||||||
|
|
||||||
|
2. Wait until the workload accesses its working set.
|
||||||
|
|
||||||
|
3. Read /sys/kernel/mm/page_idle/bitmap and count the number of bits set. If
|
||||||
|
one wants to ignore certain types of pages, e.g. mlocked pages since they
|
||||||
|
are not reclaimable, he or she can filter them out using /proc/kpageflags.
|
||||||
|
|
||||||
|
See Documentation/vm/pagemap.txt for more information about /proc/pid/pagemap,
|
||||||
|
/proc/kpageflags, and /proc/kpagecgroup.
|
||||||
|
|
||||||
|
IMPLEMENTATION DETAILS
|
||||||
|
|
||||||
|
The kernel internally keeps track of accesses to user memory pages in order to
|
||||||
|
reclaim unreferenced pages first on memory shortage conditions. A page is
|
||||||
|
considered referenced if it has been recently accessed via a process address
|
||||||
|
space, in which case one or more PTEs it is mapped to will have the Accessed bit
|
||||||
|
set, or marked accessed explicitly by the kernel (see mark_page_accessed()). The
|
||||||
|
latter happens when:
|
||||||
|
|
||||||
|
- a userspace process reads or writes a page using a system call (e.g. read(2)
|
||||||
|
or write(2))
|
||||||
|
|
||||||
|
- a page that is used for storing filesystem buffers is read or written,
|
||||||
|
because a process needs filesystem metadata stored in it (e.g. lists a
|
||||||
|
directory tree)
|
||||||
|
|
||||||
|
- a page is accessed by a device driver using get_user_pages()
|
||||||
|
|
||||||
|
When a dirty page is written to swap or disk as a result of memory reclaim or
|
||||||
|
exceeding the dirty memory limit, it is not marked referenced.
|
||||||
|
|
||||||
|
The idle memory tracking feature adds a new page flag, the Idle flag. This flag
|
||||||
|
is set manually, by writing to /sys/kernel/mm/page_idle/bitmap (see the USER API
|
||||||
|
section), and cleared automatically whenever a page is referenced as defined
|
||||||
|
above.
|
||||||
|
|
||||||
|
When a page is marked idle, the Accessed bit must be cleared in all PTEs it is
|
||||||
|
mapped to, otherwise we will not be able to detect accesses to the page coming
|
||||||
|
from a process address space. To avoid interference with the reclaimer, which,
|
||||||
|
as noted above, uses the Accessed bit to promote actively referenced pages, one
|
||||||
|
more page flag is introduced, the Young flag. When the PTE Accessed bit is
|
||||||
|
cleared as a result of setting or updating a page's Idle flag, the Young flag
|
||||||
|
is set on the page. The reclaimer treats the Young flag as an extra PTE
|
||||||
|
Accessed bit and therefore will consider such a page as referenced.
|
||||||
|
|
||||||
|
Since the idle memory tracking feature is based on the memory reclaimer logic,
|
||||||
|
it only works with pages that are on an LRU list, other pages are silently
|
||||||
|
ignored. That means it will ignore a user memory page if it is isolated, but
|
||||||
|
since there are usually not many of them, it should not affect the overall
|
||||||
|
result noticeably. In order not to stall scanning of the idle page bitmap,
|
||||||
|
locked pages may be skipped too.
|
|
@ -5,7 +5,7 @@ pagemap is a new (as of 2.6.25) set of interfaces in the kernel that allow
|
||||||
userspace programs to examine the page tables and related information by
|
userspace programs to examine the page tables and related information by
|
||||||
reading files in /proc.
|
reading files in /proc.
|
||||||
|
|
||||||
There are three components to pagemap:
|
There are four components to pagemap:
|
||||||
|
|
||||||
* /proc/pid/pagemap. This file lets a userspace process find out which
|
* /proc/pid/pagemap. This file lets a userspace process find out which
|
||||||
physical frame each virtual page is mapped to. It contains one 64-bit
|
physical frame each virtual page is mapped to. It contains one 64-bit
|
||||||
|
@ -16,11 +16,17 @@ There are three components to pagemap:
|
||||||
* Bits 0-4 swap type if swapped
|
* Bits 0-4 swap type if swapped
|
||||||
* Bits 5-54 swap offset if swapped
|
* Bits 5-54 swap offset if swapped
|
||||||
* Bit 55 pte is soft-dirty (see Documentation/vm/soft-dirty.txt)
|
* Bit 55 pte is soft-dirty (see Documentation/vm/soft-dirty.txt)
|
||||||
* Bits 56-60 zero
|
* Bit 56 page exclusively mapped (since 4.2)
|
||||||
* Bit 61 page is file-page or shared-anon
|
* Bits 57-60 zero
|
||||||
|
* Bit 61 page is file-page or shared-anon (since 3.5)
|
||||||
* Bit 62 page swapped
|
* Bit 62 page swapped
|
||||||
* Bit 63 page present
|
* Bit 63 page present
|
||||||
|
|
||||||
|
Since Linux 4.0 only users with the CAP_SYS_ADMIN capability can get PFNs.
|
||||||
|
In 4.0 and 4.1 opens by unprivileged fail with -EPERM. Starting from
|
||||||
|
4.2 the PFN field is zeroed if the user does not have CAP_SYS_ADMIN.
|
||||||
|
Reason: information about PFNs helps in exploiting Rowhammer vulnerability.
|
||||||
|
|
||||||
If the page is not present but in swap, then the PFN contains an
|
If the page is not present but in swap, then the PFN contains an
|
||||||
encoding of the swap file number and the page's offset into the
|
encoding of the swap file number and the page's offset into the
|
||||||
swap. Unmapped pages return a null PFN. This allows determining
|
swap. Unmapped pages return a null PFN. This allows determining
|
||||||
|
@ -64,6 +70,11 @@ There are three components to pagemap:
|
||||||
22. THP
|
22. THP
|
||||||
23. BALLOON
|
23. BALLOON
|
||||||
24. ZERO_PAGE
|
24. ZERO_PAGE
|
||||||
|
25. IDLE
|
||||||
|
|
||||||
|
* /proc/kpagecgroup. This file contains a 64-bit inode number of the
|
||||||
|
memory cgroup each page is charged to, indexed by PFN. Only available when
|
||||||
|
CONFIG_MEMCG is set.
|
||||||
|
|
||||||
Short descriptions to the page flags:
|
Short descriptions to the page flags:
|
||||||
|
|
||||||
|
@ -110,6 +121,12 @@ Short descriptions to the page flags:
|
||||||
24. ZERO_PAGE
|
24. ZERO_PAGE
|
||||||
zero page for pfn_zero or huge_zero page
|
zero page for pfn_zero or huge_zero page
|
||||||
|
|
||||||
|
25. IDLE
|
||||||
|
page has not been accessed since it was marked idle (see
|
||||||
|
Documentation/vm/idle_page_tracking.txt). Note that this flag may be
|
||||||
|
stale in case the page was accessed via a PTE. To make sure the flag
|
||||||
|
is up-to-date one has to read /sys/kernel/mm/page_idle/bitmap first.
|
||||||
|
|
||||||
[IO related page flags]
|
[IO related page flags]
|
||||||
1. ERROR IO error occurred
|
1. ERROR IO error occurred
|
||||||
3. UPTODATE page has up-to-date data
|
3. UPTODATE page has up-to-date data
|
||||||
|
@ -159,3 +176,8 @@ Other notes:
|
||||||
Reading from any of the files will return -EINVAL if you are not starting
|
Reading from any of the files will return -EINVAL if you are not starting
|
||||||
the read on an 8-byte boundary (e.g., if you sought an odd number of bytes
|
the read on an 8-byte boundary (e.g., if you sought an odd number of bytes
|
||||||
into the file), or if the size of the read is not a multiple of 8 bytes.
|
into the file), or if the size of the read is not a multiple of 8 bytes.
|
||||||
|
|
||||||
|
Before Linux 3.11 pagemap bits 55-60 were used for "page-shift" (which is
|
||||||
|
always 12 at most architectures). Since Linux 3.11 their meaning changes
|
||||||
|
after first clear of soft-dirty bits. Since Linux 4.2 they are used for
|
||||||
|
flags unconditionally.
|
||||||
|
|
|
@ -32,7 +32,7 @@ can also be enabled and disabled at runtime using the sysfs interface.
|
||||||
An example command to enable zswap at runtime, assuming sysfs is mounted
|
An example command to enable zswap at runtime, assuming sysfs is mounted
|
||||||
at /sys, is:
|
at /sys, is:
|
||||||
|
|
||||||
echo 1 > /sys/modules/zswap/parameters/enabled
|
echo 1 > /sys/module/zswap/parameters/enabled
|
||||||
|
|
||||||
When zswap is disabled at runtime it will stop storing pages that are
|
When zswap is disabled at runtime it will stop storing pages that are
|
||||||
being swapped out. However, it will _not_ immediately write out or fault
|
being swapped out. However, it will _not_ immediately write out or fault
|
||||||
|
@ -49,14 +49,26 @@ Zswap receives pages for compression through the Frontswap API and is able to
|
||||||
evict pages from its own compressed pool on an LRU basis and write them back to
|
evict pages from its own compressed pool on an LRU basis and write them back to
|
||||||
the backing swap device in the case that the compressed pool is full.
|
the backing swap device in the case that the compressed pool is full.
|
||||||
|
|
||||||
Zswap makes use of zbud for the managing the compressed memory pool. Each
|
Zswap makes use of zpool for the managing the compressed memory pool. Each
|
||||||
allocation in zbud is not directly accessible by address. Rather, a handle is
|
allocation in zpool is not directly accessible by address. Rather, a handle is
|
||||||
returned by the allocation routine and that handle must be mapped before being
|
returned by the allocation routine and that handle must be mapped before being
|
||||||
accessed. The compressed memory pool grows on demand and shrinks as compressed
|
accessed. The compressed memory pool grows on demand and shrinks as compressed
|
||||||
pages are freed. The pool is not preallocated.
|
pages are freed. The pool is not preallocated. By default, a zpool of type
|
||||||
|
zbud is created, but it can be selected at boot time by setting the "zpool"
|
||||||
|
attribute, e.g. zswap.zpool=zbud. It can also be changed at runtime using the
|
||||||
|
sysfs "zpool" attribute, e.g.
|
||||||
|
|
||||||
|
echo zbud > /sys/module/zswap/parameters/zpool
|
||||||
|
|
||||||
|
The zbud type zpool allocates exactly 1 page to store 2 compressed pages, which
|
||||||
|
means the compression ratio will always be 2:1 or worse (because of half-full
|
||||||
|
zbud pages). The zsmalloc type zpool has a more complex compressed page
|
||||||
|
storage method, and it can achieve greater storage densities. However,
|
||||||
|
zsmalloc does not implement compressed page eviction, so once zswap fills it
|
||||||
|
cannot evict the oldest page, it can only reject new pages.
|
||||||
|
|
||||||
When a swap page is passed from frontswap to zswap, zswap maintains a mapping
|
When a swap page is passed from frontswap to zswap, zswap maintains a mapping
|
||||||
of the swap entry, a combination of the swap type and swap offset, to the zbud
|
of the swap entry, a combination of the swap type and swap offset, to the zpool
|
||||||
handle that references that compressed swap page. This mapping is achieved
|
handle that references that compressed swap page. This mapping is achieved
|
||||||
with a red-black tree per swap type. The swap offset is the search key for the
|
with a red-black tree per swap type. The swap offset is the search key for the
|
||||||
tree nodes.
|
tree nodes.
|
||||||
|
@ -74,9 +86,17 @@ controlled policy:
|
||||||
* max_pool_percent - The maximum percentage of memory that the compressed
|
* max_pool_percent - The maximum percentage of memory that the compressed
|
||||||
pool can occupy.
|
pool can occupy.
|
||||||
|
|
||||||
Zswap allows the compressor to be selected at kernel boot time by setting the
|
The default compressor is lzo, but it can be selected at boot time by setting
|
||||||
“compressor” attribute. The default compressor is lzo. e.g.
|
the “compressor” attribute, e.g. zswap.compressor=lzo. It can also be changed
|
||||||
zswap.compressor=deflate
|
at runtime using the sysfs "compressor" attribute, e.g.
|
||||||
|
|
||||||
|
echo lzo > /sys/module/zswap/parameters/compressor
|
||||||
|
|
||||||
|
When the zpool and/or compressor parameter is changed at runtime, any existing
|
||||||
|
compressed pages are not modified; they are left in their own zpool. When a
|
||||||
|
request is made for a page in an old zpool, it is uncompressed using its
|
||||||
|
original compressor. Once all pages are removed from an old zpool, the zpool
|
||||||
|
and its compressor are freed.
|
||||||
|
|
||||||
A debugfs interface is provided for various statistic about pool size, number
|
A debugfs interface is provided for various statistic about pool size, number
|
||||||
of pages stored, and various counters for the reasons pages are rejected.
|
of pages stored, and various counters for the reasons pages are rejected.
|
||||||
|
|
|
@ -41,6 +41,7 @@ static void term(int sig)
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int flags;
|
int flags;
|
||||||
|
unsigned int ping_rate = 1;
|
||||||
|
|
||||||
fd = open("/dev/watchdog", O_WRONLY);
|
fd = open("/dev/watchdog", O_WRONLY);
|
||||||
|
|
||||||
|
@ -63,22 +64,33 @@ int main(int argc, char *argv[])
|
||||||
fprintf(stderr, "Watchdog card enabled.\n");
|
fprintf(stderr, "Watchdog card enabled.\n");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
goto end;
|
goto end;
|
||||||
|
} else if (!strncasecmp(argv[1], "-t", 2) && argv[2]) {
|
||||||
|
flags = atoi(argv[2]);
|
||||||
|
ioctl(fd, WDIOC_SETTIMEOUT, &flags);
|
||||||
|
fprintf(stderr, "Watchdog timeout set to %u seconds.\n", flags);
|
||||||
|
fflush(stderr);
|
||||||
|
goto end;
|
||||||
|
} else if (!strncasecmp(argv[1], "-p", 2) && argv[2]) {
|
||||||
|
ping_rate = strtoul(argv[2], NULL, 0);
|
||||||
|
fprintf(stderr, "Watchdog ping rate set to %u seconds.\n", ping_rate);
|
||||||
|
fflush(stderr);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "-d to disable, -e to enable.\n");
|
fprintf(stderr, "-d to disable, -e to enable, -t <n> to set " \
|
||||||
|
"the timeout,\n-p <n> to set the ping rate, and \n");
|
||||||
fprintf(stderr, "run by itself to tick the card.\n");
|
fprintf(stderr, "run by itself to tick the card.\n");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
fprintf(stderr, "Watchdog Ticking Away!\n");
|
|
||||||
fflush(stderr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fprintf(stderr, "Watchdog Ticking Away!\n");
|
||||||
|
fflush(stderr);
|
||||||
|
|
||||||
signal(SIGINT, term);
|
signal(SIGINT, term);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
keep_alive();
|
keep_alive();
|
||||||
sleep(1);
|
sleep(ping_rate);
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
59
MAINTAINERS
59
MAINTAINERS
|
@ -1905,6 +1905,12 @@ L: linux-mtd@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/mtd/nand/atmel_nand*
|
F: drivers/mtd/nand/atmel_nand*
|
||||||
|
|
||||||
|
ATMEL SDMMC DRIVER
|
||||||
|
M: Ludovic Desroches <ludovic.desroches@atmel.com>
|
||||||
|
L: linux-mmc@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: drivers/mmc/host/sdhci-of-at91.c
|
||||||
|
|
||||||
ATMEL SPI DRIVER
|
ATMEL SPI DRIVER
|
||||||
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -2621,6 +2627,15 @@ S: Supported
|
||||||
F: Documentation/filesystems/ceph.txt
|
F: Documentation/filesystems/ceph.txt
|
||||||
F: fs/ceph/
|
F: fs/ceph/
|
||||||
|
|
||||||
|
CERTIFICATE HANDLING:
|
||||||
|
M: David Howells <dhowells@redhat.com>
|
||||||
|
M: David Woodhouse <dwmw2@infradead.org>
|
||||||
|
L: keyrings@linux-nfs.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/module-signing.txt
|
||||||
|
F: certs/
|
||||||
|
F: scripts/extract-cert.c
|
||||||
|
|
||||||
CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
|
CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
S: Orphan
|
S: Orphan
|
||||||
|
@ -5326,6 +5341,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/infiniband/
|
F: Documentation/infiniband/
|
||||||
F: drivers/infiniband/
|
F: drivers/infiniband/
|
||||||
|
F: drivers/staging/rdma/
|
||||||
F: include/uapi/linux/if_infiniband.h
|
F: include/uapi/linux/if_infiniband.h
|
||||||
F: include/uapi/rdma/
|
F: include/uapi/rdma/
|
||||||
F: include/rdma/
|
F: include/rdma/
|
||||||
|
@ -5583,7 +5599,7 @@ IPATH DRIVER
|
||||||
M: Mike Marciniszyn <infinipath@intel.com>
|
M: Mike Marciniszyn <infinipath@intel.com>
|
||||||
L: linux-rdma@vger.kernel.org
|
L: linux-rdma@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/infiniband/hw/ipath/
|
F: drivers/staging/rdma/ipath/
|
||||||
|
|
||||||
IPMI SUBSYSTEM
|
IPMI SUBSYSTEM
|
||||||
M: Corey Minyard <minyard@acm.org>
|
M: Corey Minyard <minyard@acm.org>
|
||||||
|
@ -5994,7 +6010,7 @@ F: kernel/kexec.c
|
||||||
|
|
||||||
KEYS/KEYRINGS:
|
KEYS/KEYRINGS:
|
||||||
M: David Howells <dhowells@redhat.com>
|
M: David Howells <dhowells@redhat.com>
|
||||||
L: keyrings@linux-nfs.org
|
L: keyrings@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/security/keys.txt
|
F: Documentation/security/keys.txt
|
||||||
F: include/linux/key.h
|
F: include/linux/key.h
|
||||||
|
@ -6006,7 +6022,7 @@ KEYS-TRUSTED
|
||||||
M: David Safford <safford@us.ibm.com>
|
M: David Safford <safford@us.ibm.com>
|
||||||
M: Mimi Zohar <zohar@linux.vnet.ibm.com>
|
M: Mimi Zohar <zohar@linux.vnet.ibm.com>
|
||||||
L: linux-security-module@vger.kernel.org
|
L: linux-security-module@vger.kernel.org
|
||||||
L: keyrings@linux-nfs.org
|
L: keyrings@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/security/keys-trusted-encrypted.txt
|
F: Documentation/security/keys-trusted-encrypted.txt
|
||||||
F: include/keys/trusted-type.h
|
F: include/keys/trusted-type.h
|
||||||
|
@ -6017,7 +6033,7 @@ KEYS-ENCRYPTED
|
||||||
M: Mimi Zohar <zohar@linux.vnet.ibm.com>
|
M: Mimi Zohar <zohar@linux.vnet.ibm.com>
|
||||||
M: David Safford <safford@us.ibm.com>
|
M: David Safford <safford@us.ibm.com>
|
||||||
L: linux-security-module@vger.kernel.org
|
L: linux-security-module@vger.kernel.org
|
||||||
L: keyrings@linux-nfs.org
|
L: keyrings@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/security/keys-trusted-encrypted.txt
|
F: Documentation/security/keys-trusted-encrypted.txt
|
||||||
F: include/keys/encrypted-type.h
|
F: include/keys/encrypted-type.h
|
||||||
|
@ -6220,6 +6236,7 @@ Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/nvdimm/pmem.c
|
F: drivers/nvdimm/pmem.c
|
||||||
F: include/linux/pmem.h
|
F: include/linux/pmem.h
|
||||||
|
F: arch/*/include/asm/pmem.h
|
||||||
|
|
||||||
LINUX FOR IBM pSERIES (RS/6000)
|
LINUX FOR IBM pSERIES (RS/6000)
|
||||||
M: Paul Mackerras <paulus@au.ibm.com>
|
M: Paul Mackerras <paulus@au.ibm.com>
|
||||||
|
@ -6772,6 +6789,14 @@ W: http://www.mellanox.com
|
||||||
Q: http://patchwork.ozlabs.org/project/netdev/list/
|
Q: http://patchwork.ozlabs.org/project/netdev/list/
|
||||||
F: drivers/net/ethernet/mellanox/mlxsw/
|
F: drivers/net/ethernet/mellanox/mlxsw/
|
||||||
|
|
||||||
|
MEMBARRIER SUPPORT
|
||||||
|
M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
M: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: kernel/membarrier.c
|
||||||
|
F: include/uapi/linux/membarrier.h
|
||||||
|
|
||||||
MEMORY MANAGEMENT
|
MEMORY MANAGEMENT
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
W: http://www.linux-mm.org
|
W: http://www.linux-mm.org
|
||||||
|
@ -6837,6 +6862,12 @@ T: git git://git.monstr.eu/linux-2.6-microblaze.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/microblaze/
|
F: arch/microblaze/
|
||||||
|
|
||||||
|
MICROSOFT SURFACE PRO 3 BUTTON DRIVER
|
||||||
|
M: Chen Yu <yu.c.chen@intel.com>
|
||||||
|
L: platform-driver-x86@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: drivers/platform/x86/surfacepro3_button.c
|
||||||
|
|
||||||
MICROTEK X6 SCANNER
|
MICROTEK X6 SCANNER
|
||||||
M: Oliver Neukum <oliver@neukum.org>
|
M: Oliver Neukum <oliver@neukum.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -7354,7 +7385,7 @@ F: drivers/scsi/nsp32*
|
||||||
NIOS2 ARCHITECTURE
|
NIOS2 ARCHITECTURE
|
||||||
M: Ley Foon Tan <lftan@altera.com>
|
M: Ley Foon Tan <lftan@altera.com>
|
||||||
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
||||||
T: git git://git.rocketboards.org/linux-socfpga-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/nios2/
|
F: arch/nios2/
|
||||||
|
|
||||||
|
@ -7373,6 +7404,7 @@ NTB DRIVER CORE
|
||||||
M: Jon Mason <jdmason@kudzu.us>
|
M: Jon Mason <jdmason@kudzu.us>
|
||||||
M: Dave Jiang <dave.jiang@intel.com>
|
M: Dave Jiang <dave.jiang@intel.com>
|
||||||
M: Allen Hubbe <Allen.Hubbe@emc.com>
|
M: Allen Hubbe <Allen.Hubbe@emc.com>
|
||||||
|
L: linux-ntb@googlegroups.com
|
||||||
S: Supported
|
S: Supported
|
||||||
W: https://github.com/jonmason/ntb/wiki
|
W: https://github.com/jonmason/ntb/wiki
|
||||||
T: git git://github.com/jonmason/ntb.git
|
T: git git://github.com/jonmason/ntb.git
|
||||||
|
@ -7384,6 +7416,7 @@ F: include/linux/ntb_transport.h
|
||||||
NTB INTEL DRIVER
|
NTB INTEL DRIVER
|
||||||
M: Jon Mason <jdmason@kudzu.us>
|
M: Jon Mason <jdmason@kudzu.us>
|
||||||
M: Dave Jiang <dave.jiang@intel.com>
|
M: Dave Jiang <dave.jiang@intel.com>
|
||||||
|
L: linux-ntb@googlegroups.com
|
||||||
S: Supported
|
S: Supported
|
||||||
W: https://github.com/jonmason/ntb/wiki
|
W: https://github.com/jonmason/ntb/wiki
|
||||||
T: git git://github.com/jonmason/ntb.git
|
T: git git://github.com/jonmason/ntb.git
|
||||||
|
@ -8176,10 +8209,9 @@ F: drivers/hwmon/pmbus/
|
||||||
F: include/linux/i2c/pmbus.h
|
F: include/linux/i2c/pmbus.h
|
||||||
|
|
||||||
PMC SIERRA MaxRAID DRIVER
|
PMC SIERRA MaxRAID DRIVER
|
||||||
M: Anil Ravindranath <anil_ravindranath@pmc-sierra.com>
|
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
W: http://www.pmc-sierra.com/
|
W: http://www.pmc-sierra.com/
|
||||||
S: Supported
|
S: Orphan
|
||||||
F: drivers/scsi/pmcraid.*
|
F: drivers/scsi/pmcraid.*
|
||||||
|
|
||||||
PMC SIERRA PM8001 DRIVER
|
PMC SIERRA PM8001 DRIVER
|
||||||
|
@ -9264,6 +9296,12 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: security/apparmor/
|
F: security/apparmor/
|
||||||
|
|
||||||
|
YAMA SECURITY MODULE
|
||||||
|
M: Kees Cook <keescook@chromium.org>
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
|
||||||
|
S: Supported
|
||||||
|
F: security/yama/
|
||||||
|
|
||||||
SENSABLE PHANTOM
|
SENSABLE PHANTOM
|
||||||
M: Jiri Slaby <jirislaby@gmail.com>
|
M: Jiri Slaby <jirislaby@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -9948,6 +9986,12 @@ M: Arnaud Patard <arnaud.patard@rtp-net.org>
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: drivers/staging/xgifb/
|
F: drivers/staging/xgifb/
|
||||||
|
|
||||||
|
HFI1 DRIVER
|
||||||
|
M: Mike Marciniszyn <infinipath@intel.com>
|
||||||
|
L: linux-rdma@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: drivers/staging/rdma/hfi1
|
||||||
|
|
||||||
STARFIRE/DURALAN NETWORK DRIVER
|
STARFIRE/DURALAN NETWORK DRIVER
|
||||||
M: Ion Badulescu <ionut@badula.org>
|
M: Ion Badulescu <ionut@badula.org>
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
|
@ -10473,7 +10517,6 @@ F: drivers/platform/x86/toshiba_haps.c
|
||||||
|
|
||||||
TOSHIBA SMM DRIVER
|
TOSHIBA SMM DRIVER
|
||||||
M: Jonathan Buzzard <jonathan@buzzard.org.uk>
|
M: Jonathan Buzzard <jonathan@buzzard.org.uk>
|
||||||
L: tlinux-users@tce.toshiba-dme.co.jp
|
|
||||||
W: http://www.buzzard.org.uk/toshiba/
|
W: http://www.buzzard.org.uk/toshiba/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/char/toshiba.c
|
F: drivers/char/toshiba.c
|
||||||
|
|
27
Makefile
27
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 2
|
PATCHLEVEL = 3
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION =
|
EXTRAVERSION = -rc1
|
||||||
NAME = Hurr durr I'ma sheep
|
NAME = Hurr durr I'ma sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -666,14 +666,7 @@ endif
|
||||||
endif
|
endif
|
||||||
KBUILD_CFLAGS += $(stackp-flag)
|
KBUILD_CFLAGS += $(stackp-flag)
|
||||||
|
|
||||||
ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang version"), 1)
|
ifeq ($(cc-name),clang)
|
||||||
COMPILER := clang
|
|
||||||
else
|
|
||||||
COMPILER := gcc
|
|
||||||
endif
|
|
||||||
export COMPILER
|
|
||||||
|
|
||||||
ifeq ($(COMPILER),clang)
|
|
||||||
KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
|
KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
|
||||||
KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,)
|
KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,)
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable)
|
KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable)
|
||||||
|
@ -875,10 +868,9 @@ INITRD_COMPRESS-$(CONFIG_RD_LZ4) := lz4
|
||||||
# export INITRD_COMPRESS := $(INITRD_COMPRESS-y)
|
# export INITRD_COMPRESS := $(INITRD_COMPRESS-y)
|
||||||
|
|
||||||
ifdef CONFIG_MODULE_SIG_ALL
|
ifdef CONFIG_MODULE_SIG_ALL
|
||||||
MODSECKEY = ./signing_key.priv
|
$(eval $(call config_filename,MODULE_SIG_KEY))
|
||||||
MODPUBKEY = ./signing_key.x509
|
|
||||||
export MODPUBKEY
|
mod_sign_cmd = scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODULE_SIG_KEY_SRCPREFIX)$(CONFIG_MODULE_SIG_KEY) certs/signing_key.x509
|
||||||
mod_sign_cmd = perl $(srctree)/scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODSECKEY) $(MODPUBKEY)
|
|
||||||
else
|
else
|
||||||
mod_sign_cmd = true
|
mod_sign_cmd = true
|
||||||
endif
|
endif
|
||||||
|
@ -886,7 +878,7 @@ export mod_sign_cmd
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(KBUILD_EXTMOD),)
|
ifeq ($(KBUILD_EXTMOD),)
|
||||||
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
|
core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
|
||||||
|
|
||||||
vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
|
vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
|
||||||
$(core-y) $(core-m) $(drivers-y) $(drivers-m) \
|
$(core-y) $(core-m) $(drivers-y) $(drivers-m) \
|
||||||
|
@ -1178,8 +1170,8 @@ MRPROPER_DIRS += include/config usr/include include/generated \
|
||||||
arch/*/include/generated .tmp_objdiff
|
arch/*/include/generated .tmp_objdiff
|
||||||
MRPROPER_FILES += .config .config.old .version .old_version \
|
MRPROPER_FILES += .config .config.old .version .old_version \
|
||||||
Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
|
Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
|
||||||
signing_key.priv signing_key.x509 x509.genkey \
|
signing_key.pem signing_key.priv signing_key.x509 \
|
||||||
extra_certificates signing_key.x509.keyid \
|
x509.genkey extra_certificates signing_key.x509.keyid \
|
||||||
signing_key.x509.signer vmlinux-gdb.py
|
signing_key.x509.signer vmlinux-gdb.py
|
||||||
|
|
||||||
# clean - Delete most, but leave enough to build external modules
|
# clean - Delete most, but leave enough to build external modules
|
||||||
|
@ -1433,6 +1425,7 @@ clean: $(clean-dirs)
|
||||||
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
||||||
-o -name '*.ko.*' \
|
-o -name '*.ko.*' \
|
||||||
-o -name '*.dwo' \
|
-o -name '*.dwo' \
|
||||||
|
-o -name '*.su' \
|
||||||
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
||||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
-o -name '*.symtypes' -o -name 'modules.order' \
|
||||||
-o -name modules.builtin -o -name '.tmp_*.o.*' \
|
-o -name modules.builtin -o -name '.tmp_*.o.*' \
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
# General architecture dependent options
|
# General architecture dependent options
|
||||||
#
|
#
|
||||||
|
|
||||||
|
config KEXEC_CORE
|
||||||
|
bool
|
||||||
|
|
||||||
config OPROFILE
|
config OPROFILE
|
||||||
tristate "OProfile system profiling"
|
tristate "OProfile system profiling"
|
||||||
depends on PROFILING
|
depends on PROFILING
|
||||||
|
|
|
@ -12,42 +12,6 @@ static inline struct dma_map_ops *get_dma_ops(struct device *dev)
|
||||||
|
|
||||||
#include <asm-generic/dma-mapping-common.h>
|
#include <asm-generic/dma-mapping-common.h>
|
||||||
|
|
||||||
#define dma_alloc_coherent(d,s,h,f) dma_alloc_attrs(d,s,h,f,NULL)
|
|
||||||
|
|
||||||
static inline void *dma_alloc_attrs(struct device *dev, size_t size,
|
|
||||||
dma_addr_t *dma_handle, gfp_t gfp,
|
|
||||||
struct dma_attrs *attrs)
|
|
||||||
{
|
|
||||||
return get_dma_ops(dev)->alloc(dev, size, dma_handle, gfp, attrs);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define dma_free_coherent(d,s,c,h) dma_free_attrs(d,s,c,h,NULL)
|
|
||||||
|
|
||||||
static inline void dma_free_attrs(struct device *dev, size_t size,
|
|
||||||
void *vaddr, dma_addr_t dma_handle,
|
|
||||||
struct dma_attrs *attrs)
|
|
||||||
{
|
|
||||||
get_dma_ops(dev)->free(dev, size, vaddr, dma_handle, attrs);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
|
||||||
{
|
|
||||||
return get_dma_ops(dev)->mapping_error(dev, dma_addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int dma_supported(struct device *dev, u64 mask)
|
|
||||||
{
|
|
||||||
return get_dma_ops(dev)->dma_supported(dev, mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int dma_set_mask(struct device *dev, u64 mask)
|
|
||||||
{
|
|
||||||
return get_dma_ops(dev)->set_dma_mask(dev, mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
|
|
||||||
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
|
|
||||||
|
|
||||||
#define dma_cache_sync(dev, va, size, dir) ((void)0)
|
#define dma_cache_sync(dev, va, size, dir) ((void)0)
|
||||||
|
|
||||||
#endif /* _ALPHA_DMA_MAPPING_H */
|
#endif /* _ALPHA_DMA_MAPPING_H */
|
||||||
|
|
|
@ -166,15 +166,6 @@ static int alpha_noop_supported(struct device *dev, u64 mask)
|
||||||
return mask < 0x00ffffffUL ? 0 : 1;
|
return mask < 0x00ffffffUL ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int alpha_noop_set_mask(struct device *dev, u64 mask)
|
|
||||||
{
|
|
||||||
if (!dev->dma_mask || !dma_supported(dev, mask))
|
|
||||||
return -EIO;
|
|
||||||
|
|
||||||
*dev->dma_mask = mask;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct dma_map_ops alpha_noop_ops = {
|
struct dma_map_ops alpha_noop_ops = {
|
||||||
.alloc = alpha_noop_alloc_coherent,
|
.alloc = alpha_noop_alloc_coherent,
|
||||||
.free = alpha_noop_free_coherent,
|
.free = alpha_noop_free_coherent,
|
||||||
|
@ -182,7 +173,6 @@ struct dma_map_ops alpha_noop_ops = {
|
||||||
.map_sg = alpha_noop_map_sg,
|
.map_sg = alpha_noop_map_sg,
|
||||||
.mapping_error = alpha_noop_mapping_error,
|
.mapping_error = alpha_noop_mapping_error,
|
||||||
.dma_supported = alpha_noop_supported,
|
.dma_supported = alpha_noop_supported,
|
||||||
.set_dma_mask = alpha_noop_set_mask,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dma_map_ops *dma_ops = &alpha_noop_ops;
|
struct dma_map_ops *dma_ops = &alpha_noop_ops;
|
||||||
|
|
|
@ -939,16 +939,6 @@ static int alpha_pci_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
||||||
return dma_addr == 0;
|
return dma_addr == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int alpha_pci_set_mask(struct device *dev, u64 mask)
|
|
||||||
{
|
|
||||||
if (!dev->dma_mask ||
|
|
||||||
!pci_dma_supported(alpha_gendev_to_pci(dev), mask))
|
|
||||||
return -EIO;
|
|
||||||
|
|
||||||
*dev->dma_mask = mask;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct dma_map_ops alpha_pci_ops = {
|
struct dma_map_ops alpha_pci_ops = {
|
||||||
.alloc = alpha_pci_alloc_coherent,
|
.alloc = alpha_pci_alloc_coherent,
|
||||||
.free = alpha_pci_free_coherent,
|
.free = alpha_pci_free_coherent,
|
||||||
|
@ -958,7 +948,6 @@ struct dma_map_ops alpha_pci_ops = {
|
||||||
.unmap_sg = alpha_pci_unmap_sg,
|
.unmap_sg = alpha_pci_unmap_sg,
|
||||||
.mapping_error = alpha_pci_mapping_error,
|
.mapping_error = alpha_pci_mapping_error,
|
||||||
.dma_supported = alpha_pci_supported,
|
.dma_supported = alpha_pci_supported,
|
||||||
.set_dma_mask = alpha_pci_set_mask,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dma_map_ops *dma_ops = &alpha_pci_ops;
|
struct dma_map_ops *dma_ops = &alpha_pci_ops;
|
||||||
|
|
|
@ -402,6 +402,8 @@ static void __init axs103_early_init(void)
|
||||||
unsigned int num_cores = (read_aux_reg(ARC_REG_MCIP_BCR) >> 16) & 0x3F;
|
unsigned int num_cores = (read_aux_reg(ARC_REG_MCIP_BCR) >> 16) & 0x3F;
|
||||||
if (num_cores > 2)
|
if (num_cores > 2)
|
||||||
arc_set_core_freq(50 * 1000000);
|
arc_set_core_freq(50 * 1000000);
|
||||||
|
else if (num_cores == 2)
|
||||||
|
arc_set_core_freq(75 * 1000000);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (arc_get_core_freq()/1000000) {
|
switch (arc_get_core_freq()/1000000) {
|
||||||
|
|
|
@ -2020,6 +2020,7 @@ config KEXEC
|
||||||
bool "Kexec system call (EXPERIMENTAL)"
|
bool "Kexec system call (EXPERIMENTAL)"
|
||||||
depends on (!SMP || PM_SLEEP_SMP)
|
depends on (!SMP || PM_SLEEP_SMP)
|
||||||
depends on !CPU_V7M
|
depends on !CPU_V7M
|
||||||
|
select KEXEC_CORE
|
||||||
help
|
help
|
||||||
kexec is a system call that implements the ability to shutdown your
|
kexec is a system call that implements the ability to shutdown your
|
||||||
current kernel, and to start another kernel. It is like a reboot
|
current kernel, and to start another kernel. It is like a reboot
|
||||||
|
|
|
@ -57,5 +57,5 @@ extern char * strstr(const char * s1, const char *s2);
|
||||||
|
|
||||||
int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
|
int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
|
||||||
{
|
{
|
||||||
return decompress(input, len, NULL, NULL, output, NULL, error);
|
return __decompress(input, len, NULL, NULL, output, 0, NULL, error);
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,6 +358,8 @@
|
||||||
interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
|
interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
|
||||||
GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
|
GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
ti,hwmods = "rtc";
|
ti,hwmods = "rtc";
|
||||||
|
clocks = <&clk_32768_ck>;
|
||||||
|
clock-names = "int-clk";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -112,6 +112,13 @@
|
||||||
clock-frequency = <12000000>;
|
clock-frequency = <12000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* fixed 32k external oscillator clock */
|
||||||
|
clk_32k_rtc: clk_32k_rtc {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-frequency = <32768>;
|
||||||
|
};
|
||||||
|
|
||||||
sound0: sound@0 {
|
sound0: sound@0 {
|
||||||
compatible = "simple-audio-card";
|
compatible = "simple-audio-card";
|
||||||
simple-audio-card,name = "AM437x-GP-EVM";
|
simple-audio-card,name = "AM437x-GP-EVM";
|
||||||
|
@ -941,3 +948,9 @@
|
||||||
tx-num-evt = <32>;
|
tx-num-evt = <32>;
|
||||||
rx-num-evt = <32>;
|
rx-num-evt = <32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&rtc {
|
||||||
|
clocks = <&clk_32k_rtc>, <&clk_32768_ck>;
|
||||||
|
clock-names = "ext-clk", "int-clk";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
|
@ -110,6 +110,13 @@
|
||||||
gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* fixed 32k external oscillator clock */
|
||||||
|
clk_32k_rtc: clk_32k_rtc {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-frequency = <32768>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&am43xx_pinmux {
|
&am43xx_pinmux {
|
||||||
|
@ -394,6 +401,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&rtc {
|
&rtc {
|
||||||
|
clocks = <&clk_32k_rtc>, <&clk_32768_ck>;
|
||||||
|
clock-names = "ext-clk", "int-clk";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,13 @@
|
||||||
display0 = &lcd0;
|
display0 = &lcd0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* fixed 32k external oscillator clock */
|
||||||
|
clk_32k_rtc: clk_32k_rtc {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-frequency = <32768>;
|
||||||
|
};
|
||||||
|
|
||||||
backlight {
|
backlight {
|
||||||
compatible = "pwm-backlight";
|
compatible = "pwm-backlight";
|
||||||
pwms = <&ecap0 0 50000 PWM_POLARITY_INVERTED>;
|
pwms = <&ecap0 0 50000 PWM_POLARITY_INVERTED>;
|
||||||
|
@ -697,6 +704,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&rtc {
|
&rtc {
|
||||||
|
clocks = <&clk_32k_rtc>, <&clk_32768_ck>;
|
||||||
|
clock-names = "ext-clk", "int-clk";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -116,6 +116,21 @@
|
||||||
min-microvolt = <1100000>;
|
min-microvolt = <1100000>;
|
||||||
max-microvolt = <2700000>;
|
max-microvolt = <2700000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
cpu_thermal: cpu-thermal {
|
||||||
|
cooling-maps {
|
||||||
|
map0 {
|
||||||
|
/* Correspond to 500MHz at freq_table */
|
||||||
|
cooling-device = <&cpu0 5 5>;
|
||||||
|
};
|
||||||
|
map1 {
|
||||||
|
/* Correspond to 200MHz at freq_table */
|
||||||
|
cooling-device = <&cpu0 8 8>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&adc {
|
&adc {
|
||||||
|
@ -141,6 +156,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&exynos_usbphy {
|
&exynos_usbphy {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -107,6 +107,21 @@
|
||||||
min-microvolt = <1100000>;
|
min-microvolt = <1100000>;
|
||||||
max-microvolt = <2700000>;
|
max-microvolt = <2700000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
cpu_thermal: cpu-thermal {
|
||||||
|
cooling-maps {
|
||||||
|
map0 {
|
||||||
|
/* Corresponds to 500MHz */
|
||||||
|
cooling-device = <&cpu0 5 5>;
|
||||||
|
};
|
||||||
|
map1 {
|
||||||
|
/* Corresponds to 200MHz */
|
||||||
|
cooling-device = <&cpu0 8 8>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&adc {
|
&adc {
|
||||||
|
@ -132,6 +147,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&exynos_usbphy {
|
&exynos_usbphy {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -53,6 +53,22 @@
|
||||||
compatible = "arm,cortex-a7";
|
compatible = "arm,cortex-a7";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
clock-frequency = <1000000000>;
|
clock-frequency = <1000000000>;
|
||||||
|
clocks = <&cmu CLK_ARM_CLK>;
|
||||||
|
clock-names = "cpu";
|
||||||
|
#cooling-cells = <2>;
|
||||||
|
|
||||||
|
operating-points = <
|
||||||
|
1000000 1150000
|
||||||
|
900000 1112500
|
||||||
|
800000 1075000
|
||||||
|
700000 1037500
|
||||||
|
600000 1000000
|
||||||
|
500000 962500
|
||||||
|
400000 925000
|
||||||
|
300000 887500
|
||||||
|
200000 850000
|
||||||
|
100000 850000
|
||||||
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu1: cpu@1 {
|
cpu1: cpu@1 {
|
||||||
|
|
|
@ -702,6 +702,7 @@
|
||||||
clocks = <&clock CLK_JPEG>;
|
clocks = <&clock CLK_JPEG>;
|
||||||
clock-names = "jpeg";
|
clock-names = "jpeg";
|
||||||
power-domains = <&pd_cam>;
|
power-domains = <&pd_cam>;
|
||||||
|
iommus = <&sysmmu_jpeg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
hdmi: hdmi@12D00000 {
|
hdmi: hdmi@12D00000 {
|
||||||
|
|
|
@ -30,6 +30,9 @@
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0xA00>;
|
reg = <0xA00>;
|
||||||
|
clocks = <&clock CLK_ARM_CLK>;
|
||||||
|
clock-names = "cpu";
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
cooling-min-level = <13>;
|
cooling-min-level = <13>;
|
||||||
cooling-max-level = <7>;
|
cooling-max-level = <7>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
|
@ -39,6 +42,84 @@
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0xA01>;
|
reg = <0xA01>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu0_opp_table: opp_table0 {
|
||||||
|
compatible = "operating-points-v2";
|
||||||
|
opp-shared;
|
||||||
|
|
||||||
|
opp00 {
|
||||||
|
opp-hz = /bits/ 64 <200000000>;
|
||||||
|
opp-microvolt = <900000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp01 {
|
||||||
|
opp-hz = /bits/ 64 <300000000>;
|
||||||
|
opp-microvolt = <900000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp02 {
|
||||||
|
opp-hz = /bits/ 64 <400000000>;
|
||||||
|
opp-microvolt = <925000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp03 {
|
||||||
|
opp-hz = /bits/ 64 <500000000>;
|
||||||
|
opp-microvolt = <950000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp04 {
|
||||||
|
opp-hz = /bits/ 64 <600000000>;
|
||||||
|
opp-microvolt = <975000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp05 {
|
||||||
|
opp-hz = /bits/ 64 <700000000>;
|
||||||
|
opp-microvolt = <987500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp06 {
|
||||||
|
opp-hz = /bits/ 64 <800000000>;
|
||||||
|
opp-microvolt = <1000000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp07 {
|
||||||
|
opp-hz = /bits/ 64 <900000000>;
|
||||||
|
opp-microvolt = <1037500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp08 {
|
||||||
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
|
opp-microvolt = <1087500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp09 {
|
||||||
|
opp-hz = /bits/ 64 <1100000000>;
|
||||||
|
opp-microvolt = <1137500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp10 {
|
||||||
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
opp-microvolt = <1187500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp11 {
|
||||||
|
opp-hz = /bits/ 64 <1300000000>;
|
||||||
|
opp-microvolt = <1250000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp12 {
|
||||||
|
opp-hz = /bits/ 64 <1400000000>;
|
||||||
|
opp-microvolt = <1287500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp13 {
|
||||||
|
opp-hz = /bits/ 64 <1500000000>;
|
||||||
|
opp-microvolt = <1350000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
turbo-mode;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -107,6 +107,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
/* RSTN signal for eMMC */
|
/* RSTN signal for eMMC */
|
||||||
&sd1_cd {
|
&sd1_cd {
|
||||||
samsung,pin-pud = <0>;
|
samsung,pin-pud = <0>;
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include "exynos4412-odroid-common.dtsi"
|
#include "exynos4412-odroid-common.dtsi"
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "Hardkernel ODROID-U3 board based on Exynos4412";
|
model = "Hardkernel ODROID-U3 board based on Exynos4412";
|
||||||
|
@ -61,3 +62,10 @@
|
||||||
"Speakers", "SPKL",
|
"Speakers", "SPKL",
|
||||||
"Speakers", "SPKR";
|
"Speakers", "SPKR";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&spi_1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&spi1_bus>;
|
||||||
|
cs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
|
@ -78,6 +78,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&fimd {
|
&fimd {
|
||||||
pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>;
|
pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
|
|
@ -288,6 +288,10 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&csis_0 {
|
&csis_0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
vddcore-supply = <&ldo8_reg>;
|
vddcore-supply = <&ldo8_reg>;
|
||||||
|
|
|
@ -30,6 +30,9 @@
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0xA00>;
|
reg = <0xA00>;
|
||||||
|
clocks = <&clock CLK_ARM_CLK>;
|
||||||
|
clock-names = "cpu";
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
cooling-min-level = <13>;
|
cooling-min-level = <13>;
|
||||||
cooling-max-level = <7>;
|
cooling-max-level = <7>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
|
@ -39,18 +42,98 @@
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0xA01>;
|
reg = <0xA01>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@A02 {
|
cpu@A02 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0xA02>;
|
reg = <0xA02>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@A03 {
|
cpu@A03 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0xA03>;
|
reg = <0xA03>;
|
||||||
|
operating-points-v2 = <&cpu0_opp_table>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu0_opp_table: opp_table0 {
|
||||||
|
compatible = "operating-points-v2";
|
||||||
|
opp-shared;
|
||||||
|
|
||||||
|
opp00 {
|
||||||
|
opp-hz = /bits/ 64 <200000000>;
|
||||||
|
opp-microvolt = <900000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp01 {
|
||||||
|
opp-hz = /bits/ 64 <300000000>;
|
||||||
|
opp-microvolt = <900000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp02 {
|
||||||
|
opp-hz = /bits/ 64 <400000000>;
|
||||||
|
opp-microvolt = <925000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp03 {
|
||||||
|
opp-hz = /bits/ 64 <500000000>;
|
||||||
|
opp-microvolt = <950000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp04 {
|
||||||
|
opp-hz = /bits/ 64 <600000000>;
|
||||||
|
opp-microvolt = <975000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp05 {
|
||||||
|
opp-hz = /bits/ 64 <700000000>;
|
||||||
|
opp-microvolt = <987500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp06 {
|
||||||
|
opp-hz = /bits/ 64 <800000000>;
|
||||||
|
opp-microvolt = <1000000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp07 {
|
||||||
|
opp-hz = /bits/ 64 <900000000>;
|
||||||
|
opp-microvolt = <1037500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp08 {
|
||||||
|
opp-hz = /bits/ 64 <1000000000>;
|
||||||
|
opp-microvolt = <1087500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp09 {
|
||||||
|
opp-hz = /bits/ 64 <1100000000>;
|
||||||
|
opp-microvolt = <1137500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp10 {
|
||||||
|
opp-hz = /bits/ 64 <1200000000>;
|
||||||
|
opp-microvolt = <1187500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp11 {
|
||||||
|
opp-hz = /bits/ 64 <1300000000>;
|
||||||
|
opp-microvolt = <1250000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp12 {
|
||||||
|
opp-hz = /bits/ 64 <1400000000>;
|
||||||
|
opp-microvolt = <1287500>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
};
|
||||||
|
opp13 {
|
||||||
|
opp-hz = /bits/ 64 <1500000000>;
|
||||||
|
opp-microvolt = <1350000>;
|
||||||
|
clock-latency-ns = <200000>;
|
||||||
|
turbo-mode;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -117,6 +117,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&dp {
|
&dp {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
samsung,color-space = <0>;
|
samsung,color-space = <0>;
|
||||||
|
|
|
@ -74,6 +74,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&dp {
|
&dp {
|
||||||
samsung,color-space = <0>;
|
samsung,color-space = <0>;
|
||||||
samsung,dynamic-range = <0>;
|
samsung,dynamic-range = <0>;
|
||||||
|
|
|
@ -235,6 +235,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&dp {
|
&dp {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -688,6 +692,7 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
samsung,spi-src-clk = <0>;
|
samsung,spi-src-clk = <0>;
|
||||||
num-cs = <1>;
|
num-cs = <1>;
|
||||||
|
cs-gpios = <&gpa2 5 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&usbdrd_dwc3 {
|
&usbdrd_dwc3 {
|
||||||
|
|
|
@ -65,6 +65,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
cpu0-supply = <&buck2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
&dp {
|
&dp {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
|
|
@ -62,6 +62,28 @@
|
||||||
compatible = "arm,cortex-a15";
|
compatible = "arm,cortex-a15";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
clock-frequency = <1700000000>;
|
clock-frequency = <1700000000>;
|
||||||
|
clocks = <&clock CLK_ARM_CLK>;
|
||||||
|
clock-names = "cpu";
|
||||||
|
clock-latency = <140000>;
|
||||||
|
|
||||||
|
operating-points = <
|
||||||
|
1700000 1300000
|
||||||
|
1600000 1250000
|
||||||
|
1500000 1225000
|
||||||
|
1400000 1200000
|
||||||
|
1300000 1150000
|
||||||
|
1200000 1125000
|
||||||
|
1100000 1100000
|
||||||
|
1000000 1075000
|
||||||
|
900000 1050000
|
||||||
|
800000 1025000
|
||||||
|
700000 1012500
|
||||||
|
600000 1000000
|
||||||
|
500000 975000
|
||||||
|
400000 950000
|
||||||
|
300000 937500
|
||||||
|
200000 925000
|
||||||
|
>;
|
||||||
cooling-min-level = <15>;
|
cooling-min-level = <15>;
|
||||||
cooling-max-level = <9>;
|
cooling-max-level = <9>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
|
|
81
arch/arm/boot/dts/exynos5422-cpus.dtsi
Normal file
81
arch/arm/boot/dts/exynos5422-cpus.dtsi
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* SAMSUNG EXYNOS5422 SoC cpu device tree source
|
||||||
|
*
|
||||||
|
* Copyright (c) 2015 Samsung Electronics Co., Ltd.
|
||||||
|
* http://www.samsung.com
|
||||||
|
*
|
||||||
|
* The only difference between EXYNOS5422 and EXYNOS5800 is cpu ordering. The
|
||||||
|
* EXYNOS5422 is booting from Cortex-A7 core while the EXYNOS5800 is booting
|
||||||
|
* from Cortex-A15 core.
|
||||||
|
*
|
||||||
|
* EXYNOS5422 based board files can include this file to provide cpu ordering
|
||||||
|
* which could boot a cortex-a7 from cpu0.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
&cpu0 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a7";
|
||||||
|
reg = <0x100>;
|
||||||
|
clock-frequency = <1000000000>;
|
||||||
|
cci-control-port = <&cci_control0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu1 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a7";
|
||||||
|
reg = <0x101>;
|
||||||
|
clock-frequency = <1000000000>;
|
||||||
|
cci-control-port = <&cci_control0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu2 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a7";
|
||||||
|
reg = <0x102>;
|
||||||
|
clock-frequency = <1000000000>;
|
||||||
|
cci-control-port = <&cci_control0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu3 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a7";
|
||||||
|
reg = <0x103>;
|
||||||
|
clock-frequency = <1000000000>;
|
||||||
|
cci-control-port = <&cci_control0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu4 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a15";
|
||||||
|
reg = <0x0>;
|
||||||
|
clock-frequency = <1800000000>;
|
||||||
|
cci-control-port = <&cci_control1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu5 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a15";
|
||||||
|
reg = <0x1>;
|
||||||
|
clock-frequency = <1800000000>;
|
||||||
|
cci-control-port = <&cci_control1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu6 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a15";
|
||||||
|
reg = <0x2>;
|
||||||
|
clock-frequency = <1800000000>;
|
||||||
|
cci-control-port = <&cci_control1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&cpu7 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a15";
|
||||||
|
reg = <0x3>;
|
||||||
|
clock-frequency = <1800000000>;
|
||||||
|
cci-control-port = <&cci_control1>;
|
||||||
|
};
|
|
@ -15,6 +15,7 @@
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include <dt-bindings/sound/samsung-i2s.h>
|
#include <dt-bindings/sound/samsung-i2s.h>
|
||||||
#include "exynos5800.dtsi"
|
#include "exynos5800.dtsi"
|
||||||
|
#include "exynos5422-cpus.dtsi"
|
||||||
#include "exynos5422-cpu-thermal.dtsi"
|
#include "exynos5422-cpu-thermal.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
|
|
@ -4,6 +4,14 @@
|
||||||
model = "CompuLab CM-QS600";
|
model = "CompuLab CM-QS600";
|
||||||
compatible = "qcom,apq8064-cm-qs600", "qcom,apq8064";
|
compatible = "qcom,apq8064-cm-qs600", "qcom,apq8064";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &gsbi7_serial;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
pinctrl@800000 {
|
pinctrl@800000 {
|
||||||
i2c1_pins: i2c1 {
|
i2c1_pins: i2c1 {
|
||||||
|
|
|
@ -10,6 +10,10 @@
|
||||||
serial1 = &gsbi6_serial;
|
serial1 = &gsbi6_serial;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
pinctrl@800000 {
|
pinctrl@800000 {
|
||||||
card_detect: card_detect {
|
card_detect: card_detect {
|
||||||
|
|
|
@ -6,6 +6,14 @@
|
||||||
model = "Qualcomm APQ8074 Dragonboard";
|
model = "Qualcomm APQ8074 Dragonboard";
|
||||||
compatible = "qcom,apq8074-dragonboard", "qcom,apq8074";
|
compatible = "qcom,apq8074-dragonboard", "qcom,apq8074";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &blsp1_uart2;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
serial@f991e000 {
|
serial@f991e000 {
|
||||||
status = "ok";
|
status = "ok";
|
||||||
|
|
|
@ -5,6 +5,14 @@
|
||||||
model = "Qualcomm APQ8084/IFC6540";
|
model = "Qualcomm APQ8084/IFC6540";
|
||||||
compatible = "qcom,apq8084-ifc6540", "qcom,apq8084";
|
compatible = "qcom,apq8084-ifc6540", "qcom,apq8084";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &blsp2_uart2;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
serial@f995e000 {
|
serial@f995e000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -5,6 +5,14 @@
|
||||||
model = "Qualcomm APQ 8084-MTP";
|
model = "Qualcomm APQ 8084-MTP";
|
||||||
compatible = "qcom,apq8084-mtp", "qcom,apq8084";
|
compatible = "qcom,apq8084-mtp", "qcom,apq8084";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &blsp2_uart2;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
serial@f995e000 {
|
serial@f995e000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -234,7 +234,7 @@
|
||||||
interrupts = <0 208 0>;
|
interrupts = <0 208 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@f995e000 {
|
blsp2_uart2: serial@f995e000 {
|
||||||
compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
|
compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
|
||||||
reg = <0xf995e000 0x1000>;
|
reg = <0xf995e000 0x1000>;
|
||||||
interrupts = <0 114 0x0>;
|
interrupts = <0 114 0x0>;
|
||||||
|
|
|
@ -4,6 +4,14 @@
|
||||||
model = "Qualcomm IPQ8064/AP148";
|
model = "Qualcomm IPQ8064/AP148";
|
||||||
compatible = "qcom,ipq8064-ap148", "qcom,ipq8064";
|
compatible = "qcom,ipq8064-ap148", "qcom,ipq8064";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &gsbi4_serial;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
reserved-memory {
|
reserved-memory {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
|
@ -197,7 +197,7 @@
|
||||||
|
|
||||||
syscon-tcsr = <&tcsr>;
|
syscon-tcsr = <&tcsr>;
|
||||||
|
|
||||||
serial@16340000 {
|
gsbi4_serial: serial@16340000 {
|
||||||
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
||||||
reg = <0x16340000 0x1000>,
|
reg = <0x16340000 0x1000>,
|
||||||
<0x16300000 0x1000>;
|
<0x16300000 0x1000>;
|
||||||
|
|
|
@ -6,6 +6,14 @@
|
||||||
model = "Qualcomm MSM8660 SURF";
|
model = "Qualcomm MSM8660 SURF";
|
||||||
compatible = "qcom,msm8660-surf", "qcom,msm8660";
|
compatible = "qcom,msm8660-surf", "qcom,msm8660";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &gsbi12_serial;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
stdout-path = "serial0:115200n8";
|
||||||
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
gsbi@19c00000 {
|
gsbi@19c00000 {
|
||||||
status = "ok";
|
status = "ok";
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
|
|
||||||
syscon-tcsr = <&tcsr>;
|
syscon-tcsr = <&tcsr>;
|
||||||
|
|
||||||
serial@19c40000 {
|
gsbi12_serial: serial@19c40000 {
|
||||||
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
||||||
reg = <0x19c40000 0x1000>,
|
reg = <0x19c40000 0x1000>,
|
||||||
<0x19c00000 0x1000>;
|
<0x19c00000 0x1000>;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue