diff --git a/xen/arch/x86/hvm/stdvga.c b/xen/arch/x86/hvm/stdvga.c index f5a4b1cfe9..3a84a7c35e 100644 --- a/xen/arch/x86/hvm/stdvga.c +++ b/xen/arch/x86/hvm/stdvga.c @@ -104,7 +104,7 @@ static void vram_put(struct hvm_hw_stdvga *s, void *p) static int stdvga_outb(uint64_t addr, uint8_t val) { struct hvm_hw_stdvga *s = ¤t->domain->arch.hvm.stdvga; - int rc = 1, prev_stdvga = s->stdvga; + int rc = 1; switch ( addr ) { @@ -133,19 +133,6 @@ static int stdvga_outb(uint64_t addr, uint8_t val) break; } - /* When in standard vga mode, emulate here all writes to the vram buffer - * so we can immediately satisfy reads without waiting for qemu. */ - s->stdvga = (s->sr[7] == 0x00); - - if ( !prev_stdvga && s->stdvga ) - { - gdprintk(XENLOG_INFO, "entering stdvga mode\n"); - } - else if ( prev_stdvga && !s->stdvga ) - { - gdprintk(XENLOG_INFO, "leaving stdvga mode\n"); - } - return rc; } @@ -426,7 +413,6 @@ static int cf_check 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.stdvga; ioreq_t p = { .type = IOREQ_TYPE_COPY, .addr = addr, @@ -437,8 +423,7 @@ static int cf_check stdvga_mem_write( }; struct ioreq_server *srv; - if ( true || !s->stdvga ) - goto done; + goto done; /* Intercept mmio write */ switch ( size ) @@ -499,19 +484,14 @@ static bool cf_check stdvga_mem_accept( spin_lock(&s->lock); - if ( p->dir == IOREQ_WRITE && (p->data_is_ptr || p->count != 1) ) + if ( p->dir != IOREQ_WRITE || p->data_is_ptr || p->count != 1 ) { /* - * We cannot return X86EMUL_UNHANDLEABLE on anything other then the - * first cycle of an I/O. So, since we cannot guarantee to always be - * able to send buffered writes, we have to reject any multi-cycle - * or "indirect" I/O. + * Only accept single direct writes, as that's the only thing we can + * accelerate using buffered ioreq handling. */ goto reject; } - else if ( p->dir == IOREQ_READ && - (true || !s->stdvga) ) - goto reject; /* s->lock intentionally held */ return 1; diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h index d92f87f83b..d964f8efdf 100644 --- a/xen/arch/x86/include/asm/hvm/io.h +++ b/xen/arch/x86/include/asm/hvm/io.h @@ -126,7 +126,6 @@ struct hvm_hw_stdvga { uint8_t sr[8]; uint8_t gr_index; uint8_t gr[9]; - bool_t stdvga; uint32_t latch; struct page_info *vram_page[64]; /* shadow of 0xa0000-0xaffff */ spinlock_t lock;