You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'arm-perf-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into next/drivers
Merge "arm-cci PMU updates for 4.1" from Will Deacon: CCI-400 PMU updates This series reworks some of the CCI-400 PMU code so that it can be used on both ARM and ARM64-based systems, without the need to boot in secure mode on the latter. This paves the way for CCI-500 support in future. * tag 'arm-perf-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux: arm-cci: Fix CCI PMU event validation arm-cci: Split the code for PMU vs driver support arm-cci: Get rid of secure transactions for PMU driver arm-cci: Abstract the CCI400 PMU specific definitions arm-cci: Rearrange code for splitting PMU vs driver code drivers: cci: reject groups spanning multiple HW PMUs + Linux 4.0-rc4 Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
Code of Conflict
|
||||||
|
----------------
|
||||||
|
|
||||||
|
The Linux kernel development effort is a very personal process compared
|
||||||
|
to "traditional" ways of developing software. Your code and ideas
|
||||||
|
behind it will be carefully reviewed, often resulting in critique and
|
||||||
|
criticism. The review will almost always require improvements to the
|
||||||
|
code before it can be included in the kernel. Know that this happens
|
||||||
|
because everyone involved wants to see the best possible solution for
|
||||||
|
the overall success of Linux. This development process has been proven
|
||||||
|
to create the most robust operating system kernel ever, and we do not
|
||||||
|
want to do anything to cause the quality of submission and eventual
|
||||||
|
result to ever decrease.
|
||||||
|
|
||||||
|
If however, anyone feels personally abused, threatened, or otherwise
|
||||||
|
uncomfortable due to this process, that is not acceptable. If so,
|
||||||
|
please contact the Linux Foundation's Technical Advisory Board at
|
||||||
|
<tab@lists.linux-foundation.org>, or the individual members, and they
|
||||||
|
will work to resolve the issue to the best of their ability. For more
|
||||||
|
information on who is on the Technical Advisory Board and what their
|
||||||
|
role is, please see:
|
||||||
|
http://www.linuxfoundation.org/programs/advisory-councils/tab
|
||||||
|
|
||||||
|
As a reviewer of code, please strive to keep things civil and focused on
|
||||||
|
the technical issues involved. We are all humans, and frustrations can
|
||||||
|
be high on both sides of the process. Try to keep in mind the immortal
|
||||||
|
words of Bill and Ted, "Be excellent to each other."
|
||||||
@@ -94,8 +94,11 @@ specific to ARM.
|
|||||||
- compatible
|
- compatible
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <string>
|
Value type: <string>
|
||||||
Definition: must be "arm,cci-400-pmu"
|
Definition: Must contain one of:
|
||||||
|
"arm,cci-400-pmu,r0"
|
||||||
|
"arm,cci-400-pmu,r1"
|
||||||
|
"arm,cci-400-pmu" - DEPRECATED, permitted only where OS has
|
||||||
|
secure acces to CCI registers
|
||||||
- reg:
|
- reg:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: Integer cells. A register entry, expressed
|
Value type: Integer cells. A register entry, expressed
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ Optional Properties:
|
|||||||
- pclkN, clkN: Pairs of parent of input clock and input clock to the
|
- pclkN, clkN: Pairs of parent of input clock and input clock to the
|
||||||
devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
|
devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
|
||||||
are supported currently.
|
are supported currently.
|
||||||
|
- power-domains: phandle pointing to the parent power domain, for more details
|
||||||
|
see Documentation/devicetree/bindings/power/power_domain.txt
|
||||||
|
|
||||||
Node of a device using power domains must have a power-domains property
|
Node of a device using power domains must have a power-domains property
|
||||||
defined with a phandle to respective power domain.
|
defined with a phandle to respective power domain.
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ Boards with the ST STiH407 SoC shall have the following properties:
|
|||||||
Required root node property:
|
Required root node property:
|
||||||
compatible = "st,stih407";
|
compatible = "st,stih407";
|
||||||
|
|
||||||
|
Boards with the ST STiH410 SoC shall have the following properties:
|
||||||
|
Required root node property:
|
||||||
|
compatible = "st,stih410";
|
||||||
|
|
||||||
Boards with the ST STiH418 SoC shall have the following properties:
|
Boards with the ST STiH418 SoC shall have the following properties:
|
||||||
Required root node property:
|
Required root node property:
|
||||||
compatible = "st,stih418";
|
compatible = "st,stih418";
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ Required properties:
|
|||||||
- "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC
|
- "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC
|
||||||
- reg : Should contain I2C/HS-I2C registers location and length
|
- reg : Should contain I2C/HS-I2C registers location and length
|
||||||
- interrupts : Should contain I2C/HS-I2C interrupt
|
- interrupts : Should contain I2C/HS-I2C interrupt
|
||||||
|
- clocks : Should contain the I2C/HS-I2C clock specifier
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- clock-frequency : Constains desired I2C/HS-I2C bus clock frequency in Hz.
|
- clock-frequency : Constains desired I2C/HS-I2C bus clock frequency in Hz.
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ property is used.
|
|||||||
- amd,serdes-cdr-rate: CDR rate speed selection
|
- amd,serdes-cdr-rate: CDR rate speed selection
|
||||||
- amd,serdes-pq-skew: PQ (data sampling) skew
|
- amd,serdes-pq-skew: PQ (data sampling) skew
|
||||||
- amd,serdes-tx-amp: TX amplitude boost
|
- amd,serdes-tx-amp: TX amplitude boost
|
||||||
|
- amd,serdes-dfe-tap-config: DFE taps available to run
|
||||||
|
- amd,serdes-dfe-tap-enable: DFE taps to enable
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
xgbe_phy@e1240800 {
|
xgbe_phy@e1240800 {
|
||||||
@@ -41,4 +43,6 @@ Example:
|
|||||||
amd,serdes-cdr-rate = <2>, <2>, <7>;
|
amd,serdes-cdr-rate = <2>, <2>, <7>;
|
||||||
amd,serdes-pq-skew = <10>, <10>, <30>;
|
amd,serdes-pq-skew = <10>, <10>, <30>;
|
||||||
amd,serdes-tx-amp = <15>, <15>, <10>;
|
amd,serdes-tx-amp = <15>, <15>, <10>;
|
||||||
|
amd,serdes-dfe-tap-config = <3>, <3>, <1>;
|
||||||
|
amd,serdes-dfe-tap-enable = <0>, <0>, <127>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ Ethernet nodes are defined to describe on-chip ethernet interfaces in
|
|||||||
APM X-Gene SoC.
|
APM X-Gene SoC.
|
||||||
|
|
||||||
Required properties for all the ethernet interfaces:
|
Required properties for all the ethernet interfaces:
|
||||||
- compatible: Should be "apm,xgene-enet"
|
- compatible: Should state binding information from the following list,
|
||||||
|
- "apm,xgene-enet": RGMII based 1G interface
|
||||||
|
- "apm,xgene1-sgenet": SGMII based 1G interface
|
||||||
|
- "apm,xgene1-xgenet": XFI based 10G interface
|
||||||
- reg: Address and length of the register set for the device. It contains the
|
- reg: Address and length of the register set for the device. It contains the
|
||||||
information of registers in the same order as described by reg-names
|
information of registers in the same order as described by reg-names
|
||||||
- reg-names: Should contain the register set names
|
- reg-names: Should contain the register set names
|
||||||
|
|||||||
@@ -19,6 +19,16 @@ Required properties:
|
|||||||
providing multiple PM domains (e.g. power controllers), but can be any value
|
providing multiple PM domains (e.g. power controllers), but can be any value
|
||||||
as specified by device tree binding documentation of particular provider.
|
as specified by device tree binding documentation of particular provider.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- power-domains : A phandle and PM domain specifier as defined by bindings of
|
||||||
|
the power controller specified by phandle.
|
||||||
|
Some power domains might be powered from another power domain (or have
|
||||||
|
other hardware specific dependencies). For representing such dependency
|
||||||
|
a standard PM domain consumer binding is used. When provided, all domains
|
||||||
|
created by the given provider should be subdomains of the domain
|
||||||
|
specified by this binding. More details about power domain specifier are
|
||||||
|
available in the next section.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
power: power-controller@12340000 {
|
power: power-controller@12340000 {
|
||||||
@@ -30,6 +40,25 @@ Example:
|
|||||||
The node above defines a power controller that is a PM domain provider and
|
The node above defines a power controller that is a PM domain provider and
|
||||||
expects one cell as its phandle argument.
|
expects one cell as its phandle argument.
|
||||||
|
|
||||||
|
Example 2:
|
||||||
|
|
||||||
|
parent: power-controller@12340000 {
|
||||||
|
compatible = "foo,power-controller";
|
||||||
|
reg = <0x12340000 0x1000>;
|
||||||
|
#power-domain-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
child: power-controller@12340000 {
|
||||||
|
compatible = "foo,power-controller";
|
||||||
|
reg = <0x12341000 0x1000>;
|
||||||
|
power-domains = <&parent 0>;
|
||||||
|
#power-domain-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
The nodes above define two power controllers: 'parent' and 'child'.
|
||||||
|
Domains created by the 'child' power controller are subdomains of '0' power
|
||||||
|
domain provided by the 'parent' power controller.
|
||||||
|
|
||||||
==PM domain consumers==
|
==PM domain consumers==
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
ETRAX FS UART
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "axis,etraxfs-uart"
|
||||||
|
- reg: offset and length of the register set for the device.
|
||||||
|
- interrupts: device interrupt
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- {dtr,dsr,ri,cd}-gpios: specify a GPIO for DTR/DSR/RI/CD
|
||||||
|
line respectively.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
serial@b00260000 {
|
||||||
|
compatible = "axis,etraxfs-uart";
|
||||||
|
reg = <0xb0026000 0x1000>;
|
||||||
|
interrupts = <68>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
@@ -21,6 +21,18 @@ Optional properties:
|
|||||||
- reg-io-width : the size (in bytes) of the IO accesses that should be
|
- reg-io-width : the size (in bytes) of the IO accesses that should be
|
||||||
performed on the device. If this property is not present then single byte
|
performed on the device. If this property is not present then single byte
|
||||||
accesses are used.
|
accesses are used.
|
||||||
|
- dcd-override : Override the DCD modem status signal. This signal will always
|
||||||
|
be reported as active instead of being obtained from the modem status
|
||||||
|
register. Define this if your serial port does not use this pin.
|
||||||
|
- dsr-override : Override the DTS modem status signal. This signal will always
|
||||||
|
be reported as active instead of being obtained from the modem status
|
||||||
|
register. Define this if your serial port does not use this pin.
|
||||||
|
- cts-override : Override the CTS modem status signal. This signal will always
|
||||||
|
be reported as active instead of being obtained from the modem status
|
||||||
|
register. Define this if your serial port does not use this pin.
|
||||||
|
- ri-override : Override the RI modem status signal. This signal will always be
|
||||||
|
reported as inactive instead of being obtained from the modem status register.
|
||||||
|
Define this if your serial port does not use this pin.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@@ -31,6 +43,10 @@ Example:
|
|||||||
interrupts = <10>;
|
interrupts = <10>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
|
dcd-override;
|
||||||
|
dsr-override;
|
||||||
|
cts-override;
|
||||||
|
ri-override;
|
||||||
};
|
};
|
||||||
|
|
||||||
Example with one clock:
|
Example with one clock:
|
||||||
|
|||||||
@@ -12,6 +12,9 @@ I. For patch submitters
|
|||||||
|
|
||||||
devicetree@vger.kernel.org
|
devicetree@vger.kernel.org
|
||||||
|
|
||||||
|
and Cc: the DT maintainers. Use scripts/get_maintainer.pl to identify
|
||||||
|
all of the DT maintainers.
|
||||||
|
|
||||||
3) The Documentation/ portion of the patch should come in the series before
|
3) The Documentation/ portion of the patch should come in the series before
|
||||||
the code implementing the binding.
|
the code implementing the binding.
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ amlogic Amlogic, Inc.
|
|||||||
ams AMS AG
|
ams AMS AG
|
||||||
amstaos AMS-Taos Inc.
|
amstaos AMS-Taos Inc.
|
||||||
apm Applied Micro Circuits Corporation (APM)
|
apm Applied Micro Circuits Corporation (APM)
|
||||||
|
arasan Arasan Chip Systems
|
||||||
arm ARM Ltd.
|
arm ARM Ltd.
|
||||||
armadeus ARMadeus Systems SARL
|
armadeus ARMadeus Systems SARL
|
||||||
asahi-kasei Asahi Kasei Corp.
|
asahi-kasei Asahi Kasei Corp.
|
||||||
@@ -27,6 +28,7 @@ atmel Atmel Corporation
|
|||||||
auo AU Optronics Corporation
|
auo AU Optronics Corporation
|
||||||
avago Avago Technologies
|
avago Avago Technologies
|
||||||
avic Shanghai AVIC Optoelectronics Co., Ltd.
|
avic Shanghai AVIC Optoelectronics Co., Ltd.
|
||||||
|
axis Axis Communications AB
|
||||||
bosch Bosch Sensortec GmbH
|
bosch Bosch Sensortec GmbH
|
||||||
brcm Broadcom Corporation
|
brcm Broadcom Corporation
|
||||||
buffalo Buffalo, Inc.
|
buffalo Buffalo, Inc.
|
||||||
|
|||||||
@@ -40,8 +40,10 @@ but also to IPIs and to some other special-purpose interrupts.
|
|||||||
|
|
||||||
The IRQF_NO_SUSPEND flag is used to indicate that to the IRQ subsystem when
|
The IRQF_NO_SUSPEND flag is used to indicate that to the IRQ subsystem when
|
||||||
requesting a special-purpose interrupt. It causes suspend_device_irqs() to
|
requesting a special-purpose interrupt. It causes suspend_device_irqs() to
|
||||||
leave the corresponding IRQ enabled so as to allow the interrupt to work all
|
leave the corresponding IRQ enabled so as to allow the interrupt to work as
|
||||||
the time as expected.
|
expected during the suspend-resume cycle, but does not guarantee that the
|
||||||
|
interrupt will wake the system from a suspended state -- for such cases it is
|
||||||
|
necessary to use enable_irq_wake().
|
||||||
|
|
||||||
Note that the IRQF_NO_SUSPEND flag affects the entire IRQ and not just one
|
Note that the IRQF_NO_SUSPEND flag affects the entire IRQ and not just one
|
||||||
user of it. Thus, if the IRQ is shared, all of the interrupt handlers installed
|
user of it. Thus, if the IRQ is shared, all of the interrupt handlers installed
|
||||||
@@ -110,8 +112,9 @@ any special interrupt handling logic for it to work.
|
|||||||
IRQF_NO_SUSPEND and enable_irq_wake()
|
IRQF_NO_SUSPEND and enable_irq_wake()
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
There are no valid reasons to use both enable_irq_wake() and the IRQF_NO_SUSPEND
|
There are very few valid reasons to use both enable_irq_wake() and the
|
||||||
flag on the same IRQ.
|
IRQF_NO_SUSPEND flag on the same IRQ, and it is never valid to use both for the
|
||||||
|
same device.
|
||||||
|
|
||||||
First of all, if the IRQ is not shared, the rules for handling IRQF_NO_SUSPEND
|
First of all, if the IRQ is not shared, the rules for handling IRQF_NO_SUSPEND
|
||||||
interrupts (interrupt handlers are invoked after suspend_device_irqs()) are
|
interrupts (interrupt handlers are invoked after suspend_device_irqs()) are
|
||||||
@@ -120,4 +123,13 @@ handlers are not invoked after suspend_device_irqs()).
|
|||||||
|
|
||||||
Second, both enable_irq_wake() and IRQF_NO_SUSPEND apply to entire IRQs and not
|
Second, both enable_irq_wake() and IRQF_NO_SUSPEND apply to entire IRQs and not
|
||||||
to individual interrupt handlers, so sharing an IRQ between a system wakeup
|
to individual interrupt handlers, so sharing an IRQ between a system wakeup
|
||||||
interrupt source and an IRQF_NO_SUSPEND interrupt source does not make sense.
|
interrupt source and an IRQF_NO_SUSPEND interrupt source does not generally
|
||||||
|
make sense.
|
||||||
|
|
||||||
|
In rare cases an IRQ can be shared between a wakeup device driver and an
|
||||||
|
IRQF_NO_SUSPEND user. In order for this to be safe, the wakeup device driver
|
||||||
|
must be able to discern spurious IRQs from genuine wakeup events (signalling
|
||||||
|
the latter to the core with pm_system_wakeup()), must use enable_irq_wake() to
|
||||||
|
ensure that the IRQ will function as a wakeup source, and must request the IRQ
|
||||||
|
with IRQF_COND_SUSPEND to tell the core that it meets these requirements. If
|
||||||
|
these requirements are not met, it is not valid to use IRQF_COND_SUSPEND.
|
||||||
|
|||||||
+23
-4
@@ -1030,6 +1030,16 @@ F: arch/arm/mach-mxs/
|
|||||||
F: arch/arm/boot/dts/imx*
|
F: arch/arm/boot/dts/imx*
|
||||||
F: arch/arm/configs/imx*_defconfig
|
F: arch/arm/configs/imx*_defconfig
|
||||||
|
|
||||||
|
ARM/FREESCALE VYBRID ARM ARCHITECTURE
|
||||||
|
M: Shawn Guo <shawn.guo@linaro.org>
|
||||||
|
M: Sascha Hauer <kernel@pengutronix.de>
|
||||||
|
R: Stefan Agner <stefan@agner.ch>
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
|
||||||
|
F: arch/arm/mach-imx/*vf610*
|
||||||
|
F: arch/arm/boot/dts/vf*
|
||||||
|
|
||||||
ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
|
ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
@@ -1188,6 +1198,7 @@ ARM/Marvell Dove/MV78xx0/Orion SOC support
|
|||||||
M: Jason Cooper <jason@lakedaemon.net>
|
M: Jason Cooper <jason@lakedaemon.net>
|
||||||
M: Andrew Lunn <andrew@lunn.ch>
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||||
|
M: Gregory Clement <gregory.clement@free-electrons.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-dove/
|
F: arch/arm/mach-dove/
|
||||||
@@ -2066,7 +2077,7 @@ F: include/net/bluetooth/
|
|||||||
BONDING DRIVER
|
BONDING DRIVER
|
||||||
M: Jay Vosburgh <j.vosburgh@gmail.com>
|
M: Jay Vosburgh <j.vosburgh@gmail.com>
|
||||||
M: Veaceslav Falico <vfalico@gmail.com>
|
M: Veaceslav Falico <vfalico@gmail.com>
|
||||||
M: Andy Gospodarek <andy@greyhouse.net>
|
M: Andy Gospodarek <gospo@cumulusnetworks.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
W: http://sourceforge.net/projects/bonding/
|
W: http://sourceforge.net/projects/bonding/
|
||||||
S: Supported
|
S: Supported
|
||||||
@@ -2108,7 +2119,6 @@ F: drivers/net/ethernet/broadcom/bnx2x/
|
|||||||
|
|
||||||
BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
|
BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
|
||||||
M: Christian Daudt <bcm@fixthebug.org>
|
M: Christian Daudt <bcm@fixthebug.org>
|
||||||
M: Matt Porter <mporter@linaro.org>
|
|
||||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
L: bcm-kernel-feedback-list@broadcom.com
|
L: bcm-kernel-feedback-list@broadcom.com
|
||||||
T: git git://github.com/broadcom/mach-bcm
|
T: git git://github.com/broadcom/mach-bcm
|
||||||
@@ -2370,8 +2380,9 @@ F: arch/x86/include/asm/tce.h
|
|||||||
|
|
||||||
CAN NETWORK LAYER
|
CAN NETWORK LAYER
|
||||||
M: Oliver Hartkopp <socketcan@hartkopp.net>
|
M: Oliver Hartkopp <socketcan@hartkopp.net>
|
||||||
|
M: Marc Kleine-Budde <mkl@pengutronix.de>
|
||||||
L: linux-can@vger.kernel.org
|
L: linux-can@vger.kernel.org
|
||||||
W: http://gitorious.org/linux-can
|
W: https://github.com/linux-can
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -2387,7 +2398,7 @@ CAN NETWORK DRIVERS
|
|||||||
M: Wolfgang Grandegger <wg@grandegger.com>
|
M: Wolfgang Grandegger <wg@grandegger.com>
|
||||||
M: Marc Kleine-Budde <mkl@pengutronix.de>
|
M: Marc Kleine-Budde <mkl@pengutronix.de>
|
||||||
L: linux-can@vger.kernel.org
|
L: linux-can@vger.kernel.org
|
||||||
W: http://gitorious.org/linux-can
|
W: https://github.com/linux-can
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -8481,6 +8492,14 @@ S: Supported
|
|||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
F: drivers/net/ethernet/samsung/sxgbe/
|
F: drivers/net/ethernet/samsung/sxgbe/
|
||||||
|
|
||||||
|
SAMSUNG THERMAL DRIVER
|
||||||
|
M: Lukasz Majewski <l.majewski@samsung.com>
|
||||||
|
L: linux-pm@vger.kernel.org
|
||||||
|
L: linux-samsung-soc@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
T: https://github.com/lmajewski/linux-samsung-thermal.git
|
||||||
|
F: drivers/thermal/samsung/
|
||||||
|
|
||||||
SAMSUNG USB2 PHY DRIVER
|
SAMSUNG USB2 PHY DRIVER
|
||||||
M: Kamil Debski <k.debski@samsung.com>
|
M: Kamil Debski <k.debski@samsung.com>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 0
|
PATCHLEVEL = 0
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc4
|
||||||
NAME = Hurr durr I'ma sheep
|
NAME = Hurr durr I'ma sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|||||||
@@ -47,9 +47,6 @@ struct thread_struct {
|
|||||||
/* Forward declaration, a strange C thing */
|
/* Forward declaration, a strange C thing */
|
||||||
struct task_struct;
|
struct task_struct;
|
||||||
|
|
||||||
/* Return saved PC of a blocked thread */
|
|
||||||
unsigned long thread_saved_pc(struct task_struct *t);
|
|
||||||
|
|
||||||
#define task_pt_regs(p) \
|
#define task_pt_regs(p) \
|
||||||
((struct pt_regs *)(THREAD_SIZE + (void *)task_stack_page(p)) - 1)
|
((struct pt_regs *)(THREAD_SIZE + (void *)task_stack_page(p)) - 1)
|
||||||
|
|
||||||
@@ -72,18 +69,21 @@ unsigned long thread_saved_pc(struct task_struct *t);
|
|||||||
#define release_segments(mm) do { } while (0)
|
#define release_segments(mm) do { } while (0)
|
||||||
|
|
||||||
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->ret)
|
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->ret)
|
||||||
|
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Where abouts of Task's sp, fp, blink when it was last seen in kernel mode.
|
* Where abouts of Task's sp, fp, blink when it was last seen in kernel mode.
|
||||||
* Look in process.c for details of kernel stack layout
|
* Look in process.c for details of kernel stack layout
|
||||||
*/
|
*/
|
||||||
#define KSTK_ESP(tsk) (tsk->thread.ksp)
|
#define TSK_K_ESP(tsk) (tsk->thread.ksp)
|
||||||
|
|
||||||
#define KSTK_REG(tsk, off) (*((unsigned int *)(KSTK_ESP(tsk) + \
|
#define TSK_K_REG(tsk, off) (*((unsigned int *)(TSK_K_ESP(tsk) + \
|
||||||
sizeof(struct callee_regs) + off)))
|
sizeof(struct callee_regs) + off)))
|
||||||
|
|
||||||
#define KSTK_BLINK(tsk) KSTK_REG(tsk, 4)
|
#define TSK_K_BLINK(tsk) TSK_K_REG(tsk, 4)
|
||||||
#define KSTK_FP(tsk) KSTK_REG(tsk, 0)
|
#define TSK_K_FP(tsk) TSK_K_REG(tsk, 0)
|
||||||
|
|
||||||
|
#define thread_saved_pc(tsk) TSK_K_BLINK(tsk)
|
||||||
|
|
||||||
extern void start_thread(struct pt_regs * regs, unsigned long pc,
|
extern void start_thread(struct pt_regs * regs, unsigned long pc,
|
||||||
unsigned long usp);
|
unsigned long usp);
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2014-15 Synopsys, Inc. (www.synopsys.com)
|
||||||
|
* Copyright (C) 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_STACKTRACE_H
|
||||||
|
#define __ASM_STACKTRACE_H
|
||||||
|
|
||||||
|
#include <linux/sched.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* arc_unwind_core - Unwind the kernel mode stack for an execution context
|
||||||
|
* @tsk: NULL for current task, specific task otherwise
|
||||||
|
* @regs: pt_regs used to seed the unwinder {SP, FP, BLINK, PC}
|
||||||
|
* If NULL, use pt_regs of @tsk (if !NULL) otherwise
|
||||||
|
* use the current values of {SP, FP, BLINK, PC}
|
||||||
|
* @consumer_fn: Callback invoked for each frame unwound
|
||||||
|
* Returns 0 to continue unwinding, -1 to stop
|
||||||
|
* @arg: Arg to callback
|
||||||
|
*
|
||||||
|
* Returns the address of first function in stack
|
||||||
|
*
|
||||||
|
* Semantics:
|
||||||
|
* - synchronous unwinding (e.g. dump_stack): @tsk NULL, @regs NULL
|
||||||
|
* - Asynchronous unwinding of sleeping task: @tsk !NULL, @regs NULL
|
||||||
|
* - Asynchronous unwinding of intr/excp etc: @tsk !NULL, @regs !NULL
|
||||||
|
*/
|
||||||
|
notrace noinline unsigned int arc_unwind_core(
|
||||||
|
struct task_struct *tsk, struct pt_regs *regs,
|
||||||
|
int (*consumer_fn) (unsigned int, void *),
|
||||||
|
void *arg);
|
||||||
|
|
||||||
|
#endif /* __ASM_STACKTRACE_H */
|
||||||
@@ -192,29 +192,6 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* API: expected by schedular Code: If thread is sleeping where is that.
|
|
||||||
* What is this good for? it will be always the scheduler or ret_from_fork.
|
|
||||||
* So we hard code that anyways.
|
|
||||||
*/
|
|
||||||
unsigned long thread_saved_pc(struct task_struct *t)
|
|
||||||
{
|
|
||||||
struct pt_regs *regs = task_pt_regs(t);
|
|
||||||
unsigned long blink = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If the thread being queried for in not itself calling this, then it
|
|
||||||
* implies it is not executing, which in turn implies it is sleeping,
|
|
||||||
* which in turn implies it got switched OUT by the schedular.
|
|
||||||
* In that case, it's kernel mode blink can reliably retrieved as per
|
|
||||||
* the picture above (right above pt_regs).
|
|
||||||
*/
|
|
||||||
if (t != current && t->state != TASK_RUNNING)
|
|
||||||
blink = *((unsigned int *)regs - 1);
|
|
||||||
|
|
||||||
return blink;
|
|
||||||
}
|
|
||||||
|
|
||||||
int elf_check_arch(const struct elf32_hdr *x)
|
int elf_check_arch(const struct elf32_hdr *x)
|
||||||
{
|
{
|
||||||
unsigned int eflags;
|
unsigned int eflags;
|
||||||
|
|||||||
@@ -43,6 +43,10 @@ static void seed_unwind_frame_info(struct task_struct *tsk,
|
|||||||
struct pt_regs *regs,
|
struct pt_regs *regs,
|
||||||
struct unwind_frame_info *frame_info)
|
struct unwind_frame_info *frame_info)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* synchronous unwinding (e.g. dump_stack)
|
||||||
|
* - uses current values of SP and friends
|
||||||
|
*/
|
||||||
if (tsk == NULL && regs == NULL) {
|
if (tsk == NULL && regs == NULL) {
|
||||||
unsigned long fp, sp, blink, ret;
|
unsigned long fp, sp, blink, ret;
|
||||||
frame_info->task = current;
|
frame_info->task = current;
|
||||||
@@ -61,12 +65,17 @@ static void seed_unwind_frame_info(struct task_struct *tsk,
|
|||||||
frame_info->regs.r63 = ret;
|
frame_info->regs.r63 = ret;
|
||||||
frame_info->call_frame = 0;
|
frame_info->call_frame = 0;
|
||||||
} else if (regs == NULL) {
|
} else if (regs == NULL) {
|
||||||
|
/*
|
||||||
|
* Asynchronous unwinding of sleeping task
|
||||||
|
* - Gets SP etc from task's pt_regs (saved bottom of kernel
|
||||||
|
* mode stack of task)
|
||||||
|
*/
|
||||||
|
|
||||||
frame_info->task = tsk;
|
frame_info->task = tsk;
|
||||||
|
|
||||||
frame_info->regs.r27 = KSTK_FP(tsk);
|
frame_info->regs.r27 = TSK_K_FP(tsk);
|
||||||
frame_info->regs.r28 = KSTK_ESP(tsk);
|
frame_info->regs.r28 = TSK_K_ESP(tsk);
|
||||||
frame_info->regs.r31 = KSTK_BLINK(tsk);
|
frame_info->regs.r31 = TSK_K_BLINK(tsk);
|
||||||
frame_info->regs.r63 = (unsigned int)__switch_to;
|
frame_info->regs.r63 = (unsigned int)__switch_to;
|
||||||
|
|
||||||
/* In the prologue of __switch_to, first FP is saved on stack
|
/* In the prologue of __switch_to, first FP is saved on stack
|
||||||
@@ -83,6 +92,10 @@ static void seed_unwind_frame_info(struct task_struct *tsk,
|
|||||||
frame_info->call_frame = 0;
|
frame_info->call_frame = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
/*
|
||||||
|
* Asynchronous unwinding of intr/exception
|
||||||
|
* - Just uses the pt_regs passed
|
||||||
|
*/
|
||||||
frame_info->task = tsk;
|
frame_info->task = tsk;
|
||||||
|
|
||||||
frame_info->regs.r27 = regs->fp;
|
frame_info->regs.r27 = regs->fp;
|
||||||
@@ -95,7 +108,7 @@ static void seed_unwind_frame_info(struct task_struct *tsk,
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static noinline unsigned int
|
notrace noinline unsigned int
|
||||||
arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,
|
arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,
|
||||||
int (*consumer_fn) (unsigned int, void *), void *arg)
|
int (*consumer_fn) (unsigned int, void *), void *arg)
|
||||||
{
|
{
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user