From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH] Std VGA Performance Date: Mon, 29 Oct 2007 12:48:31 -0600 Message-ID: <1193683711.8201.11.camel@lappy> References: <471FBAD4.5090105@virtualiron.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-fnpaDxXJi07hBxAU/VW3" Return-path: In-Reply-To: <471FBAD4.5090105@virtualiron.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ben Guthro Cc: xen-devel , Robert Phillips , xen-ia64-devel List-Id: xen-devel@lists.xenproject.org --=-fnpaDxXJi07hBxAU/VW3 Content-Type: text/plain Content-Transfer-Encoding: 7bit On Wed, 2007-10-24 at 17:36 -0400, Ben Guthro wrote: > This patch improves the performance of Standard VGA, > the mode used during Windows boot and by the Linux > splash screen. Hi, ia64 uses VGA too. I've been able to regain some functionality with the patch below, but the VGA modes used by our firmware still have significant issues (once we boot to Linux userspace, VGA text mode gets readable). It seems like perhaps we've lost support for some basic text VGA modes. I haven't tried to understand the changes in qemu yet, but are we sacrificing compatibility for performance? Patch and screen shot below. Thanks, Alex PS - for xen-ia64-devel, both the Open Source and Intel GFW have issues with EFI text mode w/ this patch (use EFI shell to see it on Intel GFW). Signed-off-by: Alex Williamson --- diff -r 4034317507de xen/arch/ia64/vmx/mmio.c --- a/xen/arch/ia64/vmx/mmio.c Mon Oct 29 16:49:02 2007 +0000 +++ b/xen/arch/ia64/vmx/mmio.c Mon Oct 29 12:29:18 2007 -0600 @@ -56,10 +56,12 @@ static int hvm_buffered_io_intercept(ior { struct vcpu *v = current; spinlock_t *buffered_io_lock; - buffered_iopage_t *buffered_iopage = + buffered_iopage_t *pg = (buffered_iopage_t *)(v->domain->arch.hvm_domain.buffered_io_va); - unsigned long tmp_write_pointer = 0; int i; + buf_ioreq_t bp; + /* Timeoffset sends 64b data, but no address. Use two consecutive slots. */ + int qw = 0; /* ignore READ ioreq_t! */ if ( p->dir == IOREQ_READ ) @@ -75,11 +77,41 @@ static int hvm_buffered_io_intercept(ior if ( i == HVM_BUFFERED_IO_RANGE_NR ) return 0; + /* Return 0 for the cases we can't deal with. */ + if ( p->addr > 0xffffful || p->data_is_ptr || p->df || p->count != 1 ) + return 0; + + bp.type = p->type; + bp.dir = p->dir; + switch (p->size) { + case 1: + bp.size = 0; + break; + case 2: + bp.size = 1; + break; + case 4: + bp.size = 2; + break; + case 8: + bp.size = 3; + qw = 1; + gdprintk(XENLOG_INFO, "quadword ioreq type:%d data:%"PRIx64"\n", + p->type, p->data); + break; + default: + gdprintk(XENLOG_WARNING, "unexpected ioreq size:%"PRId64"\n", p->size); + return 0; + } + + bp.data = p->data; + bp.addr = qw ? ((p->data >> 16) & 0xfffful) : (p->addr & 0xffffful); + buffered_io_lock = &v->domain->arch.hvm_domain.buffered_io_lock; spin_lock(buffered_io_lock); - if ( buffered_iopage->write_pointer - buffered_iopage->read_pointer == - (unsigned long)IOREQ_BUFFER_SLOT_NUM ) { + if ( pg->write_pointer - pg->read_pointer >= + (unsigned long)IOREQ_BUFFER_SLOT_NUM - (qw ? 1 : 0) ) { /* the queue is full. * send the iopacket through the normal path. * NOTE: The arithimetic operation could handle the situation for @@ -89,13 +121,19 @@ static int hvm_buffered_io_intercept(ior return 0; } - tmp_write_pointer = buffered_iopage->write_pointer % IOREQ_BUFFER_SLOT_NUM; - - memcpy(&buffered_iopage->ioreq[tmp_write_pointer], p, sizeof(ioreq_t)); + memcpy(&pg->buf_ioreq[pg->write_pointer % IOREQ_BUFFER_SLOT_NUM], + &bp, sizeof(bp)); + + if (qw) { + bp.data = p->data >> 32; + bp.addr = (p->data >> 48) & 0xfffful; + memcpy(&pg->buf_ioreq[(pg->write_pointer + 1) % IOREQ_BUFFER_SLOT_NUM], + &bp, sizeof(bp)); + } /*make the ioreq_t visible before write_pointer*/ wmb(); - buffered_iopage->write_pointer++; + pg->write_pointer += qw ? 2 : 1; spin_unlock(buffered_io_lock); --=-fnpaDxXJi07hBxAU/VW3 Content-Disposition: attachment; filename=corrupted_gfx.png Content-Type: image/png; name=corrupted_gfx.png Content-Transfer-Encoding: base64 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 --=-fnpaDxXJi07hBxAU/VW3 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=-fnpaDxXJi07hBxAU/VW3--