From: Breno Leitao <leitao@debian.org>
To: Michael Neuling <mikey@neuling.org>, linuxppc-dev@lists.ozlabs.org
Cc: ldufour@linux.vnet.ibm.com, gromero@linux.vnet.ibm.com
Subject: Re: [RFC PATCH 06/11] powerpc/tm: Refactor the __switch_to_tm code
Date: Thu, 27 Sep 2018 17:48:46 -0300 [thread overview]
Message-ID: <8c286819-a41b-5c07-2857-09618181000f@debian.org> (raw)
In-Reply-To: <d06021833414dcfa5c9e04b4d83dfc475d1f1cbd.camel@neuling.org>
hi Mikey
On 09/18/2018 01:04 AM, Michael Neuling wrote:
>> On top of that, both tm_reclaim_task() and tm_recheckpoint_new_task()
>> functions are not used anymore, removing them.
>
> What about tm_reclaim_current(). This is being used in places like signals
> which I would have thought we could avoid with this series
In fact tm_reclaim_current() is the default function to reclaim. It is the
function that is being called by TM_KERNEL_ENTRY, other than that, it should
never be called on the sane path.
>> + * If we got here with an active transaction, then, it was
>> + * aborted by TM_KERNEL_ENTRY and the fix the failure case
>> + * needs to be fixed, so, indepedently how we arrived here, the
>> + * new TM abort case will be TM_CAUSE_RESCHED now.
>
> What does "fix the failure case needs to be fixed" mean?
>
> also s/indepedently/independently/
In fact, I rewrote this paragraph. I try to say that the "TEXASR Failure
code" needs to be updated/fixed, but it became that messy and crazy
paragraph. :-(
>
>> + */
>> + if (MSR_TM_ACTIVE(prev->thread.regs->msr)) {
>> + /*
>> + * If there was an IRQ during trecheckpoint, it will
>> + * cause an IRQ to be replayed. This replayed IRQ can
>> + * invoke SCHEDULE_USER, thus, we arrive here with a TM
>> + * active transaction.
>
> I don't think this can happen. trecheckpoint (and treclaim) are called with IRQs
> hard off (since they change r1).
There will be an IRQ check and replay later. An IRQ being replayed can cause
a process to be reschedule and arrive here after a trecheckpoint.
> I think something else is going on here. I think this code and comment needs to
> go but I assume it's here because you are seeing something.
Right, and it was my major concern about this whole review.
The tm_recheckpoint() was being called with IRQ hard off, as you said, but
the IRQ is being re-enabled later, after "trecheckpoint", when it calls
local_irq_restore().
Since the IRQ was re-enabled, there is a mechanism to check for IRQs that
were pending and execute them (after recheckpoint - hence with MSR[TS]
active). Some of these pending IRQ might cause a task reschedule, bringing us
to __switch_to with MSR[TS] active.
I also checked that there were cases where a pending IRQ was waiting to be
replayed even before tm_recheckpoint() is called. I suspect we were reaching
tm_recheckpoint soft-disabled.
On the v2 patchset, I am following your suggestion, which is calling
restore_tm_state() much later (at the beginning of fast_exception_return),
after the _TIF_USER_WORK_MASK section, and after the IRQ replay section also.
So, after this point, there is no way to rollback the exit to userspace after
trecheckpoint. Therefore, if there is a recheckpoint, a rfid will always come
directly.
In order to do so, I need to remove _TIF_RESTORE_TM as part of
_TIF_USER_WORK_MASK and handle _TIF_RESTORE_TM individually later.
This seems to solve this problem, and I can remove this reclaim in the middle
of __switch_to_tm().
Thank you
next prev parent reply other threads:[~2018-09-27 20:57 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-12 19:40 [RFC PATCH 00/11] New TM Model Breno Leitao
2018-09-12 19:40 ` [RFC PATCH 01/11] powerpc/tm: Reclaim transaction on kernel entry Breno Leitao
2018-09-18 1:31 ` Michael Neuling
2018-09-27 20:28 ` Breno Leitao
2018-09-27 20:28 ` Breno Leitao
2018-09-12 19:40 ` [RFC PATCH 02/11] powerpc/tm: Reclaim on unavailable exception Breno Leitao
2018-09-12 19:40 ` [RFC PATCH 03/11] powerpc/tm: Recheckpoint when exiting from kernel Breno Leitao
2018-09-12 19:40 ` [RFC PATCH 04/11] powerpc/tm: Always set TIF_RESTORE_TM on reclaim Breno Leitao
2018-09-12 19:40 ` [RFC PATCH 05/11] powerpc/tm: Function that updates the failure code Breno Leitao
2018-09-17 5:29 ` Michael Neuling
2018-09-18 1:29 ` Michael Neuling
2018-09-27 20:58 ` Breno Leitao
2018-09-28 5:27 ` Michael Neuling
2018-09-18 3:27 ` Michael Neuling
2018-09-12 19:40 ` [RFC PATCH 06/11] powerpc/tm: Refactor the __switch_to_tm code Breno Leitao
2018-09-18 4:04 ` Michael Neuling
2018-09-27 20:48 ` Breno Leitao [this message]
2018-09-12 19:40 ` [RFC PATCH 07/11] powerpc/tm: Do not recheckpoint at sigreturn Breno Leitao
2018-09-18 5:32 ` Michael Neuling
2018-09-12 19:40 ` [RFC PATCH 08/11] powerpc/tm: Do not reclaim on ptrace Breno Leitao
2018-09-18 5:36 ` Michael Neuling
2018-09-27 21:03 ` Breno Leitao
2018-09-28 5:36 ` Michael Neuling
2018-09-30 23:51 ` Breno Leitao
2018-10-01 0:34 ` Michael Neuling
2018-09-12 19:40 ` [RFC PATCH 09/11] powerpc/tm: Do not restore default DSCR Breno Leitao
2018-09-18 5:41 ` Michael Neuling
2018-09-27 20:51 ` Breno Leitao
2018-09-28 5:03 ` Michael Neuling
2018-09-12 19:40 ` [RFC PATCH 10/11] powerpc/tm: Set failure summary Breno Leitao
2018-09-18 5:50 ` Michael Neuling
2018-09-27 20:52 ` Breno Leitao
2018-09-28 5:17 ` Michael Neuling
2018-09-12 19:40 ` [RFC PATCH 11/11] selftests/powerpc: Adapt the test Breno Leitao
2018-09-18 6:36 ` Michael Neuling
2018-09-27 20:57 ` Breno Leitao
2018-09-28 5:25 ` Michael Neuling
2018-10-01 17:50 ` Breno Leitao
2018-09-17 5:25 ` [RFC PATCH 00/11] New TM Model Michael Neuling
2018-09-27 20:13 ` Breno Leitao
2018-09-27 20:13 ` Breno Leitao
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=8c286819-a41b-5c07-2857-09618181000f@debian.org \
--to=leitao@debian.org \
--cc=gromero@linux.vnet.ibm.com \
--cc=ldufour@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mikey@neuling.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;
as well as URLs for NNTP newsgroup(s).