[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v7 07/15] x86/hvm: unify stdvga mmio intercept with standard mmio intercept
> -----Original Message----- > From: Jan Beulich [mailto:JBeulich@xxxxxxxx] > Sent: 09 July 2015 16:33 > To: Paul Durrant > Cc: xen-devel@xxxxxxxxxxxxx; Keir (Xen.org) > Subject: Re: [PATCH v7 07/15] x86/hvm: unify stdvga mmio intercept with > standard mmio intercept > > >>> On 09.07.15 at 15:10, <paul.durrant@xxxxxxxxxx> wrote: > > @@ -424,8 +426,22 @@ static void stdvga_mem_writeb(uint64_t addr, > uint32_t val) > > } > > } > > > > -static void stdvga_mem_write(uint64_t addr, uint64_t data, uint64_t size) > > +static int stdvga_mem_write(const struct hvm_io_handler *handler, > > + uint64_t addr, uint32_t size, > > + uint64_t data) > > { > > + struct hvm_hw_stdvga *s = ¤t->domain- > >arch.hvm_domain.stdvga; > > + ioreq_t p = { .type = IOREQ_TYPE_COPY, > > + .addr = addr, > > + .size = size, > > + .count = 1, > > + .dir = IOREQ_WRITE, > > + .data = data, > > + }; > > Indentation (still - I know I pointed this out on v6, just perhaps at > another example). See e.g. the context of the earlier change to the > beginning of hvm_mmio_internal() in this patch for how this should > look like. It has to be something my emacs is doing then; I can't see any brokenness. > > > -int stdvga_intercept_mmio(ioreq_t *p) > > +static bool_t stdvga_mem_accept(const struct hvm_io_handler *handler, > > + const ioreq_t *p) > > { > > - struct domain *d = current->domain; > > - struct hvm_hw_stdvga *s = &d->arch.hvm_domain.stdvga; > > - uint64_t start, end, addr = p->addr, count = p->count, size = p->size; > > - int buf = 0, rc; > > - > > - if ( unlikely(p->df) ) > > - { > > - start = (addr - (count - 1) * size); > > - end = addr + size; > > - } > > - else > > - { > > - start = addr; > > - end = addr + count * size; > > - } > > - > > - if ( (start < VGA_MEM_BASE) || (end > (VGA_MEM_BASE + > VGA_MEM_SIZE)) ) > > - return X86EMUL_UNHANDLEABLE; > > - > > - if ( size > 8 ) > > - { > > - gdprintk(XENLOG_WARNING, "invalid mmio size %d\n", (int)p->size); > > - return X86EMUL_UNHANDLEABLE; > > - } > > + struct hvm_hw_stdvga *s = ¤t->domain- > >arch.hvm_domain.stdvga; > > > > spin_lock(&s->lock); > > > > - if ( s->stdvga && s->cache ) > > + if ( !s->stdvga || > > + (hvm_mmio_first_byte(p) < VGA_MEM_BASE) || > > + (hvm_mmio_last_byte(p) > (VGA_MEM_BASE + VGA_MEM_SIZE)) ) > > If "last" means what is says, you need >= here. > True. Paul > Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |