You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'powerpc-4.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux
Pull powerpc updates from Michael Ellerman: - Numerous minor fixes, cleanups etc. - More EEH work from Gavin to remove its dependency on device_nodes. - Memory hotplug implemented entirely in the kernel from Nathan Fontenot. - Removal of redundant CONFIG_PPC_OF by Kevin Hao. - Rewrite of VPHN parsing logic & tests from Greg Kurz. - A fix from Nish Aravamudan to reduce memory usage by clamping nodes_possible_map. - Support for pstore on powernv from Hari Bathini. - Removal of old powerpc specific byte swap routines by David Gibson. - Fix from Vasant Hegde to prevent the flash driver telling you it was flashing your firmware when it wasn't. - Patch from Ben Herrenschmidt to add an OPAL heartbeat driver. - Fix for an oops causing get/put_cpu_var() imbalance in perf by Jan Stancek. - Some fixes for migration from Tyrel Datwyler. - A new syscall to switch the cpu endian by Michael Ellerman. - Large series from Wei Yang to implement SRIOV, reviewed and acked by Bjorn. - A fix for the OPAL sensor driver from Cédric Le Goater. - Fixes to get STRICT_MM_TYPECHECKS building again by Michael Ellerman. - Large series from Daniel Axtens to make our PCI hooks per PHB rather than per machine. - Small patch from Sam Bobroff to explicitly abort non-suspended transactions on syscalls, plus a test to exercise it. - Numerous reworks and fixes for the 24x7 PMU from Sukadev Bhattiprolu. - Small patch to enable the hard lockup detector from Anton Blanchard. - Fix from Dave Olson for missing L2 cache information on some CPUs. - Some fixes from Michael Ellerman to get Cell machines booting again. - Freescale updates from Scott: Highlights include BMan device tree nodes, an MSI erratum workaround, a couple minor performance improvements, config updates, and misc fixes/cleanup. * tag 'powerpc-4.1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux: (196 commits) powerpc/powermac: Fix build error seen with powermac smp builds powerpc/pseries: Fix compile of memory hotplug without CONFIG_MEMORY_HOTREMOVE powerpc: Remove PPC32 code from pseries specific find_and_init_phbs() powerpc/cell: Fix iommu breakage caused by controller_ops change powerpc/eeh: Fix crash in eeh_add_device_early() on Cell powerpc/perf: Cap 64bit userspace backtraces to PERF_MAX_STACK_DEPTH powerpc/perf/hv-24x7: Fail 24x7 initcall if create_events_from_catalog() fails powerpc/pseries: Correct memory hotplug locking powerpc: Fix missing L2 cache size in /sys/devices/system/cpu powerpc: Add ppc64 hard lockup detector support oprofile: Disable oprofile NMI timer on ppc64 powerpc/perf/hv-24x7: Add missing put_cpu_var() powerpc/perf/hv-24x7: Break up single_24x7_request powerpc/perf/hv-24x7: Define update_event_count() powerpc/perf/hv-24x7: Whitespace cleanup powerpc/perf/hv-24x7: Define add_event_to_24x7_request() powerpc/perf/hv-24x7: Rename hv_24x7_event_update powerpc/perf/hv-24x7: Move debug prints to separate function powerpc/perf/hv-24x7: Drop event_24x7_request() powerpc/perf/hv-24x7: Use pr_devel() to log message ... Conflicts: tools/testing/selftests/powerpc/Makefile tools/testing/selftests/powerpc/tm/Makefile
This commit is contained in:
@@ -100,7 +100,7 @@ Description: read only
|
||||
Hexadecimal value of the device ID found in this AFU
|
||||
configuration record.
|
||||
|
||||
What: /sys/class/cxl/<afu>/cr<config num>/vendor
|
||||
What: /sys/class/cxl/<afu>/cr<config num>/class
|
||||
Date: February 2015
|
||||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read only
|
||||
|
||||
@@ -0,0 +1,301 @@
|
||||
Wei Yang <weiyang@linux.vnet.ibm.com>
|
||||
Benjamin Herrenschmidt <benh@au1.ibm.com>
|
||||
Bjorn Helgaas <bhelgaas@google.com>
|
||||
26 Aug 2014
|
||||
|
||||
This document describes the requirement from hardware for PCI MMIO resource
|
||||
sizing and assignment on PowerKVM and how generic PCI code handles this
|
||||
requirement. The first two sections describe the concepts of Partitionable
|
||||
Endpoints and the implementation on P8 (IODA2). The next two sections talks
|
||||
about considerations on enabling SRIOV on IODA2.
|
||||
|
||||
1. Introduction to Partitionable Endpoints
|
||||
|
||||
A Partitionable Endpoint (PE) is a way to group the various resources
|
||||
associated with a device or a set of devices to provide isolation between
|
||||
partitions (i.e., filtering of DMA, MSIs etc.) and to provide a mechanism
|
||||
to freeze a device that is causing errors in order to limit the possibility
|
||||
of propagation of bad data.
|
||||
|
||||
There is thus, in HW, a table of PE states that contains a pair of "frozen"
|
||||
state bits (one for MMIO and one for DMA, they get set together but can be
|
||||
cleared independently) for each PE.
|
||||
|
||||
When a PE is frozen, all stores in any direction are dropped and all loads
|
||||
return all 1's value. MSIs are also blocked. There's a bit more state that
|
||||
captures things like the details of the error that caused the freeze etc., but
|
||||
that's not critical.
|
||||
|
||||
The interesting part is how the various PCIe transactions (MMIO, DMA, ...)
|
||||
are matched to their corresponding PEs.
|
||||
|
||||
The following section provides a rough description of what we have on P8
|
||||
(IODA2). Keep in mind that this is all per PHB (PCI host bridge). Each PHB
|
||||
is a completely separate HW entity that replicates the entire logic, so has
|
||||
its own set of PEs, etc.
|
||||
|
||||
2. Implementation of Partitionable Endpoints on P8 (IODA2)
|
||||
|
||||
P8 supports up to 256 Partitionable Endpoints per PHB.
|
||||
|
||||
* Inbound
|
||||
|
||||
For DMA, MSIs and inbound PCIe error messages, we have a table (in
|
||||
memory but accessed in HW by the chip) that provides a direct
|
||||
correspondence between a PCIe RID (bus/dev/fn) with a PE number.
|
||||
We call this the RTT.
|
||||
|
||||
- For DMA we then provide an entire address space for each PE that can
|
||||
contain two "windows", depending on the value of PCI address bit 59.
|
||||
Each window can be configured to be remapped via a "TCE table" (IOMMU
|
||||
translation table), which has various configurable characteristics
|
||||
not described here.
|
||||
|
||||
- For MSIs, we have two windows in the address space (one at the top of
|
||||
the 32-bit space and one much higher) which, via a combination of the
|
||||
address and MSI value, will result in one of the 2048 interrupts per
|
||||
bridge being triggered. There's a PE# in the interrupt controller
|
||||
descriptor table as well which is compared with the PE# obtained from
|
||||
the RTT to "authorize" the device to emit that specific interrupt.
|
||||
|
||||
- Error messages just use the RTT.
|
||||
|
||||
* Outbound. That's where the tricky part is.
|
||||
|
||||
Like other PCI host bridges, the Power8 IODA2 PHB supports "windows"
|
||||
from the CPU address space to the PCI address space. There is one M32
|
||||
window and sixteen M64 windows. They have different characteristics.
|
||||
First what they have in common: they forward a configurable portion of
|
||||
the CPU address space to the PCIe bus and must be naturally aligned
|
||||
power of two in size. The rest is different:
|
||||
|
||||
- The M32 window:
|
||||
|
||||
* Is limited to 4GB in size.
|
||||
|
||||
* Drops the top bits of the address (above the size) and replaces
|
||||
them with a configurable value. This is typically used to generate
|
||||
32-bit PCIe accesses. We configure that window at boot from FW and
|
||||
don't touch it from Linux; it's usually set to forward a 2GB
|
||||
portion of address space from the CPU to PCIe
|
||||
0x8000_0000..0xffff_ffff. (Note: The top 64KB are actually
|
||||
reserved for MSIs but this is not a problem at this point; we just
|
||||
need to ensure Linux doesn't assign anything there, the M32 logic
|
||||
ignores that however and will forward in that space if we try).
|
||||
|
||||
* It is divided into 256 segments of equal size. A table in the chip
|
||||
maps each segment to a PE#. That allows portions of the MMIO space
|
||||
to be assigned to PEs on a segment granularity. For a 2GB window,
|
||||
the segment granularity is 2GB/256 = 8MB.
|
||||
|
||||
Now, this is the "main" window we use in Linux today (excluding
|
||||
SR-IOV). We basically use the trick of forcing the bridge MMIO windows
|
||||
onto a segment alignment/granularity so that the space behind a bridge
|
||||
can be assigned to a PE.
|
||||
|
||||
Ideally we would like to be able to have individual functions in PEs
|
||||
but that would mean using a completely different address allocation
|
||||
scheme where individual function BARs can be "grouped" to fit in one or
|
||||
more segments.
|
||||
|
||||
- The M64 windows:
|
||||
|
||||
* Must be at least 256MB in size.
|
||||
|
||||
* Do not translate addresses (the address on PCIe is the same as the
|
||||
address on the PowerBus). There is a way to also set the top 14
|
||||
bits which are not conveyed by PowerBus but we don't use this.
|
||||
|
||||
* Can be configured to be segmented. When not segmented, we can
|
||||
specify the PE# for the entire window. When segmented, a window
|
||||
has 256 segments; however, there is no table for mapping a segment
|
||||
to a PE#. The segment number *is* the PE#.
|
||||
|
||||
* Support overlaps. If an address is covered by multiple windows,
|
||||
there's a defined ordering for which window applies.
|
||||
|
||||
We have code (fairly new compared to the M32 stuff) that exploits that
|
||||
for large BARs in 64-bit space:
|
||||
|
||||
We configure an M64 window to cover the entire region of address space
|
||||
that has been assigned by FW for the PHB (about 64GB, ignore the space
|
||||
for the M32, it comes out of a different "reserve"). We configure it
|
||||
as segmented.
|
||||
|
||||
Then we do the same thing as with M32, using the bridge alignment
|
||||
trick, to match to those giant segments.
|
||||
|
||||
Since we cannot remap, we have two additional constraints:
|
||||
|
||||
- We do the PE# allocation *after* the 64-bit space has been assigned
|
||||
because the addresses we use directly determine the PE#. We then
|
||||
update the M32 PE# for the devices that use both 32-bit and 64-bit
|
||||
spaces or assign the remaining PE# to 32-bit only devices.
|
||||
|
||||
- We cannot "group" segments in HW, so if a device ends up using more
|
||||
than one segment, we end up with more than one PE#. There is a HW
|
||||
mechanism to make the freeze state cascade to "companion" PEs but
|
||||
that only works for PCIe error messages (typically used so that if
|
||||
you freeze a switch, it freezes all its children). So we do it in
|
||||
SW. We lose a bit of effectiveness of EEH in that case, but that's
|
||||
the best we found. So when any of the PEs freezes, we freeze the
|
||||
other ones for that "domain". We thus introduce the concept of
|
||||
"master PE" which is the one used for DMA, MSIs, etc., and "secondary
|
||||
PEs" that are used for the remaining M64 segments.
|
||||
|
||||
We would like to investigate using additional M64 windows in "single
|
||||
PE" mode to overlay over specific BARs to work around some of that, for
|
||||
example for devices with very large BARs, e.g., GPUs. It would make
|
||||
sense, but we haven't done it yet.
|
||||
|
||||
3. Considerations for SR-IOV on PowerKVM
|
||||
|
||||
* SR-IOV Background
|
||||
|
||||
The PCIe SR-IOV feature allows a single Physical Function (PF) to
|
||||
support several Virtual Functions (VFs). Registers in the PF's SR-IOV
|
||||
Capability control the number of VFs and whether they are enabled.
|
||||
|
||||
When VFs are enabled, they appear in Configuration Space like normal
|
||||
PCI devices, but the BARs in VF config space headers are unusual. For
|
||||
a non-VF device, software uses BARs in the config space header to
|
||||
discover the BAR sizes and assign addresses for them. For VF devices,
|
||||
software uses VF BAR registers in the *PF* SR-IOV Capability to
|
||||
discover sizes and assign addresses. The BARs in the VF's config space
|
||||
header are read-only zeros.
|
||||
|
||||
When a VF BAR in the PF SR-IOV Capability is programmed, it sets the
|
||||
base address for all the corresponding VF(n) BARs. For example, if the
|
||||
PF SR-IOV Capability is programmed to enable eight VFs, and it has a
|
||||
1MB VF BAR0, the address in that VF BAR sets the base of an 8MB region.
|
||||
This region is divided into eight contiguous 1MB regions, each of which
|
||||
is a BAR0 for one of the VFs. Note that even though the VF BAR
|
||||
describes an 8MB region, the alignment requirement is for a single VF,
|
||||
i.e., 1MB in this example.
|
||||
|
||||
There are several strategies for isolating VFs in PEs:
|
||||
|
||||
- M32 window: There's one M32 window, and it is split into 256
|
||||
equally-sized segments. The finest granularity possible is a 256MB
|
||||
window with 1MB segments. VF BARs that are 1MB or larger could be
|
||||
mapped to separate PEs in this window. Each segment can be
|
||||
individually mapped to a PE via the lookup table, so this is quite
|
||||
flexible, but it works best when all the VF BARs are the same size. If
|
||||
they are different sizes, the entire window has to be small enough that
|
||||
the segment size matches the smallest VF BAR, which means larger VF
|
||||
BARs span several segments.
|
||||
|
||||
- Non-segmented M64 window: A non-segmented M64 window is mapped entirely
|
||||
to a single PE, so it could only isolate one VF.
|
||||
|
||||
- Single segmented M64 windows: A segmented M64 window could be used just
|
||||
like the M32 window, but the segments can't be individually mapped to
|
||||
PEs (the segment number is the PE#), so there isn't as much
|
||||
flexibility. A VF with multiple BARs would have to be in a "domain" of
|
||||
multiple PEs, which is not as well isolated as a single PE.
|
||||
|
||||
- Multiple segmented M64 windows: As usual, each window is split into 256
|
||||
equally-sized segments, and the segment number is the PE#. But if we
|
||||
use several M64 windows, they can be set to different base addresses
|
||||
and different segment sizes. If we have VFs that each have a 1MB BAR
|
||||
and a 32MB BAR, we could use one M64 window to assign 1MB segments and
|
||||
another M64 window to assign 32MB segments.
|
||||
|
||||
Finally, the plan to use M64 windows for SR-IOV, which will be described
|
||||
more in the next two sections. For a given VF BAR, we need to
|
||||
effectively reserve the entire 256 segments (256 * VF BAR size) and
|
||||
position the VF BAR to start at the beginning of a free range of
|
||||
segments/PEs inside that M64 window.
|
||||
|
||||
The goal is of course to be able to give a separate PE for each VF.
|
||||
|
||||
The IODA2 platform has 16 M64 windows, which are used to map MMIO
|
||||
range to PE#. Each M64 window defines one MMIO range and this range is
|
||||
divided into 256 segments, with each segment corresponding to one PE.
|
||||
|
||||
We decide to leverage this M64 window to map VFs to individual PEs, since
|
||||
SR-IOV VF BARs are all the same size.
|
||||
|
||||
But doing so introduces another problem: total_VFs is usually smaller
|
||||
than the number of M64 window segments, so if we map one VF BAR directly
|
||||
to one M64 window, some part of the M64 window will map to another
|
||||
device's MMIO range.
|
||||
|
||||
IODA supports 256 PEs, so segmented windows contain 256 segments, so if
|
||||
total_VFs is less than 256, we have the situation in Figure 1.0, where
|
||||
segments [total_VFs, 255] of the M64 window may map to some MMIO range on
|
||||
other devices:
|
||||
|
||||
0 1 total_VFs - 1
|
||||
+------+------+- -+------+------+
|
||||
| | | ... | | |
|
||||
+------+------+- -+------+------+
|
||||
|
||||
VF(n) BAR space
|
||||
|
||||
0 1 total_VFs - 1 255
|
||||
+------+------+- -+------+------+- -+------+------+
|
||||
| | | ... | | | ... | | |
|
||||
+------+------+- -+------+------+- -+------+------+
|
||||
|
||||
M64 window
|
||||
|
||||
Figure 1.0 Direct map VF(n) BAR space
|
||||
|
||||
Our current solution is to allocate 256 segments even if the VF(n) BAR
|
||||
space doesn't need that much, as shown in Figure 1.1:
|
||||
|
||||
0 1 total_VFs - 1 255
|
||||
+------+------+- -+------+------+- -+------+------+
|
||||
| | | ... | | | ... | | |
|
||||
+------+------+- -+------+------+- -+------+------+
|
||||
|
||||
VF(n) BAR space + extra
|
||||
|
||||
0 1 total_VFs - 1 255
|
||||
+------+------+- -+------+------+- -+------+------+
|
||||
| | | ... | | | ... | | |
|
||||
+------+------+- -+------+------+- -+------+------+
|
||||
|
||||
M64 window
|
||||
|
||||
Figure 1.1 Map VF(n) BAR space + extra
|
||||
|
||||
Allocating the extra space ensures that the entire M64 window will be
|
||||
assigned to this one SR-IOV device and none of the space will be
|
||||
available for other devices. Note that this only expands the space
|
||||
reserved in software; there are still only total_VFs VFs, and they only
|
||||
respond to segments [0, total_VFs - 1]. There's nothing in hardware that
|
||||
responds to segments [total_VFs, 255].
|
||||
|
||||
4. Implications for the Generic PCI Code
|
||||
|
||||
The PCIe SR-IOV spec requires that the base of the VF(n) BAR space be
|
||||
aligned to the size of an individual VF BAR.
|
||||
|
||||
In IODA2, the MMIO address determines the PE#. If the address is in an M32
|
||||
window, we can set the PE# by updating the table that translates segments
|
||||
to PE#s. Similarly, if the address is in an unsegmented M64 window, we can
|
||||
set the PE# for the window. But if it's in a segmented M64 window, the
|
||||
segment number is the PE#.
|
||||
|
||||
Therefore, the only way to control the PE# for a VF is to change the base
|
||||
of the VF(n) BAR space in the VF BAR. If the PCI core allocates the exact
|
||||
amount of space required for the VF(n) BAR space, the VF BAR value is fixed
|
||||
and cannot be changed.
|
||||
|
||||
On the other hand, if the PCI core allocates additional space, the VF BAR
|
||||
value can be changed as long as the entire VF(n) BAR space remains inside
|
||||
the space allocated by the core.
|
||||
|
||||
Ideally the segment size will be the same as an individual VF BAR size.
|
||||
Then each VF will be in its own PE. The VF BARs (and therefore the PE#s)
|
||||
are contiguous. If VF0 is in PE(x), then VF(n) is in PE(x+n). If we
|
||||
allocate 256 segments, there are (256 - numVFs) choices for the PE# of VF0.
|
||||
|
||||
If the segment size is smaller than the VF BAR size, it will take several
|
||||
segments to cover a VF BAR, and a VF will be in several PEs. This is
|
||||
possible, but the isolation isn't as good, and it reduces the number of PE#
|
||||
choices because instead of consuming only numVFs segments, the VF(n) BAR
|
||||
space will consume (numVFs * n) segments. That means there aren't as many
|
||||
available segments for adjusting base of the VF(n) BAR space.
|
||||
@@ -74,22 +74,23 @@ Causes of transaction aborts
|
||||
Syscalls
|
||||
========
|
||||
|
||||
Performing syscalls from within transaction is not recommended, and can lead
|
||||
to unpredictable results.
|
||||
Syscalls made from within an active transaction will not be performed and the
|
||||
transaction will be doomed by the kernel with the failure code TM_CAUSE_SYSCALL
|
||||
| TM_CAUSE_PERSISTENT.
|
||||
|
||||
Syscalls do not by design abort transactions, but beware: The kernel code will
|
||||
not be running in transactional state. The effect of syscalls will always
|
||||
remain visible, but depending on the call they may abort your transaction as a
|
||||
side-effect, read soon-to-be-aborted transactional data that should not remain
|
||||
invisible, etc. If you constantly retry a transaction that constantly aborts
|
||||
itself by calling a syscall, you'll have a livelock & make no progress.
|
||||
Syscalls made from within a suspended transaction are performed as normal and
|
||||
the transaction is not explicitly doomed by the kernel. However, what the
|
||||
kernel does to perform the syscall may result in the transaction being doomed
|
||||
by the hardware. The syscall is performed in suspended mode so any side
|
||||
effects will be persistent, independent of transaction success or failure. No
|
||||
guarantees are provided by the kernel about which syscalls will affect
|
||||
transaction success.
|
||||
|
||||
Simple syscalls (e.g. sigprocmask()) "could" be OK. Even things like write()
|
||||
from, say, printf() should be OK as long as the kernel does not access any
|
||||
memory that was accessed transactionally.
|
||||
|
||||
Consider any syscalls that happen to work as debug-only -- not recommended for
|
||||
production use. Best to queue them up till after the transaction is over.
|
||||
Care must be taken when relying on syscalls to abort during active transactions
|
||||
if the calls are made via a library. Libraries may cache values (which may
|
||||
give the appearance of success) or perform operations that cause transaction
|
||||
failure before entering the kernel (which may produce different failure codes).
|
||||
Examples are glibc's getpid() and lazy symbol resolution.
|
||||
|
||||
|
||||
Signals
|
||||
@@ -174,10 +175,9 @@ These are defined in <asm/reg.h>, and distinguish different reasons why the
|
||||
kernel aborted a transaction:
|
||||
|
||||
TM_CAUSE_RESCHED Thread was rescheduled.
|
||||
TM_CAUSE_TLBI Software TLB invalide.
|
||||
TM_CAUSE_TLBI Software TLB invalid.
|
||||
TM_CAUSE_FAC_UNAV FP/VEC/VSX unavailable trap.
|
||||
TM_CAUSE_SYSCALL Currently unused; future syscalls that must abort
|
||||
transactions for consistency will use this.
|
||||
TM_CAUSE_SYSCALL Syscall from active transaction.
|
||||
TM_CAUSE_SIGNAL Signal delivered.
|
||||
TM_CAUSE_MISC Currently unused.
|
||||
TM_CAUSE_ALIGNMENT Alignment fault.
|
||||
@@ -185,7 +185,7 @@ kernel aborted a transaction:
|
||||
|
||||
These can be checked by the user program's abort handler as TEXASR[0:7]. If
|
||||
bit 7 is set, it indicates that the error is consider persistent. For example
|
||||
a TM_CAUSE_ALIGNMENT will be persistent while a TM_CAUSE_RESCHED will not.q
|
||||
a TM_CAUSE_ALIGNMENT will be persistent while a TM_CAUSE_RESCHED will not.
|
||||
|
||||
GDB
|
||||
===
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ config HAVE_OPROFILE
|
||||
|
||||
config OPROFILE_NMI_TIMER
|
||||
def_bool y
|
||||
depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI
|
||||
depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !PPC64
|
||||
|
||||
config KPROBES
|
||||
bool "Kprobes"
|
||||
|
||||
@@ -152,6 +152,7 @@ config PPC
|
||||
select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
|
||||
select NO_BOOTMEM
|
||||
select HAVE_GENERIC_RCU_GUP
|
||||
select HAVE_PERF_EVENTS_NMI if PPC64
|
||||
|
||||
config GENERIC_CSUM
|
||||
def_bool CPU_LITTLE_ENDIAN
|
||||
@@ -189,9 +190,6 @@ config ARCH_MAY_HAVE_PC_FDC
|
||||
bool
|
||||
default PCI
|
||||
|
||||
config PPC_OF
|
||||
def_bool y
|
||||
|
||||
config PPC_UDBG_16550
|
||||
bool
|
||||
default n
|
||||
|
||||
@@ -117,7 +117,7 @@ config BDI_SWITCH
|
||||
|
||||
config BOOTX_TEXT
|
||||
bool "Support for early boot text console (BootX or OpenFirmware only)"
|
||||
depends on PPC_OF && PPC_BOOK3S
|
||||
depends on PPC_BOOK3S
|
||||
help
|
||||
Say Y here to see progress messages from the boot firmware in text
|
||||
mode. Requires either BootX or Open Firmware.
|
||||
@@ -193,13 +193,6 @@ config PPC_EARLY_DEBUG_PAS_REALMODE
|
||||
Select this to enable early debugging for PA Semi.
|
||||
Output will be on UART0.
|
||||
|
||||
config PPC_EARLY_DEBUG_BEAT
|
||||
bool "Beat HV Console"
|
||||
depends on PPC_CELLEB
|
||||
select PPC_UDBG_BEAT
|
||||
help
|
||||
Select this to enable early debugging for Celleb with Beat.
|
||||
|
||||
config PPC_EARLY_DEBUG_44x
|
||||
bool "Early serial debugging for IBM/AMCC 44x CPUs"
|
||||
depends on 44x
|
||||
|
||||
@@ -248,10 +248,10 @@ boot := arch/$(ARCH)/boot
|
||||
|
||||
ifeq ($(CONFIG_RELOCATABLE),y)
|
||||
quiet_cmd_relocs_check = CALL $<
|
||||
cmd_relocs_check = perl $< "$(OBJDUMP)" "$(obj)/vmlinux"
|
||||
cmd_relocs_check = $(CONFIG_SHELL) $< "$(OBJDUMP)" "$(obj)/vmlinux"
|
||||
|
||||
PHONY += relocs_check
|
||||
relocs_check: arch/powerpc/relocs_check.pl vmlinux
|
||||
relocs_check: arch/powerpc/relocs_check.sh vmlinux
|
||||
$(call cmd,relocs_check)
|
||||
|
||||
zImage: relocs_check
|
||||
|
||||
@@ -110,7 +110,6 @@ src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
|
||||
src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S
|
||||
src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
|
||||
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
|
||||
src-plat-$(CONFIG_PPC_CELLEB) += pseries-head.S
|
||||
src-plat-$(CONFIG_PPC_CELL_QPACE) += pseries-head.S
|
||||
|
||||
src-wlib := $(sort $(src-wlib-y))
|
||||
@@ -215,7 +214,6 @@ image-$(CONFIG_PPC_POWERNV) += zImage.pseries
|
||||
image-$(CONFIG_PPC_MAPLE) += zImage.maple
|
||||
image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
|
||||
image-$(CONFIG_PPC_PS3) += dtbImage.ps3
|
||||
image-$(CONFIG_PPC_CELLEB) += zImage.pseries
|
||||
image-$(CONFIG_PPC_CELL_QPACE) += zImage.pseries
|
||||
image-$(CONFIG_PPC_CHRP) += zImage.chrp
|
||||
image-$(CONFIG_PPC_EFIKA) += zImage.chrp
|
||||
@@ -317,7 +315,7 @@ endif
|
||||
# Allow extra targets to be added to the defconfig
|
||||
image-y += $(subst ",,$(CONFIG_EXTRA_TARGETS))
|
||||
|
||||
initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
|
||||
initrd- := $(patsubst zImage%, zImage.initrd%, $(image-))
|
||||
initrd-y := $(patsubst zImage%, zImage.initrd%, \
|
||||
$(patsubst dtbImage%, dtbImage.initrd%, \
|
||||
$(patsubst simpleImage%, simpleImage.initrd%, \
|
||||
|
||||
+13
-13
@@ -155,29 +155,29 @@ p_base: mflr r10 /* r10 now points to runtime addr of p_base */
|
||||
ld r9,(p_rela-p_base)(r10)
|
||||
add r9,r9,r10
|
||||
|
||||
li r7,0
|
||||
li r13,0
|
||||
li r8,0
|
||||
9: ld r6,0(r11) /* get tag */
|
||||
cmpdi r6,0
|
||||
9: ld r12,0(r11) /* get tag */
|
||||
cmpdi r12,0
|
||||
beq 12f /* end of list */
|
||||
cmpdi r6,RELA
|
||||
cmpdi r12,RELA
|
||||
bne 10f
|
||||
ld r7,8(r11) /* get RELA pointer in r7 */
|
||||
ld r13,8(r11) /* get RELA pointer in r13 */
|
||||
b 11f
|
||||
10: addis r6,r6,(-RELACOUNT)@ha
|
||||
cmpdi r6,RELACOUNT@l
|
||||
10: addis r12,r12,(-RELACOUNT)@ha
|
||||
cmpdi r12,RELACOUNT@l
|
||||
bne 11f
|
||||
ld r8,8(r11) /* get RELACOUNT value in r8 */
|
||||
11: addi r11,r11,16
|
||||
b 9b
|
||||
12:
|
||||
cmpdi r7,0 /* check we have both RELA and RELACOUNT */
|
||||
cmpdi r13,0 /* check we have both RELA and RELACOUNT */
|
||||
cmpdi cr1,r8,0
|
||||
beq 3f
|
||||
beq cr1,3f
|
||||
|
||||
/* Calcuate the runtime offset. */
|
||||
subf r7,r7,r9
|
||||
subf r13,r13,r9
|
||||
|
||||
/* Run through the list of relocations and process the
|
||||
* R_PPC64_RELATIVE ones. */
|
||||
@@ -185,10 +185,10 @@ p_base: mflr r10 /* r10 now points to runtime addr of p_base */
|
||||
13: ld r0,8(r9) /* ELF64_R_TYPE(reloc->r_info) */
|
||||
cmpdi r0,22 /* R_PPC64_RELATIVE */
|
||||
bne 3f
|
||||
ld r6,0(r9) /* reloc->r_offset */
|
||||
ld r12,0(r9) /* reloc->r_offset */
|
||||
ld r0,16(r9) /* reloc->r_addend */
|
||||
add r0,r0,r7
|
||||
stdx r0,r7,r6
|
||||
add r0,r0,r13
|
||||
stdx r0,r13,r12
|
||||
addi r9,r9,24
|
||||
bdnz 13b
|
||||
|
||||
@@ -218,7 +218,7 @@ p_base: mflr r10 /* r10 now points to runtime addr of p_base */
|
||||
beq 6f
|
||||
ld r1,0(r8)
|
||||
li r0,0
|
||||
stdu r0,-16(r1) /* establish a stack frame */
|
||||
stdu r0,-112(r1) /* establish a stack frame */
|
||||
6:
|
||||
#endif /* __powerpc64__ */
|
||||
/* Call platform_init() */
|
||||
|
||||
@@ -1,223 +0,0 @@
|
||||
/*
|
||||
* B4860 emulator Device Tree Source
|
||||
*
|
||||
* Copyright 2013 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of Freescale Semiconductor nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
*
|
||||
* ALTERNATIVELY, this software may be distributed under the terms of the
|
||||
* GNU General Public License ("GPL") as published by the Free Software
|
||||
* Foundation, either version 2 of that License or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This software is provided by Freescale Semiconductor "as is" and any
|
||||
* express or implied warranties, including, but not limited to, the implied
|
||||
* warranties of merchantability and fitness for a particular purpose are
|
||||
* disclaimed. In no event shall Freescale Semiconductor be liable for any
|
||||
* direct, indirect, incidental, special, exemplary, or consequential damages
|
||||
* (including, but not limited to, procurement of substitute goods or services;
|
||||
* loss of use, data, or profits; or business interruption) however caused and
|
||||
* on any theory of liability, whether in contract, strict liability, or tort
|
||||
* (including negligence or otherwise) arising in any way out of the use of
|
||||
* this software, even if advised of the possibility of such damage.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "fsl/e6500_power_isa.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "fsl,B4860";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
|
||||
aliases {
|
||||
ccsr = &soc;
|
||||
|
||||
serial0 = &serial0;
|
||||
serial1 = &serial1;
|
||||
serial2 = &serial2;
|
||||
serial3 = &serial3;
|
||||
dma0 = &dma0;
|
||||
dma1 = &dma1;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu0: PowerPC,e6500@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0 1>;
|
||||
next-level-cache = <&L2>;
|
||||
fsl,portid-mapping = <0x80000000>;
|
||||
};
|
||||
cpu1: PowerPC,e6500@2 {
|
||||
device_type = "cpu";
|
||||
reg = <2 3>;
|
||||
next-level-cache = <&L2>;
|
||||
fsl,portid-mapping = <0x80000000>;
|
||||
};
|
||||
cpu2: PowerPC,e6500@4 {
|
||||
device_type = "cpu";
|
||||
reg = <4 5>;
|
||||
next-level-cache = <&L2>;
|
||||
fsl,portid-mapping = <0x80000000>;
|
||||
};
|
||||
cpu3: PowerPC,e6500@6 {
|
||||
device_type = "cpu";
|
||||
reg = <6 7>;
|
||||
next-level-cache = <&L2>;
|
||||
fsl,portid-mapping = <0x80000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
model = "fsl,B4860QDS";
|
||||
compatible = "fsl,B4860EMU", "fsl,B4860QDS";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
|
||||
ifc: localbus@ffe124000 {
|
||||
reg = <0xf 0xfe124000 0 0x2000>;
|
||||
ranges = <0 0 0xf 0xe8000000 0x08000000
|
||||
2 0 0xf 0xff800000 0x00010000
|
||||
3 0 0xf 0xffdf0000 0x00008000>;
|
||||
|
||||
nor@0,0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "cfi-flash";
|
||||
reg = <0x0 0x0 0x8000000>;
|
||||
bank-width = <2>;
|
||||
device-width = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
soc: soc@ffe000000 {
|
||||
ranges = <0x00000000 0xf 0xfe000000 0x1000000>;
|
||||
reg = <0xf 0xfe000000 0 0x00001000>;
|
||||
};
|
||||
};
|
||||
|
||||
&ifc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
compatible = "fsl,ifc", "simple-bus";
|
||||
interrupts = <25 2 0 0>;
|
||||
};
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
device_type = "soc";
|
||||
compatible = "simple-bus";
|
||||
|
||||
soc-sram-error {
|
||||
compatible = "fsl,soc-sram-error";
|
||||
interrupts = <16 2 1 2>;
|
||||
};
|
||||
|
||||
corenet-law@0 {
|
||||
compatible = "fsl,corenet-law";
|
||||
reg = <0x0 0x1000>;
|
||||
fsl,num-laws = <32>;
|
||||
};
|
||||
|
||||
ddr1: memory-controller@8000 {
|
||||
compatible = "fsl,qoriq-memory-controller-v4.5", "fsl,qoriq-memory-controller";
|
||||
reg = <0x8000 0x1000>;
|
||||
interrupts = <16 2 1 8>;
|
||||
};
|
||||
|
||||
ddr2: memory-controller@9000 {
|
||||
compatible = "fsl,qoriq-memory-controller-v4.5","fsl,qoriq-memory-controller";
|
||||
reg = <0x9000 0x1000>;
|
||||
interrupts = <16 2 1 9>;
|
||||
};
|
||||
|
||||
cpc: l3-cache-controller@10000 {
|
||||
compatible = "fsl,b4-l3-cache-controller", "cache";
|
||||
reg = <0x10000 0x1000
|
||||
0x11000 0x1000>;
|
||||
interrupts = <16 2 1 4>;
|
||||
};
|
||||
|
||||
corenet-cf@18000 {
|
||||
compatible = "fsl,corenet2-cf", "fsl,corenet-cf";
|
||||
reg = <0x18000 0x1000>;
|
||||
interrupts = <16 2 1 0>;
|
||||
fsl,ccf-num-csdids = <32>;
|
||||
fsl,ccf-num-snoopids = <32>;
|
||||
};
|
||||
|
||||
iommu@20000 {
|
||||
compatible = "fsl,pamu-v1.0", "fsl,pamu";
|
||||
reg = <0x20000 0x4000>;
|
||||
fsl,portid-mapping = <0x8000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <
|
||||
24 2 0 0
|
||||
16 2 1 1>;
|
||||
pamu0: pamu@0 {
|
||||
reg = <0 0x1000>;
|
||||
fsl,primary-cache-geometry = <8 1>;
|
||||
fsl,secondary-cache-geometry = <32 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "fsl/qoriq-mpic.dtsi"
|
||||
|
||||
guts: global-utilities@e0000 {
|
||||
compatible = "fsl,b4-device-config";
|
||||
reg = <0xe0000 0xe00>;
|
||||
fsl,has-rstcr;
|
||||
fsl,liodn-bits = <12>;
|
||||
};
|
||||
|
||||
/include/ "fsl/qoriq-clockgen2.dtsi"
|
||||
global-utilities@e1000 {
|
||||
compatible = "fsl,b4-clockgen", "fsl,qoriq-clockgen-2.0";
|
||||
};
|
||||
|
||||
/include/ "fsl/qoriq-dma-0.dtsi"
|
||||
dma@100300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "fsl/qoriq-dma-1.dtsi"
|
||||
dma@101300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "fsl/qoriq-i2c-0.dtsi"
|
||||
/include/ "fsl/qoriq-i2c-1.dtsi"
|
||||
/include/ "fsl/qoriq-duart-0.dtsi"
|
||||
/include/ "fsl/qoriq-duart-1.dtsi"
|
||||
|
||||
L2: l2-cache-controller@c20000 {
|
||||
compatible = "fsl,b4-l2-cache-controller";
|
||||
reg = <0xc20000 0x1000>;
|
||||
next-level-cache = <&cpc>;
|
||||
};
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* B4420DS Device Tree Source
|
||||
*
|
||||
* Copyright 2012 Freescale Semiconductor, Inc.
|
||||
* Copyright 2012 - 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -97,10 +97,25 @@
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
bman_fbpr: bman-fbpr {
|
||||
size = <0 0x1000000>;
|
||||
alignment = <0 0x1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
dcsr: dcsr@f00000000 {
|
||||
ranges = <0x00000000 0xf 0x00000000 0x01052000>;
|
||||
};
|
||||
|
||||
bportals: bman-portals@ff4000000 {
|
||||
ranges = <0x0 0xf 0xf4000000 0x2000000>;
|
||||
};
|
||||
|
||||
soc: soc@ffe000000 {
|
||||
ranges = <0x00000000 0xf 0xfe000000 0x1000000>;
|
||||
reg = <0xf 0xfe000000 0 0x00001000>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* B4860 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2012 Freescale Semiconductor Inc.
|
||||
* Copyright 2012 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -109,6 +109,64 @@
|
||||
};
|
||||
};
|
||||
|
||||
&bportals {
|
||||
bman-portal@38000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x38000 0x4000>, <0x100e000 0x1000>;
|
||||
interrupts = <133 2 0 0>;
|
||||
};
|
||||
bman-portal@3c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x3c000 0x4000>, <0x100f000 0x1000>;
|
||||
interrupts = <135 2 0 0>;
|
||||
};
|
||||
bman-portal@40000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x40000 0x4000>, <0x1010000 0x1000>;
|
||||
interrupts = <137 2 0 0>;
|
||||
};
|
||||
bman-portal@44000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x44000 0x4000>, <0x1011000 0x1000>;
|
||||
interrupts = <139 2 0 0>;
|
||||
};
|
||||
bman-portal@48000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x48000 0x4000>, <0x1012000 0x1000>;
|
||||
interrupts = <141 2 0 0>;
|
||||
};
|
||||
bman-portal@4c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x4c000 0x4000>, <0x1013000 0x1000>;
|
||||
interrupts = <143 2 0 0>;
|
||||
};
|
||||
bman-portal@50000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x50000 0x4000>, <0x1014000 0x1000>;
|
||||
interrupts = <145 2 0 0>;
|
||||
};
|
||||
bman-portal@54000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x54000 0x4000>, <0x1015000 0x1000>;
|
||||
interrupts = <147 2 0 0>;
|
||||
};
|
||||
bman-portal@58000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x58000 0x4000>, <0x1016000 0x1000>;
|
||||
interrupts = <149 2 0 0>;
|
||||
};
|
||||
bman-portal@5c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x5c000 0x4000>, <0x1017000 0x1000>;
|
||||
interrupts = <151 2 0 0>;
|
||||
};
|
||||
bman-portal@60000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x60000 0x4000>, <0x1018000 0x1000>;
|
||||
interrupts = <153 2 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
ddr2: memory-controller@9000 {
|
||||
compatible = "fsl,qoriq-memory-controller-v4.5", "fsl,qoriq-memory-controller";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* B4420 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2012 Freescale Semiconductor, Inc.
|
||||
* Copyright 2012 - 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* this software, even if advised of the possibility of such damage.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10000 0>;
|
||||
};
|
||||
|
||||
&ifc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
@@ -128,6 +133,83 @@
|
||||
};
|
||||
};
|
||||
|
||||
&bportals {
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x1>;
|
||||
compatible = "simple-bus";
|
||||
|
||||
bman-portal@0 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x0 0x4000>, <0x1000000 0x1000>;
|
||||
interrupts = <105 2 0 0>;
|
||||
};
|
||||
bman-portal@4000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x4000 0x4000>, <0x1001000 0x1000>;
|
||||
interrupts = <107 2 0 0>;
|
||||
};
|
||||
bman-portal@8000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x8000 0x4000>, <0x1002000 0x1000>;
|
||||
interrupts = <109 2 0 0>;
|
||||
};
|
||||
bman-portal@c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0xc000 0x4000>, <0x1003000 0x1000>;
|
||||
interrupts = <111 2 0 0>;
|
||||
};
|
||||
bman-portal@10000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x10000 0x4000>, <0x1004000 0x1000>;
|
||||
interrupts = <113 2 0 0>;
|
||||
};
|
||||
bman-portal@14000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x14000 0x4000>, <0x1005000 0x1000>;
|
||||
interrupts = <115 2 0 0>;
|
||||
};
|
||||
bman-portal@18000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x18000 0x4000>, <0x1006000 0x1000>;
|
||||
interrupts = <117 2 0 0>;
|
||||
};
|
||||
bman-portal@1c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x1c000 0x4000>, <0x1007000 0x1000>;
|
||||
interrupts = <119 2 0 0>;
|
||||
};
|
||||
bman-portal@20000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x20000 0x4000>, <0x1008000 0x1000>;
|
||||
interrupts = <121 2 0 0>;
|
||||
};
|
||||
bman-portal@24000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x24000 0x4000>, <0x1009000 0x1000>;
|
||||
interrupts = <123 2 0 0>;
|
||||
};
|
||||
bman-portal@28000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x28000 0x4000>, <0x100a000 0x1000>;
|
||||
interrupts = <125 2 0 0>;
|
||||
};
|
||||
bman-portal@2c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x2c000 0x4000>, <0x100b000 0x1000>;
|
||||
interrupts = <127 2 0 0>;
|
||||
};
|
||||
bman-portal@30000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x30000 0x4000>, <0x100c000 0x1000>;
|
||||
interrupts = <129 2 0 0>;
|
||||
};
|
||||
bman-portal@34000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x34000 0x4000>, <0x100d000 0x1000>;
|
||||
interrupts = <131 2 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -261,6 +343,11 @@
|
||||
/include/ "qoriq-duart-1.dtsi"
|
||||
/include/ "qoriq-sec5.3-0.dtsi"
|
||||
|
||||
/include/ "qoriq-bman1.dtsi"
|
||||
bman: bman@31a000 {
|
||||
interrupts = <16 2 1 29>;
|
||||
};
|
||||
|
||||
L2: l2-cache-controller@c20000 {
|
||||
compatible = "fsl,b4-l2-cache-controller";
|
||||
reg = <0xc20000 0x1000>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* P1023/P1017 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2011 Freescale Semiconductor Inc.
|
||||
* Copyright 2011 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10 0>;
|
||||
};
|
||||
|
||||
&lbc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
@@ -97,6 +102,28 @@
|
||||
};
|
||||
};
|
||||
|
||||
&bportals {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "simple-bus";
|
||||
|
||||
bman-portal@0 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x0 0x4000>, <0x100000 0x1000>;
|
||||
interrupts = <30 2 0 0>;
|
||||
};
|
||||
bman-portal@4000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x4000 0x4000>, <0x101000 0x1000>;
|
||||
interrupts = <32 2 0 0>;
|
||||
};
|
||||
bman-portal@8000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x8000 0x4000>, <0x102000 0x1000>;
|
||||
interrupts = <34 2 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -221,6 +248,14 @@
|
||||
/include/ "pq3-mpic.dtsi"
|
||||
/include/ "pq3-mpic-timer-B.dtsi"
|
||||
|
||||
bman: bman@8a000 {
|
||||
compatible = "fsl,bman";
|
||||
reg = <0x8a000 0x1000>;
|
||||
interrupts = <16 2 0 0>;
|
||||
fsl,bman-portals = <&bportals>;
|
||||
memory-region = <&bman_fbpr>;
|
||||
};
|
||||
|
||||
global-utilities@e0000 {
|
||||
compatible = "fsl,p1023-guts";
|
||||
reg = <0xe0000 0x1000>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* P2041/P2040 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2011 Freescale Semiconductor Inc.
|
||||
* Copyright 2011 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10 0>;
|
||||
};
|
||||
|
||||
&lbc {
|
||||
compatible = "fsl,p2041-elbc", "fsl,elbc", "simple-bus";
|
||||
interrupts = <25 2 0 0>;
|
||||
@@ -216,6 +221,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1-portals.dtsi"
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -407,4 +414,6 @@
|
||||
crypto: crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1.dtsi"
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* P3041 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2011 Freescale Semiconductor Inc.
|
||||
* Copyright 2011 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10 0>;
|
||||
};
|
||||
|
||||
&lbc {
|
||||
compatible = "fsl,p3041-elbc", "fsl,elbc", "simple-bus";
|
||||
interrupts = <25 2 0 0>;
|
||||
@@ -243,6 +248,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1-portals.dtsi"
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -434,4 +441,6 @@
|
||||
crypto: crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1.dtsi"
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* P4080/P4040 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2011 Freescale Semiconductor Inc.
|
||||
* Copyright 2011 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10 0>;
|
||||
};
|
||||
|
||||
&lbc {
|
||||
compatible = "fsl,p4080-elbc", "fsl,elbc", "simple-bus";
|
||||
interrupts = <25 2 0 0>;
|
||||
@@ -243,6 +248,8 @@
|
||||
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1-portals.dtsi"
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -490,4 +497,6 @@
|
||||
crypto: crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1.dtsi"
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* P5020/5010 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2011 Freescale Semiconductor Inc.
|
||||
* Copyright 2011 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10000 0>;
|
||||
};
|
||||
|
||||
&lbc {
|
||||
compatible = "fsl,p5020-elbc", "fsl,elbc", "simple-bus";
|
||||
interrupts = <25 2 0 0>;
|
||||
@@ -240,6 +245,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1-portals.dtsi"
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -421,6 +428,8 @@
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1.dtsi"
|
||||
|
||||
/include/ "qoriq-raid1.0-0.dtsi"
|
||||
raideng@320000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* P5040 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2012 Freescale Semiconductor Inc.
|
||||
* Copyright 2012 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* software, even if advised of the possibility of such damage.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10000 0>;
|
||||
};
|
||||
|
||||
&lbc {
|
||||
compatible = "fsl,p5040-elbc", "fsl,elbc", "simple-bus";
|
||||
interrupts = <25 2 0 0>;
|
||||
@@ -195,6 +200,8 @@
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1-portals.dtsi"
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -399,4 +406,6 @@
|
||||
crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu4>;
|
||||
};
|
||||
|
||||
/include/ "qoriq-bman1.dtsi"
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* T1040 Silicon/SoC Device Tree Source (post include)
|
||||
*
|
||||
* Copyright 2013 Freescale Semiconductor Inc.
|
||||
* Copyright 2013 - 2014 Freescale Semiconductor Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
@@ -32,6 +32,11 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
&bman_fbpr {
|
||||
compatible = "fsl,bman-fbpr";
|
||||
alloc-ranges = <0 0 0x10000 0>;
|
||||
};
|
||||
|
||||
&ifc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
@@ -218,6 +223,63 @@
|
||||
};
|
||||
};
|
||||
|
||||
&bportals {
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x1>;
|
||||
compatible = "simple-bus";
|
||||
|
||||
bman-portal@0 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x0 0x4000>, <0x1000000 0x1000>;
|
||||
interrupts = <105 2 0 0>;
|
||||
};
|
||||
bman-portal@4000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x4000 0x4000>, <0x1001000 0x1000>;
|
||||
interrupts = <107 2 0 0>;
|
||||
};
|
||||
bman-portal@8000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x8000 0x4000>, <0x1002000 0x1000>;
|
||||
interrupts = <109 2 0 0>;
|
||||
};
|
||||
bman-portal@c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0xc000 0x4000>, <0x1003000 0x1000>;
|
||||
interrupts = <111 2 0 0>;
|
||||
};
|
||||
bman-portal@10000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x10000 0x4000>, <0x1004000 0x1000>;
|
||||
interrupts = <113 2 0 0>;
|
||||
};
|
||||
bman-portal@14000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x14000 0x4000>, <0x1005000 0x1000>;
|
||||
interrupts = <115 2 0 0>;
|
||||
};
|
||||
bman-portal@18000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x18000 0x4000>, <0x1006000 0x1000>;
|
||||
interrupts = <117 2 0 0>;
|
||||
};
|
||||
bman-portal@1c000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x1c000 0x4000>, <0x1007000 0x1000>;
|
||||
interrupts = <119 2 0 0>;
|
||||
};
|
||||
bman-portal@20000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x20000 0x4000>, <0x1008000 0x1000>;
|
||||
interrupts = <121 2 0 0>;
|
||||
};
|
||||
bman-portal@24000 {
|
||||
compatible = "fsl,bman-portal";
|
||||
reg = <0x24000 0x4000>, <0x1009000 0x1000>;
|
||||
interrupts = <123 2 0 0>;
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
@@ -401,4 +463,5 @@
|
||||
fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */
|
||||
};
|
||||
/include/ "qoriq-sec5.0-0.dtsi"
|
||||
/include/ "qoriq-bman1.dtsi"
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user