Merge 6efb943b86 Linux 5.13-rc1 into android-mainline
One giant leap, all the way up to 5.13-rc1 Also take the opportunity to re-align (a.k.a. fix a couple of previous merge conflict fix-up issues) which occurred during this merge-window. Fixes:4797acfb9c("Merge16b3d0cf5bMerge tag 'sched-core-2021-04-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into android-mainline") Fixes:92f282f338("Merge8ca5297e7eMerge tag 'kconfig-v5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild into android-mainline") Signed-off-by: Lee Jones <lee.jones@linaro.org> Change-Id: Ie9389f595776e8f66bba6eaf0fa7a3587c6a5749
This commit is contained in:
commit
85adc860fd
1232 changed files with 21389 additions and 12631 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -48,14 +48,11 @@
|
|||
*.xz
|
||||
*.zst
|
||||
Module.symvers
|
||||
modules.builtin
|
||||
modules.order
|
||||
|
||||
#
|
||||
# Top-level generic files
|
||||
#
|
||||
/tags
|
||||
/TAGS
|
||||
/linux
|
||||
/modules-only.symvers
|
||||
/vmlinux
|
||||
|
|
@ -66,6 +63,7 @@ modules.order
|
|||
/vmlinuz
|
||||
/System.map
|
||||
/Module.markers
|
||||
/modules.builtin
|
||||
/modules.builtin.modinfo
|
||||
/modules.nsdeps
|
||||
|
||||
|
|
@ -114,6 +112,10 @@ patches-*
|
|||
patches
|
||||
series
|
||||
|
||||
# ctags files
|
||||
tags
|
||||
TAGS
|
||||
|
||||
# cscope files
|
||||
cscope.*
|
||||
ncscope.*
|
||||
|
|
|
|||
|
|
@ -58,3 +58,19 @@ Description:
|
|||
|
||||
Indicates the mux id associated to the qmimux network interface
|
||||
during its creation.
|
||||
|
||||
What: /sys/class/net/<iface>/qmi/pass_through
|
||||
Date: January 2021
|
||||
KernelVersion: 5.12
|
||||
Contact: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
|
||||
Description:
|
||||
Boolean. Default: 'N'
|
||||
|
||||
Set this to 'Y' to enable 'pass-through' mode, allowing packets
|
||||
in MAP format to be passed on to the stack.
|
||||
|
||||
Normally the rmnet driver (CONFIG_RMNET) is then used to process
|
||||
and demultiplex these packets.
|
||||
|
||||
'Pass-through' mode can be enabled when the device is in
|
||||
'raw-ip' mode only.
|
||||
|
|
|
|||
|
|
@ -285,7 +285,7 @@ Description: Disable L3 cache indices
|
|||
|
||||
All AMD processors with L3 caches provide this functionality.
|
||||
For details, see BKDGs at
|
||||
http://developer.amd.com/documentation/guides/Pages/default.aspx
|
||||
https://www.amd.com/en/support/tech-docs?keyword=bios+kernel
|
||||
|
||||
|
||||
What: /sys/devices/system/cpu/cpufreq/boost
|
||||
|
|
|
|||
25
Documentation/ABI/testing/sysfs-kernel-mm-cma
Normal file
25
Documentation/ABI/testing/sysfs-kernel-mm-cma
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
What: /sys/kernel/mm/cma/
|
||||
Date: Feb 2021
|
||||
Contact: Minchan Kim <minchan@kernel.org>
|
||||
Description:
|
||||
/sys/kernel/mm/cma/ contains a subdirectory for each CMA
|
||||
heap name (also sometimes called CMA areas).
|
||||
|
||||
Each CMA heap subdirectory (that is, each
|
||||
/sys/kernel/mm/cma/<cma-heap-name> directory) contains the
|
||||
following items:
|
||||
|
||||
alloc_pages_success
|
||||
alloc_pages_fail
|
||||
|
||||
What: /sys/kernel/mm/cma/<cma-heap-name>/alloc_pages_success
|
||||
Date: Feb 2021
|
||||
Contact: Minchan Kim <minchan@kernel.org>
|
||||
Description:
|
||||
the number of pages CMA API succeeded to allocate
|
||||
|
||||
What: /sys/kernel/mm/cma/<cma-heap-name>/alloc_pages_fail
|
||||
Date: Feb 2021
|
||||
Contact: Minchan Kim <minchan@kernel.org>
|
||||
Description:
|
||||
the number of pages CMA API failed to allocate
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
1 char Memory devices
|
||||
1 = /dev/mem Physical memory access
|
||||
2 = /dev/kmem Kernel virtual memory access
|
||||
2 = /dev/kmem OBSOLETE - replaced by /proc/kcore
|
||||
3 = /dev/null Null device
|
||||
4 = /dev/port I/O port access
|
||||
5 = /dev/zero Null byte source
|
||||
|
|
|
|||
|
|
@ -17,17 +17,18 @@ module.
|
|||
gpio_mockup_ranges
|
||||
|
||||
This parameter takes an argument in the form of an array of integer
|
||||
pairs. Each pair defines the base GPIO number (if any) and the number
|
||||
of lines exposed by the chip. If the base GPIO is -1, the gpiolib
|
||||
will assign it automatically.
|
||||
pairs. Each pair defines the base GPIO number (non-negative integer)
|
||||
and the first number after the last of this chip. If the base GPIO
|
||||
is -1, the gpiolib will assign it automatically. while the following
|
||||
parameter is the number of lines exposed by the chip.
|
||||
|
||||
Example: gpio_mockup_ranges=-1,8,-1,16,405,4
|
||||
Example: gpio_mockup_ranges=-1,8,-1,16,405,409
|
||||
|
||||
The line above creates three chips. The first one will expose 8 lines,
|
||||
the second 16 and the third 4. The base GPIO for the third chip is set
|
||||
to 405 while for two first chips it will be assigned automatically.
|
||||
|
||||
gpio_named_lines
|
||||
gpio_mockup_named_lines
|
||||
|
||||
This parameter doesn't take any arguments. It lets the driver know that
|
||||
GPIO lines exposed by it should be named.
|
||||
|
|
|
|||
|
|
@ -1469,6 +1469,12 @@
|
|||
Don't use this when you are not running on the
|
||||
android emulator
|
||||
|
||||
gpio-mockup.gpio_mockup_ranges
|
||||
[HW] Sets the ranges of gpiochip of for this device.
|
||||
Format: <start1>,<end1>,<start2>,<end2>...
|
||||
gpio-mockup.gpio_mockup_named_lines
|
||||
[HW] Let the driver know GPIO lines should be named.
|
||||
|
||||
gpt [EFI] Forces disk with valid GPT signature but
|
||||
invalid Protective MBR to be treated as GPT. If the
|
||||
primary GPT is corrupted, it enables the backup/alternate
|
||||
|
|
@ -1492,10 +1498,6 @@
|
|||
Format: <unsigned int> such that (rxsize & ~0x1fffc0) == 0.
|
||||
Default: 1024
|
||||
|
||||
gpio-mockup.gpio_mockup_ranges
|
||||
[HW] Sets the ranges of gpiochip of for this device.
|
||||
Format: <start1>,<end1>,<start2>,<end2>...
|
||||
|
||||
hardlockup_all_cpu_backtrace=
|
||||
[KNL] Should the hard-lockup detector generate
|
||||
backtraces on all cpus.
|
||||
|
|
@ -1837,6 +1839,18 @@
|
|||
initcall functions. Useful for debugging built-in
|
||||
modules and initcalls.
|
||||
|
||||
initramfs_async= [KNL]
|
||||
Format: <bool>
|
||||
Default: 1
|
||||
This parameter controls whether the initramfs
|
||||
image is unpacked asynchronously, concurrently
|
||||
with devices being probed and
|
||||
initialized. This should normally just work,
|
||||
but as a debugging aid, one can get the
|
||||
historical behaviour of the initramfs
|
||||
unpacking being completed before device_ and
|
||||
late_ initcalls.
|
||||
|
||||
initrd= [BOOT] Specify the location of the initial ramdisk
|
||||
|
||||
initrdmem= [KNL] Specify a physical address and size from which to
|
||||
|
|
@ -2806,7 +2820,24 @@
|
|||
seconds. Use this parameter to check at some
|
||||
other rate. 0 disables periodic checking.
|
||||
|
||||
memtest= [KNL,X86,ARM,PPC] Enable memtest
|
||||
memory_hotplug.memmap_on_memory
|
||||
[KNL,X86,ARM] Boolean flag to enable this feature.
|
||||
Format: {on | off (default)}
|
||||
When enabled, runtime hotplugged memory will
|
||||
allocate its internal metadata (struct pages)
|
||||
from the hotadded memory which will allow to
|
||||
hotadd a lot of memory without requiring
|
||||
additional memory to do so.
|
||||
This feature is disabled by default because it
|
||||
has some implication on large (e.g. GB)
|
||||
allocations in some configurations (e.g. small
|
||||
memory blocks).
|
||||
The state of the flag can be read in
|
||||
/sys/module/memory_hotplug/parameters/memmap_on_memory.
|
||||
Note that even when enabled, there are a few cases where
|
||||
the feature is not effective.
|
||||
|
||||
memtest= [KNL,X86,ARM,PPC,RISCV] Enable memtest
|
||||
Format: <integer>
|
||||
default : 0 <disable>
|
||||
Specifies the number of memtest passes to be
|
||||
|
|
@ -3255,6 +3286,8 @@
|
|||
|
||||
nohugeiomap [KNL,X86,PPC,ARM64] Disable kernel huge I/O mappings.
|
||||
|
||||
nohugevmalloc [PPC] Disable kernel huge vmalloc mappings.
|
||||
|
||||
nosmt [KNL,S390] Disable symmetric multithreading (SMT).
|
||||
Equivalent to smt=1.
|
||||
|
||||
|
|
|
|||
|
|
@ -357,6 +357,15 @@ creates ZONE_MOVABLE as following.
|
|||
Unfortunately, there is no information to show which memory block belongs
|
||||
to ZONE_MOVABLE. This is TBD.
|
||||
|
||||
.. note::
|
||||
Techniques that rely on long-term pinnings of memory (especially, RDMA and
|
||||
vfio) are fundamentally problematic with ZONE_MOVABLE and, therefore, memory
|
||||
hot remove. Pinned pages cannot reside on ZONE_MOVABLE, to guarantee that
|
||||
memory can still get hot removed - be aware that pinning can fail even if
|
||||
there is plenty of free memory in ZONE_MOVABLE. In addition, using
|
||||
ZONE_MOVABLE might make page pinning more expensive, because pages have to be
|
||||
migrated off that zone first.
|
||||
|
||||
.. _memory_hotplug_how_to_offline_memory:
|
||||
|
||||
How to offline memory
|
||||
|
|
|
|||
|
|
@ -63,36 +63,36 @@ the generic ioctl available.
|
|||
|
||||
The ``uffdio_api.features`` bitmask returned by the ``UFFDIO_API`` ioctl
|
||||
defines what memory types are supported by the ``userfaultfd`` and what
|
||||
events, except page fault notifications, may be generated.
|
||||
events, except page fault notifications, may be generated:
|
||||
|
||||
If the kernel supports registering ``userfaultfd`` ranges on hugetlbfs
|
||||
virtual memory areas, ``UFFD_FEATURE_MISSING_HUGETLBFS`` will be set in
|
||||
``uffdio_api.features``. Similarly, ``UFFD_FEATURE_MISSING_SHMEM`` will be
|
||||
set if the kernel supports registering ``userfaultfd`` ranges on shared
|
||||
memory (covering all shmem APIs, i.e. tmpfs, ``IPCSHM``, ``/dev/zero``,
|
||||
``MAP_SHARED``, ``memfd_create``, etc).
|
||||
- The ``UFFD_FEATURE_EVENT_*`` flags indicate that various other events
|
||||
other than page faults are supported. These events are described in more
|
||||
detail below in the `Non-cooperative userfaultfd`_ section.
|
||||
|
||||
The userland application that wants to use ``userfaultfd`` with hugetlbfs
|
||||
or shared memory need to set the corresponding flag in
|
||||
``uffdio_api.features`` to enable those features.
|
||||
- ``UFFD_FEATURE_MISSING_HUGETLBFS`` and ``UFFD_FEATURE_MISSING_SHMEM``
|
||||
indicate that the kernel supports ``UFFDIO_REGISTER_MODE_MISSING``
|
||||
registrations for hugetlbfs and shared memory (covering all shmem APIs,
|
||||
i.e. tmpfs, ``IPCSHM``, ``/dev/zero``, ``MAP_SHARED``, ``memfd_create``,
|
||||
etc) virtual memory areas, respectively.
|
||||
|
||||
If the userland desires to receive notifications for events other than
|
||||
page faults, it has to verify that ``uffdio_api.features`` has appropriate
|
||||
``UFFD_FEATURE_EVENT_*`` bits set. These events are described in more
|
||||
detail below in `Non-cooperative userfaultfd`_ section.
|
||||
- ``UFFD_FEATURE_MINOR_HUGETLBFS`` indicates that the kernel supports
|
||||
``UFFDIO_REGISTER_MODE_MINOR`` registration for hugetlbfs virtual memory
|
||||
areas.
|
||||
|
||||
Once the ``userfaultfd`` has been enabled the ``UFFDIO_REGISTER`` ioctl should
|
||||
be invoked (if present in the returned ``uffdio_api.ioctls`` bitmask) to
|
||||
register a memory range in the ``userfaultfd`` by setting the
|
||||
The userland application should set the feature flags it intends to use
|
||||
when invoking the ``UFFDIO_API`` ioctl, to request that those features be
|
||||
enabled if supported.
|
||||
|
||||
Once the ``userfaultfd`` API has been enabled the ``UFFDIO_REGISTER``
|
||||
ioctl should be invoked (if present in the returned ``uffdio_api.ioctls``
|
||||
bitmask) to register a memory range in the ``userfaultfd`` by setting the
|
||||
uffdio_register structure accordingly. The ``uffdio_register.mode``
|
||||
bitmask will specify to the kernel which kind of faults to track for
|
||||
the range (``UFFDIO_REGISTER_MODE_MISSING`` would track missing
|
||||
pages). The ``UFFDIO_REGISTER`` ioctl will return the
|
||||
the range. The ``UFFDIO_REGISTER`` ioctl will return the
|
||||
``uffdio_register.ioctls`` bitmask of ioctls that are suitable to resolve
|
||||
userfaults on the range registered. Not all ioctls will necessarily be
|
||||
supported for all memory types depending on the underlying virtual
|
||||
memory backend (anonymous memory vs tmpfs vs real filebacked
|
||||
mappings).
|
||||
supported for all memory types (e.g. anonymous memory vs. shmem vs.
|
||||
hugetlbfs), or all types of intercepted faults.
|
||||
|
||||
Userland can use the ``uffdio_register.ioctls`` to manage the virtual
|
||||
address space in the background (to add or potentially also remove
|
||||
|
|
@ -100,21 +100,46 @@ memory from the ``userfaultfd`` registered range). This means a userfault
|
|||
could be triggering just before userland maps in the background the
|
||||
user-faulted page.
|
||||
|
||||
The primary ioctl to resolve userfaults is ``UFFDIO_COPY``. That
|
||||
atomically copies a page into the userfault registered range and wakes
|
||||
up the blocked userfaults
|
||||
(unless ``uffdio_copy.mode & UFFDIO_COPY_MODE_DONTWAKE`` is set).
|
||||
Other ioctl works similarly to ``UFFDIO_COPY``. They're atomic as in
|
||||
guaranteeing that nothing can see an half copied page since it'll
|
||||
keep userfaulting until the copy has finished.
|
||||
Resolving Userfaults
|
||||
--------------------
|
||||
|
||||
There are three basic ways to resolve userfaults:
|
||||
|
||||
- ``UFFDIO_COPY`` atomically copies some existing page contents from
|
||||
userspace.
|
||||
|
||||
- ``UFFDIO_ZEROPAGE`` atomically zeros the new page.
|
||||
|
||||
- ``UFFDIO_CONTINUE`` maps an existing, previously-populated page.
|
||||
|
||||
These operations are atomic in the sense that they guarantee nothing can
|
||||
see a half-populated page, since readers will keep userfaulting until the
|
||||
operation has finished.
|
||||
|
||||
By default, these wake up userfaults blocked on the range in question.
|
||||
They support a ``UFFDIO_*_MODE_DONTWAKE`` ``mode`` flag, which indicates
|
||||
that waking will be done separately at some later time.
|
||||
|
||||
Which ioctl to choose depends on the kind of page fault, and what we'd
|
||||
like to do to resolve it:
|
||||
|
||||
- For ``UFFDIO_REGISTER_MODE_MISSING`` faults, the fault needs to be
|
||||
resolved by either providing a new page (``UFFDIO_COPY``), or mapping
|
||||
the zero page (``UFFDIO_ZEROPAGE``). By default, the kernel would map
|
||||
the zero page for a missing fault. With userfaultfd, userspace can
|
||||
decide what content to provide before the faulting thread continues.
|
||||
|
||||
- For ``UFFDIO_REGISTER_MODE_MINOR`` faults, there is an existing page (in
|
||||
the page cache). Userspace has the option of modifying the page's
|
||||
contents before resolving the fault. Once the contents are correct
|
||||
(modified or not), userspace asks the kernel to map the page and let the
|
||||
faulting thread continue with ``UFFDIO_CONTINUE``.
|
||||
|
||||
Notes:
|
||||
|
||||
- If you requested ``UFFDIO_REGISTER_MODE_MISSING`` when registering then
|
||||
you must provide some kind of page in your thread after reading from
|
||||
the uffd. You must provide either ``UFFDIO_COPY`` or ``UFFDIO_ZEROPAGE``.
|
||||
The normal behavior of the OS automatically providing a zero page on
|
||||
an anonymous mmaping is not in place.
|
||||
- You can tell which kind of fault occurred by examining
|
||||
``pagefault.flags`` within the ``uffd_msg``, checking for the
|
||||
``UFFD_PAGEFAULT_FLAG_*`` flags.
|
||||
|
||||
- None of the page-delivering ioctls default to the range that you
|
||||
registered with. You must fill in all fields for the appropriate
|
||||
|
|
@ -122,9 +147,9 @@ Notes:
|
|||
|
||||
- You get the address of the access that triggered the missing page
|
||||
event out of a struct uffd_msg that you read in the thread from the
|
||||
uffd. You can supply as many pages as you want with ``UFFDIO_COPY`` or
|
||||
``UFFDIO_ZEROPAGE``. Keep in mind that unless you used DONTWAKE then
|
||||
the first of any of those IOCTLs wakes up the faulting thread.
|
||||
uffd. You can supply as many pages as you want with these IOCTLs.
|
||||
Keep in mind that unless you used DONTWAKE then the first of any of
|
||||
those IOCTLs wakes up the faulting thread.
|
||||
|
||||
- Be sure to test for all errors including
|
||||
(``pollfd[0].revents & POLLERR``). This can happen, e.g. when ranges
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ longterm series? One still supported? Then search the `LKML
|
|||
you don't find any, install `the latest release from that series
|
||||
<https://kernel.org/>`_. If it still shows the issue, report it to the stable
|
||||
mailing list (stable@vger.kernel.org) and CC the regressions list
|
||||
(regressions@lists.linux.dev).
|
||||
(regressions@lists.linux.dev); ideally also CC the maintainer and the mailing
|
||||
list for the subsystem in question.
|
||||
|
||||
In all other cases try your best guess which kernel part might be causing the
|
||||
issue. Check the :ref:`MAINTAINERS <maintainers>` file for how its developers
|
||||
|
|
@ -48,8 +49,9 @@ before the issue occurs.
|
|||
If you are facing multiple issues with the Linux kernel at once, report each
|
||||
separately. While writing your report, include all information relevant to the
|
||||
issue, like the kernel and the distro used. In case of a regression, CC the
|
||||
regressions mailing list (regressions@lists.linux.dev) to your report; also try
|
||||
to include the commit-id of the change causing it, which a bisection can find.
|
||||
regressions mailing list (regressions@lists.linux.dev) to your report. Also try
|
||||
to pin-point the culprit with a bisection; if you succeed, include its
|
||||
commit-id and CC everyone in the sign-off-by chain.
|
||||
|
||||
Once the report is out, answer any questions that come up and help where you
|
||||
can. That includes keeping the ball rolling by occasionally retesting with newer
|
||||
|
|
@ -198,10 +200,11 @@ report them:
|
|||
|
||||
* Send a short problem report to the Linux stable mailing list
|
||||
(stable@vger.kernel.org) and CC the Linux regressions mailing list
|
||||
(regressions@lists.linux.dev). Roughly describe the issue and ideally
|
||||
explain how to reproduce it. Mention the first version that shows the
|
||||
problem and the last version that's working fine. Then wait for further
|
||||
instructions.
|
||||
(regressions@lists.linux.dev); if you suspect the cause in a particular
|
||||
subsystem, CC its maintainer and its mailing list. Roughly describe the
|
||||
issue and ideally explain how to reproduce it. Mention the first version
|
||||
that shows the problem and the last version that's working fine. Then
|
||||
wait for further instructions.
|
||||
|
||||
The reference section below explains each of these steps in more detail.
|
||||
|
||||
|
|
@ -768,7 +771,9 @@ regular internet search engine and add something like
|
|||
the results to the archives at that URL.
|
||||
|
||||
It's also wise to check the internet, LKML and maybe bugzilla.kernel.org again
|
||||
at this point.
|
||||
at this point. If your report needs to be filed in a bug tracker, you may want
|
||||
to check the mailing list archives for the subsystem as well, as someone might
|
||||
have reported it only there.
|
||||
|
||||
For details how to search and what to do if you find matching reports see
|
||||
"Search for existing reports, first run" above.
|
||||
|
|
@ -1249,9 +1254,10 @@ and the oldest where the issue occurs (say 5.8-rc1).
|
|||
|
||||
When sending the report by mail, CC the Linux regressions mailing list
|
||||
(regressions@lists.linux.dev). In case the report needs to be filed to some web
|
||||
tracker, proceed to do so; once filed, forward the report by mail to the
|
||||
regressions list. Make sure to inline the forwarded report, hence do not attach
|
||||
it. Also add a short note at the top where you mention the URL to the ticket.
|
||||
tracker, proceed to do so. Once filed, forward the report by mail to the
|
||||
regressions list; CC the maintainer and the mailing list for the subsystem in
|
||||
question. Make sure to inline the forwarded report, hence do not attach it.
|
||||
Also add a short note at the top where you mention the URL to the ticket.
|
||||
|
||||
When mailing or forwarding the report, in case of a successful bisection add the
|
||||
author of the culprit to the recipients; also CC everyone in the signed-off-by
|
||||
|
|
@ -1536,17 +1542,20 @@ Report the regression
|
|||
|
||||
*Send a short problem report to the Linux stable mailing list
|
||||
(stable@vger.kernel.org) and CC the Linux regressions mailing list
|
||||
(regressions@lists.linux.dev). Roughly describe the issue and ideally
|
||||
explain how to reproduce it. Mention the first version that shows the
|
||||
problem and the last version that's working fine. Then wait for further
|
||||
instructions.*
|
||||
(regressions@lists.linux.dev); if you suspect the cause in a particular
|
||||
subsystem, CC its maintainer and its mailing list. Roughly describe the
|
||||
issue and ideally explain how to reproduce it. Mention the first version
|
||||
that shows the problem and the last version that's working fine. Then
|
||||
wait for further instructions.*
|
||||
|
||||
When reporting a regression that happens within a stable or longterm kernel
|
||||
line (say when updating from 5.10.4 to 5.10.5) a brief report is enough for
|
||||
the start to get the issue reported quickly. Hence a rough description is all
|
||||
it takes.
|
||||
the start to get the issue reported quickly. Hence a rough description to the
|
||||
stable and regressions mailing list is all it takes; but in case you suspect
|
||||
the cause in a particular subsystem, CC its maintainers and its mailing list
|
||||
as well, because that will speed things up.
|
||||
|
||||
But note, it helps developers a great deal if you can specify the exact version
|
||||
And note, it helps developers a great deal if you can specify the exact version
|
||||
that introduced the problem. Hence if possible within a reasonable time frame,
|
||||
try to find that version using vanilla kernels. Lets assume something broke when
|
||||
your distributor released a update from Linux kernel 5.10.5 to 5.10.8. Then as
|
||||
|
|
@ -1563,7 +1572,9 @@ pinpoint the exact change that causes the issue (which then can easily get
|
|||
reverted to fix the issue quickly). Hence consider to do a proper bisection
|
||||
right away if time permits. See the section 'Special care for regressions' and
|
||||
the document 'Documentation/admin-guide/bug-bisect.rst' for details how to
|
||||
perform one.
|
||||
perform one. In case of a successful bisection add the author of the culprit to
|
||||
the recipients; also CC everyone in the signed-off-by chain, which you find at
|
||||
the end of its commit message.
|
||||
|
||||
|
||||
Reference for "Reporting issues only occurring in older kernel version lines"
|
||||
|
|
|
|||
|
|
@ -277,9 +277,40 @@ Before jumping into the kernel, the following conditions must be met:
|
|||
|
||||
- SCR_EL3.FGTEn (bit 27) must be initialised to 0b1.
|
||||
|
||||
For CPUs with Advanced SIMD and floating point support:
|
||||
|
||||
- If EL3 is present:
|
||||
|
||||
- CPTR_EL3.TFP (bit 10) must be initialised to 0b0.
|
||||
|
||||
- If EL2 is present and the kernel is entered at EL1:
|
||||
|
||||
- CPTR_EL2.TFP (bit 10) must be initialised to 0b0.
|
||||
|
||||
For CPUs with the Scalable Vector Extension (FEAT_SVE) present:
|
||||
|
||||
- if EL3 is present:
|
||||
|
||||
- CPTR_EL3.EZ (bit 8) must be initialised to 0b1.
|
||||
|
||||
- ZCR_EL3.LEN must be initialised to the same value for all CPUs the
|
||||
kernel is executed on.
|
||||
|
||||
- If the kernel is entered at EL1 and EL2 is present:
|
||||
|
||||
- CPTR_EL2.TZ (bit 8) must be initialised to 0b0.
|
||||
|
||||
- CPTR_EL2.ZEN (bits 17:16) must be initialised to 0b11.
|
||||
|
||||
- ZCR_EL2.LEN must be initialised to the same value for all CPUs the
|
||||
kernel will execute on.
|
||||
|
||||
The requirements described above for CPU mode, caches, MMUs, architected
|
||||
timers, coherency and system registers apply to all CPUs. All CPUs must
|
||||
enter the kernel in the same exception level.
|
||||
enter the kernel in the same exception level. Where the values documented
|
||||
disable traps it is permissible for these traps to be enabled so long as
|
||||
those traps are handled transparently by higher exception levels as though
|
||||
the values documented were set.
|
||||
|
||||
The boot loader is expected to enter the kernel on each CPU in the
|
||||
following manner:
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ HWCAP_ASIMD
|
|||
|
||||
HWCAP_EVTSTRM
|
||||
The generic timer is configured to generate events at a frequency of
|
||||
approximately 100KHz.
|
||||
approximately 10KHz.
|
||||
|
||||
HWCAP_AES
|
||||
Functionality implied by ID_AA64ISAR0_EL1.AES == 0b0001.
|
||||
|
|
|
|||
|
|
@ -113,6 +113,12 @@ ABI relaxation:
|
|||
|
||||
- ``shmat()`` and ``shmdt()``.
|
||||
|
||||
- ``brk()`` (since kernel v5.6).
|
||||
|
||||
- ``mmap()`` (since kernel v5.6).
|
||||
|
||||
- ``mremap()``, the ``new_address`` argument (since kernel v5.6).
|
||||
|
||||
Any attempt to use non-zero tagged pointers may result in an error code
|
||||
being returned, a (fatal) signal being raised, or other modes of
|
||||
failure.
|
||||
|
|
|
|||
|
|
@ -42,10 +42,10 @@ irq_domain usage
|
|||
================
|
||||
|
||||
An interrupt controller driver creates and registers an irq_domain by
|
||||
calling one of the irq_domain_add_*() functions (each mapping method
|
||||
has a different allocator function, more on that later). The function
|
||||
will return a pointer to the irq_domain on success. The caller must
|
||||
provide the allocator function with an irq_domain_ops structure.
|
||||
calling one of the irq_domain_add_*() or irq_domain_create_*() functions
|
||||
(each mapping method has a different allocator function, more on that later).
|
||||
The function will return a pointer to the irq_domain on success. The caller
|
||||
must provide the allocator function with an irq_domain_ops structure.
|
||||
|
||||
In most cases, the irq_domain will begin empty without any mappings
|
||||
between hwirq and IRQ numbers. Mappings are added to the irq_domain
|
||||
|
|
@ -147,6 +147,7 @@ Legacy
|
|||
irq_domain_add_simple()
|
||||
irq_domain_add_legacy()
|
||||
irq_domain_add_legacy_isa()
|
||||
irq_domain_create_simple()
|
||||
irq_domain_create_legacy()
|
||||
|
||||
The Legacy mapping is a special case for drivers that already have a
|
||||
|
|
@ -169,13 +170,13 @@ supported. For example, ISA controllers would use the legacy map for
|
|||
mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ
|
||||
numbers.
|
||||
|
||||
Most users of legacy mappings should use irq_domain_add_simple() which
|
||||
will use a legacy domain only if an IRQ range is supplied by the
|
||||
system and will otherwise use a linear domain mapping. The semantics
|
||||
of this call are such that if an IRQ range is specified then
|
||||
Most users of legacy mappings should use irq_domain_add_simple() or
|
||||
irq_domain_create_simple() which will use a legacy domain only if an IRQ range
|
||||
is supplied by the system and will otherwise use a linear domain mapping.
|
||||
The semantics of this call are such that if an IRQ range is specified then
|
||||
descriptors will be allocated on-the-fly for it, and if no range is
|
||||
specified it will fall through to irq_domain_add_linear() which means
|
||||
*no* irq descriptors will be allocated.
|
||||
specified it will fall through to irq_domain_add_linear() or
|
||||
irq_domain_create_linear() which means *no* irq descriptors will be allocated.
|
||||
|
||||
A typical use case for simple domains is where an irqchip provider
|
||||
is supporting both dynamic and static IRQ assignments.
|
||||
|
|
@ -186,6 +187,7 @@ that the driver using the simple domain call irq_create_mapping()
|
|||
before any irq_find_mapping() since the latter will actually work
|
||||
for the static IRQ assignment case.
|
||||
|
||||
irq_domain_add_simple() and irq_domain_create_simple() as well as
|
||||
irq_domain_add_legacy() and irq_domain_create_legacy() are functionally
|
||||
equivalent, except for the first argument is different - the former
|
||||
accepts an Open Firmware specific 'struct device_node', while the latter
|
||||
|
|
|
|||
|
|
@ -43,14 +43,14 @@ exporting of kernel symbols to the kernel symbol table, variants of these are
|
|||
available to export symbols into a certain namespace: EXPORT_SYMBOL_NS() and
|
||||
EXPORT_SYMBOL_NS_GPL(). They take one additional argument: the namespace.
|
||||
Please note that due to macro expansion that argument needs to be a
|
||||
preprocessor symbol. E.g. to export the symbol `usb_stor_suspend` into the
|
||||
namespace `USB_STORAGE`, use::
|
||||
preprocessor symbol. E.g. to export the symbol ``usb_stor_suspend`` into the
|
||||
namespace ``USB_STORAGE``, use::
|
||||
|
||||
EXPORT_SYMBOL_NS(usb_stor_suspend, USB_STORAGE);
|
||||
|
||||
The corresponding ksymtab entry struct `kernel_symbol` will have the member
|
||||
`namespace` set accordingly. A symbol that is exported without a namespace will
|
||||
refer to `NULL`. There is no default namespace if none is defined. `modpost`
|
||||
The corresponding ksymtab entry struct ``kernel_symbol`` will have the member
|
||||
``namespace`` set accordingly. A symbol that is exported without a namespace will
|
||||
refer to ``NULL``. There is no default namespace if none is defined. ``modpost``
|
||||
and kernel/module.c make use the namespace at build time or module load time,
|
||||
respectively.
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ and EXPORT_SYMBOL_GPL() macro expansions that do not specify a namespace.
|
|||
|
||||
There are multiple ways of specifying this define and it depends on the
|
||||
subsystem and the maintainer's preference, which one to use. The first option
|
||||
is to define the default namespace in the `Makefile` of the subsystem. E.g. to
|
||||
is to define the default namespace in the ``Makefile`` of the subsystem. E.g. to
|
||||
export all symbols defined in usb-common into the namespace USB_COMMON, add a
|
||||
line like this to drivers/usb/common/Makefile::
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ using a statement like::
|
|||
|
||||
MODULE_IMPORT_NS(USB_STORAGE);
|
||||
|
||||
This will create a `modinfo` tag in the module for each imported namespace.
|
||||
This will create a ``modinfo`` tag in the module for each imported namespace.
|
||||
This has the side effect, that the imported namespaces of a module can be
|
||||
inspected with modinfo::
|
||||
|
||||
|
|
@ -113,7 +113,7 @@ metadata definitions like MODULE_AUTHOR() or MODULE_LICENSE(). Refer to section
|
|||
4. Loading Modules that use namespaced Symbols
|
||||
==============================================
|
||||
|
||||
At module loading time (e.g. `insmod`), the kernel will check each symbol
|
||||
At module loading time (e.g. ``insmod``), the kernel will check each symbol
|
||||
referenced from the module for its availability and whether the namespace it
|
||||
might be exported to has been imported by the module. The default behaviour of
|
||||
the kernel is to reject loading modules that don't specify sufficient imports.
|
||||
|
|
@ -138,19 +138,19 @@ missing imports. Fixing missing imports can be done with::
|
|||
A typical scenario for module authors would be::
|
||||
|
||||
- write code that depends on a symbol from a not imported namespace
|
||||
- `make`
|
||||
- ``make``
|
||||
- notice the warning of modpost telling about a missing import
|
||||
- run `make nsdeps` to add the import to the correct code location
|
||||
- run ``make nsdeps`` to add the import to the correct code location
|
||||
|
||||
For subsystem maintainers introducing a namespace, the steps are very similar.
|
||||
Again, `make nsdeps` will eventually add the missing namespace imports for
|
||||
Again, ``make nsdeps`` will eventually add the missing namespace imports for
|
||||
in-tree modules::
|
||||
|
||||
- move or add symbols to a namespace (e.g. with EXPORT_SYMBOL_NS())
|
||||
- `make` (preferably with an allmodconfig to cover all in-kernel
|
||||
- ``make`` (preferably with an allmodconfig to cover all in-kernel
|
||||
modules)
|
||||
- notice the warning of modpost telling about a missing import
|
||||
- run `make nsdeps` to add the import to the correct code location
|
||||
- run ``make nsdeps`` to add the import to the correct code location
|
||||
|
||||
You can also run nsdeps for external module builds. A typical usage is::
|
||||
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ Examples of using the Linux-provided gdb helpers
|
|||
[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
|
||||
....
|
||||
|
||||
- Examine fields of the current task struct::
|
||||
- Examine fields of the current task struct(supported by x86 and arm64 only)::
|
||||
|
||||
(gdb) p $lx_current().pid
|
||||
$1 = 4998
|
||||
|
|
|
|||
4
Documentation/devicetree/bindings/.gitignore
vendored
4
Documentation/devicetree/bindings/.gitignore
vendored
|
|
@ -1,4 +1,4 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
*.example.dts
|
||||
processed-schema*.yaml
|
||||
processed-schema*.json
|
||||
/processed-schema*.yaml
|
||||
/processed-schema*.json
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ required:
|
|||
- resets
|
||||
- ddc
|
||||
|
||||
unevaluatedProperties: false
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
|
|
|
|||
|
|
@ -51,6 +51,9 @@ properties:
|
|||
resets: true
|
||||
reset-names: true
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
ports:
|
||||
$ref: /schemas/graph.yaml#/properties/port
|
||||
description: |
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/gpio/fairchild,74hc595.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Generic 8-bit shift register
|
||||
|
||||
maintainers:
|
||||
- Maxime Ripard <mripard@kernel.org>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- fairchild,74hc595
|
||||
- nxp,74lvc594
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
description:
|
||||
The second cell is only used to specify the GPIO polarity.
|
||||
const: 2
|
||||
|
||||
registers-number:
|
||||
description: Number of daisy-chained shift registers
|
||||
|
||||
enable-gpios:
|
||||
description: GPIO connected to the OE (Output Enable) pin.
|
||||
maxItems: 1
|
||||
|
||||
spi-max-frequency: true
|
||||
|
||||
patternProperties:
|
||||
"^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
|
||||
type: object
|
||||
|
||||
properties:
|
||||
gpio-hog: true
|
||||
gpios: true
|
||||
output-high: true
|
||||
output-low: true
|
||||
line-name: true
|
||||
|
||||
required:
|
||||
- gpio-hog
|
||||
- gpios
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- registers-number
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
spi {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio5: gpio5@0 {
|
||||
compatible = "fairchild,74hc595";
|
||||
reg = <0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
registers-number = <4>;
|
||||
spi-max-frequency = <100000>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
* Generic 8-bits shift register GPIO driver
|
||||
|
||||
Required properties:
|
||||
- compatible: Should contain one of the following:
|
||||
"fairchild,74hc595"
|
||||
"nxp,74lvc594"
|
||||
- reg : chip select number
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- registers-number: Number of daisy-chained shift registers
|
||||
|
||||
Optional properties:
|
||||
- enable-gpios: GPIO connected to the OE (Output Enable) pin.
|
||||
|
||||
Example:
|
||||
|
||||
gpio5: gpio5@0 {
|
||||
compatible = "fairchild,74hc595";
|
||||
reg = <0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
registers-number = <4>;
|
||||
spi-max-frequency = <100000>;
|
||||
};
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/gpio/realtek,otto-gpio.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Realtek Otto GPIO controller
|
||||
|
||||
maintainers:
|
||||
- Sander Vanheule <sander@svanheule.net>
|
||||
- Bert Vermeulen <bert@biot.com>
|
||||
|
||||
description: |
|
||||
Realtek's GPIO controller on their MIPS switch SoCs (Otto platform) consists
|
||||
of two banks of 32 GPIOs. These GPIOs can generate edge-triggered interrupts.
|
||||
Each bank's interrupts are cascased into one interrupt line on the parent
|
||||
interrupt controller, if provided.
|
||||
This binding allows defining a single bank in the devicetree. The interrupt
|
||||
controller is not supported on the fallback compatible name, which only
|
||||
allows for GPIO port use.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: "^gpio@[0-9a-f]+$"
|
||||
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- realtek,rtl8380-gpio
|
||||
- realtek,rtl8390-gpio
|
||||
- const: realtek,otto-gpio
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
ngpios:
|
||||
minimum: 1
|
||||
maximum: 32
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#gpio-cells"
|
||||
- gpio-controller
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
dependencies:
|
||||
interrupt-controller: [ interrupts ]
|
||||
|
||||
examples:
|
||||
- |
|
||||
gpio@3500 {
|
||||
compatible = "realtek,rtl8380-gpio", "realtek,otto-gpio";
|
||||
reg = <0x3500 0x1c>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
ngpios = <24>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&rtlintc>;
|
||||
interrupts = <23>;
|
||||
};
|
||||
|
||||
...
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/gpio/rockchip,gpio-bank.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Rockchip GPIO bank
|
||||
|
||||
maintainers:
|
||||
- Heiko Stuebner <heiko@sntech.de>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- rockchip,gpio-bank
|
||||
- rockchip,rk3188-gpio-bank0
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
- interrupt-controller
|
||||
- "#interrupt-cells"
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
pinctrl: pinctrl {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
gpio0: gpio@2000a000 {
|
||||
compatible = "rockchip,rk3188-gpio-bank0";
|
||||
reg = <0x2000a000 0x100>;
|
||||
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk_gates8 9>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio1: gpio@2003c000 {
|
||||
compatible = "rockchip,gpio-bank";
|
||||
reg = <0x2003c000 0x100>;
|
||||
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk_gates8 10>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
|
@ -49,7 +49,7 @@ additionalProperties: true
|
|||
examples:
|
||||
- |
|
||||
i3c-master@a0000000 {
|
||||
compatible = "silvaco,i3c-master";
|
||||
compatible = "silvaco,i3c-master-v1";
|
||||
clocks = <&zynqmp_clk 71>, <&fclk>, <&sclk>;
|
||||
clock-names = "pclk", "fast_clk", "slow_clk";
|
||||
interrupt-parent = <&gic>;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,9 @@ properties:
|
|||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
required:
|
||||
|
|
@ -29,6 +32,7 @@ required:
|
|||
- compatible
|
||||
- reg
|
||||
- interrupt-controller
|
||||
- interrupts
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
|
|
|
|||
|
|
@ -193,23 +193,35 @@ required:
|
|||
- interrupts
|
||||
- clocks
|
||||
- power-domains
|
||||
- resets
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,vin-r8a7778
|
||||
- renesas,vin-r8a7779
|
||||
- renesas,rcar-gen2-vin
|
||||
then:
|
||||
required:
|
||||
- port
|
||||
else:
|
||||
required:
|
||||
- renesas,id
|
||||
- ports
|
||||
allOf:
|
||||
- if:
|
||||
not:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,vin-r8a7778
|
||||
- renesas,vin-r8a7779
|
||||
then:
|
||||
required:
|
||||
- resets
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- renesas,vin-r8a7778
|
||||
- renesas,vin-r8a7779
|
||||
- renesas,rcar-gen2-vin
|
||||
then:
|
||||
required:
|
||||
- port
|
||||
else:
|
||||
required:
|
||||
- renesas,id
|
||||
- ports
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
|
|
|
|||
|
|
@ -1,38 +0,0 @@
|
|||
Sigma Designs Tango4 NAND Flash Controller (NFC)
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible: "sigma,smp8758-nand"
|
||||
- reg: address/size of nfc_reg, nfc_mem, and pbus_reg
|
||||
- dmas: reference to the DMA channel used by the controller
|
||||
- dma-names: "rxtx"
|
||||
- clocks: reference to the system clock
|
||||
- #address-cells: <1>
|
||||
- #size-cells: <0>
|
||||
|
||||
Children nodes represent the available NAND chips.
|
||||
See Documentation/devicetree/bindings/mtd/nand-controller.yaml for generic bindings.
|
||||
|
||||
Example:
|
||||
|
||||
nandc: nand-controller@2c000 {
|
||||
compatible = "sigma,smp8758-nand";
|
||||
reg = <0x2c000 0x30>, <0x2d000 0x800>, <0x20000 0x1000>;
|
||||
dmas = <&dma0 3>;
|
||||
dma-names = "rxtx";
|
||||
clocks = <&clkgen SYS_CLK>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
nand@0 {
|
||||
reg = <0>; /* CS0 */
|
||||
nand-ecc-strength = <14>;
|
||||
nand-ecc-step-size = <1024>;
|
||||
};
|
||||
|
||||
nand@1 {
|
||||
reg = <1>; /* CS1 */
|
||||
nand-ecc-strength = <14>;
|
||||
nand-ecc-step-size = <1024>;
|
||||
};
|
||||
};
|
||||
|
|
@ -51,12 +51,12 @@ properties:
|
|||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
items:
|
||||
- description: AVB functional clock
|
||||
- description: Optional TXC reference clock
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: fck
|
||||
- const: refclk
|
||||
|
|
|
|||
|
|
@ -1,43 +0,0 @@
|
|||
HiSilicon Hip05 and Hip06 PCIe host bridge DT description
|
||||
|
||||
HiSilicon PCIe host controller is based on the Synopsys DesignWare PCI core.
|
||||
It shares common functions with the PCIe DesignWare core driver and inherits
|
||||
common properties defined in
|
||||
Documentation/devicetree/bindings/pci/designware-pcie.txt.
|
||||
|
||||
Additional properties are described here:
|
||||
|
||||
Required properties
|
||||
- compatible: Should contain "hisilicon,hip05-pcie" or "hisilicon,hip06-pcie".
|
||||
- reg: Should contain rc_dbi, config registers location and length.
|
||||
- reg-names: Must include the following entries:
|
||||
"rc_dbi": controller configuration registers;
|
||||
"config": PCIe configuration space registers.
|
||||
- msi-parent: Should be its_pcie which is an ITS receiving MSI interrupts.
|
||||
- port-id: Should be 0, 1, 2 or 3.
|
||||
|
||||
Optional properties:
|
||||
- status: Either "ok" or "disabled".
|
||||
- dma-coherent: Present if DMA operations are coherent.
|
||||
|
||||
Hip05 Example (note that Hip06 is the same except compatible):
|
||||
pcie@b0080000 {
|
||||
compatible = "hisilicon,hip05-pcie", "snps,dw-pcie";
|
||||
reg = <0 0xb0080000 0 0x10000>, <0x220 0x00000000 0 0x2000>;
|
||||
reg-names = "rc_dbi", "config";
|
||||
bus-range = <0 15>;
|
||||
msi-parent = <&its_pcie>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
dma-coherent;
|
||||
ranges = <0x82000000 0 0x00000000 0x220 0x00000000 0 0x10000000>;
|
||||
num-lanes = <8>;
|
||||
port-id = <1>;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0xf800 0 0 7>;
|
||||
interrupt-map = <0x0 0 0 1 &mbigen_pcie 1 10
|
||||
0x0 0 0 2 &mbigen_pcie 2 11
|
||||
0x0 0 0 3 &mbigen_pcie 3 12
|
||||
0x0 0 0 4 &mbigen_pcie 4 13>;
|
||||
};
|
||||
181
Documentation/devicetree/bindings/pci/mediatek-pcie-gen3.yaml
Normal file
181
Documentation/devicetree/bindings/pci/mediatek-pcie-gen3.yaml
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pci/mediatek-pcie-gen3.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Gen3 PCIe controller on MediaTek SoCs
|
||||
|
||||
maintainers:
|
||||
- Jianjun Wang <jianjun.wang@mediatek.com>
|
||||
|
||||
description: |+
|
||||
PCIe Gen3 MAC controller for MediaTek SoCs, it supports Gen3 speed
|
||||
and compatible with Gen2, Gen1 speed.
|
||||
|
||||
This PCIe controller supports up to 256 MSI vectors, the MSI hardware
|
||||
block diagram is as follows:
|
||||
|
||||
+-----+
|
||||
| GIC |
|
||||
+-----+
|
||||
^
|
||||
|
|
||||
port->irq
|
||||
|
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|0|1|2|3|4|5|6|7| (PCIe intc)
|
||||
+-+-+-+-+-+-+-+-+
|
||||
^ ^ ^
|
||||
| | ... |
|
||||
+-------+ +------+ +-----------+
|
||||
| | |
|
||||
+-+-+---+--+--+ +-+-+---+--+--+ +-+-+---+--+--+
|
||||
|0|1|...|30|31| |0|1|...|30|31| |0|1|...|30|31| (MSI sets)
|
||||
+-+-+---+--+--+ +-+-+---+--+--+ +-+-+---+--+--+
|
||||
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
|
||||
| | | | | | | | | | | | (MSI vectors)
|
||||
| | | | | | | | | | | |
|
||||
|
||||
(MSI SET0) (MSI SET1) ... (MSI SET7)
|
||||
|
||||
With 256 MSI vectors supported, the MSI vectors are composed of 8 sets,
|
||||
each set has its own address for MSI message, and supports 32 MSI vectors
|
||||
to generate interrupt.
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/pci/pci-bus.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mediatek,mt8192-pcie
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: pcie-mac
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
ranges:
|
||||
minItems: 1
|
||||
maxItems: 8
|
||||
|
||||
resets:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
reset-names:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
items:
|
||||
- const: phy
|
||||
- const: mac
|
||||
|
||||
clocks:
|
||||
maxItems: 6
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: pl_250m
|
||||
- const: tl_26m
|
||||
- const: tl_96m
|
||||
- const: tl_32k
|
||||
- const: peri_26m
|
||||
- const: top_133m
|
||||
|
||||
assigned-clocks:
|
||||
maxItems: 1
|
||||
|
||||
assigned-clock-parents:
|
||||
maxItems: 1
|
||||
|
||||
phys:
|
||||
maxItems: 1
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 1
|
||||
|
||||
interrupt-controller:
|
||||
description: Interrupt controller node for handling legacy PCI interrupts.
|
||||
type: object
|
||||
properties:
|
||||
'#address-cells':
|
||||
const: 0
|
||||
'#interrupt-cells':
|
||||
const: 1
|
||||
interrupt-controller: true
|
||||
|
||||
required:
|
||||
- '#address-cells'
|
||||
- '#interrupt-cells'
|
||||
- interrupt-controller
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- interrupts
|
||||
- ranges
|
||||
- clocks
|
||||
- '#interrupt-cells'
|
||||
- interrupt-controller
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
bus {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pcie: pcie@11230000 {
|
||||
compatible = "mediatek,mt8192-pcie";
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
reg = <0x00 0x11230000 0x00 0x4000>;
|
||||
reg-names = "pcie-mac";
|
||||
interrupts = <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||
bus-range = <0x00 0xff>;
|
||||
ranges = <0x82000000 0x00 0x12000000 0x00
|
||||
0x12000000 0x00 0x1000000>;
|
||||
clocks = <&infracfg 44>,
|
||||
<&infracfg 40>,
|
||||
<&infracfg 43>,
|
||||
<&infracfg 97>,
|
||||
<&infracfg 99>,
|
||||
<&infracfg 111>;
|
||||
clock-names = "pl_250m", "tl_26m", "tl_96m",
|
||||
"tl_32k", "peri_26m", "top_133m";
|
||||
assigned-clocks = <&topckgen 50>;
|
||||
assigned-clock-parents = <&topckgen 91>;
|
||||
|
||||
phys = <&pciephy>;
|
||||
phy-names = "pcie-phy";
|
||||
|
||||
resets = <&infracfg_rst 2>,
|
||||
<&infracfg_rst 3>;
|
||||
reset-names = "phy", "mac";
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0x7>;
|
||||
interrupt-map = <0 0 0 1 &pcie_intc 0>,
|
||||
<0 0 0 2 &pcie_intc 1>,
|
||||
<0 0 0 3 &pcie_intc 2>,
|
||||
<0 0 0 4 &pcie_intc 3>;
|
||||
pcie_intc: interrupt-controller {
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-controller;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -17,6 +17,7 @@ allOf:
|
|||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: renesas,pcie-r8a7779 # R-Car H1
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,pcie-r8a7742 # RZ/G1H
|
||||
|
|
@ -74,7 +75,16 @@ required:
|
|||
- clocks
|
||||
- clock-names
|
||||
- power-domains
|
||||
- resets
|
||||
|
||||
if:
|
||||
not:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: renesas,pcie-r8a7779
|
||||
then:
|
||||
required:
|
||||
- resets
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
|
|
|
|||
113
Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml
Normal file
113
Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pci/sifive,fu740-pcie.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: SiFive FU740 PCIe host controller
|
||||
|
||||
description: |+
|
||||
SiFive FU740 PCIe host controller is based on the Synopsys DesignWare
|
||||
PCI core. It shares common features with the PCIe DesignWare core and
|
||||
inherits common properties defined in
|
||||
Documentation/devicetree/bindings/pci/designware-pcie.txt.
|
||||
|
||||
maintainers:
|
||||
- Paul Walmsley <paul.walmsley@sifive.com>
|
||||
- Greentime Hu <greentime.hu@sifive.com>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/pci/pci-bus.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: sifive,fu740-pcie
|
||||
|
||||
reg:
|
||||
maxItems: 3
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: dbi
|
||||
- const: config
|
||||
- const: mgmt
|
||||
|
||||
num-lanes:
|
||||
const: 8
|
||||
|
||||
msi-parent: true
|
||||
|
||||
interrupt-names:
|
||||
items:
|
||||
- const: msi
|
||||
- const: inta
|
||||
- const: intb
|
||||
- const: intc
|
||||
- const: intd
|
||||
|
||||
resets:
|
||||
description: A phandle to the PCIe power up reset line.
|
||||
maxItems: 1
|
||||
|
||||
pwren-gpios:
|
||||
description: Should specify the GPIO for controlling the PCI bus device power on.
|
||||
maxItems: 1
|
||||
|
||||
reset-gpios:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- dma-coherent
|
||||
- num-lanes
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
- interrupt-parent
|
||||
- interrupt-map-mask
|
||||
- interrupt-map
|
||||
- clock-names
|
||||
- clocks
|
||||
- resets
|
||||
- pwren-gpios
|
||||
- reset-gpios
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
bus {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
#include <dt-bindings/clock/sifive-fu740-prci.h>
|
||||
|
||||
pcie@e00000000 {
|
||||
compatible = "sifive,fu740-pcie";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
reg = <0xe 0x00000000 0x0 0x80000000>,
|
||||
<0xd 0xf0000000 0x0 0x10000000>,
|
||||
<0x0 0x100d0000 0x0 0x1000>;
|
||||
reg-names = "dbi", "config", "mgmt";
|
||||
device_type = "pci";
|
||||
dma-coherent;
|
||||
bus-range = <0x0 0xff>;
|
||||
ranges = <0x81000000 0x0 0x60080000 0x0 0x60080000 0x0 0x10000>, /* I/O */
|
||||
<0x82000000 0x0 0x60090000 0x0 0x60090000 0x0 0xff70000>, /* mem */
|
||||
<0x82000000 0x0 0x70000000 0x0 0x70000000 0x0 0x1000000>, /* mem */
|
||||
<0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>; /* mem prefetchable */
|
||||
num-lanes = <0x8>;
|
||||
interrupts = <56>, <57>, <58>, <59>, <60>, <61>, <62>, <63>, <64>;
|
||||
interrupt-names = "msi", "inta", "intb", "intc", "intd";
|
||||
interrupt-parent = <&plic0>;
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
interrupt-map = <0x0 0x0 0x0 0x1 &plic0 57>,
|
||||
<0x0 0x0 0x0 0x2 &plic0 58>,
|
||||
<0x0 0x0 0x0 0x3 &plic0 59>,
|
||||
<0x0 0x0 0x0 0x4 &plic0 60>;
|
||||
clock-names = "pcie_aux";
|
||||
clocks = <&prci PRCI_CLK_PCIE_AUX>;
|
||||
resets = <&prci 4>;
|
||||
pwren-gpios = <&gpio 5 0>;
|
||||
reset-gpios = <&gpio 8 0>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
Sigma Designs Tango PCIe controller
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible: "sigma,smp8759-pcie"
|
||||
- reg: address/size of PCI configuration space, address/size of register area
|
||||
- bus-range: defined by size of PCI configuration space
|
||||
- device_type: "pci"
|
||||
- #size-cells: <2>
|
||||
- #address-cells: <3>
|
||||
- msi-controller
|
||||
- ranges: translation from system to bus addresses
|
||||
- interrupts: spec for misc interrupts, spec for MSI
|
||||
|
||||
Example:
|
||||
|
||||
pcie@2e000 {
|
||||
compatible = "sigma,smp8759-pcie";
|
||||
reg = <0x50000000 0x400000>, <0x2e000 0x100>;
|
||||
bus-range = <0 3>;
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
msi-controller;
|
||||
ranges = <0x02000000 0x0 0x00400000 0x50400000 0x0 0x3c00000>;
|
||||
interrupts =
|
||||
<54 IRQ_TYPE_LEVEL_HIGH>, /* misc interrupts */
|
||||
<55 IRQ_TYPE_LEVEL_HIGH>; /* MSI */
|
||||
};
|
||||
|
|
@ -16,13 +16,15 @@ allOf:
|
|||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: ti,j721e-pcie-ep
|
||||
- description: PCIe EP controller in AM64
|
||||
items:
|
||||
- const: ti,am64-pcie-ep
|
||||
- const: ti,j721e-pcie-ep
|
||||
- description: PCIe EP controller in J7200
|
||||
items:
|
||||
- const: ti,j7200-pcie-ep
|
||||
- const: ti,j721e-pcie-ep
|
||||
- description: PCIe EP controller in J721E
|
||||
items:
|
||||
- const: ti,j721e-pcie-ep
|
||||
|
||||
reg:
|
||||
maxItems: 4
|
||||
|
|
@ -66,7 +68,6 @@ required:
|
|||
- power-domains
|
||||
- clocks
|
||||
- clock-names
|
||||
- dma-coherent
|
||||
- max-functions
|
||||
- phys
|
||||
- phy-names
|
||||
|
|
|
|||
|
|
@ -16,13 +16,15 @@ allOf:
|
|||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: ti,j721e-pcie-host
|
||||
- description: PCIe controller in AM64
|
||||
items:
|
||||
- const: ti,am64-pcie-host
|
||||
- const: ti,j721e-pcie-host
|
||||
- description: PCIe controller in J7200
|
||||
items:
|
||||
- const: ti,j7200-pcie-host
|
||||
- const: ti,j721e-pcie-host
|
||||
- description: PCIe controller in J721E
|
||||
items:
|
||||
- const: ti,j721e-pcie-host
|
||||
|
||||
reg:
|
||||
maxItems: 4
|
||||
|
|
@ -46,12 +48,17 @@ properties:
|
|||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
description: clock-specifier to represent input to the PCIe
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
description: |+
|
||||
clock-specifier to represent input to the PCIe for 1 item.
|
||||
2nd item if present represents reference clock to the connector.
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: fck
|
||||
- const: pcie_refclk
|
||||
|
||||
vendor-id:
|
||||
const: 0x104c
|
||||
|
|
@ -62,6 +69,8 @@ properties:
|
|||
- const: 0xb00d
|
||||
- items:
|
||||
- const: 0xb00f
|
||||
- items:
|
||||
- const: 0xb010
|
||||
|
||||
msi-map: true
|
||||
|
||||
|
|
@ -78,7 +87,6 @@ required:
|
|||
- vendor-id
|
||||
- device-id
|
||||
- msi-map
|
||||
- dma-coherent
|
||||
- dma-ranges
|
||||
- ranges
|
||||
- reset-gpios
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ Required properties:
|
|||
- #address-cells: specifies the number of cells needed to encode an
|
||||
address. The value must be 0.
|
||||
|
||||
Optional properties:
|
||||
- dma-coherent: present if DMA operations are coherent
|
||||
|
||||
Example:
|
||||
++++++++
|
||||
|
|
|
|||
|
|
@ -51,23 +51,7 @@ Deprecated properties for iomux controller:
|
|||
Use rockchip,grf and rockchip,pmu described above instead.
|
||||
|
||||
Required properties for gpio sub nodes:
|
||||
- compatible: "rockchip,gpio-bank"
|
||||
- reg: register of the gpio bank (different than the iomux registerset)
|
||||
- interrupts: base interrupt of the gpio bank in the interrupt controller
|
||||
- clocks: clock that drives this bank
|
||||
- gpio-controller: identifies the node as a gpio controller and pin bank.
|
||||
- #gpio-cells: number of cells in GPIO specifier. Since the generic GPIO
|
||||
binding is used, the amount of cells must be specified as 2. See generic
|
||||
GPIO binding documentation for description of particular cells.
|
||||
- interrupt-controller: identifies the controller node as interrupt-parent.
|
||||
- #interrupt-cells: the value of this property should be 2 and the interrupt
|
||||
cells should use the standard two-cell scheme described in
|
||||
bindings/interrupt-controller/interrupts.txt
|
||||
|
||||
Deprecated properties for gpio sub nodes:
|
||||
- compatible: "rockchip,rk3188-gpio-bank0"
|
||||
- reg: second element: separate pull register for rk3188 bank0, use
|
||||
rockchip,pmu described above instead
|
||||
See rockchip,gpio-bank.yaml
|
||||
|
||||
Required properties for pin configuration node:
|
||||
- rockchip,pins: 3 integers array, represents a group of pins mux and config
|
||||
|
|
@ -128,43 +112,3 @@ uart2: serial@20064000 {
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart2_xfer>;
|
||||
};
|
||||
|
||||
Example for rk3188:
|
||||
|
||||
pinctrl@20008000 {
|
||||
compatible = "rockchip,rk3188-pinctrl";
|
||||
rockchip,grf = <&grf>;
|
||||
rockchip,pmu = <&pmu>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
gpio0: gpio0@2000a000 {
|
||||
compatible = "rockchip,rk3188-gpio-bank0";
|
||||
reg = <0x2000a000 0x100>;
|
||||
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk_gates8 9>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio1: gpio1@2003c000 {
|
||||
compatible = "rockchip,gpio-bank";
|
||||
reg = <0x2003c000 0x100>;
|
||||
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&clk_gates8 10>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
Rockchip PWM controller
|
||||
|
||||
Required properties:
|
||||
- compatible: should be "rockchip,<name>-pwm"
|
||||
"rockchip,rk2928-pwm": found on RK29XX,RK3066 and RK3188 SoCs
|
||||
"rockchip,rk3288-pwm": found on RK3288 SOC
|
||||
"rockchip,rv1108-pwm", "rockchip,rk3288-pwm": found on RV1108 SoC
|
||||
"rockchip,vop-pwm": found integrated in VOP on RK3288 SoC
|
||||
- reg: physical base address and length of the controller's registers
|
||||
- clocks: See ../clock/clock-bindings.txt
|
||||
- For older hardware (rk2928, rk3066, rk3188, rk3228, rk3288, rk3399):
|
||||
- There is one clock that's used both to derive the functional clock
|
||||
for the device and as the bus clock.
|
||||
- For newer hardware (rk3328 and future socs): specified by name
|
||||
- "pwm": This is used to derive the functional clock.
|
||||
- "pclk": This is the APB bus clock.
|
||||
- #pwm-cells: must be 2 (rk2928) or 3 (rk3288). See pwm.yaml in this directory
|
||||
for a description of the cell format.
|
||||
|
||||
Example:
|
||||
|
||||
pwm0: pwm@20030000 {
|
||||
compatible = "rockchip,rk2928-pwm";
|
||||
reg = <0x20030000 0x10>;
|
||||
clocks = <&cru PCLK_PWM01>;
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
100
Documentation/devicetree/bindings/pwm/pwm-rockchip.yaml
Normal file
100
Documentation/devicetree/bindings/pwm/pwm-rockchip.yaml
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pwm/pwm-rockchip.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Rockchip PWM controller
|
||||
|
||||
maintainers:
|
||||
- Heiko Stuebner <heiko@sntech.de>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: rockchip,rk2928-pwm
|
||||
- const: rockchip,rk3288-pwm
|
||||
- const: rockchip,rk3328-pwm
|
||||
- const: rockchip,vop-pwm
|
||||
- items:
|
||||
- const: rockchip,rk3036-pwm
|
||||
- const: rockchip,rk2928-pwm
|
||||
- items:
|
||||
- enum:
|
||||
- rockchip,rk3368-pwm
|
||||
- rockchip,rk3399-pwm
|
||||
- rockchip,rv1108-pwm
|
||||
- const: rockchip,rk3288-pwm
|
||||
- items:
|
||||
- enum:
|
||||
- rockchip,px30-pwm
|
||||
- rockchip,rk3308-pwm
|
||||
- const: rockchip,rk3328-pwm
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
clock-names:
|
||||
maxItems: 2
|
||||
|
||||
"#pwm-cells":
|
||||
enum: [2, 3]
|
||||
description:
|
||||
Must be 2 (rk2928) or 3 (rk3288 and later).
|
||||
See pwm.yaml for a description of the cell format.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#pwm-cells"
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- rockchip,rk3328-pwm
|
||||
- rockchip,rv1108-pwm
|
||||
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
items:
|
||||
- description: Used to derive the functional clock for the device.
|
||||
- description: Used as the APB bus clock.
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: pwm
|
||||
- const: pclk
|
||||
|
||||
required:
|
||||
- clocks
|
||||
- clock-names
|
||||
|
||||
else:
|
||||
properties:
|
||||
clocks:
|
||||
maxItems: 1
|
||||
description:
|
||||
Used both to derive the functional clock
|
||||
for the device and as the bus clock.
|
||||
|
||||
required:
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/rk3188-cru-common.h>
|
||||
pwm0: pwm@20030000 {
|
||||
compatible = "rockchip,rk2928-pwm";
|
||||
reg = <0x20030000 0x10>;
|
||||
clocks = <&cru PCLK_PWM01>;
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pwm/toshiba,pwm-visconti.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Toshiba Visconti PWM Controller
|
||||
|
||||
maintainers:
|
||||
- Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- const: toshiba,visconti-pwm
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
'#pwm-cells':
|
||||
const: 2
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- '#pwm-cells'
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pwm: pwm@241c0000 {
|
||||
compatible = "toshiba,visconti-pwm";
|
||||
reg = <0 0x241c0000 0 0x1000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm_mux>;
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
};
|
||||
27
Documentation/devicetree/bindings/riscv/microchip.yaml
Normal file
27
Documentation/devicetree/bindings/riscv/microchip.yaml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/riscv/microchip.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Microchip PolarFire SoC-based boards device tree bindings
|
||||
|
||||
maintainers:
|
||||
- Cyril Jean <Cyril.Jean@microchip.com>
|
||||
- Lewis Hanly <lewis.hanly@microchip.com>
|
||||
|
||||
description:
|
||||
Microchip PolarFire SoC-based boards
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
const: '/'
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- microchip,mpfs-icicle-kit
|
||||
- const: microchip,mpfs
|
||||
|
||||
additionalProperties: true
|
||||
|
||||
...
|
||||
|
|
@ -99,11 +99,6 @@ properties:
|
|||
- mediatek,mt7622-btif
|
||||
- mediatek,mt7623-btif
|
||||
- const: mediatek,mtk-btif
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt7622-btif
|
||||
- mediatek,mt7623-btif
|
||||
- const: mediatek,mtk-btif
|
||||
- items:
|
||||
- const: mrvl,mmp-uart
|
||||
- const: intel,xscale-uart
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
* Broadcom Northstar Thermal
|
||||
|
||||
This binding describes thermal sensor that is part of Northstar's DMU (Device
|
||||
Management Unit).
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "brcm,ns-thermal"
|
||||
- reg : iomem address range of PVTMON registers
|
||||
- #thermal-sensor-cells : Should be <0>
|
||||
|
||||
Example:
|
||||
|
||||
thermal: thermal@1800c2c0 {
|
||||
compatible = "brcm,ns-thermal";
|
||||
reg = <0x1800c2c0 0x10>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
cpu_thermal: cpu-thermal {
|
||||
polling-delay-passive = <0>;
|
||||
polling-delay = <1000>;
|
||||
coefficients = <(-556) 418000>;
|
||||
thermal-sensors = <&thermal>;
|
||||
|
||||
trips {
|
||||
cpu-crit {
|
||||
temperature = <125000>;
|
||||
hysteresis = <0>;
|
||||
type = "critical";
|
||||
};
|
||||
};
|
||||
|
||||
cooling-maps {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/thermal/brcm,ns-thermal.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom Northstar Thermal
|
||||
|
||||
maintainers:
|
||||
- Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
description:
|
||||
Thermal sensor that is part of Northstar's DMU (Device Management Unit).
|
||||
|
||||
allOf:
|
||||
- $ref: thermal-sensor.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,ns-thermal
|
||||
|
||||
reg:
|
||||
description: PVTMON registers range
|
||||
maxItems: 1
|
||||
|
||||
"#thermal-sensor-cells":
|
||||
const: 0
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
examples:
|
||||
- |
|
||||
thermal: thermal@1800c2c0 {
|
||||
compatible = "brcm,ns-thermal";
|
||||
reg = <0x1800c2c0 0x10>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
cpu-thermal {
|
||||
polling-delay-passive = <0>;
|
||||
polling-delay = <1000>;
|
||||
coefficients = <(-556) 418000>;
|
||||
thermal-sensors = <&thermal>;
|
||||
|
||||
trips {
|
||||
cpu-crit {
|
||||
temperature = <125000>;
|
||||
hysteresis = <0>;
|
||||
type = "critical";
|
||||
};
|
||||
};
|
||||
|
||||
cooling-maps {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -19,9 +19,15 @@ description: |
|
|||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- description: msm9860 TSENS based
|
||||
items:
|
||||
- enum:
|
||||
- qcom,ipq8064-tsens
|
||||
|
||||
- description: v0.1 of TSENS
|
||||
items:
|
||||
- enum:
|
||||
- qcom,mdm9607-tsens
|
||||
- qcom,msm8916-tsens
|
||||
- qcom,msm8939-tsens
|
||||
- qcom,msm8974-tsens
|
||||
|
|
@ -43,6 +49,7 @@ properties:
|
|||
- qcom,sdm845-tsens
|
||||
- qcom,sm8150-tsens
|
||||
- qcom,sm8250-tsens
|
||||
- qcom,sm8350-tsens
|
||||
- const: qcom,tsens-v2
|
||||
|
||||
reg:
|
||||
|
|
@ -73,7 +80,9 @@ properties:
|
|||
maxItems: 2
|
||||
items:
|
||||
- const: calib
|
||||
- const: calib_sel
|
||||
- enum:
|
||||
- calib_backup
|
||||
- calib_sel
|
||||
|
||||
"#qcom,sensors":
|
||||
description:
|
||||
|
|
@ -88,12 +97,21 @@ properties:
|
|||
Number of cells required to uniquely identify the thermal sensors. Since
|
||||
we have multiple sensors this is set to 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
- "#thermal-sensor-cells"
|
||||
- "#qcom,sensors"
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,ipq8064-tsens
|
||||
- qcom,mdm9607-tsens
|
||||
- qcom,msm8916-tsens
|
||||
- qcom,msm8974-tsens
|
||||
- qcom,msm8976-tsens
|
||||
|
|
@ -114,17 +132,42 @@ allOf:
|
|||
interrupt-names:
|
||||
minItems: 2
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#qcom,sensors"
|
||||
- interrupts
|
||||
- interrupt-names
|
||||
- "#thermal-sensor-cells"
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- qcom,tsens-v0_1
|
||||
- qcom,tsens-v1
|
||||
- qcom,tsens-v2
|
||||
|
||||
then:
|
||||
required:
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
// Example msm9860 based SoC (ipq8064):
|
||||
gcc: clock-controller {
|
||||
|
||||
/* ... */
|
||||
|
||||
tsens: thermal-sensor {
|
||||
compatible = "qcom,ipq8064-tsens";
|
||||
|
||||
nvmem-cells = <&tsens_calib>, <&tsens_calib_backup>;
|
||||
nvmem-cell-names = "calib", "calib_backup";
|
||||
interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "uplow";
|
||||
|
||||
#qcom,sensors = <11>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
// Example 1 (legacy: for pre v1 IP):
|
||||
|
|
|
|||
|
|
@ -28,14 +28,7 @@ properties:
|
|||
- renesas,r8a77980-thermal # R-Car V3H
|
||||
- renesas,r8a779a0-thermal # R-Car V3U
|
||||
|
||||
reg:
|
||||
minItems: 2
|
||||
maxItems: 4
|
||||
items:
|
||||
- description: TSC1 registers
|
||||
- description: TSC2 registers
|
||||
- description: TSC3 registers
|
||||
- description: TSC4 registers
|
||||
reg: true
|
||||
|
||||
interrupts:
|
||||
items:
|
||||
|
|
@ -71,8 +64,25 @@ if:
|
|||
enum:
|
||||
- renesas,r8a779a0-thermal
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
minItems: 2
|
||||
maxItems: 3
|
||||
items:
|
||||
- description: TSC1 registers
|
||||
- description: TSC2 registers
|
||||
- description: TSC3 registers
|
||||
required:
|
||||
- interrupts
|
||||
else:
|
||||
properties:
|
||||
reg:
|
||||
items:
|
||||
- description: TSC0 registers
|
||||
- description: TSC1 registers
|
||||
- description: TSC2 registers
|
||||
- description: TSC3 registers
|
||||
- description: TSC4 registers
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
|
|
@ -111,3 +121,20 @@ examples:
|
|||
};
|
||||
};
|
||||
};
|
||||
- |
|
||||
#include <dt-bindings/clock/r8a779a0-cpg-mssr.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/power/r8a779a0-sysc.h>
|
||||
|
||||
tsc_r8a779a0: thermal@e6190000 {
|
||||
compatible = "renesas,r8a779a0-thermal";
|
||||
reg = <0xe6190000 0x200>,
|
||||
<0xe6198000 0x200>,
|
||||
<0xe61a0000 0x200>,
|
||||
<0xe61a8000 0x200>,
|
||||
<0xe61b0000 0x200>;
|
||||
clocks = <&cpg CPG_MOD 919>;
|
||||
power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
|
||||
resets = <&cpg 919>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -36,6 +36,9 @@ properties:
|
|||
containing several internal sensors.
|
||||
enum: [0, 1]
|
||||
|
||||
required:
|
||||
- "#thermal-sensor-cells"
|
||||
|
||||
additionalProperties: true
|
||||
|
||||
examples:
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ Guidelines for GPIOs consumers
|
|||
|
||||
Drivers that can't work without standard GPIO calls should have Kconfig entries
|
||||
that depend on GPIOLIB or select GPIOLIB. The functions that allow a driver to
|
||||
obtain and use GPIOs are available by including the following file:
|
||||
obtain and use GPIOs are available by including the following file::
|
||||
|
||||
#include <linux/gpio/consumer.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -96,6 +96,12 @@ hardware descriptions such as device tree or ACPI:
|
|||
way to pass the charging parameters from hardware descriptions such as the
|
||||
device tree.
|
||||
|
||||
- gpio-mux: drivers/mux/gpio.c is used for controlling a multiplexer using
|
||||
n GPIO lines such that you can mux in 2^n different devices by activating
|
||||
different GPIO lines. Often the GPIOs are on a SoC and the devices are
|
||||
some SoC-external entities, such as different components on a PCB that
|
||||
can be selectively enabled.
|
||||
|
||||
Apart from this there are special GPIO drivers in subsystems like MMC/SD to
|
||||
read card detect and write protect GPIO lines, and in the TTY serial subsystem
|
||||
to emulate MCTRL (modem control) signals CTS/RTS by using two GPIO lines. The
|
||||
|
|
|
|||
|
|
@ -55,7 +55,11 @@ several parameter at once. For example, if you see pwm_config() and
|
|||
pwm_{enable,disable}() calls in the same function, this probably means you
|
||||
should switch to pwm_apply_state().
|
||||
|
||||
The PWM user API also allows one to query the PWM state with pwm_get_state().
|
||||
The PWM user API also allows one to query the PWM state that was passed to the
|
||||
last invocation of pwm_apply_state() using pwm_get_state(). Note this is
|
||||
different to what the driver has actually implemented if the request cannot be
|
||||
satisfied exactly with the hardware in use. There is currently no way for
|
||||
consumers to get the actually implemented settings.
|
||||
|
||||
In addition to the PWM state, the PWM API also exposes PWM arguments, which
|
||||
are the reference PWM config one should use on this PWM.
|
||||
|
|
|
|||
|
|
@ -730,17 +730,7 @@ This function returns the thermal_instance corresponding to a given
|
|||
{thermal_zone, cooling_device, trip_point} combination. Returns NULL
|
||||
if such an instance does not exist.
|
||||
|
||||
4.3. thermal_notify_framework
|
||||
-----------------------------
|
||||
|
||||
This function handles the trip events from sensor drivers. It starts
|
||||
throttling the cooling devices according to the policy configured.
|
||||
For CRITICAL and HOT trip points, this notifies the respective drivers,
|
||||
and does actual throttling for other trip points i.e ACTIVE and PASSIVE.
|
||||
The throttling policy is based on the configured platform data; if no
|
||||
platform data is provided, this uses the step_wise throttling policy.
|
||||
|
||||
4.4. thermal_cdev_update
|
||||
4.3. thermal_cdev_update
|
||||
------------------------
|
||||
|
||||
This function serves as an arbitrator to set the state of a cooling
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
VFIO - "Virtual Function I/O" [1]_
|
||||
==================================
|
||||
|
||||
Many modern system now provide DMA and interrupt remapping facilities
|
||||
Many modern systems now provide DMA and interrupt remapping facilities
|
||||
to help ensure I/O devices behave within the boundaries they've been
|
||||
allotted. This includes x86 hardware with AMD-Vi and Intel VT-d,
|
||||
POWER systems with Partitionable Endpoints (PEs) and embedded PowerPC
|
||||
|
|
|
|||
|
|
@ -99,6 +99,12 @@ native::
|
|||
}
|
||||
}
|
||||
|
||||
Note, that historically ACPI has no means of the GPIO polarity and thus
|
||||
the SPISerialBus() resource defines it on the per-chip basis. In order
|
||||
to avoid a chain of negations, the GPIO polarity is considered being
|
||||
Active High. Even for the cases when _DSD() is involved (see the example
|
||||
above) the GPIO CS polarity must be defined Active High to avoid ambiguity.
|
||||
|
||||
Other supported properties
|
||||
==========================
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ The possible values of ``type`` are::
|
|||
#define JS_EVENT_INIT 0x80 /* initial state of device */
|
||||
|
||||
As mentioned above, the driver will issue synthetic JS_EVENT_INIT ORed
|
||||
events on open. That is, if it's issuing a INIT BUTTON event, the
|
||||
events on open. That is, if it's issuing an INIT BUTTON event, the
|
||||
current type value will be::
|
||||
|
||||
int type = JS_EVENT_BUTTON | JS_EVENT_INIT; /* 0x81 */
|
||||
|
|
@ -100,8 +100,8 @@ is, you have both an axis 0 and a button 0). Generally,
|
|||
=============== =======
|
||||
|
||||
Hats vary from one joystick type to another. Some can be moved in 8
|
||||
directions, some only in 4, The driver, however, always reports a hat as two
|
||||
independent axis, even if the hardware doesn't allow independent movement.
|
||||
directions, some only in 4. The driver, however, always reports a hat as two
|
||||
independent axes, even if the hardware doesn't allow independent movement.
|
||||
|
||||
|
||||
js_event.value
|
||||
|
|
@ -188,10 +188,10 @@ One reason for emptying the queue is that if it gets full you'll start
|
|||
missing events since the queue is finite, and older events will get
|
||||
overwritten.
|
||||
|
||||
The other reason is that you want to know all what happened, and not
|
||||
The other reason is that you want to know all that happened, and not
|
||||
delay the processing till later.
|
||||
|
||||
Why can get the queue full? Because you don't empty the queue as
|
||||
Why can the queue get full? Because you don't empty the queue as
|
||||
mentioned, or because too much time elapses from one read to another
|
||||
and too many events to store in the queue get generated. Note that
|
||||
high system load may contribute to space those reads even more.
|
||||
|
|
@ -277,7 +277,7 @@ to be in the stable part of the API, and therefore may change without
|
|||
warning in following releases of the driver.
|
||||
|
||||
Both JSIOCSCORR and JSIOCGCORR expect &js_corr to be able to hold
|
||||
information for all axis. That is, struct js_corr corr[MAX_AXIS];
|
||||
information for all axes. That is, struct js_corr corr[MAX_AXIS];
|
||||
|
||||
struct js_corr is defined as::
|
||||
|
||||
|
|
@ -328,7 +328,7 @@ To test the state of the buttons,
|
|||
second_button_state = js.buttons & 2;
|
||||
|
||||
The axis values do not have a defined range in the original 0.x driver,
|
||||
except for that the values are non-negative. The 1.2.8+ drivers use a
|
||||
except that the values are non-negative. The 1.2.8+ drivers use a
|
||||
fixed range for reporting the values, 1 being the minimum, 128 the
|
||||
center, and 255 maximum value.
|
||||
|
||||
|
|
|
|||
|
|
@ -133,15 +133,15 @@ And add a line to your rc script executing that file::
|
|||
This way, after the next reboot your joystick will remain calibrated. You
|
||||
can also add the ``jscal -p`` line to your shutdown script.
|
||||
|
||||
HW specific driver information
|
||||
==============================
|
||||
Hardware-specific driver information
|
||||
====================================
|
||||
|
||||
In this section each of the separate hardware specific drivers is described.
|
||||
|
||||
Analog joysticks
|
||||
----------------
|
||||
|
||||
The analog.c uses the standard analog inputs of the gameport, and thus
|
||||
The analog.c driver uses the standard analog inputs of the gameport, and thus
|
||||
supports all standard joysticks and gamepads. It uses a very advanced
|
||||
routine for this, allowing for data precision that can't be found on any
|
||||
other system.
|
||||
|
|
@ -266,7 +266,7 @@ to:
|
|||
* Logitech WingMan Extreme Digital 3D
|
||||
|
||||
ADI devices are autodetected, and the driver supports up to two (any
|
||||
combination of) devices on a single gameport, using an Y-cable or chained
|
||||
combination of) devices on a single gameport, using a Y-cable or chained
|
||||
together.
|
||||
|
||||
Logitech WingMan Joystick, Logitech WingMan Attack, Logitech WingMan
|
||||
|
|
@ -288,7 +288,7 @@ supports:
|
|||
* Gravis Xterminator DualControl
|
||||
|
||||
All these devices are autodetected, and you can even use any combination
|
||||
of up to two of these pads either chained together or using an Y-cable on a
|
||||
of up to two of these pads either chained together or using a Y-cable on a
|
||||
single gameport.
|
||||
|
||||
GrIP MultiPort isn't supported yet. Gravis Stinger is a serial device and is
|
||||
|
|
@ -311,7 +311,7 @@ allow connecting analog joysticks to them, you'll need to load the analog
|
|||
driver as well to handle the attached joysticks.
|
||||
|
||||
The trackball should work with USB mousedev module as a normal mouse. See
|
||||
the USB documentation for how to setup an USB mouse.
|
||||
the USB documentation for how to setup a USB mouse.
|
||||
|
||||
ThrustMaster DirectConnect (BSP)
|
||||
--------------------------------
|
||||
|
|
@ -332,7 +332,7 @@ If you have one of these, contact me.
|
|||
|
||||
TMDC devices are autodetected, and thus no parameters to the module
|
||||
are needed. Up to two TMDC devices can be connected to one gameport, using
|
||||
an Y-cable.
|
||||
a Y-cable.
|
||||
|
||||
Creative Labs Blaster
|
||||
---------------------
|
||||
|
|
@ -342,7 +342,7 @@ the:
|
|||
|
||||
* Creative Blaster GamePad Cobra
|
||||
|
||||
Up to two of these can be used on a single gameport, using an Y-cable.
|
||||
Up to two of these can be used on a single gameport, using a Y-cable.
|
||||
|
||||
Genius Digital joysticks
|
||||
------------------------
|
||||
|
|
@ -381,7 +381,7 @@ card, 16 in case you have two in your system.
|
|||
Trident 4DWave / Aureal Vortex
|
||||
------------------------------
|
||||
|
||||
Soundcards with a Trident 4DWave DX/NX or Aureal Vortex/Vortex2 chipsets
|
||||
Soundcards with a Trident 4DWave DX/NX or Aureal Vortex/Vortex2 chipset
|
||||
provide an "Enhanced Game Port" mode where the soundcard handles polling the
|
||||
joystick. This mode is supported by the pcigame.c module. Once loaded the
|
||||
analog driver can use the enhanced features of these gameports..
|
||||
|
|
@ -454,7 +454,7 @@ Devices currently supported by spaceball.c are:
|
|||
* SpaceTec SpaceBall 4000 FLX
|
||||
|
||||
In addition to having the spaceorb/spaceball and serport modules in the
|
||||
kernel, you also need to attach a serial port to it. to do that, run the
|
||||
kernel, you also need to attach a serial port to it. To do that, run the
|
||||
inputattach program::
|
||||
|
||||
inputattach --spaceorb /dev/tts/x &
|
||||
|
|
@ -466,7 +466,7 @@ or::
|
|||
where /dev/tts/x is the serial port which the device is connected to. After
|
||||
doing this, the device will be reported and will start working.
|
||||
|
||||
There is one caveat with the SpaceOrb. The button #6, the on the bottom
|
||||
There is one caveat with the SpaceOrb. The button #6, the one on the bottom
|
||||
side of the orb, although reported as an ordinary button, causes internal
|
||||
recentering of the spaceorb, moving the zero point to the position in which
|
||||
the ball is at the moment of pressing the button. So, think first before
|
||||
|
|
@ -500,7 +500,7 @@ joy-magellan module. It currently supports only the:
|
|||
* Magellan 3D
|
||||
* Space Mouse
|
||||
|
||||
models, the additional buttons on the 'Plus' versions are not supported yet.
|
||||
models; the additional buttons on the 'Plus' versions are not supported yet.
|
||||
|
||||
To use it, you need to attach the serial port to the driver using the::
|
||||
|
||||
|
|
@ -575,7 +575,7 @@ FAQ
|
|||
:A: The device files don't exist. Create them (see section 2.2).
|
||||
|
||||
:Q: Is it possible to connect my old Atari/Commodore/Amiga/console joystick
|
||||
or pad that uses a 9-pin D-type cannon connector to the serial port of my
|
||||
or pad that uses a 9-pin D-type Cannon connector to the serial port of my
|
||||
PC?
|
||||
:A: Yes, it is possible, but it'll burn your serial port or the pad. It
|
||||
won't work, of course.
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ quota-tools 3.09 quota -V
|
|||
PPP 2.4.0 pppd --version
|
||||
nfs-utils 1.0.5 showmount --version
|
||||
procps 3.2.0 ps --version
|
||||
oprofile 0.9 oprofiled --version
|
||||
udev 081 udevd --version
|
||||
grub 0.93 grub --version || grub-install --version
|
||||
mcelog 0.6 mcelog --version
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ RISC-V architecture
|
|||
:maxdepth: 1
|
||||
|
||||
boot-image-header
|
||||
vm-layout
|
||||
pmu
|
||||
patch-acceptance
|
||||
|
||||
|
|
|
|||
63
Documentation/riscv/vm-layout.rst
Normal file
63
Documentation/riscv/vm-layout.rst
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
=====================================
|
||||
Virtual Memory Layout on RISC-V Linux
|
||||
=====================================
|
||||
|
||||
:Author: Alexandre Ghiti <alex@ghiti.fr>
|
||||
:Date: 12 February 2021
|
||||
|
||||
This document describes the virtual memory layout used by the RISC-V Linux
|
||||
Kernel.
|
||||
|
||||
RISC-V Linux Kernel 32bit
|
||||
=========================
|
||||
|
||||
RISC-V Linux Kernel SV32
|
||||
------------------------
|
||||
|
||||
TODO
|
||||
|
||||
RISC-V Linux Kernel 64bit
|
||||
=========================
|
||||
|
||||
The RISC-V privileged architecture document states that the 64bit addresses
|
||||
"must have bits 63–48 all equal to bit 47, or else a page-fault exception will
|
||||
occur.": that splits the virtual address space into 2 halves separated by a very
|
||||
big hole, the lower half is where the userspace resides, the upper half is where
|
||||
the RISC-V Linux Kernel resides.
|
||||
|
||||
RISC-V Linux Kernel SV39
|
||||
------------------------
|
||||
|
||||
::
|
||||
|
||||
========================================================================================================================
|
||||
Start addr | Offset | End addr | Size | VM area description
|
||||
========================================================================================================================
|
||||
| | | |
|
||||
0000000000000000 | 0 | 0000003fffffffff | 256 GB | user-space virtual memory, different per mm
|
||||
__________________|____________|__________________|_________|___________________________________________________________
|
||||
| | | |
|
||||
0000004000000000 | +256 GB | ffffffbfffffffff | ~16M TB | ... huge, almost 64 bits wide hole of non-canonical
|
||||
| | | | virtual memory addresses up to the -256 GB
|
||||
| | | | starting offset of kernel mappings.
|
||||
__________________|____________|__________________|_________|___________________________________________________________
|
||||
|
|
||||
| Kernel-space virtual memory, shared between all processes:
|
||||
____________________________________________________________|___________________________________________________________
|
||||
| | | |
|
||||
ffffffc000000000 | -256 GB | ffffffc7ffffffff | 32 GB | kasan
|
||||
ffffffcefee00000 | -196 GB | ffffffcefeffffff | 2 MB | fixmap
|
||||
ffffffceff000000 | -196 GB | ffffffceffffffff | 16 MB | PCI io
|
||||
ffffffcf00000000 | -196 GB | ffffffcfffffffff | 4 GB | vmemmap
|
||||
ffffffd000000000 | -192 GB | ffffffdfffffffff | 64 GB | vmalloc/ioremap space
|
||||
ffffffe000000000 | -128 GB | ffffffff7fffffff | 124 GB | direct mapping of all physical memory
|
||||
__________________|____________|__________________|_________|____________________________________________________________
|
||||
|
|
||||
|
|
||||
____________________________________________________________|____________________________________________________________
|
||||
| | | |
|
||||
ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | modules
|
||||
ffffffff80000000 | -2 GB | ffffffffffffffff | 2 GB | kernel, BPF
|
||||
__________________|____________|__________________|_________|____________________________________________________________
|
||||
|
|
@ -74,7 +74,7 @@ for a given topology level by creating a sched_domain_topology_level array and
|
|||
calling set_sched_topology() with this array as the parameter.
|
||||
|
||||
The sched-domains debugging infrastructure can be enabled by enabling
|
||||
CONFIG_SCHED_DEBUG and adding 'sched_debug_verbose' to your cmdline. If you
|
||||
CONFIG_SCHED_DEBUG and adding 'sched_verbose' to your cmdline. If you
|
||||
forgot to tweak your cmdline, you can also flip the
|
||||
/sys/kernel/debug/sched/verbose knob. This enables an error checking parse of
|
||||
the sched domains which should catch most possible errors (described above). It
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ quota-tools 3.09 quota -V
|
|||
PPP 2.4.0 pppd --version
|
||||
nfs-utils 1.0.5 showmount --version
|
||||
procps 3.2.0 ps --version
|
||||
oprofile 0.9 oprofiled --version
|
||||
udev 081 udevd --version
|
||||
grub 0.93 grub --version || grub-install --version
|
||||
mcelog 0.6 mcelog --version
|
||||
|
|
|
|||
|
|
@ -1,36 +1,184 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\renewcommand\thesection*
|
||||
\renewcommand\thesubsection*
|
||||
|
||||
.. _linux_doc_zh:
|
||||
|
||||
中文翻译
|
||||
========
|
||||
|
||||
这些手册包含有关如何开发内核的整体信息。内核社区非常庞大,一年下来有数千名开发
|
||||
人员做出贡献。 与任何大型社区一样,知道如何完成任务将使得更改合并的过程变得更
|
||||
加容易。
|
||||
|
||||
翻译计划:
|
||||
内核中文文档欢迎任何翻译投稿,特别是关于内核用户和管理员指南部分。
|
||||
.. note::
|
||||
|
||||
**翻译计划:**
|
||||
内核中文文档欢迎任何翻译投稿,特别是关于内核用户和管理员指南部分。
|
||||
|
||||
许可证文档
|
||||
----------
|
||||
|
||||
下面的文档介绍了Linux内核源代码的许可证(GPLv2)、如何在源代码树中正确标记
|
||||
单个文件的许可证、以及指向完整许可证文本的链接。
|
||||
|
||||
* Documentation/translations/zh_CN/process/license-rules.rst
|
||||
|
||||
用户文档
|
||||
--------
|
||||
|
||||
下面的手册是为内核用户编写的——即那些试图让它在给定系统上以最佳方式工作的
|
||||
用户。
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
admin-guide/index
|
||||
|
||||
TODOList:
|
||||
|
||||
* kbuild/index
|
||||
|
||||
固件相关文档
|
||||
------------
|
||||
|
||||
下列文档描述了内核需要的平台固件相关信息。
|
||||
|
||||
TODOList:
|
||||
|
||||
* firmware-guide/index
|
||||
* devicetree/index
|
||||
|
||||
应用程序开发人员文档
|
||||
--------------------
|
||||
|
||||
用户空间API手册涵盖了描述应用程序开发人员可见内核接口方面的文档。
|
||||
|
||||
TODOlist:
|
||||
|
||||
* userspace-api/index
|
||||
|
||||
内核开发简介
|
||||
------------
|
||||
|
||||
这些手册包含有关如何开发内核的整体信息。内核社区非常庞大,一年下来有数千名
|
||||
开发人员做出贡献。与任何大型社区一样,知道如何完成任务将使得更改合并的过程
|
||||
变得更加容易。
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
process/index
|
||||
dev-tools/index
|
||||
doc-guide/index
|
||||
kernel-hacking/index
|
||||
filesystems/index
|
||||
arm64/index
|
||||
sound/index
|
||||
cpu-freq/index
|
||||
mips/index
|
||||
iio/index
|
||||
riscv/index
|
||||
|
||||
TODOList:
|
||||
|
||||
* trace/index
|
||||
* maintainer/index
|
||||
* fault-injection/index
|
||||
* livepatch/index
|
||||
* rust/index
|
||||
|
||||
内核API文档
|
||||
-----------
|
||||
|
||||
以下手册从内核开发人员的角度详细介绍了特定的内核子系统是如何工作的。这里的
|
||||
大部分信息都是直接从内核源代码获取的,并根据需要添加补充材料(或者至少是在
|
||||
我们设法添加的时候——可能不是所有的都是有需要的)。
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
core-api/index
|
||||
cpu-freq/index
|
||||
iio/index
|
||||
sound/index
|
||||
filesystems/index
|
||||
|
||||
TODOList:
|
||||
|
||||
* driver-api/index
|
||||
* locking/index
|
||||
* accounting/index
|
||||
* block/index
|
||||
* cdrom/index
|
||||
* ide/index
|
||||
* fb/index
|
||||
* fpga/index
|
||||
* hid/index
|
||||
* i2c/index
|
||||
* isdn/index
|
||||
* infiniband/index
|
||||
* leds/index
|
||||
* netlabel/index
|
||||
* networking/index
|
||||
* pcmcia/index
|
||||
* power/index
|
||||
* target/index
|
||||
* timers/index
|
||||
* spi/index
|
||||
* w1/index
|
||||
* watchdog/index
|
||||
* virt/index
|
||||
* input/index
|
||||
* hwmon/index
|
||||
* gpu/index
|
||||
* security/index
|
||||
* crypto/index
|
||||
* vm/index
|
||||
* bpf/index
|
||||
* usb/index
|
||||
* PCI/index
|
||||
* scsi/index
|
||||
* misc-devices/index
|
||||
* scheduler/index
|
||||
* mhi/index
|
||||
|
||||
体系结构无关文档
|
||||
----------------
|
||||
|
||||
TODOList:
|
||||
|
||||
* asm-annotations
|
||||
|
||||
特定体系结构文档
|
||||
----------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
mips/index
|
||||
arm64/index
|
||||
riscv/index
|
||||
openrisc/index
|
||||
|
||||
TODOList:
|
||||
|
||||
* arm/index
|
||||
* ia64/index
|
||||
* m68k/index
|
||||
* nios2/index
|
||||
* parisc/index
|
||||
* powerpc/index
|
||||
* s390/index
|
||||
* sh/index
|
||||
* sparc/index
|
||||
* x86/index
|
||||
* xtensa/index
|
||||
|
||||
其他文档
|
||||
--------
|
||||
|
||||
有几份未排序的文档似乎不适合放在文档的其他部分,或者可能需要进行一些调整和/或
|
||||
转换为reStructureText格式,也有可能太旧。
|
||||
|
||||
TODOList:
|
||||
|
||||
* staging/index
|
||||
* watch_queue
|
||||
|
||||
目录和表格
|
||||
----------
|
||||
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
Overview
|
||||
========
|
||||
Original x86-64 was limited by 4-level paing to 256 TiB of virtual address
|
||||
Original x86-64 was limited by 4-level paging to 256 TiB of virtual address
|
||||
space and 64 TiB of physical address space. We are already bumping into
|
||||
this limit: some vendors offers servers with 64 TiB of memory today.
|
||||
this limit: some vendors offer servers with 64 TiB of memory today.
|
||||
|
||||
To overcome the limitation upcoming hardware will introduce support for
|
||||
5-level paging. It is a straight-forward extension of the current page
|
||||
|
|
|
|||
36
MAINTAINERS
36
MAINTAINERS
|
|
@ -3208,6 +3208,22 @@ F: Documentation/filesystems/bfs.rst
|
|||
F: fs/bfs/
|
||||
F: include/uapi/linux/bfs_fs.h
|
||||
|
||||
BITMAP API
|
||||
M: Yury Norov <yury.norov@gmail.com>
|
||||
R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
||||
R: Rasmus Villemoes <linux@rasmusvillemoes.dk>
|
||||
S: Maintained
|
||||
F: include/asm-generic/bitops/find.h
|
||||
F: include/linux/bitmap.h
|
||||
F: lib/bitmap.c
|
||||
F: lib/find_bit.c
|
||||
F: lib/find_bit_benchmark.c
|
||||
F: lib/test_bitmap.c
|
||||
F: tools/include/asm-generic/bitops/find.h
|
||||
F: tools/include/linux/bitmap.h
|
||||
F: tools/lib/bitmap.c
|
||||
F: tools/lib/find_bit.c
|
||||
|
||||
BLINKM RGB LED DRIVER
|
||||
M: Jan-Simon Moeller <jansimon.moeller@gmx.de>
|
||||
S: Maintained
|
||||
|
|
@ -9544,6 +9560,7 @@ F: fs/io-wq.h
|
|||
F: fs/io_uring.c
|
||||
F: include/linux/io_uring.h
|
||||
F: include/uapi/linux/io_uring.h
|
||||
F: tools/io_uring/
|
||||
|
||||
IPMI SUBSYSTEM
|
||||
M: Corey Minyard <minyard@acm.org>
|
||||
|
|
@ -10185,6 +10202,12 @@ S: Maintained
|
|||
F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktd253.yaml
|
||||
F: drivers/video/backlight/ktd253-backlight.c
|
||||
|
||||
KTEST
|
||||
M: Steven Rostedt <rostedt@goodmis.org>
|
||||
M: John Hawley <warthog9@eaglescrag.net>
|
||||
S: Maintained
|
||||
F: tools/testing/ktest
|
||||
|
||||
L3MDEV
|
||||
M: David Ahern <dsahern@kernel.org>
|
||||
L: netdev@vger.kernel.org
|
||||
|
|
@ -13998,6 +14021,14 @@ S: Maintained
|
|||
F: Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
|
||||
F: drivers/pci/controller/dwc/*imx6*
|
||||
|
||||
PCI DRIVER FOR FU740
|
||||
M: Paul Walmsley <paul.walmsley@sifive.com>
|
||||
M: Greentime Hu <greentime.hu@sifive.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/pci/sifive,fu740-pcie.yaml
|
||||
F: drivers/pci/controller/dwc/pcie-fu740.c
|
||||
|
||||
PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
|
||||
M: Jonathan Derrick <jonathan.derrick@intel.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
|
|
@ -14198,7 +14229,6 @@ PCIE DRIVER FOR HISILICON
|
|||
M: Zhou Wang <wangzhou1@hisilicon.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
|
||||
F: drivers/pci/controller/dwc/pcie-hisi.c
|
||||
|
||||
PCIE DRIVER FOR HISILICON KIRIN
|
||||
|
|
@ -14218,6 +14248,7 @@ F: drivers/pci/controller/dwc/pcie-histb.c
|
|||
|
||||
PCIE DRIVER FOR MEDIATEK
|
||||
M: Ryder Lee <ryder.lee@mediatek.com>
|
||||
M: Jianjun Wang <jianjun.wang@mediatek.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
L: linux-mediatek@lists.infradead.org
|
||||
S: Supported
|
||||
|
|
@ -15205,6 +15236,7 @@ F: include/linux/if_rmnet.h
|
|||
|
||||
QUALCOMM TSENS THERMAL DRIVER
|
||||
M: Amit Kucheria <amitk@kernel.org>
|
||||
M: Thara Gopinath <thara.gopinath@linaro.org>
|
||||
L: linux-pm@vger.kernel.org
|
||||
L: linux-arm-msm@vger.kernel.org
|
||||
S: Maintained
|
||||
|
|
@ -18110,7 +18142,7 @@ THERMAL/CPU_COOLING
|
|||
M: Amit Daniel Kachhap <amit.kachhap@gmail.com>
|
||||
M: Daniel Lezcano <daniel.lezcano@linaro.org>
|
||||
M: Viresh Kumar <viresh.kumar@linaro.org>
|
||||
M: Javi Merino <javi.merino@kernel.org>
|
||||
R: Lukasz Luba <lukasz.luba@arm.com>
|
||||
L: linux-pm@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/driver-api/thermal/cpu-cooling-api.rst
|
||||
|
|
|
|||
48
Makefile
48
Makefile
|
|
@ -1,8 +1,8 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 12
|
||||
PATCHLEVEL = 13
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION =
|
||||
EXTRAVERSION = -rc1
|
||||
NAME = Frozen Wasteland
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
@ -413,11 +413,6 @@ ifeq ($(ARCH),sparc64)
|
|||
SRCARCH := sparc
|
||||
endif
|
||||
|
||||
# Additional ARCH settings for sh
|
||||
ifeq ($(ARCH),sh64)
|
||||
SRCARCH := sh
|
||||
endif
|
||||
|
||||
export cross_compiling :=
|
||||
ifneq ($(SRCARCH),$(SUBARCH))
|
||||
cross_compiling := 1
|
||||
|
|
@ -809,16 +804,16 @@ KBUILD_CFLAGS += -Wno-gnu
|
|||
KBUILD_CFLAGS += -mno-global-merge
|
||||
else
|
||||
|
||||
# These warnings generated too much noise in a regular build.
|
||||
# Use make W=1 to enable them (see scripts/Makefile.extrawarn)
|
||||
KBUILD_CFLAGS += -Wno-unused-but-set-variable
|
||||
|
||||
# Warn about unmarked fall-throughs in switch statement.
|
||||
# Disabled for clang while comment to attribute conversion happens and
|
||||
# https://github.com/ClangBuiltLinux/linux/issues/636 is discussed.
|
||||
KBUILD_CFLAGS += $(call cc-option,-Wimplicit-fallthrough,)
|
||||
endif
|
||||
|
||||
# These warnings generated too much noise in a regular build.
|
||||
# Use make W=1 to enable them (see scripts/Makefile.extrawarn)
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
|
||||
|
||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
|
||||
ifdef CONFIG_FRAME_POINTER
|
||||
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||
|
|
@ -1281,7 +1276,7 @@ PHONY += prepare archprepare
|
|||
|
||||
archprepare: outputmakefile archheaders archscripts scripts include/config/kernel.release \
|
||||
asm-generic $(version_h) $(autoksyms_h) include/generated/utsrelease.h \
|
||||
include/generated/autoconf.h
|
||||
include/generated/autoconf.h remove-stale-files
|
||||
|
||||
prepare0: archprepare
|
||||
$(Q)$(MAKE) $(build)=scripts/mod
|
||||
|
|
@ -1290,6 +1285,10 @@ prepare0: archprepare
|
|||
# All the preparing..
|
||||
prepare: prepare0 prepare-objtool prepare-resolve_btfids
|
||||
|
||||
PHONY += remove-stale-files
|
||||
remove-stale-files:
|
||||
$(Q)$(srctree)/scripts/remove-stale-files
|
||||
|
||||
# Support for using generic headers in asm-generic
|
||||
asm-generic := -f $(srctree)/scripts/Makefile.asm-generic obj
|
||||
|
||||
|
|
@ -1548,9 +1547,6 @@ MRPROPER_FILES += include/config include/generated \
|
|||
vmlinux-gdb.py \
|
||||
*.spec
|
||||
|
||||
# Directories & files removed with 'make distclean'
|
||||
DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
|
||||
|
||||
# clean - Delete most, but leave enough to build external modules
|
||||
#
|
||||
clean: rm-files := $(CLEAN_FILES)
|
||||
|
|
@ -1577,16 +1573,14 @@ mrproper: clean $(mrproper-dirs)
|
|||
|
||||
# distclean
|
||||
#
|
||||
distclean: rm-files := $(wildcard $(DISTCLEAN_FILES))
|
||||
|
||||
PHONY += distclean
|
||||
|
||||
distclean: mrproper
|
||||
$(call cmd,rmfiles)
|
||||
@find $(srctree) $(RCS_FIND_IGNORE) \
|
||||
@find . $(RCS_FIND_IGNORE) \
|
||||
\( -name '*.orig' -o -name '*.rej' -o -name '*~' \
|
||||
-o -name '*.bak' -o -name '#*#' -o -name '*%' \
|
||||
-o -name 'core' \) \
|
||||
-o -name 'core' -o -name tags -o -name TAGS -o -name 'cscope*' \
|
||||
-o -name GPATH -o -name GRTAGS -o -name GSYMS -o -name GTAGS \) \
|
||||
-type f -print | xargs rm -f
|
||||
|
||||
|
||||
|
|
@ -1753,17 +1747,7 @@ else # KBUILD_EXTMOD
|
|||
# When building external modules the kernel used as basis is considered
|
||||
# read-only, and no consistency checks are made and the make
|
||||
# system is not used on the basis kernel. If updates are required
|
||||
# in the basis kernel ordinary make commands (without M=...) must
|
||||
# be used.
|
||||
#
|
||||
# The following are the only valid targets when building external
|
||||
# modules.
|
||||
# make M=dir clean Delete all automatically generated files
|
||||
# make M=dir modules Make all modules in specified dir
|
||||
# make M=dir Same as 'make M=dir modules'
|
||||
# make M=dir modules_install
|
||||
# Install the modules built in the module directory
|
||||
# Assumes install directory is already created
|
||||
# in the basis kernel ordinary make commands (without M=...) must be used.
|
||||
|
||||
# We are always building only modules.
|
||||
KBUILD_BUILTIN :=
|
||||
|
|
@ -1813,7 +1797,7 @@ modules_check: $(MODORDER)
|
|||
|
||||
quiet_cmd_depmod = DEPMOD $(MODLIB)
|
||||
cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
|
||||
$(KERNELRELEASE)
|
||||
$(KERNELRELEASE) $(mixed-build-prefix)
|
||||
|
||||
modules_install:
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
||||
|
|
|
|||
4
arch/.gitignore
vendored
4
arch/.gitignore
vendored
|
|
@ -1,3 +1,3 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
i386
|
||||
x86_64
|
||||
/i386/
|
||||
/x86_64/
|
||||
|
|
|
|||
|
|
@ -602,11 +602,6 @@ extern void outsl (unsigned long port, const void *src, unsigned long count);
|
|||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
/*
|
||||
* Convert a virtual cached pointer to an uncached pointer
|
||||
*/
|
||||
#define xlate_dev_kmem_ptr(p) p
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ALPHA_IO_H */
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@ static char *pc873xx_names[] = {
|
|||
static unsigned int base, model;
|
||||
|
||||
|
||||
unsigned int __init pc873xx_get_base()
|
||||
unsigned int __init pc873xx_get_base(void)
|
||||
{
|
||||
return base;
|
||||
}
|
||||
|
||||
char *__init pc873xx_get_model()
|
||||
char *__init pc873xx_get_model(void)
|
||||
{
|
||||
return pc873xx_names[model];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <net/checksum.h>
|
||||
|
||||
|
||||
#define ldq_u(x,y) \
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
config ARC
|
||||
def_bool y
|
||||
select ARC_TIMERS
|
||||
select ARCH_HAS_CACHE_LINE_SIZE
|
||||
select ARCH_HAS_DEBUG_VM_PGTABLE
|
||||
select ARCH_HAS_DMA_PREP_COHERENT
|
||||
select ARCH_HAS_PTE_SPECIAL
|
||||
|
|
@ -28,6 +29,7 @@ config ARC
|
|||
select GENERIC_SMP_IDLE_THREAD
|
||||
select HAVE_ARCH_KGDB
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if ARC_MMU_V4
|
||||
select HAVE_DEBUG_STACKOVERFLOW
|
||||
select HAVE_DEBUG_KMEMLEAK
|
||||
select HAVE_FUTEX_CMPXCHG if FUTEX
|
||||
|
|
@ -48,9 +50,6 @@ config ARC
|
|||
select HAVE_ARCH_JUMP_LABEL if ISA_ARCV2 && !CPU_ENDIAN_BE32
|
||||
select SET_FS
|
||||
|
||||
config ARCH_HAS_CACHE_LINE_SIZE
|
||||
def_bool y
|
||||
|
||||
config TRACE_IRQFLAGS_SUPPORT
|
||||
def_bool y
|
||||
|
||||
|
|
@ -86,10 +85,6 @@ config STACKTRACE_SUPPORT
|
|||
def_bool y
|
||||
select STACKTRACE
|
||||
|
||||
config HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
||||
def_bool y
|
||||
depends on ARC_MMU_V4
|
||||
|
||||
menu "ARC Architecture Configuration"
|
||||
|
||||
menu "ARC Platform/SoC/Board"
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ config ARM
|
|||
select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
|
||||
select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7
|
||||
select ARCH_SUPPORTS_ATOMIC_RMW
|
||||
select ARCH_SUPPORTS_HUGETLBFS if ARM_LPAE
|
||||
select ARCH_USE_BUILTIN_BSWAP
|
||||
select ARCH_USE_CMPXCHG_LOCKREF
|
||||
select ARCH_USE_MEMTEST
|
||||
|
|
@ -76,6 +77,7 @@ config ARM
|
|||
select HAVE_ARCH_SECCOMP_FILTER if AEABI && !OABI_COMPAT
|
||||
select HAVE_ARCH_THREAD_STRUCT_WHITELIST
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if ARM_LPAE
|
||||
select HAVE_ARM_SMCCC if CPU_V7
|
||||
select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32
|
||||
select HAVE_CONTEXT_TRACKING
|
||||
|
|
@ -1510,14 +1512,6 @@ config HW_PERF_EVENTS
|
|||
def_bool y
|
||||
depends on ARM_PMU
|
||||
|
||||
config SYS_SUPPORTS_HUGETLBFS
|
||||
def_bool y
|
||||
depends on ARM_LPAE
|
||||
|
||||
config HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
||||
def_bool y
|
||||
depends on ARM_LPAE
|
||||
|
||||
config ARCH_WANT_GENERAL_HUGETLB
|
||||
def_bool y
|
||||
|
||||
|
|
|
|||
|
|
@ -96,13 +96,6 @@ endif
|
|||
$(foreach o, $(libfdt_objs) atags_to_fdt.o fdt_check_mem_start.o, \
|
||||
$(eval CFLAGS_$(o) := -I $(srctree)/scripts/dtc/libfdt -fno-stack-protector))
|
||||
|
||||
# These were previously generated C files. When you are building the kernel
|
||||
# with O=, make sure to remove the stale files in the output tree. Otherwise,
|
||||
# the build system wrongly compiles the stale ones.
|
||||
ifdef building_out_of_srctree
|
||||
$(shell rm -f $(addprefix $(obj)/, fdt_rw.c fdt_ro.c fdt_wip.c fdt.c))
|
||||
endif
|
||||
|
||||
targets := vmlinux vmlinux.lds piggy_data piggy.o \
|
||||
lib1funcs.o ashldi3.o bswapsdi2.o \
|
||||
head.o $(OBJS)
|
||||
|
|
@ -118,8 +111,8 @@ asflags-y := -DZIMAGE
|
|||
|
||||
# Supply kernel BSS size to the decompressor via a linker symbol.
|
||||
KBSS_SZ = $(shell echo $$(($$($(NM) $(obj)/../../../../vmlinux | \
|
||||
sed -n -e 's/^\([^ ]*\) [AB] __bss_start$$/-0x\1/p' \
|
||||
-e 's/^\([^ ]*\) [AB] __bss_stop$$/+0x\1/p') )) )
|
||||
sed -n -e 's/^\([^ ]*\) [ABD] __bss_start$$/-0x\1/p' \
|
||||
-e 's/^\([^ ]*\) [ABD] __bss_stop$$/+0x\1/p') )) )
|
||||
LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ)
|
||||
# Supply ZRELADDR to the decompressor via a linker symbol.
|
||||
ifneq ($(CONFIG_AUTO_ZRELADDR),y)
|
||||
|
|
|
|||
|
|
@ -355,7 +355,6 @@
|
|||
reg = <0x20050000 0x10>;
|
||||
#pwm-cells = <3>;
|
||||
clocks = <&cru PCLK_PWM>;
|
||||
clock-names = "pwm";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm0_pin>;
|
||||
status = "disabled";
|
||||
|
|
@ -366,7 +365,6 @@
|
|||
reg = <0x20050010 0x10>;
|
||||
#pwm-cells = <3>;
|
||||
clocks = <&cru PCLK_PWM>;
|
||||
clock-names = "pwm";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm1_pin>;
|
||||
status = "disabled";
|
||||
|
|
@ -377,7 +375,6 @@
|
|||
reg = <0x20050020 0x10>;
|
||||
#pwm-cells = <3>;
|
||||
clocks = <&cru PCLK_PWM>;
|
||||
clock-names = "pwm";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm2_pin>;
|
||||
status = "disabled";
|
||||
|
|
@ -388,7 +385,6 @@
|
|||
reg = <0x20050030 0x10>;
|
||||
#pwm-cells = <2>;
|
||||
clocks = <&cru PCLK_PWM>;
|
||||
clock-names = "pwm";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm3_pin>;
|
||||
status = "disabled";
|
||||
|
|
|
|||
|
|
@ -679,7 +679,6 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm0_pin>;
|
||||
clocks = <&cru PCLK_RKPWM>;
|
||||
clock-names = "pwm";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -690,7 +689,6 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm1_pin>;
|
||||
clocks = <&cru PCLK_RKPWM>;
|
||||
clock-names = "pwm";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -701,7 +699,6 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm2_pin>;
|
||||
clocks = <&cru PCLK_RKPWM>;
|
||||
clock-names = "pwm";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
@ -712,7 +709,6 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm3_pin>;
|
||||
clocks = <&cru PCLK_RKPWM>;
|
||||
clock-names = "pwm";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,6 @@ CONFIG_INPUT_EVDEV=y
|
|||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_SERIO is not set
|
||||
CONFIG_LEGACY_PTY_COUNT=16
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ CONFIG_EXPERT=y
|
|||
CONFIG_MODULES=y
|
||||
CONFIG_ARCH_FOOTBRIDGE=y
|
||||
CONFIG_ARCH_CATS=y
|
||||
CONFIG_ARCH_PERSONAL_SERVER=y
|
||||
CONFIG_ARCH_EBSA285_HOST=y
|
||||
CONFIG_ARCH_NETWINDER=y
|
||||
CONFIG_LEDS=y
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@ CONFIG_INPUT_TOUCHSCREEN=y
|
|||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_UINPUT=m
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_PXA=y
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ CONFIG_INPUT_EVBUG=y
|
|||
# CONFIG_SERIO is not set
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=1
|
||||
|
|
|
|||
|
|
@ -69,7 +69,6 @@ CONFIG_SMSC911X=y
|
|||
# CONFIG_VT is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
CONFIG_SERIAL_NONSTANDARD=y
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_MPS2_UART_CONSOLE=y
|
||||
CONFIG_SERIAL_MPS2_UART=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
|
|
|
|||
|
|
@ -100,7 +100,6 @@ CONFIG_INPUT_EVDEV=y
|
|||
CONFIG_KEYBOARD_GPIO=y
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
CONFIG_LEGACY_PTY_COUNT=16
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ CONFIG_NET_ETHERNET=y
|
|||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_DEVKMEM is not set
|
||||
CONFIG_SERIAL_PXA=y
|
||||
CONFIG_SERIAL_PXA_CONSOLE=y
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
|
|
|
|||
|
|
@ -88,5 +88,6 @@ extern asmlinkage void c_backtrace(unsigned long fp, int pmode,
|
|||
struct mm_struct;
|
||||
void show_pte(const char *lvl, struct mm_struct *mm, unsigned long addr);
|
||||
extern void __show_regs(struct pt_regs *);
|
||||
extern void __show_regs_alloc_free(struct pt_regs *regs);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -430,11 +430,6 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr);
|
|||
*/
|
||||
#define xlate_dev_mem_ptr(p) __va(p)
|
||||
|
||||
/*
|
||||
* Convert a virtual cached pointer to an uncached pointer
|
||||
*/
|
||||
#define xlate_dev_kmem_ptr(p) p
|
||||
|
||||
#include <asm-generic/io.h>
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
|
|
|
|||
|
|
@ -56,9 +56,6 @@ static inline void crash_setup_regs(struct pt_regs *newregs,
|
|||
}
|
||||
}
|
||||
|
||||
/* Function pointer to optional machine-specific reinitialization */
|
||||
extern void (*kexec_reinit)(void);
|
||||
|
||||
static inline unsigned long phys_to_boot_phys(phys_addr_t phys)
|
||||
{
|
||||
return phys_to_idmap(phys);
|
||||
|
|
|
|||
|
|
@ -150,21 +150,6 @@ extern unsigned long vectors_base;
|
|||
*/
|
||||
#define PLAT_PHYS_OFFSET UL(CONFIG_PHYS_OFFSET)
|
||||
|
||||
#ifdef CONFIG_XIP_KERNEL
|
||||
/*
|
||||
* When referencing data in RAM from the XIP region in a relative manner
|
||||
* with the MMU off, we need the relative offset between the two physical
|
||||
* addresses. The macro below achieves this, which is:
|
||||
* __pa(v_data) - __xip_pa(v_text)
|
||||
*/
|
||||
#define PHYS_RELATIVE(v_data, v_text) \
|
||||
(((v_data) - PAGE_OFFSET + PLAT_PHYS_OFFSET) - \
|
||||
((v_text) - XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR) + \
|
||||
CONFIG_XIP_PHYS_ADDR))
|
||||
#else
|
||||
#define PHYS_RELATIVE(v_data, v_text) ((v_data) - (v_text))
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -18,12 +18,4 @@ static inline int set_memory_x(unsigned long addr, int numpages) { return 0; }
|
|||
static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_STRICT_KERNEL_RWX
|
||||
void set_kernel_text_rw(void);
|
||||
void set_kernel_text_ro(void);
|
||||
#else
|
||||
static inline void set_kernel_text_rw(void) { }
|
||||
static inline void set_kernel_text_ro(void) { }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
generated-y += unistd-common.h
|
||||
generated-y += unistd-oabi.h
|
||||
generated-y += unistd-eabi.h
|
||||
generic-y += kvm_para.h
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
#include <asm/unistd-oabi.h>
|
||||
#endif
|
||||
|
||||
#include <asm/unistd-common.h>
|
||||
#define __NR_sync_file_range2 __NR_arm_sync_file_range
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include <asm/vdso_datapage.h>
|
||||
#include <asm/hardware/cache-l2x0.h>
|
||||
#include <linux/kbuild.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include "signal.h"
|
||||
|
||||
/*
|
||||
|
|
@ -148,6 +149,8 @@ int main(void)
|
|||
DEFINE(SLEEP_SAVE_SP_PHYS, offsetof(struct sleep_save_sp, save_ptr_stash_phys));
|
||||
DEFINE(SLEEP_SAVE_SP_VIRT, offsetof(struct sleep_save_sp, save_ptr_stash));
|
||||
#endif
|
||||
DEFINE(ARM_SMCCC_QUIRK_ID_OFFS, offsetof(struct arm_smccc_quirk, id));
|
||||
DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS, offsetof(struct arm_smccc_quirk, state));
|
||||
BLANK();
|
||||
DEFINE(DMA_BIDIRECTIONAL, DMA_BIDIRECTIONAL);
|
||||
DEFINE(DMA_TO_DEVICE, DMA_TO_DEVICE);
|
||||
|
|
|
|||
|
|
@ -344,20 +344,19 @@ ENTRY(\sym)
|
|||
.size \sym, . - \sym
|
||||
.endm
|
||||
|
||||
#define NATIVE(nr, func) syscall nr, func
|
||||
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, native)
|
||||
#define __SYSCALL(nr, func) syscall nr, func
|
||||
|
||||
/*
|
||||
* This is the syscall table declaration for native ABI syscalls.
|
||||
* With EABI a couple syscalls are obsolete and defined as sys_ni_syscall.
|
||||
*/
|
||||
syscall_table_start sys_call_table
|
||||
#define COMPAT(nr, native, compat) syscall nr, native
|
||||
#ifdef CONFIG_AEABI
|
||||
#include <calls-eabi.S>
|
||||
#else
|
||||
#include <calls-oabi.S>
|
||||
#endif
|
||||
#undef COMPAT
|
||||
syscall_table_end sys_call_table
|
||||
|
||||
/*============================================================================
|
||||
|
|
@ -455,7 +454,8 @@ ENDPROC(sys_oabi_readahead)
|
|||
* using the compatibility syscall entries.
|
||||
*/
|
||||
syscall_table_start sys_oabi_call_table
|
||||
#define COMPAT(nr, native, compat) syscall nr, compat
|
||||
#undef __SYSCALL_WITH_COMPAT
|
||||
#define __SYSCALL_WITH_COMPAT(nr, native, compat) __SYSCALL(nr, compat)
|
||||
#include <calls-oabi.S>
|
||||
syscall_table_end sys_oabi_call_table
|
||||
|
||||
|
|
|
|||
|
|
@ -886,7 +886,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs)
|
|||
info->trigger = addr;
|
||||
pr_debug("breakpoint fired: address = 0x%x\n", addr);
|
||||
perf_bp_event(bp, regs);
|
||||
if (!bp->overflow_handler)
|
||||
if (is_default_overflow_handler(bp))
|
||||
enable_single_step(bp, addr);
|
||||
goto unlock;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,11 +147,6 @@ void machine_crash_shutdown(struct pt_regs *regs)
|
|||
pr_info("Loading crashdump kernel...\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Function pointer to optional machine-specific reinitialization
|
||||
*/
|
||||
void (*kexec_reinit)(void);
|
||||
|
||||
void machine_kexec(struct kimage *image)
|
||||
{
|
||||
unsigned long page_list, reboot_entry_phys;
|
||||
|
|
@ -187,9 +182,6 @@ void machine_kexec(struct kimage *image)
|
|||
|
||||
pr_info("Bye!\n");
|
||||
|
||||
if (kexec_reinit)
|
||||
kexec_reinit();
|
||||
|
||||
soft_restart(reboot_entry_phys);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -92,6 +92,17 @@ void arch_cpu_idle_exit(void)
|
|||
ledtrig_cpu(CPU_LED_IDLE_END);
|
||||
}
|
||||
|
||||
void __show_regs_alloc_free(struct pt_regs *regs)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* check for r0 - r12 only */
|
||||
for (i = 0; i < 13; i++) {
|
||||
pr_alert("Register r%d information:", i);
|
||||
mem_dump_obj((void *)regs->uregs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void __show_regs(struct pt_regs *regs)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
* Copyright (c) 2015, Linaro Limited
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/opcodes-sec.h>
|
||||
#include <asm/opcodes-virt.h>
|
||||
#include <asm/unwind.h>
|
||||
|
|
@ -27,7 +29,14 @@ UNWIND( .fnstart)
|
|||
UNWIND( .save {r4-r7})
|
||||
ldm r12, {r4-r7}
|
||||
\instr
|
||||
pop {r4-r7}
|
||||
ldr r4, [sp, #36]
|
||||
cmp r4, #0
|
||||
beq 1f // No quirk structure
|
||||
ldr r5, [r4, #ARM_SMCCC_QUIRK_ID_OFFS]
|
||||
cmp r5, #ARM_SMCCC_QUIRK_QCOM_A6
|
||||
bne 1f // No quirk present
|
||||
str r6, [r4, #ARM_SMCCC_QUIRK_STATE_OFFS]
|
||||
1: pop {r4-r7}
|
||||
ldr r12, [sp, #(4 * 4)]
|
||||
stm r12, {r0-r3}
|
||||
bx lr
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <linux/ftrace.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mm_types.h>
|
||||
|
|
@ -25,6 +26,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
|
|||
if (!idmap_pgd)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Function graph tracer state gets incosistent when the kernel
|
||||
* calls functions that never return (aka suspend finishers) hence
|
||||
* disable graph tracing during their execution.
|
||||
*/
|
||||
pause_graph_tracing();
|
||||
|
||||
/*
|
||||
* Provide a temporary page table with an identity mapping for
|
||||
* the MMU-enable code, required for resuming. On successful
|
||||
|
|
@ -32,6 +40,9 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
|
|||
* back to the correct page tables.
|
||||
*/
|
||||
ret = __cpu_suspend(arg, fn, __mpidr);
|
||||
|
||||
unpause_graph_tracing();
|
||||
|
||||
if (ret == 0) {
|
||||
cpu_switch_mm(mm->pgd, mm);
|
||||
local_flush_bp_all();
|
||||
|
|
@ -45,7 +56,13 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
|
|||
int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
|
||||
{
|
||||
u32 __mpidr = cpu_logical_map(smp_processor_id());
|
||||
return __cpu_suspend(arg, fn, __mpidr);
|
||||
int ret;
|
||||
|
||||
pause_graph_tracing();
|
||||
ret = __cpu_suspend(arg, fn, __mpidr);
|
||||
unpause_graph_tracing();
|
||||
|
||||
return ret;
|
||||
}
|
||||
#define idmap_pgd NULL
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -287,6 +287,7 @@ static int __die(const char *str, int err, struct pt_regs *regs)
|
|||
|
||||
print_modules();
|
||||
__show_regs(regs);
|
||||
__show_regs_alloc_free(regs);
|
||||
pr_emerg("Process %.*s (pid: %d, stack limit = 0x%p)\n",
|
||||
TASK_COMM_LEN, tsk->comm, task_pid_nr(tsk), end_of_stack(tsk));
|
||||
|
||||
|
|
|
|||
|
|
@ -16,27 +16,6 @@ config ARCH_CATS
|
|||
|
||||
Saying N will reduce the size of the Footbridge kernel.
|
||||
|
||||
config ARCH_PERSONAL_SERVER
|
||||
bool "Compaq Personal Server"
|
||||
select FOOTBRIDGE_HOST
|
||||
select ISA
|
||||
select ISA_DMA
|
||||
select FORCE_PCI
|
||||
help
|
||||
Say Y here if you intend to run this kernel on the Compaq
|
||||
Personal Server.
|
||||
|
||||
Saying N will reduce the size of the Footbridge kernel.
|
||||
|
||||
The Compaq Personal Server is not available for purchase.
|
||||
There are no product plans beyond the current research
|
||||
prototypes at this time. Information is available at:
|
||||
|
||||
<http://www.crl.hpl.hp.com/projects/personalserver/>
|
||||
|
||||
If you have any questions or comments about the Compaq Personal
|
||||
Server, send e-mail to <skiff@crl.dec.com>.
|
||||
|
||||
config ARCH_EBSA285_ADDIN
|
||||
bool "EBSA285 (addin mode)"
|
||||
select ARCH_EBSA285
|
||||
|
|
|
|||
|
|
@ -11,12 +11,10 @@ pci-y += dc21285.o
|
|||
pci-$(CONFIG_ARCH_CATS) += cats-pci.o
|
||||
pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o
|
||||
pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o
|
||||
pci-$(CONFIG_ARCH_PERSONAL_SERVER) += personal-pci.o
|
||||
|
||||
obj-$(CONFIG_ARCH_CATS) += cats-hw.o isa-timer.o
|
||||
obj-$(CONFIG_ARCH_EBSA285) += ebsa285.o dc21285-timer.o
|
||||
obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o
|
||||
obj-$(CONFIG_ARCH_PERSONAL_SERVER) += personal.o dc21285-timer.o
|
||||
|
||||
obj-$(CONFIG_PCI) +=$(pci-y)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,57 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* linux/arch/arm/mach-footbridge/personal-pci.c
|
||||
*
|
||||
* PCI bios-type initialisation for PCI machines
|
||||
*
|
||||
* Bits taken from various places.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mach/pci.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
static int irqmap_personal_server[] = {
|
||||
IRQ_IN0, IRQ_IN1, IRQ_IN2, IRQ_IN3, 0, 0, 0,
|
||||
IRQ_DOORBELLHOST, IRQ_DMA1, IRQ_DMA2, IRQ_PCI
|
||||
};
|
||||
|
||||
static int personal_server_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{
|
||||
unsigned char line;
|
||||
|
||||
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &line);
|
||||
|
||||
if (line > 0x40 && line <= 0x5f) {
|
||||
/* line corresponds to the bit controlling this interrupt
|
||||
* in the footbridge. Ignore the first 8 interrupt bits,
|
||||
* look up the rest in the map. IN0 is bit number 8
|
||||
*/
|
||||
return irqmap_personal_server[(line & 0x1f) - 8];
|
||||
} else if (line == 0) {
|
||||
/* no interrupt */
|
||||
return 0;
|
||||
} else
|
||||
return irqmap_personal_server[(line - 1) & 3];
|
||||
}
|
||||
|
||||
static struct hw_pci personal_server_pci __initdata = {
|
||||
.map_irq = personal_server_map_irq,
|
||||
.nr_controllers = 1,
|
||||
.ops = &dc21285_ops,
|
||||
.setup = dc21285_setup,
|
||||
.preinit = dc21285_preinit,
|
||||
.postinit = dc21285_postinit,
|
||||
};
|
||||
|
||||
static int __init personal_pci_init(void)
|
||||
{
|
||||
if (machine_is_personal_server())
|
||||
pci_common_init(&personal_server_pci);
|
||||
return 0;
|
||||
}
|
||||
|
||||
subsys_initcall(personal_pci_init);
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* linux/arch/arm/mach-footbridge/personal.c
|
||||
*
|
||||
* Personal server (Skiff) machine fixup
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
#include <asm/hardware/dec21285.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
|
||||
/* Maintainer: Jamey Hicks / George France */
|
||||
.atag_offset = 0x100,
|
||||
.map_io = footbridge_map_io,
|
||||
.init_irq = footbridge_init_irq,
|
||||
.init_time = footbridge_timer_init,
|
||||
.restart = footbridge_restart,
|
||||
MACHINE_END
|
||||
|
||||
|
|
@ -116,16 +116,16 @@ static struct hw_pci n2100_pci __initdata = {
|
|||
};
|
||||
|
||||
/*
|
||||
* Both r8169 chips on the n2100 exhibit PCI parity problems. Set
|
||||
* the ->broken_parity_status flag for both ports so that the r8169
|
||||
* driver knows it should ignore error interrupts.
|
||||
* Both r8169 chips on the n2100 exhibit PCI parity problems. Turn
|
||||
* off parity reporting for both ports so we don't get error interrupts
|
||||
* for them.
|
||||
*/
|
||||
static void n2100_fixup_r8169(struct pci_dev *dev)
|
||||
{
|
||||
if (dev->bus->number == 0 &&
|
||||
(dev->devfn == PCI_DEVFN(1, 0) ||
|
||||
dev->devfn == PCI_DEVFN(2, 0)))
|
||||
dev->broken_parity_status = 1;
|
||||
pci_disable_parity(dev);
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REALTEK, PCI_ANY_ID, n2100_fixup_r8169);
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue