[qemu-mainline test] 159483: regressions - FAIL
flight 159483 qemu-mainline real [real] flight 159488 qemu-mainline real-retest [real] http://logs.test-lab.xenproject.org/osstest/logs/159483/ http://logs.test-lab.xenproject.org/osstest/logs/159488/ Regressions :-( Tests which did not succeed and are blocking, including tests which could not be run: test-amd64-amd64-libvirt-vhd 19 guest-start/debian.repeat fail REGR. vs. 152631 test-amd64-amd64-xl-qcow2 21 guest-start/debian.repeat fail REGR. vs. 152631 test-armhf-armhf-xl-vhd 17 guest-start/debian.repeat fail REGR. vs. 152631 Tests which are failing intermittently (not blocking): test-arm64-arm64-xl-seattle 8 xen-bootfail pass in 159488-retest Tests which did not succeed, but are not blocking: test-arm64-arm64-xl-seattle 15 migrate-support-check fail in 159488 never pass test-arm64-arm64-xl-seattle 16 saverestore-support-check fail in 159488 never pass test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stopfail like 152631 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop fail like 152631 test-armhf-armhf-libvirt-raw 15 saverestore-support-checkfail like 152631 test-armhf-armhf-libvirt 16 saverestore-support-checkfail like 152631 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop fail like 152631 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stopfail like 152631 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 152631 test-amd64-i386-xl-pvshim14 guest-start fail never pass test-amd64-amd64-libvirt-xsm 15 migrate-support-checkfail never pass test-amd64-i386-libvirt-xsm 15 migrate-support-checkfail never pass test-amd64-i386-libvirt 15 migrate-support-checkfail never pass test-amd64-amd64-libvirt 15 migrate-support-checkfail never pass test-amd64-amd64-libvirt-vhd 14 migrate-support-checkfail never pass test-arm64-arm64-xl-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-xl-xsm 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-thunderx 15 migrate-support-checkfail never pass test-arm64-arm64-xl 15 migrate-support-checkfail never pass test-arm64-arm64-xl-thunderx 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit1 15 migrate-support-checkfail never pass test-arm64-arm64-xl 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit2 15 migrate-support-checkfail never pass test-arm64-arm64-xl-credit1 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit2 16 saverestore-support-checkfail never pass test-arm64-arm64-libvirt-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-libvirt-xsm 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-arndale 15 migrate-support-checkfail never pass test-armhf-armhf-xl-arndale 16 saverestore-support-checkfail never pass test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass test-armhf-armhf-xl 15 migrate-support-checkfail never pass test-armhf-armhf-xl 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-credit2 15 migrate-support-checkfail never pass test-armhf-armhf-xl-credit2 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-rtds 15 migrate-support-checkfail never pass test-armhf-armhf-xl-rtds 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-vhd 14 migrate-support-checkfail never pass test-armhf-armhf-xl-credit1 15 migrate-support-checkfail never pass test-armhf-armhf-xl-vhd 15 saverestore-support-checkfail never pass test-armhf-armhf-xl-credit1 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-multivcpu 15 migrate-support-checkfail never pass test-armhf-armhf-xl-multivcpu 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-cubietruck 15 migrate-support-checkfail never pass test-armhf-armhf-xl-cubietruck 16 saverestore-support-checkfail never pass test-armhf-armhf-libvirt-raw 14 migrate-support-checkfail never pass test-armhf-armhf-libvirt 15 migrate-support-checkfail never pass version targeted for testing: qemuuce42fe17ad2d2459436fdacbc207df3212a58428 baseline version: qemuu1d806cef0e38b5db8347a8e12f214d543204a314 Last test of basis 152631 2020-08-20 09:07:46 Z 183 days Failing since152659 2020-08-21 14:07:39 Z 182 days 353 attempts Testing same since 159483 2021-02-19 20:59:28 Z0 days1 attempts 420 people touched revis
[linux-linus test] 159484: regressions - trouble: broken/fail/pass
flight 159484 linux-linus real [real] http://logs.test-lab.xenproject.org/osstest/logs/159484/ Regressions :-( Tests which did not succeed and are blocking, including tests which could not be run: test-arm64-arm64-xl-credit1 broken test-amd64-i386-xl-xsm7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-debianhvm-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-ws16-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-qemut-rhel6hvm-intel 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 7 xen-install fail REGR. vs. 152332 test-amd64-i386-qemuu-rhel6hvm-intel 7 xen-install fail REGR. vs. 152332 test-amd64-i386-libvirt 7 xen-install fail REGR. vs. 152332 test-amd64-i386-examine 6 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-debianhvm-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-ws16-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-qemut-rhel6hvm-amd 7 xen-installfail REGR. vs. 152332 test-amd64-i386-qemuu-rhel6hvm-amd 7 xen-installfail REGR. vs. 152332 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-libvirt-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl7 xen-install fail REGR. vs. 152332 test-amd64-i386-pair 10 xen-install/src_host fail REGR. vs. 152332 test-amd64-coresched-i386-xl 7 xen-install fail REGR. vs. 152332 test-amd64-i386-pair 11 xen-install/dst_host fail REGR. vs. 152332 test-amd64-i386-freebsd10-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-raw7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-pvshim 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-debianhvm-i386-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-shadow 7 xen-install fail REGR. vs. 152332 test-amd64-i386-freebsd10-i386 7 xen-installfail REGR. vs. 152332 test-amd64-i386-xl-qemut-win7-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-win7-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-ovmf-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-libvirt-pair 10 xen-install/src_host fail REGR. vs. 152332 test-amd64-i386-libvirt-pair 11 xen-install/dst_host fail REGR. vs. 152332 test-arm64-arm64-examine 13 examine-iommufail REGR. vs. 152332 test-amd64-amd64-amd64-pvgrub 20 guest-stop fail REGR. vs. 152332 test-amd64-amd64-i386-pvgrub 20 guest-stop fail REGR. vs. 152332 test-arm64-arm64-xl-xsm 12 debian-install fail in 159367 REGR. vs. 152332 test-arm64-arm64-xl-credit2 12 debian-install fail in 159440 REGR. vs. 152332 test-arm64-arm64-xl-credit1 10 host-ping-check-xen fail in 159463 REGR. vs. 152332 test-arm64-arm64-xl 12 debian-install fail in 159463 REGR. vs. 152332 Tests which are failing intermittently (not blocking): test-amd64-amd64-i386-pvgrub 19 guest-localmigrate/x10 fail in 159367 pass in 159484 test-arm64-arm64-xl-xsm 10 host-ping-check-xen fail in 159413 pass in 159367 test-arm64-arm64-libvirt-xsm 10 host-ping-check-xen fail in 159413 pass in 159440 test-arm64-arm64-xl 10 host-ping-check-xen fail in 159413 pass in 159463 test-arm64-arm64-xl-seattle 8 xen-boot fail in 159413 pass in 159484 test-arm64-arm64-xl-credit1 8 xen-boot fail in 159440 pass in 159463 test-arm64-arm64-examine 8 reboot fail in 159440 pass in 159484 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail in 159440 pass in 159484 test-arm64-arm64-xl-xsm 8 xen-boot fail pass in 159413 test-arm64-arm64-libvirt-xsm 8 xen-boot fail pass in 159440 test-arm64-arm64-xl-credit2 8 xen-boot fail pass in 159440 test-arm64-arm64-xl 8 xen-boot fail pass in 159463 test-arm64-arm64-xl-seattle 10 host-ping-check-xenfail pass in 159463 Tests which did not succeed, but are not blocking: test-arm64-arm64-xl-credit1 5 host-install(5) broken blocked in 152332 test-arm64-arm64-xl 11 leak-check/basis(11) fail in 159367 blocked in 152332 test-arm64-arm64-xl-credit2 11 leak-check/basis(11) fail in 159367 blocked in 152332 test-armhf-armhf-xl-rtds 18 guest-start/debian.repeat fail in 159413 like 152332 test-arm64-arm64-libvirt-xsm 11 leak-check/basis(11) fail in 159440 blo
Re: [PATCH v3 2/8] xen/events: don't unmask an event channel when an eoi is pending
Hi Juergen, On 19/02/2021 15:40, Juergen Gross wrote: An event channel should be kept masked when an eoi is pending for it. When being migrated to another cpu it might be unmasked, though. In order to avoid this keep three different flags for each event channel to be able to distinguish "normal" masking/unmasking from eoi related masking/unmasking and temporary masking. The event channel should only be able to generate an interrupt if all flags are cleared. Cc: sta...@vger.kernel.org Fixes: 54c9de89895e0a36047 ("xen/events: add a new late EOI evtchn framework") Reported-by: Julien Grall Signed-off-by: Juergen Gross Reviewed-by: Julien Grall Cheers, -- Julien Grall
Re: [PATCH v3 3/8] xen/events: avoid handling the same event on two cpus at the same time
Hi Juergen, On 19/02/2021 15:40, Juergen Gross wrote: When changing the cpu affinity of an event it can happen today that (with some unlucky timing) the same event will be handled on the old and the new cpu at the same time. Avoid that by adding an "event active" flag to the per-event data and call the handler only if this flag isn't set. Cc: sta...@vger.kernel.org Reported-by: Julien Grall Signed-off-by: Juergen Gross Reviewed-by: Julien Grall Cheers, -- Julien Grall
[PATCH for-4.15] xen/vgic: Implement write to ISPENDR in vGICv{2, 3}
From: Julien Grall Currently, Xen will send a data abort to a guest trying to write to the ISPENDR. Unfortunately, recent version of Linux (at least 5.9+) will start writing to the register if the interrupt needs to be re-triggered (see the callback irq_retrigger). This can happen when a driver (such as the xgbe network driver on AMD Seattle) re-enable an interrupt: (XEN) d0v0: vGICD: unhandled word write 0x000400 to ISPENDR44 [...] [ 25.635837] Unhandled fault at 0x80001000522c [...] [ 25.818716] gic_retrigger+0x2c/0x38 [ 25.822361] irq_startup+0x78/0x138 [ 25.825920] __enable_irq+0x70/0x80 [ 25.829478] enable_irq+0x50/0xa0 [ 25.832864] xgbe_one_poll+0xc8/0xd8 [ 25.836509] net_rx_action+0x110/0x3a8 [ 25.840328] __do_softirq+0x124/0x288 [ 25.844061] irq_exit+0xe0/0xf0 [ 25.847272] __handle_domain_irq+0x68/0xc0 [ 25.851442] gic_handle_irq+0xa8/0xe0 [ 25.855171] el1_irq+0xb0/0x180 [ 25.858383] arch_cpu_idle+0x18/0x28 [ 25.862028] default_idle_call+0x24/0x5c [ 25.866021] do_idle+0x204/0x278 [ 25.869319] cpu_startup_entry+0x24/0x68 [ 25.873313] rest_init+0xd4/0xe4 [ 25.876611] arch_call_rest_init+0x10/0x1c [ 25.880777] start_kernel+0x5b8/0x5ec As a consequence, the OS may become unusable. Implementing the write part of ISPENDR is somewhat easy. For virtual interrupt, we only need to inject the interrupt again. For physical interrupt, we need to be more careful as the de-activation of the virtual interrupt will be propagated to the physical distributor. For simplicity, the physical interrupt will be set pending so the workflow will not differ from a "real" interrupt. Longer term, we could possible directly activate the physical interrupt and avoid taking an exception to inject the interrupt to the domain. (This is the approach taken by the new vGIC based on KVM). Signed-off-by: Julien Grall --- Note that this doesn't touch the read part for I{S,C}PENDR nor the write part of ICPENDR because they are more complex to implement. For physical interrupt, I didn't implement the same solution as KVM because I couldn't convince myself this could be done race free for physical interrupt. This was tested using the IRQ debugfs (CONFIG_GENERIC_IRQ_DEBUGFS=y) which allows to retrigger an interrupt: 42sh> echo trigger > /sys/kernel/debug/irq/irqs/ This patch is candidate for 4.15 and also backporting to older trees. Without this patch, recent Linux version may not boot on Xen on some platforms (such as AMD Seattle used in OssTest). The patch is self-contained to implementing a single set of registers. So this would not introduce any risk on platforms where OSes don't use those registers. For the other setup (e.g. AMD Seattle + Linux 5.9+), it cannot be worse than today. So therefore, I would consider the risk limited. --- xen/arch/arm/vgic-v2.c | 10 xen/arch/arm/vgic-v3.c | 18 ++- xen/arch/arm/vgic.c| 47 ++ xen/include/asm-arm/vgic.h | 2 ++ 4 files changed, 62 insertions(+), 15 deletions(-) diff --git a/xen/arch/arm/vgic-v2.c b/xen/arch/arm/vgic-v2.c index 64b141fea586..b2da886adc18 100644 --- a/xen/arch/arm/vgic-v2.c +++ b/xen/arch/arm/vgic-v2.c @@ -472,10 +472,12 @@ static int vgic_v2_distr_mmio_write(struct vcpu *v, mmio_info_t *info, case VRANGE32(GICD_ISPENDR, GICD_ISPENDRN): if ( dabt.size != DABT_WORD ) goto bad_width; -printk(XENLOG_G_ERR - "%pv: vGICD: unhandled word write %#"PRIregister" to ISPENDR%d\n", - v, r, gicd_reg - GICD_ISPENDR); -return 0; +rank = vgic_rank_offset(v, 1, gicd_reg - GICD_ISPENDR, DABT_WORD); +if ( rank == NULL ) goto write_ignore; + +vgic_set_irqs_pending(v, r, rank->index); + +return 1; case VRANGE32(GICD_ICPENDR, GICD_ICPENDRN): if ( dabt.size != DABT_WORD ) goto bad_width; diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c index fd8cfc156d0c..613f37abab5e 100644 --- a/xen/arch/arm/vgic-v3.c +++ b/xen/arch/arm/vgic-v3.c @@ -808,10 +808,12 @@ static int __vgic_v3_distr_common_mmio_write(const char *name, struct vcpu *v, case VRANGE32(GICD_ISPENDR, GICD_ISPENDRN): if ( dabt.size != DABT_WORD ) goto bad_width; -printk(XENLOG_G_ERR - "%pv: %s: unhandled word write %#"PRIregister" to ISPENDR%d\n", - v, name, r, reg - GICD_ISPENDR); -return 0; +rank = vgic_rank_offset(v, 1, reg - GICD_ISPENDR, DABT_WORD); +if ( rank == NULL ) goto write_ignore; + +vgic_set_irqs_pending(v, r, rank->index); + +return 1; case VRANGE32(GICD_ICPENDR, GICD_ICPENDRN): if ( dabt.size != DABT_WORD ) goto bad_width; @@ -975,6 +977,7 @@ static int vgic_v3_rdistr_sgi_mmio_write(struct vcpu *v, mmio_info_t *info, case VREG32(GICR_ICACTIVER0): case VREG32(GICR_ICFGR1): case VRANGE32(GICR_IPRIORITYR0, GICR_IPRIORITYR7): +
Re: [ANNOUNCE] Xen 4.15 - hard codefreeze today
On Fri, 2021-02-19 at 16:47 +, Ian Jackson wrote: > > OPEN ISSUES AND BLOCKERS > > > F. BUG: credit=sched2 machine hang when using DRAKVUF > > Information from > Dario Faggioli > References > https://lists.xen.org/archives/html/xen-devel/2020-05/msg01985.html > > https://lists.xenproject.org/archives/html/xen-devel/2020-10/msg01561.html > https://bugzilla.opensuse.org/show_bug.cgi?id=1179246 > > Quoting Dario: > > Manifests only with certain combination of hardware and workload. > > I'm not reproducing, but there are multiple reports of it (see > > above). I'm investigating and trying to come up at least with > > debug patches that one of the reporter should be able and willing > > to > > test. > > Dario is working on this. Last update 29.1.21 ? > Yep. A have a few more insights about it, but still not sure about a few things. I'll try to give a more detailed update on Mon or Tue > G. Null scheduler and vwfi native problem > > Information from > Dario Faggioli > > References > > https://lists.xenproject.org/archives/html/xen-devel/2021-01/msg01634.html > > Quoting Dario: > > RCU issues, but manifests due to scheduler behavior (especially > > NULL scheduler, especially on ARM). > > > > Patches that should solve the issue for ARM posted already. They > > will need to be slightly adjusted to cover x86 as well. > > As of last update from Dario 29.1.21: > waiting for test report from submitter. > Report recently arrived and was positive. The issue, on ARM, is solved by the patches sent to him. I've done the x86 bits of those patches, but am still debugging an error I have with them applied. It probably make sense for me to properly submit the two patches that fix the problem on ARM right away (the x86 part would be in its own patch anyway). Thanks and Regards -- Dario Faggioli, Ph.D http://about.me/dario.faggioli Virtualization Software Engineer SUSE Labs, SUSE https://www.suse.com/ --- <> (Raistlin Majere) signature.asc Description: This is a digitally signed message part
Re: ISPENDR implementation (WAS Re: [linux-linus test] 159463: regressions - FAIL)
On 19/02/2021 23:12, Julien Grall wrote: Hi all, On Fri, 19 Feb 2021 at 22:19, osstest service owner wrote: flight 159463 linux-linus real [real] http://logs.test-lab.xenproject.org/osstest/logs/159463/ [...] test-arm64-arm64-xl-seattle fail [...] test-arm64-arm64-xl-thunderx pass While looking at the log to check whether we fixed the Arm bug, I noticed that Linux will boot on Thunder-X but not Seattle. From the log: (XEN) d0v3: vGICD: unhandled word write 0x002000 to ISPENDR44 Feb 18 17:01:19.426532 (XEN) traps.c:2013:d0v3 HSR=0x93820047 pc=0x8000104aec2c gva=0x80001000522c gpa=0x00e111022c [...] Feb 18 17:01:19.618568 [ 27.097702] Call trace: Feb 18 17:01:19.618612 [ 27.100215] gic_retrigger+0x2c/0x38 Feb 18 17:01:19.630516 [ 27.103861] irq_startup+0x78/0x138 Feb 18 17:01:19.630575 [ 27.107419] __enable_irq+0x70/0x80 Feb 18 17:01:19.630622 [ 27.110978] enable_irq+0x50/0xa0 Feb 18 17:01:19.642499 [ 27.114363] xgbe_one_poll+0xc8/0xd8 Feb 18 17:01:19.642558 [ 27.118009] net_rx_action+0x110/0x3a8 Feb 18 17:01:19.642605 [ 27.121828] __do_softirq+0x124/0x288 Feb 18 17:01:19.654496 [ 27.125560] irq_exit+0xe0/0xf0 Feb 18 17:01:19.654555 [ 27.128772] __handle_domain_irq+0x68/0xc0 Feb 18 17:01:19.654603 [ 27.132939] gic_handle_irq+0xa8/0xe0 Feb 18 17:01:19.654647 [ 27.136671] el1_irq+0xb0/0x180 Feb 18 17:01:19.666482 [ 27.139883] arch_cpu_idle+0x18/0x28 Feb 18 17:01:19.666540 [ 27.143528] default_idle_call+0x24/0x5c Feb 18 17:01:19.666587 [ 27.147524] do_idle+0x204/0x278 Feb 18 17:01:19.678517 [ 27.150819] cpu_startup_entry+0x24/0x68 Feb 18 17:01:19.678577 [ 27.154812] secondary_start_kernel+0x174/0x188 Feb 18 17:01:19.678625 [ 27.159415] Code: f9409063 d37e6821 91080021 8b010061 (b922) Feb 18 17:01:19.690480 [ 27.165582] ---[ end trace a7aadb3ae629b57f ]--- It looks like that Linux will now try to set the interrupt pending by writing ISPENDR when the interrupt is re-enabled. I think the ISPENDR write emulation is easier to implement compare to the other missing IS{PENDR, ACTIVER). It should be possible to emulate as follows: 1) For virtual interrupts, just call vgic_inject_irq() 2) For physical interrupts, set pending at the HW level. This will raise an interrupt that will call vgic_inject_irq(). The vGIC in KVM will directly set the physical interrupt active to avoid the round trip. But I am not sure we can do it safely in our current vGIC to avoid the guest de-activating the interrupt too early (the virtual interrupt may already be pending/active). Any thoughts? I have posted a patch [1]. This should help to discuss about the approach taken. Cheers, [1] https://lore.kernel.org/xen-devel/20210220140412.31610-1-jul...@xen.org/T/#u -- Julien Grall
[xen-unstable test] 159487: regressions - FAIL
flight 159487 xen-unstable real [real] http://logs.test-lab.xenproject.org/osstest/logs/159487/ Regressions :-( Tests which did not succeed and are blocking, including tests which could not be run: test-xtf-amd64-amd64-5 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-xl-qemut-ws16-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-debianhvm-amd64 8 xen-boot fail REGR. vs. 159475 test-xtf-amd64-amd64-1 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-xtf-amd64-amd64-2 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-libvirt-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-qemut-rhel6hvm-intel 8 xen-boot fail REGR. vs. 159475 test-xtf-amd64-amd64-3 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-coresched-i386-xl 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-raw8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemut-debianhvm-amd64 8 xen-boot fail REGR. vs. 159475 test-xtf-amd64-amd64-4 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-xl-shadow 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-qemut-rhel6hvm-amd 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemut-debianhvm-i386-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-ovmf-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-libvirt-pair 12 xen-boot/src_hostfail REGR. vs. 159475 test-amd64-i386-libvirt-pair 13 xen-boot/dst_hostfail REGR. vs. 159475 test-amd64-i386-migrupgrade 13 xen-boot/dst_hostfail REGR. vs. 159475 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-xsm8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl8 xen-boot fail REGR. vs. 159475 test-amd64-i386-qemuu-rhel6hvm-amd 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-examine 8 reboot fail REGR. vs. 159475 test-amd64-i386-livepatch 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemut-win7-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-qemuu-rhel6hvm-intel 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-libvirt 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-freebsd10-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-freebsd10-i386 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-win7-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-pvshim 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-ws16-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-pair 12 xen-boot/src_hostfail REGR. vs. 159475 test-amd64-i386-pair 13 xen-boot/dst_hostfail REGR. vs. 159475 Tests which did not succeed, but are not blocking: test-armhf-armhf-libvirt 16 saverestore-support-checkfail like 159475 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 159475 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stopfail like 159475 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stopfail like 159475 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stopfail like 159475 test-armhf-armhf-libvirt-raw 15 saverestore-support-checkfail like 159475 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stopfail like 159475 test-armhf-armhf-xl-vhd 20 leak-check/check fail like 159475 test-arm64-arm64-xl-seattle 15 migrate-support-checkfail never pass test-arm64-arm64-xl-seattle 16 saverestore-support-checkfail never pass test-arm64-arm64-xl 15 migrate-support-checkfail never pass test-arm64-arm64-xl 16 saverestore-support-checkfail never pass test-amd64-amd64-libvirt-xsm 15 migrate-support-checkfail never pass test-amd64-amd64-libvirt 15 migrate-support-checkfail never pass test-arm64-arm64-xl-credit2 15 migrate-support-checkfail never pass test-arm64-arm64-xl-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-xl-credit2 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-xsm 16 saverestore-support-checkfail never pass test-arm64-arm64-libvirt-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-libvirt-xsm 16 saverestore-support-checkfail never pass te
[PATCH for-next] xen/arm: mm: flush_page_to_ram() only need to clean to PoC
From: Julien Grall At the moment, flush_page_to_ram() is both cleaning and invalidate to PoC the page. However, the cache line can be speculated and pull in the cache right after as it is part of the direct map. So it is pointless to try to invalidate the line in the data cache. Signed-off-by: Julien Grall --- xen/arch/arm/mm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c index 59f8a3f15fd1..2f11d214e184 100644 --- a/xen/arch/arm/mm.c +++ b/xen/arch/arm/mm.c @@ -529,7 +529,7 @@ void flush_page_to_ram(unsigned long mfn, bool sync_icache) { void *v = map_domain_page(_mfn(mfn)); -clean_and_invalidate_dcache_va_range(v, PAGE_SIZE); +clean_dcache_va_range(v, PAGE_SIZE); unmap_domain_page(v); /* -- 2.17.1
[PATCH for-4.15] xen/sched: Add missing memory barrier in vcpu_block()
From: Julien Grall The comment in vcpu_block() states that the events should be checked /after/ blocking to avoids wakeup waiting race. However, from a generic perspective, set_bit() doesn't prevent re-ordering. So the following could happen: CPU0 (blocking vCPU A) | CPU1 ( unblock vCPU A) | A <- read local events | | set local events | test_and_clear_bit(_VPF_blocked) | -> Bail out as the bit if not set | set_bit(_VFP_blocked) | | check A | The variable A will be 0 and therefore the vCPU will be blocked when it should continue running. vcpu_block() is now gaining an smp_mb__after_atomic() to prevent the CPU to read any information about local events before the flag _VPF_blocked is set. Signed-off-by: Julien Grall --- This is a follow-up of the discussion that started in 2019 (see [1]) regarding a possible race between do_poll()/vcpu_unblock() and the wake up path. I haven't yet fully thought about the potential race in do_poll(). If there is, then this would likely want to be fixed in a separate patch. On x86, the current code is safe because set_bit() is fully ordered. SO the problem is Arm (and potentially any new architectures). I couldn't convince myself whether the Arm implementation of local_events_need_delivery() contains enough barrier to prevent the re-ordering. However, I don't think we want to play with devil here as the function may be optimized in the future. This patch is candidate for 4.15. The risk is really small as the memory ordering will be stricter on Arm and therefore less racy. [1] <3ce4998b-a8a8-37bd-bb26-955057170...@suse.com> --- xen/common/sched/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 9745a77eee23..2b974fd6f8ba 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -1418,6 +1418,8 @@ void vcpu_block(void) set_bit(_VPF_blocked, &v->pause_flags); +smp_mb__after_atomic(); + arch_vcpu_block(v); /* Check for events /after/ blocking: avoids wakeup waiting race. */ -- 2.17.1
[qemu-mainline test] 159489: regressions - FAIL
flight 159489 qemu-mainline real [real] flight 159495 qemu-mainline real-retest [real] http://logs.test-lab.xenproject.org/osstest/logs/159489/ http://logs.test-lab.xenproject.org/osstest/logs/159495/ Regressions :-( Tests which did not succeed and are blocking, including tests which could not be run: test-amd64-amd64-libvirt-vhd 19 guest-start/debian.repeat fail REGR. vs. 152631 test-amd64-amd64-xl-qcow2 21 guest-start/debian.repeat fail REGR. vs. 152631 test-armhf-armhf-xl-vhd 17 guest-start/debian.repeat fail REGR. vs. 152631 Tests which did not succeed, but are not blocking: test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stopfail like 152631 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop fail like 152631 test-armhf-armhf-libvirt-raw 15 saverestore-support-checkfail like 152631 test-armhf-armhf-libvirt 16 saverestore-support-checkfail like 152631 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop fail like 152631 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stopfail like 152631 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 152631 test-arm64-arm64-xl-seattle 15 migrate-support-checkfail never pass test-arm64-arm64-xl-seattle 16 saverestore-support-checkfail never pass test-amd64-amd64-libvirt-xsm 15 migrate-support-checkfail never pass test-amd64-i386-libvirt-xsm 15 migrate-support-checkfail never pass test-amd64-i386-libvirt 15 migrate-support-checkfail never pass test-amd64-i386-xl-pvshim14 guest-start fail never pass test-amd64-amd64-libvirt 15 migrate-support-checkfail never pass test-amd64-amd64-libvirt-vhd 14 migrate-support-checkfail never pass test-arm64-arm64-xl-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-xl-xsm 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-thunderx 15 migrate-support-checkfail never pass test-arm64-arm64-xl 15 migrate-support-checkfail never pass test-arm64-arm64-xl-thunderx 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit1 15 migrate-support-checkfail never pass test-arm64-arm64-xl 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit2 15 migrate-support-checkfail never pass test-arm64-arm64-xl-credit1 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit2 16 saverestore-support-checkfail never pass test-arm64-arm64-libvirt-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-libvirt-xsm 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-arndale 15 migrate-support-checkfail never pass test-armhf-armhf-xl-arndale 16 saverestore-support-checkfail never pass test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass test-armhf-armhf-xl 15 migrate-support-checkfail never pass test-armhf-armhf-xl 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-credit2 15 migrate-support-checkfail never pass test-armhf-armhf-xl-credit2 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-rtds 15 migrate-support-checkfail never pass test-armhf-armhf-xl-rtds 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-credit1 15 migrate-support-checkfail never pass test-armhf-armhf-xl-vhd 14 migrate-support-checkfail never pass test-armhf-armhf-xl-credit1 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-vhd 15 saverestore-support-checkfail never pass test-armhf-armhf-xl-multivcpu 15 migrate-support-checkfail never pass test-armhf-armhf-xl-multivcpu 16 saverestore-support-checkfail never pass test-armhf-armhf-xl-cubietruck 15 migrate-support-checkfail never pass test-armhf-armhf-xl-cubietruck 16 saverestore-support-checkfail never pass test-armhf-armhf-libvirt-raw 14 migrate-support-checkfail never pass test-armhf-armhf-libvirt 15 migrate-support-checkfail never pass version targeted for testing: qemuue90ef02389dc8b57eaea22b290244609d720a8bf baseline version: qemuu1d806cef0e38b5db8347a8e12f214d543204a314 Last test of basis 152631 2020-08-20 09:07:46 Z 184 days Failing since152659 2020-08-21 14:07:39 Z 183 days 354 attempts Testing same since 159489 2021-02-20 09:11:13 Z0 days1 attempts 420 people touched revisions under test, not listing them all jobs: build-amd64-xsm pass build-arm64-xsm
Re: [PATCH v3 8/8] xen/evtchn: use READ/WRITE_ONCE() for accessing ring indices
On 2/19/21 10:40 AM, Juergen Gross wrote: > For avoiding read- and write-tearing by the compiler use READ_ONCE() > and WRITE_ONCE() for accessing the ring indices in evtchn.c. > > Signed-off-by: Juergen Gross Reviewed-by: Boris Ostrovsky
[PATCH for-4.15] tools/misc/xen-vmtrace: use reset and enable
The expected behavior while using xen-vmtrace is to get a clean start, even if the tool was used previously on the same VM. Signed-off-by: Tamas K Lengyel --- tools/misc/xen-vmtrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/misc/xen-vmtrace.c b/tools/misc/xen-vmtrace.c index 7572e880c5..35d14c6a9b 100644 --- a/tools/misc/xen-vmtrace.c +++ b/tools/misc/xen-vmtrace.c @@ -119,7 +119,7 @@ int main(int argc, char **argv) goto out; } -if ( xc_vmtrace_enable(xch, domid, vcpu) ) +if ( xc_vmtrace_reset_and_enable(xch, domid, vcpu) ) { perror("xc_vmtrace_enable()"); goto out; -- 2.27.0
[ovmf test] 159493: all pass - PUSHED
flight 159493 ovmf real [real] http://logs.test-lab.xenproject.org/osstest/logs/159493/ Perfect :-) All tests in this flight passed as required version targeted for testing: ovmf 44ae214591e58af468eacb7b873eaa0bc187c4fa baseline version: ovmf 4f4d862c1c7232a18347616d94c343c929657fdb Last test of basis 159394 2021-02-15 23:39:45 Z4 days Testing same since 159493 2021-02-20 17:09:42 Z0 days1 attempts People who touched revisions under test: Samer El-Haj-Mahmoud jobs: build-amd64-xsm pass build-i386-xsm pass build-amd64 pass build-i386 pass build-amd64-libvirt pass build-i386-libvirt pass build-amd64-pvopspass build-i386-pvops pass test-amd64-amd64-xl-qemuu-ovmf-amd64 pass test-amd64-i386-xl-qemuu-ovmf-amd64 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 Pushing revision : To xenbits.xen.org:/home/xen/git/osstest/ovmf.git 4f4d862c1c..44ae214591 44ae214591e58af468eacb7b873eaa0bc187c4fa -> xen-tested-master
[linux-linus test] 159490: regressions - trouble: broken/fail/pass
flight 159490 linux-linus real [real] http://logs.test-lab.xenproject.org/osstest/logs/159490/ Regressions :-( Tests which did not succeed and are blocking, including tests which could not be run: test-arm64-arm64-xl-xsm broken test-arm64-arm64-xl-credit1 broken in 159484 test-amd64-i386-xl-xsm7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-debianhvm-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-ws16-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-qemut-rhel6hvm-intel 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 7 xen-install fail REGR. vs. 152332 test-amd64-i386-qemuu-rhel6hvm-intel 7 xen-install fail REGR. vs. 152332 test-amd64-i386-libvirt 7 xen-install fail REGR. vs. 152332 test-amd64-i386-examine 6 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-debianhvm-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-ws16-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-qemuu-rhel6hvm-amd 7 xen-installfail REGR. vs. 152332 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-libvirt-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-qemut-rhel6hvm-amd 7 xen-installfail REGR. vs. 152332 test-amd64-i386-xl7 xen-install fail REGR. vs. 152332 test-amd64-i386-pair 10 xen-install/src_host fail REGR. vs. 152332 test-amd64-coresched-i386-xl 7 xen-install fail REGR. vs. 152332 test-amd64-i386-pair 11 xen-install/dst_host fail REGR. vs. 152332 test-amd64-i386-freebsd10-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-raw7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-pvshim 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-debianhvm-i386-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-shadow 7 xen-install fail REGR. vs. 152332 test-amd64-i386-freebsd10-i386 7 xen-installfail REGR. vs. 152332 test-amd64-i386-xl-qemut-win7-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-win7-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemuu-ovmf-amd64 7 xen-install fail REGR. vs. 152332 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm 7 xen-install fail REGR. vs. 152332 test-amd64-i386-libvirt-pair 10 xen-install/src_host fail REGR. vs. 152332 test-amd64-i386-libvirt-pair 11 xen-install/dst_host fail REGR. vs. 152332 test-arm64-arm64-examine 13 examine-iommufail REGR. vs. 152332 test-amd64-amd64-amd64-pvgrub 20 guest-stop fail REGR. vs. 152332 test-amd64-amd64-i386-pvgrub 20 guest-stop fail REGR. vs. 152332 test-arm64-arm64-xl-xsm 12 debian-install fail in 159367 REGR. vs. 152332 test-arm64-arm64-xl-credit2 12 debian-install fail in 159440 REGR. vs. 152332 test-arm64-arm64-xl 12 debian-install fail in 159463 REGR. vs. 152332 Tests which are failing intermittently (not blocking): test-amd64-amd64-i386-pvgrub 19 guest-localmigrate/x10 fail in 159367 pass in 159490 test-arm64-arm64-xl-xsm 10 host-ping-check-xen fail in 159413 pass in 159367 test-arm64-arm64-libvirt-xsm 10 host-ping-check-xen fail in 159413 pass in 159440 test-arm64-arm64-xl 10 host-ping-check-xen fail in 159413 pass in 159463 test-arm64-arm64-xl-credit2 8 xen-boot fail in 159413 pass in 159490 test-arm64-arm64-xl-xsm 8 xen-boot fail in 159440 pass in 159413 test-arm64-arm64-examine 8 reboot fail in 159440 pass in 159490 test-arm64-arm64-xl-credit1 8 xen-boot fail in 159440 pass in 159490 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail in 159440 pass in 159490 test-arm64-arm64-xl-credit1 10 host-ping-check-xen fail in 159463 pass in 159490 test-arm64-arm64-xl-seattle 10 host-ping-check-xen fail in 159484 pass in 159463 test-arm64-arm64-libvirt-xsm 8 xen-boot fail pass in 159440 test-arm64-arm64-xl 8 xen-boot fail pass in 159463 test-arm64-arm64-xl-seattle 8 xen-boot fail pass in 159484 Tests which did not succeed, but are not blocking: test-arm64-arm64-xl-xsm 5 host-install(5) broken blocked in 152332 test-arm64-arm64-xl-credit1 5 host-install(5) broken in 159484 blocked in 152332 test-arm64-arm64-xl-credit1 11 leak-check/basis(11)fail blocked in 152332 test-arm64-arm64-xl-credit2 11 leak-check/basis(11)fail blocked in 152332 test-arm6
[PATCH v6 0/9] x86/tlb: Concurrent TLB flushes
From: Nadav Amit The series improves TLB shootdown by flushing the local TLB concurrently with remote TLBs, overlapping the IPI delivery time with the local flush. Performance numbers can be found in the previous version [1]. v5 was rebased on 5.11 (long time after v4), and had some bugs and embarrassing build errors. Peter Zijlstra and Christoph Hellwig had some comments as well. These issues were addressed (excluding one 82-chars line that I left). Based on their feedback, an additional patch was also added to reuse on_each_cpu_cond_mask() code and avoid unnecessary calls by inlining. KernelCI showed RCU stalls on arm64, which I could not figure out from the kernel splat. If this issue persists, I would appreciate it someone can assist in debugging or at least provide the output when running the kernel with CONFIG_CSD_LOCK_WAIT_DEBUG=Y. [1] https://lore.kernel.org/lkml/20190823224153.15223-1-na...@vmware.com/ v5 -> v6: * Address build warnings due to rebase mistakes * Reuse code from on_each_cpu_cond_mask() and inline [PeterZ] * Fix some style issues [Hellwig] v4 -> v5: * Rebase on 5.11 * Move concurrent smp logic to smp_call_function_many_cond() * Remove SGI-UV patch which is not needed anymore v3 -> v4: * Merge flush_tlb_func_local and flush_tlb_func_remote() [Peter] * Prevent preemption on_each_cpu(). It is not needed, but it prevents concerns. [Peter/tglx] * Adding acked-, review-by tags v2 -> v3: * Open-code the remote/local-flush decision code [Andy] * Fix hyper-v, Xen implementations [Andrew] * Fix redundant TLB flushes. v1 -> v2: * Removing the patches that Thomas took [tglx] * Adding hyper-v, Xen compile-tested implementations [Dave] * Removing UV [Andy] * Adding lazy optimization, removing inline keyword [Dave] * Restructuring patch-set RFCv2 -> v1: * Fix comment on flush_tlb_multi [Juergen] * Removing async invalidation optimizations [Andy] * Adding KVM support [Paolo] Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Boris Ostrovsky Cc: Dave Hansen Cc: Haiyang Zhang Cc: Ingo Molnar Cc: Josh Poimboeuf Cc: Juergen Gross Cc: "K. Y. Srinivasan" Cc: Paolo Bonzini Cc: Peter Zijlstra Cc: Rik van Riel Cc: Sasha Levin Cc: Stephen Hemminger Cc: Thomas Gleixner Cc: k...@vger.kernel.org Cc: linux-hyp...@vger.kernel.org Cc: linux-ker...@vger.kernel.org Cc: virtualizat...@lists.linux-foundation.org Cc: x...@kernel.org Cc: xen-devel@lists.xenproject.org Nadav Amit (9): smp: Run functions concurrently in smp_call_function_many_cond() x86/mm/tlb: Unify flush_tlb_func_local() and flush_tlb_func_remote() x86/mm/tlb: Open-code on_each_cpu_cond_mask() for tlb_is_not_lazy() x86/mm/tlb: Flush remote and local TLBs concurrently x86/mm/tlb: Privatize cpu_tlbstate x86/mm/tlb: Do not make is_lazy dirty for no reason cpumask: Mark functions as pure x86/mm/tlb: Remove unnecessary uses of the inline keyword smp: inline on_each_cpu_cond() and on_each_cpu() arch/x86/hyperv/mmu.c | 10 +- arch/x86/include/asm/paravirt.h | 6 +- arch/x86/include/asm/paravirt_types.h | 4 +- arch/x86/include/asm/tlbflush.h | 48 --- arch/x86/include/asm/trace/hyperv.h | 2 +- arch/x86/kernel/alternative.c | 2 +- arch/x86/kernel/kvm.c | 11 +- arch/x86/kernel/paravirt.c| 2 +- arch/x86/mm/init.c| 2 +- arch/x86/mm/tlb.c | 176 +-- arch/x86/xen/mmu_pv.c | 11 +- include/linux/cpumask.h | 6 +- include/linux/smp.h | 50 +-- include/trace/events/xen.h| 2 +- kernel/smp.c | 196 +++--- 15 files changed, 278 insertions(+), 250 deletions(-) -- 2.25.1
[PATCH v6 4/9] x86/mm/tlb: Flush remote and local TLBs concurrently
From: Nadav Amit To improve TLB shootdown performance, flush the remote and local TLBs concurrently. Introduce flush_tlb_multi() that does so. Introduce paravirtual versions of flush_tlb_multi() for KVM, Xen and hyper-v (Xen and hyper-v are only compile-tested). While the updated smp infrastructure is capable of running a function on a single local core, it is not optimized for this case. The multiple function calls and the indirect branch introduce some overhead, and might make local TLB flushes slower than they were before the recent changes. Before calling the SMP infrastructure, check if only a local TLB flush is needed to restore the lost performance in this common case. This requires to check mm_cpumask() one more time, but unless this mask is updated very frequently, this should impact performance negatively. Cc: "K. Y. Srinivasan" Cc: Haiyang Zhang Cc: Stephen Hemminger Cc: Sasha Levin Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: x...@kernel.org Cc: Juergen Gross Cc: Paolo Bonzini Cc: Andy Lutomirski Cc: Peter Zijlstra Cc: Boris Ostrovsky Cc: linux-hyp...@vger.kernel.org Cc: linux-ker...@vger.kernel.org Cc: virtualizat...@lists.linux-foundation.org Cc: k...@vger.kernel.org Cc: xen-devel@lists.xenproject.org Reviewed-by: Michael Kelley # Hyper-v parts Reviewed-by: Juergen Gross # Xen and paravirt parts Reviewed-by: Dave Hansen Signed-off-by: Nadav Amit --- v5->v6: * Use on_each_cpu_mask() instead of on_each_cpu_cond_mask() [PeterZ] * Use cond_cpumask when needed instead of cpumask * Rename remaining instance of native_flush_tlb_others() --- arch/x86/hyperv/mmu.c | 10 +++--- arch/x86/include/asm/paravirt.h | 6 ++-- arch/x86/include/asm/paravirt_types.h | 4 +-- arch/x86/include/asm/tlbflush.h | 4 +-- arch/x86/include/asm/trace/hyperv.h | 2 +- arch/x86/kernel/kvm.c | 11 +-- arch/x86/kernel/paravirt.c| 2 +- arch/x86/mm/tlb.c | 46 +-- arch/x86/xen/mmu_pv.c | 11 +++ include/trace/events/xen.h| 2 +- 10 files changed, 57 insertions(+), 41 deletions(-) diff --git a/arch/x86/hyperv/mmu.c b/arch/x86/hyperv/mmu.c index 2c87350c1fb0..681dba8de4f2 100644 --- a/arch/x86/hyperv/mmu.c +++ b/arch/x86/hyperv/mmu.c @@ -52,8 +52,8 @@ static inline int fill_gva_list(u64 gva_list[], int offset, return gva_n - offset; } -static void hyperv_flush_tlb_others(const struct cpumask *cpus, - const struct flush_tlb_info *info) +static void hyperv_flush_tlb_multi(const struct cpumask *cpus, + const struct flush_tlb_info *info) { int cpu, vcpu, gva_n, max_gvas; struct hv_tlb_flush **flush_pcpu; @@ -61,7 +61,7 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, u64 status = U64_MAX; unsigned long flags; - trace_hyperv_mmu_flush_tlb_others(cpus, info); + trace_hyperv_mmu_flush_tlb_multi(cpus, info); if (!hv_hypercall_pg) goto do_native; @@ -164,7 +164,7 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, if (!(status & HV_HYPERCALL_RESULT_MASK)) return; do_native: - native_flush_tlb_others(cpus, info); + native_flush_tlb_multi(cpus, info); } static u64 hyperv_flush_tlb_others_ex(const struct cpumask *cpus, @@ -239,6 +239,6 @@ void hyperv_setup_mmu_ops(void) return; pr_info("Using hypercall for remote TLB flush\n"); - pv_ops.mmu.flush_tlb_others = hyperv_flush_tlb_others; + pv_ops.mmu.flush_tlb_multi = hyperv_flush_tlb_multi; pv_ops.mmu.tlb_remove_table = tlb_remove_table; } diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index 4abf110e2243..45b55e3e0630 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -50,7 +50,7 @@ static inline void slow_down_io(void) void native_flush_tlb_local(void); void native_flush_tlb_global(void); void native_flush_tlb_one_user(unsigned long addr); -void native_flush_tlb_others(const struct cpumask *cpumask, +void native_flush_tlb_multi(const struct cpumask *cpumask, const struct flush_tlb_info *info); static inline void __flush_tlb_local(void) @@ -68,10 +68,10 @@ static inline void __flush_tlb_one_user(unsigned long addr) PVOP_VCALL1(mmu.flush_tlb_one_user, addr); } -static inline void __flush_tlb_others(const struct cpumask *cpumask, +static inline void __flush_tlb_multi(const struct cpumask *cpumask, const struct flush_tlb_info *info) { - PVOP_VCALL2(mmu.flush_tlb_others, cpumask, info); + PVOP_VCALL2(mmu.flush_tlb_multi, cpumask, info); } static inline void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table) diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/i
[xen-unstable test] 159491: regressions - FAIL
flight 159491 xen-unstable real [real] http://logs.test-lab.xenproject.org/osstest/logs/159491/ Regressions :-( Tests which did not succeed and are blocking, including tests which could not be run: test-xtf-amd64-amd64-5 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-xl-qemut-ws16-amd64 8 xen-boot fail REGR. vs. 159475 test-xtf-amd64-amd64-1 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-debianhvm-amd64 8 xen-boot fail REGR. vs. 159475 test-xtf-amd64-amd64-2 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-qemut-rhel6hvm-intel 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-libvirt-xsm 8 xen-boot fail REGR. vs. 159475 test-xtf-amd64-amd64-3 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-xl-raw8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemut-debianhvm-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-coresched-i386-xl 8 xen-boot fail REGR. vs. 159475 test-xtf-amd64-amd64-4 19 xtf/test-pv32pae-selftest fail REGR. vs. 159475 test-amd64-i386-xl-shadow 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-libvirt-pair 12 xen-boot/src_hostfail REGR. vs. 159475 test-amd64-i386-libvirt-pair 13 xen-boot/dst_hostfail REGR. vs. 159475 test-amd64-i386-migrupgrade 13 xen-boot/dst_hostfail REGR. vs. 159475 test-amd64-i386-xl-qemut-debianhvm-i386-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-xsm8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-ovmf-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-qemut-rhel6hvm-amd 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl8 xen-boot fail REGR. vs. 159475 test-amd64-i386-qemuu-rhel6hvm-amd 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemut-win7-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-examine 8 reboot fail REGR. vs. 159475 test-amd64-i386-freebsd10-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-freebsd10-i386 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-livepatch 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-libvirt 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-qemuu-rhel6hvm-intel 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-pvshim 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-ws16-amd64 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-pair 12 xen-boot/src_hostfail REGR. vs. 159475 test-amd64-i386-pair 13 xen-boot/dst_hostfail REGR. vs. 159475 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 8 xen-boot fail REGR. vs. 159475 test-amd64-i386-xl-qemuu-win7-amd64 8 xen-boot fail REGR. vs. 159475 Tests which did not succeed, but are not blocking: test-armhf-armhf-libvirt 16 saverestore-support-checkfail like 159475 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 159475 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stopfail like 159475 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stopfail like 159475 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stopfail like 159475 test-armhf-armhf-libvirt-raw 15 saverestore-support-checkfail like 159475 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stopfail like 159475 test-arm64-arm64-xl-seattle 15 migrate-support-checkfail never pass test-arm64-arm64-xl-seattle 16 saverestore-support-checkfail never pass test-arm64-arm64-xl 15 migrate-support-checkfail never pass test-arm64-arm64-xl 16 saverestore-support-checkfail never pass test-amd64-amd64-libvirt-xsm 15 migrate-support-checkfail never pass test-amd64-amd64-libvirt 15 migrate-support-checkfail never pass test-arm64-arm64-xl-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-xl-xsm 16 saverestore-support-checkfail never pass test-arm64-arm64-libvirt-xsm 15 migrate-support-checkfail never pass test-arm64-arm64-libvirt-xsm 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit1 15 migrate-support-checkfail never pass test-arm64-arm64-xl-credit1 16 saverestore-support-checkfail never pass test-arm64-arm64-xl-credit2 15 migrate-support-checkfail never pass te
[libvirt test] 159507: regressions - FAIL
flight 159507 libvirt real [real] http://logs.test-lab.xenproject.org/osstest/logs/159507/ Regressions :-( Tests which did not succeed and are blocking, including tests which could not be run: build-armhf-libvirt 6 libvirt-buildfail REGR. vs. 151777 build-amd64-libvirt 6 libvirt-buildfail REGR. vs. 151777 build-i386-libvirt6 libvirt-buildfail REGR. vs. 151777 build-arm64-libvirt 6 libvirt-buildfail REGR. vs. 151777 Tests which did not succeed, but are not blocking: test-amd64-amd64-libvirt 1 build-check(1) blocked n/a test-amd64-amd64-libvirt-pair 1 build-check(1) blocked n/a test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 1 build-check(1) blocked n/a test-amd64-amd64-libvirt-vhd 1 build-check(1) blocked n/a test-amd64-amd64-libvirt-xsm 1 build-check(1) blocked n/a test-amd64-i386-libvirt 1 build-check(1) blocked n/a test-amd64-i386-libvirt-pair 1 build-check(1) blocked n/a test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 1 build-check(1) blocked n/a test-amd64-i386-libvirt-xsm 1 build-check(1) blocked n/a test-arm64-arm64-libvirt 1 build-check(1) blocked n/a test-arm64-arm64-libvirt-qcow2 1 build-check(1) blocked n/a test-arm64-arm64-libvirt-xsm 1 build-check(1) blocked n/a test-armhf-armhf-libvirt 1 build-check(1) blocked n/a test-armhf-armhf-libvirt-raw 1 build-check(1) blocked n/a version targeted for testing: libvirt f30aa2ec74a79f34700915b677f46ec476d2362d baseline version: libvirt 2c846fa6bcc11929c9fb857a22430fb9945654ad Last test of basis 151777 2020-07-10 04:19:19 Z 226 days Failing since151818 2020-07-11 04:18:52 Z 225 days 218 attempts Testing same since 159486 2021-02-20 04:18:50 Z1 days2 attempts People who touched revisions under test: Adolfo Jayme Barrientos Aleksandr Alekseev Andika Triwidada Andrea Bolognani Balázs Meskó Barrett Schonefeld Bastien Orivel BiaoXiang Ye Bihong Yu Binfeng Wu Boris Fiuczynski Brian Turek Bruno Haible Christian Ehrhardt Christian Schoenebeck Cole Robinson Collin Walling Cornelia Huck Cédric Bosdonnat Côme Borsoi Daniel Henrique Barboza Daniel Letai Daniel P. Berrange Daniel P. Berrangé Dmytro Linkin Eiichi Tsukata Erik Skultety Fabian Affolter Fabian Freyer Fangge Jin Farhan Ali Fedora Weblate Translation gongwei Guoyi Tu Göran Uddeborg Halil Pasic Han Han Hao Wang Helmut Grohne Ian Wienand Jakob Meng Jamie Strandboge Jamie Strandboge Jan Kuparinen Jean-Baptiste Holcroft Jianan Gao Jim Fehlig Jin Yan Jiri Denemark John Ferlan Jonathan Watt Jonathon Jongsma Julio Faracco Ján Tomko Kashyap Chamarthy Kevin Locke Kristina Hanicova Laine Stump Laszlo Ersek Liao Pingfang Lin Ma Lin Ma Lin Ma Marc Hartmayer Marc-André Lureau Marek Marczykowski-Górecki Markus Schade Martin Kletzander Masayoshi Mizuma Matt Coleman Matt Coleman Mauro Matteo Cascella Meina Li Michal Privoznik Michał Smyk Milo Casagrande Moshe Levi Muha Aliss Neal Gompa Nick Shyrokovskiy Nickys Music Group Nico Pache Nikolay Shirokovskiy Olaf Hering Olesya Gerasimenko Orion Poplawski Patrick Magauran Paulo de Rezende Pinatti Pavel Hrdina Peter Krempa Pino Toscano Pino Toscano Piotr Drąg Prathamesh Chavan Ricky Tigg Roman Bogorodskiy Roman Bolshakov Ryan Gahagan Ryan Schmidt Sam Hartman Scott Shambarger Sebastian Mitterle Shalini Chellathurai Saroja Shaojun Yang Shi Lei Simon Gaiser Stefan Bader Stefan Berger Stefan Berger Szymon Scholz Thomas Huth Tim Wiederhake Tomáš Golembiovský Tomáš Janoušek Tuguoyi Ville Skyttä Wang Xin Weblate Yalei Li <274268...@qq.com> Yalei Li Yang Hang Yanqiu Zhang Yi Li Yi Wang Yuri Chornoivan Zheng Chuan zhenwei pi Zhenyu Zheng jobs: build-amd64-xsm pass build-arm64-xsm pass build-i386-xsm pass build-amd64 pass build-arm64 pass build-armhf pass build-i386 pass build-amd64-libvirt fail build-arm64-libvirt fail build-a