[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [XEN v1] xen/arm: io: Check ESR_EL2.ISV != 0 before searching for a MMIO handler
- To: Julien Grall <julien.grall.oss@xxxxxxxxx>, Ayan Kumar Halder <ayan.kumar.halder@xxxxxxxxxx>
- From: Ayan Kumar Halder <ayan.kumar.halder@xxxxxxxxxx>
- Date: Wed, 26 Jan 2022 17:55:55 +0000
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.199.80.198) smtp.rcpttodomain=gmail.com smtp.mailfrom=xilinx.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=xilinx.com; dkim=none (message not signed); 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=k+Qkz71br8G7IERB5odIk3JaTrcYrSZwlDfqRHpXBlI=; b=L4/yKrwCNq2uN6TvkcbpSqsfOXKQuaFv4Zv6s5+WMgEv1ZR2TwANrpMFFPPj00P7owtxWGGQA22vAv/UcxnUJPd7Gqd//ajkKszOx65Eybf/zu9QdGsweigU2s7J+9pbbGA/1s3iYy2XqGJKz6wf6QUOlLrbtdwpmZDwdnrkdwynCaM7GkoKWoUxrXtEX0dWVU3Hd5RB+Mfg6ZD2BbdOZfVesGC7HVeBciwETsY/AW8fGC2+3AMKv0geK8nxDRvvznee4SCPWq7MBonReiPC8U8W6Xquv0ptkfGj6fznmRlVwszNrs4nMFNpBz+kK4GI+ys2jGD9bw8d1mm25Q5KeA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=exGEIaYKj7WQGlsAAfQ1ORNSwwCAYPF+M3kEyH/2i+LM9odT5qh5SG8SdMNCIFSUe8+n6h//P4iMWD9Njy8D+CsC1hIjsVzR3jgEPq6byQ7Ot0DmQQpjcJoeb63oLebWOJR4xcEj043wTlhdLqkNNLoe6LisN0kj1mYJsBAKJ/2/GRQXYpfPYtykIJJYvn1GMWb5d4f06SExne9LYnNFPESqx72c5St1+noCPvIFfmky0J6geYror6UOKjgm5449WN7gWkih6Zry5mNyfGKOgPU6OKpgyVGwRHJ+Foz64gcgrVOce6czRcu5RS9327ku3oS3F63LbwSnX9nGDDS7RA==
- Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, <stefanos@xxxxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>
- Delivery-date: Wed, 26 Jan 2022 17:56:26 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Hi Julien,
On 26/01/2022 17:22, Julien Grall
wrote:
Hi,
Refer to
Armv8 ARM DDI 0487G.b, Page D13-3219 "ISS encoding for an
exception
from a Data Abort" :-
ISV - ISS[23:14] holds a valid instruction syndrome
When the ISV is 0, the instruction could not be decoded by
the hardware (ie ISS
is invalid). One should immediately return an error to the
caller with an
appropriate error message.
That's going to be very spammy because we have
use-case where it could trap without a valid ISV (e.g. when
break-before-make happens). So please don't had a message.
There is already a logging statement in traps.c :-
inject_abt:
gdprintk(XENLOG_DEBUG,
"HSR=%#"PRIregister" pc=%#"PRIregister"
gva=%#"PRIvaddr" gpa=%#"PRIpaddr"\n",
hsr.bits, regs->pc, gva, gpa);
The reason for the error is to give the user some hint that an IO
abort is triggered by Xen. Can we keep the error message ?
Also, I think this is a duplicate check
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/arm/ioreq.c;h=308650b40051825fdea78bb33bfbcc87ef5deaff;hb=HEAD#l79
, I will remove this in v2 if it makes sense.
- Ayan
That makes me think that the same will be valid
for your other patch.
There is
no use of the MMIO handler. This is the
reason why one should check for ISV before attempting to
find a MMIO handler.
Signed-off-by: Ayan Kumar Halder <ayankuma@xxxxxxxxxx>
---
Suggested by Julien Grall in https://lists.xenproject.org/archives/html/xen-devel/2022-01/msg01245.html
xen/arch/arm/io.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/xen/arch/arm/io.c b/xen/arch/arm/io.c
index 729287e37c..14d39222f2 100644
--- a/xen/arch/arm/io.c
+++ b/xen/arch/arm/io.c
@@ -109,6 +109,13 @@ enum io_state try_handle_mmio(struct
cpu_user_regs *regs,
ASSERT(hsr.ec
== HSR_EC_DATA_ABORT_LOWER_EL);
+ /* All the instructions used on emulated MMIO region
should be valid */
+ if ( !dabt.valid )
+ {
+ gprintk(XENLOG_DEBUG, "No valid instruction
syndrome for data abort\n");
+ return IO_ABORT;
+ }
+
handler = find_mmio_handler(v->domain, info.gpa);
if ( !handler )
{
@@ -121,10 +128,6 @@ enum io_state try_handle_mmio(struct
cpu_user_regs *regs,
return rc;
}
- /* All the instructions used on emulated MMIO region
should be valid */
- if ( !dabt.valid )
- return IO_ABORT;
-
/*
* Erratum 766422: Thumb store translation fault to
Hypervisor may
* not have correct HSR Rt value.
--
2.17
|