|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v12] xen/arm64: io: Handle data abort due to cache maintenance instructions
On Fri, 1 Apr 2022, Julien Grall wrote:
> On 24/03/2022 13:37, Ayan Kumar Halder wrote:
> > /*
> > * At this point, we know that the instruction is either valid or has
> > been
> > * decoded successfully. Thus, Xen should be allowed to execute the
> > diff --git a/xen/arch/arm/ioreq.c b/xen/arch/arm/ioreq.c
> > index 54167aebcb..87a6240f2a 100644
> > --- a/xen/arch/arm/ioreq.c
> > +++ b/xen/arch/arm/ioreq.c
> > @@ -47,7 +47,7 @@ enum io_state try_fwd_ioserv(struct cpu_user_regs *regs,
> > struct vcpu *v, mmio_info_t *info)
> > {
> > struct vcpu_io *vio = &v->io;
> > - struct instr_details instr = info->dabt_instr;
> > + const struct instr_details instr = info->dabt_instr;
> > struct hsr_dabt dabt = info->dabt;
> > ioreq_t p = {
> > .type = IOREQ_TYPE_COPY,
> > @@ -62,7 +62,6 @@ enum io_state try_fwd_ioserv(struct cpu_user_regs *regs,
> > * memory access. So for now, we can safely always set to 0.
> > */
> > .df = 0,
> > - .data = get_user_reg(regs, info->dabt.reg),
> > .state = STATE_IOREQ_READY,
> > };
> > struct ioreq_server *s = NULL;
> > @@ -74,12 +73,23 @@ enum io_state try_fwd_ioserv(struct cpu_user_regs *regs,
> > return IO_ABORT;
> > }
> > + if ( instr.state == INSTR_CACHE )
> > + p.size = dcache_line_bytes;
> I think it would be best to only set the p.size when instr.state !=
> INSTR_CACHE in the else here.
>
> I can do that on commit. I will also give a chance to Stefano to reply.
The patch looks OK to me, please go ahead and make the change on
commit.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |