All of lore.kernel.org
 help / color / mirror / Atom feed
* Regression in OSSTest Windows install test case
@ 2015-07-15 14:40 Wei Liu
  2015-07-15 14:43 ` Andrew Cooper
  2015-07-16  8:39 ` Paul Durrant
  0 siblings, 2 replies; 14+ messages in thread
From: Wei Liu @ 2015-07-15 14:40 UTC (permalink / raw)
  To: xen-devel; +Cc: Andrew Cooper, Paul Durrant, wei.liu2, Jan Beulich

Hi all

The Windows install test case has been failing reliably in OSSTest for
the last 6 runs.

The issue manifest as Windows hit blue screen with garbled text that
cannot be recognised when booting. Xen doesn't complain about any
failures.

I bisected that and found this commit is to be blamed.

commit 3bbaaec09b1b942f5624dee176da6e416d31f982
Author: Paul Durrant <paul.durrant@citrix.com>
Date:   Thu Jul 9 19:04:00 2015 +0200

    x86/hvm: unify stdvga mmio intercept with standard mmio intercept
    
    It's clear from the following check in hvmemul_rep_movs:
    
        if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct ||
             (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
            return X86EMUL_UNHANDLEABLE;
    
    that mmio <-> mmio copy is not handled. This means the code in the
    stdvga mmio intercept that explicitly handles mmio <-> mmio copy when
    hvm_copy_to/from_guest_phys() fails is never going to be executed.
    
    This patch therefore adds a check in hvmemul_do_io_addr() to make sure
    mmio <-> mmio is disallowed and then registers standard mmio intercept ops
    in stdvga_init().
    
    With this patch all mmio and portio handled within Xen now goes through
    process_io_intercept().
    
    Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

Tell me if you need more information or want me to test a patch. I do
have test environment at hand.

Wei.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:40 Regression in OSSTest Windows install test case Wei Liu
@ 2015-07-15 14:43 ` Andrew Cooper
  2015-07-15 14:46   ` Wei Liu
  2015-07-16  8:39 ` Paul Durrant
  1 sibling, 1 reply; 14+ messages in thread
From: Andrew Cooper @ 2015-07-15 14:43 UTC (permalink / raw)
  To: Wei Liu, xen-devel; +Cc: Paul Durrant, Jan Beulich

On 15/07/15 15:40, Wei Liu wrote:
> Hi all
>
> The Windows install test case has been failing reliably in OSSTest for
> the last 6 runs.
>
> The issue manifest as Windows hit blue screen with garbled text that
> cannot be recognised when booting. Xen doesn't complain about any
> failures.
>
> I bisected that and found this commit is to be blamed.
>
> commit 3bbaaec09b1b942f5624dee176da6e416d31f982
> Author: Paul Durrant <paul.durrant@citrix.com>
> Date:   Thu Jul 9 19:04:00 2015 +0200
>
>     x86/hvm: unify stdvga mmio intercept with standard mmio intercept
>     
>     It's clear from the following check in hvmemul_rep_movs:
>     
>         if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct ||
>              (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
>             return X86EMUL_UNHANDLEABLE;
>     
>     that mmio <-> mmio copy is not handled. This means the code in the
>     stdvga mmio intercept that explicitly handles mmio <-> mmio copy when
>     hvm_copy_to/from_guest_phys() fails is never going to be executed.
>     
>     This patch therefore adds a check in hvmemul_do_io_addr() to make sure
>     mmio <-> mmio is disallowed and then registers standard mmio intercept ops
>     in stdvga_init().
>     
>     With this patch all mmio and portio handled within Xen now goes through
>     process_io_intercept().
>     
>     Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>     Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
>
> Tell me if you need more information or want me to test a patch. I do
> have test environment at hand.

Given the nature of the patch, I would not be unduly surprised that the
text is garbled.

Which windows and qemu are you using?  We have not encountered a single
failure like this in XenServer testing.

~Andrew

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:43 ` Andrew Cooper
@ 2015-07-15 14:46   ` Wei Liu
  2015-07-15 14:47     ` Paul Durrant
  2015-07-15 14:49     ` Paul Durrant
  0 siblings, 2 replies; 14+ messages in thread
From: Wei Liu @ 2015-07-15 14:46 UTC (permalink / raw)
  To: Andrew Cooper; +Cc: xen-devel, Paul Durrant, Wei Liu, Jan Beulich

On Wed, Jul 15, 2015 at 03:43:09PM +0100, Andrew Cooper wrote:
> On 15/07/15 15:40, Wei Liu wrote:
> > Hi all
> >
> > The Windows install test case has been failing reliably in OSSTest for
> > the last 6 runs.
> >
> > The issue manifest as Windows hit blue screen with garbled text that
> > cannot be recognised when booting. Xen doesn't complain about any
> > failures.
> >
> > I bisected that and found this commit is to be blamed.
> >
> > commit 3bbaaec09b1b942f5624dee176da6e416d31f982
> > Author: Paul Durrant <paul.durrant@citrix.com>
> > Date:   Thu Jul 9 19:04:00 2015 +0200
> >
> >     x86/hvm: unify stdvga mmio intercept with standard mmio intercept
> >     
> >     It's clear from the following check in hvmemul_rep_movs:
> >     
> >         if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct ||
> >              (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
> >             return X86EMUL_UNHANDLEABLE;
> >     
> >     that mmio <-> mmio copy is not handled. This means the code in the
> >     stdvga mmio intercept that explicitly handles mmio <-> mmio copy when
> >     hvm_copy_to/from_guest_phys() fails is never going to be executed.
> >     
> >     This patch therefore adds a check in hvmemul_do_io_addr() to make sure
> >     mmio <-> mmio is disallowed and then registers standard mmio intercept ops
> >     in stdvga_init().
> >     
> >     With this patch all mmio and portio handled within Xen now goes through
> >     process_io_intercept().
> >     
> >     Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> >     Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> >
> > Tell me if you need more information or want me to test a patch. I do
> > have test environment at hand.
> 
> Given the nature of the patch, I would not be unduly surprised that the
> text is garbled.
> 
> Which windows and qemu are you using?  We have not encountered a single
> failure like this in XenServer testing.
> 

win7-x64.iso from OSSTest.

QEMU emulator version 2.2.1, Copyright (c) 2003-2008 Fabrice Bellard


> ~Andrew

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:46   ` Wei Liu
@ 2015-07-15 14:47     ` Paul Durrant
  2015-07-15 14:49     ` Paul Durrant
  1 sibling, 0 replies; 14+ messages in thread
From: Paul Durrant @ 2015-07-15 14:47 UTC (permalink / raw)
  To: Andrew Cooper; +Cc: xen-devel, Wei Liu, Jan Beulich

> -----Original Message-----
> From: Wei Liu [mailto:wei.liu2@citrix.com]
> Sent: 15 July 2015 15:46
> To: Andrew Cooper
> Cc: Wei Liu; xen-devel@lists.xenproject.org; Jan Beulich; Paul Durrant
> Subject: Re: Regression in OSSTest Windows install test case
> 
> On Wed, Jul 15, 2015 at 03:43:09PM +0100, Andrew Cooper wrote:
> > On 15/07/15 15:40, Wei Liu wrote:
> > > Hi all
> > >
> > > The Windows install test case has been failing reliably in OSSTest for
> > > the last 6 runs.
> > >
> > > The issue manifest as Windows hit blue screen with garbled text that
> > > cannot be recognised when booting. Xen doesn't complain about any
> > > failures.
> > >
> > > I bisected that and found this commit is to be blamed.
> > >
> > > commit 3bbaaec09b1b942f5624dee176da6e416d31f982
> > > Author: Paul Durrant <paul.durrant@citrix.com>
> > > Date:   Thu Jul 9 19:04:00 2015 +0200
> > >
> > >     x86/hvm: unify stdvga mmio intercept with standard mmio intercept
> > >
> > >     It's clear from the following check in hvmemul_rep_movs:
> > >
> > >         if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct ||
> > >              (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
> > >             return X86EMUL_UNHANDLEABLE;
> > >
> > >     that mmio <-> mmio copy is not handled. This means the code in the
> > >     stdvga mmio intercept that explicitly handles mmio <-> mmio copy
> when
> > >     hvm_copy_to/from_guest_phys() fails is never going to be executed.
> > >
> > >     This patch therefore adds a check in hvmemul_do_io_addr() to make
> sure
> > >     mmio <-> mmio is disallowed and then registers standard mmio
> intercept ops
> > >     in stdvga_init().
> > >
> > >     With this patch all mmio and portio handled within Xen now goes
> through
> > >     process_io_intercept().
> > >
> > >     Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> > >     Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > >
> > > Tell me if you need more information or want me to test a patch. I do
> > > have test environment at hand.
> >
> > Given the nature of the patch, I would not be unduly surprised that the
> > text is garbled.
> >
> > Which windows and qemu are you using?  We have not encountered a
> single
> > failure like this in XenServer testing.
> >
> 
> win7-x64.iso from OSSTest.
> 
> QEMU emulator version 2.2.1, Copyright (c) 2003-2008 Fabrice Bellard
> 

Ok, could be a bad interaction with upstream QEMU then. I'll try to repro. Most of my dev testing was done with win7 32 bit and upstream QEMU though.

  Paul

> 
> > ~Andrew

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:46   ` Wei Liu
  2015-07-15 14:47     ` Paul Durrant
@ 2015-07-15 14:49     ` Paul Durrant
  2015-07-15 14:54       ` Wei Liu
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Durrant @ 2015-07-15 14:49 UTC (permalink / raw)
  To: Andrew Cooper; +Cc: xen-devel, Wei Liu, Jan Beulich

> -----Original Message-----
> From: Wei Liu [mailto:wei.liu2@citrix.com]
> Sent: 15 July 2015 15:46
> To: Andrew Cooper
> Cc: Wei Liu; xen-devel@lists.xenproject.org; Jan Beulich; Paul Durrant
> Subject: Re: Regression in OSSTest Windows install test case
> 
> On Wed, Jul 15, 2015 at 03:43:09PM +0100, Andrew Cooper wrote:
> > On 15/07/15 15:40, Wei Liu wrote:
> > > Hi all
> > >
> > > The Windows install test case has been failing reliably in OSSTest for
> > > the last 6 runs.
> > >
> > > The issue manifest as Windows hit blue screen with garbled text that
> > > cannot be recognised when booting. Xen doesn't complain about any
> > > failures.
> > >
> > > I bisected that and found this commit is to be blamed.
> > >
> > > commit 3bbaaec09b1b942f5624dee176da6e416d31f982
> > > Author: Paul Durrant <paul.durrant@citrix.com>
> > > Date:   Thu Jul 9 19:04:00 2015 +0200
> > >
> > >     x86/hvm: unify stdvga mmio intercept with standard mmio intercept
> > >
> > >     It's clear from the following check in hvmemul_rep_movs:
> > >
> > >         if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct ||
> > >              (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
> > >             return X86EMUL_UNHANDLEABLE;
> > >
> > >     that mmio <-> mmio copy is not handled. This means the code in the
> > >     stdvga mmio intercept that explicitly handles mmio <-> mmio copy
> when
> > >     hvm_copy_to/from_guest_phys() fails is never going to be executed.
> > >
> > >     This patch therefore adds a check in hvmemul_do_io_addr() to make
> sure
> > >     mmio <-> mmio is disallowed and then registers standard mmio
> intercept ops
> > >     in stdvga_init().
> > >
> > >     With this patch all mmio and portio handled within Xen now goes
> through
> > >     process_io_intercept().
> > >
> > >     Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> > >     Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > >
> > > Tell me if you need more information or want me to test a patch. I do
> > > have test environment at hand.
> >
> > Given the nature of the patch, I would not be unduly surprised that the
> > text is garbled.
> >
> > Which windows and qemu are you using?  We have not encountered a
> single
> > failure like this in XenServer testing.
> >
> 
> win7-x64.iso from OSSTest.
> 
> QEMU emulator version 2.2.1, Copyright (c) 2003-2008 Fabrice Bellard
> 

BTW, does the xl cfg specify cirrus or stdvga?

  Paul

> 
> > ~Andrew

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:49     ` Paul Durrant
@ 2015-07-15 14:54       ` Wei Liu
  2015-07-15 14:55         ` Paul Durrant
  0 siblings, 1 reply; 14+ messages in thread
From: Wei Liu @ 2015-07-15 14:54 UTC (permalink / raw)
  To: Paul Durrant; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, xen-devel

On Wed, Jul 15, 2015 at 03:49:44PM +0100, Paul Durrant wrote:
> > -----Original Message-----
> > From: Wei Liu [mailto:wei.liu2@citrix.com]
> > Sent: 15 July 2015 15:46
> > To: Andrew Cooper
> > Cc: Wei Liu; xen-devel@lists.xenproject.org; Jan Beulich; Paul Durrant
> > Subject: Re: Regression in OSSTest Windows install test case
> > 
> > On Wed, Jul 15, 2015 at 03:43:09PM +0100, Andrew Cooper wrote:
> > > On 15/07/15 15:40, Wei Liu wrote:
> > > > Hi all
> > > >
> > > > The Windows install test case has been failing reliably in OSSTest for
> > > > the last 6 runs.
> > > >
> > > > The issue manifest as Windows hit blue screen with garbled text that
> > > > cannot be recognised when booting. Xen doesn't complain about any
> > > > failures.
> > > >
> > > > I bisected that and found this commit is to be blamed.
> > > >
> > > > commit 3bbaaec09b1b942f5624dee176da6e416d31f982
> > > > Author: Paul Durrant <paul.durrant@citrix.com>
> > > > Date:   Thu Jul 9 19:04:00 2015 +0200
> > > >
> > > >     x86/hvm: unify stdvga mmio intercept with standard mmio intercept
> > > >
> > > >     It's clear from the following check in hvmemul_rep_movs:
> > > >
> > > >         if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct ||
> > > >              (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
> > > >             return X86EMUL_UNHANDLEABLE;
> > > >
> > > >     that mmio <-> mmio copy is not handled. This means the code in the
> > > >     stdvga mmio intercept that explicitly handles mmio <-> mmio copy
> > when
> > > >     hvm_copy_to/from_guest_phys() fails is never going to be executed.
> > > >
> > > >     This patch therefore adds a check in hvmemul_do_io_addr() to make
> > sure
> > > >     mmio <-> mmio is disallowed and then registers standard mmio
> > intercept ops
> > > >     in stdvga_init().
> > > >
> > > >     With this patch all mmio and portio handled within Xen now goes
> > through
> > > >     process_io_intercept().
> > > >
> > > >     Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> > > >     Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > > >
> > > > Tell me if you need more information or want me to test a patch. I do
> > > > have test environment at hand.
> > >
> > > Given the nature of the patch, I would not be unduly surprised that the
> > > text is garbled.
> > >
> > > Which windows and qemu are you using?  We have not encountered a
> > single
> > > failure like this in XenServer testing.
> > >
> > 
> > win7-x64.iso from OSSTest.
> > 
> > QEMU emulator version 2.2.1, Copyright (c) 2003-2008 Fabrice Bellard
> > 
> 
> BTW, does the xl cfg specify cirrus or stdvga?
> 
>   Paul

Here is the config I use (slightly modified from the one in OSSTest). No
setting with regard to video card, so it should be the cirrus.

---
name        = 'win'
memory = 512
vif         = [ 'type=ioemu,mac=5a:36:0e:98:50:33' ]
#
on_poweroff = 'destroy'
on_reboot   = 'preserve'
on_crash    = 'preserve'
#
vcpus = 2
#
kernel      = 'hvmloader'
builder     = 'hvm'
#
disk        = [
                'phy:/dev/DATA/win,hda,w',              
'file:/data/win7-x64.iso,hdc:cdrom,r'
              ]
#
usb=1
usbdevice='tablet'
#
#stdvga=1
keymap='en-gb';
#
sdl=0
opengl=0
vnc=1
vncunused=1
vncdisplay=0
vnclisten='0.0.0.0'

#
#boot = 'dc'
boot = 'c'
device_model_version='qemu-xen'
serial='file:/dev/stderr'

#
viridian=1


> 
> > 
> > > ~Andrew

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:54       ` Wei Liu
@ 2015-07-15 14:55         ` Paul Durrant
  2015-07-15 14:57           ` Wei Liu
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Durrant @ 2015-07-15 14:55 UTC (permalink / raw)
  Cc: Andrew Cooper, Wei Liu, Jan Beulich, xen-devel

> -----Original Message-----
> From: Wei Liu [mailto:wei.liu2@citrix.com]
> Sent: 15 July 2015 15:54
> To: Paul Durrant
> Cc: Wei Liu; Andrew Cooper; xen-devel@lists.xenproject.org; Jan Beulich
> Subject: Re: Regression in OSSTest Windows install test case
> 
> On Wed, Jul 15, 2015 at 03:49:44PM +0100, Paul Durrant wrote:
> > > -----Original Message-----
> > > From: Wei Liu [mailto:wei.liu2@citrix.com]
> > > Sent: 15 July 2015 15:46
> > > To: Andrew Cooper
> > > Cc: Wei Liu; xen-devel@lists.xenproject.org; Jan Beulich; Paul Durrant
> > > Subject: Re: Regression in OSSTest Windows install test case
> > >
> > > On Wed, Jul 15, 2015 at 03:43:09PM +0100, Andrew Cooper wrote:
> > > > On 15/07/15 15:40, Wei Liu wrote:
> > > > > Hi all
> > > > >
> > > > > The Windows install test case has been failing reliably in OSSTest for
> > > > > the last 6 runs.
> > > > >
> > > > > The issue manifest as Windows hit blue screen with garbled text that
> > > > > cannot be recognised when booting. Xen doesn't complain about any
> > > > > failures.
> > > > >
> > > > > I bisected that and found this commit is to be blamed.
> > > > >
> > > > > commit 3bbaaec09b1b942f5624dee176da6e416d31f982
> > > > > Author: Paul Durrant <paul.durrant@citrix.com>
> > > > > Date:   Thu Jul 9 19:04:00 2015 +0200
> > > > >
> > > > >     x86/hvm: unify stdvga mmio intercept with standard mmio
> intercept
> > > > >
> > > > >     It's clear from the following check in hvmemul_rep_movs:
> > > > >
> > > > >         if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct
> ||
> > > > >              (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
> > > > >             return X86EMUL_UNHANDLEABLE;
> > > > >
> > > > >     that mmio <-> mmio copy is not handled. This means the code in
> the
> > > > >     stdvga mmio intercept that explicitly handles mmio <-> mmio copy
> > > when
> > > > >     hvm_copy_to/from_guest_phys() fails is never going to be
> executed.
> > > > >
> > > > >     This patch therefore adds a check in hvmemul_do_io_addr() to
> make
> > > sure
> > > > >     mmio <-> mmio is disallowed and then registers standard mmio
> > > intercept ops
> > > > >     in stdvga_init().
> > > > >
> > > > >     With this patch all mmio and portio handled within Xen now goes
> > > through
> > > > >     process_io_intercept().
> > > > >
> > > > >     Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> > > > >     Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > > > >
> > > > > Tell me if you need more information or want me to test a patch. I do
> > > > > have test environment at hand.
> > > >
> > > > Given the nature of the patch, I would not be unduly surprised that the
> > > > text is garbled.
> > > >
> > > > Which windows and qemu are you using?  We have not encountered a
> > > single
> > > > failure like this in XenServer testing.
> > > >
> > >
> > > win7-x64.iso from OSSTest.
> > >
> > > QEMU emulator version 2.2.1, Copyright (c) 2003-2008 Fabrice Bellard
> > >
> >
> > BTW, does the xl cfg specify cirrus or stdvga?
> >
> >   Paul
> 
> Here is the config I use (slightly modified from the one in OSSTest). No
> setting with regard to video card, so it should be the cirrus.
> 
> ---
> name        = 'win'
> memory = 512

^^^^ Wow. That's ambitious for Windows 7!

  Paul

> vif         = [ 'type=ioemu,mac=5a:36:0e:98:50:33' ]
> #
> on_poweroff = 'destroy'
> on_reboot   = 'preserve'
> on_crash    = 'preserve'
> #
> vcpus = 2
> #
> kernel      = 'hvmloader'
> builder     = 'hvm'
> #
> disk        = [
>                 'phy:/dev/DATA/win,hda,w',
> 'file:/data/win7-x64.iso,hdc:cdrom,r'
>               ]
> #
> usb=1
> usbdevice='tablet'
> #
> #stdvga=1
> keymap='en-gb';
> #
> sdl=0
> opengl=0
> vnc=1
> vncunused=1
> vncdisplay=0
> vnclisten='0.0.0.0'
> 
> #
> #boot = 'dc'
> boot = 'c'
> device_model_version='qemu-xen'
> serial='file:/dev/stderr'
> 
> #
> viridian=1
> 
> 
> >
> > >
> > > > ~Andrew

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:55         ` Paul Durrant
@ 2015-07-15 14:57           ` Wei Liu
  2015-07-15 15:26             ` Fabio Fantoni
  0 siblings, 1 reply; 14+ messages in thread
From: Wei Liu @ 2015-07-15 14:57 UTC (permalink / raw)
  To: Paul Durrant; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, xen-devel

On Wed, Jul 15, 2015 at 03:55:24PM +0100, Paul Durrant wrote:
[...]
> > Here is the config I use (slightly modified from the one in OSSTest). No
> > setting with regard to video card, so it should be the cirrus.
> > 
> > ---
> > name        = 'win'
> > memory = 512
> 
> ^^^^ Wow. That's ambitious for Windows 7!
> 

I notice that too. But the installation seems to finish in a reasonable
time. :-P

Wei.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:57           ` Wei Liu
@ 2015-07-15 15:26             ` Fabio Fantoni
  0 siblings, 0 replies; 14+ messages in thread
From: Fabio Fantoni @ 2015-07-15 15:26 UTC (permalink / raw)
  To: Wei Liu, Paul Durrant; +Cc: Andrew Cooper, Jan Beulich, xen-devel

Il 15/07/2015 16:57, Wei Liu ha scritto:
> On Wed, Jul 15, 2015 at 03:55:24PM +0100, Paul Durrant wrote:
> [...]
>>> Here is the config I use (slightly modified from the one in OSSTest). No
>>> setting with regard to video card, so it should be the cirrus.

Cirrus driver is not available for windows 7, support of it is near 
abandonment in upstream if I remember good what I read one year ago (or 
more) in qemu-devel, is better use stdvga instead in windows >=vista.
A had also strange graphic and performance problem with cirrus on 
windows 7 2-3 years ago, since then I have not set the cirrus on vm 
windows 7.
Try to vga="stdvga"

>>>
>>> ---
>>> name        = 'win'
>>> memory = 512
>> ^^^^ Wow. That's ambitious for Windows 7!
>>
> I notice that too. But the installation seems to finish in a reasonable
> time. :-P

Years ago on my tests system with few ram I tried to decrease ram as 
possible but I saw that with windows 7 (even if 32 bit) with < 1 gb made 
occasional problems that wasted my tests.
About performance for run tests (after windows install even if basic) 2 
gb of ram at least is needed for don't waste large amount of time on 
massive numbers of tests.
I saw many occasional windows tests fail on "[Xen-devel] [xen-unstable 
test] ....: regressions - FAIL" that I was unable to reproduce doing 
same tests (windows install, shutdown, save/restore) and that blocked 
push for days even if I not saw "real bug/regression" was found.
If these are only caused by "bad" xl cfg values rare to find on real 
users domUs I think is bad and should be improved.

>
> Wei.
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-15 14:40 Regression in OSSTest Windows install test case Wei Liu
  2015-07-15 14:43 ` Andrew Cooper
@ 2015-07-16  8:39 ` Paul Durrant
  2015-07-16  9:03   ` Wei Liu
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Durrant @ 2015-07-16  8:39 UTC (permalink / raw)
  To: xen-devel; +Cc: Andrew Cooper, Wei Liu, Jan Beulich

> -----Original Message-----
> From: Wei Liu [mailto:wei.liu2@citrix.com]
> Sent: 15 July 2015 15:40
> To: xen-devel@lists.xenproject.org
> Cc: Wei Liu; Jan Beulich; Andrew Cooper; Paul Durrant
> Subject: Regression in OSSTest Windows install test case
> 
> Hi all
> 
> The Windows install test case has been failing reliably in OSSTest for
> the last 6 runs.
> 
> The issue manifest as Windows hit blue screen with garbled text that
> cannot be recognised when booting. Xen doesn't complain about any
> failures.
> 
> I bisected that and found this commit is to be blamed.
> 
> commit 3bbaaec09b1b942f5624dee176da6e416d31f982
> Author: Paul Durrant <paul.durrant@citrix.com>
> Date:   Thu Jul 9 19:04:00 2015 +0200
> 
>     x86/hvm: unify stdvga mmio intercept with standard mmio intercept
> 
>     It's clear from the following check in hvmemul_rep_movs:
> 
>         if ( sp2mt == p2m_mmio_direct || dp2mt == p2m_mmio_direct ||
>              (sp2mt == p2m_mmio_dm && dp2mt == p2m_mmio_dm) )
>             return X86EMUL_UNHANDLEABLE;
> 
>     that mmio <-> mmio copy is not handled. This means the code in the
>     stdvga mmio intercept that explicitly handles mmio <-> mmio copy when
>     hvm_copy_to/from_guest_phys() fails is never going to be executed.
> 
>     This patch therefore adds a check in hvmemul_do_io_addr() to make sure
>     mmio <-> mmio is disallowed and then registers standard mmio intercept
> ops
>     in stdvga_init().
> 
>     With this patch all mmio and portio handled within Xen now goes through
>     process_io_intercept().
> 
>     Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
>     Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Tell me if you need more information or want me to test a patch. I do
> have test environment at hand.
> 

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.

  Paul


> Wei.

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-16  8:39 ` Paul Durrant
@ 2015-07-16  9:03   ` Wei Liu
  2015-07-16  9:06     ` Paul Durrant
  0 siblings, 1 reply; 14+ messages in thread
From: Wei Liu @ 2015-07-16  9:03 UTC (permalink / raw)
  To: Paul Durrant; +Cc: xen-devel, Wei Liu, Jan Beulich, Andrew Cooper

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.

Tested-by: Wei Liu <wei.liu2@citrix.com>

>   Paul
> 
> 



> > Wei.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-16  9:03   ` Wei Liu
@ 2015-07-16  9:06     ` Paul Durrant
  2015-07-16  9:11       ` Wei Liu
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Durrant @ 2015-07-16  9:06 UTC (permalink / raw)
  Cc: xen-devel, Wei Liu, Jan Beulich, Andrew Cooper

> -----Original Message-----
> From: Wei Liu [mailto:wei.liu2@citrix.com]
> Sent: 16 July 2015 10:03
> To: Paul Durrant
> Cc: Wei Liu; xen-devel@lists.xenproject.org; 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@citrix.com>
> 
> >   Paul
> >
> >
> 
> 
> 
> > > Wei.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-16  9:06     ` Paul Durrant
@ 2015-07-16  9:11       ` Wei Liu
  2015-07-16  9:12         ` Paul Durrant
  0 siblings, 1 reply; 14+ messages in thread
From: Wei Liu @ 2015-07-16  9:11 UTC (permalink / raw)
  To: Paul Durrant; +Cc: xen-devel, Wei Liu, Jan Beulich, Andrew Cooper

On Thu, Jul 16, 2015 at 10:06:35AM +0100, Paul Durrant wrote:
> > -----Original Message-----
> > From: Wei Liu [mailto:wei.liu2@citrix.com]
> > Sent: 16 July 2015 10:03
> > To: Paul Durrant
> > Cc: Wei Liu; xen-devel@lists.xenproject.org; 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?
> 

It works. So again:

 Tested-by: Wei Liu <wei.liu2@citrix.com>

> Cheers,
> 
>   Paul
> 
> > 
> > Tested-by: Wei Liu <wei.liu2@citrix.com>
> > 
> > >   Paul
> > >
> > >
> > 
> > 
> > 
> > > > Wei.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Regression in OSSTest Windows install test case
  2015-07-16  9:11       ` Wei Liu
@ 2015-07-16  9:12         ` Paul Durrant
  0 siblings, 0 replies; 14+ messages in thread
From: Paul Durrant @ 2015-07-16  9:12 UTC (permalink / raw)
  Cc: xen-devel, Wei Liu, Jan Beulich, Andrew Cooper

> -----Original Message-----
> From: Wei Liu [mailto:wei.liu2@citrix.com]
> Sent: 16 July 2015 10:12
> To: Paul Durrant
> Cc: Wei Liu; xen-devel@lists.xenproject.org; Jan Beulich; Andrew Cooper
> Subject: Re: Regression in OSSTest Windows install test case
> 
> On Thu, Jul 16, 2015 at 10:06:35AM +0100, Paul Durrant wrote:
> > > -----Original Message-----
> > > From: Wei Liu [mailto:wei.liu2@citrix.com]
> > > Sent: 16 July 2015 10:03
> > > To: Paul Durrant
> > > Cc: Wei Liu; xen-devel@lists.xenproject.org; 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?
> >
> 
> It works. So again:
> 
>  Tested-by: Wei Liu <wei.liu2@citrix.com>

Excellent. Thanks,

  Paul

> 
> > Cheers,
> >
> >   Paul
> >
> > >
> > > Tested-by: Wei Liu <wei.liu2@citrix.com>
> > >
> > > >   Paul
> > > >
> > > >
> > >
> > >
> > >
> > > > > Wei.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-07-16  9:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-15 14:40 Regression in OSSTest Windows install test case Wei Liu
2015-07-15 14:43 ` Andrew Cooper
2015-07-15 14:46   ` Wei Liu
2015-07-15 14:47     ` Paul Durrant
2015-07-15 14:49     ` Paul Durrant
2015-07-15 14:54       ` Wei Liu
2015-07-15 14:55         ` Paul Durrant
2015-07-15 14:57           ` Wei Liu
2015-07-15 15:26             ` Fabio Fantoni
2015-07-16  8:39 ` Paul Durrant
2015-07-16  9:03   ` Wei Liu
2015-07-16  9:06     ` Paul Durrant
2015-07-16  9:11       ` Wei Liu
2015-07-16  9:12         ` Paul Durrant

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.