Merge tag 'v4.3-rc5' into timers/core, to pick up fixes before applying new changes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -43,7 +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
|
o openssl & libcrypto 1.0.0 # openssl version
|
||||||
|
|
||||||
|
|
||||||
Kernel compilation
|
Kernel compilation
|
||||||
|
|||||||
@@ -41,9 +41,13 @@ useless and be disabled, returning errors. So it is important to monitor
|
|||||||
the amount of free space and expand the <COW device> before it fills up.
|
the amount of free space and expand the <COW device> before it fills up.
|
||||||
|
|
||||||
<persistent?> is P (Persistent) or N (Not persistent - will not survive
|
<persistent?> is P (Persistent) or N (Not persistent - will not survive
|
||||||
after reboot).
|
after reboot). O (Overflow) can be added as a persistent store option
|
||||||
The difference is that for transient snapshots less metadata must be
|
to allow userspace to advertise its support for seeing "Overflow" in the
|
||||||
saved on disk - they can be kept in memory by the kernel.
|
snapshot status. So supported store types are "P", "PO" and "N".
|
||||||
|
|
||||||
|
The difference between persistent and transient is with transient
|
||||||
|
snapshots less metadata must be saved on disk - they can be kept in
|
||||||
|
memory by the kernel.
|
||||||
|
|
||||||
|
|
||||||
* snapshot-merge <origin> <COW device> <persistent> <chunksize>
|
* snapshot-merge <origin> <COW device> <persistent> <chunksize>
|
||||||
|
|||||||
@@ -57,6 +57,8 @@ used to route Message Signalled Interrupts (MSI) to the CPUs.
|
|||||||
These nodes must have the following properties:
|
These nodes must have the following properties:
|
||||||
- compatible : Should at least contain "arm,gic-v3-its".
|
- compatible : Should at least contain "arm,gic-v3-its".
|
||||||
- msi-controller : Boolean property. Identifies the node as an MSI controller
|
- msi-controller : Boolean property. Identifies the node as an MSI controller
|
||||||
|
- #msi-cells: Must be <1>. The single msi-cell is the DeviceID of the device
|
||||||
|
which will generate the MSI.
|
||||||
- reg: Specifies the base physical address and size of the ITS
|
- reg: Specifies the base physical address and size of the ITS
|
||||||
registers.
|
registers.
|
||||||
|
|
||||||
@@ -83,6 +85,7 @@ Examples:
|
|||||||
gic-its@2c200000 {
|
gic-its@2c200000 {
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c200000 0 0x200000>;
|
reg = <0x0 0x2c200000 0 0x200000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -107,12 +110,14 @@ Examples:
|
|||||||
gic-its@2c200000 {
|
gic-its@2c200000 {
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c200000 0 0x200000>;
|
reg = <0x0 0x2c200000 0 0x200000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gic-its@2c400000 {
|
gic-its@2c400000 {
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c400000 0 0x200000>;
|
reg = <0x0 0x2c400000 0 0x200000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -497,7 +497,7 @@ cpus {
|
|||||||
};
|
};
|
||||||
|
|
||||||
idle-states {
|
idle-states {
|
||||||
entry-method = "arm,psci";
|
entry-method = "psci";
|
||||||
|
|
||||||
CPU_RETENTION_0_0: cpu-retention-0-0 {
|
CPU_RETENTION_0_0: cpu-retention-0-0 {
|
||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
|
|||||||
@@ -16,7 +16,9 @@ properties, each containing a 'gpio-list':
|
|||||||
GPIO properties should be named "[<name>-]gpios", with <name> being the purpose
|
GPIO properties should be named "[<name>-]gpios", with <name> being the purpose
|
||||||
of this GPIO for the device. While a non-existent <name> is considered valid
|
of this GPIO for the device. While a non-existent <name> is considered valid
|
||||||
for compatibility reasons (resolving to the "gpios" property), it is not allowed
|
for compatibility reasons (resolving to the "gpios" property), it is not allowed
|
||||||
for new bindings.
|
for new bindings. Also, GPIO properties named "[<name>-]gpio" are valid and old
|
||||||
|
bindings use it, but are only supported for compatibility reasons and should not
|
||||||
|
be used for newer bindings since it has been deprecated.
|
||||||
|
|
||||||
GPIO properties can contain one or more GPIO phandles, but only in exceptional
|
GPIO properties can contain one or more GPIO phandles, but only in exceptional
|
||||||
cases should they contain more than one. If your device uses several GPIOs with
|
cases should they contain more than one. If your device uses several GPIOs with
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
* Bosch BMA180 triaxial acceleration sensor
|
* Bosch BMA180 / BMA250 triaxial acceleration sensor
|
||||||
|
|
||||||
http://omapworld.com/BMA180_111_1002839.pdf
|
http://omapworld.com/BMA180_111_1002839.pdf
|
||||||
|
http://ae-bst.resource.bosch.com/media/products/dokumente/bma250/bst-bma250-ds002-05.pdf
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|
||||||
- compatible : should be "bosch,bma180"
|
- compatible : should be "bosch,bma180" or "bosch,bma250"
|
||||||
- reg : the I2C address of the sensor
|
- reg : the I2C address of the sensor
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
@@ -13,6 +14,9 @@ Optional properties:
|
|||||||
|
|
||||||
- interrupts : interrupt mapping for GPIO IRQ, it should by configured with
|
- interrupts : interrupt mapping for GPIO IRQ, it should by configured with
|
||||||
flags IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING
|
flags IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING
|
||||||
|
For the bma250 the first interrupt listed must be the one
|
||||||
|
connected to the INT1 pin, the second (optional) interrupt
|
||||||
|
listed must be the one connected to the INT2 pin.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Example:
|
|||||||
/* Cypress Gen3 touchpad */
|
/* Cypress Gen3 touchpad */
|
||||||
touchpad@67 {
|
touchpad@67 {
|
||||||
compatible = "cypress,cyapa";
|
compatible = "cypress,cyapa";
|
||||||
reg = <0x24>;
|
reg = <0x67>;
|
||||||
interrupt-parent = <&gpio>;
|
interrupt-parent = <&gpio>;
|
||||||
interrupts = <2 IRQ_TYPE_EDGE_FALLING>; /* GPIO 2 */
|
interrupts = <2 IRQ_TYPE_EDGE_FALLING>; /* GPIO 2 */
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ The MISC interrupt controller is a secondary controller for lower priority
|
|||||||
interrupt.
|
interrupt.
|
||||||
|
|
||||||
Required Properties:
|
Required Properties:
|
||||||
- compatible: has to be "qca,<soctype>-cpu-intc", "qca,ar7100-misc-intc"
|
- compatible: has to be "qca,<soctype>-cpu-intc", "qca,ar7100-misc-intc" or
|
||||||
as fallback
|
"qca,<soctype>-cpu-intc", "qca,ar7240-misc-intc"
|
||||||
- reg: Base address and size of the controllers memory area
|
- reg: Base address and size of the controllers memory area
|
||||||
- interrupt-parent: phandle of the parent interrupt controller.
|
- interrupt-parent: phandle of the parent interrupt controller.
|
||||||
- interrupts: Interrupt specifier for the controllers interrupt.
|
- interrupts: Interrupt specifier for the controllers interrupt.
|
||||||
@@ -13,6 +13,9 @@ Required Properties:
|
|||||||
- #interrupt-cells : Specifies the number of cells needed to encode interrupt
|
- #interrupt-cells : Specifies the number of cells needed to encode interrupt
|
||||||
source, should be 1
|
source, should be 1
|
||||||
|
|
||||||
|
Compatible fallback depends on the SoC. Use ar7100 for ar71xx and ar913x,
|
||||||
|
use ar7240 for all other SoCs.
|
||||||
|
|
||||||
Please refer to interrupts.txt in this directory for details of the common
|
Please refer to interrupts.txt in this directory for details of the common
|
||||||
Interrupt Controllers bindings used by client devices.
|
Interrupt Controllers bindings used by client devices.
|
||||||
|
|
||||||
@@ -28,3 +31,16 @@ Example:
|
|||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Another example:
|
||||||
|
|
||||||
|
interrupt-controller@18060010 {
|
||||||
|
compatible = "qca,ar9331-misc-intc", qca,ar7240-misc-intc";
|
||||||
|
reg = <0x18060010 0x4>;
|
||||||
|
|
||||||
|
interrupt-parent = <&cpuintc>;
|
||||||
|
interrupts = <6>;
|
||||||
|
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
};
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ OHCI and EHCI controllers.
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC;
|
- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC;
|
||||||
"renesas,pci-r8a7791" for the R8A7791 SoC.
|
"renesas,pci-r8a7791" for the R8A7791 SoC;
|
||||||
|
"renesas,pci-r8a7794" for the R8A7794 SoC.
|
||||||
- reg: A list of physical regions to access the device: the first is
|
- reg: A list of physical regions to access the device: the first is
|
||||||
the operational registers for the OHCI/EHCI controllers and the
|
the operational registers for the OHCI/EHCI controllers and the
|
||||||
second is for the bridge configuration and control registers.
|
second is for the bridge configuration and control registers.
|
||||||
|
|||||||
@@ -2,7 +2,12 @@ PBIAS internal regulator for SD card dual voltage i/o pads on OMAP SoCs.
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible:
|
- compatible:
|
||||||
- "ti,pbias-omap" for OMAP2, OMAP3, OMAP4, OMAP5, DRA7.
|
- should be "ti,pbias-dra7" for DRA7
|
||||||
|
- should be "ti,pbias-omap2" for OMAP2
|
||||||
|
- should be "ti,pbias-omap3" for OMAP3
|
||||||
|
- should be "ti,pbias-omap4" for OMAP4
|
||||||
|
- should be "ti,pbias-omap5" for OMAP5
|
||||||
|
- "ti,pbias-omap" is deprecated
|
||||||
- reg: pbias register offset from syscon base and size of pbias register.
|
- reg: pbias register offset from syscon base and size of pbias register.
|
||||||
- syscon : phandle of the system control module
|
- syscon : phandle of the system control module
|
||||||
- regulator-name : should be
|
- regulator-name : should be
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ Optional properties, deprecated for soctype-specific bindings:
|
|||||||
- renesas,tx-fifo-size : Overrides the default tx fifo size given in words
|
- renesas,tx-fifo-size : Overrides the default tx fifo size given in words
|
||||||
(default is 64)
|
(default is 64)
|
||||||
- renesas,rx-fifo-size : Overrides the default rx fifo size given in words
|
- renesas,rx-fifo-size : Overrides the default rx fifo size given in words
|
||||||
(default is 64, or 256 on R-Car Gen2)
|
(default is 64)
|
||||||
|
|
||||||
Pinctrl properties might be needed, too. See
|
Pinctrl properties might be needed, too. See
|
||||||
Documentation/devicetree/bindings/pinctrl/renesas,*.
|
Documentation/devicetree/bindings/pinctrl/renesas,*.
|
||||||
|
|||||||
@@ -15,17 +15,18 @@ Required properties:
|
|||||||
- interrupts: Should contain spi interrupt
|
- interrupts: Should contain spi interrupt
|
||||||
|
|
||||||
- clocks: phandles to input clocks.
|
- clocks: phandles to input clocks.
|
||||||
The first should be <&topckgen CLK_TOP_SPI_SEL>.
|
The first should be one of the following. It's PLL.
|
||||||
The second should be one of the following.
|
|
||||||
- <&clk26m>: specify parent clock 26MHZ.
|
- <&clk26m>: specify parent clock 26MHZ.
|
||||||
- <&topckgen CLK_TOP_SYSPLL3_D2>: specify parent clock 109MHZ.
|
- <&topckgen CLK_TOP_SYSPLL3_D2>: specify parent clock 109MHZ.
|
||||||
It's the default one.
|
It's the default one.
|
||||||
- <&topckgen CLK_TOP_SYSPLL4_D2>: specify parent clock 78MHZ.
|
- <&topckgen CLK_TOP_SYSPLL4_D2>: specify parent clock 78MHZ.
|
||||||
- <&topckgen CLK_TOP_UNIVPLL2_D4>: specify parent clock 104MHZ.
|
- <&topckgen CLK_TOP_UNIVPLL2_D4>: specify parent clock 104MHZ.
|
||||||
- <&topckgen CLK_TOP_UNIVPLL1_D8>: specify parent clock 78MHZ.
|
- <&topckgen CLK_TOP_UNIVPLL1_D8>: specify parent clock 78MHZ.
|
||||||
|
The second should be <&topckgen CLK_TOP_SPI_SEL>. It's clock mux.
|
||||||
|
The third is <&pericfg CLK_PERI_SPI0>. It's clock gate.
|
||||||
|
|
||||||
- clock-names: shall be "spi-clk" for the controller clock, and
|
- clock-names: shall be "parent-clk" for the parent clock, "sel-clk" for the
|
||||||
"parent-clk" for the parent clock.
|
muxes clock, and "spi-clk" for the clock gate.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- mediatek,pad-select: specify which pins group(ck/mi/mo/cs) spi
|
- mediatek,pad-select: specify which pins group(ck/mi/mo/cs) spi
|
||||||
@@ -44,8 +45,11 @@ spi: spi@1100a000 {
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0 0x1100a000 0 0x1000>;
|
reg = <0 0x1100a000 0 0x1000>;
|
||||||
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_LOW>;
|
||||||
clocks = <&topckgen CLK_TOP_SPI_SEL>, <&topckgen CLK_TOP_SYSPLL3_D2>;
|
clocks = <&topckgen CLK_TOP_SYSPLL3_D2>,
|
||||||
clock-names = "spi-clk", "parent-clk";
|
<&topckgen CLK_TOP_SPI_SEL>,
|
||||||
|
<&pericfg CLK_PERI_SPI0>;
|
||||||
|
clock-names = "parent-clk", "sel-clk", "spi-clk";
|
||||||
|
|
||||||
mediatek,pad-select = <0>;
|
mediatek,pad-select = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -55,19 +55,11 @@ of heat dissipation). For example a fan's cooling states correspond to
|
|||||||
the different fan speeds possible. Cooling states are referred to by
|
the different fan speeds possible. Cooling states are referred to by
|
||||||
single unsigned integers, where larger numbers mean greater heat
|
single unsigned integers, where larger numbers mean greater heat
|
||||||
dissipation. The precise set of cooling states associated with a device
|
dissipation. The precise set of cooling states associated with a device
|
||||||
(as referred to be the cooling-min-state and cooling-max-state
|
(as referred to by the cooling-min-level and cooling-max-level
|
||||||
properties) should be defined in a particular device's binding.
|
properties) should be defined in a particular device's binding.
|
||||||
For more examples of cooling devices, refer to the example sections below.
|
For more examples of cooling devices, refer to the example sections below.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- cooling-min-state: An integer indicating the smallest
|
|
||||||
Type: unsigned cooling state accepted. Typically 0.
|
|
||||||
Size: one cell
|
|
||||||
|
|
||||||
- cooling-max-state: An integer indicating the largest
|
|
||||||
Type: unsigned cooling state accepted.
|
|
||||||
Size: one cell
|
|
||||||
|
|
||||||
- #cooling-cells: Used to provide cooling device specific information
|
- #cooling-cells: Used to provide cooling device specific information
|
||||||
Type: unsigned while referring to it. Must be at least 2, in order
|
Type: unsigned while referring to it. Must be at least 2, in order
|
||||||
Size: one cell to specify minimum and maximum cooling state used
|
Size: one cell to specify minimum and maximum cooling state used
|
||||||
@@ -77,6 +69,15 @@ Required properties:
|
|||||||
See Cooling device maps section below for more details
|
See Cooling device maps section below for more details
|
||||||
on how consumers refer to cooling devices.
|
on how consumers refer to cooling devices.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- cooling-min-level: An integer indicating the smallest
|
||||||
|
Type: unsigned cooling state accepted. Typically 0.
|
||||||
|
Size: one cell
|
||||||
|
|
||||||
|
- cooling-max-level: An integer indicating the largest
|
||||||
|
Type: unsigned cooling state accepted.
|
||||||
|
Size: one cell
|
||||||
|
|
||||||
* Trip points
|
* Trip points
|
||||||
|
|
||||||
The trip node is a node to describe a point in the temperature domain
|
The trip node is a node to describe a point in the temperature domain
|
||||||
@@ -225,8 +226,8 @@ cpus {
|
|||||||
396000 950000
|
396000 950000
|
||||||
198000 850000
|
198000 850000
|
||||||
>;
|
>;
|
||||||
cooling-min-state = <0>;
|
cooling-min-level = <0>;
|
||||||
cooling-max-state = <3>;
|
cooling-max-level = <3>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
};
|
};
|
||||||
...
|
...
|
||||||
@@ -240,8 +241,8 @@ cpus {
|
|||||||
*/
|
*/
|
||||||
fan0: fan@0x48 {
|
fan0: fan@0x48 {
|
||||||
...
|
...
|
||||||
cooling-min-state = <0>;
|
cooling-min-level = <0>;
|
||||||
cooling-max-state = <9>;
|
cooling-max-level = <9>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ Required properties:
|
|||||||
"lsi,zevio-usb"
|
"lsi,zevio-usb"
|
||||||
"qcom,ci-hdrc"
|
"qcom,ci-hdrc"
|
||||||
"chipidea,usb2"
|
"chipidea,usb2"
|
||||||
|
"xlnx,zynq-usb-2.20a"
|
||||||
- reg: base address and length of the registers
|
- reg: base address and length of the registers
|
||||||
- interrupts: interrupt for the USB controller
|
- interrupts: interrupt for the USB controller
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ Required properties:
|
|||||||
- "renesas,usbhs-r8a7790"
|
- "renesas,usbhs-r8a7790"
|
||||||
- "renesas,usbhs-r8a7791"
|
- "renesas,usbhs-r8a7791"
|
||||||
- "renesas,usbhs-r8a7794"
|
- "renesas,usbhs-r8a7794"
|
||||||
|
- "renesas,usbhs-r8a7795"
|
||||||
- reg: Base address and length of the register for the USBHS
|
- reg: Base address and length of the register for the USBHS
|
||||||
- interrupts: Interrupt specifier for the USBHS
|
- interrupts: Interrupt specifier for the USBHS
|
||||||
- clocks: A list of phandle + clock specifier pairs
|
- clocks: A list of phandle + clock specifier pairs
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ sitronix Sitronix Technology Corporation
|
|||||||
skyworks Skyworks Solutions, Inc.
|
skyworks Skyworks Solutions, Inc.
|
||||||
smsc Standard Microsystems Corporation
|
smsc Standard Microsystems Corporation
|
||||||
snps Synopsys, Inc.
|
snps Synopsys, Inc.
|
||||||
|
socionext Socionext Inc.
|
||||||
solidrun SolidRun
|
solidrun SolidRun
|
||||||
solomon Solomon Systech Limited
|
solomon Solomon Systech Limited
|
||||||
sony Sony Corporation
|
sony Sony Corporation
|
||||||
|
|||||||
@@ -361,7 +361,7 @@ For win8 devices with both T and C coordinates, the position mapping is
|
|||||||
ABS_MT_POSITION_X := T_X
|
ABS_MT_POSITION_X := T_X
|
||||||
ABS_MT_POSITION_Y := T_Y
|
ABS_MT_POSITION_Y := T_Y
|
||||||
ABS_MT_TOOL_X := C_X
|
ABS_MT_TOOL_X := C_X
|
||||||
ABS_MT_TOOL_X := C_Y
|
ABS_MT_TOOL_Y := C_Y
|
||||||
|
|
||||||
Unfortunately, there is not enough information to specify both the touching
|
Unfortunately, there is not enough information to specify both the touching
|
||||||
ellipse and the tool ellipse, so one has to resort to approximations. One
|
ellipse and the tool ellipse, so one has to resort to approximations. One
|
||||||
|
|||||||
96
Documentation/networking/vrf.txt
Normal file
96
Documentation/networking/vrf.txt
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
Virtual Routing and Forwarding (VRF)
|
||||||
|
====================================
|
||||||
|
The VRF device combined with ip rules provides the ability to create virtual
|
||||||
|
routing and forwarding domains (aka VRFs, VRF-lite to be specific) in the
|
||||||
|
Linux network stack. One use case is the multi-tenancy problem where each
|
||||||
|
tenant has their own unique routing tables and in the very least need
|
||||||
|
different default gateways.
|
||||||
|
|
||||||
|
Processes can be "VRF aware" by binding a socket to the VRF device. Packets
|
||||||
|
through the socket then use the routing table associated with the VRF
|
||||||
|
device. An important feature of the VRF device implementation is that it
|
||||||
|
impacts only Layer 3 and above so L2 tools (e.g., LLDP) are not affected
|
||||||
|
(ie., they do not need to be run in each VRF). The design also allows
|
||||||
|
the use of higher priority ip rules (Policy Based Routing, PBR) to take
|
||||||
|
precedence over the VRF device rules directing specific traffic as desired.
|
||||||
|
|
||||||
|
In addition, VRF devices allow VRFs to be nested within namespaces. For
|
||||||
|
example network namespaces provide separation of network interfaces at L1
|
||||||
|
(Layer 1 separation), VLANs on the interfaces within a namespace provide
|
||||||
|
L2 separation and then VRF devices provide L3 separation.
|
||||||
|
|
||||||
|
Design
|
||||||
|
------
|
||||||
|
A VRF device is created with an associated route table. Network interfaces
|
||||||
|
are then enslaved to a VRF device:
|
||||||
|
|
||||||
|
+-----------------------------+
|
||||||
|
| vrf-blue | ===> route table 10
|
||||||
|
+-----------------------------+
|
||||||
|
| | |
|
||||||
|
+------+ +------+ +-------------+
|
||||||
|
| eth1 | | eth2 | ... | bond1 |
|
||||||
|
+------+ +------+ +-------------+
|
||||||
|
| |
|
||||||
|
+------+ +------+
|
||||||
|
| eth8 | | eth9 |
|
||||||
|
+------+ +------+
|
||||||
|
|
||||||
|
Packets received on an enslaved device and are switched to the VRF device
|
||||||
|
using an rx_handler which gives the impression that packets flow through
|
||||||
|
the VRF device. Similarly on egress routing rules are used to send packets
|
||||||
|
to the VRF device driver before getting sent out the actual interface. This
|
||||||
|
allows tcpdump on a VRF device to capture all packets into and out of the
|
||||||
|
VRF as a whole.[1] Similiarly, netfilter [2] and tc rules can be applied
|
||||||
|
using the VRF device to specify rules that apply to the VRF domain as a whole.
|
||||||
|
|
||||||
|
[1] Packets in the forwarded state do not flow through the device, so those
|
||||||
|
packets are not seen by tcpdump. Will revisit this limitation in a
|
||||||
|
future release.
|
||||||
|
|
||||||
|
[2] Iptables on ingress is limited to NF_INET_PRE_ROUTING only with skb->dev
|
||||||
|
set to real ingress device and egress is limited to NF_INET_POST_ROUTING.
|
||||||
|
Will revisit this limitation in a future release.
|
||||||
|
|
||||||
|
|
||||||
|
Setup
|
||||||
|
-----
|
||||||
|
1. VRF device is created with an association to a FIB table.
|
||||||
|
e.g, ip link add vrf-blue type vrf table 10
|
||||||
|
ip link set dev vrf-blue up
|
||||||
|
|
||||||
|
2. Rules are added that send lookups to the associated FIB table when the
|
||||||
|
iif or oif is the VRF device. e.g.,
|
||||||
|
ip ru add oif vrf-blue table 10
|
||||||
|
ip ru add iif vrf-blue table 10
|
||||||
|
|
||||||
|
Set the default route for the table (and hence default route for the VRF).
|
||||||
|
e.g, ip route add table 10 prohibit default
|
||||||
|
|
||||||
|
3. Enslave L3 interfaces to a VRF device.
|
||||||
|
e.g, ip link set dev eth1 master vrf-blue
|
||||||
|
|
||||||
|
Local and connected routes for enslaved devices are automatically moved to
|
||||||
|
the table associated with VRF device. Any additional routes depending on
|
||||||
|
the enslaved device will need to be reinserted following the enslavement.
|
||||||
|
|
||||||
|
4. Additional VRF routes are added to associated table.
|
||||||
|
e.g., ip route add table 10 ...
|
||||||
|
|
||||||
|
|
||||||
|
Applications
|
||||||
|
------------
|
||||||
|
Applications that are to work within a VRF need to bind their socket to the
|
||||||
|
VRF device:
|
||||||
|
|
||||||
|
setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1);
|
||||||
|
|
||||||
|
or to specify the output device using cmsg and IP_PKTINFO.
|
||||||
|
|
||||||
|
|
||||||
|
Limitations
|
||||||
|
-----------
|
||||||
|
VRF device currently only works for IPv4. Support for IPv6 is under development.
|
||||||
|
|
||||||
|
Index of original ingress interface is not available via cmsg. Will address
|
||||||
|
soon.
|
||||||
@@ -979,20 +979,45 @@ every time right after the runtime_resume() callback has returned
|
|||||||
(alternatively, the runtime_suspend() callback will have to check if the
|
(alternatively, the runtime_suspend() callback will have to check if the
|
||||||
device should really be suspended and return -EAGAIN if that is not the case).
|
device should really be suspended and return -EAGAIN if that is not the case).
|
||||||
|
|
||||||
The runtime PM of PCI devices is disabled by default. It is also blocked by
|
The runtime PM of PCI devices is enabled by default by the PCI core. PCI
|
||||||
pci_pm_init() that runs the pm_runtime_forbid() helper function. If a PCI
|
device drivers do not need to enable it and should not attempt to do so.
|
||||||
driver implements the runtime PM callbacks and intends to use the runtime PM
|
However, it is blocked by pci_pm_init() that runs the pm_runtime_forbid()
|
||||||
framework provided by the PM core and the PCI subsystem, it should enable this
|
helper function. In addition to that, the runtime PM usage counter of
|
||||||
feature by executing the pm_runtime_enable() helper function. However, the
|
each PCI device is incremented by local_pci_probe() before executing the
|
||||||
driver should not call the pm_runtime_allow() helper function unblocking
|
probe callback provided by the device's driver.
|
||||||
the runtime PM of the device. Instead, it should allow user space or some
|
|
||||||
platform-specific code to do that (user space can do it via sysfs), although
|
If a PCI driver implements the runtime PM callbacks and intends to use the
|
||||||
once it has called pm_runtime_enable(), it must be prepared to handle the
|
runtime PM framework provided by the PM core and the PCI subsystem, it needs
|
||||||
|
to decrement the device's runtime PM usage counter in its probe callback
|
||||||
|
function. If it doesn't do that, the counter will always be different from
|
||||||
|
zero for the device and it will never be runtime-suspended. The simplest
|
||||||
|
way to do that is by calling pm_runtime_put_noidle(), but if the driver
|
||||||
|
wants to schedule an autosuspend right away, for example, it may call
|
||||||
|
pm_runtime_put_autosuspend() instead for this purpose. Generally, it
|
||||||
|
just needs to call a function that decrements the devices usage counter
|
||||||
|
from its probe routine to make runtime PM work for the device.
|
||||||
|
|
||||||
|
It is important to remember that the driver's runtime_suspend() callback
|
||||||
|
may be executed right after the usage counter has been decremented, because
|
||||||
|
user space may already have cuased the pm_runtime_allow() helper function
|
||||||
|
unblocking the runtime PM of the device to run via sysfs, so the driver must
|
||||||
|
be prepared to cope with that.
|
||||||
|
|
||||||
|
The driver itself should not call pm_runtime_allow(), though. Instead, it
|
||||||
|
should let user space or some platform-specific code do that (user space can
|
||||||
|
do it via sysfs as stated above), but it must be prepared to handle the
|
||||||
runtime PM of the device correctly as soon as pm_runtime_allow() is called
|
runtime PM of the device correctly as soon as pm_runtime_allow() is called
|
||||||
(which may happen at any time). [It also is possible that user space causes
|
(which may happen at any time, even before the driver is loaded).
|
||||||
pm_runtime_allow() to be called via sysfs before the driver is loaded, so in
|
|
||||||
fact the driver has to be prepared to handle the runtime PM of the device as
|
When the driver's remove callback runs, it has to balance the decrementation
|
||||||
soon as it calls pm_runtime_enable().]
|
of the device's runtime PM usage counter at the probe time. For this reason,
|
||||||
|
if it has decremented the counter in its probe callback, it must run
|
||||||
|
pm_runtime_get_noresume() in its remove callback. [Since the core carries
|
||||||
|
out a runtime resume of the device and bumps up the device's usage counter
|
||||||
|
before running the driver's remove callback, the runtime PM of the device
|
||||||
|
is effectively disabled for the duration of the remove execution and all
|
||||||
|
runtime PM helper functions incrementing the device's usage counter are
|
||||||
|
then effectively equivalent to pm_runtime_get_noresume().]
|
||||||
|
|
||||||
The runtime PM framework works by processing requests to suspend or resume
|
The runtime PM framework works by processing requests to suspend or resume
|
||||||
devices, or to check if they are idle (in which cases it is reasonable to
|
devices, or to check if they are idle (in which cases it is reasonable to
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
|
#define __SANE_USERSPACE_TYPES__ /* For PPC64, to get LL64 types */
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|||||||
@@ -54,13 +54,15 @@ default_qdisc
|
|||||||
--------------
|
--------------
|
||||||
|
|
||||||
The default queuing discipline to use for network devices. This allows
|
The default queuing discipline to use for network devices. This allows
|
||||||
overriding the default queue discipline of pfifo_fast with an
|
overriding the default of pfifo_fast with an alternative. Since the default
|
||||||
alternative. Since the default queuing discipline is created with the
|
queuing discipline is created without additional parameters so is best suited
|
||||||
no additional parameters so is best suited to queuing disciplines that
|
to queuing disciplines that work well without configuration like stochastic
|
||||||
work well without configuration like stochastic fair queue (sfq),
|
fair queue (sfq), CoDel (codel) or fair queue CoDel (fq_codel). Don't use
|
||||||
CoDel (codel) or fair queue CoDel (fq_codel). Don't use queuing disciplines
|
queuing disciplines like Hierarchical Token Bucket or Deficit Round Robin
|
||||||
like Hierarchical Token Bucket or Deficit Round Robin which require setting
|
which require setting up classes and bandwidths. Note that physical multiqueue
|
||||||
up classes and bandwidths.
|
interfaces still use mq as root qdisc, which in turn uses this default for its
|
||||||
|
leaves. Virtual devices (like e.g. lo or veth) ignore this setting and instead
|
||||||
|
default to noqueue.
|
||||||
Default: pfifo_fast
|
Default: pfifo_fast
|
||||||
|
|
||||||
busy_read
|
busy_read
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Power allocator governor tunables
|
|||||||
Trip points
|
Trip points
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
The governor requires the following two passive trip points:
|
The governor works optimally with the following two passive trip points:
|
||||||
|
|
||||||
1. "switch on" trip point: temperature above which the governor
|
1. "switch on" trip point: temperature above which the governor
|
||||||
control loop starts operating. This is the first passive trip
|
control loop starts operating. This is the first passive trip
|
||||||
|
|||||||
54
MAINTAINERS
54
MAINTAINERS
@@ -615,9 +615,8 @@ F: Documentation/hwmon/fam15h_power
|
|||||||
F: drivers/hwmon/fam15h_power.c
|
F: drivers/hwmon/fam15h_power.c
|
||||||
|
|
||||||
AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
|
AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
|
||||||
M: Thomas Dahlmann <dahlmann.thomas@arcor.de>
|
|
||||||
L: linux-geode@lists.infradead.org (moderated for non-subscribers)
|
L: linux-geode@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Orphan
|
||||||
F: drivers/usb/gadget/udc/amd5536udc.*
|
F: drivers/usb/gadget/udc/amd5536udc.*
|
||||||
|
|
||||||
AMD GEODE PROCESSOR/CHIPSET SUPPORT
|
AMD GEODE PROCESSOR/CHIPSET SUPPORT
|
||||||
@@ -808,6 +807,13 @@ S: Maintained
|
|||||||
F: drivers/video/fbdev/arcfb.c
|
F: drivers/video/fbdev/arcfb.c
|
||||||
F: drivers/video/fbdev/core/fb_defio.c
|
F: drivers/video/fbdev/core/fb_defio.c
|
||||||
|
|
||||||
|
ARCNET NETWORK LAYER
|
||||||
|
M: Michael Grzeschik <m.grzeschik@pengutronix.de>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/net/arcnet/
|
||||||
|
F: include/uapi/linux/if_arcnet.h
|
||||||
|
|
||||||
ARM MFM AND FLOPPY DRIVERS
|
ARM MFM AND FLOPPY DRIVERS
|
||||||
M: Ian Molton <spyro@f2s.com>
|
M: Ian Molton <spyro@f2s.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -3394,7 +3400,6 @@ F: drivers/staging/dgnc/
|
|||||||
|
|
||||||
DIGI EPCA PCI PRODUCTS
|
DIGI EPCA PCI PRODUCTS
|
||||||
M: Lidza Louina <lidza.louina@gmail.com>
|
M: Lidza Louina <lidza.louina@gmail.com>
|
||||||
M: Mark Hounschell <markh@compro.net>
|
|
||||||
M: Daeseok Youn <daeseok.youn@gmail.com>
|
M: Daeseok Youn <daeseok.youn@gmail.com>
|
||||||
L: driverdev-devel@linuxdriverproject.org
|
L: driverdev-devel@linuxdriverproject.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -3998,7 +4003,7 @@ S: Maintained
|
|||||||
F: sound/usb/misc/ua101.c
|
F: sound/usb/misc/ua101.c
|
||||||
|
|
||||||
EXTENSIBLE FIRMWARE INTERFACE (EFI)
|
EXTENSIBLE FIRMWARE INTERFACE (EFI)
|
||||||
M: Matt Fleming <matt.fleming@intel.com>
|
M: Matt Fleming <matt@codeblueprint.co.uk>
|
||||||
L: linux-efi@vger.kernel.org
|
L: linux-efi@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -4013,7 +4018,7 @@ F: include/linux/efi*.h
|
|||||||
EFI VARIABLE FILESYSTEM
|
EFI VARIABLE FILESYSTEM
|
||||||
M: Matthew Garrett <matthew.garrett@nebula.com>
|
M: Matthew Garrett <matthew.garrett@nebula.com>
|
||||||
M: Jeremy Kerr <jk@ozlabs.org>
|
M: Jeremy Kerr <jk@ozlabs.org>
|
||||||
M: Matt Fleming <matt.fleming@intel.com>
|
M: Matt Fleming <matt@codeblueprint.co.uk>
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi.git
|
||||||
L: linux-efi@vger.kernel.org
|
L: linux-efi@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -5952,7 +5957,7 @@ F: virt/kvm/
|
|||||||
KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V
|
KERNEL VIRTUAL MACHINE (KVM) FOR AMD-V
|
||||||
M: Joerg Roedel <joro@8bytes.org>
|
M: Joerg Roedel <joro@8bytes.org>
|
||||||
L: kvm@vger.kernel.org
|
L: kvm@vger.kernel.org
|
||||||
W: http://kvm.qumranet.com
|
W: http://www.linux-kvm.org/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/x86/include/asm/svm.h
|
F: arch/x86/include/asm/svm.h
|
||||||
F: arch/x86/kvm/svm.c
|
F: arch/x86/kvm/svm.c
|
||||||
@@ -5960,7 +5965,7 @@ F: arch/x86/kvm/svm.c
|
|||||||
KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
|
KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
|
||||||
M: Alexander Graf <agraf@suse.com>
|
M: Alexander Graf <agraf@suse.com>
|
||||||
L: kvm-ppc@vger.kernel.org
|
L: kvm-ppc@vger.kernel.org
|
||||||
W: http://kvm.qumranet.com
|
W: http://www.linux-kvm.org/
|
||||||
T: git git://github.com/agraf/linux-2.6.git
|
T: git git://github.com/agraf/linux-2.6.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/powerpc/include/asm/kvm*
|
F: arch/powerpc/include/asm/kvm*
|
||||||
@@ -8500,7 +8505,6 @@ F: Documentation/networking/LICENSE.qla3xxx
|
|||||||
F: drivers/net/ethernet/qlogic/qla3xxx.*
|
F: drivers/net/ethernet/qlogic/qla3xxx.*
|
||||||
|
|
||||||
QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
|
QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
|
||||||
M: Shahed Shaikh <shahed.shaikh@qlogic.com>
|
|
||||||
M: Dept-GELinuxNICDev@qlogic.com
|
M: Dept-GELinuxNICDev@qlogic.com
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@@ -9904,13 +9908,12 @@ F: drivers/staging/media/lirc/
|
|||||||
STAGING - LUSTRE PARALLEL FILESYSTEM
|
STAGING - LUSTRE PARALLEL FILESYSTEM
|
||||||
M: Oleg Drokin <oleg.drokin@intel.com>
|
M: Oleg Drokin <oleg.drokin@intel.com>
|
||||||
M: Andreas Dilger <andreas.dilger@intel.com>
|
M: Andreas Dilger <andreas.dilger@intel.com>
|
||||||
L: HPDD-discuss@lists.01.org (moderated for non-subscribers)
|
L: lustre-devel@lists.lustre.org (moderated for non-subscribers)
|
||||||
W: http://lustre.opensfs.org/
|
W: http://wiki.lustre.org/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/staging/lustre
|
F: drivers/staging/lustre
|
||||||
|
|
||||||
STAGING - NVIDIA COMPLIANT EMBEDDED CONTROLLER INTERFACE (nvec)
|
STAGING - NVIDIA COMPLIANT EMBEDDED CONTROLLER INTERFACE (nvec)
|
||||||
M: Julian Andres Klode <jak@jak-linux.org>
|
|
||||||
M: Marc Dietrich <marvin24@gmx.de>
|
M: Marc Dietrich <marvin24@gmx.de>
|
||||||
L: ac100@lists.launchpad.net (moderated for non-subscribers)
|
L: ac100@lists.launchpad.net (moderated for non-subscribers)
|
||||||
L: linux-tegra@vger.kernel.org
|
L: linux-tegra@vger.kernel.org
|
||||||
@@ -10338,6 +10341,16 @@ F: include/uapi/linux/thermal.h
|
|||||||
F: include/linux/cpu_cooling.h
|
F: include/linux/cpu_cooling.h
|
||||||
F: Documentation/devicetree/bindings/thermal/
|
F: Documentation/devicetree/bindings/thermal/
|
||||||
|
|
||||||
|
THERMAL/CPU_COOLING
|
||||||
|
M: Amit Daniel Kachhap <amit.kachhap@gmail.com>
|
||||||
|
M: Viresh Kumar <viresh.kumar@linaro.org>
|
||||||
|
M: Javi Merino <javi.merino@arm.com>
|
||||||
|
L: linux-pm@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: Documentation/thermal/cpu-cooling-api.txt
|
||||||
|
F: drivers/thermal/cpu_cooling.c
|
||||||
|
F: include/linux/cpu_cooling.h
|
||||||
|
|
||||||
THINGM BLINK(1) USB RGB LED DRIVER
|
THINGM BLINK(1) USB RGB LED DRIVER
|
||||||
M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -11187,7 +11200,7 @@ F: drivers/vlynq/vlynq.c
|
|||||||
F: include/linux/vlynq.h
|
F: include/linux/vlynq.h
|
||||||
|
|
||||||
VME SUBSYSTEM
|
VME SUBSYSTEM
|
||||||
M: Martyn Welch <martyn.welch@ge.com>
|
M: Martyn Welch <martyn@welchs.me.uk>
|
||||||
M: Manohar Vanga <manohar.vanga@gmail.com>
|
M: Manohar Vanga <manohar.vanga@gmail.com>
|
||||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
L: devel@driverdev.osuosl.org
|
L: devel@driverdev.osuosl.org
|
||||||
@@ -11239,7 +11252,6 @@ VOLTAGE AND CURRENT REGULATOR FRAMEWORK
|
|||||||
M: Liam Girdwood <lgirdwood@gmail.com>
|
M: Liam Girdwood <lgirdwood@gmail.com>
|
||||||
M: Mark Brown <broonie@kernel.org>
|
M: Mark Brown <broonie@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
W: http://opensource.wolfsonmicro.com/node/15
|
|
||||||
W: http://www.slimlogic.co.uk/?p=48
|
W: http://www.slimlogic.co.uk/?p=48
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
|
||||||
S: Supported
|
S: Supported
|
||||||
@@ -11253,6 +11265,7 @@ L: netdev@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/vrf.c
|
F: drivers/net/vrf.c
|
||||||
F: include/net/vrf.h
|
F: include/net/vrf.h
|
||||||
|
F: Documentation/networking/vrf.txt
|
||||||
|
|
||||||
VT1211 HARDWARE MONITOR DRIVER
|
VT1211 HARDWARE MONITOR DRIVER
|
||||||
M: Juerg Haefliger <juergh@gmail.com>
|
M: Juerg Haefliger <juergh@gmail.com>
|
||||||
@@ -11364,21 +11377,10 @@ W: http://oops.ghostprotocols.net:81/blog
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/wireless/wl3501*
|
F: drivers/net/wireless/wl3501*
|
||||||
|
|
||||||
WM97XX TOUCHSCREEN DRIVERS
|
|
||||||
M: Mark Brown <broonie@kernel.org>
|
|
||||||
M: Liam Girdwood <lrg@slimlogic.co.uk>
|
|
||||||
L: linux-input@vger.kernel.org
|
|
||||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-touch
|
|
||||||
W: http://opensource.wolfsonmicro.com/node/7
|
|
||||||
S: Supported
|
|
||||||
F: drivers/input/touchscreen/*wm97*
|
|
||||||
F: include/linux/wm97xx.h
|
|
||||||
|
|
||||||
WOLFSON MICROELECTRONICS DRIVERS
|
WOLFSON MICROELECTRONICS DRIVERS
|
||||||
L: patches@opensource.wolfsonmicro.com
|
L: patches@opensource.wolfsonmicro.com
|
||||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-asoc
|
T: git https://github.com/CirrusLogic/linux-drivers.git
|
||||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
|
W: https://github.com/CirrusLogic/linux-drivers/wiki
|
||||||
W: http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices
|
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/hwmon/wm83??
|
F: Documentation/hwmon/wm83??
|
||||||
F: arch/arm/mach-s3c64xx/mach-crag6410*
|
F: arch/arm/mach-s3c64xx/mach-crag6410*
|
||||||
|
|||||||
4
Makefile
4
Makefile
@@ -1,8 +1,8 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 3
|
PATCHLEVEL = 3
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc5
|
||||||
NAME = Hurr durr I'ma sheep
|
NAME = Blurry Fish Butt
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# To see a list of typical targets execute "make help"
|
||||||
|
|||||||
@@ -52,4 +52,6 @@ static inline unsigned long find_zero(unsigned long bits)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define zero_bytemask(mask) ((2ul << (find_zero(mask) * 8)) - 1)
|
||||||
|
|
||||||
#endif /* _ASM_WORD_AT_A_TIME_H */
|
#endif /* _ASM_WORD_AT_A_TIME_H */
|
||||||
|
|||||||
@@ -242,7 +242,12 @@ pci_restore_srm_config(void)
|
|||||||
|
|
||||||
void pcibios_fixup_bus(struct pci_bus *bus)
|
void pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev = bus->self;
|
||||||
|
|
||||||
|
if (pci_has_flag(PCI_PROBE_ONLY) && dev &&
|
||||||
|
(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
}
|
||||||
|
|
||||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||||
pdev_save_srm_config(dev);
|
pdev_save_srm_config(dev);
|
||||||
|
|||||||
@@ -48,4 +48,5 @@ generic-y += types.h
|
|||||||
generic-y += ucontext.h
|
generic-y += ucontext.h
|
||||||
generic-y += user.h
|
generic-y += user.h
|
||||||
generic-y += vga.h
|
generic-y += vga.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
generic-y += xor.h
|
generic-y += xor.h
|
||||||
|
|||||||
@@ -578,7 +578,7 @@ dtb-$(CONFIG_MACH_SUN4I) += \
|
|||||||
sun4i-a10-hackberry.dtb \
|
sun4i-a10-hackberry.dtb \
|
||||||
sun4i-a10-hyundai-a7hd.dtb \
|
sun4i-a10-hyundai-a7hd.dtb \
|
||||||
sun4i-a10-inet97fv2.dtb \
|
sun4i-a10-inet97fv2.dtb \
|
||||||
sun4i-a10-itead-iteaduino-plus.dts \
|
sun4i-a10-itead-iteaduino-plus.dtb \
|
||||||
sun4i-a10-jesurun-q5.dtb \
|
sun4i-a10-jesurun-q5.dtb \
|
||||||
sun4i-a10-marsboard.dtb \
|
sun4i-a10-marsboard.dtb \
|
||||||
sun4i-a10-mini-xplus.dtb \
|
sun4i-a10-mini-xplus.dtb \
|
||||||
|
|||||||
@@ -252,10 +252,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
vdd1_reg: regulator@2 {
|
vdd1_reg: regulator@2 {
|
||||||
/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
|
/* VDD_MPU voltage limits 0.95V - 1.325V with +/-4% tolerance */
|
||||||
regulator-name = "vdd_mpu";
|
regulator-name = "vdd_mpu";
|
||||||
regulator-min-microvolt = <912500>;
|
regulator-min-microvolt = <912500>;
|
||||||
regulator-max-microvolt = <1312500>;
|
regulator-max-microvolt = <1378000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -98,13 +98,6 @@
|
|||||||
pinctrl-0 = <&extcon_usb1_pins>;
|
pinctrl-0 = <&extcon_usb1_pins>;
|
||||||
};
|
};
|
||||||
|
|
||||||
extcon_usb2: extcon_usb2 {
|
|
||||||
compatible = "linux,extcon-usb-gpio";
|
|
||||||
id-gpio = <&gpio7 24 GPIO_ACTIVE_HIGH>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&extcon_usb2_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
hdmi0: connector {
|
hdmi0: connector {
|
||||||
compatible = "hdmi-connector";
|
compatible = "hdmi-connector";
|
||||||
label = "hdmi";
|
label = "hdmi";
|
||||||
@@ -326,12 +319,6 @@
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
extcon_usb2_pins: extcon_usb2_pins {
|
|
||||||
pinctrl-single,pins = <
|
|
||||||
0x3e8 (PIN_INPUT_PULLUP | MUX_MODE14) /* uart1_ctsn.gpio7_24 */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tpd12s015_pins: pinmux_tpd12s015_pins {
|
tpd12s015_pins: pinmux_tpd12s015_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x3b0 (PIN_OUTPUT | MUX_MODE14) /* gpio7_10 CT_CP_HPD */
|
0x3b0 (PIN_OUTPUT | MUX_MODE14) /* gpio7_10 CT_CP_HPD */
|
||||||
@@ -432,7 +419,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ldo3_reg: ldo3 {
|
ldo3_reg: ldo3 {
|
||||||
/* VDDA_1V8_PHY */
|
/* VDDA_1V8_PHYA */
|
||||||
regulator-name = "ldo3";
|
regulator-name = "ldo3";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
@@ -440,6 +427,15 @@
|
|||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ldo4_reg: ldo4 {
|
||||||
|
/* VDDA_1V8_PHYB */
|
||||||
|
regulator-name = "ldo4";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
ldo9_reg: ldo9 {
|
ldo9_reg: ldo9 {
|
||||||
/* VDD_RTC */
|
/* VDD_RTC */
|
||||||
regulator-name = "ldo9";
|
regulator-name = "ldo9";
|
||||||
@@ -495,6 +491,14 @@
|
|||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extcon_usb2: tps659038_usb {
|
||||||
|
compatible = "ti,palmas-usb-vid";
|
||||||
|
ti,enable-vbus-detection;
|
||||||
|
ti,enable-id-detection;
|
||||||
|
id-gpios = <&gpio7 24 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
tmp102: tmp102@48 {
|
tmp102: tmp102@48 {
|
||||||
@@ -517,7 +521,8 @@
|
|||||||
mcp_rtc: rtc@6f {
|
mcp_rtc: rtc@6f {
|
||||||
compatible = "microchip,mcp7941x";
|
compatible = "microchip,mcp7941x";
|
||||||
reg = <0x6f>;
|
reg = <0x6f>;
|
||||||
interrupts = <GIC_SPI 2 IRQ_TYPE_EDGE_RISING>; /* IRQ_SYS_1N */
|
interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
|
||||||
|
<&dra7_pmx_core 0x424>;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mcp79410_pins_default>;
|
pinctrl-0 = <&mcp79410_pins_default>;
|
||||||
@@ -579,7 +584,6 @@
|
|||||||
pinctrl-0 = <&mmc1_pins_default>;
|
pinctrl-0 = <&mmc1_pins_default>;
|
||||||
|
|
||||||
vmmc-supply = <&ldo1_reg>;
|
vmmc-supply = <&ldo1_reg>;
|
||||||
vmmc_aux-supply = <&vdd_3v3>;
|
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio6 27 0>; /* gpio 219 */
|
cd-gpios = <&gpio6 27 0>; /* gpio 219 */
|
||||||
};
|
};
|
||||||
@@ -623,6 +627,14 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&usb2 {
|
&usb2 {
|
||||||
|
/*
|
||||||
|
* Stand alone usage is peripheral only.
|
||||||
|
* However, with some resistor modifications
|
||||||
|
* this port can be used via expansion connectors
|
||||||
|
* as "host" or "dual-role". If so, provide
|
||||||
|
* the necessary dr_mode override in the expansion
|
||||||
|
* board's DT.
|
||||||
|
*/
|
||||||
dr_mode = "peripheral";
|
dr_mode = "peripheral";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -681,7 +693,7 @@
|
|||||||
|
|
||||||
&hdmi {
|
&hdmi {
|
||||||
status = "ok";
|
status = "ok";
|
||||||
vdda-supply = <&ldo3_reg>;
|
vdda-supply = <&ldo4_reg>;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&hdmi_pins>;
|
pinctrl-0 = <&hdmi_pins>;
|
||||||
|
|||||||
@@ -19,10 +19,10 @@
|
|||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy_id = <&davinci_mdio>, <0>;
|
phy_id = <&davinci_mdio>, <0>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
&cpsw_emac1 {
|
||||||
phy_id = <&davinci_mdio>, <1>;
|
phy_id = <&davinci_mdio>, <1>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#include "dm814x.dtsi"
|
#include "dm814x.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "DM8148 EVM";
|
model = "HP t410 Smart Zero Client";
|
||||||
compatible = "hp,t410", "ti,dm8148";
|
compatible = "hp,t410", "ti,dm8148";
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
@@ -19,10 +19,10 @@
|
|||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy_id = <&davinci_mdio>, <0>;
|
phy_id = <&davinci_mdio>, <0>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
&cpsw_emac1 {
|
||||||
phy_id = <&davinci_mdio>, <1>;
|
phy_id = <&davinci_mdio>, <1>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -181,9 +181,9 @@
|
|||||||
ti,hwmods = "timer3";
|
ti,hwmods = "timer3";
|
||||||
};
|
};
|
||||||
|
|
||||||
control: control@160000 {
|
control: control@140000 {
|
||||||
compatible = "ti,dm814-scm", "simple-bus";
|
compatible = "ti,dm814-scm", "simple-bus";
|
||||||
reg = <0x160000 0x16d000>;
|
reg = <0x140000 0x16d000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges = <0 0x160000 0x16d000>;
|
ranges = <0 0x160000 0x16d000>;
|
||||||
@@ -321,9 +321,9 @@
|
|||||||
mac-address = [ 00 00 00 00 00 00 ];
|
mac-address = [ 00 00 00 00 00 00 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
phy_sel: cpsw-phy-sel@0x48160650 {
|
phy_sel: cpsw-phy-sel@48140650 {
|
||||||
compatible = "ti,am3352-cpsw-phy-sel";
|
compatible = "ti,am3352-cpsw-phy-sel";
|
||||||
reg= <0x48160650 0x4>;
|
reg= <0x48140650 0x4>;
|
||||||
reg-names = "gmii-sel";
|
reg-names = "gmii-sel";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -120,9 +120,10 @@
|
|||||||
reg = <0x0 0x1400>;
|
reg = <0x0 0x1400>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x0 0x1400>;
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-dra7", "ti,pbias-omap";
|
||||||
reg = <0xe00 0x4>;
|
reg = <0xe00 0x4>;
|
||||||
syscon = <&scm_conf>;
|
syscon = <&scm_conf>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap5 {
|
pbias_mmc_reg: pbias_mmc_omap5 {
|
||||||
@@ -1417,7 +1418,7 @@
|
|||||||
ti,irqs-safe-map = <0>;
|
ti,irqs-safe-map = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mac: ethernet@4a100000 {
|
mac: ethernet@48484000 {
|
||||||
compatible = "ti,dra7-cpsw","ti,cpsw";
|
compatible = "ti,dra7-cpsw","ti,cpsw";
|
||||||
ti,hwmods = "gmac";
|
ti,hwmods = "gmac";
|
||||||
clocks = <&dpll_gmac_ck>, <&gmac_gmii_ref_clk_div>;
|
clocks = <&dpll_gmac_ck>, <&gmac_gmii_ref_clk_div>;
|
||||||
|
|||||||
@@ -98,6 +98,7 @@
|
|||||||
opp-hz = /bits/ 64 <800000000>;
|
opp-hz = /bits/ 64 <800000000>;
|
||||||
opp-microvolt = <1000000>;
|
opp-microvolt = <1000000>;
|
||||||
clock-latency-ns = <200000>;
|
clock-latency-ns = <200000>;
|
||||||
|
opp-suspend;
|
||||||
};
|
};
|
||||||
opp07 {
|
opp07 {
|
||||||
opp-hz = /bits/ 64 <900000000>;
|
opp-hz = /bits/ 64 <900000000>;
|
||||||
|
|||||||
@@ -197,6 +197,7 @@
|
|||||||
regulator-name = "P1.8V_LDO_OUT10";
|
regulator-name = "P1.8V_LDO_OUT10";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
ldo11_reg: LDO11 {
|
ldo11_reg: LDO11 {
|
||||||
|
|||||||
@@ -1117,7 +1117,7 @@
|
|||||||
interrupt-parent = <&combiner>;
|
interrupt-parent = <&combiner>;
|
||||||
interrupts = <3 0>;
|
interrupts = <3 0>;
|
||||||
clock-names = "sysmmu", "master";
|
clock-names = "sysmmu", "master";
|
||||||
clocks = <&clock CLK_SMMU_FIMD1M0>, <&clock CLK_FIMD1>;
|
clocks = <&clock CLK_SMMU_FIMD1M1>, <&clock CLK_FIMD1>;
|
||||||
power-domains = <&disp_pd>;
|
power-domains = <&disp_pd>;
|
||||||
#iommu-cells = <0>;
|
#iommu-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -472,7 +472,6 @@
|
|||||||
*/
|
*/
|
||||||
pinctrl-0 = <&pwm0_out &pwm1_out &pwm2_out &pwm3_out>;
|
pinctrl-0 = <&pwm0_out &pwm1_out &pwm2_out &pwm3_out>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
samsung,pwm-outputs = <0>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
pinctrl-0 = <&pinctrl_pmic>;
|
pinctrl-0 = <&pinctrl_pmic>;
|
||||||
reg = <0x08>;
|
reg = <0x08>;
|
||||||
interrupt-parent = <&gpio5>;
|
interrupt-parent = <&gpio5>;
|
||||||
interrupts = <23 0x8>;
|
interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
regulators {
|
regulators {
|
||||||
sw1_reg: sw1a {
|
sw1_reg: sw1a {
|
||||||
regulator-name = "SW1";
|
regulator-name = "SW1";
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
#include <dt-bindings/clock/imx5-clock.h>
|
#include <dt-bindings/clock/imx5-clock.h>
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
aliases {
|
aliases {
|
||||||
|
|||||||
@@ -35,7 +35,6 @@
|
|||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usbh1>;
|
|
||||||
regulator-name = "usbh1_vbus";
|
regulator-name = "usbh1_vbus";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
@@ -47,7 +46,6 @@
|
|||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usbotg>;
|
|
||||||
regulator-name = "usb_otg_vbus";
|
regulator-name = "usb_otg_vbus";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
|
|||||||
@@ -56,6 +56,7 @@
|
|||||||
reg = <0x270 0x240>;
|
reg = <0x270 0x240>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x270 0x240>;
|
||||||
|
|
||||||
scm_clocks: clocks {
|
scm_clocks: clocks {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-omap2", "ti,pbias-omap";
|
||||||
reg = <0x230 0x4>;
|
reg = <0x230 0x4>;
|
||||||
syscon = <&scm_conf>;
|
syscon = <&scm_conf>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap2430 {
|
pbias_mmc_reg: pbias_mmc_omap2430 {
|
||||||
|
|||||||
@@ -202,7 +202,7 @@
|
|||||||
|
|
||||||
tfp410_pins: pinmux_tfp410_pins {
|
tfp410_pins: pinmux_tfp410_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x194 (PIN_OUTPUT | MUX_MODE4) /* hdq_sio.gpio_170 */
|
0x196 (PIN_OUTPUT | MUX_MODE4) /* hdq_sio.gpio_170 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -78,12 +78,6 @@
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
smsc9221_pins: pinmux_smsc9221_pins {
|
|
||||||
pinctrl-single,pins = <
|
|
||||||
0x1a2 (PIN_INPUT | MUX_MODE4) /* mcspi1_cs2.gpio_176 */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c1_pins: pinmux_i2c1_pins {
|
i2c1_pins: pinmux_i2c1_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x18a (PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
|
0x18a (PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
|
||||||
|
|||||||
@@ -156,6 +156,12 @@
|
|||||||
OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */
|
OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
smsc9221_pins: pinmux_smsc9221_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT | MUX_MODE4) /* mcspi1_cs2.gpio_176 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&omap3_pmx_core2 {
|
&omap3_pmx_core2 {
|
||||||
|
|||||||
@@ -113,10 +113,22 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
scm_conf: scm_conf@270 {
|
scm_conf: scm_conf@270 {
|
||||||
compatible = "syscon";
|
compatible = "syscon", "simple-bus";
|
||||||
reg = <0x270 0x330>;
|
reg = <0x270 0x330>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x270 0x330>;
|
||||||
|
|
||||||
|
pbias_regulator: pbias_regulator {
|
||||||
|
compatible = "ti,pbias-omap3", "ti,pbias-omap";
|
||||||
|
reg = <0x2b0 0x4>;
|
||||||
|
syscon = <&scm_conf>;
|
||||||
|
pbias_mmc_reg: pbias_mmc_omap2430 {
|
||||||
|
regulator-name = "pbias_mmc_omap2430";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
scm_clocks: clocks {
|
scm_clocks: clocks {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -202,17 +214,6 @@
|
|||||||
dma-requests = <96>;
|
dma-requests = <96>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
|
||||||
compatible = "ti,pbias-omap";
|
|
||||||
reg = <0x2b0 0x4>;
|
|
||||||
syscon = <&scm_conf>;
|
|
||||||
pbias_mmc_reg: pbias_mmc_omap2430 {
|
|
||||||
regulator-name = "pbias_mmc_omap2430";
|
|
||||||
regulator-min-microvolt = <1800000>;
|
|
||||||
regulator-max-microvolt = <3000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio1: gpio@48310000 {
|
gpio1: gpio@48310000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
reg = <0x48310000 0x200>;
|
reg = <0x48310000 0x200>;
|
||||||
|
|||||||
@@ -196,9 +196,10 @@
|
|||||||
reg = <0x5a0 0x170>;
|
reg = <0x5a0 0x170>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x5a0 0x170>;
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-omap4", "ti,pbias-omap";
|
||||||
reg = <0x60 0x4>;
|
reg = <0x60 0x4>;
|
||||||
syscon = <&omap4_padconf_global>;
|
syscon = <&omap4_padconf_global>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap4 {
|
pbias_mmc_reg: pbias_mmc_omap4 {
|
||||||
|
|||||||
@@ -174,8 +174,8 @@
|
|||||||
|
|
||||||
i2c5_pins: pinmux_i2c5_pins {
|
i2c5_pins: pinmux_i2c5_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x184 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */
|
0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */
|
||||||
0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */
|
0x188 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -185,9 +185,10 @@
|
|||||||
reg = <0x5a0 0xec>;
|
reg = <0x5a0 0xec>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x5a0 0xec>;
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-omap5", "ti,pbias-omap";
|
||||||
reg = <0x60 0x4>;
|
reg = <0x60 0x4>;
|
||||||
syscon = <&omap5_padconf_global>;
|
syscon = <&omap5_padconf_global>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap5 {
|
pbias_mmc_reg: pbias_mmc_omap5 {
|
||||||
|
|||||||
@@ -1627,6 +1627,7 @@
|
|||||||
"mix.0", "mix.1",
|
"mix.0", "mix.1",
|
||||||
"dvc.0", "dvc.1",
|
"dvc.0", "dvc.1",
|
||||||
"clk_a", "clk_b", "clk_c", "clk_i";
|
"clk_a", "clk_b", "clk_c", "clk_i";
|
||||||
|
power-domains = <&cpg_clocks>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
|
|||||||
@@ -1677,6 +1677,7 @@
|
|||||||
"mix.0", "mix.1",
|
"mix.0", "mix.1",
|
||||||
"dvc.0", "dvc.1",
|
"dvc.0", "dvc.1",
|
||||||
"clk_a", "clk_b", "clk_c", "clk_i";
|
"clk_a", "clk_b", "clk_c", "clk_i";
|
||||||
|
power-domains = <&cpg_clocks>;
|
||||||
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
|
|||||||
@@ -158,6 +158,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&hdmi {
|
&hdmi {
|
||||||
|
ddc-i2c-bus = <&i2c5>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -103,48 +103,46 @@
|
|||||||
<&clk_s_d0_quadfs 0>,
|
<&clk_s_d0_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>;
|
<&clk_s_d2_quadfs 0>;
|
||||||
ranges;
|
};
|
||||||
|
|
||||||
sti-hdmi@8d04000 {
|
sti-hdmi@8d04000 {
|
||||||
compatible = "st,stih407-hdmi";
|
compatible = "st,stih407-hdmi";
|
||||||
reg = <0x8d04000 0x1000>;
|
reg = <0x8d04000 0x1000>;
|
||||||
reg-names = "hdmi-reg";
|
reg-names = "hdmi-reg";
|
||||||
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
||||||
interrupt-names = "irq";
|
interrupt-names = "irq";
|
||||||
clock-names = "pix",
|
clock-names = "pix",
|
||||||
"tmds",
|
"tmds",
|
||||||
"phy",
|
"phy",
|
||||||
"audio",
|
"audio",
|
||||||
"main_parent",
|
"main_parent",
|
||||||
"aux_parent";
|
"aux_parent";
|
||||||
|
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
||||||
<&clk_s_d0_flexgen CLK_PCM_0>,
|
<&clk_s_d0_flexgen CLK_PCM_0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 1>;
|
<&clk_s_d2_quadfs 1>;
|
||||||
|
|
||||||
hdmi,hpd-gpio = <&pio5 3>;
|
hdmi,hpd-gpio = <&pio5 3>;
|
||||||
reset-names = "hdmi";
|
reset-names = "hdmi";
|
||||||
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
||||||
ddc = <&hdmiddc>;
|
ddc = <&hdmiddc>;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
sti-hda@8d02000 {
|
||||||
|
compatible = "st,stih407-hda";
|
||||||
sti-hda@8d02000 {
|
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
||||||
compatible = "st,stih407-hda";
|
reg-names = "hda-reg", "video-dacs-ctrl";
|
||||||
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
clock-names = "pix",
|
||||||
reg-names = "hda-reg", "video-dacs-ctrl";
|
"hddac",
|
||||||
clock-names = "pix",
|
"main_parent",
|
||||||
"hddac",
|
"aux_parent";
|
||||||
"main_parent",
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
||||||
"aux_parent";
|
<&clk_s_d2_flexgen CLK_HDDAC>,
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_flexgen CLK_HDDAC>,
|
<&clk_s_d2_quadfs 1>;
|
||||||
<&clk_s_d2_quadfs 0>,
|
|
||||||
<&clk_s_d2_quadfs 1>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -178,48 +178,46 @@
|
|||||||
<&clk_s_d0_quadfs 0>,
|
<&clk_s_d0_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>;
|
<&clk_s_d2_quadfs 0>;
|
||||||
ranges;
|
};
|
||||||
|
|
||||||
sti-hdmi@8d04000 {
|
sti-hdmi@8d04000 {
|
||||||
compatible = "st,stih407-hdmi";
|
compatible = "st,stih407-hdmi";
|
||||||
reg = <0x8d04000 0x1000>;
|
reg = <0x8d04000 0x1000>;
|
||||||
reg-names = "hdmi-reg";
|
reg-names = "hdmi-reg";
|
||||||
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
||||||
interrupt-names = "irq";
|
interrupt-names = "irq";
|
||||||
clock-names = "pix",
|
clock-names = "pix",
|
||||||
"tmds",
|
"tmds",
|
||||||
"phy",
|
"phy",
|
||||||
"audio",
|
"audio",
|
||||||
"main_parent",
|
"main_parent",
|
||||||
"aux_parent";
|
"aux_parent";
|
||||||
|
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
||||||
<&clk_s_d0_flexgen CLK_PCM_0>,
|
<&clk_s_d0_flexgen CLK_PCM_0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 1>;
|
<&clk_s_d2_quadfs 1>;
|
||||||
|
|
||||||
hdmi,hpd-gpio = <&pio5 3>;
|
hdmi,hpd-gpio = <&pio5 3>;
|
||||||
reset-names = "hdmi";
|
reset-names = "hdmi";
|
||||||
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
||||||
ddc = <&hdmiddc>;
|
ddc = <&hdmiddc>;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
sti-hda@8d02000 {
|
||||||
|
compatible = "st,stih407-hda";
|
||||||
sti-hda@8d02000 {
|
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
||||||
compatible = "st,stih407-hda";
|
reg-names = "hda-reg", "video-dacs-ctrl";
|
||||||
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
clock-names = "pix",
|
||||||
reg-names = "hda-reg", "video-dacs-ctrl";
|
"hddac",
|
||||||
clock-names = "pix",
|
"main_parent",
|
||||||
"hddac",
|
"aux_parent";
|
||||||
"main_parent",
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
||||||
"aux_parent";
|
<&clk_s_d2_flexgen CLK_HDDAC>,
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_flexgen CLK_HDDAC>,
|
<&clk_s_d2_quadfs 1>;
|
||||||
<&clk_s_d2_quadfs 0>,
|
|
||||||
<&clk_s_d2_quadfs 1>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
720000 1200000
|
720000 1200000
|
||||||
528000 1100000
|
528000 1100000
|
||||||
312000 1000000
|
312000 1000000
|
||||||
144000 900000
|
144000 1000000
|
||||||
>;
|
>;
|
||||||
#cooling-cells = <2>;
|
#cooling-cells = <2>;
|
||||||
cooling-min-level = <0>;
|
cooling-min-level = <0>;
|
||||||
|
|||||||
@@ -240,7 +240,8 @@ CONFIG_SSI_PROTOCOL=m
|
|||||||
CONFIG_PINCTRL_SINGLE=y
|
CONFIG_PINCTRL_SINGLE=y
|
||||||
CONFIG_DEBUG_GPIO=y
|
CONFIG_DEBUG_GPIO=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
CONFIG_GPIO_PCF857X=m
|
CONFIG_GPIO_PCA953X=m
|
||||||
|
CONFIG_GPIO_PCF857X=y
|
||||||
CONFIG_GPIO_TWL4030=y
|
CONFIG_GPIO_TWL4030=y
|
||||||
CONFIG_GPIO_PALMAS=y
|
CONFIG_GPIO_PALMAS=y
|
||||||
CONFIG_W1=m
|
CONFIG_W1=m
|
||||||
@@ -350,6 +351,8 @@ CONFIG_USB_MUSB_HDRC=m
|
|||||||
CONFIG_USB_MUSB_OMAP2PLUS=m
|
CONFIG_USB_MUSB_OMAP2PLUS=m
|
||||||
CONFIG_USB_MUSB_AM35X=m
|
CONFIG_USB_MUSB_AM35X=m
|
||||||
CONFIG_USB_MUSB_DSPS=m
|
CONFIG_USB_MUSB_DSPS=m
|
||||||
|
CONFIG_USB_INVENTRA_DMA=y
|
||||||
|
CONFIG_USB_TI_CPPI41_DMA=y
|
||||||
CONFIG_USB_DWC3=m
|
CONFIG_USB_DWC3=m
|
||||||
CONFIG_USB_TEST=m
|
CONFIG_USB_TEST=m
|
||||||
CONFIG_AM335X_PHY_USB=y
|
CONFIG_AM335X_PHY_USB=y
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#define KVM_PRIVATE_MEM_SLOTS 4
|
#define KVM_PRIVATE_MEM_SLOTS 4
|
||||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||||
#define KVM_HAVE_ONE_REG
|
#define KVM_HAVE_ONE_REG
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 500000
|
||||||
|
|
||||||
#define KVM_VCPU_MAX_FEATURES 2
|
#define KVM_VCPU_MAX_FEATURES 2
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
* This may need to be greater than __NR_last_syscall+1 in order to
|
* This may need to be greater than __NR_last_syscall+1 in order to
|
||||||
* account for the padding in the syscall table
|
* account for the padding in the syscall table
|
||||||
*/
|
*/
|
||||||
#define __NR_syscalls (388)
|
#define __NR_syscalls (392)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* *NOTE*: This is a ghost syscall private to the kernel. Only the
|
* *NOTE*: This is a ghost syscall private to the kernel. Only the
|
||||||
|
|||||||
@@ -414,6 +414,8 @@
|
|||||||
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
|
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
|
||||||
#define __NR_bpf (__NR_SYSCALL_BASE+386)
|
#define __NR_bpf (__NR_SYSCALL_BASE+386)
|
||||||
#define __NR_execveat (__NR_SYSCALL_BASE+387)
|
#define __NR_execveat (__NR_SYSCALL_BASE+387)
|
||||||
|
#define __NR_userfaultfd (__NR_SYSCALL_BASE+388)
|
||||||
|
#define __NR_membarrier (__NR_SYSCALL_BASE+389)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following SWIs are ARM private.
|
* The following SWIs are ARM private.
|
||||||
|
|||||||
@@ -397,6 +397,8 @@
|
|||||||
/* 385 */ CALL(sys_memfd_create)
|
/* 385 */ CALL(sys_memfd_create)
|
||||||
CALL(sys_bpf)
|
CALL(sys_bpf)
|
||||||
CALL(sys_execveat)
|
CALL(sys_execveat)
|
||||||
|
CALL(sys_userfaultfd)
|
||||||
|
CALL(sys_membarrier)
|
||||||
#ifndef syscalls_counted
|
#ifndef syscalls_counted
|
||||||
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
||||||
#define syscalls_counted
|
#define syscalls_counted
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <asm/cputype.h>
|
#include <asm/cputype.h>
|
||||||
#include <asm/cp15.h>
|
#include <asm/cp15.h>
|
||||||
#include <asm/mcpm.h>
|
#include <asm/mcpm.h>
|
||||||
|
#include <asm/smp_plat.h>
|
||||||
|
|
||||||
#include "regs-pmu.h"
|
#include "regs-pmu.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
@@ -70,7 +71,31 @@ static int exynos_cpu_powerup(unsigned int cpu, unsigned int cluster)
|
|||||||
cluster >= EXYNOS5420_NR_CLUSTERS)
|
cluster >= EXYNOS5420_NR_CLUSTERS)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
exynos_cpu_power_up(cpunr);
|
if (!exynos_cpu_power_state(cpunr)) {
|
||||||
|
exynos_cpu_power_up(cpunr);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This assumes the cluster number of the big cores(Cortex A15)
|
||||||
|
* is 0 and the Little cores(Cortex A7) is 1.
|
||||||
|
* When the system was booted from the Little core,
|
||||||
|
* they should be reset during power up cpu.
|
||||||
|
*/
|
||||||
|
if (cluster &&
|
||||||
|
cluster == MPIDR_AFFINITY_LEVEL(cpu_logical_map(0), 1)) {
|
||||||
|
/*
|
||||||
|
* Before we reset the Little cores, we should wait
|
||||||
|
* the SPARE2 register is set to 1 because the init
|
||||||
|
* codes of the iROM will set the register after
|
||||||
|
* initialization.
|
||||||
|
*/
|
||||||
|
while (!pmu_raw_readl(S5P_PMU_SPARE2))
|
||||||
|
udelay(10);
|
||||||
|
|
||||||
|
pmu_raw_writel(EXYNOS5420_KFC_CORE_RESET(cpu),
|
||||||
|
EXYNOS_SWRESET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -513,6 +513,12 @@ static inline unsigned int exynos_pmu_cpunr(unsigned int mpidr)
|
|||||||
#define SPREAD_ENABLE 0xF
|
#define SPREAD_ENABLE 0xF
|
||||||
#define SPREAD_USE_STANDWFI 0xF
|
#define SPREAD_USE_STANDWFI 0xF
|
||||||
|
|
||||||
|
#define EXYNOS5420_KFC_CORE_RESET0 BIT(8)
|
||||||
|
#define EXYNOS5420_KFC_ETM_RESET0 BIT(20)
|
||||||
|
|
||||||
|
#define EXYNOS5420_KFC_CORE_RESET(_nr) \
|
||||||
|
((EXYNOS5420_KFC_CORE_RESET0 | EXYNOS5420_KFC_ETM_RESET0) << (_nr))
|
||||||
|
|
||||||
#define EXYNOS5420_BB_CON1 0x0784
|
#define EXYNOS5420_BB_CON1 0x0784
|
||||||
#define EXYNOS5420_BB_SEL_EN BIT(31)
|
#define EXYNOS5420_BB_SEL_EN BIT(31)
|
||||||
#define EXYNOS5420_BB_PMOS_EN BIT(7)
|
#define EXYNOS5420_BB_PMOS_EN BIT(7)
|
||||||
|
|||||||
@@ -44,10 +44,11 @@ config SOC_OMAP5
|
|||||||
select ARM_CPU_SUSPEND if PM
|
select ARM_CPU_SUSPEND if PM
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
select HAVE_ARM_SCU if SMP
|
select HAVE_ARM_SCU if SMP
|
||||||
select HAVE_ARM_TWD if SMP
|
|
||||||
select HAVE_ARM_ARCH_TIMER
|
select HAVE_ARM_ARCH_TIMER
|
||||||
select ARM_ERRATA_798181 if SMP
|
select ARM_ERRATA_798181 if SMP
|
||||||
|
select OMAP_INTERCONNECT
|
||||||
select OMAP_INTERCONNECT_BARRIER
|
select OMAP_INTERCONNECT_BARRIER
|
||||||
|
select PM_OPP if PM
|
||||||
|
|
||||||
config SOC_AM33XX
|
config SOC_AM33XX
|
||||||
bool "TI AM33XX"
|
bool "TI AM33XX"
|
||||||
@@ -70,10 +71,13 @@ config SOC_DRA7XX
|
|||||||
select ARCH_OMAP2PLUS
|
select ARCH_OMAP2PLUS
|
||||||
select ARM_CPU_SUSPEND if PM
|
select ARM_CPU_SUSPEND if PM
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
|
select HAVE_ARM_SCU if SMP
|
||||||
select HAVE_ARM_ARCH_TIMER
|
select HAVE_ARM_ARCH_TIMER
|
||||||
select IRQ_CROSSBAR
|
select IRQ_CROSSBAR
|
||||||
select ARM_ERRATA_798181 if SMP
|
select ARM_ERRATA_798181 if SMP
|
||||||
|
select OMAP_INTERCONNECT
|
||||||
select OMAP_INTERCONNECT_BARRIER
|
select OMAP_INTERCONNECT_BARRIER
|
||||||
|
select PM_OPP if PM
|
||||||
|
|
||||||
config ARCH_OMAP2PLUS
|
config ARCH_OMAP2PLUS
|
||||||
bool
|
bool
|
||||||
|
|||||||
@@ -20,13 +20,6 @@
|
|||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
|
|
||||||
#define intc_of_init NULL
|
|
||||||
#endif
|
|
||||||
#ifndef CONFIG_ARCH_OMAP4
|
|
||||||
#define gic_of_init NULL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const struct of_device_id omap_dt_match_table[] __initconst = {
|
static const struct of_device_id omap_dt_match_table[] __initconst = {
|
||||||
{ .compatible = "simple-bus", },
|
{ .compatible = "simple-bus", },
|
||||||
{ .compatible = "ti,omap-infra", },
|
{ .compatible = "ti,omap-infra", },
|
||||||
|
|||||||
@@ -653,8 +653,12 @@ void __init dra7xxx_check_revision(void)
|
|||||||
omap_revision = DRA752_REV_ES1_0;
|
omap_revision = DRA752_REV_ES1_0;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
default:
|
|
||||||
omap_revision = DRA752_REV_ES1_1;
|
omap_revision = DRA752_REV_ES1_1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
default:
|
||||||
|
omap_revision = DRA752_REV_ES2_0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -674,7 +678,7 @@ void __init dra7xxx_check_revision(void)
|
|||||||
/* Unknown default to latest silicon rev as default*/
|
/* Unknown default to latest silicon rev as default*/
|
||||||
pr_warn("%s: unknown idcode=0x%08x (hawkeye=0x%08x,rev=0x%x)\n",
|
pr_warn("%s: unknown idcode=0x%08x (hawkeye=0x%08x,rev=0x%x)\n",
|
||||||
__func__, idcode, hawkeye, rev);
|
__func__, idcode, hawkeye, rev);
|
||||||
omap_revision = DRA752_REV_ES1_1;
|
omap_revision = DRA752_REV_ES2_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(soc_name, "DRA%03x", omap_rev() >> 16);
|
sprintf(soc_name, "DRA%03x", omap_rev() >> 16);
|
||||||
|
|||||||
@@ -676,6 +676,7 @@ void __init am43xx_init_early(void)
|
|||||||
void __init am43xx_init_late(void)
|
void __init am43xx_init_late(void)
|
||||||
{
|
{
|
||||||
omap_common_late_init();
|
omap_common_late_init();
|
||||||
|
omap2_clk_enable_autoidle_all();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -901,7 +901,8 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
|
|||||||
if (od->hwmods[i]->flags & HWMOD_INIT_NO_IDLE)
|
if (od->hwmods[i]->flags & HWMOD_INIT_NO_IDLE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) {
|
if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER &&
|
||||||
|
od->_driver_status != BUS_NOTIFY_BIND_DRIVER) {
|
||||||
if (od->_state == OMAP_DEVICE_STATE_ENABLED) {
|
if (od->_state == OMAP_DEVICE_STATE_ENABLED) {
|
||||||
dev_warn(dev, "%s: enabled but no driver. Idling\n",
|
dev_warn(dev, "%s: enabled but no driver. Idling\n",
|
||||||
__func__);
|
__func__);
|
||||||
|
|||||||
@@ -103,7 +103,8 @@ static inline void enable_omap3630_toggle_l2_on_restore(void) { }
|
|||||||
#define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0)
|
#define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0)
|
||||||
#define PM_OMAP4_CPU_OSWR_DISABLE (1 << 1)
|
#define PM_OMAP4_CPU_OSWR_DISABLE (1 << 1)
|
||||||
|
|
||||||
#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4)
|
#if defined(CONFIG_PM) && (defined(CONFIG_ARCH_OMAP4) ||\
|
||||||
|
defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX))
|
||||||
extern u16 pm44xx_errata;
|
extern u16 pm44xx_errata;
|
||||||
#define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id))
|
#define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id))
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -469,6 +469,8 @@ IS_OMAP_TYPE(3430, 0x3430)
|
|||||||
#define DRA7XX_CLASS 0x07000000
|
#define DRA7XX_CLASS 0x07000000
|
||||||
#define DRA752_REV_ES1_0 (DRA7XX_CLASS | (0x52 << 16) | (0x10 << 8))
|
#define DRA752_REV_ES1_0 (DRA7XX_CLASS | (0x52 << 16) | (0x10 << 8))
|
||||||
#define DRA752_REV_ES1_1 (DRA7XX_CLASS | (0x52 << 16) | (0x11 << 8))
|
#define DRA752_REV_ES1_1 (DRA7XX_CLASS | (0x52 << 16) | (0x11 << 8))
|
||||||
|
#define DRA752_REV_ES2_0 (DRA7XX_CLASS | (0x52 << 16) | (0x20 << 8))
|
||||||
|
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
||||||
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
||||||
|
|
||||||
void omap2xxx_check_revision(void);
|
void omap2xxx_check_revision(void);
|
||||||
|
|||||||
@@ -297,12 +297,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
|
|||||||
if (IS_ERR(src))
|
if (IS_ERR(src))
|
||||||
return PTR_ERR(src);
|
return PTR_ERR(src);
|
||||||
|
|
||||||
r = clk_set_parent(timer->fclk, src);
|
WARN(clk_set_parent(timer->fclk, src) < 0,
|
||||||
if (r < 0) {
|
"Cannot set timer parent clock, no PLL clock driver?");
|
||||||
pr_warn("%s: %s cannot set source\n", __func__, oh->name);
|
|
||||||
clk_put(src);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
clk_put(src);
|
clk_put(src);
|
||||||
|
|
||||||
|
|||||||
@@ -300,7 +300,7 @@ static void __init omap3_vc_init_pmic_signaling(struct voltagedomain *voltdm)
|
|||||||
|
|
||||||
val = voltdm->read(OMAP3_PRM_POLCTRL_OFFSET);
|
val = voltdm->read(OMAP3_PRM_POLCTRL_OFFSET);
|
||||||
if (!(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL) ||
|
if (!(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL) ||
|
||||||
(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL)) {
|
(val & OMAP3430_PRM_POLCTRL_OFFMODE_POL)) {
|
||||||
val |= OMAP3430_PRM_POLCTRL_CLKREQ_POL;
|
val |= OMAP3430_PRM_POLCTRL_CLKREQ_POL;
|
||||||
val &= ~OMAP3430_PRM_POLCTRL_OFFMODE_POL;
|
val &= ~OMAP3430_PRM_POLCTRL_OFFMODE_POL;
|
||||||
pr_debug("PM: fixing sys_clkreq and sys_off_mode polarity to 0x%x\n",
|
pr_debug("PM: fixing sys_clkreq and sys_off_mode polarity to 0x%x\n",
|
||||||
|
|||||||
@@ -502,7 +502,7 @@ static void balloon3_irq_handler(struct irq_desc *desc)
|
|||||||
balloon3_irq_enabled;
|
balloon3_irq_enabled;
|
||||||
do {
|
do {
|
||||||
struct irq_data *d = irq_desc_get_irq_data(desc);
|
struct irq_data *d = irq_desc_get_irq_data(desc);
|
||||||
struct irq_chip *chip = irq_data_get_chip(d);
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
||||||
unsigned int irq;
|
unsigned int irq;
|
||||||
|
|
||||||
/* clear useless edge notification */
|
/* clear useless edge notification */
|
||||||
|
|||||||
@@ -43,6 +43,13 @@
|
|||||||
* 0xf6200000..0xf6201000
|
* 0xf6200000..0xf6201000
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DFI Bus for NAND, PXA3xx only
|
||||||
|
*/
|
||||||
|
#define NAND_PHYS 0x43100000
|
||||||
|
#define NAND_VIRT IOMEM(0xf6300000)
|
||||||
|
#define NAND_SIZE 0x00100000
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal Memory Controller (PXA27x and later)
|
* Internal Memory Controller (PXA27x and later)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -47,6 +47,13 @@ extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int));
|
|||||||
#define ISRAM_START 0x5c000000
|
#define ISRAM_START 0x5c000000
|
||||||
#define ISRAM_SIZE SZ_256K
|
#define ISRAM_SIZE SZ_256K
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NAND NFC: DFI bus arbitration subset
|
||||||
|
*/
|
||||||
|
#define NDCR (*(volatile u32 __iomem*)(NAND_VIRT + 0))
|
||||||
|
#define NDCR_ND_ARB_EN (1 << 12)
|
||||||
|
#define NDCR_ND_ARB_CNTL (1 << 19)
|
||||||
|
|
||||||
static void __iomem *sram;
|
static void __iomem *sram;
|
||||||
static unsigned long wakeup_src;
|
static unsigned long wakeup_src;
|
||||||
|
|
||||||
@@ -362,7 +369,12 @@ static struct map_desc pxa3xx_io_desc[] __initdata = {
|
|||||||
.pfn = __phys_to_pfn(PXA3XX_SMEMC_BASE),
|
.pfn = __phys_to_pfn(PXA3XX_SMEMC_BASE),
|
||||||
.length = SMEMC_SIZE,
|
.length = SMEMC_SIZE,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
}
|
}, {
|
||||||
|
.virtual = (unsigned long)NAND_VIRT,
|
||||||
|
.pfn = __phys_to_pfn(NAND_PHYS),
|
||||||
|
.length = NAND_SIZE,
|
||||||
|
.type = MT_DEVICE
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init pxa3xx_map_io(void)
|
void __init pxa3xx_map_io(void)
|
||||||
@@ -419,6 +431,13 @@ static int __init pxa3xx_init(void)
|
|||||||
*/
|
*/
|
||||||
ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S);
|
ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disable DFI bus arbitration, to prevent a system bus lock if
|
||||||
|
* somebody disables the NAND clock (unused clock) while this
|
||||||
|
* bit remains set.
|
||||||
|
*/
|
||||||
|
NDCR = (NDCR & ~NDCR_ND_ARB_EN) | NDCR_ND_ARB_CNTL;
|
||||||
|
|
||||||
if ((ret = pxa_init_dma(IRQ_DMA, 32)))
|
if ((ret = pxa_init_dma(IRQ_DMA, 32)))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|||||||
@@ -365,15 +365,21 @@ do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, struct pt_regs *r
|
|||||||
user:
|
user:
|
||||||
if (LDST_L_BIT(instr)) {
|
if (LDST_L_BIT(instr)) {
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
|
|
||||||
get16t_unaligned_check(val, addr);
|
get16t_unaligned_check(val, addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
|
||||||
/* signed half-word? */
|
/* signed half-word? */
|
||||||
if (instr & 0x40)
|
if (instr & 0x40)
|
||||||
val = (signed long)((signed short) val);
|
val = (signed long)((signed short) val);
|
||||||
|
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
} else
|
} else {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
put16t_unaligned_check(regs->uregs[rd], addr);
|
put16t_unaligned_check(regs->uregs[rd], addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
}
|
||||||
|
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
|
||||||
@@ -420,14 +426,21 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr,
|
|||||||
|
|
||||||
user:
|
user:
|
||||||
if (load) {
|
if (load) {
|
||||||
unsigned long val;
|
unsigned long val, val2;
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
|
|
||||||
get32t_unaligned_check(val, addr);
|
get32t_unaligned_check(val, addr);
|
||||||
|
get32t_unaligned_check(val2, addr + 4);
|
||||||
|
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
get32t_unaligned_check(val, addr + 4);
|
regs->uregs[rd2] = val2;
|
||||||
regs->uregs[rd2] = val;
|
|
||||||
} else {
|
} else {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
put32t_unaligned_check(regs->uregs[rd], addr);
|
put32t_unaligned_check(regs->uregs[rd], addr);
|
||||||
put32t_unaligned_check(regs->uregs[rd2], addr + 4);
|
put32t_unaligned_check(regs->uregs[rd2], addr + 4);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
@@ -458,10 +471,15 @@ do_alignment_ldrstr(unsigned long addr, unsigned long instr, struct pt_regs *reg
|
|||||||
trans:
|
trans:
|
||||||
if (LDST_L_BIT(instr)) {
|
if (LDST_L_BIT(instr)) {
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
get32t_unaligned_check(val, addr);
|
get32t_unaligned_check(val, addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
} else
|
} else {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
put32t_unaligned_check(regs->uregs[rd], addr);
|
put32t_unaligned_check(regs->uregs[rd], addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
}
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
|
||||||
fault:
|
fault:
|
||||||
@@ -531,6 +549,7 @@ do_alignment_ldmstm(unsigned long addr, unsigned long instr, struct pt_regs *reg
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (user_mode(regs)) {
|
if (user_mode(regs)) {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
||||||
regbits >>= 1, rd += 1)
|
regbits >>= 1, rd += 1)
|
||||||
if (regbits & 1) {
|
if (regbits & 1) {
|
||||||
@@ -542,6 +561,7 @@ do_alignment_ldmstm(unsigned long addr, unsigned long instr, struct pt_regs *reg
|
|||||||
put32t_unaligned_check(regs->uregs[rd], eaddr);
|
put32t_unaligned_check(regs->uregs[rd], eaddr);
|
||||||
eaddr += 4;
|
eaddr += 4;
|
||||||
}
|
}
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
} else {
|
} else {
|
||||||
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
||||||
regbits >>= 1, rd += 1)
|
regbits >>= 1, rd += 1)
|
||||||
|
|||||||
@@ -107,7 +107,6 @@ static const struct of_device_id pxa_ssp_of_ids[] = {
|
|||||||
{ .compatible = "mvrl,pxa168-ssp", .data = (void *) PXA168_SSP },
|
{ .compatible = "mvrl,pxa168-ssp", .data = (void *) PXA168_SSP },
|
||||||
{ .compatible = "mrvl,pxa910-ssp", .data = (void *) PXA910_SSP },
|
{ .compatible = "mrvl,pxa910-ssp", .data = (void *) PXA910_SSP },
|
||||||
{ .compatible = "mrvl,ce4100-ssp", .data = (void *) CE4100_SSP },
|
{ .compatible = "mrvl,ce4100-ssp", .data = (void *) CE4100_SSP },
|
||||||
{ .compatible = "mrvl,lpss-ssp", .data = (void *) LPSS_SSP },
|
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids);
|
MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids);
|
||||||
|
|||||||
@@ -81,7 +81,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
idle-states {
|
idle-states {
|
||||||
entry-method = "arm,psci";
|
entry-method = "psci";
|
||||||
|
|
||||||
CPU_SLEEP_0: cpu-sleep-0 {
|
CPU_SLEEP_0: cpu-sleep-0 {
|
||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
|
|||||||
@@ -106,7 +106,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
idle-states {
|
idle-states {
|
||||||
entry-method = "arm,psci";
|
entry-method = "psci";
|
||||||
|
|
||||||
cpu_sleep: cpu-sleep-0 {
|
cpu_sleep: cpu-sleep-0 {
|
||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#define KVM_USER_MEM_SLOTS 32
|
#define KVM_USER_MEM_SLOTS 32
|
||||||
#define KVM_PRIVATE_MEM_SLOTS 4
|
#define KVM_PRIVATE_MEM_SLOTS 4
|
||||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 500000
|
||||||
|
|
||||||
#include <kvm/arm_vgic.h>
|
#include <kvm/arm_vgic.h>
|
||||||
#include <kvm/arm_arch_timer.h>
|
#include <kvm/arm_arch_timer.h>
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ extern void __pgd_error(const char *file, int line, unsigned long val);
|
|||||||
#define PAGE_S2 __pgprot(PROT_DEFAULT | PTE_S2_MEMATTR(MT_S2_NORMAL) | PTE_S2_RDONLY)
|
#define PAGE_S2 __pgprot(PROT_DEFAULT | PTE_S2_MEMATTR(MT_S2_NORMAL) | PTE_S2_RDONLY)
|
||||||
#define PAGE_S2_DEVICE __pgprot(PROT_DEFAULT | PTE_S2_MEMATTR(MT_S2_DEVICE_nGnRE) | PTE_S2_RDONLY | PTE_UXN)
|
#define PAGE_S2_DEVICE __pgprot(PROT_DEFAULT | PTE_S2_MEMATTR(MT_S2_DEVICE_nGnRE) | PTE_S2_RDONLY | PTE_UXN)
|
||||||
|
|
||||||
#define PAGE_NONE __pgprot(((_PAGE_DEFAULT) & ~PTE_TYPE_MASK) | PTE_PROT_NONE | PTE_PXN | PTE_UXN)
|
#define PAGE_NONE __pgprot(((_PAGE_DEFAULT) & ~PTE_VALID) | PTE_PROT_NONE | PTE_PXN | PTE_UXN)
|
||||||
#define PAGE_SHARED __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE)
|
#define PAGE_SHARED __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE)
|
||||||
#define PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_WRITE)
|
#define PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_WRITE)
|
||||||
#define PAGE_COPY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN)
|
#define PAGE_COPY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN)
|
||||||
@@ -496,7 +496,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long addr)
|
|||||||
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
|
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
|
||||||
{
|
{
|
||||||
const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY |
|
const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY |
|
||||||
PTE_PROT_NONE | PTE_WRITE | PTE_TYPE_MASK;
|
PTE_PROT_NONE | PTE_VALID | PTE_WRITE;
|
||||||
/* preserve the hardware dirty information */
|
/* preserve the hardware dirty information */
|
||||||
if (pte_hw_dirty(pte))
|
if (pte_hw_dirty(pte))
|
||||||
pte = pte_mkdirty(pte);
|
pte = pte_mkdirty(pte);
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ void unregister_step_hook(struct step_hook *hook)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Call registered single step handers
|
* Call registered single step handlers
|
||||||
* There is no Syndrome info to check for determining the handler.
|
* There is no Syndrome info to check for determining the handler.
|
||||||
* So we call all the registered handlers, until the right handler is
|
* So we call all the registered handlers, until the right handler is
|
||||||
* found which returns zero.
|
* found which returns zero.
|
||||||
@@ -271,20 +271,21 @@ static int single_step_handler(unsigned long addr, unsigned int esr,
|
|||||||
* Use reader/writer locks instead of plain spinlock.
|
* Use reader/writer locks instead of plain spinlock.
|
||||||
*/
|
*/
|
||||||
static LIST_HEAD(break_hook);
|
static LIST_HEAD(break_hook);
|
||||||
static DEFINE_RWLOCK(break_hook_lock);
|
static DEFINE_SPINLOCK(break_hook_lock);
|
||||||
|
|
||||||
void register_break_hook(struct break_hook *hook)
|
void register_break_hook(struct break_hook *hook)
|
||||||
{
|
{
|
||||||
write_lock(&break_hook_lock);
|
spin_lock(&break_hook_lock);
|
||||||
list_add(&hook->node, &break_hook);
|
list_add_rcu(&hook->node, &break_hook);
|
||||||
write_unlock(&break_hook_lock);
|
spin_unlock(&break_hook_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregister_break_hook(struct break_hook *hook)
|
void unregister_break_hook(struct break_hook *hook)
|
||||||
{
|
{
|
||||||
write_lock(&break_hook_lock);
|
spin_lock(&break_hook_lock);
|
||||||
list_del(&hook->node);
|
list_del_rcu(&hook->node);
|
||||||
write_unlock(&break_hook_lock);
|
spin_unlock(&break_hook_lock);
|
||||||
|
synchronize_rcu();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int call_break_hook(struct pt_regs *regs, unsigned int esr)
|
static int call_break_hook(struct pt_regs *regs, unsigned int esr)
|
||||||
@@ -292,11 +293,11 @@ static int call_break_hook(struct pt_regs *regs, unsigned int esr)
|
|||||||
struct break_hook *hook;
|
struct break_hook *hook;
|
||||||
int (*fn)(struct pt_regs *regs, unsigned int esr) = NULL;
|
int (*fn)(struct pt_regs *regs, unsigned int esr) = NULL;
|
||||||
|
|
||||||
read_lock(&break_hook_lock);
|
rcu_read_lock();
|
||||||
list_for_each_entry(hook, &break_hook, node)
|
list_for_each_entry_rcu(hook, &break_hook, node)
|
||||||
if ((esr & hook->esr_mask) == hook->esr_val)
|
if ((esr & hook->esr_mask) == hook->esr_val)
|
||||||
fn = hook->fn;
|
fn = hook->fn;
|
||||||
read_unlock(&break_hook_lock);
|
rcu_read_unlock();
|
||||||
|
|
||||||
return fn ? fn(regs, esr) : DBG_HOOK_ERROR;
|
return fn ? fn(regs, esr) : DBG_HOOK_ERROR;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -258,7 +258,8 @@ static bool __init efi_virtmap_init(void)
|
|||||||
*/
|
*/
|
||||||
if (!is_normal_ram(md))
|
if (!is_normal_ram(md))
|
||||||
prot = __pgprot(PROT_DEVICE_nGnRE);
|
prot = __pgprot(PROT_DEVICE_nGnRE);
|
||||||
else if (md->type == EFI_RUNTIME_SERVICES_CODE)
|
else if (md->type == EFI_RUNTIME_SERVICES_CODE ||
|
||||||
|
!PAGE_ALIGNED(md->phys_addr))
|
||||||
prot = PAGE_KERNEL_EXEC;
|
prot = PAGE_KERNEL_EXEC;
|
||||||
else
|
else
|
||||||
prot = PAGE_KERNEL;
|
prot = PAGE_KERNEL;
|
||||||
|
|||||||
@@ -178,6 +178,24 @@ ENTRY(ftrace_stub)
|
|||||||
ENDPROC(ftrace_stub)
|
ENDPROC(ftrace_stub)
|
||||||
|
|
||||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||||
|
/* save return value regs*/
|
||||||
|
.macro save_return_regs
|
||||||
|
sub sp, sp, #64
|
||||||
|
stp x0, x1, [sp]
|
||||||
|
stp x2, x3, [sp, #16]
|
||||||
|
stp x4, x5, [sp, #32]
|
||||||
|
stp x6, x7, [sp, #48]
|
||||||
|
.endm
|
||||||
|
|
||||||
|
/* restore return value regs*/
|
||||||
|
.macro restore_return_regs
|
||||||
|
ldp x0, x1, [sp]
|
||||||
|
ldp x2, x3, [sp, #16]
|
||||||
|
ldp x4, x5, [sp, #32]
|
||||||
|
ldp x6, x7, [sp, #48]
|
||||||
|
add sp, sp, #64
|
||||||
|
.endm
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* void ftrace_graph_caller(void)
|
* void ftrace_graph_caller(void)
|
||||||
*
|
*
|
||||||
@@ -204,11 +222,11 @@ ENDPROC(ftrace_graph_caller)
|
|||||||
* only when CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST is enabled.
|
* only when CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST is enabled.
|
||||||
*/
|
*/
|
||||||
ENTRY(return_to_handler)
|
ENTRY(return_to_handler)
|
||||||
str x0, [sp, #-16]!
|
save_return_regs
|
||||||
mov x0, x29 // parent's fp
|
mov x0, x29 // parent's fp
|
||||||
bl ftrace_return_to_handler// addr = ftrace_return_to_hander(fp);
|
bl ftrace_return_to_handler// addr = ftrace_return_to_hander(fp);
|
||||||
mov x30, x0 // restore the original return address
|
mov x30, x0 // restore the original return address
|
||||||
ldr x0, [sp], #16
|
restore_return_regs
|
||||||
ret
|
ret
|
||||||
END(return_to_handler)
|
END(return_to_handler)
|
||||||
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
|
#endif /* CONFIG_FUNCTION_GRAPH_TRACER */
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ bool aarch64_insn_is_branch_imm(u32 insn)
|
|||||||
aarch64_insn_is_bcond(insn));
|
aarch64_insn_is_bcond(insn));
|
||||||
}
|
}
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(patch_lock);
|
static DEFINE_RAW_SPINLOCK(patch_lock);
|
||||||
|
|
||||||
static void __kprobes *patch_map(void *addr, int fixmap)
|
static void __kprobes *patch_map(void *addr, int fixmap)
|
||||||
{
|
{
|
||||||
@@ -131,13 +131,13 @@ static int __kprobes __aarch64_insn_write(void *addr, u32 insn)
|
|||||||
unsigned long flags = 0;
|
unsigned long flags = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
spin_lock_irqsave(&patch_lock, flags);
|
raw_spin_lock_irqsave(&patch_lock, flags);
|
||||||
waddr = patch_map(addr, FIX_TEXT_POKE0);
|
waddr = patch_map(addr, FIX_TEXT_POKE0);
|
||||||
|
|
||||||
ret = probe_kernel_write(waddr, &insn, AARCH64_INSN_SIZE);
|
ret = probe_kernel_write(waddr, &insn, AARCH64_INSN_SIZE);
|
||||||
|
|
||||||
patch_unmap(FIX_TEXT_POKE0);
|
patch_unmap(FIX_TEXT_POKE0);
|
||||||
spin_unlock_irqrestore(&patch_lock, flags);
|
raw_spin_unlock_irqrestore(&patch_lock, flags);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -364,6 +364,8 @@ static void __init relocate_initrd(void)
|
|||||||
to_free = ram_end - orig_start;
|
to_free = ram_end - orig_start;
|
||||||
|
|
||||||
size = orig_end - orig_start;
|
size = orig_end - orig_start;
|
||||||
|
if (!size)
|
||||||
|
return;
|
||||||
|
|
||||||
/* initrd needs to be relocated completely inside linear mapping */
|
/* initrd needs to be relocated completely inside linear mapping */
|
||||||
new_start = memblock_find_in_range(0, PFN_PHYS(max_pfn),
|
new_start = memblock_find_in_range(0, PFN_PHYS(max_pfn),
|
||||||
|
|||||||
@@ -287,6 +287,7 @@ retry:
|
|||||||
* starvation.
|
* starvation.
|
||||||
*/
|
*/
|
||||||
mm_flags &= ~FAULT_FLAG_ALLOW_RETRY;
|
mm_flags &= ~FAULT_FLAG_ALLOW_RETRY;
|
||||||
|
mm_flags |= FAULT_FLAG_TRIED;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,4 +20,5 @@ generic-y += sections.h
|
|||||||
generic-y += topology.h
|
generic-y += topology.h
|
||||||
generic-y += trace_clock.h
|
generic-y += trace_clock.h
|
||||||
generic-y += vga.h
|
generic-y += vga.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
generic-y += xor.h
|
generic-y += xor.h
|
||||||
|
|||||||
@@ -46,4 +46,5 @@ generic-y += types.h
|
|||||||
generic-y += ucontext.h
|
generic-y += ucontext.h
|
||||||
generic-y += unaligned.h
|
generic-y += unaligned.h
|
||||||
generic-y += user.h
|
generic-y += user.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
generic-y += xor.h
|
generic-y += xor.h
|
||||||
|
|||||||
@@ -59,4 +59,5 @@ generic-y += types.h
|
|||||||
generic-y += ucontext.h
|
generic-y += ucontext.h
|
||||||
generic-y += user.h
|
generic-y += user.h
|
||||||
generic-y += vga.h
|
generic-y += vga.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
generic-y += xor.h
|
generic-y += xor.h
|
||||||
|
|||||||
@@ -43,4 +43,5 @@ generic-y += topology.h
|
|||||||
generic-y += trace_clock.h
|
generic-y += trace_clock.h
|
||||||
generic-y += types.h
|
generic-y += types.h
|
||||||
generic-y += vga.h
|
generic-y += vga.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
generic-y += xor.h
|
generic-y += xor.h
|
||||||
|
|||||||
@@ -7,3 +7,4 @@ generic-y += mcs_spinlock.h
|
|||||||
generic-y += mm-arch-hooks.h
|
generic-y += mm-arch-hooks.h
|
||||||
generic-y += preempt.h
|
generic-y += preempt.h
|
||||||
generic-y += trace_clock.h
|
generic-y += trace_clock.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
|
|||||||
@@ -294,6 +294,8 @@ void pcibios_fixup_bus(struct pci_bus *bus)
|
|||||||
printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number);
|
printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
|
||||||
if (bus->number == 0) {
|
if (bus->number == 0) {
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||||
|
|||||||
@@ -73,4 +73,5 @@ generic-y += uaccess.h
|
|||||||
generic-y += ucontext.h
|
generic-y += ucontext.h
|
||||||
generic-y += unaligned.h
|
generic-y += unaligned.h
|
||||||
generic-y += vga.h
|
generic-y += vga.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
generic-y += xor.h
|
generic-y += xor.h
|
||||||
|
|||||||
@@ -58,4 +58,5 @@ generic-y += types.h
|
|||||||
generic-y += ucontext.h
|
generic-y += ucontext.h
|
||||||
generic-y += unaligned.h
|
generic-y += unaligned.h
|
||||||
generic-y += vga.h
|
generic-y += vga.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
generic-y += xor.h
|
generic-y += xor.h
|
||||||
|
|||||||
@@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h
|
|||||||
generic-y += preempt.h
|
generic-y += preempt.h
|
||||||
generic-y += trace_clock.h
|
generic-y += trace_clock.h
|
||||||
generic-y += vtime.h
|
generic-y += vtime.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
|
|||||||
@@ -533,9 +533,10 @@ void pcibios_fixup_bus(struct pci_bus *b)
|
|||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
|
|
||||||
if (b->self)
|
if (b->self) {
|
||||||
|
pci_read_bridge_bases(b);
|
||||||
pcibios_fixup_bridge_resources(b->self);
|
pcibios_fixup_bridge_resources(b->self);
|
||||||
|
}
|
||||||
list_for_each_entry(dev, &b->devices, bus_list)
|
list_for_each_entry(dev, &b->devices, bus_list)
|
||||||
pcibios_fixup_device_resources(dev);
|
pcibios_fixup_device_resources(dev);
|
||||||
platform_pci_fixup_bus(b);
|
platform_pci_fixup_bus(b);
|
||||||
|
|||||||
@@ -9,3 +9,4 @@ generic-y += module.h
|
|||||||
generic-y += preempt.h
|
generic-y += preempt.h
|
||||||
generic-y += sections.h
|
generic-y += sections.h
|
||||||
generic-y += trace_clock.h
|
generic-y += trace_clock.h
|
||||||
|
generic-y += word-at-a-time.h
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ CONFIG_LOG_BUF_SHIFT=16
|
|||||||
# CONFIG_PID_NS is not set
|
# CONFIG_PID_NS is not set
|
||||||
# CONFIG_NET_NS is not set
|
# CONFIG_NET_NS is not set
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
|
CONFIG_USERFAULTFD=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
@@ -57,7 +58,6 @@ CONFIG_NET_IPGRE_DEMUX=m
|
|||||||
CONFIG_NET_IPGRE=m
|
CONFIG_NET_IPGRE=m
|
||||||
CONFIG_NET_IPVTI=m
|
CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_GENEVE_CORE=m
|
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
@@ -67,10 +67,12 @@ CONFIG_INET_XFRM_MODE_BEET=m
|
|||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
CONFIG_INET_DIAG=m
|
CONFIG_INET_DIAG=m
|
||||||
CONFIG_INET_UDP_DIAG=m
|
CONFIG_INET_UDP_DIAG=m
|
||||||
|
CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
CONFIG_IPV6_GRE=m
|
CONFIG_IPV6_GRE=m
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
@@ -179,6 +181,7 @@ CONFIG_IP_SET_HASH_NETIFACE=m
|
|||||||
CONFIG_IP_SET_LIST_SET=m
|
CONFIG_IP_SET_LIST_SET=m
|
||||||
CONFIG_NF_CONNTRACK_IPV4=m
|
CONFIG_NF_CONNTRACK_IPV4=m
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
||||||
|
CONFIG_NFT_DUP_IPV4=m
|
||||||
CONFIG_NF_TABLES_ARP=m
|
CONFIG_NF_TABLES_ARP=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||||
@@ -206,6 +209,7 @@ CONFIG_IP_NF_ARPFILTER=m
|
|||||||
CONFIG_IP_NF_ARP_MANGLE=m
|
CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
CONFIG_NF_CONNTRACK_IPV6=m
|
CONFIG_NF_CONNTRACK_IPV6=m
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||||
|
CONFIG_NFT_DUP_IPV6=m
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||||
CONFIG_NFT_MASQ_IPV6=m
|
CONFIG_NFT_MASQ_IPV6=m
|
||||||
CONFIG_NFT_REDIR_IPV6=m
|
CONFIG_NFT_REDIR_IPV6=m
|
||||||
@@ -271,6 +275,7 @@ CONFIG_NETLINK_DIAG=m
|
|||||||
CONFIG_MPLS=y
|
CONFIG_MPLS=y
|
||||||
CONFIG_NET_MPLS_GSO=m
|
CONFIG_NET_MPLS_GSO=m
|
||||||
CONFIG_MPLS_ROUTING=m
|
CONFIG_MPLS_ROUTING=m
|
||||||
|
CONFIG_MPLS_IPTUNNEL=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
@@ -370,6 +375,7 @@ CONFIG_ZORRO8390=y
|
|||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_SMSC is not set
|
# CONFIG_NET_VENDOR_SMSC is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
@@ -537,6 +543,7 @@ CONFIG_TEST_USER_COPY=m
|
|||||||
CONFIG_TEST_BPF=m
|
CONFIG_TEST_BPF=m
|
||||||
CONFIG_TEST_FIRMWARE=m
|
CONFIG_TEST_FIRMWARE=m
|
||||||
CONFIG_TEST_UDELAY=m
|
CONFIG_TEST_UDELAY=m
|
||||||
|
CONFIG_TEST_STATIC_KEYS=m
|
||||||
CONFIG_EARLY_PRINTK=y
|
CONFIG_EARLY_PRINTK=y
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
CONFIG_ENCRYPTED_KEYS=m
|
||||||
CONFIG_CRYPTO_RSA=m
|
CONFIG_CRYPTO_RSA=m
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ CONFIG_LOG_BUF_SHIFT=16
|
|||||||
# CONFIG_PID_NS is not set
|
# CONFIG_PID_NS is not set
|
||||||
# CONFIG_NET_NS is not set
|
# CONFIG_NET_NS is not set
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
|
CONFIG_USERFAULTFD=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
@@ -55,7 +56,6 @@ CONFIG_NET_IPGRE_DEMUX=m
|
|||||||
CONFIG_NET_IPGRE=m
|
CONFIG_NET_IPGRE=m
|
||||||
CONFIG_NET_IPVTI=m
|
CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_GENEVE_CORE=m
|
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
@@ -65,10 +65,12 @@ CONFIG_INET_XFRM_MODE_BEET=m
|
|||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
CONFIG_INET_DIAG=m
|
CONFIG_INET_DIAG=m
|
||||||
CONFIG_INET_UDP_DIAG=m
|
CONFIG_INET_UDP_DIAG=m
|
||||||
|
CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
CONFIG_IPV6_GRE=m
|
CONFIG_IPV6_GRE=m
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
@@ -177,6 +179,7 @@ CONFIG_IP_SET_HASH_NETIFACE=m
|
|||||||
CONFIG_IP_SET_LIST_SET=m
|
CONFIG_IP_SET_LIST_SET=m
|
||||||
CONFIG_NF_CONNTRACK_IPV4=m
|
CONFIG_NF_CONNTRACK_IPV4=m
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
||||||
|
CONFIG_NFT_DUP_IPV4=m
|
||||||
CONFIG_NF_TABLES_ARP=m
|
CONFIG_NF_TABLES_ARP=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||||
@@ -204,6 +207,7 @@ CONFIG_IP_NF_ARPFILTER=m
|
|||||||
CONFIG_IP_NF_ARP_MANGLE=m
|
CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
CONFIG_NF_CONNTRACK_IPV6=m
|
CONFIG_NF_CONNTRACK_IPV6=m
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||||
|
CONFIG_NFT_DUP_IPV6=m
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||||
CONFIG_NFT_MASQ_IPV6=m
|
CONFIG_NFT_MASQ_IPV6=m
|
||||||
CONFIG_NFT_REDIR_IPV6=m
|
CONFIG_NFT_REDIR_IPV6=m
|
||||||
@@ -269,6 +273,7 @@ CONFIG_NETLINK_DIAG=m
|
|||||||
CONFIG_MPLS=y
|
CONFIG_MPLS=y
|
||||||
CONFIG_NET_MPLS_GSO=m
|
CONFIG_NET_MPLS_GSO=m
|
||||||
CONFIG_MPLS_ROUTING=m
|
CONFIG_MPLS_ROUTING=m
|
||||||
|
CONFIG_MPLS_IPTUNNEL=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
@@ -344,6 +349,7 @@ CONFIG_VETH=m
|
|||||||
# CONFIG_NET_VENDOR_SAMSUNG is not set
|
# CONFIG_NET_VENDOR_SAMSUNG is not set
|
||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
@@ -495,6 +501,7 @@ CONFIG_TEST_USER_COPY=m
|
|||||||
CONFIG_TEST_BPF=m
|
CONFIG_TEST_BPF=m
|
||||||
CONFIG_TEST_FIRMWARE=m
|
CONFIG_TEST_FIRMWARE=m
|
||||||
CONFIG_TEST_UDELAY=m
|
CONFIG_TEST_UDELAY=m
|
||||||
|
CONFIG_TEST_STATIC_KEYS=m
|
||||||
CONFIG_EARLY_PRINTK=y
|
CONFIG_EARLY_PRINTK=y
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
CONFIG_ENCRYPTED_KEYS=m
|
||||||
CONFIG_CRYPTO_RSA=m
|
CONFIG_CRYPTO_RSA=m
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ CONFIG_LOG_BUF_SHIFT=16
|
|||||||
# CONFIG_PID_NS is not set
|
# CONFIG_PID_NS is not set
|
||||||
# CONFIG_NET_NS is not set
|
# CONFIG_NET_NS is not set
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
|
CONFIG_USERFAULTFD=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
@@ -55,7 +56,6 @@ CONFIG_NET_IPGRE_DEMUX=m
|
|||||||
CONFIG_NET_IPGRE=m
|
CONFIG_NET_IPGRE=m
|
||||||
CONFIG_NET_IPVTI=m
|
CONFIG_NET_IPVTI=m
|
||||||
CONFIG_NET_FOU_IP_TUNNELS=y
|
CONFIG_NET_FOU_IP_TUNNELS=y
|
||||||
CONFIG_GENEVE_CORE=m
|
|
||||||
CONFIG_INET_AH=m
|
CONFIG_INET_AH=m
|
||||||
CONFIG_INET_ESP=m
|
CONFIG_INET_ESP=m
|
||||||
CONFIG_INET_IPCOMP=m
|
CONFIG_INET_IPCOMP=m
|
||||||
@@ -65,10 +65,12 @@ CONFIG_INET_XFRM_MODE_BEET=m
|
|||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
CONFIG_INET_DIAG=m
|
CONFIG_INET_DIAG=m
|
||||||
CONFIG_INET_UDP_DIAG=m
|
CONFIG_INET_UDP_DIAG=m
|
||||||
|
CONFIG_IPV6=m
|
||||||
CONFIG_IPV6_ROUTER_PREF=y
|
CONFIG_IPV6_ROUTER_PREF=y
|
||||||
CONFIG_INET6_AH=m
|
CONFIG_INET6_AH=m
|
||||||
CONFIG_INET6_ESP=m
|
CONFIG_INET6_ESP=m
|
||||||
CONFIG_INET6_IPCOMP=m
|
CONFIG_INET6_IPCOMP=m
|
||||||
|
CONFIG_IPV6_ILA=m
|
||||||
CONFIG_IPV6_VTI=m
|
CONFIG_IPV6_VTI=m
|
||||||
CONFIG_IPV6_GRE=m
|
CONFIG_IPV6_GRE=m
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
@@ -177,6 +179,7 @@ CONFIG_IP_SET_HASH_NETIFACE=m
|
|||||||
CONFIG_IP_SET_LIST_SET=m
|
CONFIG_IP_SET_LIST_SET=m
|
||||||
CONFIG_NF_CONNTRACK_IPV4=m
|
CONFIG_NF_CONNTRACK_IPV4=m
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
|
||||||
|
CONFIG_NFT_DUP_IPV4=m
|
||||||
CONFIG_NF_TABLES_ARP=m
|
CONFIG_NF_TABLES_ARP=m
|
||||||
CONFIG_NF_LOG_ARP=m
|
CONFIG_NF_LOG_ARP=m
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||||
@@ -204,6 +207,7 @@ CONFIG_IP_NF_ARPFILTER=m
|
|||||||
CONFIG_IP_NF_ARP_MANGLE=m
|
CONFIG_IP_NF_ARP_MANGLE=m
|
||||||
CONFIG_NF_CONNTRACK_IPV6=m
|
CONFIG_NF_CONNTRACK_IPV6=m
|
||||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||||
|
CONFIG_NFT_DUP_IPV6=m
|
||||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||||
CONFIG_NFT_MASQ_IPV6=m
|
CONFIG_NFT_MASQ_IPV6=m
|
||||||
CONFIG_NFT_REDIR_IPV6=m
|
CONFIG_NFT_REDIR_IPV6=m
|
||||||
@@ -269,6 +273,7 @@ CONFIG_NETLINK_DIAG=m
|
|||||||
CONFIG_MPLS=y
|
CONFIG_MPLS=y
|
||||||
CONFIG_NET_MPLS_GSO=m
|
CONFIG_NET_MPLS_GSO=m
|
||||||
CONFIG_MPLS_ROUTING=m
|
CONFIG_MPLS_ROUTING=m
|
||||||
|
CONFIG_MPLS_IPTUNNEL=m
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
# CONFIG_UEVENT_HELPER is not set
|
# CONFIG_UEVENT_HELPER is not set
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
@@ -355,6 +360,7 @@ CONFIG_NE2000=y
|
|||||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
CONFIG_SMC91X=y
|
CONFIG_SMC91X=y
|
||||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
|
# CONFIG_NET_VENDOR_SYNOPSYS is not set
|
||||||
# CONFIG_NET_VENDOR_VIA is not set
|
# CONFIG_NET_VENDOR_VIA is not set
|
||||||
# CONFIG_NET_VENDOR_WIZNET is not set
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
CONFIG_PPP=m
|
CONFIG_PPP=m
|
||||||
@@ -517,6 +523,7 @@ CONFIG_TEST_USER_COPY=m
|
|||||||
CONFIG_TEST_BPF=m
|
CONFIG_TEST_BPF=m
|
||||||
CONFIG_TEST_FIRMWARE=m
|
CONFIG_TEST_FIRMWARE=m
|
||||||
CONFIG_TEST_UDELAY=m
|
CONFIG_TEST_UDELAY=m
|
||||||
|
CONFIG_TEST_STATIC_KEYS=m
|
||||||
CONFIG_EARLY_PRINTK=y
|
CONFIG_EARLY_PRINTK=y
|
||||||
CONFIG_ENCRYPTED_KEYS=m
|
CONFIG_ENCRYPTED_KEYS=m
|
||||||
CONFIG_CRYPTO_RSA=m
|
CONFIG_CRYPTO_RSA=m
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user