forked from Minki/linux
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
This commit is contained in:
commit
0c9a66ec0e
@ -32,8 +32,6 @@ cpufreq-stats.txt - General description of sysfs cpufreq stats.
|
||||
|
||||
index.txt - File index, Mailing list and Links (this document)
|
||||
|
||||
intel-pstate.txt - Intel pstate cpufreq driver specific file.
|
||||
|
||||
pcc-cpufreq.txt - PCC cpufreq driver specific file.
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@ Example:
|
||||
compatible = "st,stm32h743-rcc", "st,stm32-rcc";
|
||||
reg = <0x58024400 0x400>;
|
||||
#reset-cells = <1>;
|
||||
#clock-cells = <2>;
|
||||
#clock-cells = <1>;
|
||||
clocks = <&clk_hse>, <&clk_lse>, <&clk_i2s_ckin>;
|
||||
|
||||
st,syscfg = <&pwrcfg>;
|
||||
|
39
Documentation/devicetree/bindings/i2c/i2c-altera.txt
Normal file
39
Documentation/devicetree/bindings/i2c/i2c-altera.txt
Normal file
@ -0,0 +1,39 @@
|
||||
* Altera I2C Controller
|
||||
* This is Altera's synthesizable logic block I2C Controller for use
|
||||
* in Altera's FPGAs.
|
||||
|
||||
Required properties :
|
||||
- compatible : should be "altr,softip-i2c-v1.0"
|
||||
- reg : Offset and length of the register set for the device
|
||||
- interrupts : <IRQ> where IRQ is the interrupt number.
|
||||
- clocks : phandle to input clock.
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Recommended properties :
|
||||
- clock-frequency : desired I2C bus clock frequency in Hz.
|
||||
|
||||
Optional properties :
|
||||
- fifo-size : Size of the RX and TX FIFOs in bytes.
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
Example :
|
||||
|
||||
i2c@100080000 {
|
||||
compatible = "altr,softip-i2c-v1.0";
|
||||
reg = <0x00000001 0x00080000 0x00000040>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <0 43 4>;
|
||||
clocks = <&clk_0>;
|
||||
clock-frequency = <100000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
fifo-size = <4>;
|
||||
|
||||
eeprom@51 {
|
||||
compatible = "atmel,24c32";
|
||||
reg = <0x51>;
|
||||
pagesize = <32>;
|
||||
};
|
||||
};
|
||||
|
@ -1,7 +1,9 @@
|
||||
* I2C controller embedded in STMicroelectronics STM32 I2C platform
|
||||
|
||||
Required properties :
|
||||
- compatible : Must be "st,stm32f4-i2c"
|
||||
- compatible : Must be one of the following
|
||||
- "st,stm32f4-i2c"
|
||||
- "st,stm32f7-i2c"
|
||||
- reg : Offset and length of the register set for the device
|
||||
- interrupts : Must contain the interrupt id for I2C event and then the
|
||||
interrupt id for I2C error.
|
||||
@ -14,8 +16,16 @@ Required properties :
|
||||
|
||||
Optional properties :
|
||||
- clock-frequency : Desired I2C bus clock frequency in Hz. If not specified,
|
||||
the default 100 kHz frequency will be used. As only Normal and Fast modes
|
||||
are supported, possible values are 100000 and 400000.
|
||||
the default 100 kHz frequency will be used.
|
||||
For STM32F4 SoC Standard-mode and Fast-mode are supported, possible values are
|
||||
100000 and 400000.
|
||||
For STM32F7 SoC, Standard-mode, Fast-mode and Fast-mode Plus are supported,
|
||||
possible values are 100000, 400000 and 1000000.
|
||||
- i2c-scl-rising-time-ns : Only for STM32F7, I2C SCL Rising time for the board
|
||||
(default: 25)
|
||||
- i2c-scl-falling-time-ns : Only for STM32F7, I2C SCL Falling time for the board
|
||||
(default: 10)
|
||||
I2C Timings are derived from these 2 values
|
||||
|
||||
Example :
|
||||
|
||||
@ -31,3 +41,16 @@ Example :
|
||||
pinctrl-0 = <&i2c1_sda_pin>, <&i2c1_scl_pin>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
i2c@40005400 {
|
||||
compatible = "st,stm32f7-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x40005400 0x400>;
|
||||
interrupts = <31>,
|
||||
<32>;
|
||||
resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
|
||||
clocks = <&rcc 1 CLK_I2C1>;
|
||||
pinctrl-0 = <&i2c1_sda_pin>, <&i2c1_scl_pin>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
66
Documentation/devicetree/bindings/input/pwm-vibrator.txt
Normal file
66
Documentation/devicetree/bindings/input/pwm-vibrator.txt
Normal file
@ -0,0 +1,66 @@
|
||||
* PWM vibrator device tree bindings
|
||||
|
||||
Registers a PWM device as vibrator. It is expected, that the vibrator's
|
||||
strength increases based on the duty cycle of the enable PWM channel
|
||||
(100% duty cycle meaning strongest vibration, 0% meaning no vibration).
|
||||
|
||||
The binding supports an optional direction PWM channel, that can be
|
||||
driven at fixed duty cycle. If available this is can be used to increase
|
||||
the vibration effect of some devices.
|
||||
|
||||
Required properties:
|
||||
- compatible: should contain "pwm-vibrator"
|
||||
- pwm-names: Should contain "enable" and optionally "direction"
|
||||
- pwms: Should contain a PWM handle for each entry in pwm-names
|
||||
|
||||
Optional properties:
|
||||
- vcc-supply: Phandle for the regulator supplying power
|
||||
- direction-duty-cycle-ns: Duty cycle of the direction PWM channel in
|
||||
nanoseconds, defaults to 50% of the channel's
|
||||
period.
|
||||
|
||||
Example from Motorola Droid 4:
|
||||
|
||||
&omap4_pmx_core {
|
||||
vibrator_direction_pin: pinmux_vibrator_direction_pin {
|
||||
pinctrl-single,pins = <
|
||||
OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1) /* dmtimer8_pwm_evt (gpio_27) */
|
||||
>;
|
||||
};
|
||||
|
||||
vibrator_enable_pin: pinmux_vibrator_enable_pin {
|
||||
pinctrl-single,pins = <
|
||||
OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1) /* dmtimer9_pwm_evt (gpio_28) */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
pwm8: dmtimer-pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vibrator_direction_pin>;
|
||||
|
||||
compatible = "ti,omap-dmtimer-pwm";
|
||||
#pwm-cells = <3>;
|
||||
ti,timers = <&timer8>;
|
||||
ti,clock-source = <0x01>;
|
||||
};
|
||||
|
||||
pwm9: dmtimer-pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&vibrator_enable_pin>;
|
||||
|
||||
compatible = "ti,omap-dmtimer-pwm";
|
||||
#pwm-cells = <3>;
|
||||
ti,timers = <&timer9>;
|
||||
ti,clock-source = <0x01>;
|
||||
};
|
||||
|
||||
vibrator {
|
||||
compatible = "pwm-vibrator";
|
||||
pwms = <&pwm8 0 1000000000 0>,
|
||||
<&pwm9 0 1000000000 0>;
|
||||
pwm-names = "enable", "direction";
|
||||
direction-duty-cycle-ns = <1000000000>;
|
||||
};
|
||||
};
|
@ -15,11 +15,14 @@ Required properties
|
||||
|
||||
compatible : Must be "ams,as3645a".
|
||||
reg : The I2C address of the device. Typically 0x30.
|
||||
#address-cells : 1
|
||||
#size-cells : 0
|
||||
|
||||
|
||||
Required properties of the "flash" child node
|
||||
=============================================
|
||||
Required properties of the flash child node (0)
|
||||
===============================================
|
||||
|
||||
reg: 0
|
||||
flash-timeout-us: Flash timeout in microseconds. The value must be in
|
||||
the range [100000, 850000] and divisible by 50000.
|
||||
flash-max-microamp: Maximum flash current in microamperes. Has to be
|
||||
@ -33,20 +36,21 @@ ams,input-max-microamp: Maximum flash controller input current. The
|
||||
and divisible by 50000.
|
||||
|
||||
|
||||
Optional properties of the "flash" child node
|
||||
=============================================
|
||||
Optional properties of the flash child node
|
||||
===========================================
|
||||
|
||||
label : The label of the flash LED.
|
||||
|
||||
|
||||
Required properties of the "indicator" child node
|
||||
=================================================
|
||||
Required properties of the indicator child node (1)
|
||||
===================================================
|
||||
|
||||
reg: 1
|
||||
led-max-microamp: Maximum indicator current. The allowed values are
|
||||
2500, 5000, 7500 and 10000.
|
||||
|
||||
Optional properties of the "indicator" child node
|
||||
=================================================
|
||||
Optional properties of the indicator child node
|
||||
===============================================
|
||||
|
||||
label : The label of the indicator LED.
|
||||
|
||||
@ -55,16 +59,20 @@ Example
|
||||
=======
|
||||
|
||||
as3645a@30 {
|
||||
#address-cells: 1
|
||||
#size-cells: 0
|
||||
reg = <0x30>;
|
||||
compatible = "ams,as3645a";
|
||||
flash {
|
||||
flash@0 {
|
||||
reg = <0x0>;
|
||||
flash-timeout-us = <150000>;
|
||||
flash-max-microamp = <320000>;
|
||||
led-max-microamp = <60000>;
|
||||
ams,input-max-microamp = <1750000>;
|
||||
label = "as3645a:flash";
|
||||
};
|
||||
indicator {
|
||||
indicator@1 {
|
||||
reg = <0x1>;
|
||||
led-max-microamp = <10000>;
|
||||
label = "as3645a:indicator";
|
||||
};
|
||||
|
31
Documentation/devicetree/bindings/mips/lantiq/fpi-bus.txt
Normal file
31
Documentation/devicetree/bindings/mips/lantiq/fpi-bus.txt
Normal file
@ -0,0 +1,31 @@
|
||||
Lantiq XWAY SoC FPI BUS binding
|
||||
============================
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Required properties:
|
||||
- compatible : Should be one of
|
||||
"lantiq,xrx200-fpi"
|
||||
- reg : The address and length of the XBAR
|
||||
configuration register.
|
||||
Address and length of the FPI bus itself.
|
||||
- lantiq,rcu : A phandle to the RCU syscon
|
||||
- lantiq,offset-endianness : Offset of the endianness configuration
|
||||
register
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Example for the FPI on the xrx200 SoCs:
|
||||
fpi@10000000 {
|
||||
compatible = "lantiq,xrx200-fpi";
|
||||
ranges = <0x0 0x10000000 0xf000000>;
|
||||
reg = <0x1f400000 0x1000>,
|
||||
<0x10000000 0xf000000>;
|
||||
lantiq,rcu = <&rcu0>;
|
||||
lantiq,offset-endianness = <0x4c>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
gptu@e100a00 {
|
||||
......
|
||||
};
|
||||
};
|
36
Documentation/devicetree/bindings/mips/lantiq/rcu-gphy.txt
Normal file
36
Documentation/devicetree/bindings/mips/lantiq/rcu-gphy.txt
Normal file
@ -0,0 +1,36 @@
|
||||
Lantiq XWAY SoC GPHY binding
|
||||
============================
|
||||
|
||||
This binding describes a software-defined ethernet PHY, provided by the RCU
|
||||
module on newer Lantiq XWAY SoCs (xRX200 and newer).
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Required properties:
|
||||
- compatible : Should be one of
|
||||
"lantiq,xrx200a1x-gphy"
|
||||
"lantiq,xrx200a2x-gphy"
|
||||
"lantiq,xrx300-gphy"
|
||||
"lantiq,xrx330-gphy"
|
||||
- reg : Addrress of the GPHY FW load address register
|
||||
- resets : Must reference the RCU GPHY reset bit
|
||||
- reset-names : One entry, value must be "gphy" or optional "gphy2"
|
||||
- clocks : A reference to the (PMU) GPHY clock gate
|
||||
|
||||
Optional properties:
|
||||
- lantiq,gphy-mode : GPHY_MODE_GE (default) or GPHY_MODE_FE as defined in
|
||||
<dt-bindings/mips/lantiq_xway_gphy.h>
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Example for the GPHys on the xRX200 SoCs:
|
||||
|
||||
#include <dt-bindings/mips/lantiq_rcu_gphy.h>
|
||||
gphy0: gphy@20 {
|
||||
compatible = "lantiq,xrx200a2x-gphy";
|
||||
reg = <0x20 0x4>;
|
||||
|
||||
resets = <&reset0 31 30>, <&reset1 7 7>;
|
||||
reset-names = "gphy", "gphy2";
|
||||
clocks = <&pmu0 XRX200_PMU_GATE_GPHY>;
|
||||
lantiq,gphy-mode = <GPHY_MODE_GE>;
|
||||
};
|
89
Documentation/devicetree/bindings/mips/lantiq/rcu.txt
Normal file
89
Documentation/devicetree/bindings/mips/lantiq/rcu.txt
Normal file
@ -0,0 +1,89 @@
|
||||
Lantiq XWAY SoC RCU binding
|
||||
===========================
|
||||
|
||||
This binding describes the RCU (reset controller unit) multifunction device,
|
||||
where each sub-device has it's own set of registers.
|
||||
|
||||
The RCU register range is used for multiple purposes. Mostly one device
|
||||
uses one or multiple register exclusively, but for some registers some
|
||||
bits are for one driver and some other bits are for a different driver.
|
||||
With this patch all accesses to the RCU registers will go through
|
||||
syscon.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Required properties:
|
||||
- compatible : The first and second values must be:
|
||||
"lantiq,xrx200-rcu", "simple-mfd", "syscon"
|
||||
- reg : The address and length of the system control registers
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Example of the RCU bindings on a xRX200 SoC:
|
||||
rcu0: rcu@203000 {
|
||||
compatible = "lantiq,xrx200-rcu", "simple-mfd", "syscon";
|
||||
reg = <0x203000 0x100>;
|
||||
ranges = <0x0 0x203000 0x100>;
|
||||
big-endian;
|
||||
|
||||
gphy0: gphy@20 {
|
||||
compatible = "lantiq,xrx200a2x-gphy";
|
||||
reg = <0x20 0x4>;
|
||||
|
||||
resets = <&reset0 31 30>, <&reset1 7 7>;
|
||||
reset-names = "gphy", "gphy2";
|
||||
lantiq,gphy-mode = <GPHY_MODE_GE>;
|
||||
};
|
||||
|
||||
gphy1: gphy@68 {
|
||||
compatible = "lantiq,xrx200a2x-gphy";
|
||||
reg = <0x68 0x4>;
|
||||
|
||||
resets = <&reset0 29 28>, <&reset1 6 6>;
|
||||
reset-names = "gphy", "gphy2";
|
||||
lantiq,gphy-mode = <GPHY_MODE_GE>;
|
||||
};
|
||||
|
||||
reset0: reset-controller@10 {
|
||||
compatible = "lantiq,xrx200-reset";
|
||||
reg = <0x10 4>, <0x14 4>;
|
||||
|
||||
#reset-cells = <2>;
|
||||
};
|
||||
|
||||
reset1: reset-controller@48 {
|
||||
compatible = "lantiq,xrx200-reset";
|
||||
reg = <0x48 4>, <0x24 4>;
|
||||
|
||||
#reset-cells = <2>;
|
||||
};
|
||||
|
||||
usb_phy0: usb2-phy@18 {
|
||||
compatible = "lantiq,xrx200-usb2-phy";
|
||||
reg = <0x18 4>, <0x38 4>;
|
||||
status = "disabled";
|
||||
|
||||
resets = <&reset1 4 4>, <&reset0 4 4>;
|
||||
reset-names = "phy", "ctrl";
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
|
||||
usb_phy1: usb2-phy@34 {
|
||||
compatible = "lantiq,xrx200-usb2-phy";
|
||||
reg = <0x34 4>, <0x3C 4>;
|
||||
status = "disabled";
|
||||
|
||||
resets = <&reset1 5 4>, <&reset0 4 4>;
|
||||
reset-names = "phy", "ctrl";
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
|
||||
reboot@10 {
|
||||
compatible = "syscon-reboot";
|
||||
reg = <0x10 4>;
|
||||
|
||||
regmap = <&rcu0>;
|
||||
offset = <0x10>;
|
||||
mask = <0x40000000>;
|
||||
};
|
||||
};
|
7
Documentation/devicetree/bindings/mips/ni.txt
Normal file
7
Documentation/devicetree/bindings/mips/ni.txt
Normal file
@ -0,0 +1,7 @@
|
||||
National Instruments MIPS platforms
|
||||
|
||||
required root node properties:
|
||||
- compatible: must be "ni,169445"
|
||||
|
||||
CPU Nodes
|
||||
- compatible: must be "mti,mips14KEc"
|
@ -15,3 +15,4 @@ value must be one of the following values:
|
||||
ralink,rt5350-soc
|
||||
ralink,mt7620a-soc
|
||||
ralink,mt7620n-soc
|
||||
ralink,mt7628a-soc
|
||||
|
@ -0,0 +1,40 @@
|
||||
Lantiq XWAY SoC RCU USB 1.1/2.0 PHY binding
|
||||
===========================================
|
||||
|
||||
This binding describes the USB PHY hardware provided by the RCU module on the
|
||||
Lantiq XWAY SoCs.
|
||||
|
||||
This node has to be a sub node of the Lantiq RCU block.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Required properties (controller (parent) node):
|
||||
- compatible : Should be one of
|
||||
"lantiq,ase-usb2-phy"
|
||||
"lantiq,danube-usb2-phy"
|
||||
"lantiq,xrx100-usb2-phy"
|
||||
"lantiq,xrx200-usb2-phy"
|
||||
"lantiq,xrx300-usb2-phy"
|
||||
- reg : Defines the following sets of registers in the parent
|
||||
syscon device
|
||||
- Offset of the USB PHY configuration register
|
||||
- Offset of the USB Analog configuration
|
||||
register (only for xrx200 and xrx200)
|
||||
- clocks : References to the (PMU) "phy" clk gate.
|
||||
- clock-names : Must be "phy"
|
||||
- resets : References to the RCU USB configuration reset bits.
|
||||
- reset-names : Must be one of the following:
|
||||
"phy" (optional)
|
||||
"ctrl" (shared)
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Example for the USB PHYs on an xRX200 SoC:
|
||||
usb_phy0: usb2-phy@18 {
|
||||
compatible = "lantiq,xrx200-usb2-phy";
|
||||
reg = <0x18 4>, <0x38 4>;
|
||||
|
||||
clocks = <&pmu PMU_GATE_USB0_PHY>;
|
||||
clock-names = "phy";
|
||||
resets = <&reset1 4 4>, <&reset0 4 4>;
|
||||
reset-names = "phy", "ctrl";
|
||||
#phy-cells = <0>;
|
||||
};
|
30
Documentation/devicetree/bindings/reset/lantiq,reset.txt
Normal file
30
Documentation/devicetree/bindings/reset/lantiq,reset.txt
Normal file
@ -0,0 +1,30 @@
|
||||
Lantiq XWAY SoC RCU reset controller binding
|
||||
============================================
|
||||
|
||||
This binding describes a reset-controller found on the RCU module on Lantiq
|
||||
XWAY SoCs.
|
||||
|
||||
This node has to be a sub node of the Lantiq RCU block.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Required properties:
|
||||
- compatible : Should be one of
|
||||
"lantiq,danube-reset"
|
||||
"lantiq,xrx200-reset"
|
||||
- reg : Defines the following sets of registers in the parent
|
||||
syscon device
|
||||
- Offset of the reset set register
|
||||
- Offset of the reset status register
|
||||
- #reset-cells : Specifies the number of cells needed to encode the
|
||||
reset line, should be 2.
|
||||
The first cell takes the reset set bit and the
|
||||
second cell takes the status bit.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Example for the reset-controllers on the xRX200 SoCs:
|
||||
reset0: reset-controller@10 {
|
||||
compatible = "lantiq,xrx200-reset";
|
||||
reg <0x10 0x04>, <0x14 0x04>;
|
||||
|
||||
#reset-cells = <2>;
|
||||
};
|
@ -8,6 +8,12 @@ Required properties:
|
||||
the firmware event log
|
||||
- linux,sml-size : size of the memory allocated for the firmware event log
|
||||
|
||||
Optional properties:
|
||||
|
||||
- powered-while-suspended: present when the TPM is left powered on between
|
||||
suspend and resume (makes the suspend/resume
|
||||
callbacks do nothing).
|
||||
|
||||
Example (for OpenPower Systems with Nuvoton TPM 2.0 on I2C)
|
||||
----------------------------------------------------------
|
||||
|
||||
|
@ -3,8 +3,8 @@ Device tree binding vendor prefix registry. Keep list in alphabetical order.
|
||||
This isn't an exhaustive list, but you should add new prefixes to it before
|
||||
using them to avoid name-space collisions.
|
||||
|
||||
abcn Abracon Corporation
|
||||
abilis Abilis Systems
|
||||
abracon Abracon Corporation
|
||||
actions Actions Semiconductor Co., Ltd.
|
||||
active-semi Active-Semi International Inc
|
||||
ad Avionic Design GmbH
|
||||
@ -361,6 +361,7 @@ variscite Variscite Ltd.
|
||||
via VIA Technologies, Inc.
|
||||
virtio Virtual I/O Device Specification, developed by the OASIS consortium
|
||||
vivante Vivante Corporation
|
||||
vocore VoCore Studio
|
||||
voipac Voipac Technologies s.r.o.
|
||||
wd Western Digital Corp.
|
||||
wetek WeTek Electronics, limited.
|
||||
|
@ -8,9 +8,49 @@ Required properties:
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region
|
||||
|
||||
Optional properties:
|
||||
|
||||
- aspeed,reset-type = "cpu|soc|system|none"
|
||||
|
||||
Reset behavior - Whenever a timeout occurs the watchdog can be programmed
|
||||
to generate one of three different, mutually exclusive, types of resets.
|
||||
|
||||
Type "none" can be specified to indicate that no resets are to be done.
|
||||
This is useful in situations where another watchdog engine on chip is
|
||||
to perform the reset.
|
||||
|
||||
If 'aspeed,reset-type=' is not specfied the default is to enable system
|
||||
reset.
|
||||
|
||||
Reset types:
|
||||
|
||||
- cpu: Reset CPU on watchdog timeout
|
||||
|
||||
- soc: Reset 'System on Chip' on watchdog timeout
|
||||
|
||||
- system: Reset system on watchdog timeout
|
||||
|
||||
- none: No reset is performed on timeout. Assumes another watchdog
|
||||
engine is responsible for this.
|
||||
|
||||
- aspeed,alt-boot: If property is present then boot from alternate block.
|
||||
- aspeed,external-signal: If property is present then signal is sent to
|
||||
external reset counter (only WDT1 and WDT2). If not
|
||||
specified no external signal is sent.
|
||||
- aspeed,ext-pulse-duration: External signal pulse duration in microseconds
|
||||
|
||||
Optional properties for AST2500-compatible watchdogs:
|
||||
- aspeed,ext-push-pull: If aspeed,external-signal is present, set the pin's
|
||||
drive type to push-pull. The default is open-drain.
|
||||
- aspeed,ext-active-high: If aspeed,external-signal is present and and the pin
|
||||
is configured as push-pull, then set the pulse
|
||||
polarity to active-high. The default is active-low.
|
||||
|
||||
Example:
|
||||
|
||||
wdt1: watchdog@1e785000 {
|
||||
compatible = "aspeed,ast2400-wdt";
|
||||
reg = <0x1e785000 0x1c>;
|
||||
aspeed,reset-type = "system";
|
||||
aspeed,external-signal;
|
||||
};
|
||||
|
24
Documentation/devicetree/bindings/watchdog/lantiq-wdt.txt
Normal file
24
Documentation/devicetree/bindings/watchdog/lantiq-wdt.txt
Normal file
@ -0,0 +1,24 @@
|
||||
Lantiq WTD watchdog binding
|
||||
============================
|
||||
|
||||
This describes the binding of the Lantiq watchdog driver.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Required properties:
|
||||
- compatible : Should be one of
|
||||
"lantiq,wdt"
|
||||
"lantiq,xrx100-wdt"
|
||||
"lantiq,xrx200-wdt", "lantiq,xrx100-wdt"
|
||||
"lantiq,falcon-wdt"
|
||||
- reg : Address of the watchdog block
|
||||
- lantiq,rcu : A phandle to the RCU syscon (required for
|
||||
"lantiq,falcon-wdt" and "lantiq,xrx100-wdt")
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Example for the watchdog on the xRX200 SoCs:
|
||||
watchdog@803f0 {
|
||||
compatible = "lantiq,xrx200-wdt", "lantiq,xrx100-wdt";
|
||||
reg = <0x803f0 0x10>;
|
||||
|
||||
lantiq,rcu = <&rcu0>;
|
||||
};
|
@ -2,7 +2,11 @@ Meson SoCs Watchdog timer
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : should be "amlogic,meson6-wdt" or "amlogic,meson8b-wdt"
|
||||
- compatible : depending on the SoC this should be one of:
|
||||
"amlogic,meson6-wdt" on Meson6 SoCs
|
||||
"amlogic,meson8-wdt" and "amlogic,meson6-wdt" on Meson8 SoCs
|
||||
"amlogic,meson8b-wdt" on Meson8b SoCs
|
||||
"amlogic,meson8m2-wdt" and "amlogic,meson8b-wdt" on Meson8m2 SoCs
|
||||
- reg : Specifies base physical address and size of the registers.
|
||||
|
||||
Example:
|
||||
|
@ -6,6 +6,8 @@ Required properties:
|
||||
"mediatek,mt2701-wdt", "mediatek,mt6589-wdt": for MT2701
|
||||
"mediatek,mt6589-wdt": for MT6589
|
||||
"mediatek,mt6797-wdt", "mediatek,mt6589-wdt": for MT6797
|
||||
"mediatek,mt7622-wdt", "mediatek,mt6589-wdt": for MT7622
|
||||
"mediatek,mt7623-wdt", "mediatek,mt6589-wdt": for MT7623
|
||||
|
||||
- reg : Specifies base physical address and size of the registers.
|
||||
|
||||
|
@ -6,6 +6,7 @@ Required properties:
|
||||
Examples with soctypes are:
|
||||
- "renesas,r8a7795-wdt" (R-Car H3)
|
||||
- "renesas,r8a7796-wdt" (R-Car M3-W)
|
||||
- "renesas,r8a77995-wdt" (R-Car D3)
|
||||
- "renesas,r7s72100-wdt" (RZ/A1)
|
||||
|
||||
When compatible with the generic version, nodes must list the SoC-specific
|
||||
|
@ -675,7 +675,7 @@ sub-domain of the parent domain.
|
||||
|
||||
Support for power domains is provided through the :c:member:`pm_domain` field of
|
||||
|struct device|. This field is a pointer to an object of type
|
||||
|struct dev_pm_domain|, defined in :file:`include/linux/pm.h``, providing a set
|
||||
|struct dev_pm_domain|, defined in :file:`include/linux/pm.h`, providing a set
|
||||
of power management callbacks analogous to the subsystem-level and device driver
|
||||
callbacks that are executed for the given device during all power transitions,
|
||||
instead of the respective subsystem-level callbacks. Specifically, if a
|
||||
|
@ -148,6 +148,13 @@ C. Boot options
|
||||
Actually, the underlying fb driver is totally ignorant of console
|
||||
rotation.
|
||||
|
||||
5. fbcon=margin:<color>
|
||||
|
||||
This option specifies the color of the margins. The margins are the
|
||||
leftover area at the right and the bottom of the screen that are not
|
||||
used by text. By default, this area will be black. The 'color' value
|
||||
is an integer number that depends on the framebuffer driver being used.
|
||||
|
||||
C. Attaching, Detaching and Unloading
|
||||
|
||||
Before going on how to attach, detach and unload the framebuffer console, an
|
||||
|
@ -41,6 +41,11 @@ Igor Mammedov (DFS support)
|
||||
Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code)
|
||||
Scott Lovenberg
|
||||
Pavel Shilovsky (for great work adding SMB2 support, and various SMB3 features)
|
||||
Aurelien Aptel (for DFS SMB3 work and some key bug fixes)
|
||||
Ronnie Sahlberg (for SMB3 xattr work and bug fixes)
|
||||
Shirish Pargaonkar (for many ACL patches over the years)
|
||||
Sachin Prabhu (many bug fixes, including for reconnect, copy offload and security)
|
||||
|
||||
|
||||
Test case and Bug Report contributors
|
||||
-------------------------------------
|
||||
|
@ -1,10 +1,14 @@
|
||||
The CIFS VFS support for Linux supports many advanced network filesystem
|
||||
features such as hierarchical dfs like namespace, hardlinks, locking and more.
|
||||
This module supports the SMB3 family of advanced network protocols (as well
|
||||
as older dialects, originally called "CIFS" or SMB1).
|
||||
|
||||
The CIFS VFS module for Linux supports many advanced network filesystem
|
||||
features such as hierarchical DFS like namespace, hardlinks, locking and more.
|
||||
It was designed to comply with the SNIA CIFS Technical Reference (which
|
||||
supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
|
||||
practical interoperability with Windows 2000, Windows XP, Samba and equivalent
|
||||
servers. This code was developed in participation with the Protocol Freedom
|
||||
Information Foundation.
|
||||
Information Foundation. CIFS and now SMB3 has now become a defacto
|
||||
standard for interoperating between Macs and Windows and major NAS appliances.
|
||||
|
||||
Please see
|
||||
http://protocolfreedom.org/ and
|
||||
@ -15,30 +19,11 @@ for more details.
|
||||
For questions or bug reports please contact:
|
||||
sfrench@samba.org (sfrench@us.ibm.com)
|
||||
|
||||
See the project page at: https://wiki.samba.org/index.php/LinuxCIFS_utils
|
||||
|
||||
Build instructions:
|
||||
==================
|
||||
For Linux 2.4:
|
||||
1) Get the kernel source (e.g.from http://www.kernel.org)
|
||||
and download the cifs vfs source (see the project page
|
||||
at http://us1.samba.org/samba/Linux_CIFS_client.html)
|
||||
and change directory into the top of the kernel directory
|
||||
then patch the kernel (e.g. "patch -p1 < cifs_24.patch")
|
||||
to add the cifs vfs to your kernel configure options if
|
||||
it has not already been added (e.g. current SuSE and UL
|
||||
users do not need to apply the cifs_24.patch since the cifs vfs is
|
||||
already in the kernel configure menu) and then
|
||||
mkdir linux/fs/cifs and then copy the current cifs vfs files from
|
||||
the cifs download to your kernel build directory e.g.
|
||||
|
||||
cp <cifs_download_dir>/fs/cifs/* to <kernel_download_dir>/fs/cifs
|
||||
|
||||
2) make menuconfig (or make xconfig)
|
||||
3) select cifs from within the network filesystem choices
|
||||
4) save and exit
|
||||
5) make dep
|
||||
6) make modules (or "make" if CIFS VFS not to be built as a module)
|
||||
|
||||
For Linux 2.6:
|
||||
For Linux:
|
||||
1) Download the kernel (e.g. from http://www.kernel.org)
|
||||
and change directory into the top of the kernel directory tree
|
||||
(e.g. /usr/src/linux-2.5.73)
|
||||
@ -61,16 +46,13 @@ would simply type "make install").
|
||||
If you do not have the utility mount.cifs (in the Samba 3.0 source tree and on
|
||||
the CIFS VFS web site) copy it to the same directory in which mount.smbfs and
|
||||
similar files reside (usually /sbin). Although the helper software is not
|
||||
required, mount.cifs is recommended. Eventually the Samba 3.0 utility program
|
||||
"net" may also be helpful since it may someday provide easier mount syntax for
|
||||
users who are used to Windows e.g.
|
||||
net use <mount point> <UNC name or cifs URL>
|
||||
required, mount.cifs is recommended. Most distros include a "cifs-utils"
|
||||
package that includes this utility so it is recommended to install this.
|
||||
|
||||
Note that running the Winbind pam/nss module (logon service) on all of your
|
||||
Linux clients is useful in mapping Uids and Gids consistently across the
|
||||
domain to the proper network user. The mount.cifs mount helper can be
|
||||
trivially built from Samba 3.0 or later source e.g. by executing:
|
||||
|
||||
gcc samba/source/client/mount.cifs.c -o mount.cifs
|
||||
found at cifs-utils.git on git.samba.org
|
||||
|
||||
If cifs is built as a module, then the size and number of network buffers
|
||||
and maximum number of simultaneous requests to one server can be configured.
|
||||
@ -79,6 +61,18 @@ Changing these from their defaults is not recommended. By executing modinfo
|
||||
on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made
|
||||
at module initialization time (by running insmod cifs.ko) can be seen.
|
||||
|
||||
Recommendations
|
||||
===============
|
||||
To improve security the SMB2.1 dialect or later (usually will get SMB3) is now
|
||||
the new default. To use old dialects (e.g. to mount Windows XP) use "vers=1.0"
|
||||
on mount (or vers=2.0 for Windows Vista). Note that the CIFS (vers=1.0) is
|
||||
much older and less secure than the default dialect SMB3 which includes
|
||||
many advanced security features such as downgrade attack detection
|
||||
and encrypted shares and stronger signing and authentication algorithms.
|
||||
There are additional mount options that may be helpful for SMB3 to get
|
||||
improved POSIX behavior (NB: can use vers=3.0 to force only SMB3, never 2.1):
|
||||
"mfsymlinks" and "cifsacl" and "idsfromsid"
|
||||
|
||||
Allowing User Mounts
|
||||
====================
|
||||
To permit users to mount and unmount over directories they own is possible
|
||||
@ -98,9 +92,7 @@ and execution of suid programs on the remote target would be enabled
|
||||
by default. This can be changed, as with nfs and other filesystems,
|
||||
by simply specifying "nosuid" among the mount options. For user mounts
|
||||
though to be able to pass the suid flag to mount requires rebuilding
|
||||
mount.cifs with the following flag:
|
||||
|
||||
gcc samba/source/client/mount.cifs.c -DCIFS_ALLOW_USR_SUID -o mount.cifs
|
||||
mount.cifs with the following flag: CIFS_ALLOW_USR_SUID
|
||||
|
||||
There is a corresponding manual page for cifs mounting in the Samba 3.0 and
|
||||
later source tree in docs/manpages/mount.cifs.8
|
||||
@ -189,18 +181,18 @@ applications running on the same server as Samba.
|
||||
Use instructions:
|
||||
================
|
||||
Once the CIFS VFS support is built into the kernel or installed as a module
|
||||
(cifs.o), you can use mount syntax like the following to access Samba or Windows
|
||||
servers:
|
||||
(cifs.ko), you can use mount syntax like the following to access Samba or
|
||||
Mac or Windows servers:
|
||||
|
||||
mount -t cifs //9.53.216.11/e$ /mnt -o user=myname,pass=mypassword
|
||||
mount -t cifs //9.53.216.11/e$ /mnt -o username=myname,password=mypassword
|
||||
|
||||
Before -o the option -v may be specified to make the mount.cifs
|
||||
mount helper display the mount steps more verbosely.
|
||||
After -o the following commonly used cifs vfs specific options
|
||||
are supported:
|
||||
|
||||
user=<username>
|
||||
pass=<password>
|
||||
username=<username>
|
||||
password=<password>
|
||||
domain=<domain name>
|
||||
|
||||
Other cifs mount options are described below. Use of TCP names (in addition to
|
||||
@ -246,13 +238,16 @@ the Server's registry. Samba starting with version 3.10 will allow such
|
||||
filenames (ie those which contain valid Linux characters, which normally
|
||||
would be forbidden for Windows/CIFS semantics) as long as the server is
|
||||
configured for Unix Extensions (and the client has not disabled
|
||||
/proc/fs/cifs/LinuxExtensionsEnabled).
|
||||
|
||||
/proc/fs/cifs/LinuxExtensionsEnabled). In addition the mount option
|
||||
"mapposix" can be used on CIFS (vers=1.0) to force the mapping of
|
||||
illegal Windows/NTFS/SMB characters to a remap range (this mount parm
|
||||
is the default for SMB3). This remap ("mapposix") range is also
|
||||
compatible with Mac (and "Services for Mac" on some older Windows).
|
||||
|
||||
CIFS VFS Mount Options
|
||||
======================
|
||||
A partial list of the supported mount options follows:
|
||||
user The user name to use when trying to establish
|
||||
username The user name to use when trying to establish
|
||||
the CIFS session.
|
||||
password The user password. If the mount helper is
|
||||
installed, the user will be prompted for password
|
||||
|
@ -1,4 +1,4 @@
|
||||
Version 2.03 August 1, 2014
|
||||
Version 2.04 September 13, 2017
|
||||
|
||||
A Partial List of Missing Features
|
||||
==================================
|
||||
@ -8,73 +8,69 @@ for visible, important contributions to this module. Here
|
||||
is a partial list of the known problems and missing features:
|
||||
|
||||
a) SMB3 (and SMB3.02) missing optional features:
|
||||
- RDMA
|
||||
- RDMA (started)
|
||||
- multichannel (started)
|
||||
- directory leases (improved metadata caching)
|
||||
- T10 copy offload (copy chunk is only mechanism supported)
|
||||
- encrypted shares
|
||||
|
||||
b) improved sparse file support
|
||||
|
||||
c) Directory entry caching relies on a 1 second timer, rather than
|
||||
using FindNotify or equivalent. - (started)
|
||||
using Directory Leases
|
||||
|
||||
d) quota support (needs minor kernel change since quota calls
|
||||
to make it to network filesystems or deviceless filesystems)
|
||||
|
||||
e) improve support for very old servers (OS/2 and Win9x for example)
|
||||
Including support for changing the time remotely (utimes command).
|
||||
e) Better optimize open to reduce redundant opens (using reference
|
||||
counts more) and to improve use of compounding in SMB3 to reduce
|
||||
number of roundtrips.
|
||||
|
||||
f) hook lower into the sockets api (as NFS/SunRPC does) to avoid the
|
||||
extra copy in/out of the socket buffers in some cases.
|
||||
|
||||
g) Better optimize open (and pathbased setfilesize) to reduce the
|
||||
oplock breaks coming from windows srv. Piggyback identical file
|
||||
opens on top of each other by incrementing reference count rather
|
||||
than resending (helps reduce server resource utilization and avoid
|
||||
spurious oplock breaks).
|
||||
|
||||
h) Add support for storing symlink info to Windows servers
|
||||
in the Extended Attribute format their SFU clients would recognize.
|
||||
|
||||
i) Finish inotify support so kde and gnome file list windows
|
||||
f) Finish inotify support so kde and gnome file list windows
|
||||
will autorefresh (partially complete by Asser). Needs minor kernel
|
||||
vfs change to support removing D_NOTIFY on a file.
|
||||
|
||||
j) Add GUI tool to configure /proc/fs/cifs settings and for display of
|
||||
g) Add GUI tool to configure /proc/fs/cifs settings and for display of
|
||||
the CIFS statistics (started)
|
||||
|
||||
k) implement support for security and trusted categories of xattrs
|
||||
h) implement support for security and trusted categories of xattrs
|
||||
(requires minor protocol extension) to enable better support for SELINUX
|
||||
|
||||
l) Implement O_DIRECT flag on open (already supported on mount)
|
||||
i) Implement O_DIRECT flag on open (already supported on mount)
|
||||
|
||||
m) Create UID mapping facility so server UIDs can be mapped on a per
|
||||
j) Create UID mapping facility so server UIDs can be mapped on a per
|
||||
mount or a per server basis to client UIDs or nobody if no mapping
|
||||
exists. This is helpful when Unix extensions are negotiated to
|
||||
allow better permission checking when UIDs differ on the server
|
||||
and client. Add new protocol request to the CIFS protocol
|
||||
standard for asking the server for the corresponding name of a
|
||||
particular uid.
|
||||
exists. Also better integration with winbind for resolving SID owners
|
||||
|
||||
n) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for this too)
|
||||
k) Add tools to take advantage of more smb3 specific ioctls and features
|
||||
|
||||
o) mount check for unmatched uids
|
||||
l) encrypted file support
|
||||
|
||||
p) Add support for new vfs entry point for fallocate
|
||||
m) improved stats gathering, tools (perhaps integration with nfsometer?)
|
||||
|
||||
q) Add tools to take advantage of cifs/smb3 specific ioctls and features
|
||||
such as "CopyChunk" (fast server side file copy)
|
||||
n) allow setting more NTFS/SMB3 file attributes remotely (currently limited to compressed
|
||||
file attribute via chflags) and improve user space tools for managing and
|
||||
viewing them.
|
||||
|
||||
r) encrypted file support
|
||||
o) mount helper GUI (to simplify the various configuration options on mount)
|
||||
|
||||
s) improved stats gathering, tools (perhaps integration with nfsometer?)
|
||||
p) autonegotiation of dialects (offering more than one dialect ie SMB3.02,
|
||||
SMB3, SMB2.1 not just SMB3).
|
||||
|
||||
t) allow setting more NTFS/SMB3 file attributes remotely (currently limited to compressed
|
||||
file attribute via chflags)
|
||||
q) Allow mount.cifs to be more verbose in reporting errors with dialect
|
||||
or unsupported feature errors.
|
||||
|
||||
u) mount helper GUI (to simplify the various configuration options on mount)
|
||||
r) updating cifs documentation, and user guid.
|
||||
|
||||
s) Addressing bugs found by running a broader set of xfstests in standard
|
||||
file system xfstest suite.
|
||||
|
||||
t) split cifs and smb3 support into separate modules so legacy (and less
|
||||
secure) CIFS dialect can be disabled in environments that don't need it
|
||||
and simplify the code.
|
||||
|
||||
u) Finish up SMB3.1.1 dialect support
|
||||
|
||||
v) POSIX Extensions for SMB3.1.1
|
||||
|
||||
KNOWN BUGS
|
||||
====================================
|
||||
|
@ -1,24 +1,28 @@
|
||||
This is the client VFS module for the Common Internet File System
|
||||
(CIFS) protocol which is the successor to the Server Message Block
|
||||
This is the client VFS module for the SMB3 NAS protocol as well
|
||||
older dialects such as the Common Internet File System (CIFS)
|
||||
protocol which was the successor to the Server Message Block
|
||||
(SMB) protocol, the native file sharing mechanism for most early
|
||||
PC operating systems. New and improved versions of CIFS are now
|
||||
called SMB2 and SMB3. These dialects are also supported by the
|
||||
CIFS VFS module. CIFS is fully supported by network
|
||||
file servers such as Windows 2000, 2003, 2008 and 2012
|
||||
file servers such as Windows 2000, 2003, 2008, 2012 and 2016
|
||||
as well by Samba (which provides excellent CIFS
|
||||
server support for Linux and many other operating systems), so
|
||||
server support for Linux and many other operating systems), Apple
|
||||
systems, as well as most Network Attached Storage vendors, so
|
||||
this network filesystem client can mount to a wide variety of
|
||||
servers.
|
||||
|
||||
The intent of this module is to provide the most advanced network
|
||||
file system function for CIFS compliant servers, including better
|
||||
POSIX compliance, secure per-user session establishment, high
|
||||
performance safe distributed caching (oplock), optional packet
|
||||
file system function for SMB3 compliant servers, including advanced
|
||||
security features, excellent parallelized high performance i/o, better
|
||||
POSIX compliance, secure per-user session establishment, encryption,
|
||||
high performance safe distributed caching (leases/oplocks), optional packet
|
||||
signing, large files, Unicode support and other internationalization
|
||||
improvements. Since both Samba server and this filesystem client support
|
||||
the CIFS Unix extensions, the combination can provide a reasonable
|
||||
alternative to NFSv4 for fileserving in some Linux to Linux environments,
|
||||
not just in Linux to Windows environments.
|
||||
the CIFS Unix extensions (and in the future SMB3 POSIX extensions),
|
||||
the combination can provide a reasonable alternative to other network and
|
||||
cluster file systems for fileserving in some Linux to Linux environments,
|
||||
not just in Linux to Windows (or Linux to Mac) environments.
|
||||
|
||||
This filesystem has an mount utility (mount.cifs) that can be obtained from
|
||||
|
||||
|
@ -45,14 +45,11 @@ upstream version of the kernel client.
|
||||
BUILDING THE USERSPACE FILESYSTEM ON A SINGLE SERVER
|
||||
====================================================
|
||||
|
||||
When Orangefs is upstream, "--with-kernel" shouldn't be needed, but
|
||||
until then the path to where the kernel with the Orangefs kernel client
|
||||
patch was built is needed to ensure that pvfs2-client-core (the bridge
|
||||
between kernel space and user space) will build properly. You can omit
|
||||
--prefix if you don't care that things are sprinkled around in
|
||||
/usr/local.
|
||||
You can omit --prefix if you don't care that things are sprinkled around in
|
||||
/usr/local. As of version 2.9.6, Orangefs uses Berkeley DB by default, we
|
||||
will probably be changing the default to lmdb soon.
|
||||
|
||||
./configure --prefix=/opt/ofs --with-kernel=/path/to/orangefs/kernel
|
||||
./configure --prefix=/opt/ofs --with-db-backend=lmdb
|
||||
|
||||
make
|
||||
|
||||
@ -82,9 +79,6 @@ prove things are working with:
|
||||
|
||||
/opt/osf/bin/pvfs2-ls /mymountpoint
|
||||
|
||||
You might not want to enforce selinux, it doesn't seem to matter by
|
||||
linux 3.11...
|
||||
|
||||
If stuff seems to be working, turn on the client core:
|
||||
/opt/osf/sbin/pvfs2-client -p /opt/osf/sbin/pvfs2-client-core
|
||||
|
||||
|
@ -228,7 +228,7 @@ anything from oops to silent memory corruption.
|
||||
---
|
||||
[mandatory]
|
||||
|
||||
FS_NOMOUNT is gone. If you use it - just set MS_NOUSER in flags
|
||||
FS_NOMOUNT is gone. If you use it - just set SB_NOUSER in flags
|
||||
(see rootfs for one kind of solution and bdev/socket/pipe for another).
|
||||
|
||||
---
|
||||
|
@ -45,7 +45,7 @@ in many more places. There's xt_bpf for netfilter, cls_bpf in the kernel
|
||||
qdisc layer, SECCOMP-BPF (SECure COMPuting [1]), and lots of other places
|
||||
such as team driver, PTP code, etc where BPF is being used.
|
||||
|
||||
[1] Documentation/prctl/seccomp_filter.txt
|
||||
[1] Documentation/userspace-api/seccomp_filter.rst
|
||||
|
||||
Original BPF paper:
|
||||
|
||||
@ -337,7 +337,7 @@ Examples for low-level BPF:
|
||||
jeq #14, good /* __NR_rt_sigprocmask */
|
||||
jeq #13, good /* __NR_rt_sigaction */
|
||||
jeq #35, good /* __NR_nanosleep */
|
||||
bad: ret #0 /* SECCOMP_RET_KILL */
|
||||
bad: ret #0 /* SECCOMP_RET_KILL_THREAD */
|
||||
good: ret #0x7fff0000 /* SECCOMP_RET_ALLOW */
|
||||
|
||||
The above example code can be placed into a file (here called "foo"), and
|
||||
|
@ -1680,6 +1680,9 @@ accept_dad - INTEGER
|
||||
2: Enable DAD, and disable IPv6 operation if MAC-based duplicate
|
||||
link-local address has been found.
|
||||
|
||||
DAD operation and mode on a given interface will be selected according
|
||||
to the maximum value of conf/{all,interface}/accept_dad.
|
||||
|
||||
force_tllao - BOOLEAN
|
||||
Enable sending the target link-layer address option even when
|
||||
responding to a unicast neighbor solicitation.
|
||||
@ -1727,16 +1730,23 @@ suppress_frag_ndisc - INTEGER
|
||||
|
||||
optimistic_dad - BOOLEAN
|
||||
Whether to perform Optimistic Duplicate Address Detection (RFC 4429).
|
||||
0: disabled (default)
|
||||
1: enabled
|
||||
0: disabled (default)
|
||||
1: enabled
|
||||
|
||||
Optimistic Duplicate Address Detection for the interface will be enabled
|
||||
if at least one of conf/{all,interface}/optimistic_dad is set to 1,
|
||||
it will be disabled otherwise.
|
||||
|
||||
use_optimistic - BOOLEAN
|
||||
If enabled, do not classify optimistic addresses as deprecated during
|
||||
source address selection. Preferred addresses will still be chosen
|
||||
before optimistic addresses, subject to other ranking in the source
|
||||
address selection algorithm.
|
||||
0: disabled (default)
|
||||
1: enabled
|
||||
0: disabled (default)
|
||||
1: enabled
|
||||
|
||||
This will be enabled if at least one of
|
||||
conf/{all,interface}/use_optimistic is set to 1, disabled otherwise.
|
||||
|
||||
stable_secret - IPv6 address
|
||||
This IPv6 address will be used as a secret to generate IPv6
|
||||
|
@ -13,42 +13,42 @@ an example setup using a data-center-class switch ASIC chip. Other setups
|
||||
with SR-IOV or soft switches, such as OVS, are possible.
|
||||
|
||||
|
||||
User-space tools
|
||||
User-space tools
|
||||
|
||||
user space |
|
||||
+-------------------------------------------------------------------+
|
||||
kernel | Netlink
|
||||
|
|
||||
+--------------+-------------------------------+
|
||||
| Network stack |
|
||||
| (Linux) |
|
||||
| |
|
||||
+----------------------------------------------+
|
||||
user space |
|
||||
+-------------------------------------------------------------------+
|
||||
kernel | Netlink
|
||||
|
|
||||
+--------------+-------------------------------+
|
||||
| Network stack |
|
||||
| (Linux) |
|
||||
| |
|
||||
+----------------------------------------------+
|
||||
|
||||
sw1p2 sw1p4 sw1p6
|
||||
sw1p1 + sw1p3 + sw1p5 + eth1
|
||||
+ | + | + | +
|
||||
| | | | | | |
|
||||
+--+----+----+----+-+--+----+---+ +-----+-----+
|
||||
| Switch driver | | mgmt |
|
||||
| (this document) | | driver |
|
||||
| | | |
|
||||
+--------------+----------------+ +-----------+
|
||||
|
|
||||
kernel | HW bus (eg PCI)
|
||||
+-------------------------------------------------------------------+
|
||||
hardware |
|
||||
+--------------+---+------------+
|
||||
| Switch device (sw1) |
|
||||
| +----+ +--------+
|
||||
| | v offloaded data path | mgmt port
|
||||
| | | |
|
||||
+--|----|----+----+----+----+---+
|
||||
| | | | | |
|
||||
+ + + + + +
|
||||
p1 p2 p3 p4 p5 p6
|
||||
sw1p1 + sw1p3 + sw1p5 + eth1
|
||||
+ | + | + | +
|
||||
| | | | | | |
|
||||
+--+----+----+----+----+----+---+ +-----+-----+
|
||||
| Switch driver | | mgmt |
|
||||
| (this document) | | driver |
|
||||
| | | |
|
||||
+--------------+----------------+ +-----------+
|
||||
|
|
||||
kernel | HW bus (eg PCI)
|
||||
+-------------------------------------------------------------------+
|
||||
hardware |
|
||||
+--------------+----------------+
|
||||
| Switch device (sw1) |
|
||||
| +----+ +--------+
|
||||
| | v offloaded data path | mgmt port
|
||||
| | | |
|
||||
+--|----|----+----+----+----+---+
|
||||
| | | | | |
|
||||
+ + + + + +
|
||||
p1 p2 p3 p4 p5 p6
|
||||
|
||||
front-panel ports
|
||||
front-panel ports
|
||||
|
||||
|
||||
Fig 1.
|
||||
|
@ -75,6 +75,7 @@ show up in /proc/sys/kernel:
|
||||
- reboot-cmd [ SPARC only ]
|
||||
- rtsig-max
|
||||
- rtsig-nr
|
||||
- seccomp/ ==> Documentation/userspace-api/seccomp_filter.rst
|
||||
- sem
|
||||
- sem_next_id [ sysv ipc ]
|
||||
- sg-big-buff [ generic SCSI device (sg) ]
|
||||
|
@ -87,11 +87,16 @@ Return values
|
||||
A seccomp filter may return any of the following values. If multiple
|
||||
filters exist, the return value for the evaluation of a given system
|
||||
call will always use the highest precedent value. (For example,
|
||||
``SECCOMP_RET_KILL`` will always take precedence.)
|
||||
``SECCOMP_RET_KILL_PROCESS`` will always take precedence.)
|
||||
|
||||
In precedence order, they are:
|
||||
|
||||
``SECCOMP_RET_KILL``:
|
||||
``SECCOMP_RET_KILL_PROCESS``:
|
||||
Results in the entire process exiting immediately without executing
|
||||
the system call. The exit status of the task (``status & 0x7f``)
|
||||
will be ``SIGSYS``, not ``SIGKILL``.
|
||||
|
||||
``SECCOMP_RET_KILL_THREAD``:
|
||||
Results in the task exiting immediately without executing the
|
||||
system call. The exit status of the task (``status & 0x7f``) will
|
||||
be ``SIGSYS``, not ``SIGKILL``.
|
||||
@ -141,6 +146,15 @@ In precedence order, they are:
|
||||
allow use of ptrace, even of other sandboxed processes, without
|
||||
extreme care; ptracers can use this mechanism to escape.)
|
||||
|
||||
``SECCOMP_RET_LOG``:
|
||||
Results in the system call being executed after it is logged. This
|
||||
should be used by application developers to learn which syscalls their
|
||||
application needs without having to iterate through multiple test and
|
||||
development cycles to build the list.
|
||||
|
||||
This action will only be logged if "log" is present in the
|
||||
actions_logged sysctl string.
|
||||
|
||||
``SECCOMP_RET_ALLOW``:
|
||||
Results in the system call being executed.
|
||||
|
||||
@ -169,7 +183,41 @@ The ``samples/seccomp/`` directory contains both an x86-specific example
|
||||
and a more generic example of a higher level macro interface for BPF
|
||||
program generation.
|
||||
|
||||
Sysctls
|
||||
=======
|
||||
|
||||
Seccomp's sysctl files can be found in the ``/proc/sys/kernel/seccomp/``
|
||||
directory. Here's a description of each file in that directory:
|
||||
|
||||
``actions_avail``:
|
||||
A read-only ordered list of seccomp return values (refer to the
|
||||
``SECCOMP_RET_*`` macros above) in string form. The ordering, from
|
||||
left-to-right, is the least permissive return value to the most
|
||||
permissive return value.
|
||||
|
||||
The list represents the set of seccomp return values supported
|
||||
by the kernel. A userspace program may use this list to
|
||||
determine if the actions found in the ``seccomp.h``, when the
|
||||
program was built, differs from the set of actions actually
|
||||
supported in the current running kernel.
|
||||
|
||||
``actions_logged``:
|
||||
A read-write ordered list of seccomp return values (refer to the
|
||||
``SECCOMP_RET_*`` macros above) that are allowed to be logged. Writes
|
||||
to the file do not need to be in ordered form but reads from the file
|
||||
will be ordered in the same way as the actions_avail sysctl.
|
||||
|
||||
It is important to note that the value of ``actions_logged`` does not
|
||||
prevent certain actions from being logged when the audit subsystem is
|
||||
configured to audit a task. If the action is not found in
|
||||
``actions_logged`` list, the final decision on whether to audit the
|
||||
action for that task is ultimately left up to the audit subsystem to
|
||||
decide for all seccomp return values other than ``SECCOMP_RET_ALLOW``.
|
||||
|
||||
The ``allow`` string is not accepted in the ``actions_logged`` sysctl
|
||||
as it is not possible to log ``SECCOMP_RET_ALLOW`` actions. Attempting
|
||||
to write ``allow`` to the sysctl will result in an EINVAL being
|
||||
returned.
|
||||
|
||||
Adding architecture support
|
||||
===========================
|
||||
|
@ -117,7 +117,7 @@ nowayout: Watchdog cannot be stopped once started
|
||||
-------------------------------------------------
|
||||
iTCO_wdt:
|
||||
heartbeat: Watchdog heartbeat in seconds.
|
||||
(5<=heartbeat<=74 (TCO v1) or 1226 (TCO v2), default=30)
|
||||
(2<heartbeat<39 (TCO v1) or 613 (TCO v2), default=30)
|
||||
nowayout: Watchdog cannot be stopped once started
|
||||
(default=kernel config parameter)
|
||||
-------------------------------------------------
|
||||
|
52
MAINTAINERS
52
MAINTAINERS
@ -352,6 +352,18 @@ L: linux-acpi@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/acpi/arm64
|
||||
|
||||
ACPI PMIC DRIVERS
|
||||
M: "Rafael J. Wysocki" <rjw@rjwysocki.net>
|
||||
M: Len Brown <lenb@kernel.org>
|
||||
R: Andy Shevchenko <andy@infradead.org>
|
||||
R: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
Q: https://patchwork.kernel.org/project/linux-acpi/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
|
||||
B: https://bugzilla.kernel.org
|
||||
S: Supported
|
||||
F: drivers/acpi/pmic/
|
||||
|
||||
ACPI THERMAL DRIVER
|
||||
M: Zhang Rui <rui.zhang@intel.com>
|
||||
L: linux-acpi@vger.kernel.org
|
||||
@ -644,6 +656,11 @@ ALPS PS/2 TOUCHPAD DRIVER
|
||||
R: Pali Rohár <pali.rohar@gmail.com>
|
||||
F: drivers/input/mouse/alps.*
|
||||
|
||||
ALTERA I2C CONTROLLER DRIVER
|
||||
M: Thor Thayer <thor.thayer@linux.intel.com>
|
||||
S: Maintained
|
||||
F: drivers/i2c/busses/i2c-altera.c
|
||||
|
||||
ALTERA MAILBOX DRIVER
|
||||
M: Ley Foon Tan <lftan@altera.com>
|
||||
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
||||
@ -2848,7 +2865,6 @@ S: Supported
|
||||
F: drivers/scsi/bnx2i/
|
||||
|
||||
BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
|
||||
M: Yuval Mintz <Yuval.Mintz@cavium.com>
|
||||
M: Ariel Elior <ariel.elior@cavium.com>
|
||||
M: everest-linux-l2@cavium.com
|
||||
L: netdev@vger.kernel.org
|
||||
@ -6638,8 +6654,8 @@ M: Alexander Aring <alex.aring@gmail.com>
|
||||
M: Stefan Schmidt <stefan@osg.samsung.com>
|
||||
L: linux-wpan@vger.kernel.org
|
||||
W: http://wpan.cakelab.org/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sschmidt/wpan-next.git
|
||||
S: Maintained
|
||||
F: net/ieee802154/
|
||||
F: net/mac802154/
|
||||
@ -7712,6 +7728,7 @@ M: John Crispin <john@phrozen.org>
|
||||
L: linux-mips@linux-mips.org
|
||||
S: Maintained
|
||||
F: arch/mips/lantiq
|
||||
F: drivers/soc/lantiq
|
||||
|
||||
LAPB module
|
||||
L: linux-x25@vger.kernel.org
|
||||
@ -8580,6 +8597,12 @@ M: Sean Wang <sean.wang@mediatek.com>
|
||||
S: Maintained
|
||||
F: drivers/media/rc/mtk-cir.c
|
||||
|
||||
MEDIATEK PMIC LED DRIVER
|
||||
M: Sean Wang <sean.wang@mediatek.com>
|
||||
S: Maintained
|
||||
F: drivers/leds/leds-mt6323.c
|
||||
F: Documentation/devicetree/bindings/leds/leds-mt6323.txt
|
||||
|
||||
MEDIATEK ETHERNET DRIVER
|
||||
M: Felix Fietkau <nbd@openwrt.org>
|
||||
M: John Crispin <john@phrozen.org>
|
||||
@ -8977,6 +9000,7 @@ M: Paul Burton <paul.burton@imgtec.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
S: Supported
|
||||
F: arch/mips/generic/
|
||||
F: arch/mips/tools/generic-board-config.sh
|
||||
|
||||
MIPS/LOONGSON1 ARCHITECTURE
|
||||
M: Keguang Zhang <keguang.zhang@gmail.com>
|
||||
@ -8987,6 +9011,13 @@ F: arch/mips/include/asm/mach-loongson32/
|
||||
F: drivers/*/*loongson1*
|
||||
F: drivers/*/*/*loongson1*
|
||||
|
||||
MIPS RINT INSTRUCTION EMULATION
|
||||
M: Aleksandar Markovic <aleksandar.markovic@imgtec.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
S: Supported
|
||||
F: arch/mips/math-emu/sp_rint.c
|
||||
F: arch/mips/math-emu/dp_rint.c
|
||||
|
||||
MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
|
||||
M: Hans Verkuil <hverkuil@xs4all.nl>
|
||||
L: linux-media@vger.kernel.org
|
||||
@ -9864,6 +9895,12 @@ F: drivers/regulator/twl-regulator.c
|
||||
F: drivers/regulator/twl6030-regulator.c
|
||||
F: include/linux/i2c-omap.h
|
||||
|
||||
ONION OMEGA2+ BOARD
|
||||
M: Harvey Hunt <harveyhuntnexus@gmail.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
S: Maintained
|
||||
F: arch/mips/boot/dts/ralink/omega2p.dts
|
||||
|
||||
OMFS FILESYSTEM
|
||||
M: Bob Copeland <me@bobcopeland.com>
|
||||
L: linux-karma-devel@lists.sourceforge.net
|
||||
@ -11027,7 +11064,6 @@ S: Supported
|
||||
F: drivers/scsi/qedi/
|
||||
|
||||
QLOGIC QL4xxx ETHERNET DRIVER
|
||||
M: Yuval Mintz <Yuval.Mintz@cavium.com>
|
||||
M: Ariel Elior <Ariel.Elior@cavium.com>
|
||||
M: everest-linux-l2@cavium.com
|
||||
L: netdev@vger.kernel.org
|
||||
@ -11415,6 +11451,8 @@ RENESAS ETHERNET DRIVERS
|
||||
R: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
|
||||
L: netdev@vger.kernel.org
|
||||
L: linux-renesas-soc@vger.kernel.org
|
||||
F: Documentation/devicetree/bindings/net/renesas,*.txt
|
||||
F: Documentation/devicetree/bindings/net/sh_eth.txt
|
||||
F: drivers/net/ethernet/renesas/
|
||||
F: include/linux/sh_eth.h
|
||||
|
||||
@ -14385,6 +14423,12 @@ L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/vmxnet3/
|
||||
|
||||
VOCORE VOCORE2 BOARD
|
||||
M: Harvey Hunt <harveyhuntnexus@gmail.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
S: Maintained
|
||||
F: arch/mips/boot/dts/ralink/vocore2.dts
|
||||
|
||||
VOLTAGE AND CURRENT REGULATOR FRAMEWORK
|
||||
M: Liam Girdwood <lgirdwood@gmail.com>
|
||||
M: Mark Brown <broonie@kernel.org>
|
||||
|
34
Makefile
34
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 13
|
||||
PATCHLEVEL = 14
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION =
|
||||
EXTRAVERSION = -rc3
|
||||
NAME = Fearless Coyote
|
||||
|
||||
# *DOCUMENTATION*
|
||||
@ -130,8 +130,8 @@ endif
|
||||
ifneq ($(KBUILD_OUTPUT),)
|
||||
# check that the output directory actually exists
|
||||
saved-output := $(KBUILD_OUTPUT)
|
||||
KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
|
||||
&& /bin/pwd)
|
||||
$(shell [ -d $(KBUILD_OUTPUT) ] || mkdir -p $(KBUILD_OUTPUT))
|
||||
KBUILD_OUTPUT := $(realpath $(KBUILD_OUTPUT))
|
||||
$(if $(KBUILD_OUTPUT),, \
|
||||
$(error failed to create output directory "$(saved-output)"))
|
||||
|
||||
@ -978,7 +978,7 @@ ifdef CONFIG_HEADERS_CHECK
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile headers_check
|
||||
endif
|
||||
ifdef CONFIG_GDB_SCRIPTS
|
||||
$(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py
|
||||
$(Q)ln -fsn $(abspath $(srctree)/scripts/gdb/vmlinux-gdb.py)
|
||||
endif
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
||||
@ -1128,16 +1128,6 @@ headerdep:
|
||||
$(Q)find $(srctree)/include/ -name '*.h' | xargs --max-args 1 \
|
||||
$(srctree)/scripts/headerdep.pl -I$(srctree)/include
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Firmware install
|
||||
INSTALL_FW_PATH=$(INSTALL_MOD_PATH)/lib/firmware
|
||||
export INSTALL_FW_PATH
|
||||
|
||||
PHONY += firmware_install
|
||||
firmware_install:
|
||||
@mkdir -p $(objtree)/firmware
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_install
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Kernel headers
|
||||
|
||||
@ -1182,11 +1172,11 @@ headers_check: headers_install
|
||||
|
||||
PHONY += kselftest
|
||||
kselftest:
|
||||
$(Q)$(MAKE) -C tools/testing/selftests run_tests
|
||||
$(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests
|
||||
|
||||
PHONY += kselftest-clean
|
||||
kselftest-clean:
|
||||
$(Q)$(MAKE) -C tools/testing/selftests clean
|
||||
$(Q)$(MAKE) -C $(srctree)/tools/testing/selftests clean
|
||||
|
||||
PHONY += kselftest-merge
|
||||
kselftest-merge:
|
||||
@ -1216,7 +1206,6 @@ modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
||||
$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
|
||||
@$(kecho) ' Building modules, stage 2.';
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
|
||||
|
||||
modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
|
||||
$(Q)$(AWK) '!x[$$0]++' $^ > $(objtree)/modules.builtin
|
||||
@ -1238,7 +1227,7 @@ _modinst_:
|
||||
@rm -rf $(MODLIB)/kernel
|
||||
@rm -f $(MODLIB)/source
|
||||
@mkdir -p $(MODLIB)/kernel
|
||||
@ln -s `cd $(srctree) && /bin/pwd` $(MODLIB)/source
|
||||
@ln -s $(abspath $(srctree)) $(MODLIB)/source
|
||||
@if [ ! $(objtree) -ef $(MODLIB)/build ]; then \
|
||||
rm -f $(MODLIB)/build ; \
|
||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||
@ -1252,7 +1241,6 @@ _modinst_:
|
||||
# boot script depmod is the master version.
|
||||
PHONY += _modinst_post
|
||||
_modinst_post: _modinst_
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modinst
|
||||
$(call cmd,depmod)
|
||||
|
||||
ifeq ($(CONFIG_MODULE_SIG), y)
|
||||
@ -1375,8 +1363,6 @@ help:
|
||||
@echo '* vmlinux - Build the bare kernel'
|
||||
@echo '* modules - Build all modules'
|
||||
@echo ' modules_install - Install all modules to INSTALL_MOD_PATH (default: /)'
|
||||
@echo ' firmware_install- Install all firmware to INSTALL_FW_PATH'
|
||||
@echo ' (default: $$(INSTALL_MOD_PATH)/lib/firmware)'
|
||||
@echo ' dir/ - Build all files in dir and below'
|
||||
@echo ' dir/file.[ois] - Build specified target only'
|
||||
@echo ' dir/file.ll - Build the LLVM assembly file'
|
||||
@ -1630,11 +1616,11 @@ image_name:
|
||||
# Clear a bunch of variables before executing the submake
|
||||
tools/: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/
|
||||
|
||||
tools/%: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $*
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/ $*
|
||||
|
||||
# Single targets
|
||||
# ---------------------------------------------------------------------------
|
||||
|
@ -78,9 +78,6 @@ struct task_struct;
|
||||
|
||||
#endif
|
||||
|
||||
#define copy_segments(tsk, mm) do { } while (0)
|
||||
#define release_segments(mm) do { } while (0)
|
||||
|
||||
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->ret)
|
||||
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp)
|
||||
|
||||
|
@ -510,7 +510,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
||||
goto done;
|
||||
}
|
||||
|
||||
str = (char *)__get_free_page(GFP_TEMPORARY);
|
||||
str = (char *)__get_free_page(GFP_KERNEL);
|
||||
if (!str)
|
||||
goto done;
|
||||
|
||||
|
@ -178,7 +178,7 @@ void show_regs(struct pt_regs *regs)
|
||||
struct callee_regs *cregs;
|
||||
char *buf;
|
||||
|
||||
buf = (char *)__get_free_page(GFP_TEMPORARY);
|
||||
buf = (char *)__get_free_page(GFP_KERNEL);
|
||||
if (!buf)
|
||||
return;
|
||||
|
||||
|
@ -267,15 +267,19 @@
|
||||
clock-frequency = <400000>;
|
||||
|
||||
as3645a@30 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x30>;
|
||||
compatible = "ams,as3645a";
|
||||
flash {
|
||||
flash@0 {
|
||||
reg = <0x0>;
|
||||
flash-timeout-us = <150000>;
|
||||
flash-max-microamp = <320000>;
|
||||
led-max-microamp = <60000>;
|
||||
peak-current-limit = <1750000>;
|
||||
ams,input-max-microamp = <1750000>;
|
||||
};
|
||||
indicator {
|
||||
indicator@1 {
|
||||
reg = <0x1>;
|
||||
led-max-microamp = <10000>;
|
||||
};
|
||||
};
|
||||
|
@ -139,11 +139,10 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
|
||||
#define TIF_NEED_RESCHED 1 /* rescheduling necessary */
|
||||
#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
|
||||
#define TIF_UPROBE 3 /* breakpointed or singlestepping */
|
||||
#define TIF_FSCHECK 4 /* Check FS is USER_DS on return */
|
||||
#define TIF_SYSCALL_TRACE 5 /* syscall trace active */
|
||||
#define TIF_SYSCALL_AUDIT 6 /* syscall auditing active */
|
||||
#define TIF_SYSCALL_TRACEPOINT 7 /* syscall tracepoint instrumentation */
|
||||
#define TIF_SECCOMP 8 /* seccomp syscall filtering active */
|
||||
#define TIF_SYSCALL_TRACE 4 /* syscall trace active */
|
||||
#define TIF_SYSCALL_AUDIT 5 /* syscall auditing active */
|
||||
#define TIF_SYSCALL_TRACEPOINT 6 /* syscall tracepoint instrumentation */
|
||||
#define TIF_SECCOMP 7 /* seccomp syscall filtering active */
|
||||
|
||||
#define TIF_NOHZ 12 /* in adaptive nohz mode */
|
||||
#define TIF_USING_IWMMXT 17
|
||||
@ -154,7 +153,6 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
|
||||
#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
|
||||
#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
|
||||
#define _TIF_UPROBE (1 << TIF_UPROBE)
|
||||
#define _TIF_FSCHECK (1 << TIF_FSCHECK)
|
||||
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
|
||||
#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
|
||||
#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
|
||||
@ -168,9 +166,8 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *,
|
||||
/*
|
||||
* Change these and you break ASM code in entry-common.S
|
||||
*/
|
||||
#define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
|
||||
_TIF_NOTIFY_RESUME | _TIF_UPROBE | \
|
||||
_TIF_FSCHECK)
|
||||
#define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
|
||||
_TIF_NOTIFY_RESUME | _TIF_UPROBE)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __ASM_ARM_THREAD_INFO_H */
|
||||
|
@ -70,8 +70,6 @@ static inline void set_fs(mm_segment_t fs)
|
||||
{
|
||||
current_thread_info()->addr_limit = fs;
|
||||
modify_domain(DOMAIN_KERNEL, fs ? DOMAIN_CLIENT : DOMAIN_MANAGER);
|
||||
/* On user-mode return, check fs is correct */
|
||||
set_thread_flag(TIF_FSCHECK);
|
||||
}
|
||||
|
||||
#define segment_eq(a, b) ((a) == (b))
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/ftrace.h>
|
||||
#include <asm/unwind.h>
|
||||
#include <asm/memory.h>
|
||||
#ifdef CONFIG_AEABI
|
||||
#include <asm/unistd-oabi.h>
|
||||
#endif
|
||||
@ -48,12 +49,14 @@ ret_fast_syscall:
|
||||
UNWIND(.fnstart )
|
||||
UNWIND(.cantunwind )
|
||||
disable_irq_notrace @ disable interrupts
|
||||
ldr r2, [tsk, #TI_ADDR_LIMIT]
|
||||
cmp r2, #TASK_SIZE
|
||||
blne addr_limit_check_failed
|
||||
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
|
||||
tst r1, #_TIF_SYSCALL_WORK
|
||||
bne fast_work_pending
|
||||
tst r1, #_TIF_WORK_MASK
|
||||
tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK
|
||||
bne fast_work_pending
|
||||
|
||||
|
||||
/* perform architecture specific actions before user return */
|
||||
arch_ret_to_user r1, lr
|
||||
|
||||
@ -76,16 +79,16 @@ ret_fast_syscall:
|
||||
UNWIND(.cantunwind )
|
||||
str r0, [sp, #S_R0 + S_OFF]! @ save returned r0
|
||||
disable_irq_notrace @ disable interrupts
|
||||
ldr r2, [tsk, #TI_ADDR_LIMIT]
|
||||
cmp r2, #TASK_SIZE
|
||||
blne addr_limit_check_failed
|
||||
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
|
||||
tst r1, #_TIF_SYSCALL_WORK
|
||||
bne fast_work_pending
|
||||
tst r1, #_TIF_WORK_MASK
|
||||
tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK
|
||||
beq no_work_pending
|
||||
UNWIND(.fnend )
|
||||
ENDPROC(ret_fast_syscall)
|
||||
|
||||
/* Slower path - fall through to work_pending */
|
||||
fast_work_pending:
|
||||
#endif
|
||||
|
||||
tst r1, #_TIF_SYSCALL_WORK
|
||||
@ -111,6 +114,9 @@ ENTRY(ret_to_user)
|
||||
ret_slow_syscall:
|
||||
disable_irq_notrace @ disable interrupts
|
||||
ENTRY(ret_to_user_from_irq)
|
||||
ldr r2, [tsk, #TI_ADDR_LIMIT]
|
||||
cmp r2, #TASK_SIZE
|
||||
blne addr_limit_check_failed
|
||||
ldr r1, [tsk, #TI_FLAGS]
|
||||
tst r1, #_TIF_WORK_MASK
|
||||
bne slow_work_pending
|
||||
|
@ -614,10 +614,6 @@ do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall)
|
||||
* Update the trace code with the current status.
|
||||
*/
|
||||
trace_hardirqs_off();
|
||||
|
||||
/* Check valid user FS if needed */
|
||||
addr_limit_user_check();
|
||||
|
||||
do {
|
||||
if (likely(thread_flags & _TIF_NEED_RESCHED)) {
|
||||
schedule();
|
||||
@ -678,3 +674,9 @@ struct page *get_signal_page(void)
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
/* Defer to generic check */
|
||||
asmlinkage void addr_limit_check_failed(void)
|
||||
{
|
||||
addr_limit_user_check();
|
||||
}
|
||||
|
@ -50,17 +50,22 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
||||
KBUILD_CFLAGS += $(call cc-option, -mpc-relative-literal-loads)
|
||||
KBUILD_AFLAGS += $(lseinstr) $(brokengasinst)
|
||||
|
||||
KBUILD_CFLAGS += $(call cc-option,-mabi=lp64)
|
||||
KBUILD_AFLAGS += $(call cc-option,-mabi=lp64)
|
||||
|
||||
ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
|
||||
KBUILD_CPPFLAGS += -mbig-endian
|
||||
CHECKFLAGS += -D__AARCH64EB__
|
||||
AS += -EB
|
||||
LD += -EB
|
||||
LDFLAGS += -maarch64linuxb
|
||||
UTS_MACHINE := aarch64_be
|
||||
else
|
||||
KBUILD_CPPFLAGS += -mlittle-endian
|
||||
CHECKFLAGS += -D__AARCH64EL__
|
||||
AS += -EL
|
||||
LD += -EL
|
||||
LDFLAGS += -maarch64linux
|
||||
UTS_MACHINE := aarch64
|
||||
endif
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef __ASM_LINKAGE_H
|
||||
#define __ASM_LINKAGE_H
|
||||
|
||||
#define __ALIGN .align 4
|
||||
#define __ALIGN_STR ".align 4"
|
||||
#define __ALIGN .align 2
|
||||
#define __ALIGN_STR ".align 2"
|
||||
|
||||
#endif
|
||||
|
@ -401,7 +401,7 @@ static inline phys_addr_t pmd_page_paddr(pmd_t pmd)
|
||||
/* Find an entry in the third-level page table. */
|
||||
#define pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
|
||||
|
||||
#define pte_offset_phys(dir,addr) (pmd_page_paddr(*(dir)) + pte_index(addr) * sizeof(pte_t))
|
||||
#define pte_offset_phys(dir,addr) (pmd_page_paddr(READ_ONCE(*(dir))) + pte_index(addr) * sizeof(pte_t))
|
||||
#define pte_offset_kernel(dir,addr) ((pte_t *)__va(pte_offset_phys((dir), (addr))))
|
||||
|
||||
#define pte_offset_map(dir,addr) pte_offset_kernel((dir), (addr))
|
||||
|
@ -321,6 +321,8 @@ void kernel_neon_end(void)
|
||||
}
|
||||
EXPORT_SYMBOL(kernel_neon_end);
|
||||
|
||||
#ifdef CONFIG_EFI
|
||||
|
||||
static DEFINE_PER_CPU(struct fpsimd_state, efi_fpsimd_state);
|
||||
static DEFINE_PER_CPU(bool, efi_fpsimd_state_used);
|
||||
|
||||
@ -370,6 +372,8 @@ void __efi_fpsimd_end(void)
|
||||
kernel_neon_end();
|
||||
}
|
||||
|
||||
#endif /* CONFIG_EFI */
|
||||
|
||||
#endif /* CONFIG_KERNEL_MODE_NEON */
|
||||
|
||||
#ifdef CONFIG_CPU_PM
|
||||
|
@ -384,6 +384,7 @@ ENTRY(kimage_vaddr)
|
||||
* booted in EL1 or EL2 respectively.
|
||||
*/
|
||||
ENTRY(el2_setup)
|
||||
msr SPsel, #1 // We want to use SP_EL{1,2}
|
||||
mrs x0, CurrentEL
|
||||
cmp x0, #CurrentEL_EL2
|
||||
b.eq 1f
|
||||
|
@ -751,10 +751,10 @@ asmlinkage void do_notify_resume(struct pt_regs *regs,
|
||||
*/
|
||||
trace_hardirqs_off();
|
||||
|
||||
/* Check valid user FS if needed */
|
||||
addr_limit_user_check();
|
||||
|
||||
do {
|
||||
/* Check valid user FS if needed */
|
||||
addr_limit_user_check();
|
||||
|
||||
if (thread_flags & _TIF_NEED_RESCHED) {
|
||||
schedule();
|
||||
} else {
|
||||
|
@ -140,7 +140,8 @@ void save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace)
|
||||
trace->entries[trace->nr_entries++] = ULONG_MAX;
|
||||
}
|
||||
|
||||
void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
|
||||
static noinline void __save_stack_trace(struct task_struct *tsk,
|
||||
struct stack_trace *trace, unsigned int nosched)
|
||||
{
|
||||
struct stack_trace_data data;
|
||||
struct stackframe frame;
|
||||
@ -150,15 +151,16 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
|
||||
|
||||
data.trace = trace;
|
||||
data.skip = trace->skip;
|
||||
data.no_sched_functions = nosched;
|
||||
|
||||
if (tsk != current) {
|
||||
data.no_sched_functions = 1;
|
||||
frame.fp = thread_saved_fp(tsk);
|
||||
frame.pc = thread_saved_pc(tsk);
|
||||
} else {
|
||||
data.no_sched_functions = 0;
|
||||
/* We don't want this function nor the caller */
|
||||
data.skip += 2;
|
||||
frame.fp = (unsigned long)__builtin_frame_address(0);
|
||||
frame.pc = (unsigned long)save_stack_trace_tsk;
|
||||
frame.pc = (unsigned long)__save_stack_trace;
|
||||
}
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
frame.graph = tsk->curr_ret_stack;
|
||||
@ -172,9 +174,15 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(save_stack_trace_tsk);
|
||||
|
||||
void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace)
|
||||
{
|
||||
__save_stack_trace(tsk, trace, 1);
|
||||
}
|
||||
|
||||
void save_stack_trace(struct stack_trace *trace)
|
||||
{
|
||||
save_stack_trace_tsk(current, trace);
|
||||
__save_stack_trace(current, trace, 0);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(save_stack_trace);
|
||||
#endif
|
||||
|
@ -651,7 +651,7 @@ static const struct fault_info fault_info[] = {
|
||||
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 0 translation fault" },
|
||||
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 1 translation fault" },
|
||||
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 2 translation fault" },
|
||||
{ do_page_fault, SIGSEGV, SEGV_MAPERR, "level 3 translation fault" },
|
||||
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "level 3 translation fault" },
|
||||
{ do_bad, SIGBUS, 0, "unknown 8" },
|
||||
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "level 1 access flag fault" },
|
||||
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "level 2 access flag fault" },
|
||||
|
@ -92,9 +92,6 @@ static inline void release_thread(struct task_struct *dead_task)
|
||||
{
|
||||
}
|
||||
|
||||
#define copy_segments(tsk, mm) do { } while (0)
|
||||
#define release_segments(mm) do { } while (0)
|
||||
|
||||
/*
|
||||
* saved kernel SP and DP of a blocked thread.
|
||||
*/
|
||||
|
@ -92,10 +92,6 @@ static inline void release_thread(struct task_struct *dead_task)
|
||||
extern asmlinkage void save_user_regs(struct user_context *target);
|
||||
extern asmlinkage void *restore_user_regs(const struct user_context *target, ...);
|
||||
|
||||
#define copy_segments(tsk, mm) do { } while (0)
|
||||
#define release_segments(mm) do { } while (0)
|
||||
#define forget_segments() do { } while (0)
|
||||
|
||||
unsigned long get_wchan(struct task_struct *p);
|
||||
|
||||
#define KSTK_EIP(tsk) ((tsk)->thread.frame0->pc)
|
||||
|
@ -56,9 +56,4 @@ config IA64_DEBUG_IRQ
|
||||
and restore instructions. It's useful for tracking down spinlock
|
||||
problems, but slow! If you're unsure, select N.
|
||||
|
||||
config SYSVIPC_COMPAT
|
||||
bool
|
||||
depends on COMPAT && SYSVIPC
|
||||
default y
|
||||
|
||||
endmenu
|
||||
|
@ -118,14 +118,6 @@ struct mm_struct;
|
||||
/* Free all resources held by a thread. */
|
||||
extern void release_thread(struct task_struct *);
|
||||
|
||||
/* Copy and release all segment info associated with a VM */
|
||||
extern void copy_segments(struct task_struct *p, struct mm_struct * mm);
|
||||
extern void release_segments(struct mm_struct * mm);
|
||||
|
||||
/* Copy and release all segment info associated with a VM */
|
||||
#define copy_segments(p, mm) do { } while (0)
|
||||
#define release_segments(mm) do { } while (0)
|
||||
|
||||
unsigned long get_wchan(struct task_struct *p);
|
||||
#define KSTK_EIP(tsk) ((tsk)->thread.lr)
|
||||
#define KSTK_ESP(tsk) ((tsk)->thread.sp)
|
||||
|
@ -131,9 +131,6 @@ static inline void release_thread(struct task_struct *dead_task)
|
||||
{
|
||||
}
|
||||
|
||||
#define copy_segments(tsk, mm) do { } while (0)
|
||||
#define release_segments(mm) do { } while (0)
|
||||
|
||||
/*
|
||||
* Return saved PC of a blocked thread.
|
||||
*/
|
||||
|
@ -39,7 +39,7 @@ config MICROBLAZE
|
||||
# Endianness selection
|
||||
choice
|
||||
prompt "Endianness selection"
|
||||
default CPU_BIG_ENDIAN
|
||||
default CPU_LITTLE_ENDIAN
|
||||
help
|
||||
microblaze architectures can be configured for either little or
|
||||
big endian formats. Be sure to select the appropriate mode.
|
||||
|
@ -7,6 +7,7 @@ generic-y += fcntl.h
|
||||
generic-y += ioctl.h
|
||||
generic-y += ioctls.h
|
||||
generic-y += ipcbuf.h
|
||||
generic-y += kvm_para.h
|
||||
generic-y += mman.h
|
||||
generic-y += msgbuf.h
|
||||
generic-y += param.h
|
||||
|
@ -165,7 +165,7 @@ int dma_direct_mmap_coherent(struct device *dev, struct vm_area_struct *vma,
|
||||
unsigned long attrs)
|
||||
{
|
||||
#ifdef CONFIG_MMU
|
||||
unsigned long user_count = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
|
||||
unsigned long user_count = vma_pages(vma);
|
||||
unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
|
||||
unsigned long off = vma->vm_pgoff;
|
||||
unsigned long pfn;
|
||||
|
@ -1627,14 +1627,6 @@ config CPU_R5500
|
||||
NEC VR5500 and VR5500A series processors implement 64-bit MIPS IV
|
||||
instruction set.
|
||||
|
||||
config CPU_R6000
|
||||
bool "R6000"
|
||||
depends on SYS_HAS_CPU_R6000
|
||||
select CPU_SUPPORTS_32BIT_KERNEL
|
||||
help
|
||||
MIPS Technologies R6000 and R6000A series processors. Note these
|
||||
processors are extremely rare and the support for them is incomplete.
|
||||
|
||||
config CPU_NEVADA
|
||||
bool "RM52xx"
|
||||
depends on SYS_HAS_CPU_NEVADA
|
||||
@ -1950,9 +1942,6 @@ config SYS_HAS_CPU_R5432
|
||||
config SYS_HAS_CPU_R5500
|
||||
bool
|
||||
|
||||
config SYS_HAS_CPU_R6000
|
||||
bool
|
||||
|
||||
config SYS_HAS_CPU_NEVADA
|
||||
bool
|
||||
|
||||
@ -2180,7 +2169,7 @@ config PAGE_SIZE_32KB
|
||||
|
||||
config PAGE_SIZE_64KB
|
||||
bool "64kB"
|
||||
depends on !CPU_R3000 && !CPU_TX39XX && !CPU_R6000
|
||||
depends on !CPU_R3000 && !CPU_TX39XX
|
||||
help
|
||||
Using 64kB page size will result in higher performance kernel at
|
||||
the price of higher memory consumption. This option is available on
|
||||
@ -2248,11 +2237,11 @@ config CPU_HAS_PREFETCH
|
||||
|
||||
config CPU_GENERIC_DUMP_TLB
|
||||
bool
|
||||
default y if !(CPU_R3000 || CPU_R6000 || CPU_R8000 || CPU_TX39XX)
|
||||
default y if !(CPU_R3000 || CPU_R8000 || CPU_TX39XX)
|
||||
|
||||
config CPU_R4K_FPU
|
||||
bool
|
||||
default y if !(CPU_R3000 || CPU_R6000 || CPU_TX39XX || CPU_CAVIUM_OCTEON)
|
||||
default y if !(CPU_R3000 || CPU_TX39XX)
|
||||
|
||||
config CPU_R4K_CACHE_TLB
|
||||
bool
|
||||
@ -2260,6 +2249,7 @@ config CPU_R4K_CACHE_TLB
|
||||
|
||||
config MIPS_MT_SMP
|
||||
bool "MIPS MT SMP support (1 TC on each available VPE)"
|
||||
default y
|
||||
depends on SYS_SUPPORTS_MULTITHREADING && !CPU_MIPSR6 && !CPU_MICROMIPS
|
||||
select CPU_MIPSR2_IRQ_VI
|
||||
select CPU_MIPSR2_IRQ_EI
|
||||
@ -2376,7 +2366,6 @@ config MIPS_CPS
|
||||
bool "MIPS Coherent Processing System support"
|
||||
depends on SYS_SUPPORTS_MIPS_CPS
|
||||
select MIPS_CM
|
||||
select MIPS_CPC
|
||||
select MIPS_CPS_PM if HOTPLUG_CPU
|
||||
select SMP
|
||||
select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
|
||||
@ -2393,11 +2382,11 @@ config MIPS_CPS
|
||||
|
||||
config MIPS_CPS_PM
|
||||
depends on MIPS_CPS
|
||||
select MIPS_CPC
|
||||
bool
|
||||
|
||||
config MIPS_CM
|
||||
bool
|
||||
select MIPS_CPC
|
||||
|
||||
config MIPS_CPC
|
||||
bool
|
||||
|
@ -151,7 +151,6 @@ cflags-y += -fno-stack-check
|
||||
#
|
||||
cflags-$(CONFIG_CPU_R3000) += -march=r3000
|
||||
cflags-$(CONFIG_CPU_TX39XX) += -march=r3900
|
||||
cflags-$(CONFIG_CPU_R6000) += -march=r6000 -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_R4300) += -march=r4300 -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_VR41XX) += -march=r4100 -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_R4X00) += -march=r4600 -Wa,--trap
|
||||
@ -291,7 +290,8 @@ KBUILD_CPPFLAGS += -DDATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)
|
||||
|
||||
bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) \
|
||||
VMLINUX_ENTRY_ADDRESS=$(entry-y) \
|
||||
PLATFORM="$(platform-y)"
|
||||
PLATFORM="$(platform-y)" \
|
||||
ITS_INPUTS="$(its-y)"
|
||||
ifdef CONFIG_32BIT
|
||||
bootvars-y += ADDR_BITS=32
|
||||
endif
|
||||
@ -299,6 +299,10 @@ ifdef CONFIG_64BIT
|
||||
bootvars-y += ADDR_BITS=64
|
||||
endif
|
||||
|
||||
# This is required to get dwarf unwinding tables into .debug_frame
|
||||
# instead of .eh_frame so we don't discard them.
|
||||
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
||||
|
||||
LDFLAGS += -m $(ld-emul)
|
||||
|
||||
ifdef CONFIG_MIPS
|
||||
@ -500,8 +504,14 @@ $(eval $(call gen_generic_defconfigs,micro32,r2,eb el))
|
||||
.PHONY: $(generic_defconfigs)
|
||||
$(generic_defconfigs):
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
|
||||
-m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ \
|
||||
$(foreach board,$(BOARDS),$(generic_config_dir)/board-$(board).config)
|
||||
-m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ | \
|
||||
grep -Ev '^#'
|
||||
$(Q)cp $(KCONFIG_CONFIG) $(objtree)/.config.$@
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig \
|
||||
KCONFIG_CONFIG=$(objtree)/.config.$@ >/dev/null
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/arch/$(ARCH)/tools/generic-board-config.sh \
|
||||
$(srctree) $(objtree) $(objtree)/.config.$@ $(KCONFIG_CONFIG) \
|
||||
"$(origin BOARDS)" $(BOARDS)
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
|
||||
|
||||
#
|
||||
@ -509,6 +519,19 @@ $(generic_defconfigs):
|
||||
#
|
||||
$(generic_config_dir)/%.config: ;
|
||||
|
||||
#
|
||||
# Prevent direct use of generic_defconfig, which is intended to be used as the
|
||||
# basis of the various ISA-specific targets generated above.
|
||||
#
|
||||
.PHONY: generic_defconfig
|
||||
generic_defconfig:
|
||||
$(Q)echo "generic_defconfig is not intended for direct use, but should instead be"
|
||||
$(Q)echo "used via an ISA-specific target from the following list:"
|
||||
$(Q)echo
|
||||
$(Q)for cfg in $(generic_defconfigs); do echo " $${cfg}"; done
|
||||
$(Q)echo
|
||||
$(Q)false
|
||||
|
||||
#
|
||||
# Legacy defconfig compatibility - these targets used to be real defconfigs but
|
||||
# now that the boards have been converted to use the generic kernel they are
|
||||
|
@ -344,28 +344,32 @@ static struct platform_device db1200_ide_dev = {
|
||||
|
||||
/* SD carddetects: they're supposed to be edge-triggered, but ack
|
||||
* doesn't seem to work (CPLD Rev 2). Instead, the screaming one
|
||||
* is disabled and its counterpart enabled. The 500ms timeout is
|
||||
* because the carddetect isn't debounced in hardware.
|
||||
* is disabled and its counterpart enabled. The 200ms timeout is
|
||||
* because the carddetect usually triggers twice, after debounce.
|
||||
*/
|
||||
static irqreturn_t db1200_mmc_cd(int irq, void *ptr)
|
||||
{
|
||||
void(*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
disable_irq_nosync(irq);
|
||||
return IRQ_WAKE_THREAD;
|
||||
}
|
||||
|
||||
if (irq == DB1200_SD0_INSERT_INT) {
|
||||
disable_irq_nosync(DB1200_SD0_INSERT_INT);
|
||||
enable_irq(DB1200_SD0_EJECT_INT);
|
||||
} else {
|
||||
disable_irq_nosync(DB1200_SD0_EJECT_INT);
|
||||
enable_irq(DB1200_SD0_INSERT_INT);
|
||||
}
|
||||
static irqreturn_t db1200_mmc_cdfn(int irq, void *ptr)
|
||||
{
|
||||
void (*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
|
||||
/* link against CONFIG_MMC=m */
|
||||
mmc_cd = symbol_get(mmc_detect_change);
|
||||
if (mmc_cd) {
|
||||
mmc_cd(ptr, msecs_to_jiffies(500));
|
||||
mmc_cd(ptr, msecs_to_jiffies(200));
|
||||
symbol_put(mmc_detect_change);
|
||||
}
|
||||
|
||||
msleep(100); /* debounce */
|
||||
if (irq == DB1200_SD0_INSERT_INT)
|
||||
enable_irq(DB1200_SD0_EJECT_INT);
|
||||
else
|
||||
enable_irq(DB1200_SD0_INSERT_INT);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -374,13 +378,13 @@ static int db1200_mmc_cd_setup(void *mmc_host, int en)
|
||||
int ret;
|
||||
|
||||
if (en) {
|
||||
ret = request_irq(DB1200_SD0_INSERT_INT, db1200_mmc_cd,
|
||||
0, "sd_insert", mmc_host);
|
||||
ret = request_threaded_irq(DB1200_SD0_INSERT_INT, db1200_mmc_cd,
|
||||
db1200_mmc_cdfn, 0, "sd_insert", mmc_host);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = request_irq(DB1200_SD0_EJECT_INT, db1200_mmc_cd,
|
||||
0, "sd_eject", mmc_host);
|
||||
ret = request_threaded_irq(DB1200_SD0_EJECT_INT, db1200_mmc_cd,
|
||||
db1200_mmc_cdfn, 0, "sd_eject", mmc_host);
|
||||
if (ret) {
|
||||
free_irq(DB1200_SD0_INSERT_INT, mmc_host);
|
||||
goto out;
|
||||
@ -436,23 +440,27 @@ static struct led_classdev db1200_mmc_led = {
|
||||
|
||||
static irqreturn_t pb1200_mmc1_cd(int irq, void *ptr)
|
||||
{
|
||||
void(*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
disable_irq_nosync(irq);
|
||||
return IRQ_WAKE_THREAD;
|
||||
}
|
||||
|
||||
if (irq == PB1200_SD1_INSERT_INT) {
|
||||
disable_irq_nosync(PB1200_SD1_INSERT_INT);
|
||||
enable_irq(PB1200_SD1_EJECT_INT);
|
||||
} else {
|
||||
disable_irq_nosync(PB1200_SD1_EJECT_INT);
|
||||
enable_irq(PB1200_SD1_INSERT_INT);
|
||||
}
|
||||
static irqreturn_t pb1200_mmc1_cdfn(int irq, void *ptr)
|
||||
{
|
||||
void (*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
|
||||
/* link against CONFIG_MMC=m */
|
||||
mmc_cd = symbol_get(mmc_detect_change);
|
||||
if (mmc_cd) {
|
||||
mmc_cd(ptr, msecs_to_jiffies(500));
|
||||
mmc_cd(ptr, msecs_to_jiffies(200));
|
||||
symbol_put(mmc_detect_change);
|
||||
}
|
||||
|
||||
msleep(100); /* debounce */
|
||||
if (irq == PB1200_SD1_INSERT_INT)
|
||||
enable_irq(PB1200_SD1_EJECT_INT);
|
||||
else
|
||||
enable_irq(PB1200_SD1_INSERT_INT);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -461,13 +469,13 @@ static int pb1200_mmc1_cd_setup(void *mmc_host, int en)
|
||||
int ret;
|
||||
|
||||
if (en) {
|
||||
ret = request_irq(PB1200_SD1_INSERT_INT, pb1200_mmc1_cd, 0,
|
||||
"sd1_insert", mmc_host);
|
||||
ret = request_threaded_irq(PB1200_SD1_INSERT_INT, pb1200_mmc1_cd,
|
||||
pb1200_mmc1_cdfn, 0, "sd1_insert", mmc_host);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = request_irq(PB1200_SD1_EJECT_INT, pb1200_mmc1_cd, 0,
|
||||
"sd1_eject", mmc_host);
|
||||
ret = request_threaded_irq(PB1200_SD1_EJECT_INT, pb1200_mmc1_cd,
|
||||
pb1200_mmc1_cdfn, 0, "sd1_eject", mmc_host);
|
||||
if (ret) {
|
||||
free_irq(PB1200_SD1_INSERT_INT, mmc_host);
|
||||
goto out;
|
||||
|
@ -450,24 +450,27 @@ static struct platform_device db1300_ide_dev = {
|
||||
|
||||
static irqreturn_t db1300_mmc_cd(int irq, void *ptr)
|
||||
{
|
||||
void(*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
disable_irq_nosync(irq);
|
||||
return IRQ_WAKE_THREAD;
|
||||
}
|
||||
|
||||
/* disable the one currently screaming. No other way to shut it up */
|
||||
if (irq == DB1300_SD1_INSERT_INT) {
|
||||
disable_irq_nosync(DB1300_SD1_INSERT_INT);
|
||||
enable_irq(DB1300_SD1_EJECT_INT);
|
||||
} else {
|
||||
disable_irq_nosync(DB1300_SD1_EJECT_INT);
|
||||
enable_irq(DB1300_SD1_INSERT_INT);
|
||||
}
|
||||
static irqreturn_t db1300_mmc_cdfn(int irq, void *ptr)
|
||||
{
|
||||
void (*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
|
||||
/* link against CONFIG_MMC=m. We can only be called once MMC core has
|
||||
* initialized the controller, so symbol_get() should always succeed.
|
||||
*/
|
||||
mmc_cd = symbol_get(mmc_detect_change);
|
||||
mmc_cd(ptr, msecs_to_jiffies(500));
|
||||
mmc_cd(ptr, msecs_to_jiffies(200));
|
||||
symbol_put(mmc_detect_change);
|
||||
|
||||
msleep(100); /* debounce */
|
||||
if (irq == DB1300_SD1_INSERT_INT)
|
||||
enable_irq(DB1300_SD1_EJECT_INT);
|
||||
else
|
||||
enable_irq(DB1300_SD1_INSERT_INT);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -487,13 +490,13 @@ static int db1300_mmc_cd_setup(void *mmc_host, int en)
|
||||
int ret;
|
||||
|
||||
if (en) {
|
||||
ret = request_irq(DB1300_SD1_INSERT_INT, db1300_mmc_cd, 0,
|
||||
"sd_insert", mmc_host);
|
||||
ret = request_threaded_irq(DB1300_SD1_INSERT_INT, db1300_mmc_cd,
|
||||
db1300_mmc_cdfn, 0, "sd_insert", mmc_host);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = request_irq(DB1300_SD1_EJECT_INT, db1300_mmc_cd, 0,
|
||||
"sd_eject", mmc_host);
|
||||
ret = request_threaded_irq(DB1300_SD1_EJECT_INT, db1300_mmc_cd,
|
||||
db1300_mmc_cdfn, 0, "sd_eject", mmc_host);
|
||||
if (ret) {
|
||||
free_irq(DB1300_SD1_INSERT_INT, mmc_host);
|
||||
goto out;
|
||||
|
@ -2,6 +2,7 @@
|
||||
* Alchemy DB/PB1xxx board support.
|
||||
*/
|
||||
|
||||
#include <asm/prom.h>
|
||||
#include <asm/mach-au1x00/au1000.h>
|
||||
#include <asm/mach-db1x00/bcsr.h>
|
||||
|
||||
@ -97,6 +98,7 @@ arch_initcall(db1xxx_arch_init);
|
||||
|
||||
static int __init db1xxx_dev_init(void)
|
||||
{
|
||||
mips_set_machine_name(board_type_str());
|
||||
switch (BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) {
|
||||
case BCSR_WHOAMI_DB1000:
|
||||
case BCSR_WHOAMI_DB1500:
|
||||
|
@ -430,6 +430,9 @@ EXPORT_SYMBOL(clk_disable);
|
||||
|
||||
unsigned long clk_get_rate(struct clk *clk)
|
||||
{
|
||||
if (!clk)
|
||||
return 0;
|
||||
|
||||
return clk->rate;
|
||||
}
|
||||
EXPORT_SYMBOL(clk_get_rate);
|
||||
|
@ -487,17 +487,16 @@ static void __init ath79_clocks_init_dt_ng(struct device_node *np)
|
||||
{
|
||||
struct clk *ref_clk;
|
||||
void __iomem *pll_base;
|
||||
const char *dnfn = of_node_full_name(np);
|
||||
|
||||
ref_clk = of_clk_get(np, 0);
|
||||
if (IS_ERR(ref_clk)) {
|
||||
pr_err("%s: of_clk_get failed\n", dnfn);
|
||||
pr_err("%pOF: of_clk_get failed\n", np);
|
||||
goto err;
|
||||
}
|
||||
|
||||
pll_base = of_iomap(np, 0);
|
||||
if (!pll_base) {
|
||||
pr_err("%s: can't map pll registers\n", dnfn);
|
||||
pr_err("%pOF: can't map pll registers\n", np);
|
||||
goto err_clk;
|
||||
}
|
||||
|
||||
@ -506,12 +505,12 @@ static void __init ath79_clocks_init_dt_ng(struct device_node *np)
|
||||
else if (of_device_is_compatible(np, "qca,ar9330-pll"))
|
||||
ar9330_clk_init(ref_clk, pll_base);
|
||||
else {
|
||||
pr_err("%s: could not find any appropriate clk_init()\n", dnfn);
|
||||
pr_err("%pOF: could not find any appropriate clk_init()\n", np);
|
||||
goto err_iounmap;
|
||||
}
|
||||
|
||||
if (of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data)) {
|
||||
pr_err("%s: could not register clk provider\n", dnfn);
|
||||
pr_err("%pOF: could not register clk provider\n", np);
|
||||
goto err_iounmap;
|
||||
}
|
||||
|
||||
|
@ -22,10 +22,10 @@
|
||||
#include "pci.h"
|
||||
|
||||
static int (*ath79_pci_plat_dev_init)(struct pci_dev *dev);
|
||||
static const struct ath79_pci_irq *ath79_pci_irq_map __initdata;
|
||||
static unsigned ath79_pci_nr_irqs __initdata;
|
||||
static const struct ath79_pci_irq *ath79_pci_irq_map;
|
||||
static unsigned ath79_pci_nr_irqs;
|
||||
|
||||
static const struct ath79_pci_irq ar71xx_pci_irq_map[] __initconst = {
|
||||
static const struct ath79_pci_irq ar71xx_pci_irq_map[] = {
|
||||
{
|
||||
.slot = 17,
|
||||
.pin = 1,
|
||||
@ -41,7 +41,7 @@ static const struct ath79_pci_irq ar71xx_pci_irq_map[] __initconst = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct ath79_pci_irq ar724x_pci_irq_map[] __initconst = {
|
||||
static const struct ath79_pci_irq ar724x_pci_irq_map[] = {
|
||||
{
|
||||
.slot = 0,
|
||||
.pin = 1,
|
||||
@ -49,7 +49,7 @@ static const struct ath79_pci_irq ar724x_pci_irq_map[] __initconst = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct ath79_pci_irq qca955x_pci_irq_map[] __initconst = {
|
||||
static const struct ath79_pci_irq qca955x_pci_irq_map[] = {
|
||||
{
|
||||
.bus = 0,
|
||||
.slot = 0,
|
||||
@ -64,7 +64,7 @@ static const struct ath79_pci_irq qca955x_pci_irq_map[] __initconst = {
|
||||
},
|
||||
};
|
||||
|
||||
int __init pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin)
|
||||
int pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin)
|
||||
{
|
||||
int irq = -1;
|
||||
int i;
|
||||
|
@ -339,6 +339,9 @@ EXPORT_SYMBOL(clk_disable);
|
||||
|
||||
unsigned long clk_get_rate(struct clk *clk)
|
||||
{
|
||||
if (!clk)
|
||||
return 0;
|
||||
|
||||
return clk->rate;
|
||||
}
|
||||
|
||||
|
@ -118,6 +118,12 @@ ifeq ($(ADDR_BITS),64)
|
||||
itb_addr_cells = 2
|
||||
endif
|
||||
|
||||
quiet_cmd_its_cat = CAT $@
|
||||
cmd_its_cat = cat $^ >$@
|
||||
|
||||
$(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS))
|
||||
$(call if_changed,its_cat)
|
||||
|
||||
quiet_cmd_cpp_its_S = ITS $@
|
||||
cmd_cpp_its_S = $(CPP) $(cpp_flags) -P -C -o $@ $< \
|
||||
-DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \
|
||||
@ -128,19 +134,19 @@ quiet_cmd_cpp_its_S = ITS $@
|
||||
-DADDR_BITS=$(ADDR_BITS) \
|
||||
-DADDR_CELLS=$(itb_addr_cells)
|
||||
|
||||
$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(obj)/vmlinux.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(call if_changed_dep,cpp_its_S,none,vmlinux.bin)
|
||||
|
||||
$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(obj)/vmlinux.gz.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz)
|
||||
|
||||
$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(obj)/vmlinux.bz2.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2)
|
||||
|
||||
$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(obj)/vmlinux.lzma.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma)
|
||||
|
||||
$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(obj)/vmlinux.lzo.its: $(obj)/vmlinux.its.S $(VMLINUX) FORCE
|
||||
$(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo)
|
||||
|
||||
quiet_cmd_itb-image = ITB $@
|
||||
|
@ -5,6 +5,7 @@ dts-dirs += ingenic
|
||||
dts-dirs += lantiq
|
||||
dts-dirs += mti
|
||||
dts-dirs += netlogic
|
||||
dts-dirs += ni
|
||||
dts-dirs += pic32
|
||||
dts-dirs += qca
|
||||
dts-dirs += ralink
|
||||
|
@ -1,6 +1,7 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "jz4780.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
compatible = "img,ci20", "ingenic,jz4780";
|
||||
@ -21,6 +22,13 @@
|
||||
reg = <0x0 0x10000000
|
||||
0x30000000 0x30000000>;
|
||||
};
|
||||
|
||||
eth0_power: fixedregulator@0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "eth0_power";
|
||||
gpio = <&gpb 25 GPIO_ACTIVE_LOW>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&ext {
|
||||
@ -123,6 +131,29 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dm9000@6 {
|
||||
compatible = "davicom,dm9000";
|
||||
davicom,no-eeprom;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pins_nemc_cs6>;
|
||||
|
||||
reg = <6 0 1 /* addr */
|
||||
6 2 1>; /* data */
|
||||
|
||||
ingenic,nemc-tAS = <15>;
|
||||
ingenic,nemc-tAH = <10>;
|
||||
ingenic,nemc-tBP = <20>;
|
||||
ingenic,nemc-tAW = <50>;
|
||||
ingenic,nemc-tSTRV = <100>;
|
||||
|
||||
reset-gpios = <&gpf 12 GPIO_ACTIVE_HIGH>;
|
||||
vcc-supply = <ð0_power>;
|
||||
|
||||
interrupt-parent = <&gpe>;
|
||||
interrupts = <19 4>;
|
||||
};
|
||||
};
|
||||
|
||||
&bch {
|
||||
@ -165,4 +196,10 @@
|
||||
groups = "nemc-cs1";
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pins_nemc_cs6: nemc-cs6 {
|
||||
function = "nemc-cs6";
|
||||
groups = "nemc-cs6";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
@ -44,6 +44,17 @@
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
rtc_dev: rtc@10003000 {
|
||||
compatible = "ingenic,jz4780-rtc";
|
||||
reg = <0x10003000 0x4c>;
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <32>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_RTCLK>;
|
||||
clock-names = "rtc";
|
||||
};
|
||||
|
||||
pinctrl: pin-controller@10010000 {
|
||||
compatible = "ingenic,jz4780-pinctrl";
|
||||
reg = <0x10010000 0x600>;
|
||||
|
100
arch/mips/boot/dts/ni/169445.dts
Normal file
100
arch/mips/boot/dts/ni/169445.dts
Normal file
@ -0,0 +1,100 @@
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "ni,169445";
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "mti,mips14KEc";
|
||||
clocks = <&baseclk>;
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x10000000>;
|
||||
};
|
||||
|
||||
baseclk: baseclock {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <50000000>;
|
||||
};
|
||||
|
||||
cpu_intc: interrupt-controller {
|
||||
#address-cells = <0>;
|
||||
compatible = "mti,cpu-interrupt-controller";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
|
||||
ahb@1f300000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1f300000 0x80FFF>;
|
||||
|
||||
gpio1: gpio@10 {
|
||||
compatible = "ni,169445-nand-gpio";
|
||||
reg = <0x10 0x4>;
|
||||
reg-names = "dat";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@14 {
|
||||
compatible = "ni,169445-nand-gpio";
|
||||
reg = <0x14 0x4>;
|
||||
reg-names = "dat";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
no-output;
|
||||
};
|
||||
|
||||
nand@0 {
|
||||
compatible = "gpio-control-nand";
|
||||
nand-on-flash-bbt;
|
||||
nand-ecc-mode = "soft_bch";
|
||||
nand-ecc-step-size = <512>;
|
||||
nand-ecc-strength = <4>;
|
||||
reg = <0x0 4>;
|
||||
gpios = <&gpio2 0 0>, /* rdy */
|
||||
<&gpio1 1 0>, /* nce */
|
||||
<&gpio1 2 0>, /* ale */
|
||||
<&gpio1 3 0>, /* cle */
|
||||
<&gpio1 4 0>; /* nwp */
|
||||
};
|
||||
|
||||
serial@80000 {
|
||||
compatible = "ns16550a";
|
||||
reg = <0x80000 0x1000>;
|
||||
interrupt-parent = <&cpu_intc>;
|
||||
interrupts = <6>;
|
||||
clocks = <&baseclk>;
|
||||
reg-shift = <0>;
|
||||
};
|
||||
|
||||
ethernet@40000 {
|
||||
compatible = "snps,dwmac-4.10a";
|
||||
interrupt-parent = <&cpu_intc>;
|
||||
interrupts = <5>;
|
||||
interrupt-names = "macirq";
|
||||
reg = <0x40000 0x2000>;
|
||||
clock-names = "stmmaceth", "pclk";
|
||||
clocks = <&baseclk>, <&baseclk>;
|
||||
|
||||
phy-mode = "rgmii";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
7
arch/mips/boot/dts/ni/Makefile
Normal file
7
arch/mips/boot/dts/ni/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
dtb-$(CONFIG_FIT_IMAGE_FDT_NI169445) += 169445.dtb
|
||||
|
||||
# Force kbuild to make empty built-in.o if necessary
|
||||
obj- += dummy.o
|
||||
|
||||
always := $(dtb-y)
|
||||
clean-files := *.dtb *.dtb.S
|
@ -2,6 +2,8 @@ dtb-$(CONFIG_DTB_RT2880_EVAL) += rt2880_eval.dtb
|
||||
dtb-$(CONFIG_DTB_RT305X_EVAL) += rt3052_eval.dtb
|
||||
dtb-$(CONFIG_DTB_RT3883_EVAL) += rt3883_eval.dtb
|
||||
dtb-$(CONFIG_DTB_MT7620A_EVAL) += mt7620a_eval.dtb
|
||||
dtb-$(CONFIG_DTB_OMEGA2P) += omega2p.dtb
|
||||
dtb-$(CONFIG_DTB_VOCORE2) += vocore2.dtb
|
||||
|
||||
obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
|
||||
|
||||
|
126
arch/mips/boot/dts/ralink/mt7628a.dtsi
Normal file
126
arch/mips/boot/dts/ralink/mt7628a.dtsi
Normal file
@ -0,0 +1,126 @@
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "ralink,mt7628a-soc";
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
compatible = "mti,mips24KEc";
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
resetc: reset-controller {
|
||||
compatible = "ralink,rt2880-reset";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
cpuintc: interrupt-controller {
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-controller;
|
||||
compatible = "mti,cpu-interrupt-controller";
|
||||
};
|
||||
|
||||
palmbus@10000000 {
|
||||
compatible = "palmbus";
|
||||
reg = <0x10000000 0x200000>;
|
||||
ranges = <0x0 0x10000000 0x1FFFFF>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
sysc: system-controller@0 {
|
||||
compatible = "ralink,mt7620a-sysc", "syscon";
|
||||
reg = <0x0 0x100>;
|
||||
};
|
||||
|
||||
intc: interrupt-controller@200 {
|
||||
compatible = "ralink,rt2880-intc";
|
||||
reg = <0x200 0x100>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
resets = <&resetc 9>;
|
||||
reset-names = "intc";
|
||||
|
||||
interrupt-parent = <&cpuintc>;
|
||||
interrupts = <2>;
|
||||
|
||||
ralink,intc-registers = <0x9c 0xa0
|
||||
0x6c 0xa4
|
||||
0x80 0x78>;
|
||||
};
|
||||
|
||||
memory-controller@300 {
|
||||
compatible = "ralink,mt7620a-memc";
|
||||
reg = <0x300 0x100>;
|
||||
};
|
||||
|
||||
uart0: uartlite@c00 {
|
||||
compatible = "ns16550a";
|
||||
reg = <0xc00 0x100>;
|
||||
|
||||
resets = <&resetc 12>;
|
||||
reset-names = "uart0";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <20>;
|
||||
|
||||
reg-shift = <2>;
|
||||
};
|
||||
|
||||
uart1: uart1@d00 {
|
||||
compatible = "ns16550a";
|
||||
reg = <0xd00 0x100>;
|
||||
|
||||
resets = <&resetc 19>;
|
||||
reset-names = "uart1";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <21>;
|
||||
|
||||
reg-shift = <2>;
|
||||
};
|
||||
|
||||
uart2: uart2@e00 {
|
||||
compatible = "ns16550a";
|
||||
reg = <0xe00 0x100>;
|
||||
|
||||
resets = <&resetc 20>;
|
||||
reset-names = "uart2";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <22>;
|
||||
|
||||
reg-shift = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
usb_phy: usb-phy@10120000 {
|
||||
compatible = "mediatek,mt7628-usbphy";
|
||||
reg = <0x10120000 0x1000>;
|
||||
|
||||
#phy-cells = <0>;
|
||||
|
||||
ralink,sysctl = <&sysc>;
|
||||
resets = <&resetc 22 &resetc 25>;
|
||||
reset-names = "host", "device";
|
||||
};
|
||||
|
||||
ehci@101c0000 {
|
||||
compatible = "generic-ehci";
|
||||
reg = <0x101c0000 0x1000>;
|
||||
|
||||
phys = <&usb_phy>;
|
||||
phy-names = "usb";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <18>;
|
||||
};
|
||||
};
|
18
arch/mips/boot/dts/ralink/omega2p.dts
Normal file
18
arch/mips/boot/dts/ralink/omega2p.dts
Normal file
@ -0,0 +1,18 @@
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "mt7628a.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "onion,omega2+", "ralink,mt7688a-soc", "ralink,mt7628a-soc";
|
||||
model = "Onion Omega2+";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x8000000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
stdout-path = &uart0;
|
||||
};
|
||||
};
|
18
arch/mips/boot/dts/ralink/vocore2.dts
Normal file
18
arch/mips/boot/dts/ralink/vocore2.dts
Normal file
@ -0,0 +1,18 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include "mt7628a.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "vocore,vocore2", "ralink,mt7628a-soc";
|
||||
model = "VoCore2";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x8000000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS2,115200";
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
};
|
@ -16,4 +16,4 @@ obj-y += cvmx-pko.o cvmx-spi.o cvmx-cmd-queue.o \
|
||||
cvmx-helper-loop.o cvmx-helper-spi.o cvmx-helper-util.o \
|
||||
cvmx-interrupt-decodes.o cvmx-interrupt-rsl.o
|
||||
|
||||
obj-y += cvmx-helper-errata.o cvmx-helper-jtag.o
|
||||
obj-y += cvmx-helper-errata.o cvmx-helper-jtag.o cvmx-boot-vector.o
|
||||
|
167
arch/mips/cavium-octeon/executive/cvmx-boot-vector.c
Normal file
167
arch/mips/cavium-octeon/executive/cvmx-boot-vector.c
Normal file
@ -0,0 +1,167 @@
|
||||
/*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright (C) 2004-2017 Cavium, Inc.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
We install this program at the bootvector:
|
||||
------------------------------------
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
.set noat
|
||||
reset_vector:
|
||||
dmtc0 $k0, $31, 0 # Save $k0 to DESAVE
|
||||
dmtc0 $k1, $31, 3 # Save $k1 to KScratch2
|
||||
|
||||
mfc0 $k0, $12, 0 # Status
|
||||
mfc0 $k1, $15, 1 # Ebase
|
||||
|
||||
ori $k0, 0x84 # Enable 64-bit addressing, set
|
||||
# ERL (should already be set)
|
||||
andi $k1, 0x3ff # mask out core ID
|
||||
|
||||
mtc0 $k0, $12, 0 # Status
|
||||
sll $k1, 5
|
||||
|
||||
lui $k0, 0xbfc0
|
||||
cache 17, 0($0) # Core-14345, clear L1 Dcache virtual
|
||||
# tags if the core hit an NMI
|
||||
|
||||
ld $k0, 0x78($k0) # k0 <- (bfc00078) pointer to the reset vector
|
||||
synci 0($0) # Invalidate ICache to get coherent
|
||||
# view of target code.
|
||||
|
||||
daddu $k0, $k0, $k1
|
||||
nop
|
||||
|
||||
ld $k0, 0($k0) # k0 <- core specific target address
|
||||
dmfc0 $k1, $31, 3 # Restore $k1 from KScratch2
|
||||
|
||||
beqz $k0, wait_loop # Spin in wait loop
|
||||
nop
|
||||
|
||||
jr $k0
|
||||
nop
|
||||
|
||||
nop # NOPs needed here to fill delay slots
|
||||
nop # on endian reversal of previous instructions
|
||||
|
||||
wait_loop:
|
||||
wait
|
||||
nop
|
||||
|
||||
b wait_loop
|
||||
nop
|
||||
|
||||
nop
|
||||
nop
|
||||
------------------------------------
|
||||
|
||||
0000000000000000 <reset_vector>:
|
||||
0: 40baf800 dmtc0 k0,c0_desave
|
||||
4: 40bbf803 dmtc0 k1,c0_kscratch2
|
||||
|
||||
8: 401a6000 mfc0 k0,c0_status
|
||||
c: 401b7801 mfc0 k1,c0_ebase
|
||||
|
||||
10: 375a0084 ori k0,k0,0x84
|
||||
14: 337b03ff andi k1,k1,0x3ff
|
||||
|
||||
18: 409a6000 mtc0 k0,c0_status
|
||||
1c: 001bd940 sll k1,k1,0x5
|
||||
|
||||
20: 3c1abfc0 lui k0,0xbfc0
|
||||
24: bc110000 cache 0x11,0(zero)
|
||||
|
||||
28: df5a0078 ld k0,120(k0)
|
||||
2c: 041f0000 synci 0(zero)
|
||||
|
||||
30: 035bd02d daddu k0,k0,k1
|
||||
34: 00000000 nop
|
||||
|
||||
38: df5a0000 ld k0,0(k0)
|
||||
3c: 403bf803 dmfc0 k1,c0_kscratch2
|
||||
|
||||
40: 13400005 beqz k0,58 <wait_loop>
|
||||
44: 00000000 nop
|
||||
|
||||
48: 03400008 jr k0
|
||||
4c: 00000000 nop
|
||||
|
||||
50: 00000000 nop
|
||||
54: 00000000 nop
|
||||
|
||||
0000000000000058 <wait_loop>:
|
||||
58: 42000020 wait
|
||||
5c: 00000000 nop
|
||||
|
||||
60: 1000fffd b 58 <wait_loop>
|
||||
64: 00000000 nop
|
||||
|
||||
68: 00000000 nop
|
||||
6c: 00000000 nop
|
||||
|
||||
*/
|
||||
|
||||
#include <asm/octeon/cvmx-boot-vector.h>
|
||||
|
||||
static unsigned long long _cvmx_bootvector_data[16] = {
|
||||
0x40baf80040bbf803ull, /* patch low order 8-bits if no KScratch*/
|
||||
0x401a6000401b7801ull,
|
||||
0x375a0084337b03ffull,
|
||||
0x409a6000001bd940ull,
|
||||
0x3c1abfc0bc110000ull,
|
||||
0xdf5a0078041f0000ull,
|
||||
0x035bd02d00000000ull,
|
||||
0xdf5a0000403bf803ull, /* patch low order 8-bits if no KScratch*/
|
||||
0x1340000500000000ull,
|
||||
0x0340000800000000ull,
|
||||
0x0000000000000000ull,
|
||||
0x4200002000000000ull,
|
||||
0x1000fffd00000000ull,
|
||||
0x0000000000000000ull,
|
||||
OCTEON_BOOT_MOVEABLE_MAGIC1,
|
||||
0 /* To be filled in with address of vector block*/
|
||||
};
|
||||
|
||||
/* 2^10 CPUs */
|
||||
#define VECTOR_TABLE_SIZE (1024 * sizeof(struct cvmx_boot_vector_element))
|
||||
|
||||
static void cvmx_boot_vector_init(void *mem)
|
||||
{
|
||||
uint64_t kseg0_mem;
|
||||
int i;
|
||||
|
||||
memset(mem, 0, VECTOR_TABLE_SIZE);
|
||||
kseg0_mem = cvmx_ptr_to_phys(mem) | 0x8000000000000000ull;
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
uint64_t v = _cvmx_bootvector_data[i];
|
||||
|
||||
if (OCTEON_IS_OCTEON1PLUS() && (i == 0 || i == 7))
|
||||
v &= 0xffffffff00000000ull; /* KScratch not availble. */
|
||||
cvmx_write_csr(CVMX_MIO_BOOT_LOC_ADR, i * 8);
|
||||
cvmx_write_csr(CVMX_MIO_BOOT_LOC_DAT, v);
|
||||
}
|
||||
cvmx_write_csr(CVMX_MIO_BOOT_LOC_ADR, 15 * 8);
|
||||
cvmx_write_csr(CVMX_MIO_BOOT_LOC_DAT, kseg0_mem);
|
||||
cvmx_write_csr(CVMX_MIO_BOOT_LOC_CFGX(0), 0x81fc0000);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a pointer to the per-core table of reset vector pointers
|
||||
*
|
||||
*/
|
||||
struct cvmx_boot_vector_element *cvmx_boot_vector_get(void)
|
||||
{
|
||||
struct cvmx_boot_vector_element *ret;
|
||||
|
||||
ret = cvmx_bootmem_alloc_named_range_once(VECTOR_TABLE_SIZE, 0,
|
||||
(1ull << 32) - 1, 8, "__boot_vector1__", cvmx_boot_vector_init);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(cvmx_boot_vector_get);
|
@ -44,6 +44,55 @@ static struct cvmx_bootmem_desc *cvmx_bootmem_desc;
|
||||
|
||||
/* See header file for descriptions of functions */
|
||||
|
||||
/**
|
||||
* This macro returns the size of a member of a structure.
|
||||
* Logically it is the same as "sizeof(s::field)" in C++, but
|
||||
* C lacks the "::" operator.
|
||||
*/
|
||||
#define SIZEOF_FIELD(s, field) sizeof(((s *)NULL)->field)
|
||||
|
||||
/**
|
||||
* This macro returns a member of the
|
||||
* cvmx_bootmem_named_block_desc_t structure. These members can't
|
||||
* be directly addressed as they might be in memory not directly
|
||||
* reachable. In the case where bootmem is compiled with
|
||||
* LINUX_HOST, the structure itself might be located on a remote
|
||||
* Octeon. The argument "field" is the member name of the
|
||||
* cvmx_bootmem_named_block_desc_t to read. Regardless of the type
|
||||
* of the field, the return type is always a uint64_t. The "addr"
|
||||
* parameter is the physical address of the structure.
|
||||
*/
|
||||
#define CVMX_BOOTMEM_NAMED_GET_FIELD(addr, field) \
|
||||
__cvmx_bootmem_desc_get(addr, \
|
||||
offsetof(struct cvmx_bootmem_named_block_desc, field), \
|
||||
SIZEOF_FIELD(struct cvmx_bootmem_named_block_desc, field))
|
||||
|
||||
/**
|
||||
* This function is the implementation of the get macros defined
|
||||
* for individual structure members. The argument are generated
|
||||
* by the macros inorder to read only the needed memory.
|
||||
*
|
||||
* @param base 64bit physical address of the complete structure
|
||||
* @param offset Offset from the beginning of the structure to the member being
|
||||
* accessed.
|
||||
* @param size Size of the structure member.
|
||||
*
|
||||
* @return Value of the structure member promoted into a uint64_t.
|
||||
*/
|
||||
static inline uint64_t __cvmx_bootmem_desc_get(uint64_t base, int offset,
|
||||
int size)
|
||||
{
|
||||
base = (1ull << 63) | (base + offset);
|
||||
switch (size) {
|
||||
case 4:
|
||||
return cvmx_read64_uint32(base);
|
||||
case 8:
|
||||
return cvmx_read64_uint64(base);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Wrapper functions are provided for reading/writing the size and
|
||||
* next block values as these may not be directly addressible (in 32
|
||||
@ -98,6 +147,42 @@ void *cvmx_bootmem_alloc(uint64_t size, uint64_t alignment)
|
||||
return cvmx_bootmem_alloc_range(size, alignment, 0, 0);
|
||||
}
|
||||
|
||||
void *cvmx_bootmem_alloc_named_range_once(uint64_t size, uint64_t min_addr,
|
||||
uint64_t max_addr, uint64_t align,
|
||||
char *name,
|
||||
void (*init) (void *))
|
||||
{
|
||||
int64_t addr;
|
||||
void *ptr;
|
||||
uint64_t named_block_desc_addr;
|
||||
|
||||
named_block_desc_addr = (uint64_t)
|
||||
cvmx_bootmem_phy_named_block_find(name,
|
||||
(uint32_t)CVMX_BOOTMEM_FLAG_NO_LOCKING);
|
||||
|
||||
if (named_block_desc_addr) {
|
||||
addr = CVMX_BOOTMEM_NAMED_GET_FIELD(named_block_desc_addr,
|
||||
base_addr);
|
||||
return cvmx_phys_to_ptr(addr);
|
||||
}
|
||||
|
||||
addr = cvmx_bootmem_phy_named_block_alloc(size, min_addr, max_addr,
|
||||
align, name,
|
||||
(uint32_t)CVMX_BOOTMEM_FLAG_NO_LOCKING);
|
||||
|
||||
if (addr < 0)
|
||||
return NULL;
|
||||
ptr = cvmx_phys_to_ptr(addr);
|
||||
|
||||
if (init)
|
||||
init(ptr);
|
||||
else
|
||||
memset(ptr, 0, size);
|
||||
|
||||
return ptr;
|
||||
}
|
||||
EXPORT_SYMBOL(cvmx_bootmem_alloc_named_range_once);
|
||||
|
||||
void *cvmx_bootmem_alloc_named_range(uint64_t size, uint64_t min_addr,
|
||||
uint64_t max_addr, uint64_t align,
|
||||
char *name)
|
||||
|
@ -2963,3 +2963,12 @@ void octeon_fixup_irqs(void)
|
||||
}
|
||||
|
||||
#endif /* CONFIG_HOTPLUG_CPU */
|
||||
|
||||
struct irq_domain *octeon_irq_get_block_domain(int node, uint8_t block)
|
||||
{
|
||||
struct octeon_ciu3_info *ciu3_info;
|
||||
|
||||
ciu3_info = octeon_ciu3_info_per_node[node & CVMX_NODE_MASK];
|
||||
return ciu3_info->domain[block];
|
||||
}
|
||||
EXPORT_SYMBOL(octeon_irq_get_block_domain);
|
||||
|
@ -205,7 +205,7 @@ int plat_post_relocation(long offset)
|
||||
* Firmware CPU startup hook
|
||||
*
|
||||
*/
|
||||
static void octeon_boot_secondary(int cpu, struct task_struct *idle)
|
||||
static int octeon_boot_secondary(int cpu, struct task_struct *idle)
|
||||
{
|
||||
int count;
|
||||
|
||||
@ -223,8 +223,12 @@ static void octeon_boot_secondary(int cpu, struct task_struct *idle)
|
||||
udelay(1);
|
||||
count--;
|
||||
}
|
||||
if (count == 0)
|
||||
if (count == 0) {
|
||||
pr_err("Secondary boot timeout\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -408,7 +412,7 @@ late_initcall(register_cavium_notifier);
|
||||
|
||||
#endif /* CONFIG_HOTPLUG_CPU */
|
||||
|
||||
struct plat_smp_ops octeon_smp_ops = {
|
||||
const struct plat_smp_ops octeon_smp_ops = {
|
||||
.send_ipi_single = octeon_send_ipi_single,
|
||||
.send_ipi_mask = octeon_send_ipi_mask,
|
||||
.init_secondary = octeon_init_secondary,
|
||||
@ -485,7 +489,7 @@ static void octeon_78xx_send_ipi_mask(const struct cpumask *mask,
|
||||
octeon_78xx_send_ipi_single(cpu, action);
|
||||
}
|
||||
|
||||
static struct plat_smp_ops octeon_78xx_smp_ops = {
|
||||
static const struct plat_smp_ops octeon_78xx_smp_ops = {
|
||||
.send_ipi_single = octeon_78xx_send_ipi_single,
|
||||
.send_ipi_mask = octeon_78xx_send_ipi_mask,
|
||||
.init_secondary = octeon_init_secondary,
|
||||
@ -501,7 +505,7 @@ static struct plat_smp_ops octeon_78xx_smp_ops = {
|
||||
|
||||
void __init octeon_setup_smp(void)
|
||||
{
|
||||
struct plat_smp_ops *ops;
|
||||
const struct plat_smp_ops *ops;
|
||||
|
||||
if (octeon_has_feature(OCTEON_FEATURE_CIU3))
|
||||
ops = &octeon_78xx_smp_ops;
|
||||
|
@ -60,11 +60,8 @@ CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SATA_AHCI_PLATFORM=y
|
||||
CONFIG_AHCI_OCTEON=y
|
||||
CONFIG_PATA_OCTEON_CF=y
|
||||
CONFIG_SATA_SIL=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_ADAPTEC is not set
|
||||
# CONFIG_NET_VENDOR_ALTEON is not set
|
||||
@ -121,22 +118,30 @@ CONFIG_SPI=y
|
||||
CONFIG_SPI_OCTEON=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_USB=m
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_PCI is not set
|
||||
CONFIG_USB_XHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_DWC3=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_PWRSEQ_EMMC is not set
|
||||
# CONFIG_PWRSEQ_SIMPLE is not set
|
||||
# CONFIG_MMC_BLOCK_BOUNCE is not set
|
||||
CONFIG_MMC_CAVIUM_OCTEON=y
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_OCTEON_PC=y
|
||||
CONFIG_EDAC_OCTEON_L2C=y
|
||||
CONFIG_EDAC_OCTEON_LMC=y
|
||||
CONFIG_EDAC_OCTEON_PCI=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_DS1307=y
|
||||
CONFIG_STAGING=y
|
||||
CONFIG_OCTEON_ETHERNET=y
|
||||
CONFIG_OCTEON_USB=m
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_RAS=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
|
@ -91,6 +91,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_JZ4780=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_INGENIC=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_DEBUG=y
|
||||
@ -99,6 +100,8 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
# CONFIG_HID is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_JZ4740=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_MEMORY=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
|
30
arch/mips/configs/generic/board-ni169445.config
Normal file
30
arch/mips/configs/generic/board-ni169445.config
Normal file
@ -0,0 +1,30 @@
|
||||
# require CONFIG_CPU_MIPS32_R2=y
|
||||
# require CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
|
||||
CONFIG_FIT_IMAGE_FDT_NI169445=y
|
||||
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
|
||||
CONFIG_MTD_NAND_ECC=y
|
||||
CONFIG_MTD_NAND_ECC_BCH=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_GPIO=y
|
||||
CONFIG_MTD_NAND_IDS=y
|
||||
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_STMMAC_ETH=y
|
||||
CONFIG_STMMAC_PLATFORM=y
|
||||
CONFIG_DWMAC_GENERIC=y
|
@ -1,3 +1,5 @@
|
||||
# require CONFIG_32BIT=y
|
||||
|
||||
CONFIG_LEGACY_BOARD_SEAD3=y
|
||||
|
||||
CONFIG_AUXDISPLAY=y
|
||||
|
@ -3,7 +3,7 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_MIPS_CPS=y
|
||||
CONFIG_CPU_HAS_MSA=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_NR_CPUS=16
|
||||
CONFIG_MIPS_O32_FP64_SUPPORT=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
@ -61,7 +61,6 @@ CONFIG_HID_KENSINGTON=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
# CONFIG_MIPS_PLATFORM_DEVICES is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
|
@ -111,12 +111,8 @@ CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
CONFIG_IPDDP=m
|
||||
CONFIG_IPDDP_ENCAP=y
|
||||
CONFIG_IPDDP_DECAP=y
|
||||
CONFIG_X25=m
|
||||
CONFIG_LAPB=m
|
||||
CONFIG_ECONET=m
|
||||
CONFIG_ECONET_AUNUDP=y
|
||||
CONFIG_ECONET_NATIVE=y
|
||||
CONFIG_WAN_ROUTER=m
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_SCH_CBQ=m
|
||||
|
@ -37,7 +37,6 @@ CONFIG_PM=y
|
||||
CONFIG_HIBERNATION=y
|
||||
CONFIG_PM_STD_PARTITION="/dev/hda3"
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
|
||||
|
@ -2,7 +2,6 @@ CONFIG_MIPS_MALTA=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_MIPS32_R2=y
|
||||
CONFIG_PAGE_SIZE_16KB=y
|
||||
CONFIG_MIPS_MT_SMP=y
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_SYSVIPC=y
|
||||
|
@ -2,7 +2,6 @@ CONFIG_MIPS_MALTA=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_MIPS32_R2=y
|
||||
CONFIG_PAGE_SIZE_16KB=y
|
||||
CONFIG_MIPS_MT_SMP=y
|
||||
CONFIG_NR_CPUS=8
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_SYSVIPC=y
|
||||
|
@ -3,6 +3,7 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_MIPS32_R2=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_PAGE_SIZE_16KB=y
|
||||
# CONFIG_MIPS_MT_SMP is not set
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_NO_HZ=y
|
||||
|
@ -2,7 +2,6 @@ CONFIG_MIPS_MALTA=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_MIPS32_R2=y
|
||||
CONFIG_PAGE_SIZE_16KB=y
|
||||
CONFIG_MIPS_MT_SMP=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_MIPS_CPS=y
|
||||
CONFIG_NR_CPUS=8
|
||||
|
@ -3,7 +3,6 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_CPU_MIPS32_R2=y
|
||||
CONFIG_CPU_MIPS32_3_5_FEATURES=y
|
||||
CONFIG_PAGE_SIZE_16KB=y
|
||||
CONFIG_MIPS_MT_SMP=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_MIPS_CPS=y
|
||||
CONFIG_NR_CPUS=8
|
||||
|
@ -146,12 +146,8 @@ CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
CONFIG_IPDDP=m
|
||||
CONFIG_IPDDP_ENCAP=y
|
||||
CONFIG_IPDDP_DECAP=y
|
||||
CONFIG_X25=m
|
||||
CONFIG_LAPB=m
|
||||
CONFIG_ECONET=m
|
||||
CONFIG_ECONET_AUNUDP=y
|
||||
CONFIG_ECONET_NATIVE=y
|
||||
CONFIG_WAN_ROUTER=m
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_SCH_CBQ=m
|
||||
|
@ -259,7 +259,6 @@ CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
CONFIG_IPDDP=m
|
||||
CONFIG_IPDDP_ENCAP=y
|
||||
CONFIG_IPDDP_DECAP=y
|
||||
CONFIG_X25=m
|
||||
CONFIG_LAPB=m
|
||||
CONFIG_WAN_ROUTER=m
|
||||
|
@ -240,12 +240,8 @@ CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
CONFIG_IPDDP=m
|
||||
CONFIG_IPDDP_ENCAP=y
|
||||
CONFIG_IPDDP_DECAP=y
|
||||
CONFIG_X25=m
|
||||
CONFIG_LAPB=m
|
||||
CONFIG_ECONET=m
|
||||
CONFIG_ECONET_AUNUDP=y
|
||||
CONFIG_ECONET_NATIVE=y
|
||||
CONFIG_WAN_ROUTER=m
|
||||
CONFIG_PHONET=m
|
||||
CONFIG_IEEE802154=m
|
||||
|
129
arch/mips/configs/omega2p_defconfig
Normal file
129
arch/mips/configs/omega2p_defconfig
Normal file
@ -0,0 +1,129 @@
|
||||
CONFIG_RALINK=y
|
||||
CONFIG_SOC_MT7620=y
|
||||
CONFIG_DTB_OMEGA2P=y
|
||||
CONFIG_CPU_MIPS32_R2=y
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_PREEMPT=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_NAMESPACES=y
|
||||
CONFIG_USER_NS=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_SUSPEND is not set
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_ETHERNET is not set
|
||||
# CONFIG_WLAN is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_SERIO is not set
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
CONFIG_LEGACY_PTY_COUNT=2
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=3
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=3
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_MEMORY=y
|
||||
CONFIG_PHY_RALINK_USB=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_PROC_KCORE=y
|
||||
# CONFIG_PROC_PAGE_MONITOR is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_737=y
|
||||
CONFIG_NLS_CODEPAGE_775=y
|
||||
CONFIG_NLS_CODEPAGE_850=y
|
||||
CONFIG_NLS_CODEPAGE_852=y
|
||||
CONFIG_NLS_CODEPAGE_855=y
|
||||
CONFIG_NLS_CODEPAGE_857=y
|
||||
CONFIG_NLS_CODEPAGE_860=y
|
||||
CONFIG_NLS_CODEPAGE_861=y
|
||||
CONFIG_NLS_CODEPAGE_862=y
|
||||
CONFIG_NLS_CODEPAGE_863=y
|
||||
CONFIG_NLS_CODEPAGE_864=y
|
||||
CONFIG_NLS_CODEPAGE_865=y
|
||||
CONFIG_NLS_CODEPAGE_866=y
|
||||
CONFIG_NLS_CODEPAGE_869=y
|
||||
CONFIG_NLS_CODEPAGE_936=y
|
||||
CONFIG_NLS_CODEPAGE_950=y
|
||||
CONFIG_NLS_CODEPAGE_932=y
|
||||
CONFIG_NLS_CODEPAGE_949=y
|
||||
CONFIG_NLS_CODEPAGE_874=y
|
||||
CONFIG_NLS_ISO8859_8=y
|
||||
CONFIG_NLS_CODEPAGE_1250=y
|
||||
CONFIG_NLS_CODEPAGE_1251=y
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_2=y
|
||||
CONFIG_NLS_ISO8859_3=y
|
||||
CONFIG_NLS_ISO8859_4=y
|
||||
CONFIG_NLS_ISO8859_5=y
|
||||
CONFIG_NLS_ISO8859_6=y
|
||||
CONFIG_NLS_ISO8859_7=y
|
||||
CONFIG_NLS_ISO8859_9=y
|
||||
CONFIG_NLS_ISO8859_13=y
|
||||
CONFIG_NLS_ISO8859_14=y
|
||||
CONFIG_NLS_ISO8859_15=y
|
||||
CONFIG_NLS_KOI8_R=y
|
||||
CONFIG_NLS_KOI8_U=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_PANIC_TIMEOUT=10
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
CONFIG_STACKTRACE=y
|
||||
# CONFIG_FTRACE is not set
|
||||
CONFIG_CRYPTO_DEFLATE=y
|
||||
CONFIG_CRYPTO_LZO=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_XZ_DEC=y
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user