Skip to content

Commit f2ed8be

Browse files
author
Al Viro
committed
Merge commit 'a7d2475af7aedcb9b5c6343989a8bfadbf84429b' into uaccess.powerpc
backmerge of sorting the arch/powerpc/Kconfig
2 parents 527b5ba + a7d2475 commit f2ed8be

File tree

20 files changed

+729
-124
lines changed

20 files changed

+729
-124
lines changed

arch/powerpc/Kconfig

Lines changed: 72 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -80,93 +80,99 @@ config ARCH_HAS_DMA_SET_COHERENT_MASK
8080
config PPC
8181
bool
8282
default y
83-
select BUILDTIME_EXTABLE_SORT
83+
#
84+
# Please keep this list sorted alphabetically.
85+
#
86+
select ARCH_HAS_DEVMEM_IS_ALLOWED
87+
select ARCH_HAS_DMA_SET_COHERENT_MASK
88+
select ARCH_HAS_ELF_RANDOMIZE
89+
select ARCH_HAS_GCOV_PROFILE_ALL
90+
select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE
91+
select ARCH_HAS_SG_CHAIN
92+
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
93+
select ARCH_HAS_UBSAN_SANITIZE_ALL
94+
select ARCH_HAVE_NMI_SAFE_CMPXCHG
8495
select ARCH_MIGHT_HAVE_PC_PARPORT
8596
select ARCH_MIGHT_HAVE_PC_SERIO
97+
select ARCH_SUPPORTS_ATOMIC_RMW
98+
select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
99+
select ARCH_USE_BUILTIN_BSWAP
100+
select ARCH_USE_CMPXCHG_LOCKREF if PPC64
101+
select ARCH_WANT_IPC_PARSE_VERSION
86102
select BINFMT_ELF
87-
select ARCH_HAS_ELF_RANDOMIZE
88-
select OF
89-
select OF_EARLY_FLATTREE
90-
select OF_RESERVED_MEM
91-
select HAVE_FTRACE_MCOUNT_RECORD
103+
select BUILDTIME_EXTABLE_SORT
104+
select CLONE_BACKWARDS
105+
select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
106+
select EDAC_ATOMIC_SCRUB
107+
select EDAC_SUPPORT
108+
select GENERIC_ATOMIC64 if PPC32
109+
select GENERIC_CLOCKEVENTS
110+
select GENERIC_CLOCKEVENTS_BROADCAST if SMP
111+
select GENERIC_CMOS_UPDATE
112+
select GENERIC_CPU_AUTOPROBE
113+
select GENERIC_IRQ_SHOW
114+
select GENERIC_IRQ_SHOW_LEVEL
115+
select GENERIC_SMP_IDLE_THREAD
116+
select GENERIC_STRNCPY_FROM_USER
117+
select GENERIC_STRNLEN_USER
118+
select GENERIC_TIME_VSYSCALL_OLD
119+
select HAVE_ARCH_AUDITSYSCALL
120+
select HAVE_ARCH_HARDENED_USERCOPY
121+
select HAVE_ARCH_JUMP_LABEL
122+
select HAVE_ARCH_KGDB
123+
select HAVE_ARCH_SECCOMP_FILTER
124+
select HAVE_ARCH_TRACEHOOK
125+
select HAVE_CBPF_JIT if !PPC64
126+
select HAVE_CONTEXT_TRACKING if PPC64
127+
select HAVE_DEBUG_KMEMLEAK
128+
select HAVE_DEBUG_STACKOVERFLOW
129+
select HAVE_DMA_API_DEBUG
92130
select HAVE_DYNAMIC_FTRACE
93-
select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL
94-
select HAVE_FUNCTION_TRACER
131+
select HAVE_DYNAMIC_FTRACE_WITH_REGS if MPROFILE_KERNEL
132+
select HAVE_EBPF_JIT if PPC64
133+
select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
134+
select HAVE_FTRACE_MCOUNT_RECORD
95135
select HAVE_FUNCTION_GRAPH_TRACER
136+
select HAVE_FUNCTION_TRACER
96137
select HAVE_GCC_PLUGINS
97-
select SYSCTL_EXCEPTION_TRACE
98-
select VIRT_TO_BUS if !PPC64
138+
select HAVE_GENERIC_RCU_GUP
139+
select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
99140
select HAVE_IDE
100141
select HAVE_IOREMAP_PROT
101-
select HAVE_EFFICIENT_UNALIGNED_ACCESS if !(CPU_LITTLE_ENDIAN && POWER7_CPU)
142+
select HAVE_IRQ_EXIT_ON_IRQ_STACK
143+
select HAVE_KERNEL_GZIP
102144
select HAVE_KPROBES
103-
select HAVE_OPTPROBES if PPC64
104-
select HAVE_ARCH_KGDB
105145
select HAVE_KRETPROBES
106-
select HAVE_ARCH_TRACEHOOK
146+
select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS
107147
select HAVE_MEMBLOCK
108148
select HAVE_MEMBLOCK_NODE_MAP
109-
select HAVE_DMA_API_DEBUG
149+
select HAVE_MOD_ARCH_SPECIFIC
150+
select HAVE_NMI if PERF_EVENTS
110151
select HAVE_OPROFILE
111-
select HAVE_DEBUG_KMEMLEAK
112-
select ARCH_HAS_SG_CHAIN
113-
select GENERIC_ATOMIC64 if PPC32
152+
select HAVE_OPTPROBES if PPC64
114153
select HAVE_PERF_EVENTS
154+
select HAVE_PERF_EVENTS_NMI if PPC64
115155
select HAVE_PERF_REGS
116156
select HAVE_PERF_USER_STACK_DUMP
157+
select HAVE_RCU_TABLE_FREE if SMP
117158
select HAVE_REGS_AND_STACK_ACCESS_API
118-
select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
119-
select ARCH_WANT_IPC_PARSE_VERSION
120-
select SPARSE_IRQ
159+
select HAVE_SYSCALL_TRACEPOINTS
160+
select HAVE_VIRT_CPU_ACCOUNTING
121161
select IRQ_DOMAIN
122-
select GENERIC_IRQ_SHOW
123-
select GENERIC_IRQ_SHOW_LEVEL
124162
select IRQ_FORCED_THREADING
125-
select HAVE_RCU_TABLE_FREE if SMP
126-
select HAVE_SYSCALL_TRACEPOINTS
127-
select HAVE_CBPF_JIT if !PPC64
128-
select HAVE_EBPF_JIT if PPC64
129-
select HAVE_ARCH_JUMP_LABEL
130-
select ARCH_HAVE_NMI_SAFE_CMPXCHG
131-
select ARCH_HAS_GCOV_PROFILE_ALL
132-
select GENERIC_SMP_IDLE_THREAD
133-
select GENERIC_CMOS_UPDATE
134-
select GENERIC_TIME_VSYSCALL_OLD
135-
select GENERIC_CLOCKEVENTS
136-
select GENERIC_CLOCKEVENTS_BROADCAST if SMP
137-
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
138-
select GENERIC_STRNCPY_FROM_USER
139-
select GENERIC_STRNLEN_USER
140-
select HAVE_MOD_ARCH_SPECIFIC
141163
select MODULES_USE_ELF_RELA
142-
select CLONE_BACKWARDS
143-
select ARCH_USE_BUILTIN_BSWAP
144-
select OLD_SIGSUSPEND
145-
select OLD_SIGACTION if PPC32
146-
select HAVE_DEBUG_STACKOVERFLOW
147-
select HAVE_IRQ_EXIT_ON_IRQ_STACK
148-
select ARCH_USE_CMPXCHG_LOCKREF if PPC64
149-
select HAVE_ARCH_AUDITSYSCALL
150-
select ARCH_SUPPORTS_ATOMIC_RMW
151-
select DCACHE_WORD_ACCESS if PPC64 && CPU_LITTLE_ENDIAN
152164
select NO_BOOTMEM
153-
select HAVE_GENERIC_RCU_GUP
154-
select HAVE_PERF_EVENTS_NMI if PPC64
155-
select HAVE_NMI if PERF_EVENTS
156-
select EDAC_SUPPORT
157-
select EDAC_ATOMIC_SCRUB
158-
select ARCH_HAS_DMA_SET_COHERENT_MASK
159-
select ARCH_HAS_DEVMEM_IS_ALLOWED
160-
select HAVE_ARCH_SECCOMP_FILTER
161-
select ARCH_HAS_UBSAN_SANITIZE_ALL
162-
select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT
163-
select HAVE_LIVEPATCH if HAVE_DYNAMIC_FTRACE_WITH_REGS
164-
select GENERIC_CPU_AUTOPROBE
165-
select HAVE_VIRT_CPU_ACCOUNTING
166-
select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE
167-
select HAVE_ARCH_HARDENED_USERCOPY
168-
select HAVE_KERNEL_GZIP
169-
select HAVE_CONTEXT_TRACKING if PPC64
165+
select OF
166+
select OF_EARLY_FLATTREE
167+
select OF_RESERVED_MEM
168+
select OLD_SIGACTION if PPC32
169+
select OLD_SIGSUSPEND
170+
select SPARSE_IRQ
171+
select SYSCTL_EXCEPTION_TRACE
172+
select VIRT_TO_BUS if !PPC64
173+
#
174+
# Please keep this list sorted alphabetically.
175+
#
170176

