Merge tag 'v4.20-rc6' into rdma.git for-next
For dependencies in following patches.
This commit is contained in:
1
.mailmap
1
.mailmap
@@ -159,6 +159,7 @@ Peter Oruba <peter@oruba.de>
|
|||||||
Peter Oruba <peter.oruba@amd.com>
|
Peter Oruba <peter.oruba@amd.com>
|
||||||
Pratyush Anand <pratyush.anand@gmail.com> <pratyush.anand@st.com>
|
Pratyush Anand <pratyush.anand@gmail.com> <pratyush.anand@st.com>
|
||||||
Praveen BP <praveenbp@ti.com>
|
Praveen BP <praveenbp@ti.com>
|
||||||
|
Punit Agrawal <punitagrawal@gmail.com> <punit.agrawal@arm.com>
|
||||||
Qais Yousef <qsyousef@gmail.com> <qais.yousef@imgtec.com>
|
Qais Yousef <qsyousef@gmail.com> <qais.yousef@imgtec.com>
|
||||||
Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net>
|
Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net>
|
||||||
Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com>
|
Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com>
|
||||||
|
8
CREDITS
8
CREDITS
@@ -2138,6 +2138,10 @@ E: paul@laufernet.com
|
|||||||
D: Soundblaster driver fixes, ISAPnP quirk
|
D: Soundblaster driver fixes, ISAPnP quirk
|
||||||
S: California, USA
|
S: California, USA
|
||||||
|
|
||||||
|
N: Jarkko Lavinen
|
||||||
|
E: jarkko.lavinen@nokia.com
|
||||||
|
D: OMAP MMC support
|
||||||
|
|
||||||
N: Jonathan Layes
|
N: Jonathan Layes
|
||||||
D: ARPD support
|
D: ARPD support
|
||||||
|
|
||||||
@@ -2200,6 +2204,10 @@ S: Post Office Box 371
|
|||||||
S: North Little Rock, Arkansas 72115
|
S: North Little Rock, Arkansas 72115
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
|
N: Christopher Li
|
||||||
|
E: sparse@chrisli.org
|
||||||
|
D: Sparse maintainer 2009 - 2018
|
||||||
|
|
||||||
N: Stephan Linz
|
N: Stephan Linz
|
||||||
E: linz@mazet.de
|
E: linz@mazet.de
|
||||||
E: Stephan.Linz@gmx.de
|
E: Stephan.Linz@gmx.de
|
||||||
|
@@ -37,8 +37,8 @@ Description:
|
|||||||
0-| / \/ \/
|
0-| / \/ \/
|
||||||
+---0----1----2----3----4----5----6------------> time (s)
|
+---0----1----2----3----4----5----6------------> time (s)
|
||||||
|
|
||||||
2. To make the LED go instantly from one brigntess value to another,
|
2. To make the LED go instantly from one brightness value to another,
|
||||||
we should use use zero-time lengths (the brightness must be same as
|
we should use zero-time lengths (the brightness must be same as
|
||||||
the previous tuple's). So the format should be:
|
the previous tuple's). So the format should be:
|
||||||
"brightness_1 duration_1 brightness_1 0 brightness_2 duration_2
|
"brightness_1 duration_1 brightness_1 0 brightness_2 duration_2
|
||||||
brightness_2 0 ...". For example:
|
brightness_2 0 ...". For example:
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
What: /sys/class/net/<iface>/tagging
|
What: /sys/class/net/<iface>/dsa/tagging
|
||||||
Date: August 2018
|
Date: August 2018
|
||||||
KernelVersion: 4.20
|
KernelVersion: 4.20
|
||||||
Contact: netdev@vger.kernel.org
|
Contact: netdev@vger.kernel.org
|
||||||
|
@@ -856,7 +856,8 @@
|
|||||||
causing system reset or hang due to sending
|
causing system reset or hang due to sending
|
||||||
INIT from AP to BSP.
|
INIT from AP to BSP.
|
||||||
|
|
||||||
disable_counter_freezing [HW]
|
perf_v4_pmi= [X86,INTEL]
|
||||||
|
Format: <bool>
|
||||||
Disable Intel PMU counter freezing feature.
|
Disable Intel PMU counter freezing feature.
|
||||||
The feature only exists starting from
|
The feature only exists starting from
|
||||||
Arch Perfmon v4 (Skylake and newer).
|
Arch Perfmon v4 (Skylake and newer).
|
||||||
@@ -3504,6 +3505,10 @@
|
|||||||
before loading.
|
before loading.
|
||||||
See Documentation/blockdev/ramdisk.txt.
|
See Documentation/blockdev/ramdisk.txt.
|
||||||
|
|
||||||
|
psi= [KNL] Enable or disable pressure stall information
|
||||||
|
tracking.
|
||||||
|
Format: <bool>
|
||||||
|
|
||||||
psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
|
psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
|
||||||
probe for; one of (bare|imps|exps|lifebook|any).
|
probe for; one of (bare|imps|exps|lifebook|any).
|
||||||
psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports
|
psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports
|
||||||
@@ -4194,9 +4199,13 @@
|
|||||||
|
|
||||||
spectre_v2= [X86] Control mitigation of Spectre variant 2
|
spectre_v2= [X86] Control mitigation of Spectre variant 2
|
||||||
(indirect branch speculation) vulnerability.
|
(indirect branch speculation) vulnerability.
|
||||||
|
The default operation protects the kernel from
|
||||||
|
user space attacks.
|
||||||
|
|
||||||
on - unconditionally enable
|
on - unconditionally enable, implies
|
||||||
off - unconditionally disable
|
spectre_v2_user=on
|
||||||
|
off - unconditionally disable, implies
|
||||||
|
spectre_v2_user=off
|
||||||
auto - kernel detects whether your CPU model is
|
auto - kernel detects whether your CPU model is
|
||||||
vulnerable
|
vulnerable
|
||||||
|
|
||||||
@@ -4206,6 +4215,12 @@
|
|||||||
CONFIG_RETPOLINE configuration option, and the
|
CONFIG_RETPOLINE configuration option, and the
|
||||||
compiler with which the kernel was built.
|
compiler with which the kernel was built.
|
||||||
|
|
||||||
|
Selecting 'on' will also enable the mitigation
|
||||||
|
against user space to user space task attacks.
|
||||||
|
|
||||||
|
Selecting 'off' will disable both the kernel and
|
||||||
|
the user space protections.
|
||||||
|
|
||||||
Specific mitigations can also be selected manually:
|
Specific mitigations can also be selected manually:
|
||||||
|
|
||||||
retpoline - replace indirect branches
|
retpoline - replace indirect branches
|
||||||
@@ -4215,6 +4230,48 @@
|
|||||||
Not specifying this option is equivalent to
|
Not specifying this option is equivalent to
|
||||||
spectre_v2=auto.
|
spectre_v2=auto.
|
||||||
|
|
||||||
|
spectre_v2_user=
|
||||||
|
[X86] Control mitigation of Spectre variant 2
|
||||||
|
(indirect branch speculation) vulnerability between
|
||||||
|
user space tasks
|
||||||
|
|
||||||
|
on - Unconditionally enable mitigations. Is
|
||||||
|
enforced by spectre_v2=on
|
||||||
|
|
||||||
|
off - Unconditionally disable mitigations. Is
|
||||||
|
enforced by spectre_v2=off
|
||||||
|
|
||||||
|
prctl - Indirect branch speculation is enabled,
|
||||||
|
but mitigation can be enabled via prctl
|
||||||
|
per thread. The mitigation control state
|
||||||
|
is inherited on fork.
|
||||||
|
|
||||||
|
prctl,ibpb
|
||||||
|
- Like "prctl" above, but only STIBP is
|
||||||
|
controlled per thread. IBPB is issued
|
||||||
|
always when switching between different user
|
||||||
|
space processes.
|
||||||
|
|
||||||
|
seccomp
|
||||||
|
- Same as "prctl" above, but all seccomp
|
||||||
|
threads will enable the mitigation unless
|
||||||
|
they explicitly opt out.
|
||||||
|
|
||||||
|
seccomp,ibpb
|
||||||
|
- Like "seccomp" above, but only STIBP is
|
||||||
|
controlled per thread. IBPB is issued
|
||||||
|
always when switching between different
|
||||||
|
user space processes.
|
||||||
|
|
||||||
|
auto - Kernel selects the mitigation depending on
|
||||||
|
the available CPU features and vulnerability.
|
||||||
|
|
||||||
|
Default mitigation:
|
||||||
|
If CONFIG_SECCOMP=y then "seccomp", otherwise "prctl"
|
||||||
|
|
||||||
|
Not specifying this option is equivalent to
|
||||||
|
spectre_v2_user=auto.
|
||||||
|
|
||||||
spec_store_bypass_disable=
|
spec_store_bypass_disable=
|
||||||
[HW] Control Speculative Store Bypass (SSB) Disable mitigation
|
[HW] Control Speculative Store Bypass (SSB) Disable mitigation
|
||||||
(Speculative Store Bypass vulnerability)
|
(Speculative Store Bypass vulnerability)
|
||||||
@@ -4713,6 +4770,8 @@
|
|||||||
prevent spurious wakeup);
|
prevent spurious wakeup);
|
||||||
n = USB_QUIRK_DELAY_CTRL_MSG (Device needs a
|
n = USB_QUIRK_DELAY_CTRL_MSG (Device needs a
|
||||||
pause after every control message);
|
pause after every control message);
|
||||||
|
o = USB_QUIRK_HUB_SLOW_RESET (Hub needs extra
|
||||||
|
delay after resetting its port);
|
||||||
Example: quirks=0781:5580:bk,0a5c:5834:gij
|
Example: quirks=0781:5580:bk,0a5c:5834:gij
|
||||||
|
|
||||||
usbhid.mousepoll=
|
usbhid.mousepoll=
|
||||||
|
@@ -150,7 +150,7 @@ data structures necessary to handle the given policy and, possibly, to add
|
|||||||
a governor ``sysfs`` interface to it. Next, the governor is started by
|
a governor ``sysfs`` interface to it. Next, the governor is started by
|
||||||
invoking its ``->start()`` callback.
|
invoking its ``->start()`` callback.
|
||||||
|
|
||||||
That callback it expected to register per-CPU utilization update callbacks for
|
That callback is expected to register per-CPU utilization update callbacks for
|
||||||
all of the online CPUs belonging to the given policy with the CPU scheduler.
|
all of the online CPUs belonging to the given policy with the CPU scheduler.
|
||||||
The utilization update callbacks will be invoked by the CPU scheduler on
|
The utilization update callbacks will be invoked by the CPU scheduler on
|
||||||
important events, like task enqueue and dequeue, on every iteration of the
|
important events, like task enqueue and dequeue, on every iteration of the
|
||||||
|
@@ -32,16 +32,17 @@ Disclosure and embargoed information
|
|||||||
The security list is not a disclosure channel. For that, see Coordination
|
The security list is not a disclosure channel. For that, see Coordination
|
||||||
below.
|
below.
|
||||||
|
|
||||||
Once a robust fix has been developed, our preference is to release the
|
Once a robust fix has been developed, the release process starts. Fixes
|
||||||
fix in a timely fashion, treating it no differently than any of the other
|
for publicly known bugs are released immediately.
|
||||||
thousands of changes and fixes the Linux kernel project releases every
|
|
||||||
month.
|
|
||||||
|
|
||||||
However, at the request of the reporter, we will postpone releasing the
|
Although our preference is to release fixes for publicly undisclosed bugs
|
||||||
fix for up to 5 business days after the date of the report or after the
|
as soon as they become available, this may be postponed at the request of
|
||||||
embargo has lifted; whichever comes first. The only exception to that
|
the reporter or an affected party for up to 7 calendar days from the start
|
||||||
rule is if the bug is publicly known, in which case the preference is to
|
of the release process, with an exceptional extension to 14 calendar days
|
||||||
release the fix as soon as it's available.
|
if it is agreed that the criticality of the bug requires more time. The
|
||||||
|
only valid reason for deferring the publication of a fix is to accommodate
|
||||||
|
the logistics of QA and large scale rollouts which require release
|
||||||
|
coordination.
|
||||||
|
|
||||||
Whilst embargoed information may be shared with trusted individuals in
|
Whilst embargoed information may be shared with trusted individuals in
|
||||||
order to develop a fix, such information will not be published alongside
|
order to develop a fix, such information will not be published alongside
|
||||||
|
@@ -57,6 +57,7 @@ stable kernels.
|
|||||||
| ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 |
|
| ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 |
|
||||||
| ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 |
|
| ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 |
|
||||||
| ARM | Cortex-A76 | #1188873 | ARM64_ERRATUM_1188873 |
|
| ARM | Cortex-A76 | #1188873 | ARM64_ERRATUM_1188873 |
|
||||||
|
| ARM | Cortex-A76 | #1286807 | ARM64_ERRATUM_1286807 |
|
||||||
| ARM | MMU-500 | #841119,#826419 | N/A |
|
| ARM | MMU-500 | #841119,#826419 | N/A |
|
||||||
| | | | |
|
| | | | |
|
||||||
| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
|
| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
|
||||||
|
@@ -74,7 +74,8 @@ using :c:func:`xa_load`. xa_store will overwrite any entry with the
|
|||||||
new entry and return the previous entry stored at that index. You can
|
new entry and return the previous entry stored at that index. You can
|
||||||
use :c:func:`xa_erase` instead of calling :c:func:`xa_store` with a
|
use :c:func:`xa_erase` instead of calling :c:func:`xa_store` with a
|
||||||
``NULL`` entry. There is no difference between an entry that has never
|
``NULL`` entry. There is no difference between an entry that has never
|
||||||
been stored to and one that has most recently had ``NULL`` stored to it.
|
been stored to, one that has been erased and one that has most recently
|
||||||
|
had ``NULL`` stored to it.
|
||||||
|
|
||||||
You can conditionally replace an entry at an index by using
|
You can conditionally replace an entry at an index by using
|
||||||
:c:func:`xa_cmpxchg`. Like :c:func:`cmpxchg`, it will only succeed if
|
:c:func:`xa_cmpxchg`. Like :c:func:`cmpxchg`, it will only succeed if
|
||||||
@@ -105,23 +106,44 @@ may result in the entry being marked at some, but not all of the other
|
|||||||
indices. Storing into one index may result in the entry retrieved by
|
indices. Storing into one index may result in the entry retrieved by
|
||||||
some, but not all of the other indices changing.
|
some, but not all of the other indices changing.
|
||||||
|
|
||||||
|
Sometimes you need to ensure that a subsequent call to :c:func:`xa_store`
|
||||||
|
will not need to allocate memory. The :c:func:`xa_reserve` function
|
||||||
|
will store a reserved entry at the indicated index. Users of the normal
|
||||||
|
API will see this entry as containing ``NULL``. If you do not need to
|
||||||
|
use the reserved entry, you can call :c:func:`xa_release` to remove the
|
||||||
|
unused entry. If another user has stored to the entry in the meantime,
|
||||||
|
:c:func:`xa_release` will do nothing; if instead you want the entry to
|
||||||
|
become ``NULL``, you should use :c:func:`xa_erase`.
|
||||||
|
|
||||||
|
If all entries in the array are ``NULL``, the :c:func:`xa_empty` function
|
||||||
|
will return ``true``.
|
||||||
|
|
||||||
Finally, you can remove all entries from an XArray by calling
|
Finally, you can remove all entries from an XArray by calling
|
||||||
:c:func:`xa_destroy`. If the XArray entries are pointers, you may wish
|
:c:func:`xa_destroy`. If the XArray entries are pointers, you may wish
|
||||||
to free the entries first. You can do this by iterating over all present
|
to free the entries first. You can do this by iterating over all present
|
||||||
entries in the XArray using the :c:func:`xa_for_each` iterator.
|
entries in the XArray using the :c:func:`xa_for_each` iterator.
|
||||||
|
|
||||||
ID assignment
|
Allocating XArrays
|
||||||
-------------
|
------------------
|
||||||
|
|
||||||
|
If you use :c:func:`DEFINE_XARRAY_ALLOC` to define the XArray, or
|
||||||
|
initialise it by passing ``XA_FLAGS_ALLOC`` to :c:func:`xa_init_flags`,
|
||||||
|
the XArray changes to track whether entries are in use or not.
|
||||||
|
|
||||||
You can call :c:func:`xa_alloc` to store the entry at any unused index
|
You can call :c:func:`xa_alloc` to store the entry at any unused index
|
||||||
in the XArray. If you need to modify the array from interrupt context,
|
in the XArray. If you need to modify the array from interrupt context,
|
||||||
you can use :c:func:`xa_alloc_bh` or :c:func:`xa_alloc_irq` to disable
|
you can use :c:func:`xa_alloc_bh` or :c:func:`xa_alloc_irq` to disable
|
||||||
interrupts while allocating the ID. Unlike :c:func:`xa_store`, allocating
|
interrupts while allocating the ID.
|
||||||
a ``NULL`` pointer does not delete an entry. Instead it reserves an
|
|
||||||
entry like :c:func:`xa_reserve` and you can release it using either
|
Using :c:func:`xa_store`, :c:func:`xa_cmpxchg` or :c:func:`xa_insert`
|
||||||
:c:func:`xa_erase` or :c:func:`xa_release`. To use ID assignment, the
|
will mark the entry as being allocated. Unlike a normal XArray, storing
|
||||||
XArray must be defined with :c:func:`DEFINE_XARRAY_ALLOC`, or initialised
|
``NULL`` will mark the entry as being in use, like :c:func:`xa_reserve`.
|
||||||
by passing ``XA_FLAGS_ALLOC`` to :c:func:`xa_init_flags`,
|
To free an entry, use :c:func:`xa_erase` (or :c:func:`xa_release` if
|
||||||
|
you only want to free the entry if it's ``NULL``).
|
||||||
|
|
||||||
|
You cannot use ``XA_MARK_0`` with an allocating XArray as this mark
|
||||||
|
is used to track whether an entry is free or not. The other marks are
|
||||||
|
available for your use.
|
||||||
|
|
||||||
Memory allocation
|
Memory allocation
|
||||||
-----------------
|
-----------------
|
||||||
@@ -158,6 +180,8 @@ Takes RCU read lock:
|
|||||||
|
|
||||||
Takes xa_lock internally:
|
Takes xa_lock internally:
|
||||||
* :c:func:`xa_store`
|
* :c:func:`xa_store`
|
||||||
|
* :c:func:`xa_store_bh`
|
||||||
|
* :c:func:`xa_store_irq`
|
||||||
* :c:func:`xa_insert`
|
* :c:func:`xa_insert`
|
||||||
* :c:func:`xa_erase`
|
* :c:func:`xa_erase`
|
||||||
* :c:func:`xa_erase_bh`
|
* :c:func:`xa_erase_bh`
|
||||||
@@ -167,6 +191,9 @@ Takes xa_lock internally:
|
|||||||
* :c:func:`xa_alloc`
|
* :c:func:`xa_alloc`
|
||||||
* :c:func:`xa_alloc_bh`
|
* :c:func:`xa_alloc_bh`
|
||||||
* :c:func:`xa_alloc_irq`
|
* :c:func:`xa_alloc_irq`
|
||||||
|
* :c:func:`xa_reserve`
|
||||||
|
* :c:func:`xa_reserve_bh`
|
||||||
|
* :c:func:`xa_reserve_irq`
|
||||||
* :c:func:`xa_destroy`
|
* :c:func:`xa_destroy`
|
||||||
* :c:func:`xa_set_mark`
|
* :c:func:`xa_set_mark`
|
||||||
* :c:func:`xa_clear_mark`
|
* :c:func:`xa_clear_mark`
|
||||||
@@ -177,6 +204,7 @@ Assumes xa_lock held on entry:
|
|||||||
* :c:func:`__xa_erase`
|
* :c:func:`__xa_erase`
|
||||||
* :c:func:`__xa_cmpxchg`
|
* :c:func:`__xa_cmpxchg`
|
||||||
* :c:func:`__xa_alloc`
|
* :c:func:`__xa_alloc`
|
||||||
|
* :c:func:`__xa_reserve`
|
||||||
* :c:func:`__xa_set_mark`
|
* :c:func:`__xa_set_mark`
|
||||||
* :c:func:`__xa_clear_mark`
|
* :c:func:`__xa_clear_mark`
|
||||||
|
|
||||||
@@ -234,7 +262,8 @@ Sharing the XArray with interrupt context is also possible, either
|
|||||||
using :c:func:`xa_lock_irqsave` in both the interrupt handler and process
|
using :c:func:`xa_lock_irqsave` in both the interrupt handler and process
|
||||||
context, or :c:func:`xa_lock_irq` in process context and :c:func:`xa_lock`
|
context, or :c:func:`xa_lock_irq` in process context and :c:func:`xa_lock`
|
||||||
in the interrupt handler. Some of the more common patterns have helper
|
in the interrupt handler. Some of the more common patterns have helper
|
||||||
functions such as :c:func:`xa_erase_bh` and :c:func:`xa_erase_irq`.
|
functions such as :c:func:`xa_store_bh`, :c:func:`xa_store_irq`,
|
||||||
|
:c:func:`xa_erase_bh` and :c:func:`xa_erase_irq`.
|
||||||
|
|
||||||
Sometimes you need to protect access to the XArray with a mutex because
|
Sometimes you need to protect access to the XArray with a mutex because
|
||||||
that lock sits above another mutex in the locking hierarchy. That does
|
that lock sits above another mutex in the locking hierarchy. That does
|
||||||
@@ -322,7 +351,8 @@ to :c:func:`xas_retry`, and retry the operation if it returns ``true``.
|
|||||||
- :c:func:`xa_is_zero`
|
- :c:func:`xa_is_zero`
|
||||||
- Zero entries appear as ``NULL`` through the Normal API, but occupy
|
- Zero entries appear as ``NULL`` through the Normal API, but occupy
|
||||||
an entry in the XArray which can be used to reserve the index for
|
an entry in the XArray which can be used to reserve the index for
|
||||||
future use.
|
future use. This is used by allocating XArrays for allocated entries
|
||||||
|
which are ``NULL``.
|
||||||
|
|
||||||
Other internal entries may be added in the future. As far as possible, they
|
Other internal entries may be added in the future. As far as possible, they
|
||||||
will be handled by :c:func:`xas_retry`.
|
will be handled by :c:func:`xas_retry`.
|
||||||
|
@@ -86,9 +86,11 @@ transitions.
|
|||||||
This will give a fine grained information about all the CPU frequency
|
This will give a fine grained information about all the CPU frequency
|
||||||
transitions. The cat output here is a two dimensional matrix, where an entry
|
transitions. The cat output here is a two dimensional matrix, where an entry
|
||||||
<i,j> (row i, column j) represents the count of number of transitions from
|
<i,j> (row i, column j) represents the count of number of transitions from
|
||||||
Freq_i to Freq_j. Freq_i is in descending order with increasing rows and
|
Freq_i to Freq_j. Freq_i rows and Freq_j columns follow the sorting order in
|
||||||
Freq_j is in descending order with increasing columns. The output here also
|
which the driver has provided the frequency table initially to the cpufreq core
|
||||||
contains the actual freq values for each row and column for better readability.
|
and so can be sorted (ascending or descending) or unsorted. The output here
|
||||||
|
also contains the actual freq values for each row and column for better
|
||||||
|
readability.
|
||||||
|
|
||||||
If the transition table is bigger than PAGE_SIZE, reading this will
|
If the transition table is bigger than PAGE_SIZE, reading this will
|
||||||
return an -EFBIG error.
|
return an -EFBIG error.
|
||||||
|
@@ -27,7 +27,7 @@ SoCs:
|
|||||||
compatible = "renesas,r8a77470"
|
compatible = "renesas,r8a77470"
|
||||||
- RZ/G2M (R8A774A1)
|
- RZ/G2M (R8A774A1)
|
||||||
compatible = "renesas,r8a774a1"
|
compatible = "renesas,r8a774a1"
|
||||||
- RZ/G2E (RA8774C0)
|
- RZ/G2E (R8A774C0)
|
||||||
compatible = "renesas,r8a774c0"
|
compatible = "renesas,r8a774c0"
|
||||||
- R-Car M1A (R8A77781)
|
- R-Car M1A (R8A77781)
|
||||||
compatible = "renesas,r8a7778"
|
compatible = "renesas,r8a7778"
|
||||||
|
@@ -168,3 +168,19 @@ a shared clock is forbidden.
|
|||||||
|
|
||||||
Configuration of common clocks, which affect multiple consumer devices can
|
Configuration of common clocks, which affect multiple consumer devices can
|
||||||
be similarly specified in the clock provider node.
|
be similarly specified in the clock provider node.
|
||||||
|
|
||||||
|
==Protected clocks==
|
||||||
|
|
||||||
|
Some platforms or firmwares may not fully expose all the clocks to the OS, such
|
||||||
|
as in situations where those clks are used by drivers running in ARM secure
|
||||||
|
execution levels. Such a configuration can be specified in device tree with the
|
||||||
|
protected-clocks property in the form of a clock specifier list. This property should
|
||||||
|
only be specified in the node that is providing the clocks being protected:
|
||||||
|
|
||||||
|
clock-controller@a000f000 {
|
||||||
|
compatible = "vendor,clk95;
|
||||||
|
reg = <0xa000f000 0x1000>
|
||||||
|
#clocks-cells = <1>;
|
||||||
|
...
|
||||||
|
protected-clocks = <UART3_CLK>, <SPI5_CLK>;
|
||||||
|
};
|
||||||
|
@@ -1,65 +0,0 @@
|
|||||||
Generic ARM big LITTLE cpufreq driver's DT glue
|
|
||||||
-----------------------------------------------
|
|
||||||
|
|
||||||
This is DT specific glue layer for generic cpufreq driver for big LITTLE
|
|
||||||
systems.
|
|
||||||
|
|
||||||
Both required and optional properties listed below must be defined
|
|
||||||
under node /cpus/cpu@x. Where x is the first cpu inside a cluster.
|
|
||||||
|
|
||||||
FIXME: Cpus should boot in the order specified in DT and all cpus for a cluster
|
|
||||||
must be present contiguously. Generic DT driver will check only node 'x' for
|
|
||||||
cpu:x.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- operating-points: Refer to Documentation/devicetree/bindings/opp/opp.txt
|
|
||||||
for details
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- clock-latency: Specify the possible maximum transition latency for clock,
|
|
||||||
in unit of nanoseconds.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
cpus {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
cpu@0 {
|
|
||||||
compatible = "arm,cortex-a15";
|
|
||||||
reg = <0>;
|
|
||||||
next-level-cache = <&L2>;
|
|
||||||
operating-points = <
|
|
||||||
/* kHz uV */
|
|
||||||
792000 1100000
|
|
||||||
396000 950000
|
|
||||||
198000 850000
|
|
||||||
>;
|
|
||||||
clock-latency = <61036>; /* two CLK32 periods */
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu@1 {
|
|
||||||
compatible = "arm,cortex-a15";
|
|
||||||
reg = <1>;
|
|
||||||
next-level-cache = <&L2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu@100 {
|
|
||||||
compatible = "arm,cortex-a7";
|
|
||||||
reg = <100>;
|
|
||||||
next-level-cache = <&L2>;
|
|
||||||
operating-points = <
|
|
||||||
/* kHz uV */
|
|
||||||
792000 950000
|
|
||||||
396000 750000
|
|
||||||
198000 450000
|
|
||||||
>;
|
|
||||||
clock-latency = <61036>; /* two CLK32 periods */
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu@101 {
|
|
||||||
compatible = "arm,cortex-a7";
|
|
||||||
reg = <101>;
|
|
||||||
next-level-cache = <&L2>;
|
|
||||||
};
|
|
||||||
};
|
|
@@ -1,8 +1,12 @@
|
|||||||
I2C for OMAP platforms
|
I2C for OMAP platforms
|
||||||
|
|
||||||
Required properties :
|
Required properties :
|
||||||
- compatible : Must be "ti,omap2420-i2c", "ti,omap2430-i2c", "ti,omap3-i2c"
|
- compatible : Must be
|
||||||
or "ti,omap4-i2c"
|
"ti,omap2420-i2c" for OMAP2420 SoCs
|
||||||
|
"ti,omap2430-i2c" for OMAP2430 SoCs
|
||||||
|
"ti,omap3-i2c" for OMAP3 SoCs
|
||||||
|
"ti,omap4-i2c" for OMAP4+ SoCs
|
||||||
|
"ti,am654-i2c", "ti,omap4-i2c" for AM654 SoCs
|
||||||
- ti,hwmods : Must be "i2c<n>", n being the instance number (1-based)
|
- ti,hwmods : Must be "i2c<n>", n being the instance number (1-based)
|
||||||
- #address-cells = <1>;
|
- #address-cells = <1>;
|
||||||
- #size-cells = <0>;
|
- #size-cells = <0>;
|
||||||
|
@@ -12,7 +12,7 @@ The /chosen node should contain a 'linux,sysrq-reset-seq' child node to define
|
|||||||
a set of keys.
|
a set of keys.
|
||||||
|
|
||||||
Required property:
|
Required property:
|
||||||
sysrq-reset-seq: array of Linux keycodes, one keycode per cell.
|
keyset: array of Linux keycodes, one keycode per cell.
|
||||||
|
|
||||||
Optional property:
|
Optional property:
|
||||||
timeout-ms: duration keys must be pressed together in milliseconds before
|
timeout-ms: duration keys must be pressed together in milliseconds before
|
||||||
|
@@ -1,29 +0,0 @@
|
|||||||
device-tree bindings for rockchip VPU codec
|
|
||||||
|
|
||||||
Rockchip (Video Processing Unit) present in various Rockchip platforms,
|
|
||||||
such as RK3288 and RK3399.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: value should be one of the following
|
|
||||||
"rockchip,rk3288-vpu";
|
|
||||||
"rockchip,rk3399-vpu";
|
|
||||||
- interrupts: encoding and decoding interrupt specifiers
|
|
||||||
- interrupt-names: should be "vepu" and "vdpu"
|
|
||||||
- clocks: phandle to VPU aclk, hclk clocks
|
|
||||||
- clock-names: should be "aclk" and "hclk"
|
|
||||||
- power-domains: phandle to power domain node
|
|
||||||
- iommus: phandle to a iommu node
|
|
||||||
|
|
||||||
Example:
|
|
||||||
SoC-specific DT entry:
|
|
||||||
vpu: video-codec@ff9a0000 {
|
|
||||||
compatible = "rockchip,rk3288-vpu";
|
|
||||||
reg = <0x0 0xff9a0000 0x0 0x800>;
|
|
||||||
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
interrupt-names = "vepu", "vdpu";
|
|
||||||
clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
|
|
||||||
clock-names = "aclk", "hclk";
|
|
||||||
power-domains = <&power RK3288_PD_VIDEO>;
|
|
||||||
iommus = <&vpu_mmu>;
|
|
||||||
};
|
|
@@ -17,7 +17,7 @@ Example:
|
|||||||
reg = <1>;
|
reg = <1>;
|
||||||
clocks = <&clk32m>;
|
clocks = <&clk32m>;
|
||||||
interrupt-parent = <&gpio4>;
|
interrupt-parent = <&gpio4>;
|
||||||
interrupts = <13 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
vdd-supply = <®5v0>;
|
vdd-supply = <®5v0>;
|
||||||
xceiver-supply = <®5v0>;
|
xceiver-supply = <®5v0>;
|
||||||
};
|
};
|
||||||
|
@@ -5,6 +5,7 @@ Required properties:
|
|||||||
- compatible: "renesas,can-r8a7743" if CAN controller is a part of R8A7743 SoC.
|
- compatible: "renesas,can-r8a7743" if CAN controller is a part of R8A7743 SoC.
|
||||||
"renesas,can-r8a7744" if CAN controller is a part of R8A7744 SoC.
|
"renesas,can-r8a7744" if CAN controller is a part of R8A7744 SoC.
|
||||||
"renesas,can-r8a7745" if CAN controller is a part of R8A7745 SoC.
|
"renesas,can-r8a7745" if CAN controller is a part of R8A7745 SoC.
|
||||||
|
"renesas,can-r8a774a1" if CAN controller is a part of R8A774A1 SoC.
|
||||||
"renesas,can-r8a7778" if CAN controller is a part of R8A7778 SoC.
|
"renesas,can-r8a7778" if CAN controller is a part of R8A7778 SoC.
|
||||||
"renesas,can-r8a7779" if CAN controller is a part of R8A7779 SoC.
|
"renesas,can-r8a7779" if CAN controller is a part of R8A7779 SoC.
|
||||||
"renesas,can-r8a7790" if CAN controller is a part of R8A7790 SoC.
|
"renesas,can-r8a7790" if CAN controller is a part of R8A7790 SoC.
|
||||||
@@ -14,26 +15,32 @@ Required properties:
|
|||||||
"renesas,can-r8a7794" if CAN controller is a part of R8A7794 SoC.
|
"renesas,can-r8a7794" if CAN controller is a part of R8A7794 SoC.
|
||||||
"renesas,can-r8a7795" if CAN controller is a part of R8A7795 SoC.
|
"renesas,can-r8a7795" if CAN controller is a part of R8A7795 SoC.
|
||||||
"renesas,can-r8a7796" if CAN controller is a part of R8A7796 SoC.
|
"renesas,can-r8a7796" if CAN controller is a part of R8A7796 SoC.
|
||||||
|
"renesas,can-r8a77965" if CAN controller is a part of R8A77965 SoC.
|
||||||
"renesas,rcar-gen1-can" for a generic R-Car Gen1 compatible device.
|
"renesas,rcar-gen1-can" for a generic R-Car Gen1 compatible device.
|
||||||
"renesas,rcar-gen2-can" for a generic R-Car Gen2 or RZ/G1
|
"renesas,rcar-gen2-can" for a generic R-Car Gen2 or RZ/G1
|
||||||
compatible device.
|
compatible device.
|
||||||
"renesas,rcar-gen3-can" for a generic R-Car Gen3 compatible device.
|
"renesas,rcar-gen3-can" for a generic R-Car Gen3 or RZ/G2
|
||||||
|
compatible device.
|
||||||
When compatible with the generic version, nodes must list the
|
When compatible with the generic version, nodes must list the
|
||||||
SoC-specific version corresponding to the platform first
|
SoC-specific version corresponding to the platform first
|
||||||
followed by the generic version.
|
followed by the generic version.
|
||||||
|
|
||||||
- reg: physical base address and size of the R-Car CAN register map.
|
- reg: physical base address and size of the R-Car CAN register map.
|
||||||
- interrupts: interrupt specifier for the sole interrupt.
|
- interrupts: interrupt specifier for the sole interrupt.
|
||||||
- clocks: phandles and clock specifiers for 3 CAN clock inputs.
|
- clocks: phandles and clock specifiers for 2 CAN clock inputs for RZ/G2
|
||||||
- clock-names: 3 clock input name strings: "clkp1", "clkp2", "can_clk".
|
devices.
|
||||||
|
phandles and clock specifiers for 3 CAN clock inputs for every other
|
||||||
|
SoC.
|
||||||
|
- clock-names: 2 clock input name strings for RZ/G2: "clkp1", "can_clk".
|
||||||
|
3 clock input name strings for every other SoC: "clkp1", "clkp2",
|
||||||
|
"can_clk".
|
||||||
- pinctrl-0: pin control group to be used for this controller.
|
- pinctrl-0: pin control group to be used for this controller.
|
||||||
- pinctrl-names: must be "default".
|
- pinctrl-names: must be "default".
|
||||||
|
|
||||||
Required properties for "renesas,can-r8a7795" and "renesas,can-r8a7796"
|
Required properties for R8A7795, R8A7796 and R8A77965:
|
||||||
compatible:
|
For the denoted SoCs, "clkp2" can be CANFD clock. This is a div6 clock and can
|
||||||
In R8A7795 and R8A7796 SoCs, "clkp2" can be CANFD clock. This is a div6 clock
|
be used by both CAN and CAN FD controller at the same time. It needs to be
|
||||||
and can be used by both CAN and CAN FD controller at the same time. It needs to
|
scaled to maximum frequency if any of these controllers use it. This is done
|
||||||
be scaled to maximum frequency if any of these controllers use it. This is done
|
|
||||||
using the below properties:
|
using the below properties:
|
||||||
|
|
||||||
- assigned-clocks: phandle of clkp2(CANFD) clock.
|
- assigned-clocks: phandle of clkp2(CANFD) clock.
|
||||||
@@ -42,8 +49,9 @@ using the below properties:
|
|||||||
Optional properties:
|
Optional properties:
|
||||||
- renesas,can-clock-select: R-Car CAN Clock Source Select. Valid values are:
|
- renesas,can-clock-select: R-Car CAN Clock Source Select. Valid values are:
|
||||||
<0x0> (default) : Peripheral clock (clkp1)
|
<0x0> (default) : Peripheral clock (clkp1)
|
||||||
<0x1> : Peripheral clock (clkp2)
|
<0x1> : Peripheral clock (clkp2) (not supported by
|
||||||
<0x3> : Externally input clock
|
RZ/G2 devices)
|
||||||
|
<0x3> : External input clock
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
|
@@ -7,7 +7,7 @@ limitations.
|
|||||||
Current Binding
|
Current Binding
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Switches are true Linux devices and can be probes by any means. Once
|
Switches are true Linux devices and can be probed by any means. Once
|
||||||
probed, they register to the DSA framework, passing a node
|
probed, they register to the DSA framework, passing a node
|
||||||
pointer. This node is expected to fulfil the following binding, and
|
pointer. This node is expected to fulfil the following binding, and
|
||||||
may contain additional properties as required by the device it is
|
may contain additional properties as required by the device it is
|
||||||
|
@@ -40,24 +40,36 @@ Required properties:
|
|||||||
"ref" for 19.2 MHz ref clk,
|
"ref" for 19.2 MHz ref clk,
|
||||||
"com_aux" for phy common block aux clock,
|
"com_aux" for phy common block aux clock,
|
||||||
"ref_aux" for phy reference aux clock,
|
"ref_aux" for phy reference aux clock,
|
||||||
|
|
||||||
|
For "qcom,ipq8074-qmp-pcie-phy": no clocks are listed.
|
||||||
For "qcom,msm8996-qmp-pcie-phy" must contain:
|
For "qcom,msm8996-qmp-pcie-phy" must contain:
|
||||||
"aux", "cfg_ahb", "ref".
|
"aux", "cfg_ahb", "ref".
|
||||||
For "qcom,msm8996-qmp-usb3-phy" must contain:
|
For "qcom,msm8996-qmp-usb3-phy" must contain:
|
||||||
"aux", "cfg_ahb", "ref".
|
"aux", "cfg_ahb", "ref".
|
||||||
For "qcom,qmp-v3-usb3-phy" must contain:
|
For "qcom,sdm845-qmp-usb3-phy" must contain:
|
||||||
"aux", "cfg_ahb", "ref", "com_aux".
|
"aux", "cfg_ahb", "ref", "com_aux".
|
||||||
|
For "qcom,sdm845-qmp-usb3-uni-phy" must contain:
|
||||||
|
"aux", "cfg_ahb", "ref", "com_aux".
|
||||||
|
For "qcom,sdm845-qmp-ufs-phy" must contain:
|
||||||
|
"ref", "ref_aux".
|
||||||
|
|
||||||
- resets: a list of phandles and reset controller specifier pairs,
|
- resets: a list of phandles and reset controller specifier pairs,
|
||||||
one for each entry in reset-names.
|
one for each entry in reset-names.
|
||||||
- reset-names: "phy" for reset of phy block,
|
- reset-names: "phy" for reset of phy block,
|
||||||
"common" for phy common block reset,
|
"common" for phy common block reset,
|
||||||
"cfg" for phy's ahb cfg block reset (Optional).
|
"cfg" for phy's ahb cfg block reset.
|
||||||
For "qcom,msm8996-qmp-pcie-phy" must contain:
|
|
||||||
"phy", "common", "cfg".
|
|
||||||
For "qcom,msm8996-qmp-usb3-phy" must contain
|
|
||||||
"phy", "common".
|
|
||||||
For "qcom,ipq8074-qmp-pcie-phy" must contain:
|
For "qcom,ipq8074-qmp-pcie-phy" must contain:
|
||||||
"phy", "common".
|
"phy", "common".
|
||||||
|
For "qcom,msm8996-qmp-pcie-phy" must contain:
|
||||||
|
"phy", "common", "cfg".
|
||||||
|
For "qcom,msm8996-qmp-usb3-phy" must contain
|
||||||
|
"phy", "common".
|
||||||
|
For "qcom,sdm845-qmp-usb3-phy" must contain:
|
||||||
|
"phy", "common".
|
||||||
|
For "qcom,sdm845-qmp-usb3-uni-phy" must contain:
|
||||||
|
"phy", "common".
|
||||||
|
For "qcom,sdm845-qmp-ufs-phy": no resets are listed.
|
||||||
|
|
||||||
- vdda-phy-supply: Phandle to a regulator supply to PHY core block.
|
- vdda-phy-supply: Phandle to a regulator supply to PHY core block.
|
||||||
- vdda-pll-supply: Phandle to 1.8V regulator supply to PHY refclk pll block.
|
- vdda-pll-supply: Phandle to 1.8V regulator supply to PHY refclk pll block.
|
||||||
@@ -79,9 +91,10 @@ Required properties for child node:
|
|||||||
|
|
||||||
- #phy-cells: must be 0
|
- #phy-cells: must be 0
|
||||||
|
|
||||||
|
Required properties child node of pcie and usb3 qmp phys:
|
||||||
- clocks: a list of phandles and clock-specifier pairs,
|
- clocks: a list of phandles and clock-specifier pairs,
|
||||||
one for each entry in clock-names.
|
one for each entry in clock-names.
|
||||||
- clock-names: Must contain following for pcie and usb qmp phys:
|
- clock-names: Must contain following:
|
||||||
"pipe<lane-number>" for pipe clock specific to each lane.
|
"pipe<lane-number>" for pipe clock specific to each lane.
|
||||||
- clock-output-names: Name of the PHY clock that will be the parent for
|
- clock-output-names: Name of the PHY clock that will be the parent for
|
||||||
the above pipe clock.
|
the above pipe clock.
|
||||||
@@ -91,9 +104,11 @@ Required properties for child node:
|
|||||||
(or)
|
(or)
|
||||||
"pcie20_phy1_pipe_clk"
|
"pcie20_phy1_pipe_clk"
|
||||||
|
|
||||||
|
Required properties for child node of PHYs with lane reset, AKA:
|
||||||
|
"qcom,msm8996-qmp-pcie-phy"
|
||||||
- resets: a list of phandles and reset controller specifier pairs,
|
- resets: a list of phandles and reset controller specifier pairs,
|
||||||
one for each entry in reset-names.
|
one for each entry in reset-names.
|
||||||
- reset-names: Must contain following for pcie qmp phys:
|
- reset-names: Must contain following:
|
||||||
"lane<lane-number>" for reset specific to each lane.
|
"lane<lane-number>" for reset specific to each lane.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@@ -5,18 +5,20 @@ UniPhier SoCs have SCSSI which supports SPI single channel.
|
|||||||
Required properties:
|
Required properties:
|
||||||
- compatible: should be "socionext,uniphier-scssi"
|
- compatible: should be "socionext,uniphier-scssi"
|
||||||
- reg: address and length of the spi master registers
|
- reg: address and length of the spi master registers
|
||||||
- #address-cells: must be <1>, see spi-bus.txt
|
- interrupts: a single interrupt specifier
|
||||||
- #size-cells: must be <0>, see spi-bus.txt
|
- pinctrl-names: should be "default"
|
||||||
- clocks: A phandle to the clock for the device.
|
- pinctrl-0: pin control state for the default mode
|
||||||
- resets: A phandle to the reset control for the device.
|
- clocks: a phandle to the clock for the device
|
||||||
|
- resets: a phandle to the reset control for the device
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
spi0: spi@54006000 {
|
spi0: spi@54006000 {
|
||||||
compatible = "socionext,uniphier-scssi";
|
compatible = "socionext,uniphier-scssi";
|
||||||
reg = <0x54006000 0x100>;
|
reg = <0x54006000 0x100>;
|
||||||
#address-cells = <1>;
|
interrupts = <0 39 4>;
|
||||||
#size-cells = <0>;
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_spi0>;
|
||||||
clocks = <&peri_clk 11>;
|
clocks = <&peri_clk 11>;
|
||||||
resets = <&peri_rst 11>;
|
resets = <&peri_rst 11>;
|
||||||
};
|
};
|
||||||
|
18
Documentation/i2c/busses/i2c-nvidia-gpu
Normal file
18
Documentation/i2c/busses/i2c-nvidia-gpu
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
Kernel driver i2c-nvidia-gpu
|
||||||
|
|
||||||
|
Datasheet: not publicly available.
|
||||||
|
|
||||||
|
Authors:
|
||||||
|
Ajay Gupta <ajayg@nvidia.com>
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
|
||||||
|
i2c-nvidia-gpu is a driver for I2C controller included in NVIDIA Turing
|
||||||
|
and later GPUs and it is used to communicate with Type-C controller on GPUs.
|
||||||
|
|
||||||
|
If your 'lspci -v' listing shows something like the following,
|
||||||
|
|
||||||
|
01:00.3 Serial bus controller [0c80]: NVIDIA Corporation Device 1ad9 (rev a1)
|
||||||
|
|
||||||
|
then this driver should support the I2C controller of your GPU.
|
@@ -190,16 +190,7 @@ A few EV_REL codes have special meanings:
|
|||||||
* REL_WHEEL, REL_HWHEEL:
|
* REL_WHEEL, REL_HWHEEL:
|
||||||
|
|
||||||
- These codes are used for vertical and horizontal scroll wheels,
|
- These codes are used for vertical and horizontal scroll wheels,
|
||||||
respectively. The value is the number of "notches" moved on the wheel, the
|
respectively.
|
||||||
physical size of which varies by device. For high-resolution wheels (which
|
|
||||||
report multiple events for each notch of movement, or do not have notches)
|
|
||||||
this may be an approximation based on the high-resolution scroll events.
|
|
||||||
|
|
||||||
* REL_WHEEL_HI_RES:
|
|
||||||
|
|
||||||
- If a vertical scroll wheel supports high-resolution scrolling, this code
|
|
||||||
will be emitted in addition to REL_WHEEL. The value is the (approximate)
|
|
||||||
distance travelled by the user's finger, in microns.
|
|
||||||
|
|
||||||
EV_ABS
|
EV_ABS
|
||||||
------
|
------
|
||||||
|
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media_ioc_request_alloc:
|
.. _media_ioc_request_alloc:
|
||||||
|
|
||||||
|
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media_request_ioc_queue:
|
.. _media_request_ioc_queue:
|
||||||
|
|
||||||
|
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media_request_ioc_reinit:
|
.. _media_request_ioc_reinit:
|
||||||
|
|
||||||
|
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media-request-api:
|
.. _media-request-api:
|
||||||
|
|
||||||
|
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _request-func-close:
|
.. _request-func-close:
|
||||||
|
|
||||||
|
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _request-func-ioctl:
|
.. _request-func-ioctl:
|
||||||
|
|
||||||
|
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _request-func-poll:
|
.. _request-func-poll:
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ To use the :ref:`format` ioctls applications set the ``type`` field of the
|
|||||||
the desired operation. Both drivers and applications must set the remainder of
|
the desired operation. Both drivers and applications must set the remainder of
|
||||||
the :c:type:`v4l2_format` structure to 0.
|
the :c:type:`v4l2_format` structure to 0.
|
||||||
|
|
||||||
.. _v4l2-meta-format:
|
.. c:type:: v4l2_meta_format
|
||||||
|
|
||||||
.. tabularcolumns:: |p{1.4cm}|p{2.2cm}|p{13.9cm}|
|
.. tabularcolumns:: |p{1.4cm}|p{2.2cm}|p{13.9cm}|
|
||||||
|
|
||||||
|
@@ -132,6 +132,11 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
|
|||||||
- ``sdr``
|
- ``sdr``
|
||||||
- Definition of a data format, see :ref:`pixfmt`, used by SDR
|
- Definition of a data format, see :ref:`pixfmt`, used by SDR
|
||||||
capture and output devices.
|
capture and output devices.
|
||||||
|
* -
|
||||||
|
- struct :c:type:`v4l2_meta_format`
|
||||||
|
- ``meta``
|
||||||
|
- Definition of a metadata format, see :ref:`meta-formats`, used by
|
||||||
|
metadata capture devices.
|
||||||
* -
|
* -
|
||||||
- __u8
|
- __u8
|
||||||
- ``raw_data``\ [200]
|
- ``raw_data``\ [200]
|
||||||
|
@@ -1056,18 +1056,23 @@ The kernel interface functions are as follows:
|
|||||||
|
|
||||||
u32 rxrpc_kernel_check_life(struct socket *sock,
|
u32 rxrpc_kernel_check_life(struct socket *sock,
|
||||||
struct rxrpc_call *call);
|
struct rxrpc_call *call);
|
||||||
|
void rxrpc_kernel_probe_life(struct socket *sock,
|
||||||
|
struct rxrpc_call *call);
|
||||||
|
|
||||||
This returns a number that is updated when ACKs are received from the peer
|
The first function returns a number that is updated when ACKs are received
|
||||||
(notably including PING RESPONSE ACKs which we can elicit by sending PING
|
from the peer (notably including PING RESPONSE ACKs which we can elicit by
|
||||||
ACKs to see if the call still exists on the server). The caller should
|
sending PING ACKs to see if the call still exists on the server). The
|
||||||
compare the numbers of two calls to see if the call is still alive after
|
caller should compare the numbers of two calls to see if the call is still
|
||||||
waiting for a suitable interval.
|
alive after waiting for a suitable interval.
|
||||||
|
|
||||||
This allows the caller to work out if the server is still contactable and
|
This allows the caller to work out if the server is still contactable and
|
||||||
if the call is still alive on the server whilst waiting for the server to
|
if the call is still alive on the server whilst waiting for the server to
|
||||||
process a client operation.
|
process a client operation.
|
||||||
|
|
||||||
This function may transmit a PING ACK.
|
The second function causes a ping ACK to be transmitted to try to provoke
|
||||||
|
the peer into responding, which would then cause the value returned by the
|
||||||
|
first function to change. Note that this must be called in TASK_RUNNING
|
||||||
|
state.
|
||||||
|
|
||||||
(*) Get reply timestamp.
|
(*) Get reply timestamp.
|
||||||
|
|
||||||
|
@@ -92,3 +92,12 @@ Speculation misfeature controls
|
|||||||
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_ENABLE, 0, 0);
|
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_ENABLE, 0, 0);
|
||||||
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
|
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_DISABLE, 0, 0);
|
||||||
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_FORCE_DISABLE, 0, 0);
|
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_STORE_BYPASS, PR_SPEC_FORCE_DISABLE, 0, 0);
|
||||||
|
|
||||||
|
- PR_SPEC_INDIR_BRANCH: Indirect Branch Speculation in User Processes
|
||||||
|
(Mitigate Spectre V2 style attacks against user processes)
|
||||||
|
|
||||||
|
Invocations:
|
||||||
|
* prctl(PR_GET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, 0, 0, 0);
|
||||||
|
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_ENABLE, 0, 0);
|
||||||
|
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_DISABLE, 0, 0);
|
||||||
|
* prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, PR_SPEC_FORCE_DISABLE, 0, 0);
|
||||||
|
@@ -61,18 +61,6 @@ Protocol 2.12: (Kernel 3.8) Added the xloadflags field and extension fields
|
|||||||
to struct boot_params for loading bzImage and ramdisk
|
to struct boot_params for loading bzImage and ramdisk
|
||||||
above 4G in 64bit.
|
above 4G in 64bit.
|
||||||
|
|
||||||
Protocol 2.13: (Kernel 3.14) Support 32- and 64-bit flags being set in
|
|
||||||
xloadflags to support booting a 64-bit kernel from 32-bit
|
|
||||||
EFI
|
|
||||||
|
|
||||||
Protocol 2.14: (Kernel 4.20) Added acpi_rsdp_addr holding the physical
|
|
||||||
address of the ACPI RSDP table.
|
|
||||||
The bootloader updates version with:
|
|
||||||
0x8000 | min(kernel-version, bootloader-version)
|
|
||||||
kernel-version being the protocol version supported by
|
|
||||||
the kernel and bootloader-version the protocol version
|
|
||||||
supported by the bootloader.
|
|
||||||
|
|
||||||
**** MEMORY LAYOUT
|
**** MEMORY LAYOUT
|
||||||
|
|
||||||
The traditional memory map for the kernel loader, used for Image or
|
The traditional memory map for the kernel loader, used for Image or
|
||||||
@@ -209,7 +197,6 @@ Offset Proto Name Meaning
|
|||||||
0258/8 2.10+ pref_address Preferred loading address
|
0258/8 2.10+ pref_address Preferred loading address
|
||||||
0260/4 2.10+ init_size Linear memory required during initialization
|
0260/4 2.10+ init_size Linear memory required during initialization
|
||||||
0264/4 2.11+ handover_offset Offset of handover entry point
|
0264/4 2.11+ handover_offset Offset of handover entry point
|
||||||
0268/8 2.14+ acpi_rsdp_addr Physical address of RSDP table
|
|
||||||
|
|
||||||
(1) For backwards compatibility, if the setup_sects field contains 0, the
|
(1) For backwards compatibility, if the setup_sects field contains 0, the
|
||||||
real value is 4.
|
real value is 4.
|
||||||
@@ -322,7 +309,7 @@ Protocol: 2.00+
|
|||||||
Contains the magic number "HdrS" (0x53726448).
|
Contains the magic number "HdrS" (0x53726448).
|
||||||
|
|
||||||
Field name: version
|
Field name: version
|
||||||
Type: modify
|
Type: read
|
||||||
Offset/size: 0x206/2
|
Offset/size: 0x206/2
|
||||||
Protocol: 2.00+
|
Protocol: 2.00+
|
||||||
|
|
||||||
@@ -330,12 +317,6 @@ Protocol: 2.00+
|
|||||||
e.g. 0x0204 for version 2.04, and 0x0a11 for a hypothetical version
|
e.g. 0x0204 for version 2.04, and 0x0a11 for a hypothetical version
|
||||||
10.17.
|
10.17.
|
||||||
|
|
||||||
Up to protocol version 2.13 this information is only read by the
|
|
||||||
bootloader. From protocol version 2.14 onwards the bootloader will
|
|
||||||
write the used protocol version or-ed with 0x8000 to the field. The
|
|
||||||
used protocol version will be the minimum of the supported protocol
|
|
||||||
versions of the bootloader and the kernel.
|
|
||||||
|
|
||||||
Field name: realmode_swtch
|
Field name: realmode_swtch
|
||||||
Type: modify (optional)
|
Type: modify (optional)
|
||||||
Offset/size: 0x208/4
|
Offset/size: 0x208/4
|
||||||
@@ -763,17 +744,6 @@ Offset/size: 0x264/4
|
|||||||
|
|
||||||
See EFI HANDOVER PROTOCOL below for more details.
|
See EFI HANDOVER PROTOCOL below for more details.
|
||||||
|
|
||||||
Field name: acpi_rsdp_addr
|
|
||||||
Type: write
|
|
||||||
Offset/size: 0x268/8
|
|
||||||
Protocol: 2.14+
|
|
||||||
|
|
||||||
This field can be set by the boot loader to tell the kernel the
|
|
||||||
physical address of the ACPI RSDP table.
|
|
||||||
|
|
||||||
A value of 0 indicates the kernel should fall back to the standard
|
|
||||||
methods to locate the RSDP.
|
|
||||||
|
|
||||||
|
|
||||||
**** THE IMAGE CHECKSUM
|
**** THE IMAGE CHECKSUM
|
||||||
|
|
||||||
|
@@ -34,23 +34,24 @@ __________________|____________|__________________|_________|___________________
|
|||||||
____________________________________________________________|___________________________________________________________
|
____________________________________________________________|___________________________________________________________
|
||||||
| | | |
|
| | | |
|
||||||
ffff800000000000 | -128 TB | ffff87ffffffffff | 8 TB | ... guard hole, also reserved for hypervisor
|
ffff800000000000 | -128 TB | ffff87ffffffffff | 8 TB | ... guard hole, also reserved for hypervisor
|
||||||
ffff880000000000 | -120 TB | ffffc7ffffffffff | 64 TB | direct mapping of all physical memory (page_offset_base)
|
ffff880000000000 | -120 TB | ffff887fffffffff | 0.5 TB | LDT remap for PTI
|
||||||
ffffc80000000000 | -56 TB | ffffc8ffffffffff | 1 TB | ... unused hole
|
ffff888000000000 | -119.5 TB | ffffc87fffffffff | 64 TB | direct mapping of all physical memory (page_offset_base)
|
||||||
|
ffffc88000000000 | -55.5 TB | ffffc8ffffffffff | 0.5 TB | ... unused hole
|
||||||
ffffc90000000000 | -55 TB | ffffe8ffffffffff | 32 TB | vmalloc/ioremap space (vmalloc_base)
|
ffffc90000000000 | -55 TB | ffffe8ffffffffff | 32 TB | vmalloc/ioremap space (vmalloc_base)
|
||||||
ffffe90000000000 | -23 TB | ffffe9ffffffffff | 1 TB | ... unused hole
|
ffffe90000000000 | -23 TB | ffffe9ffffffffff | 1 TB | ... unused hole
|
||||||
ffffea0000000000 | -22 TB | ffffeaffffffffff | 1 TB | virtual memory map (vmemmap_base)
|
ffffea0000000000 | -22 TB | ffffeaffffffffff | 1 TB | virtual memory map (vmemmap_base)
|
||||||
ffffeb0000000000 | -21 TB | ffffebffffffffff | 1 TB | ... unused hole
|
ffffeb0000000000 | -21 TB | ffffebffffffffff | 1 TB | ... unused hole
|
||||||
ffffec0000000000 | -20 TB | fffffbffffffffff | 16 TB | KASAN shadow memory
|
ffffec0000000000 | -20 TB | fffffbffffffffff | 16 TB | KASAN shadow memory
|
||||||
|
__________________|____________|__________________|_________|____________________________________________________________
|
||||||
|
|
|
||||||
|
| Identical layout to the 56-bit one from here on:
|
||||||
|
____________________________________________________________|____________________________________________________________
|
||||||
|
| | | |
|
||||||
fffffc0000000000 | -4 TB | fffffdffffffffff | 2 TB | ... unused hole
|
fffffc0000000000 | -4 TB | fffffdffffffffff | 2 TB | ... unused hole
|
||||||
| | | | vaddr_end for KASLR
|
| | | | vaddr_end for KASLR
|
||||||
fffffe0000000000 | -2 TB | fffffe7fffffffff | 0.5 TB | cpu_entry_area mapping
|
fffffe0000000000 | -2 TB | fffffe7fffffffff | 0.5 TB | cpu_entry_area mapping
|
||||||
fffffe8000000000 | -1.5 TB | fffffeffffffffff | 0.5 TB | LDT remap for PTI
|
fffffe8000000000 | -1.5 TB | fffffeffffffffff | 0.5 TB | ... unused hole
|
||||||
ffffff0000000000 | -1 TB | ffffff7fffffffff | 0.5 TB | %esp fixup stacks
|
ffffff0000000000 | -1 TB | ffffff7fffffffff | 0.5 TB | %esp fixup stacks
|
||||||
__________________|____________|__________________|_________|____________________________________________________________
|
|
||||||
|
|
|
||||||
| Identical layout to the 47-bit one from here on:
|
|
||||||
____________________________________________________________|____________________________________________________________
|
|
||||||
| | | |
|
|
||||||
ffffff8000000000 | -512 GB | ffffffeeffffffff | 444 GB | ... unused hole
|
ffffff8000000000 | -512 GB | ffffffeeffffffff | 444 GB | ... unused hole
|
||||||
ffffffef00000000 | -68 GB | fffffffeffffffff | 64 GB | EFI region mapping space
|
ffffffef00000000 | -68 GB | fffffffeffffffff | 64 GB | EFI region mapping space
|
||||||
ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | ... unused hole
|
ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | ... unused hole
|
||||||
@@ -83,7 +84,7 @@ Notes:
|
|||||||
__________________|____________|__________________|_________|___________________________________________________________
|
__________________|____________|__________________|_________|___________________________________________________________
|
||||||
| | | |
|
| | | |
|
||||||
0000800000000000 | +64 PB | ffff7fffffffffff | ~16K PB | ... huge, still almost 64 bits wide hole of non-canonical
|
0000800000000000 | +64 PB | ffff7fffffffffff | ~16K PB | ... huge, still almost 64 bits wide hole of non-canonical
|
||||||
| | | | virtual memory addresses up to the -128 TB
|
| | | | virtual memory addresses up to the -64 PB
|
||||||
| | | | starting offset of kernel mappings.
|
| | | | starting offset of kernel mappings.
|
||||||
__________________|____________|__________________|_________|___________________________________________________________
|
__________________|____________|__________________|_________|___________________________________________________________
|
||||||
|
|
|
|
||||||
@@ -91,23 +92,24 @@ __________________|____________|__________________|_________|___________________
|
|||||||
____________________________________________________________|___________________________________________________________
|
____________________________________________________________|___________________________________________________________
|
||||||
| | | |
|
| | | |
|
||||||
ff00000000000000 | -64 PB | ff0fffffffffffff | 4 PB | ... guard hole, also reserved for hypervisor
|
ff00000000000000 | -64 PB | ff0fffffffffffff | 4 PB | ... guard hole, also reserved for hypervisor
|
||||||
ff10000000000000 | -60 PB | ff8fffffffffffff | 32 PB | direct mapping of all physical memory (page_offset_base)
|
ff10000000000000 | -60 PB | ff10ffffffffffff | 0.25 PB | LDT remap for PTI
|
||||||
ff90000000000000 | -28 PB | ff9fffffffffffff | 4 PB | LDT remap for PTI
|
ff11000000000000 | -59.75 PB | ff90ffffffffffff | 32 PB | direct mapping of all physical memory (page_offset_base)
|
||||||
|
ff91000000000000 | -27.75 PB | ff9fffffffffffff | 3.75 PB | ... unused hole
|
||||||
ffa0000000000000 | -24 PB | ffd1ffffffffffff | 12.5 PB | vmalloc/ioremap space (vmalloc_base)
|
ffa0000000000000 | -24 PB | ffd1ffffffffffff | 12.5 PB | vmalloc/ioremap space (vmalloc_base)
|
||||||
ffd2000000000000 | -11.5 PB | ffd3ffffffffffff | 0.5 PB | ... unused hole
|
ffd2000000000000 | -11.5 PB | ffd3ffffffffffff | 0.5 PB | ... unused hole
|
||||||
ffd4000000000000 | -11 PB | ffd5ffffffffffff | 0.5 PB | virtual memory map (vmemmap_base)
|
ffd4000000000000 | -11 PB | ffd5ffffffffffff | 0.5 PB | virtual memory map (vmemmap_base)
|
||||||
ffd6000000000000 | -10.5 PB | ffdeffffffffffff | 2.25 PB | ... unused hole
|
ffd6000000000000 | -10.5 PB | ffdeffffffffffff | 2.25 PB | ... unused hole
|
||||||
ffdf000000000000 | -8.25 PB | fffffdffffffffff | ~8 PB | KASAN shadow memory
|
ffdf000000000000 | -8.25 PB | fffffdffffffffff | ~8 PB | KASAN shadow memory
|
||||||
fffffc0000000000 | -4 TB | fffffdffffffffff | 2 TB | ... unused hole
|
|
||||||
| | | | vaddr_end for KASLR
|
|
||||||
fffffe0000000000 | -2 TB | fffffe7fffffffff | 0.5 TB | cpu_entry_area mapping
|
|
||||||
fffffe8000000000 | -1.5 TB | fffffeffffffffff | 0.5 TB | ... unused hole
|
|
||||||
ffffff0000000000 | -1 TB | ffffff7fffffffff | 0.5 TB | %esp fixup stacks
|
|
||||||
__________________|____________|__________________|_________|____________________________________________________________
|
__________________|____________|__________________|_________|____________________________________________________________
|
||||||
|
|
|
|
||||||
| Identical layout to the 47-bit one from here on:
|
| Identical layout to the 47-bit one from here on:
|
||||||
____________________________________________________________|____________________________________________________________
|
____________________________________________________________|____________________________________________________________
|
||||||
| | | |
|
| | | |
|
||||||
|
fffffc0000000000 | -4 TB | fffffdffffffffff | 2 TB | ... unused hole
|
||||||
|
| | | | vaddr_end for KASLR
|
||||||
|
fffffe0000000000 | -2 TB | fffffe7fffffffff | 0.5 TB | cpu_entry_area mapping
|
||||||
|
fffffe8000000000 | -1.5 TB | fffffeffffffffff | 0.5 TB | ... unused hole
|
||||||
|
ffffff0000000000 | -1 TB | ffffff7fffffffff | 0.5 TB | %esp fixup stacks
|
||||||
ffffff8000000000 | -512 GB | ffffffeeffffffff | 444 GB | ... unused hole
|
ffffff8000000000 | -512 GB | ffffffeeffffffff | 444 GB | ... unused hole
|
||||||
ffffffef00000000 | -68 GB | fffffffeffffffff | 64 GB | EFI region mapping space
|
ffffffef00000000 | -68 GB | fffffffeffffffff | 64 GB | EFI region mapping space
|
||||||
ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | ... unused hole
|
ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | ... unused hole
|
||||||
|
@@ -25,7 +25,7 @@ Offset Proto Name Meaning
|
|||||||
0C8/004 ALL ext_cmd_line_ptr cmd_line_ptr high 32bits
|
0C8/004 ALL ext_cmd_line_ptr cmd_line_ptr high 32bits
|
||||||
140/080 ALL edid_info Video mode setup (struct edid_info)
|
140/080 ALL edid_info Video mode setup (struct edid_info)
|
||||||
1C0/020 ALL efi_info EFI 32 information (struct efi_info)
|
1C0/020 ALL efi_info EFI 32 information (struct efi_info)
|
||||||
1E0/004 ALL alk_mem_k Alternative mem check, in KB
|
1E0/004 ALL alt_mem_k Alternative mem check, in KB
|
||||||
1E4/004 ALL scratch Scratch field for the kernel setup code
|
1E4/004 ALL scratch Scratch field for the kernel setup code
|
||||||
1E8/001 ALL e820_entries Number of entries in e820_table (below)
|
1E8/001 ALL e820_entries Number of entries in e820_table (below)
|
||||||
1E9/001 ALL eddbuf_entries Number of entries in eddbuf (below)
|
1E9/001 ALL eddbuf_entries Number of entries in eddbuf (below)
|
||||||
|
224
MAINTAINERS
224
MAINTAINERS
@@ -180,6 +180,7 @@ F: drivers/net/hamradio/6pack.c
|
|||||||
|
|
||||||
8169 10/100/1000 GIGABIT ETHERNET DRIVER
|
8169 10/100/1000 GIGABIT ETHERNET DRIVER
|
||||||
M: Realtek linux nic maintainers <nic_swsd@realtek.com>
|
M: Realtek linux nic maintainers <nic_swsd@realtek.com>
|
||||||
|
M: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/realtek/r8169.c
|
F: drivers/net/ethernet/realtek/r8169.c
|
||||||
@@ -717,7 +718,7 @@ F: include/linux/mfd/altera-a10sr.h
|
|||||||
F: include/dt-bindings/reset/altr,rst-mgr-a10sr.h
|
F: include/dt-bindings/reset/altr,rst-mgr-a10sr.h
|
||||||
|
|
||||||
ALTERA TRIPLE SPEED ETHERNET DRIVER
|
ALTERA TRIPLE SPEED ETHERNET DRIVER
|
||||||
M: Vince Bridgers <vbridger@opensource.altera.com>
|
M: Thor Thayer <thor.thayer@linux.intel.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
L: nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -1471,6 +1472,7 @@ F: drivers/clk/sirf/
|
|||||||
F: drivers/clocksource/timer-prima2.c
|
F: drivers/clocksource/timer-prima2.c
|
||||||
F: drivers/clocksource/timer-atlas7.c
|
F: drivers/clocksource/timer-atlas7.c
|
||||||
N: [^a-z]sirf
|
N: [^a-z]sirf
|
||||||
|
X: drivers/gnss
|
||||||
|
|
||||||
ARM/EBSA110 MACHINE SUPPORT
|
ARM/EBSA110 MACHINE SUPPORT
|
||||||
M: Russell King <linux@armlinux.org.uk>
|
M: Russell King <linux@armlinux.org.uk>
|
||||||
@@ -1922,7 +1924,6 @@ ARM/QUALCOMM SUPPORT
|
|||||||
M: Andy Gross <andy.gross@linaro.org>
|
M: Andy Gross <andy.gross@linaro.org>
|
||||||
M: David Brown <david.brown@linaro.org>
|
M: David Brown <david.brown@linaro.org>
|
||||||
L: linux-arm-msm@vger.kernel.org
|
L: linux-arm-msm@vger.kernel.org
|
||||||
L: linux-soc@vger.kernel.org
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/soc/qcom/
|
F: Documentation/devicetree/bindings/soc/qcom/
|
||||||
F: arch/arm/boot/dts/qcom-*.dts
|
F: arch/arm/boot/dts/qcom-*.dts
|
||||||
@@ -2490,7 +2491,7 @@ F: drivers/net/wireless/ath/*
|
|||||||
ATHEROS ATH5K WIRELESS DRIVER
|
ATHEROS ATH5K WIRELESS DRIVER
|
||||||
M: Jiri Slaby <jirislaby@gmail.com>
|
M: Jiri Slaby <jirislaby@gmail.com>
|
||||||
M: Nick Kossifidis <mickflemm@gmail.com>
|
M: Nick Kossifidis <mickflemm@gmail.com>
|
||||||
M: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>
|
M: Luis Chamberlain <mcgrof@kernel.org>
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
W: http://wireless.kernel.org/en/users/Drivers/ath5k
|
W: http://wireless.kernel.org/en/users/Drivers/ath5k
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -2800,7 +2801,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
|
|||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
|
||||||
Q: https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147
|
Q: https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/x86/net/bpf_jit*
|
F: arch/*/net/*
|
||||||
F: Documentation/networking/filter.txt
|
F: Documentation/networking/filter.txt
|
||||||
F: Documentation/bpf/
|
F: Documentation/bpf/
|
||||||
F: include/linux/bpf*
|
F: include/linux/bpf*
|
||||||
@@ -2820,6 +2821,67 @@ F: tools/bpf/
|
|||||||
F: tools/lib/bpf/
|
F: tools/lib/bpf/
|
||||||
F: tools/testing/selftests/bpf/
|
F: tools/testing/selftests/bpf/
|
||||||
|
|
||||||
|
BPF JIT for ARM
|
||||||
|
M: Shubham Bansal <illusionist.neo@gmail.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/arm/net/
|
||||||
|
|
||||||
|
BPF JIT for ARM64
|
||||||
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
|
M: Alexei Starovoitov <ast@kernel.org>
|
||||||
|
M: Zi Shen Lim <zlim.lnx@gmail.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: arch/arm64/net/
|
||||||
|
|
||||||
|
BPF JIT for MIPS (32-BIT AND 64-BIT)
|
||||||
|
M: Paul Burton <paul.burton@mips.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/mips/net/
|
||||||
|
|
||||||
|
BPF JIT for NFP NICs
|
||||||
|
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: drivers/net/ethernet/netronome/nfp/bpf/
|
||||||
|
|
||||||
|
BPF JIT for POWERPC (32-BIT AND 64-BIT)
|
||||||
|
M: Naveen N. Rao <naveen.n.rao@linux.ibm.com>
|
||||||
|
M: Sandipan Das <sandipan@linux.ibm.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/powerpc/net/
|
||||||
|
|
||||||
|
BPF JIT for S390
|
||||||
|
M: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
|
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/s390/net/
|
||||||
|
X: arch/s390/net/pnet.c
|
||||||
|
|
||||||
|
BPF JIT for SPARC (32-BIT AND 64-BIT)
|
||||||
|
M: David S. Miller <davem@davemloft.net>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/sparc/net/
|
||||||
|
|
||||||
|
BPF JIT for X86 32-BIT
|
||||||
|
M: Wang YanQing <udknight@gmail.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/x86/net/bpf_jit_comp32.c
|
||||||
|
|
||||||
|
BPF JIT for X86 64-BIT
|
||||||
|
M: Alexei Starovoitov <ast@kernel.org>
|
||||||
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: arch/x86/net/
|
||||||
|
X: arch/x86/net/bpf_jit_comp32.c
|
||||||
|
|
||||||
BROADCOM B44 10/100 ETHERNET DRIVER
|
BROADCOM B44 10/100 ETHERNET DRIVER
|
||||||
M: Michael Chan <michael.chan@broadcom.com>
|
M: Michael Chan <michael.chan@broadcom.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
@@ -2860,7 +2922,7 @@ F: drivers/staging/vc04_services
|
|||||||
BROADCOM BCM47XX MIPS ARCHITECTURE
|
BROADCOM BCM47XX MIPS ARCHITECTURE
|
||||||
M: Hauke Mehrtens <hauke@hauke-m.de>
|
M: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
M: Rafał Miłecki <zajec5@gmail.com>
|
M: Rafał Miłecki <zajec5@gmail.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/mips/brcm/
|
F: Documentation/devicetree/bindings/mips/brcm/
|
||||||
F: arch/mips/bcm47xx/*
|
F: arch/mips/bcm47xx/*
|
||||||
@@ -2869,7 +2931,6 @@ F: arch/mips/include/asm/mach-bcm47xx/*
|
|||||||
BROADCOM BCM5301X ARM ARCHITECTURE
|
BROADCOM BCM5301X ARM ARCHITECTURE
|
||||||
M: Hauke Mehrtens <hauke@hauke-m.de>
|
M: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
M: Rafał Miłecki <zajec5@gmail.com>
|
M: Rafał Miłecki <zajec5@gmail.com>
|
||||||
M: Jon Mason <jonmason@broadcom.com>
|
|
||||||
M: bcm-kernel-feedback-list@broadcom.com
|
M: bcm-kernel-feedback-list@broadcom.com
|
||||||
L: linux-arm-kernel@lists.infradead.org
|
L: linux-arm-kernel@lists.infradead.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -2924,7 +2985,7 @@ F: drivers/cpufreq/bmips-cpufreq.c
|
|||||||
BROADCOM BMIPS MIPS ARCHITECTURE
|
BROADCOM BMIPS MIPS ARCHITECTURE
|
||||||
M: Kevin Cernekee <cernekee@gmail.com>
|
M: Kevin Cernekee <cernekee@gmail.com>
|
||||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
T: git git://github.com/broadcom/stblinux.git
|
T: git git://github.com/broadcom/stblinux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/bmips/*
|
F: arch/mips/bmips/*
|
||||||
@@ -3015,7 +3076,6 @@ F: drivers/net/ethernet/broadcom/genet/
|
|||||||
BROADCOM IPROC ARM ARCHITECTURE
|
BROADCOM IPROC ARM ARCHITECTURE
|
||||||
M: Ray Jui <rjui@broadcom.com>
|
M: Ray Jui <rjui@broadcom.com>
|
||||||
M: Scott Branden <sbranden@broadcom.com>
|
M: Scott Branden <sbranden@broadcom.com>
|
||||||
M: Jon Mason <jonmason@broadcom.com>
|
|
||||||
M: bcm-kernel-feedback-list@broadcom.com
|
M: bcm-kernel-feedback-list@broadcom.com
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
T: git git://github.com/broadcom/cygnus-linux.git
|
T: git git://github.com/broadcom/cygnus-linux.git
|
||||||
@@ -3062,7 +3122,7 @@ F: include/uapi/rdma/bnxt_re-abi.h
|
|||||||
|
|
||||||
BROADCOM NVRAM DRIVER
|
BROADCOM NVRAM DRIVER
|
||||||
M: Rafał Miłecki <zajec5@gmail.com>
|
M: Rafał Miłecki <zajec5@gmail.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/firmware/broadcom/*
|
F: drivers/firmware/broadcom/*
|
||||||
|
|
||||||
@@ -3212,11 +3272,16 @@ S: Maintained
|
|||||||
F: sound/pci/oxygen/
|
F: sound/pci/oxygen/
|
||||||
|
|
||||||
C-SKY ARCHITECTURE
|
C-SKY ARCHITECTURE
|
||||||
M: Guo Ren <ren_guo@c-sky.com>
|
M: Guo Ren <guoren@kernel.org>
|
||||||
T: git https://github.com/c-sky/csky-linux.git
|
T: git https://github.com/c-sky/csky-linux.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/csky/
|
F: arch/csky/
|
||||||
F: Documentation/devicetree/bindings/csky/
|
F: Documentation/devicetree/bindings/csky/
|
||||||
|
F: drivers/irqchip/irq-csky-*
|
||||||
|
F: Documentation/devicetree/bindings/interrupt-controller/csky,*
|
||||||
|
F: drivers/clocksource/timer-gx6605s.c
|
||||||
|
F: drivers/clocksource/timer-mp-csky.c
|
||||||
|
F: Documentation/devicetree/bindings/timer/csky,*
|
||||||
K: csky
|
K: csky
|
||||||
N: csky
|
N: csky
|
||||||
|
|
||||||
@@ -3276,6 +3341,12 @@ F: include/uapi/linux/caif/
|
|||||||
F: include/net/caif/
|
F: include/net/caif/
|
||||||
F: net/caif/
|
F: net/caif/
|
||||||
|
|
||||||
|
CAKE QDISC
|
||||||
|
M: Toke Høiland-Jørgensen <toke@toke.dk>
|
||||||
|
L: cake@lists.bufferbloat.net (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
F: net/sched/sch_cake.c
|
||||||
|
|
||||||
CALGARY x86-64 IOMMU
|
CALGARY x86-64 IOMMU
|
||||||
M: Muli Ben-Yehuda <mulix@mulix.org>
|
M: Muli Ben-Yehuda <mulix@mulix.org>
|
||||||
M: Jon Mason <jdmason@kudzu.us>
|
M: Jon Mason <jdmason@kudzu.us>
|
||||||
@@ -4158,7 +4229,7 @@ F: net/decnet/
|
|||||||
|
|
||||||
DECSTATION PLATFORM SUPPORT
|
DECSTATION PLATFORM SUPPORT
|
||||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
W: http://www.linux-mips.org/wiki/DECstation
|
W: http://www.linux-mips.org/wiki/DECstation
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/dec/
|
F: arch/mips/dec/
|
||||||
@@ -5249,7 +5320,7 @@ EDAC-CAVIUM OCTEON
|
|||||||
M: Ralf Baechle <ralf@linux-mips.org>
|
M: Ralf Baechle <ralf@linux-mips.org>
|
||||||
M: David Daney <david.daney@cavium.com>
|
M: David Daney <david.daney@cavium.com>
|
||||||
L: linux-edac@vger.kernel.org
|
L: linux-edac@vger.kernel.org
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/edac/octeon_edac*
|
F: drivers/edac/octeon_edac*
|
||||||
|
|
||||||
@@ -5528,6 +5599,7 @@ F: net/bridge/
|
|||||||
ETHERNET PHY LIBRARY
|
ETHERNET PHY LIBRARY
|
||||||
M: Andrew Lunn <andrew@lunn.ch>
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
|
M: Heiner Kallweit <hkallweit1@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/ABI/testing/sysfs-bus-mdio
|
F: Documentation/ABI/testing/sysfs-bus-mdio
|
||||||
@@ -5766,7 +5838,7 @@ F: include/uapi/linux/firewire*.h
|
|||||||
F: tools/firewire/
|
F: tools/firewire/
|
||||||
|
|
||||||
FIRMWARE LOADER (request_firmware)
|
FIRMWARE LOADER (request_firmware)
|
||||||
M: Luis R. Rodriguez <mcgrof@kernel.org>
|
M: Luis Chamberlain <mcgrof@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/firmware_class/
|
F: Documentation/firmware_class/
|
||||||
@@ -6250,6 +6322,7 @@ F: include/uapi/linux/gigaset_dev.h
|
|||||||
|
|
||||||
GNSS SUBSYSTEM
|
GNSS SUBSYSTEM
|
||||||
M: Johan Hovold <johan@kernel.org>
|
M: Johan Hovold <johan@kernel.org>
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/ABI/testing/sysfs-class-gnss
|
F: Documentation/ABI/testing/sysfs-class-gnss
|
||||||
F: Documentation/devicetree/bindings/gnss/
|
F: Documentation/devicetree/bindings/gnss/
|
||||||
@@ -6299,6 +6372,7 @@ F: tools/testing/selftests/gpio/
|
|||||||
|
|
||||||
GPIO SUBSYSTEM
|
GPIO SUBSYSTEM
|
||||||
M: Linus Walleij <linus.walleij@linaro.org>
|
M: Linus Walleij <linus.walleij@linaro.org>
|
||||||
|
M: Bartosz Golaszewski <bgolaszewski@baylibre.com>
|
||||||
L: linux-gpio@vger.kernel.org
|
L: linux-gpio@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -6607,9 +6681,9 @@ F: arch/*/include/asm/suspend*.h
|
|||||||
|
|
||||||
HID CORE LAYER
|
HID CORE LAYER
|
||||||
M: Jiri Kosina <jikos@kernel.org>
|
M: Jiri Kosina <jikos@kernel.org>
|
||||||
R: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
M: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hid/
|
F: drivers/hid/
|
||||||
F: include/linux/hid*
|
F: include/linux/hid*
|
||||||
@@ -6861,6 +6935,13 @@ L: linux-acpi@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/i2c/i2c-core-acpi.c
|
F: drivers/i2c/i2c-core-acpi.c
|
||||||
|
|
||||||
|
I2C CONTROLLER DRIVER FOR NVIDIA GPU
|
||||||
|
M: Ajay Gupta <ajayg@nvidia.com>
|
||||||
|
L: linux-i2c@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/i2c/busses/i2c-nvidia-gpu
|
||||||
|
F: drivers/i2c/busses/i2c-nvidia-gpu.c
|
||||||
|
|
||||||
I2C MUXES
|
I2C MUXES
|
||||||
M: Peter Rosin <peda@axentia.se>
|
M: Peter Rosin <peda@axentia.se>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
@@ -7429,6 +7510,20 @@ S: Maintained
|
|||||||
F: Documentation/fb/intelfb.txt
|
F: Documentation/fb/intelfb.txt
|
||||||
F: drivers/video/fbdev/intelfb/
|
F: drivers/video/fbdev/intelfb/
|
||||||
|
|
||||||
|
INTEL GPIO DRIVERS
|
||||||
|
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||||
|
L: linux-gpio@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
|
||||||
|
F: drivers/gpio/gpio-ich.c
|
||||||
|
F: drivers/gpio/gpio-intel-mid.c
|
||||||
|
F: drivers/gpio/gpio-lynxpoint.c
|
||||||
|
F: drivers/gpio/gpio-merrifield.c
|
||||||
|
F: drivers/gpio/gpio-ml-ioh.c
|
||||||
|
F: drivers/gpio/gpio-pch.c
|
||||||
|
F: drivers/gpio/gpio-sch.c
|
||||||
|
F: drivers/gpio/gpio-sodaville.c
|
||||||
|
|
||||||
INTEL GVT-g DRIVERS (Intel GPU Virtualization)
|
INTEL GVT-g DRIVERS (Intel GPU Virtualization)
|
||||||
M: Zhenyu Wang <zhenyuw@linux.intel.com>
|
M: Zhenyu Wang <zhenyuw@linux.intel.com>
|
||||||
M: Zhi Wang <zhi.a.wang@intel.com>
|
M: Zhi Wang <zhi.a.wang@intel.com>
|
||||||
@@ -7439,12 +7534,6 @@ T: git https://github.com/intel/gvt-linux.git
|
|||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/gpu/drm/i915/gvt/
|
F: drivers/gpu/drm/i915/gvt/
|
||||||
|
|
||||||
INTEL PMIC GPIO DRIVER
|
|
||||||
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/gpio/gpio-*cove.c
|
|
||||||
F: drivers/gpio/gpio-msic.c
|
|
||||||
|
|
||||||
INTEL HID EVENT DRIVER
|
INTEL HID EVENT DRIVER
|
||||||
M: Alex Hung <alex.hung@canonical.com>
|
M: Alex Hung <alex.hung@canonical.com>
|
||||||
L: platform-driver-x86@vger.kernel.org
|
L: platform-driver-x86@vger.kernel.org
|
||||||
@@ -7532,12 +7621,6 @@ W: https://01.org/linux-acpi
|
|||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/platform/x86/intel_menlow.c
|
F: drivers/platform/x86/intel_menlow.c
|
||||||
|
|
||||||
INTEL MERRIFIELD GPIO DRIVER
|
|
||||||
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
|
||||||
L: linux-gpio@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/gpio/gpio-merrifield.c
|
|
||||||
|
|
||||||
INTEL MIC DRIVERS (mic)
|
INTEL MIC DRIVERS (mic)
|
||||||
M: Sudeep Dutt <sudeep.dutt@intel.com>
|
M: Sudeep Dutt <sudeep.dutt@intel.com>
|
||||||
M: Ashutosh Dixit <ashutosh.dixit@intel.com>
|
M: Ashutosh Dixit <ashutosh.dixit@intel.com>
|
||||||
@@ -7570,6 +7653,13 @@ F: drivers/platform/x86/intel_punit_ipc.c
|
|||||||
F: arch/x86/include/asm/intel_pmc_ipc.h
|
F: arch/x86/include/asm/intel_pmc_ipc.h
|
||||||
F: arch/x86/include/asm/intel_punit_ipc.h
|
F: arch/x86/include/asm/intel_punit_ipc.h
|
||||||
|
|
||||||
|
INTEL PMIC GPIO DRIVERS
|
||||||
|
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||||
|
S: Maintained
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel.git
|
||||||
|
F: drivers/gpio/gpio-*cove.c
|
||||||
|
F: drivers/gpio/gpio-msic.c
|
||||||
|
|
||||||
INTEL MULTIFUNCTION PMIC DEVICE DRIVERS
|
INTEL MULTIFUNCTION PMIC DEVICE DRIVERS
|
||||||
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -7678,7 +7768,7 @@ F: Documentation/devicetree/bindings/iio/gyroscope/invensense,mpu3050.txt
|
|||||||
|
|
||||||
IOC3 ETHERNET DRIVER
|
IOC3 ETHERNET DRIVER
|
||||||
M: Ralf Baechle <ralf@linux-mips.org>
|
M: Ralf Baechle <ralf@linux-mips.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/sgi/ioc3-eth.c
|
F: drivers/net/ethernet/sgi/ioc3-eth.c
|
||||||
|
|
||||||
@@ -8049,7 +8139,7 @@ F: tools/testing/selftests/
|
|||||||
F: Documentation/dev-tools/kselftest*
|
F: Documentation/dev-tools/kselftest*
|
||||||
|
|
||||||
KERNEL USERMODE HELPER
|
KERNEL USERMODE HELPER
|
||||||
M: "Luis R. Rodriguez" <mcgrof@kernel.org>
|
M: Luis Chamberlain <mcgrof@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: kernel/umh.c
|
F: kernel/umh.c
|
||||||
@@ -8106,7 +8196,7 @@ F: arch/arm64/kvm/
|
|||||||
|
|
||||||
KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
|
KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips)
|
||||||
M: James Hogan <jhogan@kernel.org>
|
M: James Hogan <jhogan@kernel.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/mips/include/uapi/asm/kvm*
|
F: arch/mips/include/uapi/asm/kvm*
|
||||||
F: arch/mips/include/asm/kvm*
|
F: arch/mips/include/asm/kvm*
|
||||||
@@ -8225,7 +8315,7 @@ F: mm/kmemleak.c
|
|||||||
F: mm/kmemleak-test.c
|
F: mm/kmemleak-test.c
|
||||||
|
|
||||||
KMOD KERNEL MODULE LOADER - USERMODE HELPER
|
KMOD KERNEL MODULE LOADER - USERMODE HELPER
|
||||||
M: "Luis R. Rodriguez" <mcgrof@kernel.org>
|
M: Luis Chamberlain <mcgrof@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: kernel/kmod.c
|
F: kernel/kmod.c
|
||||||
@@ -8279,7 +8369,7 @@ F: drivers/net/dsa/lantiq_gswip.c
|
|||||||
|
|
||||||
LANTIQ MIPS ARCHITECTURE
|
LANTIQ MIPS ARCHITECTURE
|
||||||
M: John Crispin <john@phrozen.org>
|
M: John Crispin <john@phrozen.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/lantiq
|
F: arch/mips/lantiq
|
||||||
F: drivers/soc/lantiq
|
F: drivers/soc/lantiq
|
||||||
@@ -8367,7 +8457,7 @@ F: drivers/media/dvb-frontends/lgdt3305.*
|
|||||||
LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
|
LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
|
||||||
M: Viresh Kumar <vireshk@kernel.org>
|
M: Viresh Kumar <vireshk@kernel.org>
|
||||||
L: linux-ide@vger.kernel.org
|
L: linux-ide@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: include/linux/pata_arasan_cf_data.h
|
F: include/linux/pata_arasan_cf_data.h
|
||||||
F: drivers/ata/pata_arasan_cf.c
|
F: drivers/ata/pata_arasan_cf.c
|
||||||
@@ -8384,7 +8474,7 @@ F: drivers/ata/ata_generic.c
|
|||||||
LIBATA PATA FARADAY FTIDE010 AND GEMINI SATA BRIDGE DRIVERS
|
LIBATA PATA FARADAY FTIDE010 AND GEMINI SATA BRIDGE DRIVERS
|
||||||
M: Linus Walleij <linus.walleij@linaro.org>
|
M: Linus Walleij <linus.walleij@linaro.org>
|
||||||
L: linux-ide@vger.kernel.org
|
L: linux-ide@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/ata/pata_ftide010.c
|
F: drivers/ata/pata_ftide010.c
|
||||||
F: drivers/ata/sata_gemini.c
|
F: drivers/ata/sata_gemini.c
|
||||||
@@ -8403,7 +8493,7 @@ F: include/linux/ahci_platform.h
|
|||||||
LIBATA SATA PROMISE TX2/TX4 CONTROLLER DRIVER
|
LIBATA SATA PROMISE TX2/TX4 CONTROLLER DRIVER
|
||||||
M: Mikael Pettersson <mikpelinux@gmail.com>
|
M: Mikael Pettersson <mikpelinux@gmail.com>
|
||||||
L: linux-ide@vger.kernel.org
|
L: linux-ide@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/ata/sata_promise.*
|
F: drivers/ata/sata_promise.*
|
||||||
|
|
||||||
@@ -8842,7 +8932,7 @@ S: Maintained
|
|||||||
|
|
||||||
MARDUK (CREATOR CI40) DEVICE TREE SUPPORT
|
MARDUK (CREATOR CI40) DEVICE TREE SUPPORT
|
||||||
M: Rahul Bedarkar <rahulbedarkar89@gmail.com>
|
M: Rahul Bedarkar <rahulbedarkar89@gmail.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/boot/dts/img/pistachio_marduk.dts
|
F: arch/mips/boot/dts/img/pistachio_marduk.dts
|
||||||
|
|
||||||
@@ -9801,7 +9891,7 @@ F: drivers/dma/at_xdmac.c
|
|||||||
|
|
||||||
MICROSEMI MIPS SOCS
|
MICROSEMI MIPS SOCS
|
||||||
M: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
M: Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/generic/board-ocelot.c
|
F: arch/mips/generic/board-ocelot.c
|
||||||
F: arch/mips/configs/generic/board-ocelot.config
|
F: arch/mips/configs/generic/board-ocelot.config
|
||||||
@@ -9841,7 +9931,7 @@ MIPS
|
|||||||
M: Ralf Baechle <ralf@linux-mips.org>
|
M: Ralf Baechle <ralf@linux-mips.org>
|
||||||
M: Paul Burton <paul.burton@mips.com>
|
M: Paul Burton <paul.burton@mips.com>
|
||||||
M: James Hogan <jhogan@kernel.org>
|
M: James Hogan <jhogan@kernel.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
W: http://www.linux-mips.org/
|
W: http://www.linux-mips.org/
|
||||||
T: git git://git.linux-mips.org/pub/scm/ralf/linux.git
|
T: git git://git.linux-mips.org/pub/scm/ralf/linux.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git
|
||||||
@@ -9854,7 +9944,7 @@ F: drivers/platform/mips/
|
|||||||
|
|
||||||
MIPS BOSTON DEVELOPMENT BOARD
|
MIPS BOSTON DEVELOPMENT BOARD
|
||||||
M: Paul Burton <paul.burton@mips.com>
|
M: Paul Burton <paul.burton@mips.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/clock/img,boston-clock.txt
|
F: Documentation/devicetree/bindings/clock/img,boston-clock.txt
|
||||||
F: arch/mips/boot/dts/img/boston.dts
|
F: arch/mips/boot/dts/img/boston.dts
|
||||||
@@ -9864,7 +9954,7 @@ F: include/dt-bindings/clock/boston-clock.h
|
|||||||
|
|
||||||
MIPS GENERIC PLATFORM
|
MIPS GENERIC PLATFORM
|
||||||
M: Paul Burton <paul.burton@mips.com>
|
M: Paul Burton <paul.burton@mips.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/devicetree/bindings/power/mti,mips-cpc.txt
|
F: Documentation/devicetree/bindings/power/mti,mips-cpc.txt
|
||||||
F: arch/mips/generic/
|
F: arch/mips/generic/
|
||||||
@@ -9872,7 +9962,7 @@ F: arch/mips/tools/generic-board-config.sh
|
|||||||
|
|
||||||
MIPS/LOONGSON1 ARCHITECTURE
|
MIPS/LOONGSON1 ARCHITECTURE
|
||||||
M: Keguang Zhang <keguang.zhang@gmail.com>
|
M: Keguang Zhang <keguang.zhang@gmail.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/loongson32/
|
F: arch/mips/loongson32/
|
||||||
F: arch/mips/include/asm/mach-loongson32/
|
F: arch/mips/include/asm/mach-loongson32/
|
||||||
@@ -9881,7 +9971,7 @@ F: drivers/*/*/*loongson1*
|
|||||||
|
|
||||||
MIPS/LOONGSON2 ARCHITECTURE
|
MIPS/LOONGSON2 ARCHITECTURE
|
||||||
M: Jiaxun Yang <jiaxun.yang@flygoat.com>
|
M: Jiaxun Yang <jiaxun.yang@flygoat.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/loongson64/fuloong-2e/
|
F: arch/mips/loongson64/fuloong-2e/
|
||||||
F: arch/mips/loongson64/lemote-2f/
|
F: arch/mips/loongson64/lemote-2f/
|
||||||
@@ -9891,7 +9981,7 @@ F: drivers/*/*/*loongson2*
|
|||||||
|
|
||||||
MIPS/LOONGSON3 ARCHITECTURE
|
MIPS/LOONGSON3 ARCHITECTURE
|
||||||
M: Huacai Chen <chenhc@lemote.com>
|
M: Huacai Chen <chenhc@lemote.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/loongson64/
|
F: arch/mips/loongson64/
|
||||||
F: arch/mips/include/asm/mach-loongson64/
|
F: arch/mips/include/asm/mach-loongson64/
|
||||||
@@ -9901,7 +9991,7 @@ F: drivers/*/*/*loongson3*
|
|||||||
|
|
||||||
MIPS RINT INSTRUCTION EMULATION
|
MIPS RINT INSTRUCTION EMULATION
|
||||||
M: Aleksandar Markovic <aleksandar.markovic@mips.com>
|
M: Aleksandar Markovic <aleksandar.markovic@mips.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/mips/math-emu/sp_rint.c
|
F: arch/mips/math-emu/sp_rint.c
|
||||||
F: arch/mips/math-emu/dp_rint.c
|
F: arch/mips/math-emu/dp_rint.c
|
||||||
@@ -10784,6 +10874,14 @@ L: linux-omap@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-omap2/omap_hwmod.*
|
F: arch/arm/mach-omap2/omap_hwmod.*
|
||||||
|
|
||||||
|
OMAP I2C DRIVER
|
||||||
|
M: Vignesh R <vigneshr@ti.com>
|
||||||
|
L: linux-omap@vger.kernel.org
|
||||||
|
L: linux-i2c@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/i2c/i2c-omap.txt
|
||||||
|
F: drivers/i2c/busses/i2c-omap.c
|
||||||
|
|
||||||
OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS)
|
OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS)
|
||||||
M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
@@ -10793,9 +10891,9 @@ F: drivers/media/platform/omap3isp/
|
|||||||
F: drivers/staging/media/omap4iss/
|
F: drivers/staging/media/omap4iss/
|
||||||
|
|
||||||
OMAP MMC SUPPORT
|
OMAP MMC SUPPORT
|
||||||
M: Jarkko Lavinen <jarkko.lavinen@nokia.com>
|
M: Aaro Koskinen <aaro.koskinen@iki.fi>
|
||||||
L: linux-omap@vger.kernel.org
|
L: linux-omap@vger.kernel.org
|
||||||
S: Maintained
|
S: Odd Fixes
|
||||||
F: drivers/mmc/host/omap.c
|
F: drivers/mmc/host/omap.c
|
||||||
|
|
||||||
OMAP POWER MANAGEMENT SUPPORT
|
OMAP POWER MANAGEMENT SUPPORT
|
||||||
@@ -10878,7 +10976,7 @@ F: include/linux/platform_data/i2c-omap.h
|
|||||||
|
|
||||||
ONION OMEGA2+ BOARD
|
ONION OMEGA2+ BOARD
|
||||||
M: Harvey Hunt <harveyhuntnexus@gmail.com>
|
M: Harvey Hunt <harveyhuntnexus@gmail.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/boot/dts/ralink/omega2p.dts
|
F: arch/mips/boot/dts/ralink/omega2p.dts
|
||||||
|
|
||||||
@@ -11730,6 +11828,7 @@ F: Documentation/devicetree/bindings/pinctrl/fsl,*
|
|||||||
PIN CONTROLLER - INTEL
|
PIN CONTROLLER - INTEL
|
||||||
M: Mika Westerberg <mika.westerberg@linux.intel.com>
|
M: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||||
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/pinctrl/intel/
|
F: drivers/pinctrl/intel/
|
||||||
|
|
||||||
@@ -11786,7 +11885,7 @@ F: drivers/pinctrl/spear/
|
|||||||
|
|
||||||
PISTACHIO SOC SUPPORT
|
PISTACHIO SOC SUPPORT
|
||||||
M: James Hartley <james.hartley@sondrel.com>
|
M: James Hartley <james.hartley@sondrel.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: arch/mips/pistachio/
|
F: arch/mips/pistachio/
|
||||||
F: arch/mips/include/asm/mach-pistachio/
|
F: arch/mips/include/asm/mach-pistachio/
|
||||||
@@ -11966,7 +12065,7 @@ F: kernel/printk/
|
|||||||
F: include/linux/printk.h
|
F: include/linux/printk.h
|
||||||
|
|
||||||
PRISM54 WIRELESS DRIVER
|
PRISM54 WIRELESS DRIVER
|
||||||
M: "Luis R. Rodriguez" <mcgrof@gmail.com>
|
M: Luis Chamberlain <mcgrof@kernel.org>
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
W: http://wireless.kernel.org/en/users/Drivers/p54
|
W: http://wireless.kernel.org/en/users/Drivers/p54
|
||||||
S: Obsolete
|
S: Obsolete
|
||||||
@@ -11980,9 +12079,10 @@ S: Maintained
|
|||||||
F: fs/proc/
|
F: fs/proc/
|
||||||
F: include/linux/proc_fs.h
|
F: include/linux/proc_fs.h
|
||||||
F: tools/testing/selftests/proc/
|
F: tools/testing/selftests/proc/
|
||||||
|
F: Documentation/filesystems/proc.txt
|
||||||
|
|
||||||
PROC SYSCTL
|
PROC SYSCTL
|
||||||
M: "Luis R. Rodriguez" <mcgrof@kernel.org>
|
M: Luis Chamberlain <mcgrof@kernel.org>
|
||||||
M: Kees Cook <keescook@chromium.org>
|
M: Kees Cook <keescook@chromium.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
L: linux-fsdevel@vger.kernel.org
|
L: linux-fsdevel@vger.kernel.org
|
||||||
@@ -12445,7 +12545,7 @@ F: drivers/media/usb/rainshadow-cec/*
|
|||||||
|
|
||||||
RALINK MIPS ARCHITECTURE
|
RALINK MIPS ARCHITECTURE
|
||||||
M: John Crispin <john@phrozen.org>
|
M: John Crispin <john@phrozen.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/ralink
|
F: arch/mips/ralink
|
||||||
|
|
||||||
@@ -12465,7 +12565,7 @@ F: drivers/block/brd.c
|
|||||||
|
|
||||||
RANCHU VIRTUAL BOARD FOR MIPS
|
RANCHU VIRTUAL BOARD FOR MIPS
|
||||||
M: Miodrag Dinic <miodrag.dinic@mips.com>
|
M: Miodrag Dinic <miodrag.dinic@mips.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/mips/generic/board-ranchu.c
|
F: arch/mips/generic/board-ranchu.c
|
||||||
F: arch/mips/configs/generic/board-ranchu.config
|
F: arch/mips/configs/generic/board-ranchu.config
|
||||||
@@ -13790,6 +13890,13 @@ F: drivers/md/raid*
|
|||||||
F: include/linux/raid/
|
F: include/linux/raid/
|
||||||
F: include/uapi/linux/raid/
|
F: include/uapi/linux/raid/
|
||||||
|
|
||||||
|
SOCIONEXT (SNI) AVE NETWORK DRIVER
|
||||||
|
M: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/net/ethernet/socionext/sni_ave.c
|
||||||
|
F: Documentation/devicetree/bindings/net/socionext,uniphier-ave4.txt
|
||||||
|
|
||||||
SOCIONEXT (SNI) NETSEC NETWORK DRIVER
|
SOCIONEXT (SNI) NETSEC NETWORK DRIVER
|
||||||
M: Jassi Brar <jaswinder.singh@linaro.org>
|
M: Jassi Brar <jaswinder.singh@linaro.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
@@ -13915,6 +14022,7 @@ S: Supported
|
|||||||
F: Documentation/devicetree/bindings/sound/
|
F: Documentation/devicetree/bindings/sound/
|
||||||
F: Documentation/sound/soc/
|
F: Documentation/sound/soc/
|
||||||
F: sound/soc/
|
F: sound/soc/
|
||||||
|
F: include/dt-bindings/sound/
|
||||||
F: include/sound/soc*
|
F: include/sound/soc*
|
||||||
|
|
||||||
SOUNDWIRE SUBSYSTEM
|
SOUNDWIRE SUBSYSTEM
|
||||||
@@ -13962,11 +14070,10 @@ F: drivers/tty/serial/sunzilog.h
|
|||||||
F: drivers/tty/vcc.c
|
F: drivers/tty/vcc.c
|
||||||
|
|
||||||
SPARSE CHECKER
|
SPARSE CHECKER
|
||||||
M: "Christopher Li" <sparse@chrisli.org>
|
M: "Luc Van Oostenryck" <luc.vanoostenryck@gmail.com>
|
||||||
L: linux-sparse@vger.kernel.org
|
L: linux-sparse@vger.kernel.org
|
||||||
W: https://sparse.wiki.kernel.org/
|
W: https://sparse.wiki.kernel.org/
|
||||||
T: git git://git.kernel.org/pub/scm/devel/sparse/sparse.git
|
T: git git://git.kernel.org/pub/scm/devel/sparse/sparse.git
|
||||||
T: git git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: include/linux/compiler.h
|
F: include/linux/compiler.h
|
||||||
|
|
||||||
@@ -14063,6 +14170,7 @@ F: Documentation/devicetree/bindings/iio/proximity/vl53l0x.txt
|
|||||||
|
|
||||||
STABLE BRANCH
|
STABLE BRANCH
|
||||||
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
|
M: Sasha Levin <sashal@kernel.org>
|
||||||
L: stable@vger.kernel.org
|
L: stable@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/process/stable-kernel-rules.rst
|
F: Documentation/process/stable-kernel-rules.rst
|
||||||
@@ -15200,7 +15308,7 @@ F: arch/um/os-Linux/drivers/
|
|||||||
TURBOCHANNEL SUBSYSTEM
|
TURBOCHANNEL SUBSYSTEM
|
||||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||||
M: Ralf Baechle <ralf@linux-mips.org>
|
M: Ralf Baechle <ralf@linux-mips.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
Q: http://patchwork.linux-mips.org/project/linux-mips/list/
|
Q: http://patchwork.linux-mips.org/project/linux-mips/list/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/tc/
|
F: drivers/tc/
|
||||||
@@ -15436,9 +15544,9 @@ F: include/linux/usb/gadget*
|
|||||||
|
|
||||||
USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
|
USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
|
||||||
M: Jiri Kosina <jikos@kernel.org>
|
M: Jiri Kosina <jikos@kernel.org>
|
||||||
R: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
M: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hid/hiddev.txt
|
F: Documentation/hid/hiddev.txt
|
||||||
F: drivers/hid/usbhid/
|
F: drivers/hid/usbhid/
|
||||||
@@ -16021,7 +16129,7 @@ F: drivers/net/vmxnet3/
|
|||||||
|
|
||||||
VOCORE VOCORE2 BOARD
|
VOCORE VOCORE2 BOARD
|
||||||
M: Harvey Hunt <harveyhuntnexus@gmail.com>
|
M: Harvey Hunt <harveyhuntnexus@gmail.com>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/boot/dts/ralink/vocore2.dts
|
F: arch/mips/boot/dts/ralink/vocore2.dts
|
||||||
|
|
||||||
|
4
Makefile
4
Makefile
@@ -2,8 +2,8 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 20
|
PATCHLEVEL = 20
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION = -rc6
|
||||||
NAME = "People's Front"
|
NAME = Shy Crocodile
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# To see a list of typical targets execute "make help"
|
||||||
|
@@ -73,9 +73,15 @@
|
|||||||
})
|
})
|
||||||
|
|
||||||
#define user_termios_to_kernel_termios(k, u) \
|
#define user_termios_to_kernel_termios(k, u) \
|
||||||
copy_from_user(k, u, sizeof(struct termios))
|
copy_from_user(k, u, sizeof(struct termios2))
|
||||||
|
|
||||||
#define kernel_termios_to_user_termios(u, k) \
|
#define kernel_termios_to_user_termios(u, k) \
|
||||||
|
copy_to_user(u, k, sizeof(struct termios2))
|
||||||
|
|
||||||
|
#define user_termios_to_kernel_termios_1(k, u) \
|
||||||
|
copy_from_user(k, u, sizeof(struct termios))
|
||||||
|
|
||||||
|
#define kernel_termios_to_user_termios_1(u, k) \
|
||||||
copy_to_user(u, k, sizeof(struct termios))
|
copy_to_user(u, k, sizeof(struct termios))
|
||||||
|
|
||||||
#endif /* _ALPHA_TERMIOS_H */
|
#endif /* _ALPHA_TERMIOS_H */
|
||||||
|
@@ -32,6 +32,11 @@
|
|||||||
#define TCXONC _IO('t', 30)
|
#define TCXONC _IO('t', 30)
|
||||||
#define TCFLSH _IO('t', 31)
|
#define TCFLSH _IO('t', 31)
|
||||||
|
|
||||||
|
#define TCGETS2 _IOR('T', 42, struct termios2)
|
||||||
|
#define TCSETS2 _IOW('T', 43, struct termios2)
|
||||||
|
#define TCSETSW2 _IOW('T', 44, struct termios2)
|
||||||
|
#define TCSETSF2 _IOW('T', 45, struct termios2)
|
||||||
|
|
||||||
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
|
#define TIOCSWINSZ _IOW('t', 103, struct winsize)
|
||||||
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
|
#define TIOCGWINSZ _IOR('t', 104, struct winsize)
|
||||||
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
|
#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
|
||||||
|
@@ -26,6 +26,19 @@ struct termios {
|
|||||||
speed_t c_ospeed; /* output speed */
|
speed_t c_ospeed; /* output speed */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Alpha has identical termios and termios2 */
|
||||||
|
|
||||||
|
struct termios2 {
|
||||||
|
tcflag_t c_iflag; /* input mode flags */
|
||||||
|
tcflag_t c_oflag; /* output mode flags */
|
||||||
|
tcflag_t c_cflag; /* control mode flags */
|
||||||
|
tcflag_t c_lflag; /* local mode flags */
|
||||||
|
cc_t c_cc[NCCS]; /* control characters */
|
||||||
|
cc_t c_line; /* line discipline (== c_cc[19]) */
|
||||||
|
speed_t c_ispeed; /* input speed */
|
||||||
|
speed_t c_ospeed; /* output speed */
|
||||||
|
};
|
||||||
|
|
||||||
/* Alpha has matching termios and ktermios */
|
/* Alpha has matching termios and ktermios */
|
||||||
|
|
||||||
struct ktermios {
|
struct ktermios {
|
||||||
@@ -152,6 +165,7 @@ struct ktermios {
|
|||||||
#define B3000000 00034
|
#define B3000000 00034
|
||||||
#define B3500000 00035
|
#define B3500000 00035
|
||||||
#define B4000000 00036
|
#define B4000000 00036
|
||||||
|
#define BOTHER 00037
|
||||||
|
|
||||||
#define CSIZE 00001400
|
#define CSIZE 00001400
|
||||||
#define CS5 00000000
|
#define CS5 00000000
|
||||||
@@ -169,6 +183,9 @@ struct ktermios {
|
|||||||
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
#define CMSPAR 010000000000 /* mark or space (stick) parity */
|
||||||
#define CRTSCTS 020000000000 /* flow control */
|
#define CRTSCTS 020000000000 /* flow control */
|
||||||
|
|
||||||
|
#define CIBAUD 07600000
|
||||||
|
#define IBSHIFT 16
|
||||||
|
|
||||||
/* c_lflag bits */
|
/* c_lflag bits */
|
||||||
#define ISIG 0x00000080
|
#define ISIG 0x00000080
|
||||||
#define ICANON 0x00000100
|
#define ICANON 0x00000100
|
||||||
|
@@ -109,7 +109,7 @@ endmenu
|
|||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "ARC Instruction Set"
|
prompt "ARC Instruction Set"
|
||||||
default ISA_ARCOMPACT
|
default ISA_ARCV2
|
||||||
|
|
||||||
config ISA_ARCOMPACT
|
config ISA_ARCOMPACT
|
||||||
bool "ARCompact ISA"
|
bool "ARCompact ISA"
|
||||||
@@ -176,13 +176,11 @@ endchoice
|
|||||||
|
|
||||||
config CPU_BIG_ENDIAN
|
config CPU_BIG_ENDIAN
|
||||||
bool "Enable Big Endian Mode"
|
bool "Enable Big Endian Mode"
|
||||||
default n
|
|
||||||
help
|
help
|
||||||
Build kernel for Big Endian Mode of ARC CPU
|
Build kernel for Big Endian Mode of ARC CPU
|
||||||
|
|
||||||
config SMP
|
config SMP
|
||||||
bool "Symmetric Multi-Processing"
|
bool "Symmetric Multi-Processing"
|
||||||
default n
|
|
||||||
select ARC_MCIP if ISA_ARCV2
|
select ARC_MCIP if ISA_ARCV2
|
||||||
help
|
help
|
||||||
This enables support for systems with more than one CPU.
|
This enables support for systems with more than one CPU.
|
||||||
@@ -254,7 +252,6 @@ config ARC_CACHE_PAGES
|
|||||||
config ARC_CACHE_VIPT_ALIASING
|
config ARC_CACHE_VIPT_ALIASING
|
||||||
bool "Support VIPT Aliasing D$"
|
bool "Support VIPT Aliasing D$"
|
||||||
depends on ARC_HAS_DCACHE && ISA_ARCOMPACT
|
depends on ARC_HAS_DCACHE && ISA_ARCOMPACT
|
||||||
default n
|
|
||||||
|
|
||||||
endif #ARC_CACHE
|
endif #ARC_CACHE
|
||||||
|
|
||||||
@@ -262,7 +259,6 @@ config ARC_HAS_ICCM
|
|||||||
bool "Use ICCM"
|
bool "Use ICCM"
|
||||||
help
|
help
|
||||||
Single Cycle RAMS to store Fast Path Code
|
Single Cycle RAMS to store Fast Path Code
|
||||||
default n
|
|
||||||
|
|
||||||
config ARC_ICCM_SZ
|
config ARC_ICCM_SZ
|
||||||
int "ICCM Size in KB"
|
int "ICCM Size in KB"
|
||||||
@@ -273,7 +269,6 @@ config ARC_HAS_DCCM
|
|||||||
bool "Use DCCM"
|
bool "Use DCCM"
|
||||||
help
|
help
|
||||||
Single Cycle RAMS to store Fast Path Data
|
Single Cycle RAMS to store Fast Path Data
|
||||||
default n
|
|
||||||
|
|
||||||
config ARC_DCCM_SZ
|
config ARC_DCCM_SZ
|
||||||
int "DCCM Size in KB"
|
int "DCCM Size in KB"
|
||||||
@@ -366,13 +361,11 @@ if ISA_ARCOMPACT
|
|||||||
|
|
||||||
config ARC_COMPACT_IRQ_LEVELS
|
config ARC_COMPACT_IRQ_LEVELS
|
||||||
bool "Setup Timer IRQ as high Priority"
|
bool "Setup Timer IRQ as high Priority"
|
||||||
default n
|
|
||||||
# if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
|
# if SMP, LV2 enabled ONLY if ARC implementation has LV2 re-entrancy
|
||||||
depends on !SMP
|
depends on !SMP
|
||||||
|
|
||||||
config ARC_FPU_SAVE_RESTORE
|
config ARC_FPU_SAVE_RESTORE
|
||||||
bool "Enable FPU state persistence across context switch"
|
bool "Enable FPU state persistence across context switch"
|
||||||
default n
|
|
||||||
help
|
help
|
||||||
Double Precision Floating Point unit had dedicated regs which
|
Double Precision Floating Point unit had dedicated regs which
|
||||||
need to be saved/restored across context-switch.
|
need to be saved/restored across context-switch.
|
||||||
@@ -453,7 +446,6 @@ config HIGHMEM
|
|||||||
|
|
||||||
config ARC_HAS_PAE40
|
config ARC_HAS_PAE40
|
||||||
bool "Support for the 40-bit Physical Address Extension"
|
bool "Support for the 40-bit Physical Address Extension"
|
||||||
default n
|
|
||||||
depends on ISA_ARCV2
|
depends on ISA_ARCV2
|
||||||
select HIGHMEM
|
select HIGHMEM
|
||||||
select PHYS_ADDR_T_64BIT
|
select PHYS_ADDR_T_64BIT
|
||||||
@@ -496,7 +488,6 @@ config HZ
|
|||||||
|
|
||||||
config ARC_METAWARE_HLINK
|
config ARC_METAWARE_HLINK
|
||||||
bool "Support for Metaware debugger assisted Host access"
|
bool "Support for Metaware debugger assisted Host access"
|
||||||
default n
|
|
||||||
help
|
help
|
||||||
This options allows a Linux userland apps to directly access
|
This options allows a Linux userland apps to directly access
|
||||||
host file system (open/creat/read/write etc) with help from
|
host file system (open/creat/read/write etc) with help from
|
||||||
@@ -524,13 +515,11 @@ config ARC_DW2_UNWIND
|
|||||||
|
|
||||||
config ARC_DBG_TLB_PARANOIA
|
config ARC_DBG_TLB_PARANOIA
|
||||||
bool "Paranoia Checks in Low Level TLB Handlers"
|
bool "Paranoia Checks in Low Level TLB Handlers"
|
||||||
default n
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
config ARC_UBOOT_SUPPORT
|
config ARC_UBOOT_SUPPORT
|
||||||
bool "Support uboot arg Handling"
|
bool "Support uboot arg Handling"
|
||||||
default n
|
|
||||||
help
|
help
|
||||||
ARC Linux by default checks for uboot provided args as pointers to
|
ARC Linux by default checks for uboot provided args as pointers to
|
||||||
external cmdline or DTB. This however breaks in absence of uboot,
|
external cmdline or DTB. This however breaks in absence of uboot,
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
# published by the Free Software Foundation.
|
# published by the Free Software Foundation.
|
||||||
#
|
#
|
||||||
|
|
||||||
KBUILD_DEFCONFIG := nsim_700_defconfig
|
KBUILD_DEFCONFIG := nsim_hs_defconfig
|
||||||
|
|
||||||
cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
|
cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
|
||||||
cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7
|
cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7
|
||||||
|
@@ -222,6 +222,21 @@
|
|||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
dma-coherent;
|
dma-coherent;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gpio: gpio@3000 {
|
||||||
|
compatible = "snps,dw-apb-gpio";
|
||||||
|
reg = <0x3000 0x20>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
gpio_port_a: gpio-controller@0 {
|
||||||
|
compatible = "snps,dw-apb-gpio-port";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
snps,nr-gpios = <24>;
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory@80000000 {
|
memory@80000000 {
|
||||||
|
@@ -14,6 +14,7 @@ CONFIG_PERF_EVENTS=y
|
|||||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||||
# CONFIG_SLUB_DEBUG is not set
|
# CONFIG_SLUB_DEBUG is not set
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
CONFIG_ISA_ARCOMPACT=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_FORCE_LOAD=y
|
CONFIG_MODULE_FORCE_LOAD=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
@@ -95,6 +96,7 @@ CONFIG_VFAT_FS=y
|
|||||||
CONFIG_NTFS_FS=y
|
CONFIG_NTFS_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
@@ -94,6 +94,7 @@ CONFIG_VFAT_FS=y
|
|||||||
CONFIG_NTFS_FS=y
|
CONFIG_NTFS_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
@@ -97,6 +97,7 @@ CONFIG_VFAT_FS=y
|
|||||||
CONFIG_NTFS_FS=y
|
CONFIG_NTFS_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
@@ -45,6 +45,9 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
|||||||
CONFIG_SERIAL_8250_DW=y
|
CONFIG_SERIAL_8250_DW=y
|
||||||
CONFIG_SERIAL_OF_PLATFORM=y
|
CONFIG_SERIAL_OF_PLATFORM=y
|
||||||
# CONFIG_HW_RANDOM is not set
|
# CONFIG_HW_RANDOM is not set
|
||||||
|
CONFIG_GPIOLIB=y
|
||||||
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
CONFIG_GPIO_DWAPB=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_DRM=y
|
CONFIG_DRM=y
|
||||||
# CONFIG_DRM_FBDEV_EMULATION is not set
|
# CONFIG_DRM_FBDEV_EMULATION is not set
|
||||||
@@ -65,6 +68,7 @@ CONFIG_EXT3_FS=y
|
|||||||
CONFIG_VFAT_FS=y
|
CONFIG_VFAT_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
@@ -15,6 +15,7 @@ CONFIG_SYSCTL_SYSCALL=y
|
|||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_PERF_EVENTS=y
|
CONFIG_PERF_EVENTS=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
CONFIG_ISA_ARCOMPACT=y
|
||||||
CONFIG_KPROBES=y
|
CONFIG_KPROBES=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_FORCE_LOAD=y
|
CONFIG_MODULE_FORCE_LOAD=y
|
||||||
@@ -73,6 +74,7 @@ CONFIG_PROC_KCORE=y
|
|||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_MISC_FILESYSTEMS is not set
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
@@ -15,6 +15,7 @@ CONFIG_EMBEDDED=y
|
|||||||
CONFIG_PERF_EVENTS=y
|
CONFIG_PERF_EVENTS=y
|
||||||
# CONFIG_SLUB_DEBUG is not set
|
# CONFIG_SLUB_DEBUG is not set
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
CONFIG_ISA_ARCOMPACT=y
|
||||||
CONFIG_KPROBES=y
|
CONFIG_KPROBES=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
# CONFIG_LBDAF is not set
|
# CONFIG_LBDAF is not set
|
||||||
|
@@ -15,6 +15,7 @@ CONFIG_EMBEDDED=y
|
|||||||
CONFIG_PERF_EVENTS=y
|
CONFIG_PERF_EVENTS=y
|
||||||
# CONFIG_SLUB_DEBUG is not set
|
# CONFIG_SLUB_DEBUG is not set
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
CONFIG_ISA_ARCOMPACT=y
|
||||||
CONFIG_KPROBES=y
|
CONFIG_KPROBES=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
# CONFIG_LBDAF is not set
|
# CONFIG_LBDAF is not set
|
||||||
@@ -66,5 +67,6 @@ CONFIG_EXT2_FS_XATTR=y
|
|||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_MISC_FILESYSTEMS is not set
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
|
@@ -65,5 +65,6 @@ CONFIG_EXT2_FS_XATTR=y
|
|||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_MISC_FILESYSTEMS is not set
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
|
@@ -76,6 +76,7 @@ CONFIG_EXT2_FS_XATTR=y
|
|||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_MISC_FILESYSTEMS is not set
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||||
CONFIG_FTRACE=y
|
CONFIG_FTRACE=y
|
||||||
|
@@ -19,6 +19,7 @@ CONFIG_KALLSYMS_ALL=y
|
|||||||
# CONFIG_AIO is not set
|
# CONFIG_AIO is not set
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
CONFIG_ISA_ARCOMPACT=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_FORCE_LOAD=y
|
CONFIG_MODULE_FORCE_LOAD=y
|
||||||
|
@@ -85,6 +85,7 @@ CONFIG_NTFS_FS=y
|
|||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
@@ -90,6 +90,7 @@ CONFIG_NTFS_FS=y
|
|||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
@@ -113,7 +113,9 @@ extern unsigned long perip_base, perip_end;
|
|||||||
|
|
||||||
/* IO coherency related Auxiliary registers */
|
/* IO coherency related Auxiliary registers */
|
||||||
#define ARC_REG_IO_COH_ENABLE 0x500
|
#define ARC_REG_IO_COH_ENABLE 0x500
|
||||||
|
#define ARC_IO_COH_ENABLE_BIT BIT(0)
|
||||||
#define ARC_REG_IO_COH_PARTIAL 0x501
|
#define ARC_REG_IO_COH_PARTIAL 0x501
|
||||||
|
#define ARC_IO_COH_PARTIAL_BIT BIT(0)
|
||||||
#define ARC_REG_IO_COH_AP0_BASE 0x508
|
#define ARC_REG_IO_COH_AP0_BASE 0x508
|
||||||
#define ARC_REG_IO_COH_AP0_SIZE 0x509
|
#define ARC_REG_IO_COH_AP0_SIZE 0x509
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
#include <asm/unaligned.h>
|
||||||
|
|
||||||
#ifdef CONFIG_ISA_ARCV2
|
#ifdef CONFIG_ISA_ARCV2
|
||||||
#include <asm/barrier.h>
|
#include <asm/barrier.h>
|
||||||
@@ -94,6 +95,42 @@ static inline u32 __raw_readl(const volatile void __iomem *addr)
|
|||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* {read,write}s{b,w,l}() repeatedly access the same IO address in
|
||||||
|
* native endianness in 8-, 16-, 32-bit chunks {into,from} memory,
|
||||||
|
* @count times
|
||||||
|
*/
|
||||||
|
#define __raw_readsx(t,f) \
|
||||||
|
static inline void __raw_reads##f(const volatile void __iomem *addr, \
|
||||||
|
void *ptr, unsigned int count) \
|
||||||
|
{ \
|
||||||
|
bool is_aligned = ((unsigned long)ptr % ((t) / 8)) == 0; \
|
||||||
|
u##t *buf = ptr; \
|
||||||
|
\
|
||||||
|
if (!count) \
|
||||||
|
return; \
|
||||||
|
\
|
||||||
|
/* Some ARC CPU's don't support unaligned accesses */ \
|
||||||
|
if (is_aligned) { \
|
||||||
|
do { \
|
||||||
|
u##t x = __raw_read##f(addr); \
|
||||||
|
*buf++ = x; \
|
||||||
|
} while (--count); \
|
||||||
|
} else { \
|
||||||
|
do { \
|
||||||
|
u##t x = __raw_read##f(addr); \
|
||||||
|
put_unaligned(x, buf++); \
|
||||||
|
} while (--count); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define __raw_readsb __raw_readsb
|
||||||
|
__raw_readsx(8, b)
|
||||||
|
#define __raw_readsw __raw_readsw
|
||||||
|
__raw_readsx(16, w)
|
||||||
|
#define __raw_readsl __raw_readsl
|
||||||
|
__raw_readsx(32, l)
|
||||||
|
|
||||||
#define __raw_writeb __raw_writeb
|
#define __raw_writeb __raw_writeb
|
||||||
static inline void __raw_writeb(u8 b, volatile void __iomem *addr)
|
static inline void __raw_writeb(u8 b, volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
@@ -126,6 +163,35 @@ static inline void __raw_writel(u32 w, volatile void __iomem *addr)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define __raw_writesx(t,f) \
|
||||||
|
static inline void __raw_writes##f(volatile void __iomem *addr, \
|
||||||
|
const void *ptr, unsigned int count) \
|
||||||
|
{ \
|
||||||
|
bool is_aligned = ((unsigned long)ptr % ((t) / 8)) == 0; \
|
||||||
|
const u##t *buf = ptr; \
|
||||||
|
\
|
||||||
|
if (!count) \
|
||||||
|
return; \
|
||||||
|
\
|
||||||
|
/* Some ARC CPU's don't support unaligned accesses */ \
|
||||||
|
if (is_aligned) { \
|
||||||
|
do { \
|
||||||
|
__raw_write##f(*buf++, addr); \
|
||||||
|
} while (--count); \
|
||||||
|
} else { \
|
||||||
|
do { \
|
||||||
|
__raw_write##f(get_unaligned(buf++), addr); \
|
||||||
|
} while (--count); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define __raw_writesb __raw_writesb
|
||||||
|
__raw_writesx(8, b)
|
||||||
|
#define __raw_writesw __raw_writesw
|
||||||
|
__raw_writesx(16, w)
|
||||||
|
#define __raw_writesl __raw_writesl
|
||||||
|
__raw_writesx(32, l)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MMIO can also get buffered/optimized in micro-arch, so barriers needed
|
* MMIO can also get buffered/optimized in micro-arch, so barriers needed
|
||||||
* Based on ARM model for the typical use case
|
* Based on ARM model for the typical use case
|
||||||
@@ -141,10 +207,16 @@ static inline void __raw_writel(u32 w, volatile void __iomem *addr)
|
|||||||
#define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; })
|
#define readb(c) ({ u8 __v = readb_relaxed(c); __iormb(); __v; })
|
||||||
#define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(); __v; })
|
#define readw(c) ({ u16 __v = readw_relaxed(c); __iormb(); __v; })
|
||||||
#define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
|
#define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
|
||||||
|
#define readsb(p,d,l) ({ __raw_readsb(p,d,l); __iormb(); })
|
||||||
|
#define readsw(p,d,l) ({ __raw_readsw(p,d,l); __iormb(); })
|
||||||
|
#define readsl(p,d,l) ({ __raw_readsl(p,d,l); __iormb(); })
|
||||||
|
|
||||||
#define writeb(v,c) ({ __iowmb(); writeb_relaxed(v,c); })
|
#define writeb(v,c) ({ __iowmb(); writeb_relaxed(v,c); })
|
||||||
#define writew(v,c) ({ __iowmb(); writew_relaxed(v,c); })
|
#define writew(v,c) ({ __iowmb(); writew_relaxed(v,c); })
|
||||||
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
|
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
|
||||||
|
#define writesb(p,d,l) ({ __iowmb(); __raw_writesb(p,d,l); })
|
||||||
|
#define writesw(p,d,l) ({ __iowmb(); __raw_writesw(p,d,l); })
|
||||||
|
#define writesl(p,d,l) ({ __iowmb(); __raw_writesl(p,d,l); })
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Relaxed API for drivers which can handle barrier ordering themselves
|
* Relaxed API for drivers which can handle barrier ordering themselves
|
||||||
|
@@ -243,7 +243,7 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
|
|||||||
{
|
{
|
||||||
struct cpuinfo_arc *cpu = &cpuinfo_arc700[cpu_id];
|
struct cpuinfo_arc *cpu = &cpuinfo_arc700[cpu_id];
|
||||||
struct bcr_identity *core = &cpu->core;
|
struct bcr_identity *core = &cpu->core;
|
||||||
int i, n = 0;
|
int i, n = 0, ua = 0;
|
||||||
|
|
||||||
FIX_PTR(cpu);
|
FIX_PTR(cpu);
|
||||||
|
|
||||||
@@ -263,10 +263,13 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
|
|||||||
IS_AVAIL2(cpu->extn.rtc, "RTC [UP 64-bit] ", CONFIG_ARC_TIMERS_64BIT),
|
IS_AVAIL2(cpu->extn.rtc, "RTC [UP 64-bit] ", CONFIG_ARC_TIMERS_64BIT),
|
||||||
IS_AVAIL2(cpu->extn.gfrc, "GFRC [SMP 64-bit] ", CONFIG_ARC_TIMERS_64BIT));
|
IS_AVAIL2(cpu->extn.gfrc, "GFRC [SMP 64-bit] ", CONFIG_ARC_TIMERS_64BIT));
|
||||||
|
|
||||||
n += i = scnprintf(buf + n, len - n, "%s%s%s%s%s",
|
#ifdef __ARC_UNALIGNED__
|
||||||
|
ua = 1;
|
||||||
|
#endif
|
||||||
|
n += i = scnprintf(buf + n, len - n, "%s%s%s%s%s%s",
|
||||||
IS_AVAIL2(cpu->isa.atomic, "atomic ", CONFIG_ARC_HAS_LLSC),
|
IS_AVAIL2(cpu->isa.atomic, "atomic ", CONFIG_ARC_HAS_LLSC),
|
||||||
IS_AVAIL2(cpu->isa.ldd, "ll64 ", CONFIG_ARC_HAS_LL64),
|
IS_AVAIL2(cpu->isa.ldd, "ll64 ", CONFIG_ARC_HAS_LL64),
|
||||||
IS_AVAIL1(cpu->isa.unalign, "unalign (not used)"));
|
IS_AVAIL1(cpu->isa.unalign, "unalign "), IS_USED_RUN(ua));
|
||||||
|
|
||||||
if (i)
|
if (i)
|
||||||
n += scnprintf(buf + n, len - n, "\n\t\t: ");
|
n += scnprintf(buf + n, len - n, "\n\t\t: ");
|
||||||
|
@@ -1144,6 +1144,20 @@ noinline void __init arc_ioc_setup(void)
|
|||||||
{
|
{
|
||||||
unsigned int ioc_base, mem_sz;
|
unsigned int ioc_base, mem_sz;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If IOC was already enabled (due to bootloader) it technically needs to
|
||||||
|
* be reconfigured with aperture base,size corresponding to Linux memory map
|
||||||
|
* which will certainly be different than uboot's. But disabling and
|
||||||
|
* reenabling IOC when DMA might be potentially active is tricky business.
|
||||||
|
* To avoid random memory issues later, just panic here and ask user to
|
||||||
|
* upgrade bootloader to one which doesn't enable IOC
|
||||||
|
*/
|
||||||
|
if (read_aux_reg(ARC_REG_IO_COH_ENABLE) & ARC_IO_COH_ENABLE_BIT)
|
||||||
|
panic("IOC already enabled, please upgrade bootloader!\n");
|
||||||
|
|
||||||
|
if (!ioc_enable)
|
||||||
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As for today we don't support both IOC and ZONE_HIGHMEM enabled
|
* As for today we don't support both IOC and ZONE_HIGHMEM enabled
|
||||||
* simultaneously. This happens because as of today IOC aperture covers
|
* simultaneously. This happens because as of today IOC aperture covers
|
||||||
@@ -1187,8 +1201,8 @@ noinline void __init arc_ioc_setup(void)
|
|||||||
panic("IOC Aperture start must be aligned to the size of the aperture");
|
panic("IOC Aperture start must be aligned to the size of the aperture");
|
||||||
|
|
||||||
write_aux_reg(ARC_REG_IO_COH_AP0_BASE, ioc_base >> 12);
|
write_aux_reg(ARC_REG_IO_COH_AP0_BASE, ioc_base >> 12);
|
||||||
write_aux_reg(ARC_REG_IO_COH_PARTIAL, 1);
|
write_aux_reg(ARC_REG_IO_COH_PARTIAL, ARC_IO_COH_PARTIAL_BIT);
|
||||||
write_aux_reg(ARC_REG_IO_COH_ENABLE, 1);
|
write_aux_reg(ARC_REG_IO_COH_ENABLE, ARC_IO_COH_ENABLE_BIT);
|
||||||
|
|
||||||
/* Re-enable L1 dcache */
|
/* Re-enable L1 dcache */
|
||||||
__dc_enable();
|
__dc_enable();
|
||||||
@@ -1265,7 +1279,7 @@ void __init arc_cache_init_master(void)
|
|||||||
if (is_isa_arcv2() && l2_line_sz && !slc_enable)
|
if (is_isa_arcv2() && l2_line_sz && !slc_enable)
|
||||||
arc_slc_disable();
|
arc_slc_disable();
|
||||||
|
|
||||||
if (is_isa_arcv2() && ioc_enable)
|
if (is_isa_arcv2() && ioc_exists)
|
||||||
arc_ioc_setup();
|
arc_ioc_setup();
|
||||||
|
|
||||||
if (is_isa_arcv2() && l2_line_sz && slc_enable) {
|
if (is_isa_arcv2() && l2_line_sz && slc_enable) {
|
||||||
|
@@ -66,7 +66,7 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
|
|||||||
struct vm_area_struct *vma = NULL;
|
struct vm_area_struct *vma = NULL;
|
||||||
struct task_struct *tsk = current;
|
struct task_struct *tsk = current;
|
||||||
struct mm_struct *mm = tsk->mm;
|
struct mm_struct *mm = tsk->mm;
|
||||||
int si_code;
|
int si_code = 0;
|
||||||
int ret;
|
int ret;
|
||||||
vm_fault_t fault;
|
vm_fault_t fault;
|
||||||
int write = regs->ecr_cause & ECR_C_PROTV_STORE; /* ST/EX */
|
int write = regs->ecr_cause & ECR_C_PROTV_STORE; /* ST/EX */
|
||||||
|
@@ -228,7 +228,7 @@
|
|||||||
vmmc-supply = <&vmmc_fixed>;
|
vmmc-supply = <&vmmc_fixed>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
wp-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>; /* gpio_126 */
|
wp-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>; /* gpio_126 */
|
||||||
cd-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>; /* gpio_127 */
|
cd-gpios = <&gpio4 31 GPIO_ACTIVE_LOW>; /* gpio_127 */
|
||||||
};
|
};
|
||||||
|
|
||||||
&mmc3 {
|
&mmc3 {
|
||||||
|
@@ -163,7 +163,7 @@
|
|||||||
compatible = "ti,wl1271";
|
compatible = "ti,wl1271";
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
interrupt-parent = <&gpio6>;
|
interrupt-parent = <&gpio6>;
|
||||||
interrupts = <10 IRQ_TYPE_LEVEL_HIGH>; /* gpio_170 */
|
interrupts = <10 IRQ_TYPE_EDGE_RISING>; /* gpio_170 */
|
||||||
ref-clock-frequency = <26000000>;
|
ref-clock-frequency = <26000000>;
|
||||||
tcxo-clock-frequency = <26000000>;
|
tcxo-clock-frequency = <26000000>;
|
||||||
};
|
};
|
||||||
|
@@ -492,12 +492,6 @@
|
|||||||
pinctrl-0 = <&pinctrl_i2c2>;
|
pinctrl-0 = <&pinctrl_i2c2>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
eeprom@50 {
|
|
||||||
compatible = "atmel,24c04";
|
|
||||||
pagesize = <16>;
|
|
||||||
reg = <0x50>;
|
|
||||||
};
|
|
||||||
|
|
||||||
hpa1: amp@60 {
|
hpa1: amp@60 {
|
||||||
compatible = "ti,tpa6130a2";
|
compatible = "ti,tpa6130a2";
|
||||||
reg = <0x60>;
|
reg = <0x60>;
|
||||||
|
@@ -55,7 +55,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = "&uart1:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
memory@70000000 {
|
memory@70000000 {
|
||||||
|
@@ -740,7 +740,7 @@
|
|||||||
i2c1: i2c@21a0000 {
|
i2c1: i2c@21a0000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
compatible = "fs,imx6sll-i2c", "fsl,imx21-i2c";
|
compatible = "fsl,imx6sll-i2c", "fsl,imx21-i2c";
|
||||||
reg = <0x021a0000 0x4000>;
|
reg = <0x021a0000 0x4000>;
|
||||||
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clks IMX6SLL_CLK_I2C1>;
|
clocks = <&clks IMX6SLL_CLK_I2C1>;
|
||||||
|
@@ -117,7 +117,9 @@
|
|||||||
regulator-name = "enet_3v3";
|
regulator-name = "enet_3v3";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
gpio = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_pcie_gpio: regulator-pcie-gpio {
|
reg_pcie_gpio: regulator-pcie-gpio {
|
||||||
@@ -180,6 +182,7 @@
|
|||||||
phy-supply = <®_enet_3v3>;
|
phy-supply = <®_enet_3v3>;
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
phy-handle = <ðphy1>;
|
phy-handle = <ðphy1>;
|
||||||
|
phy-reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
mdio {
|
mdio {
|
||||||
@@ -373,6 +376,8 @@
|
|||||||
MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3 0x3081
|
MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3 0x3081
|
||||||
MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081
|
MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081
|
||||||
MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M 0x91
|
MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M 0x91
|
||||||
|
/* phy reset */
|
||||||
|
MX6SX_PAD_ENET2_CRS__GPIO2_IO_7 0x10b0
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -129,7 +129,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&mmc3 {
|
&mmc3 {
|
||||||
interrupts-extended = <&intc 94 &omap3_pmx_core2 0x46>;
|
interrupts-extended = <&intc 94 &omap3_pmx_core 0x136>;
|
||||||
pinctrl-0 = <&mmc3_pins &wl127x_gpio>;
|
pinctrl-0 = <&mmc3_pins &wl127x_gpio>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
vmmc-supply = <&wl12xx_vmmc>;
|
vmmc-supply = <&wl12xx_vmmc>;
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
* jumpering combinations for the long run.
|
* jumpering combinations for the long run.
|
||||||
*/
|
*/
|
||||||
&mmc3 {
|
&mmc3 {
|
||||||
interrupts-extended = <&intc 94 &omap3_pmx_core2 0x46>;
|
interrupts-extended = <&intc 94 &omap3_pmx_core 0x136>;
|
||||||
pinctrl-0 = <&mmc3_pins &mmc3_core2_pins>;
|
pinctrl-0 = <&mmc3_pins &mmc3_core2_pins>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
vmmc-supply = <&wl12xx_vmmc>;
|
vmmc-supply = <&wl12xx_vmmc>;
|
||||||
|
@@ -10,7 +10,11 @@
|
|||||||
#include "rk3288.dtsi"
|
#include "rk3288.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
memory@0 {
|
/*
|
||||||
|
* The default coreboot on veyron devices ignores memory@0 nodes
|
||||||
|
* and would instead create another memory node.
|
||||||
|
*/
|
||||||
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x0 0x0 0x0 0x80000000>;
|
reg = <0x0 0x0 0x0 0x80000000>;
|
||||||
};
|
};
|
||||||
|
@@ -314,7 +314,7 @@
|
|||||||
0x1 0x0 0x60000000 0x10000000
|
0x1 0x0 0x60000000 0x10000000
|
||||||
0x2 0x0 0x70000000 0x10000000
|
0x2 0x0 0x70000000 0x10000000
|
||||||
0x3 0x0 0x80000000 0x10000000>;
|
0x3 0x0 0x80000000 0x10000000>;
|
||||||
clocks = <&mck>;
|
clocks = <&h32ck>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
nand_controller: nand-controller {
|
nand_controller: nand-controller {
|
||||||
|
@@ -50,8 +50,8 @@
|
|||||||
compatible = "fsl,vf610m4";
|
compatible = "fsl,vf610m4";
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "console=ttyLP2,115200 clk_ignore_unused init=/linuxrc rw";
|
bootargs = "clk_ignore_unused init=/linuxrc rw";
|
||||||
stdout-path = "&uart2";
|
stdout-path = "serial2:115200";
|
||||||
};
|
};
|
||||||
|
|
||||||
memory@8c000000 {
|
memory@8c000000 {
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_PREEMPT=y
|
|
||||||
CONFIG_CGROUPS=y
|
CONFIG_CGROUPS=y
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
|
@@ -111,6 +111,7 @@
|
|||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
extern unsigned int processor_id;
|
extern unsigned int processor_id;
|
||||||
|
struct proc_info_list *lookup_processor(u32 midr);
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_CP15
|
#ifdef CONFIG_CPU_CP15
|
||||||
#define read_cpuid(reg) \
|
#define read_cpuid(reg) \
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
#ifndef _ASM_PGTABLE_2LEVEL_H
|
#ifndef _ASM_PGTABLE_2LEVEL_H
|
||||||
#define _ASM_PGTABLE_2LEVEL_H
|
#define _ASM_PGTABLE_2LEVEL_H
|
||||||
|
|
||||||
#define __PAGETABLE_PMD_FOLDED
|
#define __PAGETABLE_PMD_FOLDED 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hardware-wise, we have a two level page table structure, where the first
|
* Hardware-wise, we have a two level page table structure, where the first
|
||||||
|
@@ -23,7 +23,7 @@ struct mm_struct;
|
|||||||
/*
|
/*
|
||||||
* Don't change this structure - ASM code relies on it.
|
* Don't change this structure - ASM code relies on it.
|
||||||
*/
|
*/
|
||||||
extern struct processor {
|
struct processor {
|
||||||
/* MISC
|
/* MISC
|
||||||
* get data abort address/flags
|
* get data abort address/flags
|
||||||
*/
|
*/
|
||||||
@@ -79,9 +79,13 @@ extern struct processor {
|
|||||||
unsigned int suspend_size;
|
unsigned int suspend_size;
|
||||||
void (*do_suspend)(void *);
|
void (*do_suspend)(void *);
|
||||||
void (*do_resume)(void *);
|
void (*do_resume)(void *);
|
||||||
} processor;
|
};
|
||||||
|
|
||||||
#ifndef MULTI_CPU
|
#ifndef MULTI_CPU
|
||||||
|
static inline void init_proc_vtable(const struct processor *p)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
extern void cpu_proc_init(void);
|
extern void cpu_proc_init(void);
|
||||||
extern void cpu_proc_fin(void);
|
extern void cpu_proc_fin(void);
|
||||||
extern int cpu_do_idle(void);
|
extern int cpu_do_idle(void);
|
||||||
@@ -98,17 +102,50 @@ extern void cpu_reset(unsigned long addr, bool hvc) __attribute__((noreturn));
|
|||||||
extern void cpu_do_suspend(void *);
|
extern void cpu_do_suspend(void *);
|
||||||
extern void cpu_do_resume(void *);
|
extern void cpu_do_resume(void *);
|
||||||
#else
|
#else
|
||||||
#define cpu_proc_init processor._proc_init
|
|
||||||
#define cpu_proc_fin processor._proc_fin
|
|
||||||
#define cpu_reset processor.reset
|
|
||||||
#define cpu_do_idle processor._do_idle
|
|
||||||
#define cpu_dcache_clean_area processor.dcache_clean_area
|
|
||||||
#define cpu_set_pte_ext processor.set_pte_ext
|
|
||||||
#define cpu_do_switch_mm processor.switch_mm
|
|
||||||
|
|
||||||
/* These three are private to arch/arm/kernel/suspend.c */
|
extern struct processor processor;
|
||||||
#define cpu_do_suspend processor.do_suspend
|
#if defined(CONFIG_BIG_LITTLE) && defined(CONFIG_HARDEN_BRANCH_PREDICTOR)
|
||||||
#define cpu_do_resume processor.do_resume
|
#include <linux/smp.h>
|
||||||
|
/*
|
||||||
|
* This can't be a per-cpu variable because we need to access it before
|
||||||
|
* per-cpu has been initialised. We have a couple of functions that are
|
||||||
|
* called in a pre-emptible context, and so can't use smp_processor_id()
|
||||||
|
* there, hence PROC_TABLE(). We insist in init_proc_vtable() that the
|
||||||
|
* function pointers for these are identical across all CPUs.
|
||||||
|
*/
|
||||||
|
extern struct processor *cpu_vtable[];
|
||||||
|
#define PROC_VTABLE(f) cpu_vtable[smp_processor_id()]->f
|
||||||
|
#define PROC_TABLE(f) cpu_vtable[0]->f
|
||||||
|
static inline void init_proc_vtable(const struct processor *p)
|
||||||
|
{
|
||||||
|
unsigned int cpu = smp_processor_id();
|
||||||
|
*cpu_vtable[cpu] = *p;
|
||||||
|
WARN_ON_ONCE(cpu_vtable[cpu]->dcache_clean_area !=
|
||||||
|
cpu_vtable[0]->dcache_clean_area);
|
||||||
|
WARN_ON_ONCE(cpu_vtable[cpu]->set_pte_ext !=
|
||||||
|
cpu_vtable[0]->set_pte_ext);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define PROC_VTABLE(f) processor.f
|
||||||
|
#define PROC_TABLE(f) processor.f
|
||||||
|
static inline void init_proc_vtable(const struct processor *p)
|
||||||
|
{
|
||||||
|
processor = *p;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define cpu_proc_init PROC_VTABLE(_proc_init)
|
||||||
|
#define cpu_check_bugs PROC_VTABLE(check_bugs)
|
||||||
|
#define cpu_proc_fin PROC_VTABLE(_proc_fin)
|
||||||
|
#define cpu_reset PROC_VTABLE(reset)
|
||||||
|
#define cpu_do_idle PROC_VTABLE(_do_idle)
|
||||||
|
#define cpu_dcache_clean_area PROC_TABLE(dcache_clean_area)
|
||||||
|
#define cpu_set_pte_ext PROC_TABLE(set_pte_ext)
|
||||||
|
#define cpu_do_switch_mm PROC_VTABLE(switch_mm)
|
||||||
|
|
||||||
|
/* These two are private to arch/arm/kernel/suspend.c */
|
||||||
|
#define cpu_do_suspend PROC_VTABLE(do_suspend)
|
||||||
|
#define cpu_do_resume PROC_VTABLE(do_resume)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void cpu_resume(void);
|
extern void cpu_resume(void);
|
||||||
|
@@ -6,8 +6,8 @@
|
|||||||
void check_other_bugs(void)
|
void check_other_bugs(void)
|
||||||
{
|
{
|
||||||
#ifdef MULTI_CPU
|
#ifdef MULTI_CPU
|
||||||
if (processor.check_bugs)
|
if (cpu_check_bugs)
|
||||||
processor.check_bugs();
|
cpu_check_bugs();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -183,9 +183,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr,
|
|||||||
unsigned long frame_pointer)
|
unsigned long frame_pointer)
|
||||||
{
|
{
|
||||||
unsigned long return_hooker = (unsigned long) &return_to_handler;
|
unsigned long return_hooker = (unsigned long) &return_to_handler;
|
||||||
struct ftrace_graph_ent trace;
|
|
||||||
unsigned long old;
|
unsigned long old;
|
||||||
int err;
|
|
||||||
|
|
||||||
if (unlikely(atomic_read(¤t->tracing_graph_pause)))
|
if (unlikely(atomic_read(¤t->tracing_graph_pause)))
|
||||||
return;
|
return;
|
||||||
@@ -193,21 +191,8 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr,
|
|||||||
old = *parent;
|
old = *parent;
|
||||||
*parent = return_hooker;
|
*parent = return_hooker;
|
||||||
|
|
||||||
trace.func = self_addr;
|
if (function_graph_enter(old, self_addr, frame_pointer, NULL))
|
||||||
trace.depth = current->curr_ret_stack + 1;
|
|
||||||
|
|
||||||
/* Only trace if the calling function expects to */
|
|
||||||
if (!ftrace_graph_entry(&trace)) {
|
|
||||||
*parent = old;
|
*parent = old;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = ftrace_push_return_trace(old, self_addr, &trace.depth,
|
|
||||||
frame_pointer, NULL);
|
|
||||||
if (err == -EBUSY) {
|
|
||||||
*parent = old;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||||
|
@@ -145,6 +145,9 @@ __mmap_switched_data:
|
|||||||
#endif
|
#endif
|
||||||
.size __mmap_switched_data, . - __mmap_switched_data
|
.size __mmap_switched_data, . - __mmap_switched_data
|
||||||
|
|
||||||
|
__FINIT
|
||||||
|
.text
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This provides a C-API version of __lookup_processor_type
|
* This provides a C-API version of __lookup_processor_type
|
||||||
*/
|
*/
|
||||||
@@ -156,9 +159,6 @@ ENTRY(lookup_processor_type)
|
|||||||
ldmfd sp!, {r4 - r6, r9, pc}
|
ldmfd sp!, {r4 - r6, r9, pc}
|
||||||
ENDPROC(lookup_processor_type)
|
ENDPROC(lookup_processor_type)
|
||||||
|
|
||||||
__FINIT
|
|
||||||
.text
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read processor ID register (CP#15, CR0), and look up in the linker-built
|
* Read processor ID register (CP#15, CR0), and look up in the linker-built
|
||||||
* supported processor list. Note that we can't use the absolute addresses
|
* supported processor list. Note that we can't use the absolute addresses
|
||||||
|
@@ -114,6 +114,11 @@ EXPORT_SYMBOL(elf_hwcap2);
|
|||||||
|
|
||||||
#ifdef MULTI_CPU
|
#ifdef MULTI_CPU
|
||||||
struct processor processor __ro_after_init;
|
struct processor processor __ro_after_init;
|
||||||
|
#if defined(CONFIG_BIG_LITTLE) && defined(CONFIG_HARDEN_BRANCH_PREDICTOR)
|
||||||
|
struct processor *cpu_vtable[NR_CPUS] = {
|
||||||
|
[0] = &processor,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#ifdef MULTI_TLB
|
#ifdef MULTI_TLB
|
||||||
struct cpu_tlb_fns cpu_tlb __ro_after_init;
|
struct cpu_tlb_fns cpu_tlb __ro_after_init;
|
||||||
@@ -666,28 +671,33 @@ static void __init smp_build_mpidr_hash(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* locate processor in the list of supported processor types. The linker
|
||||||
|
* builds this table for us from the entries in arch/arm/mm/proc-*.S
|
||||||
|
*/
|
||||||
|
struct proc_info_list *lookup_processor(u32 midr)
|
||||||
|
{
|
||||||
|
struct proc_info_list *list = lookup_processor_type(midr);
|
||||||
|
|
||||||
|
if (!list) {
|
||||||
|
pr_err("CPU%u: configuration botched (ID %08x), CPU halted\n",
|
||||||
|
smp_processor_id(), midr);
|
||||||
|
while (1)
|
||||||
|
/* can't use cpu_relax() here as it may require MMU setup */;
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
static void __init setup_processor(void)
|
static void __init setup_processor(void)
|
||||||
{
|
{
|
||||||
struct proc_info_list *list;
|
unsigned int midr = read_cpuid_id();
|
||||||
|
struct proc_info_list *list = lookup_processor(midr);
|
||||||
/*
|
|
||||||
* locate processor in the list of supported processor
|
|
||||||
* types. The linker builds this table for us from the
|
|
||||||
* entries in arch/arm/mm/proc-*.S
|
|
||||||
*/
|
|
||||||
list = lookup_processor_type(read_cpuid_id());
|
|
||||||
if (!list) {
|
|
||||||
pr_err("CPU configuration botched (ID %08x), unable to continue.\n",
|
|
||||||
read_cpuid_id());
|
|
||||||
while (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
cpu_name = list->cpu_name;
|
cpu_name = list->cpu_name;
|
||||||
__cpu_architecture = __get_cpu_architecture();
|
__cpu_architecture = __get_cpu_architecture();
|
||||||
|
|
||||||
#ifdef MULTI_CPU
|
init_proc_vtable(list->proc);
|
||||||
processor = *list->proc;
|
|
||||||
#endif
|
|
||||||
#ifdef MULTI_TLB
|
#ifdef MULTI_TLB
|
||||||
cpu_tlb = *list->tlb;
|
cpu_tlb = *list->tlb;
|
||||||
#endif
|
#endif
|
||||||
@@ -699,7 +709,7 @@ static void __init setup_processor(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
pr_info("CPU: %s [%08x] revision %d (ARMv%s), cr=%08lx\n",
|
pr_info("CPU: %s [%08x] revision %d (ARMv%s), cr=%08lx\n",
|
||||||
cpu_name, read_cpuid_id(), read_cpuid_id() & 15,
|
list->cpu_name, midr, midr & 15,
|
||||||
proc_arch[cpu_architecture()], get_cr());
|
proc_arch[cpu_architecture()], get_cr());
|
||||||
|
|
||||||
snprintf(init_utsname()->machine, __NEW_UTS_LEN + 1, "%s%c",
|
snprintf(init_utsname()->machine, __NEW_UTS_LEN + 1, "%s%c",
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
#include <asm/mmu_context.h>
|
#include <asm/mmu_context.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/pgalloc.h>
|
#include <asm/pgalloc.h>
|
||||||
|
#include <asm/procinfo.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/sections.h>
|
#include <asm/sections.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
@@ -102,6 +103,30 @@ static unsigned long get_arch_pgd(pgd_t *pgd)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_BIG_LITTLE) && defined(CONFIG_HARDEN_BRANCH_PREDICTOR)
|
||||||
|
static int secondary_biglittle_prepare(unsigned int cpu)
|
||||||
|
{
|
||||||
|
if (!cpu_vtable[cpu])
|
||||||
|
cpu_vtable[cpu] = kzalloc(sizeof(*cpu_vtable[cpu]), GFP_KERNEL);
|
||||||
|
|
||||||
|
return cpu_vtable[cpu] ? 0 : -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void secondary_biglittle_init(void)
|
||||||
|
{
|
||||||
|
init_proc_vtable(lookup_processor(read_cpuid_id())->proc);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static int secondary_biglittle_prepare(unsigned int cpu)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void secondary_biglittle_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int __cpu_up(unsigned int cpu, struct task_struct *idle)
|
int __cpu_up(unsigned int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@@ -109,6 +134,10 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)
|
|||||||
if (!smp_ops.smp_boot_secondary)
|
if (!smp_ops.smp_boot_secondary)
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
|
|
||||||
|
ret = secondary_biglittle_prepare(cpu);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We need to tell the secondary core where to find
|
* We need to tell the secondary core where to find
|
||||||
* its stack and the page tables.
|
* its stack and the page tables.
|
||||||
@@ -359,6 +388,8 @@ asmlinkage void secondary_start_kernel(void)
|
|||||||
struct mm_struct *mm = &init_mm;
|
struct mm_struct *mm = &init_mm;
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
|
|
||||||
|
secondary_biglittle_init();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The identity mapping is uncached (strongly ordered), so
|
* The identity mapping is uncached (strongly ordered), so
|
||||||
* switch away from it before attempting any exclusive accesses.
|
* switch away from it before attempting any exclusive accesses.
|
||||||
|
@@ -759,7 +759,9 @@ static struct davinci_id da830_ids[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct davinci_gpio_platform_data da830_gpio_platform_data = {
|
static struct davinci_gpio_platform_data da830_gpio_platform_data = {
|
||||||
.ngpio = 128,
|
.no_auto_base = true,
|
||||||
|
.base = 0,
|
||||||
|
.ngpio = 128,
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init da830_register_gpio(void)
|
int __init da830_register_gpio(void)
|
||||||
|
@@ -719,7 +719,9 @@ int __init da850_register_vpif_capture(struct vpif_capture_config
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct davinci_gpio_platform_data da850_gpio_platform_data = {
|
static struct davinci_gpio_platform_data da850_gpio_platform_data = {
|
||||||
.ngpio = 144,
|
.no_auto_base = true,
|
||||||
|
.base = 0,
|
||||||
|
.ngpio = 144,
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init da850_register_gpio(void)
|
int __init da850_register_gpio(void)
|
||||||
|
@@ -701,6 +701,46 @@ static struct resource da8xx_gpio_resources[] = {
|
|||||||
},
|
},
|
||||||
{ /* interrupt */
|
{ /* interrupt */
|
||||||
.start = IRQ_DA8XX_GPIO0,
|
.start = IRQ_DA8XX_GPIO0,
|
||||||
|
.end = IRQ_DA8XX_GPIO0,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO1,
|
||||||
|
.end = IRQ_DA8XX_GPIO1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO2,
|
||||||
|
.end = IRQ_DA8XX_GPIO2,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO3,
|
||||||
|
.end = IRQ_DA8XX_GPIO3,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO4,
|
||||||
|
.end = IRQ_DA8XX_GPIO4,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO5,
|
||||||
|
.end = IRQ_DA8XX_GPIO5,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO6,
|
||||||
|
.end = IRQ_DA8XX_GPIO6,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO7,
|
||||||
|
.end = IRQ_DA8XX_GPIO7,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DA8XX_GPIO8,
|
||||||
.end = IRQ_DA8XX_GPIO8,
|
.end = IRQ_DA8XX_GPIO8,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
|
@@ -548,12 +548,44 @@ static struct resource dm355_gpio_resources[] = {
|
|||||||
},
|
},
|
||||||
{ /* interrupt */
|
{ /* interrupt */
|
||||||
.start = IRQ_DM355_GPIOBNK0,
|
.start = IRQ_DM355_GPIOBNK0,
|
||||||
|
.end = IRQ_DM355_GPIOBNK0,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM355_GPIOBNK1,
|
||||||
|
.end = IRQ_DM355_GPIOBNK1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM355_GPIOBNK2,
|
||||||
|
.end = IRQ_DM355_GPIOBNK2,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM355_GPIOBNK3,
|
||||||
|
.end = IRQ_DM355_GPIOBNK3,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM355_GPIOBNK4,
|
||||||
|
.end = IRQ_DM355_GPIOBNK4,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM355_GPIOBNK5,
|
||||||
|
.end = IRQ_DM355_GPIOBNK5,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM355_GPIOBNK6,
|
||||||
.end = IRQ_DM355_GPIOBNK6,
|
.end = IRQ_DM355_GPIOBNK6,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct davinci_gpio_platform_data dm355_gpio_platform_data = {
|
static struct davinci_gpio_platform_data dm355_gpio_platform_data = {
|
||||||
|
.no_auto_base = true,
|
||||||
|
.base = 0,
|
||||||
.ngpio = 104,
|
.ngpio = 104,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -267,12 +267,49 @@ static struct resource dm365_gpio_resources[] = {
|
|||||||
},
|
},
|
||||||
{ /* interrupt */
|
{ /* interrupt */
|
||||||
.start = IRQ_DM365_GPIO0,
|
.start = IRQ_DM365_GPIO0,
|
||||||
|
.end = IRQ_DM365_GPIO0,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM365_GPIO1,
|
||||||
|
.end = IRQ_DM365_GPIO1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM365_GPIO2,
|
||||||
|
.end = IRQ_DM365_GPIO2,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM365_GPIO3,
|
||||||
|
.end = IRQ_DM365_GPIO3,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM365_GPIO4,
|
||||||
|
.end = IRQ_DM365_GPIO4,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM365_GPIO5,
|
||||||
|
.end = IRQ_DM365_GPIO5,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM365_GPIO6,
|
||||||
|
.end = IRQ_DM365_GPIO6,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM365_GPIO7,
|
||||||
.end = IRQ_DM365_GPIO7,
|
.end = IRQ_DM365_GPIO7,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct davinci_gpio_platform_data dm365_gpio_platform_data = {
|
static struct davinci_gpio_platform_data dm365_gpio_platform_data = {
|
||||||
|
.no_auto_base = true,
|
||||||
|
.base = 0,
|
||||||
.ngpio = 104,
|
.ngpio = 104,
|
||||||
.gpio_unbanked = 8,
|
.gpio_unbanked = 8,
|
||||||
};
|
};
|
||||||
|
@@ -492,12 +492,34 @@ static struct resource dm644_gpio_resources[] = {
|
|||||||
},
|
},
|
||||||
{ /* interrupt */
|
{ /* interrupt */
|
||||||
.start = IRQ_GPIOBNK0,
|
.start = IRQ_GPIOBNK0,
|
||||||
|
.end = IRQ_GPIOBNK0,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_GPIOBNK1,
|
||||||
|
.end = IRQ_GPIOBNK1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_GPIOBNK2,
|
||||||
|
.end = IRQ_GPIOBNK2,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_GPIOBNK3,
|
||||||
|
.end = IRQ_GPIOBNK3,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_GPIOBNK4,
|
||||||
.end = IRQ_GPIOBNK4,
|
.end = IRQ_GPIOBNK4,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct davinci_gpio_platform_data dm644_gpio_platform_data = {
|
static struct davinci_gpio_platform_data dm644_gpio_platform_data = {
|
||||||
|
.no_auto_base = true,
|
||||||
|
.base = 0,
|
||||||
.ngpio = 71,
|
.ngpio = 71,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -442,12 +442,24 @@ static struct resource dm646x_gpio_resources[] = {
|
|||||||
},
|
},
|
||||||
{ /* interrupt */
|
{ /* interrupt */
|
||||||
.start = IRQ_DM646X_GPIOBNK0,
|
.start = IRQ_DM646X_GPIOBNK0,
|
||||||
|
.end = IRQ_DM646X_GPIOBNK0,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM646X_GPIOBNK1,
|
||||||
|
.end = IRQ_DM646X_GPIOBNK1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IRQ_DM646X_GPIOBNK2,
|
||||||
.end = IRQ_DM646X_GPIOBNK2,
|
.end = IRQ_DM646X_GPIOBNK2,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct davinci_gpio_platform_data dm646x_gpio_platform_data = {
|
static struct davinci_gpio_platform_data dm646x_gpio_platform_data = {
|
||||||
|
.no_auto_base = true,
|
||||||
|
.base = 0,
|
||||||
.ngpio = 43,
|
.ngpio = 43,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -750,6 +750,9 @@ static void modem_pm(struct uart_port *port, unsigned int state, unsigned old)
|
|||||||
struct modem_private_data *priv = port->private_data;
|
struct modem_private_data *priv = port->private_data;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if (!priv)
|
||||||
|
return;
|
||||||
|
|
||||||
if (IS_ERR(priv->regulator))
|
if (IS_ERR(priv->regulator))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@@ -209,11 +209,61 @@ static int __init omapdss_init_fbdev(void)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
static inline int omapdss_init_fbdev(void)
|
static const char * const omapdss_compat_names[] __initconst = {
|
||||||
|
"ti,omap2-dss",
|
||||||
|
"ti,omap3-dss",
|
||||||
|
"ti,omap4-dss",
|
||||||
|
"ti,omap5-dss",
|
||||||
|
"ti,dra7-dss",
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct device_node * __init omapdss_find_dss_of_node(void)
|
||||||
{
|
{
|
||||||
return 0;
|
struct device_node *node;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(omapdss_compat_names); ++i) {
|
||||||
|
node = of_find_compatible_node(NULL, NULL,
|
||||||
|
omapdss_compat_names[i]);
|
||||||
|
if (node)
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __init omapdss_init_of(void)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
struct device_node *node;
|
||||||
|
struct platform_device *pdev;
|
||||||
|
|
||||||
|
/* only create dss helper devices if dss is enabled in the .dts */
|
||||||
|
|
||||||
|
node = omapdss_find_dss_of_node();
|
||||||
|
if (!node)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!of_device_is_available(node))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pdev = of_find_device_by_node(node);
|
||||||
|
|
||||||
|
if (!pdev) {
|
||||||
|
pr_err("Unable to find DSS platform device\n");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = of_platform_populate(node, NULL, NULL, &pdev->dev);
|
||||||
|
if (r) {
|
||||||
|
pr_err("Unable to populate DSS submodule devices\n");
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return omapdss_init_fbdev();
|
||||||
|
}
|
||||||
|
omap_device_initcall(omapdss_init_of);
|
||||||
#endif /* CONFIG_FB_OMAP2 */
|
#endif /* CONFIG_FB_OMAP2 */
|
||||||
|
|
||||||
static void dispc_disable_outputs(void)
|
static void dispc_disable_outputs(void)
|
||||||
@@ -361,58 +411,3 @@ int omap_dss_reset(struct omap_hwmod *oh)
|
|||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char * const omapdss_compat_names[] __initconst = {
|
|
||||||
"ti,omap2-dss",
|
|
||||||
"ti,omap3-dss",
|
|
||||||
"ti,omap4-dss",
|
|
||||||
"ti,omap5-dss",
|
|
||||||
"ti,dra7-dss",
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct device_node * __init omapdss_find_dss_of_node(void)
|
|
||||||
{
|
|
||||||
struct device_node *node;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(omapdss_compat_names); ++i) {
|
|
||||||
node = of_find_compatible_node(NULL, NULL,
|
|
||||||
omapdss_compat_names[i]);
|
|
||||||
if (node)
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __init omapdss_init_of(void)
|
|
||||||
{
|
|
||||||
int r;
|
|
||||||
struct device_node *node;
|
|
||||||
struct platform_device *pdev;
|
|
||||||
|
|
||||||
/* only create dss helper devices if dss is enabled in the .dts */
|
|
||||||
|
|
||||||
node = omapdss_find_dss_of_node();
|
|
||||||
if (!node)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (!of_device_is_available(node))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
pdev = of_find_device_by_node(node);
|
|
||||||
|
|
||||||
if (!pdev) {
|
|
||||||
pr_err("Unable to find DSS platform device\n");
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
r = of_platform_populate(node, NULL, NULL, &pdev->dev);
|
|
||||||
if (r) {
|
|
||||||
pr_err("Unable to populate DSS submodule devices\n");
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
return omapdss_init_fbdev();
|
|
||||||
}
|
|
||||||
omap_device_initcall(omapdss_init_of);
|
|
||||||
|
@@ -351,7 +351,7 @@ static void omap44xx_prm_reconfigure_io_chain(void)
|
|||||||
* to occur, WAKEUPENABLE bits must be set in the pad mux registers, and
|
* to occur, WAKEUPENABLE bits must be set in the pad mux registers, and
|
||||||
* omap44xx_prm_reconfigure_io_chain() must be called. No return value.
|
* omap44xx_prm_reconfigure_io_chain() must be called. No return value.
|
||||||
*/
|
*/
|
||||||
static void __init omap44xx_prm_enable_io_wakeup(void)
|
static void omap44xx_prm_enable_io_wakeup(void)
|
||||||
{
|
{
|
||||||
s32 inst = omap4_prmst_get_prm_dev_inst();
|
s32 inst = omap4_prmst_get_prm_dev_inst();
|
||||||
|
|
||||||
|
@@ -360,14 +360,16 @@ v7_dma_inv_range:
|
|||||||
ALT_UP(W(nop))
|
ALT_UP(W(nop))
|
||||||
#endif
|
#endif
|
||||||
mcrne p15, 0, r0, c7, c14, 1 @ clean & invalidate D / U line
|
mcrne p15, 0, r0, c7, c14, 1 @ clean & invalidate D / U line
|
||||||
|
addne r0, r0, r2
|
||||||
|
|
||||||
tst r1, r3
|
tst r1, r3
|
||||||
bic r1, r1, r3
|
bic r1, r1, r3
|
||||||
mcrne p15, 0, r1, c7, c14, 1 @ clean & invalidate D / U line
|
mcrne p15, 0, r1, c7, c14, 1 @ clean & invalidate D / U line
|
||||||
1:
|
|
||||||
mcr p15, 0, r0, c7, c6, 1 @ invalidate D / U line
|
|
||||||
add r0, r0, r2
|
|
||||||
cmp r0, r1
|
cmp r0, r1
|
||||||
|
1:
|
||||||
|
mcrlo p15, 0, r0, c7, c6, 1 @ invalidate D / U line
|
||||||
|
addlo r0, r0, r2
|
||||||
|
cmplo r0, r1
|
||||||
blo 1b
|
blo 1b
|
||||||
dsb st
|
dsb st
|
||||||
ret lr
|
ret lr
|
||||||
|
@@ -73,9 +73,11 @@
|
|||||||
/*
|
/*
|
||||||
* dcimvac: Invalidate data cache line by MVA to PoC
|
* dcimvac: Invalidate data cache line by MVA to PoC
|
||||||
*/
|
*/
|
||||||
.macro dcimvac, rt, tmp
|
.irp c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo
|
||||||
v7m_cacheop \rt, \tmp, V7M_SCB_DCIMVAC
|
.macro dcimvac\c, rt, tmp
|
||||||
|
v7m_cacheop \rt, \tmp, V7M_SCB_DCIMVAC, \c
|
||||||
.endm
|
.endm
|
||||||
|
.endr
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* dccmvau: Clean data cache line by MVA to PoU
|
* dccmvau: Clean data cache line by MVA to PoU
|
||||||
@@ -369,14 +371,16 @@ v7m_dma_inv_range:
|
|||||||
tst r0, r3
|
tst r0, r3
|
||||||
bic r0, r0, r3
|
bic r0, r0, r3
|
||||||
dccimvacne r0, r3
|
dccimvacne r0, r3
|
||||||
|
addne r0, r0, r2
|
||||||
subne r3, r2, #1 @ restore r3, corrupted by v7m's dccimvac
|
subne r3, r2, #1 @ restore r3, corrupted by v7m's dccimvac
|
||||||
tst r1, r3
|
tst r1, r3
|
||||||
bic r1, r1, r3
|
bic r1, r1, r3
|
||||||
dccimvacne r1, r3
|
dccimvacne r1, r3
|
||||||
1:
|
|
||||||
dcimvac r0, r3
|
|
||||||
add r0, r0, r2
|
|
||||||
cmp r0, r1
|
cmp r0, r1
|
||||||
|
1:
|
||||||
|
dcimvaclo r0, r3
|
||||||
|
addlo r0, r0, r2
|
||||||
|
cmplo r0, r1
|
||||||
blo 1b
|
blo 1b
|
||||||
dsb st
|
dsb st
|
||||||
ret lr
|
ret lr
|
||||||
|
@@ -829,7 +829,7 @@ static int __arm_dma_mmap(struct device *dev, struct vm_area_struct *vma,
|
|||||||
void *cpu_addr, dma_addr_t dma_addr, size_t size,
|
void *cpu_addr, dma_addr_t dma_addr, size_t size,
|
||||||
unsigned long attrs)
|
unsigned long attrs)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = -ENXIO;
|
||||||
unsigned long nr_vma_pages = vma_pages(vma);
|
unsigned long nr_vma_pages = vma_pages(vma);
|
||||||
unsigned long nr_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
|
unsigned long nr_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
|
||||||
unsigned long pfn = dma_to_pfn(dev, dma_addr);
|
unsigned long pfn = dma_to_pfn(dev, dma_addr);
|
||||||
|
@@ -274,6 +274,13 @@
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0, bugs=0
|
.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0, bugs=0
|
||||||
|
/*
|
||||||
|
* If we are building for big.Little with branch predictor hardening,
|
||||||
|
* we need the processor function tables to remain available after boot.
|
||||||
|
*/
|
||||||
|
#if 1 // defined(CONFIG_BIG_LITTLE) && defined(CONFIG_HARDEN_BRANCH_PREDICTOR)
|
||||||
|
.section ".rodata"
|
||||||
|
#endif
|
||||||
.type \name\()_processor_functions, #object
|
.type \name\()_processor_functions, #object
|
||||||
.align 2
|
.align 2
|
||||||
ENTRY(\name\()_processor_functions)
|
ENTRY(\name\()_processor_functions)
|
||||||
@@ -309,6 +316,9 @@ ENTRY(\name\()_processor_functions)
|
|||||||
.endif
|
.endif
|
||||||
|
|
||||||
.size \name\()_processor_functions, . - \name\()_processor_functions
|
.size \name\()_processor_functions, . - \name\()_processor_functions
|
||||||
|
#if 1 // defined(CONFIG_BIG_LITTLE) && defined(CONFIG_HARDEN_BRANCH_PREDICTOR)
|
||||||
|
.previous
|
||||||
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro define_cache_functions name:req
|
.macro define_cache_functions name:req
|
||||||
|
@@ -52,8 +52,6 @@ static void cpu_v7_spectre_init(void)
|
|||||||
case ARM_CPU_PART_CORTEX_A17:
|
case ARM_CPU_PART_CORTEX_A17:
|
||||||
case ARM_CPU_PART_CORTEX_A73:
|
case ARM_CPU_PART_CORTEX_A73:
|
||||||
case ARM_CPU_PART_CORTEX_A75:
|
case ARM_CPU_PART_CORTEX_A75:
|
||||||
if (processor.switch_mm != cpu_v7_bpiall_switch_mm)
|
|
||||||
goto bl_error;
|
|
||||||
per_cpu(harden_branch_predictor_fn, cpu) =
|
per_cpu(harden_branch_predictor_fn, cpu) =
|
||||||
harden_branch_predictor_bpiall;
|
harden_branch_predictor_bpiall;
|
||||||
spectre_v2_method = "BPIALL";
|
spectre_v2_method = "BPIALL";
|
||||||
@@ -61,8 +59,6 @@ static void cpu_v7_spectre_init(void)
|
|||||||
|
|
||||||
case ARM_CPU_PART_CORTEX_A15:
|
case ARM_CPU_PART_CORTEX_A15:
|
||||||
case ARM_CPU_PART_BRAHMA_B15:
|
case ARM_CPU_PART_BRAHMA_B15:
|
||||||
if (processor.switch_mm != cpu_v7_iciallu_switch_mm)
|
|
||||||
goto bl_error;
|
|
||||||
per_cpu(harden_branch_predictor_fn, cpu) =
|
per_cpu(harden_branch_predictor_fn, cpu) =
|
||||||
harden_branch_predictor_iciallu;
|
harden_branch_predictor_iciallu;
|
||||||
spectre_v2_method = "ICIALLU";
|
spectre_v2_method = "ICIALLU";
|
||||||
@@ -88,11 +84,9 @@ static void cpu_v7_spectre_init(void)
|
|||||||
ARM_SMCCC_ARCH_WORKAROUND_1, &res);
|
ARM_SMCCC_ARCH_WORKAROUND_1, &res);
|
||||||
if ((int)res.a0 != 0)
|
if ((int)res.a0 != 0)
|
||||||
break;
|
break;
|
||||||
if (processor.switch_mm != cpu_v7_hvc_switch_mm && cpu)
|
|
||||||
goto bl_error;
|
|
||||||
per_cpu(harden_branch_predictor_fn, cpu) =
|
per_cpu(harden_branch_predictor_fn, cpu) =
|
||||||
call_hvc_arch_workaround_1;
|
call_hvc_arch_workaround_1;
|
||||||
processor.switch_mm = cpu_v7_hvc_switch_mm;
|
cpu_do_switch_mm = cpu_v7_hvc_switch_mm;
|
||||||
spectre_v2_method = "hypervisor";
|
spectre_v2_method = "hypervisor";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -101,11 +95,9 @@ static void cpu_v7_spectre_init(void)
|
|||||||
ARM_SMCCC_ARCH_WORKAROUND_1, &res);
|
ARM_SMCCC_ARCH_WORKAROUND_1, &res);
|
||||||
if ((int)res.a0 != 0)
|
if ((int)res.a0 != 0)
|
||||||
break;
|
break;
|
||||||
if (processor.switch_mm != cpu_v7_smc_switch_mm && cpu)
|
|
||||||
goto bl_error;
|
|
||||||
per_cpu(harden_branch_predictor_fn, cpu) =
|
per_cpu(harden_branch_predictor_fn, cpu) =
|
||||||
call_smc_arch_workaround_1;
|
call_smc_arch_workaround_1;
|
||||||
processor.switch_mm = cpu_v7_smc_switch_mm;
|
cpu_do_switch_mm = cpu_v7_smc_switch_mm;
|
||||||
spectre_v2_method = "firmware";
|
spectre_v2_method = "firmware";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -119,11 +111,6 @@ static void cpu_v7_spectre_init(void)
|
|||||||
if (spectre_v2_method)
|
if (spectre_v2_method)
|
||||||
pr_info("CPU%u: Spectre v2: using %s workaround\n",
|
pr_info("CPU%u: Spectre v2: using %s workaround\n",
|
||||||
smp_processor_id(), spectre_v2_method);
|
smp_processor_id(), spectre_v2_method);
|
||||||
return;
|
|
||||||
|
|
||||||
bl_error:
|
|
||||||
pr_err("CPU%u: Spectre v2: incorrect context switching function, system vulnerable\n",
|
|
||||||
cpu);
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static void cpu_v7_spectre_init(void)
|
static void cpu_v7_spectre_init(void)
|
||||||
|
@@ -112,7 +112,7 @@ ENTRY(cpu_v7_hvc_switch_mm)
|
|||||||
hvc #0
|
hvc #0
|
||||||
ldmfd sp!, {r0 - r3}
|
ldmfd sp!, {r0 - r3}
|
||||||
b cpu_v7_switch_mm
|
b cpu_v7_switch_mm
|
||||||
ENDPROC(cpu_v7_smc_switch_mm)
|
ENDPROC(cpu_v7_hvc_switch_mm)
|
||||||
#endif
|
#endif
|
||||||
ENTRY(cpu_v7_iciallu_switch_mm)
|
ENTRY(cpu_v7_iciallu_switch_mm)
|
||||||
mov r3, #0
|
mov r3, #0
|
||||||
|
@@ -247,7 +247,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *or
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Copy arch-dep-instance from template. */
|
/* Copy arch-dep-instance from template. */
|
||||||
memcpy(code, &optprobe_template_entry,
|
memcpy(code, (unsigned char *)optprobe_template_entry,
|
||||||
TMPL_END_IDX * sizeof(kprobe_opcode_t));
|
TMPL_END_IDX * sizeof(kprobe_opcode_t));
|
||||||
|
|
||||||
/* Adjust buffer according to instruction. */
|
/* Adjust buffer according to instruction. */
|
||||||
|
@@ -573,7 +573,7 @@ int vfp_preserve_user_clear_hwstate(struct user_vfp *ufp,
|
|||||||
*/
|
*/
|
||||||
ufp_exc->fpexc = hwstate->fpexc;
|
ufp_exc->fpexc = hwstate->fpexc;
|
||||||
ufp_exc->fpinst = hwstate->fpinst;
|
ufp_exc->fpinst = hwstate->fpinst;
|
||||||
ufp_exc->fpinst2 = ufp_exc->fpinst2;
|
ufp_exc->fpinst2 = hwstate->fpinst2;
|
||||||
|
|
||||||
/* Ensure that VFP is disabled. */
|
/* Ensure that VFP is disabled. */
|
||||||
vfp_flush_hwstate(thread);
|
vfp_flush_hwstate(thread);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user