[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [xen-unstable test] 122631: trouble: blocked/broken/fail/pass



flight 122631 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/122631/

Failures and problems with tests :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit2     <job status>                 broken
 build-arm64-libvirt             <job status>                 broken
 test-arm64-arm64-xl             <job status>                 broken
 build-arm64-libvirt           4 host-install(4)        broken REGR. vs. 122580
 test-arm64-arm64-xl           4 host-install(4)        broken REGR. vs. 122580
 test-arm64-arm64-examine      5 host-install           broken REGR. vs. 122580
 test-arm64-arm64-xl-xsm         <job status>                 broken  in 122621

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-xl-xsm      4 host-install(4) broken in 122621 pass in 122631
 test-arm64-arm64-xl-credit2   4 host-install(4)          broken pass in 122621
 test-amd64-amd64-pair        21 guest-start/debian         fail pass in 122621
 test-amd64-amd64-xl-xsm      12 guest-start                fail pass in 122621
 test-amd64-i386-xl-xsm       12 guest-start                fail pass in 122621
 test-amd64-amd64-libvirt     18 guest-start/debian.repeat  fail pass in 122621
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-xsm 16 guest-localmigrate/x10 fail 
pass in 122621
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm 18 
guest-start/debianhvm.repeat fail pass in 122621
 test-amd64-amd64-xl-qemuu-ovmf-amd64 18 guest-start/debianhvm.repeat fail pass 
in 122621
 test-amd64-amd64-xl-qemut-ws16-amd64 16 guest-localmigrate/x10 fail pass in 
122621

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stop  fail in 122621 like 122580
 test-arm64-arm64-xl-credit2 13 migrate-support-check fail in 122621 never pass
 test-arm64-arm64-xl-credit2 14 saverestore-support-check fail in 122621 never 
pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-check fail in 122621 never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-check fail in 122621 never 
pass
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stop            fail like 122580
 test-armhf-armhf-libvirt-xsm 14 saverestore-support-check    fail  like 122580
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop             fail like 122580
 test-armhf-armhf-libvirt     14 saverestore-support-check    fail  like 122580
 test-amd64-i386-xl-qemut-win7-amd64 17 guest-stop             fail like 122580
 test-amd64-i386-xl-qemuu-ws16-amd64 17 guest-stop             fail like 122580
 test-armhf-armhf-libvirt-raw 13 saverestore-support-check    fail  like 122580
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stop            fail like 122580
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stop            fail like 122580
 test-amd64-amd64-xl-pvhv2-intel 12 guest-start                 fail never pass
 test-amd64-amd64-xl-pvhv2-amd 12 guest-start                  fail  never pass
 test-amd64-i386-xl-pvshim    12 guest-start                  fail   never pass
 test-amd64-i386-libvirt      13 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     13 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  13 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-armhf-armhf-xl-arndale  13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  14 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-amd64-amd64-qemuu-nested-amd 17 debian-hvm-install/l1/l2  fail never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     14 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-xsm      13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-xsm      14 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          14 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-cubietruck 13 migrate-support-check        fail never pass
 test-armhf-armhf-xl-cubietruck 14 saverestore-support-check    fail never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 14 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt-xsm 13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     13 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      13 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      14 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 12 migrate-support-check        fail   never pass
 test-amd64-i386-xl-qemut-ws16-amd64 17 guest-stop              fail never pass
 test-armhf-armhf-xl-vhd      12 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      13 saverestore-support-check    fail   never pass
 test-amd64-i386-xl-qemuu-win10-i386 10 windows-install         fail never pass
 test-amd64-amd64-xl-qemuu-win10-i386 10 windows-install        fail never pass
 test-amd64-amd64-xl-qemut-win10-i386 10 windows-install        fail never pass
 test-amd64-i386-xl-qemut-win10-i386 10 windows-install         fail never pass

version targeted for testing:
 xen                  e38e285a51c805cfeee4693962df23e39b3c3bd7
baseline version:
 xen                  0306a1311d02ea52b4a9a9bc339f8bab9354c5e3

Last test of basis   122580  2018-05-03 12:11:46 Z    5 days
Failing since        122601  2018-05-04 12:54:03 Z    4 days    3 attempts
Testing same since   122621  2018-05-06 01:06:21 Z    2 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  George Dunlap <george.dunlap@xxxxxxxxxx>
  Jan Beulich <jbeulich@xxxxxxxx>
  Juergen Gross <jgross@xxxxxxxx>
  Olaf Hering <olaf@xxxxxxxxx>
  Wei Liu <wei.liu2@xxxxxxxxxx>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-armhf-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          broken  
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 build-amd64-rumprun                                          pass    
 build-i386-rumprun                                           pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-arm64-arm64-xl                                          broken  
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64-xsm                pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64-xsm                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-xsm                fail    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-xsm                 pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         fail    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-armhf-armhf-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      fail    
 test-arm64-arm64-xl-xsm                                      pass    
 test-armhf-armhf-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                fail    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         fail    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-rumprun-amd64                               pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  broken  
 test-armhf-armhf-xl-credit2                                  pass    
 test-armhf-armhf-xl-cubietruck                               pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     fail    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-i386-rumprun-i386                                 pass    
 test-amd64-amd64-xl-qemut-win10-i386                         fail    
 test-amd64-i386-xl-qemut-win10-i386                          fail    
 test-amd64-amd64-xl-qemuu-win10-i386                         fail    
 test-amd64-i386-xl-qemuu-win10-i386                          fail    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              fail    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-libvirt                                     fail    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        fail    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-amd64-pvgrub                                pass    
 test-amd64-amd64-i386-pvgrub                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-xl-raw                                       pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-arm64-arm64-xl-credit2 broken
broken-job build-arm64-libvirt broken
broken-job test-arm64-arm64-xl broken
broken-step build-arm64-libvirt host-install(4)
broken-step test-arm64-arm64-xl-credit2 host-install(4)
broken-step test-arm64-arm64-xl host-install(4)
broken-step test-arm64-arm64-examine host-install
broken-job test-arm64-arm64-xl-xsm broken
broken-job test-arm64-arm64-xl broken

Not pushing.

------------------------------------------------------------
commit e38e285a51c805cfeee4693962df23e39b3c3bd7
Author: Wei Liu <wei.liu2@xxxxxxxxxx>
Date:   Fri May 4 16:08:04 2018 +0100

    docs: fix xpti command line option doc
    
    Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
    Acked-by: Jan Beulich <jbeulich@xxxxxxxx>

commit 5c81d260c244026ea74632faa3c6d0a00cc76469
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:18 2018 +0200

    xen/x86: use PCID feature
    
    Avoid flushing the complete TLB when switching %cr3 for mitigation of
    Meltdown by using the PCID feature if available.
    
    We are using 4 PCID values for a 64 bit pv domain subject to XPTI and
    2 values for the non-XPTI case:
    
    - guest active and in kernel mode
    - guest active and in user mode
    - hypervisor active and guest in user mode (XPTI only)
    - hypervisor active and guest in kernel mode (XPTI only)
    
    We use PCID only if PCID _and_ INVPCID are supported. With PCID in use
    we disable global pages in cr4. A command line parameter controls in
    which cases PCID is being used.
    
    As the non-XPTI case has shown not to perform better with PCID at least
    on some machines the default is to use PCID only for domains subject to
    XPTI.
    
    With PCID enabled we always disable global pages. This avoids having to
    either flush the complete TLB or do a cycle through all PCID values
    when invalidating a single global page.
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit 1a32c9868711b4ee883ebb6f8807e08d70a920be
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:17 2018 +0200

    xen/x86: add some cr3 helpers
    
    Add some helper macros to access the address and pcid parts of cr3.
    
    Use those helpers where appropriate.
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit a5407c1d8c6c0cac96d3e84e7b2b25b18fa2bf4d
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:16 2018 +0200

    xen/x86: convert pv_guest_cr4_to_real_cr4() to a function
    
    pv_guest_cr4_to_real_cr4() is becoming more and more complex. Convert
    it from a macro to an ordinary function.
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit 065a499f78d5b644fa586e3e66f88949821e4f8c
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:15 2018 +0200

    xen/x86: use flag byte for decision whether xen_cr3 is valid
    
    Today cpu_info->xen_cr3 is either 0 to indicate %cr3 doesn't need to
    be switched on entry to Xen, or negative for keeping the value while
    indicating not to restore %cr3, or positive in case %cr3 is to be
    restored.
    
    Switch to use a flag byte instead of a negative xen_cr3 value in order
    to allow %cr3 values with the high bit set in case we want to keep TLB
    entries when using the PCID feature.
    
    This reduces the number of branches in interrupt handling and results
    in better performance (e.g. parallel make of the Xen hypervisor on my
    system was using about 3% less system time).
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit d543fa409358a9128d3629dcb28daae28c2d150f
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:14 2018 +0200

    xen/x86: disable global pages for domains with XPTI active
    
    Instead of flushing the TLB from global pages when switching address
    spaces with XPTI being active just disable global pages via %cr4
    completely when a domain subject to XPTI is active. This avoids the
    need for extra TLB flushes as loading %cr3 will remove all TLB
    entries.
    
    In order to avoid states with cr3/cr4 having inconsistent values
    (e.g. global pages being activated while cr3 already specifies a XPTI
    address space) move loading of the new cr4 value to write_ptbase()
    (actually to switch_cr3_cr4() called by write_ptbase()).
    
    This requires to use switch_cr3_cr4() instead of write_ptbase() when
    building dom0 in order to avoid setting cr4 with cr4.smap set.
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit 94a992bccdbf656a5a7a0b585c9f140fccc02674
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:13 2018 +0200

    xen/x86: use invpcid for flushing the TLB
    
    If possible use the INVPCID instruction for flushing the TLB instead of
    toggling cr4.pge for that purpose.
    
    While at it remove the dependency on cr4.pge being required for mtrr
    loading, as this will be required later anyway.
    
    Add a command line option "invpcid" for controlling the use of
    INVPCID (default to true).
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit 0d3e7f0b6bf01fbd6250fd3408a22fead1601bf0
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:12 2018 +0200

    xen/x86: support per-domain flag for xpti
    
    Instead of switching XPTI globally on or off add a per-domain flag for
    that purpose. This allows to modify the xpti boot parameter to support
    running dom0 without Meltdown mitigations. Using "xpti=no-dom0" as boot
    parameter will achieve that.
    
    Move the xpti boot parameter handling to xen/arch/x86/pv/domain.c as
    it is pv-domain specific.
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit cda05dcae6732fc9c5b782a97a09b5a0f0dd4b81
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:11 2018 +0200

    xen/x86: add a function for modifying cr3
    
    Instead of having multiple places with more or less identical asm
    statements just have one function doing a write to cr3.
    
    As this function should be named write_cr3() rename the current
    write_cr3() function to switch_cr3().
    
    Suggested-by: Andrew Copper <andrew.cooper3@xxxxxxxxxx>
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit 18173843a573a2691121d34780a011ce1dd5138c
Author: Juergen Gross <jgross@xxxxxxxx>
Date:   Thu Apr 26 13:33:10 2018 +0200

    x86/xpti: avoid copying L4 page table contents when possible
    
    For mitigation of Meltdown the current L4 page table is copied to the
    cpu local root page table each time a 64 bit pv guest is entered.
    
    Copying can be avoided in cases where the guest L4 page table hasn't
    been modified while running the hypervisor, e.g. when handling
    interrupts or any hypercall not modifying the L4 page table or %cr3.
    
    So add a per-cpu flag indicating whether the copying should be
    performed and set that flag only when loading a new %cr3 or modifying
    the L4 page table.  This includes synchronization of the cpu local
    root page table with other cpus, so add a special synchronization flag
    for that case.
    
    A simple performance check (compiling the hypervisor via "make -j 4")
    in dom0 with 4 vcpus shows a significant improvement:
    
    - real time drops from 112 seconds to 103 seconds
    - system time drops from 142 seconds to 131 seconds
    
    Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

commit 4611f529c0e39493a3945641cc161967a864d6b5
Author: Jan Beulich <jbeulich@xxxxxxxx>
Date:   Thu May 3 17:35:51 2018 +0200

    x86: fix return value checks of set_guest_{machinecheck,nmi}_trapbounce
    
    Commit 0142064421 ("x86/traps: move set_guest_{machine,nmi}_trapbounce")
    converted the functions' return types from int to bool without also
    correcting the checks in assembly code: The ABI does not guarantee sub-
    32-bit return values to be promoted to 32 bits.
    
    Take the liberty and also adjust the number of spaces used in the compat
    code, such that both code sequences end up similar (they already are in
    the non-compat case).
    
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Release-acked-by: Juergen Gross <jgross@xxxxxxxx>

commit 9a36de177c16d6423a07ad61f1c7af5274769aae
Author: George Dunlap <george.dunlap@xxxxxxxxxx>
Date:   Tue May 1 18:13:27 2018 +0100

    xen/schedule: Fix races in vcpu migration
    
    The current sequence to initiate vcpu migration is inefficent and 
error-prone:
    
    - The initiator sets VPF_migraging with the lock held, then drops the
      lock and calls vcpu_sleep_nosync(), which immediately grabs the lock
      again
    
    - A number of places unnecessarily check for v->pause_flags in between
      those two
    
    - Every call to vcpu_migrate() must be prefaced with
      vcpu_sleep_nosync() or introduce a race condition; this code
      duplication is error-prone
    
    - In the event that v->is_running is true at the beginning of
      vcpu_migrate(), it's almost certain that vcpu_migrate() will end up
      being called in context_switch() as well; we might as well simply
      let it run there and save the duplicated effort (which will be
      non-negligible).
    
    The result is that Credit1 has several races which result in runqueue
    <-> v->processor invariants being violated (triggering ASSERTs in
    debug builds and strange bugs in production builds).
    
    Instead, introduce vcpu_migrate_start() to initiate the process.
    vcpu_migrate_start() is called with the scheduling lock held.  It not
    only sets VPF_migrating, but also calls vcpu_sleep_nosync_locked()
    (which will automatically do nothing if there's nothing to do).
    
    Rename vcpu_migrate() to vcpu_migrate_finish().  Check for v->is_running and
    pause_flags & VPF_migrating at the top and return if appropriate.
    
    Then the way to initiate migration is consistently:
    
    * Grab lock
    * vcpu_migrate_start()
    * Release lock
    * vcpu_migrate_finish()
    
    Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
    Reviewed-by: Dario Faggioli <dfaggioli@xxxxxxxx>
    Tested-by: Olaf Hering <olaf@xxxxxxxxx>
    Release-acked-by: Juergen Gross <jgross@xxxxxxxx>

commit da0a5e00de8aa93f2a7482d138dbee9dec2aa5c2
Author: George Dunlap <george.dunlap@xxxxxxxxxx>
Date:   Wed May 2 11:09:18 2018 +0100

    xen: Introduce vcpu_sleep_nosync_locked()
    
    There are a lot of places which release a lock before calling
    vcpu_sleep_nosync(), which then just grabs the lock again.  This is
    not only a waste of time, but leads to more code duplication (since
    you have to copy-and-paste recipes rather than calling a unified
    function), which in turn leads to an increased chance of bugs.
    
    Introduce vcpu_sleep_nosync_locked(), which can be called if you
    already hold the schedule lock.
    
    Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
    Reviewed-by: Dario Faggioli <dfaggioli@xxxxxxxx>
    Release-acked-by: Juergen Gross <jgross@xxxxxxxx>

commit 47876e320b65ca31dacf887fd3654f59e9c89810
Author: George Dunlap <george.dunlap@xxxxxxxxxx>
Date:   Wed May 2 11:09:17 2018 +0100

    xen/schedule.c: Fix up whitespace
    
    Delete tabs and trailing whitespace.
    
    No functional change.
    
    Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
    Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
    Release-acked-by: Juergen Gross <jgross@xxxxxxxx>
(qemu changes not included)

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.