* [PATCH v2 0/2] riscv: Correct the initialized flow of FP and __fstate_clean() @ 2019-08-14 8:23 Vincent Chen 2019-08-14 8:23 ` [PATCH v2 1/2] riscv: Correct the initialized flow of FP register Vincent Chen 2019-08-14 8:23 ` [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly Vincent Chen 0 siblings, 2 replies; 11+ messages in thread From: Vincent Chen @ 2019-08-14 8:23 UTC (permalink / raw) To: Paul Walmsley, Palmer Dabbelt; +Cc: linux-riscv, linux-kernel, Vincent Chen The following two reasons cause FP registers are sometimes not initialized before starting the user program. 1. Currently, the FP context is initialized in flush_thread() function and we expect these initial values to be restored to FP register when doing FP context switch. However, the FP context switch only occurs in switch_to function. Hence, if this process does not be scheduled out and scheduled in before entering the user space, the FP registers have no chance to initialize. 2. In flush_thread(), the state of reg->sstatus.FS inherits from the parent. Hence, the state of reg->sstatus.FS may be dirty. If this process is scheduled out during flush_thread() and initializing the FP register, the fstate_save() in switch_to will corrupt the FP context which has been initialized until flush_thread(). In addition, the __fstate_clean() function cannot correctly set the state of sstatus.FS to SR_FS_CLEAN. These problems will be solved in this patch set. Changes since v1: - Remove unneeded braces - Remove unneeded ifdef condition - Make the correction for __fstate_clean() be a RC fix Vincent Chen (2): riscv: Correct the initialized flow of FP register riscv: Make __fstate_clean() work correctly. arch/riscv/include/asm/switch_to.h | 8 +++++++- arch/riscv/kernel/process.c | 11 +++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 1/2] riscv: Correct the initialized flow of FP register 2019-08-14 8:23 [PATCH v2 0/2] riscv: Correct the initialized flow of FP and __fstate_clean() Vincent Chen @ 2019-08-14 8:23 ` Vincent Chen 2019-08-14 20:24 ` Paul Walmsley 2019-08-14 8:23 ` [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly Vincent Chen 1 sibling, 1 reply; 11+ messages in thread From: Vincent Chen @ 2019-08-14 8:23 UTC (permalink / raw) To: Paul Walmsley, Palmer Dabbelt; +Cc: linux-riscv, linux-kernel, Vincent Chen The following two reasons cause FP registers are sometimes not initialized before starting the user program. 1. Currently, the FP context is initialized in flush_thread() function and we expect these initial values to be restored to FP register when doing FP context switch. However, the FP context switch only occurs in switch_to function. Hence, if this process does not be scheduled out and scheduled in before entering the user space, the FP registers have no chance to initialize. 2. In flush_thread(), the state of reg->sstatus.FS inherits from the parent. Hence, the state of reg->sstatus.FS may be dirty. If this process is scheduled out during flush_thread() and initializing the FP register, the fstate_save() in switch_to will corrupt the FP context which has been initialized until flush_thread(). To solve the 1st case, the initialization of the FP register will be completed in start_thread(). It makes sure all FP registers are initialized before starting the user program. For the 2nd case, the state of reg->sstatus.FS in start_thread will be set to SR_FS_OFF to prevent this process from corrupting FP context in doing context save. The FP state is set to SR_FS_INITIAL in start_trhead(). Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org> Reviewed-by: Christoph Hellwig <hch@lst.de> --- arch/riscv/include/asm/switch_to.h | 6 ++++++ arch/riscv/kernel/process.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index 853b65e..0575b8a 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -19,6 +19,12 @@ static inline void __fstate_clean(struct pt_regs *regs) regs->sstatus |= (regs->sstatus & ~(SR_FS)) | SR_FS_CLEAN; } +static inline void fstate_off(struct task_struct *task, + struct pt_regs *regs) +{ + regs->sstatus = (regs->sstatus & ~SR_FS) | SR_FS_OFF; +} + static inline void fstate_save(struct task_struct *task, struct pt_regs *regs) { diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index f23794b..fb3a082 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -64,8 +64,14 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp) { regs->sstatus = SR_SPIE; - if (has_fpu) + if (has_fpu) { regs->sstatus |= SR_FS_INITIAL; + /* + * Restore the initial value to the FP register + * before starting the user program. + */ + fstate_restore(current, regs); + } regs->sepc = pc; regs->sp = sp; set_fs(USER_DS); @@ -75,10 +81,11 @@ void flush_thread(void) { #ifdef CONFIG_FPU /* - * Reset FPU context + * Reset FPU state and context * frm: round to nearest, ties to even (IEEE default) * fflags: accrued exceptions cleared */ + fstate_off(current, task_pt_regs(current)); memset(¤t->thread.fstate, 0, sizeof(current->thread.fstate)); #endif } -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] riscv: Correct the initialized flow of FP register 2019-08-14 8:23 ` [PATCH v2 1/2] riscv: Correct the initialized flow of FP register Vincent Chen @ 2019-08-14 20:24 ` Paul Walmsley 0 siblings, 0 replies; 11+ messages in thread From: Paul Walmsley @ 2019-08-14 20:24 UTC (permalink / raw) To: Vincent Chen; +Cc: Palmer Dabbelt, linux-riscv, linux-kernel On Wed, 14 Aug 2019, Vincent Chen wrote: > The following two reasons cause FP registers are sometimes not > initialized before starting the user program. > 1. Currently, the FP context is initialized in flush_thread() function > and we expect these initial values to be restored to FP register when > doing FP context switch. However, the FP context switch only occurs in > switch_to function. Hence, if this process does not be scheduled out > and scheduled in before entering the user space, the FP registers > have no chance to initialize. > 2. In flush_thread(), the state of reg->sstatus.FS inherits from the > parent. Hence, the state of reg->sstatus.FS may be dirty. If this > process is scheduled out during flush_thread() and initializing the > FP register, the fstate_save() in switch_to will corrupt the FP context > which has been initialized until flush_thread(). > > To solve the 1st case, the initialization of the FP register will be > completed in start_thread(). It makes sure all FP registers are initialized > before starting the user program. For the 2nd case, the state of > reg->sstatus.FS in start_thread will be set to SR_FS_OFF to prevent this > process from corrupting FP context in doing context save. The FP state is > set to SR_FS_INITIAL in start_trhead(). > > Signed-off-by: Vincent Chen <vincent.chen@sifive.com> > Reviewed-by: Anup Patel <anup@brainfault.org> > Reviewed-by: Christoph Hellwig <hch@lst.de> Thanks Vincent. I fixed a 'checkpatch.pl --strict' issue, added a "Fixes:" line and cc'ed stable, and queued the following for v5.3-rc. - Paul From: Vincent Chen <vincent.chen@sifive.com> Date: Wed, 14 Aug 2019 16:23:52 +0800 Subject: [PATCH] riscv: Correct the initialized flow of FP register The following two reasons cause FP registers are sometimes not initialized before starting the user program. 1. Currently, the FP context is initialized in flush_thread() function and we expect these initial values to be restored to FP register when doing FP context switch. However, the FP context switch only occurs in switch_to function. Hence, if this process does not be scheduled out and scheduled in before entering the user space, the FP registers have no chance to initialize. 2. In flush_thread(), the state of reg->sstatus.FS inherits from the parent. Hence, the state of reg->sstatus.FS may be dirty. If this process is scheduled out during flush_thread() and initializing the FP register, the fstate_save() in switch_to will corrupt the FP context which has been initialized until flush_thread(). To solve the 1st case, the initialization of the FP register will be completed in start_thread(). It makes sure all FP registers are initialized before starting the user program. For the 2nd case, the state of reg->sstatus.FS in start_thread will be set to SR_FS_OFF to prevent this process from corrupting FP context in doing context save. The FP state is set to SR_FS_INITIAL in start_trhead(). Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Fixes: 7db91e57a0acd ("RISC-V: Task implementation") Cc: stable@vger.kernel.org [paul.walmsley@sifive.com: fixed brace alignment issue reported by checkpatch] Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com> --- arch/riscv/include/asm/switch_to.h | 6 ++++++ arch/riscv/kernel/process.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index 853b65ef656d..949d9cd91dec 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -19,6 +19,12 @@ static inline void __fstate_clean(struct pt_regs *regs) regs->sstatus |= (regs->sstatus & ~(SR_FS)) | SR_FS_CLEAN; } +static inline void fstate_off(struct task_struct *task, + struct pt_regs *regs) +{ + regs->sstatus = (regs->sstatus & ~SR_FS) | SR_FS_OFF; +} + static inline void fstate_save(struct task_struct *task, struct pt_regs *regs) { diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index f23794bd1e90..fb3a082362eb 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -64,8 +64,14 @@ void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long sp) { regs->sstatus = SR_SPIE; - if (has_fpu) + if (has_fpu) { regs->sstatus |= SR_FS_INITIAL; + /* + * Restore the initial value to the FP register + * before starting the user program. + */ + fstate_restore(current, regs); + } regs->sepc = pc; regs->sp = sp; set_fs(USER_DS); @@ -75,10 +81,11 @@ void flush_thread(void) { #ifdef CONFIG_FPU /* - * Reset FPU context + * Reset FPU state and context * frm: round to nearest, ties to even (IEEE default) * fflags: accrued exceptions cleared */ + fstate_off(current, task_pt_regs(current)); memset(¤t->thread.fstate, 0, sizeof(current->thread.fstate)); #endif } -- 2.23.0.rc1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-08-14 8:23 [PATCH v2 0/2] riscv: Correct the initialized flow of FP and __fstate_clean() Vincent Chen 2019-08-14 8:23 ` [PATCH v2 1/2] riscv: Correct the initialized flow of FP register Vincent Chen @ 2019-08-14 8:23 ` Vincent Chen 2019-08-14 20:32 ` Paul Walmsley 1 sibling, 1 reply; 11+ messages in thread From: Vincent Chen @ 2019-08-14 8:23 UTC (permalink / raw) To: Paul Walmsley, Palmer Dabbelt Cc: linux-riscv, linux-kernel, Vincent Chen, linux-stable Make the __fstate_clean() function correctly set the state of sstatus.FS in pt_regs to SR_FS_CLEAN. Fixes: 7db91e5 ("RISC-V: Task implementation") Cc: linux-stable <stable@vger.kernel.org> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org> Reviewed-by: Christoph Hellwig <hch@lst.de> --- arch/riscv/include/asm/switch_to.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index 0575b8a..0aa5b94 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -16,7 +16,7 @@ extern void __fstate_restore(struct task_struct *restore_from); static inline void __fstate_clean(struct pt_regs *regs) { - regs->sstatus |= (regs->sstatus & ~(SR_FS)) | SR_FS_CLEAN; + regs->sstatus = (regs->sstatus & ~SR_FS) | SR_FS_CLEAN; } static inline void fstate_off(struct task_struct *task, -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-08-14 8:23 ` [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly Vincent Chen @ 2019-08-14 20:32 ` Paul Walmsley 2019-08-14 21:29 ` Palmer Dabbelt 0 siblings, 1 reply; 11+ messages in thread From: Paul Walmsley @ 2019-08-14 20:32 UTC (permalink / raw) To: Vincent Chen; +Cc: Palmer Dabbelt, linux-riscv, linux-kernel On Wed, 14 Aug 2019, Vincent Chen wrote: > Make the __fstate_clean() function correctly set the > state of sstatus.FS in pt_regs to SR_FS_CLEAN. > > Fixes: 7db91e5 ("RISC-V: Task implementation") > Cc: linux-stable <stable@vger.kernel.org> > Signed-off-by: Vincent Chen <vincent.chen@sifive.com> > Reviewed-by: Anup Patel <anup@brainfault.org> > Reviewed-by: Christoph Hellwig <hch@lst.de> Thanks, I extended the "Fixes" commit ID to 12 digits, as is the usual practice here, and have queued the following for v5.3-rc. - Paul From: Vincent Chen <vincent.chen@sifive.com> Date: Wed, 14 Aug 2019 16:23:53 +0800 Subject: [PATCH] riscv: Make __fstate_clean() work correctly. Make the __fstate_clean() function correctly set the state of sstatus.FS in pt_regs to SR_FS_CLEAN. Fixes: 7db91e57a0acd ("RISC-V: Task implementation") Cc: linux-stable <stable@vger.kernel.org> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org> Reviewed-by: Christoph Hellwig <hch@lst.de> [paul.walmsley@sifive.com: expanded "Fixes" commit ID] Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com> --- arch/riscv/include/asm/switch_to.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h index 949d9cd91dec..f0227bdce0f0 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -16,7 +16,7 @@ extern void __fstate_restore(struct task_struct *restore_from); static inline void __fstate_clean(struct pt_regs *regs) { - regs->sstatus |= (regs->sstatus & ~(SR_FS)) | SR_FS_CLEAN; + regs->sstatus = (regs->sstatus & ~SR_FS) | SR_FS_CLEAN; } static inline void fstate_off(struct task_struct *task, -- 2.23.0.rc1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-08-14 20:32 ` Paul Walmsley @ 2019-08-14 21:29 ` Palmer Dabbelt 2019-08-14 22:17 ` Andreas Schwab 0 siblings, 1 reply; 11+ messages in thread From: Palmer Dabbelt @ 2019-08-14 21:29 UTC (permalink / raw) To: Paul Walmsley; +Cc: vincent.chen, linux-riscv, linux-kernel On Wed, 14 Aug 2019 13:32:50 PDT (-0700), Paul Walmsley wrote: > On Wed, 14 Aug 2019, Vincent Chen wrote: > >> Make the __fstate_clean() function correctly set the >> state of sstatus.FS in pt_regs to SR_FS_CLEAN. >> >> Fixes: 7db91e5 ("RISC-V: Task implementation") >> Cc: linux-stable <stable@vger.kernel.org> >> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> >> Reviewed-by: Anup Patel <anup@brainfault.org> >> Reviewed-by: Christoph Hellwig <hch@lst.de> > > Thanks, I extended the "Fixes" commit ID to 12 digits, as is the usual > practice here, and have queued the following for v5.3-rc. For reference, something like "git config core.abbrev=12" (or whatever you write to get this in your .gitconfig) https://github.com/palmer-dabbelt/home/blob/master/.gitconfig.in#L23 causes git to do the right thing. > - Paul > > From: Vincent Chen <vincent.chen@sifive.com> > Date: Wed, 14 Aug 2019 16:23:53 +0800 > Subject: [PATCH] riscv: Make __fstate_clean() work correctly. > > Make the __fstate_clean() function correctly set the > state of sstatus.FS in pt_regs to SR_FS_CLEAN. > > Fixes: 7db91e57a0acd ("RISC-V: Task implementation") > Cc: linux-stable <stable@vger.kernel.org> > Signed-off-by: Vincent Chen <vincent.chen@sifive.com> > Reviewed-by: Anup Patel <anup@brainfault.org> > Reviewed-by: Christoph Hellwig <hch@lst.de> > [paul.walmsley@sifive.com: expanded "Fixes" commit ID] > Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com> > --- > arch/riscv/include/asm/switch_to.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/switch_to.h > index 949d9cd91dec..f0227bdce0f0 100644 > --- a/arch/riscv/include/asm/switch_to.h > +++ b/arch/riscv/include/asm/switch_to.h > @@ -16,7 +16,7 @@ extern void __fstate_restore(struct task_struct *restore_from); > > static inline void __fstate_clean(struct pt_regs *regs) > { > - regs->sstatus |= (regs->sstatus & ~(SR_FS)) | SR_FS_CLEAN; > + regs->sstatus = (regs->sstatus & ~SR_FS) | SR_FS_CLEAN; > } > > static inline void fstate_off(struct task_struct *task, ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-08-14 21:29 ` Palmer Dabbelt @ 2019-08-14 22:17 ` Andreas Schwab 2019-08-15 1:53 ` Palmer Dabbelt ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Andreas Schwab @ 2019-08-14 22:17 UTC (permalink / raw) To: Palmer Dabbelt; +Cc: Paul Walmsley, vincent.chen, linux-riscv, linux-kernel On Aug 14 2019, Palmer Dabbelt <palmer@sifive.com> wrote: > On Wed, 14 Aug 2019 13:32:50 PDT (-0700), Paul Walmsley wrote: >> On Wed, 14 Aug 2019, Vincent Chen wrote: >> >>> Make the __fstate_clean() function correctly set the >>> state of sstatus.FS in pt_regs to SR_FS_CLEAN. >>> >>> Fixes: 7db91e5 ("RISC-V: Task implementation") >>> Cc: linux-stable <stable@vger.kernel.org> >>> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> >>> Reviewed-by: Anup Patel <anup@brainfault.org> >>> Reviewed-by: Christoph Hellwig <hch@lst.de> >> >> Thanks, I extended the "Fixes" commit ID to 12 digits, as is the usual >> practice here, and have queued the following for v5.3-rc. > > For reference, something like "git config core.abbrev=12" (or whatever you > write to get this in your .gitconfig) > > https://github.com/palmer-dabbelt/home/blob/master/.gitconfig.in#L23 > > causes git to do the right thing. Actually, the right setting is core.abbrev=auto (or leaving it unset). It lets git chose the appropriate length depending on the repository contents. For the linux repository it will chose 13 right now. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-08-14 22:17 ` Andreas Schwab @ 2019-08-15 1:53 ` Palmer Dabbelt 2019-08-15 2:53 ` Vincent Chen 2019-09-11 7:22 ` Geert Uytterhoeven 2 siblings, 0 replies; 11+ messages in thread From: Palmer Dabbelt @ 2019-08-15 1:53 UTC (permalink / raw) To: schwab; +Cc: Paul Walmsley, vincent.chen, linux-riscv, linux-kernel On Wed, 14 Aug 2019 15:17:18 PDT (-0700), schwab@linux-m68k.org wrote: > On Aug 14 2019, Palmer Dabbelt <palmer@sifive.com> wrote: > >> On Wed, 14 Aug 2019 13:32:50 PDT (-0700), Paul Walmsley wrote: >>> On Wed, 14 Aug 2019, Vincent Chen wrote: >>> >>>> Make the __fstate_clean() function correctly set the >>>> state of sstatus.FS in pt_regs to SR_FS_CLEAN. >>>> >>>> Fixes: 7db91e5 ("RISC-V: Task implementation") >>>> Cc: linux-stable <stable@vger.kernel.org> >>>> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> >>>> Reviewed-by: Anup Patel <anup@brainfault.org> >>>> Reviewed-by: Christoph Hellwig <hch@lst.de> >>> >>> Thanks, I extended the "Fixes" commit ID to 12 digits, as is the usual >>> practice here, and have queued the following for v5.3-rc. >> >> For reference, something like "git config core.abbrev=12" (or whatever you >> write to get this in your .gitconfig) >> >> https://github.com/palmer-dabbelt/home/blob/master/.gitconfig.in#L23 >> >> causes git to do the right thing. > > Actually, the right setting is core.abbrev=auto (or leaving it unset). > It lets git chose the appropriate length depending on the repository > contents. For the linux repository it will chose 13 right now. Awesome, thanks! I've updated my config :) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-08-14 22:17 ` Andreas Schwab 2019-08-15 1:53 ` Palmer Dabbelt @ 2019-08-15 2:53 ` Vincent Chen 2019-09-11 7:22 ` Geert Uytterhoeven 2 siblings, 0 replies; 11+ messages in thread From: Vincent Chen @ 2019-08-15 2:53 UTC (permalink / raw) To: Andreas Schwab Cc: Palmer Dabbelt, Paul Walmsley, linux-riscv, linux-kernel@vger.kernel.org List On Thu, Aug 15, 2019 at 6:17 AM Andreas Schwab <schwab@linux-m68k.org> wrote: > > On Aug 14 2019, Palmer Dabbelt <palmer@sifive.com> wrote: > > > On Wed, 14 Aug 2019 13:32:50 PDT (-0700), Paul Walmsley wrote: > >> On Wed, 14 Aug 2019, Vincent Chen wrote: > >> > >>> Make the __fstate_clean() function correctly set the > >>> state of sstatus.FS in pt_regs to SR_FS_CLEAN. > >>> > >>> Fixes: 7db91e5 ("RISC-V: Task implementation") > >>> Cc: linux-stable <stable@vger.kernel.org> > >>> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> > >>> Reviewed-by: Anup Patel <anup@brainfault.org> > >>> Reviewed-by: Christoph Hellwig <hch@lst.de> > >> > >> Thanks, I extended the "Fixes" commit ID to 12 digits, as is the usual > >> practice here, and have queued the following for v5.3-rc. > > Thank Paul for correcting my mistake. > > For reference, something like "git config core.abbrev=12" (or whatever you > > write to get this in your .gitconfig) > > > > https://github.com/palmer-dabbelt/home/blob/master/.gitconfig.in#L23 > > > > causes git to do the right thing. > > Actually, the right setting is core.abbrev=auto (or leaving it unset). > It lets git chose the appropriate length depending on the repository > contents. For the linux repository it will chose 13 right now. > > Andreas. > Thanks to Palmer and Andreas for sharing this useful information. > -- > Andreas Schwab, schwab@linux-m68k.org > GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 > "And now for something completely different." ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-08-14 22:17 ` Andreas Schwab 2019-08-15 1:53 ` Palmer Dabbelt 2019-08-15 2:53 ` Vincent Chen @ 2019-09-11 7:22 ` Geert Uytterhoeven 2019-09-11 7:31 ` Andreas Schwab 2 siblings, 1 reply; 11+ messages in thread From: Geert Uytterhoeven @ 2019-09-11 7:22 UTC (permalink / raw) To: Andreas Schwab Cc: Palmer Dabbelt, Paul Walmsley, vincent.chen, linux-riscv, Linux Kernel Mailing List Hi Andreas, On Thu, Aug 15, 2019 at 12:37 AM Andreas Schwab <schwab@linux-m68k.org> wrote: > On Aug 14 2019, Palmer Dabbelt <palmer@sifive.com> wrote: > > On Wed, 14 Aug 2019 13:32:50 PDT (-0700), Paul Walmsley wrote: > >> On Wed, 14 Aug 2019, Vincent Chen wrote: > >>> Make the __fstate_clean() function correctly set the > >>> state of sstatus.FS in pt_regs to SR_FS_CLEAN. > >>> > >>> Fixes: 7db91e5 ("RISC-V: Task implementation") > >>> Cc: linux-stable <stable@vger.kernel.org> > >>> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> > >>> Reviewed-by: Anup Patel <anup@brainfault.org> > >>> Reviewed-by: Christoph Hellwig <hch@lst.de> > >> > >> Thanks, I extended the "Fixes" commit ID to 12 digits, as is the usual > >> practice here, and have queued the following for v5.3-rc. > > > > For reference, something like "git config core.abbrev=12" (or whatever you > > write to get this in your .gitconfig) > > > > https://github.com/palmer-dabbelt/home/blob/master/.gitconfig.in#L23 > > > > causes git to do the right thing. > > Actually, the right setting is core.abbrev=auto (or leaving it unset). > It lets git chose the appropriate length depending on the repository > contents. For the linux repository it will chose 13 right now. Does that depend on the git version? For me (git version 2.17.1), it still uses 12 when using the auto setting. Should we update Documentation/process/submitting-patches.rst to increase to e.g. 16 (which is what I've been using for quite a while)? When can we expect old 12 hexit references to start breaking? Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly. 2019-09-11 7:22 ` Geert Uytterhoeven @ 2019-09-11 7:31 ` Andreas Schwab 0 siblings, 0 replies; 11+ messages in thread From: Andreas Schwab @ 2019-09-11 7:31 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Palmer Dabbelt, Paul Walmsley, vincent.chen, linux-riscv, Linux Kernel Mailing List On Sep 11 2019, Geert Uytterhoeven <geert@linux-m68k.org> wrote: > Hi Andreas, > > On Thu, Aug 15, 2019 at 12:37 AM Andreas Schwab <schwab@linux-m68k.org> wrote: >> On Aug 14 2019, Palmer Dabbelt <palmer@sifive.com> wrote: >> > On Wed, 14 Aug 2019 13:32:50 PDT (-0700), Paul Walmsley wrote: >> >> On Wed, 14 Aug 2019, Vincent Chen wrote: >> >>> Make the __fstate_clean() function correctly set the >> >>> state of sstatus.FS in pt_regs to SR_FS_CLEAN. >> >>> >> >>> Fixes: 7db91e5 ("RISC-V: Task implementation") >> >>> Cc: linux-stable <stable@vger.kernel.org> >> >>> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> >> >>> Reviewed-by: Anup Patel <anup@brainfault.org> >> >>> Reviewed-by: Christoph Hellwig <hch@lst.de> >> >> >> >> Thanks, I extended the "Fixes" commit ID to 12 digits, as is the usual >> >> practice here, and have queued the following for v5.3-rc. >> > >> > For reference, something like "git config core.abbrev=12" (or whatever you >> > write to get this in your .gitconfig) >> > >> > https://github.com/palmer-dabbelt/home/blob/master/.gitconfig.in#L23 >> > >> > causes git to do the right thing. >> >> Actually, the right setting is core.abbrev=auto (or leaving it unset). >> It lets git chose the appropriate length depending on the repository >> contents. For the linux repository it will chose 13 right now. > > Does that depend on the git version? > For me (git version 2.17.1), it still uses 12 when using the auto setting. No, 12 is the correct number. I was miscounting. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-09-11 7:31 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-08-14 8:23 [PATCH v2 0/2] riscv: Correct the initialized flow of FP and __fstate_clean() Vincent Chen 2019-08-14 8:23 ` [PATCH v2 1/2] riscv: Correct the initialized flow of FP register Vincent Chen 2019-08-14 20:24 ` Paul Walmsley 2019-08-14 8:23 ` [PATCH v2 2/2] riscv: Make __fstate_clean() work correctly Vincent Chen 2019-08-14 20:32 ` Paul Walmsley 2019-08-14 21:29 ` Palmer Dabbelt 2019-08-14 22:17 ` Andreas Schwab 2019-08-15 1:53 ` Palmer Dabbelt 2019-08-15 2:53 ` Vincent Chen 2019-09-11 7:22 ` Geert Uytterhoeven 2019-09-11 7:31 ` Andreas Schwab
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).