171177
config GENERIC_CSUM
172178
def_bool n

arch/powerpc/Makefile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,15 @@ GNUTARGET := powerpc
7272
MULTIPLEWORD := -mmultiple
7373
endif
7474

75-
cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
75+
ifdef CONFIG_PPC64
76+
cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
77+
cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mcall-aixdesc)
78+
aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
79+
aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mabi=elfv2
80+
endif
81+
7682
cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
83+
cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
7784
ifneq ($(cc-name),clang)
7885
cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mno-strict-align
7986
endif
@@ -113,7 +120,9 @@ ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
113120
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
114121
AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2)
115122
else
123+
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
116124
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc)
125+
AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
117126
endif
118127
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc))
119128
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions)

arch/powerpc/include/asm/checksum.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static inline __wsum csum_add(__wsum csum, __wsum addend)
112112

113113
#ifdef __powerpc64__
114114
res += (__force u64)addend;
115-
return (__force __wsum)((u32)res + (res >> 32));
115+
return (__force __wsum) from64to32(res);
116116
#else
117117
asm("addc %0,%0,%1;"
118118
"addze %0,%0;"

arch/powerpc/include/asm/cpuidle.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ static inline void report_invalid_psscr_val(u64 psscr_val, int err)
7070
std r0,0(r1); \
7171
ptesync; \
7272
ld r0,0(r1); \
73-
1: cmpd cr0,r0,r0; \
74-
bne 1b; \
73+
236: cmpd cr0,r0,r0; \
74+
bne 236b; \
7575
IDLE_INST; \
7676

7777
#define IDLE_STATE_ENTER_SEQ_NORET(IDLE_INST) \

arch/powerpc/include/asm/elf.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
144144
#define ARCH_DLINFO_CACHE_GEOMETRY \
145145
NEW_AUX_ENT(AT_L1I_CACHESIZE, ppc64_caches.l1i.size); \
146146
NEW_AUX_ENT(AT_L1I_CACHEGEOMETRY, get_cache_geometry(l1i)); \
147-
NEW_AUX_ENT(AT_L1D_CACHESIZE, ppc64_caches.l1i.size); \
148-
NEW_AUX_ENT(AT_L1D_CACHEGEOMETRY, get_cache_geometry(l1i)); \
147+
NEW_AUX_ENT(AT_L1D_CACHESIZE, ppc64_caches.l1d.size); \
148+
NEW_AUX_ENT(AT_L1D_CACHEGEOMETRY, get_cache_geometry(l1d)); \
149149
NEW_AUX_ENT(AT_L2_CACHESIZE, ppc64_caches.l2.size); \
150150
NEW_AUX_ENT(AT_L2_CACHEGEOMETRY, get_cache_geometry(l2)); \
151151
NEW_AUX_ENT(AT_L3_CACHESIZE, ppc64_caches.l3.size); \

arch/powerpc/include/asm/nohash/pgtable.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ static inline int hugepd_ok(hugepd_t hpd)
230230
return ((hpd_val(hpd) & 0x4) != 0);
231231
#else
232232
/* We clear the top bit to indicate hugepd */
233-
return ((hpd_val(hpd) & PD_HUGE) == 0);
233+
return (hpd_val(hpd) && (hpd_val(hpd) & PD_HUGE) == 0);
234234
#endif
235235
}
236236

