* [Bug 199561] sungem: RX MAC fifo overflow smac[03910440]
From: bugzilla-daemon @ 2020-04-05 22:00 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <bug-199561-206035@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=199561
--- Comment #6 from Erhard F. (erhard_f@mailbox.org) ---
Created attachment 288225
--> https://bugzilla.kernel.org/attachment.cgi?id=288225&action=edit
kernel .config (5.6.2, PowerMac G4 DP)
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply
* [Bug 199561] sungem: RX MAC fifo overflow smac[03910440]
From: bugzilla-daemon @ 2020-04-05 21:58 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <bug-199561-206035@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=199561
Erhard F. (erhard_f@mailbox.org) changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #280931|0 |1
is obsolete| |
--- Comment #5 from Erhard F. (erhard_f@mailbox.org) ---
Created attachment 288223
--> https://bugzilla.kernel.org/attachment.cgi?id=288223&action=edit
dmesg (5.6.2, PowerMac G4 DP)
Still in recent kernels (5.6.2).
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply
* [Bug 207129] New: PowerMac G4 DP (5.6.2 debug kernel + inline KASAN) freezes shortly after booting with "do_IRQ: stack overflow: 1760"
From: bugzilla-daemon @ 2020-04-05 21:32 UTC (permalink / raw)
To: linuxppc-dev
https://bugzilla.kernel.org/show_bug.cgi?id=207129
Bug ID: 207129
Summary: PowerMac G4 DP (5.6.2 debug kernel + inline KASAN)
freezes shortly after booting with "do_IRQ: stack
overflow: 1760"
Product: Platform Specific/Hardware
Version: 2.5
Kernel Version: 5.6.2
Hardware: PPC-32
OS: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: PPC-32
Assignee: platform_ppc-32@kernel-bugs.osdl.org
Reporter: erhard_f@mailbox.org
CC: christophe.leroy@c-s.fr
Regression: No
Created attachment 288221
--> https://bugzilla.kernel.org/attachment.cgi?id=288221&action=edit
kernel .config (5.6.2, INLINE KASAN, PowerMac G4 DP)
Was trying to do some testing with the PowerMac G4 DP again, running a 5.6.2
debug kernel w. KASAN INLINE. The G4 boots fine, but crashes shortly afterwards
when using it, leaving no stack trace, but only this message on the screen:
do_IRQ: stack overflow: 1760
CPU: 0 PID: 209 Comm: rsync Tained: G W 5.6.2-PowerMacG4+ #3
Call Trace:
120 seconds panic timer does not kick in. I have to manually switch off/switch
on the G4.
--
You are receiving this mail because:
You are watching the assignee of the bug.
^ permalink raw reply
* Re: [PATCH] KVM: PPC: Book3S HV: Remove NULL check before kfree
From: Markus Elfring @ 2020-04-05 20:50 UTC (permalink / raw)
To: Qiujun Huang, kvm-ppc, linuxppc-dev; +Cc: Chen Zhou, linux-kernel
> NULL check before kfree is unnecessary, so remove it.
Would you like to take similar update suggestions into account?
* 2019-09-04
KVM: PPC: Book3S HV: Delete an unnecessary check before kfree() in __kvmhv_nested_page_fault()
* [-next] KVM: PPC: Book3S HV: remove redundant NULL check
https://lkml.kernel.org/lkml/20200401130903.6576-1-chenzhou10@huawei.com/
https://lore.kernel.org/patchwork/patch/1218800/
Regards,
Markus
^ permalink raw reply
* Re: [GIT PULL] Please pull powerpc/linux.git powerpc-5.7-1 tag
From: pr-tracker-bot @ 2020-04-05 19:45 UTC (permalink / raw)
To: Michael Ellerman
Cc: tyreld, shilpa.bhat, gustavold, aik, ndesaulniers, psampat,
bala24, grant.likely, oohall, afzal.mohd.ma, srikar, sfr,
joe.lawrence, maskray, ilie.halip, aneesh.kumar, yuehaibing, rppt,
chenzhou10, ganeshgr, dougmill, kjain, leonardo, naveen.n.rao,
agust, laurentiu.tudor, nathanl, arnd, alistair, linuxppc-dev,
npiggin, oss, olof, maddy, christophe.jaillet, clg, courbet,
vaibhav, bhelgaas, natechancellor, dja, farosas, gregkh,
lpechacek, linux-kernel, sourabhjain, joe, po-hsu.lin,
Linus Torvalds
In-Reply-To: <87h7xyrt5d.fsf@mpe.ellerman.id.au>
The pull request you sent on Sun, 05 Apr 2020 22:53:02 +1000:
> https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git tags/powerpc-5.7-1
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/d38c07afc356ddebaa3ed8ecb3f553340e05c969
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.wiki.kernel.org/userdoc/prtracker
^ permalink raw reply
* Re: [PATCH v3] powerpc/powernv: add NULL check after kzalloc in opal_add_one_export
From: Markus Elfring @ 2020-04-05 19:06 UTC (permalink / raw)
To: Qiujun Huang, linuxppc-dev; +Cc: Thomas Gleixner, Paul Mackerras, linux-kernel
> Here needs a NULL check.
I find this change description questionable
(despite of a reasonable patch subject).
> Issue found by coccinelle.
Would an information like “Generated by: scripts/coccinelle/null/kmerr.cocci”
be nicer?
> ---
Will a patch change log be helpful here?
Regards,
Markus
^ permalink raw reply
* Re: [RFC WIP PATCH] powerpc/32: system call implement entry/exit logic in C
From: Christophe Leroy @ 2020-04-05 18:53 UTC (permalink / raw)
To: Nicholas Piggin, Benjamin Herrenschmidt, Michael Ellerman,
msuchanek, Paul Mackerras
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1585898897.1jwur86s6a.astroid@bobo.none>
Le 03/04/2020 à 09:33, Nicholas Piggin a écrit :
> Christophe Leroy's on April 1, 2020 9:48 pm:
>>
>>
>> Le 31/03/2020 à 17:22, Christophe Leroy a écrit :
>>> That's first try to port PPC64 syscall entry/exit logic in C to PPC32.
>>> I've do the minimum to get it work. I have not reworked calls
>>> to sys_fork() and friends for instance.
>>>
>>> For the time being, it seems to work more or less but:
>>> - ping reports EINVAL on recvfrom
>>> - strace shows NULL instead of strings in call like open() for instance.
>>
>> For the two above problems, that's because system_call_exception()
>> doesn't set orig_gpr3 whereas DoSycall() does in entry_32.S . Is that
>> only done on PPC32 ?
>>
>> With the following line at the begining of system_call_exception(), it
>> works perfectly:
>>
>> regs->orig_gpr3 = r3;
>
> Oh great, nice work. We should be able to make some simple helpers or
> move some things a bit to reduce the amount of ifdefs in the C code.
> It doesn't look too bad though.
>
>> I will now focus on performance to see if we can do something about it.
>
> What's the performance difference between current asm code just with
> always saving NVGPRS vs C?
Done new measurement and sent a series. lower values now because the
time accounting was done twice as it was still in the ASM part.
Before the series, 311 cycles for a null_syscall
If adding SAVE_NVGPRS to the entry macro, 335 cycles
First patch: 353 cycles ie +13,5%
After a few changes, including conditional saving of non volatile
registers, I get 325 cycles that is only +4,5%. I thing that's acceptable.
Do you see a problem with still saving non volatile registers only when
required ?
Christophe
^ permalink raw reply
* Re: [PATCH v2 5/5] uaccess: Rename user_access_begin/end() to user_full_access_begin/end()
From: Christophe Leroy @ 2020-04-05 18:47 UTC (permalink / raw)
To: Linus Torvalds, Michael Ellerman
Cc: linux-arch, Kees Cook, Dave Airlie, intel-gfx,
Linux Kernel Mailing List, Linux-MM, Paul Mackerras, Al Viro,
Daniel Vetter, Peter Anvin, Andrew Morton, linuxppc-dev
In-Reply-To: <CAHk-=wh_DY_dysMX0NuvJmMFr3+QDKOZPZqWKwLkkjgZTuyQ+A@mail.gmail.com>
Le 03/04/2020 à 20:01, Linus Torvalds a écrit :
> On Fri, Apr 3, 2020 at 12:21 AM Christophe Leroy
> <christophe.leroy@c-s.fr> wrote:
>>
>> Now we have user_read_access_begin() and user_write_access_begin()
>> in addition to user_access_begin().
>
> I realize Al asked for this, but I don't think it really adds anything
> to the series.
>
> The "full" makes the names longer, but not really any more legible.
>
> So I like 1-4, but am unconvinced about 5 and would prefer that to be
> dropped. Sorry for the bikeshedding.
>
Yes I was not sure about it, that's the reason why I added it as the
last patch of the series.
And in the meantime, we see Robots reporting build failures due to
additional use of user_access_begin() in parallele to this change, so I
guess it would anyway be a challenge to perform such a change without
coordination.
> And I like this series much better without the cookie that was
> discussed, and just making the hard rule be that they can't nest.
>
> Some architecture may obviously use a cookie internally if they have
> some nesting behavior of their own, but it doesn't look like we have
> any major reason to expose that as the actual interface.
>
> The only other question is how to synchronize this? I'm ok with it
> going through the ppc tree, for example, and just let others build on
> that. Maybe using a shared immutable branch with 5.6 as a base?
Michael, can you take patches 1 to 4 ?
Otherwise, can you ack patch 4 to enable merging through another tree ?
Christophe
^ permalink raw reply
* Re: [GIT PULL] Please pull powerpc/linux.git powerpc-5.7-1 tag
From: Linus Torvalds @ 2020-04-05 18:28 UTC (permalink / raw)
To: Michael Ellerman
Cc: tyreld, shilpa.bhat, gustavold, aik, Nick Desaulniers, psampat,
bala24, Grant Likely, Oliver O'Halloran, afzal.mohd.ma,
srikar, Stephen Rothwell, Joe Lawrence, maskray, Ilie Halip,
Aneesh Kumar K.V, YueHaibing, Mike Rapoport, chenzhou10, ganeshgr,
dougmill, kjain, leonardo, Naveen N. Rao, agust, laurentiu.tudor,
nathanl, Arnd Bergmann, alistair, Nick Piggin, oss,
Olof Johansson, maddy, Christophe JAILLET, clg, courbet, vaibhav,
Bjorn Helgaas, Nathan Chancellor, Daniel Axtens, farosas,
Greg Kroah-Hartman, lpechacek, Linux Kernel Mailing List,
sourabhjain, Joe Perches, po-hsu.lin, linuxppc-dev
In-Reply-To: <87h7xyrt5d.fsf@mpe.ellerman.id.au>
On Sun, Apr 5, 2020 at 5:53 AM Michael Ellerman <mpe@ellerman.id.au> wrote:
>
> There is one conflict in fs/sysfs/group.c, between our:
>
> 9255782f7061 ("sysfs: Wrap __compat_only_sysfs_link_entry_to_kobj function to change the symlink name")
[...]
The conflict was trivial.
But I want to kvetch a bit about that commit. It's doing some odd stuff.
In particular, it's wrapping things "the wrong way". Our naming rules
are that the double underscore versions are the internal helper
functions that you generally shouldn't use unless you have some extra
reason for it, and then the non-underscore versions are the preferred
and simpler user interface to those internal implementations.
IOW, the _wrapper_ doesn't have double underscores, it's the _wrappee_
that has the underscores.
That commit does the exact reverse of that usual pattern, which is
very confusing.
Now, I see _why_ you do that - normally the non-underscore version is
the "real" interface and the one we've always exported, and then the
double underscore is the special internal thing that maybe exposes
some internal detail (or maybe only does one special case of it and
leaves out locking or whatever).
In this case, for hysterical raisins, we only _had_ that
double-underscore version, and you basically added the new case and
did it without the underscores.
So I see why it happened the way it did, but I do think the end result
makes no sense and is odd and surprising.
The thing is, we have exactly *one* user of that double-underscore
version: tpm-chip.c (ok, there are two calls in that file, but it's a
single user).
So I think it should just have removed the __ version entirely. Make
tpm-chip just use the new semantics, and pass in the extra NULL
argument.
I guess I'll just do that as a cleanup patch on top, but it feels a
bit odd to have to do that cleanup when the original patch could have
just done the obvious thing.
Linus
^ permalink raw reply
* [RFC PATCH v2 13/13] powerpc/kernel: Do not use READ_ONCE() to access current thread_info flags
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
current is a volatile pointer hold by r2 register.
READ_ONCE() is not required.
Before: 327 cycles on null_syscall
Before: 325 cycles on null_syscall
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/syscall.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
index 34fd66fd11a2..3d2f285b8a01 100644
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -164,7 +164,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
again:
#endif
local_irq_disable();
- ti_flags = READ_ONCE(*ti_flagsp);
+ ti_flags = current_thread_info()->flags;
while (unlikely(ti_flags & (_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM))) {
local_irq_enable();
if (ti_flags & _TIF_NEED_RESCHED) {
@@ -180,7 +180,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
do_notify_resume(regs, ti_flags);
}
local_irq_disable();
- ti_flags = READ_ONCE(*ti_flagsp);
+ ti_flags = current_thread_info()->flags;
}
if (IS_ENABLED(CONFIG_PPC_BOOK3S) && IS_ENABLED(CONFIG_PPC_FPU)) {
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 12/13] powerpc/kernel: Do not inconditionally save non volatile registers on system call
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
Before : 347 cycles on null_syscall
After : 327 cycles on null_syscall
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/entry_32.S | 15 +++++++++++++++
arch/powerpc/kernel/head_32.h | 3 +--
arch/powerpc/kernel/syscall.c | 2 +-
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index 103f5158bc44..b5113593e57f 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -315,13 +315,28 @@ stack_ovf:
RFI
#endif
+save_nvgprs:
+ lwz r11, _TRAP(r1)
+ andi. r12, r11, 1
+ rlwinm r11, r11, 0, ~1
+ beqlr
+ SAVE_NVGPRS(r1)
+ stw r11, _TRAP(r1)
+ blr
+
.globl transfer_to_syscall
transfer_to_syscall:
+ lwz r10, TI_FLAGS(r2)
mr r9, r0
+ andi. r10, r10, _TIF_SYSCALL_DOTRACE
addi r10, r1, STACK_FRAME_OVERHEAD
+ bnel- save_nvgprs
bl system_call_exception
ret_from_syscall:
+ lwz r9, TI_FLAGS(r2)
addi r4, r1, STACK_FRAME_OVERHEAD
+ andi. r0, r9, _TIF_SYSCALL_DOTRACE | _TIF_SINGLESTEP | _TIF_USER_WORK_MASK
+ bnel- save_nvgprs
bl syscall_exit_prepare
lwz r2, _CCR(r1)
lwz r4, _NIP(r1)
diff --git a/arch/powerpc/kernel/head_32.h b/arch/powerpc/kernel/head_32.h
index c301d666a3e5..1cc9a67cb42c 100644
--- a/arch/powerpc/kernel/head_32.h
+++ b/arch/powerpc/kernel/head_32.h
@@ -174,13 +174,12 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE)
stw r2,GPR2(r11)
addi r10,r10,STACK_FRAME_REGS_MARKER@l
stw r9,_MSR(r11)
- li r2, \trapno
+ li r2, \trapno + 1
stw r10,8(r11)
stw r2,_TRAP(r11)
SAVE_GPR(0, r11)
SAVE_4GPRS(3, r11)
SAVE_2GPRS(7, r11)
- SAVE_NVGPRS(r11)
addi r11,r1,STACK_FRAME_OVERHEAD
addi r2,r12,-THREAD
stw r11,PT_REGS(r12)
diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
index 630c423e089a..34fd66fd11a2 100644
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -39,7 +39,7 @@ notrace long system_call_exception(long r3, long r4, long r5,
if (!IS_ENABLED(CONFIG_PPC_BOOK3E))
BUG_ON(!(regs->msr & MSR_RI));
BUG_ON(IS_ENABLED(CONFIG_PPC64) && !(regs->msr & MSR_PR));
- BUG_ON(!FULL_REGS(regs));
+ BUG_ON(IS_ENABLED(CONFIG_PPC64) && !FULL_REGS(regs));
#ifdef CONFIG_PPC64
BUG_ON(regs->softe != IRQS_ENABLED);
#endif
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 11/13] powerpc/syscall: Avoid stack frame in likely part of syscall_call_exception()
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
When r3 is not modified, reload it from regs->orig_r3 to free
volatile registers. This avoids a stack frame for the likely part
of syscall_call_exception()
Before : 353 cycles on null_syscall
After : 347 cycles on null_syscall
Before the patch:
c000b4d4 <system_call_exception>:
c000b4d4: 7c 08 02 a6 mflr r0
c000b4d8: 94 21 ff e0 stwu r1,-32(r1)
c000b4dc: 93 e1 00 1c stw r31,28(r1)
c000b4e0: 90 01 00 24 stw r0,36(r1)
c000b4e4: 90 6a 00 88 stw r3,136(r10)
c000b4e8: 81 6a 00 84 lwz r11,132(r10)
c000b4ec: 69 6b 00 02 xori r11,r11,2
c000b4f0: 55 6b ff fe rlwinm r11,r11,31,31,31
c000b4f4: 0f 0b 00 00 twnei r11,0
c000b4f8: 81 6a 00 a0 lwz r11,160(r10)
c000b4fc: 55 6b 07 fe clrlwi r11,r11,31
c000b500: 0f 0b 00 00 twnei r11,0
c000b504: 7c 0c 42 e6 mftb r0
c000b508: 83 e2 00 08 lwz r31,8(r2)
c000b50c: 81 82 00 28 lwz r12,40(r2)
c000b510: 90 02 00 24 stw r0,36(r2)
c000b514: 7d 8c f8 50 subf r12,r12,r31
c000b518: 7c 0c 02 14 add r0,r12,r0
c000b51c: 90 02 00 08 stw r0,8(r2)
c000b520: 7c 10 13 a6 mtspr 80,r0
c000b524: 81 62 00 70 lwz r11,112(r2)
c000b528: 71 60 86 91 andi. r0,r11,34449
c000b52c: 40 82 00 34 bne c000b560 <system_call_exception+0x8c>
c000b530: 2b 89 01 b6 cmplwi cr7,r9,438
c000b534: 41 9d 00 64 bgt cr7,c000b598 <system_call_exception+0xc4>
c000b538: 3d 40 c0 5c lis r10,-16292
c000b53c: 55 29 10 3a rlwinm r9,r9,2,0,29
c000b540: 39 4a 41 e8 addi r10,r10,16872
c000b544: 80 01 00 24 lwz r0,36(r1)
c000b548: 7d 2a 48 2e lwzx r9,r10,r9
c000b54c: 7c 08 03 a6 mtlr r0
c000b550: 7d 29 03 a6 mtctr r9
c000b554: 83 e1 00 1c lwz r31,28(r1)
c000b558: 38 21 00 20 addi r1,r1,32
c000b55c: 4e 80 04 20 bctr
After the patch:
c000b4d4 <system_call_exception>:
c000b4d4: 81 6a 00 84 lwz r11,132(r10)
c000b4d8: 90 6a 00 88 stw r3,136(r10)
c000b4dc: 69 6b 00 02 xori r11,r11,2
c000b4e0: 55 6b ff fe rlwinm r11,r11,31,31,31
c000b4e4: 0f 0b 00 00 twnei r11,0
c000b4e8: 80 6a 00 a0 lwz r3,160(r10)
c000b4ec: 54 63 07 fe clrlwi r3,r3,31
c000b4f0: 0f 03 00 00 twnei r3,0
c000b4f4: 7d 6c 42 e6 mftb r11
c000b4f8: 81 82 00 08 lwz r12,8(r2)
c000b4fc: 80 02 00 28 lwz r0,40(r2)
c000b500: 91 62 00 24 stw r11,36(r2)
c000b504: 7c 00 60 50 subf r0,r0,r12
c000b508: 7d 60 5a 14 add r11,r0,r11
c000b50c: 91 62 00 08 stw r11,8(r2)
c000b510: 7c 10 13 a6 mtspr 80,r0
c000b514: 80 62 00 70 lwz r3,112(r2)
c000b518: 70 6b 86 91 andi. r11,r3,34449
c000b51c: 40 82 00 28 bne c000b544 <system_call_exception+0x70>
c000b520: 2b 89 01 b6 cmplwi cr7,r9,438
c000b524: 41 9d 00 84 bgt cr7,c000b5a8 <system_call_exception+0xd4>
c000b528: 80 6a 00 88 lwz r3,136(r10)
c000b52c: 3d 40 c0 5c lis r10,-16292
c000b530: 55 29 10 3a rlwinm r9,r9,2,0,29
c000b534: 39 4a 41 e4 addi r10,r10,16868
c000b538: 7d 2a 48 2e lwzx r9,r10,r9
c000b53c: 7d 29 03 a6 mtctr r9
c000b540: 4e 80 04 20 bctr
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/syscall.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
index 69d75fc4a5eb..630c423e089a 100644
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -91,6 +91,8 @@ notrace long system_call_exception(long r3, long r4, long r5,
} else if (unlikely(r0 >= NR_syscalls)) {
return -ENOSYS;
+ } else {
+ r3 = regs->orig_gpr3;
}
/* May be faster to do array_index_nospec? */
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 10/13] powerpc/syscall: system call implement entry/exit logic in C for PPC32
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
That's port of PPC64 syscall entry/exit logic in C to PPC32.
Performancewise:
Before : 311 cycles on null_syscall
After : 353 cycles on null_syscall
Note: before the patch, if calling NVGPRS all the time as well,
we have 335 cycles on null_syscall
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/entry_32.S | 259 ++++-----------------------------
arch/powerpc/kernel/head_32.h | 16 +-
2 files changed, 29 insertions(+), 246 deletions(-)
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index a6371fb8f761..103f5158bc44 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -315,162 +315,37 @@ stack_ovf:
RFI
#endif
-#ifdef CONFIG_TRACE_IRQFLAGS
-trace_syscall_entry_irq_off:
- /*
- * Syscall shouldn't happen while interrupts are disabled,
- * so let's do a warning here.
- */
-0: trap
- EMIT_BUG_ENTRY 0b,__FILE__,__LINE__, BUGFLAG_WARNING
- bl trace_hardirqs_on
-
- /* Now enable for real */
- LOAD_REG_IMMEDIATE(r10, MSR_KERNEL | MSR_EE)
- mtmsr r10
-
- REST_GPR(0, r1)
- REST_4GPRS(3, r1)
- REST_2GPRS(7, r1)
- b DoSyscall
-#endif /* CONFIG_TRACE_IRQFLAGS */
-
.globl transfer_to_syscall
transfer_to_syscall:
-#ifdef CONFIG_TRACE_IRQFLAGS
- andi. r12,r9,MSR_EE
- beq- trace_syscall_entry_irq_off
-#endif /* CONFIG_TRACE_IRQFLAGS */
-
-/*
- * Handle a system call.
- */
- .stabs "arch/powerpc/kernel/",N_SO,0,0,0f
- .stabs "entry_32.S",N_SO,0,0,0f
-0:
-
-_GLOBAL(DoSyscall)
- stw r3,ORIG_GPR3(r1)
- li r12,0
- stw r12,RESULT(r1)
-#ifdef CONFIG_TRACE_IRQFLAGS
- /* Make sure interrupts are enabled */
- mfmsr r11
- andi. r12,r11,MSR_EE
- /* We came in with interrupts disabled, we WARN and mark them enabled
- * for lockdep now */
-0: tweqi r12, 0
- EMIT_BUG_ENTRY 0b,__FILE__,__LINE__, BUGFLAG_WARNING
-#endif /* CONFIG_TRACE_IRQFLAGS */
- lwz r11,TI_FLAGS(r2)
- andi. r11,r11,_TIF_SYSCALL_DOTRACE
- bne- syscall_dotrace
-syscall_dotrace_cont:
- cmplwi 0,r0,NR_syscalls
- lis r10,sys_call_table@h
- ori r10,r10,sys_call_table@l
- slwi r0,r0,2
- bge- 66f
-
- barrier_nospec_asm
- /*
- * Prevent the load of the handler below (based on the user-passed
- * system call number) being speculatively executed until the test
- * against NR_syscalls and branch to .66f above has
- * committed.
- */
-
- lwzx r10,r10,r0 /* Fetch system call handler [ptr] */
- mtlr r10
- addi r9,r1,STACK_FRAME_OVERHEAD
- PPC440EP_ERR42
- blrl /* Call handler */
- .globl ret_from_syscall
+ mr r9, r0
+ addi r10, r1, STACK_FRAME_OVERHEAD
+ bl system_call_exception
ret_from_syscall:
-#ifdef CONFIG_DEBUG_RSEQ
- /* Check whether the syscall is issued inside a restartable sequence */
- stw r3,GPR3(r1)
- addi r3,r1,STACK_FRAME_OVERHEAD
- bl rseq_syscall
- lwz r3,GPR3(r1)
-#endif
- mr r6,r3
- /* disable interrupts so current_thread_info()->flags can't change */
- LOAD_REG_IMMEDIATE(r10,MSR_KERNEL) /* doesn't include MSR_EE */
- /* Note: We don't bother telling lockdep about it */
- SYNC
- mtmsr r10
- lwz r9,TI_FLAGS(r2)
- li r8,-MAX_ERRNO
- andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK)
- bne- syscall_exit_work
- cmplw 0,r3,r8
- blt+ syscall_exit_cont
- lwz r11,_CCR(r1) /* Load CR */
- neg r3,r3
- oris r11,r11,0x1000 /* Set SO bit in CR */
- stw r11,_CCR(r1)
-syscall_exit_cont:
- lwz r8,_MSR(r1)
-#ifdef CONFIG_TRACE_IRQFLAGS
- /* If we are going to return from the syscall with interrupts
- * off, we trace that here. It shouldn't normally happen.
- */
- andi. r10,r8,MSR_EE
- bne+ 1f
- stw r3,GPR3(r1)
- bl trace_hardirqs_off
- lwz r3,GPR3(r1)
-1:
-#endif /* CONFIG_TRACE_IRQFLAGS */
-#if defined(CONFIG_4xx) || defined(CONFIG_BOOKE)
- /* If the process has its own DBCR0 value, load it up. The internal
- debug mode bit tells us that dbcr0 should be loaded. */
- lwz r0,THREAD+THREAD_DBCR0(r2)
- andis. r10,r0,DBCR0_IDM@h
- bnel- load_dbcr0
-#endif
-#ifdef CONFIG_44x
-BEGIN_MMU_FTR_SECTION
- lis r4,icache_44x_need_flush@ha
- lwz r5,icache_44x_need_flush@l(r4)
- cmplwi cr0,r5,0
- bne- 2f
-1:
-END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_47x)
-#endif /* CONFIG_44x */
-BEGIN_FTR_SECTION
- lwarx r7,0,r1
-END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX)
- stwcx. r0,0,r1 /* to clear the reservation */
- ACCOUNT_CPU_USER_EXIT(r2, r5, r7)
-#ifdef CONFIG_PPC_BOOK3S_32
- kuep_unlock r5, r7
-#endif
- kuap_check r2, r4
- lwz r4,_LINK(r1)
- lwz r5,_CCR(r1)
- mtlr r4
- mtcr r5
- lwz r7,_NIP(r1)
- lwz r2,GPR2(r1)
- lwz r1,GPR1(r1)
-#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PERF_EVENTS)
- mtspr SPRN_NRI, r0
-#endif
- mtspr SPRN_SRR0,r7
- mtspr SPRN_SRR1,r8
- SYNC
- RFI
-#ifdef CONFIG_44x
-2: li r7,0
- iccci r0,r0
- stw r7,icache_44x_need_flush@l(r4)
+ addi r4, r1, STACK_FRAME_OVERHEAD
+ bl syscall_exit_prepare
+ lwz r2, _CCR(r1)
+ lwz r4, _NIP(r1)
+ lwz r5, _MSR(r1)
+ lwz r6, _LINK(r1)
+ mtspr SPRN_SRR0, r4
+ mtspr SPRN_SRR1, r5
+ mtlr r6
+ cmpwi r3, 0
+ bne 2f
+1: mtcr r2
+ REST_GPR(2, r1)
+ REST_GPR(3, r1)
+ REST_GPR(1, r1)
+ rfi
+2: lwz r3, _CTR(r1)
+ lwz r4, _XER(r1)
+ REST_NVGPRS(r1)
+ mtctr r3
+ mtspr SPRN_XER, r4
+ REST_GPR(0, r1)
+ REST_8GPRS(4, r1)
+ REST_GPR(12, r1)
b 1b
-#endif /* CONFIG_44x */
-
-66: li r3,-ENOSYS
- b ret_from_syscall
.globl ret_from_fork
ret_from_fork:
@@ -490,86 +365,6 @@ ret_from_kernel_thread:
li r3,0
b ret_from_syscall
-/* Traced system call support */
-syscall_dotrace:
- SAVE_NVGPRS(r1)
- li r0,0xc00
- stw r0,_TRAP(r1)
- addi r3,r1,STACK_FRAME_OVERHEAD
- bl do_syscall_trace_enter
- /*
- * Restore argument registers possibly just changed.
- * We use the return value of do_syscall_trace_enter
- * for call number to look up in the table (r0).
- */
- mr r0,r3
- lwz r3,GPR3(r1)
- lwz r4,GPR4(r1)
- lwz r5,GPR5(r1)
- lwz r6,GPR6(r1)
- lwz r7,GPR7(r1)
- lwz r8,GPR8(r1)
- REST_NVGPRS(r1)
-
- cmplwi r0,NR_syscalls
- /* Return code is already in r3 thanks to do_syscall_trace_enter() */
- bge- ret_from_syscall
- b syscall_dotrace_cont
-
-syscall_exit_work:
- andi. r0,r9,_TIF_RESTOREALL
- beq+ 0f
- REST_NVGPRS(r1)
- b 2f
-0: cmplw 0,r3,r8
- blt+ 1f
- andi. r0,r9,_TIF_NOERROR
- bne- 1f
- lwz r11,_CCR(r1) /* Load CR */
- neg r3,r3
- oris r11,r11,0x1000 /* Set SO bit in CR */
- stw r11,_CCR(r1)
-
-1: stw r6,RESULT(r1) /* Save result */
- stw r3,GPR3(r1) /* Update return value */
-2: andi. r0,r9,(_TIF_PERSYSCALL_MASK)
- beq 4f
-
- /* Clear per-syscall TIF flags if any are set. */
-
- li r11,_TIF_PERSYSCALL_MASK
- addi r12,r2,TI_FLAGS
-3: lwarx r8,0,r12
- andc r8,r8,r11
-#ifdef CONFIG_IBM405_ERR77
- dcbt 0,r12
-#endif
- stwcx. r8,0,r12
- bne- 3b
-
-4: /* Anything which requires enabling interrupts? */
- andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP)
- beq ret_from_except
-
- /* Re-enable interrupts. There is no need to trace that with
- * lockdep as we are supposed to have IRQs on at this point
- */
- ori r10,r10,MSR_EE
- SYNC
- mtmsr r10
-
- /* Save NVGPRS if they're not saved already */
- lwz r4,_TRAP(r1)
- andi. r4,r4,1
- beq 5f
- SAVE_NVGPRS(r1)
- li r4,0xc00
- stw r4,_TRAP(r1)
-5:
- addi r3,r1,STACK_FRAME_OVERHEAD
- bl do_syscall_trace_leave
- b ret_from_except_full
-
/*
* System call was called from kernel. We get here with SRR1 in r9.
* Mark the exception as recoverable once we have retrieved SRR0,
diff --git a/arch/powerpc/kernel/head_32.h b/arch/powerpc/kernel/head_32.h
index 9abec6cd099c..c301d666a3e5 100644
--- a/arch/powerpc/kernel/head_32.h
+++ b/arch/powerpc/kernel/head_32.h
@@ -174,12 +174,13 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE)
stw r2,GPR2(r11)
addi r10,r10,STACK_FRAME_REGS_MARKER@l
stw r9,_MSR(r11)
- li r2, \trapno + 1
+ li r2, \trapno
stw r10,8(r11)
stw r2,_TRAP(r11)
SAVE_GPR(0, r11)
SAVE_4GPRS(3, r11)
SAVE_2GPRS(7, r11)
+ SAVE_NVGPRS(r11)
addi r11,r1,STACK_FRAME_OVERHEAD
addi r2,r12,-THREAD
stw r11,PT_REGS(r12)
@@ -188,9 +189,6 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE)
internal debug mode bit to do this. */
lwz r12,THREAD_DBCR0(r12)
andis. r12,r12,DBCR0_IDM@h
-#endif
- ACCOUNT_CPU_USER_ENTRY(r2, r11, r12)
-#if defined(CONFIG_40x)
beq+ 3f
/* From user and task is ptraced - load up global dbcr0 */
li r12,-1 /* clear all pending debug events */
@@ -209,17 +207,7 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_HPTE_TABLE)
tovirt_novmstack r2, r2 /* set r2 to current */
lis r11, transfer_to_syscall@h
ori r11, r11, transfer_to_syscall@l
-#ifdef CONFIG_TRACE_IRQFLAGS
- /*
- * If MSR is changing we need to keep interrupts disabled at this point
- * otherwise we might risk taking an interrupt before we tell lockdep
- * they are enabled.
- */
LOAD_REG_IMMEDIATE(r10, MSR_KERNEL)
- rlwimi r10, r9, 0, MSR_EE
-#else
- LOAD_REG_IMMEDIATE(r10, MSR_KERNEL | MSR_EE)
-#endif
#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PERF_EVENTS)
mtspr SPRN_NRI, r0
#endif
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 09/13] powerpc/syscall: Selectively check MSR_RI and MSR_PR on syscall entry
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
In system_call_exception(), MSR_RI needs to also be checked on 8xx.
Only book3e doesn't have MSR_RI.
On PPC32, MSR_PR is checked in real mode to avoid clobbering the
stack, so no need to check and panic in system_call_exception().
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/syscall.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
index 986489ea9fb4..69d75fc4a5eb 100644
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -36,9 +36,9 @@ notrace long system_call_exception(long r3, long r4, long r5,
trace_hardirqs_off(); /* finish reconciling */
- if (IS_ENABLED(CONFIG_PPC_BOOK3S))
+ if (!IS_ENABLED(CONFIG_PPC_BOOK3E))
BUG_ON(!(regs->msr & MSR_RI));
- BUG_ON(!(regs->msr & MSR_PR));
+ BUG_ON(IS_ENABLED(CONFIG_PPC64) && !(regs->msr & MSR_PR));
BUG_ON(!FULL_REGS(regs));
#ifdef CONFIG_PPC64
BUG_ON(regs->softe != IRQS_ENABLED);
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 06/13] powerpc/syscall: Make syscall_64.c buildable on PPC32
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
ifdef out specific PPC64 stuff to allow building
syscall_64.c on PPC32.
Modify Makefile to always build syscall.o
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/Makefile | 5 ++---
arch/powerpc/kernel/syscall.c | 10 ++++++++++
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 8cc3c831dccd..e4be425b7718 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -45,11 +45,10 @@ obj-y := cputable.o syscalls.o \
signal.o sysfs.o cacheinfo.o time.o \
prom.o traps.o setup-common.o \
udbg.o misc.o io.o misc_$(BITS).o \
- of_platform.o prom_parse.o
+ of_platform.o prom_parse.o syscall.o
obj-y += ptrace/
obj-$(CONFIG_PPC64) += setup_64.o sys_ppc32.o signal_64.o \
- paca.o nvram_64.o firmware.o note.o \
- syscall.o
+ paca.o nvram_64.o firmware.o note.o
obj-$(CONFIG_VDSO32) += vdso32/
obj-$(CONFIG_PPC_WATCHDOG) += watchdog.o
obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o
diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
index 72f3d2f0a823..28bd43db8755 100644
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -25,8 +25,10 @@ notrace long system_call_exception(long r3, long r4, long r5,
unsigned long ti_flags;
syscall_fn f;
+#ifdef CONFIG_PPC64
if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG))
BUG_ON(irq_soft_mask_return() != IRQS_ALL_DISABLED);
+#endif
trace_hardirqs_off(); /* finish reconciling */
@@ -34,7 +36,9 @@ notrace long system_call_exception(long r3, long r4, long r5,
BUG_ON(!(regs->msr & MSR_RI));
BUG_ON(!(regs->msr & MSR_PR));
BUG_ON(!FULL_REGS(regs));
+#ifdef CONFIG_PPC64
BUG_ON(regs->softe != IRQS_ENABLED);
+#endif
account_cpu_user_entry();
@@ -56,7 +60,9 @@ notrace long system_call_exception(long r3, long r4, long r5,
* frame, or if the unwinder was taught the first stack frame always
* returns to user with IRQS_ENABLED, this store could be avoided!
*/
+#ifdef CONFIG_PPC64
regs->softe = IRQS_ENABLED;
+#endif
local_irq_enable();
@@ -148,7 +154,9 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
ret |= _TIF_RESTOREALL;
}
+#ifdef CONFIG_PPC64
again:
+#endif
local_irq_disable();
ti_flags = READ_ONCE(*ti_flagsp);
while (unlikely(ti_flags & (_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM))) {
@@ -191,6 +199,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
/* This pattern matches prep_irq_for_idle */
__hard_EE_RI_disable();
+#ifdef CONFIG_PPC64
if (unlikely(lazy_irq_pending())) {
__hard_RI_enable();
trace_hardirqs_off();
@@ -201,6 +210,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
}
local_paca->irq_happened = 0;
irq_soft_mask_set(IRQS_ENABLED);
+#endif
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
local_paca->tm_scratch = regs->msr;
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 07/13] powerpc/syscall: Use is_compat_task()
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
Instead of hard comparing task flags with _TIF_32BIT, use
is_compat_task(). The advantage is that it returns 0 on PPC32
allthough _TIF_32BIT is always set.
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/syscall.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
index 28bd43db8755..4674cfd2916d 100644
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include <linux/err.h>
+#include <linux/compat.h>
+
#include <asm/asm-prototypes.h>
#include <asm/kup.h>
#include <asm/cputime.h>
@@ -92,7 +94,7 @@ notrace long system_call_exception(long r3, long r4, long r5,
/* May be faster to do array_index_nospec? */
barrier_nospec();
- if (unlikely(ti_flags & _TIF_32BIT)) {
+ if (is_compat_task()) {
f = (void *)compat_sys_call_table[r0];
r3 &= 0x00000000ffffffffULL;
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 08/13] powerpc/syscall: Save r3 in regs->orig_r3
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
Save r3 in regs->orig_r3 in system_call_exception()
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/entry_64.S | 1 -
arch/powerpc/kernel/syscall.c | 2 ++
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 63f0a4414618..5ccb65f75712 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -114,7 +114,6 @@ END_BTB_FLUSH_SECTION
std r10,_LINK(r1)
std r11,_TRAP(r1)
std r12,_CCR(r1)
- std r3,ORIG_GPR3(r1)
addi r10,r1,STACK_FRAME_OVERHEAD
ld r11,exception_marker@toc(r2)
std r11,-16(r10) /* "regshere" marker */
diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
index 4674cfd2916d..986489ea9fb4 100644
--- a/arch/powerpc/kernel/syscall.c
+++ b/arch/powerpc/kernel/syscall.c
@@ -27,6 +27,8 @@ notrace long system_call_exception(long r3, long r4, long r5,
unsigned long ti_flags;
syscall_fn f;
+ regs->orig_gpr3 = r3;
+
#ifdef CONFIG_PPC64
if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG))
BUG_ON(irq_soft_mask_return() != IRQS_ALL_DISABLED);
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 05/13] powerpc/syscall: Rename syscall_64.c into syscall.c
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
syscall_64.c will be reused almost as is for PPC32.
Rename it syscall.c
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/kernel/Makefile | 2 +-
arch/powerpc/kernel/{syscall_64.c => syscall.c} | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename arch/powerpc/kernel/{syscall_64.c => syscall.c} (100%)
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 570660efbb3d..8cc3c831dccd 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -49,7 +49,7 @@ obj-y := cputable.o syscalls.o \
obj-y += ptrace/
obj-$(CONFIG_PPC64) += setup_64.o sys_ppc32.o signal_64.o \
paca.o nvram_64.o firmware.o note.o \
- syscall_64.o
+ syscall.o
obj-$(CONFIG_VDSO32) += vdso32/
obj-$(CONFIG_PPC_WATCHDOG) += watchdog.o
obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o
diff --git a/arch/powerpc/kernel/syscall_64.c b/arch/powerpc/kernel/syscall.c
similarity index 100%
rename from arch/powerpc/kernel/syscall_64.c
rename to arch/powerpc/kernel/syscall.c
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 01/13] powerpc/radix: Make kuap_check_amr() and kuap_restore_amr() generic
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In preparation of porting powerpc32 to C syscall entry/exit,
rename kuap_check_amr() and kuap_restore_amr() as kuap_check()
and kuap_restore(), and move the stub for when CONFIG_PPC_KUAP is
not selected in the generic asm/kup.h
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/include/asm/book3s/64/kup-radix.h | 12 ++----------
arch/powerpc/include/asm/kup.h | 2 ++
arch/powerpc/kernel/syscall_64.c | 10 +++++-----
3 files changed, 9 insertions(+), 15 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/kup-radix.h b/arch/powerpc/include/asm/book3s/64/kup-radix.h
index 3bcef989a35d..1f2716a0dcd8 100644
--- a/arch/powerpc/include/asm/book3s/64/kup-radix.h
+++ b/arch/powerpc/include/asm/book3s/64/kup-radix.h
@@ -60,13 +60,13 @@
#include <asm/mmu.h>
#include <asm/ptrace.h>
-static inline void kuap_restore_amr(struct pt_regs *regs)
+static inline void kuap_restore(struct pt_regs *regs)
{
if (mmu_has_feature(MMU_FTR_RADIX_KUAP))
mtspr(SPRN_AMR, regs->kuap);
}
-static inline void kuap_check_amr(void)
+static inline void kuap_check(void)
{
if (IS_ENABLED(CONFIG_PPC_KUAP_DEBUG) && mmu_has_feature(MMU_FTR_RADIX_KUAP))
WARN_ON_ONCE(mfspr(SPRN_AMR) != AMR_KUAP_BLOCKED);
@@ -141,14 +141,6 @@ bad_kuap_fault(struct pt_regs *regs, unsigned long address, bool is_write)
(regs->kuap & (is_write ? AMR_KUAP_BLOCK_WRITE : AMR_KUAP_BLOCK_READ)),
"Bug: %s fault blocked by AMR!", is_write ? "Write" : "Read");
}
-#else /* CONFIG_PPC_KUAP */
-static inline void kuap_restore_amr(struct pt_regs *regs)
-{
-}
-
-static inline void kuap_check_amr(void)
-{
-}
#endif /* CONFIG_PPC_KUAP */
#endif /* __ASSEMBLY__ */
diff --git a/arch/powerpc/include/asm/kup.h b/arch/powerpc/include/asm/kup.h
index 92bcd1a26d73..1100c13b6d9e 100644
--- a/arch/powerpc/include/asm/kup.h
+++ b/arch/powerpc/include/asm/kup.h
@@ -62,6 +62,8 @@ bad_kuap_fault(struct pt_regs *regs, unsigned long address, bool is_write)
{
return false;
}
+static inline void kuap_restore(struct pt_regs *regs) { }
+static inline void kuap_check(void) { }
#endif /* CONFIG_PPC_KUAP */
static inline void allow_read_from_user(const void __user *from, unsigned long size)
diff --git a/arch/powerpc/kernel/syscall_64.c b/arch/powerpc/kernel/syscall_64.c
index cf06eb443a80..72f3d2f0a823 100644
--- a/arch/powerpc/kernel/syscall_64.c
+++ b/arch/powerpc/kernel/syscall_64.c
@@ -2,7 +2,7 @@
#include <linux/err.h>
#include <asm/asm-prototypes.h>
-#include <asm/book3s/64/kup-radix.h>
+#include <asm/kup.h>
#include <asm/cputime.h>
#include <asm/hw_irq.h>
#include <asm/kprobes.h>
@@ -48,7 +48,7 @@ notrace long system_call_exception(long r3, long r4, long r5,
}
#endif
- kuap_check_amr();
+ kuap_check();
/*
* This is not required for the syscall exit path, but makes the
@@ -206,7 +206,7 @@ notrace unsigned long syscall_exit_prepare(unsigned long r3,
local_paca->tm_scratch = regs->msr;
#endif
- kuap_check_amr();
+ kuap_check();
account_cpu_user_exit();
@@ -294,7 +294,7 @@ notrace unsigned long interrupt_exit_user_prepare(struct pt_regs *regs, unsigned
local_paca->tm_scratch = regs->msr;
#endif
- kuap_check_amr();
+ kuap_check();
account_cpu_user_exit();
@@ -372,7 +372,7 @@ notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs, unsign
* We don't need to restore AMR on the way back to userspace for KUAP.
* The value of AMR only matters while we're in the kernel.
*/
- kuap_restore_amr(regs);
+ kuap_restore(regs);
return ret;
}
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 04/13] powerpc/irq: Add new helpers to play with MSR_EE and MSR_RI on PPC32
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
In preparation of porting PPC32 to C syscall entry/exit,
add PPC32 version of following helpers:
__hard_irq_enable()
__hard_irq_disable()
__hard_EE_RI_disable()
__hard_RI_enable()
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/include/asm/hw_irq.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/powerpc/include/asm/hw_irq.h b/arch/powerpc/include/asm/hw_irq.h
index e0e71777961f..6ccf07de6665 100644
--- a/arch/powerpc/include/asm/hw_irq.h
+++ b/arch/powerpc/include/asm/hw_irq.h
@@ -321,6 +321,16 @@ static inline void arch_local_irq_disable(void)
mtmsr(mfmsr() & ~MSR_EE);
}
+static inline void arch_local_recovery_disable(void)
+{
+ if (IS_ENABLED(CONFIG_BOOKE))
+ wrtee(0);
+ else if (IS_ENABLED(CONFIG_PPC_8xx))
+ wrtspr(SPRN_NRI);
+ else
+ mtmsr(mfmsr() & ~(MSR_EE | MSR_RI));
+}
+
static inline void arch_local_irq_enable(void)
{
if (IS_ENABLED(CONFIG_BOOKE))
@@ -343,6 +353,11 @@ static inline bool arch_irqs_disabled(void)
#define hard_irq_disable() arch_local_irq_disable()
+#define __hard_irq_enable() arch_local_irq_enable()
+#define __hard_irq_disable() arch_local_irq_disable()
+#define __hard_EE_RI_disable() arch_local_recovery_disable()
+#define __hard_RI_enable() arch_local_irq_disable()
+
static inline bool arch_irq_disabled_regs(struct pt_regs *regs)
{
return !(regs->msr & MSR_EE);
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 02/13] powerpc/32s: Create C version of kuap_restore() and kuap_check()
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
In preparation of porting PPC32 to C syscall entry/exit,
create C version of kuap_restore() and kuap_check() on book3s/32.
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/include/asm/book3s/32/kup.h | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/arch/powerpc/include/asm/book3s/32/kup.h b/arch/powerpc/include/asm/book3s/32/kup.h
index 3c0ba22dc360..c85bc5b56366 100644
--- a/arch/powerpc/include/asm/book3s/32/kup.h
+++ b/arch/powerpc/include/asm/book3s/32/kup.h
@@ -102,6 +102,27 @@ static inline void kuap_update_sr(u32 sr, u32 addr, u32 end)
isync(); /* Context sync required after mtsrin() */
}
+static inline void kuap_restore(struct pt_regs *regs)
+{
+ u32 kuap = current->thread.kuap;
+ u32 addr = kuap & 0xf0000000;
+ u32 end = kuap << 28;
+
+ if (unlikely(!kuap))
+ return;
+
+ current->thread.kuap = 0;
+ kuap_update_sr(mfsrin(addr) & ~SR_KS, addr, end); /* Clear Ks */
+}
+
+static inline void kuap_check(void)
+{
+ if (!IS_ENABLED(CONFIG_PPC_KUAP_DEBUG))
+ return;
+
+ WARN_ON_ONCE(current->thread.kuap != 0);
+}
+
static __always_inline void allow_user_access(void __user *to, const void __user *from,
u32 size, unsigned long dir)
{
--
2.25.0
^ permalink raw reply related
* [RFC PATCH v2 03/13] powerpc/8xx: Create C version of kuap_restore() and kuap_check()
From: Christophe Leroy @ 2020-04-05 17:44 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman, npiggin,
msuchanek
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <029e1064b1ad738785718221ea468c9cfc282457.1586108649.git.christophe.leroy@c-s.fr>
In preparation of porting PPC32 to C syscall entry/exit,
create C version of kuap_restore() and kuap_check() on 8xx
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
---
arch/powerpc/include/asm/nohash/32/kup-8xx.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/powerpc/include/asm/nohash/32/kup-8xx.h b/arch/powerpc/include/asm/nohash/32/kup-8xx.h
index 85ed2390fb99..1918d2e55da3 100644
--- a/arch/powerpc/include/asm/nohash/32/kup-8xx.h
+++ b/arch/powerpc/include/asm/nohash/32/kup-8xx.h
@@ -34,6 +34,19 @@
#include <asm/reg.h>
+static inline void kuap_restore(struct pt_regs *regs)
+{
+ mtspr(SPRN_MD_AP, regs->kuap);
+}
+
+static inline void kuap_check(void)
+{
+ if (!IS_ENABLED(CONFIG_PPC_KUAP_DEBUG))
+ return;
+
+ WARN_ON_ONCE((mfspr(SPRN_MD_AP) & 0xffff0000) != (MD_APG_KUAP & 0xffff0000));
+}
+
static inline void allow_user_access(void __user *to, const void __user *from,
unsigned long size, unsigned long dir)
{
--
2.25.0
^ permalink raw reply related
* Re: [mm/debug] f675f2f91d: WARNING:at_mm/debug_vm_pgtable.c:#debug_vm_pgtable
From: Anshuman Khandual @ 2020-04-05 14:49 UTC (permalink / raw)
To: kernel test robot
Cc: Heiko Carstens, linux-mm, Paul Mackerras, H. Peter Anvin,
linux-riscv, Will Deacon, linux-arch, linux-s390, x86,
Mike Rapoport, Christian Borntraeger, Ingo Molnar,
Catalin Marinas, linux-snps-arc, Vasily Gorbik, lkp,
Borislav Petkov, Paul Walmsley, Kirill A . Shutemov,
Thomas Gleixner, linux-arm-kernel, Vineet Gupta, linux-kernel,
Palmer Dabbelt, Andrew Morton, linuxppc-dev
In-Reply-To: <20200330085636.GG11705@shao2-debian>
On 03/30/2020 02:26 PM, kernel test robot wrote:
> [ 283.486118] WARNING: CPU: 1 PID: 1 at mm/debug_vm_pgtable.c:371 debug_vm_pgtable+0x4dc/0x7e3
> [ 283.487342] Modules linked in:
> [ 283.487752] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.6.0-rc7-next-20200323-00001-gf675f2f91d045 #1
> [ 283.488817] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
> [ 283.489794] RIP: 0010:debug_vm_pgtable+0x4dc/0x7e3
> [ 283.490361] Code: b5 fd 48 8b 7d d0 be 20 01 00 00 e8 3d 9f b5 fd 48 8b 75 c8 48 8b 7d d0 e8 30 9f b5 fd 48 8b 75 c8 48 8b 7d d0 e8 23 9f b5 fd <0f> 0b 48 8b 75 c8 48 8b 7d d0 e8 14 9f b5 fd 0f 0b 48 8b 75 c8 48
> [ 283.492577] RSP: 0000:ffff888236493ed8 EFLAGS: 00010202
> [ 283.493235] RAX: 00000001e1d31025 RBX: ffff88823e7f6cd8 RCX: ffffffffffffffff
> [ 283.494135] RDX: 0000000000000000 RSI: 0000000000000025 RDI: 00000001e1d31000
> [ 283.495002] RBP: ffff888236493f38 R08: 0000000000000001 R09: 0000000000000001
> [ 283.495858] R10: 0000000000000001 R11: 0000000000000000 R12: ffff88821d907000
> [ 283.496748] R13: ffff88821d8fc498 R14: ffff88821d8fda90 R15: ffff88821d8fc000
> [ 283.497614] FS: 0000000000000000(0000) GS:ffff888237800000(0000) knlGS:0000000000000000
> [ 283.498585] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 283.499290] CR2: 00000000ffffffff CR3: 00000001e1222000 CR4: 00000000000406e0
> [ 283.500165] Call Trace:
> [ 283.500499] ? rest_init+0x240/0x240
> [ 283.500985] kernel_init+0x13/0x110
> [ 283.501433] ret_from_fork+0x24/0x30
> [ 283.501907] irq event stamp: 4760776
> [ 283.502366] hardirqs last enabled at (4760775): [<ffffffffb481e34d>] _raw_spin_unlock_irqrestore+0x4d/0x60
> [ 283.511686] hardirqs last disabled at (4760776): [<ffffffffb3c038d4>] trace_hardirqs_off_thunk+0x1a/0x1c
> [ 283.512914] softirqs last enabled at (4760748): [<ffffffffb4c002cf>] __do_softirq+0x2cf/0x4ad
> [ 283.514086] softirqs last disabled at (4760741): [<ffffffffb3cf4f4d>] irq_exit+0xcd/0xe0
> [ 283.515114] ---[ end trace 7e3383c4261f8faa ]---
The above failure here and the one on the other thread can be solved with
the following change. The failure is caused by the fact that even though
the soft dirty helpers are defined within CONFIG_HAVE_ARCH_SOFT_DIRTY, the
required PTE bits (_PAGE_SOFT_DIRTY and _PAGE_SWP_SOFT_DIRTY) are available
only when CONFIG_MEM_SOFT_DIRTY is enabled. Hence these tests should not
proceed unless CONFIG_MEM_SOFT_DIRTY is enabled. Similar situation exists
in s390 (_PAGE_SOFT_DIRTY and _SEGMENT_ENTRY_SOFT_DIRTY) and powerpc (at
least with _PAGE_SWP_SOFT_DIRTY).
diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c
index 87b4b495333b..2a75a51fed06 100644
--- a/mm/debug_vm_pgtable.c
+++ b/mm/debug_vm_pgtable.c
@@ -589,7 +589,7 @@ static void __init pte_soft_dirty_tests(unsigned long pfn, pgprot_t prot)
{
pte_t pte = pfn_pte(pfn, prot);
- if (!IS_ENABLED(CONFIG_HAVE_ARCH_SOFT_DIRTY))
+ if (!IS_ENABLED(CONFIG_MEM_SOFT_DIRTY))
return;
WARN_ON(!pte_soft_dirty(pte_mksoft_dirty(pte)));
@@ -600,7 +600,7 @@ static void __init pte_swap_soft_dirty_tests(unsigned long pfn, pgprot_t prot)
{
pte_t pte = pfn_pte(pfn, prot);
- if (!IS_ENABLED(CONFIG_HAVE_ARCH_SOFT_DIRTY))
+ if (!IS_ENABLED(CONFIG_MEM_SOFT_DIRTY))
return;
WARN_ON(!pte_swp_soft_dirty(pte_swp_mksoft_dirty(pte)));
@@ -612,7 +612,7 @@ static void __init pmd_soft_dirty_tests(unsigned long pfn, pgprot_t prot)
{
pmd_t pmd = pfn_pmd(pfn, prot);
- if (!IS_ENABLED(CONFIG_HAVE_ARCH_SOFT_DIRTY))
+ if (!IS_ENABLED(CONFIG_MEM_SOFT_DIRTY))
return;
WARN_ON(!pmd_soft_dirty(pmd_mksoft_dirty(pmd)));
@@ -623,7 +623,7 @@ static void __init pmd_swap_soft_dirty_tests(unsigned long pfn, pgprot_t prot)
{
pmd_t pmd = pfn_pmd(pfn, prot);
- if (!IS_ENABLED(CONFIG_HAVE_ARCH_SOFT_DIRTY) ||
+ if (!IS_ENABLED(CONFIG_MEM_SOFT_DIRTY) ||
!IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION))
return;
^ permalink raw reply related
* Re: [PATCH v2 01/22] powerpc/pkeys: Avoid using lockless page table walk
From: Aneesh Kumar K.V @ 2020-04-05 13:37 UTC (permalink / raw)
To: Ram Pai
Cc: Ram Pai, linux-kernel, npiggin, linux-mm, kvm-ppc, kirill,
leonardo, linuxppc-dev
In-Reply-To: <20200403002649.GB22412@oc0525413822.ibm.com>
Ram Pai <linuxram@us.ibm.com> writes:
> On Thu, Mar 19, 2020 at 09:25:48AM +0530, Aneesh Kumar K.V wrote:
>> Fetch pkey from vma instead of linux page table. Also document the fact that in
>> some cases the pkey returned in siginfo won't be the same as the one we took
>> keyfault on. Even with linux page table walk, we can end up in a similar scenario.
>
> There is no way to correctly ensure that the key returned through
> siginfo is actually the key that took the fault. Either get it
> from page table or get it from the corresponding vma.
That is correct.
>
> So we had to choose the lesser evil. Getting it from the page table was
> faster, and did not involve taking any locks.
That is because you are locks which need to be held on page table walk.
>Getting it from the vma
> was slower, since it needed locks. Also I faintly recall, there
> is a scenario where the address that gets a key fault, has no
> corresponding VMA associated with it yet.
I would be interested in this. For now IIUC even x86 fetch the key from
VMA.
>
> Hence the logic used was --
> if it is key-fault, than procure the key quickly
> from the page table. In the unlikely event that the fault is
> something else, but still has a non-permissive key associated
> with it, get the key from the vma.
I am fixing that logic further in the next patch. I do have a test case
attached for that. We always check for the key in the vma and if it
allows access, then we retry.
>
> A well written application should avoid changing the key of an address
> space without synchronizing the corresponding threads that operate in
> that address range. However, if the application ignores to do so, than
> it is vulnerable to a undefined behavior. There is no way to prove that
> the reported key is correct or incorrect, since there is no provable
> order between the two events; the key-fault event and the key-change
> event.
>
> Hence I think the change proposed in this patch may not be necessary.
> RP
The change is needed so that we can make the page table walk safer.
-aneesh
^ permalink raw reply
* [GIT PULL] Please pull powerpc/linux.git powerpc-5.7-1 tag
From: Michael Ellerman @ 2020-04-05 12:53 UTC (permalink / raw)
To: Linus Torvalds
Cc: tyreld, shilpa.bhat, gustavold, aik, ndesaulniers, psampat,
bala24, grant.likely, oohall, afzal.mohd.ma, srikar, sfr,
joe.lawrence, maskray, ilie.halip, aneesh.kumar, yuehaibing, rppt,
chenzhou10, ganeshgr, dougmill, kjain, leonardo, naveen.n.rao,
agust, laurentiu.tudor, nathanl, arnd, alistair, npiggin, oss,
olof, maddy, christophe.jaillet, clg, courbet, vaibhav, bhelgaas,
natechancellor, dja, farosas, gregkh, lpechacek, linux-kernel,
sourabhjain, joe, po-hsu.lin, linuxppc-dev
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hi Linus,
Please pull powerpc updates for 5.7.
Slightly late as I had to rebase mid-week to insert a bug fix.
There is one conflict in fs/sysfs/group.c, between our:
9255782f7061 ("sysfs: Wrap __compat_only_sysfs_link_entry_to_kobj function to change the symlink name")
And:
303a42769c4c ("sysfs: add sysfs_group{s}_change_owner()")
The resolution is to take all of the changes from 303a42769c4c, except that the
EXPORT_SYMBOL_GPL prior to sysfs_group_attrs_change_owner() should be:
EXPORT_SYMBOL_GPL(compat_only_sysfs_link_entry_to_kobj);
not:
EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj);
cheers
The following changes since commit 11a48a5a18c63fd7621bb050228cebf13566e4d8:
Linux 5.6-rc2 (2020-02-16 13:16:59 -0800)
are available in the git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git tags/powerpc-5.7-1
for you to fetch changes up to c17eb4dca5a353a9dbbb8ad6934fe57af7165e91:
powerpc: Make setjmp/longjmp signature standard (2020-04-01 14:30:51 +1100)
- ------------------------------------------------------------------
powerpc updates for 5.7
- A large series from Nick for 64-bit to further rework our exception vectors,
and rewrite portions of the syscall entry/exit and interrupt return in C. The
result is much easier to follow code that is also faster in general.
- Cleanup of our ptrace code to split various parts out that had become badly
intertwined with #ifdefs over the years.
- Changes to our NUMA setup under the PowerVM hypervisor which should
hopefully avoid non-sensical topologies which can lead to warnings from the
workqueue code and other problems.
- MAINTAINERS updates to remove some of our old orphan entries and update the
status of others.
- Quite a few other small changes and fixes all over the map.
Thanks to:
Abdul Haleem, afzal mohammed, Alexey Kardashevskiy, Andrew Donnellan, Aneesh
Kumar K.V, Balamuruhan S, Cédric Le Goater, Chen Zhou, Christophe JAILLET,
Christophe Leroy, Christoph Hellwig, Clement Courbet, Daniel Axtens, David
Gibson, Douglas Miller, Fabiano Rosas, Fangrui Song, Ganesh Goudar, Gautham R.
Shenoy, Greg Kroah-Hartman, Greg Kurz, Gustavo Luiz Duarte, Hari Bathini, Ilie
Halip, Jan Kara, Joe Lawrence, Joe Perches, Kajol Jain, Larry Finger,
Laurentiu Tudor, Leonardo Bras, Libor Pechacek, Madhavan Srinivasan, Mahesh
Salgaonkar, Masahiro Yamada, Masami Hiramatsu, Mauricio Faria de Oliveira,
Michael Neuling, Michal Suchanek, Mike Rapoport, Nageswara R Sastry, Nathan
Chancellor, Nathan Lynch, Naveen N. Rao, Nicholas Piggin, Nick Desaulniers,
Oliver O'Halloran, Po-Hsu Lin, Pratik Rajesh Sampat, Rasmus Villemoes, Ravi
Bangoria, Roman Bolshakov, Sam Bobroff, Sandipan Das, Santosh S, Sedat Dilek,
Segher Boessenkool, Shilpasri G Bhat, Sourabh Jain, Srikar Dronamraju, Stephen
Rothwell, Tyrel Datwyler, Vaibhav Jain, YueHaibing.
- ------------------------------------------------------------------
Alexey Kardashevskiy (2):
powerpc/book3s64: Fix error handling in mm_iommu_do_alloc()
powerpc/prom_init: Pass the "os-term" message to hypervisor
Aneesh Kumar K.V (2):
powerpc/hash64/devmap: Use H_PAGE_THP_HUGE when setting up huge devmap PTE entries
powerpc/64: Avoid isync in flush_dcache_range()
Balamuruhan S (1):
powerpc/sstep: Fix DS operand in ld encoding to appropriate value
Chen Zhou (1):
PCI: rpaphp: Remove unused variable 'value'
Christophe JAILLET (2):
powerpc/83xx: Fix some typo in some warning message
powerpc/83xx: Add some error handling in 'quirk_mpc8360e_qe_enet10()'
Christophe Leroy (32):
powerpc/process: Remove unneccessary #ifdef CONFIG_PPC64 in copy_thread_tls()
powerpc/32s: Don't flush all TLBs when flushing one page
powerpc/32: Warn and return ENOSYS on syscalls from kernel
powerpc: Don't use thread struct for saving SRR0/1 on syscall.
powerpc/32s: Slenderize _tlbia() for powerpc 603/603e
powerpc/32: don't restore r0, r6-r8 on exception entry path after trace_hardirqs_off()
powerpc/32: refactor pmd_offset(pud_offset(pgd_offset...
powerpc/32: drop get_pteptr()
powerpc/mm: Don't kmap_atomic() in pte_offset_map() on PPC32
powerpc: Add current_stack_pointer as a register global
powerpc/irq: Use current_stack_pointer in check_stack_overflow()
powerpc/irq: use IS_ENABLED() in check_stack_overflow()
powerpc/irq: Use current_stack_pointer in do_IRQ()
powerpc/32: Fix missing NULL pmd check in virt_to_kpte()
selftests/powerpc: Add tlbie_test in .gitignore
powerpc/kprobes: Remove redundant code
powerpc/kasan: Fix kasan_remap_early_shadow_ro()
powerpc/32s: reorder Linux PTE bits to better match Hash PTE bits.
powerpc/kprobes: Ignore traps that happened in real mode
powerpc: Move ptrace into a subdirectory.
powerpc/ptrace: remove unused header includes
powerpc/ptrace: drop unnecessary #ifdefs CONFIG_PPC64
powerpc/ptrace: drop PARAMETER_SAVE_AREA_OFFSET
powerpc/ptrace: split out VSX related functions.
powerpc/ptrace: split out ALTIVEC related functions.
powerpc/ptrace: split out SPE related functions.
powerpc/ptrace: split out TRANSACTIONAL_MEM related functions.
powerpc/ptrace: move register viewing functions out of ptrace.c
powerpc/ptrace: split out ADV_DEBUG_REGS related functions.
powerpc/ptrace: create ptrace_get_debugreg()
powerpc/ptrace: create ppc_gethwdinfo()
powerpc/ptrace: move ptrace_triggered() into hw_breakpoint.c
Clement Courbet (1):
powerpc: Make setjmp/longjmp signature standard
Cédric Le Goater (4):
powerpc/xive: Use XIVE_BAD_IRQ instead of zero to catch non configured IPIs
powerpc/xive: Fix xmon support on the PowerNV platform
powerpc/xmon: Add source flags to output of XIVE interrupts
powerpc/xive: Add a debugfs file to dump internal XIVE state
Daniel Axtens (1):
powerpc/64: Setup a paca before parsing device tree etc.
Douglas Miller (1):
powerpc/xmon: Add ASCII dump to d1,d2,d4,d8 commands.
Fabiano Rosas (1):
powerpc/prom_init: Remove leftover comment
Fangrui Song (1):
powerpc/boot: Delete unneeded .globl _zimage_start
Ganesh Goudar (1):
powerpc/pseries: Handle UE event for memcpy_mcsafe
Greg Kroah-Hartman (6):
powerpc/kernel: no need to check return value of debugfs_create functions
powerpc/kvm: no need to check return value of debugfs_create functions
powerpc/mm: book3s64: hash_utils: no need to check return value of debugfs_create functions
powerpc/mm: ptdump: no need to check return value of debugfs_create functions
powerpc/cell/axon_msi: no need to check return value of debugfs_create functions
powerpc/powernv: no need to check return value of debugfs_create functions
Gustavo Luiz Duarte (2):
selftests/powerpc: Add tm-signal-pagefault test
selftests/powerpc: Don't rely on segfault to rerun the test
Ilie Halip (1):
powerpc/pmac/smp: Avoid unused-variable warnings
Joe Lawrence (1):
powerpc/vdso: remove deprecated VDS64_HAS_DESCRIPTORS references
Joe Perches (1):
powerpc/cell: Use fallthrough;
Kajol Jain (1):
powerpc/kernel/sysfs: Add new config option PMU_SYSFS to enable PMU SPRs sysfs file creation
Laurentiu Tudor (1):
powerpc/fsl_booke: Avoid creating duplicate tlb1 entry
Leonardo Bras (1):
powerpc/cputable: Remove unnecessary copy of cpu_spec->oprofile_type
Libor Pechacek (1):
powerpc/pseries: Avoid NULL pointer dereference when drmem is unavailable
Madhavan Srinivasan (1):
powerpc/kernel/sysfs: Refactor current sysfs.c
Michael Ellerman (22):
powerpc/Makefile: Mark phony targets as PHONY
powerpc: Rename current_stack_pointer() to current_stack_frame()
Merge branch 'fixes' into next
selftests/powerpc: Add a test of sigreturn vs VDSO
powerpc/kuap: PPC_KUAP_DEBUG should depend on PPC_KUAP
powerpc/xmon: Lower limits on nidump and ndump
powerpc/64s: Fix section mismatch warnings from boot code
powerpc/64: Prevent stack protection in early boot
powerpc: Update MAINTAINERS
powerpc: Update wiki link in MAINTAINERS
powerpc: Remove PA SEMI MAINTAINERS entries
powerpc: Mark 4xx as Orphan in MAINTAINERS
powerpc: Drop XILINX MAINTAINERS entry
powerpc: Update MPC5XXX MAINTAINERS entry
powerpc: Update powermac MAINTAINERS entry
powerpc: Update 83xx/85xx MAINTAINERS entry
powerpc: Switch 8xx MAINTAINERS entry to Christophe
powerpc/smp: Drop superfluous NULL check
powerpc/smp: Use IS_ENABLED() to avoid #ifdef
powerpc/64/tm: Don't let userspace set regs->trap via sigreturn
powerpc/vmlinux.lds: Explicitly retain .gnu.hash
selftests/powerpc: Fix try-run when source tree is not writable
Mike Rapoport (1):
powerpc/32: drop unused ISA_DMA_THRESHOLD
Nathan Chancellor (1):
powerpc/maple: Fix declaration made after definition
Naveen N. Rao (2):
powerpc: Drop -fno-dwarf2-cfi-asm
powerpc: Suppress .eh_frame generation
Nicholas Piggin (34):
powerpc/64s/radix: Fix CONFIG_SMP=n build
powerpc/lib: Fix emulate_step() std test
powerpc/pseries: Avoid harmless preempt warning
powerpc/64: mark emergency stacks valid to unwind
powerpc/64s/exception: Introduce INT_DEFINE parameter block for code generation
powerpc/64s/exception: Add GEN_COMMON macro that uses INT_DEFINE parameters
powerpc/64s/exception: Add GEN_KVM macro that uses INT_DEFINE parameters
powerpc/64s/exception: Expand EXC_COMMON and EXC_COMMON_ASYNC macros
powerpc/64s/exception: Move all interrupt handlers to new style code gen macros
powerpc/64s/exception: Remove old INT_ENTRY macro
powerpc/64s/exception: Remove old INT_COMMON macro
powerpc/64s/exception: Remove old INT_KVM_HANDLER
powerpc/64s/exception: Add ISIDE option
powerpc/64s/exception: Move real to virt switch into the common handler
powerpc/64s/exception: Move soft-mask test to common code
powerpc/64s/exception: Move KVM test to common code
powerpc/64s/exception: Remove confusing IEARLY option
powerpc/64s/exception: Remove the SPR saving patch code macros
powerpc/64s/exception: Trim unused arguments from KVMTEST macro
powerpc/64s/exception: Avoid touching the stack in hdecrementer
powerpc/64s/exception: Re-inline some handlers
powerpc/64s/exception: Clean up SRR specifiers
powerpc/64s/exception: Add more comments for interrupt handlers
powerpc/64s/exception: Only test KVM in SRR interrupts when PR KVM is supported
powerpc/64s/exception: Reconcile interrupts in system_reset
powerpc/64s/exception: Soft NMI interrupt should not use ret_from_except
powerpc/64/syscall: Remove non-volatile GPR save optimisation
powerpc/64/sstep: Ifdef the deprecated fast endian switch syscall
powerpc/64/sycall: Implement syscall entry/exit logic in C
powerpc/64/syscall: Zero volatile registers when returning
powerpc/64: Implement soft interrupt replay in C
powerpc/64s: Implement interrupt exit logic in C
powerpc/64s/exception: Remove lite interrupt return
powerpc/64/syscall: Reconcile interrupts
Nick Desaulniers (1):
powerpc: Prefer __section and __printf from compiler_attributes.h
Oliver O'Halloran (12):
powerpc/pseries/vio: Remove stray #ifdef CONFIG_PPC_PSERIES
powerpc/pseries/Makefile: Remove CONFIG_PPC_PSERIES check
powerpc/powernv: Treat an empty reboot string as default
powerpc/powernv: Add explicit fast-reboot support
cpufreq: powernv: Fix use-after-free
cpufreq: powernv: Fix unsafe notifiers
powerpc/eeh: Add sysfs files in late probe
powerpc/eeh: Remove eeh_add_device_tree_late()
powerpc/eeh: Do early EEH init only when required
powerpc/eeh: Remove PHB check in probe
powerpc/eeh: Make early EEH init pseries specific
powerpc/eeh: Rework eeh_ops->probe()
Po-Hsu Lin (1):
selftests/powerpc: Turn off timeout setting for benchmarks, dscr, signal, tm
Pratik Rajesh Sampat (1):
cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_work_fn
Shilpasri G Bhat (1):
powerpc/powernv: Add documentation for the opal sensor_groups sysfs interfaces
Sourabh Jain (6):
Documentation/ABI: Add ABI documentation for /sys/kernel/fadump_*
sysfs: Wrap __compat_only_sysfs_link_entry_to_kobj function to change the symlink name
powerpc/fadump: Reorganize /sys/kernel/fadump_* sysfs files
powerpc/powernv: Move core and fadump_release_opalcore under new kobject
Documentation/ABI: Mark /sys/kernel/fadump_* sysfs files deprecated
powerpc/fadump: sysfs for fadump memory reservation
Srikar Dronamraju (6):
powerpc/smp: Use nid as fallback for package_id
powerpc/vphn: Check for error from hcall_vphn
powerpc/numa: Handle extra hcall_vphn error cases
powerpc/numa: Use cpu node map of first sibling thread
powerpc/numa: Early request for home node associativity
powerpc/numa: Remove late request for home node associativity
Stephen Rothwell (1):
tty: evh_bytechan: Fix out of bounds accesses
Tyrel Datwyler (1):
powerpc/pseries: Fix of_read_drc_info_cell() to point at next record
Vaibhav Jain (1):
powerpc/papr_scm: Mark papr_scm_ndctl() as static
YueHaibing (1):
powerpc/pmac/smp: Drop unnecessary volatile qualifier
afzal mohammed (1):
powerpc: Replace setup_irq() by request_irq()
Documentation/ABI/obsolete/sysfs-kernel-fadump_enabled | 9 +
Documentation/ABI/obsolete/sysfs-kernel-fadump_registered | 10 +
Documentation/ABI/obsolete/sysfs-kernel-fadump_release_mem | 10 +
Documentation/ABI/removed/sysfs-kernel-fadump_release_opalcore | 9 +
Documentation/ABI/testing/sysfs-firmware-opal-sensor-groups | 21 +
Documentation/ABI/testing/sysfs-kernel-fadump | 40 +
Documentation/powerpc/firmware-assisted-dump.rst | 32 +-
MAINTAINERS | 49 +-
arch/powerpc/Makefile | 12 +-
arch/powerpc/boot/Makefile | 2 +
arch/powerpc/boot/crt0.S | 3 -
arch/powerpc/include/asm/asm-prototypes.h | 15 +-
arch/powerpc/include/asm/book3s/32/hash.h | 8 +-
arch/powerpc/include/asm/book3s/32/pgtable.h | 6 +-
arch/powerpc/include/asm/book3s/64/hash-4k.h | 6 +
arch/powerpc/include/asm/book3s/64/hash-64k.h | 8 +-
arch/powerpc/include/asm/book3s/64/kup-radix.h | 24 +-
arch/powerpc/include/asm/book3s/64/pgtable.h | 4 +-
arch/powerpc/include/asm/book3s/64/radix.h | 5 +
arch/powerpc/include/asm/cache.h | 2 +-
arch/powerpc/include/asm/cacheflush.h | 6 +-
arch/powerpc/include/asm/cputime.h | 33 +
arch/powerpc/include/asm/dma.h | 3 +-
arch/powerpc/include/asm/drmem.h | 4 +-
arch/powerpc/include/asm/eeh.h | 26 +-
arch/powerpc/include/asm/exception-64s.h | 4 -
arch/powerpc/include/asm/hw_irq.h | 6 +-
arch/powerpc/include/asm/kvm_host.h | 3 -
arch/powerpc/include/asm/mce.h | 2 +
arch/powerpc/include/asm/nohash/32/pgtable.h | 6 +-
arch/powerpc/include/asm/opal-api.h | 1 +
arch/powerpc/include/asm/perf_event.h | 2 +-
arch/powerpc/include/asm/pgtable.h | 19 +
arch/powerpc/include/asm/ptrace.h | 5 +
arch/powerpc/include/asm/reg.h | 4 +-
arch/powerpc/include/asm/setjmp.h | 6 +-
arch/powerpc/include/asm/signal.h | 3 +
arch/powerpc/include/asm/switch_to.h | 11 +
arch/powerpc/include/asm/time.h | 4 +-
arch/powerpc/include/asm/topology.h | 10 +-
arch/powerpc/include/asm/vdso.h | 24 -
arch/powerpc/kernel/Makefile | 11 +-
arch/powerpc/kernel/btext.c | 2 +-
arch/powerpc/kernel/cputable.c | 1 -
arch/powerpc/kernel/dt_cpu_ftrs.c | 1 -
arch/powerpc/kernel/eeh.c | 145 +-
arch/powerpc/kernel/entry_32.S | 38 +-
arch/powerpc/kernel/entry_64.S | 895 ++---
arch/powerpc/kernel/exceptions-64e.S | 287 +-
arch/powerpc/kernel/exceptions-64s.S | 2043 ++++++++----
arch/powerpc/kernel/fadump.c | 134 +-
arch/powerpc/kernel/head_32.S | 9 +-
arch/powerpc/kernel/head_32.h | 28 +-
arch/powerpc/kernel/head_64.S | 4 +-
arch/powerpc/kernel/head_booke.h | 5 +-
arch/powerpc/kernel/hw_breakpoint.c | 16 +
arch/powerpc/kernel/irq.c | 192 +-
arch/powerpc/kernel/kprobes.c | 84 +-
arch/powerpc/kernel/mce.c | 14 +
arch/powerpc/kernel/mce_power.c | 8 +-
arch/powerpc/kernel/misc.S | 4 +-
arch/powerpc/kernel/of_platform.c | 12 +-
arch/powerpc/kernel/paca.c | 14 +-
arch/powerpc/kernel/pci-common.c | 6 -
arch/powerpc/kernel/pci-hotplug.c | 2 -
arch/powerpc/kernel/process.c | 124 +-
arch/powerpc/kernel/prom_init.c | 4 +-
arch/powerpc/kernel/ptrace.c | 3468 --------------------
arch/powerpc/kernel/ptrace/Makefile | 20 +
arch/powerpc/kernel/ptrace/ptrace-adv.c | 492 +++
arch/powerpc/kernel/ptrace/ptrace-altivec.c | 128 +
arch/powerpc/kernel/ptrace/ptrace-decl.h | 184 ++
arch/powerpc/kernel/ptrace/ptrace-noadv.c | 265 ++
arch/powerpc/kernel/ptrace/ptrace-novsx.c | 57 +
arch/powerpc/kernel/ptrace/ptrace-spe.c | 68 +
arch/powerpc/kernel/ptrace/ptrace-tm.c | 851 +++++
arch/powerpc/kernel/ptrace/ptrace-view.c | 904 +++++
arch/powerpc/kernel/ptrace/ptrace-vsx.c | 151 +
arch/powerpc/kernel/ptrace/ptrace.c | 481 +++
arch/powerpc/kernel/{ => ptrace}/ptrace32.c | 11 -
arch/powerpc/kernel/setup-common.c | 3 +-
arch/powerpc/kernel/setup.h | 6 +
arch/powerpc/kernel/setup_32.c | 1 -
arch/powerpc/kernel/setup_64.c | 32 +-
arch/powerpc/kernel/signal.h | 2 -
arch/powerpc/kernel/signal_64.c | 4 +-
arch/powerpc/kernel/smp.c | 31 +-
arch/powerpc/kernel/stacktrace.c | 6 +-
arch/powerpc/kernel/syscall_64.c | 379 +++
arch/powerpc/kernel/syscalls/syscall.tbl | 22 +-
arch/powerpc/kernel/sysfs.c | 381 ++-
arch/powerpc/kernel/systbl.S | 9 +-
arch/powerpc/kernel/time.c | 9 -
arch/powerpc/kernel/traps.c | 25 +-
arch/powerpc/kernel/vdso.c | 5 -
arch/powerpc/kernel/vector.S | 2 +-
arch/powerpc/kernel/vmlinux.lds.S | 1 +
arch/powerpc/kexec/Makefile | 3 -
arch/powerpc/kvm/book3s_64_mmu_hv.c | 5 +-
arch/powerpc/kvm/book3s_64_mmu_radix.c | 5 +-
arch/powerpc/kvm/book3s_hv.c | 9 +-
arch/powerpc/kvm/book3s_hv_rmhandlers.S | 11 -
arch/powerpc/kvm/book3s_segment.S | 7 -
arch/powerpc/kvm/timing.c | 17 +-
arch/powerpc/lib/sstep.c | 5 +-
arch/powerpc/lib/test_emulate_step.c | 7 +-
arch/powerpc/mm/book3s32/hash_low.S | 27 +-
arch/powerpc/mm/book3s32/mmu.c | 2 +-
arch/powerpc/mm/book3s32/tlb.c | 11 +-
arch/powerpc/mm/book3s64/hash_utils.c | 7 +-
arch/powerpc/mm/book3s64/iommu_api.c | 39 +-
arch/powerpc/mm/book3s64/radix_pgtable.c | 1 +
arch/powerpc/mm/book3s64/radix_tlb.c | 7 +-
arch/powerpc/mm/kasan/kasan_init_32.c | 10 +-
arch/powerpc/mm/mem.c | 6 -
arch/powerpc/mm/nohash/40x.c | 4 +-
arch/powerpc/mm/nohash/tlb_low.S | 12 +-
arch/powerpc/mm/numa.c | 97 +-
arch/powerpc/mm/pgtable_32.c | 41 +-
arch/powerpc/mm/ptdump/bats.c | 8 +-
arch/powerpc/mm/ptdump/hashpagetable.c | 7 +-
arch/powerpc/mm/ptdump/ptdump.c | 8 +-
arch/powerpc/mm/ptdump/segment_regs.c | 8 +-
arch/powerpc/platforms/44x/warp.c | 3 -
arch/powerpc/platforms/52xx/efika.c | 1 -
arch/powerpc/platforms/83xx/km83xx.c | 9 +-
arch/powerpc/platforms/85xx/mpc85xx_cds.c | 11 +-
arch/powerpc/platforms/8xx/cpm1.c | 9 +-
arch/powerpc/platforms/8xx/m8xx_setup.c | 9 +-
arch/powerpc/platforms/Kconfig.cputype | 8 +-
arch/powerpc/platforms/amigaone/setup.c | 1 -
arch/powerpc/platforms/cell/axon_msi.c | 6 +-
arch/powerpc/platforms/cell/spufs/switch.c | 2 +-
arch/powerpc/platforms/chrp/setup.c | 15 +-
arch/powerpc/platforms/maple/setup.c | 34 +-
arch/powerpc/platforms/powermac/pic.c | 29 +-
arch/powerpc/platforms/powermac/setup.c | 1 -
arch/powerpc/platforms/powermac/smp.c | 20 +-
arch/powerpc/platforms/powernv/eeh-powernv.c | 37 +-
arch/powerpc/platforms/powernv/memtrace.c | 7 -
arch/powerpc/platforms/powernv/opal-core.c | 55 +-
arch/powerpc/platforms/powernv/opal-imc.c | 24 +-
arch/powerpc/platforms/powernv/pci-ioda.c | 5 -
arch/powerpc/platforms/powernv/setup.c | 4 +-
arch/powerpc/platforms/powernv/vas-debug.c | 37 +-
arch/powerpc/platforms/pseries/Makefile | 2 -
arch/powerpc/platforms/pseries/eeh_pseries.c | 87 +-
arch/powerpc/platforms/pseries/hotplug-memory.c | 8 +-
arch/powerpc/platforms/pseries/lpar.c | 10 +-
arch/powerpc/platforms/pseries/of_helpers.c | 2 +-
arch/powerpc/platforms/pseries/papr_scm.c | 5 +-
arch/powerpc/platforms/pseries/pci_dlpar.c | 2 +-
arch/powerpc/platforms/pseries/ras.c | 3 +
arch/powerpc/platforms/pseries/vio.c | 2 -
arch/powerpc/platforms/pseries/vphn.c | 3 +-
arch/powerpc/sysdev/xive/common.c | 126 +-
arch/powerpc/sysdev/xive/native.c | 7 +-
arch/powerpc/sysdev/xive/spapr.c | 23 +-
arch/powerpc/sysdev/xive/xive-internal.h | 9 +
arch/powerpc/xmon/Makefile | 3 -
arch/powerpc/xmon/xmon.c | 14 +-
drivers/cpufreq/powernv-cpufreq.c | 30 +-
drivers/pci/hotplug/rpadlpar_core.c | 2 +-
drivers/pci/hotplug/rpaphp_core.c | 5 +-
drivers/pci/hotplug/rpaphp_pci.c | 4 +-
drivers/tty/ehv_bytechan.c | 21 +-
fs/sysfs/group.c | 28 +-
include/linux/sysfs.h | 12 +
tools/testing/selftests/powerpc/benchmarks/Makefile | 2 +
tools/testing/selftests/powerpc/benchmarks/settings | 1 +
tools/testing/selftests/powerpc/dscr/Makefile | 2 +
tools/testing/selftests/powerpc/dscr/settings | 1 +
tools/testing/selftests/powerpc/mm/.gitignore | 1 +
tools/testing/selftests/powerpc/pmu/ebb/Makefile | 1 +
tools/testing/selftests/powerpc/signal/.gitignore | 1 +
tools/testing/selftests/powerpc/signal/Makefile | 4 +-
tools/testing/selftests/powerpc/signal/settings | 1 +
tools/testing/selftests/powerpc/signal/sigreturn_vdso.c | 127 +
tools/testing/selftests/powerpc/tm/.gitignore | 1 +
tools/testing/selftests/powerpc/tm/Makefile | 5 +-
tools/testing/selftests/powerpc/tm/settings | 1 +
tools/testing/selftests/powerpc/tm/tm-signal-context-force-tm.c | 74 +-
tools/testing/selftests/powerpc/tm/tm-signal-pagefault.c | 284 ++
183 files changed, 7989 insertions(+), 6154 deletions(-)
create mode 100644 Documentation/ABI/obsolete/sysfs-kernel-fadump_enabled
create mode 100644 Documentation/ABI/obsolete/sysfs-kernel-fadump_registered
create mode 100644 Documentation/ABI/obsolete/sysfs-kernel-fadump_release_mem
create mode 100644 Documentation/ABI/removed/sysfs-kernel-fadump_release_opalcore
create mode 100644 Documentation/ABI/testing/sysfs-firmware-opal-sensor-groups
create mode 100644 Documentation/ABI/testing/sysfs-kernel-fadump
delete mode 100644 arch/powerpc/kernel/ptrace.c
create mode 100644 arch/powerpc/kernel/ptrace/Makefile
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-adv.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-altivec.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-decl.h
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-noadv.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-novsx.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-spe.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-tm.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-view.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace-vsx.c
create mode 100644 arch/powerpc/kernel/ptrace/ptrace.c
rename arch/powerpc/kernel/{ => ptrace}/ptrace32.c (96%)
create mode 100644 arch/powerpc/kernel/syscall_64.c
create mode 100644 tools/testing/selftests/powerpc/benchmarks/settings
create mode 100644 tools/testing/selftests/powerpc/dscr/settings
create mode 100644 tools/testing/selftests/powerpc/signal/settings
create mode 100644 tools/testing/selftests/powerpc/signal/sigreturn_vdso.c
create mode 100644 tools/testing/selftests/powerpc/tm/settings
create mode 100644 tools/testing/selftests/powerpc/tm/tm-signal-pagefault.c
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEJFGtCPCthwEv2Y/bUevqPMjhpYAFAl6J1FoACgkQUevqPMjh
pYBpVQ/9H139JlzRhwGlWekfNskHKPMNWkveqeMGRr/OY1bv2XPl39q56TmbKnbs
afAmWn6AK24chQk2nQ2cPnoL+mcJ2sX6v2hwxT4vy3vrEzAf9om1MXtJPc5IvYzh
n4+1cOtZFnqRIFryJ0wrN/tXck//9z5IfUV5MNUjIkmTcoiUkwfTBM+Nq7nrDTCe
NcPU5Uf9eXsPrZUxOryeghSQD620lr6kzE10N56ewj3RIf6jDQdaFk4dBCgRzUEp
sNxDDKWWUL6ftd62RSzHflwbRSBHLr2ulWFlUw3CsBiiwK2zV4oq36R1GMRmMn+C
FbIxM3+8+G/rb9SwU5yRo55oWMFs/+0UodX7XXM1diKkg5KYqfQF2IIR2Ygmb82h
QNJP/eaS2AmVT1fD/P0ogfkb3SxU1fKt2OfJWGMLTTcYTOGGur471L6twGSCp5ON
tM1mFyMO76w0vNRuezsM6KhrLUz9O4d3OdQVB70Zv7dEUTiz0WNPWpPSvj4oTZTm
35dAx2EsGB6eQ0xDqyRAWrHmaxloSb/rbOThaUVgIcQHYwFA0C7+fG8Q7p6OPicN
zdmNix39/6Szy8763m+dXhCkB77nDDwICIJIblsKmHgtThULulQuOeITbrLnyH0J
LT9rzZHkBtHcDVQm7EQprPOu0++Ydbwb3MQ0OdQXEVnBot3FX9E=
=3l6Y
-----END PGP SIGNATURE-----
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox