[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH] arm/entry: set x0 before cache maintenance.


  • To: Julien Grall <julien@xxxxxxx>, "minios-devel@xxxxxxxxxxxxxxxxxxxx" <minios-devel@xxxxxxxxxxxxxxxxxxxx>, "sharan.santhanam@xxxxxxxxx" <sharan.santhanam@xxxxxxxxx>, "simon.kuenzer@xxxxxxxxx" <simon.kuenzer@xxxxxxxxx>
  • From: Jianyong Wu <Jianyong.Wu@xxxxxxx>
  • Date: Mon, 1 Feb 2021 15:09:15 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h0Qj3tVIrPWA2lOlfZOdpaTbj0zlqg19Q/9R0xtGZvk=; b=dLC6Ui3nllzTTAyqBHqSymc9i9GdVFJS+8OEnX6ahhYFar4miq7pQP9v3NHmnGqmESgcKpQK2HassQNt3FrBtBCyfGMwKp62cHzkw+g7c6+6GsFEkeYLittMW5zrJXwRewXT2r+r9990yLz40qjzi2iXcSxuXKpMjRHaA0Lg0ReiYFlneagl8mzSdBdQPzOu9cuxBtF5sDMNRaAImui3YEbZIQxSP6bUEpEM2Hgmavdlpr+rg16Am6ZQI6qRhWkxSa+95JXRxDXlGTDQJm4vkOvxLwSE6csuWSjG2LWmD1vmaicOPnPAM603S33TcO7l0morSfq6uFJK+kdGPvdflg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kDGIaHsrvdEVotag4Rv4J1C2JL8qnG0LQgHO7eOUfLhdbuK+w0AhzKKzJc15gdTg9aYM1WmBjOtz5IpP2QgquZiivTlVDpVtFW9gYtvD8U+PU06IA5uJjWLbvgwnFlcdAy78cRN0vY2mDvsjSZh4NlJUQpFsFspSwuaMcsZ5u7Dk9KlyAph9zG7PPQyIABL5+dF+RxkEmziskgS5t4fU74aXu0rrjujiu+/HEazoOMU1UKZ7jDt5LCDkRPjRpTeAvjKpoCoDr1s3bsFWgrwWuplnOjSscf7OMCPlcfGvP1G9mOMYxKwSiVZDxLtiI12Eq/H4hmOMZ6O0nfCYUYtpaw==
  • Authentication-results-original: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Cc: Justin He <Justin.He@xxxxxxx>
  • Delivery-date: Mon, 01 Feb 2021 15:09:31 +0000
  • List-id: Mini-os development list <minios-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHW49uzRHrqnSIcfk6pAPiz35T026o+w3YAgAR4HHA=
  • Thread-topic: [PATCH] arm/entry: set x0 before cache maintenance.

Hi Julien,

> -----Original Message-----
> From: Julien Grall <julien@xxxxxxx>
> Sent: Friday, January 29, 2021 9:50 PM
> To: Jianyong Wu <Jianyong.Wu@xxxxxxx>; minios-
> devel@xxxxxxxxxxxxxxxxxxxx; sharan.santhanam@xxxxxxxxx;
> simon.kuenzer@xxxxxxxxx
> Cc: Justin He <Justin.He@xxxxxxx>
> Subject: Re: [PATCH] arm/entry: set x0 before cache maintenance.
>
> Hi,
>
> On 06/01/2021 03:25, Jianyong Wu wrote:
> > There is a long standing issue in entry code of arm that x0 is not set
> > before using it in clean_and_invalidate_dcache_range. This error can
> > be caught by kvm and result in core dump.
> > Here, x0 is set to the base address of dtb before cache maintain.
> > Signed-off-by: Jianyong Wu <jianyong.wu@xxxxxxx>
> > ---
> >   plat/kvm/arm/entry64.S | 6 ++++++
> >   1 file changed, 6 insertions(+)
> >
> > diff --git a/plat/kvm/arm/entry64.S b/plat/kvm/arm/entry64.S index
> > c4de334..0526ae8 100644
> > --- a/plat/kvm/arm/entry64.S
> > +++ b/plat/kvm/arm/entry64.S
> > @@ -92,6 +92,12 @@ ENTRY(_libkvmplat_entry)
> >   add x27, x26, x17
> >   add x27, x27, #__STACK_SIZE
> >   sub x1, x27, x25
> > +
> > +/*
> > + * set x0 to the location stores dtb as the base address of the
> > + * memory range to be cache maintained
> > + */
>
> There is already a few lines above explaining what the clean is meant to do. I
> think it would be best to modify this comment (if you need to) rather than
> adding a new comment.
>
Ok, I can move this comment up.

> It would also make sense to introduce a new symbol (maybe start_binary) to
> avoid relying on _dtb to always be first.
>
Sounds good, but I'm not sure how to do that. As _dtb is assigned in link 
script, where should we assigned the new symbol? In the entry.S or in the link 
script?

> > +ldr x0, =_dtb
>
> Unrelated to this patch, I am a bit confused with the code. The comment on
> top of __libkvmplat_entry suggests that the DTB in x0, so this implies the DTB
> can be dynamic.
>

I don't think the dtb address can be dynamic.  The   __libkvmplat_entry is a 
"C" function and the "_dtb" will be its parameter.
Maybe we can use "const" to bond the parameter of __libkvmplat_entry. Does that 
do your trick?

> However, this line will load the DTB from the image. Can you clarify the
> expected behavior?

This load ops only pass the dtb address to the __libkvmplat_entry.  And I'm not 
sure why it's not clear about that. Can you give more info?

Thanks
Jianyong

>
> >   bl clean_and_invalidate_dcache_range
> >
> >   /* Disable the MMU and D-Cache. */
> >
>
> Cheers,
>
> --
> Julien Grall
IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium. Thank you.

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.