arch/powerpc/include/asm/ppc-opcode.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,13 @@
284284
#define PPC_INST_BRANCH_COND 0x40800000
285285
#define PPC_INST_LBZCIX 0x7c0006aa
286286
#define PPC_INST_STBCIX 0x7c0007aa
287+
#define PPC_INST_LWZX 0x7c00002e
288+
#define PPC_INST_LFSX 0x7c00042e
289+
#define PPC_INST_STFSX 0x7c00052e
290+
#define PPC_INST_LFDX 0x7c0004ae
291+
#define PPC_INST_STFDX 0x7c0005ae
292+
#define PPC_INST_LVX 0x7c0000ce
293+
#define PPC_INST_STVX 0x7c0001ce
287294

288295
/* macros to insert fields into opcodes */
289296
#define ___PPC_RA(a) (((a) & 0x1f) << 16)

arch/powerpc/include/asm/prom.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,18 @@ struct of_drconf_cell {
160160
#define OV5_PFO_HW_ENCR 0x1120 /* PFO Encryption Accelerator */
161161
#define OV5_SUB_PROCESSORS 0x1501 /* 1,2,or 4 Sub-Processors supported */
162162
#define OV5_XIVE_EXPLOIT 0x1701 /* XIVE exploitation supported */
163-
#define OV5_MMU_RADIX_300 0x1880 /* ISA v3.00 radix MMU supported */
164-
#define OV5_MMU_HASH_300 0x1840 /* ISA v3.00 hash MMU supported */
165-
#define OV5_MMU_SEGM_RADIX 0x1820 /* radix mode (no segmentation) */
166-
#define OV5_MMU_PROC_TBL 0x1810 /* hcall selects SLB or proc table */
167-
#define OV5_MMU_SLB 0x1800 /* always use SLB */
168-
#define OV5_MMU_GTSE 0x1808 /* Guest translation shootdown */
163+
/* MMU Base Architecture */
164+
#define OV5_MMU_SUPPORT 0x18C0 /* MMU Mode Support Mask */
165+
#define OV5_MMU_HASH 0x1800 /* Hash MMU Only */
166+
#define OV5_MMU_RADIX 0x1840 /* Radix MMU Only */
167+
#define OV5_MMU_EITHER 0x1880 /* Hash or Radix Supported */
168+
#define OV5_MMU_DYNAMIC 0x18C0 /* Hash or Radix Can Switch Later */
169+
#define OV5_NMMU 0x1820 /* Nest MMU Available */
170+
/* Hash Table Extensions */
171+
#define OV5_HASH_SEG_TBL 0x1980 /* In Memory Segment Tables Available */
172+
#define OV5_HASH_GTSE 0x1940 /* Guest Translation Shoot Down Avail */
173+
/* Radix Table Extensions */
174+
#define OV5_RADIX_GTSE 0x1A40 /* Guest Translation Shoot Down Avail */
169175

170176
/* Option Vector 6: IBM PAPR hints */
171177
#define OV6_LINUX 0x02 /* Linux is our OS */

arch/powerpc/kernel/idle_book3s.S

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -276,19 +276,21 @@ power_enter_stop:
276276
*/
277277
andis. r4,r3,PSSCR_EC_ESL_MASK_SHIFTED
278278
clrldi r3,r3,60 /* r3 = Bits[60:63] = Requested Level (RL) */
279-
bne 1f
279+
bne .Lhandle_esl_ec_set
280280
IDLE_STATE_ENTER_SEQ(PPC_STOP)
281281
li r3,0 /* Since we didn't lose state, return 0 */
282282
b pnv_wakeup_noloss
283+
284+
.Lhandle_esl_ec_set:
283285
/*
284286
* Check if the requested state is a deep idle state.
285287
*/
286-
1: LOAD_REG_ADDRBASE(r5,pnv_first_deep_stop_state)
288+
LOAD_REG_ADDRBASE(r5,pnv_first_deep_stop_state)
287289
ld r4,ADDROFF(pnv_first_deep_stop_state)(r5)
288290
cmpd r3,r4
289-
bge 2f
291+
bge .Lhandle_deep_stop
290292
IDLE_STATE_ENTER_SEQ_NORET(PPC_STOP)
291-
2:
293+
.Lhandle_deep_stop:
292294
/*
293295
* Entering deep idle state.
294296
* Clear thread bit in PACA_CORE_IDLE_STATE, save SPRs to

0 commit comments

Comments
 (0)