Snap for 12247588 from f753f82882
to android12-5.10-keystone-qcom-release
Change-Id: I6a8f07891599661ff4e1cea69a223265490323f9 Signed-off-by: Coastguard Worker <android-build-coastguard-worker@google.com>
This commit is contained in:
commit
dc9419f69f
@ -66,6 +66,9 @@ Description:
|
|||||||
|
|
||||||
echo 0 > /sys/class/devfreq/.../trans_stat
|
echo 0 > /sys/class/devfreq/.../trans_stat
|
||||||
|
|
||||||
|
If the transition table is bigger than PAGE_SIZE, reading
|
||||||
|
this will return an -EFBIG error.
|
||||||
|
|
||||||
What: /sys/class/devfreq/.../userspace/set_freq
|
What: /sys/class/devfreq/.../userspace/set_freq
|
||||||
Date: September 2011
|
Date: September 2011
|
||||||
Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
|
Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
What: /sys/class/<iface>/queues/rx-<queue>/rps_cpus
|
What: /sys/class/net/<iface>/queues/rx-<queue>/rps_cpus
|
||||||
Date: March 2010
|
Date: March 2010
|
||||||
KernelVersion: 2.6.35
|
KernelVersion: 2.6.35
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -8,7 +8,7 @@ Description:
|
|||||||
network device queue. Possible values depend on the number
|
network device queue. Possible values depend on the number
|
||||||
of available CPU(s) in the system.
|
of available CPU(s) in the system.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/rx-<queue>/rps_flow_cnt
|
What: /sys/class/net/<iface>/queues/rx-<queue>/rps_flow_cnt
|
||||||
Date: April 2010
|
Date: April 2010
|
||||||
KernelVersion: 2.6.35
|
KernelVersion: 2.6.35
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -16,7 +16,7 @@ Description:
|
|||||||
Number of Receive Packet Steering flows being currently
|
Number of Receive Packet Steering flows being currently
|
||||||
processed by this particular network device receive queue.
|
processed by this particular network device receive queue.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/tx_timeout
|
What: /sys/class/net/<iface>/queues/tx-<queue>/tx_timeout
|
||||||
Date: November 2011
|
Date: November 2011
|
||||||
KernelVersion: 3.3
|
KernelVersion: 3.3
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -24,7 +24,7 @@ Description:
|
|||||||
Indicates the number of transmit timeout events seen by this
|
Indicates the number of transmit timeout events seen by this
|
||||||
network interface transmit queue.
|
network interface transmit queue.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/tx_maxrate
|
What: /sys/class/net/<iface>/queues/tx-<queue>/tx_maxrate
|
||||||
Date: March 2015
|
Date: March 2015
|
||||||
KernelVersion: 4.1
|
KernelVersion: 4.1
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -32,7 +32,7 @@ Description:
|
|||||||
A Mbps max-rate set for the queue, a value of zero means disabled,
|
A Mbps max-rate set for the queue, a value of zero means disabled,
|
||||||
default is disabled.
|
default is disabled.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/xps_cpus
|
What: /sys/class/net/<iface>/queues/tx-<queue>/xps_cpus
|
||||||
Date: November 2010
|
Date: November 2010
|
||||||
KernelVersion: 2.6.38
|
KernelVersion: 2.6.38
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -42,7 +42,7 @@ Description:
|
|||||||
network device transmit queue. Possible vaules depend on the
|
network device transmit queue. Possible vaules depend on the
|
||||||
number of available CPU(s) in the system.
|
number of available CPU(s) in the system.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/xps_rxqs
|
What: /sys/class/net/<iface>/queues/tx-<queue>/xps_rxqs
|
||||||
Date: June 2018
|
Date: June 2018
|
||||||
KernelVersion: 4.18.0
|
KernelVersion: 4.18.0
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -53,7 +53,7 @@ Description:
|
|||||||
number of available receive queue(s) in the network device.
|
number of available receive queue(s) in the network device.
|
||||||
Default is disabled.
|
Default is disabled.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/hold_time
|
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/hold_time
|
||||||
Date: November 2011
|
Date: November 2011
|
||||||
KernelVersion: 3.3
|
KernelVersion: 3.3
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -62,7 +62,7 @@ Description:
|
|||||||
of this particular network device transmit queue.
|
of this particular network device transmit queue.
|
||||||
Default value is 1000.
|
Default value is 1000.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/inflight
|
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/inflight
|
||||||
Date: November 2011
|
Date: November 2011
|
||||||
KernelVersion: 3.3
|
KernelVersion: 3.3
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -70,7 +70,7 @@ Description:
|
|||||||
Indicates the number of bytes (objects) in flight on this
|
Indicates the number of bytes (objects) in flight on this
|
||||||
network device transmit queue.
|
network device transmit queue.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit
|
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit
|
||||||
Date: November 2011
|
Date: November 2011
|
||||||
KernelVersion: 3.3
|
KernelVersion: 3.3
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -79,7 +79,7 @@ Description:
|
|||||||
on this network device transmit queue. This value is clamped
|
on this network device transmit queue. This value is clamped
|
||||||
to be within the bounds defined by limit_max and limit_min.
|
to be within the bounds defined by limit_max and limit_min.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit_max
|
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit_max
|
||||||
Date: November 2011
|
Date: November 2011
|
||||||
KernelVersion: 3.3
|
KernelVersion: 3.3
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -88,7 +88,7 @@ Description:
|
|||||||
queued on this network device transmit queue. See
|
queued on this network device transmit queue. See
|
||||||
include/linux/dynamic_queue_limits.h for the default value.
|
include/linux/dynamic_queue_limits.h for the default value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/queues/tx-<queue>/byte_queue_limits/limit_min
|
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/limit_min
|
||||||
Date: November 2011
|
Date: November 2011
|
||||||
KernelVersion: 3.3
|
KernelVersion: 3.3
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
What: /sys/class/<iface>/statistics/collisions
|
What: /sys/class/net/<iface>/statistics/collisions
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -6,7 +6,7 @@ Description:
|
|||||||
Indicates the number of collisions seen by this network device.
|
Indicates the number of collisions seen by this network device.
|
||||||
This value might not be relevant with all MAC layers.
|
This value might not be relevant with all MAC layers.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/multicast
|
What: /sys/class/net/<iface>/statistics/multicast
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -14,7 +14,7 @@ Description:
|
|||||||
Indicates the number of multicast packets received by this
|
Indicates the number of multicast packets received by this
|
||||||
network device.
|
network device.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_bytes
|
What: /sys/class/net/<iface>/statistics/rx_bytes
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -23,7 +23,7 @@ Description:
|
|||||||
See the network driver for the exact meaning of when this
|
See the network driver for the exact meaning of when this
|
||||||
value is incremented.
|
value is incremented.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_compressed
|
What: /sys/class/net/<iface>/statistics/rx_compressed
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -32,7 +32,7 @@ Description:
|
|||||||
network device. This value might only be relevant for interfaces
|
network device. This value might only be relevant for interfaces
|
||||||
that support packet compression (e.g: PPP).
|
that support packet compression (e.g: PPP).
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_crc_errors
|
What: /sys/class/net/<iface>/statistics/rx_crc_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -41,7 +41,7 @@ Description:
|
|||||||
by this network device. Note that the specific meaning might
|
by this network device. Note that the specific meaning might
|
||||||
depend on the MAC layer used by the interface.
|
depend on the MAC layer used by the interface.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_dropped
|
What: /sys/class/net/<iface>/statistics/rx_dropped
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -51,7 +51,7 @@ Description:
|
|||||||
packet processing. See the network driver for the exact
|
packet processing. See the network driver for the exact
|
||||||
meaning of this value.
|
meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_errors
|
What: /sys/class/net/<iface>/statistics/rx_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -59,7 +59,7 @@ Description:
|
|||||||
Indicates the number of receive errors on this network device.
|
Indicates the number of receive errors on this network device.
|
||||||
See the network driver for the exact meaning of this value.
|
See the network driver for the exact meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_fifo_errors
|
What: /sys/class/net/<iface>/statistics/rx_fifo_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -68,7 +68,7 @@ Description:
|
|||||||
network device. See the network driver for the exact
|
network device. See the network driver for the exact
|
||||||
meaning of this value.
|
meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_frame_errors
|
What: /sys/class/net/<iface>/statistics/rx_frame_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -78,7 +78,7 @@ Description:
|
|||||||
on the MAC layer protocol used. See the network driver for
|
on the MAC layer protocol used. See the network driver for
|
||||||
the exact meaning of this value.
|
the exact meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_length_errors
|
What: /sys/class/net/<iface>/statistics/rx_length_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -87,7 +87,7 @@ Description:
|
|||||||
error, oversized or undersized. See the network driver for the
|
error, oversized or undersized. See the network driver for the
|
||||||
exact meaning of this value.
|
exact meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_missed_errors
|
What: /sys/class/net/<iface>/statistics/rx_missed_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -96,7 +96,7 @@ Description:
|
|||||||
due to lack of capacity in the receive side. See the network
|
due to lack of capacity in the receive side. See the network
|
||||||
driver for the exact meaning of this value.
|
driver for the exact meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_nohandler
|
What: /sys/class/net/<iface>/statistics/rx_nohandler
|
||||||
Date: February 2016
|
Date: February 2016
|
||||||
KernelVersion: 4.6
|
KernelVersion: 4.6
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -104,7 +104,7 @@ Description:
|
|||||||
Indicates the number of received packets that were dropped on
|
Indicates the number of received packets that were dropped on
|
||||||
an inactive device by the network core.
|
an inactive device by the network core.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_over_errors
|
What: /sys/class/net/<iface>/statistics/rx_over_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -114,7 +114,7 @@ Description:
|
|||||||
(e.g: larger than MTU). See the network driver for the exact
|
(e.g: larger than MTU). See the network driver for the exact
|
||||||
meaning of this value.
|
meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/rx_packets
|
What: /sys/class/net/<iface>/statistics/rx_packets
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -122,7 +122,7 @@ Description:
|
|||||||
Indicates the total number of good packets received by this
|
Indicates the total number of good packets received by this
|
||||||
network device.
|
network device.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_aborted_errors
|
What: /sys/class/net/<iface>/statistics/tx_aborted_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -132,7 +132,7 @@ Description:
|
|||||||
a medium collision). See the network driver for the exact
|
a medium collision). See the network driver for the exact
|
||||||
meaning of this value.
|
meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_bytes
|
What: /sys/class/net/<iface>/statistics/tx_bytes
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -143,7 +143,7 @@ Description:
|
|||||||
transmitted packets or all packets that have been queued for
|
transmitted packets or all packets that have been queued for
|
||||||
transmission.
|
transmission.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_carrier_errors
|
What: /sys/class/net/<iface>/statistics/tx_carrier_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -152,7 +152,7 @@ Description:
|
|||||||
because of carrier errors (e.g: physical link down). See the
|
because of carrier errors (e.g: physical link down). See the
|
||||||
network driver for the exact meaning of this value.
|
network driver for the exact meaning of this value.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_compressed
|
What: /sys/class/net/<iface>/statistics/tx_compressed
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -161,7 +161,7 @@ Description:
|
|||||||
this might only be relevant for devices that support
|
this might only be relevant for devices that support
|
||||||
compression (e.g: PPP).
|
compression (e.g: PPP).
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_dropped
|
What: /sys/class/net/<iface>/statistics/tx_dropped
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -170,7 +170,7 @@ Description:
|
|||||||
See the driver for the exact reasons as to why the packets were
|
See the driver for the exact reasons as to why the packets were
|
||||||
dropped.
|
dropped.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_errors
|
What: /sys/class/net/<iface>/statistics/tx_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -179,7 +179,7 @@ Description:
|
|||||||
a network device. See the driver for the exact reasons as to
|
a network device. See the driver for the exact reasons as to
|
||||||
why the packets were dropped.
|
why the packets were dropped.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_fifo_errors
|
What: /sys/class/net/<iface>/statistics/tx_fifo_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -188,7 +188,7 @@ Description:
|
|||||||
FIFO error. See the driver for the exact reasons as to why the
|
FIFO error. See the driver for the exact reasons as to why the
|
||||||
packets were dropped.
|
packets were dropped.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_heartbeat_errors
|
What: /sys/class/net/<iface>/statistics/tx_heartbeat_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -197,7 +197,7 @@ Description:
|
|||||||
reported as heartbeat errors. See the driver for the exact
|
reported as heartbeat errors. See the driver for the exact
|
||||||
reasons as to why the packets were dropped.
|
reasons as to why the packets were dropped.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_packets
|
What: /sys/class/net/<iface>/statistics/tx_packets
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
@ -206,7 +206,7 @@ Description:
|
|||||||
device. See the driver for whether this reports the number of all
|
device. See the driver for whether this reports the number of all
|
||||||
attempted or successful transmissions.
|
attempted or successful transmissions.
|
||||||
|
|
||||||
What: /sys/class/<iface>/statistics/tx_window_errors
|
What: /sys/class/net/<iface>/statistics/tx_window_errors
|
||||||
Date: April 2005
|
Date: April 2005
|
||||||
KernelVersion: 2.6.12
|
KernelVersion: 2.6.12
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
|
@ -516,6 +516,7 @@ What: /sys/devices/system/cpu/vulnerabilities
|
|||||||
/sys/devices/system/cpu/vulnerabilities/mds
|
/sys/devices/system/cpu/vulnerabilities/mds
|
||||||
/sys/devices/system/cpu/vulnerabilities/meltdown
|
/sys/devices/system/cpu/vulnerabilities/meltdown
|
||||||
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
|
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling
|
||||||
/sys/devices/system/cpu/vulnerabilities/retbleed
|
/sys/devices/system/cpu/vulnerabilities/retbleed
|
||||||
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
|
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
|
||||||
/sys/devices/system/cpu/vulnerabilities/spectre_v1
|
/sys/devices/system/cpu/vulnerabilities/spectre_v1
|
||||||
|
@ -18,3 +18,4 @@ are configurable at compile, boot or run time.
|
|||||||
processor_mmio_stale_data.rst
|
processor_mmio_stale_data.rst
|
||||||
gather_data_sampling.rst
|
gather_data_sampling.rst
|
||||||
srso
|
srso
|
||||||
|
reg-file-data-sampling
|
||||||
|
104
Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst
Normal file
104
Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
==================================
|
||||||
|
Register File Data Sampling (RFDS)
|
||||||
|
==================================
|
||||||
|
|
||||||
|
Register File Data Sampling (RFDS) is a microarchitectural vulnerability that
|
||||||
|
only affects Intel Atom parts(also branded as E-cores). RFDS may allow
|
||||||
|
a malicious actor to infer data values previously used in floating point
|
||||||
|
registers, vector registers, or integer registers. RFDS does not provide the
|
||||||
|
ability to choose which data is inferred. CVE-2023-28746 is assigned to RFDS.
|
||||||
|
|
||||||
|
Affected Processors
|
||||||
|
===================
|
||||||
|
Below is the list of affected Intel processors [#f1]_:
|
||||||
|
|
||||||
|
=================== ============
|
||||||
|
Common name Family_Model
|
||||||
|
=================== ============
|
||||||
|
ATOM_GOLDMONT 06_5CH
|
||||||
|
ATOM_GOLDMONT_D 06_5FH
|
||||||
|
ATOM_GOLDMONT_PLUS 06_7AH
|
||||||
|
ATOM_TREMONT_D 06_86H
|
||||||
|
ATOM_TREMONT 06_96H
|
||||||
|
ALDERLAKE 06_97H
|
||||||
|
ALDERLAKE_L 06_9AH
|
||||||
|
ATOM_TREMONT_L 06_9CH
|
||||||
|
RAPTORLAKE 06_B7H
|
||||||
|
RAPTORLAKE_P 06_BAH
|
||||||
|
ALDERLAKE_N 06_BEH
|
||||||
|
RAPTORLAKE_S 06_BFH
|
||||||
|
=================== ============
|
||||||
|
|
||||||
|
As an exception to this table, Intel Xeon E family parts ALDERLAKE(06_97H) and
|
||||||
|
RAPTORLAKE(06_B7H) codenamed Catlow are not affected. They are reported as
|
||||||
|
vulnerable in Linux because they share the same family/model with an affected
|
||||||
|
part. Unlike their affected counterparts, they do not enumerate RFDS_CLEAR or
|
||||||
|
CPUID.HYBRID. This information could be used to distinguish between the
|
||||||
|
affected and unaffected parts, but it is deemed not worth adding complexity as
|
||||||
|
the reporting is fixed automatically when these parts enumerate RFDS_NO.
|
||||||
|
|
||||||
|
Mitigation
|
||||||
|
==========
|
||||||
|
Intel released a microcode update that enables software to clear sensitive
|
||||||
|
information using the VERW instruction. Like MDS, RFDS deploys the same
|
||||||
|
mitigation strategy to force the CPU to clear the affected buffers before an
|
||||||
|
attacker can extract the secrets. This is achieved by using the otherwise
|
||||||
|
unused and obsolete VERW instruction in combination with a microcode update.
|
||||||
|
The microcode clears the affected CPU buffers when the VERW instruction is
|
||||||
|
executed.
|
||||||
|
|
||||||
|
Mitigation points
|
||||||
|
-----------------
|
||||||
|
VERW is executed by the kernel before returning to user space, and by KVM
|
||||||
|
before VMentry. None of the affected cores support SMT, so VERW is not required
|
||||||
|
at C-state transitions.
|
||||||
|
|
||||||
|
New bits in IA32_ARCH_CAPABILITIES
|
||||||
|
----------------------------------
|
||||||
|
Newer processors and microcode update on existing affected processors added new
|
||||||
|
bits to IA32_ARCH_CAPABILITIES MSR. These bits can be used to enumerate
|
||||||
|
vulnerability and mitigation capability:
|
||||||
|
|
||||||
|
- Bit 27 - RFDS_NO - When set, processor is not affected by RFDS.
|
||||||
|
- Bit 28 - RFDS_CLEAR - When set, processor is affected by RFDS, and has the
|
||||||
|
microcode that clears the affected buffers on VERW execution.
|
||||||
|
|
||||||
|
Mitigation control on the kernel command line
|
||||||
|
---------------------------------------------
|
||||||
|
The kernel command line allows to control RFDS mitigation at boot time with the
|
||||||
|
parameter "reg_file_data_sampling=". The valid arguments are:
|
||||||
|
|
||||||
|
========== =================================================================
|
||||||
|
on If the CPU is vulnerable, enable mitigation; CPU buffer clearing
|
||||||
|
on exit to userspace and before entering a VM.
|
||||||
|
off Disables mitigation.
|
||||||
|
========== =================================================================
|
||||||
|
|
||||||
|
Mitigation default is selected by CONFIG_MITIGATION_RFDS.
|
||||||
|
|
||||||
|
Mitigation status information
|
||||||
|
-----------------------------
|
||||||
|
The Linux kernel provides a sysfs interface to enumerate the current
|
||||||
|
vulnerability status of the system: whether the system is vulnerable, and
|
||||||
|
which mitigations are active. The relevant sysfs file is:
|
||||||
|
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling
|
||||||
|
|
||||||
|
The possible values in this file are:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
|
||||||
|
* - 'Not affected'
|
||||||
|
- The processor is not vulnerable
|
||||||
|
* - 'Vulnerable'
|
||||||
|
- The processor is vulnerable, but no mitigation enabled
|
||||||
|
* - 'Vulnerable: No microcode'
|
||||||
|
- The processor is vulnerable but microcode is not updated.
|
||||||
|
* - 'Mitigation: Clear Register File'
|
||||||
|
- The processor is vulnerable and the CPU buffer clearing mitigation is
|
||||||
|
enabled.
|
||||||
|
|
||||||
|
References
|
||||||
|
----------
|
||||||
|
.. [#f1] Affected Processors
|
||||||
|
https://www.intel.com/content/www/us/en/developer/topic-technology/software-security-guidance/processors-affected-consolidated-product-cpu-model.html
|
@ -484,11 +484,14 @@ Spectre variant 2
|
|||||||
|
|
||||||
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
|
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
|
||||||
boot, by setting the IBRS bit, and they're automatically protected against
|
boot, by setting the IBRS bit, and they're automatically protected against
|
||||||
Spectre v2 variant attacks, including cross-thread branch target injections
|
Spectre v2 variant attacks.
|
||||||
on SMT systems (STIBP). In other words, eIBRS enables STIBP too.
|
|
||||||
|
|
||||||
Legacy IBRS systems clear the IBRS bit on exit to userspace and
|
On Intel's enhanced IBRS systems, this includes cross-thread branch target
|
||||||
therefore explicitly enable STIBP for that
|
injections on SMT systems (STIBP). In other words, Intel eIBRS enables
|
||||||
|
STIBP, too.
|
||||||
|
|
||||||
|
AMD Automatic IBRS does not protect userspace, and Legacy IBRS systems clear
|
||||||
|
the IBRS bit on exit to userspace, therefore both explicitly enable STIBP.
|
||||||
|
|
||||||
The retpoline mitigation is turned on by default on vulnerable
|
The retpoline mitigation is turned on by default on vulnerable
|
||||||
CPUs. It can be forced on or off by the administrator
|
CPUs. It can be forced on or off by the administrator
|
||||||
@ -622,9 +625,10 @@ kernel command line.
|
|||||||
retpoline,generic Retpolines
|
retpoline,generic Retpolines
|
||||||
retpoline,lfence LFENCE; indirect branch
|
retpoline,lfence LFENCE; indirect branch
|
||||||
retpoline,amd alias for retpoline,lfence
|
retpoline,amd alias for retpoline,lfence
|
||||||
eibrs enhanced IBRS
|
eibrs Enhanced/Auto IBRS
|
||||||
eibrs,retpoline enhanced IBRS + Retpolines
|
eibrs,retpoline Enhanced/Auto IBRS + Retpolines
|
||||||
eibrs,lfence enhanced IBRS + LFENCE
|
eibrs,lfence Enhanced/Auto IBRS + LFENCE
|
||||||
|
ibrs use IBRS to protect kernel
|
||||||
|
|
||||||
Not specifying this option is equivalent to
|
Not specifying this option is equivalent to
|
||||||
spectre_v2=auto.
|
spectre_v2=auto.
|
||||||
|
@ -1025,6 +1025,26 @@
|
|||||||
The filter can be disabled or changed to another
|
The filter can be disabled or changed to another
|
||||||
driver later using sysfs.
|
driver later using sysfs.
|
||||||
|
|
||||||
|
reg_file_data_sampling=
|
||||||
|
[X86] Controls mitigation for Register File Data
|
||||||
|
Sampling (RFDS) vulnerability. RFDS is a CPU
|
||||||
|
vulnerability which may allow userspace to infer
|
||||||
|
kernel data values previously stored in floating point
|
||||||
|
registers, vector registers, or integer registers.
|
||||||
|
RFDS only affects Intel Atom processors.
|
||||||
|
|
||||||
|
on: Turns ON the mitigation.
|
||||||
|
off: Turns OFF the mitigation.
|
||||||
|
|
||||||
|
This parameter overrides the compile time default set
|
||||||
|
by CONFIG_MITIGATION_RFDS. Mitigation cannot be
|
||||||
|
disabled when other VERW based mitigations (like MDS)
|
||||||
|
are enabled. In order to disable RFDS mitigation all
|
||||||
|
VERW based mitigations need to be disabled.
|
||||||
|
|
||||||
|
For details see:
|
||||||
|
Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst
|
||||||
|
|
||||||
driver_async_probe= [KNL]
|
driver_async_probe= [KNL]
|
||||||
List of driver names to be probed asynchronously.
|
List of driver names to be probed asynchronously.
|
||||||
Format: <driver_name1>,<driver_name2>...
|
Format: <driver_name1>,<driver_name2>...
|
||||||
@ -2981,6 +3001,7 @@
|
|||||||
nopti [X86,PPC]
|
nopti [X86,PPC]
|
||||||
nospectre_v1 [X86,PPC]
|
nospectre_v1 [X86,PPC]
|
||||||
nospectre_v2 [X86,PPC,S390,ARM64]
|
nospectre_v2 [X86,PPC,S390,ARM64]
|
||||||
|
reg_file_data_sampling=off [X86]
|
||||||
retbleed=off [X86]
|
retbleed=off [X86]
|
||||||
spec_store_bypass_disable=off [X86,PPC]
|
spec_store_bypass_disable=off [X86,PPC]
|
||||||
spectre_v2_user=off [X86]
|
spectre_v2_user=off [X86]
|
||||||
@ -5193,9 +5214,9 @@
|
|||||||
retpoline,generic - Retpolines
|
retpoline,generic - Retpolines
|
||||||
retpoline,lfence - LFENCE; indirect branch
|
retpoline,lfence - LFENCE; indirect branch
|
||||||
retpoline,amd - alias for retpoline,lfence
|
retpoline,amd - alias for retpoline,lfence
|
||||||
eibrs - enhanced IBRS
|
eibrs - Enhanced/Auto IBRS
|
||||||
eibrs,retpoline - enhanced IBRS + Retpolines
|
eibrs,retpoline - Enhanced/Auto IBRS + Retpolines
|
||||||
eibrs,lfence - enhanced IBRS + LFENCE
|
eibrs,lfence - Enhanced/Auto IBRS + LFENCE
|
||||||
ibrs - use IBRS to protect kernel
|
ibrs - use IBRS to protect kernel
|
||||||
|
|
||||||
Not specifying this option is equivalent to
|
Not specifying this option is equivalent to
|
||||||
|
@ -22,13 +22,16 @@ exclusive.
|
|||||||
3) object removal. Locking rules: caller locks parent, finds victim,
|
3) object removal. Locking rules: caller locks parent, finds victim,
|
||||||
locks victim and calls the method. Locks are exclusive.
|
locks victim and calls the method. Locks are exclusive.
|
||||||
|
|
||||||
4) rename() that is _not_ cross-directory. Locking rules: caller locks the
|
4) rename() that is _not_ cross-directory. Locking rules: caller locks
|
||||||
parent and finds source and target. We lock both (provided they exist). If we
|
the parent and finds source and target. Then we decide which of the
|
||||||
need to lock two inodes of different type (dir vs non-dir), we lock directory
|
source and target need to be locked. Source needs to be locked if it's a
|
||||||
first. If we need to lock two inodes of the same type, lock them in inode
|
non-directory; target - if it's a non-directory or about to be removed.
|
||||||
pointer order. Then call the method. All locks are exclusive.
|
Take the locks that need to be taken, in inode pointer order if need
|
||||||
NB: we might get away with locking the source (and target in exchange
|
to take both (that can happen only when both source and target are
|
||||||
case) shared.
|
non-directories - the source because it wouldn't be locked otherwise
|
||||||
|
and the target because mixing directory and non-directory is allowed
|
||||||
|
only with RENAME_EXCHANGE, and that won't be removing the target).
|
||||||
|
After the locks had been taken, call the method. All locks are exclusive.
|
||||||
|
|
||||||
5) link creation. Locking rules:
|
5) link creation. Locking rules:
|
||||||
|
|
||||||
@ -44,20 +47,17 @@ rules:
|
|||||||
|
|
||||||
* lock the filesystem
|
* lock the filesystem
|
||||||
* lock parents in "ancestors first" order. If one is not ancestor of
|
* lock parents in "ancestors first" order. If one is not ancestor of
|
||||||
the other, lock them in inode pointer order.
|
the other, lock the parent of source first.
|
||||||
* find source and target.
|
* find source and target.
|
||||||
* if old parent is equal to or is a descendent of target
|
* if old parent is equal to or is a descendent of target
|
||||||
fail with -ENOTEMPTY
|
fail with -ENOTEMPTY
|
||||||
* if new parent is equal to or is a descendent of source
|
* if new parent is equal to or is a descendent of source
|
||||||
fail with -ELOOP
|
fail with -ELOOP
|
||||||
* Lock both the source and the target provided they exist. If we
|
* Lock subdirectories involved (source before target).
|
||||||
need to lock two inodes of different type (dir vs non-dir), we lock
|
* Lock non-directories involved, in inode pointer order.
|
||||||
the directory first. If we need to lock two inodes of the same type,
|
|
||||||
lock them in inode pointer order.
|
|
||||||
* call the method.
|
* call the method.
|
||||||
|
|
||||||
All ->i_rwsem are taken exclusive. Again, we might get away with locking
|
All ->i_rwsem are taken exclusive.
|
||||||
the source (and target in exchange case) shared.
|
|
||||||
|
|
||||||
The rules above obviously guarantee that all directories that are going to be
|
The rules above obviously guarantee that all directories that are going to be
|
||||||
read, modified or removed by method will be locked by caller.
|
read, modified or removed by method will be locked by caller.
|
||||||
@ -67,6 +67,7 @@ If no directory is its own ancestor, the scheme above is deadlock-free.
|
|||||||
|
|
||||||
Proof:
|
Proof:
|
||||||
|
|
||||||
|
[XXX: will be updated once we are done massaging the lock_rename()]
|
||||||
First of all, at any moment we have a linear ordering of the
|
First of all, at any moment we have a linear ordering of the
|
||||||
objects - A < B iff (A is an ancestor of B) or (B is not an ancestor
|
objects - A < B iff (A is an ancestor of B) or (B is not an ancestor
|
||||||
of A and ptr(A) < ptr(B)).
|
of A and ptr(A) < ptr(B)).
|
||||||
|
@ -95,7 +95,7 @@ symlink: exclusive
|
|||||||
mkdir: exclusive
|
mkdir: exclusive
|
||||||
unlink: exclusive (both)
|
unlink: exclusive (both)
|
||||||
rmdir: exclusive (both)(see below)
|
rmdir: exclusive (both)(see below)
|
||||||
rename: exclusive (all) (see below)
|
rename: exclusive (both parents, some children) (see below)
|
||||||
readlink: no
|
readlink: no
|
||||||
get_link: no
|
get_link: no
|
||||||
setattr: exclusive
|
setattr: exclusive
|
||||||
@ -113,6 +113,9 @@ tmpfile: no
|
|||||||
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem
|
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem
|
||||||
exclusive on victim.
|
exclusive on victim.
|
||||||
cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
|
cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
|
||||||
|
->unlink() and ->rename() have ->i_rwsem exclusive on all non-directories
|
||||||
|
involved.
|
||||||
|
->rename() has ->i_rwsem exclusive on any subdirectory that changes parent.
|
||||||
|
|
||||||
See Documentation/filesystems/directory-locking.rst for more detailed discussion
|
See Documentation/filesystems/directory-locking.rst for more detailed discussion
|
||||||
of the locking scheme for directory operations.
|
of the locking scheme for directory operations.
|
||||||
|
@ -865,3 +865,21 @@ no matter what. Everything is handled by the caller.
|
|||||||
|
|
||||||
clone_private_mount() returns a longterm mount now, so the proper destructor of
|
clone_private_mount() returns a longterm mount now, so the proper destructor of
|
||||||
its result is kern_unmount() or kern_unmount_array().
|
its result is kern_unmount() or kern_unmount_array().
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**mandatory**
|
||||||
|
|
||||||
|
If ->rename() update of .. on cross-directory move needs an exclusion with
|
||||||
|
directory modifications, do *not* lock the subdirectory in question in your
|
||||||
|
->rename() - it's done by the caller now [that item should've been added in
|
||||||
|
28eceeda130f "fs: Lock moved directories"].
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**mandatory**
|
||||||
|
|
||||||
|
On same-directory ->rename() the (tautological) update of .. is not protected
|
||||||
|
by any locks; just don't do it if the old parent is the same as the new one.
|
||||||
|
We really can't lock two subdirectories in same-directory rename - not without
|
||||||
|
deadlocks.
|
||||||
|
@ -234,7 +234,7 @@ corresponding soft power control. In this case it is necessary to create
|
|||||||
a virtual widget - a widget with no control bits e.g.
|
a virtual widget - a widget with no control bits e.g.
|
||||||
::
|
::
|
||||||
|
|
||||||
SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_DAPM_NOPM, 0, 0, NULL, 0),
|
SND_SOC_DAPM_MIXER("AC97 Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
|
||||||
|
|
||||||
This can be used to merge to signal paths together in software.
|
This can be used to merge to signal paths together in software.
|
||||||
|
|
||||||
|
@ -94,7 +94,6 @@ class KernelInclude(Include):
|
|||||||
# HINT: this is the only line I had to change / commented out:
|
# HINT: this is the only line I had to change / commented out:
|
||||||
#path = utils.relative_path(None, path)
|
#path = utils.relative_path(None, path)
|
||||||
|
|
||||||
path = nodes.reprunicode(path)
|
|
||||||
encoding = self.options.get(
|
encoding = self.options.get(
|
||||||
'encoding', self.state.document.settings.input_encoding)
|
'encoding', self.state.document.settings.input_encoding)
|
||||||
e_handler=self.state.document.settings.input_encoding_error_handler
|
e_handler=self.state.document.settings.input_encoding_error_handler
|
||||||
|
@ -449,6 +449,8 @@ The NCM function provides these attributes in its function directory:
|
|||||||
Ethernet over USB link
|
Ethernet over USB link
|
||||||
dev_addr MAC address of device's end of this
|
dev_addr MAC address of device's end of this
|
||||||
Ethernet over USB link
|
Ethernet over USB link
|
||||||
|
max_segment_size Segment size required for P2P connections. This
|
||||||
|
will set MTU to (max_segment_size - 14 bytes)
|
||||||
=============== ==================================================
|
=============== ==================================================
|
||||||
|
|
||||||
and after creating the functions/ncm.<instance name> they contain default
|
and after creating the functions/ncm.<instance name> they contain default
|
||||||
|
@ -95,6 +95,9 @@ The kernel provides a function to invoke the buffer clearing:
|
|||||||
|
|
||||||
mds_clear_cpu_buffers()
|
mds_clear_cpu_buffers()
|
||||||
|
|
||||||
|
Also macro CLEAR_CPU_BUFFERS can be used in ASM late in exit-to-user path.
|
||||||
|
Other than CFLAGS.ZF, this macro doesn't clobber any registers.
|
||||||
|
|
||||||
The mitigation is invoked on kernel/userspace, hypervisor/guest and C-state
|
The mitigation is invoked on kernel/userspace, hypervisor/guest and C-state
|
||||||
(idle) transitions.
|
(idle) transitions.
|
||||||
|
|
||||||
@ -138,17 +141,30 @@ Mitigation points
|
|||||||
|
|
||||||
When transitioning from kernel to user space the CPU buffers are flushed
|
When transitioning from kernel to user space the CPU buffers are flushed
|
||||||
on affected CPUs when the mitigation is not disabled on the kernel
|
on affected CPUs when the mitigation is not disabled on the kernel
|
||||||
command line. The migitation is enabled through the static key
|
command line. The mitigation is enabled through the feature flag
|
||||||
mds_user_clear.
|
X86_FEATURE_CLEAR_CPU_BUF.
|
||||||
|
|
||||||
The mitigation is invoked in prepare_exit_to_usermode() which covers
|
The mitigation is invoked just before transitioning to userspace after
|
||||||
all but one of the kernel to user space transitions. The exception
|
user registers are restored. This is done to minimize the window in
|
||||||
is when we return from a Non Maskable Interrupt (NMI), which is
|
which kernel data could be accessed after VERW e.g. via an NMI after
|
||||||
handled directly in do_nmi().
|
VERW.
|
||||||
|
|
||||||
(The reason that NMI is special is that prepare_exit_to_usermode() can
|
**Corner case not handled**
|
||||||
enable IRQs. In NMI context, NMIs are blocked, and we don't want to
|
Interrupts returning to kernel don't clear CPUs buffers since the
|
||||||
enable IRQs with NMIs blocked.)
|
exit-to-user path is expected to do that anyways. But, there could be
|
||||||
|
a case when an NMI is generated in kernel after the exit-to-user path
|
||||||
|
has cleared the buffers. This case is not handled and NMI returning to
|
||||||
|
kernel don't clear CPU buffers because:
|
||||||
|
|
||||||
|
1. It is rare to get an NMI after VERW, but before returning to userspace.
|
||||||
|
2. For an unprivileged user, there is no known way to make that NMI
|
||||||
|
less rare or target it.
|
||||||
|
3. It would take a large number of these precisely-timed NMIs to mount
|
||||||
|
an actual attack. There's presumably not enough bandwidth.
|
||||||
|
4. The NMI in question occurs after a VERW, i.e. when user state is
|
||||||
|
restored and most interesting data is already scrubbed. Whats left
|
||||||
|
is only the data that NMI touches, and that may or may not be of
|
||||||
|
any interest.
|
||||||
|
|
||||||
|
|
||||||
2. C-State transition
|
2. C-State transition
|
||||||
|
10
Makefile
10
Makefile
@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 10
|
PATCHLEVEL = 10
|
||||||
SUBLEVEL = 209
|
SUBLEVEL = 218
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Dare mighty things
|
NAME = Dare mighty things
|
||||||
|
|
||||||
@ -1460,7 +1460,9 @@ kselftest-merge:
|
|||||||
# Devicetree files
|
# Devicetree files
|
||||||
|
|
||||||
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),)
|
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/boot/dts/),)
|
||||||
dtstree := arch/$(SRCARCH)/boot/dts
|
# ANDROID: allow this to be overridden by the build environment. This allows
|
||||||
|
# one to compile a device tree that is located out-of-tree.
|
||||||
|
dtstree ?= arch/$(SRCARCH)/boot/dts
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(dtstree),)
|
ifneq ($(dtstree),)
|
||||||
@ -1929,7 +1931,9 @@ $(clean-dirs):
|
|||||||
|
|
||||||
clean: $(clean-dirs)
|
clean: $(clean-dirs)
|
||||||
$(call cmd,rmfiles)
|
$(call cmd,rmfiles)
|
||||||
@find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
|
@find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) \
|
||||||
|
$(if $(filter-out arch/$(SRCARCH)/boot/dts, $(dtstree)), $(dtstree)) \
|
||||||
|
$(RCS_FIND_IGNORE) \
|
||||||
\( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \
|
\( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \
|
||||||
-o -name '*.ko.*' \
|
-o -name '*.ko.*' \
|
||||||
-o -name '*.dtb' -o -name '*.dtb.S' -o -name '*.dt.yaml' \
|
-o -name '*.dtb' -o -name '*.dtb.S' -o -name '*.dt.yaml' \
|
||||||
|
File diff suppressed because it is too large
Load Diff
2545
android/abi_gki_aarch64_arg
Normal file
2545
android/abi_gki_aarch64_arg
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,7 @@
|
|||||||
[abi_symbol_list]
|
[abi_symbol_list]
|
||||||
__traceiter_android_rvh_dma_buf_stats_teardown
|
__traceiter_android_rvh_dma_buf_stats_teardown
|
||||||
|
__traceiter_android_vh_tune_fault_around_bytes
|
||||||
|
__traceiter_android_vh_do_swap_page_spf
|
||||||
__tracepoint_android_rvh_dma_buf_stats_teardown
|
__tracepoint_android_rvh_dma_buf_stats_teardown
|
||||||
|
__tracepoint_android_vh_tune_fault_around_bytes
|
||||||
|
__tracepoint_android_vh_do_swap_page_spf
|
||||||
|
@ -178,7 +178,9 @@
|
|||||||
clk_prepare
|
clk_prepare
|
||||||
clk_put
|
clk_put
|
||||||
clk_register
|
clk_register
|
||||||
|
clk_restore_context
|
||||||
clk_round_rate
|
clk_round_rate
|
||||||
|
clk_save_context
|
||||||
clk_set_parent
|
clk_set_parent
|
||||||
clk_set_rate
|
clk_set_rate
|
||||||
clk_sync_state
|
clk_sync_state
|
||||||
|
@ -9,6 +9,14 @@
|
|||||||
#
|
#
|
||||||
source "arch/$(SRCARCH)/Kconfig"
|
source "arch/$(SRCARCH)/Kconfig"
|
||||||
|
|
||||||
|
config ARCH_CONFIGURES_CPU_MITIGATIONS
|
||||||
|
bool
|
||||||
|
|
||||||
|
if !ARCH_CONFIGURES_CPU_MITIGATIONS
|
||||||
|
config CPU_MITIGATIONS
|
||||||
|
def_bool y
|
||||||
|
endif
|
||||||
|
|
||||||
menu "General architecture-dependent options"
|
menu "General architecture-dependent options"
|
||||||
|
|
||||||
config CRASH_CORE
|
config CRASH_CORE
|
||||||
|
@ -205,7 +205,6 @@ dmac_cfg_clk: dmac-gpu-cfg-clk {
|
|||||||
};
|
};
|
||||||
|
|
||||||
gmac: ethernet@8000 {
|
gmac: ethernet@8000 {
|
||||||
#interrupt-cells = <1>;
|
|
||||||
compatible = "snps,dwmac";
|
compatible = "snps,dwmac";
|
||||||
reg = <0x8000 0x2000>;
|
reg = <0x8000 0x2000>;
|
||||||
interrupts = <10>;
|
interrupts = <10>;
|
||||||
|
@ -435,7 +435,7 @@ pb1176_serial3: serial@1010f000 {
|
|||||||
|
|
||||||
/* Direct-mapped development chip ROM */
|
/* Direct-mapped development chip ROM */
|
||||||
pb1176_rom@10200000 {
|
pb1176_rom@10200000 {
|
||||||
compatible = "direct-mapped";
|
compatible = "mtd-rom";
|
||||||
reg = <0x10200000 0x4000>;
|
reg = <0x10200000 0x4000>;
|
||||||
bank-width = <1>;
|
bank-width = <1>;
|
||||||
};
|
};
|
||||||
|
@ -26,7 +26,6 @@ leds {
|
|||||||
wlan {
|
wlan {
|
||||||
label = "bcm53xx:blue:wlan";
|
label = "bcm53xx:blue:wlan";
|
||||||
gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
|
gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
|
||||||
linux,default-trigger = "default-off";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system {
|
system {
|
||||||
|
@ -26,7 +26,6 @@ leds {
|
|||||||
5ghz {
|
5ghz {
|
||||||
label = "bcm53xx:blue:5ghz";
|
label = "bcm53xx:blue:5ghz";
|
||||||
gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
|
gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
|
||||||
linux,default-trigger = "default-off";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system {
|
system {
|
||||||
@ -42,7 +41,6 @@ pcie0_leds {
|
|||||||
2ghz {
|
2ghz {
|
||||||
label = "bcm53xx:blue:2ghz";
|
label = "bcm53xx:blue:2ghz";
|
||||||
gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
|
gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
|
||||||
linux,default-trigger = "default-off";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -464,6 +464,14 @@ vtcam_reg: LDO12 {
|
|||||||
regulator-name = "VT_CAM_1.8V";
|
regulator-name = "VT_CAM_1.8V";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force-enable this regulator; otherwise the
|
||||||
|
* kernel hangs very early in the boot process
|
||||||
|
* for about 12 seconds, without apparent
|
||||||
|
* reason.
|
||||||
|
*/
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
vcclcd_reg: LDO13 {
|
vcclcd_reg: LDO13 {
|
||||||
|
@ -65,7 +65,7 @@ &weim {
|
|||||||
pinctrl-0 = <&pinctrl_weim>;
|
pinctrl-0 = <&pinctrl_weim>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
nor: nor@0,0 {
|
nor: flash@0,0 {
|
||||||
compatible = "cfi-flash";
|
compatible = "cfi-flash";
|
||||||
reg = <0 0x00000000 0x02000000>;
|
reg = <0 0x00000000 0x02000000>;
|
||||||
bank-width = <4>;
|
bank-width = <4>;
|
||||||
|
@ -45,7 +45,7 @@ &weim {
|
|||||||
pinctrl-0 = <&pinctrl_weim>;
|
pinctrl-0 = <&pinctrl_weim>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
nor: nor@0,0 {
|
nor: flash@0,0 {
|
||||||
compatible = "cfi-flash";
|
compatible = "cfi-flash";
|
||||||
reg = <0 0x00000000 0x02000000>;
|
reg = <0 0x00000000 0x02000000>;
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
|
@ -268,9 +268,12 @@ weim: weim@220000 {
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
esram: esram@300000 {
|
esram: sram@300000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00300000 0x20000>;
|
reg = <0x00300000 0x20000>;
|
||||||
|
ranges = <0 0x00300000 0x20000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -175,10 +175,8 @@ i2c-0 {
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
compatible = "i2c-gpio";
|
compatible = "i2c-gpio";
|
||||||
gpios = <
|
sda-gpios = <&gpio1 24 0>;
|
||||||
&gpio1 24 0 /* SDA */
|
scl-gpios = <&gpio1 22 0>;
|
||||||
&gpio1 22 0 /* SCL */
|
|
||||||
>;
|
|
||||||
i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -186,10 +184,8 @@ i2c-1 {
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
compatible = "i2c-gpio";
|
compatible = "i2c-gpio";
|
||||||
gpios = <
|
sda-gpios = <&gpio0 31 0>;
|
||||||
&gpio0 31 0 /* SDA */
|
scl-gpios = <&gpio0 30 0>;
|
||||||
&gpio0 30 0 /* SCL */
|
|
||||||
>;
|
|
||||||
i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
||||||
|
|
||||||
touch: touch@20 {
|
touch: touch@20 {
|
||||||
|
@ -414,7 +414,7 @@ emi@80020000 {
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
dma_apbx: dma-apbx@80024000 {
|
dma_apbx: dma-controller@80024000 {
|
||||||
compatible = "fsl,imx23-dma-apbx";
|
compatible = "fsl,imx23-dma-apbx";
|
||||||
reg = <0x80024000 0x2000>;
|
reg = <0x80024000 0x2000>;
|
||||||
interrupts = <7 5 9 26
|
interrupts = <7 5 9 26
|
||||||
|
@ -27,7 +27,7 @@ &i2c1 {
|
|||||||
pinctrl-0 = <&pinctrl_i2c1>;
|
pinctrl-0 = <&pinctrl_i2c1>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
pcf8563@51 {
|
rtc@51 {
|
||||||
compatible = "nxp,pcf8563";
|
compatible = "nxp,pcf8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
};
|
};
|
||||||
|
@ -16,7 +16,7 @@ cmo_qvga: display {
|
|||||||
bus-width = <18>;
|
bus-width = <18>;
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&qvga_timings>;
|
native-mode = <&qvga_timings>;
|
||||||
qvga_timings: 320x240 {
|
qvga_timings: timing0 {
|
||||||
clock-frequency = <6500000>;
|
clock-frequency = <6500000>;
|
||||||
hactive = <320>;
|
hactive = <320>;
|
||||||
vactive = <240>;
|
vactive = <240>;
|
||||||
|
@ -16,7 +16,7 @@ dvi_svga: display {
|
|||||||
bus-width = <18>;
|
bus-width = <18>;
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&dvi_svga_timings>;
|
native-mode = <&dvi_svga_timings>;
|
||||||
dvi_svga_timings: 800x600 {
|
dvi_svga_timings: timing0 {
|
||||||
clock-frequency = <40000000>;
|
clock-frequency = <40000000>;
|
||||||
hactive = <800>;
|
hactive = <800>;
|
||||||
vactive = <600>;
|
vactive = <600>;
|
||||||
|
@ -16,7 +16,7 @@ dvi_vga: display {
|
|||||||
bus-width = <18>;
|
bus-width = <18>;
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&dvi_vga_timings>;
|
native-mode = <&dvi_vga_timings>;
|
||||||
dvi_vga_timings: 640x480 {
|
dvi_vga_timings: timing0 {
|
||||||
clock-frequency = <31250000>;
|
clock-frequency = <31250000>;
|
||||||
hactive = <640>;
|
hactive = <640>;
|
||||||
vactive = <480>;
|
vactive = <480>;
|
||||||
|
@ -78,7 +78,7 @@ wvga: display {
|
|||||||
bus-width = <18>;
|
bus-width = <18>;
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&wvga_timings>;
|
native-mode = <&wvga_timings>;
|
||||||
wvga_timings: 640x480 {
|
wvga_timings: timing0 {
|
||||||
hactive = <640>;
|
hactive = <640>;
|
||||||
vactive = <480>;
|
vactive = <480>;
|
||||||
hback-porch = <45>;
|
hback-porch = <45>;
|
||||||
|
@ -543,7 +543,7 @@ pwm1: pwm@53fe0000 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
iim: efuse@53ff0000 {
|
iim: efuse@53ff0000 {
|
||||||
compatible = "fsl,imx25-iim", "fsl,imx27-iim";
|
compatible = "fsl,imx25-iim";
|
||||||
reg = <0x53ff0000 0x4000>;
|
reg = <0x53ff0000 0x4000>;
|
||||||
interrupts = <19>;
|
interrupts = <19>;
|
||||||
clocks = <&clks 99>;
|
clocks = <&clks 99>;
|
||||||
|
@ -16,7 +16,7 @@ display: display {
|
|||||||
fsl,pcr = <0xfae80083>; /* non-standard but required */
|
fsl,pcr = <0xfae80083>; /* non-standard but required */
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&timing0>;
|
native-mode = <&timing0>;
|
||||||
timing0: 800x480 {
|
timing0: timing0 {
|
||||||
clock-frequency = <33000033>;
|
clock-frequency = <33000033>;
|
||||||
hactive = <800>;
|
hactive = <800>;
|
||||||
vactive = <480>;
|
vactive = <480>;
|
||||||
@ -47,7 +47,7 @@ leds {
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_gpio_leds>;
|
pinctrl-0 = <&pinctrl_gpio_leds>;
|
||||||
|
|
||||||
user {
|
led-user {
|
||||||
label = "Heartbeat";
|
label = "Heartbeat";
|
||||||
gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>;
|
||||||
linux,default-trigger = "heartbeat";
|
linux,default-trigger = "heartbeat";
|
||||||
|
@ -33,7 +33,7 @@ &i2c1 {
|
|||||||
pinctrl-0 = <&pinctrl_i2c1>;
|
pinctrl-0 = <&pinctrl_i2c1>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
pcf8563@51 {
|
rtc@51 {
|
||||||
compatible = "nxp,pcf8563";
|
compatible = "nxp,pcf8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
};
|
};
|
||||||
@ -90,7 +90,7 @@ &usbotg {
|
|||||||
&weim {
|
&weim {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
nor: nor@0,0 {
|
nor: flash@0,0 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
compatible = "cfi-flash";
|
compatible = "cfi-flash";
|
||||||
|
@ -16,7 +16,7 @@ display0: CMO-QVGA {
|
|||||||
|
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&timing0>;
|
native-mode = <&timing0>;
|
||||||
timing0: 320x240 {
|
timing0: timing0 {
|
||||||
clock-frequency = <6500000>;
|
clock-frequency = <6500000>;
|
||||||
hactive = <320>;
|
hactive = <320>;
|
||||||
vactive = <240>;
|
vactive = <240>;
|
||||||
|
@ -19,7 +19,7 @@ display: display {
|
|||||||
fsl,pcr = <0xf0c88080>; /* non-standard but required */
|
fsl,pcr = <0xf0c88080>; /* non-standard but required */
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&timing0>;
|
native-mode = <&timing0>;
|
||||||
timing0: 640x480 {
|
timing0: timing0 {
|
||||||
hactive = <640>;
|
hactive = <640>;
|
||||||
vactive = <480>;
|
vactive = <480>;
|
||||||
hback-porch = <112>;
|
hback-porch = <112>;
|
||||||
|
@ -19,7 +19,7 @@ display0: LQ035Q7 {
|
|||||||
|
|
||||||
display-timings {
|
display-timings {
|
||||||
native-mode = <&timing0>;
|
native-mode = <&timing0>;
|
||||||
timing0: 240x320 {
|
timing0: timing0 {
|
||||||
clock-frequency = <5500000>;
|
clock-frequency = <5500000>;
|
||||||
hactive = <240>;
|
hactive = <240>;
|
||||||
vactive = <320>;
|
vactive = <320>;
|
||||||
|
@ -322,7 +322,7 @@ &usbotg {
|
|||||||
&weim {
|
&weim {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
nor: nor@0,0 {
|
nor: flash@0,0 {
|
||||||
compatible = "cfi-flash";
|
compatible = "cfi-flash";
|
||||||
reg = <0 0x00000000 0x02000000>;
|
reg = <0 0x00000000 0x02000000>;
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
|
@ -588,6 +588,9 @@ weim: weim@d8002000 {
|
|||||||
iram: sram@ffff4c00 {
|
iram: sram@ffff4c00 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0xffff4c00 0xb400>;
|
reg = <0xffff4c00 0xb400>;
|
||||||
|
ranges = <0 0xffff4c00 0xb400>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -982,7 +982,7 @@ etm: etm@80022000 {
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
dma_apbx: dma-apbx@80024000 {
|
dma_apbx: dma-controller@80024000 {
|
||||||
compatible = "fsl,imx28-dma-apbx";
|
compatible = "fsl,imx28-dma-apbx";
|
||||||
reg = <0x80024000 0x2000>;
|
reg = <0x80024000 0x2000>;
|
||||||
interrupts = <78 79 66 0
|
interrupts = <78 79 66 0
|
||||||
|
@ -103,8 +103,6 @@ &fec {
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_enet>;
|
pinctrl-0 = <&pinctrl_enet>;
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii-id";
|
||||||
phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
|
|
||||||
phy-reset-duration = <20>;
|
|
||||||
phy-supply = <&sw2_reg>;
|
phy-supply = <&sw2_reg>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
@ -117,17 +115,10 @@ mdio {
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
phy_port2: phy@1 {
|
|
||||||
reg = <1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
phy_port3: phy@2 {
|
|
||||||
reg = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
switch@10 {
|
switch@10 {
|
||||||
compatible = "qca,qca8334";
|
compatible = "qca,qca8334";
|
||||||
reg = <10>;
|
reg = <0x10>;
|
||||||
|
reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
switch_ports: ports {
|
switch_ports: ports {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@ -148,15 +139,30 @@ fixed-link {
|
|||||||
eth2: port@2 {
|
eth2: port@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
label = "eth2";
|
label = "eth2";
|
||||||
|
phy-mode = "internal";
|
||||||
phy-handle = <&phy_port2>;
|
phy-handle = <&phy_port2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
eth1: port@3 {
|
eth1: port@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
label = "eth1";
|
label = "eth1";
|
||||||
|
phy-mode = "internal";
|
||||||
phy-handle = <&phy_port3>;
|
phy-handle = <&phy_port3>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mdio {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
phy_port2: ethernet-phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
phy_port3: ethernet-phy@2 {
|
||||||
|
reg = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -981,6 +981,8 @@ usdhc1: mmc@2190000 {
|
|||||||
<&clks IMX6SX_CLK_USDHC1>;
|
<&clks IMX6SX_CLK_USDHC1>;
|
||||||
clock-names = "ipg", "ahb", "per";
|
clock-names = "ipg", "ahb", "per";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
fsl,tuning-start-tap = <20>;
|
||||||
|
fsl,tuning-step= <2>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -993,6 +995,8 @@ usdhc2: mmc@2194000 {
|
|||||||
<&clks IMX6SX_CLK_USDHC2>;
|
<&clks IMX6SX_CLK_USDHC2>;
|
||||||
clock-names = "ipg", "ahb", "per";
|
clock-names = "ipg", "ahb", "per";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
fsl,tuning-start-tap = <20>;
|
||||||
|
fsl,tuning-step= <2>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1005,6 +1009,8 @@ usdhc3: mmc@2198000 {
|
|||||||
<&clks IMX6SX_CLK_USDHC3>;
|
<&clks IMX6SX_CLK_USDHC3>;
|
||||||
clock-names = "ipg", "ahb", "per";
|
clock-names = "ipg", "ahb", "per";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
fsl,tuning-start-tap = <20>;
|
||||||
|
fsl,tuning-step= <2>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -209,9 +209,6 @@ pcie: pcie@33800000 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&ca_funnel_in_ports {
|
&ca_funnel_in_ports {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
port@1 {
|
port@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
ca_funnel_in_port1: endpoint {
|
ca_funnel_in_port1: endpoint {
|
||||||
|
@ -173,7 +173,11 @@ funnel@30041000 {
|
|||||||
clock-names = "apb_pclk";
|
clock-names = "apb_pclk";
|
||||||
|
|
||||||
ca_funnel_in_ports: in-ports {
|
ca_funnel_in_ports: in-ports {
|
||||||
port {
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
ca_funnel_in_port0: endpoint {
|
ca_funnel_in_port0: endpoint {
|
||||||
remote-endpoint = <&etm0_out_port>;
|
remote-endpoint = <&etm0_out_port>;
|
||||||
};
|
};
|
||||||
@ -769,7 +773,7 @@ csi_from_csi_mux: endpoint {
|
|||||||
};
|
};
|
||||||
|
|
||||||
lcdif: lcdif@30730000 {
|
lcdif: lcdif@30730000 {
|
||||||
compatible = "fsl,imx7d-lcdif", "fsl,imx28-lcdif";
|
compatible = "fsl,imx7d-lcdif", "fsl,imx6sx-lcdif";
|
||||||
reg = <0x30730000 0x10000>;
|
reg = <0x30730000 0x10000>;
|
||||||
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
|
clocks = <&clks IMX7D_LCDIF_PIXEL_ROOT_CLK>,
|
||||||
@ -1231,7 +1235,7 @@ dma_apbh: dma-controller@33000000 {
|
|||||||
gpmi: nand-controller@33002000{
|
gpmi: nand-controller@33002000{
|
||||||
compatible = "fsl,imx7d-gpmi-nand";
|
compatible = "fsl,imx7d-gpmi-nand";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <0>;
|
||||||
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
||||||
reg-names = "gpmi-nand", "bch";
|
reg-names = "gpmi-nand", "bch";
|
||||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -28,7 +28,7 @@ &uart3 {
|
|||||||
&twsi1 {
|
&twsi1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
pmic: max8925@3c {
|
pmic: max8925@3c {
|
||||||
compatible = "maxium,max8925";
|
compatible = "maxim,max8925";
|
||||||
reg = <0x3c>;
|
reg = <0x3c>;
|
||||||
interrupts = <1>;
|
interrupts = <1>;
|
||||||
interrupt-parent = <&intcmux4>;
|
interrupt-parent = <&intcmux4>;
|
||||||
|
@ -336,14 +336,22 @@ hdmi: hdmi@20034000 {
|
|||||||
pinctrl-0 = <&hdmi_ctl>;
|
pinctrl-0 = <&hdmi_ctl>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
hdmi_in: port {
|
ports {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
hdmi_in_vop: endpoint@0 {
|
|
||||||
|
hdmi_in: port@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
|
|
||||||
|
hdmi_in_vop: endpoint {
|
||||||
remote-endpoint = <&vop_out_hdmi>;
|
remote-endpoint = <&vop_out_hdmi>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hdmi_out: port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
timer: timer@20044000 {
|
timer: timer@20044000 {
|
||||||
|
@ -62,6 +62,30 @@ reg_vdd_cpux: vdd-cpux-regulator {
|
|||||||
states = <1100000 0>, <1300000 1>;
|
states = <1100000 0>, <1300000 1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
reg_vcc_dram: vcc-dram {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc-dram";
|
||||||
|
regulator-min-microvolt = <1500000>;
|
||||||
|
regulator-max-microvolt = <1500000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
|
||||||
|
vin-supply = <®_vcc5v0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
reg_vcc1v2: vcc1v2 {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "vcc1v2";
|
||||||
|
regulator-min-microvolt = <1200000>;
|
||||||
|
regulator-max-microvolt = <1200000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
enable-active-high;
|
||||||
|
gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
|
||||||
|
vin-supply = <®_vcc5v0>;
|
||||||
|
};
|
||||||
|
|
||||||
wifi_pwrseq: wifi_pwrseq {
|
wifi_pwrseq: wifi_pwrseq {
|
||||||
compatible = "mmc-pwrseq-simple";
|
compatible = "mmc-pwrseq-simple";
|
||||||
reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
|
||||||
|
@ -24,8 +24,8 @@
|
|||||||
|
|
||||||
#include "sha256_glue.h"
|
#include "sha256_glue.h"
|
||||||
|
|
||||||
asmlinkage void sha256_block_data_order(u32 *digest, const void *data,
|
asmlinkage void sha256_block_data_order(struct sha256_state *state,
|
||||||
unsigned int num_blks);
|
const u8 *data, int num_blks);
|
||||||
|
|
||||||
int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,
|
int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,
|
||||||
unsigned int len)
|
unsigned int len)
|
||||||
@ -33,23 +33,20 @@ int crypto_sha256_arm_update(struct shash_desc *desc, const u8 *data,
|
|||||||
/* make sure casting to sha256_block_fn() is safe */
|
/* make sure casting to sha256_block_fn() is safe */
|
||||||
BUILD_BUG_ON(offsetof(struct sha256_state, state) != 0);
|
BUILD_BUG_ON(offsetof(struct sha256_state, state) != 0);
|
||||||
|
|
||||||
return sha256_base_do_update(desc, data, len,
|
return sha256_base_do_update(desc, data, len, sha256_block_data_order);
|
||||||
(sha256_block_fn *)sha256_block_data_order);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(crypto_sha256_arm_update);
|
EXPORT_SYMBOL(crypto_sha256_arm_update);
|
||||||
|
|
||||||
static int crypto_sha256_arm_final(struct shash_desc *desc, u8 *out)
|
static int crypto_sha256_arm_final(struct shash_desc *desc, u8 *out)
|
||||||
{
|
{
|
||||||
sha256_base_do_finalize(desc,
|
sha256_base_do_finalize(desc, sha256_block_data_order);
|
||||||
(sha256_block_fn *)sha256_block_data_order);
|
|
||||||
return sha256_base_finish(desc, out);
|
return sha256_base_finish(desc, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
int crypto_sha256_arm_finup(struct shash_desc *desc, const u8 *data,
|
int crypto_sha256_arm_finup(struct shash_desc *desc, const u8 *data,
|
||||||
unsigned int len, u8 *out)
|
unsigned int len, u8 *out)
|
||||||
{
|
{
|
||||||
sha256_base_do_update(desc, data, len,
|
sha256_base_do_update(desc, data, len, sha256_block_data_order);
|
||||||
(sha256_block_fn *)sha256_block_data_order);
|
|
||||||
return crypto_sha256_arm_final(desc, out);
|
return crypto_sha256_arm_final(desc, out);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(crypto_sha256_arm_finup);
|
EXPORT_SYMBOL(crypto_sha256_arm_finup);
|
||||||
|
@ -25,27 +25,25 @@ MODULE_ALIAS_CRYPTO("sha512");
|
|||||||
MODULE_ALIAS_CRYPTO("sha384-arm");
|
MODULE_ALIAS_CRYPTO("sha384-arm");
|
||||||
MODULE_ALIAS_CRYPTO("sha512-arm");
|
MODULE_ALIAS_CRYPTO("sha512-arm");
|
||||||
|
|
||||||
asmlinkage void sha512_block_data_order(u64 *state, u8 const *src, int blocks);
|
asmlinkage void sha512_block_data_order(struct sha512_state *state,
|
||||||
|
u8 const *src, int blocks);
|
||||||
|
|
||||||
int sha512_arm_update(struct shash_desc *desc, const u8 *data,
|
int sha512_arm_update(struct shash_desc *desc, const u8 *data,
|
||||||
unsigned int len)
|
unsigned int len)
|
||||||
{
|
{
|
||||||
return sha512_base_do_update(desc, data, len,
|
return sha512_base_do_update(desc, data, len, sha512_block_data_order);
|
||||||
(sha512_block_fn *)sha512_block_data_order);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sha512_arm_final(struct shash_desc *desc, u8 *out)
|
static int sha512_arm_final(struct shash_desc *desc, u8 *out)
|
||||||
{
|
{
|
||||||
sha512_base_do_finalize(desc,
|
sha512_base_do_finalize(desc, sha512_block_data_order);
|
||||||
(sha512_block_fn *)sha512_block_data_order);
|
|
||||||
return sha512_base_finish(desc, out);
|
return sha512_base_finish(desc, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sha512_arm_finup(struct shash_desc *desc, const u8 *data,
|
int sha512_arm_finup(struct shash_desc *desc, const u8 *data,
|
||||||
unsigned int len, u8 *out)
|
unsigned int len, u8 *out)
|
||||||
{
|
{
|
||||||
sha512_base_do_update(desc, data, len,
|
sha512_base_do_update(desc, data, len, sha512_block_data_order);
|
||||||
(sha512_block_fn *)sha512_block_data_order);
|
|
||||||
return sha512_arm_final(desc, out);
|
return sha512_arm_final(desc, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,6 +337,7 @@ static struct gpiod_lookup_table ep93xx_i2c_gpiod_table = {
|
|||||||
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
||||||
GPIO_LOOKUP_IDX("G", 0, NULL, 1,
|
GPIO_LOOKUP_IDX("G", 0, NULL, 1,
|
||||||
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
|
||||||
|
{ }
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -414,14 +414,14 @@ xor11 {
|
|||||||
crypto: crypto@90000 {
|
crypto: crypto@90000 {
|
||||||
compatible = "inside-secure,safexcel-eip97ies";
|
compatible = "inside-secure,safexcel-eip97ies";
|
||||||
reg = <0x90000 0x20000>;
|
reg = <0x90000 0x20000>;
|
||||||
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
|
<GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
interrupt-names = "mem", "ring0", "ring1",
|
<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
"ring2", "ring3", "eip";
|
interrupt-names = "ring0", "ring1", "ring2",
|
||||||
|
"ring3", "eip", "mem";
|
||||||
clocks = <&nb_periph_clk 15>;
|
clocks = <&nb_periph_clk 15>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -477,14 +477,14 @@ CP11X_LABEL(sdhci0): sdhci@780000 {
|
|||||||
CP11X_LABEL(crypto): crypto@800000 {
|
CP11X_LABEL(crypto): crypto@800000 {
|
||||||
compatible = "inside-secure,safexcel-eip197b";
|
compatible = "inside-secure,safexcel-eip197b";
|
||||||
reg = <0x800000 0x200000>;
|
reg = <0x800000 0x200000>;
|
||||||
interrupts = <87 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <88 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<88 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<89 IRQ_TYPE_LEVEL_HIGH>,
|
<89 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<90 IRQ_TYPE_LEVEL_HIGH>,
|
<90 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<91 IRQ_TYPE_LEVEL_HIGH>,
|
<91 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<92 IRQ_TYPE_LEVEL_HIGH>;
|
<92 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
interrupt-names = "mem", "ring0", "ring1",
|
<87 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
"ring2", "ring3", "eip";
|
interrupt-names = "ring0", "ring1", "ring2", "ring3",
|
||||||
|
"eip", "mem";
|
||||||
clock-names = "core", "reg";
|
clock-names = "core", "reg";
|
||||||
clocks = <&CP11X_LABEL(clk) 1 26>,
|
clocks = <&CP11X_LABEL(clk) 1 26>,
|
||||||
<&CP11X_LABEL(clk) 1 17>;
|
<&CP11X_LABEL(clk) 1 17>;
|
||||||
|
@ -127,7 +127,7 @@ ethernet_phy0: ethernet-phy@5 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&pio {
|
&pio {
|
||||||
eth_default: eth_default {
|
eth_default: eth-default-pins {
|
||||||
tx_pins {
|
tx_pins {
|
||||||
pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GBE_TXD3>,
|
pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GBE_TXD3>,
|
||||||
<MT2712_PIN_72_GBE_TXD2__FUNC_GBE_TXD2>,
|
<MT2712_PIN_72_GBE_TXD2__FUNC_GBE_TXD2>,
|
||||||
@ -154,7 +154,7 @@ mdio_pins {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
eth_sleep: eth_sleep {
|
eth_sleep: eth-sleep-pins {
|
||||||
tx_pins {
|
tx_pins {
|
||||||
pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GPIO71>,
|
pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GPIO71>,
|
||||||
<MT2712_PIN_72_GBE_TXD2__FUNC_GPIO72>,
|
<MT2712_PIN_72_GBE_TXD2__FUNC_GPIO72>,
|
||||||
@ -180,14 +180,14 @@ mdio_pins {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
usb0_id_pins_float: usb0_iddig {
|
usb0_id_pins_float: usb0-iddig-pins {
|
||||||
pins_iddig {
|
pins_iddig {
|
||||||
pinmux = <MT2712_PIN_12_IDDIG_P0__FUNC_IDDIG_A>;
|
pinmux = <MT2712_PIN_12_IDDIG_P0__FUNC_IDDIG_A>;
|
||||||
bias-pull-up;
|
bias-pull-up;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
usb1_id_pins_float: usb1_iddig {
|
usb1_id_pins_float: usb1-iddig-pins {
|
||||||
pins_iddig {
|
pins_iddig {
|
||||||
pinmux = <MT2712_PIN_14_IDDIG_P1__FUNC_IDDIG_B>;
|
pinmux = <MT2712_PIN_14_IDDIG_P1__FUNC_IDDIG_B>;
|
||||||
bias-pull-up;
|
bias-pull-up;
|
||||||
|
@ -249,10 +249,11 @@ topckgen: syscon@10000000 {
|
|||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
infracfg: syscon@10001000 {
|
infracfg: clock-controller@10001000 {
|
||||||
compatible = "mediatek,mt2712-infracfg", "syscon";
|
compatible = "mediatek,mt2712-infracfg", "syscon";
|
||||||
reg = <0 0x10001000 0 0x1000>;
|
reg = <0 0x10001000 0 0x1000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
|
#reset-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pericfg: syscon@10003000 {
|
pericfg: syscon@10003000 {
|
||||||
|
@ -71,6 +71,7 @@ red {
|
|||||||
|
|
||||||
memory@40000000 {
|
memory@40000000 {
|
||||||
reg = <0 0x40000000 0 0x40000000>;
|
reg = <0 0x40000000 0 0x40000000>;
|
||||||
|
device_type = "memory";
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_1p8v: regulator-1p8v {
|
reg_1p8v: regulator-1p8v {
|
||||||
|
@ -57,6 +57,7 @@ wps {
|
|||||||
|
|
||||||
memory@40000000 {
|
memory@40000000 {
|
||||||
reg = <0 0x40000000 0 0x20000000>;
|
reg = <0 0x40000000 0 0x20000000>;
|
||||||
|
device_type = "memory";
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_1p8v: regulator-1p8v {
|
reg_1p8v: regulator-1p8v {
|
||||||
|
@ -244,7 +244,7 @@ scpsys: power-controller@10006000 {
|
|||||||
clock-names = "hif_sel";
|
clock-names = "hif_sel";
|
||||||
};
|
};
|
||||||
|
|
||||||
cir: cir@10009000 {
|
cir: ir-receiver@10009000 {
|
||||||
compatible = "mediatek,mt7622-cir";
|
compatible = "mediatek,mt7622-cir";
|
||||||
reg = <0 0x10009000 0 0x1000>;
|
reg = <0 0x10009000 0 0x1000>;
|
||||||
interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_LOW>;
|
||||||
@ -275,16 +275,14 @@ thermal_calibration: calib@198 {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
apmixedsys: apmixedsys@10209000 {
|
apmixedsys: clock-controller@10209000 {
|
||||||
compatible = "mediatek,mt7622-apmixedsys",
|
compatible = "mediatek,mt7622-apmixedsys";
|
||||||
"syscon";
|
|
||||||
reg = <0 0x10209000 0 0x1000>;
|
reg = <0 0x10209000 0 0x1000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
topckgen: topckgen@10210000 {
|
topckgen: clock-controller@10210000 {
|
||||||
compatible = "mediatek,mt7622-topckgen",
|
compatible = "mediatek,mt7622-topckgen";
|
||||||
"syscon";
|
|
||||||
reg = <0 0x10210000 0 0x1000>;
|
reg = <0 0x10210000 0 0x1000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
};
|
||||||
@ -357,7 +355,7 @@ cci_control1: slave-if@4000 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
cci_control2: slave-if@5000 {
|
cci_control2: slave-if@5000 {
|
||||||
compatible = "arm,cci-400-ctrl-if";
|
compatible = "arm,cci-400-ctrl-if", "syscon";
|
||||||
interface-type = "ace";
|
interface-type = "ace";
|
||||||
reg = <0x5000 0x1000>;
|
reg = <0x5000 0x1000>;
|
||||||
};
|
};
|
||||||
@ -507,7 +505,6 @@ thermal: thermal@1100b000 {
|
|||||||
<&pericfg CLK_PERI_AUXADC_PD>;
|
<&pericfg CLK_PERI_AUXADC_PD>;
|
||||||
clock-names = "therm", "auxadc";
|
clock-names = "therm", "auxadc";
|
||||||
resets = <&pericfg MT7622_PERI_THERM_SW_RST>;
|
resets = <&pericfg MT7622_PERI_THERM_SW_RST>;
|
||||||
reset-names = "therm";
|
|
||||||
mediatek,auxadc = <&auxadc>;
|
mediatek,auxadc = <&auxadc>;
|
||||||
mediatek,apmixedsys = <&apmixedsys>;
|
mediatek,apmixedsys = <&apmixedsys>;
|
||||||
nvmem-cells = <&thermal_calibration>;
|
nvmem-cells = <&thermal_calibration>;
|
||||||
@ -715,9 +712,8 @@ wmac: wmac@18000000 {
|
|||||||
power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
|
power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
|
||||||
};
|
};
|
||||||
|
|
||||||
ssusbsys: ssusbsys@1a000000 {
|
ssusbsys: clock-controller@1a000000 {
|
||||||
compatible = "mediatek,mt7622-ssusbsys",
|
compatible = "mediatek,mt7622-ssusbsys";
|
||||||
"syscon";
|
|
||||||
reg = <0 0x1a000000 0 0x1000>;
|
reg = <0 0x1a000000 0 0x1000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
@ -774,9 +770,8 @@ u2port1: usb-phy@1a0c5000 {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pciesys: pciesys@1a100800 {
|
pciesys: clock-controller@1a100800 {
|
||||||
compatible = "mediatek,mt7622-pciesys",
|
compatible = "mediatek,mt7622-pciesys";
|
||||||
"syscon";
|
|
||||||
reg = <0 0x1a100800 0 0x1000>;
|
reg = <0 0x1a100800 0 0x1000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
@ -893,7 +888,13 @@ sata_port: sata-phy@1a243000 {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ethsys: syscon@1b000000 {
|
hifsys: clock-controller@1af00000 {
|
||||||
|
compatible = "mediatek,mt7622-hifsys";
|
||||||
|
reg = <0 0x1af00000 0 0x70>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ethsys: clock-controller@1b000000 {
|
||||||
compatible = "mediatek,mt7622-ethsys",
|
compatible = "mediatek,mt7622-ethsys",
|
||||||
"syscon";
|
"syscon";
|
||||||
reg = <0 0x1b000000 0 0x1000>;
|
reg = <0 0x1b000000 0 0x1000>;
|
||||||
@ -911,10 +912,28 @@ hsdma: dma-controller@1b007000 {
|
|||||||
#dma-cells = <1>;
|
#dma-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
eth: ethernet@1b100000 {
|
pcie_mirror: pcie-mirror@10000400 {
|
||||||
compatible = "mediatek,mt7622-eth",
|
compatible = "mediatek,mt7622-pcie-mirror",
|
||||||
"mediatek,mt2701-eth",
|
|
||||||
"syscon";
|
"syscon";
|
||||||
|
reg = <0 0x10000400 0 0x10>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wed0: wed@1020a000 {
|
||||||
|
compatible = "mediatek,mt7622-wed",
|
||||||
|
"syscon";
|
||||||
|
reg = <0 0x1020a000 0 0x1000>;
|
||||||
|
interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
wed1: wed@1020b000 {
|
||||||
|
compatible = "mediatek,mt7622-wed",
|
||||||
|
"syscon";
|
||||||
|
reg = <0 0x1020b000 0 0x1000>;
|
||||||
|
interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
};
|
||||||
|
|
||||||
|
eth: ethernet@1b100000 {
|
||||||
|
compatible = "mediatek,mt7622-eth";
|
||||||
reg = <0 0x1b100000 0 0x20000>;
|
reg = <0 0x1b100000 0 0x20000>;
|
||||||
interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
|
interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
|
||||||
<GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
|
<GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
|
||||||
@ -937,6 +956,11 @@ eth: ethernet@1b100000 {
|
|||||||
power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
|
power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
|
||||||
mediatek,ethsys = <ðsys>;
|
mediatek,ethsys = <ðsys>;
|
||||||
mediatek,sgmiisys = <&sgmiisys>;
|
mediatek,sgmiisys = <&sgmiisys>;
|
||||||
|
mediatek,cci-control = <&cci_control2>;
|
||||||
|
mediatek,wed = <&wed0>, <&wed1>;
|
||||||
|
mediatek,pcie-mirror = <&pcie_mirror>;
|
||||||
|
mediatek,hifsys = <&hifsys>;
|
||||||
|
dma-coherent;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -139,6 +139,19 @@ memory {
|
|||||||
reg = <0 0 0 0>;
|
reg = <0 0 0 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
etm {
|
||||||
|
compatible = "qcom,coresight-remote-etm";
|
||||||
|
|
||||||
|
out-ports {
|
||||||
|
port {
|
||||||
|
modem_etm_out_funnel_in2: endpoint {
|
||||||
|
remote-endpoint =
|
||||||
|
<&funnel_in2_in_modem_etm>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
psci {
|
psci {
|
||||||
compatible = "arm,psci-1.0";
|
compatible = "arm,psci-1.0";
|
||||||
method = "smc";
|
method = "smc";
|
||||||
@ -1374,6 +1387,14 @@ funnel@3023000 {
|
|||||||
clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
|
clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
|
||||||
clock-names = "apb_pclk", "atclk";
|
clock-names = "apb_pclk", "atclk";
|
||||||
|
|
||||||
|
in-ports {
|
||||||
|
port {
|
||||||
|
funnel_in2_in_modem_etm: endpoint {
|
||||||
|
remote-endpoint =
|
||||||
|
<&modem_etm_out_funnel_in2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
out-ports {
|
out-ports {
|
||||||
port {
|
port {
|
||||||
|
@ -949,10 +949,10 @@ pcie0: pci@1c00000 {
|
|||||||
interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
interrupt-map-mask = <0 0 0 0x7>;
|
interrupt-map-mask = <0 0 0 0x7>;
|
||||||
interrupt-map = <0 0 0 1 &intc 0 135 IRQ_TYPE_LEVEL_HIGH>,
|
interrupt-map = <0 0 0 1 &intc 0 0 135 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 0 0 2 &intc 0 136 IRQ_TYPE_LEVEL_HIGH>,
|
<0 0 0 2 &intc 0 0 136 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 0 0 3 &intc 0 138 IRQ_TYPE_LEVEL_HIGH>,
|
<0 0 0 3 &intc 0 0 138 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 0 0 4 &intc 0 139 IRQ_TYPE_LEVEL_HIGH>;
|
<0 0 0 4 &intc 0 0 139 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
||||||
clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
|
clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
|
||||||
<&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
|
<&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
|
||||||
@ -1577,12 +1577,14 @@ etm5: etm@7c40000 {
|
|||||||
|
|
||||||
cpu = <&CPU4>;
|
cpu = <&CPU4>;
|
||||||
|
|
||||||
|
out-ports {
|
||||||
port{
|
port{
|
||||||
etm4_out: endpoint {
|
etm4_out: endpoint {
|
||||||
remote-endpoint = <&apss_funnel_in4>;
|
remote-endpoint = <&apss_funnel_in4>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
etm6: etm@7d40000 {
|
etm6: etm@7d40000 {
|
||||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||||
@ -1594,12 +1596,14 @@ etm6: etm@7d40000 {
|
|||||||
|
|
||||||
cpu = <&CPU5>;
|
cpu = <&CPU5>;
|
||||||
|
|
||||||
|
out-ports {
|
||||||
port{
|
port{
|
||||||
etm5_out: endpoint {
|
etm5_out: endpoint {
|
||||||
remote-endpoint = <&apss_funnel_in5>;
|
remote-endpoint = <&apss_funnel_in5>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
etm7: etm@7e40000 {
|
etm7: etm@7e40000 {
|
||||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||||
@ -1611,12 +1615,14 @@ etm7: etm@7e40000 {
|
|||||||
|
|
||||||
cpu = <&CPU6>;
|
cpu = <&CPU6>;
|
||||||
|
|
||||||
|
out-ports {
|
||||||
port{
|
port{
|
||||||
etm6_out: endpoint {
|
etm6_out: endpoint {
|
||||||
remote-endpoint = <&apss_funnel_in6>;
|
remote-endpoint = <&apss_funnel_in6>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
etm8: etm@7f40000 {
|
etm8: etm@7f40000 {
|
||||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||||
@ -1628,12 +1634,14 @@ etm8: etm@7f40000 {
|
|||||||
|
|
||||||
cpu = <&CPU7>;
|
cpu = <&CPU7>;
|
||||||
|
|
||||||
|
out-ports {
|
||||||
port{
|
port{
|
||||||
etm7_out: endpoint {
|
etm7_out: endpoint {
|
||||||
remote-endpoint = <&apss_funnel_in7>;
|
remote-endpoint = <&apss_funnel_in7>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
spmi_bus: spmi@800f000 {
|
spmi_bus: spmi@800f000 {
|
||||||
compatible = "qcom,spmi-pmic-arb";
|
compatible = "qcom,spmi-pmic-arb";
|
||||||
|
@ -810,7 +810,8 @@ bluetooth: bluetooth {
|
|||||||
vddrf-supply = <&pp1300_l2c>;
|
vddrf-supply = <&pp1300_l2c>;
|
||||||
vddch0-supply = <&pp3300_l10c>;
|
vddch0-supply = <&pp3300_l10c>;
|
||||||
max-speed = <3200000>;
|
max-speed = <3200000>;
|
||||||
clocks = <&rpmhcc RPMH_RF_CLK2>;
|
|
||||||
|
qcom,local-bd-address-broken;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2688,10 +2688,10 @@ usb_1: usb@a6f8800 {
|
|||||||
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
|
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
|
||||||
assigned-clock-rates = <19200000>, <150000000>;
|
assigned-clock-rates = <19200000>, <150000000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
|
<&pdc 6 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
|
<&pdc 8 IRQ_TYPE_EDGE_BOTH>,
|
||||||
<GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
|
<&pdc 9 IRQ_TYPE_EDGE_BOTH>;
|
||||||
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
||||||
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
||||||
|
|
||||||
|
@ -1824,10 +1824,10 @@ pcie0: pci@1c00000 {
|
|||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
interrupt-map-mask = <0 0 0 0x7>;
|
interrupt-map-mask = <0 0 0 0x7>;
|
||||||
interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||||
<0 0 0 2 &intc 0 150 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
<0 0 0 2 &intc 0 0 0 150 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||||
<0 0 0 3 &intc 0 151 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
<0 0 0 3 &intc 0 0 0 151 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||||
<0 0 0 4 &intc 0 152 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
<0 0 0 4 &intc 0 0 0 152 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||||
|
|
||||||
clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
|
clocks = <&gcc GCC_PCIE_0_PIPE_CLK>,
|
||||||
<&gcc GCC_PCIE_0_AUX_CLK>,
|
<&gcc GCC_PCIE_0_AUX_CLK>,
|
||||||
@ -1928,10 +1928,10 @@ pcie1: pci@1c08000 {
|
|||||||
interrupt-names = "msi";
|
interrupt-names = "msi";
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
interrupt-map-mask = <0 0 0 0x7>;
|
interrupt-map-mask = <0 0 0 0x7>;
|
||||||
interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
|
||||||
<0 0 0 2 &intc 0 435 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
<0 0 0 2 &intc 0 0 0 435 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
|
||||||
<0 0 0 3 &intc 0 438 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
<0 0 0 3 &intc 0 0 0 438 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
|
||||||
<0 0 0 4 &intc 0 439 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
<0 0 0 4 &intc 0 0 0 439 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
|
||||||
|
|
||||||
clocks = <&gcc GCC_PCIE_1_PIPE_CLK>,
|
clocks = <&gcc GCC_PCIE_1_PIPE_CLK>,
|
||||||
<&gcc GCC_PCIE_1_AUX_CLK>,
|
<&gcc GCC_PCIE_1_AUX_CLK>,
|
||||||
@ -3565,10 +3565,10 @@ usb_1: usb@a6f8800 {
|
|||||||
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
|
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
|
||||||
assigned-clock-rates = <19200000>, <150000000>;
|
assigned-clock-rates = <19200000>, <150000000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
|
<&intc GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
|
<&pdc_intc 8 IRQ_TYPE_EDGE_BOTH>,
|
||||||
<GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
|
<&pdc_intc 9 IRQ_TYPE_EDGE_BOTH>;
|
||||||
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
||||||
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
||||||
|
|
||||||
@ -3613,10 +3613,10 @@ usb_2: usb@a8f8800 {
|
|||||||
<&gcc GCC_USB30_SEC_MASTER_CLK>;
|
<&gcc GCC_USB30_SEC_MASTER_CLK>;
|
||||||
assigned-clock-rates = <19200000>, <150000000>;
|
assigned-clock-rates = <19200000>, <150000000>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>,
|
<&intc GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>,
|
<&pdc_intc 10 IRQ_TYPE_EDGE_BOTH>,
|
||||||
<GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>;
|
<&pdc_intc 11 IRQ_TYPE_EDGE_BOTH>;
|
||||||
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
interrupt-names = "hs_phy_irq", "ss_phy_irq",
|
||||||
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
"dm_hs_phy_irq", "dp_hs_phy_irq";
|
||||||
|
|
||||||
|
@ -577,6 +577,7 @@ spi0: spi@ff1d0000 {
|
|||||||
clock-names = "spiclk", "apb_pclk";
|
clock-names = "spiclk", "apb_pclk";
|
||||||
dmas = <&dmac 12>, <&dmac 13>;
|
dmas = <&dmac 12>, <&dmac 13>;
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
|
num-cs = <2>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&spi0_clk &spi0_csn &spi0_miso &spi0_mosi>;
|
pinctrl-0 = <&spi0_clk &spi0_csn &spi0_miso &spi0_mosi>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@ -592,6 +593,7 @@ spi1: spi@ff1d8000 {
|
|||||||
clock-names = "spiclk", "apb_pclk";
|
clock-names = "spiclk", "apb_pclk";
|
||||||
dmas = <&dmac 14>, <&dmac 15>;
|
dmas = <&dmac 14>, <&dmac 15>;
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
|
num-cs = <2>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&spi1_clk &spi1_csn0 &spi1_csn1 &spi1_miso &spi1_mosi>;
|
pinctrl-0 = <&spi1_clk &spi1_csn0 &spi1_csn1 &spi1_miso &spi1_mosi>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
@ -732,11 +732,20 @@ hdmi: hdmi@ff3c0000 {
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
hdmi_in: port {
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
hdmi_in: port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
hdmi_in_vop: endpoint {
|
hdmi_in_vop: endpoint {
|
||||||
remote-endpoint = <&vop_out_hdmi>;
|
remote-endpoint = <&vop_out_hdmi>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hdmi_out: port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -784,7 +784,6 @@ &pcie_phy {
|
|||||||
};
|
};
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
bus-scan-delay-ms = <1000>;
|
|
||||||
ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
|
ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
|
||||||
num-lanes = <4>;
|
num-lanes = <4>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -430,16 +430,22 @@ &io_domains {
|
|||||||
gpio1830-supply = <&vcc_1v8>;
|
gpio1830-supply = <&vcc_1v8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&pmu_io_domains {
|
&pcie_clkreqn_cpm {
|
||||||
status = "okay";
|
rockchip,pins =
|
||||||
pmu1830-supply = <&vcc_1v8>;
|
<2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
};
|
|
||||||
|
|
||||||
&pwm2 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&q7_thermal_pin>;
|
||||||
|
|
||||||
|
gpios {
|
||||||
|
q7_thermal_pin: q7-thermal-pin {
|
||||||
|
rockchip,pins =
|
||||||
|
<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
i2c8 {
|
i2c8 {
|
||||||
i2c8_xfer_a: i2c8-xfer {
|
i2c8_xfer_a: i2c8-xfer {
|
||||||
rockchip,pins =
|
rockchip,pins =
|
||||||
@ -470,6 +476,15 @@ vcc5v0_host_en: vcc5v0-host-en {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&pmu_io_domains {
|
||||||
|
status = "okay";
|
||||||
|
pmu1830-supply = <&vcc_1v8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&pwm2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&sdhci {
|
&sdhci {
|
||||||
/*
|
/*
|
||||||
* Signal integrity isn't great at 200MHz but 100MHz has proven stable
|
* Signal integrity isn't great at 200MHz but 100MHz has proven stable
|
||||||
|
@ -1769,6 +1769,7 @@ simple-audio-card,codec {
|
|||||||
hdmi: hdmi@ff940000 {
|
hdmi: hdmi@ff940000 {
|
||||||
compatible = "rockchip,rk3399-dw-hdmi";
|
compatible = "rockchip,rk3399-dw-hdmi";
|
||||||
reg = <0x0 0xff940000 0x0 0x20000>;
|
reg = <0x0 0xff940000 0x0 0x20000>;
|
||||||
|
reg-io-width = <4>;
|
||||||
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
clocks = <&cru PCLK_HDMI_CTRL>,
|
clocks = <&cru PCLK_HDMI_CTRL>,
|
||||||
<&cru SCLK_HDMI_SFR>,
|
<&cru SCLK_HDMI_SFR>,
|
||||||
@ -1777,13 +1778,16 @@ hdmi: hdmi@ff940000 {
|
|||||||
<&cru PLL_VPLL>;
|
<&cru PLL_VPLL>;
|
||||||
clock-names = "iahb", "isfr", "cec", "grf", "vpll";
|
clock-names = "iahb", "isfr", "cec", "grf", "vpll";
|
||||||
power-domains = <&power RK3399_PD_HDCP>;
|
power-domains = <&power RK3399_PD_HDCP>;
|
||||||
reg-io-width = <4>;
|
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
hdmi_in: port {
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
hdmi_in: port@0 {
|
||||||
|
reg = <0>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
@ -1796,6 +1800,10 @@ hdmi_in_vopl: endpoint@1 {
|
|||||||
remote-endpoint = <&vopl_out_hdmi>;
|
remote-endpoint = <&vopl_out_hdmi>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hdmi_out: port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include <asm/suspend.h>
|
#include <asm/suspend.h>
|
||||||
#include <asm/sysreg.h>
|
#include <asm/sysreg.h>
|
||||||
#include <asm/virt.h>
|
#include <asm/virt.h>
|
||||||
|
#include <linux/kfence.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hibernate core relies on this value being 0 on resume, and marks it
|
* Hibernate core relies on this value being 0 on resume, and marks it
|
||||||
@ -473,7 +474,8 @@ static void _copy_pte(pte_t *dst_ptep, pte_t *src_ptep, unsigned long addr)
|
|||||||
* the temporary mappings we use during restore.
|
* the temporary mappings we use during restore.
|
||||||
*/
|
*/
|
||||||
set_pte(dst_ptep, pte_mkwrite(pte));
|
set_pte(dst_ptep, pte_mkwrite(pte));
|
||||||
} else if (debug_pagealloc_enabled() && !pte_none(pte)) {
|
} else if ((debug_pagealloc_enabled() ||
|
||||||
|
is_kfence_address((void *)addr)) && !pte_none(pte)) {
|
||||||
/*
|
/*
|
||||||
* debug_pagealloc will removed the PTE_VALID bit if
|
* debug_pagealloc will removed the PTE_VALID bit if
|
||||||
* the page isn't in use by the resume kernel. It may have
|
* the page isn't in use by the resume kernel. It may have
|
||||||
@ -644,7 +646,7 @@ static int trans_pgd_create_copy(pgd_t **dst_pgdp, unsigned long start,
|
|||||||
* Memory allocated by get_safe_page() will be dealt with by the hibernate code,
|
* Memory allocated by get_safe_page() will be dealt with by the hibernate code,
|
||||||
* we don't need to free it here.
|
* we don't need to free it here.
|
||||||
*/
|
*/
|
||||||
int swsusp_arch_resume(void)
|
int __nocfi swsusp_arch_resume(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
void *zero_page;
|
void *zero_page;
|
||||||
|
@ -171,7 +171,11 @@ armv8pmu_events_sysfs_show(struct device *dev,
|
|||||||
}).attr.attr)
|
}).attr.attr)
|
||||||
|
|
||||||
static struct attribute *armv8_pmuv3_event_attrs[] = {
|
static struct attribute *armv8_pmuv3_event_attrs[] = {
|
||||||
ARMV8_EVENT_ATTR(sw_incr, ARMV8_PMUV3_PERFCTR_SW_INCR),
|
/*
|
||||||
|
* Don't expose the sw_incr event in /sys. It's not usable as writes to
|
||||||
|
* PMSWINC_EL0 will trap as PMUSERENR.{SW,EN}=={0,0} and event rotation
|
||||||
|
* means we don't have a fixed event<->counter relationship regardless.
|
||||||
|
*/
|
||||||
ARMV8_EVENT_ATTR(l1i_cache_refill, ARMV8_PMUV3_PERFCTR_L1I_CACHE_REFILL),
|
ARMV8_EVENT_ATTR(l1i_cache_refill, ARMV8_PMUV3_PERFCTR_L1I_CACHE_REFILL),
|
||||||
ARMV8_EVENT_ATTR(l1i_tlb_refill, ARMV8_PMUV3_PERFCTR_L1I_TLB_REFILL),
|
ARMV8_EVENT_ATTR(l1i_tlb_refill, ARMV8_PMUV3_PERFCTR_L1I_TLB_REFILL),
|
||||||
ARMV8_EVENT_ATTR(l1d_cache_refill, ARMV8_PMUV3_PERFCTR_L1D_CACHE_REFILL),
|
ARMV8_EVENT_ATTR(l1d_cache_refill, ARMV8_PMUV3_PERFCTR_L1D_CACHE_REFILL),
|
||||||
|
@ -462,6 +462,9 @@ static int its_sync_lpi_pending_table(struct kvm_vcpu *vcpu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
irq = vgic_get_irq(vcpu->kvm, NULL, intids[i]);
|
irq = vgic_get_irq(vcpu->kvm, NULL, intids[i]);
|
||||||
|
if (!irq)
|
||||||
|
continue;
|
||||||
|
|
||||||
raw_spin_lock_irqsave(&irq->irq_lock, flags);
|
raw_spin_lock_irqsave(&irq->irq_lock, flags);
|
||||||
irq->pending_latch = pendmask & (1U << bit_nr);
|
irq->pending_latch = pendmask & (1U << bit_nr);
|
||||||
vgic_queue_irq_unlock(vcpu->kvm, irq, flags);
|
vgic_queue_irq_unlock(vcpu->kvm, irq, flags);
|
||||||
@ -1374,6 +1377,8 @@ static int vgic_its_cmd_handle_movall(struct kvm *kvm, struct vgic_its *its,
|
|||||||
|
|
||||||
for (i = 0; i < irq_count; i++) {
|
for (i = 0; i < irq_count; i++) {
|
||||||
irq = vgic_get_irq(kvm, NULL, intids[i]);
|
irq = vgic_get_irq(kvm, NULL, intids[i]);
|
||||||
|
if (!irq)
|
||||||
|
continue;
|
||||||
|
|
||||||
update_affinity(irq, vcpu2);
|
update_affinity(irq, vcpu2);
|
||||||
|
|
||||||
|
@ -284,16 +284,12 @@ int kvm_register_vgic_device(unsigned long type)
|
|||||||
int vgic_v2_parse_attr(struct kvm_device *dev, struct kvm_device_attr *attr,
|
int vgic_v2_parse_attr(struct kvm_device *dev, struct kvm_device_attr *attr,
|
||||||
struct vgic_reg_attr *reg_attr)
|
struct vgic_reg_attr *reg_attr)
|
||||||
{
|
{
|
||||||
int cpuid;
|
int cpuid = FIELD_GET(KVM_DEV_ARM_VGIC_CPUID_MASK, attr->attr);
|
||||||
|
|
||||||
cpuid = (attr->attr & KVM_DEV_ARM_VGIC_CPUID_MASK) >>
|
|
||||||
KVM_DEV_ARM_VGIC_CPUID_SHIFT;
|
|
||||||
|
|
||||||
if (cpuid >= atomic_read(&dev->kvm->online_vcpus))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
reg_attr->vcpu = kvm_get_vcpu(dev->kvm, cpuid);
|
|
||||||
reg_attr->addr = attr->attr & KVM_DEV_ARM_VGIC_OFFSET_MASK;
|
reg_attr->addr = attr->attr & KVM_DEV_ARM_VGIC_OFFSET_MASK;
|
||||||
|
reg_attr->vcpu = kvm_get_vcpu_by_id(dev->kvm, cpuid);
|
||||||
|
if (!reg_attr->vcpu)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,7 @@ SECTIONS
|
|||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
ELF_DETAILS
|
ELF_DETAILS
|
||||||
|
.hexagon.attributes 0 : { *(.hexagon.attributes) }
|
||||||
|
|
||||||
DISCARDS
|
DISCARDS
|
||||||
}
|
}
|
||||||
|
@ -242,7 +242,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||||||
" .set pop"
|
" .set pop"
|
||||||
: "=&r" (sum), "=&r" (tmp)
|
: "=&r" (sum), "=&r" (tmp)
|
||||||
: "r" (saddr), "r" (daddr),
|
: "r" (saddr), "r" (daddr),
|
||||||
"0" (htonl(len)), "r" (htonl(proto)), "r" (sum));
|
"0" (htonl(len)), "r" (htonl(proto)), "r" (sum)
|
||||||
|
: "memory");
|
||||||
|
|
||||||
return csum_fold(sum);
|
return csum_fold(sum);
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,7 @@ static inline void instruction_pointer_set(struct pt_regs *regs,
|
|||||||
unsigned long val)
|
unsigned long val)
|
||||||
{
|
{
|
||||||
regs->cp0_epc = val;
|
regs->cp0_epc = val;
|
||||||
|
regs->cp0_cause &= ~CAUSEF_BD;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Query offset/name of register from its name/offset */
|
/* Query offset/name of register from its name/offset */
|
||||||
@ -156,7 +157,7 @@ static inline long regs_return_value(struct pt_regs *regs)
|
|||||||
#define instruction_pointer(regs) ((regs)->cp0_epc)
|
#define instruction_pointer(regs) ((regs)->cp0_epc)
|
||||||
#define profile_pc(regs) instruction_pointer(regs)
|
#define profile_pc(regs) instruction_pointer(regs)
|
||||||
|
|
||||||
extern asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall);
|
extern asmlinkage long syscall_trace_enter(struct pt_regs *regs);
|
||||||
extern asmlinkage void syscall_trace_leave(struct pt_regs *regs);
|
extern asmlinkage void syscall_trace_leave(struct pt_regs *regs);
|
||||||
|
|
||||||
extern void die(const char *, struct pt_regs *) __noreturn;
|
extern void die(const char *, struct pt_regs *) __noreturn;
|
||||||
|
@ -100,6 +100,7 @@ void output_thread_info_defines(void)
|
|||||||
OFFSET(TI_PRE_COUNT, thread_info, preempt_count);
|
OFFSET(TI_PRE_COUNT, thread_info, preempt_count);
|
||||||
OFFSET(TI_ADDR_LIMIT, thread_info, addr_limit);
|
OFFSET(TI_ADDR_LIMIT, thread_info, addr_limit);
|
||||||
OFFSET(TI_REGS, thread_info, regs);
|
OFFSET(TI_REGS, thread_info, regs);
|
||||||
|
OFFSET(TI_SYSCALL, thread_info, syscall);
|
||||||
DEFINE(_THREAD_SIZE, THREAD_SIZE);
|
DEFINE(_THREAD_SIZE, THREAD_SIZE);
|
||||||
DEFINE(_THREAD_MASK, THREAD_MASK);
|
DEFINE(_THREAD_MASK, THREAD_MASK);
|
||||||
DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
|
DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include <asm/cpu-features.h>
|
#include <asm/cpu-features.h>
|
||||||
#include <asm/cpu-info.h>
|
#include <asm/cpu-info.h>
|
||||||
|
#include <asm/fpu.h>
|
||||||
|
|
||||||
#ifdef CONFIG_MIPS_FP_SUPPORT
|
#ifdef CONFIG_MIPS_FP_SUPPORT
|
||||||
|
|
||||||
@ -309,6 +310,11 @@ void mips_set_personality_nan(struct arch_elf_state *state)
|
|||||||
struct cpuinfo_mips *c = &boot_cpu_data;
|
struct cpuinfo_mips *c = &boot_cpu_data;
|
||||||
struct task_struct *t = current;
|
struct task_struct *t = current;
|
||||||
|
|
||||||
|
/* Do this early so t->thread.fpu.fcr31 won't be clobbered in case
|
||||||
|
* we are preempted before the lose_fpu(0) in start_thread.
|
||||||
|
*/
|
||||||
|
lose_fpu(0);
|
||||||
|
|
||||||
t->thread.fpu.fcr31 = c->fpu_csr31;
|
t->thread.fpu.fcr31 = c->fpu_csr31;
|
||||||
switch (state->nan_2008) {
|
switch (state->nan_2008) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -1310,16 +1310,13 @@ long arch_ptrace(struct task_struct *child, long request,
|
|||||||
* Notification of system call entry/exit
|
* Notification of system call entry/exit
|
||||||
* - triggered by current->work.syscall_trace
|
* - triggered by current->work.syscall_trace
|
||||||
*/
|
*/
|
||||||
asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
|
asmlinkage long syscall_trace_enter(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
user_exit();
|
user_exit();
|
||||||
|
|
||||||
current_thread_info()->syscall = syscall;
|
|
||||||
|
|
||||||
if (test_thread_flag(TIF_SYSCALL_TRACE)) {
|
if (test_thread_flag(TIF_SYSCALL_TRACE)) {
|
||||||
if (tracehook_report_syscall_entry(regs))
|
if (tracehook_report_syscall_entry(regs))
|
||||||
return -1;
|
return -1;
|
||||||
syscall = current_thread_info()->syscall;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SECCOMP
|
#ifdef CONFIG_SECCOMP
|
||||||
@ -1328,7 +1325,7 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
|
|||||||
struct seccomp_data sd;
|
struct seccomp_data sd;
|
||||||
unsigned long args[6];
|
unsigned long args[6];
|
||||||
|
|
||||||
sd.nr = syscall;
|
sd.nr = current_thread_info()->syscall;
|
||||||
sd.arch = syscall_get_arch(current);
|
sd.arch = syscall_get_arch(current);
|
||||||
syscall_get_arguments(current, regs, args);
|
syscall_get_arguments(current, regs, args);
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
@ -1338,23 +1335,23 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
|
|||||||
ret = __secure_computing(&sd);
|
ret = __secure_computing(&sd);
|
||||||
if (ret == -1)
|
if (ret == -1)
|
||||||
return ret;
|
return ret;
|
||||||
syscall = current_thread_info()->syscall;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
|
if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
|
||||||
trace_sys_enter(regs, regs->regs[2]);
|
trace_sys_enter(regs, regs->regs[2]);
|
||||||
|
|
||||||
audit_syscall_entry(syscall, regs->regs[4], regs->regs[5],
|
audit_syscall_entry(current_thread_info()->syscall,
|
||||||
|
regs->regs[4], regs->regs[5],
|
||||||
regs->regs[6], regs->regs[7]);
|
regs->regs[6], regs->regs[7]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Negative syscall numbers are mistaken for rejected syscalls, but
|
* Negative syscall numbers are mistaken for rejected syscalls, but
|
||||||
* won't have had the return value set appropriately, so we do so now.
|
* won't have had the return value set appropriately, so we do so now.
|
||||||
*/
|
*/
|
||||||
if (syscall < 0)
|
if (current_thread_info()->syscall < 0)
|
||||||
syscall_set_return_value(current, regs, -ENOSYS, 0);
|
syscall_set_return_value(current, regs, -ENOSYS, 0);
|
||||||
return syscall;
|
return current_thread_info()->syscall;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -80,6 +80,18 @@ loads_done:
|
|||||||
PTR load_a7, bad_stack_a7
|
PTR load_a7, bad_stack_a7
|
||||||
.previous
|
.previous
|
||||||
|
|
||||||
|
/*
|
||||||
|
* syscall number is in v0 unless we called syscall(__NR_###)
|
||||||
|
* where the real syscall number is in a0
|
||||||
|
*/
|
||||||
|
subu t2, v0, __NR_O32_Linux
|
||||||
|
bnez t2, 1f /* __NR_syscall at offset 0 */
|
||||||
|
LONG_S a0, TI_SYSCALL($28) # Save a0 as syscall number
|
||||||
|
b 2f
|
||||||
|
1:
|
||||||
|
LONG_S v0, TI_SYSCALL($28) # Save v0 as syscall number
|
||||||
|
2:
|
||||||
|
|
||||||
lw t0, TI_FLAGS($28) # syscall tracing enabled?
|
lw t0, TI_FLAGS($28) # syscall tracing enabled?
|
||||||
li t1, _TIF_WORK_SYSCALL_ENTRY
|
li t1, _TIF_WORK_SYSCALL_ENTRY
|
||||||
and t0, t1
|
and t0, t1
|
||||||
@ -117,16 +129,7 @@ syscall_trace_entry:
|
|||||||
SAVE_STATIC
|
SAVE_STATIC
|
||||||
move a0, sp
|
move a0, sp
|
||||||
|
|
||||||
/*
|
jal syscall_trace_enter
|
||||||
* syscall number is in v0 unless we called syscall(__NR_###)
|
|
||||||
* where the real syscall number is in a0
|
|
||||||
*/
|
|
||||||
move a1, v0
|
|
||||||
subu t2, v0, __NR_O32_Linux
|
|
||||||
bnez t2, 1f /* __NR_syscall at offset 0 */
|
|
||||||
lw a1, PT_R4(sp)
|
|
||||||
|
|
||||||
1: jal syscall_trace_enter
|
|
||||||
|
|
||||||
bltz v0, 1f # seccomp failed? Skip syscall
|
bltz v0, 1f # seccomp failed? Skip syscall
|
||||||
|
|
||||||
|
@ -44,6 +44,8 @@ NESTED(handle_sysn32, PT_SIZE, sp)
|
|||||||
|
|
||||||
sd a3, PT_R26(sp) # save a3 for syscall restarting
|
sd a3, PT_R26(sp) # save a3 for syscall restarting
|
||||||
|
|
||||||
|
LONG_S v0, TI_SYSCALL($28) # Store syscall number
|
||||||
|
|
||||||
li t1, _TIF_WORK_SYSCALL_ENTRY
|
li t1, _TIF_WORK_SYSCALL_ENTRY
|
||||||
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
|
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
|
||||||
and t0, t1, t0
|
and t0, t1, t0
|
||||||
@ -72,7 +74,6 @@ syscall_common:
|
|||||||
n32_syscall_trace_entry:
|
n32_syscall_trace_entry:
|
||||||
SAVE_STATIC
|
SAVE_STATIC
|
||||||
move a0, sp
|
move a0, sp
|
||||||
move a1, v0
|
|
||||||
jal syscall_trace_enter
|
jal syscall_trace_enter
|
||||||
|
|
||||||
bltz v0, 1f # seccomp failed? Skip syscall
|
bltz v0, 1f # seccomp failed? Skip syscall
|
||||||
|
@ -47,6 +47,8 @@ NESTED(handle_sys64, PT_SIZE, sp)
|
|||||||
|
|
||||||
sd a3, PT_R26(sp) # save a3 for syscall restarting
|
sd a3, PT_R26(sp) # save a3 for syscall restarting
|
||||||
|
|
||||||
|
LONG_S v0, TI_SYSCALL($28) # Store syscall number
|
||||||
|
|
||||||
li t1, _TIF_WORK_SYSCALL_ENTRY
|
li t1, _TIF_WORK_SYSCALL_ENTRY
|
||||||
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
|
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
|
||||||
and t0, t1, t0
|
and t0, t1, t0
|
||||||
@ -83,7 +85,6 @@ n64_syscall_exit:
|
|||||||
syscall_trace_entry:
|
syscall_trace_entry:
|
||||||
SAVE_STATIC
|
SAVE_STATIC
|
||||||
move a0, sp
|
move a0, sp
|
||||||
move a1, v0
|
|
||||||
jal syscall_trace_enter
|
jal syscall_trace_enter
|
||||||
|
|
||||||
bltz v0, 1f # seccomp failed? Skip syscall
|
bltz v0, 1f # seccomp failed? Skip syscall
|
||||||
|
@ -79,6 +79,22 @@ loads_done:
|
|||||||
PTR load_a7, bad_stack_a7
|
PTR load_a7, bad_stack_a7
|
||||||
.previous
|
.previous
|
||||||
|
|
||||||
|
/*
|
||||||
|
* absolute syscall number is in v0 unless we called syscall(__NR_###)
|
||||||
|
* where the real syscall number is in a0
|
||||||
|
* note: NR_syscall is the first O32 syscall but the macro is
|
||||||
|
* only defined when compiling with -mabi=32 (CONFIG_32BIT)
|
||||||
|
* therefore __NR_O32_Linux is used (4000)
|
||||||
|
*/
|
||||||
|
|
||||||
|
subu t2, v0, __NR_O32_Linux
|
||||||
|
bnez t2, 1f /* __NR_syscall at offset 0 */
|
||||||
|
LONG_S a0, TI_SYSCALL($28) # Save a0 as syscall number
|
||||||
|
b 2f
|
||||||
|
1:
|
||||||
|
LONG_S v0, TI_SYSCALL($28) # Save v0 as syscall number
|
||||||
|
2:
|
||||||
|
|
||||||
li t1, _TIF_WORK_SYSCALL_ENTRY
|
li t1, _TIF_WORK_SYSCALL_ENTRY
|
||||||
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
|
LONG_L t0, TI_FLAGS($28) # syscall tracing enabled?
|
||||||
and t0, t1, t0
|
and t0, t1, t0
|
||||||
@ -113,22 +129,7 @@ trace_a_syscall:
|
|||||||
sd a7, PT_R11(sp) # For indirect syscalls
|
sd a7, PT_R11(sp) # For indirect syscalls
|
||||||
|
|
||||||
move a0, sp
|
move a0, sp
|
||||||
/*
|
jal syscall_trace_enter
|
||||||
* absolute syscall number is in v0 unless we called syscall(__NR_###)
|
|
||||||
* where the real syscall number is in a0
|
|
||||||
* note: NR_syscall is the first O32 syscall but the macro is
|
|
||||||
* only defined when compiling with -mabi=32 (CONFIG_32BIT)
|
|
||||||
* therefore __NR_O32_Linux is used (4000)
|
|
||||||
*/
|
|
||||||
.set push
|
|
||||||
.set reorder
|
|
||||||
subu t1, v0, __NR_O32_Linux
|
|
||||||
move a1, v0
|
|
||||||
bnez t1, 1f /* __NR_syscall at offset 0 */
|
|
||||||
ld a1, PT_R4(sp) /* Arg1 for __NR_syscall case */
|
|
||||||
.set pop
|
|
||||||
|
|
||||||
1: jal syscall_trace_enter
|
|
||||||
|
|
||||||
bltz v0, 1f # seccomp failed? Skip syscall
|
bltz v0, 1f # seccomp failed? Skip syscall
|
||||||
|
|
||||||
|
@ -421,7 +421,12 @@ void __init paging_init(void)
|
|||||||
(highend_pfn - max_low_pfn) << (PAGE_SHIFT - 10));
|
(highend_pfn - max_low_pfn) << (PAGE_SHIFT - 10));
|
||||||
max_zone_pfns[ZONE_HIGHMEM] = max_low_pfn;
|
max_zone_pfns[ZONE_HIGHMEM] = max_low_pfn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
max_mapnr = highend_pfn ? highend_pfn : max_low_pfn;
|
||||||
|
#else
|
||||||
|
max_mapnr = max_low_pfn;
|
||||||
#endif
|
#endif
|
||||||
|
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
|
||||||
|
|
||||||
free_area_init(max_zone_pfns);
|
free_area_init(max_zone_pfns);
|
||||||
}
|
}
|
||||||
@ -457,16 +462,6 @@ void __init mem_init(void)
|
|||||||
*/
|
*/
|
||||||
BUILD_BUG_ON(IS_ENABLED(CONFIG_32BIT) && (_PFN_SHIFT > PAGE_SHIFT));
|
BUILD_BUG_ON(IS_ENABLED(CONFIG_32BIT) && (_PFN_SHIFT > PAGE_SHIFT));
|
||||||
|
|
||||||
#ifdef CONFIG_HIGHMEM
|
|
||||||
#ifdef CONFIG_DISCONTIGMEM
|
|
||||||
#error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet"
|
|
||||||
#endif
|
|
||||||
max_mapnr = highend_pfn ? highend_pfn : max_low_pfn;
|
|
||||||
#else
|
|
||||||
max_mapnr = max_low_pfn;
|
|
||||||
#endif
|
|
||||||
high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT);
|
|
||||||
|
|
||||||
maar_init();
|
maar_init();
|
||||||
memblock_free_all();
|
memblock_free_all();
|
||||||
setup_zero_pages(); /* Setup zeroed pages. */
|
setup_zero_pages(); /* Setup zeroed pages. */
|
||||||
|
@ -83,26 +83,28 @@
|
|||||||
* version takes two arguments: a src and destination register.
|
* version takes two arguments: a src and destination register.
|
||||||
* However, the source and destination registers can not be
|
* However, the source and destination registers can not be
|
||||||
* the same register.
|
* the same register.
|
||||||
|
*
|
||||||
|
* We use add,l to avoid clobbering the C/B bits in the PSW.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.macro tophys grvirt, grphys
|
.macro tophys grvirt, grphys
|
||||||
ldil L%(__PAGE_OFFSET), \grphys
|
ldil L%(-__PAGE_OFFSET), \grphys
|
||||||
sub \grvirt, \grphys, \grphys
|
addl \grvirt, \grphys, \grphys
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tovirt grphys, grvirt
|
.macro tovirt grphys, grvirt
|
||||||
ldil L%(__PAGE_OFFSET), \grvirt
|
ldil L%(__PAGE_OFFSET), \grvirt
|
||||||
add \grphys, \grvirt, \grvirt
|
addl \grphys, \grvirt, \grvirt
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tophys_r1 gr
|
.macro tophys_r1 gr
|
||||||
ldil L%(__PAGE_OFFSET), %r1
|
ldil L%(-__PAGE_OFFSET), %r1
|
||||||
sub \gr, %r1, \gr
|
addl \gr, %r1, \gr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro tovirt_r1 gr
|
.macro tovirt_r1 gr
|
||||||
ldil L%(__PAGE_OFFSET), %r1
|
ldil L%(__PAGE_OFFSET), %r1
|
||||||
add \gr, %r1, \gr
|
addl \gr, %r1, \gr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro delay value
|
.macro delay value
|
||||||
|
@ -40,7 +40,7 @@ static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
|||||||
" addc %0, %5, %0\n"
|
" addc %0, %5, %0\n"
|
||||||
" addc %0, %3, %0\n"
|
" addc %0, %3, %0\n"
|
||||||
"1: ldws,ma 4(%1), %3\n"
|
"1: ldws,ma 4(%1), %3\n"
|
||||||
" addib,< 0, %2, 1b\n"
|
" addib,> -1, %2, 1b\n"
|
||||||
" addc %0, %3, %0\n"
|
" addc %0, %3, %0\n"
|
||||||
"\n"
|
"\n"
|
||||||
" extru %0, 31, 16, %4\n"
|
" extru %0, 31, 16, %4\n"
|
||||||
@ -126,6 +126,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||||||
** Try to keep 4 registers with "live" values ahead of the ALU.
|
** Try to keep 4 registers with "live" values ahead of the ALU.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
" depdi 0, 31, 32, %0\n"/* clear upper half of incoming checksum */
|
||||||
" ldd,ma 8(%1), %4\n" /* get 1st saddr word */
|
" ldd,ma 8(%1), %4\n" /* get 1st saddr word */
|
||||||
" ldd,ma 8(%2), %5\n" /* get 1st daddr word */
|
" ldd,ma 8(%2), %5\n" /* get 1st daddr word */
|
||||||
" add %4, %0, %0\n"
|
" add %4, %0, %0\n"
|
||||||
@ -137,8 +138,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||||||
" add,dc %3, %0, %0\n" /* fold in proto+len | carry bit */
|
" add,dc %3, %0, %0\n" /* fold in proto+len | carry bit */
|
||||||
" extrd,u %0, 31, 32, %4\n"/* copy upper half down */
|
" extrd,u %0, 31, 32, %4\n"/* copy upper half down */
|
||||||
" depdi 0, 31, 32, %0\n"/* clear upper half */
|
" depdi 0, 31, 32, %0\n"/* clear upper half */
|
||||||
" add %4, %0, %0\n" /* fold into 32-bits */
|
" add,dc %4, %0, %0\n" /* fold into 32-bits, plus carry */
|
||||||
" addc 0, %0, %0\n" /* add carry */
|
" addc 0, %0, %0\n" /* add final carry */
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -163,7 +164,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
|||||||
" ldw,ma 4(%2), %7\n" /* 4th daddr */
|
" ldw,ma 4(%2), %7\n" /* 4th daddr */
|
||||||
" addc %6, %0, %0\n"
|
" addc %6, %0, %0\n"
|
||||||
" addc %7, %0, %0\n"
|
" addc %7, %0, %0\n"
|
||||||
" addc %3, %0, %0\n" /* fold in proto+len, catch carry */
|
" addc %3, %0, %0\n" /* fold in proto+len */
|
||||||
|
" addc 0, %0, %0\n" /* add carry */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
: "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len),
|
: "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len),
|
||||||
|
@ -123,10 +123,10 @@ static unsigned long f_extend(unsigned long address)
|
|||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
if(unlikely(parisc_narrow_firmware)) {
|
if(unlikely(parisc_narrow_firmware)) {
|
||||||
if((address & 0xff000000) == 0xf0000000)
|
if((address & 0xff000000) == 0xf0000000)
|
||||||
return 0xf0f0f0f000000000UL | (u32)address;
|
return (0xfffffff0UL << 32) | (u32)address;
|
||||||
|
|
||||||
if((address & 0xf0000000) == 0xf0000000)
|
if((address & 0xf0000000) == 0xf0000000)
|
||||||
return 0xffffffff00000000UL | (u32)address;
|
return (0xffffffffUL << 32) | (u32)address;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return address;
|
return address;
|
||||||
|
@ -81,7 +81,7 @@ void notrace __hot ftrace_function_trampoline(unsigned long parent,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
#if defined(CONFIG_DYNAMIC_FTRACE) && defined(CONFIG_FUNCTION_GRAPH_TRACER)
|
||||||
int ftrace_enable_ftrace_graph_caller(void)
|
int ftrace_enable_ftrace_graph_caller(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -390,5 +390,9 @@ extern void *abatron_pteptrs[2];
|
|||||||
#include <asm/nohash/mmu.h>
|
#include <asm/nohash/mmu.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_FA_DUMP) || defined(CONFIG_PRESERVE_FA_DUMP)
|
||||||
|
#define __HAVE_ARCH_RESERVED_KERNEL_PAGES
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif /* _ASM_POWERPC_MMU_H_ */
|
#endif /* _ASM_POWERPC_MMU_H_ */
|
||||||
|
@ -42,9 +42,6 @@ u64 memory_hotplug_max(void);
|
|||||||
#else
|
#else
|
||||||
#define memory_hotplug_max() memblock_end_of_DRAM()
|
#define memory_hotplug_max() memblock_end_of_DRAM()
|
||||||
#endif /* CONFIG_NEED_MULTIPLE_NODES */
|
#endif /* CONFIG_NEED_MULTIPLE_NODES */
|
||||||
#ifdef CONFIG_FA_DUMP
|
|
||||||
#define __HAVE_ARCH_RESERVED_KERNEL_PAGES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||||
extern int create_section_mapping(unsigned long start, unsigned long end,
|
extern int create_section_mapping(unsigned long start, unsigned long end,
|
||||||
|
@ -12,9 +12,16 @@
|
|||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
/* Performance Monitor Registers */
|
/* Performance Monitor Registers */
|
||||||
#define mfpmr(rn) ({unsigned int rval; \
|
#define mfpmr(rn) ({unsigned int rval; \
|
||||||
asm volatile("mfpmr %0," __stringify(rn) \
|
asm volatile(".machine push; " \
|
||||||
|
".machine e300; " \
|
||||||
|
"mfpmr %0," __stringify(rn) ";" \
|
||||||
|
".machine pop; " \
|
||||||
: "=r" (rval)); rval;})
|
: "=r" (rval)); rval;})
|
||||||
#define mtpmr(rn, v) asm volatile("mtpmr " __stringify(rn) ",%0" : : "r" (v))
|
#define mtpmr(rn, v) asm volatile(".machine push; " \
|
||||||
|
".machine e300; " \
|
||||||
|
"mtpmr " __stringify(rn) ",%0; " \
|
||||||
|
".machine pop; " \
|
||||||
|
: : "r" (v))
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
/* Freescale Book E Performance Monitor APU Registers */
|
/* Freescale Book E Performance Monitor APU Registers */
|
||||||
|
@ -504,6 +504,11 @@ static bool is_larx_stcx_instr(int type)
|
|||||||
return type == LARX || type == STCX;
|
return type == LARX || type == STCX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool is_octword_vsx_instr(int type, int size)
|
||||||
|
{
|
||||||
|
return ((type == LOAD_VSX || type == STORE_VSX) && size == 32);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We've failed in reliably handling the hw-breakpoint. Unregister
|
* We've failed in reliably handling the hw-breakpoint. Unregister
|
||||||
* it and throw a warning message to let the user know about it.
|
* it and throw a warning message to let the user know about it.
|
||||||
@ -554,6 +559,63 @@ static bool stepping_handler(struct pt_regs *regs, struct perf_event **bp,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void handle_p10dd1_spurious_exception(struct arch_hw_breakpoint **info,
|
||||||
|
int *hit, unsigned long ea)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
unsigned long hw_end_addr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle spurious exception only when any bp_per_reg is set.
|
||||||
|
* Otherwise this might be created by xmon and not actually a
|
||||||
|
* spurious exception.
|
||||||
|
*/
|
||||||
|
for (i = 0; i < nr_wp_slots(); i++) {
|
||||||
|
if (!info[i])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
hw_end_addr = ALIGN(info[i]->address + info[i]->len, HW_BREAKPOINT_SIZE);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ending address of DAWR range is less than starting
|
||||||
|
* address of op.
|
||||||
|
*/
|
||||||
|
if ((hw_end_addr - 1) >= ea)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Those addresses need to be in the same or in two
|
||||||
|
* consecutive 512B blocks;
|
||||||
|
*/
|
||||||
|
if (((hw_end_addr - 1) >> 10) != (ea >> 10))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 'op address + 64B' generates an address that has a
|
||||||
|
* carry into bit 52 (crosses 2K boundary).
|
||||||
|
*/
|
||||||
|
if ((ea & 0x800) == ((ea + 64) & 0x800))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == nr_wp_slots())
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < nr_wp_slots(); i++) {
|
||||||
|
if (info[i]) {
|
||||||
|
hit[i] = 1;
|
||||||
|
info[i]->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle a DABR or DAWR exception.
|
||||||
|
*
|
||||||
|
* Called in atomic context.
|
||||||
|
*/
|
||||||
int hw_breakpoint_handler(struct die_args *args)
|
int hw_breakpoint_handler(struct die_args *args)
|
||||||
{
|
{
|
||||||
bool err = false;
|
bool err = false;
|
||||||
@ -612,9 +674,15 @@ int hw_breakpoint_handler(struct die_args *args)
|
|||||||
goto reset;
|
goto reset;
|
||||||
|
|
||||||
if (!nr_hit) {
|
if (!nr_hit) {
|
||||||
|
/* Workaround for Power10 DD1 */
|
||||||
|
if (!IS_ENABLED(CONFIG_PPC_8xx) && mfspr(SPRN_PVR) == 0x800100 &&
|
||||||
|
is_octword_vsx_instr(type, size)) {
|
||||||
|
handle_p10dd1_spurious_exception(info, hit, ea);
|
||||||
|
} else {
|
||||||
rc = NOTIFY_DONE;
|
rc = NOTIFY_DONE;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return early after invoking user-callback function without restoring
|
* Return early after invoking user-callback function without restoring
|
||||||
@ -674,6 +742,8 @@ NOKPROBE_SYMBOL(hw_breakpoint_handler);
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle single-step exceptions following a DABR hit.
|
* Handle single-step exceptions following a DABR hit.
|
||||||
|
*
|
||||||
|
* Called in atomic context.
|
||||||
*/
|
*/
|
||||||
static int single_step_dabr_instruction(struct die_args *args)
|
static int single_step_dabr_instruction(struct die_args *args)
|
||||||
{
|
{
|
||||||
@ -731,6 +801,8 @@ NOKPROBE_SYMBOL(single_step_dabr_instruction);
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle debug exception notifications.
|
* Handle debug exception notifications.
|
||||||
|
*
|
||||||
|
* Called in atomic context.
|
||||||
*/
|
*/
|
||||||
int hw_breakpoint_exceptions_notify(
|
int hw_breakpoint_exceptions_notify(
|
||||||
struct notifier_block *unused, unsigned long val, void *data)
|
struct notifier_block *unused, unsigned long val, void *data)
|
||||||
|
@ -1432,10 +1432,12 @@ static int emulate_instruction(struct pt_regs *regs)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_GENERIC_BUG
|
||||||
int is_valid_bugaddr(unsigned long addr)
|
int is_valid_bugaddr(unsigned long addr)
|
||||||
{
|
{
|
||||||
return is_kernel_addr(addr);
|
return is_kernel_addr(addr);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_MATH_EMULATION
|
#ifdef CONFIG_MATH_EMULATION
|
||||||
static int emulate_math(struct pt_regs *regs)
|
static int emulate_math(struct pt_regs *regs)
|
||||||
|
@ -250,7 +250,7 @@ int kvmppc_uvmem_slot_init(struct kvm *kvm, const struct kvm_memory_slot *slot)
|
|||||||
p = kzalloc(sizeof(*p), GFP_KERNEL);
|
p = kzalloc(sizeof(*p), GFP_KERNEL);
|
||||||
if (!p)
|
if (!p)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
p->pfns = vzalloc(array_size(slot->npages, sizeof(*p->pfns)));
|
p->pfns = vcalloc(slot->npages, sizeof(*p->pfns));
|
||||||
if (!p->pfns) {
|
if (!p->pfns) {
|
||||||
kfree(p);
|
kfree(p);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -67,6 +67,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o
|
|||||||
obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o
|
obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o
|
||||||
|
|
||||||
obj-$(CONFIG_ALTIVEC) += xor_vmx.o xor_vmx_glue.o
|
obj-$(CONFIG_ALTIVEC) += xor_vmx.o xor_vmx_glue.o
|
||||||
CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec)
|
CFLAGS_xor_vmx.o += -mhard-float -maltivec $(call cc-option,-mabi=altivec)
|
||||||
|
|
||||||
obj-$(CONFIG_PPC64) += $(obj64-y)
|
obj-$(CONFIG_PPC64) += $(obj64-y)
|
||||||
|
@ -512,6 +512,8 @@ static int do_fp_load(struct instruction_op *op, unsigned long ea,
|
|||||||
} u;
|
} u;
|
||||||
|
|
||||||
nb = GETSIZE(op->type);
|
nb = GETSIZE(op->type);
|
||||||
|
if (nb > sizeof(u))
|
||||||
|
return -EINVAL;
|
||||||
if (!address_ok(regs, ea, nb))
|
if (!address_ok(regs, ea, nb))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
rn = op->reg;
|
rn = op->reg;
|
||||||
@ -562,6 +564,8 @@ static int do_fp_store(struct instruction_op *op, unsigned long ea,
|
|||||||
} u;
|
} u;
|
||||||
|
|
||||||
nb = GETSIZE(op->type);
|
nb = GETSIZE(op->type);
|
||||||
|
if (nb > sizeof(u))
|
||||||
|
return -EINVAL;
|
||||||
if (!address_ok(regs, ea, nb))
|
if (!address_ok(regs, ea, nb))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
rn = op->reg;
|
rn = op->reg;
|
||||||
@ -606,6 +610,9 @@ static nokprobe_inline int do_vec_load(int rn, unsigned long ea,
|
|||||||
u8 b[sizeof(__vector128)];
|
u8 b[sizeof(__vector128)];
|
||||||
} u = {};
|
} u = {};
|
||||||
|
|
||||||
|
if (size > sizeof(u))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (!address_ok(regs, ea & ~0xfUL, 16))
|
if (!address_ok(regs, ea & ~0xfUL, 16))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
/* align to multiple of size */
|
/* align to multiple of size */
|
||||||
@ -633,6 +640,9 @@ static nokprobe_inline int do_vec_store(int rn, unsigned long ea,
|
|||||||
u8 b[sizeof(__vector128)];
|
u8 b[sizeof(__vector128)];
|
||||||
} u;
|
} u;
|
||||||
|
|
||||||
|
if (size > sizeof(u))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (!address_ok(regs, ea & ~0xfUL, 16))
|
if (!address_ok(regs, ea & ~0xfUL, 16))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
/* align to multiple of size */
|
/* align to multiple of size */
|
||||||
|
@ -446,6 +446,7 @@ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
|
|||||||
set_pte_at(vma->vm_mm, addr, ptep, pte);
|
set_pte_at(vma->vm_mm, addr, ptep, pte);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||||
/*
|
/*
|
||||||
* For hash translation mode, we use the deposited table to store hash slot
|
* For hash translation mode, we use the deposited table to store hash slot
|
||||||
* information and they are stored at PTRS_PER_PMD offset from related pmd
|
* information and they are stored at PTRS_PER_PMD offset from related pmd
|
||||||
@ -467,6 +468,7 @@ int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Does the CPU support tlbie?
|
* Does the CPU support tlbie?
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user