mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
Merge branch 'android-4.14-stable' of https://android.googlesource.com/kernel/common
* 'android-4.14-stable' of https://android.googlesource.com/kernel/common: (2966 commits) Linux 4.14.331 net: sched: fix race condition in qdisc_graft() scsi: virtio_scsi: limit number of hw queues by nr_cpu_ids ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks ext4: correct return value of ext4_convert_meta_bg ext4: correct offset of gdb backup in non meta_bg group to update_backups ext4: apply umask if ACL support is disabled media: venus: hfi: fix the check to handle session buffer requirement media: sharp: fix sharp encoding i2c: i801: fix potential race in i801_block_transaction_byte_by_byte net: dsa: lan9303: consequently nested-lock physical MDIO ALSA: info: Fix potential deadlock at disconnection parisc/pgtable: Do not drop upper 5 address bits of physical address parisc: Prevent booting 64-bit kernels on PA1.x machines mcb: fix error handling for different scenarios when parsing jbd2: fix potential data lost in recovering journal raced with synchronizing fs bdev genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware mmc: meson-gx: Remove setting of CMD_CFG_ERROR PM: hibernate: Clean up sync_read handling in snapshot_write_next() PM: hibernate: Use __get_safe_page() rather than touching the list ... Change-Id: I755d2aa7c525ace28adc4aee433572b3110ea39b
This commit is contained in:
commit
9cdc78c354
@ -135,7 +135,7 @@ Description:
|
|||||||
Raw capacitance measurement from channel Y. Units after
|
Raw capacitance measurement from channel Y. Units after
|
||||||
application of scale and offset are nanofarads.
|
application of scale and offset are nanofarads.
|
||||||
|
|
||||||
What: /sys/.../iio:deviceX/in_capacitanceY-in_capacitanceZ_raw
|
What: /sys/.../iio:deviceX/in_capacitanceY-capacitanceZ_raw
|
||||||
KernelVersion: 3.2
|
KernelVersion: 3.2
|
||||||
Contact: linux-iio@vger.kernel.org
|
Contact: linux-iio@vger.kernel.org
|
||||||
Description:
|
Description:
|
||||||
|
@ -375,16 +375,17 @@ Description: information about CPUs heterogeneity.
|
|||||||
cpu_capacity: capacity of cpu#.
|
cpu_capacity: capacity of cpu#.
|
||||||
|
|
||||||
What: /sys/devices/system/cpu/vulnerabilities
|
What: /sys/devices/system/cpu/vulnerabilities
|
||||||
/sys/devices/system/cpu/vulnerabilities/meltdown
|
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling
|
||||||
/sys/devices/system/cpu/vulnerabilities/spectre_v1
|
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
|
||||||
/sys/devices/system/cpu/vulnerabilities/spectre_v2
|
|
||||||
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
|
|
||||||
/sys/devices/system/cpu/vulnerabilities/l1tf
|
/sys/devices/system/cpu/vulnerabilities/l1tf
|
||||||
/sys/devices/system/cpu/vulnerabilities/mds
|
/sys/devices/system/cpu/vulnerabilities/mds
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/meltdown
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/spectre_v1
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/spectre_v2
|
||||||
/sys/devices/system/cpu/vulnerabilities/srbds
|
/sys/devices/system/cpu/vulnerabilities/srbds
|
||||||
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
|
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
|
||||||
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
|
|
||||||
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
|
|
||||||
Date: January 2018
|
Date: January 2018
|
||||||
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||||
Description: Information about CPU vulnerabilities
|
Description: Information about CPU vulnerabilities
|
||||||
|
6
Documentation/ABI/testing/sysfs-kernel-oops_count
Normal file
6
Documentation/ABI/testing/sysfs-kernel-oops_count
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
What: /sys/kernel/oops_count
|
||||||
|
Date: November 2022
|
||||||
|
KernelVersion: 6.2.0
|
||||||
|
Contact: Linux Kernel Hardening List <linux-hardening@vger.kernel.org>
|
||||||
|
Description:
|
||||||
|
Shows how many times the system has Oopsed since last boot.
|
6
Documentation/ABI/testing/sysfs-kernel-warn_count
Normal file
6
Documentation/ABI/testing/sysfs-kernel-warn_count
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
What: /sys/kernel/warn_count
|
||||||
|
Date: November 2022
|
||||||
|
KernelVersion: 6.2.0
|
||||||
|
Contact: Linux Kernel Hardening List <linux-hardening@vger.kernel.org>
|
||||||
|
Description:
|
||||||
|
Shows how many times the system has Warned since last boot.
|
109
Documentation/admin-guide/hw-vuln/gather_data_sampling.rst
Normal file
109
Documentation/admin-guide/hw-vuln/gather_data_sampling.rst
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
GDS - Gather Data Sampling
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Gather Data Sampling is a hardware vulnerability which allows unprivileged
|
||||||
|
speculative access to data which was previously stored in vector registers.
|
||||||
|
|
||||||
|
Problem
|
||||||
|
-------
|
||||||
|
When a gather instruction performs loads from memory, different data elements
|
||||||
|
are merged into the destination vector register. However, when a gather
|
||||||
|
instruction that is transiently executed encounters a fault, stale data from
|
||||||
|
architectural or internal vector registers may get transiently forwarded to the
|
||||||
|
destination vector register instead. This will allow a malicious attacker to
|
||||||
|
infer stale data using typical side channel techniques like cache timing
|
||||||
|
attacks. GDS is a purely sampling-based attack.
|
||||||
|
|
||||||
|
The attacker uses gather instructions to infer the stale vector register data.
|
||||||
|
The victim does not need to do anything special other than use the vector
|
||||||
|
registers. The victim does not need to use gather instructions to be
|
||||||
|
vulnerable.
|
||||||
|
|
||||||
|
Because the buffers are shared between Hyper-Threads cross Hyper-Thread attacks
|
||||||
|
are possible.
|
||||||
|
|
||||||
|
Attack scenarios
|
||||||
|
----------------
|
||||||
|
Without mitigation, GDS can infer stale data across virtually all
|
||||||
|
permission boundaries:
|
||||||
|
|
||||||
|
Non-enclaves can infer SGX enclave data
|
||||||
|
Userspace can infer kernel data
|
||||||
|
Guests can infer data from hosts
|
||||||
|
Guest can infer guest from other guests
|
||||||
|
Users can infer data from other users
|
||||||
|
|
||||||
|
Because of this, it is important to ensure that the mitigation stays enabled in
|
||||||
|
lower-privilege contexts like guests and when running outside SGX enclaves.
|
||||||
|
|
||||||
|
The hardware enforces the mitigation for SGX. Likewise, VMMs should ensure
|
||||||
|
that guests are not allowed to disable the GDS mitigation. If a host erred and
|
||||||
|
allowed this, a guest could theoretically disable GDS mitigation, mount an
|
||||||
|
attack, and re-enable it.
|
||||||
|
|
||||||
|
Mitigation mechanism
|
||||||
|
--------------------
|
||||||
|
This issue is mitigated in microcode. The microcode defines the following new
|
||||||
|
bits:
|
||||||
|
|
||||||
|
================================ === ============================
|
||||||
|
IA32_ARCH_CAPABILITIES[GDS_CTRL] R/O Enumerates GDS vulnerability
|
||||||
|
and mitigation support.
|
||||||
|
IA32_ARCH_CAPABILITIES[GDS_NO] R/O Processor is not vulnerable.
|
||||||
|
IA32_MCU_OPT_CTRL[GDS_MITG_DIS] R/W Disables the mitigation
|
||||||
|
0 by default.
|
||||||
|
IA32_MCU_OPT_CTRL[GDS_MITG_LOCK] R/W Locks GDS_MITG_DIS=0. Writes
|
||||||
|
to GDS_MITG_DIS are ignored
|
||||||
|
Can't be cleared once set.
|
||||||
|
================================ === ============================
|
||||||
|
|
||||||
|
GDS can also be mitigated on systems that don't have updated microcode by
|
||||||
|
disabling AVX. This can be done by setting gather_data_sampling="force" or
|
||||||
|
"clearcpuid=avx" on the kernel command-line.
|
||||||
|
|
||||||
|
If used, these options will disable AVX use by turning off XSAVE YMM support.
|
||||||
|
However, the processor will still enumerate AVX support. Userspace that
|
||||||
|
does not follow proper AVX enumeration to check both AVX *and* XSAVE YMM
|
||||||
|
support will break.
|
||||||
|
|
||||||
|
Mitigation control on the kernel command line
|
||||||
|
---------------------------------------------
|
||||||
|
The mitigation can be disabled by setting "gather_data_sampling=off" or
|
||||||
|
"mitigations=off" on the kernel command line. Not specifying either will default
|
||||||
|
to the mitigation being enabled. Specifying "gather_data_sampling=force" will
|
||||||
|
use the microcode mitigation when available or disable AVX on affected systems
|
||||||
|
where the microcode hasn't been updated to include the mitigation.
|
||||||
|
|
||||||
|
GDS System Information
|
||||||
|
------------------------
|
||||||
|
The kernel provides vulnerability status information through sysfs. For
|
||||||
|
GDS this can be accessed by the following sysfs file:
|
||||||
|
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling
|
||||||
|
|
||||||
|
The possible values contained in this file are:
|
||||||
|
|
||||||
|
============================== =============================================
|
||||||
|
Not affected Processor not vulnerable.
|
||||||
|
Vulnerable Processor vulnerable and mitigation disabled.
|
||||||
|
Vulnerable: No microcode Processor vulnerable and microcode is missing
|
||||||
|
mitigation.
|
||||||
|
Mitigation: AVX disabled,
|
||||||
|
no microcode Processor is vulnerable and microcode is missing
|
||||||
|
mitigation. AVX disabled as mitigation.
|
||||||
|
Mitigation: Microcode Processor is vulnerable and mitigation is in
|
||||||
|
effect.
|
||||||
|
Mitigation: Microcode (locked) Processor is vulnerable and mitigation is in
|
||||||
|
effect and cannot be disabled.
|
||||||
|
Unknown: Dependent on
|
||||||
|
hypervisor status Running on a virtual guest processor that is
|
||||||
|
affected but with no way to know if host
|
||||||
|
processor is mitigated or vulnerable.
|
||||||
|
============================== =============================================
|
||||||
|
|
||||||
|
GDS Default mitigation
|
||||||
|
----------------------
|
||||||
|
The updated microcode will enable the mitigation by default. The kernel's
|
||||||
|
default action is to leave the mitigation enabled.
|
@ -16,3 +16,4 @@ are configurable at compile, boot or run time.
|
|||||||
multihit.rst
|
multihit.rst
|
||||||
special-register-buffer-data-sampling.rst
|
special-register-buffer-data-sampling.rst
|
||||||
processor_mmio_stale_data.rst
|
processor_mmio_stale_data.rst
|
||||||
|
gather_data_sampling.rst
|
||||||
|
@ -230,6 +230,20 @@ The possible values in this file are:
|
|||||||
* - 'Mitigation: Clear CPU buffers'
|
* - 'Mitigation: Clear CPU buffers'
|
||||||
- The processor is vulnerable and the CPU buffer clearing mitigation is
|
- The processor is vulnerable and the CPU buffer clearing mitigation is
|
||||||
enabled.
|
enabled.
|
||||||
|
* - 'Unknown: No mitigations'
|
||||||
|
- The processor vulnerability status is unknown because it is
|
||||||
|
out of Servicing period. Mitigation is not attempted.
|
||||||
|
|
||||||
|
Definitions:
|
||||||
|
------------
|
||||||
|
|
||||||
|
Servicing period: The process of providing functional and security updates to
|
||||||
|
Intel processors or platforms, utilizing the Intel Platform Update (IPU)
|
||||||
|
process or other similar mechanisms.
|
||||||
|
|
||||||
|
End of Servicing Updates (ESU): ESU is the date at which Intel will no
|
||||||
|
longer provide Servicing, such as through IPU or other similar update
|
||||||
|
processes. ESU dates will typically be aligned to end of quarter.
|
||||||
|
|
||||||
If the processor is vulnerable then the following information is appended to
|
If the processor is vulnerable then the following information is appended to
|
||||||
the above information:
|
the above information:
|
||||||
|
@ -422,6 +422,14 @@ The possible values in this file are:
|
|||||||
'RSB filling' Protection of RSB on context switch enabled
|
'RSB filling' Protection of RSB on context switch enabled
|
||||||
============= ===========================================
|
============= ===========================================
|
||||||
|
|
||||||
|
- EIBRS Post-barrier Return Stack Buffer (PBRSB) protection status:
|
||||||
|
|
||||||
|
=========================== =======================================================
|
||||||
|
'PBRSB-eIBRS: SW sequence' CPU is affected and protection of RSB on VMEXIT enabled
|
||||||
|
'PBRSB-eIBRS: Vulnerable' CPU is vulnerable
|
||||||
|
'PBRSB-eIBRS: Not affected' CPU is not affected by PBRSB
|
||||||
|
=========================== =======================================================
|
||||||
|
|
||||||
Full mitigation might require a microcode update from the CPU
|
Full mitigation might require a microcode update from the CPU
|
||||||
vendor. When the necessary microcode is not available, the kernel will
|
vendor. When the necessary microcode is not available, the kernel will
|
||||||
report vulnerability.
|
report vulnerability.
|
||||||
@ -471,8 +479,16 @@ Spectre variant 2
|
|||||||
On Intel Skylake-era systems the mitigation covers most, but not all,
|
On Intel Skylake-era systems the mitigation covers most, but not all,
|
||||||
cases. See :ref:`[3] <spec_ref3>` for more details.
|
cases. See :ref:`[3] <spec_ref3>` for more details.
|
||||||
|
|
||||||
On CPUs with hardware mitigation for Spectre variant 2 (e.g. Enhanced
|
On CPUs with hardware mitigation for Spectre variant 2 (e.g. IBRS
|
||||||
IBRS on x86), retpoline is automatically disabled at run time.
|
or enhanced IBRS on x86), retpoline is automatically disabled at run time.
|
||||||
|
|
||||||
|
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
|
||||||
|
boot, by setting the IBRS bit, and they're automatically protected against
|
||||||
|
Spectre v2 variant attacks, including cross-thread branch target injections
|
||||||
|
on SMT systems (STIBP). In other words, eIBRS enables STIBP too.
|
||||||
|
|
||||||
|
Legacy IBRS systems clear the IBRS bit on exit to userspace and
|
||||||
|
therefore explicitly enable STIBP for that
|
||||||
|
|
||||||
The retpoline mitigation is turned on by default on vulnerable
|
The retpoline mitigation is turned on by default on vulnerable
|
||||||
CPUs. It can be forced on or off by the administrator
|
CPUs. It can be forced on or off by the administrator
|
||||||
@ -496,9 +512,12 @@ Spectre variant 2
|
|||||||
For Spectre variant 2 mitigation, individual user programs
|
For Spectre variant 2 mitigation, individual user programs
|
||||||
can be compiled with return trampolines for indirect branches.
|
can be compiled with return trampolines for indirect branches.
|
||||||
This protects them from consuming poisoned entries in the branch
|
This protects them from consuming poisoned entries in the branch
|
||||||
target buffer left by malicious software. Alternatively, the
|
target buffer left by malicious software.
|
||||||
programs can disable their indirect branch speculation via prctl()
|
|
||||||
(See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
|
On legacy IBRS systems, at return to userspace, implicit STIBP is disabled
|
||||||
|
because the kernel clears the IBRS bit. In this case, the userspace programs
|
||||||
|
can disable indirect branch speculation via prctl() (See
|
||||||
|
:ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
|
||||||
On x86, this will turn on STIBP to guard against attacks from the
|
On x86, this will turn on STIBP to guard against attacks from the
|
||||||
sibling thread when the user program is running, and use IBPB to
|
sibling thread when the user program is running, and use IBPB to
|
||||||
flush the branch target buffer when switching to/from the program.
|
flush the branch target buffer when switching to/from the program.
|
||||||
|
@ -42,20 +42,18 @@ disclosure is from immediate (esp. if it's already publicly known)
|
|||||||
to a few weeks. As a basic default policy, we expect report date to
|
to a few weeks. As a basic default policy, we expect report date to
|
||||||
disclosure date to be on the order of 7 days.
|
disclosure date to be on the order of 7 days.
|
||||||
|
|
||||||
Coordination
|
Coordination with other groups
|
||||||
------------
|
------------------------------
|
||||||
|
|
||||||
Fixes for sensitive bugs, such as those that might lead to privilege
|
The kernel security team strongly recommends that reporters of potential
|
||||||
escalations, may need to be coordinated with the private
|
security issues NEVER contact the "linux-distros" mailing list until
|
||||||
<linux-distros@vs.openwall.org> mailing list so that distribution vendors
|
AFTER discussing it with the kernel security team. Do not Cc: both
|
||||||
are well prepared to issue a fixed kernel upon public disclosure of the
|
lists at once. You may contact the linux-distros mailing list after a
|
||||||
upstream fix. Distros will need some time to test the proposed patch and
|
fix has been agreed on and you fully understand the requirements that
|
||||||
will generally request at least a few days of embargo, and vendor update
|
doing so will impose on you and the kernel community.
|
||||||
publication prefers to happen Tuesday through Thursday. When appropriate,
|
|
||||||
the security team can assist with this coordination, or the reporter can
|
The different lists have different goals and the linux-distros rules do
|
||||||
include linux-distros from the start. In this case, remember to prefix
|
not contribute to actually fixing any potential security problems.
|
||||||
the email Subject line with "[vs]" as described in the linux-distros wiki:
|
|
||||||
<http://oss-security.openwall.org/wiki/mailing-lists/distros#how-to-use-the-lists>
|
|
||||||
|
|
||||||
CVE assignment
|
CVE assignment
|
||||||
--------------
|
--------------
|
||||||
|
@ -53,7 +53,9 @@ stable kernels.
|
|||||||
| ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 |
|
| ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 |
|
||||||
| ARM | Cortex-A57 | #852523 | N/A |
|
| ARM | Cortex-A57 | #852523 | N/A |
|
||||||
| ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 |
|
| ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 |
|
||||||
|
| ARM | Cortex-A57 | #1742098 | ARM64_ERRATUM_1742098 |
|
||||||
| ARM | Cortex-A72 | #853709 | N/A |
|
| ARM | Cortex-A72 | #853709 | N/A |
|
||||||
|
| ARM | Cortex-A72 | #1655431 | ARM64_ERRATUM_1742098 |
|
||||||
| ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 |
|
| ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 |
|
||||||
| ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 |
|
| ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 |
|
||||||
| ARM | Cortex-A76 | #1286807 | ARM64_ERRATUM_1286807 |
|
| ARM | Cortex-A76 | #1286807 | ARM64_ERRATUM_1286807 |
|
||||||
|
@ -39,6 +39,10 @@ Setup
|
|||||||
this mode. In this case, you should build the kernel with
|
this mode. In this case, you should build the kernel with
|
||||||
CONFIG_RANDOMIZE_BASE disabled if the architecture supports KASLR.
|
CONFIG_RANDOMIZE_BASE disabled if the architecture supports KASLR.
|
||||||
|
|
||||||
|
- Build the gdb scripts (required on kernels v5.1 and above)::
|
||||||
|
|
||||||
|
make scripts_gdb
|
||||||
|
|
||||||
- Enable the gdb stub of QEMU/KVM, either
|
- Enable the gdb stub of QEMU/KVM, either
|
||||||
|
|
||||||
- at VM startup time by appending "-s" to the QEMU command line
|
- at VM startup time by appending "-s" to the QEMU command line
|
||||||
|
@ -34,8 +34,8 @@ Example:
|
|||||||
Use specific request line passing from dma
|
Use specific request line passing from dma
|
||||||
For example, MMC request line is 5
|
For example, MMC request line is 5
|
||||||
|
|
||||||
sdhci: sdhci@98e00000 {
|
mmc: mmc@98e00000 {
|
||||||
compatible = "moxa,moxart-sdhci";
|
compatible = "moxa,moxart-mmc";
|
||||||
reg = <0x98e00000 0x5C>;
|
reg = <0x98e00000 0x5C>;
|
||||||
interrupts = <5 0>;
|
interrupts = <5 0>;
|
||||||
clocks = <&clk_apb>;
|
clocks = <&clk_apb>;
|
||||||
|
@ -25,8 +25,8 @@ hardware, which may be as simple as a set of GPIO pins or as complex as
|
|||||||
a pair of FIFOs connected to dual DMA engines on the other side of the
|
a pair of FIFOs connected to dual DMA engines on the other side of the
|
||||||
SPI shift register (maximizing throughput). Such drivers bridge between
|
SPI shift register (maximizing throughput). Such drivers bridge between
|
||||||
whatever bus they sit on (often the platform bus) and SPI, and expose
|
whatever bus they sit on (often the platform bus) and SPI, and expose
|
||||||
the SPI side of their device as a :c:type:`struct spi_master
|
the SPI side of their device as a :c:type:`struct spi_controller
|
||||||
<spi_master>`. SPI devices are children of that master,
|
<spi_controller>`. SPI devices are children of that master,
|
||||||
represented as a :c:type:`struct spi_device <spi_device>` and
|
represented as a :c:type:`struct spi_device <spi_device>` and
|
||||||
manufactured from :c:type:`struct spi_board_info
|
manufactured from :c:type:`struct spi_board_info
|
||||||
<spi_board_info>` descriptors which are usually provided by
|
<spi_board_info>` descriptors which are usually provided by
|
||||||
|
@ -290,7 +290,6 @@ Code Seq#(hex) Include File Comments
|
|||||||
0x89 00-06 arch/x86/include/asm/sockios.h
|
0x89 00-06 arch/x86/include/asm/sockios.h
|
||||||
0x89 0B-DF linux/sockios.h
|
0x89 0B-DF linux/sockios.h
|
||||||
0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range
|
0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range
|
||||||
0x89 E0-EF linux/dn.h PROTOPRIVATE range
|
|
||||||
0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
|
0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
|
||||||
0x8B all linux/wireless.h
|
0x8B all linux/wireless.h
|
||||||
0x8C 00-3F WiNRADiO driver
|
0x8C 00-3F WiNRADiO driver
|
||||||
|
@ -1,232 +0,0 @@
|
|||||||
Linux DECnet Networking Layer Information
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
1) Other documentation....
|
|
||||||
|
|
||||||
o Project Home Pages
|
|
||||||
http://www.chygwyn.com/ - Kernel info
|
|
||||||
http://linux-decnet.sourceforge.net/ - Userland tools
|
|
||||||
http://www.sourceforge.net/projects/linux-decnet/ - Status page
|
|
||||||
|
|
||||||
2) Configuring the kernel
|
|
||||||
|
|
||||||
Be sure to turn on the following options:
|
|
||||||
|
|
||||||
CONFIG_DECNET (obviously)
|
|
||||||
CONFIG_PROC_FS (to see what's going on)
|
|
||||||
CONFIG_SYSCTL (for easy configuration)
|
|
||||||
|
|
||||||
if you want to try out router support (not properly debugged yet)
|
|
||||||
you'll need the following options as well...
|
|
||||||
|
|
||||||
CONFIG_DECNET_ROUTER (to be able to add/delete routes)
|
|
||||||
CONFIG_NETFILTER (will be required for the DECnet routing daemon)
|
|
||||||
|
|
||||||
CONFIG_DECNET_ROUTE_FWMARK is optional
|
|
||||||
|
|
||||||
Don't turn on SIOCGIFCONF support for DECnet unless you are really sure
|
|
||||||
that you need it, in general you won't and it can cause ifconfig to
|
|
||||||
malfunction.
|
|
||||||
|
|
||||||
Run time configuration has changed slightly from the 2.4 system. If you
|
|
||||||
want to configure an endnode, then the simplified procedure is as follows:
|
|
||||||
|
|
||||||
o Set the MAC address on your ethernet card before starting _any_ other
|
|
||||||
network protocols.
|
|
||||||
|
|
||||||
As soon as your network card is brought into the UP state, DECnet should
|
|
||||||
start working. If you need something more complicated or are unsure how
|
|
||||||
to set the MAC address, see the next section. Also all configurations which
|
|
||||||
worked with 2.4 will work under 2.5 with no change.
|
|
||||||
|
|
||||||
3) Command line options
|
|
||||||
|
|
||||||
You can set a DECnet address on the kernel command line for compatibility
|
|
||||||
with the 2.4 configuration procedure, but in general it's not needed any more.
|
|
||||||
If you do st a DECnet address on the command line, it has only one purpose
|
|
||||||
which is that its added to the addresses on the loopback device.
|
|
||||||
|
|
||||||
With 2.4 kernels, DECnet would only recognise addresses as local if they
|
|
||||||
were added to the loopback device. In 2.5, any local interface address
|
|
||||||
can be used to loop back to the local machine. Of course this does not
|
|
||||||
prevent you adding further addresses to the loopback device if you
|
|
||||||
want to.
|
|
||||||
|
|
||||||
N.B. Since the address list of an interface determines the addresses for
|
|
||||||
which "hello" messages are sent, if you don't set an address on the loopback
|
|
||||||
interface then you won't see any entries in /proc/net/neigh for the local
|
|
||||||
host until such time as you start a connection. This doesn't affect the
|
|
||||||
operation of the local communications in any other way though.
|
|
||||||
|
|
||||||
The kernel command line takes options looking like the following:
|
|
||||||
|
|
||||||
decnet.addr=1,2
|
|
||||||
|
|
||||||
the two numbers are the node address 1,2 = 1.2 For 2.2.xx kernels
|
|
||||||
and early 2.3.xx kernels, you must use a comma when specifying the
|
|
||||||
DECnet address like this. For more recent 2.3.xx kernels, you may
|
|
||||||
use almost any character except space, although a `.` would be the most
|
|
||||||
obvious choice :-)
|
|
||||||
|
|
||||||
There used to be a third number specifying the node type. This option
|
|
||||||
has gone away in favour of a per interface node type. This is now set
|
|
||||||
using /proc/sys/net/decnet/conf/<dev>/forwarding. This file can be
|
|
||||||
set with a single digit, 0=EndNode, 1=L1 Router and 2=L2 Router.
|
|
||||||
|
|
||||||
There are also equivalent options for modules. The node address can
|
|
||||||
also be set through the /proc/sys/net/decnet/ files, as can other system
|
|
||||||
parameters.
|
|
||||||
|
|
||||||
Currently the only supported devices are ethernet and ip_gre. The
|
|
||||||
ethernet address of your ethernet card has to be set according to the DECnet
|
|
||||||
address of the node in order for it to be autoconfigured (and then appear in
|
|
||||||
/proc/net/decnet_dev). There is a utility available at the above
|
|
||||||
FTP sites called dn2ethaddr which can compute the correct ethernet
|
|
||||||
address to use. The address can be set by ifconfig either before or
|
|
||||||
at the time the device is brought up. If you are using RedHat you can
|
|
||||||
add the line:
|
|
||||||
|
|
||||||
MACADDR=AA:00:04:00:03:04
|
|
||||||
|
|
||||||
or something similar, to /etc/sysconfig/network-scripts/ifcfg-eth0 or
|
|
||||||
wherever your network card's configuration lives. Setting the MAC address
|
|
||||||
of your ethernet card to an address starting with "hi-ord" will cause a
|
|
||||||
DECnet address which matches to be added to the interface (which you can
|
|
||||||
verify with iproute2).
|
|
||||||
|
|
||||||
The default device for routing can be set through the /proc filesystem
|
|
||||||
by setting /proc/sys/net/decnet/default_device to the
|
|
||||||
device you want DECnet to route packets out of when no specific route
|
|
||||||
is available. Usually this will be eth0, for example:
|
|
||||||
|
|
||||||
echo -n "eth0" >/proc/sys/net/decnet/default_device
|
|
||||||
|
|
||||||
If you don't set the default device, then it will default to the first
|
|
||||||
ethernet card which has been autoconfigured as described above. You can
|
|
||||||
confirm that by looking in the default_device file of course.
|
|
||||||
|
|
||||||
There is a list of what the other files under /proc/sys/net/decnet/ do
|
|
||||||
on the kernel patch web site (shown above).
|
|
||||||
|
|
||||||
4) Run time kernel configuration
|
|
||||||
|
|
||||||
This is either done through the sysctl/proc interface (see the kernel web
|
|
||||||
pages for details on what the various options do) or through the iproute2
|
|
||||||
package in the same way as IPv4/6 configuration is performed.
|
|
||||||
|
|
||||||
Documentation for iproute2 is included with the package, although there is
|
|
||||||
as yet no specific section on DECnet, most of the features apply to both
|
|
||||||
IP and DECnet, albeit with DECnet addresses instead of IP addresses and
|
|
||||||
a reduced functionality.
|
|
||||||
|
|
||||||
If you want to configure a DECnet router you'll need the iproute2 package
|
|
||||||
since its the _only_ way to add and delete routes currently. Eventually
|
|
||||||
there will be a routing daemon to send and receive routing messages for
|
|
||||||
each interface and update the kernel routing tables accordingly. The
|
|
||||||
routing daemon will use netfilter to listen to routing packets, and
|
|
||||||
rtnetlink to update the kernels routing tables.
|
|
||||||
|
|
||||||
The DECnet raw socket layer has been removed since it was there purely
|
|
||||||
for use by the routing daemon which will now use netfilter (a much cleaner
|
|
||||||
and more generic solution) instead.
|
|
||||||
|
|
||||||
5) How can I tell if its working ?
|
|
||||||
|
|
||||||
Here is a quick guide of what to look for in order to know if your DECnet
|
|
||||||
kernel subsystem is working.
|
|
||||||
|
|
||||||
- Is the node address set (see /proc/sys/net/decnet/node_address)
|
|
||||||
- Is the node of the correct type
|
|
||||||
(see /proc/sys/net/decnet/conf/<dev>/forwarding)
|
|
||||||
- Is the Ethernet MAC address of each Ethernet card set to match
|
|
||||||
the DECnet address. If in doubt use the dn2ethaddr utility available
|
|
||||||
at the ftp archive.
|
|
||||||
- If the previous two steps are satisfied, and the Ethernet card is up,
|
|
||||||
you should find that it is listed in /proc/net/decnet_dev and also
|
|
||||||
that it appears as a directory in /proc/sys/net/decnet/conf/. The
|
|
||||||
loopback device (lo) should also appear and is required to communicate
|
|
||||||
within a node.
|
|
||||||
- If you have any DECnet routers on your network, they should appear
|
|
||||||
in /proc/net/decnet_neigh, otherwise this file will only contain the
|
|
||||||
entry for the node itself (if it doesn't check to see if lo is up).
|
|
||||||
- If you want to send to any node which is not listed in the
|
|
||||||
/proc/net/decnet_neigh file, you'll need to set the default device
|
|
||||||
to point to an Ethernet card with connection to a router. This is
|
|
||||||
again done with the /proc/sys/net/decnet/default_device file.
|
|
||||||
- Try starting a simple server and client, like the dnping/dnmirror
|
|
||||||
over the loopback interface. With luck they should communicate.
|
|
||||||
For this step and those after, you'll need the DECnet library
|
|
||||||
which can be obtained from the above ftp sites as well as the
|
|
||||||
actual utilities themselves.
|
|
||||||
- If this seems to work, then try talking to a node on your local
|
|
||||||
network, and see if you can obtain the same results.
|
|
||||||
- At this point you are on your own... :-)
|
|
||||||
|
|
||||||
6) How to send a bug report
|
|
||||||
|
|
||||||
If you've found a bug and want to report it, then there are several things
|
|
||||||
you can do to help me work out exactly what it is that is wrong. Useful
|
|
||||||
information (_most_ of which _is_ _essential_) includes:
|
|
||||||
|
|
||||||
- What kernel version are you running ?
|
|
||||||
- What version of the patch are you running ?
|
|
||||||
- How far though the above set of tests can you get ?
|
|
||||||
- What is in the /proc/decnet* files and /proc/sys/net/decnet/* files ?
|
|
||||||
- Which services are you running ?
|
|
||||||
- Which client caused the problem ?
|
|
||||||
- How much data was being transferred ?
|
|
||||||
- Was the network congested ?
|
|
||||||
- How can the problem be reproduced ?
|
|
||||||
- Can you use tcpdump to get a trace ? (N.B. Most (all?) versions of
|
|
||||||
tcpdump don't understand how to dump DECnet properly, so including
|
|
||||||
the hex listing of the packet contents is _essential_, usually the -x flag.
|
|
||||||
You may also need to increase the length grabbed with the -s flag. The
|
|
||||||
-e flag also provides very useful information (ethernet MAC addresses))
|
|
||||||
|
|
||||||
7) MAC FAQ
|
|
||||||
|
|
||||||
A quick FAQ on ethernet MAC addresses to explain how Linux and DECnet
|
|
||||||
interact and how to get the best performance from your hardware.
|
|
||||||
|
|
||||||
Ethernet cards are designed to normally only pass received network frames
|
|
||||||
to a host computer when they are addressed to it, or to the broadcast address.
|
|
||||||
|
|
||||||
Linux has an interface which allows the setting of extra addresses for
|
|
||||||
an ethernet card to listen to. If the ethernet card supports it, the
|
|
||||||
filtering operation will be done in hardware, if not the extra unwanted packets
|
|
||||||
received will be discarded by the host computer. In the latter case,
|
|
||||||
significant processor time and bus bandwidth can be used up on a busy
|
|
||||||
network (see the NAPI documentation for a longer explanation of these
|
|
||||||
effects).
|
|
||||||
|
|
||||||
DECnet makes use of this interface to allow running DECnet on an ethernet
|
|
||||||
card which has already been configured using TCP/IP (presumably using the
|
|
||||||
built in MAC address of the card, as usual) and/or to allow multiple DECnet
|
|
||||||
addresses on each physical interface. If you do this, be aware that if your
|
|
||||||
ethernet card doesn't support perfect hashing in its MAC address filter
|
|
||||||
then your computer will be doing more work than required. Some cards
|
|
||||||
will simply set themselves into promiscuous mode in order to receive
|
|
||||||
packets from the DECnet specified addresses. So if you have one of these
|
|
||||||
cards its better to set the MAC address of the card as described above
|
|
||||||
to gain the best efficiency. Better still is to use a card which supports
|
|
||||||
NAPI as well.
|
|
||||||
|
|
||||||
|
|
||||||
8) Mailing list
|
|
||||||
|
|
||||||
If you are keen to get involved in development, or want to ask questions
|
|
||||||
about configuration, or even just report bugs, then there is a mailing
|
|
||||||
list that you can join, details are at:
|
|
||||||
|
|
||||||
http://sourceforge.net/mail/?group_id=4993
|
|
||||||
|
|
||||||
9) Legal Info
|
|
||||||
|
|
||||||
The Linux DECnet project team have placed their code under the GPL. The
|
|
||||||
software is provided "as is" and without warranty express or implied.
|
|
||||||
DECnet is a trademark of Compaq. This software is not a product of
|
|
||||||
Compaq. We acknowledge the help of people at Compaq in providing extra
|
|
||||||
documentation above and beyond what was previously publicly available.
|
|
||||||
|
|
||||||
Steve Whitehouse <SteveW@ACM.org>
|
|
||||||
|
|
@ -429,7 +429,7 @@ ref
|
|||||||
no-jd
|
no-jd
|
||||||
BIOS setup but without jack-detection
|
BIOS setup but without jack-detection
|
||||||
intel
|
intel
|
||||||
Intel DG45* mobos
|
Intel D*45* mobos
|
||||||
dell-m6-amic
|
dell-m6-amic
|
||||||
Dell desktops/laptops with analog mics
|
Dell desktops/laptops with analog mics
|
||||||
dell-m6-dmic
|
dell-m6-dmic
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from sphinx.util.pycompat import execfile_
|
from sphinx.util.osutil import fs_encoding
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
def loadConfig(namespace):
|
def loadConfig(namespace):
|
||||||
@ -25,7 +25,9 @@ def loadConfig(namespace):
|
|||||||
sys.stdout.write("load additional sphinx-config: %s\n" % config_file)
|
sys.stdout.write("load additional sphinx-config: %s\n" % config_file)
|
||||||
config = namespace.copy()
|
config = namespace.copy()
|
||||||
config['__file__'] = config_file
|
config['__file__'] = config_file
|
||||||
execfile_(config_file, config)
|
with open(config_file, 'rb') as f:
|
||||||
|
code = compile(f.read(), fs_encoding, 'exec')
|
||||||
|
exec(code, config)
|
||||||
del config['__file__']
|
del config['__file__']
|
||||||
namespace.update(config)
|
namespace.update(config)
|
||||||
else:
|
else:
|
||||||
|
@ -50,6 +50,7 @@ show up in /proc/sys/kernel:
|
|||||||
- msgmnb
|
- msgmnb
|
||||||
- msgmni
|
- msgmni
|
||||||
- nmi_watchdog
|
- nmi_watchdog
|
||||||
|
- oops_limit
|
||||||
- osrelease
|
- osrelease
|
||||||
- ostype
|
- ostype
|
||||||
- overflowgid
|
- overflowgid
|
||||||
@ -95,6 +96,7 @@ show up in /proc/sys/kernel:
|
|||||||
- threads-max
|
- threads-max
|
||||||
- unprivileged_bpf_disabled
|
- unprivileged_bpf_disabled
|
||||||
- unknown_nmi_panic
|
- unknown_nmi_panic
|
||||||
|
- warn_limit
|
||||||
- watchdog
|
- watchdog
|
||||||
- watchdog_thresh
|
- watchdog_thresh
|
||||||
- version
|
- version
|
||||||
@ -540,6 +542,15 @@ scanned for a given scan.
|
|||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
oops_limit:
|
||||||
|
|
||||||
|
Number of kernel oopses after which the kernel should panic when
|
||||||
|
``panic_on_oops`` is not set. Setting this to 0 disables checking
|
||||||
|
the count. Setting this to 1 has the same effect as setting
|
||||||
|
``panic_on_oops=1``. The default value is 10000.
|
||||||
|
|
||||||
|
==============================================================
|
||||||
|
|
||||||
osrelease, ostype & version:
|
osrelease, ostype & version:
|
||||||
|
|
||||||
# cat osrelease
|
# cat osrelease
|
||||||
@ -1089,6 +1100,15 @@ example. If a system hangs up, try pressing the NMI switch.
|
|||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
warn_limit:
|
||||||
|
|
||||||
|
Number of kernel warnings after which the kernel should panic when
|
||||||
|
``panic_on_warn`` is not set. Setting this to 0 disables checking
|
||||||
|
the warning count. Setting this to 1 has the same effect as setting
|
||||||
|
``panic_on_warn=1``. The default value is 0.
|
||||||
|
|
||||||
|
==============================================================
|
||||||
|
|
||||||
watchdog:
|
watchdog:
|
||||||
|
|
||||||
This parameter can be used to disable or enable the soft lockup detector
|
This parameter can be used to disable or enable the soft lockup detector
|
||||||
|
@ -25,7 +25,6 @@ Table : Subdirectories in /proc/sys/net
|
|||||||
ethernet Ethernet protocol rose X.25 PLP layer
|
ethernet Ethernet protocol rose X.25 PLP layer
|
||||||
ipv4 IP version 4 x25 X.25 protocol
|
ipv4 IP version 4 x25 X.25 protocol
|
||||||
ipx IPX token-ring IBM token ring
|
ipx IPX token-ring IBM token ring
|
||||||
bridge Bridging decnet DEC net
|
|
||||||
ipv6 IP version 6 tipc TIPC
|
ipv6 IP version 6 tipc TIPC
|
||||||
..............................................................................
|
..............................................................................
|
||||||
|
|
||||||
|
@ -3957,13 +3957,6 @@ F: include/uapi/linux/dccp.h
|
|||||||
F: include/linux/tfrc.h
|
F: include/linux/tfrc.h
|
||||||
F: net/dccp/
|
F: net/dccp/
|
||||||
|
|
||||||
DECnet NETWORK LAYER
|
|
||||||
W: http://linux-decnet.sourceforge.net
|
|
||||||
L: linux-decnet-user@lists.sourceforge.net
|
|
||||||
S: Orphan
|
|
||||||
F: Documentation/networking/decnet.txt
|
|
||||||
F: net/decnet/
|
|
||||||
|
|
||||||
DECSTATION PLATFORM SUPPORT
|
DECSTATION PLATFORM SUPPORT
|
||||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||||
L: linux-mips@linux-mips.org
|
L: linux-mips@linux-mips.org
|
||||||
|
23
Makefile
23
Makefile
@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 14
|
PATCHLEVEL = 14
|
||||||
SUBLEVEL = 290
|
SUBLEVEL = 331
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Petit Gorille
|
NAME = Petit Gorille
|
||||||
|
|
||||||
@ -88,10 +88,17 @@ endif
|
|||||||
|
|
||||||
# If the user is running make -s (silent mode), suppress echoing of
|
# If the user is running make -s (silent mode), suppress echoing of
|
||||||
# commands
|
# commands
|
||||||
|
# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
|
||||||
|
|
||||||
ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
|
ifeq ($(filter 3.%,$(MAKE_VERSION)),)
|
||||||
quiet=silent_
|
silence:=$(findstring s,$(firstword -$(MAKEFLAGS)))
|
||||||
tools_silent=s
|
else
|
||||||
|
silence:=$(findstring s,$(filter-out --%,$(MAKEFLAGS)))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(silence),s)
|
||||||
|
quiet=silent_
|
||||||
|
tools_silent=s
|
||||||
endif
|
endif
|
||||||
|
|
||||||
export quiet Q KBUILD_VERBOSE
|
export quiet Q KBUILD_VERBOSE
|
||||||
@ -459,6 +466,7 @@ KBUILD_CFLAGS_KERNEL :=
|
|||||||
KBUILD_AFLAGS_MODULE := -DMODULE
|
KBUILD_AFLAGS_MODULE := -DMODULE
|
||||||
KBUILD_CFLAGS_MODULE := -DMODULE
|
KBUILD_CFLAGS_MODULE := -DMODULE
|
||||||
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
||||||
|
LDFLAGS :=
|
||||||
GCC_PLUGINS_CFLAGS :=
|
GCC_PLUGINS_CFLAGS :=
|
||||||
CLANG_FLAGS :=
|
CLANG_FLAGS :=
|
||||||
|
|
||||||
@ -819,6 +827,10 @@ LDFLAGS += -O3 --lto-O3
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
|
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
|
||||||
|
|
||||||
|
# These result in bogus false positives
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer)
|
||||||
|
|
||||||
ifdef CONFIG_FRAME_POINTER
|
ifdef CONFIG_FRAME_POINTER
|
||||||
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
||||||
else
|
else
|
||||||
@ -1033,6 +1045,9 @@ ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
|
|||||||
LDFLAGS_vmlinux += $(call ld-option, --gc-sections,)
|
LDFLAGS_vmlinux += $(call ld-option, --gc-sections,)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
LDFLAGS += -z noexecstack
|
||||||
|
LDFLAGS += $(call ld-option,--no-warn-rwx-segments)
|
||||||
|
|
||||||
ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
|
ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
|
||||||
LDFLAGS_vmlinux += $(call ld-option, -X,)
|
LDFLAGS_vmlinux += $(call ld-option, -X,)
|
||||||
endif
|
endif
|
||||||
|
@ -237,6 +237,9 @@ config ARCH_HAS_FORTIFY_SOURCE
|
|||||||
config ARCH_HAS_SET_MEMORY
|
config ARCH_HAS_SET_MEMORY
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config ARCH_HAS_CPU_FINALIZE_INIT
|
||||||
|
bool
|
||||||
|
|
||||||
# Select if arch init_task initializer is different to init/init_task.c
|
# Select if arch init_task initializer is different to init/init_task.c
|
||||||
config ARCH_INIT_TASK
|
config ARCH_INIT_TASK
|
||||||
bool
|
bool
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
/*
|
|
||||||
* include/asm-alpha/bugs.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 1994 Linus Torvalds
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is included by init/main.c to check for architecture-dependent bugs.
|
|
||||||
*
|
|
||||||
* Needs:
|
|
||||||
* void check_bugs(void);
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* I don't know of any alpha bugs yet.. Nice chip
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void check_bugs(void)
|
|
||||||
{
|
|
||||||
}
|
|
@ -469,8 +469,10 @@ entSys:
|
|||||||
#ifdef CONFIG_AUDITSYSCALL
|
#ifdef CONFIG_AUDITSYSCALL
|
||||||
lda $6, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
|
lda $6, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT
|
||||||
and $3, $6, $3
|
and $3, $6, $3
|
||||||
#endif
|
|
||||||
bne $3, strace
|
bne $3, strace
|
||||||
|
#else
|
||||||
|
blbs $3, strace /* check for SYSCALL_TRACE in disguise */
|
||||||
|
#endif
|
||||||
beq $4, 1f
|
beq $4, 1f
|
||||||
ldq $27, 0($5)
|
ldq $27, 0($5)
|
||||||
1: jsr $26, ($27), alpha_ni_syscall
|
1: jsr $26, ($27), alpha_ni_syscall
|
||||||
|
@ -158,10 +158,8 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
|
|||||||
base = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr;
|
base = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr;
|
||||||
symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr;
|
symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr;
|
||||||
|
|
||||||
/* The small sections were sorted to the end of the segment.
|
|
||||||
The following should definitely cover them. */
|
|
||||||
gp = (u64)me->core_layout.base + me->core_layout.size - 0x8000;
|
|
||||||
got = sechdrs[me->arch.gotsecindex].sh_addr;
|
got = sechdrs[me->arch.gotsecindex].sh_addr;
|
||||||
|
gp = got + 0x8000;
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
unsigned long r_sym = ELF64_R_SYM (rela[i].r_info);
|
unsigned long r_sym = ELF64_R_SYM (rela[i].r_info);
|
||||||
|
@ -469,8 +469,7 @@ setup_memory(void *kernel_end)
|
|||||||
extern void setup_memory(void *);
|
extern void setup_memory(void *);
|
||||||
#endif /* !CONFIG_DISCONTIGMEM */
|
#endif /* !CONFIG_DISCONTIGMEM */
|
||||||
|
|
||||||
int __init
|
int page_is_ram(unsigned long pfn)
|
||||||
page_is_ram(unsigned long pfn)
|
|
||||||
{
|
{
|
||||||
struct memclust_struct * cluster;
|
struct memclust_struct * cluster;
|
||||||
struct memdesc_struct * memdesc;
|
struct memdesc_struct * memdesc;
|
||||||
|
@ -192,7 +192,7 @@ die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15)
|
|||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_MATHEMU
|
#ifndef CONFIG_MATHEMU
|
||||||
@ -241,7 +241,21 @@ do_entIF(unsigned long type, struct pt_regs *regs)
|
|||||||
siginfo_t info;
|
siginfo_t info;
|
||||||
int signo, code;
|
int signo, code;
|
||||||
|
|
||||||
if ((regs->ps & ~IPL_MAX) == 0) {
|
if (type == 3) { /* FEN fault */
|
||||||
|
/* Irritating users can call PAL_clrfen to disable the
|
||||||
|
FPU for the process. The kernel will then trap in
|
||||||
|
do_switch_stack and undo_switch_stack when we try
|
||||||
|
to save and restore the FP registers.
|
||||||
|
|
||||||
|
Given that GCC by default generates code that uses the
|
||||||
|
FP registers, PAL_clrfen is not useful except for DoS
|
||||||
|
attacks. So turn the bleeding FPU back on and be done
|
||||||
|
with it. */
|
||||||
|
current_thread_info()->pcb.flags |= 1;
|
||||||
|
__reload_thread(¤t_thread_info()->pcb);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!user_mode(regs)) {
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
const unsigned int *data
|
const unsigned int *data
|
||||||
= (const unsigned int *) regs->pc;
|
= (const unsigned int *) regs->pc;
|
||||||
@ -390,20 +404,6 @@ do_entIF(unsigned long type, struct pt_regs *regs)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: /* FEN fault */
|
|
||||||
/* Irritating users can call PAL_clrfen to disable the
|
|
||||||
FPU for the process. The kernel will then trap in
|
|
||||||
do_switch_stack and undo_switch_stack when we try
|
|
||||||
to save and restore the FP registers.
|
|
||||||
|
|
||||||
Given that GCC by default generates code that uses the
|
|
||||||
FP registers, PAL_clrfen is not useful except for DoS
|
|
||||||
attacks. So turn the bleeding FPU back on and be done
|
|
||||||
with it. */
|
|
||||||
current_thread_info()->pcb.flags |= 1;
|
|
||||||
__reload_thread(¤t_thread_info()->pcb);
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 5: /* illoc */
|
case 5: /* illoc */
|
||||||
default: /* unexpected instruction-fault type */
|
default: /* unexpected instruction-fault type */
|
||||||
;
|
;
|
||||||
@ -609,7 +609,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,
|
|||||||
|
|
||||||
printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n",
|
printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n",
|
||||||
pc, va, opcode, reg);
|
pc, va, opcode, reg);
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
|
|
||||||
got_exception:
|
got_exception:
|
||||||
/* Ok, we caught the exception, but we don't want it. Is there
|
/* Ok, we caught the exception, but we don't want it. Is there
|
||||||
@ -664,7 +664,7 @@ got_exception:
|
|||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
do_exit(SIGSEGV);
|
make_task_dead(SIGSEGV);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -206,7 +206,7 @@ retry:
|
|||||||
printk(KERN_ALERT "Unable to handle kernel paging request at "
|
printk(KERN_ALERT "Unable to handle kernel paging request at "
|
||||||
"virtual address %016lx\n", address);
|
"virtual address %016lx\n", address);
|
||||||
die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16);
|
die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16);
|
||||||
do_exit(SIGKILL);
|
make_task_dead(SIGKILL);
|
||||||
|
|
||||||
/* We ran out of memory, or some other thing happened to us that
|
/* We ran out of memory, or some other thing happened to us that
|
||||||
made us unable to handle the page fault gracefully. */
|
made us unable to handle the page fault gracefully. */
|
||||||
|
@ -35,7 +35,7 @@ static inline void ioport_unmap(void __iomem *addr)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void iounmap(const void __iomem *addr);
|
extern void iounmap(const volatile void __iomem *addr);
|
||||||
|
|
||||||
#define ioremap_nocache(phy, sz) ioremap(phy, sz)
|
#define ioremap_nocache(phy, sz) ioremap(phy, sz)
|
||||||
#define ioremap_wc(phy, sz) ioremap(phy, sz)
|
#define ioremap_wc(phy, sz) ioremap(phy, sz)
|
||||||
|
@ -95,7 +95,7 @@ void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size,
|
|||||||
EXPORT_SYMBOL(ioremap_prot);
|
EXPORT_SYMBOL(ioremap_prot);
|
||||||
|
|
||||||
|
|
||||||
void iounmap(const void __iomem *addr)
|
void iounmap(const volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
/* weird double cast to handle phys_addr_t > 32 bits */
|
/* weird double cast to handle phys_addr_t > 32 bits */
|
||||||
if (arc_uncached_addr_space((phys_addr_t)(u32)addr))
|
if (arc_uncached_addr_space((phys_addr_t)(u32)addr))
|
||||||
|
@ -3,6 +3,7 @@ config ARM
|
|||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
select ARCH_CLOCKSOURCE_DATA
|
select ARCH_CLOCKSOURCE_DATA
|
||||||
|
select ARCH_HAS_CPU_FINALIZE_INIT if MMU
|
||||||
select ARCH_HAS_DEBUG_VIRTUAL
|
select ARCH_HAS_DEBUG_VIRTUAL
|
||||||
select ARCH_HAS_DEVMEM_IS_ALLOWED
|
select ARCH_HAS_DEVMEM_IS_ALLOWED
|
||||||
select ARCH_HAS_ELF_RANDOMIZE
|
select ARCH_HAS_ELF_RANDOMIZE
|
||||||
@ -64,7 +65,7 @@ config ARM
|
|||||||
select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU
|
select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU
|
||||||
select HAVE_EXIT_THREAD
|
select HAVE_EXIT_THREAD
|
||||||
select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
|
select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
|
||||||
select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL)
|
select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL && !CC_IS_CLANG)
|
||||||
select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
|
select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
|
||||||
select HAVE_FUTEX_CMPXCHG if FUTEX
|
select HAVE_FUTEX_CMPXCHG if FUTEX
|
||||||
select HAVE_GCC_PLUGINS
|
select HAVE_GCC_PLUGINS
|
||||||
@ -2053,7 +2054,6 @@ config CMDLINE
|
|||||||
choice
|
choice
|
||||||
prompt "Kernel command line type" if CMDLINE != ""
|
prompt "Kernel command line type" if CMDLINE != ""
|
||||||
default CMDLINE_FROM_BOOTLOADER
|
default CMDLINE_FROM_BOOTLOADER
|
||||||
depends on ATAGS
|
|
||||||
|
|
||||||
config CMDLINE_FROM_BOOTLOADER
|
config CMDLINE_FROM_BOOTLOADER
|
||||||
bool "Use bootloader kernel arguments if available"
|
bool "Use bootloader kernel arguments if available"
|
||||||
|
@ -18,8 +18,8 @@ config ARM_PTDUMP
|
|||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Choose kernel unwinder"
|
prompt "Choose kernel unwinder"
|
||||||
default UNWINDER_ARM if AEABI && !FUNCTION_GRAPH_TRACER
|
default UNWINDER_ARM if AEABI
|
||||||
default UNWINDER_FRAME_POINTER if !AEABI || FUNCTION_GRAPH_TRACER
|
default UNWINDER_FRAME_POINTER if !AEABI
|
||||||
help
|
help
|
||||||
This determines which method will be used for unwinding kernel stack
|
This determines which method will be used for unwinding kernel stack
|
||||||
traces for panics, oopses, bugs, warnings, perf, /proc/<pid>/stack,
|
traces for panics, oopses, bugs, warnings, perf, /proc/<pid>/stack,
|
||||||
@ -36,7 +36,7 @@ config UNWINDER_FRAME_POINTER
|
|||||||
|
|
||||||
config UNWINDER_ARM
|
config UNWINDER_ARM
|
||||||
bool "ARM EABI stack unwinder"
|
bool "ARM EABI stack unwinder"
|
||||||
depends on AEABI
|
depends on AEABI && !FUNCTION_GRAPH_TRACER
|
||||||
select ARM_UNWIND
|
select ARM_UNWIND
|
||||||
help
|
help
|
||||||
This option enables stack unwinding support in the kernel
|
This option enables stack unwinding support in the kernel
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
* size immediately following the kernel, we could build this into
|
* size immediately following the kernel, we could build this into
|
||||||
* a binary blob, and concatenate the zImage using the cat command.
|
* a binary blob, and concatenate the zImage using the cat command.
|
||||||
*/
|
*/
|
||||||
.section .start,#alloc,#execinstr
|
.section .start, "ax"
|
||||||
.type _start, #function
|
.type _start, #function
|
||||||
.globl _start
|
.globl _start
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* Author: Nicolas Pitre
|
* Author: Nicolas Pitre
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.section ".start", #alloc, #execinstr
|
.section ".start", "ax"
|
||||||
|
|
||||||
mrc p15, 0, r0, c1, c0, 0 @ read control reg
|
mrc p15, 0, r0, c1, c0, 0 @ read control reg
|
||||||
orr r0, r0, #(1 << 7) @ enable big endian mode
|
orr r0, r0, #(1 << 7) @ enable big endian mode
|
||||||
|
@ -114,7 +114,7 @@
|
|||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.section ".start", #alloc, #execinstr
|
.section ".start", "ax"
|
||||||
/*
|
/*
|
||||||
* sort out different calling conventions
|
* sort out different calling conventions
|
||||||
*/
|
*/
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
.section .piggydata,#alloc
|
.section .piggydata, "a"
|
||||||
.globl input_data
|
.globl input_data
|
||||||
input_data:
|
input_data:
|
||||||
.incbin "arch/arm/boot/compressed/piggy_data"
|
.incbin "arch/arm/boot/compressed/piggy_data"
|
||||||
|
@ -15,22 +15,20 @@
|
|||||||
compatible = "phytec,am335x-pcm-953", "phytec,am335x-phycore-som", "ti,am33xx";
|
compatible = "phytec,am335x-pcm-953", "phytec,am335x-phycore-som", "ti,am33xx";
|
||||||
|
|
||||||
/* Power */
|
/* Power */
|
||||||
regulators {
|
vcc3v3: fixedregulator1 {
|
||||||
vcc3v3: fixedregulator@1 {
|
compatible = "regulator-fixed";
|
||||||
compatible = "regulator-fixed";
|
regulator-name = "vcc3v3";
|
||||||
regulator-name = "vcc3v3";
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-boot-on;
|
||||||
regulator-boot-on;
|
};
|
||||||
};
|
|
||||||
|
|
||||||
vcc1v8: fixedregulator@2 {
|
vcc1v8: fixedregulator2 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vcc1v8";
|
regulator-name = "vcc1v8";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* User IO */
|
/* User IO */
|
||||||
|
@ -111,7 +111,7 @@
|
|||||||
|
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x80000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@ -621,7 +621,7 @@
|
|||||||
|
|
||||||
pcie1: pcie@2,0 {
|
pcie1: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@ -116,7 +116,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@2,0 {
|
pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x40000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -135,7 +135,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@3,0 {
|
pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@ -55,6 +55,12 @@
|
|||||||
stdout-path = &uart0;
|
stdout-path = &uart0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
ethernet0 = ð0;
|
||||||
|
ethernet1 = ð1;
|
||||||
|
ethernet2 = ð2;
|
||||||
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x40000000>; /* 1024 MB */
|
reg = <0x00000000 0x40000000>; /* 1024 MB */
|
||||||
@ -324,7 +330,17 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* port 6 is connected to eth0 */
|
ports@6 {
|
||||||
|
reg = <6>;
|
||||||
|
label = "cpu";
|
||||||
|
ethernet = <ð0>;
|
||||||
|
phy-mode = "rgmii-id";
|
||||||
|
|
||||||
|
fixed-link {
|
||||||
|
speed = <1000>;
|
||||||
|
full-duplex;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -340,7 +356,7 @@
|
|||||||
marvell,function = "spi0";
|
marvell,function = "spi0";
|
||||||
};
|
};
|
||||||
|
|
||||||
spi0cs1_pins: spi0cs1-pins {
|
spi0cs2_pins: spi0cs2-pins {
|
||||||
marvell,pins = "mpp26";
|
marvell,pins = "mpp26";
|
||||||
marvell,function = "spi0";
|
marvell,function = "spi0";
|
||||||
};
|
};
|
||||||
@ -375,7 +391,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* MISO, MOSI, SCLK and CS1 are routed to pin header CN11 */
|
/* MISO, MOSI, SCLK and CS2 are routed to pin header CN11 */
|
||||||
};
|
};
|
||||||
|
|
||||||
&uart0 {
|
&uart0 {
|
||||||
|
@ -121,7 +121,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x40000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -140,7 +140,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie3: pcie@3,0 {
|
pcie3: pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -162,7 +162,7 @@
|
|||||||
*/
|
*/
|
||||||
pcie4: pcie@4,0 {
|
pcie4: pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x48000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@ -493,7 +493,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@2,0 {
|
pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x40000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -512,7 +512,7 @@
|
|||||||
/* x1 port */
|
/* x1 port */
|
||||||
pcie@3,0 {
|
pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -534,7 +534,7 @@
|
|||||||
*/
|
*/
|
||||||
pcie@4,0 {
|
pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x48000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@ -134,7 +134,7 @@
|
|||||||
|
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -152,7 +152,7 @@
|
|||||||
|
|
||||||
pcie3: pcie@3,0 {
|
pcie3: pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -170,7 +170,7 @@
|
|||||||
|
|
||||||
pcie4: pcie@4,0 {
|
pcie4: pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -188,7 +188,7 @@
|
|||||||
|
|
||||||
pcie5: pcie@5,0 {
|
pcie5: pcie@5,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
||||||
reg = <0x2800 0 0 0 0>;
|
reg = <0x2800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@ -149,7 +149,7 @@
|
|||||||
|
|
||||||
pcie2: pcie@2,0 {
|
pcie2: pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -167,7 +167,7 @@
|
|||||||
|
|
||||||
pcie3: pcie@3,0 {
|
pcie3: pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -185,7 +185,7 @@
|
|||||||
|
|
||||||
pcie4: pcie@4,0 {
|
pcie4: pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -203,7 +203,7 @@
|
|||||||
|
|
||||||
pcie5: pcie@5,0 {
|
pcie5: pcie@5,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
||||||
reg = <0x2800 0 0 0 0>;
|
reg = <0x2800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -221,7 +221,7 @@
|
|||||||
|
|
||||||
pcie6: pcie@6,0 {
|
pcie6: pcie@6,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x84000 0 0x2000>;
|
assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
|
||||||
reg = <0x3000 0 0 0 0>;
|
reg = <0x3000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -239,7 +239,7 @@
|
|||||||
|
|
||||||
pcie7: pcie@7,0 {
|
pcie7: pcie@7,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x88000 0 0x2000>;
|
assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
|
||||||
reg = <0x3800 0 0 0 0>;
|
reg = <0x3800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -257,7 +257,7 @@
|
|||||||
|
|
||||||
pcie8: pcie@8,0 {
|
pcie8: pcie@8,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x8c000 0 0x2000>;
|
assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
|
||||||
reg = <0x4000 0 0 0 0>;
|
reg = <0x4000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
@ -275,7 +275,7 @@
|
|||||||
|
|
||||||
pcie9: pcie@9,0 {
|
pcie9: pcie@9,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0x42000 0 0x2000>;
|
assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
|
||||||
reg = <0x4800 0 0 0 0>;
|
reg = <0x4800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "AST2500 EVB";
|
model = "AST2500 EVB";
|
||||||
compatible = "aspeed,ast2500";
|
compatible = "aspeed,ast2500-evb", "aspeed,ast2500";
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
serial4 = &uart5;
|
serial4 = &uart5;
|
||||||
|
@ -39,6 +39,13 @@
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
usb1 {
|
||||||
|
pinctrl_usb1_vbus_gpio: usb1_vbus_gpio {
|
||||||
|
atmel,pins =
|
||||||
|
<AT91_PIOC 5 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PC5 GPIO */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
mmc0_slot1 {
|
mmc0_slot1 {
|
||||||
pinctrl_board_mmc0_slot1: mmc0_slot1-board {
|
pinctrl_board_mmc0_slot1: mmc0_slot1-board {
|
||||||
atmel,pins =
|
atmel,pins =
|
||||||
@ -72,6 +79,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
usb1: gadget@fffa4000 {
|
usb1: gadget@fffa4000 {
|
||||||
|
pinctrl-0 = <&pinctrl_usb1_vbus_gpio>;
|
||||||
|
pinctrl-names = "default";
|
||||||
atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
|
atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -449,7 +449,6 @@
|
|||||||
"spi_lr_session_done",
|
"spi_lr_session_done",
|
||||||
"spi_lr_overread";
|
"spi_lr_overread";
|
||||||
clocks = <&iprocmed>;
|
clocks = <&iprocmed>;
|
||||||
clock-names = "iprocmed";
|
|
||||||
num-cs = <2>;
|
num-cs = <2>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -119,6 +119,9 @@
|
|||||||
|
|
||||||
pcie0: pcie@2000 {
|
pcie0: pcie@2000 {
|
||||||
reg = <0x00002000 0x1000>;
|
reg = <0x00002000 0x1000>;
|
||||||
|
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
usb2: usb2@4000 {
|
usb2: usb2@4000 {
|
||||||
|
@ -129,7 +129,7 @@
|
|||||||
pcie1: pcie@2 {
|
pcie1: pcie@2 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x80000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
clocks = <&gate_clk 5>;
|
clocks = <&gate_clk 5>;
|
||||||
marvell,pcie-port = <1>;
|
marvell,pcie-port = <1>;
|
||||||
|
@ -258,7 +258,7 @@
|
|||||||
i80-if-timings {
|
i80-if-timings {
|
||||||
cs-setup = <0>;
|
cs-setup = <0>;
|
||||||
wr-setup = <0>;
|
wr-setup = <0>;
|
||||||
wr-act = <1>;
|
wr-active = <1>;
|
||||||
wr-hold = <0>;
|
wr-hold = <0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
/ {
|
/ {
|
||||||
thermal-zones {
|
thermal-zones {
|
||||||
cpu_thermal: cpu-thermal {
|
cpu_thermal: cpu-thermal {
|
||||||
thermal-sensors = <&tmu 0>;
|
thermal-sensors = <&tmu>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
trips {
|
trips {
|
||||||
|
@ -187,7 +187,7 @@
|
|||||||
compatible = "wlf,wm8960";
|
compatible = "wlf,wm8960";
|
||||||
reg = <0x1a>;
|
reg = <0x1a>;
|
||||||
clocks = <&pmu_system_controller 0>;
|
clocks = <&pmu_system_controller 0>;
|
||||||
clock-names = "MCLK1";
|
clock-names = "mclk";
|
||||||
wlf,shared-lrclk;
|
wlf,shared-lrclk;
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
};
|
};
|
||||||
|
@ -90,7 +90,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&ehci {
|
&ehci {
|
||||||
samsung,vbus-gpio = <&gpx3 5 1>;
|
samsung,vbus-gpio = <&gpx3 5 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
port@1{
|
port@1{
|
||||||
|
@ -116,7 +116,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&cpu0_thermal {
|
&cpu0_thermal {
|
||||||
thermal-sensors = <&tmu_cpu0 0>;
|
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
|
|
||||||
|
@ -536,7 +536,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mipi_phy: mipi-video-phy {
|
mipi_phy: mipi-video-phy {
|
||||||
compatible = "samsung,s5pv210-mipi-video-phy";
|
compatible = "samsung,exynos5420-mipi-video-phy";
|
||||||
syscon = <&pmu_system_controller>;
|
syscon = <&pmu_system_controller>;
|
||||||
#phy-cells = <1>;
|
#phy-cells = <1>;
|
||||||
};
|
};
|
||||||
|
@ -63,6 +63,9 @@
|
|||||||
ocram: sram@00900000 {
|
ocram: sram@00900000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00900000 0x20000>;
|
reg = <0x00900000 0x20000>;
|
||||||
|
ranges = <0 0x00900000 0x20000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -82,6 +82,9 @@
|
|||||||
ocram: sram@00900000 {
|
ocram: sram@00900000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00900000 0x40000>;
|
reg = <0x00900000 0x40000>;
|
||||||
|
ranges = <0 0x00900000 0x40000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -462,7 +462,6 @@
|
|||||||
&uart1 {
|
&uart1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_uart1>;
|
pinctrl-0 = <&pinctrl_uart1>;
|
||||||
uart-has-rtscts;
|
|
||||||
rts-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
rts-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -47,12 +47,18 @@
|
|||||||
ocram2: sram@00940000 {
|
ocram2: sram@00940000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00940000 0x20000>;
|
reg = <0x00940000 0x20000>;
|
||||||
|
ranges = <0 0x00940000 0x20000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
ocram3: sram@00960000 {
|
ocram3: sram@00960000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00960000 0x20000>;
|
reg = <0x00960000 0x20000>;
|
||||||
|
ranges = <0 0x00960000 0x20000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
clocks = <&clks IMX6QDL_CLK_OCRAM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -112,6 +112,9 @@
|
|||||||
ocram: sram@00900000 {
|
ocram: sram@00900000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00900000 0x20000>;
|
reg = <0x00900000 0x20000>;
|
||||||
|
ranges = <0 0x00900000 0x20000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
clocks = <&clks IMX6SL_CLK_OCRAM>;
|
clocks = <&clks IMX6SL_CLK_OCRAM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -152,6 +152,9 @@
|
|||||||
ocram: sram@00900000 {
|
ocram: sram@00900000 {
|
||||||
compatible = "mmio-sram";
|
compatible = "mmio-sram";
|
||||||
reg = <0x00900000 0x20000>;
|
reg = <0x00900000 0x20000>;
|
||||||
|
ranges = <0 0x00900000 0x20000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
dma_apbh: dma-apbh@01804000 {
|
dma_apbh: dma-apbh@01804000 {
|
||||||
@ -880,7 +883,7 @@
|
|||||||
qspi: qspi@021e0000 {
|
qspi: qspi@021e0000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
compatible = "fsl,imx6ul-qspi", "fsl,imx6sx-qspi";
|
compatible = "fsl,imx6ul-qspi";
|
||||||
reg = <0x021e0000 0x4000>, <0x60000000 0x10000000>;
|
reg = <0x021e0000 0x4000>, <0x60000000 0x10000000>;
|
||||||
reg-names = "QuadSPI", "QuadSPI-memory";
|
reg-names = "QuadSPI", "QuadSPI-memory";
|
||||||
interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -179,12 +179,7 @@
|
|||||||
interrupt-parent = <&gpio2>;
|
interrupt-parent = <&gpio2>;
|
||||||
interrupts = <29 0>;
|
interrupts = <29 0>;
|
||||||
pendown-gpio = <&gpio2 29 GPIO_ACTIVE_HIGH>;
|
pendown-gpio = <&gpio2 29 GPIO_ACTIVE_HIGH>;
|
||||||
ti,x-min = /bits/ 16 <0>;
|
touchscreen-max-pressure = <255>;
|
||||||
ti,x-max = /bits/ 16 <0>;
|
|
||||||
ti,y-min = /bits/ 16 <0>;
|
|
||||||
ti,y-max = /bits/ 16 <0>;
|
|
||||||
ti,pressure-max = /bits/ 16 <0>;
|
|
||||||
ti,x-plate-ohms = /bits/ 16 <400>;
|
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -10,6 +10,11 @@
|
|||||||
|
|
||||||
ocp@f1000000 {
|
ocp@f1000000 {
|
||||||
pinctrl: pin-controller@10000 {
|
pinctrl: pin-controller@10000 {
|
||||||
|
/* Non-default UART pins */
|
||||||
|
pmx_uart0: pmx-uart0 {
|
||||||
|
marvell,pins = "mpp4", "mpp5";
|
||||||
|
};
|
||||||
|
|
||||||
pmx_power_hdd: pmx-power-hdd {
|
pmx_power_hdd: pmx-power-hdd {
|
||||||
marvell,pins = "mpp10";
|
marvell,pins = "mpp10";
|
||||||
marvell,function = "gpo";
|
marvell,function = "gpo";
|
||||||
@ -213,22 +218,11 @@
|
|||||||
&mdio {
|
&mdio {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
ethphy0: ethernet-phy@0 {
|
|
||||||
reg = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ethphy1: ethernet-phy@8 {
|
ethphy1: ethernet-phy@8 {
|
||||||
reg = <8>;
|
reg = <8>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ð0 {
|
|
||||||
status = "okay";
|
|
||||||
ethernet0-port@0 {
|
|
||||||
phy-handle = <ðphy0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
ð1 {
|
ð1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
ethernet1-port@0 {
|
ethernet1-port@0 {
|
||||||
|
@ -80,7 +80,7 @@
|
|||||||
clocks = <&ref12>;
|
clocks = <&ref12>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdhci {
|
&mmc {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -93,8 +93,8 @@
|
|||||||
clock-names = "PCLK";
|
clock-names = "PCLK";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci: sdhci@98e00000 {
|
mmc: mmc@98e00000 {
|
||||||
compatible = "moxa,moxart-sdhci";
|
compatible = "moxa,moxart-mmc";
|
||||||
reg = <0x98e00000 0x5C>;
|
reg = <0x98e00000 0x5C>;
|
||||||
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clk_apb>;
|
clocks = <&clk_apb>;
|
||||||
|
@ -533,6 +533,7 @@
|
|||||||
&uart3 {
|
&uart3 {
|
||||||
interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
|
interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
|
||||||
&omap4_pmx_core 0x17c>;
|
&omap4_pmx_core 0x17c>;
|
||||||
|
overrun-throttle-ms = <500>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&uart4 {
|
&uart4 {
|
||||||
|
@ -1534,7 +1534,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
etb@1a01000 {
|
etb@1a01000 {
|
||||||
compatible = "coresight-etb10", "arm,primecell";
|
compatible = "arm,coresight-etb10", "arm,primecell";
|
||||||
reg = <0x1a01000 0x1000>;
|
reg = <0x1a01000 0x1000>;
|
||||||
|
|
||||||
clocks = <&rpmcc RPM_QDSS_CLK>;
|
clocks = <&rpmcc RPM_QDSS_CLK>;
|
||||||
|
@ -82,14 +82,12 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
regulators {
|
vsdcc_fixed: vsdcc-regulator {
|
||||||
vsdcc_fixed: vsdcc-regulator {
|
compatible = "regulator-fixed";
|
||||||
compatible = "regulator-fixed";
|
regulator-name = "SDCC Power";
|
||||||
regulator-name = "SDCC Power";
|
regulator-min-microvolt = <2700000>;
|
||||||
regulator-min-microvolt = <2700000>;
|
regulator-max-microvolt = <2700000>;
|
||||||
regulator-max-microvolt = <2700000>;
|
regulator-always-on;
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
soc: soc {
|
soc: soc {
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
compatible = "qcom,spmi-temp-alarm";
|
compatible = "qcom,spmi-temp-alarm";
|
||||||
reg = <0x2400>;
|
reg = <0x2400>;
|
||||||
interrupts = <4 0x24 0 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <4 0x24 0 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
#thermal-sensor-cells = <0>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
&i2c1 {
|
&i2c1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
hym8563: hym8563@51 {
|
hym8563: rtc@51 {
|
||||||
compatible = "haoyu,hym8563";
|
compatible = "haoyu,hym8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
|
@ -104,7 +104,7 @@
|
|||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
ir_recv: gpio-ir-receiver {
|
ir_recv: ir-receiver {
|
||||||
compatible = "gpio-ir-receiver";
|
compatible = "gpio-ir-receiver";
|
||||||
gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -546,7 +546,6 @@
|
|||||||
|
|
||||||
&global_timer {
|
&global_timer {
|
||||||
interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
|
interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
|
||||||
status = "disabled";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&local_timer {
|
&local_timer {
|
||||||
|
@ -91,7 +91,7 @@
|
|||||||
vin-supply = <&vcc_sys>;
|
vin-supply = <&vcc_sys>;
|
||||||
};
|
};
|
||||||
|
|
||||||
hym8563@51 {
|
rtc@51 {
|
||||||
compatible = "haoyu,hym8563";
|
compatible = "haoyu,hym8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@
|
|||||||
vin-supply = <&vcc_sys>;
|
vin-supply = <&vcc_sys>;
|
||||||
};
|
};
|
||||||
|
|
||||||
hym8563: hym8563@51 {
|
hym8563: rtc@51 {
|
||||||
compatible = "haoyu,hym8563";
|
compatible = "haoyu,hym8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
|
@ -183,7 +183,7 @@
|
|||||||
vin-supply = <&vcc_sys>;
|
vin-supply = <&vcc_sys>;
|
||||||
};
|
};
|
||||||
|
|
||||||
hym8563: hym8563@51 {
|
hym8563: rtc@51 {
|
||||||
compatible = "haoyu,hym8563";
|
compatible = "haoyu,hym8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
|
@ -177,7 +177,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c0 {
|
&i2c0 {
|
||||||
hym8563: hym8563@51 {
|
hym8563: rtc@51 {
|
||||||
compatible = "haoyu,hym8563";
|
compatible = "haoyu,hym8563";
|
||||||
reg = <0x51>;
|
reg = <0x51>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
|
@ -910,7 +910,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
spdif: sound@ff88b0000 {
|
spdif: sound@ff8b0000 {
|
||||||
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
|
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
|
||||||
reg = <0x0 0xff8b0000 0x0 0x10000>;
|
reg = <0x0 0xff8b0000 0x0 0x10000>;
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
@ -1096,6 +1096,7 @@
|
|||||||
clock-names = "dp", "pclk";
|
clock-names = "dp", "pclk";
|
||||||
phys = <&edp_phy>;
|
phys = <&edp_phy>;
|
||||||
phy-names = "dp";
|
phy-names = "dp";
|
||||||
|
power-domains = <&power RK3288_PD_VIO>;
|
||||||
resets = <&cru SRST_EDP>;
|
resets = <&cru SRST_EDP>;
|
||||||
reset-names = "dp";
|
reset-names = "dp";
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
|
@ -134,6 +134,13 @@
|
|||||||
reg = <0x1013c200 0x20>;
|
reg = <0x1013c200 0x20>;
|
||||||
interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
|
interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
|
||||||
clocks = <&cru CORE_PERI>;
|
clocks = <&cru CORE_PERI>;
|
||||||
|
status = "disabled";
|
||||||
|
/* The clock source and the sched_clock provided by the arm_global_timer
|
||||||
|
* on Rockchip rk3066a/rk3188 are quite unstable because their rates
|
||||||
|
* depend on the CPU frequency.
|
||||||
|
* Keep the arm_global_timer disabled in order to have the
|
||||||
|
* DW_APB_TIMER (rk3066a) or ROCKCHIP_TIMER (rk3188) selected by default.
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
local_timer: local-timer@1013c600 {
|
local_timer: local-timer@1013c600 {
|
||||||
|
@ -61,7 +61,7 @@
|
|||||||
|
|
||||||
ethernet@18000000 {
|
ethernet@18000000 {
|
||||||
compatible = "davicom,dm9000";
|
compatible = "davicom,dm9000";
|
||||||
reg = <0x18000000 0x2 0x18000004 0x2>;
|
reg = <0x18000000 0x2>, <0x18000004 0x2>;
|
||||||
interrupt-parent = <&gpn>;
|
interrupt-parent = <&gpn>;
|
||||||
interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
davicom,no-eeprom;
|
davicom,no-eeprom;
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
ethernet@18000000 {
|
ethernet@18000000 {
|
||||||
compatible = "davicom,dm9000";
|
compatible = "davicom,dm9000";
|
||||||
reg = <0xA8000000 0x2 0xA8000002 0x2>;
|
reg = <0xa8000000 0x2>, <0xa8000002 0x2>;
|
||||||
interrupt-parent = <&gph1>;
|
interrupt-parent = <&gph1>;
|
||||||
interrupts = <1 4>;
|
interrupts = <1 4>;
|
||||||
local-mac-address = [00 00 de ad be ef];
|
local-mac-address = [00 00 de ad be ef];
|
||||||
|
@ -563,7 +563,7 @@
|
|||||||
interrupts = <29>;
|
interrupts = <29>;
|
||||||
clocks = <&clocks CLK_CSIS>,
|
clocks = <&clocks CLK_CSIS>,
|
||||||
<&clocks SCLK_CSIS>;
|
<&clocks SCLK_CSIS>;
|
||||||
clock-names = "clk_csis",
|
clock-names = "csis",
|
||||||
"sclk_csis";
|
"sclk_csis";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -248,7 +248,7 @@
|
|||||||
irq-trigger = <0x1>;
|
irq-trigger = <0x1>;
|
||||||
|
|
||||||
stmpegpio: stmpe-gpio {
|
stmpegpio: stmpe-gpio {
|
||||||
compatible = "stmpe,gpio";
|
compatible = "st,stmpe-gpio";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
compatible = "arm,pl110", "arm,primecell";
|
compatible = "arm,pl110", "arm,primecell";
|
||||||
reg = <0xfc200000 0x1000>;
|
reg = <0xfc200000 0x1000>;
|
||||||
interrupt-parent = <&vic1>;
|
interrupt-parent = <&vic1>;
|
||||||
interrupts = <12>;
|
interrupts = <13>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -117,6 +117,7 @@
|
|||||||
reg = <0x2c0f0000 0x1000>;
|
reg = <0x2c0f0000 0x1000>;
|
||||||
interrupts = <0 84 4>;
|
interrupts = <0 84 4>;
|
||||||
cache-level = <2>;
|
cache-level = <2>;
|
||||||
|
cache-unified;
|
||||||
};
|
};
|
||||||
|
|
||||||
pmu {
|
pmu {
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* arch/arm/include/asm/bugs.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 1995-2003 Russell King
|
* Copyright (C) 1995-2003 Russell King
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -13,10 +11,8 @@
|
|||||||
extern void check_writebuffer_bugs(void);
|
extern void check_writebuffer_bugs(void);
|
||||||
|
|
||||||
#ifdef CONFIG_MMU
|
#ifdef CONFIG_MMU
|
||||||
extern void check_bugs(void);
|
|
||||||
extern void check_other_bugs(void);
|
extern void check_other_bugs(void);
|
||||||
#else
|
#else
|
||||||
#define check_bugs() do { } while (0)
|
|
||||||
#define check_other_bugs() do { } while (0)
|
#define check_other_bugs() do { } while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -22,12 +22,6 @@
|
|||||||
#include <mach/memory.h>
|
#include <mach/memory.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* Allow for constants defined here to be used from assembly code
|
|
||||||
* by prepending the UL suffix only with actual C code compilation.
|
|
||||||
*/
|
|
||||||
#define UL(x) _AC(x, UL)
|
|
||||||
|
|
||||||
/* PAGE_OFFSET - the virtual address of the start of the kernel image */
|
/* PAGE_OFFSET - the virtual address of the start of the kernel image */
|
||||||
#define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET)
|
#define PAGE_OFFSET UL(CONFIG_PAGE_OFFSET)
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ extern unsigned long perf_misc_flags(struct pt_regs *regs);
|
|||||||
|
|
||||||
#define perf_arch_fetch_caller_regs(regs, __ip) { \
|
#define perf_arch_fetch_caller_regs(regs, __ip) { \
|
||||||
(regs)->ARM_pc = (__ip); \
|
(regs)->ARM_pc = (__ip); \
|
||||||
(regs)->ARM_fp = (unsigned long) __builtin_frame_address(0); \
|
frame_pointer((regs)) = (unsigned long) __builtin_frame_address(0); \
|
||||||
(regs)->ARM_sp = current_stack_pointer; \
|
(regs)->ARM_sp = current_stack_pointer; \
|
||||||
(regs)->ARM_cpsr = SVC_MODE; \
|
(regs)->ARM_cpsr = SVC_MODE; \
|
||||||
}
|
}
|
||||||
|
@ -54,12 +54,6 @@
|
|||||||
|
|
||||||
typedef pte_t *pte_addr_t;
|
typedef pte_t *pte_addr_t;
|
||||||
|
|
||||||
/*
|
|
||||||
* ZERO_PAGE is a global shared page that is always zero: used
|
|
||||||
* for zero-mapped memory areas etc..
|
|
||||||
*/
|
|
||||||
#define ZERO_PAGE(vaddr) (virt_to_page(0))
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mark the prot value as uncacheable and unbufferable.
|
* Mark the prot value as uncacheable and unbufferable.
|
||||||
*/
|
*/
|
||||||
|
@ -13,6 +13,15 @@
|
|||||||
#include <linux/const.h>
|
#include <linux/const.h>
|
||||||
#include <asm/proc-fns.h>
|
#include <asm/proc-fns.h>
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
/*
|
||||||
|
* ZERO_PAGE is a global shared page that is always zero: used
|
||||||
|
* for zero-mapped memory areas etc..
|
||||||
|
*/
|
||||||
|
extern struct page *empty_zero_page;
|
||||||
|
#define ZERO_PAGE(vaddr) (empty_zero_page)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_MMU
|
#ifndef CONFIG_MMU
|
||||||
|
|
||||||
#include <asm-generic/4level-fixup.h>
|
#include <asm-generic/4level-fixup.h>
|
||||||
@ -166,13 +175,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
|
|||||||
#define __S111 __PAGE_SHARED_EXEC
|
#define __S111 __PAGE_SHARED_EXEC
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
/*
|
|
||||||
* ZERO_PAGE is a global shared page that is always zero: used
|
|
||||||
* for zero-mapped memory areas etc..
|
|
||||||
*/
|
|
||||||
extern struct page *empty_zero_page;
|
|
||||||
#define ZERO_PAGE(vaddr) (empty_zero_page)
|
|
||||||
|
|
||||||
|
|
||||||
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
|
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
// SPDX-Identifier: GPL-2.0
|
// SPDX-Identifier: GPL-2.0
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/cpu.h>
|
||||||
#include <asm/bugs.h>
|
#include <asm/bugs.h>
|
||||||
#include <asm/proc-fns.h>
|
#include <asm/proc-fns.h>
|
||||||
|
|
||||||
@ -11,7 +12,7 @@ void check_other_bugs(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init check_bugs(void)
|
void __init arch_cpu_finalize_init(void)
|
||||||
{
|
{
|
||||||
check_writebuffer_bugs();
|
check_writebuffer_bugs();
|
||||||
check_other_bugs();
|
check_other_bugs();
|
||||||
|
@ -643,7 +643,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
|
|||||||
info->address &= ~alignment_mask;
|
info->address &= ~alignment_mask;
|
||||||
info->ctrl.len <<= offset;
|
info->ctrl.len <<= offset;
|
||||||
|
|
||||||
if (is_default_overflow_handler(bp)) {
|
if (uses_default_overflow_handler(bp)) {
|
||||||
/*
|
/*
|
||||||
* Mismatch breakpoints are required for single-stepping
|
* Mismatch breakpoints are required for single-stepping
|
||||||
* breakpoints.
|
* breakpoints.
|
||||||
@ -815,7 +815,7 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr,
|
|||||||
* Otherwise, insert a temporary mismatch breakpoint so that
|
* Otherwise, insert a temporary mismatch breakpoint so that
|
||||||
* we can single-step over the watchpoint trigger.
|
* we can single-step over the watchpoint trigger.
|
||||||
*/
|
*/
|
||||||
if (!is_default_overflow_handler(wp))
|
if (!uses_default_overflow_handler(wp))
|
||||||
continue;
|
continue;
|
||||||
step:
|
step:
|
||||||
enable_single_step(wp, instruction_pointer(regs));
|
enable_single_step(wp, instruction_pointer(regs));
|
||||||
@ -828,7 +828,7 @@ step:
|
|||||||
info->trigger = addr;
|
info->trigger = addr;
|
||||||
pr_debug("watchpoint fired: address = 0x%x\n", info->trigger);
|
pr_debug("watchpoint fired: address = 0x%x\n", info->trigger);
|
||||||
perf_bp_event(wp, regs);
|
perf_bp_event(wp, regs);
|
||||||
if (is_default_overflow_handler(wp))
|
if (uses_default_overflow_handler(wp))
|
||||||
enable_single_step(wp, instruction_pointer(regs));
|
enable_single_step(wp, instruction_pointer(regs));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -903,7 +903,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs)
|
|||||||
info->trigger = addr;
|
info->trigger = addr;
|
||||||
pr_debug("breakpoint fired: address = 0x%x\n", addr);
|
pr_debug("breakpoint fired: address = 0x%x\n", addr);
|
||||||
perf_bp_event(bp, regs);
|
perf_bp_event(bp, regs);
|
||||||
if (is_default_overflow_handler(bp))
|
if (uses_default_overflow_handler(bp))
|
||||||
enable_single_step(bp, addr);
|
enable_single_step(bp, addr);
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
@ -343,7 +343,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)
|
|||||||
if (panic_on_oops)
|
if (panic_on_oops)
|
||||||
panic("Fatal exception");
|
panic("Fatal exception");
|
||||||
if (signr)
|
if (signr)
|
||||||
do_exit(signr);
|
make_task_dead(signr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -313,6 +313,29 @@ static int unwind_exec_pop_subset_r0_to_r3(struct unwind_ctrl_block *ctrl,
|
|||||||
return URC_OK;
|
return URC_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned long unwind_decode_uleb128(struct unwind_ctrl_block *ctrl)
|
||||||
|
{
|
||||||
|
unsigned long bytes = 0;
|
||||||
|
unsigned long insn;
|
||||||
|
unsigned long result = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* unwind_get_byte() will advance `ctrl` one instruction at a time, so
|
||||||
|
* loop until we get an instruction byte where bit 7 is not set.
|
||||||
|
*
|
||||||
|
* Note: This decodes a maximum of 4 bytes to output 28 bits data where
|
||||||
|
* max is 0xfffffff: that will cover a vsp increment of 1073742336, hence
|
||||||
|
* it is sufficient for unwinding the stack.
|
||||||
|
*/
|
||||||
|
do {
|
||||||
|
insn = unwind_get_byte(ctrl);
|
||||||
|
result |= (insn & 0x7f) << (bytes * 7);
|
||||||
|
bytes++;
|
||||||
|
} while (!!(insn & 0x80) && (bytes != sizeof(result)));
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Execute the current unwind instruction.
|
* Execute the current unwind instruction.
|
||||||
*/
|
*/
|
||||||
@ -366,7 +389,7 @@ static int unwind_exec_insn(struct unwind_ctrl_block *ctrl)
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto error;
|
goto error;
|
||||||
} else if (insn == 0xb2) {
|
} else if (insn == 0xb2) {
|
||||||
unsigned long uleb128 = unwind_get_byte(ctrl);
|
unsigned long uleb128 = unwind_decode_uleb128(ctrl);
|
||||||
|
|
||||||
ctrl->vrs[SP] += 0x204 + (uleb128 << 2);
|
ctrl->vrs[SP] += 0x204 + (uleb128 << 2);
|
||||||
} else {
|
} else {
|
||||||
|
@ -43,8 +43,8 @@ ENDPROC(_find_first_zero_bit_le)
|
|||||||
* Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
|
* Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
|
||||||
*/
|
*/
|
||||||
ENTRY(_find_next_zero_bit_le)
|
ENTRY(_find_next_zero_bit_le)
|
||||||
teq r1, #0
|
cmp r2, r1
|
||||||
beq 3b
|
bhs 3b
|
||||||
ands ip, r2, #7
|
ands ip, r2, #7
|
||||||
beq 1b @ If new byte, goto old routine
|
beq 1b @ If new byte, goto old routine
|
||||||
ARM( ldrb r3, [r0, r2, lsr #3] )
|
ARM( ldrb r3, [r0, r2, lsr #3] )
|
||||||
@ -84,8 +84,8 @@ ENDPROC(_find_first_bit_le)
|
|||||||
* Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
|
* Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
|
||||||
*/
|
*/
|
||||||
ENTRY(_find_next_bit_le)
|
ENTRY(_find_next_bit_le)
|
||||||
teq r1, #0
|
cmp r2, r1
|
||||||
beq 3b
|
bhs 3b
|
||||||
ands ip, r2, #7
|
ands ip, r2, #7
|
||||||
beq 1b @ If new byte, goto old routine
|
beq 1b @ If new byte, goto old routine
|
||||||
ARM( ldrb r3, [r0, r2, lsr #3] )
|
ARM( ldrb r3, [r0, r2, lsr #3] )
|
||||||
@ -118,8 +118,8 @@ ENTRY(_find_first_zero_bit_be)
|
|||||||
ENDPROC(_find_first_zero_bit_be)
|
ENDPROC(_find_first_zero_bit_be)
|
||||||
|
|
||||||
ENTRY(_find_next_zero_bit_be)
|
ENTRY(_find_next_zero_bit_be)
|
||||||
teq r1, #0
|
cmp r2, r1
|
||||||
beq 3b
|
bhs 3b
|
||||||
ands ip, r2, #7
|
ands ip, r2, #7
|
||||||
beq 1b @ If new byte, goto old routine
|
beq 1b @ If new byte, goto old routine
|
||||||
eor r3, r2, #0x18 @ big endian byte ordering
|
eor r3, r2, #0x18 @ big endian byte ordering
|
||||||
@ -152,8 +152,8 @@ ENTRY(_find_first_bit_be)
|
|||||||
ENDPROC(_find_first_bit_be)
|
ENDPROC(_find_first_bit_be)
|
||||||
|
|
||||||
ENTRY(_find_next_bit_be)
|
ENTRY(_find_next_bit_be)
|
||||||
teq r1, #0
|
cmp r2, r1
|
||||||
beq 3b
|
bhs 3b
|
||||||
ands ip, r2, #7
|
ands ip, r2, #7
|
||||||
beq 1b @ If new byte, goto old routine
|
beq 1b @ If new byte, goto old routine
|
||||||
eor r3, r2, #0x18 @ big endian byte ordering
|
eor r3, r2, #0x18 @ big endian byte ordering
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
ENTRY(mmioset)
|
ENTRY(mmioset)
|
||||||
ENTRY(memset)
|
ENTRY(memset)
|
||||||
UNWIND( .fnstart )
|
UNWIND( .fnstart )
|
||||||
|
and r1, r1, #255 @ cast to unsigned char
|
||||||
ands r3, r0, #3 @ 1 unaligned?
|
ands r3, r0, #3 @ 1 unaligned?
|
||||||
mov ip, r0 @ preserve r0 as return value
|
mov ip, r0 @ preserve r0 as return value
|
||||||
bne 6f @ 1
|
bne 6f @ 1
|
||||||
|
@ -29,8 +29,9 @@ MODULE_LICENSE("GPL");
|
|||||||
* While older versions of GCC do not generate incorrect code, they fail to
|
* While older versions of GCC do not generate incorrect code, they fail to
|
||||||
* recognize the parallel nature of these functions, and emit plain ARM code,
|
* recognize the parallel nature of these functions, and emit plain ARM code,
|
||||||
* which is known to be slower than the optimized ARM code in asm-arm/xor.h.
|
* which is known to be slower than the optimized ARM code in asm-arm/xor.h.
|
||||||
|
*
|
||||||
|
* #warning This code requires at least version 4.6 of GCC
|
||||||
*/
|
*/
|
||||||
#warning This code requires at least version 4.6 of GCC
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#pragma GCC diagnostic ignored "-Wunused-variable"
|
#pragma GCC diagnostic ignored "-Wunused-variable"
|
||||||
|
@ -54,6 +54,7 @@ int __init bcm_kona_smc_init(void)
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
prop_val = of_get_address(node, 0, &prop_size, NULL);
|
prop_val = of_get_address(node, 0, &prop_size, NULL);
|
||||||
|
of_node_put(node);
|
||||||
if (!prop_val)
|
if (!prop_val)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@ -52,18 +52,21 @@
|
|||||||
static void __iomem *mmp_timer_base = TIMERS_VIRT_BASE;
|
static void __iomem *mmp_timer_base = TIMERS_VIRT_BASE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: the timer needs some delay to stablize the counter capture
|
* Read the timer through the CVWR register. Delay is required after requesting
|
||||||
|
* a read. The CR register cannot be directly read due to metastability issues
|
||||||
|
* documented in the PXA168 software manual.
|
||||||
*/
|
*/
|
||||||
static inline uint32_t timer_read(void)
|
static inline uint32_t timer_read(void)
|
||||||
{
|
{
|
||||||
int delay = 100;
|
uint32_t val;
|
||||||
|
int delay = 3;
|
||||||
|
|
||||||
__raw_writel(1, mmp_timer_base + TMR_CVWR(1));
|
__raw_writel(1, mmp_timer_base + TMR_CVWR(1));
|
||||||
|
|
||||||
while (delay--)
|
while (delay--)
|
||||||
cpu_relax();
|
val = __raw_readl(mmp_timer_base + TMR_CVWR(1));
|
||||||
|
|
||||||
return __raw_readl(mmp_timer_base + TMR_CVWR(1));
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u64 notrace mmp_read_sched_clock(void)
|
static u64 notrace mmp_read_sched_clock(void)
|
||||||
|
@ -393,8 +393,10 @@ static void __init mxs_machine_init(void)
|
|||||||
|
|
||||||
root = of_find_node_by_path("/");
|
root = of_find_node_by_path("/");
|
||||||
ret = of_property_read_string(root, "model", &soc_dev_attr->machine);
|
ret = of_property_read_string(root, "model", &soc_dev_attr->machine);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
kfree(soc_dev_attr);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
soc_dev_attr->family = "Freescale MXS Family";
|
soc_dev_attr->family = "Freescale MXS Family";
|
||||||
soc_dev_attr->soc_id = mxs_get_soc_id();
|
soc_dev_attr->soc_id = mxs_get_soc_id();
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user