From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 2/3] xen/arm: vgic-v3: Correctly retrieve the vCPU associated to a re-distributor Date: Tue, 29 Sep 2015 15:15:09 +0100 Message-ID: <560A9CED.70901@citrix.com> References: <1443472296-6671-1-git-send-email-julien.grall@citrix.com> <1443472296-6671-3-git-send-email-julien.grall@citrix.com> <1443534960.16718.85.camel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Zgvi2-00037c-4Q for xen-devel@lists.xenproject.org; Tue, 29 Sep 2015 14:16:46 +0000 In-Reply-To: <1443534960.16718.85.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell , xen-devel@lists.xenproject.org Cc: Wei Liu , shameerali.kolothum.thodi@huawei.com, stefano.stabellini@eu.citrix.com List-Id: xen-devel@lists.xenproject.org On 29/09/15 14:56, Ian Campbell wrote: > On Mon, 2015-09-28 at 21:31 +0100, Julien Grall wrote: >> When the guest is accessing the re-distributor, Xen retrieves the base >> of the re-distributor using a mask based on the stride. >> >> Although, when the stride contains multiple set, the corresponding mask > > ^bits? I guess you mean "multiple bits set" here? > (Also, drop the "Although, "). > >> will be computed incorrectly [1] and therefore giving invalid vCPU and >> offset: >> >> (XEN) d0v0: vGICR: unknown gpa read address 000000008d130008 >> (XEN) traps.c:2447:d0v1 HSR=0x93c08006 pc=0xffffffc00032362c >> gva=0xffffff80000b0008 gpa=0x0000008d130008 >> >> For instance if the region of re-distributor is starting at 0x8d100000 >> and the stride is 0x30000, an access to the address 0x8d130008 should >> be valid and use the re-distributor of vCPU1 with an offset of 0x8. >> Although, Xen is returning the vCPU0 and an offset of 0x20008. >> >> I didn't find a way to replace the current computation of the mask with >> a valid. The only solution I have found is to pass the region in private > > ^one > >> data of the handler. So we can directly get the offset from the >> beginning of the region and find the corresponding vCPU/offset in the >> re-distributor. >> >> This is also make the code simpler and avoid fast/slow path. >> >> [1] http://lists.xen.org/archives/html/xen-devel/2015-09/msg03372.html >> >> Signed-off-by: Julien Grall >> >> --- >> Cc: shameerali.kolothum.thodi@huawei.com >> Cc: Wei Liu >> >> This is technically a good candidate for Xen 4.6. Without it DOM0 >> may not be able to bring secondary CPU on platform using a stride >> with multiple bit set [1]. Although, we don't support such platform >> right now. So I would rather defer this change to Xen 4.6.1 and >> avoid possible downside/bug in this patch. > > Agreed. > > Other than the text: > > Acked-by: Ian Campbell Thank you. Regards, -- Julien Grall