[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 |