[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Regression in OSSTest Windows install test case
> -----Original Message----- > From: Wei Liu [mailto:wei.liu2@xxxxxxxxxx] > Sent: 16 July 2015 10:03 > To: Paul Durrant > Cc: Wei Liu; xen-devel@xxxxxxxxxxxxxxxxxxxx; Jan Beulich; Andrew Cooper > Subject: Re: Regression in OSSTest Windows install test case > > On Thu, Jul 16, 2015 at 09:39:42AM +0100, Paul Durrant wrote: > [...] > > I think I found the semantic difference. Prior to this patch it would seem > that stdvga buffered writes even when not in stdvga mode. When I tested > your config (using cirrus), windows drops out of stdvga quite early in boot > which slows down the splash screen to a crawl. When I just uncommented > the single line 'stdvga=1' then I got through the splash screen several orders > of magnitude faster. > > So, I think this (compile tested only) incremental patch should fix the > > test: > > > > diff --git a/xen/arch/x86/hvm/stdvga.c b/xen/arch/x86/hvm/stdvga.c > > index 6d22b22..d528155 100644 > > --- a/xen/arch/x86/hvm/stdvga.c > > +++ b/xen/arch/x86/hvm/stdvga.c > > @@ -441,7 +441,7 @@ static int stdvga_mem_write(const struct > hvm_io_handler *han > > }; > > struct hvm_ioreq_server *srv; > > > > - if ( !s->cache ) > > + if ( !s->cache || !s->stdvga ) > > goto done; > > > > /* Intercept mmio write */ > > @@ -503,9 +503,6 @@ static bool_t stdvga_mem_accept(const struct > hvm_io_handler > > > > spin_lock(&s->lock); > > > > - if ( !s->stdvga ) > > - goto reject; > > - > > if ( p->dir == IOREQ_WRITE && p->count > 1 ) > > { > > /* > > @@ -526,7 +523,7 @@ static bool_t stdvga_mem_accept(const struct > hvm_io_handler > > > > goto reject; > > } > > - else if ( p->dir == IOREQ_READ && !s->cache ) > > + else if ( p->dir == IOREQ_READ && !s->cache && !s->stdvga ) > > goto reject; > > > > /* s->lock intentionally held */ > > > > I can't say that I like the idea of unconditionally buffering VRAM writes, > > but > I'll test patch and post it. > > > > Thank you for the fix. It fixes the problem for me. Cool. There's actually a small bug-ette in it. The line: else if ( p->dir == IOREQ_READ && !s->cache && !s->stdvga ) should be: else if ( p->dir == IOREQ_READ && (!s->cache || !s->stdvga) ) I don't think that will affect the behaviour in this case though since I very much doubt Windows is reading VRAM at this stage. Could you perhaps re-test with that change? Cheers, Paul > > Tested-by: Wei Liu <wei.liu2@xxxxxxxxxx> > > > Paul > > > > > > > > > > Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |