From: Greg Ungerer <gerg@linux-m68k.org>
To: Daniel Palmer <daniel@0x0f.com>, christoph.plattner@gmx.at
Cc: geert@linux-m68k.org, linux-m68k@lists.linux-m68k.org,
linux-kernel@vger.kernel.org, sashal@kernel.org
Subject: Re: [PATCH v2] m68k: Fix task info flags handling for 68000
Date: Sat, 4 Apr 2026 21:57:30 +1000 [thread overview]
Message-ID: <88b36f8b-1e70-4c4c-9351-c545e59c256a@linux-m68k.org> (raw)
In-Reply-To: <20260404023108.2495351-1-daniel@0x0f.com>
Hi Daniel,
On 4/4/26 12:31, Daniel Palmer wrote:
> The logic for deciding what to do after a syscall should be checking
> if any of the lower byte bits are set and then checking if the reschedule
> bit is set.
>
> Currently we are loading the top word, checking if any bits are set
> (which never seems to be true) and thus jumping over loading the
> whole long and checking if the reschedule bit is set.
>
> We get the thread info in two places so split that logic out in
> a macro and then fix the code so that it loads the byte of the flags
> we need to check, checks if anything is set and then checks if
> the reschedule bit in particular is set.
>
> Reported-by: Christoph Plattner <christoph.plattner@gmx.at>
> Signed-off-by: Daniel Palmer <daniel@0x0f.com>
> ---
> v2: Only load the lower byte of the flags as that's all we need.
> This change was suggested by Greg and I tested it still works.
Thanks for taking care of this.
I have pushed into the m68knommu git tree for-next branch.
Regards
Greg
> arch/m68k/68000/entry.S | 21 +++++++++++++--------
> 1 file changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/arch/m68k/68000/entry.S b/arch/m68k/68000/entry.S
> index 72e95663b62f..c257cc415c47 100644
> --- a/arch/m68k/68000/entry.S
> +++ b/arch/m68k/68000/entry.S
> @@ -18,6 +18,13 @@
>
> .text
>
> +/* get thread_info pointer into a2 */
> + .macro getthreadinfo
> + movel %sp,%d1
> + andl #-THREAD_SIZE,%d1
> + movel %d1,%a2
> + .endm
> +
> .globl system_call
> .globl resume
> .globl ret_from_exception
> @@ -70,9 +77,8 @@ ENTRY(system_call)
>
> movel %sp@(PT_OFF_ORIG_D0),%d0
>
> - movel %sp,%d1 /* get thread_info pointer */
> - andl #-THREAD_SIZE,%d1
> - movel %d1,%a2
> + /* Doing a trace ? */
> + getthreadinfo
> btst #(TIF_SYSCALL_TRACE%8),%a2@(TINFO_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
> jne do_trace
> cmpl #NR_syscalls,%d0
> @@ -96,16 +102,15 @@ Luser_return:
> /* heavy interrupt load*/
> andw #ALLOWINT,%sr
>
> - movel %sp,%d1 /* get thread_info pointer */
> - andl #-THREAD_SIZE,%d1
> - movel %d1,%a2
> + getthreadinfo
> 1:
> - move %a2@(TINFO_FLAGS),%d1 /* thread_info->flags */
> + /* check if any of the flags are set */
> + moveb %a2@(TINFO_FLAGS + 3),%d1 /* thread_info->flags (low 8 bits) */
> jne Lwork_to_do
> RESTORE_ALL
>
> Lwork_to_do:
> - movel %a2@(TINFO_FLAGS),%d1 /* thread_info->flags */
> + /* check if reschedule needs to be called */
> btst #TIF_NEED_RESCHED,%d1
> jne reschedule
>
prev parent reply other threads:[~2026-04-04 11:57 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-04 2:31 Daniel Palmer
2026-04-04 11:57 ` Greg Ungerer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=88b36f8b-1e70-4c4c-9351-c545e59c256a@linux-m68k.org \
--to=gerg@linux-m68k.org \
--cc=christoph.plattner@gmx.at \
--cc=daniel@0x0f.com \
--cc=geert@linux-m68k.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=sashal@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®