lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 3 Apr 2020 16:54:28 +0530 From: Gautham R Shenoy <ego@...ux.vnet.ibm.com> To: "Naveen N. Rao" <naveen.n.rao@...ux.vnet.ibm.com> Cc: ego@...ux.vnet.ibm.com, Kamalesh Babulal <kamalesh@...ux.vnet.ibm.com>, linux-kernel@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org, Michael Ellerman <mpe@...erman.id.au>, Nathan Lynch <nathanl@...ux.ibm.com>, Vaidyanathan Srinivasan <svaidy@...ux.vnet.ibm.com>, Tyrel Datwyler <tyreld@...ux.ibm.com> Subject: Re: [PATCH v4 2/6] powerpc/idle: Add accessor function to always read latest idle PURR On Fri, Apr 03, 2020 at 04:04:56PM +0530, Naveen N. Rao wrote: > Gautham R Shenoy wrote: > >On Wed, Apr 01, 2020 at 03:12:53PM +0530, Naveen N. Rao wrote: > >>Hi Gautham, > >> > >>Gautham R. Shenoy wrote: > >>>From: "Gautham R. Shenoy" <ego@...ux.vnet.ibm.com> > >>> > >>>+ > >>>+static inline u64 read_this_idle_purr(void) > >>>+{ > >>>+ /* > >>>+ * If we are reading from an idle context, update the > >>>+ * idle-purr cycles corresponding to the last idle period. > >>>+ * Since the idle context is not yet over, take a fresh > >>>+ * snapshot of the idle-purr. > >>>+ */ > >>>+ if (unlikely(get_lppaca()->idle == 1)) { > >>>+ update_idle_purr_accounting(); > >>>+ snapshot_purr_idle_entry(); > >>>+ } > >>>+ > >>>+ return be64_to_cpu(get_lppaca()->wait_state_cycles); > >>>+} > >>>+ > >> > >>I think this and read_this_idle_spurr() from the next patch should be moved > >>to Patch 4/6, where they are actually used. > > > >The reason I included this function in this patch was to justify why > >we were introducing snapshotting the purr values in a global per-cpu > >variable instead of on a stack variable. The reason being that someone > >might want to read the PURR value from an interrupt context which had > >woken up the CPU from idle. At this point, since epilog() function > >wasn't called, the idle PURR count corresponding to this latest idle > >period would have been accumulated in lppaca->wait_cycles. Thus, this > >helper function safely reads the value by > > 1) First updating the lppaca->wait_cycles with the latest idle_purr > > count. > > 2) Take a fresh snapshot, since the time from now to the epilog() > > call is also counted under idle CPU. So the PURR cycle increment > > during this short period should also be accumulated in lppaca->wait_cycles. > > > > > >prolog() > >| snapshot PURR > >| > >| > >| > >Idle > >| > >| <----- Interrupt . Read idle PURR ---- update idle PURR; > >| snapshot PURR; > >| Read idle PURR. | > >epilog() > > update idle PURR > > > > Yes, I understand. It makes sense. > > > > >However, if you feel that moving this function to Patch 4 where it is > >actually used makes it more readable, I can do that. > > My suggestion was from a bisectability standpoint though. This is a fairly > simple function, but it is generally recommended to ensure that newly added > code gets exercized in the patch that it is introduced in: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/5.Posting.rst#n119 > Fair point. Will move those functions to Patch 4. > > Regards, > Naveen >
Powered by blists - more mailing lists