mirror of https://gitee.com/openkylin/linux.git
powerpc updates for 5.9
- Add support for (optionally) using queued spinlocks & rwlocks. - Support for a new faster system call ABI using the scv instruction on Power9 or later. - Drop support for the PROT_SAO mmap/mprotect flag as it will be unsupported on Power10 and future processors, leaving us with no way to implement the functionality it requests. This risks breaking userspace, though we believe it is unused in practice. - A bug fix for, and then the removal of, our custom stack expansion checking. We now allow stack expansion up to the rlimit, like other architectures. - Remove the remnants of our (previously disabled) topology update code, which tried to react to NUMA layout changes on virtualised systems, but was prone to crashes and other problems. - Add PMU support for Power10 CPUs. - A change to our signal trampoline so that we don't unbalance the link stack (branch return predictor) in the signal delivery path. - Lots of other cleanups, refactorings, smaller features and so on as usual. Thanks to: Abhishek Goel, Alastair D'Silva, Alexander A. Klimov, Alexey Kardashevskiy, Alistair Popple, Andrew Donnellan, Aneesh Kumar K.V, Anju T Sudhakar, Anton Blanchard, Arnd Bergmann, Athira Rajeev, Balamuruhan S, Bharata B Rao, Bill Wendling, Bin Meng, Cédric Le Goater, Chris Packham, Christophe Leroy, Christoph Hellwig, Daniel Axtens, Dan Williams, David Lamparter, Desnes A. Nunes do Rosario, Erhard F., Finn Thain, Frederic Barrat, Ganesh Goudar, Gautham R. Shenoy, Geoff Levand, Greg Kurz, Gustavo A. R. Silva, Hari Bathini, Harish, Imre Kaloz, Joel Stanley, Joe Perches, John Crispin, Jordan Niethe, Kajol Jain, Kamalesh Babulal, Kees Cook, Laurent Dufour, Leonardo Bras, Li RongQing, Madhavan Srinivasan, Mahesh Salgaonkar, Mark Cave-Ayland, Michal Suchanek, Milton Miller, Mimi Zohar, Murilo Opsfelder Araujo, Nathan Chancellor, Nathan Lynch, Naveen N. Rao, Nayna Jain, Nicholas Piggin, Oliver O'Halloran, Palmer Dabbelt, Pedro Miraglia Franco de Carvalho, Philippe Bergheaud, Pingfan Liu, Pratik Rajesh Sampat, Qian Cai, Qinglang Miao, Randy Dunlap, Ravi Bangoria, Sachin Sant, Sam Bobroff, Sandipan Das, Santosh Sivaraj, Satheesh Rajendran, Shirisha Ganta, Sourabh Jain, Srikar Dronamraju, Stan Johnson, Stephen Rothwell, Thadeu Lima de Souza Cascardo, Thiago Jung Bauermann, Tom Lane, Vaibhav Jain, Vladis Dronov, Wei Yongjun, Wen Xiong, YueHaibing. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEJFGtCPCthwEv2Y/bUevqPMjhpYAFAl8tOxATHG1wZUBlbGxl cm1hbi5pZC5hdQAKCRBR6+o8yOGlgDQfEAClXHWf6hnxB84bEu39D51NkVotL1IG BRWFvyix+xHuUkHIouBPAAMl6ngY5X6wkYd+Z+CY9zHNtdSDoVlJE30YXdMQA/dE L/rYxR1884yGR/uU/3wusboO68ReXwcKQPmKOymUfh0zH7ujyJsSWLpXFK1YDC5d 2TVVTi0Q+P5ucMHDh0L+AHirIxZvtZSp43+J7xLtywsj+XAxJWCTGo5WCJbdgbCA Qbv3aOkVyUa3EgsbdM/STPpv82ebqT+PHxeSIO4Jw6ZODtKRH0R5YsWCApuY9eZ+ ebY9RLmgv9ZAhJqB2fv9A5NDcMoGpZNmjM7HrWpXwULKQpkBGHCzJ9FcSdHVMOx8 nbVMFjt4uzLwV1w8lFYslQ2tNH/uH2o9BlryV1RLpiiKokDAJO/NOsWN9y0u/I4J EmAM5DSX2LgVvvas96IlGK8KX4xkOkf8FLX/H5UDvvAfloH8J4CZXk/CWCab/nqY KEHPnMmYvQZ1w9SzyZg9sO/1p6Bl1Gmm75Jv2F1lBiRW/42VcGBI/qLsJ4lC59Fc KbwufYNYYG38wbxDLW1HAPJhRonxIcaZj3EEqk7aTiLZ55nNbu8e2k32CpNXTGqt npOhzJHimcq7L6+878ZW+xpbZwogIEUdRSsmwb6aT8za3ShnYwSA2Q3LYxh9xyGH j3GifvPq6Efp3Q== =QMY1 -----END PGP SIGNATURE----- Merge tag 'powerpc-5.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux Pull powerpc updates from Michael Ellerman: - Add support for (optionally) using queued spinlocks & rwlocks. - Support for a new faster system call ABI using the scv instruction on Power9 or later. - Drop support for the PROT_SAO mmap/mprotect flag as it will be unsupported on Power10 and future processors, leaving us with no way to implement the functionality it requests. This risks breaking userspace, though we believe it is unused in practice. - A bug fix for, and then the removal of, our custom stack expansion checking. We now allow stack expansion up to the rlimit, like other architectures. - Remove the remnants of our (previously disabled) topology update code, which tried to react to NUMA layout changes on virtualised systems, but was prone to crashes and other problems. - Add PMU support for Power10 CPUs. - A change to our signal trampoline so that we don't unbalance the link stack (branch return predictor) in the signal delivery path. - Lots of other cleanups, refactorings, smaller features and so on as usual. Thanks to: Abhishek Goel, Alastair D'Silva, Alexander A. Klimov, Alexey Kardashevskiy, Alistair Popple, Andrew Donnellan, Aneesh Kumar K.V, Anju T Sudhakar, Anton Blanchard, Arnd Bergmann, Athira Rajeev, Balamuruhan S, Bharata B Rao, Bill Wendling, Bin Meng, Cédric Le Goater, Chris Packham, Christophe Leroy, Christoph Hellwig, Daniel Axtens, Dan Williams, David Lamparter, Desnes A. Nunes do Rosario, Erhard F., Finn Thain, Frederic Barrat, Ganesh Goudar, Gautham R. Shenoy, Geoff Levand, Greg Kurz, Gustavo A. R. Silva, Hari Bathini, Harish, Imre Kaloz, Joel Stanley, Joe Perches, John Crispin, Jordan Niethe, Kajol Jain, Kamalesh Babulal, Kees Cook, Laurent Dufour, Leonardo Bras, Li RongQing, Madhavan Srinivasan, Mahesh Salgaonkar, Mark Cave-Ayland, Michal Suchanek, Milton Miller, Mimi Zohar, Murilo Opsfelder Araujo, Nathan Chancellor, Nathan Lynch, Naveen N. Rao, Nayna Jain, Nicholas Piggin, Oliver O'Halloran, Palmer Dabbelt, Pedro Miraglia Franco de Carvalho, Philippe Bergheaud, Pingfan Liu, Pratik Rajesh Sampat, Qian Cai, Qinglang Miao, Randy Dunlap, Ravi Bangoria, Sachin Sant, Sam Bobroff, Sandipan Das, Santosh Sivaraj, Satheesh Rajendran, Shirisha Ganta, Sourabh Jain, Srikar Dronamraju, Stan Johnson, Stephen Rothwell, Thadeu Lima de Souza Cascardo, Thiago Jung Bauermann, Tom Lane, Vaibhav Jain, Vladis Dronov, Wei Yongjun, Wen Xiong, YueHaibing. * tag 'powerpc-5.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (337 commits) selftests/powerpc: Fix pkey syscall redefinitions powerpc: Fix circular dependency between percpu.h and mmu.h powerpc/powernv/sriov: Fix use of uninitialised variable selftests/powerpc: Skip vmx/vsx/tar/etc tests on older CPUs powerpc/40x: Fix assembler warning about r0 powerpc/papr_scm: Add support for fetching nvdimm 'fuel-gauge' metric powerpc/papr_scm: Fetch nvdimm performance stats from PHYP cpuidle: pseries: Fixup exit latency for CEDE(0) cpuidle: pseries: Add function to parse extended CEDE records cpuidle: pseries: Set the latency-hint before entering CEDE selftests/powerpc: Fix online CPU selection powerpc/perf: Consolidate perf_callchain_user_[64|32]() powerpc/pseries/hotplug-cpu: Remove double free in error path powerpc/pseries/mobility: Add pr_debug() for device tree changes powerpc/pseries/mobility: Set pr_fmt() powerpc/cacheinfo: Warn if cache object chain becomes unordered powerpc/cacheinfo: Improve diagnostics about malformed cache lists powerpc/cacheinfo: Use name@unit instead of full DT path in debug messages powerpc/cacheinfo: Set pr_fmt() powerpc: fix function annotations to avoid section mismatch warnings with gcc-10 ...
This commit is contained in:
commit
25d8d4eeca
|
@ -43,6 +43,13 @@ Description: read only
|
|||
This sysfs interface exposes the number of cores per chip
|
||||
present in the system.
|
||||
|
||||
What: /sys/devices/hv_24x7/interface/cpumask
|
||||
Date: July 2020
|
||||
Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
|
||||
Description: read only
|
||||
This sysfs file exposes the cpumask which is designated to make
|
||||
HCALLs to retrieve hv-24x7 pmu event counter data.
|
||||
|
||||
What: /sys/bus/event_source/devices/hv_24x7/event_descs/<event-name>
|
||||
Date: February 2014
|
||||
Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
|
||||
|
|
|
@ -25,3 +25,30 @@ Description:
|
|||
NVDIMM have been scrubbed.
|
||||
* "locked" : Indicating that NVDIMM contents cant
|
||||
be modified until next power cycle.
|
||||
|
||||
What: /sys/bus/nd/devices/nmemX/papr/perf_stats
|
||||
Date: May, 2020
|
||||
KernelVersion: v5.9
|
||||
Contact: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>, linux-nvdimm@lists.01.org,
|
||||
Description:
|
||||
(RO) Report various performance stats related to papr-scm NVDIMM
|
||||
device. Each stat is reported on a new line with each line
|
||||
composed of a stat-identifier followed by it value. Below are
|
||||
currently known dimm performance stats which are reported:
|
||||
|
||||
* "CtlResCt" : Controller Reset Count
|
||||
* "CtlResTm" : Controller Reset Elapsed Time
|
||||
* "PonSecs " : Power-on Seconds
|
||||
* "MemLife " : Life Remaining
|
||||
* "CritRscU" : Critical Resource Utilization
|
||||
* "HostLCnt" : Host Load Count
|
||||
* "HostSCnt" : Host Store Count
|
||||
* "HostSDur" : Host Store Duration
|
||||
* "HostLDur" : Host Load Duration
|
||||
* "MedRCnt " : Media Read Count
|
||||
* "MedWCnt " : Media Write Count
|
||||
* "MedRDur " : Media Read Duration
|
||||
* "MedWDur " : Media Write Duration
|
||||
* "CchRHCnt" : Cache Read Hit Count
|
||||
* "CchWHCnt" : Cache Write Hit Count
|
||||
* "FastWCnt" : Fast Write Count
|
|
@ -33,3 +33,14 @@ Date: January 2018
|
|||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read/write
|
||||
Give access the global mmio area for the AFU
|
||||
|
||||
What: /sys/class/ocxl/<afu name>/reload_on_reset
|
||||
Date: February 2020
|
||||
Contact: linuxppc-dev@lists.ozlabs.org
|
||||
Description: read/write
|
||||
Control whether the FPGA is reloaded on a link reset. Enabled
|
||||
through a vendor-specific logic block on the FPGA.
|
||||
0 Do not reload FPGA image from flash
|
||||
1 Reload FPGA image from flash
|
||||
unavailable
|
||||
The device does not support this capability
|
||||
|
|
|
@ -916,6 +916,10 @@
|
|||
disable_radix [PPC]
|
||||
Disable RADIX MMU mode on POWER9
|
||||
|
||||
radix_hcall_invalidate=on [PPC/PSERIES]
|
||||
Disable RADIX GTSE feature and use hcall for TLB
|
||||
invalidate.
|
||||
|
||||
disable_tlbie [PPC]
|
||||
Disable TLBIE instruction. Currently does not work
|
||||
with KVM, with HASH MMU, or with coherent accelerators.
|
||||
|
|
|
@ -50,13 +50,6 @@ Command Line Switches
|
|||
|
||||
This option is limited to the X86 and S390 architecture.
|
||||
|
||||
``cede_offline={"off","on"}``
|
||||
Use this option to disable/enable putting offlined processors to an extended
|
||||
``H_CEDE`` state on supported pseries platforms. If nothing is specified,
|
||||
``cede_offline`` is set to "on".
|
||||
|
||||
This option is limited to the PowerPC architecture.
|
||||
|
||||
``cpu0_hotplug``
|
||||
Allow to shutdown CPU0.
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#
|
||||
# Architecture requirements
|
||||
#
|
||||
# * arm/arm64
|
||||
# * arm/arm64/powerpc
|
||||
#
|
||||
# Rely on implicit context synchronization as a result of exception return
|
||||
# when returning from IPI handler, and when returning to user-space.
|
||||
|
@ -45,7 +45,7 @@
|
|||
| nios2: | TODO |
|
||||
| openrisc: | TODO |
|
||||
| parisc: | TODO |
|
||||
| powerpc: | TODO |
|
||||
| powerpc: | ok |
|
||||
| riscv: | TODO |
|
||||
| s390: | TODO |
|
||||
| sh: | TODO |
|
||||
|
|
|
@ -1935,6 +1935,20 @@ There are some more advanced barrier functions:
|
|||
relaxed I/O accessors and the Documentation/DMA-API.txt file for more
|
||||
information on consistent memory.
|
||||
|
||||
(*) pmem_wmb();
|
||||
|
||||
This is for use with persistent memory to ensure that stores for which
|
||||
modifications are written to persistent storage reached a platform
|
||||
durability domain.
|
||||
|
||||
For example, after a non-temporal write to pmem region, we use pmem_wmb()
|
||||
to ensure that stores have reached a platform durability domain. This ensures
|
||||
that stores have updated persistent storage before any data access or
|
||||
data transfer caused by subsequent instructions is initiated. This is
|
||||
in addition to the ordering done by wmb().
|
||||
|
||||
For load from persistent memory, existing read memory barriers are sufficient
|
||||
to ensure read ordering.
|
||||
|
||||
===============================
|
||||
IMPLICIT KERNEL MEMORY BARRIERS
|
||||
|
|
|
@ -9,7 +9,9 @@ and are supported by arch/powerpc.
|
|||
Book3S (aka sPAPR)
|
||||
------------------
|
||||
|
||||
- Hash MMU
|
||||
- Hash MMU (except 603 and e300)
|
||||
- Software loaded TLB (603 and e300)
|
||||
- Selectable Software loaded TLB in addition to hash MMU (755, 7450, e600)
|
||||
- Mix of 32 & 64 bit::
|
||||
|
||||
+--------------+ +----------------+
|
||||
|
@ -24,9 +26,9 @@ Book3S (aka sPAPR)
|
|||
| |
|
||||
| |
|
||||
v v
|
||||
+--------------+ +----------------+ +-------+
|
||||
| 604 | | 750 (G3) | ---> | 750CX |
|
||||
+--------------+ +----------------+ +-------+
|
||||
+--------------+ +-----+ +----------------+ +-------+
|
||||
| 604 | | 755 | <--- | 750 (G3) | ---> | 750CX |
|
||||
+--------------+ +-----+ +----------------+ +-------+
|
||||
| | |
|
||||
| | |
|
||||
v v v
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
Linux 2.6.x on MPC52xx family
|
||||
=============================
|
||||
|
||||
For the latest info, go to http://www.246tNt.com/mpc52xx/
|
||||
For the latest info, go to https://www.246tNt.com/mpc52xx/
|
||||
|
||||
To compile/use :
|
||||
|
||||
|
|
|
@ -5,6 +5,15 @@ Power Architecture 64-bit Linux system call ABI
|
|||
syscall
|
||||
=======
|
||||
|
||||
Invocation
|
||||
----------
|
||||
The syscall is made with the sc instruction, and returns with execution
|
||||
continuing at the instruction following the sc instruction.
|
||||
|
||||
If PPC_FEATURE2_SCV appears in the AT_HWCAP2 ELF auxiliary vector, the
|
||||
scv 0 instruction is an alternative that may provide better performance,
|
||||
with some differences to calling sequence.
|
||||
|
||||
syscall calling sequence\ [1]_ matches the Power Architecture 64-bit ELF ABI
|
||||
specification C function calling sequence, including register preservation
|
||||
rules, with the following differences.
|
||||
|
@ -12,16 +21,23 @@ rules, with the following differences.
|
|||
.. [1] Some syscalls (typically low-level management functions) may have
|
||||
different calling sequences (e.g., rt_sigreturn).
|
||||
|
||||
Parameters and return value
|
||||
---------------------------
|
||||
Parameters
|
||||
----------
|
||||
The system call number is specified in r0.
|
||||
|
||||
There is a maximum of 6 integer parameters to a syscall, passed in r3-r8.
|
||||
|
||||
Both a return value and a return error code are returned. cr0.SO is the return
|
||||
error code, and r3 is the return value or error code. When cr0.SO is clear,
|
||||
the syscall succeeded and r3 is the return value. When cr0.SO is set, the
|
||||
syscall failed and r3 is the error code that generally corresponds to errno.
|
||||
Return value
|
||||
------------
|
||||
- For the sc instruction, both a value and an error condition are returned.
|
||||
cr0.SO is the error condition, and r3 is the return value. When cr0.SO is
|
||||
clear, the syscall succeeded and r3 is the return value. When cr0.SO is set,
|
||||
the syscall failed and r3 is the error value (that normally corresponds to
|
||||
errno).
|
||||
|
||||
- For the scv 0 instruction, the return value indicates failure if it is
|
||||
-4095..-1 (i.e., it is >= -MAX_ERRNO (-4095) as an unsigned comparison),
|
||||
in which case the error value is the negated return value.
|
||||
|
||||
Stack
|
||||
-----
|
||||
|
@ -34,22 +50,23 @@ Register preservation rules match the ELF ABI calling sequence with the
|
|||
following differences:
|
||||
|
||||
=========== ============= ========================================
|
||||
--- For the sc instruction, differences with the ELF ABI ---
|
||||
r0 Volatile (System call number.)
|
||||
r3 Volatile (Parameter 1, and return value.)
|
||||
r4-r8 Volatile (Parameters 2-6.)
|
||||
cr0 Volatile (cr0.SO is the return error condition)
|
||||
cr0 Volatile (cr0.SO is the return error condition.)
|
||||
cr1, cr5-7 Nonvolatile
|
||||
lr Nonvolatile
|
||||
|
||||
--- For the scv 0 instruction, differences with the ELF ABI ---
|
||||
r0 Volatile (System call number.)
|
||||
r3 Volatile (Parameter 1, and return value.)
|
||||
r4-r8 Volatile (Parameters 2-6.)
|
||||
=========== ============= ========================================
|
||||
|
||||
All floating point and vector data registers as well as control and status
|
||||
registers are nonvolatile.
|
||||
|
||||
Invocation
|
||||
----------
|
||||
The syscall is performed with the sc instruction, and returns with execution
|
||||
continuing at the instruction following the sc instruction.
|
||||
|
||||
Transactional Memory
|
||||
--------------------
|
||||
Syscall behavior can change if the processor is in transactional or suspended
|
||||
|
@ -75,6 +92,7 @@ auxiliary vector.
|
|||
returning to the caller. This case is not well defined or supported, so this
|
||||
behavior should not be relied upon.
|
||||
|
||||
scv 0 syscalls will always behave as PPC_FEATURE2_HTM_NOSC.
|
||||
|
||||
vsyscall
|
||||
========
|
||||
|
|
|
@ -2160,9 +2160,12 @@ registers, find a list below:
|
|||
PPC KVM_REG_PPC_MMCRA 64
|
||||
PPC KVM_REG_PPC_MMCR2 64
|
||||
PPC KVM_REG_PPC_MMCRS 64
|
||||
PPC KVM_REG_PPC_MMCR3 64
|
||||
PPC KVM_REG_PPC_SIAR 64
|
||||
PPC KVM_REG_PPC_SDAR 64
|
||||
PPC KVM_REG_PPC_SIER 64
|
||||
PPC KVM_REG_PPC_SIER2 64
|
||||
PPC KVM_REG_PPC_SIER3 64
|
||||
PPC KVM_REG_PPC_PMC1 32
|
||||
PPC KVM_REG_PPC_PMC2 32
|
||||
PPC KVM_REG_PPC_PMC3 32
|
||||
|
|
|
@ -13308,7 +13308,6 @@ F: tools/pci/
|
|||
|
||||
PCI ENHANCED ERROR HANDLING (EEH) FOR POWERPC
|
||||
M: Russell Currey <ruscur@russell.cc>
|
||||
M: Sam Bobroff <sbobroff@linux.ibm.com>
|
||||
M: Oliver O'Halloran <oohall@gmail.com>
|
||||
L: linuxppc-dev@lists.ozlabs.org
|
||||
S: Supported
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#define ADB_IOP_EXPLICIT 0x80 /* nonzero if explicit command */
|
||||
#define ADB_IOP_AUTOPOLL 0x40 /* auto/SRQ polling enabled */
|
||||
#define ADB_IOP_SET_AUTOPOLL 0x20 /* set autopoll device list */
|
||||
#define ADB_IOP_SRQ 0x04 /* SRQ detected */
|
||||
#define ADB_IOP_TIMEOUT 0x02 /* nonzero if timeout */
|
||||
|
||||
|
|
|
@ -131,6 +131,7 @@ config PPC
|
|||
select ARCH_HAS_PTE_DEVMAP if PPC_BOOK3S_64
|
||||
select ARCH_HAS_PTE_SPECIAL
|
||||
select ARCH_HAS_MEMBARRIER_CALLBACKS
|
||||
select ARCH_HAS_MEMBARRIER_SYNC_CORE
|
||||
select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE && PPC_BOOK3S_64
|
||||
select ARCH_HAS_STRICT_KERNEL_RWX if (PPC32 && !HIBERNATION)
|
||||
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
|
||||
|
@ -145,6 +146,8 @@ config PPC
|
|||
select ARCH_SUPPORTS_ATOMIC_RMW
|
||||
select ARCH_USE_BUILTIN_BSWAP
|
||||
select ARCH_USE_CMPXCHG_LOCKREF if PPC64
|
||||
select ARCH_USE_QUEUED_RWLOCKS if PPC_QUEUED_SPINLOCKS
|
||||
select ARCH_USE_QUEUED_SPINLOCKS if PPC_QUEUED_SPINLOCKS
|
||||
select ARCH_WANT_IPC_PARSE_VERSION
|
||||
select ARCH_WEAK_RELEASE_ACQUIRE
|
||||
select BINFMT_ELF
|
||||
|
@ -491,6 +494,19 @@ config HOTPLUG_CPU
|
|||
|
||||
Say N if you are unsure.
|
||||
|
||||
config PPC_QUEUED_SPINLOCKS
|
||||
bool "Queued spinlocks"
|
||||
depends on SMP
|
||||
help
|
||||
Say Y here to use queued spinlocks which give better scalability and
|
||||
fairness on large SMP and NUMA systems without harming single threaded
|
||||
performance.
|
||||
|
||||
This option is currently experimental, the code is more complex and
|
||||
less tested so it defaults to "N" for the moment.
|
||||
|
||||
If unsure, say "N".
|
||||
|
||||
config ARCH_CPU_PROBE_RELEASE
|
||||
def_bool y
|
||||
depends on HOTPLUG_CPU
|
||||
|
@ -834,13 +850,16 @@ config FORCE_MAX_ZONEORDER
|
|||
this in mind when choosing a value for this option.
|
||||
|
||||
config PPC_SUBPAGE_PROT
|
||||
bool "Support setting protections for 4k subpages"
|
||||
bool "Support setting protections for 4k subpages (subpage_prot syscall)"
|
||||
default n
|
||||
depends on PPC_BOOK3S_64 && PPC_64K_PAGES
|
||||
help
|
||||
This option adds support for a system call to allow user programs
|
||||
This option adds support for system call to allow user programs
|
||||
to set access permissions (read/write, readonly, or no access)
|
||||
on the 4k subpages of each 64k page.
|
||||
|
||||
If unsure, say N here.
|
||||
|
||||
config PPC_COPRO_BASE
|
||||
bool
|
||||
|
||||
|
@ -860,12 +879,8 @@ config PPC_DENORMALISATION
|
|||
Add support for handling denormalisation of single precision
|
||||
values. Useful for bare metal only. If unsure say Y here.
|
||||
|
||||
config CMDLINE_BOOL
|
||||
bool "Default bootloader kernel arguments"
|
||||
|
||||
config CMDLINE
|
||||
string "Initial kernel command string" if CMDLINE_BOOL
|
||||
default "console=ttyS0,9600 console=tty0 root=/dev/sda2" if CMDLINE_BOOL
|
||||
string "Initial kernel command string"
|
||||
default ""
|
||||
help
|
||||
On some platforms, there is currently no way for the boot loader to
|
||||
|
@ -1199,6 +1214,7 @@ config TASK_SIZE_BOOL
|
|||
config TASK_SIZE
|
||||
hex "Size of user task space" if TASK_SIZE_BOOL
|
||||
default "0x80000000" if PPC_8xx
|
||||
default "0xb0000000" if PPC_BOOK3S_32 && STRICT_KERNEL_RWX
|
||||
default "0xc0000000"
|
||||
endmenu
|
||||
|
||||
|
|
|
@ -246,7 +246,8 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
|||
# often slow when they are implemented at all
|
||||
KBUILD_CFLAGS += $(call cc-option,-mno-string)
|
||||
|
||||
cpu-as-$(CONFIG_4xx) += -Wa,-m405
|
||||
cpu-as-$(CONFIG_40x) += -Wa,-m405
|
||||
cpu-as-$(CONFIG_44x) += -Wa,-m440
|
||||
cpu-as-$(CONFIG_ALTIVEC) += $(call as-option,-Wa$(comma)-maltivec)
|
||||
cpu-as-$(CONFIG_E200) += -Wa,-me200
|
||||
cpu-as-$(CONFIG_E500) += -Wa,-me500
|
||||
|
|
|
@ -70,10 +70,10 @@ BOOTCFLAGS += -I$(objtree)/$(obj) -I$(srctree)/$(obj)
|
|||
DTC_FLAGS ?= -p 1024
|
||||
|
||||
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/cuboot-hotfoot.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405
|
||||
|
@ -117,7 +117,7 @@ src-wlib-y := string.S crt0.S stdio.c decompress.c main.c \
|
|||
elf_util.c $(zlib-y) devtree.c stdlib.c \
|
||||
oflib.c ofconsole.c cuboot.c
|
||||
|
||||
src-wlib-$(CONFIG_PPC_MPC52XX) += mpc52xx-psc.c
|
||||
src-wlib-$(CONFIG_PPC_MPC52xx) += mpc52xx-psc.c
|
||||
src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S opal.c
|
||||
ifndef CONFIG_PPC64_BOOT_WRAPPER
|
||||
src-wlib-y += crtsavres.S
|
||||
|
|
|
@ -248,7 +248,7 @@ FPGA0: fpga@ebc00000 {
|
|||
};
|
||||
};
|
||||
|
||||
PCIE0: pciex@10100000000 {
|
||||
PCIE0: pcie@10100000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -288,7 +288,7 @@ PCIE0: pciex@10100000000 {
|
|||
0x0 0x0 0x0 0x4 &MPIC 48 0x2 /* int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@20100000000 {
|
||||
PCIE1: pcie@20100000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -328,7 +328,7 @@ PCIE1: pciex@20100000000 {
|
|||
0x0 0x0 0x0 0x4 &MPIC 56 0x2 /* int D */>;
|
||||
};
|
||||
|
||||
PCIE2: pciex@18100000000 {
|
||||
PCIE2: pcie@18100000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -368,7 +368,7 @@ PCIE2: pciex@18100000000 {
|
|||
0x0 0x0 0x0 0x4 &MPIC 64 0x2 /* int D */>;
|
||||
};
|
||||
|
||||
PCIE3: pciex@28100000000 {
|
||||
PCIE3: pcie@28100000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -325,7 +325,7 @@ EMAC0: ethernet@ef600c00 {
|
|||
};
|
||||
};
|
||||
|
||||
PCIE0: pciex@d00000000 {
|
||||
PCIE0: pcie@d00000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -461,7 +461,7 @@ PCIX0: pci@c0ec00000 {
|
|||
interrupt-map = < 0x0 0x0 0x0 0x0 &UIC1 0x0 0x8 >;
|
||||
};
|
||||
|
||||
PCIE0: pciex@d00000000 {
|
||||
PCIE0: pcie@d00000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -503,7 +503,7 @@ PCIE0: pciex@d00000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC3 0xf 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@d20000000 {
|
||||
PCIE1: pcie@d20000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -122,7 +122,7 @@ rtc@68 {
|
|||
};
|
||||
};
|
||||
|
||||
PCIE0: pciex@10100000000 { // 4xGBIF1
|
||||
PCIE0: pcie@10100000000 { // 4xGBIF1
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -160,7 +160,7 @@ PCIE0: pciex@10100000000 { // 4xGBIF1
|
|||
0x0 0x0 0x0 0x4 &MPIC 49 0x2 /* int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@30100000000 { // 4xGBIF0
|
||||
PCIE1: pcie@30100000000 { // 4xGBIF0
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -197,7 +197,7 @@ PCIE1: pciex@30100000000 { // 4xGBIF0
|
|||
0x0 0x0 0x0 0x4 &MPIC 41 0x2 /* int D */>;
|
||||
};
|
||||
|
||||
PCIE2: pciex@38100000000 { // 2xGBIF0
|
||||
PCIE2: pcie@38100000000 { // 2xGBIF0
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -125,11 +125,11 @@ partition@fs {
|
|||
|
||||
i2c@118100 {
|
||||
eeprom@51 {
|
||||
compatible = "atmel,24c256";
|
||||
compatible = "atmel,spd";
|
||||
reg = <0x51>;
|
||||
};
|
||||
eeprom@52 {
|
||||
compatible = "atmel,24c256";
|
||||
compatible = "atmel,spd";
|
||||
reg = <0x52>;
|
||||
};
|
||||
rtc@68 {
|
||||
|
@ -143,6 +143,45 @@ adt7461@4c {
|
|||
};
|
||||
};
|
||||
|
||||
i2c@118000 {
|
||||
zl2006@21 {
|
||||
compatible = "zl2006";
|
||||
reg = <0x21>;
|
||||
};
|
||||
zl2006@22 {
|
||||
compatible = "zl2006";
|
||||
reg = <0x22>;
|
||||
};
|
||||
zl2006@23 {
|
||||
compatible = "zl2006";
|
||||
reg = <0x23>;
|
||||
};
|
||||
zl2006@24 {
|
||||
compatible = "zl2006";
|
||||
reg = <0x24>;
|
||||
};
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c64";
|
||||
reg = <0x50>;
|
||||
};
|
||||
eeprom@55 {
|
||||
compatible = "atmel,24c64";
|
||||
reg = <0x55>;
|
||||
};
|
||||
eeprom@56 {
|
||||
compatible = "atmel,24c64";
|
||||
reg = <0x56>;
|
||||
};
|
||||
eeprom@57 {
|
||||
compatible = "atmel,24c02";
|
||||
reg = <0x57>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@119100 {
|
||||
/* 0x6E: ICS9FG108 */
|
||||
};
|
||||
|
||||
usb0: usb@210000 {
|
||||
phy_type = "ulpi";
|
||||
};
|
||||
|
|
|
@ -489,7 +489,7 @@ PCIX0: pci@c0ec00000 {
|
|||
interrupt-map = < 0x0 0x0 0x0 0x0 &UIC1 0x0 0x8 >;
|
||||
};
|
||||
|
||||
PCIE0: pciex@d00000000 {
|
||||
PCIE0: pcie@d00000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -531,7 +531,7 @@ PCIE0: pciex@d00000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC3 0xf 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@d20000000 {
|
||||
PCIE1: pcie@d20000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -237,7 +237,7 @@ EMAC0: ethernet@ef600900 {
|
|||
};
|
||||
};
|
||||
|
||||
PCIE0: pciex@a0000000 {
|
||||
PCIE0: pcie@a0000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -315,7 +315,7 @@ PCIX0: pci@c0ec00000 {
|
|||
interrupt-map = <0x0 0x0 0x0 0x0 &UIC1 19 0x8>;
|
||||
};
|
||||
|
||||
PCIE0: pciex@d00000000 {
|
||||
PCIE0: pcie@d00000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -356,7 +356,7 @@ PCIE0: pciex@d00000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@d20000000 {
|
||||
PCIE1: pcie@d20000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -319,7 +319,7 @@ PCIX0: pci@c0ec00000 {
|
|||
>;
|
||||
};
|
||||
|
||||
PCIE0: pciex@d00000000 {
|
||||
PCIE0: pcie@d00000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -360,7 +360,7 @@ PCIE0: pciex@d00000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@d20000000 {
|
||||
PCIE1: pcie@d20000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -401,7 +401,7 @@ PCIE1: pciex@d20000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE2: pciex@d40000000 {
|
||||
PCIE2: pcie@d40000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -322,7 +322,7 @@ EMAC1: ethernet@ef600a00 {
|
|||
};
|
||||
};
|
||||
|
||||
PCIE0: pciex@a0000000 {
|
||||
PCIE0: pcie@a0000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -363,7 +363,7 @@ PCIE0: pciex@a0000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC2 0x3 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@c0000000 {
|
||||
PCIE1: pcie@c0000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -268,7 +268,7 @@ EMAC1: ethernet@ef600a00 {
|
|||
};
|
||||
};
|
||||
|
||||
PCIE0: pciex@a0000000 {
|
||||
PCIE0: pcie@a0000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -309,7 +309,7 @@ PCIE0: pciex@a0000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC2 0x3 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@c0000000 {
|
||||
PCIE1: pcie@c0000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -235,7 +235,7 @@ EMAC0: ethernet@ef600a00 {
|
|||
has-new-stacr-staopc;
|
||||
};
|
||||
};
|
||||
PCIE0: pciex@d00000000 {
|
||||
PCIE0: pcie@d00000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -276,7 +276,7 @@ PCIE0: pciex@d00000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE1: pciex@d20000000 {
|
||||
PCIE1: pcie@d20000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
@ -317,7 +317,7 @@ PCIE1: pciex@d20000000 {
|
|||
0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>;
|
||||
};
|
||||
|
||||
PCIE2: pciex@d40000000 {
|
||||
PCIE2: pcie@d40000000 {
|
||||
device_type = "pci";
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
|
|
|
@ -104,7 +104,7 @@ static struct addr_range prep_initrd(struct addr_range vmlinux, void *chosen,
|
|||
{
|
||||
/* If we have an image attached to us, it overrides anything
|
||||
* supplied by the loader. */
|
||||
if (_initrd_end > _initrd_start) {
|
||||
if (&_initrd_end > &_initrd_start) {
|
||||
printf("Attached initrd image at 0x%p-0x%p\n\r",
|
||||
_initrd_start, _initrd_end);
|
||||
initrd_addr = (unsigned long)_initrd_start;
|
||||
|
@ -152,7 +152,7 @@ static void prep_esm_blob(struct addr_range vmlinux, void *chosen)
|
|||
unsigned long esm_blob_addr, esm_blob_size;
|
||||
|
||||
/* Do we have an ESM (Enter Secure Mode) blob? */
|
||||
if (_esm_blob_end <= _esm_blob_start)
|
||||
if (&_esm_blob_end <= &_esm_blob_start)
|
||||
return;
|
||||
|
||||
printf("Attached ESM blob at 0x%p-0x%p\n\r",
|
||||
|
|
|
@ -127,7 +127,7 @@ void platform_init(void)
|
|||
ps3_repository_read_rm_size(&rm_size);
|
||||
dt_fixup_memory(0, rm_size);
|
||||
|
||||
if (_initrd_end > _initrd_start) {
|
||||
if (&_initrd_end > &_initrd_start) {
|
||||
setprop_val(chosen, "linux,initrd-start", (u32)(_initrd_start));
|
||||
setprop_val(chosen, "linux,initrd-end", (u32)(_initrd_end));
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@ int serial_console_init(void)
|
|||
dt_is_compatible(devp, "fsl,cpm2-smc-uart"))
|
||||
rc = cpm_console_init(devp, &serial_cd);
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_MPC52XX
|
||||
#ifdef CONFIG_PPC_MPC52xx
|
||||
else if (dt_is_compatible(devp, "fsl,mpc5200-psc-uart"))
|
||||
rc = mpc5200_psc_console_init(devp, &serial_cd);
|
||||
#endif
|
||||
|
|
|
@ -19,8 +19,6 @@ CONFIG_HIGHMEM=y
|
|||
CONFIG_HZ_100=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
# CONFIG_SUSPEND is not set
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
|
@ -58,7 +56,6 @@ CONFIG_BLK_DEV_SD=y
|
|||
# CONFIG_NET_VENDOR_DEC is not set
|
||||
# CONFIG_NET_VENDOR_DLINK is not set
|
||||
# CONFIG_NET_VENDOR_EMULEX is not set
|
||||
# CONFIG_NET_VENDOR_EXAR is not set
|
||||
CONFIG_IBM_EMAC=y
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
# CONFIG_NET_VENDOR_MELLANOX is not set
|
||||
|
|
|
@ -11,8 +11,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_ARCHES=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -9,8 +9,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_BAMBOO=y
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -11,8 +11,6 @@ CONFIG_EXPERT=y
|
|||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_BLUESTONE=y
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -11,8 +11,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_CANYONLANDS=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -17,8 +17,6 @@ CONFIG_HIGHMEM=y
|
|||
CONFIG_HZ_100=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
# CONFIG_SUSPEND is not set
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
|
|
|
@ -10,8 +10,6 @@ CONFIG_MODULES=y
|
|||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_EIGER=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_NET=y
|
||||
|
|
|
@ -28,7 +28,6 @@ CONFIG_476FPE_ERR46=y
|
|||
CONFIG_SWIOTLB=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_CRASH_DUMP=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="ip=on rw"
|
||||
# CONFIG_SUSPEND is not set
|
||||
# CONFIG_PCI is not set
|
||||
|
|
|
@ -9,8 +9,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_EBONY is not set
|
||||
CONFIG_ICON=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_NET=y
|
||||
|
|
|
@ -17,7 +17,6 @@ CONFIG_ISS4xx=y
|
|||
CONFIG_HZ_100=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="root=/dev/issblk0"
|
||||
# CONFIG_PCI is not set
|
||||
CONFIG_ADVANCED_OPTIONS=y
|
||||
|
|
|
@ -9,8 +9,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_KATMAI=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -10,8 +10,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_EBONY is not set
|
||||
CONFIG_RAINIER=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -10,8 +10,6 @@ CONFIG_MODULES=y
|
|||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_REDWOOD=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
# CONFIG_PCIEASPM is not set
|
||||
CONFIG_NET=y
|
||||
|
|
|
@ -12,8 +12,6 @@ CONFIG_PARTITION_ADVANCED=y
|
|||
CONFIG_AMIGA_PARTITION=y
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_SAM440EP=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -11,8 +11,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_SEQUOIA=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -9,8 +9,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_EBONY is not set
|
||||
CONFIG_TAISHAN=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
|
|
@ -14,7 +14,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||
CONFIG_WARP=y
|
||||
CONFIG_PPC4xx_GPIO=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="ip=on"
|
||||
# CONFIG_PCI is not set
|
||||
CONFIG_NET=y
|
||||
|
|
|
@ -67,7 +67,6 @@ CONFIG_MTD_CFI_AMDSTD=y
|
|||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND_FSL_ELBC=y
|
||||
CONFIG_MTD_NAND_FSL_IFC=y
|
||||
CONFIG_MTD_RAW_NAND=y
|
||||
|
|
|
@ -51,9 +51,6 @@ CONFIG_NET_IPIP=y
|
|||
CONFIG_IP_MROUTE=y
|
||||
CONFIG_IP_PIMSM_V1=y
|
||||
CONFIG_IP_PIMSM_V2=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
|
|
|
@ -32,8 +32,6 @@ CONFIG_HW_RANDOM=y
|
|||
CONFIG_HZ_1000=y
|
||||
CONFIG_I2C_MPC=y
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
CONFIG_INPUT_FF_MEMLESS=m
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
|
|
|
@ -56,7 +56,6 @@ CONFIG_IKCONFIG=y
|
|||
CONFIG_INET_AH=y
|
||||
CONFIG_INET_ESP=y
|
||||
CONFIG_INET_IPCOMP=y
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_MROUTE=y
|
||||
|
|
|
@ -51,7 +51,6 @@ CONFIG_NF_CONNTRACK_FTP=m
|
|||
CONFIG_NF_CONNTRACK_IRC=m
|
||||
CONFIG_NF_CONNTRACK_TFTP=m
|
||||
CONFIG_NF_CT_NETLINK=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
|
|
@ -13,7 +13,6 @@ CONFIG_EMBEDDED6xx=y
|
|||
CONFIG_PPC_HOLLY=y
|
||||
CONFIG_GEN_RTC=y
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0,115200"
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_NET=y
|
||||
|
|
|
@ -37,7 +37,6 @@ CONFIG_NF_CONNTRACK_TFTP=m
|
|||
CONFIG_NETFILTER_XT_MATCH_MAC=m
|
||||
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STATE=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
|
|
|
@ -47,7 +47,6 @@ CONFIG_MTD_UBI=y
|
|||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=1
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_BLK_DEV_RAM_DAX=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
CONFIG_EEPROM_AT25=y
|
||||
CONFIG_SCSI=y
|
||||
|
|
|
@ -19,7 +19,6 @@ CONFIG_MPC836x_MDS=y
|
|||
CONFIG_MPC836x_RDK=y
|
||||
CONFIG_MPC837x_MDS=y
|
||||
CONFIG_MPC837x_RDB=y
|
||||
CONFIG_SBC834x=y
|
||||
CONFIG_ASP834x=y
|
||||
CONFIG_QE_GPIO=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
|
|
|
@ -20,10 +20,9 @@ CONFIG_EMBEDDED6xx=y
|
|||
CONFIG_MVME5100=y
|
||||
CONFIG_KVM_GUEST=y
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_CMDLINE="console=ttyS0,9600 ip=dhcp root=/dev/nfs"
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0,9600 ip=dhcp root=/dev/nfs"
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
|
@ -46,7 +45,6 @@ CONFIG_NF_CONNTRACK_TFTP=m
|
|||
CONFIG_NETFILTER_XT_MATCH_MAC=m
|
||||
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STATE=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
|
|
|
@ -58,7 +58,6 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
|
|||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_CHR_DEV_OSST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
|
|
|
@ -75,7 +75,6 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
|
|||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TIME=m
|
||||
CONFIG_NETFILTER_XT_MATCH_U32=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
|
@ -90,13 +89,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
|||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_IP_DCCP=m
|
||||
CONFIG_IRDA=m
|
||||
CONFIG_IRLAN=m
|
||||
CONFIG_IRNET=m
|
||||
CONFIG_IRCOMM=m
|
||||
CONFIG_IRDA_CACHE_LAST_LSAP=y
|
||||
CONFIG_IRDA_FAST_RR=y
|
||||
CONFIG_IRTTY_SIR=m
|
||||
CONFIG_BT=m
|
||||
CONFIG_BT_RFCOMM=m
|
||||
CONFIG_BT_RFCOMM_TTY=y
|
||||
|
|
|
@ -64,7 +64,6 @@ CONFIG_HWPOISON_INJECT=m
|
|||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
CONFIG_PPC_SUBPAGE_PROT=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
|
@ -246,7 +245,6 @@ CONFIG_INFINIBAND=m
|
|||
CONFIG_INFINIBAND_USER_MAD=m
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
CONFIG_INFINIBAND_CXGB3=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_MLX4_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
|
|
|
@ -20,9 +20,6 @@ CONFIG_INET=y
|
|||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
|
|
|
@ -268,7 +268,6 @@ CONFIG_INFINIBAND=m
|
|||
CONFIG_INFINIBAND_USER_MAD=m
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
CONFIG_INFINIBAND_CXGB3=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_MLX4_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
|
|
|
@ -53,7 +53,6 @@ CONFIG_MPC836x_MDS=y
|
|||
CONFIG_MPC836x_RDK=y
|
||||
CONFIG_MPC837x_MDS=y
|
||||
CONFIG_MPC837x_RDB=y
|
||||
CONFIG_SBC834x=y
|
||||
CONFIG_ASP834x=y
|
||||
CONFIG_PPC_86xx=y
|
||||
CONFIG_MPC8641_HPCN=y
|
||||
|
@ -187,7 +186,6 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
|
|||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TIME=m
|
||||
CONFIG_NETFILTER_XT_MATCH_U32=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
|
@ -203,7 +201,6 @@ CONFIG_IP_NF_SECURITY=m
|
|||
CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NF_CONNTRACK_IPV6=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
||||
|
@ -241,7 +238,6 @@ CONFIG_BRIDGE_EBT_SNAT=m
|
|||
CONFIG_BRIDGE_EBT_LOG=m
|
||||
CONFIG_BRIDGE_EBT_NFLOG=m
|
||||
CONFIG_IP_DCCP=m
|
||||
CONFIG_NET_DCCPPROBE=m
|
||||
CONFIG_TIPC=m
|
||||
CONFIG_ATM=m
|
||||
CONFIG_ATM_CLIP=m
|
||||
|
@ -251,7 +247,6 @@ CONFIG_BRIDGE=m
|
|||
CONFIG_VLAN_8021Q=m
|
||||
CONFIG_DECNET=m
|
||||
CONFIG_DECNET_ROUTER=y
|
||||
CONFIG_IPX=m
|
||||
CONFIG_ATALK=m
|
||||
CONFIG_DEV_APPLETALK=m
|
||||
CONFIG_IPDDP=m
|
||||
|
@ -297,26 +292,6 @@ CONFIG_NET_ACT_NAT=m
|
|||
CONFIG_NET_ACT_PEDIT=m
|
||||
CONFIG_NET_ACT_SIMP=m
|
||||
CONFIG_NET_ACT_SKBEDIT=m
|
||||
CONFIG_IRDA=m
|
||||
CONFIG_IRLAN=m
|
||||
CONFIG_IRNET=m
|
||||
CONFIG_IRCOMM=m
|
||||
CONFIG_IRDA_CACHE_LAST_LSAP=y
|
||||
CONFIG_IRDA_FAST_RR=y
|
||||
CONFIG_IRTTY_SIR=m
|
||||
CONFIG_KINGSUN_DONGLE=m
|
||||
CONFIG_KSDAZZLE_DONGLE=m
|
||||
CONFIG_KS959_DONGLE=m
|
||||
CONFIG_USB_IRDA=m
|
||||
CONFIG_SIGMATEL_FIR=m
|
||||
CONFIG_NSC_FIR=m
|
||||
CONFIG_WINBOND_FIR=m
|
||||
CONFIG_TOSHIBA_FIR=m
|
||||
CONFIG_SMC_IRCC_FIR=m
|
||||
CONFIG_ALI_FIR=m
|
||||
CONFIG_VLSI_FIR=m
|
||||
CONFIG_VIA_FIR=m
|
||||
CONFIG_MCS_FIR=m
|
||||
CONFIG_BT=m
|
||||
CONFIG_BT_RFCOMM=m
|
||||
CONFIG_BT_RFCOMM_TTY=y
|
||||
|
@ -332,7 +307,6 @@ CONFIG_BT_HCIBFUSB=m
|
|||
CONFIG_BT_HCIDTL1=m
|
||||
CONFIG_BT_HCIBT3C=m
|
||||
CONFIG_BT_HCIBLUECARD=m
|
||||
CONFIG_BT_HCIBTUART=m
|
||||
CONFIG_BT_HCIVHCI=m
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_MAC80211=m
|
||||
|
@ -366,7 +340,6 @@ CONFIG_EEPROM_93CX6=m
|
|||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
CONFIG_BLK_DEV_SR=m
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=m
|
||||
|
@ -663,7 +636,6 @@ CONFIG_I2C_MPC=m
|
|||
CONFIG_I2C_PCA_PLATFORM=m
|
||||
CONFIG_I2C_SIMTEC=m
|
||||
CONFIG_I2C_PARPORT=m
|
||||
CONFIG_I2C_PARPORT_LIGHT=m
|
||||
CONFIG_I2C_TINY_USB=m
|
||||
CONFIG_I2C_PCA_ISA=m
|
||||
CONFIG_I2C_STUB=m
|
||||
|
@ -676,7 +648,6 @@ CONFIG_W1_SLAVE_THERM=m
|
|||
CONFIG_W1_SLAVE_SMEM=m
|
||||
CONFIG_W1_SLAVE_DS2433=m
|
||||
CONFIG_W1_SLAVE_DS2433_CRC=y
|
||||
CONFIG_W1_SLAVE_DS2760=m
|
||||
CONFIG_APM_POWER=m
|
||||
CONFIG_BATTERY_PMU=m
|
||||
CONFIG_HWMON=m
|
||||
|
@ -1065,15 +1036,6 @@ CONFIG_CIFS_UPCALL=y
|
|||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
CONFIG_CIFS_DFS_UPCALL=y
|
||||
CONFIG_NCP_FS=m
|
||||
CONFIG_NCPFS_PACKET_SIGNING=y
|
||||
CONFIG_NCPFS_IOCTL_LOCKING=y
|
||||
CONFIG_NCPFS_STRONG=y
|
||||
CONFIG_NCPFS_NFS_NS=y
|
||||
CONFIG_NCPFS_OS2_NS=y
|
||||
CONFIG_NCPFS_SMALLDOS=y
|
||||
CONFIG_NCPFS_NLS=y
|
||||
CONFIG_NCPFS_EXTRAS=y
|
||||
CONFIG_CODA_FS=m
|
||||
CONFIG_9P_FS=m
|
||||
CONFIG_NLS_DEFAULT="utf8"
|
||||
|
@ -1117,7 +1079,6 @@ CONFIG_NLS_KOI8_U=m
|
|||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_UNUSED_SYMBOLS=y
|
||||
CONFIG_HEADERS_INSTALL=y
|
||||
CONFIG_HEADERS_CHECK=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_OBJECTS=y
|
||||
|
|
|
@ -34,8 +34,6 @@ CONFIG_KEXEC=y
|
|||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_DEBUG=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
|
|
|
@ -57,7 +57,6 @@ CONFIG_MEMORY_HOTREMOVE=y
|
|||
CONFIG_KSM=y
|
||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
CONFIG_PPC_SUBPAGE_PROT=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_RPA=m
|
||||
|
@ -94,6 +93,7 @@ CONFIG_BLK_DEV_NBD=m
|
|||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_VIRTIO_BLK=m
|
||||
CONFIG_BLK_DEV_NVME=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
|
@ -224,7 +224,6 @@ CONFIG_INFINIBAND=m
|
|||
CONFIG_INFINIBAND_USER_MAD=m
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
CONFIG_INFINIBAND_CXGB3=m
|
||||
CONFIG_INFINIBAND_CXGB4=m
|
||||
CONFIG_MLX4_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
|
|
|
@ -45,7 +45,6 @@ CONFIG_IRQ_ALL_CPUS=y
|
|||
CONFIG_NUMA=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=tty0 console=hvc0 ipr.fast_reboot=1 quiet"
|
||||
# CONFIG_SECCOMP is not set
|
||||
# CONFIG_PPC_MEM_KEYS is not set
|
||||
|
|
|
@ -12,7 +12,6 @@ CONFIG_EMBEDDED6xx=y
|
|||
CONFIG_STORCENTER=y
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0,115200"
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_NET=y
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
* We then use fixed point Barrett reduction to compute a mod n over GF(2)
|
||||
* for n = CRC using POWER8 instructions. We use x = 32.
|
||||
*
|
||||
* http://en.wikipedia.org/wiki/Barrett_reduction
|
||||
* https://en.wikipedia.org/wiki/Barrett_reduction
|
||||
*
|
||||
* Copyright (C) 2015 Anton Blanchard <anton@au.ibm.com>, IBM
|
||||
*/
|
||||
|
|
|
@ -7,5 +7,6 @@ generic-y += export.h
|
|||
generic-y += kvm_types.h
|
||||
generic-y += local64.h
|
||||
generic-y += mcs_spinlock.h
|
||||
generic-y += qrwlock.h
|
||||
generic-y += vtime.h
|
||||
generic-y += early_ioremap.h
|
||||
|
|
|
@ -98,7 +98,7 @@ unsigned long __init early_init(unsigned long dt_ptr);
|
|||
void __init machine_init(u64 dt_ptr);
|
||||
#endif
|
||||
long system_call_exception(long r3, long r4, long r5, long r6, long r7, long r8, unsigned long r0, struct pt_regs *regs);
|
||||
notrace unsigned long syscall_exit_prepare(unsigned long r3, struct pt_regs *regs);
|
||||
notrace unsigned long syscall_exit_prepare(unsigned long r3, struct pt_regs *regs, long scv);
|
||||
notrace unsigned long interrupt_exit_user_prepare(struct pt_regs *regs, unsigned long msr);
|
||||
notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs, unsigned long msr);
|
||||
|
||||
|
@ -144,13 +144,13 @@ void _kvmppc_restore_tm_pr(struct kvm_vcpu *vcpu, u64 guest_msr);
|
|||
void _kvmppc_save_tm_pr(struct kvm_vcpu *vcpu, u64 guest_msr);
|
||||
|
||||
/* Patch sites */
|
||||
extern s32 patch__call_flush_count_cache;
|
||||
extern s32 patch__call_flush_branch_caches;
|
||||
extern s32 patch__flush_count_cache_return;
|
||||
extern s32 patch__flush_link_stack_return;
|
||||
extern s32 patch__call_kvm_flush_link_stack;
|
||||
extern s32 patch__memset_nocache, patch__memcpy_nocache;
|
||||
|
||||
extern long flush_count_cache;
|
||||
extern long flush_branch_caches;
|
||||
extern long kvm_flush_link_stack;
|
||||
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
|
|
|
@ -191,6 +191,34 @@ static __inline__ int atomic_dec_return_relaxed(atomic_t *v)
|
|||
#define atomic_xchg(v, new) (xchg(&((v)->counter), new))
|
||||
#define atomic_xchg_relaxed(v, new) xchg_relaxed(&((v)->counter), (new))
|
||||
|
||||
/*
|
||||
* Don't want to override the generic atomic_try_cmpxchg_acquire, because
|
||||
* we add a lock hint to the lwarx, which may not be wanted for the
|
||||
* _acquire case (and is not used by the other _acquire variants so it
|
||||
* would be a surprise).
|
||||
*/
|
||||
static __always_inline bool
|
||||
atomic_try_cmpxchg_lock(atomic_t *v, int *old, int new)
|
||||
{
|
||||
int r, o = *old;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1:\t" PPC_LWARX(%0,0,%2,1) " # atomic_try_cmpxchg_acquire \n"
|
||||
" cmpw 0,%0,%3 \n"
|
||||
" bne- 2f \n"
|
||||
" stwcx. %4,0,%2 \n"
|
||||
" bne- 1b \n"
|
||||
"\t" PPC_ACQUIRE_BARRIER " \n"
|
||||
"2: \n"
|
||||
: "=&r" (r), "+m" (v->counter)
|
||||
: "r" (&v->counter), "r" (o), "r" (new)
|
||||
: "cr0", "memory");
|
||||
|
||||
if (unlikely(r != o))
|
||||
*old = r;
|
||||
return likely(r == o);
|
||||
}
|
||||
|
||||
/**
|
||||
* atomic_fetch_add_unless - add unless the number is a given value
|
||||
* @v: pointer of type atomic_t
|
||||
|
|
|
@ -7,6 +7,10 @@
|
|||
|
||||
#include <asm/asm-const.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <asm/ppc-opcode.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Memory barrier.
|
||||
* The sync instruction guarantees that all memory accesses initiated
|
||||
|
@ -76,6 +80,22 @@ do { \
|
|||
___p1; \
|
||||
})
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#define smp_cond_load_relaxed(ptr, cond_expr) ({ \
|
||||
typeof(ptr) __PTR = (ptr); \
|
||||
__unqual_scalar_typeof(*ptr) VAL; \
|
||||
VAL = READ_ONCE(*__PTR); \
|
||||
if (unlikely(!(cond_expr))) { \
|
||||
spin_begin(); \
|
||||
do { \
|
||||
VAL = READ_ONCE(*__PTR); \
|
||||
} while (!(cond_expr)); \
|
||||
spin_end(); \
|
||||
} \
|
||||
(typeof(*ptr))VAL; \
|
||||
})
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
#define NOSPEC_BARRIER_SLOT nop
|
||||
#elif defined(CONFIG_PPC_FSL_BOOK3E)
|
||||
|
@ -97,6 +117,15 @@ do { \
|
|||
#define barrier_nospec()
|
||||
#endif /* CONFIG_PPC_BARRIER_NOSPEC */
|
||||
|
||||
/*
|
||||
* pmem_wmb() ensures that all stores for which the modification
|
||||
* are written to persistent storage by preceding dcbfps/dcbstps
|
||||
* instructions have updated persistent storage before any data
|
||||
* access or data transfer caused by subsequent instructions is
|
||||
* initiated.
|
||||
*/
|
||||
#define pmem_wmb() __asm__ __volatile__(PPC_PHWSYNC ::: "memory")
|
||||
|
||||
#include <asm-generic/barrier.h>
|
||||
|
||||
#endif /* _ASM_POWERPC_BARRIER_H */
|
||||
|
|
|
@ -184,17 +184,7 @@ int map_kernel_page(unsigned long va, phys_addr_t pa, pgprot_t prot);
|
|||
*/
|
||||
#define VMALLOC_OFFSET (0x1000000) /* 16M */
|
||||
|
||||
/*
|
||||
* With CONFIG_STRICT_KERNEL_RWX, kernel segments are set NX. But when modules
|
||||
* are used, NX cannot be set on VMALLOC space. So vmalloc VM space and linear
|
||||
* memory shall not share segments.
|
||||
*/
|
||||
#if defined(CONFIG_STRICT_KERNEL_RWX) && defined(CONFIG_MODULES)
|
||||
#define VMALLOC_START ((ALIGN((long)high_memory, 256L << 20) + VMALLOC_OFFSET) & \
|
||||
~(VMALLOC_OFFSET - 1))
|
||||
#else
|
||||
#define VMALLOC_START ((((long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1)))
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KASAN_VMALLOC
|
||||
#define VMALLOC_END ALIGN_DOWN(ioremap_bot, PAGE_SIZE << KASAN_SHADOW_SCALE_SHIFT)
|
||||
|
@ -202,6 +192,11 @@ int map_kernel_page(unsigned long va, phys_addr_t pa, pgprot_t prot);
|
|||
#define VMALLOC_END ioremap_bot
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_STRICT_KERNEL_RWX
|
||||
#define MODULES_END ALIGN_DOWN(PAGE_OFFSET, SZ_256M)
|
||||
#define MODULES_VADDR (MODULES_END - SZ_256M)
|
||||
#endif
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <linux/sched.h>
|
||||
#include <linux/threads.h>
|
||||
|
|
|
@ -34,11 +34,11 @@
|
|||
#define H_PUD_TABLE_SIZE (sizeof(pud_t) << H_PUD_INDEX_SIZE)
|
||||
#define H_PGD_TABLE_SIZE (sizeof(pgd_t) << H_PGD_INDEX_SIZE)
|
||||
|
||||
#define H_PAGE_F_GIX_SHIFT 53
|
||||
#define H_PAGE_F_SECOND _RPAGE_RPN44 /* HPTE is in 2ndary HPTEG */
|
||||
#define H_PAGE_F_GIX (_RPAGE_RPN43 | _RPAGE_RPN42 | _RPAGE_RPN41)
|
||||
#define H_PAGE_BUSY _RPAGE_RSV1 /* software: PTE & hash are busy */
|
||||
#define H_PAGE_HASHPTE _RPAGE_RSV2 /* software: PTE & hash are busy */
|
||||
#define H_PAGE_F_GIX_SHIFT _PAGE_PA_MAX
|
||||
#define H_PAGE_F_SECOND _RPAGE_PKEY_BIT0 /* HPTE is in 2ndary HPTEG */
|
||||
#define H_PAGE_F_GIX (_RPAGE_RPN43 | _RPAGE_RPN42 | _RPAGE_RPN41)
|
||||
#define H_PAGE_BUSY _RPAGE_RSV1
|
||||
#define H_PAGE_HASHPTE _RPAGE_PKEY_BIT4
|
||||
|
||||
/* PTE flags to conserve for HPTE identification */
|
||||
#define _PAGE_HPTEFLAGS (H_PAGE_BUSY | H_PAGE_HASHPTE | \
|
||||
|
@ -57,11 +57,12 @@
|
|||
#define H_PMD_FRAG_NR (PAGE_SIZE >> H_PMD_FRAG_SIZE_SHIFT)
|
||||
|
||||
/* memory key bits, only 8 keys supported */
|
||||
#define H_PTE_PKEY_BIT0 0
|
||||
#define H_PTE_PKEY_BIT1 0
|
||||
#define H_PTE_PKEY_BIT2 _RPAGE_RSV3
|
||||
#define H_PTE_PKEY_BIT3 _RPAGE_RSV4
|
||||
#define H_PTE_PKEY_BIT4 _RPAGE_RSV5
|
||||
#define H_PTE_PKEY_BIT4 0
|
||||
#define H_PTE_PKEY_BIT3 0
|
||||
#define H_PTE_PKEY_BIT2 _RPAGE_PKEY_BIT3
|
||||
#define H_PTE_PKEY_BIT1 _RPAGE_PKEY_BIT2
|
||||
#define H_PTE_PKEY_BIT0 _RPAGE_PKEY_BIT1
|
||||
|
||||
|
||||
/*
|
||||
* On all 4K setups, remap_4k_pfn() equates to remap_pfn_range()
|
||||
|
|
|
@ -32,15 +32,15 @@
|
|||
*/
|
||||
#define H_PAGE_COMBO _RPAGE_RPN0 /* this is a combo 4k page */
|
||||
#define H_PAGE_4K_PFN _RPAGE_RPN1 /* PFN is for a single 4k page */
|
||||
#define H_PAGE_BUSY _RPAGE_RPN44 /* software: PTE & hash are busy */
|
||||
#define H_PAGE_BUSY _RPAGE_RSV1 /* software: PTE & hash are busy */
|
||||
#define H_PAGE_HASHPTE _RPAGE_RPN43 /* PTE has associated HPTE */
|
||||
|
||||
/* memory key bits. */
|
||||
#define H_PTE_PKEY_BIT0 _RPAGE_RSV1
|
||||
#define H_PTE_PKEY_BIT1 _RPAGE_RSV2
|
||||
#define H_PTE_PKEY_BIT2 _RPAGE_RSV3
|
||||
#define H_PTE_PKEY_BIT3 _RPAGE_RSV4
|
||||
#define H_PTE_PKEY_BIT4 _RPAGE_RSV5
|
||||
#define H_PTE_PKEY_BIT4 _RPAGE_PKEY_BIT4
|
||||
#define H_PTE_PKEY_BIT3 _RPAGE_PKEY_BIT3
|
||||
#define H_PTE_PKEY_BIT2 _RPAGE_PKEY_BIT2
|
||||
#define H_PTE_PKEY_BIT1 _RPAGE_PKEY_BIT1
|
||||
#define H_PTE_PKEY_BIT0 _RPAGE_PKEY_BIT0
|
||||
|
||||
/*
|
||||
* We need to differentiate between explicit huge page and THP huge
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _ASM_POWERPC_BOOK3S_64_HASH_PKEY_H
|
||||
#define _ASM_POWERPC_BOOK3S_64_HASH_PKEY_H
|
||||
|
||||
static inline u64 hash__vmflag_to_pte_pkey_bits(u64 vm_flags)
|
||||
{
|
||||
return (((vm_flags & VM_PKEY_BIT0) ? H_PTE_PKEY_BIT0 : 0x0UL) |
|
||||
((vm_flags & VM_PKEY_BIT1) ? H_PTE_PKEY_BIT1 : 0x0UL) |
|
||||
((vm_flags & VM_PKEY_BIT2) ? H_PTE_PKEY_BIT2 : 0x0UL) |
|
||||
((vm_flags & VM_PKEY_BIT3) ? H_PTE_PKEY_BIT3 : 0x0UL) |
|
||||
((vm_flags & VM_PKEY_BIT4) ? H_PTE_PKEY_BIT4 : 0x0UL));
|
||||
}
|
||||
|
||||
static inline u64 pte_to_hpte_pkey_bits(u64 pteflags)
|
||||
{
|
||||
return (((pteflags & H_PTE_PKEY_BIT4) ? HPTE_R_KEY_BIT4 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT3) ? HPTE_R_KEY_BIT3 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT2) ? HPTE_R_KEY_BIT2 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT1) ? HPTE_R_KEY_BIT1 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT0) ? HPTE_R_KEY_BIT0 : 0x0UL));
|
||||
}
|
||||
|
||||
static inline u16 hash__pte_to_pkey_bits(u64 pteflags)
|
||||
{
|
||||
return (((pteflags & H_PTE_PKEY_BIT4) ? 0x10 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT3) ? 0x8 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT2) ? 0x4 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT1) ? 0x2 : 0x0UL) |
|
||||
((pteflags & H_PTE_PKEY_BIT0) ? 0x1 : 0x0UL));
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,23 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
#ifndef _ASM_POWERPC_BOOK3S_64_KEXEC_H_
|
||||
#define _ASM_POWERPC_BOOK3S_64_KEXEC_H_
|
||||
|
||||
|
||||
#define reset_sprs reset_sprs
|
||||
static inline void reset_sprs(void)
|
||||
{
|
||||
if (cpu_has_feature(CPU_FTR_ARCH_206)) {
|
||||
mtspr(SPRN_AMR, 0);
|
||||
mtspr(SPRN_UAMOR, 0);
|
||||
}
|
||||
|
||||
if (cpu_has_feature(CPU_FTR_ARCH_207S)) {
|
||||
mtspr(SPRN_IAMR, 0);
|
||||
}
|
||||
|
||||
/* Do we need isync()? We are going via a kexec reset */
|
||||
isync();
|
||||
}
|
||||
|
||||
#endif
|
|
@ -86,8 +86,8 @@
|
|||
#define HPTE_R_PP0 ASM_CONST(0x8000000000000000)
|
||||
#define HPTE_R_TS ASM_CONST(0x4000000000000000)
|
||||
#define HPTE_R_KEY_HI ASM_CONST(0x3000000000000000)
|
||||
#define HPTE_R_KEY_BIT0 ASM_CONST(0x2000000000000000)
|
||||
#define HPTE_R_KEY_BIT1 ASM_CONST(0x1000000000000000)
|
||||
#define HPTE_R_KEY_BIT4 ASM_CONST(0x2000000000000000)
|
||||
#define HPTE_R_KEY_BIT3 ASM_CONST(0x1000000000000000)
|
||||
#define HPTE_R_RPN_SHIFT 12
|
||||
#define HPTE_R_RPN ASM_CONST(0x0ffffffffffff000)
|
||||
#define HPTE_R_RPN_3_0 ASM_CONST(0x01fffffffffff000)
|
||||
|
@ -103,8 +103,8 @@
|
|||
#define HPTE_R_R ASM_CONST(0x0000000000000100)
|
||||
#define HPTE_R_KEY_LO ASM_CONST(0x0000000000000e00)
|
||||
#define HPTE_R_KEY_BIT2 ASM_CONST(0x0000000000000800)
|
||||
#define HPTE_R_KEY_BIT3 ASM_CONST(0x0000000000000400)
|
||||
#define HPTE_R_KEY_BIT4 ASM_CONST(0x0000000000000200)
|
||||
#define HPTE_R_KEY_BIT1 ASM_CONST(0x0000000000000400)
|
||||
#define HPTE_R_KEY_BIT0 ASM_CONST(0x0000000000000200)
|
||||
#define HPTE_R_KEY (HPTE_R_KEY_LO | HPTE_R_KEY_HI)
|
||||
|
||||
#define HPTE_V_1TB_SEG ASM_CONST(0x4000000000000000)
|
||||
|
@ -793,7 +793,7 @@ static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
|
|||
}
|
||||
|
||||
/*
|
||||
* For kernel space, we use context ids as below
|
||||
* For kernel space, we use context ids as
|
||||
* below. Range is 512TB per context.
|
||||
*
|
||||
* 0x00001 - [ 0xc000000000000000 - 0xc001ffffffffffff]
|
||||
|
|
|
@ -82,6 +82,11 @@ extern unsigned int mmu_pid_bits;
|
|||
/* Base PID to allocate from */
|
||||
extern unsigned int mmu_base_pid;
|
||||
|
||||
/*
|
||||
* memory block size used with radix translation.
|
||||
*/
|
||||
extern unsigned int __ro_after_init radix_mem_block_size;
|
||||
|
||||
#define PRTB_SIZE_SHIFT (mmu_pid_bits + 4)
|
||||
#define PRTB_ENTRIES (1ul << mmu_pid_bits)
|
||||
|
||||
|
@ -209,6 +214,12 @@ extern int mmu_io_psize;
|
|||
void mmu_early_init_devtree(void);
|
||||
void hash__early_init_devtree(void);
|
||||
void radix__early_init_devtree(void);
|
||||
#ifdef CONFIG_PPC_MEM_KEYS
|
||||
void pkey_early_init_devtree(void);
|
||||
#else
|
||||
static inline void pkey_early_init_devtree(void) {}
|
||||
#endif
|
||||
|
||||
extern void hash__early_init_mmu(void);
|
||||
extern void radix__early_init_mmu(void);
|
||||
static inline void __init early_init_mmu(void)
|
||||
|
|
|
@ -107,9 +107,23 @@ static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr)
|
|||
return pud;
|
||||
}
|
||||
|
||||
static inline void __pud_free(pud_t *pud)
|
||||
{
|
||||
struct page *page = virt_to_page(pud);
|
||||
|
||||
/*
|
||||
* Early pud pages allocated via memblock allocator
|
||||
* can't be directly freed to slab
|
||||
*/
|
||||
if (PageReserved(page))
|
||||
free_reserved_page(page);
|
||||
else
|
||||
kmem_cache_free(PGT_CACHE(PUD_CACHE_INDEX), pud);
|
||||
}
|
||||
|
||||
static inline void pud_free(struct mm_struct *mm, pud_t *pud)
|
||||
{
|
||||
kmem_cache_free(PGT_CACHE(PUD_CACHE_INDEX), pud);
|
||||
return __pud_free(pud);
|
||||
}
|
||||
|
||||
static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
|
||||
|
|
|
@ -20,9 +20,13 @@
|
|||
#define _PAGE_RW (_PAGE_READ | _PAGE_WRITE)
|
||||
#define _PAGE_RWX (_PAGE_READ | _PAGE_WRITE | _PAGE_EXEC)
|
||||
#define _PAGE_PRIVILEGED 0x00008 /* kernel access only */
|
||||
#define _PAGE_SAO 0x00010 /* Strong access order */
|
||||
|
||||
#define _PAGE_CACHE_CTL 0x00030 /* Bits for the folowing cache modes */
|
||||
/* No bits set is normal cacheable memory */
|
||||
/* 0x00010 unused, is SAO bit on radix POWER9 */
|
||||
#define _PAGE_NON_IDEMPOTENT 0x00020 /* non idempotent memory */
|
||||
#define _PAGE_TOLERANT 0x00030 /* tolerant memory, cache inhibited */
|
||||
|
||||
#define _PAGE_DIRTY 0x00080 /* C: page changed */
|
||||
#define _PAGE_ACCESSED 0x00100 /* R: page referenced */
|
||||
/*
|
||||
|
@ -32,11 +36,13 @@
|
|||
#define _RPAGE_SW1 0x00800
|
||||
#define _RPAGE_SW2 0x00400
|
||||
#define _RPAGE_SW3 0x00200
|
||||
#define _RPAGE_RSV1 0x1000000000000000UL
|
||||
#define _RPAGE_RSV2 0x0800000000000000UL
|
||||
#define _RPAGE_RSV3 0x0400000000000000UL
|
||||
#define _RPAGE_RSV4 0x0200000000000000UL
|
||||
#define _RPAGE_RSV5 0x00040UL
|
||||
#define _RPAGE_RSV1 0x00040UL
|
||||
|
||||
#define _RPAGE_PKEY_BIT4 0x1000000000000000UL
|
||||
#define _RPAGE_PKEY_BIT3 0x0800000000000000UL
|
||||
#define _RPAGE_PKEY_BIT2 0x0400000000000000UL
|
||||
#define _RPAGE_PKEY_BIT1 0x0200000000000000UL
|
||||
#define _RPAGE_PKEY_BIT0 0x0100000000000000UL
|
||||
|
||||
#define _PAGE_PTE 0x4000000000000000UL /* distinguishes PTEs from pointers */
|
||||
#define _PAGE_PRESENT 0x8000000000000000UL /* pte contains a translation */
|
||||
|
@ -58,13 +64,12 @@
|
|||
*/
|
||||
#define _RPAGE_RPN0 0x01000
|
||||
#define _RPAGE_RPN1 0x02000
|
||||
#define _RPAGE_RPN44 0x0100000000000000UL
|
||||
#define _RPAGE_RPN43 0x0080000000000000UL
|
||||
#define _RPAGE_RPN42 0x0040000000000000UL
|
||||
#define _RPAGE_RPN41 0x0020000000000000UL
|
||||
|
||||
/* Max physical address bit as per radix table */
|
||||
#define _RPAGE_PA_MAX 57
|
||||
#define _RPAGE_PA_MAX 56
|
||||
|
||||
/*
|
||||
* Max physical address bit we will use for now.
|
||||
|
@ -125,8 +130,6 @@
|
|||
_PAGE_ACCESSED | _PAGE_SPECIAL | _PAGE_PTE | \
|
||||
_PAGE_SOFT_DIRTY | _PAGE_DEVMAP)
|
||||
|
||||
#define H_PTE_PKEY (H_PTE_PKEY_BIT0 | H_PTE_PKEY_BIT1 | H_PTE_PKEY_BIT2 | \
|
||||
H_PTE_PKEY_BIT3 | H_PTE_PKEY_BIT4)
|
||||
/*
|
||||
* We define 2 sets of base prot bits, one for basic pages (ie,
|
||||
* cacheable kernel and user pages) and one for non cacheable
|
||||
|
@ -825,8 +828,6 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
|
|||
return hash__set_pte_at(mm, addr, ptep, pte, percpu);
|
||||
}
|
||||
|
||||
#define _PAGE_CACHE_CTL (_PAGE_SAO | _PAGE_NON_IDEMPOTENT | _PAGE_TOLERANT)
|
||||
|
||||
#define pgprot_noncached pgprot_noncached
|
||||
static inline pgprot_t pgprot_noncached(pgprot_t prot)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
|
||||
#ifndef _ASM_POWERPC_BOOK3S_64_PKEYS_H
|
||||
#define _ASM_POWERPC_BOOK3S_64_PKEYS_H
|
||||
|
||||
#include <asm/book3s/64/hash-pkey.h>
|
||||
|
||||
extern u64 __ro_after_init default_uamor;
|
||||
|
||||
static inline u64 vmflag_to_pte_pkey_bits(u64 vm_flags)
|
||||
{
|
||||
if (!mmu_has_feature(MMU_FTR_PKEY))
|
||||
return 0x0UL;
|
||||
|
||||
if (radix_enabled())
|
||||
BUG();
|
||||
return hash__vmflag_to_pte_pkey_bits(vm_flags);
|
||||
}
|
||||
|
||||
static inline u16 pte_to_pkey_bits(u64 pteflags)
|
||||
{
|
||||
if (radix_enabled())
|
||||
BUG();
|
||||
return hash__pte_to_pkey_bits(pteflags);
|
||||
}
|
||||
|
||||
#endif /*_ASM_POWERPC_KEYS_H */
|
|
@ -11,7 +11,7 @@
|
|||
#define RADIX_PGD_INDEX_SIZE 13 // size: 8B << 13 = 64KB, maps 2^13 x 512GB = 4PB
|
||||
|
||||
/*
|
||||
* One fragment per per page
|
||||
* One fragment per page
|
||||
*/
|
||||
#define RADIX_PTE_FRAG_SIZE_SHIFT (RADIX_PTE_INDEX_SIZE + 3)
|
||||
#define RADIX_PTE_FRAG_NR (PAGE_SIZE >> RADIX_PTE_FRAG_SIZE_SHIFT)
|
||||
|
|
|
@ -2,10 +2,25 @@
|
|||
#ifndef _ASM_POWERPC_TLBFLUSH_RADIX_H
|
||||
#define _ASM_POWERPC_TLBFLUSH_RADIX_H
|
||||
|
||||
#include <asm/hvcall.h>
|
||||
|
||||
struct vm_area_struct;
|
||||
struct mm_struct;
|
||||
struct mmu_gather;
|
||||
|
||||
static inline u64 psize_to_rpti_pgsize(unsigned long psize)
|
||||
{
|
||||
if (psize == MMU_PAGE_4K)
|
||||
return H_RPTI_PAGE_4K;
|
||||
if (psize == MMU_PAGE_64K)
|
||||
return H_RPTI_PAGE_64K;
|
||||
if (psize == MMU_PAGE_2M)
|
||||
return H_RPTI_PAGE_2M;
|
||||
if (psize == MMU_PAGE_1G)
|
||||
return H_RPTI_PAGE_1G;
|
||||
return H_RPTI_PAGE_ALL;
|
||||
}
|
||||
|
||||
static inline int mmu_get_ap(int psize)
|
||||
{
|
||||
return mmu_psize_defs[psize].ap;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include <linux/mm.h>
|
||||
#include <asm/cputable.h>
|
||||
#include <asm/cpu_has_feature.h>
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
/*
|
||||
|
|
|
@ -191,14 +191,14 @@ static inline void cpu_feature_keys_init(void) { }
|
|||
#define CPU_FTR_SPURR LONG_ASM_CONST(0x0000000001000000)
|
||||
#define CPU_FTR_DSCR LONG_ASM_CONST(0x0000000002000000)
|
||||
#define CPU_FTR_VSX LONG_ASM_CONST(0x0000000004000000)
|
||||
#define CPU_FTR_SAO LONG_ASM_CONST(0x0000000008000000)
|
||||
// Free LONG_ASM_CONST(0x0000000008000000)
|
||||
#define CPU_FTR_CP_USE_DCBTZ LONG_ASM_CONST(0x0000000010000000)
|
||||
#define CPU_FTR_UNALIGNED_LD_STD LONG_ASM_CONST(0x0000000020000000)
|
||||
#define CPU_FTR_ASYM_SMT LONG_ASM_CONST(0x0000000040000000)
|
||||
#define CPU_FTR_STCX_CHECKS_ADDRESS LONG_ASM_CONST(0x0000000080000000)
|
||||
#define CPU_FTR_POPCNTB LONG_ASM_CONST(0x0000000100000000)
|
||||
#define CPU_FTR_POPCNTD LONG_ASM_CONST(0x0000000200000000)
|
||||
#define CPU_FTR_PKEY LONG_ASM_CONST(0x0000000400000000)
|
||||
/* LONG_ASM_CONST(0x0000000400000000) Free */
|
||||
#define CPU_FTR_VMX_COPY LONG_ASM_CONST(0x0000000800000000)
|
||||
#define CPU_FTR_TM LONG_ASM_CONST(0x0000001000000000)
|
||||
#define CPU_FTR_CFAR LONG_ASM_CONST(0x0000002000000000)
|
||||
|
@ -214,6 +214,7 @@ static inline void cpu_feature_keys_init(void) { }
|
|||
#define CPU_FTR_P9_TLBIE_ERAT_BUG LONG_ASM_CONST(0x0001000000000000)
|
||||
#define CPU_FTR_P9_RADIX_PREFETCH_BUG LONG_ASM_CONST(0x0002000000000000)
|
||||
#define CPU_FTR_ARCH_31 LONG_ASM_CONST(0x0004000000000000)
|
||||
#define CPU_FTR_DAWR1 LONG_ASM_CONST(0x0008000000000000)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
|
@ -435,32 +436,32 @@ static inline void cpu_feature_keys_init(void) { }
|
|||
CPU_FTR_MMCRA | CPU_FTR_SMT | \
|
||||
CPU_FTR_COHERENT_ICACHE | \
|
||||
CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
|
||||
CPU_FTR_DSCR | CPU_FTR_SAO | CPU_FTR_ASYM_SMT | \
|
||||
CPU_FTR_DSCR | CPU_FTR_ASYM_SMT | \
|
||||
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||
CPU_FTR_CFAR | CPU_FTR_HVMODE | \
|
||||
CPU_FTR_VMX_COPY | CPU_FTR_HAS_PPR | CPU_FTR_DABRX | CPU_FTR_PKEY)
|
||||
CPU_FTR_VMX_COPY | CPU_FTR_HAS_PPR | CPU_FTR_DABRX )
|
||||
#define CPU_FTRS_POWER8 (CPU_FTR_LWSYNC | \
|
||||
CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | CPU_FTR_ARCH_206 |\
|
||||
CPU_FTR_MMCRA | CPU_FTR_SMT | \
|
||||
CPU_FTR_COHERENT_ICACHE | \
|
||||
CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
|
||||
CPU_FTR_DSCR | CPU_FTR_SAO | \
|
||||
CPU_FTR_DSCR | \
|
||||
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||
CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
|
||||
CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | \
|
||||
CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP | CPU_FTR_PKEY)
|
||||
CPU_FTR_ARCH_207S | CPU_FTR_TM_COMP )
|
||||
#define CPU_FTRS_POWER8E (CPU_FTRS_POWER8 | CPU_FTR_PMAO_BUG)
|
||||
#define CPU_FTRS_POWER9 (CPU_FTR_LWSYNC | \
|
||||
CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | CPU_FTR_ARCH_206 |\
|
||||
CPU_FTR_MMCRA | CPU_FTR_SMT | \
|
||||
CPU_FTR_COHERENT_ICACHE | \
|
||||
CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
|
||||
CPU_FTR_DSCR | CPU_FTR_SAO | \
|
||||
CPU_FTR_DSCR | \
|
||||
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||
CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
|
||||
CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_ARCH_207S | \
|
||||
CPU_FTR_TM_COMP | CPU_FTR_ARCH_300 | CPU_FTR_PKEY | \
|
||||
CPU_FTR_P9_TLBIE_STQ_BUG | CPU_FTR_P9_TLBIE_ERAT_BUG | CPU_FTR_P9_TIDR)
|
||||
CPU_FTR_TM_COMP | CPU_FTR_ARCH_300 | CPU_FTR_P9_TLBIE_STQ_BUG | \
|
||||
CPU_FTR_P9_TLBIE_ERAT_BUG | CPU_FTR_P9_TIDR)
|
||||
#define CPU_FTRS_POWER9_DD2_0 (CPU_FTRS_POWER9 | CPU_FTR_P9_RADIX_PREFETCH_BUG)
|
||||
#define CPU_FTRS_POWER9_DD2_1 (CPU_FTRS_POWER9 | \
|
||||
CPU_FTR_P9_RADIX_PREFETCH_BUG | \
|
||||
|
@ -473,12 +474,12 @@ static inline void cpu_feature_keys_init(void) { }
|
|||
CPU_FTR_MMCRA | CPU_FTR_SMT | \
|
||||
CPU_FTR_COHERENT_ICACHE | \
|
||||
CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
|
||||
CPU_FTR_DSCR | CPU_FTR_SAO | \
|
||||
CPU_FTR_DSCR | \
|
||||
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||
CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
|
||||
CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_ARCH_207S | \
|
||||
CPU_FTR_TM_COMP | CPU_FTR_ARCH_300 | CPU_FTR_PKEY | \
|
||||
CPU_FTR_ARCH_31)
|
||||
CPU_FTR_TM_COMP | CPU_FTR_ARCH_300 | CPU_FTR_ARCH_31 | \
|
||||
CPU_FTR_DAWR | CPU_FTR_DAWR1)
|
||||
#define CPU_FTRS_CELL (CPU_FTR_LWSYNC | \
|
||||
CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \
|
||||
CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \
|
||||
|
@ -628,9 +629,10 @@ enum {
|
|||
|
||||
/*
|
||||
* Maximum number of hw breakpoint supported on powerpc. Number of
|
||||
* breakpoints supported by actual hw might be less than this.
|
||||
* breakpoints supported by actual hw might be less than this, which
|
||||
* is decided at run time in nr_wp_slots().
|
||||
*/
|
||||
#define HBP_NUM_MAX 1
|
||||
#define HBP_NUM_MAX 2
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
|
|
|
@ -36,6 +36,8 @@ static inline unsigned long cputime_to_usecs(const cputime_t ct)
|
|||
return mulhdu((__force u64) ct, __cputime_usec_factor);
|
||||
}
|
||||
|
||||
#define cputime_to_nsecs(cputime) tb_to_ns((__force u64)cputime)
|
||||
|
||||
/*
|
||||
* PPC64 uses PACA which is task independent for storing accounting data while
|
||||
* PPC32 uses struct thread_info, therefore at task switch the accounting data
|
||||
|
@ -65,7 +67,7 @@ static inline void arch_vtime_task_switch(struct task_struct *prev)
|
|||
|
||||
/*
|
||||
* account_cpu_user_entry/exit runs "unreconciled", so can't trace,
|
||||
* can't use use get_paca()
|
||||
* can't use get_paca()
|
||||
*/
|
||||
static notrace inline void account_cpu_user_entry(void)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
#ifndef _ASM_POWERPC_CRASHDUMP_PPC64_H
|
||||
#define _ASM_POWERPC_CRASHDUMP_PPC64_H
|
||||
|
||||
/*
|
||||
* Backup region - first 64KB of System RAM
|
||||
*
|
||||
* If ever the below macros are to be changed, please be judicious.
|
||||
* The implicit assumptions are:
|
||||
* - start, end & size are less than UINT32_MAX.
|
||||
* - start & size are at least 8 byte aligned.
|
||||
*
|
||||
* For implementation details: arch/powerpc/purgatory/trampoline_64.S
|
||||
*/
|
||||
#define BACKUP_SRC_START 0
|
||||
#define BACKUP_SRC_END 0xffff
|
||||
#define BACKUP_SRC_SIZE (BACKUP_SRC_END - BACKUP_SRC_START + 1)
|
||||
|
||||
#endif /* __ASM_POWERPC_CRASHDUMP_PPC64_H */
|
|
@ -11,8 +11,10 @@
|
|||
#include <linux/smp.h>
|
||||
#include <linux/threads.h>
|
||||
|
||||
#include <asm/cputhreads.h>
|
||||
#include <asm/ppc-opcode.h>
|
||||
#include <asm/feature-fixups.h>
|
||||
#include <asm/kvm_ppc.h>
|
||||
|
||||
#define PPC_DBELL_MSG_BRDCAST (0x04000000)
|
||||
#define PPC_DBELL_TYPE(x) (((x) & 0xf) << (63-36))
|
||||
|
@ -87,9 +89,6 @@ static inline void ppc_msgsync(void)
|
|||
|
||||
#endif /* CONFIG_PPC_BOOK3S */
|
||||
|
||||
extern void doorbell_global_ipi(int cpu);
|
||||
extern void doorbell_core_ipi(int cpu);
|
||||
extern int doorbell_try_core_ipi(int cpu);
|
||||
extern void doorbell_exception(struct pt_regs *regs);
|
||||
|
||||
static inline void ppc_msgsnd(enum ppc_dbell type, u32 flags, u32 tag)
|
||||
|
@ -100,4 +99,63 @@ static inline void ppc_msgsnd(enum ppc_dbell type, u32 flags, u32 tag)
|
|||
_ppc_msgsnd(msg);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
/*
|
||||
* Doorbells must only be used if CPU_FTR_DBELL is available.
|
||||
* msgsnd is used in HV, and msgsndp is used in !HV.
|
||||
*
|
||||
* These should be used by platform code that is aware of restrictions.
|
||||
* Other arch code should use ->cause_ipi.
|
||||
*
|
||||
* doorbell_global_ipi() sends a dbell to any target CPU.
|
||||
* Must be used only by architectures that address msgsnd target
|
||||
* by PIR/get_hard_smp_processor_id.
|
||||
*/
|
||||
static inline void doorbell_global_ipi(int cpu)
|
||||
{
|
||||
u32 tag = get_hard_smp_processor_id(cpu);
|
||||
|
||||
kvmppc_set_host_ipi(cpu);
|
||||
/* Order previous accesses vs. msgsnd, which is treated as a store */
|
||||
ppc_msgsnd_sync();
|
||||
ppc_msgsnd(PPC_DBELL_MSGTYPE, 0, tag);
|
||||
}
|
||||
|
||||
/*
|
||||
* doorbell_core_ipi() sends a dbell to a target CPU in the same core.
|
||||
* Must be used only by architectures that address msgsnd target
|
||||
* by TIR/cpu_thread_in_core.
|
||||
*/
|
||||
static inline void doorbell_core_ipi(int cpu)
|
||||
{
|
||||
u32 tag = cpu_thread_in_core(cpu);
|
||||
|
||||
kvmppc_set_host_ipi(cpu);
|
||||
/* Order previous accesses vs. msgsnd, which is treated as a store */
|
||||
ppc_msgsnd_sync();
|
||||
ppc_msgsnd(PPC_DBELL_MSGTYPE, 0, tag);
|
||||
}
|
||||
|
||||
/*
|
||||
* Attempt to cause a core doorbell if destination is on the same core.
|
||||
* Returns 1 on success, 0 on failure.
|
||||
*/
|
||||
static inline int doorbell_try_core_ipi(int cpu)
|
||||
{
|
||||
int this_cpu = get_cpu();
|
||||
int ret = 0;
|
||||
|
||||
if (cpumask_test_cpu(cpu, cpu_sibling_mask(this_cpu))) {
|
||||
doorbell_core_ipi(cpu);
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
put_cpu();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#endif /* _ASM_POWERPC_DBELL_H */
|
||||
|
|
|
@ -44,6 +44,9 @@ struct dev_archdata {
|
|||
#ifdef CONFIG_CXL_BASE
|
||||
struct cxl_context *cxl_ctx;
|
||||
#endif
|
||||
#ifdef CONFIG_PCI_IOV
|
||||
void *iov_data;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct pdev_archdata {
|
||||
|
|
|
@ -90,13 +90,14 @@ static inline bool drmem_lmb_reserved(struct drmem_lmb *lmb)
|
|||
}
|
||||
|
||||
u64 drmem_lmb_memory_max(void);
|
||||
void __init walk_drmem_lmbs(struct device_node *dn,
|
||||
void (*func)(struct drmem_lmb *, const __be32 **));
|
||||
int walk_drmem_lmbs(struct device_node *dn, void *data,
|
||||
int (*func)(struct drmem_lmb *, const __be32 **, void *));
|
||||
int drmem_update_dt(void);
|
||||
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
void __init walk_drmem_lmbs_early(unsigned long node,
|
||||
void (*func)(struct drmem_lmb *, const __be32 **));
|
||||
int __init
|
||||
walk_drmem_lmbs_early(unsigned long node, void *data,
|
||||
int (*func)(struct drmem_lmb *, const __be32 **, void *));
|
||||
#endif
|
||||
|
||||
static inline void invalidate_lmb_associativity_index(struct drmem_lmb *lmb)
|
||||
|
|
|
@ -133,7 +133,6 @@ static inline bool eeh_pe_passed(struct eeh_pe *pe)
|
|||
|
||||
struct eeh_dev {
|
||||
int mode; /* EEH mode */
|
||||
int class_code; /* Class code of the device */
|
||||
int bdfn; /* bdfn of device (for cfg ops) */
|
||||
struct pci_controller *controller;
|
||||
int pe_config_addr; /* PE config address */
|
||||
|
@ -148,7 +147,10 @@ struct eeh_dev {
|
|||
struct pci_dn *pdn; /* Associated PCI device node */
|
||||
struct pci_dev *pdev; /* Associated PCI device */
|
||||
bool in_error; /* Error flag for edev */
|
||||
|
||||
/* VF specific properties */
|
||||
struct pci_dev *physfn; /* Associated SRIOV PF */
|
||||
int vf_index; /* Index of this VF */
|
||||
};
|
||||
|
||||
/* "fmt" must be a simple literal string */
|
||||
|
@ -217,18 +219,17 @@ struct eeh_ops {
|
|||
int (*init)(void);
|
||||
struct eeh_dev *(*probe)(struct pci_dev *pdev);
|
||||
int (*set_option)(struct eeh_pe *pe, int option);
|
||||
int (*get_pe_addr)(struct eeh_pe *pe);
|
||||
int (*get_state)(struct eeh_pe *pe, int *delay);
|
||||
int (*reset)(struct eeh_pe *pe, int option);
|
||||
int (*get_log)(struct eeh_pe *pe, int severity, char *drv_log, unsigned long len);
|
||||
int (*configure_bridge)(struct eeh_pe *pe);
|
||||
int (*err_inject)(struct eeh_pe *pe, int type, int func,
|
||||
unsigned long addr, unsigned long mask);
|
||||
int (*read_config)(struct pci_dn *pdn, int where, int size, u32 *val);
|
||||
int (*write_config)(struct pci_dn *pdn, int where, int size, u32 val);
|
||||
int (*read_config)(struct eeh_dev *edev, int where, int size, u32 *val);
|
||||
int (*write_config)(struct eeh_dev *edev, int where, int size, u32 val);
|
||||
int (*next_error)(struct eeh_pe **pe);
|
||||
int (*restore_config)(struct pci_dn *pdn);
|
||||
int (*notify_resume)(struct pci_dn *pdn);
|
||||
int (*restore_config)(struct eeh_dev *edev);
|
||||
int (*notify_resume)(struct eeh_dev *edev);
|
||||
};
|
||||
|
||||
extern int eeh_subsystem_flags;
|
||||
|
@ -282,8 +283,8 @@ struct eeh_pe *eeh_phb_pe_get(struct pci_controller *phb);
|
|||
struct eeh_pe *eeh_pe_next(struct eeh_pe *pe, struct eeh_pe *root);
|
||||
struct eeh_pe *eeh_pe_get(struct pci_controller *phb,
|
||||
int pe_no, int config_addr);
|
||||
int eeh_add_to_parent_pe(struct eeh_dev *edev);
|
||||
int eeh_rmv_from_parent_pe(struct eeh_dev *edev);
|
||||
int eeh_pe_tree_insert(struct eeh_dev *edev, struct eeh_pe *new_pe_parent);
|
||||
int eeh_pe_tree_remove(struct eeh_dev *edev);
|
||||
void eeh_pe_update_time_stamp(struct eeh_pe *pe);
|
||||
void *eeh_pe_traverse(struct eeh_pe *root,
|
||||
eeh_pe_traverse_func fn, void *flag);
|
||||
|
@ -293,8 +294,6 @@ void eeh_pe_restore_bars(struct eeh_pe *pe);
|
|||
const char *eeh_pe_loc_get(struct eeh_pe *pe);
|
||||
struct pci_bus *eeh_pe_bus_get(struct eeh_pe *pe);
|
||||
|
||||
struct eeh_dev *eeh_dev_init(struct pci_dn *pdn);
|
||||
void eeh_dev_phb_init_dynamic(struct pci_controller *phb);
|
||||
void eeh_show_enabled(void);
|
||||
int __init eeh_ops_register(struct eeh_ops *ops);
|
||||
int __exit eeh_ops_unregister(const char *name);
|
||||
|
@ -314,7 +313,6 @@ int eeh_pe_reset(struct eeh_pe *pe, int option, bool include_passed);
|
|||
int eeh_pe_configure(struct eeh_pe *pe);
|
||||
int eeh_pe_inject_err(struct eeh_pe *pe, int type, int func,
|
||||
unsigned long addr, unsigned long mask);
|
||||
int eeh_restore_vf_config(struct pci_dn *pdn);
|
||||
|
||||
/**
|
||||
* EEH_POSSIBLE_ERROR() -- test for possible MMIO failure.
|
||||
|
@ -340,11 +338,6 @@ static inline bool eeh_enabled(void)
|
|||
|
||||
static inline void eeh_show_enabled(void) { }
|
||||
|
||||
static inline void *eeh_dev_init(struct pci_dn *pdn, void *data)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void eeh_dev_phb_init_dynamic(struct pci_controller *phb) { }
|
||||
|
||||
static inline int eeh_check_failure(const volatile void __iomem *token)
|
||||
|
@ -362,6 +355,7 @@ static inline void eeh_remove_device(struct pci_dev *dev) { }
|
|||
|
||||
#define EEH_POSSIBLE_ERROR(val, type) (0)
|
||||
#define EEH_IO_ERROR_VALUE(size) (-1UL)
|
||||
static inline int eeh_phb_pe_create(struct pci_controller *phb) { return 0; }
|
||||
#endif /* CONFIG_EEH */
|
||||
|
||||
#if defined(CONFIG_PPC_PSERIES) && defined(CONFIG_EEH)
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* A "hypercall" is an "sc 1" instruction. This header file file provides C
|
||||
/* A "hypercall" is an "sc 1" instruction. This header file provides C
|
||||
* wrapper functions for the ePAPR hypervisor interface. It is inteded
|
||||
* for use by Linux device drivers and other operating systems.
|
||||
*
|
||||
|
@ -246,7 +246,7 @@ static inline unsigned int ev_int_get_mask(unsigned int interrupt,
|
|||
* ev_int_eoi - signal the end of interrupt processing
|
||||
* @interrupt: the interrupt number
|
||||
*
|
||||
* This function signals the end of processing for the the specified
|
||||
* This function signals the end of processing for the specified
|
||||
* interrupt, which must be the interrupt currently in service. By
|
||||
* definition, this is also the highest-priority interrupt.
|
||||
*
|
||||
|
|
|
@ -66,14 +66,7 @@
|
|||
#define EX_TLB_SRR0 (10 * 8)
|
||||
#define EX_TLB_SRR1 (11 * 8)
|
||||
#define EX_TLB_R7 (12 * 8)
|
||||
#ifdef CONFIG_BOOK3E_MMU_TLB_STATS
|
||||
#define EX_TLB_R8 (13 * 8)
|
||||
#define EX_TLB_R9 (14 * 8)
|
||||
#define EX_TLB_LR (15 * 8)
|
||||
#define EX_TLB_SIZE (16 * 8)
|
||||
#else
|
||||
#define EX_TLB_SIZE (13 * 8)
|
||||
#endif
|
||||
|
||||
#define START_EXCEPTION(label) \
|
||||
.globl exc_##label##_book3e; \
|
||||
|
@ -110,8 +103,7 @@ exc_##label##_book3e:
|
|||
std r11,EX_TLB_R12(r12); \
|
||||
mtspr SPRN_SPRG_TLB_EXFRAME,r14; \
|
||||
std r15,EX_TLB_SRR1(r12); \
|
||||
std r16,EX_TLB_SRR0(r12); \
|
||||
TLB_MISS_PROLOG_STATS
|
||||
std r16,EX_TLB_SRR0(r12);
|
||||
|
||||
/* And these are the matching epilogs that restores things
|
||||
*
|
||||
|
@ -143,7 +135,6 @@ exc_##label##_book3e:
|
|||
mtspr SPRN_SRR0,r15; \
|
||||
ld r15,EX_TLB_R15(r12); \
|
||||
mtspr SPRN_SRR1,r16; \
|
||||
TLB_MISS_RESTORE_STATS \
|
||||
ld r16,EX_TLB_R16(r12); \
|
||||
ld r12,EX_TLB_R12(r12); \
|
||||
|
||||
|
@ -158,53 +149,15 @@ exc_##label##_book3e:
|
|||
addi r11,r13,PACA_EXTLB; \
|
||||
TLB_MISS_RESTORE(r11)
|
||||
|
||||
#ifdef CONFIG_BOOK3E_MMU_TLB_STATS
|
||||
#define TLB_MISS_PROLOG_STATS \
|
||||
mflr r10; \
|
||||
std r8,EX_TLB_R8(r12); \
|
||||
std r9,EX_TLB_R9(r12); \
|
||||
std r10,EX_TLB_LR(r12);
|
||||
#define TLB_MISS_RESTORE_STATS \
|
||||
ld r16,EX_TLB_LR(r12); \
|
||||
ld r9,EX_TLB_R9(r12); \
|
||||
ld r8,EX_TLB_R8(r12); \
|
||||
mtlr r16;
|
||||
#define TLB_MISS_STATS_D(name) \
|
||||
addi r9,r13,MMSTAT_DSTATS+name; \
|
||||
bl tlb_stat_inc;
|
||||
#define TLB_MISS_STATS_I(name) \
|
||||
addi r9,r13,MMSTAT_ISTATS+name; \
|
||||
bl tlb_stat_inc;
|
||||
#define TLB_MISS_STATS_X(name) \
|
||||
ld r8,PACA_EXTLB+EX_TLB_ESR(r13); \
|
||||
cmpdi cr2,r8,-1; \
|
||||
beq cr2,61f; \
|
||||
addi r9,r13,MMSTAT_DSTATS+name; \
|
||||
b 62f; \
|
||||
61: addi r9,r13,MMSTAT_ISTATS+name; \
|
||||
62: bl tlb_stat_inc;
|
||||
#define TLB_MISS_STATS_SAVE_INFO \
|
||||
std r14,EX_TLB_ESR(r12); /* save ESR */
|
||||
#define TLB_MISS_STATS_SAVE_INFO_BOLTED \
|
||||
std r14,PACA_EXTLB+EX_TLB_ESR(r13); /* save ESR */
|
||||
#else
|
||||
#define TLB_MISS_PROLOG_STATS
|
||||
#define TLB_MISS_RESTORE_STATS
|
||||
#define TLB_MISS_PROLOG_STATS_BOLTED
|
||||
#define TLB_MISS_RESTORE_STATS_BOLTED
|
||||
#define TLB_MISS_STATS_D(name)
|
||||
#define TLB_MISS_STATS_I(name)
|
||||
#define TLB_MISS_STATS_X(name)
|
||||
#define TLB_MISS_STATS_Y(name)
|
||||
#define TLB_MISS_STATS_SAVE_INFO
|
||||
#define TLB_MISS_STATS_SAVE_INFO_BOLTED
|
||||
#endif
|
||||
|
||||
#define SET_IVOR(vector_number, vector_offset) \
|
||||
LOAD_REG_ADDR(r3,interrupt_base_book3e);\
|
||||
ori r3,r3,vector_offset@l; \
|
||||
mtspr SPRN_IVOR##vector_number,r3;
|
||||
|
||||
/*
|
||||
* powerpc relies on return from interrupt/syscall being context synchronising
|
||||
* (which rfi is) to support ARCH_HAS_MEMBARRIER_SYNC_CORE without additional
|
||||
* synchronisation instructions.
|
||||
*/
|
||||
#define RFI_TO_KERNEL \
|
||||
rfi
|
||||
|
||||
|
|
|
@ -68,6 +68,14 @@
|
|||
*
|
||||
* The nop instructions allow us to insert one or more instructions to flush the
|
||||
* L1-D cache when returning to userspace or a guest.
|
||||
*
|
||||
* powerpc relies on return from interrupt/syscall being context synchronising
|
||||
* (which hrfid, rfid, and rfscv are) to support ARCH_HAS_MEMBARRIER_SYNC_CORE
|
||||
* without additional synchronisation instructions.
|
||||
*
|
||||
* soft-masked interrupt replay does not include a context-synchronising rfid,
|
||||
* but those always return to kernel, the sync is only required when returning
|
||||
* to user.
|
||||
*/
|
||||
#define RFI_FLUSH_SLOT \
|
||||
RFI_FLUSH_FIXUP_SECTION; \
|
||||
|
@ -123,6 +131,12 @@
|
|||
hrfid; \
|
||||
b hrfi_flush_fallback
|
||||
|
||||
#define RFSCV_TO_USER \
|
||||
STF_EXIT_BARRIER_SLOT; \
|
||||
RFI_FLUSH_SLOT; \
|
||||
RFSCV; \
|
||||
b rfscv_flush_fallback
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* _ASM_POWERPC_EXCEPTION_H */
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#define FW_FEATURE_PAPR_SCM ASM_CONST(0x0000002000000000)
|
||||
#define FW_FEATURE_ULTRAVISOR ASM_CONST(0x0000004000000000)
|
||||
#define FW_FEATURE_STUFF_TCE ASM_CONST(0x0000008000000000)
|
||||
#define FW_FEATURE_RPT_INVALIDATE ASM_CONST(0x0000010000000000)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
|
@ -71,7 +72,8 @@ enum {
|
|||
FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN |
|
||||
FW_FEATURE_HPT_RESIZE | FW_FEATURE_DRMEM_V2 |
|
||||
FW_FEATURE_DRC_INFO | FW_FEATURE_BLOCK_REMOVE |
|
||||
FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR,
|
||||
FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR |
|
||||
FW_FEATURE_RPT_INVALIDATE,
|
||||
FW_FEATURE_PSERIES_ALWAYS = 0,
|
||||
FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL | FW_FEATURE_ULTRAVISOR,
|
||||
FW_FEATURE_POWERNV_ALWAYS = 0,
|
||||
|
@ -132,6 +134,12 @@ extern int ibm_nmi_interlock_token;
|
|||
|
||||
extern unsigned int __start___fw_ftr_fixup, __stop___fw_ftr_fixup;
|
||||
|
||||
#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_KVM_GUEST)
|
||||
bool is_kvm_guest(void);
|
||||
#else
|
||||
static inline bool is_kvm_guest(void) { return false; }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
void pseries_probe_fw_features(void);
|
||||
#else
|
||||
|
|
|
@ -52,7 +52,7 @@ enum fixed_addresses {
|
|||
FIX_HOLE,
|
||||
/* reserve the top 128K for early debugging purposes */
|
||||
FIX_EARLY_DEBUG_TOP = FIX_HOLE,
|
||||
FIX_EARLY_DEBUG_BASE = FIX_EARLY_DEBUG_TOP+((128*1024)/PAGE_SIZE)-1,
|
||||
FIX_EARLY_DEBUG_BASE = FIX_EARLY_DEBUG_TOP+(ALIGN(SZ_128, PAGE_SIZE)/PAGE_SIZE)-1,
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
|
||||
FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
|
||||
|
|
|
@ -13,7 +13,6 @@ typedef struct {
|
|||
unsigned int pmu_irqs;
|
||||
unsigned int mce_exceptions;
|
||||
unsigned int spurious_irqs;
|
||||
unsigned int hmi_exceptions;
|
||||
unsigned int sreset_irqs;
|
||||
#ifdef CONFIG_PPC_WATCHDOG
|
||||
unsigned int soft_nmi_irqs;
|
||||
|
|
|
@ -128,7 +128,7 @@ end_##sname:
|
|||
.if ((start) % (size) != 0); \
|
||||
.error "Fixed section exception vector misalignment"; \
|
||||
.endif; \
|
||||
.if ((size) != 0x20) && ((size) != 0x80) && ((size) != 0x100); \
|
||||
.if ((size) != 0x20) && ((size) != 0x80) && ((size) != 0x100) && ((size) != 0x1000); \
|
||||
.error "Fixed section exception vector bad size"; \
|
||||
.endif; \
|
||||
.if (start) < sname##_start; \
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue