mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 21:50:53 +07:00
Linux 4.3-rc3
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJWB9f6AAoJEHm+PkMAQRiGiFMIAJYFLIkF/dXFYMNPGsRGRGYO SsQkfYzjy4i/yloyVlGB33e6dqxWdVgCeqYC77TO+1CBq34o6dqM4PACTrhjtS+3 qQvaP/qn6cSoaGIkdD3v43CCiwMpZZ5+Uj7F7Uz8N4twrpykOZFMM5T7f1lrsG2F wJGafmvok9NU2F2wYwaJ8JrzsF6iO6ibFeB8BosRF5Ba4nKqiXVI0xNa0R8PFDm3 tbh/IkkqokemEqnHyWyszhGFsCQupi+QgsjY/LhWUcCaL7HLEgJmkBX0tXNlgMmK TFCq7L8Bigu4nlgZ/iVUB9kh4GTBNVcbdRVN3loJFlczFJlIAa171OVlfRu3lvU= =m29x -----END PGP SIGNATURE----- Merge tag 'v4.3-rc3' into x86/mm, to pick up fixes before applying new changes Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
38a413cbc2
@ -57,6 +57,8 @@ used to route Message Signalled Interrupts (MSI) to the CPUs.
|
|||||||
These nodes must have the following properties:
|
These nodes must have the following properties:
|
||||||
- compatible : Should at least contain "arm,gic-v3-its".
|
- compatible : Should at least contain "arm,gic-v3-its".
|
||||||
- msi-controller : Boolean property. Identifies the node as an MSI controller
|
- msi-controller : Boolean property. Identifies the node as an MSI controller
|
||||||
|
- #msi-cells: Must be <1>. The single msi-cell is the DeviceID of the device
|
||||||
|
which will generate the MSI.
|
||||||
- reg: Specifies the base physical address and size of the ITS
|
- reg: Specifies the base physical address and size of the ITS
|
||||||
registers.
|
registers.
|
||||||
|
|
||||||
@ -83,6 +85,7 @@ Examples:
|
|||||||
gic-its@2c200000 {
|
gic-its@2c200000 {
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c200000 0 0x200000>;
|
reg = <0x0 0x2c200000 0 0x200000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -107,12 +110,14 @@ Examples:
|
|||||||
gic-its@2c200000 {
|
gic-its@2c200000 {
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c200000 0 0x200000>;
|
reg = <0x0 0x2c200000 0 0x200000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gic-its@2c400000 {
|
gic-its@2c400000 {
|
||||||
compatible = "arm,gic-v3-its";
|
compatible = "arm,gic-v3-its";
|
||||||
msi-controller;
|
msi-controller;
|
||||||
|
#msi-cells = <1>;
|
||||||
reg = <0x0 0x2c400000 0 0x200000>;
|
reg = <0x0 0x2c400000 0 0x200000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -497,7 +497,7 @@ cpus {
|
|||||||
};
|
};
|
||||||
|
|
||||||
idle-states {
|
idle-states {
|
||||||
entry-method = "arm,psci";
|
entry-method = "psci";
|
||||||
|
|
||||||
CPU_RETENTION_0_0: cpu-retention-0-0 {
|
CPU_RETENTION_0_0: cpu-retention-0-0 {
|
||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
|
@ -16,7 +16,9 @@ properties, each containing a 'gpio-list':
|
|||||||
GPIO properties should be named "[<name>-]gpios", with <name> being the purpose
|
GPIO properties should be named "[<name>-]gpios", with <name> being the purpose
|
||||||
of this GPIO for the device. While a non-existent <name> is considered valid
|
of this GPIO for the device. While a non-existent <name> is considered valid
|
||||||
for compatibility reasons (resolving to the "gpios" property), it is not allowed
|
for compatibility reasons (resolving to the "gpios" property), it is not allowed
|
||||||
for new bindings.
|
for new bindings. Also, GPIO properties named "[<name>-]gpio" are valid and old
|
||||||
|
bindings use it, but are only supported for compatibility reasons and should not
|
||||||
|
be used for newer bindings since it has been deprecated.
|
||||||
|
|
||||||
GPIO properties can contain one or more GPIO phandles, but only in exceptional
|
GPIO properties can contain one or more GPIO phandles, but only in exceptional
|
||||||
cases should they contain more than one. If your device uses several GPIOs with
|
cases should they contain more than one. If your device uses several GPIOs with
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
* Bosch BMA180 triaxial acceleration sensor
|
* Bosch BMA180 / BMA250 triaxial acceleration sensor
|
||||||
|
|
||||||
http://omapworld.com/BMA180_111_1002839.pdf
|
http://omapworld.com/BMA180_111_1002839.pdf
|
||||||
|
http://ae-bst.resource.bosch.com/media/products/dokumente/bma250/bst-bma250-ds002-05.pdf
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|
||||||
- compatible : should be "bosch,bma180"
|
- compatible : should be "bosch,bma180" or "bosch,bma250"
|
||||||
- reg : the I2C address of the sensor
|
- reg : the I2C address of the sensor
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
@ -13,6 +14,9 @@ Optional properties:
|
|||||||
|
|
||||||
- interrupts : interrupt mapping for GPIO IRQ, it should by configured with
|
- interrupts : interrupt mapping for GPIO IRQ, it should by configured with
|
||||||
flags IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING
|
flags IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING
|
||||||
|
For the bma250 the first interrupt listed must be the one
|
||||||
|
connected to the INT1 pin, the second (optional) interrupt
|
||||||
|
listed must be the one connected to the INT2 pin.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -7,7 +7,8 @@ OHCI and EHCI controllers.
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC;
|
- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC;
|
||||||
"renesas,pci-r8a7791" for the R8A7791 SoC.
|
"renesas,pci-r8a7791" for the R8A7791 SoC;
|
||||||
|
"renesas,pci-r8a7794" for the R8A7794 SoC.
|
||||||
- reg: A list of physical regions to access the device: the first is
|
- reg: A list of physical regions to access the device: the first is
|
||||||
the operational registers for the OHCI/EHCI controllers and the
|
the operational registers for the OHCI/EHCI controllers and the
|
||||||
second is for the bridge configuration and control registers.
|
second is for the bridge configuration and control registers.
|
||||||
|
@ -2,7 +2,12 @@ PBIAS internal regulator for SD card dual voltage i/o pads on OMAP SoCs.
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible:
|
- compatible:
|
||||||
- "ti,pbias-omap" for OMAP2, OMAP3, OMAP4, OMAP5, DRA7.
|
- should be "ti,pbias-dra7" for DRA7
|
||||||
|
- should be "ti,pbias-omap2" for OMAP2
|
||||||
|
- should be "ti,pbias-omap3" for OMAP3
|
||||||
|
- should be "ti,pbias-omap4" for OMAP4
|
||||||
|
- should be "ti,pbias-omap5" for OMAP5
|
||||||
|
- "ti,pbias-omap" is deprecated
|
||||||
- reg: pbias register offset from syscon base and size of pbias register.
|
- reg: pbias register offset from syscon base and size of pbias register.
|
||||||
- syscon : phandle of the system control module
|
- syscon : phandle of the system control module
|
||||||
- regulator-name : should be
|
- regulator-name : should be
|
||||||
|
@ -15,17 +15,18 @@ Required properties:
|
|||||||
- interrupts: Should contain spi interrupt
|
- interrupts: Should contain spi interrupt
|
||||||
|
|
||||||
- clocks: phandles to input clocks.
|
- clocks: phandles to input clocks.
|
||||||
The first should be <&topckgen CLK_TOP_SPI_SEL>.
|
The first should be one of the following. It's PLL.
|
||||||
The second should be one of the following.
|
|
||||||
- <&clk26m>: specify parent clock 26MHZ.
|
- <&clk26m>: specify parent clock 26MHZ.
|
||||||
- <&topckgen CLK_TOP_SYSPLL3_D2>: specify parent clock 109MHZ.
|
- <&topckgen CLK_TOP_SYSPLL3_D2>: specify parent clock 109MHZ.
|
||||||
It's the default one.
|
It's the default one.
|
||||||
- <&topckgen CLK_TOP_SYSPLL4_D2>: specify parent clock 78MHZ.
|
- <&topckgen CLK_TOP_SYSPLL4_D2>: specify parent clock 78MHZ.
|
||||||
- <&topckgen CLK_TOP_UNIVPLL2_D4>: specify parent clock 104MHZ.
|
- <&topckgen CLK_TOP_UNIVPLL2_D4>: specify parent clock 104MHZ.
|
||||||
- <&topckgen CLK_TOP_UNIVPLL1_D8>: specify parent clock 78MHZ.
|
- <&topckgen CLK_TOP_UNIVPLL1_D8>: specify parent clock 78MHZ.
|
||||||
|
The second should be <&topckgen CLK_TOP_SPI_SEL>. It's clock mux.
|
||||||
|
The third is <&pericfg CLK_PERI_SPI0>. It's clock gate.
|
||||||
|
|
||||||
- clock-names: shall be "spi-clk" for the controller clock, and
|
- clock-names: shall be "parent-clk" for the parent clock, "sel-clk" for the
|
||||||
"parent-clk" for the parent clock.
|
muxes clock, and "spi-clk" for the clock gate.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- mediatek,pad-select: specify which pins group(ck/mi/mo/cs) spi
|
- mediatek,pad-select: specify which pins group(ck/mi/mo/cs) spi
|
||||||
@ -44,8 +45,11 @@ spi: spi@1100a000 {
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0 0x1100a000 0 0x1000>;
|
reg = <0 0x1100a000 0 0x1000>;
|
||||||
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_LOW>;
|
||||||
clocks = <&topckgen CLK_TOP_SPI_SEL>, <&topckgen CLK_TOP_SYSPLL3_D2>;
|
clocks = <&topckgen CLK_TOP_SYSPLL3_D2>,
|
||||||
clock-names = "spi-clk", "parent-clk";
|
<&topckgen CLK_TOP_SPI_SEL>,
|
||||||
|
<&pericfg CLK_PERI_SPI0>;
|
||||||
|
clock-names = "parent-clk", "sel-clk", "spi-clk";
|
||||||
|
|
||||||
mediatek,pad-select = <0>;
|
mediatek,pad-select = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -55,19 +55,11 @@ of heat dissipation). For example a fan's cooling states correspond to
|
|||||||
the different fan speeds possible. Cooling states are referred to by
|
the different fan speeds possible. Cooling states are referred to by
|
||||||
single unsigned integers, where larger numbers mean greater heat
|
single unsigned integers, where larger numbers mean greater heat
|
||||||
dissipation. The precise set of cooling states associated with a device
|
dissipation. The precise set of cooling states associated with a device
|
||||||
(as referred to be the cooling-min-state and cooling-max-state
|
(as referred to by the cooling-min-level and cooling-max-level
|
||||||
properties) should be defined in a particular device's binding.
|
properties) should be defined in a particular device's binding.
|
||||||
For more examples of cooling devices, refer to the example sections below.
|
For more examples of cooling devices, refer to the example sections below.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- cooling-min-state: An integer indicating the smallest
|
|
||||||
Type: unsigned cooling state accepted. Typically 0.
|
|
||||||
Size: one cell
|
|
||||||
|
|
||||||
- cooling-max-state: An integer indicating the largest
|
|
||||||
Type: unsigned cooling state accepted.
|
|
||||||
Size: one cell
|
|
||||||
|
|
||||||
- #cooling-cells: Used to provide cooling device specific information
|
- #cooling-cells: Used to provide cooling device specific information
|
||||||
Type: unsigned while referring to it. Must be at least 2, in order
|
Type: unsigned while referring to it. Must be at least 2, in order
|
||||||
Size: one cell to specify minimum and maximum cooling state used
|
Size: one cell to specify minimum and maximum cooling state used
|
||||||
@ -77,6 +69,15 @@ Required properties:
|
|||||||
See Cooling device maps section below for more details
|
See Cooling device maps section below for more details
|
||||||
on how consumers refer to cooling devices.
|
on how consumers refer to cooling devices.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- cooling-min-level: An integer indicating the smallest
|
||||||
|
Type: unsigned cooling state accepted. Typically 0.
|
||||||
|
Size: one cell
|
||||||
|
|
||||||
|
- cooling-max-level: An integer indicating the largest
|
||||||
|
Type: unsigned cooling state accepted.
|
||||||
|
Size: one cell
|
||||||
|
|
||||||
* Trip points
|
* Trip points
|
||||||
|
|
||||||
The trip node is a node to describe a point in the temperature domain
|
The trip node is a node to describe a point in the temperature domain
|
||||||
@ -225,8 +226,8 @@ cpus {
|
|||||||
396000 950000
|
396000 950000
|
||||||
198000 850000
|
198000 850000
|
||||||
>;
|
>;
|
||||||
cooling-min-state = <0>;
|
cooling-min-level = <0>;
|
||||||
cooling-max-state = <3>;
|
cooling-max-level = <3>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
};
|
};
|
||||||
...
|
...
|
||||||
@ -240,8 +241,8 @@ cpus {
|
|||||||
*/
|
*/
|
||||||
fan0: fan@0x48 {
|
fan0: fan@0x48 {
|
||||||
...
|
...
|
||||||
cooling-min-state = <0>;
|
cooling-min-level = <0>;
|
||||||
cooling-max-state = <9>;
|
cooling-max-level = <9>;
|
||||||
#cooling-cells = <2>; /* min followed by max */
|
#cooling-cells = <2>; /* min followed by max */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,7 @@ Required properties:
|
|||||||
"lsi,zevio-usb"
|
"lsi,zevio-usb"
|
||||||
"qcom,ci-hdrc"
|
"qcom,ci-hdrc"
|
||||||
"chipidea,usb2"
|
"chipidea,usb2"
|
||||||
|
"xlnx,zynq-usb-2.20a"
|
||||||
- reg: base address and length of the registers
|
- reg: base address and length of the registers
|
||||||
- interrupts: interrupt for the USB controller
|
- interrupts: interrupt for the USB controller
|
||||||
|
|
||||||
|
@ -203,6 +203,7 @@ sitronix Sitronix Technology Corporation
|
|||||||
skyworks Skyworks Solutions, Inc.
|
skyworks Skyworks Solutions, Inc.
|
||||||
smsc Standard Microsystems Corporation
|
smsc Standard Microsystems Corporation
|
||||||
snps Synopsys, Inc.
|
snps Synopsys, Inc.
|
||||||
|
socionext Socionext Inc.
|
||||||
solidrun SolidRun
|
solidrun SolidRun
|
||||||
solomon Solomon Systech Limited
|
solomon Solomon Systech Limited
|
||||||
sony Sony Corporation
|
sony Sony Corporation
|
||||||
|
96
Documentation/networking/vrf.txt
Normal file
96
Documentation/networking/vrf.txt
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
Virtual Routing and Forwarding (VRF)
|
||||||
|
====================================
|
||||||
|
The VRF device combined with ip rules provides the ability to create virtual
|
||||||
|
routing and forwarding domains (aka VRFs, VRF-lite to be specific) in the
|
||||||
|
Linux network stack. One use case is the multi-tenancy problem where each
|
||||||
|
tenant has their own unique routing tables and in the very least need
|
||||||
|
different default gateways.
|
||||||
|
|
||||||
|
Processes can be "VRF aware" by binding a socket to the VRF device. Packets
|
||||||
|
through the socket then use the routing table associated with the VRF
|
||||||
|
device. An important feature of the VRF device implementation is that it
|
||||||
|
impacts only Layer 3 and above so L2 tools (e.g., LLDP) are not affected
|
||||||
|
(ie., they do not need to be run in each VRF). The design also allows
|
||||||
|
the use of higher priority ip rules (Policy Based Routing, PBR) to take
|
||||||
|
precedence over the VRF device rules directing specific traffic as desired.
|
||||||
|
|
||||||
|
In addition, VRF devices allow VRFs to be nested within namespaces. For
|
||||||
|
example network namespaces provide separation of network interfaces at L1
|
||||||
|
(Layer 1 separation), VLANs on the interfaces within a namespace provide
|
||||||
|
L2 separation and then VRF devices provide L3 separation.
|
||||||
|
|
||||||
|
Design
|
||||||
|
------
|
||||||
|
A VRF device is created with an associated route table. Network interfaces
|
||||||
|
are then enslaved to a VRF device:
|
||||||
|
|
||||||
|
+-----------------------------+
|
||||||
|
| vrf-blue | ===> route table 10
|
||||||
|
+-----------------------------+
|
||||||
|
| | |
|
||||||
|
+------+ +------+ +-------------+
|
||||||
|
| eth1 | | eth2 | ... | bond1 |
|
||||||
|
+------+ +------+ +-------------+
|
||||||
|
| |
|
||||||
|
+------+ +------+
|
||||||
|
| eth8 | | eth9 |
|
||||||
|
+------+ +------+
|
||||||
|
|
||||||
|
Packets received on an enslaved device and are switched to the VRF device
|
||||||
|
using an rx_handler which gives the impression that packets flow through
|
||||||
|
the VRF device. Similarly on egress routing rules are used to send packets
|
||||||
|
to the VRF device driver before getting sent out the actual interface. This
|
||||||
|
allows tcpdump on a VRF device to capture all packets into and out of the
|
||||||
|
VRF as a whole.[1] Similiarly, netfilter [2] and tc rules can be applied
|
||||||
|
using the VRF device to specify rules that apply to the VRF domain as a whole.
|
||||||
|
|
||||||
|
[1] Packets in the forwarded state do not flow through the device, so those
|
||||||
|
packets are not seen by tcpdump. Will revisit this limitation in a
|
||||||
|
future release.
|
||||||
|
|
||||||
|
[2] Iptables on ingress is limited to NF_INET_PRE_ROUTING only with skb->dev
|
||||||
|
set to real ingress device and egress is limited to NF_INET_POST_ROUTING.
|
||||||
|
Will revisit this limitation in a future release.
|
||||||
|
|
||||||
|
|
||||||
|
Setup
|
||||||
|
-----
|
||||||
|
1. VRF device is created with an association to a FIB table.
|
||||||
|
e.g, ip link add vrf-blue type vrf table 10
|
||||||
|
ip link set dev vrf-blue up
|
||||||
|
|
||||||
|
2. Rules are added that send lookups to the associated FIB table when the
|
||||||
|
iif or oif is the VRF device. e.g.,
|
||||||
|
ip ru add oif vrf-blue table 10
|
||||||
|
ip ru add iif vrf-blue table 10
|
||||||
|
|
||||||
|
Set the default route for the table (and hence default route for the VRF).
|
||||||
|
e.g, ip route add table 10 prohibit default
|
||||||
|
|
||||||
|
3. Enslave L3 interfaces to a VRF device.
|
||||||
|
e.g, ip link set dev eth1 master vrf-blue
|
||||||
|
|
||||||
|
Local and connected routes for enslaved devices are automatically moved to
|
||||||
|
the table associated with VRF device. Any additional routes depending on
|
||||||
|
the enslaved device will need to be reinserted following the enslavement.
|
||||||
|
|
||||||
|
4. Additional VRF routes are added to associated table.
|
||||||
|
e.g., ip route add table 10 ...
|
||||||
|
|
||||||
|
|
||||||
|
Applications
|
||||||
|
------------
|
||||||
|
Applications that are to work within a VRF need to bind their socket to the
|
||||||
|
VRF device:
|
||||||
|
|
||||||
|
setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, dev, strlen(dev)+1);
|
||||||
|
|
||||||
|
or to specify the output device using cmsg and IP_PKTINFO.
|
||||||
|
|
||||||
|
|
||||||
|
Limitations
|
||||||
|
-----------
|
||||||
|
VRF device currently only works for IPv4. Support for IPv6 is under development.
|
||||||
|
|
||||||
|
Index of original ingress interface is not available via cmsg. Will address
|
||||||
|
soon.
|
@ -54,13 +54,15 @@ default_qdisc
|
|||||||
--------------
|
--------------
|
||||||
|
|
||||||
The default queuing discipline to use for network devices. This allows
|
The default queuing discipline to use for network devices. This allows
|
||||||
overriding the default queue discipline of pfifo_fast with an
|
overriding the default of pfifo_fast with an alternative. Since the default
|
||||||
alternative. Since the default queuing discipline is created with the
|
queuing discipline is created without additional parameters so is best suited
|
||||||
no additional parameters so is best suited to queuing disciplines that
|
to queuing disciplines that work well without configuration like stochastic
|
||||||
work well without configuration like stochastic fair queue (sfq),
|
fair queue (sfq), CoDel (codel) or fair queue CoDel (fq_codel). Don't use
|
||||||
CoDel (codel) or fair queue CoDel (fq_codel). Don't use queuing disciplines
|
queuing disciplines like Hierarchical Token Bucket or Deficit Round Robin
|
||||||
like Hierarchical Token Bucket or Deficit Round Robin which require setting
|
which require setting up classes and bandwidths. Note that physical multiqueue
|
||||||
up classes and bandwidths.
|
interfaces still use mq as root qdisc, which in turn uses this default for its
|
||||||
|
leaves. Virtual devices (like e.g. lo or veth) ignore this setting and instead
|
||||||
|
default to noqueue.
|
||||||
Default: pfifo_fast
|
Default: pfifo_fast
|
||||||
|
|
||||||
busy_read
|
busy_read
|
||||||
|
@ -4,7 +4,7 @@ Power allocator governor tunables
|
|||||||
Trip points
|
Trip points
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
The governor requires the following two passive trip points:
|
The governor works optimally with the following two passive trip points:
|
||||||
|
|
||||||
1. "switch on" trip point: temperature above which the governor
|
1. "switch on" trip point: temperature above which the governor
|
||||||
control loop starts operating. This is the first passive trip
|
control loop starts operating. This is the first passive trip
|
||||||
|
38
MAINTAINERS
38
MAINTAINERS
@ -615,9 +615,8 @@ F: Documentation/hwmon/fam15h_power
|
|||||||
F: drivers/hwmon/fam15h_power.c
|
F: drivers/hwmon/fam15h_power.c
|
||||||
|
|
||||||
AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
|
AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
|
||||||
M: Thomas Dahlmann <dahlmann.thomas@arcor.de>
|
|
||||||
L: linux-geode@lists.infradead.org (moderated for non-subscribers)
|
L: linux-geode@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Orphan
|
||||||
F: drivers/usb/gadget/udc/amd5536udc.*
|
F: drivers/usb/gadget/udc/amd5536udc.*
|
||||||
|
|
||||||
AMD GEODE PROCESSOR/CHIPSET SUPPORT
|
AMD GEODE PROCESSOR/CHIPSET SUPPORT
|
||||||
@ -808,6 +807,13 @@ S: Maintained
|
|||||||
F: drivers/video/fbdev/arcfb.c
|
F: drivers/video/fbdev/arcfb.c
|
||||||
F: drivers/video/fbdev/core/fb_defio.c
|
F: drivers/video/fbdev/core/fb_defio.c
|
||||||
|
|
||||||
|
ARCNET NETWORK LAYER
|
||||||
|
M: Michael Grzeschik <m.grzeschik@pengutronix.de>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/net/arcnet/
|
||||||
|
F: include/uapi/linux/if_arcnet.h
|
||||||
|
|
||||||
ARM MFM AND FLOPPY DRIVERS
|
ARM MFM AND FLOPPY DRIVERS
|
||||||
M: Ian Molton <spyro@f2s.com>
|
M: Ian Molton <spyro@f2s.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -3394,7 +3400,6 @@ F: drivers/staging/dgnc/
|
|||||||
|
|
||||||
DIGI EPCA PCI PRODUCTS
|
DIGI EPCA PCI PRODUCTS
|
||||||
M: Lidza Louina <lidza.louina@gmail.com>
|
M: Lidza Louina <lidza.louina@gmail.com>
|
||||||
M: Mark Hounschell <markh@compro.net>
|
|
||||||
M: Daeseok Youn <daeseok.youn@gmail.com>
|
M: Daeseok Youn <daeseok.youn@gmail.com>
|
||||||
L: driverdev-devel@linuxdriverproject.org
|
L: driverdev-devel@linuxdriverproject.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -8500,7 +8505,6 @@ F: Documentation/networking/LICENSE.qla3xxx
|
|||||||
F: drivers/net/ethernet/qlogic/qla3xxx.*
|
F: drivers/net/ethernet/qlogic/qla3xxx.*
|
||||||
|
|
||||||
QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
|
QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
|
||||||
M: Shahed Shaikh <shahed.shaikh@qlogic.com>
|
|
||||||
M: Dept-GELinuxNICDev@qlogic.com
|
M: Dept-GELinuxNICDev@qlogic.com
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -9904,8 +9908,8 @@ F: drivers/staging/media/lirc/
|
|||||||
STAGING - LUSTRE PARALLEL FILESYSTEM
|
STAGING - LUSTRE PARALLEL FILESYSTEM
|
||||||
M: Oleg Drokin <oleg.drokin@intel.com>
|
M: Oleg Drokin <oleg.drokin@intel.com>
|
||||||
M: Andreas Dilger <andreas.dilger@intel.com>
|
M: Andreas Dilger <andreas.dilger@intel.com>
|
||||||
L: HPDD-discuss@lists.01.org (moderated for non-subscribers)
|
L: lustre-devel@lists.lustre.org (moderated for non-subscribers)
|
||||||
W: http://lustre.opensfs.org/
|
W: http://wiki.lustre.org/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/staging/lustre
|
F: drivers/staging/lustre
|
||||||
|
|
||||||
@ -10338,6 +10342,16 @@ F: include/uapi/linux/thermal.h
|
|||||||
F: include/linux/cpu_cooling.h
|
F: include/linux/cpu_cooling.h
|
||||||
F: Documentation/devicetree/bindings/thermal/
|
F: Documentation/devicetree/bindings/thermal/
|
||||||
|
|
||||||
|
THERMAL/CPU_COOLING
|
||||||
|
M: Amit Daniel Kachhap <amit.kachhap@gmail.com>
|
||||||
|
M: Viresh Kumar <viresh.kumar@linaro.org>
|
||||||
|
M: Javi Merino <javi.merino@arm.com>
|
||||||
|
L: linux-pm@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: Documentation/thermal/cpu-cooling-api.txt
|
||||||
|
F: drivers/thermal/cpu_cooling.c
|
||||||
|
F: include/linux/cpu_cooling.h
|
||||||
|
|
||||||
THINGM BLINK(1) USB RGB LED DRIVER
|
THINGM BLINK(1) USB RGB LED DRIVER
|
||||||
M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -11187,7 +11201,7 @@ F: drivers/vlynq/vlynq.c
|
|||||||
F: include/linux/vlynq.h
|
F: include/linux/vlynq.h
|
||||||
|
|
||||||
VME SUBSYSTEM
|
VME SUBSYSTEM
|
||||||
M: Martyn Welch <martyn.welch@ge.com>
|
M: Martyn Welch <martyn@welchs.me.uk>
|
||||||
M: Manohar Vanga <manohar.vanga@gmail.com>
|
M: Manohar Vanga <manohar.vanga@gmail.com>
|
||||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
L: devel@driverdev.osuosl.org
|
L: devel@driverdev.osuosl.org
|
||||||
@ -11239,7 +11253,6 @@ VOLTAGE AND CURRENT REGULATOR FRAMEWORK
|
|||||||
M: Liam Girdwood <lgirdwood@gmail.com>
|
M: Liam Girdwood <lgirdwood@gmail.com>
|
||||||
M: Mark Brown <broonie@kernel.org>
|
M: Mark Brown <broonie@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
W: http://opensource.wolfsonmicro.com/node/15
|
|
||||||
W: http://www.slimlogic.co.uk/?p=48
|
W: http://www.slimlogic.co.uk/?p=48
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -11253,6 +11266,7 @@ L: netdev@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/vrf.c
|
F: drivers/net/vrf.c
|
||||||
F: include/net/vrf.h
|
F: include/net/vrf.h
|
||||||
|
F: Documentation/networking/vrf.txt
|
||||||
|
|
||||||
VT1211 HARDWARE MONITOR DRIVER
|
VT1211 HARDWARE MONITOR DRIVER
|
||||||
M: Juerg Haefliger <juergh@gmail.com>
|
M: Juerg Haefliger <juergh@gmail.com>
|
||||||
@ -11368,17 +11382,15 @@ WM97XX TOUCHSCREEN DRIVERS
|
|||||||
M: Mark Brown <broonie@kernel.org>
|
M: Mark Brown <broonie@kernel.org>
|
||||||
M: Liam Girdwood <lrg@slimlogic.co.uk>
|
M: Liam Girdwood <lrg@slimlogic.co.uk>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-touch
|
W: https://github.com/CirrusLogic/linux-drivers/wiki
|
||||||
W: http://opensource.wolfsonmicro.com/node/7
|
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/input/touchscreen/*wm97*
|
F: drivers/input/touchscreen/*wm97*
|
||||||
F: include/linux/wm97xx.h
|
F: include/linux/wm97xx.h
|
||||||
|
|
||||||
WOLFSON MICROELECTRONICS DRIVERS
|
WOLFSON MICROELECTRONICS DRIVERS
|
||||||
L: patches@opensource.wolfsonmicro.com
|
L: patches@opensource.wolfsonmicro.com
|
||||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-asoc
|
T: git https://github.com/CirrusLogic/linux-drivers.git
|
||||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
|
W: https://github.com/CirrusLogic/linux-drivers/wiki
|
||||||
W: http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices
|
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/hwmon/wm83??
|
F: Documentation/hwmon/wm83??
|
||||||
F: arch/arm/mach-s3c64xx/mach-crag6410*
|
F: arch/arm/mach-s3c64xx/mach-crag6410*
|
||||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 3
|
PATCHLEVEL = 3
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc3
|
||||||
NAME = Hurr durr I'ma sheep
|
NAME = Hurr durr I'ma sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -242,7 +242,12 @@ pci_restore_srm_config(void)
|
|||||||
|
|
||||||
void pcibios_fixup_bus(struct pci_bus *bus)
|
void pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev = bus->self;
|
||||||
|
|
||||||
|
if (pci_has_flag(PCI_PROBE_ONLY) && dev &&
|
||||||
|
(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
}
|
||||||
|
|
||||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||||
pdev_save_srm_config(dev);
|
pdev_save_srm_config(dev);
|
||||||
|
@ -252,10 +252,10 @@ vio_reg: regulator@1 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
vdd1_reg: regulator@2 {
|
vdd1_reg: regulator@2 {
|
||||||
/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
|
/* VDD_MPU voltage limits 0.95V - 1.325V with +/-4% tolerance */
|
||||||
regulator-name = "vdd_mpu";
|
regulator-name = "vdd_mpu";
|
||||||
regulator-min-microvolt = <912500>;
|
regulator-min-microvolt = <912500>;
|
||||||
regulator-max-microvolt = <1312500>;
|
regulator-max-microvolt = <1378000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
@ -98,13 +98,6 @@ extcon_usb1: extcon_usb1 {
|
|||||||
pinctrl-0 = <&extcon_usb1_pins>;
|
pinctrl-0 = <&extcon_usb1_pins>;
|
||||||
};
|
};
|
||||||
|
|
||||||
extcon_usb2: extcon_usb2 {
|
|
||||||
compatible = "linux,extcon-usb-gpio";
|
|
||||||
id-gpio = <&gpio7 24 GPIO_ACTIVE_HIGH>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&extcon_usb2_pins>;
|
|
||||||
};
|
|
||||||
|
|
||||||
hdmi0: connector {
|
hdmi0: connector {
|
||||||
compatible = "hdmi-connector";
|
compatible = "hdmi-connector";
|
||||||
label = "hdmi";
|
label = "hdmi";
|
||||||
@ -326,12 +319,6 @@ extcon_usb1_pins: extcon_usb1_pins {
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
extcon_usb2_pins: extcon_usb2_pins {
|
|
||||||
pinctrl-single,pins = <
|
|
||||||
0x3e8 (PIN_INPUT_PULLUP | MUX_MODE14) /* uart1_ctsn.gpio7_24 */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
tpd12s015_pins: pinmux_tpd12s015_pins {
|
tpd12s015_pins: pinmux_tpd12s015_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x3b0 (PIN_OUTPUT | MUX_MODE14) /* gpio7_10 CT_CP_HPD */
|
0x3b0 (PIN_OUTPUT | MUX_MODE14) /* gpio7_10 CT_CP_HPD */
|
||||||
@ -432,7 +419,7 @@ ldo2_reg: ldo2 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ldo3_reg: ldo3 {
|
ldo3_reg: ldo3 {
|
||||||
/* VDDA_1V8_PHY */
|
/* VDDA_1V8_PHYA */
|
||||||
regulator-name = "ldo3";
|
regulator-name = "ldo3";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
@ -440,6 +427,15 @@ ldo3_reg: ldo3 {
|
|||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ldo4_reg: ldo4 {
|
||||||
|
/* VDDA_1V8_PHYB */
|
||||||
|
regulator-name = "ldo4";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
ldo9_reg: ldo9 {
|
ldo9_reg: ldo9 {
|
||||||
/* VDD_RTC */
|
/* VDD_RTC */
|
||||||
regulator-name = "ldo9";
|
regulator-name = "ldo9";
|
||||||
@ -495,6 +491,14 @@ tps659038_gpio: tps659038_gpio {
|
|||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extcon_usb2: tps659038_usb {
|
||||||
|
compatible = "ti,palmas-usb-vid";
|
||||||
|
ti,enable-vbus-detection;
|
||||||
|
ti,enable-id-detection;
|
||||||
|
id-gpios = <&gpio7 24 GPIO_ACTIVE_HIGH>;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
tmp102: tmp102@48 {
|
tmp102: tmp102@48 {
|
||||||
@ -517,7 +521,8 @@ &i2c3 {
|
|||||||
mcp_rtc: rtc@6f {
|
mcp_rtc: rtc@6f {
|
||||||
compatible = "microchip,mcp7941x";
|
compatible = "microchip,mcp7941x";
|
||||||
reg = <0x6f>;
|
reg = <0x6f>;
|
||||||
interrupts = <GIC_SPI 2 IRQ_TYPE_EDGE_RISING>; /* IRQ_SYS_1N */
|
interrupts-extended = <&crossbar_mpu GIC_SPI 2 IRQ_TYPE_EDGE_RISING>,
|
||||||
|
<&dra7_pmx_core 0x424>;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mcp79410_pins_default>;
|
pinctrl-0 = <&mcp79410_pins_default>;
|
||||||
@ -579,7 +584,6 @@ &mmc1 {
|
|||||||
pinctrl-0 = <&mmc1_pins_default>;
|
pinctrl-0 = <&mmc1_pins_default>;
|
||||||
|
|
||||||
vmmc-supply = <&ldo1_reg>;
|
vmmc-supply = <&ldo1_reg>;
|
||||||
vmmc_aux-supply = <&vdd_3v3>;
|
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cd-gpios = <&gpio6 27 0>; /* gpio 219 */
|
cd-gpios = <&gpio6 27 0>; /* gpio 219 */
|
||||||
};
|
};
|
||||||
@ -623,6 +627,14 @@ &omap_dwc3_2 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&usb2 {
|
&usb2 {
|
||||||
|
/*
|
||||||
|
* Stand alone usage is peripheral only.
|
||||||
|
* However, with some resistor modifications
|
||||||
|
* this port can be used via expansion connectors
|
||||||
|
* as "host" or "dual-role". If so, provide
|
||||||
|
* the necessary dr_mode override in the expansion
|
||||||
|
* board's DT.
|
||||||
|
*/
|
||||||
dr_mode = "peripheral";
|
dr_mode = "peripheral";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -681,7 +693,7 @@ &dss {
|
|||||||
|
|
||||||
&hdmi {
|
&hdmi {
|
||||||
status = "ok";
|
status = "ok";
|
||||||
vdda-supply = <&ldo3_reg>;
|
vdda-supply = <&ldo4_reg>;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&hdmi_pins>;
|
pinctrl-0 = <&hdmi_pins>;
|
||||||
|
@ -19,10 +19,10 @@ memory {
|
|||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy_id = <&davinci_mdio>, <0>;
|
phy_id = <&davinci_mdio>, <0>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
&cpsw_emac1 {
|
||||||
phy_id = <&davinci_mdio>, <1>;
|
phy_id = <&davinci_mdio>, <1>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include "dm814x.dtsi"
|
#include "dm814x.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "DM8148 EVM";
|
model = "HP t410 Smart Zero Client";
|
||||||
compatible = "hp,t410", "ti,dm8148";
|
compatible = "hp,t410", "ti,dm8148";
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
@ -19,10 +19,10 @@ memory {
|
|||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy_id = <&davinci_mdio>, <0>;
|
phy_id = <&davinci_mdio>, <0>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
&cpsw_emac1 {
|
||||||
phy_id = <&davinci_mdio>, <1>;
|
phy_id = <&davinci_mdio>, <1>;
|
||||||
phy-mode = "mii";
|
phy-mode = "rgmii";
|
||||||
};
|
};
|
||||||
|
@ -181,9 +181,9 @@ timer3: timer@42000 {
|
|||||||
ti,hwmods = "timer3";
|
ti,hwmods = "timer3";
|
||||||
};
|
};
|
||||||
|
|
||||||
control: control@160000 {
|
control: control@140000 {
|
||||||
compatible = "ti,dm814-scm", "simple-bus";
|
compatible = "ti,dm814-scm", "simple-bus";
|
||||||
reg = <0x160000 0x16d000>;
|
reg = <0x140000 0x16d000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges = <0 0x160000 0x16d000>;
|
ranges = <0 0x160000 0x16d000>;
|
||||||
@ -321,9 +321,9 @@ cpsw_emac1: slave@4a100300 {
|
|||||||
mac-address = [ 00 00 00 00 00 00 ];
|
mac-address = [ 00 00 00 00 00 00 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
phy_sel: cpsw-phy-sel@0x48160650 {
|
phy_sel: cpsw-phy-sel@48140650 {
|
||||||
compatible = "ti,am3352-cpsw-phy-sel";
|
compatible = "ti,am3352-cpsw-phy-sel";
|
||||||
reg= <0x48160650 0x4>;
|
reg= <0x48140650 0x4>;
|
||||||
reg-names = "gmii-sel";
|
reg-names = "gmii-sel";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -120,9 +120,10 @@ scm_conf: scm_conf@0 {
|
|||||||
reg = <0x0 0x1400>;
|
reg = <0x0 0x1400>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x0 0x1400>;
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-dra7", "ti,pbias-omap";
|
||||||
reg = <0xe00 0x4>;
|
reg = <0xe00 0x4>;
|
||||||
syscon = <&scm_conf>;
|
syscon = <&scm_conf>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap5 {
|
pbias_mmc_reg: pbias_mmc_omap5 {
|
||||||
@ -1417,7 +1418,7 @@ crossbar_mpu: crossbar@4a002a48 {
|
|||||||
ti,irqs-safe-map = <0>;
|
ti,irqs-safe-map = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mac: ethernet@4a100000 {
|
mac: ethernet@48484000 {
|
||||||
compatible = "ti,dra7-cpsw","ti,cpsw";
|
compatible = "ti,dra7-cpsw","ti,cpsw";
|
||||||
ti,hwmods = "gmac";
|
ti,hwmods = "gmac";
|
||||||
clocks = <&dpll_gmac_ck>, <&gmac_gmii_ref_clk_div>;
|
clocks = <&dpll_gmac_ck>, <&gmac_gmii_ref_clk_div>;
|
||||||
|
@ -56,6 +56,7 @@ scm_conf: scm_conf@270 {
|
|||||||
reg = <0x270 0x240>;
|
reg = <0x270 0x240>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x270 0x240>;
|
||||||
|
|
||||||
scm_clocks: clocks {
|
scm_clocks: clocks {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@ -63,7 +64,7 @@ scm_clocks: clocks {
|
|||||||
};
|
};
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-omap2", "ti,pbias-omap";
|
||||||
reg = <0x230 0x4>;
|
reg = <0x230 0x4>;
|
||||||
syscon = <&scm_conf>;
|
syscon = <&scm_conf>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap2430 {
|
pbias_mmc_reg: pbias_mmc_omap2430 {
|
||||||
|
@ -202,7 +202,7 @@ uart3_pins: pinmux_uart3_pins {
|
|||||||
|
|
||||||
tfp410_pins: pinmux_tfp410_pins {
|
tfp410_pins: pinmux_tfp410_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x194 (PIN_OUTPUT | MUX_MODE4) /* hdq_sio.gpio_170 */
|
0x196 (PIN_OUTPUT | MUX_MODE4) /* hdq_sio.gpio_170 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -78,12 +78,6 @@ mmc2_pins: pinmux_mmc2_pins {
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
smsc9221_pins: pinmux_smsc9221_pins {
|
|
||||||
pinctrl-single,pins = <
|
|
||||||
0x1a2 (PIN_INPUT | MUX_MODE4) /* mcspi1_cs2.gpio_176 */
|
|
||||||
>;
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c1_pins: pinmux_i2c1_pins {
|
i2c1_pins: pinmux_i2c1_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x18a (PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
|
0x18a (PIN_INPUT | MUX_MODE0) /* i2c1_scl.i2c1_scl */
|
||||||
|
@ -156,6 +156,12 @@ OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE0) /* uart2_tx.uart2_tx */
|
|||||||
OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */
|
OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
smsc9221_pins: pinmux_smsc9221_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT | MUX_MODE4) /* mcspi1_cs2.gpio_176 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&omap3_pmx_core2 {
|
&omap3_pmx_core2 {
|
||||||
|
@ -113,10 +113,22 @@ omap3_pmx_core: pinmux@30 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
scm_conf: scm_conf@270 {
|
scm_conf: scm_conf@270 {
|
||||||
compatible = "syscon";
|
compatible = "syscon", "simple-bus";
|
||||||
reg = <0x270 0x330>;
|
reg = <0x270 0x330>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x270 0x330>;
|
||||||
|
|
||||||
|
pbias_regulator: pbias_regulator {
|
||||||
|
compatible = "ti,pbias-omap3", "ti,pbias-omap";
|
||||||
|
reg = <0x2b0 0x4>;
|
||||||
|
syscon = <&scm_conf>;
|
||||||
|
pbias_mmc_reg: pbias_mmc_omap2430 {
|
||||||
|
regulator-name = "pbias_mmc_omap2430";
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <3000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
scm_clocks: clocks {
|
scm_clocks: clocks {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@ -202,17 +214,6 @@ sdma: dma-controller@48056000 {
|
|||||||
dma-requests = <96>;
|
dma-requests = <96>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
|
||||||
compatible = "ti,pbias-omap";
|
|
||||||
reg = <0x2b0 0x4>;
|
|
||||||
syscon = <&scm_conf>;
|
|
||||||
pbias_mmc_reg: pbias_mmc_omap2430 {
|
|
||||||
regulator-name = "pbias_mmc_omap2430";
|
|
||||||
regulator-min-microvolt = <1800000>;
|
|
||||||
regulator-max-microvolt = <3000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio1: gpio@48310000 {
|
gpio1: gpio@48310000 {
|
||||||
compatible = "ti,omap3-gpio";
|
compatible = "ti,omap3-gpio";
|
||||||
reg = <0x48310000 0x200>;
|
reg = <0x48310000 0x200>;
|
||||||
|
@ -196,9 +196,10 @@ omap4_padconf_global: omap4_padconf_global@5a0 {
|
|||||||
reg = <0x5a0 0x170>;
|
reg = <0x5a0 0x170>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x5a0 0x170>;
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-omap4", "ti,pbias-omap";
|
||||||
reg = <0x60 0x4>;
|
reg = <0x60 0x4>;
|
||||||
syscon = <&omap4_padconf_global>;
|
syscon = <&omap4_padconf_global>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap4 {
|
pbias_mmc_reg: pbias_mmc_omap4 {
|
||||||
|
@ -174,8 +174,8 @@ i2c1_pins: pinmux_i2c1_pins {
|
|||||||
|
|
||||||
i2c5_pins: pinmux_i2c5_pins {
|
i2c5_pins: pinmux_i2c5_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x184 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */
|
0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */
|
||||||
0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */
|
0x188 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -185,9 +185,10 @@ omap5_padconf_global: omap5_padconf_global@5a0 {
|
|||||||
reg = <0x5a0 0xec>;
|
reg = <0x5a0 0xec>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0x5a0 0xec>;
|
||||||
|
|
||||||
pbias_regulator: pbias_regulator {
|
pbias_regulator: pbias_regulator {
|
||||||
compatible = "ti,pbias-omap";
|
compatible = "ti,pbias-omap5", "ti,pbias-omap";
|
||||||
reg = <0x60 0x4>;
|
reg = <0x60 0x4>;
|
||||||
syscon = <&omap5_padconf_global>;
|
syscon = <&omap5_padconf_global>;
|
||||||
pbias_mmc_reg: pbias_mmc_omap5 {
|
pbias_mmc_reg: pbias_mmc_omap5 {
|
||||||
|
@ -158,6 +158,7 @@ &emmc {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&hdmi {
|
&hdmi {
|
||||||
|
ddc-i2c-bus = <&i2c5>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -103,48 +103,46 @@ sti-tvout@8d08000 {
|
|||||||
<&clk_s_d0_quadfs 0>,
|
<&clk_s_d0_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>;
|
<&clk_s_d2_quadfs 0>;
|
||||||
ranges;
|
};
|
||||||
|
|
||||||
sti-hdmi@8d04000 {
|
sti-hdmi@8d04000 {
|
||||||
compatible = "st,stih407-hdmi";
|
compatible = "st,stih407-hdmi";
|
||||||
reg = <0x8d04000 0x1000>;
|
reg = <0x8d04000 0x1000>;
|
||||||
reg-names = "hdmi-reg";
|
reg-names = "hdmi-reg";
|
||||||
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
||||||
interrupt-names = "irq";
|
interrupt-names = "irq";
|
||||||
clock-names = "pix",
|
clock-names = "pix",
|
||||||
"tmds",
|
"tmds",
|
||||||
"phy",
|
"phy",
|
||||||
"audio",
|
"audio",
|
||||||
"main_parent",
|
"main_parent",
|
||||||
"aux_parent";
|
"aux_parent";
|
||||||
|
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
||||||
<&clk_s_d0_flexgen CLK_PCM_0>,
|
<&clk_s_d0_flexgen CLK_PCM_0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 1>;
|
<&clk_s_d2_quadfs 1>;
|
||||||
|
|
||||||
hdmi,hpd-gpio = <&pio5 3>;
|
hdmi,hpd-gpio = <&pio5 3>;
|
||||||
reset-names = "hdmi";
|
reset-names = "hdmi";
|
||||||
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
||||||
ddc = <&hdmiddc>;
|
ddc = <&hdmiddc>;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
sti-hda@8d02000 {
|
||||||
|
compatible = "st,stih407-hda";
|
||||||
sti-hda@8d02000 {
|
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
||||||
compatible = "st,stih407-hda";
|
reg-names = "hda-reg", "video-dacs-ctrl";
|
||||||
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
clock-names = "pix",
|
||||||
reg-names = "hda-reg", "video-dacs-ctrl";
|
"hddac",
|
||||||
clock-names = "pix",
|
"main_parent",
|
||||||
"hddac",
|
"aux_parent";
|
||||||
"main_parent",
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
||||||
"aux_parent";
|
<&clk_s_d2_flexgen CLK_HDDAC>,
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_flexgen CLK_HDDAC>,
|
<&clk_s_d2_quadfs 1>;
|
||||||
<&clk_s_d2_quadfs 0>,
|
|
||||||
<&clk_s_d2_quadfs 1>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -178,48 +178,46 @@ sti-tvout@8d08000 {
|
|||||||
<&clk_s_d0_quadfs 0>,
|
<&clk_s_d0_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 0>;
|
<&clk_s_d2_quadfs 0>;
|
||||||
ranges;
|
};
|
||||||
|
|
||||||
sti-hdmi@8d04000 {
|
sti-hdmi@8d04000 {
|
||||||
compatible = "st,stih407-hdmi";
|
compatible = "st,stih407-hdmi";
|
||||||
reg = <0x8d04000 0x1000>;
|
reg = <0x8d04000 0x1000>;
|
||||||
reg-names = "hdmi-reg";
|
reg-names = "hdmi-reg";
|
||||||
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 106 IRQ_TYPE_NONE>;
|
||||||
interrupt-names = "irq";
|
interrupt-names = "irq";
|
||||||
clock-names = "pix",
|
clock-names = "pix",
|
||||||
"tmds",
|
"tmds",
|
||||||
"phy",
|
"phy",
|
||||||
"audio",
|
"audio",
|
||||||
"main_parent",
|
"main_parent",
|
||||||
"aux_parent";
|
"aux_parent";
|
||||||
|
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
<&clk_s_d2_flexgen CLK_TMDS_HDMI>,
|
||||||
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
<&clk_s_d2_flexgen CLK_REF_HDMIPHY>,
|
||||||
<&clk_s_d0_flexgen CLK_PCM_0>,
|
<&clk_s_d0_flexgen CLK_PCM_0>,
|
||||||
<&clk_s_d2_quadfs 0>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_quadfs 1>;
|
<&clk_s_d2_quadfs 1>;
|
||||||
|
|
||||||
hdmi,hpd-gpio = <&pio5 3>;
|
hdmi,hpd-gpio = <&pio5 3>;
|
||||||
reset-names = "hdmi";
|
reset-names = "hdmi";
|
||||||
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
resets = <&softreset STIH407_HDMI_TX_PHY_SOFTRESET>;
|
||||||
ddc = <&hdmiddc>;
|
ddc = <&hdmiddc>;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
sti-hda@8d02000 {
|
||||||
|
compatible = "st,stih407-hda";
|
||||||
sti-hda@8d02000 {
|
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
||||||
compatible = "st,stih407-hda";
|
reg-names = "hda-reg", "video-dacs-ctrl";
|
||||||
reg = <0x8d02000 0x400>, <0x92b0120 0x4>;
|
clock-names = "pix",
|
||||||
reg-names = "hda-reg", "video-dacs-ctrl";
|
"hddac",
|
||||||
clock-names = "pix",
|
"main_parent",
|
||||||
"hddac",
|
"aux_parent";
|
||||||
"main_parent",
|
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
||||||
"aux_parent";
|
<&clk_s_d2_flexgen CLK_HDDAC>,
|
||||||
clocks = <&clk_s_d2_flexgen CLK_PIX_HDDAC>,
|
<&clk_s_d2_quadfs 0>,
|
||||||
<&clk_s_d2_flexgen CLK_HDDAC>,
|
<&clk_s_d2_quadfs 1>;
|
||||||
<&clk_s_d2_quadfs 0>,
|
|
||||||
<&clk_s_d2_quadfs 1>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -240,7 +240,8 @@ CONFIG_SSI_PROTOCOL=m
|
|||||||
CONFIG_PINCTRL_SINGLE=y
|
CONFIG_PINCTRL_SINGLE=y
|
||||||
CONFIG_DEBUG_GPIO=y
|
CONFIG_DEBUG_GPIO=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
CONFIG_GPIO_PCF857X=m
|
CONFIG_GPIO_PCA953X=m
|
||||||
|
CONFIG_GPIO_PCF857X=y
|
||||||
CONFIG_GPIO_TWL4030=y
|
CONFIG_GPIO_TWL4030=y
|
||||||
CONFIG_GPIO_PALMAS=y
|
CONFIG_GPIO_PALMAS=y
|
||||||
CONFIG_W1=m
|
CONFIG_W1=m
|
||||||
@ -350,6 +351,8 @@ CONFIG_USB_MUSB_HDRC=m
|
|||||||
CONFIG_USB_MUSB_OMAP2PLUS=m
|
CONFIG_USB_MUSB_OMAP2PLUS=m
|
||||||
CONFIG_USB_MUSB_AM35X=m
|
CONFIG_USB_MUSB_AM35X=m
|
||||||
CONFIG_USB_MUSB_DSPS=m
|
CONFIG_USB_MUSB_DSPS=m
|
||||||
|
CONFIG_USB_INVENTRA_DMA=y
|
||||||
|
CONFIG_USB_TI_CPPI41_DMA=y
|
||||||
CONFIG_USB_DWC3=m
|
CONFIG_USB_DWC3=m
|
||||||
CONFIG_USB_TEST=m
|
CONFIG_USB_TEST=m
|
||||||
CONFIG_AM335X_PHY_USB=y
|
CONFIG_AM335X_PHY_USB=y
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#define KVM_PRIVATE_MEM_SLOTS 4
|
#define KVM_PRIVATE_MEM_SLOTS 4
|
||||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||||
#define KVM_HAVE_ONE_REG
|
#define KVM_HAVE_ONE_REG
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 500000
|
||||||
|
|
||||||
#define KVM_VCPU_MAX_FEATURES 2
|
#define KVM_VCPU_MAX_FEATURES 2
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
* This may need to be greater than __NR_last_syscall+1 in order to
|
* This may need to be greater than __NR_last_syscall+1 in order to
|
||||||
* account for the padding in the syscall table
|
* account for the padding in the syscall table
|
||||||
*/
|
*/
|
||||||
#define __NR_syscalls (388)
|
#define __NR_syscalls (392)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* *NOTE*: This is a ghost syscall private to the kernel. Only the
|
* *NOTE*: This is a ghost syscall private to the kernel. Only the
|
||||||
|
@ -414,6 +414,8 @@
|
|||||||
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
|
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
|
||||||
#define __NR_bpf (__NR_SYSCALL_BASE+386)
|
#define __NR_bpf (__NR_SYSCALL_BASE+386)
|
||||||
#define __NR_execveat (__NR_SYSCALL_BASE+387)
|
#define __NR_execveat (__NR_SYSCALL_BASE+387)
|
||||||
|
#define __NR_userfaultfd (__NR_SYSCALL_BASE+388)
|
||||||
|
#define __NR_membarrier (__NR_SYSCALL_BASE+389)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following SWIs are ARM private.
|
* The following SWIs are ARM private.
|
||||||
|
@ -397,6 +397,8 @@
|
|||||||
/* 385 */ CALL(sys_memfd_create)
|
/* 385 */ CALL(sys_memfd_create)
|
||||||
CALL(sys_bpf)
|
CALL(sys_bpf)
|
||||||
CALL(sys_execveat)
|
CALL(sys_execveat)
|
||||||
|
CALL(sys_userfaultfd)
|
||||||
|
CALL(sys_membarrier)
|
||||||
#ifndef syscalls_counted
|
#ifndef syscalls_counted
|
||||||
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
||||||
#define syscalls_counted
|
#define syscalls_counted
|
||||||
|
@ -44,10 +44,11 @@ config SOC_OMAP5
|
|||||||
select ARM_CPU_SUSPEND if PM
|
select ARM_CPU_SUSPEND if PM
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
select HAVE_ARM_SCU if SMP
|
select HAVE_ARM_SCU if SMP
|
||||||
select HAVE_ARM_TWD if SMP
|
|
||||||
select HAVE_ARM_ARCH_TIMER
|
select HAVE_ARM_ARCH_TIMER
|
||||||
select ARM_ERRATA_798181 if SMP
|
select ARM_ERRATA_798181 if SMP
|
||||||
|
select OMAP_INTERCONNECT
|
||||||
select OMAP_INTERCONNECT_BARRIER
|
select OMAP_INTERCONNECT_BARRIER
|
||||||
|
select PM_OPP if PM
|
||||||
|
|
||||||
config SOC_AM33XX
|
config SOC_AM33XX
|
||||||
bool "TI AM33XX"
|
bool "TI AM33XX"
|
||||||
@ -70,10 +71,13 @@ config SOC_DRA7XX
|
|||||||
select ARCH_OMAP2PLUS
|
select ARCH_OMAP2PLUS
|
||||||
select ARM_CPU_SUSPEND if PM
|
select ARM_CPU_SUSPEND if PM
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
|
select HAVE_ARM_SCU if SMP
|
||||||
select HAVE_ARM_ARCH_TIMER
|
select HAVE_ARM_ARCH_TIMER
|
||||||
select IRQ_CROSSBAR
|
select IRQ_CROSSBAR
|
||||||
select ARM_ERRATA_798181 if SMP
|
select ARM_ERRATA_798181 if SMP
|
||||||
|
select OMAP_INTERCONNECT
|
||||||
select OMAP_INTERCONNECT_BARRIER
|
select OMAP_INTERCONNECT_BARRIER
|
||||||
|
select PM_OPP if PM
|
||||||
|
|
||||||
config ARCH_OMAP2PLUS
|
config ARCH_OMAP2PLUS
|
||||||
bool
|
bool
|
||||||
|
@ -20,13 +20,6 @@
|
|||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
|
|
||||||
#define intc_of_init NULL
|
|
||||||
#endif
|
|
||||||
#ifndef CONFIG_ARCH_OMAP4
|
|
||||||
#define gic_of_init NULL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const struct of_device_id omap_dt_match_table[] __initconst = {
|
static const struct of_device_id omap_dt_match_table[] __initconst = {
|
||||||
{ .compatible = "simple-bus", },
|
{ .compatible = "simple-bus", },
|
||||||
{ .compatible = "ti,omap-infra", },
|
{ .compatible = "ti,omap-infra", },
|
||||||
|
@ -653,8 +653,12 @@ void __init dra7xxx_check_revision(void)
|
|||||||
omap_revision = DRA752_REV_ES1_0;
|
omap_revision = DRA752_REV_ES1_0;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
default:
|
|
||||||
omap_revision = DRA752_REV_ES1_1;
|
omap_revision = DRA752_REV_ES1_1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
default:
|
||||||
|
omap_revision = DRA752_REV_ES2_0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -674,7 +678,7 @@ void __init dra7xxx_check_revision(void)
|
|||||||
/* Unknown default to latest silicon rev as default*/
|
/* Unknown default to latest silicon rev as default*/
|
||||||
pr_warn("%s: unknown idcode=0x%08x (hawkeye=0x%08x,rev=0x%x)\n",
|
pr_warn("%s: unknown idcode=0x%08x (hawkeye=0x%08x,rev=0x%x)\n",
|
||||||
__func__, idcode, hawkeye, rev);
|
__func__, idcode, hawkeye, rev);
|
||||||
omap_revision = DRA752_REV_ES1_1;
|
omap_revision = DRA752_REV_ES2_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(soc_name, "DRA%03x", omap_rev() >> 16);
|
sprintf(soc_name, "DRA%03x", omap_rev() >> 16);
|
||||||
|
@ -676,6 +676,7 @@ void __init am43xx_init_early(void)
|
|||||||
void __init am43xx_init_late(void)
|
void __init am43xx_init_late(void)
|
||||||
{
|
{
|
||||||
omap_common_late_init();
|
omap_common_late_init();
|
||||||
|
omap2_clk_enable_autoidle_all();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -901,7 +901,8 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
|
|||||||
if (od->hwmods[i]->flags & HWMOD_INIT_NO_IDLE)
|
if (od->hwmods[i]->flags & HWMOD_INIT_NO_IDLE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) {
|
if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER &&
|
||||||
|
od->_driver_status != BUS_NOTIFY_BIND_DRIVER) {
|
||||||
if (od->_state == OMAP_DEVICE_STATE_ENABLED) {
|
if (od->_state == OMAP_DEVICE_STATE_ENABLED) {
|
||||||
dev_warn(dev, "%s: enabled but no driver. Idling\n",
|
dev_warn(dev, "%s: enabled but no driver. Idling\n",
|
||||||
__func__);
|
__func__);
|
||||||
|
@ -103,7 +103,8 @@ static inline void enable_omap3630_toggle_l2_on_restore(void) { }
|
|||||||
#define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0)
|
#define PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD (1 << 0)
|
||||||
#define PM_OMAP4_CPU_OSWR_DISABLE (1 << 1)
|
#define PM_OMAP4_CPU_OSWR_DISABLE (1 << 1)
|
||||||
|
|
||||||
#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP4)
|
#if defined(CONFIG_PM) && (defined(CONFIG_ARCH_OMAP4) ||\
|
||||||
|
defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX))
|
||||||
extern u16 pm44xx_errata;
|
extern u16 pm44xx_errata;
|
||||||
#define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id))
|
#define IS_PM44XX_ERRATUM(id) (pm44xx_errata & (id))
|
||||||
#else
|
#else
|
||||||
|
@ -469,6 +469,8 @@ IS_OMAP_TYPE(3430, 0x3430)
|
|||||||
#define DRA7XX_CLASS 0x07000000
|
#define DRA7XX_CLASS 0x07000000
|
||||||
#define DRA752_REV_ES1_0 (DRA7XX_CLASS | (0x52 << 16) | (0x10 << 8))
|
#define DRA752_REV_ES1_0 (DRA7XX_CLASS | (0x52 << 16) | (0x10 << 8))
|
||||||
#define DRA752_REV_ES1_1 (DRA7XX_CLASS | (0x52 << 16) | (0x11 << 8))
|
#define DRA752_REV_ES1_1 (DRA7XX_CLASS | (0x52 << 16) | (0x11 << 8))
|
||||||
|
#define DRA752_REV_ES2_0 (DRA7XX_CLASS | (0x52 << 16) | (0x20 << 8))
|
||||||
|
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
||||||
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
||||||
|
|
||||||
void omap2xxx_check_revision(void);
|
void omap2xxx_check_revision(void);
|
||||||
|
@ -297,12 +297,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
|
|||||||
if (IS_ERR(src))
|
if (IS_ERR(src))
|
||||||
return PTR_ERR(src);
|
return PTR_ERR(src);
|
||||||
|
|
||||||
r = clk_set_parent(timer->fclk, src);
|
WARN(clk_set_parent(timer->fclk, src) < 0,
|
||||||
if (r < 0) {
|
"Cannot set timer parent clock, no PLL clock driver?");
|
||||||
pr_warn("%s: %s cannot set source\n", __func__, oh->name);
|
|
||||||
clk_put(src);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
clk_put(src);
|
clk_put(src);
|
||||||
|
|
||||||
|
@ -300,7 +300,7 @@ static void __init omap3_vc_init_pmic_signaling(struct voltagedomain *voltdm)
|
|||||||
|
|
||||||
val = voltdm->read(OMAP3_PRM_POLCTRL_OFFSET);
|
val = voltdm->read(OMAP3_PRM_POLCTRL_OFFSET);
|
||||||
if (!(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL) ||
|
if (!(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL) ||
|
||||||
(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL)) {
|
(val & OMAP3430_PRM_POLCTRL_OFFMODE_POL)) {
|
||||||
val |= OMAP3430_PRM_POLCTRL_CLKREQ_POL;
|
val |= OMAP3430_PRM_POLCTRL_CLKREQ_POL;
|
||||||
val &= ~OMAP3430_PRM_POLCTRL_OFFMODE_POL;
|
val &= ~OMAP3430_PRM_POLCTRL_OFFMODE_POL;
|
||||||
pr_debug("PM: fixing sys_clkreq and sys_off_mode polarity to 0x%x\n",
|
pr_debug("PM: fixing sys_clkreq and sys_off_mode polarity to 0x%x\n",
|
||||||
|
@ -502,7 +502,7 @@ static void balloon3_irq_handler(struct irq_desc *desc)
|
|||||||
balloon3_irq_enabled;
|
balloon3_irq_enabled;
|
||||||
do {
|
do {
|
||||||
struct irq_data *d = irq_desc_get_irq_data(desc);
|
struct irq_data *d = irq_desc_get_irq_data(desc);
|
||||||
struct irq_chip *chip = irq_data_get_chip(d);
|
struct irq_chip *chip = irq_desc_get_chip(desc);
|
||||||
unsigned int irq;
|
unsigned int irq;
|
||||||
|
|
||||||
/* clear useless edge notification */
|
/* clear useless edge notification */
|
||||||
|
@ -43,6 +43,13 @@
|
|||||||
* 0xf6200000..0xf6201000
|
* 0xf6200000..0xf6201000
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DFI Bus for NAND, PXA3xx only
|
||||||
|
*/
|
||||||
|
#define NAND_PHYS 0x43100000
|
||||||
|
#define NAND_VIRT IOMEM(0xf6300000)
|
||||||
|
#define NAND_SIZE 0x00100000
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal Memory Controller (PXA27x and later)
|
* Internal Memory Controller (PXA27x and later)
|
||||||
*/
|
*/
|
||||||
|
@ -47,6 +47,13 @@ extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int));
|
|||||||
#define ISRAM_START 0x5c000000
|
#define ISRAM_START 0x5c000000
|
||||||
#define ISRAM_SIZE SZ_256K
|
#define ISRAM_SIZE SZ_256K
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NAND NFC: DFI bus arbitration subset
|
||||||
|
*/
|
||||||
|
#define NDCR (*(volatile u32 __iomem*)(NAND_VIRT + 0))
|
||||||
|
#define NDCR_ND_ARB_EN (1 << 12)
|
||||||
|
#define NDCR_ND_ARB_CNTL (1 << 19)
|
||||||
|
|
||||||
static void __iomem *sram;
|
static void __iomem *sram;
|
||||||
static unsigned long wakeup_src;
|
static unsigned long wakeup_src;
|
||||||
|
|
||||||
@ -362,7 +369,12 @@ static struct map_desc pxa3xx_io_desc[] __initdata = {
|
|||||||
.pfn = __phys_to_pfn(PXA3XX_SMEMC_BASE),
|
.pfn = __phys_to_pfn(PXA3XX_SMEMC_BASE),
|
||||||
.length = SMEMC_SIZE,
|
.length = SMEMC_SIZE,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
}
|
}, {
|
||||||
|
.virtual = (unsigned long)NAND_VIRT,
|
||||||
|
.pfn = __phys_to_pfn(NAND_PHYS),
|
||||||
|
.length = NAND_SIZE,
|
||||||
|
.type = MT_DEVICE
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init pxa3xx_map_io(void)
|
void __init pxa3xx_map_io(void)
|
||||||
@ -419,6 +431,13 @@ static int __init pxa3xx_init(void)
|
|||||||
*/
|
*/
|
||||||
ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S);
|
ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disable DFI bus arbitration, to prevent a system bus lock if
|
||||||
|
* somebody disables the NAND clock (unused clock) while this
|
||||||
|
* bit remains set.
|
||||||
|
*/
|
||||||
|
NDCR = (NDCR & ~NDCR_ND_ARB_EN) | NDCR_ND_ARB_CNTL;
|
||||||
|
|
||||||
if ((ret = pxa_init_dma(IRQ_DMA, 32)))
|
if ((ret = pxa_init_dma(IRQ_DMA, 32)))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -365,15 +365,21 @@ do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, struct pt_regs *r
|
|||||||
user:
|
user:
|
||||||
if (LDST_L_BIT(instr)) {
|
if (LDST_L_BIT(instr)) {
|
||||||
unsigned long val;
|
unsigned long val;
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
|
|
||||||
get16t_unaligned_check(val, addr);
|
get16t_unaligned_check(val, addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
|
||||||
/* signed half-word? */
|
/* signed half-word? */
|
||||||
if (instr & 0x40)
|
if (instr & 0x40)
|
||||||
val = (signed long)((signed short) val);
|
val = (signed long)((signed short) val);
|
||||||
|
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
} else
|
} else {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
put16t_unaligned_check(regs->uregs[rd], addr);
|
put16t_unaligned_check(regs->uregs[rd], addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
}
|
||||||
|
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
|
||||||
@ -420,14 +426,21 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr,
|
|||||||
|
|
||||||
user:
|
user:
|
||||||
if (load) {
|
if (load) {
|
||||||
unsigned long val;
|
unsigned long val, val2;
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
|
|
||||||
get32t_unaligned_check(val, addr);
|
get32t_unaligned_check(val, addr);
|
||||||
|
get32t_unaligned_check(val2, addr + 4);
|
||||||
|
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
get32t_unaligned_check(val, addr + 4);
|
regs->uregs[rd2] = val2;
|
||||||
regs->uregs[rd2] = val;
|
|
||||||
} else {
|
} else {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
put32t_unaligned_check(regs->uregs[rd], addr);
|
put32t_unaligned_check(regs->uregs[rd], addr);
|
||||||
put32t_unaligned_check(regs->uregs[rd2], addr + 4);
|
put32t_unaligned_check(regs->uregs[rd2], addr + 4);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
@ -458,10 +471,15 @@ do_alignment_ldrstr(unsigned long addr, unsigned long instr, struct pt_regs *reg
|
|||||||
trans:
|
trans:
|
||||||
if (LDST_L_BIT(instr)) {
|
if (LDST_L_BIT(instr)) {
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
get32t_unaligned_check(val, addr);
|
get32t_unaligned_check(val, addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
regs->uregs[rd] = val;
|
regs->uregs[rd] = val;
|
||||||
} else
|
} else {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
put32t_unaligned_check(regs->uregs[rd], addr);
|
put32t_unaligned_check(regs->uregs[rd], addr);
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
|
}
|
||||||
return TYPE_LDST;
|
return TYPE_LDST;
|
||||||
|
|
||||||
fault:
|
fault:
|
||||||
@ -531,6 +549,7 @@ do_alignment_ldmstm(unsigned long addr, unsigned long instr, struct pt_regs *reg
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (user_mode(regs)) {
|
if (user_mode(regs)) {
|
||||||
|
unsigned int __ua_flags = uaccess_save_and_enable();
|
||||||
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
||||||
regbits >>= 1, rd += 1)
|
regbits >>= 1, rd += 1)
|
||||||
if (regbits & 1) {
|
if (regbits & 1) {
|
||||||
@ -542,6 +561,7 @@ do_alignment_ldmstm(unsigned long addr, unsigned long instr, struct pt_regs *reg
|
|||||||
put32t_unaligned_check(regs->uregs[rd], eaddr);
|
put32t_unaligned_check(regs->uregs[rd], eaddr);
|
||||||
eaddr += 4;
|
eaddr += 4;
|
||||||
}
|
}
|
||||||
|
uaccess_restore(__ua_flags);
|
||||||
} else {
|
} else {
|
||||||
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
for (regbits = REGMASK_BITS(instr), rd = 0; regbits;
|
||||||
regbits >>= 1, rd += 1)
|
regbits >>= 1, rd += 1)
|
||||||
|
@ -107,7 +107,6 @@ static const struct of_device_id pxa_ssp_of_ids[] = {
|
|||||||
{ .compatible = "mvrl,pxa168-ssp", .data = (void *) PXA168_SSP },
|
{ .compatible = "mvrl,pxa168-ssp", .data = (void *) PXA168_SSP },
|
||||||
{ .compatible = "mrvl,pxa910-ssp", .data = (void *) PXA910_SSP },
|
{ .compatible = "mrvl,pxa910-ssp", .data = (void *) PXA910_SSP },
|
||||||
{ .compatible = "mrvl,ce4100-ssp", .data = (void *) CE4100_SSP },
|
{ .compatible = "mrvl,ce4100-ssp", .data = (void *) CE4100_SSP },
|
||||||
{ .compatible = "mrvl,lpss-ssp", .data = (void *) LPSS_SSP },
|
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids);
|
MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids);
|
||||||
|
@ -81,7 +81,7 @@ cpu3: cpu@101 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
idle-states {
|
idle-states {
|
||||||
entry-method = "arm,psci";
|
entry-method = "psci";
|
||||||
|
|
||||||
CPU_SLEEP_0: cpu-sleep-0 {
|
CPU_SLEEP_0: cpu-sleep-0 {
|
||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
|
@ -106,7 +106,7 @@ core3 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
idle-states {
|
idle-states {
|
||||||
entry-method = "arm,psci";
|
entry-method = "psci";
|
||||||
|
|
||||||
cpu_sleep: cpu-sleep-0 {
|
cpu_sleep: cpu-sleep-0 {
|
||||||
compatible = "arm,idle-state";
|
compatible = "arm,idle-state";
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#define KVM_USER_MEM_SLOTS 32
|
#define KVM_USER_MEM_SLOTS 32
|
||||||
#define KVM_PRIVATE_MEM_SLOTS 4
|
#define KVM_PRIVATE_MEM_SLOTS 4
|
||||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 500000
|
||||||
|
|
||||||
#include <kvm/arm_vgic.h>
|
#include <kvm/arm_vgic.h>
|
||||||
#include <kvm/arm_arch_timer.h>
|
#include <kvm/arm_arch_timer.h>
|
||||||
|
@ -294,6 +294,8 @@ void pcibios_fixup_bus(struct pci_bus *bus)
|
|||||||
printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number);
|
printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
|
||||||
if (bus->number == 0) {
|
if (bus->number == 0) {
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||||
|
@ -533,9 +533,10 @@ void pcibios_fixup_bus(struct pci_bus *b)
|
|||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
|
|
||||||
if (b->self)
|
if (b->self) {
|
||||||
|
pci_read_bridge_bases(b);
|
||||||
pcibios_fixup_bridge_resources(b->self);
|
pcibios_fixup_bridge_resources(b->self);
|
||||||
|
}
|
||||||
list_for_each_entry(dev, &b->devices, bus_list)
|
list_for_each_entry(dev, &b->devices, bus_list)
|
||||||
pcibios_fixup_device_resources(dev);
|
pcibios_fixup_device_resources(dev);
|
||||||
platform_pci_fixup_bus(b);
|
platform_pci_fixup_bus(b);
|
||||||
|
@ -863,7 +863,14 @@ void pcibios_setup_bus_devices(struct pci_bus *bus)
|
|||||||
|
|
||||||
void pcibios_fixup_bus(struct pci_bus *bus)
|
void pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
/* Fixup the bus */
|
/* When called from the generic PCI probe, read PCI<->PCI bridge
|
||||||
|
* bases. This is -not- called when generating the PCI tree from
|
||||||
|
* the OF device-tree.
|
||||||
|
*/
|
||||||
|
if (bus->self != NULL)
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
|
||||||
|
/* Now fixup the bus bus */
|
||||||
pcibios_setup_bus_self(bus);
|
pcibios_setup_bus_self(bus);
|
||||||
|
|
||||||
/* Now fixup devices on that bus */
|
/* Now fixup devices on that bus */
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
#define KVM_PRIVATE_MEM_SLOTS 0
|
#define KVM_PRIVATE_MEM_SLOTS 0
|
||||||
|
|
||||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 500000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -311,6 +311,12 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
|
|||||||
|
|
||||||
void pcibios_fixup_bus(struct pci_bus *bus)
|
void pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
|
struct pci_dev *dev = bus->self;
|
||||||
|
|
||||||
|
if (pci_has_flag(PCI_PROBE_ONLY) && dev &&
|
||||||
|
(dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(PCIBIOS_MIN_IO);
|
EXPORT_SYMBOL(PCIBIOS_MIN_IO);
|
||||||
|
@ -324,6 +324,7 @@ void pcibios_fixup_bus(struct pci_bus *bus)
|
|||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
|
|
||||||
if (bus->self) {
|
if (bus->self) {
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
pcibios_fixup_bridge_resources(bus->self);
|
pcibios_fixup_bridge_resources(bus->self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#ifdef CONFIG_KVM_MMIO
|
#ifdef CONFIG_KVM_MMIO
|
||||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||||
#endif
|
#endif
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 500000
|
||||||
|
|
||||||
/* These values are internal and can be increased later */
|
/* These values are internal and can be increased later */
|
||||||
#define KVM_NR_IRQCHIPS 1
|
#define KVM_NR_IRQCHIPS 1
|
||||||
|
@ -369,3 +369,4 @@ SYSCALL_SPU(bpf)
|
|||||||
COMPAT_SYS(execveat)
|
COMPAT_SYS(execveat)
|
||||||
PPC64ONLY(switch_endian)
|
PPC64ONLY(switch_endian)
|
||||||
SYSCALL_SPU(userfaultfd)
|
SYSCALL_SPU(userfaultfd)
|
||||||
|
SYSCALL_SPU(membarrier)
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include <uapi/asm/unistd.h>
|
#include <uapi/asm/unistd.h>
|
||||||
|
|
||||||
|
|
||||||
#define __NR_syscalls 365
|
#define __NR_syscalls 366
|
||||||
|
|
||||||
#define __NR__exit __NR_exit
|
#define __NR__exit __NR_exit
|
||||||
#define NR_syscalls __NR_syscalls
|
#define NR_syscalls __NR_syscalls
|
||||||
|
@ -387,5 +387,6 @@
|
|||||||
#define __NR_execveat 362
|
#define __NR_execveat 362
|
||||||
#define __NR_switch_endian 363
|
#define __NR_switch_endian 363
|
||||||
#define __NR_userfaultfd 364
|
#define __NR_userfaultfd 364
|
||||||
|
#define __NR_membarrier 365
|
||||||
|
|
||||||
#endif /* _UAPI_ASM_POWERPC_UNISTD_H_ */
|
#endif /* _UAPI_ASM_POWERPC_UNISTD_H_ */
|
||||||
|
@ -1032,7 +1032,13 @@ void pcibios_set_master(struct pci_dev *dev)
|
|||||||
|
|
||||||
void pcibios_fixup_bus(struct pci_bus *bus)
|
void pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
/* Fixup the bus */
|
/* When called from the generic PCI probe, read PCI<->PCI bridge
|
||||||
|
* bases. This is -not- called when generating the PCI tree from
|
||||||
|
* the OF device-tree.
|
||||||
|
*/
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
|
||||||
|
/* Now fixup the bus bus */
|
||||||
pcibios_setup_bus_self(bus);
|
pcibios_setup_bus_self(bus);
|
||||||
|
|
||||||
/* Now fixup devices on that bus */
|
/* Now fixup devices on that bus */
|
||||||
|
@ -829,12 +829,15 @@ int kvmppc_h_logical_ci_load(struct kvm_vcpu *vcpu)
|
|||||||
unsigned long size = kvmppc_get_gpr(vcpu, 4);
|
unsigned long size = kvmppc_get_gpr(vcpu, 4);
|
||||||
unsigned long addr = kvmppc_get_gpr(vcpu, 5);
|
unsigned long addr = kvmppc_get_gpr(vcpu, 5);
|
||||||
u64 buf;
|
u64 buf;
|
||||||
|
int srcu_idx;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!is_power_of_2(size) || (size > sizeof(buf)))
|
if (!is_power_of_2(size) || (size > sizeof(buf)))
|
||||||
return H_TOO_HARD;
|
return H_TOO_HARD;
|
||||||
|
|
||||||
|
srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
|
||||||
ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, addr, size, &buf);
|
ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, addr, size, &buf);
|
||||||
|
srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return H_TOO_HARD;
|
return H_TOO_HARD;
|
||||||
|
|
||||||
@ -869,6 +872,7 @@ int kvmppc_h_logical_ci_store(struct kvm_vcpu *vcpu)
|
|||||||
unsigned long addr = kvmppc_get_gpr(vcpu, 5);
|
unsigned long addr = kvmppc_get_gpr(vcpu, 5);
|
||||||
unsigned long val = kvmppc_get_gpr(vcpu, 6);
|
unsigned long val = kvmppc_get_gpr(vcpu, 6);
|
||||||
u64 buf;
|
u64 buf;
|
||||||
|
int srcu_idx;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
switch (size) {
|
switch (size) {
|
||||||
@ -892,7 +896,9 @@ int kvmppc_h_logical_ci_store(struct kvm_vcpu *vcpu)
|
|||||||
return H_TOO_HARD;
|
return H_TOO_HARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
|
||||||
ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, addr, size, &buf);
|
ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, addr, size, &buf);
|
||||||
|
srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return H_TOO_HARD;
|
return H_TOO_HARD;
|
||||||
|
|
||||||
|
@ -2692,9 +2692,13 @@ static int kvmppc_run_vcpu(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
while (vcpu->arch.state == KVMPPC_VCPU_RUNNABLE &&
|
while (vcpu->arch.state == KVMPPC_VCPU_RUNNABLE &&
|
||||||
(vc->vcore_state == VCORE_RUNNING ||
|
(vc->vcore_state == VCORE_RUNNING ||
|
||||||
vc->vcore_state == VCORE_EXITING))
|
vc->vcore_state == VCORE_EXITING ||
|
||||||
|
vc->vcore_state == VCORE_PIGGYBACK))
|
||||||
kvmppc_wait_for_exec(vc, vcpu, TASK_UNINTERRUPTIBLE);
|
kvmppc_wait_for_exec(vc, vcpu, TASK_UNINTERRUPTIBLE);
|
||||||
|
|
||||||
|
if (vc->vcore_state == VCORE_PREEMPT && vc->runner == NULL)
|
||||||
|
kvmppc_vcore_end_preempt(vc);
|
||||||
|
|
||||||
if (vcpu->arch.state == KVMPPC_VCPU_RUNNABLE) {
|
if (vcpu->arch.state == KVMPPC_VCPU_RUNNABLE) {
|
||||||
kvmppc_remove_runnable(vc, vcpu);
|
kvmppc_remove_runnable(vc, vcpu);
|
||||||
vcpu->stat.signal_exits++;
|
vcpu->stat.signal_exits++;
|
||||||
|
@ -1257,6 +1257,7 @@ mc_cont:
|
|||||||
bl kvmhv_accumulate_time
|
bl kvmhv_accumulate_time
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
mr r3, r12
|
||||||
/* Increment exit count, poke other threads to exit */
|
/* Increment exit count, poke other threads to exit */
|
||||||
bl kvmhv_commence_exit
|
bl kvmhv_commence_exit
|
||||||
nop
|
nop
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# CONFIG_SWAP is not set
|
# CONFIG_SWAP is not set
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_RCU_FAST_NO_HZ=y
|
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
@ -54,10 +53,6 @@ CONFIG_RAW_DRIVER=y
|
|||||||
# CONFIG_MONWRITER is not set
|
# CONFIG_MONWRITER is not set
|
||||||
# CONFIG_S390_VMUR is not set
|
# CONFIG_S390_VMUR is not set
|
||||||
# CONFIG_HID is not set
|
# CONFIG_HID is not set
|
||||||
CONFIG_MEMSTICK=y
|
|
||||||
CONFIG_MEMSTICK_DEBUG=y
|
|
||||||
CONFIG_MEMSTICK_UNSAFE_RESUME=y
|
|
||||||
CONFIG_MSPRO_BLOCK=y
|
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
#define KVM_NR_IRQCHIPS 1
|
#define KVM_NR_IRQCHIPS 1
|
||||||
#define KVM_IRQCHIP_NUM_PINS 4096
|
#define KVM_IRQCHIP_NUM_PINS 4096
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 0
|
||||||
|
|
||||||
#define SIGP_CTRL_C 0x80
|
#define SIGP_CTRL_C 0x80
|
||||||
#define SIGP_CTRL_SCN_MASK 0x3f
|
#define SIGP_CTRL_SCN_MASK 0x3f
|
||||||
|
@ -8,28 +8,8 @@
|
|||||||
|
|
||||||
#include <uapi/asm/unistd.h>
|
#include <uapi/asm/unistd.h>
|
||||||
|
|
||||||
|
|
||||||
#define __IGNORE_time
|
#define __IGNORE_time
|
||||||
|
|
||||||
/* Ignore system calls that are also reachable via sys_socketcall */
|
|
||||||
#define __IGNORE_recvmmsg
|
|
||||||
#define __IGNORE_sendmmsg
|
|
||||||
#define __IGNORE_socket
|
|
||||||
#define __IGNORE_socketpair
|
|
||||||
#define __IGNORE_bind
|
|
||||||
#define __IGNORE_connect
|
|
||||||
#define __IGNORE_listen
|
|
||||||
#define __IGNORE_accept4
|
|
||||||
#define __IGNORE_getsockopt
|
|
||||||
#define __IGNORE_setsockopt
|
|
||||||
#define __IGNORE_getsockname
|
|
||||||
#define __IGNORE_getpeername
|
|
||||||
#define __IGNORE_sendto
|
|
||||||
#define __IGNORE_sendmsg
|
|
||||||
#define __IGNORE_recvfrom
|
|
||||||
#define __IGNORE_recvmsg
|
|
||||||
#define __IGNORE_shutdown
|
|
||||||
|
|
||||||
#define __ARCH_WANT_OLD_READDIR
|
#define __ARCH_WANT_OLD_READDIR
|
||||||
#define __ARCH_WANT_SYS_ALARM
|
#define __ARCH_WANT_SYS_ALARM
|
||||||
#define __ARCH_WANT_SYS_GETHOSTNAME
|
#define __ARCH_WANT_SYS_GETHOSTNAME
|
||||||
|
@ -290,7 +290,26 @@
|
|||||||
#define __NR_s390_pci_mmio_write 352
|
#define __NR_s390_pci_mmio_write 352
|
||||||
#define __NR_s390_pci_mmio_read 353
|
#define __NR_s390_pci_mmio_read 353
|
||||||
#define __NR_execveat 354
|
#define __NR_execveat 354
|
||||||
#define NR_syscalls 355
|
#define __NR_userfaultfd 355
|
||||||
|
#define __NR_membarrier 356
|
||||||
|
#define __NR_recvmmsg 357
|
||||||
|
#define __NR_sendmmsg 358
|
||||||
|
#define __NR_socket 359
|
||||||
|
#define __NR_socketpair 360
|
||||||
|
#define __NR_bind 361
|
||||||
|
#define __NR_connect 362
|
||||||
|
#define __NR_listen 363
|
||||||
|
#define __NR_accept4 364
|
||||||
|
#define __NR_getsockopt 365
|
||||||
|
#define __NR_setsockopt 366
|
||||||
|
#define __NR_getsockname 367
|
||||||
|
#define __NR_getpeername 368
|
||||||
|
#define __NR_sendto 369
|
||||||
|
#define __NR_sendmsg 370
|
||||||
|
#define __NR_recvfrom 371
|
||||||
|
#define __NR_recvmsg 372
|
||||||
|
#define __NR_shutdown 373
|
||||||
|
#define NR_syscalls 374
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There are some system calls that are not present on 64 bit, some
|
* There are some system calls that are not present on 64 bit, some
|
||||||
|
@ -48,6 +48,19 @@ typedef struct
|
|||||||
struct ucontext32 uc;
|
struct ucontext32 uc;
|
||||||
} rt_sigframe32;
|
} rt_sigframe32;
|
||||||
|
|
||||||
|
static inline void sigset_to_sigset32(unsigned long *set64,
|
||||||
|
compat_sigset_word *set32)
|
||||||
|
{
|
||||||
|
set32[0] = (compat_sigset_word) set64[0];
|
||||||
|
set32[1] = (compat_sigset_word)(set64[0] >> 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void sigset32_to_sigset(compat_sigset_word *set32,
|
||||||
|
unsigned long *set64)
|
||||||
|
{
|
||||||
|
set64[0] = (unsigned long) set32[0] | ((unsigned long) set32[1] << 32);
|
||||||
|
}
|
||||||
|
|
||||||
int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from)
|
int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@ -281,10 +294,12 @@ COMPAT_SYSCALL_DEFINE0(sigreturn)
|
|||||||
{
|
{
|
||||||
struct pt_regs *regs = task_pt_regs(current);
|
struct pt_regs *regs = task_pt_regs(current);
|
||||||
sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15];
|
sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15];
|
||||||
|
compat_sigset_t cset;
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
|
|
||||||
if (__copy_from_user(&set.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE32))
|
if (__copy_from_user(&cset.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE32))
|
||||||
goto badframe;
|
goto badframe;
|
||||||
|
sigset32_to_sigset(cset.sig, set.sig);
|
||||||
set_current_blocked(&set);
|
set_current_blocked(&set);
|
||||||
save_fpu_regs();
|
save_fpu_regs();
|
||||||
if (restore_sigregs32(regs, &frame->sregs))
|
if (restore_sigregs32(regs, &frame->sregs))
|
||||||
@ -302,10 +317,12 @@ COMPAT_SYSCALL_DEFINE0(rt_sigreturn)
|
|||||||
{
|
{
|
||||||
struct pt_regs *regs = task_pt_regs(current);
|
struct pt_regs *regs = task_pt_regs(current);
|
||||||
rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15];
|
rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15];
|
||||||
|
compat_sigset_t cset;
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
|
|
||||||
if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set)))
|
if (__copy_from_user(&cset, &frame->uc.uc_sigmask, sizeof(cset)))
|
||||||
goto badframe;
|
goto badframe;
|
||||||
|
sigset32_to_sigset(cset.sig, set.sig);
|
||||||
set_current_blocked(&set);
|
set_current_blocked(&set);
|
||||||
if (compat_restore_altstack(&frame->uc.uc_stack))
|
if (compat_restore_altstack(&frame->uc.uc_stack))
|
||||||
goto badframe;
|
goto badframe;
|
||||||
@ -377,7 +394,7 @@ static int setup_frame32(struct ksignal *ksig, sigset_t *set,
|
|||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
/* Create struct sigcontext32 on the signal stack */
|
/* Create struct sigcontext32 on the signal stack */
|
||||||
memcpy(&sc.oldmask, &set->sig, _SIGMASK_COPY_SIZE32);
|
sigset_to_sigset32(set->sig, sc.oldmask);
|
||||||
sc.sregs = (__u32)(unsigned long __force) &frame->sregs;
|
sc.sregs = (__u32)(unsigned long __force) &frame->sregs;
|
||||||
if (__copy_to_user(&frame->sc, &sc, sizeof(frame->sc)))
|
if (__copy_to_user(&frame->sc, &sc, sizeof(frame->sc)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
@ -438,6 +455,7 @@ static int setup_frame32(struct ksignal *ksig, sigset_t *set,
|
|||||||
static int setup_rt_frame32(struct ksignal *ksig, sigset_t *set,
|
static int setup_rt_frame32(struct ksignal *ksig, sigset_t *set,
|
||||||
struct pt_regs *regs)
|
struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
|
compat_sigset_t cset;
|
||||||
rt_sigframe32 __user *frame;
|
rt_sigframe32 __user *frame;
|
||||||
unsigned long restorer;
|
unsigned long restorer;
|
||||||
size_t frame_size;
|
size_t frame_size;
|
||||||
@ -485,11 +503,12 @@ static int setup_rt_frame32(struct ksignal *ksig, sigset_t *set,
|
|||||||
store_sigregs();
|
store_sigregs();
|
||||||
|
|
||||||
/* Create ucontext on the signal stack. */
|
/* Create ucontext on the signal stack. */
|
||||||
|
sigset_to_sigset32(set->sig, cset.sig);
|
||||||
if (__put_user(uc_flags, &frame->uc.uc_flags) ||
|
if (__put_user(uc_flags, &frame->uc.uc_flags) ||
|
||||||
__put_user(0, &frame->uc.uc_link) ||
|
__put_user(0, &frame->uc.uc_link) ||
|
||||||
__compat_save_altstack(&frame->uc.uc_stack, regs->gprs[15]) ||
|
__compat_save_altstack(&frame->uc.uc_stack, regs->gprs[15]) ||
|
||||||
save_sigregs32(regs, &frame->uc.uc_mcontext) ||
|
save_sigregs32(regs, &frame->uc.uc_mcontext) ||
|
||||||
__copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)) ||
|
__copy_to_user(&frame->uc.uc_sigmask, &cset, sizeof(cset)) ||
|
||||||
save_sigregs_ext32(regs, &frame->uc.uc_mcontext_ext))
|
save_sigregs_ext32(regs, &frame->uc.uc_mcontext_ext))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
@ -52,15 +52,13 @@
|
|||||||
* the regular system call wrappers.
|
* the regular system call wrappers.
|
||||||
*/
|
*/
|
||||||
#define COMPAT_SYSCALL_WRAPx(x, name, ...) \
|
#define COMPAT_SYSCALL_WRAPx(x, name, ...) \
|
||||||
asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \
|
asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \
|
||||||
asmlinkage long compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__));\
|
asmlinkage long notrace compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__));\
|
||||||
asmlinkage long compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)) \
|
asmlinkage long notrace compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)) \
|
||||||
{ \
|
{ \
|
||||||
return sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__)); \
|
return sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
COMPAT_SYSCALL_WRAP1(exit, int, error_code);
|
|
||||||
COMPAT_SYSCALL_WRAP1(close, unsigned int, fd);
|
|
||||||
COMPAT_SYSCALL_WRAP2(creat, const char __user *, pathname, umode_t, mode);
|
COMPAT_SYSCALL_WRAP2(creat, const char __user *, pathname, umode_t, mode);
|
||||||
COMPAT_SYSCALL_WRAP2(link, const char __user *, oldname, const char __user *, newname);
|
COMPAT_SYSCALL_WRAP2(link, const char __user *, oldname, const char __user *, newname);
|
||||||
COMPAT_SYSCALL_WRAP1(unlink, const char __user *, pathname);
|
COMPAT_SYSCALL_WRAP1(unlink, const char __user *, pathname);
|
||||||
@ -68,23 +66,16 @@ COMPAT_SYSCALL_WRAP1(chdir, const char __user *, filename);
|
|||||||
COMPAT_SYSCALL_WRAP3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev);
|
COMPAT_SYSCALL_WRAP3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev);
|
||||||
COMPAT_SYSCALL_WRAP2(chmod, const char __user *, filename, umode_t, mode);
|
COMPAT_SYSCALL_WRAP2(chmod, const char __user *, filename, umode_t, mode);
|
||||||
COMPAT_SYSCALL_WRAP1(oldumount, char __user *, name);
|
COMPAT_SYSCALL_WRAP1(oldumount, char __user *, name);
|
||||||
COMPAT_SYSCALL_WRAP1(alarm, unsigned int, seconds);
|
|
||||||
COMPAT_SYSCALL_WRAP2(access, const char __user *, filename, int, mode);
|
COMPAT_SYSCALL_WRAP2(access, const char __user *, filename, int, mode);
|
||||||
COMPAT_SYSCALL_WRAP1(nice, int, increment);
|
|
||||||
COMPAT_SYSCALL_WRAP2(kill, int, pid, int, sig);
|
|
||||||
COMPAT_SYSCALL_WRAP2(rename, const char __user *, oldname, const char __user *, newname);
|
COMPAT_SYSCALL_WRAP2(rename, const char __user *, oldname, const char __user *, newname);
|
||||||
COMPAT_SYSCALL_WRAP2(mkdir, const char __user *, pathname, umode_t, mode);
|
COMPAT_SYSCALL_WRAP2(mkdir, const char __user *, pathname, umode_t, mode);
|
||||||
COMPAT_SYSCALL_WRAP1(rmdir, const char __user *, pathname);
|
COMPAT_SYSCALL_WRAP1(rmdir, const char __user *, pathname);
|
||||||
COMPAT_SYSCALL_WRAP1(dup, unsigned int, fildes);
|
|
||||||
COMPAT_SYSCALL_WRAP1(pipe, int __user *, fildes);
|
COMPAT_SYSCALL_WRAP1(pipe, int __user *, fildes);
|
||||||
COMPAT_SYSCALL_WRAP1(brk, unsigned long, brk);
|
COMPAT_SYSCALL_WRAP1(brk, unsigned long, brk);
|
||||||
COMPAT_SYSCALL_WRAP2(signal, int, sig, __sighandler_t, handler);
|
COMPAT_SYSCALL_WRAP2(signal, int, sig, __sighandler_t, handler);
|
||||||
COMPAT_SYSCALL_WRAP1(acct, const char __user *, name);
|
COMPAT_SYSCALL_WRAP1(acct, const char __user *, name);
|
||||||
COMPAT_SYSCALL_WRAP2(umount, char __user *, name, int, flags);
|
COMPAT_SYSCALL_WRAP2(umount, char __user *, name, int, flags);
|
||||||
COMPAT_SYSCALL_WRAP2(setpgid, pid_t, pid, pid_t, pgid);
|
|
||||||
COMPAT_SYSCALL_WRAP1(umask, int, mask);
|
|
||||||
COMPAT_SYSCALL_WRAP1(chroot, const char __user *, filename);
|
COMPAT_SYSCALL_WRAP1(chroot, const char __user *, filename);
|
||||||
COMPAT_SYSCALL_WRAP2(dup2, unsigned int, oldfd, unsigned int, newfd);
|
|
||||||
COMPAT_SYSCALL_WRAP3(sigsuspend, int, unused1, int, unused2, old_sigset_t, mask);
|
COMPAT_SYSCALL_WRAP3(sigsuspend, int, unused1, int, unused2, old_sigset_t, mask);
|
||||||
COMPAT_SYSCALL_WRAP2(sethostname, char __user *, name, int, len);
|
COMPAT_SYSCALL_WRAP2(sethostname, char __user *, name, int, len);
|
||||||
COMPAT_SYSCALL_WRAP2(symlink, const char __user *, old, const char __user *, new);
|
COMPAT_SYSCALL_WRAP2(symlink, const char __user *, old, const char __user *, new);
|
||||||
@ -93,37 +84,23 @@ COMPAT_SYSCALL_WRAP1(uselib, const char __user *, library);
|
|||||||
COMPAT_SYSCALL_WRAP2(swapon, const char __user *, specialfile, int, swap_flags);
|
COMPAT_SYSCALL_WRAP2(swapon, const char __user *, specialfile, int, swap_flags);
|
||||||
COMPAT_SYSCALL_WRAP4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg);
|
COMPAT_SYSCALL_WRAP4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg);
|
||||||
COMPAT_SYSCALL_WRAP2(munmap, unsigned long, addr, size_t, len);
|
COMPAT_SYSCALL_WRAP2(munmap, unsigned long, addr, size_t, len);
|
||||||
COMPAT_SYSCALL_WRAP2(fchmod, unsigned int, fd, umode_t, mode);
|
|
||||||
COMPAT_SYSCALL_WRAP2(getpriority, int, which, int, who);
|
|
||||||
COMPAT_SYSCALL_WRAP3(setpriority, int, which, int, who, int, niceval);
|
|
||||||
COMPAT_SYSCALL_WRAP3(syslog, int, type, char __user *, buf, int, len);
|
COMPAT_SYSCALL_WRAP3(syslog, int, type, char __user *, buf, int, len);
|
||||||
COMPAT_SYSCALL_WRAP1(swapoff, const char __user *, specialfile);
|
COMPAT_SYSCALL_WRAP1(swapoff, const char __user *, specialfile);
|
||||||
COMPAT_SYSCALL_WRAP1(fsync, unsigned int, fd);
|
|
||||||
COMPAT_SYSCALL_WRAP2(setdomainname, char __user *, name, int, len);
|
COMPAT_SYSCALL_WRAP2(setdomainname, char __user *, name, int, len);
|
||||||
COMPAT_SYSCALL_WRAP1(newuname, struct new_utsname __user *, name);
|
COMPAT_SYSCALL_WRAP1(newuname, struct new_utsname __user *, name);
|
||||||
COMPAT_SYSCALL_WRAP3(mprotect, unsigned long, start, size_t, len, unsigned long, prot);
|
COMPAT_SYSCALL_WRAP3(mprotect, unsigned long, start, size_t, len, unsigned long, prot);
|
||||||
COMPAT_SYSCALL_WRAP3(init_module, void __user *, umod, unsigned long, len, const char __user *, uargs);
|
COMPAT_SYSCALL_WRAP3(init_module, void __user *, umod, unsigned long, len, const char __user *, uargs);
|
||||||
COMPAT_SYSCALL_WRAP2(delete_module, const char __user *, name_user, unsigned int, flags);
|
COMPAT_SYSCALL_WRAP2(delete_module, const char __user *, name_user, unsigned int, flags);
|
||||||
COMPAT_SYSCALL_WRAP4(quotactl, unsigned int, cmd, const char __user *, special, qid_t, id, void __user *, addr);
|
COMPAT_SYSCALL_WRAP4(quotactl, unsigned int, cmd, const char __user *, special, qid_t, id, void __user *, addr);
|
||||||
COMPAT_SYSCALL_WRAP1(getpgid, pid_t, pid);
|
|
||||||
COMPAT_SYSCALL_WRAP1(fchdir, unsigned int, fd);
|
|
||||||
COMPAT_SYSCALL_WRAP2(bdflush, int, func, long, data);
|
COMPAT_SYSCALL_WRAP2(bdflush, int, func, long, data);
|
||||||
COMPAT_SYSCALL_WRAP3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2);
|
COMPAT_SYSCALL_WRAP3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2);
|
||||||
COMPAT_SYSCALL_WRAP1(s390_personality, unsigned int, personality);
|
|
||||||
COMPAT_SYSCALL_WRAP5(llseek, unsigned int, fd, unsigned long, high, unsigned long, low, loff_t __user *, result, unsigned int, whence);
|
COMPAT_SYSCALL_WRAP5(llseek, unsigned int, fd, unsigned long, high, unsigned long, low, loff_t __user *, result, unsigned int, whence);
|
||||||
COMPAT_SYSCALL_WRAP2(flock, unsigned int, fd, unsigned int, cmd);
|
|
||||||
COMPAT_SYSCALL_WRAP3(msync, unsigned long, start, size_t, len, int, flags);
|
COMPAT_SYSCALL_WRAP3(msync, unsigned long, start, size_t, len, int, flags);
|
||||||
COMPAT_SYSCALL_WRAP1(getsid, pid_t, pid);
|
|
||||||
COMPAT_SYSCALL_WRAP1(fdatasync, unsigned int, fd);
|
|
||||||
COMPAT_SYSCALL_WRAP2(mlock, unsigned long, start, size_t, len);
|
COMPAT_SYSCALL_WRAP2(mlock, unsigned long, start, size_t, len);
|
||||||
COMPAT_SYSCALL_WRAP2(munlock, unsigned long, start, size_t, len);
|
COMPAT_SYSCALL_WRAP2(munlock, unsigned long, start, size_t, len);
|
||||||
COMPAT_SYSCALL_WRAP1(mlockall, int, flags);
|
|
||||||
COMPAT_SYSCALL_WRAP2(sched_setparam, pid_t, pid, struct sched_param __user *, param);
|
COMPAT_SYSCALL_WRAP2(sched_setparam, pid_t, pid, struct sched_param __user *, param);
|
||||||
COMPAT_SYSCALL_WRAP2(sched_getparam, pid_t, pid, struct sched_param __user *, param);
|
COMPAT_SYSCALL_WRAP2(sched_getparam, pid_t, pid, struct sched_param __user *, param);
|
||||||
COMPAT_SYSCALL_WRAP3(sched_setscheduler, pid_t, pid, int, policy, struct sched_param __user *, param);
|
COMPAT_SYSCALL_WRAP3(sched_setscheduler, pid_t, pid, int, policy, struct sched_param __user *, param);
|
||||||
COMPAT_SYSCALL_WRAP1(sched_getscheduler, pid_t, pid);
|
|
||||||
COMPAT_SYSCALL_WRAP1(sched_get_priority_max, int, policy);
|
|
||||||
COMPAT_SYSCALL_WRAP1(sched_get_priority_min, int, policy);
|
|
||||||
COMPAT_SYSCALL_WRAP5(mremap, unsigned long, addr, unsigned long, old_len, unsigned long, new_len, unsigned long, flags, unsigned long, new_addr);
|
COMPAT_SYSCALL_WRAP5(mremap, unsigned long, addr, unsigned long, old_len, unsigned long, new_len, unsigned long, flags, unsigned long, new_addr);
|
||||||
COMPAT_SYSCALL_WRAP3(poll, struct pollfd __user *, ufds, unsigned int, nfds, int, timeout);
|
COMPAT_SYSCALL_WRAP3(poll, struct pollfd __user *, ufds, unsigned int, nfds, int, timeout);
|
||||||
COMPAT_SYSCALL_WRAP5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, unsigned long, arg4, unsigned long, arg5);
|
COMPAT_SYSCALL_WRAP5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, unsigned long, arg4, unsigned long, arg5);
|
||||||
@ -131,20 +108,11 @@ COMPAT_SYSCALL_WRAP2(getcwd, char __user *, buf, unsigned long, size);
|
|||||||
COMPAT_SYSCALL_WRAP2(capget, cap_user_header_t, header, cap_user_data_t, dataptr);
|
COMPAT_SYSCALL_WRAP2(capget, cap_user_header_t, header, cap_user_data_t, dataptr);
|
||||||
COMPAT_SYSCALL_WRAP2(capset, cap_user_header_t, header, const cap_user_data_t, data);
|
COMPAT_SYSCALL_WRAP2(capset, cap_user_header_t, header, const cap_user_data_t, data);
|
||||||
COMPAT_SYSCALL_WRAP3(lchown, const char __user *, filename, uid_t, user, gid_t, group);
|
COMPAT_SYSCALL_WRAP3(lchown, const char __user *, filename, uid_t, user, gid_t, group);
|
||||||
COMPAT_SYSCALL_WRAP2(setreuid, uid_t, ruid, uid_t, euid);
|
|
||||||
COMPAT_SYSCALL_WRAP2(setregid, gid_t, rgid, gid_t, egid);
|
|
||||||
COMPAT_SYSCALL_WRAP2(getgroups, int, gidsetsize, gid_t __user *, grouplist);
|
COMPAT_SYSCALL_WRAP2(getgroups, int, gidsetsize, gid_t __user *, grouplist);
|
||||||
COMPAT_SYSCALL_WRAP2(setgroups, int, gidsetsize, gid_t __user *, grouplist);
|
COMPAT_SYSCALL_WRAP2(setgroups, int, gidsetsize, gid_t __user *, grouplist);
|
||||||
COMPAT_SYSCALL_WRAP3(fchown, unsigned int, fd, uid_t, user, gid_t, group);
|
|
||||||
COMPAT_SYSCALL_WRAP3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid);
|
|
||||||
COMPAT_SYSCALL_WRAP3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid);
|
COMPAT_SYSCALL_WRAP3(getresuid, uid_t __user *, ruid, uid_t __user *, euid, uid_t __user *, suid);
|
||||||
COMPAT_SYSCALL_WRAP3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid);
|
|
||||||
COMPAT_SYSCALL_WRAP3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid);
|
COMPAT_SYSCALL_WRAP3(getresgid, gid_t __user *, rgid, gid_t __user *, egid, gid_t __user *, sgid);
|
||||||
COMPAT_SYSCALL_WRAP3(chown, const char __user *, filename, uid_t, user, gid_t, group);
|
COMPAT_SYSCALL_WRAP3(chown, const char __user *, filename, uid_t, user, gid_t, group);
|
||||||
COMPAT_SYSCALL_WRAP1(setuid, uid_t, uid);
|
|
||||||
COMPAT_SYSCALL_WRAP1(setgid, gid_t, gid);
|
|
||||||
COMPAT_SYSCALL_WRAP1(setfsuid, uid_t, uid);
|
|
||||||
COMPAT_SYSCALL_WRAP1(setfsgid, gid_t, gid);
|
|
||||||
COMPAT_SYSCALL_WRAP2(pivot_root, const char __user *, new_root, const char __user *, put_old);
|
COMPAT_SYSCALL_WRAP2(pivot_root, const char __user *, new_root, const char __user *, put_old);
|
||||||
COMPAT_SYSCALL_WRAP3(mincore, unsigned long, start, size_t, len, unsigned char __user *, vec);
|
COMPAT_SYSCALL_WRAP3(mincore, unsigned long, start, size_t, len, unsigned char __user *, vec);
|
||||||
COMPAT_SYSCALL_WRAP3(madvise, unsigned long, start, size_t, len, int, behavior);
|
COMPAT_SYSCALL_WRAP3(madvise, unsigned long, start, size_t, len, int, behavior);
|
||||||
@ -161,23 +129,16 @@ COMPAT_SYSCALL_WRAP3(flistxattr, int, fd, char __user *, list, size_t, size);
|
|||||||
COMPAT_SYSCALL_WRAP2(removexattr, const char __user *, path, const char __user *, name);
|
COMPAT_SYSCALL_WRAP2(removexattr, const char __user *, path, const char __user *, name);
|
||||||
COMPAT_SYSCALL_WRAP2(lremovexattr, const char __user *, path, const char __user *, name);
|
COMPAT_SYSCALL_WRAP2(lremovexattr, const char __user *, path, const char __user *, name);
|
||||||
COMPAT_SYSCALL_WRAP2(fremovexattr, int, fd, const char __user *, name);
|
COMPAT_SYSCALL_WRAP2(fremovexattr, int, fd, const char __user *, name);
|
||||||
COMPAT_SYSCALL_WRAP1(exit_group, int, error_code);
|
|
||||||
COMPAT_SYSCALL_WRAP1(set_tid_address, int __user *, tidptr);
|
COMPAT_SYSCALL_WRAP1(set_tid_address, int __user *, tidptr);
|
||||||
COMPAT_SYSCALL_WRAP1(epoll_create, int, size);
|
|
||||||
COMPAT_SYSCALL_WRAP4(epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event __user *, event);
|
COMPAT_SYSCALL_WRAP4(epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event __user *, event);
|
||||||
COMPAT_SYSCALL_WRAP4(epoll_wait, int, epfd, struct epoll_event __user *, events, int, maxevents, int, timeout);
|
COMPAT_SYSCALL_WRAP4(epoll_wait, int, epfd, struct epoll_event __user *, events, int, maxevents, int, timeout);
|
||||||
COMPAT_SYSCALL_WRAP1(timer_getoverrun, timer_t, timer_id);
|
|
||||||
COMPAT_SYSCALL_WRAP1(timer_delete, compat_timer_t, compat_timer_id);
|
|
||||||
COMPAT_SYSCALL_WRAP1(io_destroy, aio_context_t, ctx);
|
COMPAT_SYSCALL_WRAP1(io_destroy, aio_context_t, ctx);
|
||||||
COMPAT_SYSCALL_WRAP3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, struct io_event __user *, result);
|
COMPAT_SYSCALL_WRAP3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, struct io_event __user *, result);
|
||||||
COMPAT_SYSCALL_WRAP1(mq_unlink, const char __user *, name);
|
COMPAT_SYSCALL_WRAP1(mq_unlink, const char __user *, name);
|
||||||
COMPAT_SYSCALL_WRAP5(add_key, const char __user *, tp, const char __user *, dsc, const void __user *, pld, size_t, len, key_serial_t, id);
|
COMPAT_SYSCALL_WRAP5(add_key, const char __user *, tp, const char __user *, dsc, const void __user *, pld, size_t, len, key_serial_t, id);
|
||||||
COMPAT_SYSCALL_WRAP4(request_key, const char __user *, tp, const char __user *, dsc, const char __user *, info, key_serial_t, id);
|
COMPAT_SYSCALL_WRAP4(request_key, const char __user *, tp, const char __user *, dsc, const char __user *, info, key_serial_t, id);
|
||||||
COMPAT_SYSCALL_WRAP5(remap_file_pages, unsigned long, start, unsigned long, size, unsigned long, prot, unsigned long, pgoff, unsigned long, flags);
|
COMPAT_SYSCALL_WRAP5(remap_file_pages, unsigned long, start, unsigned long, size, unsigned long, prot, unsigned long, pgoff, unsigned long, flags);
|
||||||
COMPAT_SYSCALL_WRAP3(ioprio_set, int, which, int, who, int, ioprio);
|
|
||||||
COMPAT_SYSCALL_WRAP2(ioprio_get, int, which, int, who);
|
|
||||||
COMPAT_SYSCALL_WRAP3(inotify_add_watch, int, fd, const char __user *, path, u32, mask);
|
COMPAT_SYSCALL_WRAP3(inotify_add_watch, int, fd, const char __user *, path, u32, mask);
|
||||||
COMPAT_SYSCALL_WRAP2(inotify_rm_watch, int, fd, __s32, wd);
|
|
||||||
COMPAT_SYSCALL_WRAP3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode);
|
COMPAT_SYSCALL_WRAP3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode);
|
||||||
COMPAT_SYSCALL_WRAP4(mknodat, int, dfd, const char __user *, filename, umode_t, mode, unsigned, dev);
|
COMPAT_SYSCALL_WRAP4(mknodat, int, dfd, const char __user *, filename, umode_t, mode, unsigned, dev);
|
||||||
COMPAT_SYSCALL_WRAP5(fchownat, int, dfd, const char __user *, filename, uid_t, user, gid_t, group, int, flag);
|
COMPAT_SYSCALL_WRAP5(fchownat, int, dfd, const char __user *, filename, uid_t, user, gid_t, group, int, flag);
|
||||||
@ -192,23 +153,11 @@ COMPAT_SYSCALL_WRAP1(unshare, unsigned long, unshare_flags);
|
|||||||
COMPAT_SYSCALL_WRAP6(splice, int, fd_in, loff_t __user *, off_in, int, fd_out, loff_t __user *, off_out, size_t, len, unsigned int, flags);
|
COMPAT_SYSCALL_WRAP6(splice, int, fd_in, loff_t __user *, off_in, int, fd_out, loff_t __user *, off_out, size_t, len, unsigned int, flags);
|
||||||
COMPAT_SYSCALL_WRAP4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags);
|
COMPAT_SYSCALL_WRAP4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags);
|
||||||
COMPAT_SYSCALL_WRAP3(getcpu, unsigned __user *, cpu, unsigned __user *, node, struct getcpu_cache __user *, cache);
|
COMPAT_SYSCALL_WRAP3(getcpu, unsigned __user *, cpu, unsigned __user *, node, struct getcpu_cache __user *, cache);
|
||||||
COMPAT_SYSCALL_WRAP1(eventfd, unsigned int, count);
|
|
||||||
COMPAT_SYSCALL_WRAP2(timerfd_create, int, clockid, int, flags);
|
|
||||||
COMPAT_SYSCALL_WRAP2(eventfd2, unsigned int, count, int, flags);
|
|
||||||
COMPAT_SYSCALL_WRAP1(inotify_init1, int, flags);
|
|
||||||
COMPAT_SYSCALL_WRAP2(pipe2, int __user *, fildes, int, flags);
|
COMPAT_SYSCALL_WRAP2(pipe2, int __user *, fildes, int, flags);
|
||||||
COMPAT_SYSCALL_WRAP3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags);
|
|
||||||
COMPAT_SYSCALL_WRAP1(epoll_create1, int, flags);
|
|
||||||
COMPAT_SYSCALL_WRAP2(tkill, int, pid, int, sig);
|
|
||||||
COMPAT_SYSCALL_WRAP3(tgkill, int, tgid, int, pid, int, sig);
|
|
||||||
COMPAT_SYSCALL_WRAP5(perf_event_open, struct perf_event_attr __user *, attr_uptr, pid_t, pid, int, cpu, int, group_fd, unsigned long, flags);
|
COMPAT_SYSCALL_WRAP5(perf_event_open, struct perf_event_attr __user *, attr_uptr, pid_t, pid, int, cpu, int, group_fd, unsigned long, flags);
|
||||||
COMPAT_SYSCALL_WRAP5(clone, unsigned long, newsp, unsigned long, clone_flags, int __user *, parent_tidptr, int __user *, child_tidptr, unsigned long, tls);
|
COMPAT_SYSCALL_WRAP5(clone, unsigned long, newsp, unsigned long, clone_flags, int __user *, parent_tidptr, int __user *, child_tidptr, unsigned long, tls);
|
||||||
COMPAT_SYSCALL_WRAP2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags);
|
|
||||||
COMPAT_SYSCALL_WRAP4(prlimit64, pid_t, pid, unsigned int, resource, const struct rlimit64 __user *, new_rlim, struct rlimit64 __user *, old_rlim);
|
COMPAT_SYSCALL_WRAP4(prlimit64, pid_t, pid, unsigned int, resource, const struct rlimit64 __user *, new_rlim, struct rlimit64 __user *, old_rlim);
|
||||||
COMPAT_SYSCALL_WRAP5(name_to_handle_at, int, dfd, const char __user *, name, struct file_handle __user *, handle, int __user *, mnt_id, int, flag);
|
COMPAT_SYSCALL_WRAP5(name_to_handle_at, int, dfd, const char __user *, name, struct file_handle __user *, handle, int __user *, mnt_id, int, flag);
|
||||||
COMPAT_SYSCALL_WRAP1(syncfs, int, fd);
|
|
||||||
COMPAT_SYSCALL_WRAP2(setns, int, fd, int, nstype);
|
|
||||||
COMPAT_SYSCALL_WRAP2(s390_runtime_instr, int, command, int, signum);
|
|
||||||
COMPAT_SYSCALL_WRAP5(kcmp, pid_t, pid1, pid_t, pid2, int, type, unsigned long, idx1, unsigned long, idx2);
|
COMPAT_SYSCALL_WRAP5(kcmp, pid_t, pid1, pid_t, pid2, int, type, unsigned long, idx1, unsigned long, idx2);
|
||||||
COMPAT_SYSCALL_WRAP3(finit_module, int, fd, const char __user *, uargs, int, flags);
|
COMPAT_SYSCALL_WRAP3(finit_module, int, fd, const char __user *, uargs, int, flags);
|
||||||
COMPAT_SYSCALL_WRAP3(sched_setattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, flags);
|
COMPAT_SYSCALL_WRAP3(sched_setattr, pid_t, pid, struct sched_attr __user *, attr, unsigned int, flags);
|
||||||
@ -220,3 +169,10 @@ COMPAT_SYSCALL_WRAP2(memfd_create, const char __user *, uname, unsigned int, fla
|
|||||||
COMPAT_SYSCALL_WRAP3(bpf, int, cmd, union bpf_attr *, attr, unsigned int, size);
|
COMPAT_SYSCALL_WRAP3(bpf, int, cmd, union bpf_attr *, attr, unsigned int, size);
|
||||||
COMPAT_SYSCALL_WRAP3(s390_pci_mmio_write, const unsigned long, mmio_addr, const void __user *, user_buffer, const size_t, length);
|
COMPAT_SYSCALL_WRAP3(s390_pci_mmio_write, const unsigned long, mmio_addr, const void __user *, user_buffer, const size_t, length);
|
||||||
COMPAT_SYSCALL_WRAP3(s390_pci_mmio_read, const unsigned long, mmio_addr, void __user *, user_buffer, const size_t, length);
|
COMPAT_SYSCALL_WRAP3(s390_pci_mmio_read, const unsigned long, mmio_addr, void __user *, user_buffer, const size_t, length);
|
||||||
|
COMPAT_SYSCALL_WRAP4(socketpair, int, family, int, type, int, protocol, int __user *, usockvec);
|
||||||
|
COMPAT_SYSCALL_WRAP3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen);
|
||||||
|
COMPAT_SYSCALL_WRAP3(connect, int, fd, struct sockaddr __user *, uservaddr, int, addrlen);
|
||||||
|
COMPAT_SYSCALL_WRAP4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, int __user *, upeer_addrlen, int, flags);
|
||||||
|
COMPAT_SYSCALL_WRAP3(getsockname, int, fd, struct sockaddr __user *, usockaddr, int __user *, usockaddr_len);
|
||||||
|
COMPAT_SYSCALL_WRAP3(getpeername, int, fd, struct sockaddr __user *, usockaddr, int __user *, usockaddr_len);
|
||||||
|
COMPAT_SYSCALL_WRAP6(sendto, int, fd, void __user *, buff, size_t, len, unsigned int, flags, struct sockaddr __user *, addr, int, addr_len);
|
||||||
|
@ -1191,6 +1191,7 @@ cleanup_critical:
|
|||||||
clg %r9,BASED(.Lcleanup_save_fpu_fpc_end)
|
clg %r9,BASED(.Lcleanup_save_fpu_fpc_end)
|
||||||
jhe 1f
|
jhe 1f
|
||||||
lg %r2,__LC_CURRENT
|
lg %r2,__LC_CURRENT
|
||||||
|
aghi %r2,__TASK_thread
|
||||||
0: # Store floating-point controls
|
0: # Store floating-point controls
|
||||||
stfpc __THREAD_FPU_fpc(%r2)
|
stfpc __THREAD_FPU_fpc(%r2)
|
||||||
1: # Load register save area and check if VX is active
|
1: # Load register save area and check if VX is active
|
||||||
@ -1252,6 +1253,7 @@ cleanup_critical:
|
|||||||
clg %r9,BASED(.Lcleanup_load_fpu_regs_vx_ctl)
|
clg %r9,BASED(.Lcleanup_load_fpu_regs_vx_ctl)
|
||||||
jhe 6f
|
jhe 6f
|
||||||
lg %r4,__LC_CURRENT
|
lg %r4,__LC_CURRENT
|
||||||
|
aghi %r4,__TASK_thread
|
||||||
lfpc __THREAD_FPU_fpc(%r4)
|
lfpc __THREAD_FPU_fpc(%r4)
|
||||||
tm __THREAD_FPU_flags+3(%r4),FPU_USE_VX # VX-enabled task ?
|
tm __THREAD_FPU_flags+3(%r4),FPU_USE_VX # VX-enabled task ?
|
||||||
lg %r4,__THREAD_FPU_regs(%r4) # %r4 <- reg save area
|
lg %r4,__THREAD_FPU_regs(%r4) # %r4 <- reg save area
|
||||||
|
@ -157,10 +157,14 @@ static int validate_ctr_auth(const struct hw_perf_event *hwc)
|
|||||||
|
|
||||||
cpuhw = &get_cpu_var(cpu_hw_events);
|
cpuhw = &get_cpu_var(cpu_hw_events);
|
||||||
|
|
||||||
/* check authorization for cpu counter sets */
|
/* Check authorization for cpu counter sets.
|
||||||
|
* If the particular CPU counter set is not authorized,
|
||||||
|
* return with -ENOENT in order to fall back to other
|
||||||
|
* PMUs that might suffice the event request.
|
||||||
|
*/
|
||||||
ctrs_state = cpumf_state_ctl[hwc->config_base];
|
ctrs_state = cpumf_state_ctl[hwc->config_base];
|
||||||
if (!(ctrs_state & cpuhw->info.auth_ctl))
|
if (!(ctrs_state & cpuhw->info.auth_ctl))
|
||||||
err = -EPERM;
|
err = -ENOENT;
|
||||||
|
|
||||||
put_cpu_var(cpu_hw_events);
|
put_cpu_var(cpu_hw_events);
|
||||||
return err;
|
return err;
|
||||||
@ -536,7 +540,7 @@ static int cpumf_pmu_add(struct perf_event *event, int flags)
|
|||||||
*/
|
*/
|
||||||
if (!(cpuhw->flags & PERF_EVENT_TXN))
|
if (!(cpuhw->flags & PERF_EVENT_TXN))
|
||||||
if (validate_ctr_auth(&event->hw))
|
if (validate_ctr_auth(&event->hw))
|
||||||
return -EPERM;
|
return -ENOENT;
|
||||||
|
|
||||||
ctr_set_enable(&cpuhw->state, event->hw.config_base);
|
ctr_set_enable(&cpuhw->state, event->hw.config_base);
|
||||||
event->hw.state = PERF_HES_UPTODATE | PERF_HES_STOPPED;
|
event->hw.state = PERF_HES_UPTODATE | PERF_HES_STOPPED;
|
||||||
@ -611,7 +615,7 @@ static int cpumf_pmu_commit_txn(struct pmu *pmu)
|
|||||||
state = cpuhw->state & ~((1 << CPUMF_LCCTL_ENABLE_SHIFT) - 1);
|
state = cpuhw->state & ~((1 << CPUMF_LCCTL_ENABLE_SHIFT) - 1);
|
||||||
state >>= CPUMF_LCCTL_ENABLE_SHIFT;
|
state >>= CPUMF_LCCTL_ENABLE_SHIFT;
|
||||||
if ((state & cpuhw->info.auth_ctl) != state)
|
if ((state & cpuhw->info.auth_ctl) != state)
|
||||||
return -EPERM;
|
return -ENOENT;
|
||||||
|
|
||||||
cpuhw->flags &= ~PERF_EVENT_TXN;
|
cpuhw->flags &= ~PERF_EVENT_TXN;
|
||||||
perf_pmu_enable(pmu);
|
perf_pmu_enable(pmu);
|
||||||
|
@ -30,6 +30,9 @@ ENTRY(swsusp_arch_suspend)
|
|||||||
aghi %r15,-STACK_FRAME_OVERHEAD
|
aghi %r15,-STACK_FRAME_OVERHEAD
|
||||||
stg %r1,__SF_BACKCHAIN(%r15)
|
stg %r1,__SF_BACKCHAIN(%r15)
|
||||||
|
|
||||||
|
/* Store FPU registers */
|
||||||
|
brasl %r14,save_fpu_regs
|
||||||
|
|
||||||
/* Deactivate DAT */
|
/* Deactivate DAT */
|
||||||
stnsm __SF_EMPTY(%r15),0xfb
|
stnsm __SF_EMPTY(%r15),0xfb
|
||||||
|
|
||||||
@ -47,23 +50,6 @@ ENTRY(swsusp_arch_suspend)
|
|||||||
|
|
||||||
/* Store registers */
|
/* Store registers */
|
||||||
mvc 0x318(4,%r1),__SF_EMPTY(%r15) /* move prefix to lowcore */
|
mvc 0x318(4,%r1),__SF_EMPTY(%r15) /* move prefix to lowcore */
|
||||||
stfpc 0x31c(%r1) /* store fpu control */
|
|
||||||
std 0,0x200(%r1) /* store f0 */
|
|
||||||
std 1,0x208(%r1) /* store f1 */
|
|
||||||
std 2,0x210(%r1) /* store f2 */
|
|
||||||
std 3,0x218(%r1) /* store f3 */
|
|
||||||
std 4,0x220(%r1) /* store f4 */
|
|
||||||
std 5,0x228(%r1) /* store f5 */
|
|
||||||
std 6,0x230(%r1) /* store f6 */
|
|
||||||
std 7,0x238(%r1) /* store f7 */
|
|
||||||
std 8,0x240(%r1) /* store f8 */
|
|
||||||
std 9,0x248(%r1) /* store f9 */
|
|
||||||
std 10,0x250(%r1) /* store f10 */
|
|
||||||
std 11,0x258(%r1) /* store f11 */
|
|
||||||
std 12,0x260(%r1) /* store f12 */
|
|
||||||
std 13,0x268(%r1) /* store f13 */
|
|
||||||
std 14,0x270(%r1) /* store f14 */
|
|
||||||
std 15,0x278(%r1) /* store f15 */
|
|
||||||
stam %a0,%a15,0x340(%r1) /* store access registers */
|
stam %a0,%a15,0x340(%r1) /* store access registers */
|
||||||
stctg %c0,%c15,0x380(%r1) /* store control registers */
|
stctg %c0,%c15,0x380(%r1) /* store control registers */
|
||||||
stmg %r0,%r15,0x280(%r1) /* store general registers */
|
stmg %r0,%r15,0x280(%r1) /* store general registers */
|
||||||
@ -249,24 +235,6 @@ restore_registers:
|
|||||||
lctlg %c0,%c15,0x380(%r13) /* load control registers */
|
lctlg %c0,%c15,0x380(%r13) /* load control registers */
|
||||||
lam %a0,%a15,0x340(%r13) /* load access registers */
|
lam %a0,%a15,0x340(%r13) /* load access registers */
|
||||||
|
|
||||||
lfpc 0x31c(%r13) /* load fpu control */
|
|
||||||
ld 0,0x200(%r13) /* load f0 */
|
|
||||||
ld 1,0x208(%r13) /* load f1 */
|
|
||||||
ld 2,0x210(%r13) /* load f2 */
|
|
||||||
ld 3,0x218(%r13) /* load f3 */
|
|
||||||
ld 4,0x220(%r13) /* load f4 */
|
|
||||||
ld 5,0x228(%r13) /* load f5 */
|
|
||||||
ld 6,0x230(%r13) /* load f6 */
|
|
||||||
ld 7,0x238(%r13) /* load f7 */
|
|
||||||
ld 8,0x240(%r13) /* load f8 */
|
|
||||||
ld 9,0x248(%r13) /* load f9 */
|
|
||||||
ld 10,0x250(%r13) /* load f10 */
|
|
||||||
ld 11,0x258(%r13) /* load f11 */
|
|
||||||
ld 12,0x260(%r13) /* load f12 */
|
|
||||||
ld 13,0x268(%r13) /* load f13 */
|
|
||||||
ld 14,0x270(%r13) /* load f14 */
|
|
||||||
ld 15,0x278(%r13) /* load f15 */
|
|
||||||
|
|
||||||
/* Load old stack */
|
/* Load old stack */
|
||||||
lg %r15,0x2f8(%r13)
|
lg %r15,0x2f8(%r13)
|
||||||
|
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
#define NI_SYSCALL SYSCALL(sys_ni_syscall,sys_ni_syscall)
|
#define NI_SYSCALL SYSCALL(sys_ni_syscall,sys_ni_syscall)
|
||||||
|
|
||||||
NI_SYSCALL /* 0 */
|
NI_SYSCALL /* 0 */
|
||||||
SYSCALL(sys_exit,compat_sys_exit)
|
SYSCALL(sys_exit,sys_exit)
|
||||||
SYSCALL(sys_fork,sys_fork)
|
SYSCALL(sys_fork,sys_fork)
|
||||||
SYSCALL(sys_read,compat_sys_s390_read)
|
SYSCALL(sys_read,compat_sys_s390_read)
|
||||||
SYSCALL(sys_write,compat_sys_s390_write)
|
SYSCALL(sys_write,compat_sys_s390_write)
|
||||||
SYSCALL(sys_open,compat_sys_open) /* 5 */
|
SYSCALL(sys_open,compat_sys_open) /* 5 */
|
||||||
SYSCALL(sys_close,compat_sys_close)
|
SYSCALL(sys_close,sys_close)
|
||||||
SYSCALL(sys_restart_syscall,sys_restart_syscall)
|
SYSCALL(sys_restart_syscall,sys_restart_syscall)
|
||||||
SYSCALL(sys_creat,compat_sys_creat)
|
SYSCALL(sys_creat,compat_sys_creat)
|
||||||
SYSCALL(sys_link,compat_sys_link)
|
SYSCALL(sys_link,compat_sys_link)
|
||||||
@ -35,21 +35,21 @@ SYSCALL(sys_ni_syscall,compat_sys_s390_setuid16) /* old setuid16 syscall*/
|
|||||||
SYSCALL(sys_ni_syscall,compat_sys_s390_getuid16) /* old getuid16 syscall*/
|
SYSCALL(sys_ni_syscall,compat_sys_s390_getuid16) /* old getuid16 syscall*/
|
||||||
SYSCALL(sys_ni_syscall,compat_sys_stime) /* 25 old stime syscall */
|
SYSCALL(sys_ni_syscall,compat_sys_stime) /* 25 old stime syscall */
|
||||||
SYSCALL(sys_ptrace,compat_sys_ptrace)
|
SYSCALL(sys_ptrace,compat_sys_ptrace)
|
||||||
SYSCALL(sys_alarm,compat_sys_alarm)
|
SYSCALL(sys_alarm,sys_alarm)
|
||||||
NI_SYSCALL /* old fstat syscall */
|
NI_SYSCALL /* old fstat syscall */
|
||||||
SYSCALL(sys_pause,sys_pause)
|
SYSCALL(sys_pause,sys_pause)
|
||||||
SYSCALL(sys_utime,compat_sys_utime) /* 30 */
|
SYSCALL(sys_utime,compat_sys_utime) /* 30 */
|
||||||
NI_SYSCALL /* old stty syscall */
|
NI_SYSCALL /* old stty syscall */
|
||||||
NI_SYSCALL /* old gtty syscall */
|
NI_SYSCALL /* old gtty syscall */
|
||||||
SYSCALL(sys_access,compat_sys_access)
|
SYSCALL(sys_access,compat_sys_access)
|
||||||
SYSCALL(sys_nice,compat_sys_nice)
|
SYSCALL(sys_nice,sys_nice)
|
||||||
NI_SYSCALL /* 35 old ftime syscall */
|
NI_SYSCALL /* 35 old ftime syscall */
|
||||||
SYSCALL(sys_sync,sys_sync)
|
SYSCALL(sys_sync,sys_sync)
|
||||||
SYSCALL(sys_kill,compat_sys_kill)
|
SYSCALL(sys_kill,sys_kill)
|
||||||
SYSCALL(sys_rename,compat_sys_rename)
|
SYSCALL(sys_rename,compat_sys_rename)
|
||||||
SYSCALL(sys_mkdir,compat_sys_mkdir)
|
SYSCALL(sys_mkdir,compat_sys_mkdir)
|
||||||
SYSCALL(sys_rmdir,compat_sys_rmdir) /* 40 */
|
SYSCALL(sys_rmdir,compat_sys_rmdir) /* 40 */
|
||||||
SYSCALL(sys_dup,compat_sys_dup)
|
SYSCALL(sys_dup,sys_dup)
|
||||||
SYSCALL(sys_pipe,compat_sys_pipe)
|
SYSCALL(sys_pipe,compat_sys_pipe)
|
||||||
SYSCALL(sys_times,compat_sys_times)
|
SYSCALL(sys_times,compat_sys_times)
|
||||||
NI_SYSCALL /* old prof syscall */
|
NI_SYSCALL /* old prof syscall */
|
||||||
@ -65,13 +65,13 @@ NI_SYSCALL /* old lock syscall */
|
|||||||
SYSCALL(sys_ioctl,compat_sys_ioctl)
|
SYSCALL(sys_ioctl,compat_sys_ioctl)
|
||||||
SYSCALL(sys_fcntl,compat_sys_fcntl) /* 55 */
|
SYSCALL(sys_fcntl,compat_sys_fcntl) /* 55 */
|
||||||
NI_SYSCALL /* intel mpx syscall */
|
NI_SYSCALL /* intel mpx syscall */
|
||||||
SYSCALL(sys_setpgid,compat_sys_setpgid)
|
SYSCALL(sys_setpgid,sys_setpgid)
|
||||||
NI_SYSCALL /* old ulimit syscall */
|
NI_SYSCALL /* old ulimit syscall */
|
||||||
NI_SYSCALL /* old uname syscall */
|
NI_SYSCALL /* old uname syscall */
|
||||||
SYSCALL(sys_umask,compat_sys_umask) /* 60 */
|
SYSCALL(sys_umask,sys_umask) /* 60 */
|
||||||
SYSCALL(sys_chroot,compat_sys_chroot)
|
SYSCALL(sys_chroot,compat_sys_chroot)
|
||||||
SYSCALL(sys_ustat,compat_sys_ustat)
|
SYSCALL(sys_ustat,compat_sys_ustat)
|
||||||
SYSCALL(sys_dup2,compat_sys_dup2)
|
SYSCALL(sys_dup2,sys_dup2)
|
||||||
SYSCALL(sys_getppid,sys_getppid)
|
SYSCALL(sys_getppid,sys_getppid)
|
||||||
SYSCALL(sys_getpgrp,sys_getpgrp) /* 65 */
|
SYSCALL(sys_getpgrp,sys_getpgrp) /* 65 */
|
||||||
SYSCALL(sys_setsid,sys_setsid)
|
SYSCALL(sys_setsid,sys_setsid)
|
||||||
@ -102,10 +102,10 @@ SYSCALL(sys_old_mmap,compat_sys_s390_old_mmap) /* 90 */
|
|||||||
SYSCALL(sys_munmap,compat_sys_munmap)
|
SYSCALL(sys_munmap,compat_sys_munmap)
|
||||||
SYSCALL(sys_truncate,compat_sys_truncate)
|
SYSCALL(sys_truncate,compat_sys_truncate)
|
||||||
SYSCALL(sys_ftruncate,compat_sys_ftruncate)
|
SYSCALL(sys_ftruncate,compat_sys_ftruncate)
|
||||||
SYSCALL(sys_fchmod,compat_sys_fchmod)
|
SYSCALL(sys_fchmod,sys_fchmod)
|
||||||
SYSCALL(sys_ni_syscall,compat_sys_s390_fchown16) /* 95 old fchown16 syscall*/
|
SYSCALL(sys_ni_syscall,compat_sys_s390_fchown16) /* 95 old fchown16 syscall*/
|
||||||
SYSCALL(sys_getpriority,compat_sys_getpriority)
|
SYSCALL(sys_getpriority,sys_getpriority)
|
||||||
SYSCALL(sys_setpriority,compat_sys_setpriority)
|
SYSCALL(sys_setpriority,sys_setpriority)
|
||||||
NI_SYSCALL /* old profil syscall */
|
NI_SYSCALL /* old profil syscall */
|
||||||
SYSCALL(sys_statfs,compat_sys_statfs)
|
SYSCALL(sys_statfs,compat_sys_statfs)
|
||||||
SYSCALL(sys_fstatfs,compat_sys_fstatfs) /* 100 */
|
SYSCALL(sys_fstatfs,compat_sys_fstatfs) /* 100 */
|
||||||
@ -126,7 +126,7 @@ SYSCALL(sys_wait4,compat_sys_wait4)
|
|||||||
SYSCALL(sys_swapoff,compat_sys_swapoff) /* 115 */
|
SYSCALL(sys_swapoff,compat_sys_swapoff) /* 115 */
|
||||||
SYSCALL(sys_sysinfo,compat_sys_sysinfo)
|
SYSCALL(sys_sysinfo,compat_sys_sysinfo)
|
||||||
SYSCALL(sys_s390_ipc,compat_sys_s390_ipc)
|
SYSCALL(sys_s390_ipc,compat_sys_s390_ipc)
|
||||||
SYSCALL(sys_fsync,compat_sys_fsync)
|
SYSCALL(sys_fsync,sys_fsync)
|
||||||
SYSCALL(sys_sigreturn,compat_sys_sigreturn)
|
SYSCALL(sys_sigreturn,compat_sys_sigreturn)
|
||||||
SYSCALL(sys_clone,compat_sys_clone) /* 120 */
|
SYSCALL(sys_clone,compat_sys_clone) /* 120 */
|
||||||
SYSCALL(sys_setdomainname,compat_sys_setdomainname)
|
SYSCALL(sys_setdomainname,compat_sys_setdomainname)
|
||||||
@ -140,35 +140,35 @@ SYSCALL(sys_init_module,compat_sys_init_module)
|
|||||||
SYSCALL(sys_delete_module,compat_sys_delete_module)
|
SYSCALL(sys_delete_module,compat_sys_delete_module)
|
||||||
NI_SYSCALL /* 130: old get_kernel_syms */
|
NI_SYSCALL /* 130: old get_kernel_syms */
|
||||||
SYSCALL(sys_quotactl,compat_sys_quotactl)
|
SYSCALL(sys_quotactl,compat_sys_quotactl)
|
||||||
SYSCALL(sys_getpgid,compat_sys_getpgid)
|
SYSCALL(sys_getpgid,sys_getpgid)
|
||||||
SYSCALL(sys_fchdir,compat_sys_fchdir)
|
SYSCALL(sys_fchdir,sys_fchdir)
|
||||||
SYSCALL(sys_bdflush,compat_sys_bdflush)
|
SYSCALL(sys_bdflush,compat_sys_bdflush)
|
||||||
SYSCALL(sys_sysfs,compat_sys_sysfs) /* 135 */
|
SYSCALL(sys_sysfs,compat_sys_sysfs) /* 135 */
|
||||||
SYSCALL(sys_s390_personality,compat_sys_s390_personality)
|
SYSCALL(sys_s390_personality,sys_s390_personality)
|
||||||
NI_SYSCALL /* for afs_syscall */
|
NI_SYSCALL /* for afs_syscall */
|
||||||
SYSCALL(sys_ni_syscall,compat_sys_s390_setfsuid16) /* old setfsuid16 syscall */
|
SYSCALL(sys_ni_syscall,compat_sys_s390_setfsuid16) /* old setfsuid16 syscall */
|
||||||
SYSCALL(sys_ni_syscall,compat_sys_s390_setfsgid16) /* old setfsgid16 syscall */
|
SYSCALL(sys_ni_syscall,compat_sys_s390_setfsgid16) /* old setfsgid16 syscall */
|
||||||
SYSCALL(sys_llseek,compat_sys_llseek) /* 140 */
|
SYSCALL(sys_llseek,compat_sys_llseek) /* 140 */
|
||||||
SYSCALL(sys_getdents,compat_sys_getdents)
|
SYSCALL(sys_getdents,compat_sys_getdents)
|
||||||
SYSCALL(sys_select,compat_sys_select)
|
SYSCALL(sys_select,compat_sys_select)
|
||||||
SYSCALL(sys_flock,compat_sys_flock)
|
SYSCALL(sys_flock,sys_flock)
|
||||||
SYSCALL(sys_msync,compat_sys_msync)
|
SYSCALL(sys_msync,compat_sys_msync)
|
||||||
SYSCALL(sys_readv,compat_sys_readv) /* 145 */
|
SYSCALL(sys_readv,compat_sys_readv) /* 145 */
|
||||||
SYSCALL(sys_writev,compat_sys_writev)
|
SYSCALL(sys_writev,compat_sys_writev)
|
||||||
SYSCALL(sys_getsid,compat_sys_getsid)
|
SYSCALL(sys_getsid,sys_getsid)
|
||||||
SYSCALL(sys_fdatasync,compat_sys_fdatasync)
|
SYSCALL(sys_fdatasync,sys_fdatasync)
|
||||||
SYSCALL(sys_sysctl,compat_sys_sysctl)
|
SYSCALL(sys_sysctl,compat_sys_sysctl)
|
||||||
SYSCALL(sys_mlock,compat_sys_mlock) /* 150 */
|
SYSCALL(sys_mlock,compat_sys_mlock) /* 150 */
|
||||||
SYSCALL(sys_munlock,compat_sys_munlock)
|
SYSCALL(sys_munlock,compat_sys_munlock)
|
||||||
SYSCALL(sys_mlockall,compat_sys_mlockall)
|
SYSCALL(sys_mlockall,sys_mlockall)
|
||||||
SYSCALL(sys_munlockall,sys_munlockall)
|
SYSCALL(sys_munlockall,sys_munlockall)
|
||||||
SYSCALL(sys_sched_setparam,compat_sys_sched_setparam)
|
SYSCALL(sys_sched_setparam,compat_sys_sched_setparam)
|
||||||
SYSCALL(sys_sched_getparam,compat_sys_sched_getparam) /* 155 */
|
SYSCALL(sys_sched_getparam,compat_sys_sched_getparam) /* 155 */
|
||||||
SYSCALL(sys_sched_setscheduler,compat_sys_sched_setscheduler)
|
SYSCALL(sys_sched_setscheduler,compat_sys_sched_setscheduler)
|
||||||
SYSCALL(sys_sched_getscheduler,compat_sys_sched_getscheduler)
|
SYSCALL(sys_sched_getscheduler,sys_sched_getscheduler)
|
||||||
SYSCALL(sys_sched_yield,sys_sched_yield)
|
SYSCALL(sys_sched_yield,sys_sched_yield)
|
||||||
SYSCALL(sys_sched_get_priority_max,compat_sys_sched_get_priority_max)
|
SYSCALL(sys_sched_get_priority_max,sys_sched_get_priority_max)
|
||||||
SYSCALL(sys_sched_get_priority_min,compat_sys_sched_get_priority_min) /* 160 */
|
SYSCALL(sys_sched_get_priority_min,sys_sched_get_priority_min) /* 160 */
|
||||||
SYSCALL(sys_sched_rr_get_interval,compat_sys_sched_rr_get_interval)
|
SYSCALL(sys_sched_rr_get_interval,compat_sys_sched_rr_get_interval)
|
||||||
SYSCALL(sys_nanosleep,compat_sys_nanosleep)
|
SYSCALL(sys_nanosleep,compat_sys_nanosleep)
|
||||||
SYSCALL(sys_mremap,compat_sys_mremap)
|
SYSCALL(sys_mremap,compat_sys_mremap)
|
||||||
@ -211,20 +211,20 @@ SYSCALL(sys_getuid,sys_getuid)
|
|||||||
SYSCALL(sys_getgid,sys_getgid) /* 200 */
|
SYSCALL(sys_getgid,sys_getgid) /* 200 */
|
||||||
SYSCALL(sys_geteuid,sys_geteuid)
|
SYSCALL(sys_geteuid,sys_geteuid)
|
||||||
SYSCALL(sys_getegid,sys_getegid)
|
SYSCALL(sys_getegid,sys_getegid)
|
||||||
SYSCALL(sys_setreuid,compat_sys_setreuid)
|
SYSCALL(sys_setreuid,sys_setreuid)
|
||||||
SYSCALL(sys_setregid,compat_sys_setregid)
|
SYSCALL(sys_setregid,sys_setregid)
|
||||||
SYSCALL(sys_getgroups,compat_sys_getgroups) /* 205 */
|
SYSCALL(sys_getgroups,compat_sys_getgroups) /* 205 */
|
||||||
SYSCALL(sys_setgroups,compat_sys_setgroups)
|
SYSCALL(sys_setgroups,compat_sys_setgroups)
|
||||||
SYSCALL(sys_fchown,compat_sys_fchown)
|
SYSCALL(sys_fchown,sys_fchown)
|
||||||
SYSCALL(sys_setresuid,compat_sys_setresuid)
|
SYSCALL(sys_setresuid,sys_setresuid)
|
||||||
SYSCALL(sys_getresuid,compat_sys_getresuid)
|
SYSCALL(sys_getresuid,compat_sys_getresuid)
|
||||||
SYSCALL(sys_setresgid,compat_sys_setresgid) /* 210 */
|
SYSCALL(sys_setresgid,sys_setresgid) /* 210 */
|
||||||
SYSCALL(sys_getresgid,compat_sys_getresgid)
|
SYSCALL(sys_getresgid,compat_sys_getresgid)
|
||||||
SYSCALL(sys_chown,compat_sys_chown)
|
SYSCALL(sys_chown,compat_sys_chown)
|
||||||
SYSCALL(sys_setuid,compat_sys_setuid)
|
SYSCALL(sys_setuid,sys_setuid)
|
||||||
SYSCALL(sys_setgid,compat_sys_setgid)
|
SYSCALL(sys_setgid,sys_setgid)
|
||||||
SYSCALL(sys_setfsuid,compat_sys_setfsuid) /* 215 */
|
SYSCALL(sys_setfsuid,sys_setfsuid) /* 215 */
|
||||||
SYSCALL(sys_setfsgid,compat_sys_setfsgid)
|
SYSCALL(sys_setfsgid,sys_setfsgid)
|
||||||
SYSCALL(sys_pivot_root,compat_sys_pivot_root)
|
SYSCALL(sys_pivot_root,compat_sys_pivot_root)
|
||||||
SYSCALL(sys_mincore,compat_sys_mincore)
|
SYSCALL(sys_mincore,compat_sys_mincore)
|
||||||
SYSCALL(sys_madvise,compat_sys_madvise)
|
SYSCALL(sys_madvise,compat_sys_madvise)
|
||||||
@ -245,19 +245,19 @@ SYSCALL(sys_removexattr,compat_sys_removexattr)
|
|||||||
SYSCALL(sys_lremovexattr,compat_sys_lremovexattr)
|
SYSCALL(sys_lremovexattr,compat_sys_lremovexattr)
|
||||||
SYSCALL(sys_fremovexattr,compat_sys_fremovexattr) /* 235 */
|
SYSCALL(sys_fremovexattr,compat_sys_fremovexattr) /* 235 */
|
||||||
SYSCALL(sys_gettid,sys_gettid)
|
SYSCALL(sys_gettid,sys_gettid)
|
||||||
SYSCALL(sys_tkill,compat_sys_tkill)
|
SYSCALL(sys_tkill,sys_tkill)
|
||||||
SYSCALL(sys_futex,compat_sys_futex)
|
SYSCALL(sys_futex,compat_sys_futex)
|
||||||
SYSCALL(sys_sched_setaffinity,compat_sys_sched_setaffinity)
|
SYSCALL(sys_sched_setaffinity,compat_sys_sched_setaffinity)
|
||||||
SYSCALL(sys_sched_getaffinity,compat_sys_sched_getaffinity) /* 240 */
|
SYSCALL(sys_sched_getaffinity,compat_sys_sched_getaffinity) /* 240 */
|
||||||
SYSCALL(sys_tgkill,compat_sys_tgkill)
|
SYSCALL(sys_tgkill,sys_tgkill)
|
||||||
NI_SYSCALL /* reserved for TUX */
|
NI_SYSCALL /* reserved for TUX */
|
||||||
SYSCALL(sys_io_setup,compat_sys_io_setup)
|
SYSCALL(sys_io_setup,compat_sys_io_setup)
|
||||||
SYSCALL(sys_io_destroy,compat_sys_io_destroy)
|
SYSCALL(sys_io_destroy,compat_sys_io_destroy)
|
||||||
SYSCALL(sys_io_getevents,compat_sys_io_getevents) /* 245 */
|
SYSCALL(sys_io_getevents,compat_sys_io_getevents) /* 245 */
|
||||||
SYSCALL(sys_io_submit,compat_sys_io_submit)
|
SYSCALL(sys_io_submit,compat_sys_io_submit)
|
||||||
SYSCALL(sys_io_cancel,compat_sys_io_cancel)
|
SYSCALL(sys_io_cancel,compat_sys_io_cancel)
|
||||||
SYSCALL(sys_exit_group,compat_sys_exit_group)
|
SYSCALL(sys_exit_group,sys_exit_group)
|
||||||
SYSCALL(sys_epoll_create,compat_sys_epoll_create)
|
SYSCALL(sys_epoll_create,sys_epoll_create)
|
||||||
SYSCALL(sys_epoll_ctl,compat_sys_epoll_ctl) /* 250 */
|
SYSCALL(sys_epoll_ctl,compat_sys_epoll_ctl) /* 250 */
|
||||||
SYSCALL(sys_epoll_wait,compat_sys_epoll_wait)
|
SYSCALL(sys_epoll_wait,compat_sys_epoll_wait)
|
||||||
SYSCALL(sys_set_tid_address,compat_sys_set_tid_address)
|
SYSCALL(sys_set_tid_address,compat_sys_set_tid_address)
|
||||||
@ -265,8 +265,8 @@ SYSCALL(sys_fadvise64_64,compat_sys_s390_fadvise64)
|
|||||||
SYSCALL(sys_timer_create,compat_sys_timer_create)
|
SYSCALL(sys_timer_create,compat_sys_timer_create)
|
||||||
SYSCALL(sys_timer_settime,compat_sys_timer_settime) /* 255 */
|
SYSCALL(sys_timer_settime,compat_sys_timer_settime) /* 255 */
|
||||||
SYSCALL(sys_timer_gettime,compat_sys_timer_gettime)
|
SYSCALL(sys_timer_gettime,compat_sys_timer_gettime)
|
||||||
SYSCALL(sys_timer_getoverrun,compat_sys_timer_getoverrun)
|
SYSCALL(sys_timer_getoverrun,sys_timer_getoverrun)
|
||||||
SYSCALL(sys_timer_delete,compat_sys_timer_delete)
|
SYSCALL(sys_timer_delete,sys_timer_delete)
|
||||||
SYSCALL(sys_clock_settime,compat_sys_clock_settime)
|
SYSCALL(sys_clock_settime,compat_sys_clock_settime)
|
||||||
SYSCALL(sys_clock_gettime,compat_sys_clock_gettime) /* 260 */
|
SYSCALL(sys_clock_gettime,compat_sys_clock_gettime) /* 260 */
|
||||||
SYSCALL(sys_clock_getres,compat_sys_clock_getres)
|
SYSCALL(sys_clock_getres,compat_sys_clock_getres)
|
||||||
@ -290,11 +290,11 @@ SYSCALL(sys_add_key,compat_sys_add_key)
|
|||||||
SYSCALL(sys_request_key,compat_sys_request_key)
|
SYSCALL(sys_request_key,compat_sys_request_key)
|
||||||
SYSCALL(sys_keyctl,compat_sys_keyctl) /* 280 */
|
SYSCALL(sys_keyctl,compat_sys_keyctl) /* 280 */
|
||||||
SYSCALL(sys_waitid,compat_sys_waitid)
|
SYSCALL(sys_waitid,compat_sys_waitid)
|
||||||
SYSCALL(sys_ioprio_set,compat_sys_ioprio_set)
|
SYSCALL(sys_ioprio_set,sys_ioprio_set)
|
||||||
SYSCALL(sys_ioprio_get,compat_sys_ioprio_get)
|
SYSCALL(sys_ioprio_get,sys_ioprio_get)
|
||||||
SYSCALL(sys_inotify_init,sys_inotify_init)
|
SYSCALL(sys_inotify_init,sys_inotify_init)
|
||||||
SYSCALL(sys_inotify_add_watch,compat_sys_inotify_add_watch) /* 285 */
|
SYSCALL(sys_inotify_add_watch,compat_sys_inotify_add_watch) /* 285 */
|
||||||
SYSCALL(sys_inotify_rm_watch,compat_sys_inotify_rm_watch)
|
SYSCALL(sys_inotify_rm_watch,sys_inotify_rm_watch)
|
||||||
SYSCALL(sys_migrate_pages,compat_sys_migrate_pages)
|
SYSCALL(sys_migrate_pages,compat_sys_migrate_pages)
|
||||||
SYSCALL(sys_openat,compat_sys_openat)
|
SYSCALL(sys_openat,compat_sys_openat)
|
||||||
SYSCALL(sys_mkdirat,compat_sys_mkdirat)
|
SYSCALL(sys_mkdirat,compat_sys_mkdirat)
|
||||||
@ -326,31 +326,31 @@ SYSCALL(sys_fallocate,compat_sys_s390_fallocate)
|
|||||||
SYSCALL(sys_utimensat,compat_sys_utimensat) /* 315 */
|
SYSCALL(sys_utimensat,compat_sys_utimensat) /* 315 */
|
||||||
SYSCALL(sys_signalfd,compat_sys_signalfd)
|
SYSCALL(sys_signalfd,compat_sys_signalfd)
|
||||||
NI_SYSCALL /* 317 old sys_timer_fd */
|
NI_SYSCALL /* 317 old sys_timer_fd */
|
||||||
SYSCALL(sys_eventfd,compat_sys_eventfd)
|
SYSCALL(sys_eventfd,sys_eventfd)
|
||||||
SYSCALL(sys_timerfd_create,compat_sys_timerfd_create)
|
SYSCALL(sys_timerfd_create,sys_timerfd_create)
|
||||||
SYSCALL(sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */
|
SYSCALL(sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */
|
||||||
SYSCALL(sys_timerfd_gettime,compat_sys_timerfd_gettime)
|
SYSCALL(sys_timerfd_gettime,compat_sys_timerfd_gettime)
|
||||||
SYSCALL(sys_signalfd4,compat_sys_signalfd4)
|
SYSCALL(sys_signalfd4,compat_sys_signalfd4)
|
||||||
SYSCALL(sys_eventfd2,compat_sys_eventfd2)
|
SYSCALL(sys_eventfd2,sys_eventfd2)
|
||||||
SYSCALL(sys_inotify_init1,compat_sys_inotify_init1)
|
SYSCALL(sys_inotify_init1,sys_inotify_init1)
|
||||||
SYSCALL(sys_pipe2,compat_sys_pipe2) /* 325 */
|
SYSCALL(sys_pipe2,compat_sys_pipe2) /* 325 */
|
||||||
SYSCALL(sys_dup3,compat_sys_dup3)
|
SYSCALL(sys_dup3,sys_dup3)
|
||||||
SYSCALL(sys_epoll_create1,compat_sys_epoll_create1)
|
SYSCALL(sys_epoll_create1,sys_epoll_create1)
|
||||||
SYSCALL(sys_preadv,compat_sys_preadv)
|
SYSCALL(sys_preadv,compat_sys_preadv)
|
||||||
SYSCALL(sys_pwritev,compat_sys_pwritev)
|
SYSCALL(sys_pwritev,compat_sys_pwritev)
|
||||||
SYSCALL(sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */
|
SYSCALL(sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo) /* 330 */
|
||||||
SYSCALL(sys_perf_event_open,compat_sys_perf_event_open)
|
SYSCALL(sys_perf_event_open,compat_sys_perf_event_open)
|
||||||
SYSCALL(sys_fanotify_init,compat_sys_fanotify_init)
|
SYSCALL(sys_fanotify_init,sys_fanotify_init)
|
||||||
SYSCALL(sys_fanotify_mark,compat_sys_fanotify_mark)
|
SYSCALL(sys_fanotify_mark,compat_sys_fanotify_mark)
|
||||||
SYSCALL(sys_prlimit64,compat_sys_prlimit64)
|
SYSCALL(sys_prlimit64,compat_sys_prlimit64)
|
||||||
SYSCALL(sys_name_to_handle_at,compat_sys_name_to_handle_at) /* 335 */
|
SYSCALL(sys_name_to_handle_at,compat_sys_name_to_handle_at) /* 335 */
|
||||||
SYSCALL(sys_open_by_handle_at,compat_sys_open_by_handle_at)
|
SYSCALL(sys_open_by_handle_at,compat_sys_open_by_handle_at)
|
||||||
SYSCALL(sys_clock_adjtime,compat_sys_clock_adjtime)
|
SYSCALL(sys_clock_adjtime,compat_sys_clock_adjtime)
|
||||||
SYSCALL(sys_syncfs,compat_sys_syncfs)
|
SYSCALL(sys_syncfs,sys_syncfs)
|
||||||
SYSCALL(sys_setns,compat_sys_setns)
|
SYSCALL(sys_setns,sys_setns)
|
||||||
SYSCALL(sys_process_vm_readv,compat_sys_process_vm_readv) /* 340 */
|
SYSCALL(sys_process_vm_readv,compat_sys_process_vm_readv) /* 340 */
|
||||||
SYSCALL(sys_process_vm_writev,compat_sys_process_vm_writev)
|
SYSCALL(sys_process_vm_writev,compat_sys_process_vm_writev)
|
||||||
SYSCALL(sys_s390_runtime_instr,compat_sys_s390_runtime_instr)
|
SYSCALL(sys_s390_runtime_instr,sys_s390_runtime_instr)
|
||||||
SYSCALL(sys_kcmp,compat_sys_kcmp)
|
SYSCALL(sys_kcmp,compat_sys_kcmp)
|
||||||
SYSCALL(sys_finit_module,compat_sys_finit_module)
|
SYSCALL(sys_finit_module,compat_sys_finit_module)
|
||||||
SYSCALL(sys_sched_setattr,compat_sys_sched_setattr) /* 345 */
|
SYSCALL(sys_sched_setattr,compat_sys_sched_setattr) /* 345 */
|
||||||
@ -363,3 +363,22 @@ SYSCALL(sys_bpf,compat_sys_bpf)
|
|||||||
SYSCALL(sys_s390_pci_mmio_write,compat_sys_s390_pci_mmio_write)
|
SYSCALL(sys_s390_pci_mmio_write,compat_sys_s390_pci_mmio_write)
|
||||||
SYSCALL(sys_s390_pci_mmio_read,compat_sys_s390_pci_mmio_read)
|
SYSCALL(sys_s390_pci_mmio_read,compat_sys_s390_pci_mmio_read)
|
||||||
SYSCALL(sys_execveat,compat_sys_execveat)
|
SYSCALL(sys_execveat,compat_sys_execveat)
|
||||||
|
SYSCALL(sys_userfaultfd,sys_userfaultfd) /* 355 */
|
||||||
|
SYSCALL(sys_membarrier,sys_membarrier)
|
||||||
|
SYSCALL(sys_recvmmsg,compat_sys_recvmmsg)
|
||||||
|
SYSCALL(sys_sendmmsg,compat_sys_sendmmsg)
|
||||||
|
SYSCALL(sys_socket,sys_socket)
|
||||||
|
SYSCALL(sys_socketpair,compat_sys_socketpair) /* 360 */
|
||||||
|
SYSCALL(sys_bind,sys_bind)
|
||||||
|
SYSCALL(sys_connect,sys_connect)
|
||||||
|
SYSCALL(sys_listen,sys_listen)
|
||||||
|
SYSCALL(sys_accept4,sys_accept4)
|
||||||
|
SYSCALL(sys_getsockopt,compat_sys_getsockopt) /* 365 */
|
||||||
|
SYSCALL(sys_setsockopt,compat_sys_setsockopt)
|
||||||
|
SYSCALL(sys_getsockname,compat_sys_getsockname)
|
||||||
|
SYSCALL(sys_getpeername,compat_sys_getpeername)
|
||||||
|
SYSCALL(sys_sendto,compat_sys_sendto)
|
||||||
|
SYSCALL(sys_sendmsg,compat_sys_sendmsg) /* 370 */
|
||||||
|
SYSCALL(sys_recvfrom,compat_sys_recvfrom)
|
||||||
|
SYSCALL(sys_recvmsg,compat_sys_recvmsg)
|
||||||
|
SYSCALL(sys_shutdown,sys_shutdown)
|
||||||
|
@ -89,17 +89,21 @@ static int do_account_vtime(struct task_struct *tsk, int hardirq_offset)
|
|||||||
if (smp_cpu_mtid &&
|
if (smp_cpu_mtid &&
|
||||||
time_after64(jiffies_64, __this_cpu_read(mt_scaling_jiffies))) {
|
time_after64(jiffies_64, __this_cpu_read(mt_scaling_jiffies))) {
|
||||||
u64 cycles_new[32], *cycles_old;
|
u64 cycles_new[32], *cycles_old;
|
||||||
u64 delta, mult, div;
|
u64 delta, fac, mult, div;
|
||||||
|
|
||||||
cycles_old = this_cpu_ptr(mt_cycles);
|
cycles_old = this_cpu_ptr(mt_cycles);
|
||||||
if (stcctm5(smp_cpu_mtid + 1, cycles_new) < 2) {
|
if (stcctm5(smp_cpu_mtid + 1, cycles_new) < 2) {
|
||||||
|
fac = 1;
|
||||||
mult = div = 0;
|
mult = div = 0;
|
||||||
for (i = 0; i <= smp_cpu_mtid; i++) {
|
for (i = 0; i <= smp_cpu_mtid; i++) {
|
||||||
delta = cycles_new[i] - cycles_old[i];
|
delta = cycles_new[i] - cycles_old[i];
|
||||||
mult += delta;
|
div += delta;
|
||||||
div += (i + 1) * delta;
|
mult *= i + 1;
|
||||||
|
mult += delta * fac;
|
||||||
|
fac *= i + 1;
|
||||||
}
|
}
|
||||||
if (mult > 0) {
|
div *= fac;
|
||||||
|
if (div > 0) {
|
||||||
/* Update scaling factor */
|
/* Update scaling factor */
|
||||||
__this_cpu_write(mt_scaling_mult, mult);
|
__this_cpu_write(mt_scaling_mult, mult);
|
||||||
__this_cpu_write(mt_scaling_div, div);
|
__this_cpu_write(mt_scaling_div, div);
|
||||||
|
@ -1128,7 +1128,18 @@ END(error_exit)
|
|||||||
|
|
||||||
/* Runs on exception stack */
|
/* Runs on exception stack */
|
||||||
ENTRY(nmi)
|
ENTRY(nmi)
|
||||||
|
/*
|
||||||
|
* Fix up the exception frame if we're on Xen.
|
||||||
|
* PARAVIRT_ADJUST_EXCEPTION_FRAME is guaranteed to push at most
|
||||||
|
* one value to the stack on native, so it may clobber the rdx
|
||||||
|
* scratch slot, but it won't clobber any of the important
|
||||||
|
* slots past it.
|
||||||
|
*
|
||||||
|
* Xen is a different story, because the Xen frame itself overlaps
|
||||||
|
* the "NMI executing" variable.
|
||||||
|
*/
|
||||||
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
PARAVIRT_ADJUST_EXCEPTION_FRAME
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We allow breakpoints in NMIs. If a breakpoint occurs, then
|
* We allow breakpoints in NMIs. If a breakpoint occurs, then
|
||||||
* the iretq it performs will take us out of NMI context.
|
* the iretq it performs will take us out of NMI context.
|
||||||
@ -1179,9 +1190,12 @@ ENTRY(nmi)
|
|||||||
* we don't want to enable interrupts, because then we'll end
|
* we don't want to enable interrupts, because then we'll end
|
||||||
* up in an awkward situation in which IRQs are on but NMIs
|
* up in an awkward situation in which IRQs are on but NMIs
|
||||||
* are off.
|
* are off.
|
||||||
|
*
|
||||||
|
* We also must not push anything to the stack before switching
|
||||||
|
* stacks lest we corrupt the "NMI executing" variable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SWAPGS
|
SWAPGS_UNSAFE_STACK
|
||||||
cld
|
cld
|
||||||
movq %rsp, %rdx
|
movq %rsp, %rdx
|
||||||
movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp
|
movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp
|
||||||
|
@ -86,6 +86,16 @@ extern u64 asmlinkage efi_call(void *fp, ...);
|
|||||||
extern void __iomem *__init efi_ioremap(unsigned long addr, unsigned long size,
|
extern void __iomem *__init efi_ioremap(unsigned long addr, unsigned long size,
|
||||||
u32 type, u64 attribute);
|
u32 type, u64 attribute);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CONFIG_KASAN may redefine memset to __memset. __memset function is present
|
||||||
|
* only in kernel binary. Since the EFI stub linked into a separate binary it
|
||||||
|
* doesn't have __memset(). So we should use standard memset from
|
||||||
|
* arch/x86/boot/compressed/string.c. The same applies to memcpy and memmove.
|
||||||
|
*/
|
||||||
|
#undef memcpy
|
||||||
|
#undef memset
|
||||||
|
#undef memmove
|
||||||
|
|
||||||
#endif /* CONFIG_X86_32 */
|
#endif /* CONFIG_X86_32 */
|
||||||
|
|
||||||
extern struct efi_scratch efi_scratch;
|
extern struct efi_scratch efi_scratch;
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
|
|
||||||
#define KVM_PIO_PAGE_OFFSET 1
|
#define KVM_PIO_PAGE_OFFSET 1
|
||||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
|
#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
|
||||||
|
#define KVM_HALT_POLL_NS_DEFAULT 500000
|
||||||
|
|
||||||
#define KVM_IRQCHIP_NUM_PINS KVM_IOAPIC_NUM_PINS
|
#define KVM_IRQCHIP_NUM_PINS KVM_IOAPIC_NUM_PINS
|
||||||
|
|
||||||
|
@ -331,6 +331,7 @@
|
|||||||
/* C1E active bits in int pending message */
|
/* C1E active bits in int pending message */
|
||||||
#define K8_INTP_C1E_ACTIVE_MASK 0x18000000
|
#define K8_INTP_C1E_ACTIVE_MASK 0x18000000
|
||||||
#define MSR_K8_TSEG_ADDR 0xc0010112
|
#define MSR_K8_TSEG_ADDR 0xc0010112
|
||||||
|
#define MSR_K8_TSEG_MASK 0xc0010113
|
||||||
#define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */
|
#define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */
|
||||||
#define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */
|
#define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */
|
||||||
#define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818 /* Mask: RdMem|WrMem */
|
#define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818 /* Mask: RdMem|WrMem */
|
||||||
|
@ -41,10 +41,18 @@
|
|||||||
#include <asm/timer.h>
|
#include <asm/timer.h>
|
||||||
#include <asm/special_insns.h>
|
#include <asm/special_insns.h>
|
||||||
|
|
||||||
/* nop stub */
|
/*
|
||||||
void _paravirt_nop(void)
|
* nop stub, which must not clobber anything *including the stack* to
|
||||||
{
|
* avoid confusing the entry prologues.
|
||||||
}
|
*/
|
||||||
|
extern void _paravirt_nop(void);
|
||||||
|
asm (".pushsection .entry.text, \"ax\"\n"
|
||||||
|
".global _paravirt_nop\n"
|
||||||
|
"_paravirt_nop:\n\t"
|
||||||
|
"ret\n\t"
|
||||||
|
".size _paravirt_nop, . - _paravirt_nop\n\t"
|
||||||
|
".type _paravirt_nop, @function\n\t"
|
||||||
|
".popsection");
|
||||||
|
|
||||||
/* identity function, which can be inlined */
|
/* identity function, which can be inlined */
|
||||||
u32 _paravirt_ident_32(u32 x)
|
u32 _paravirt_ident_32(u32 x)
|
||||||
|
@ -3322,7 +3322,7 @@ walk_shadow_page_get_mmio_spte(struct kvm_vcpu *vcpu, u64 addr, u64 *sptep)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
reserved |= is_shadow_zero_bits_set(&vcpu->arch.mmu, spte,
|
reserved |= is_shadow_zero_bits_set(&vcpu->arch.mmu, spte,
|
||||||
leaf);
|
iterator.level);
|
||||||
}
|
}
|
||||||
|
|
||||||
walk_shadow_page_lockless_end(vcpu);
|
walk_shadow_page_lockless_end(vcpu);
|
||||||
@ -3614,7 +3614,7 @@ static void
|
|||||||
__reset_rsvds_bits_mask(struct kvm_vcpu *vcpu,
|
__reset_rsvds_bits_mask(struct kvm_vcpu *vcpu,
|
||||||
struct rsvd_bits_validate *rsvd_check,
|
struct rsvd_bits_validate *rsvd_check,
|
||||||
int maxphyaddr, int level, bool nx, bool gbpages,
|
int maxphyaddr, int level, bool nx, bool gbpages,
|
||||||
bool pse)
|
bool pse, bool amd)
|
||||||
{
|
{
|
||||||
u64 exb_bit_rsvd = 0;
|
u64 exb_bit_rsvd = 0;
|
||||||
u64 gbpages_bit_rsvd = 0;
|
u64 gbpages_bit_rsvd = 0;
|
||||||
@ -3631,7 +3631,7 @@ __reset_rsvds_bits_mask(struct kvm_vcpu *vcpu,
|
|||||||
* Non-leaf PML4Es and PDPEs reserve bit 8 (which would be the G bit for
|
* Non-leaf PML4Es and PDPEs reserve bit 8 (which would be the G bit for
|
||||||
* leaf entries) on AMD CPUs only.
|
* leaf entries) on AMD CPUs only.
|
||||||
*/
|
*/
|
||||||
if (guest_cpuid_is_amd(vcpu))
|
if (amd)
|
||||||
nonleaf_bit8_rsvd = rsvd_bits(8, 8);
|
nonleaf_bit8_rsvd = rsvd_bits(8, 8);
|
||||||
|
|
||||||
switch (level) {
|
switch (level) {
|
||||||
@ -3699,7 +3699,7 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu *vcpu,
|
|||||||
__reset_rsvds_bits_mask(vcpu, &context->guest_rsvd_check,
|
__reset_rsvds_bits_mask(vcpu, &context->guest_rsvd_check,
|
||||||
cpuid_maxphyaddr(vcpu), context->root_level,
|
cpuid_maxphyaddr(vcpu), context->root_level,
|
||||||
context->nx, guest_cpuid_has_gbpages(vcpu),
|
context->nx, guest_cpuid_has_gbpages(vcpu),
|
||||||
is_pse(vcpu));
|
is_pse(vcpu), guest_cpuid_is_amd(vcpu));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -3749,13 +3749,24 @@ static void reset_rsvds_bits_mask_ept(struct kvm_vcpu *vcpu,
|
|||||||
void
|
void
|
||||||
reset_shadow_zero_bits_mask(struct kvm_vcpu *vcpu, struct kvm_mmu *context)
|
reset_shadow_zero_bits_mask(struct kvm_vcpu *vcpu, struct kvm_mmu *context)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Passing "true" to the last argument is okay; it adds a check
|
||||||
|
* on bit 8 of the SPTEs which KVM doesn't use anyway.
|
||||||
|
*/
|
||||||
__reset_rsvds_bits_mask(vcpu, &context->shadow_zero_check,
|
__reset_rsvds_bits_mask(vcpu, &context->shadow_zero_check,
|
||||||
boot_cpu_data.x86_phys_bits,
|
boot_cpu_data.x86_phys_bits,
|
||||||
context->shadow_root_level, context->nx,
|
context->shadow_root_level, context->nx,
|
||||||
guest_cpuid_has_gbpages(vcpu), is_pse(vcpu));
|
guest_cpuid_has_gbpages(vcpu), is_pse(vcpu),
|
||||||
|
true);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(reset_shadow_zero_bits_mask);
|
EXPORT_SYMBOL_GPL(reset_shadow_zero_bits_mask);
|
||||||
|
|
||||||
|
static inline bool boot_cpu_is_amd(void)
|
||||||
|
{
|
||||||
|
WARN_ON_ONCE(!tdp_enabled);
|
||||||
|
return shadow_x_mask == 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* the direct page table on host, use as much mmu features as
|
* the direct page table on host, use as much mmu features as
|
||||||
* possible, however, kvm currently does not do execution-protection.
|
* possible, however, kvm currently does not do execution-protection.
|
||||||
@ -3764,11 +3775,11 @@ static void
|
|||||||
reset_tdp_shadow_zero_bits_mask(struct kvm_vcpu *vcpu,
|
reset_tdp_shadow_zero_bits_mask(struct kvm_vcpu *vcpu,
|
||||||
struct kvm_mmu *context)
|
struct kvm_mmu *context)
|
||||||
{
|
{
|
||||||
if (guest_cpuid_is_amd(vcpu))
|
if (boot_cpu_is_amd())
|
||||||
__reset_rsvds_bits_mask(vcpu, &context->shadow_zero_check,
|
__reset_rsvds_bits_mask(vcpu, &context->shadow_zero_check,
|
||||||
boot_cpu_data.x86_phys_bits,
|
boot_cpu_data.x86_phys_bits,
|
||||||
context->shadow_root_level, false,
|
context->shadow_root_level, false,
|
||||||
cpu_has_gbpages, true);
|
cpu_has_gbpages, true, true);
|
||||||
else
|
else
|
||||||
__reset_rsvds_bits_mask_ept(&context->shadow_zero_check,
|
__reset_rsvds_bits_mask_ept(&context->shadow_zero_check,
|
||||||
boot_cpu_data.x86_phys_bits,
|
boot_cpu_data.x86_phys_bits,
|
||||||
|
@ -202,6 +202,7 @@ module_param(npt, int, S_IRUGO);
|
|||||||
static int nested = true;
|
static int nested = true;
|
||||||
module_param(nested, int, S_IRUGO);
|
module_param(nested, int, S_IRUGO);
|
||||||
|
|
||||||
|
static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0);
|
||||||
static void svm_flush_tlb(struct kvm_vcpu *vcpu);
|
static void svm_flush_tlb(struct kvm_vcpu *vcpu);
|
||||||
static void svm_complete_interrupts(struct vcpu_svm *svm);
|
static void svm_complete_interrupts(struct vcpu_svm *svm);
|
||||||
|
|
||||||
@ -1263,7 +1264,8 @@ static void init_vmcb(struct vcpu_svm *svm, bool init_event)
|
|||||||
* svm_set_cr0() sets PG and WP and clears NW and CD on save->cr0.
|
* svm_set_cr0() sets PG and WP and clears NW and CD on save->cr0.
|
||||||
* It also updates the guest-visible cr0 value.
|
* It also updates the guest-visible cr0 value.
|
||||||
*/
|
*/
|
||||||
(void)kvm_set_cr0(&svm->vcpu, X86_CR0_NW | X86_CR0_CD | X86_CR0_ET);
|
svm_set_cr0(&svm->vcpu, X86_CR0_NW | X86_CR0_CD | X86_CR0_ET);
|
||||||
|
kvm_mmu_reset_context(&svm->vcpu);
|
||||||
|
|
||||||
save->cr4 = X86_CR4_PAE;
|
save->cr4 = X86_CR4_PAE;
|
||||||
/* rdx = ?? */
|
/* rdx = ?? */
|
||||||
|
@ -2190,6 +2190,8 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
|
|||||||
case MSR_IA32_LASTINTFROMIP:
|
case MSR_IA32_LASTINTFROMIP:
|
||||||
case MSR_IA32_LASTINTTOIP:
|
case MSR_IA32_LASTINTTOIP:
|
||||||
case MSR_K8_SYSCFG:
|
case MSR_K8_SYSCFG:
|
||||||
|
case MSR_K8_TSEG_ADDR:
|
||||||
|
case MSR_K8_TSEG_MASK:
|
||||||
case MSR_K7_HWCR:
|
case MSR_K7_HWCR:
|
||||||
case MSR_VM_HSAVE_PA:
|
case MSR_VM_HSAVE_PA:
|
||||||
case MSR_K8_INT_PENDING_MSG:
|
case MSR_K8_INT_PENDING_MSG:
|
||||||
|
@ -166,6 +166,7 @@ void pcibios_fixup_bus(struct pci_bus *b)
|
|||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
|
|
||||||
|
pci_read_bridge_bases(b);
|
||||||
list_for_each_entry(dev, &b->devices, bus_list)
|
list_for_each_entry(dev, &b->devices, bus_list)
|
||||||
pcibios_fixup_device_resources(dev);
|
pcibios_fixup_device_resources(dev);
|
||||||
}
|
}
|
||||||
|
@ -210,6 +210,10 @@ subsys_initcall(pcibios_init);
|
|||||||
|
|
||||||
void pcibios_fixup_bus(struct pci_bus *bus)
|
void pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
|
if (bus->parent) {
|
||||||
|
/* This is a subordinate bridge */
|
||||||
|
pci_read_bridge_bases(bus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pcibios_set_master(struct pci_dev *dev)
|
void pcibios_set_master(struct pci_dev *dev)
|
||||||
|
@ -1578,9 +1578,7 @@ he_stop(struct he_dev *he_dev)
|
|||||||
|
|
||||||
kfree(he_dev->rbpl_virt);
|
kfree(he_dev->rbpl_virt);
|
||||||
kfree(he_dev->rbpl_table);
|
kfree(he_dev->rbpl_table);
|
||||||
|
dma_pool_destroy(he_dev->rbpl_pool);
|
||||||
if (he_dev->rbpl_pool)
|
|
||||||
dma_pool_destroy(he_dev->rbpl_pool);
|
|
||||||
|
|
||||||
if (he_dev->rbrq_base)
|
if (he_dev->rbrq_base)
|
||||||
dma_free_coherent(&he_dev->pci_dev->dev, CONFIG_RBRQ_SIZE * sizeof(struct he_rbrq),
|
dma_free_coherent(&he_dev->pci_dev->dev, CONFIG_RBRQ_SIZE * sizeof(struct he_rbrq),
|
||||||
@ -1594,8 +1592,7 @@ he_stop(struct he_dev *he_dev)
|
|||||||
dma_free_coherent(&he_dev->pci_dev->dev, CONFIG_TBRQ_SIZE * sizeof(struct he_tbrq),
|
dma_free_coherent(&he_dev->pci_dev->dev, CONFIG_TBRQ_SIZE * sizeof(struct he_tbrq),
|
||||||
he_dev->tpdrq_base, he_dev->tpdrq_phys);
|
he_dev->tpdrq_base, he_dev->tpdrq_phys);
|
||||||
|
|
||||||
if (he_dev->tpd_pool)
|
dma_pool_destroy(he_dev->tpd_pool);
|
||||||
dma_pool_destroy(he_dev->tpd_pool);
|
|
||||||
|
|
||||||
if (he_dev->pci_dev) {
|
if (he_dev->pci_dev) {
|
||||||
pci_read_config_word(he_dev->pci_dev, PCI_COMMAND, &command);
|
pci_read_config_word(he_dev->pci_dev, PCI_COMMAND, &command);
|
||||||
|
@ -805,7 +805,12 @@ static void solos_bh(unsigned long card_arg)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
skb = alloc_skb(size + 1, GFP_ATOMIC);
|
/* Use netdev_alloc_skb() because it adds NET_SKB_PAD of
|
||||||
|
* headroom, and ensures we can route packets back out an
|
||||||
|
* Ethernet interface (for example) without having to
|
||||||
|
* reallocate. Adding NET_IP_ALIGN also ensures that both
|
||||||
|
* PPPoATM and PPPoEoBR2684 packets end up aligned. */
|
||||||
|
skb = netdev_alloc_skb_ip_align(NULL, size + 1);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
if (net_ratelimit())
|
if (net_ratelimit())
|
||||||
dev_warn(&card->dev->dev, "Failed to allocate sk_buff for RX\n");
|
dev_warn(&card->dev->dev, "Failed to allocate sk_buff for RX\n");
|
||||||
@ -869,7 +874,10 @@ static void solos_bh(unsigned long card_arg)
|
|||||||
/* Allocate RX skbs for any ports which need them */
|
/* Allocate RX skbs for any ports which need them */
|
||||||
if (card->using_dma && card->atmdev[port] &&
|
if (card->using_dma && card->atmdev[port] &&
|
||||||
!card->rx_skb[port]) {
|
!card->rx_skb[port]) {
|
||||||
struct sk_buff *skb = alloc_skb(RX_DMA_SIZE, GFP_ATOMIC);
|
/* Unlike the MMIO case (qv) we can't add NET_IP_ALIGN
|
||||||
|
* here; the FPGA can only DMA to addresses which are
|
||||||
|
* aligned to 4 bytes. */
|
||||||
|
struct sk_buff *skb = dev_alloc_skb(RX_DMA_SIZE);
|
||||||
if (skb) {
|
if (skb) {
|
||||||
SKB_CB(skb)->dma_addr =
|
SKB_CB(skb)->dma_addr =
|
||||||
dma_map_single(&card->dev->dev, skb->data,
|
dma_map_single(&card->dev->dev, skb->data,
|
||||||
|
@ -148,7 +148,11 @@ static void cache_shared_cpu_map_remove(unsigned int cpu)
|
|||||||
|
|
||||||
if (sibling == cpu) /* skip itself */
|
if (sibling == cpu) /* skip itself */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sib_cpu_ci = get_cpu_cacheinfo(sibling);
|
sib_cpu_ci = get_cpu_cacheinfo(sibling);
|
||||||
|
if (!sib_cpu_ci->info_list)
|
||||||
|
continue;
|
||||||
|
|
||||||
sib_leaf = sib_cpu_ci->info_list + index;
|
sib_leaf = sib_cpu_ci->info_list + index;
|
||||||
cpumask_clear_cpu(cpu, &sib_leaf->shared_cpu_map);
|
cpumask_clear_cpu(cpu, &sib_leaf->shared_cpu_map);
|
||||||
cpumask_clear_cpu(sibling, &this_leaf->shared_cpu_map);
|
cpumask_clear_cpu(sibling, &this_leaf->shared_cpu_map);
|
||||||
@ -159,6 +163,9 @@ static void cache_shared_cpu_map_remove(unsigned int cpu)
|
|||||||
|
|
||||||
static void free_cache_attributes(unsigned int cpu)
|
static void free_cache_attributes(unsigned int cpu)
|
||||||
{
|
{
|
||||||
|
if (!per_cpu_cacheinfo(cpu))
|
||||||
|
return;
|
||||||
|
|
||||||
cache_shared_cpu_map_remove(cpu);
|
cache_shared_cpu_map_remove(cpu);
|
||||||
|
|
||||||
kfree(per_cpu_cacheinfo(cpu));
|
kfree(per_cpu_cacheinfo(cpu));
|
||||||
@ -514,8 +521,7 @@ static int cacheinfo_cpu_callback(struct notifier_block *nfb,
|
|||||||
break;
|
break;
|
||||||
case CPU_DEAD:
|
case CPU_DEAD:
|
||||||
cache_remove_dev(cpu);
|
cache_remove_dev(cpu);
|
||||||
if (per_cpu_cacheinfo(cpu))
|
free_cache_attributes(cpu);
|
||||||
free_cache_attributes(cpu);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return notifier_from_errno(rc);
|
return notifier_from_errno(rc);
|
||||||
|
@ -344,11 +344,12 @@ static int xgene_rng_probe(struct platform_device *pdev)
|
|||||||
if (IS_ERR(ctx->csr_base))
|
if (IS_ERR(ctx->csr_base))
|
||||||
return PTR_ERR(ctx->csr_base);
|
return PTR_ERR(ctx->csr_base);
|
||||||
|
|
||||||
ctx->irq = platform_get_irq(pdev, 0);
|
rc = platform_get_irq(pdev, 0);
|
||||||
if (ctx->irq < 0) {
|
if (rc < 0) {
|
||||||
dev_err(&pdev->dev, "No IRQ resource\n");
|
dev_err(&pdev->dev, "No IRQ resource\n");
|
||||||
return ctx->irq;
|
return rc;
|
||||||
}
|
}
|
||||||
|
ctx->irq = rc;
|
||||||
|
|
||||||
dev_dbg(&pdev->dev, "APM X-Gene RNG BASE %p ALARM IRQ %d",
|
dev_dbg(&pdev->dev, "APM X-Gene RNG BASE %p ALARM IRQ %d",
|
||||||
ctx->csr_base, ctx->irq);
|
ctx->csr_base, ctx->irq);
|
||||||
|
@ -687,6 +687,33 @@ static inline u32 mv_cesa_get_int_mask(struct mv_cesa_engine *engine)
|
|||||||
|
|
||||||
int mv_cesa_queue_req(struct crypto_async_request *req);
|
int mv_cesa_queue_req(struct crypto_async_request *req);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper function that indicates whether a crypto request needs to be
|
||||||
|
* cleaned up or not after being enqueued using mv_cesa_queue_req().
|
||||||
|
*/
|
||||||
|
static inline int mv_cesa_req_needs_cleanup(struct crypto_async_request *req,
|
||||||
|
int ret)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* The queue still had some space, the request was queued
|
||||||
|
* normally, so there's no need to clean it up.
|
||||||
|
*/
|
||||||
|
if (ret == -EINPROGRESS)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The queue had not space left, but since the request is
|
||||||
|
* flagged with CRYPTO_TFM_REQ_MAY_BACKLOG, it was added to
|
||||||
|
* the backlog and will be processed later. There's no need to
|
||||||
|
* clean it up.
|
||||||
|
*/
|
||||||
|
if (ret == -EBUSY && req->flags & CRYPTO_TFM_REQ_MAY_BACKLOG)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
/* Request wasn't queued, we need to clean it up */
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* TDMA functions */
|
/* TDMA functions */
|
||||||
|
|
||||||
static inline void mv_cesa_req_dma_iter_init(struct mv_cesa_dma_iter *iter,
|
static inline void mv_cesa_req_dma_iter_init(struct mv_cesa_dma_iter *iter,
|
||||||
|
@ -189,7 +189,6 @@ static inline void mv_cesa_ablkcipher_prepare(struct crypto_async_request *req,
|
|||||||
{
|
{
|
||||||
struct ablkcipher_request *ablkreq = ablkcipher_request_cast(req);
|
struct ablkcipher_request *ablkreq = ablkcipher_request_cast(req);
|
||||||
struct mv_cesa_ablkcipher_req *creq = ablkcipher_request_ctx(ablkreq);
|
struct mv_cesa_ablkcipher_req *creq = ablkcipher_request_ctx(ablkreq);
|
||||||
|
|
||||||
creq->req.base.engine = engine;
|
creq->req.base.engine = engine;
|
||||||
|
|
||||||
if (creq->req.base.type == CESA_DMA_REQ)
|
if (creq->req.base.type == CESA_DMA_REQ)
|
||||||
@ -431,7 +430,7 @@ static int mv_cesa_des_op(struct ablkcipher_request *req,
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = mv_cesa_queue_req(&req->base);
|
ret = mv_cesa_queue_req(&req->base);
|
||||||
if (ret && ret != -EINPROGRESS)
|
if (mv_cesa_req_needs_cleanup(&req->base, ret))
|
||||||
mv_cesa_ablkcipher_cleanup(req);
|
mv_cesa_ablkcipher_cleanup(req);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -551,7 +550,7 @@ static int mv_cesa_des3_op(struct ablkcipher_request *req,
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = mv_cesa_queue_req(&req->base);
|
ret = mv_cesa_queue_req(&req->base);
|
||||||
if (ret && ret != -EINPROGRESS)
|
if (mv_cesa_req_needs_cleanup(&req->base, ret))
|
||||||
mv_cesa_ablkcipher_cleanup(req);
|
mv_cesa_ablkcipher_cleanup(req);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -693,7 +692,7 @@ static int mv_cesa_aes_op(struct ablkcipher_request *req,
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = mv_cesa_queue_req(&req->base);
|
ret = mv_cesa_queue_req(&req->base);
|
||||||
if (ret && ret != -EINPROGRESS)
|
if (mv_cesa_req_needs_cleanup(&req->base, ret))
|
||||||
mv_cesa_ablkcipher_cleanup(req);
|
mv_cesa_ablkcipher_cleanup(req);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -739,10 +739,8 @@ static int mv_cesa_ahash_update(struct ahash_request *req)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ret = mv_cesa_queue_req(&req->base);
|
ret = mv_cesa_queue_req(&req->base);
|
||||||
if (ret && ret != -EINPROGRESS) {
|
if (mv_cesa_req_needs_cleanup(&req->base, ret))
|
||||||
mv_cesa_ahash_cleanup(req);
|
mv_cesa_ahash_cleanup(req);
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -766,7 +764,7 @@ static int mv_cesa_ahash_final(struct ahash_request *req)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ret = mv_cesa_queue_req(&req->base);
|
ret = mv_cesa_queue_req(&req->base);
|
||||||
if (ret && ret != -EINPROGRESS)
|
if (mv_cesa_req_needs_cleanup(&req->base, ret))
|
||||||
mv_cesa_ahash_cleanup(req);
|
mv_cesa_ahash_cleanup(req);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -791,7 +789,7 @@ static int mv_cesa_ahash_finup(struct ahash_request *req)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ret = mv_cesa_queue_req(&req->base);
|
ret = mv_cesa_queue_req(&req->base);
|
||||||
if (ret && ret != -EINPROGRESS)
|
if (mv_cesa_req_needs_cleanup(&req->base, ret))
|
||||||
mv_cesa_ahash_cleanup(req);
|
mv_cesa_ahash_cleanup(req);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -88,6 +88,9 @@ static void adf_dev_restore(struct adf_accel_dev *accel_dev)
|
|||||||
struct pci_dev *parent = pdev->bus->self;
|
struct pci_dev *parent = pdev->bus->self;
|
||||||
uint16_t bridge_ctl = 0;
|
uint16_t bridge_ctl = 0;
|
||||||
|
|
||||||
|
if (accel_dev->is_vf)
|
||||||
|
return;
|
||||||
|
|
||||||
dev_info(&GET_DEV(accel_dev), "Resetting device qat_dev%d\n",
|
dev_info(&GET_DEV(accel_dev), "Resetting device qat_dev%d\n",
|
||||||
accel_dev->accel_id);
|
accel_dev->accel_id);
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ static int find_cable_index_by_name(struct extcon_dev *edev, const char *name)
|
|||||||
static bool is_extcon_changed(u32 prev, u32 new, int idx, bool *attached)
|
static bool is_extcon_changed(u32 prev, u32 new, int idx, bool *attached)
|
||||||
{
|
{
|
||||||
if (((prev >> idx) & 0x1) != ((new >> idx) & 0x1)) {
|
if (((prev >> idx) & 0x1) != ((new >> idx) & 0x1)) {
|
||||||
*attached = new ? true : false;
|
*attached = ((new >> idx) & 0x1) ? true : false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,6 +139,14 @@ config QCOM_SCM
|
|||||||
bool
|
bool
|
||||||
depends on ARM || ARM64
|
depends on ARM || ARM64
|
||||||
|
|
||||||
|
config QCOM_SCM_32
|
||||||
|
def_bool y
|
||||||
|
depends on QCOM_SCM && ARM
|
||||||
|
|
||||||
|
config QCOM_SCM_64
|
||||||
|
def_bool y
|
||||||
|
depends on QCOM_SCM && ARM64
|
||||||
|
|
||||||
source "drivers/firmware/broadcom/Kconfig"
|
source "drivers/firmware/broadcom/Kconfig"
|
||||||
source "drivers/firmware/google/Kconfig"
|
source "drivers/firmware/google/Kconfig"
|
||||||
source "drivers/firmware/efi/Kconfig"
|
source "drivers/firmware/efi/Kconfig"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user