Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932752AbcLMLNe (ORCPT ); Tue, 13 Dec 2016 06:13:34 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:46406 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750988AbcLMLNb (ORCPT ); Tue, 13 Dec 2016 06:13:31 -0500 Date: Tue, 13 Dec 2016 12:13:22 +0100 From: Martin Schwidefsky To: Frederic Weisbecker Cc: LKML , Tony Luck , Wanpeng Li , Peter Zijlstra , Michael Ellerman , Heiko Carstens , Benjamin Herrenschmidt , Thomas Gleixner , Paul Mackerras , Ingo Molnar , Fenghua Yu , Rik van Riel , Stanislaw Gruszka Subject: Re: [PATCH 09/10] s390/cputime: delayed accounting of system time In-Reply-To: <20161212150228.GA17032@lerouge> References: <1480991543-6557-1-git-send-email-fweisbec@gmail.com> <1480991543-6557-10-git-send-email-fweisbec@gmail.com> <20161210014804.GA3023@lerouge> <20161212112754.5ad104cf@mschwideX1> <20161212150228.GA17032@lerouge> X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16121311-0024-0000-0000-00000272DCAC X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16121311-0025-0000-0000-0000219BC752 Message-Id: <20161213121322.5fdbbb28@mschwideX1> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-12-13_07:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1612130191 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1277 Lines: 29 On Mon, 12 Dec 2016 16:02:30 +0100 Frederic Weisbecker wrote: > On Mon, Dec 12, 2016 at 11:27:54AM +0100, Martin Schwidefsky wrote: > > 3) The call to vtime_flush in account_process_tick is done in irq context from > > update_process_times. hardirq_offset==1 is also correct. > > Let's see this for example: > > + if ((tsk->flags & PF_VCPU) && (irq_count() - hardirq_offset == 0)) > + S390_lowcore.guest_timer += timer; > > If the tick is interrupting guest, we have accounted the guest time on tick IRQ entry. > Now we are in the middle of the tick interrupt and since hardirq_offset is 1, we > are taking the above path by accounting half of the tick-IRQ time as guest, which is wrong, > it's actually IRQ time. Hmm, you got me there. The system time from irq_enter until account_process_tick is reached is indeed IRQ time. It is not much but it is incorrect. The best fix would be to rip out the accounting of the system time from account_process_tick as irq_enter / irq_exit will do system time accounting anyway. To do that do_account_vtime needs to be split, because for the task switch we need to account the system time of the previous task. -- blue skies, Martin. "Reality continues to ruin my life." - Calvin.