mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'powerpc-6.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc updates from Michael Ellerman: - Add AT_HWCAP3 and AT_HWCAP4 aux vector entries for future use by glibc - Add support for recognising the Power11 architected and raw PVRs - Add support for nr_cpus=n on the command line where the boot CPU is >= n - Add ppcxx_allmodconfig targets for all 32-bit sub-arches - Other small features, cleanups and fixes Thanks to Akanksha J N, Brian King, Christophe Leroy, Dawei Li, Geoff Levand, Greg Kroah-Hartman, Jan-Benedict Glaw, Kajol Jain, Kunwu Chan, Li zeming, Madhavan Srinivasan, Masahiro Yamada, Nathan Chancellor, Nicholas Piggin, Peter Bergner, Qiheng Lin, Randy Dunlap, Ricardo B. Marliere, Rob Herring, Sathvika Vasireddy, Shrikanth Hegde, Uwe Kleine-König, Vaibhav Jain, and Wen Xiong. * tag 'powerpc-6.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (71 commits) powerpc/macio: Make remove callback of macio driver void returned powerpc/83xx: Fix build failure with FPU=n powerpc/64s: Fix get_hugepd_cache_index() build failure powerpc/4xx: Fix warp_gpio_leds build failure powerpc/amigaone: Make several functions static powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc. macintosh/adb: make adb_dev_class constant powerpc: xor_vmx: Add '-mhard-float' to CFLAGS powerpc/fsl: Fix mfpmr() asm constraint error powerpc: Remove cpu-as-y completely powerpc/fsl: Modernise mt/mfpmr powerpc/fsl: Fix mfpmr build errors with newer binutils powerpc/64s: Use .machine power4 around dcbt powerpc/64s: Move dcbt/dcbtst sequence into a macro powerpc/mm: Code cleanup for __hash_page_thp powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks powerpc/irq: Allow softirq to hardirq stack transition powerpc: Stop using of_root powerpc/machdep: Define 'compatibles' property in ppc_md and use it of: Reimplement of_machine_is_compatible() using of_machine_compatible_match() ...
This commit is contained in:
@@ -219,18 +219,6 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
||||
# often slow when they are implemented at all
|
||||
KBUILD_CFLAGS += $(call cc-option,-mno-string)
|
||||
|
||||
cpu-as-$(CONFIG_ALTIVEC) += $(call as-option,-Wa$(comma)-maltivec)
|
||||
|
||||
# When using '-many -mpower4' gas will first try and find a matching power4
|
||||
# mnemonic and failing that it will allow any valid mnemonic that GAS knows
|
||||
# about. GCC will pass -many to GAS when assembling, clang does not.
|
||||
# LLVM IAS doesn't understand either flag: https://github.com/ClangBuiltLinux/linux/issues/675
|
||||
# but LLVM IAS only supports ISA >= 2.06 for Book3S 64 anyway...
|
||||
cpu-as-$(CONFIG_PPC_BOOK3S_64) += $(call as-option,-Wa$(comma)-mpower4) $(call as-option,-Wa$(comma)-many)
|
||||
|
||||
KBUILD_AFLAGS += $(cpu-as-y)
|
||||
KBUILD_CFLAGS += $(cpu-as-y)
|
||||
|
||||
KBUILD_AFLAGS += $(aflags-y)
|
||||
KBUILD_CFLAGS += $(cflags-y)
|
||||
|
||||
@@ -314,6 +302,26 @@ ppc32_allmodconfig:
|
||||
$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/book3s_32.config \
|
||||
-f $(srctree)/Makefile allmodconfig
|
||||
|
||||
generated_configs += ppc40x_allmodconfig
|
||||
ppc40x_allmodconfig:
|
||||
$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/40x.config \
|
||||
-f $(srctree)/Makefile allmodconfig
|
||||
|
||||
generated_configs += ppc44x_allmodconfig
|
||||
ppc44x_allmodconfig:
|
||||
$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/44x.config \
|
||||
-f $(srctree)/Makefile allmodconfig
|
||||
|
||||
generated_configs += ppc8xx_allmodconfig
|
||||
ppc8xx_allmodconfig:
|
||||
$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/8xx.config \
|
||||
-f $(srctree)/Makefile allmodconfig
|
||||
|
||||
generated_configs += ppc85xx_allmodconfig
|
||||
ppc85xx_allmodconfig:
|
||||
$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/85xx-32bit.config \
|
||||
-f $(srctree)/Makefile allmodconfig
|
||||
|
||||
generated_configs += ppc_defconfig
|
||||
ppc_defconfig:
|
||||
$(call merge_into_defconfig,book3s_32.config,)
|
||||
|
||||
@@ -112,8 +112,11 @@ static void *simple_realloc(void *ptr, unsigned long size)
|
||||
return ptr;
|
||||
|
||||
new = simple_malloc(size);
|
||||
memcpy(new, ptr, p->size);
|
||||
simple_free(ptr);
|
||||
if (new) {
|
||||
memcpy(new, ptr, p->size);
|
||||
simple_free(ptr);
|
||||
}
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
|
||||
2
arch/powerpc/configs/40x.config
Normal file
2
arch/powerpc/configs/40x.config
Normal file
@@ -0,0 +1,2 @@
|
||||
CONFIG_PPC64=n
|
||||
CONFIG_40x=y
|
||||
2
arch/powerpc/configs/44x.config
Normal file
2
arch/powerpc/configs/44x.config
Normal file
@@ -0,0 +1,2 @@
|
||||
CONFIG_PPC64=n
|
||||
CONFIG_44x=y
|
||||
@@ -1,3 +1,4 @@
|
||||
CONFIG_PPC64=n
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_PPC_85xx=y
|
||||
|
||||
2
arch/powerpc/configs/8xx.config
Normal file
2
arch/powerpc/configs/8xx.config
Normal file
@@ -0,0 +1,2 @@
|
||||
CONFIG_PPC64=n
|
||||
CONFIG_PPC_8xx=y
|
||||
@@ -24,7 +24,6 @@ CONFIG_PS3_VRAM=m
|
||||
CONFIG_PS3_LPM=m
|
||||
# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2 is not set
|
||||
CONFIG_PPC_4K_PAGES=y
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_PM=y
|
||||
|
||||
@@ -269,8 +269,6 @@ int hash__create_section_mapping(unsigned long start, unsigned long end,
|
||||
int nid, pgprot_t prot);
|
||||
int hash__remove_section_mapping(unsigned long start, unsigned long end);
|
||||
|
||||
void hash__kernel_map_pages(struct page *page, int numpages, int enable);
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _ASM_POWERPC_BOOK3S_64_HASH_H */
|
||||
|
||||
@@ -45,9 +45,9 @@ static inline int hugepd_ok(hugepd_t hpd)
|
||||
/*
|
||||
* This should never get called
|
||||
*/
|
||||
static inline int get_hugepd_cache_index(int index)
|
||||
static __always_inline int get_hugepd_cache_index(int index)
|
||||
{
|
||||
BUG();
|
||||
BUILD_BUG();
|
||||
}
|
||||
|
||||
#endif /* CONFIG_HUGETLB_PAGE */
|
||||
|
||||
@@ -1027,16 +1027,6 @@ static inline void vmemmap_remove_mapping(unsigned long start,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE)
|
||||
static inline void __kernel_map_pages(struct page *page, int numpages, int enable)
|
||||
{
|
||||
if (radix_enabled())
|
||||
radix__kernel_map_pages(page, numpages, enable);
|
||||
else
|
||||
hash__kernel_map_pages(page, numpages, enable);
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline pte_t pmd_pte(pmd_t pmd)
|
||||
{
|
||||
return __pte_raw(pmd_raw(pmd));
|
||||
|
||||
@@ -362,8 +362,6 @@ int radix__create_section_mapping(unsigned long start, unsigned long end,
|
||||
int radix__remove_section_mapping(unsigned long start, unsigned long end);
|
||||
#endif /* CONFIG_MEMORY_HOTPLUG */
|
||||
|
||||
void radix__kernel_map_pages(struct page *page, int numpages, int enable);
|
||||
|
||||
#ifdef CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP
|
||||
#define vmemmap_can_optimize vmemmap_can_optimize
|
||||
bool vmemmap_can_optimize(struct vmem_altmap *altmap, struct dev_pagemap *pgmap);
|
||||
|
||||
@@ -454,6 +454,9 @@ static inline void cpu_feature_keys_init(void) { }
|
||||
CPU_FTR_ARCH_300 | CPU_FTR_ARCH_31 | \
|
||||
CPU_FTR_DAWR | CPU_FTR_DAWR1 | \
|
||||
CPU_FTR_DEXCR_NPHIE)
|
||||
|
||||
#define CPU_FTRS_POWER11 CPU_FTRS_POWER10
|
||||
|
||||
#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 | \
|
||||
@@ -542,19 +545,20 @@ enum {
|
||||
#define CPU_FTRS_DT_CPU_BASE (~0ul)
|
||||
#endif
|
||||
|
||||
/* pseries may disable DBELL with ibm,pi-features */
|
||||
#ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||
#define CPU_FTRS_ALWAYS \
|
||||
(CPU_FTRS_POSSIBLE & ~CPU_FTR_HVMODE & CPU_FTRS_POWER7 & \
|
||||
CPU_FTRS_POWER8E & CPU_FTRS_POWER8 & CPU_FTRS_POWER9 & \
|
||||
CPU_FTRS_POWER9_DD2_1 & CPU_FTRS_POWER9_DD2_2 & \
|
||||
(CPU_FTRS_POSSIBLE & ~CPU_FTR_HVMODE & ~CPU_FTR_DBELL & \
|
||||
CPU_FTRS_POWER7 & CPU_FTRS_POWER8E & CPU_FTRS_POWER8 & \
|
||||
CPU_FTRS_POWER9 & CPU_FTRS_POWER9_DD2_1 & CPU_FTRS_POWER9_DD2_2 & \
|
||||
CPU_FTRS_POWER10 & CPU_FTRS_DT_CPU_BASE)
|
||||
#else
|
||||
#define CPU_FTRS_ALWAYS \
|
||||
(CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & \
|
||||
CPU_FTRS_POWER6 & CPU_FTRS_POWER7 & CPU_FTRS_CELL & \
|
||||
CPU_FTRS_PA6T & CPU_FTRS_POWER8 & CPU_FTRS_POWER8E & \
|
||||
~CPU_FTR_HVMODE & CPU_FTRS_POSSIBLE & CPU_FTRS_POWER9 & \
|
||||
CPU_FTRS_POWER9_DD2_1 & CPU_FTRS_POWER9_DD2_2 & \
|
||||
~CPU_FTR_HVMODE & ~CPU_FTR_DBELL & CPU_FTRS_POSSIBLE & \
|
||||
CPU_FTRS_POWER9 & CPU_FTRS_POWER9_DD2_1 & CPU_FTRS_POWER9_DD2_2 & \
|
||||
CPU_FTRS_POWER10 & CPU_FTRS_DT_CPU_BASE)
|
||||
#endif /* CONFIG_CPU_LITTLE_ENDIAN */
|
||||
#endif
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
struct platform_driver;
|
||||
|
||||
extern struct bus_type ibmebus_bus_type;
|
||||
extern const struct bus_type ibmebus_bus_type;
|
||||
|
||||
int ibmebus_register_driver(struct platform_driver *drv);
|
||||
void ibmebus_unregister_driver(struct platform_driver *drv);
|
||||
|
||||
@@ -97,7 +97,7 @@ DECLARE_STATIC_KEY_FALSE(interrupt_exit_not_reentrant);
|
||||
|
||||
static inline bool is_implicit_soft_masked(struct pt_regs *regs)
|
||||
{
|
||||
if (regs->msr & MSR_PR)
|
||||
if (user_mode(regs))
|
||||
return false;
|
||||
|
||||
if (regs->nip >= (unsigned long)__end_soft_masked)
|
||||
|
||||
@@ -22,6 +22,7 @@ struct pci_host_bridge;
|
||||
struct machdep_calls {
|
||||
const char *name;
|
||||
const char *compatible;
|
||||
const char * const *compatibles;
|
||||
#ifdef CONFIG_PPC64
|
||||
#ifdef CONFIG_PM
|
||||
void (*iommu_restore)(void);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
extern struct bus_type macio_bus_type;
|
||||
extern const struct bus_type macio_bus_type;
|
||||
|
||||
/* MacIO device driver is defined later */
|
||||
struct macio_driver;
|
||||
@@ -126,7 +126,7 @@ static inline struct pci_dev *macio_get_pci_dev(struct macio_dev *mdev)
|
||||
struct macio_driver
|
||||
{
|
||||
int (*probe)(struct macio_dev* dev, const struct of_device_id *match);
|
||||
int (*remove)(struct macio_dev* dev);
|
||||
void (*remove)(struct macio_dev *dev);
|
||||
|
||||
int (*suspend)(struct macio_dev* dev, pm_message_t state);
|
||||
int (*resume)(struct macio_dev* dev);
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
#define MMU_FTRS_POWER8 MMU_FTRS_POWER6
|
||||
#define MMU_FTRS_POWER9 MMU_FTRS_POWER6
|
||||
#define MMU_FTRS_POWER10 MMU_FTRS_POWER6
|
||||
#define MMU_FTRS_POWER11 MMU_FTRS_POWER6
|
||||
#define MMU_FTRS_CELL MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \
|
||||
MMU_FTR_CI_LARGE_PAGE
|
||||
#define MMU_FTRS_PA6T MMU_FTRS_DEFAULT_HPTE_ARCH_V2 | \
|
||||
|
||||
@@ -336,7 +336,7 @@ struct mpic
|
||||
#endif
|
||||
};
|
||||
|
||||
extern struct bus_type mpic_subsys;
|
||||
extern const struct bus_type mpic_subsys;
|
||||
|
||||
/*
|
||||
* MPIC flags (passed to mpic_alloc)
|
||||
|
||||
@@ -163,9 +163,7 @@ struct paca_struct {
|
||||
u64 kstack; /* Saved Kernel stack addr */
|
||||
u64 saved_r1; /* r1 save for RTAS calls or PM or EE=0 */
|
||||
u64 saved_msr; /* MSR saved here by enter_rtas */
|
||||
#ifdef CONFIG_PPC64
|
||||
u64 exit_save_r1; /* Syscall/interrupt R1 save */
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_BOOK3E_64
|
||||
u16 trap_save; /* Used when bad stack is encountered */
|
||||
#endif
|
||||
@@ -214,8 +212,6 @@ struct paca_struct {
|
||||
/* Non-maskable exceptions that are not performance critical */
|
||||
u64 exnmi[EX_SIZE]; /* used for system reset (nmi) */
|
||||
u64 exmc[EX_SIZE]; /* used for machine checks */
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
/* Exclusive stacks for system reset and machine check exception. */
|
||||
void *nmi_emergency_sp;
|
||||
void *mc_emergency_sp;
|
||||
|
||||
@@ -201,11 +201,13 @@
|
||||
|
||||
#ifdef CONFIG_PPC64_ELF_ABI_V2
|
||||
#define STK_GOT 24
|
||||
#define __STK_PARAM(i) (32 + ((i)-3)*8)
|
||||
#define STK_PARAM_AREA 32
|
||||
#else
|
||||
#define STK_GOT 40
|
||||
#define __STK_PARAM(i) (48 + ((i)-3)*8)
|
||||
#define STK_PARAM_AREA 48
|
||||
#endif
|
||||
|
||||
#define __STK_PARAM(i) (STK_PARAM_AREA + ((i)-3)*8)
|
||||
#define STK_PARAM(i) __STK_PARAM(__REG_##i)
|
||||
|
||||
#ifdef CONFIG_PPC64_ELF_ABI_V2
|
||||
@@ -506,7 +508,25 @@ END_FTR_SECTION_NESTED(CPU_FTR_CELL_TB_BUG, CPU_FTR_CELL_TB_BUG, 96)
|
||||
*/
|
||||
#define DCBT_BOOK3S_STOP_ALL_STREAM_IDS(scratch) \
|
||||
lis scratch,0x60000000@h; \
|
||||
dcbt 0,scratch,0b01010
|
||||
.machine push; \
|
||||
.machine power4; \
|
||||
dcbt 0,scratch,0b01010; \
|
||||
.machine pop;
|
||||
|
||||
#define DCBT_SETUP_STREAMS(from, from_parms, to, to_parms, scratch) \
|
||||
lis scratch,0x8000; /* GO=1 */ \
|
||||
clrldi scratch,scratch,32; \
|
||||
.machine push; \
|
||||
.machine power4; \
|
||||
/* setup read stream 0 */ \
|
||||
dcbt 0,from,0b01000; /* addr from */ \
|
||||
dcbt 0,from_parms,0b01010; /* length and depth from */ \
|
||||
/* setup write stream 1 */ \
|
||||
dcbtst 0,to,0b01000; /* addr to */ \
|
||||
dcbtst 0,to_parms,0b01010; /* length and depth to */ \
|
||||
eieio; \
|
||||
dcbt 0,scratch,0b01010; /* all streams GO */ \
|
||||
.machine pop;
|
||||
|
||||
/*
|
||||
* toreal/fromreal/tophys/tovirt macros. 32-bit BookE makes them
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user