Skip to content

Commit 8c86d0e

Browse files
Automatic merge of 'next' into merge (2025-09-21 21:55)
2 parents 5df49b8 + 9316512 commit 8c86d0e

File tree

23 files changed

+1019
-63
lines changed

23 files changed

+1019
-63
lines changed

Documentation/userspace-api/ioctl/ioctl-number.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,8 @@ Code Seq# Include File Comments
374374
375375
0xB2 08 arch/powerpc/include/uapi/asm/papr-physical-attestation.h powerpc/pseries Physical Attestation API
376376
377+
0xB2 09 arch/powerpc/include/uapi/asm/papr-hvpipe.h powerpc/pseries HVPIPE API
378+
377379
0xB3 00 linux/mmc/ioctl.h
378380
0xB4 00-0F linux/gpio.h <mailto:[email protected]>
379381
0xB5 00-0F uapi/linux/rpmsg.h <mailto:[email protected]>

arch/powerpc/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,11 @@ config PPC
243243
select HAVE_EFFICIENT_UNALIGNED_ACCESS
244244
select HAVE_GUP_FAST
245245
select HAVE_FTRACE_GRAPH_FUNC
246+
select HAVE_FTRACE_REGS_HAVING_PT_REGS
246247
select HAVE_FUNCTION_ARG_ACCESS_API
247248
select HAVE_FUNCTION_DESCRIPTORS if PPC64_ELF_ABI_V1
248249
select HAVE_FUNCTION_ERROR_INJECTION
250+
select HAVE_FUNCTION_GRAPH_FREGS
249251
select HAVE_FUNCTION_GRAPH_TRACER
250252
select HAVE_FUNCTION_TRACER if !COMPILE_TEST && (PPC64 || (PPC32 && CC_IS_GCC))
251253
select HAVE_GCC_PLUGINS

arch/powerpc/include/asm/book3s/32/pgalloc.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@
77

88
static inline pgd_t *pgd_alloc(struct mm_struct *mm)
99
{
10-
return kmem_cache_alloc(PGT_CACHE(PGD_INDEX_SIZE),
11-
pgtable_gfp_flags(mm, GFP_KERNEL));
10+
pgd_t *pgd = kmem_cache_alloc(PGT_CACHE(PGD_INDEX_SIZE),
11+
pgtable_gfp_flags(mm, GFP_KERNEL));
12+
13+
#ifdef CONFIG_PPC_BOOK3S_603
14+
memcpy(pgd + USER_PTRS_PER_PGD, swapper_pg_dir + USER_PTRS_PER_PGD,
15+
(MAX_PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t));
16+
#endif
17+
return pgd;
1218
}
1319

1420
static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)

arch/powerpc/include/asm/fprobe.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
#ifndef _ASM_PPC_FPROBE_H
3+
#define _ASM_PPC_FPROBE_H
4+
5+
#include <asm-generic/fprobe.h>
6+
7+
#ifdef CONFIG_64BIT
8+
#undef FPROBE_HEADER_MSB_PATTERN
9+
#define FPROBE_HEADER_MSB_PATTERN (PAGE_OFFSET & ~FPROBE_HEADER_MSB_MASK)
10+
#endif
11+
12+
#endif /* _ASM_PPC_FPROBE_H */

arch/powerpc/include/asm/ftrace.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,21 @@ static __always_inline struct pt_regs *arch_ftrace_get_regs(struct ftrace_regs *
5050
asm volatile("mfmsr %0" : "=r" ((_regs)->msr)); \
5151
} while (0)
5252

53+
#undef ftrace_regs_get_return_value
54+
static __always_inline unsigned long
55+
ftrace_regs_get_return_value(const struct ftrace_regs *fregs)
56+
{
57+
return arch_ftrace_regs(fregs)->regs.gpr[3];
58+
}
59+
#define ftrace_regs_get_return_value ftrace_regs_get_return_value
60+
61+
#undef ftrace_regs_get_frame_pointer
62+
static __always_inline unsigned long
63+
ftrace_regs_get_frame_pointer(const struct ftrace_regs *fregs)
64+
{
65+
return arch_ftrace_regs(fregs)->regs.gpr[1];
66+
}
67+
5368
static __always_inline void
5469
ftrace_regs_set_instruction_pointer(struct ftrace_regs *fregs,
5570
unsigned long ip)

