From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752122AbcERHKh (ORCPT ); Wed, 18 May 2016 03:10:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55890 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751230AbcERHKf (ORCPT ); Wed, 18 May 2016 03:10:35 -0400 Message-ID: <1463555429.16365.43.camel@redhat.com> Subject: Re: [PATCH] sched/cputime: add steal time support to full dynticks CPU time accounting From: Rik van Riel To: Wanpeng Li , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Wanpeng Li , Ingo Molnar , "Peter Zijlstra (Intel)" , Thomas Gleixner , Frederic Weisbecker , Paolo Bonzini , Radim Date: Wed, 18 May 2016 03:10:29 -0400 In-Reply-To: <1462858484-3267-1-git-send-email-wanpeng.li@hotmail.com> References: <1462858484-3267-1-git-send-email-wanpeng.li@hotmail.com> Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-Pdc73or9+YS8K26kr4Ud" Mime-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 18 May 2016 07:10:35 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-Pdc73or9+YS8K26kr4Ud Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2016-05-10 at 13:34 +0800, Wanpeng Li wrote: >=C2=A0 > +++ b/kernel/sched/cputime.c >=C2=A0 > @@ -691,8 +691,11 @@ static cputime_t get_vtime_delta(struct > task_struct *tsk) > =C2=A0 > =C2=A0static void __vtime_account_system(struct task_struct *tsk) > =C2=A0{ > + unsigned long steal_time =3D steal_account_process_tick(); > =C2=A0 cputime_t delta_cpu =3D get_vtime_delta(tsk); > =C2=A0 > + delta_cpu =3D steal_time ? (delta_cpu - > + jiffies_to_cputime(steal_time)) : delta_cpu; > =C2=A0 account_system_time(tsk, irq_count(), delta_cpu, > cputime_to_scaled(delta_cpu)); > =C2=A0} > =C2=A0 Sorry to have to go back on my previous email, but this is now a NAK The above code can end up passing a negative number to account_system_time(), which in turn can cause a divide by zero in scale_stime() The code needs to ensure that if all the time that passed was accounted as steal time (which could be more jiffies than expected, due to remaining partial jiffies in steal_account_process_tick), the function does not call account_system_time(). --=20 All Rights Reversed. --=-Pdc73or9+YS8K26kr4Ud Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABCAAGBQJXPBVlAAoJEM553pKExN6DcakIAL2yHL6C50NGE4t1dWoGGBFs +3Uv8WOU/WEZUuo1oTbfXOQoBf6ofOPzjvDI9iP5w961+LwOAuS4mzyNZYih0N+J ivHKW2St67cF329XveCIbyzClAe46smi7NN4ljsv6RVzvi7Coz3m5w17vtsTX7Q3 9ixZNEpYYG0yAZ+wvwcilXFqCPbseDpZoDr8XElxoVQ5jgOhQMeAdYTIlZ6piIUA fO+asTDBqXOCLlr7j1cchvoYNlr/eP3GGCDTxTGsce6jU1xi5/mspIMPeAb4wcCp KUXfhLVooCQ1X9uP+XgW/0fuBMFESTy9J7CjpmKzhN3D0EJLasAVxHNR7MEfBpk= =05vB -----END PGP SIGNATURE----- --=-Pdc73or9+YS8K26kr4Ud--