From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753312AbcAGQfr (ORCPT ); Thu, 7 Jan 2016 11:35:47 -0500 Received: from foss.arm.com ([217.140.101.70]:40811 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752356AbcAGQfq (ORCPT ); Thu, 7 Jan 2016 11:35:46 -0500 Date: Thu, 7 Jan 2016 16:37:22 +0000 From: Lorenzo Pieralisi To: Peter Maydell Cc: Guenter Roeck , "linux-kernel@vger.kernel.org" , Mark Rutland , Will Deacon , QEMU Developers , "linux-arm-kernel@lists.infradead.org" Subject: Re: [Qemu-devel] arm64 qemu tests failing in linux-next since 'arm64: kernel: enforce pmuserenr_el0 initialization and restore' Message-ID: <20160107163722.GB4064@red-moon> References: <567B41E3.5060800@roeck-us.net> <20160107155310.GA4064@red-moon> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 07, 2016 at 03:58:15PM +0000, Peter Maydell wrote: > On 7 January 2016 at 15:53, Lorenzo Pieralisi wrote: > > On Thu, Jan 07, 2016 at 01:25:35PM +0000, Peter Maydell wrote: > >> We had previously been relying on the kernel not attempting to > >> touch the PMU if the ID_AA64DFR0_EL1 PMUVer bits read 0000 > >> ("Performance Monitors extension System registers not implemented"). > > > > Ok, thanks for looking into this. I wonder why reading pmcr_el0 does > > not suffer from the same problem though. > > Just a pragmatic thing on QEMU's end, I expect -- the kernel already > touched PMCR_EL0 and we wanted to be able to boot it, so we have an > implementation of it. If that's the case, that was the wrong approach IMHO. QEMU has to comply with the Aarch64 architecture which means that either the CPU it models has a Performance Monitors extension or it does not. If reading pmcr_el0 does not fault I could tell you this is a QEMU regression because currently it _does_ model pmcr_el0 while (hopefully) ID_AA64DFR0_EL1 PMUVer reports it should not. I will add code that guards both register accesses to fix both bugs at once. Thanks, Lorenzo