arch/powerpc/include/asm/module.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ struct ppc_plt_entry {
2727
struct mod_arch_specific {
2828
#ifdef __powerpc64__
2929
unsigned int stubs_section; /* Index of stubs section in module */
30+
unsigned int stub_count; /* Number of stubs used */
3031
#ifdef CONFIG_PPC_KERNEL_PCREL
3132
unsigned int got_section; /* What section is the GOT? */
3233
unsigned int pcpu_section; /* .data..percpu section */

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm)
2222
pgd_t *pgd = kmem_cache_alloc(PGT_CACHE(PGD_INDEX_SIZE),
2323
pgtable_gfp_flags(mm, GFP_KERNEL));
2424

25-
#if defined(CONFIG_PPC_8xx) || defined(CONFIG_PPC_BOOK3S_603)
25+
#ifdef CONFIG_PPC_8xx
2626
memcpy(pgd + USER_PTRS_PER_PGD, swapper_pg_dir + USER_PTRS_PER_PGD,
2727
(MAX_PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t));
2828
#endif

arch/powerpc/include/asm/papr-sysparm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ typedef struct {
2121
#define PAPR_SYSPARM_COOP_MEM_OVERCOMMIT_ATTRS mk_papr_sysparm(44)
2222
#define PAPR_SYSPARM_TLB_BLOCK_INVALIDATE_ATTRS mk_papr_sysparm(50)
2323
#define PAPR_SYSPARM_LPAR_NAME mk_papr_sysparm(55)
24+
#define PAPR_SYSPARM_HVPIPE_ENABLE mk_papr_sysparm(64)
2425

2526
/**
2627
* struct papr_sysparm_buf - RTAS work area layout for system parameter functions.

arch/powerpc/include/asm/pgtable.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,6 @@ struct mm_struct;
2020
#include <asm/nohash/pgtable.h>
2121
#endif /* !CONFIG_PPC_BOOK3S */
2222

23-
/*
24-
* Protection used for kernel text. We want the debuggers to be able to
25-
* set breakpoints anywhere, so don't write protect the kernel text
26-
* on platforms where such control is possible.
27-
*/
28-
#if defined(CONFIG_KGDB) || defined(CONFIG_XMON) || defined(CONFIG_BDI_SWITCH) || \
29-
defined(CONFIG_KPROBES) || defined(CONFIG_DYNAMIC_FTRACE)
30-
#define PAGE_KERNEL_TEXT PAGE_KERNEL_X
31-
#else
32-
#define PAGE_KERNEL_TEXT PAGE_KERNEL_ROX
33-
#endif
34-
3523
/* Make modules code happy. We don't set RO yet */
3624
#define PAGE_KERNEL_EXEC PAGE_KERNEL_X
3725

arch/powerpc/include/asm/rtas.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,11 @@ enum rtas_function_index {
6868
RTAS_FNIDX__IBM_READ_PCI_CONFIG,
6969
RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE,
7070
RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE2,
71+
RTAS_FNIDX__IBM_RECEIVE_HVPIPE_MSG,
7172
RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW,
7273
RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOW,
7374
RTAS_FNIDX__IBM_SCAN_LOG_DUMP,
75+
RTAS_FNIDX__IBM_SEND_HVPIPE_MSG,
7476
RTAS_FNIDX__IBM_SET_DYNAMIC_INDICATOR,
7577
RTAS_FNIDX__IBM_SET_EEH_OPTION,
7678
RTAS_FNIDX__IBM_SET_SLOT_RESET,
@@ -163,9 +165,11 @@ typedef struct {
163165
#define RTAS_FN_IBM_READ_PCI_CONFIG rtas_fn_handle(RTAS_FNIDX__IBM_READ_PCI_CONFIG)
164166
#define RTAS_FN_IBM_READ_SLOT_RESET_STATE rtas_fn_handle(RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE)
165167
#define RTAS_FN_IBM_READ_SLOT_RESET_STATE2 rtas_fn_handle(RTAS_FNIDX__IBM_READ_SLOT_RESET_STATE2)
168+
#define RTAS_FN_IBM_RECEIVE_HVPIPE_MSG rtas_fn_handle(RTAS_FNIDX__IBM_RECEIVE_HVPIPE_MSG)
166169
#define RTAS_FN_IBM_REMOVE_PE_DMA_WINDOW rtas_fn_handle(RTAS_FNIDX__IBM_REMOVE_PE_DMA_WINDOW)
167170
#define RTAS_FN_IBM_RESET_PE_DMA_WINDOW rtas_fn_handle(RTAS_FNIDX__IBM_RESET_PE_DMA_WINDOW)
168171
#define RTAS_FN_IBM_SCAN_LOG_DUMP rtas_fn_handle(RTAS_FNIDX__IBM_SCAN_LOG_DUMP)
172+
#define RTAS_FN_IBM_SEND_HVPIPE_MSG rtas_fn_handle(RTAS_FNIDX__IBM_SEND_HVPIPE_MSG)
169173
#define RTAS_FN_IBM_SET_DYNAMIC_INDICATOR rtas_fn_handle(RTAS_FNIDX__IBM_SET_DYNAMIC_INDICATOR)
170174
#define RTAS_FN_IBM_SET_EEH_OPTION rtas_fn_handle(RTAS_FNIDX__IBM_SET_EEH_OPTION)
171175
#define RTAS_FN_IBM_SET_SLOT_RESET rtas_fn_handle(RTAS_FNIDX__IBM_SET_SLOT_RESET)
@@ -217,6 +221,7 @@ typedef struct {
217221
#define RTAS_HARDWARE_ERROR -1 /* Hardware or other unspecified error. */
218222
#define RTAS_BUSY -2 /* Retry immediately. */
219223
#define RTAS_INVALID_PARAMETER -3 /* Invalid indicator/domain/sensor etc. */
224+
#define RTAS_FUNC_NOT_SUPPORTED -5 /* Function not supported */
220225
#define RTAS_UNEXPECTED_STATE_CHANGE -7 /* Seems limited to EEH and slot reset. */
221226
#define RTAS_EXTENDED_DELAY_MIN 9900 /* Retry after delaying for ~1ms. */
222227
#define RTAS_EXTENDED_DELAY_MAX 9905 /* Retry after delaying for ~100s. */
@@ -233,6 +238,7 @@ typedef struct {
233238
#define RTAS_EPOW_WARNING 0x40000000 /* set bit 1 */
234239
#define RTAS_HOTPLUG_EVENTS 0x10000000 /* set bit 3 */
235240
#define RTAS_IO_EVENTS 0x08000000 /* set bit 4 */
241+
#define RTAS_HVPIPE_MSG_EVENTS 0x04000000 /* set bit 5 */
236242
#define RTAS_EVENT_SCAN_ALL_EVENTS 0xffffffff
237243

238244
/* RTAS event severity */
@@ -282,6 +288,7 @@ typedef struct {
282288
#define RTAS_TYPE_DEALLOC 0xE3
283289
#define RTAS_TYPE_DUMP 0xE4
284290
#define RTAS_TYPE_HOTPLUG 0xE5
291+
#define RTAS_TYPE_HVPIPE 0xE6
285292
/* I don't add PowerMGM events right now, this is a different topic */
286293
#define RTAS_TYPE_PMGM_POWER_SW_ON 0x60
287294
#define RTAS_TYPE_PMGM_POWER_SW_OFF 0x61
@@ -374,6 +381,7 @@ inline uint32_t rtas_ext_event_company_id(struct rtas_ext_event_log_v6 *ext_log)
374381
#define PSERIES_ELOG_SECT_ID_HMC_ID (('H' << 8) | 'M')
375382
#define PSERIES_ELOG_SECT_ID_EPOW (('E' << 8) | 'P')
376383
#define PSERIES_ELOG_SECT_ID_IO_EVENT (('I' << 8) | 'E')
384+
#define PSERIES_ELOG_SECT_ID_HVPIPE_EVENT (('P' << 8) | 'E')
377385
#define PSERIES_ELOG_SECT_ID_MANUFACT_INFO (('M' << 8) | 'I')
378386
#define PSERIES_ELOG_SECT_ID_CALL_HOME (('C' << 8) | 'H')
379387
#define PSERIES_ELOG_SECT_ID_USER_DEF (('U' << 8) | 'D')
@@ -519,6 +527,7 @@ extern struct mutex rtas_ibm_get_indices_lock;
519527
extern struct mutex rtas_ibm_set_dynamic_indicator_lock;
520528
extern struct mutex rtas_ibm_get_dynamic_sensor_state_lock;
521529
extern struct mutex rtas_ibm_physical_attestation_lock;
530+
extern struct mutex rtas_ibm_send_hvpipe_msg_lock;
522531

523532
#define GLOBAL_INTERRUPT_QUEUE 9005
524533

0 commit comments

Comments
 (0)