Merge tag 'powerpc-4.20-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fixes from Michael Ellerman: "Two weeks worth of fixes since rc1. - I broke 16-byte alignment of the stack when we moved PPR into pt_regs. Despite being required by the ABI this broke almost nothing, we eventually hit it in code where GCC does arithmetic on the stack pointer assuming the bottom 4 bits are clear. Fix it by padding the in-kernel pt_regs by 8 bytes. - A couple of commits fixing minor bugs in the recent SLB rewrite. - A build fix related to tracepoints in KVM in some configurations. - Our old "IO workarounds" code written for Cell couldn't coexist in a kernel that runs on Power9 with the Radix MMU, fix that. - Remove the NPU DMA ops, these just printed a warning and should never have been called. - Suppress an overly chatty message triggered by CPU hotplug in some configs. - Two small selftest fixes. Thanks to: Alistair Popple, Gustavo Romero, Nicholas Piggin, Satheesh Rajendran, Scott Wood" * tag 'powerpc-4.20-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: selftests/powerpc: Adjust wild_bctr to build with old binutils powerpc/64: Fix kernel stack 16-byte alignment powerpc/numa: Suppress "VPHN is not supported" messages selftests/powerpc: Fix wild_bctr test to work on ppc64 powerpc/io: Fix the IO workarounds code to work with Radix powerpc/mm/64s: Fix preempt warning in slb_allocate_kernel() KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE powerpc/mm/64s: Only use slbfee on CPUs that support it powerpc/mm/64s: Use PPC_SLBFEE macro powerpc/mm/64s: Consolidate SLB assertions powerpc/powernv/npu: Remove NPU DMA ops
Bu işleme şunda yer alıyor:
@@ -47,8 +47,9 @@ static int ok(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define REG_POISON 0x5a5aUL
|
||||
#define POISONED_REG(n) ((REG_POISON << 48) | ((n) << 32) | (REG_POISON << 16) | (n))
|
||||
#define REG_POISON 0x5a5a
|
||||
#define POISONED_REG(n) ((((unsigned long)REG_POISON) << 48) | ((n) << 32) | \
|
||||
(((unsigned long)REG_POISON) << 16) | (n))
|
||||
|
||||
static inline void poison_regs(void)
|
||||
{
|
||||
@@ -105,6 +106,20 @@ static void dump_regs(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _CALL_AIXDESC
|
||||
struct opd {
|
||||
unsigned long ip;
|
||||
unsigned long toc;
|
||||
unsigned long env;
|
||||
};
|
||||
static struct opd bad_opd = {
|
||||
.ip = BAD_NIP,
|
||||
};
|
||||
#define BAD_FUNC (&bad_opd)
|
||||
#else
|
||||
#define BAD_FUNC BAD_NIP
|
||||
#endif
|
||||
|
||||
int test_wild_bctr(void)
|
||||
{
|
||||
int (*func_ptr)(void);
|
||||
@@ -133,7 +148,7 @@ int test_wild_bctr(void)
|
||||
|
||||
poison_regs();
|
||||
|
||||
func_ptr = (int (*)(void))BAD_NIP;
|
||||
func_ptr = (int (*)(void))BAD_FUNC;
|
||||
func_ptr();
|
||||
|
||||
FAIL_IF(1); /* we didn't segv? */
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle