Message ID | 20170614130241.19865-2-npiggin@gmail.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Delegated to: | Rafael Wysocki |
Headers | show |
On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote: > local_irq_enable can cause interrupts to be taken which could > take significant amount of processing time. The idle process > should set its polling flag before this, so another process that > wakes it during this time will not have to send an IPI. > > Expand the TIF_POLLING_NRFLAG coverage to as large as possible. > > Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Series applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/3fc5ee927ff4ffed6aa2fcd44d2fbf cheers
On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman <patch-notifications@ellerman.id.au> wrote: > On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote: >> local_irq_enable can cause interrupts to be taken which could >> take significant amount of processing time. The idle process >> should set its polling flag before this, so another process that >> wakes it during this time will not have to send an IPI. >> >> Expand the TIF_POLLING_NRFLAG coverage to as large as possible. >> >> Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> >> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > Series applied to powerpc next, thanks. > > https://git.kernel.org/powerpc/c/3fc5ee927ff4ffed6aa2fcd44d2fbf OK I've applied it too, so I guess I should drop it? Thanks, Rafael
"Rafael J. Wysocki" <rafael@kernel.org> writes: > On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman > <patch-notifications@ellerman.id.au> wrote: >> On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote: >>> local_irq_enable can cause interrupts to be taken which could >>> take significant amount of processing time. The idle process >>> should set its polling flag before this, so another process that >>> wakes it during this time will not have to send an IPI. >>> >>> Expand the TIF_POLLING_NRFLAG coverage to as large as possible. >>> >>> Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> >>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> >> >> Series applied to powerpc next, thanks. >> >> https://git.kernel.org/powerpc/c/3fc5ee927ff4ffed6aa2fcd44d2fbf > > OK > > I've applied it too, so I guess I should drop it? Erk sorry. I hadn't heard anything so I picked it up. If you can drop it that would be good, but if not git will probably work it out mostly :) cheers
On Fri, Jun 30, 2017 at 5:45 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: > "Rafael J. Wysocki" <rafael@kernel.org> writes: > >> On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman >> <patch-notifications@ellerman.id.au> wrote: >>> On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote: >>>> local_irq_enable can cause interrupts to be taken which could >>>> take significant amount of processing time. The idle process >>>> should set its polling flag before this, so another process that >>>> wakes it during this time will not have to send an IPI. >>>> >>>> Expand the TIF_POLLING_NRFLAG coverage to as large as possible. >>>> >>>> Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> >>>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> >>> >>> Series applied to powerpc next, thanks. >>> >>> https://git.kernel.org/powerpc/c/3fc5ee927ff4ffed6aa2fcd44d2fbf >> >> OK >> >> I've applied it too, so I guess I should drop it? > > Erk sorry. I hadn't heard anything so I picked it up. > > If you can drop it that would be good, but if not git will probably work > it out mostly :) I've dropped it, no problem. Thanks, Rafael
"Rafael J. Wysocki" <rafael@kernel.org> writes: > On Fri, Jun 30, 2017 at 5:45 AM, Michael Ellerman <mpe@ellerman.id.au> wrote: >> "Rafael J. Wysocki" <rafael@kernel.org> writes: >> >>> On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman >>> <patch-notifications@ellerman.id.au> wrote: >>>> On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote: >>>>> local_irq_enable can cause interrupts to be taken which could >>>>> take significant amount of processing time. The idle process >>>>> should set its polling flag before this, so another process that >>>>> wakes it during this time will not have to send an IPI. >>>>> >>>>> Expand the TIF_POLLING_NRFLAG coverage to as large as possible. >>>>> >>>>> Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> >>>>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> >>>> >>>> Series applied to powerpc next, thanks. >>>> >>>> https://git.kernel.org/powerpc/c/3fc5ee927ff4ffed6aa2fcd44d2fbf >>> >>> OK >>> >>> I've applied it too, so I guess I should drop it? >> >> Erk sorry. I hadn't heard anything so I picked it up. >> >> If you can drop it that would be good, but if not git will probably work >> it out mostly :) > > I've dropped it, no problem. Thanks. cheers
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index 45eaf06462ae..77bc50ad9f57 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c @@ -51,9 +51,10 @@ static int snooze_loop(struct cpuidle_device *dev, { u64 snooze_exit_time; - local_irq_enable(); set_thread_flag(TIF_POLLING_NRFLAG); + local_irq_enable(); + snooze_exit_time = get_tb() + snooze_timeout; ppc64_runlatch_off(); HMT_very_low(); @@ -66,6 +67,7 @@ static int snooze_loop(struct cpuidle_device *dev, ppc64_runlatch_on(); clear_thread_flag(TIF_POLLING_NRFLAG); smp_mb(); + return index; } diff --git a/drivers/cpuidle/cpuidle-pseries.c b/drivers/cpuidle/cpuidle-pseries.c index 166ccd711ec9..7b12bb2ea70f 100644 --- a/drivers/cpuidle/cpuidle-pseries.c +++ b/drivers/cpuidle/cpuidle-pseries.c @@ -62,9 +62,10 @@ static int snooze_loop(struct cpuidle_device *dev, unsigned long in_purr; u64 snooze_exit_time; + set_thread_flag(TIF_POLLING_NRFLAG); + idle_loop_prolog(&in_purr); local_irq_enable(); - set_thread_flag(TIF_POLLING_NRFLAG); snooze_exit_time = get_tb() + snooze_timeout; while (!need_resched()) {