[Xen-devel] [qemu-mainline test] 141466: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141466 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141466/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-pvshim   18 guest-localmigrate/x10   fail REGR. vs. 140282

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stopfail like 140282
 test-armhf-armhf-libvirt 14 saverestore-support-checkfail  like 140282
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop fail like 140282
 test-armhf-armhf-libvirt-raw 13 saverestore-support-checkfail  like 140282
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stopfail like 140282
 test-amd64-i386-libvirt-xsm  13 migrate-support-checkfail   never pass
 test-amd64-i386-xl-pvshim12 guest-start  fail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  14 saverestore-support-checkfail   never pass
 test-amd64-i386-libvirt  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-amd64-i386-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-arm64-arm64-xl-credit2  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 14 saverestore-support-checkfail   never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-checkfail  never pass
 test-armhf-armhf-xl-multivcpu 14 saverestore-support-checkfail  never pass
 test-armhf-armhf-xl-cubietruck 13 migrate-support-checkfail never pass
 test-armhf-armhf-xl-cubietruck 14 saverestore-support-checkfail never pass
 test-armhf-armhf-libvirt 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  13 saverestore-support-checkfail   never pass
 test-armhf-armhf-libvirt-raw 12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 14 saverestore-support-checkfail   never pass
 test-amd64-i386-xl-qemuu-ws16-amd64 17 guest-stop  fail never pass
 test-amd64-amd64-xl-qemuu-win10-i386 10 windows-installfail never pass
 test-amd64-i386-xl-qemuu-win10-i386 10 windows-install fail never pass

version targeted for testing:
 qemuuf8c3db33a5e863291182f8862ddf81618a7c6194
baseline version:
 qemuuafd760539308a5524accf964107cdb1d54a059e3

Last test of basis   140282  2019-08-18 05:36:51 Z   33 days
Failing since140361  2019-08-19 11:36:26 Z   31 days   38 attempts
Testing same since   141434  2019-09-18 16:09:23 Z1 days2 attempts


People who touched revisions under test:
  Alberto Garcia 
  Aleksandar Markovic 
  Alex Bennée 
  Alexey Kardashevskiy 
  Andrew Jeffery 
  Andrey Shinkevich 
  Anthony PERARD 
  Aurelien Jarno 
  BALATON Zoltan 
  Bandan Das 
  Bastian Koppelmann 
  Carlo Marcelo Aren

[Xen-devel] [xen-unstable-smoke test] 141494: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141494 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141494/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl   7 xen-boot fail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  14 saverestore-support-checkfail   never pass

version targeted for testing:
 xen  ce44fd015e55d0ecc47c160fb5ce69070aa4991b
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z7 days
Failing since141255  2019-09-12 21:01:22 Z7 days   49 attempts
Testing same since   141489  2019-09-20 01:02:25 Z0 days2 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  pass
 build-amd64  pass
 build-armhf  pass
 build-amd64-libvirt  pass
 test-armhf-armhf-xl  fail
 test-arm64-arm64-xl-xsm  pass
 test-amd64-amd64-xl-qemuu-debianhvm-amd64pass
 test-amd64-amd64-libvirt 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


Not pushing.

(No revision log; it would be 1029 lines long.)

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

Re: [Xen-devel] [PATCH v11] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Alexandru Stefan ISAILA


On 19.09.2019 16:59, Jan Beulich wrote:
> On 19.09.2019 15:03, Alexandru Stefan ISAILA wrote:
>> @@ -601,6 +602,7 @@ static void *hvmemul_map_linear_addr(
>>   
>>   case HVMTRANS_gfn_paged_out:
>>   case HVMTRANS_gfn_shared:
>> +case HVMTRANS_bad_gfn_access:
>>   err = ERR_PTR(~X86EMUL_RETRY);
>>   goto out;
> 
> This looks pretty suspicious now - why would (without knowing all
> the background) "bad access" translate into "retry". While you did
> post the suggested name before, it's nevertheless pretty clear now
> that it needs changing. Perhaps HVMTRANS_need_retry or some such?

It's fine by me, I will change the name to HVMTRANS_need_retry.

> 
>> @@ -1852,6 +1864,8 @@ static int hvmemul_rep_movs(
>>   
>>   xfree(buf);
>>   
>> +ASSERT(rc != HVMTRANS_bad_gfn_access);
>> +
>>   if ( rc == HVMTRANS_gfn_paged_out )
>>   return X86EMUL_RETRY;
>>   if ( rc == HVMTRANS_gfn_shared )
>> @@ -1964,6 +1978,8 @@ static int hvmemul_rep_stos(
>>   if ( buf != p_data )
>>   xfree(buf);
>>   
>> +ASSERT(rc != HVMTRANS_bad_gfn_access);
>> +
>>   switch ( rc )
>>   {
>>   case HVMTRANS_gfn_paged_out:
> 
> These are changes to places that were pointed out before do consume
> HVMTRANS_* return values. Did you go through and check nothing else
> needs adjustment? You don't say anything in this regard in the
> description. For example, if shadow's hvm_read() would get to see
> the new value, it would fall out of its switch() into a BUG().
> 

Yes, you are right, the only thing that saves shadow from not raising a 
BUG is the send_event flag. For safety reasons I will have a complete 
check of all the places that can fail from adding the new return value.

>> --- a/xen/arch/x86/hvm/hvm.c
>> +++ b/xen/arch/x86/hvm/hvm.c
>> @@ -3236,6 +3236,19 @@ static enum hvm_translation_result __hvm_copy(
>>   return HVMTRANS_bad_gfn_to_mfn;
>>   }
>>   
>> +/*
>> + * In case a vm event was sent return paged_out so the emulation 
>> will
>> + * stop with no side effect
>> + */
>> +if ( (flags & HVMCOPY_linear) &&
>> + unlikely(v->arch.vm_event) &&
>> + v->arch.vm_event->send_event &&
>> + hvm_monitor_check_p2m(addr, gfn, pfec, npfec_kind_with_gla) )
> 
> In such a sequence of checks with _some_ part using unlikely() I
> think it would be better to have the unlikely() one first (unless
> it's a relatively expensive check, which isn't the case here), to
> have as little as possible unnecessary computations / branches in
> the common (fast path) case.

I will change the order in the next version.

> 
> Furthermore while you now restrict the check to linear address
> based accesses, other than the description says (or at least
> implies) you do not restrict it to read and exec accesses. It's
> not clear to me whether that's intentional, yet it affects which
> hvm_copy_*_linear() callers need auditing.

The pfec var is checked in hvm_monitor_check_p2m(). If you think it is 
necessary I can add one more check here for (pfec & (PFEC_insn_fetch | 
PFEC_write_access)).

> 
> Finally, what about ->arch.vm_event->send_event remaining set
> after hvm_emulate_one_vm_event(), because hvm_monitor_check_p2m()
> (the only place where the flag would get cleared) was never hit
> in the process?
Thanks for pointing this out, indeed it's a problem here. A solution can 
be to move send_event = false; after hvm_emulate_one_vm_event() is 
finished. And state in the comment that the user is in charge of 
enabling and disabling the flag.
Or just have it in both places.

> And what about an instruction accessing two (or
> more) distinct addresses? The flag would be clear after the first
> one was checked afaict.

There is no problem here because emulation will stop after the first bad 
access so there is no need to continue.

Regards,
Alex
___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v11] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Alexandru Stefan ISAILA


On 19.09.2019 17:09, Paul Durrant wrote:
>> -Original Message-
>> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
>> index fdb1e17f59..4cc077bb3f 100644
>> --- a/xen/arch/x86/hvm/hvm.c
>> +++ b/xen/arch/x86/hvm/hvm.c
>> @@ -3236,6 +3236,19 @@ static enum hvm_translation_result __hvm_copy(
>>   return HVMTRANS_bad_gfn_to_mfn;
>>   }
>>
>> +/*
>> + * In case a vm event was sent return paged_out so the emulation 
>> will
>> + * stop with no side effect
>> + */
>> +if ( (flags & HVMCOPY_linear) &&
>> + unlikely(v->arch.vm_event) &&
>> + v->arch.vm_event->send_event &&
>> + hvm_monitor_check_p2m(addr, gfn, pfec, npfec_kind_with_gla) )
>> +{
>> +put_page(page);
>> +return HVMTRANS_bad_gfn_access;
> 
> This doesn't match the comment above. Did you mean to return 
> HVMTRANS_gfn_paged_out? I'm guessing not, in which case the comment needs to 
> be fixed.

Yes, it seems I missed that but given that the return name will change I 
will have the comment fixed in the next version. Thanks for pointing 
this out.

Alex

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

Re: [Xen-devel] [PATCH v11] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Jan Beulich
On 20.09.2019 10:06, Alexandru Stefan ISAILA wrote:
> On 19.09.2019 16:59, Jan Beulich wrote:
>> Furthermore while you now restrict the check to linear address
>> based accesses, other than the description says (or at least
>> implies) you do not restrict it to read and exec accesses. It's
>> not clear to me whether that's intentional, yet it affects which
>> hvm_copy_*_linear() callers need auditing.
> 
> The pfec var is checked in hvm_monitor_check_p2m(). If you think it is 
> necessary I can add one more check here for (pfec & (PFEC_insn_fetch | 
> PFEC_write_access)).

hvm_monitor_check_p2m() gets called from two places, so a check
there won't help (afaict). The question whether to put an
additional check here depends on whether, as the description
says, you really only want to handle read/exec accesses here,
or whether you also want to cover write ones (in which case the
description should be adjusted so that it's not misleading).

>> Finally, what about ->arch.vm_event->send_event remaining set
>> after hvm_emulate_one_vm_event(), because hvm_monitor_check_p2m()
>> (the only place where the flag would get cleared) was never hit
>> in the process?
> Thanks for pointing this out, indeed it's a problem here. A solution can 
> be to move send_event = false; after hvm_emulate_one_vm_event() is 
> finished. And state in the comment that the user is in charge of 
> enabling and disabling the flag.
> Or just have it in both places.

For this aspect alone I think you want it in both places, but ...

>> And what about an instruction accessing two (or
>> more) distinct addresses? The flag would be clear after the first
>> one was checked afaict.
> 
> There is no problem here because emulation will stop after the first bad 
> access so there is no need to continue.

... for this moving it may indeed be necessary. I have to admit
that I don't follow your reply here: The flag will also be clear
after the first good access (afaict), and hence further accesses
by the same insn won't make it into hvm_monitor_check_p2m() at all.

Jan

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

Re: [Xen-devel] [PATCH RFC] pass-through: sync pir to irr after msix vector been updated

2019-09-20 Thread Jan Beulich
On 19.09.2019 23:38, Joe Jin wrote:
> On 9/19/19 3:24 AM, Jan Beulich wrote:
>> What's
>> still missing is the further updating of pirq_dpci->gmsi.dest_vcpu_id
>> (as explained before, still visible in context above).
>>
> 
>  422
>  423 dest_vcpu_id = hvm_girq_dest_2_vcpu_id(d, dest, dest_mode);
>  424 pirq_dpci->gmsi.dest_vcpu_id = dest_vcpu_id;
> 
> dest_vcpu_id updated later by above code, do I missed something?

This piece of code

if ( iommu_intpost )
{
if ( delivery_mode == dest_LowestPrio )
vcpu = vector_hashing_dest(d, dest, dest_mode,
   pirq_dpci->gmsi.gvec);
if ( vcpu )
pirq_dpci->gmsi.posted = true;
}

updates the vCPU to be delivered to. Right now, when the "posted"
flag is set, the dest_vcpu_id field is unused (as far as I was
able to tell), and hence didn't need setting. The way you intend
to change things, you want to use the field also in the "posted"
case, and hence you also should update it in the code path above.

But please double check all of this.

Jan

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

Re: [Xen-devel] [PATCH v11] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Alexandru Stefan ISAILA


On 20.09.2019 11:24, Jan Beulich wrote:
> On 20.09.2019 10:06, Alexandru Stefan ISAILA wrote:
>> On 19.09.2019 16:59, Jan Beulich wrote:
>>> Furthermore while you now restrict the check to linear address
>>> based accesses, other than the description says (or at least
>>> implies) you do not restrict it to read and exec accesses. It's
>>> not clear to me whether that's intentional, yet it affects which
>>> hvm_copy_*_linear() callers need auditing.
>>
>> The pfec var is checked in hvm_monitor_check_p2m(). If you think it is
>> necessary I can add one more check here for (pfec & (PFEC_insn_fetch |
>> PFEC_write_access)).
> 
> hvm_monitor_check_p2m() gets called from two places, so a check
> there won't help (afaict). The question whether to put an
> additional check here depends on whether, as the description
> says, you really only want to handle read/exec accesses here,
> or whether you also want to cover write ones (in which case the
> description should be adjusted so that it's not misleading).

Indeed covering write access here as well as in 
hvmemul_map_linear_addr() is needed. I will adjust the comment.

> 
>>> Finally, what about ->arch.vm_event->send_event remaining set
>>> after hvm_emulate_one_vm_event(), because hvm_monitor_check_p2m()
>>> (the only place where the flag would get cleared) was never hit
>>> in the process?
>> Thanks for pointing this out, indeed it's a problem here. A solution can
>> be to move send_event = false; after hvm_emulate_one_vm_event() is
>> finished. And state in the comment that the user is in charge of
>> enabling and disabling the flag.
>> Or just have it in both places.
> 
> For this aspect alone I think you want it in both places, but ...
> 
>>> And what about an instruction accessing two (or
>>> more) distinct addresses? The flag would be clear after the first
>>> one was checked afaict.
>>
>> There is no problem here because emulation will stop after the first bad
>> access so there is no need to continue.
> 
> ... for this moving it may indeed be necessary. I have to admit
> that I don't follow your reply here: The flag will also be clear
> after the first good access (afaict), and hence further accesses
> by the same insn won't make it into hvm_monitor_check_p2m() at all.
> 

Ok I will move it from hvm_monitor_check_p2m() and adjust the comment 
accordingly.


Thanks for the review,
Alex
___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH] SVM: correct CPUID event processing

2019-09-20 Thread Alexandru Stefan ISAILA


On 19.09.2019 13:37, Jan Beulich wrote:
> hvm_monitor_cpuid() expects the input registers, not two of the outputs.
> 
> However, once having made the necessary adjustment, the SVM and VMX
> functions are so similar that they should be folded (thus avoiding
> further similar asymmetries to get introduced). Use the best of both
> worlds by e.g. using "curr" consistently. This then being the only
> caller of hvm_check_cpuid_faulting(), fold in that function as well.
> 
> Signed-off-by: Jan Beulich 

Reviewed-by: Alexandru Isaila 

> 
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -3349,14 +3349,28 @@ unsigned long copy_from_user_hvm(void *t
>   return rc ? len : 0; /* fake a copy_from_user() return code */
>   }
>

Useful fold. Maybe a small comment with the reason to have one function 
would help. Something like both SVM and VMX do the same thing, but it's 
up to you if it is necessary.

> -bool hvm_check_cpuid_faulting(struct vcpu *v)
> +int hvm_vmexit_cpuid(struct cpu_user_regs *regs, unsigned int inst_len)

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

Re: [Xen-devel] [PATCH] SVM: correct CPUID event processing

2019-09-20 Thread Jan Beulich
On 20.09.2019 10:39, Alexandru Stefan ISAILA wrote:
> 
> 
> On 19.09.2019 13:37, Jan Beulich wrote:
>> hvm_monitor_cpuid() expects the input registers, not two of the outputs.
>>
>> However, once having made the necessary adjustment, the SVM and VMX
>> functions are so similar that they should be folded (thus avoiding
>> further similar asymmetries to get introduced). Use the best of both
>> worlds by e.g. using "curr" consistently. This then being the only
>> caller of hvm_check_cpuid_faulting(), fold in that function as well.
>>
>> Signed-off-by: Jan Beulich 
> 
> Reviewed-by: Alexandru Isaila 

Thanks.

>> --- a/xen/arch/x86/hvm/hvm.c
>> +++ b/xen/arch/x86/hvm/hvm.c
>> @@ -3349,14 +3349,28 @@ unsigned long copy_from_user_hvm(void *t
>>   return rc ? len : 0; /* fake a copy_from_user() return code */
>>   }
>>
> 
> Useful fold. Maybe a small comment with the reason to have one function 
> would help. Something like both SVM and VMX do the same thing, but it's 
> up to you if it is necessary.
> 
>> -bool hvm_check_cpuid_faulting(struct vcpu *v)
>> +int hvm_vmexit_cpuid(struct cpu_user_regs *regs, unsigned int inst_len)

The patch description explicitly says so. Since having common code
for things not differing between vendors is the rule rather than
an exception, commenting individual functions to this effect would
seem rather odd to me.

Jan

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

Re: [Xen-devel] [PATCH] xen/arm32: setup: Give a xenheap page to the boot allocator

2019-09-20 Thread Jan Beulich
On 20.09.2019 00:49, Stefano Stabellini wrote:
> On Tue, 17 Sep 2019, Julien Grall wrote:
>> @@ -665,6 +666,11 @@ static void __init setup_mm(void)
>>  
>>  setup_xenheap_mappings((e >> PAGE_SHIFT) - xenheap_pages, 
>> xenheap_pages);
>>  
>> +/* We need a single mapped page for populating bootmem_region_list. */
>> +boot_mfn_start = mfn_add(xenheap_mfn_end, -1);
>> +boot_mfn_end = xenheap_mfn_end;
>> +init_boot_pages(mfn_to_maddr(boot_mfn_start), 
>> mfn_to_maddr(boot_mfn_end));
>> +
>>  /* Add non-xenheap memory */
>>  for ( i = 0; i < bootinfo.mem.nr_banks; i++ )
>>  {
>> @@ -710,7 +716,7 @@ static void __init setup_mm(void)
>>  
>>  /* Add xenheap memory that was not already added to the boot allocator. 
>> */
>>  init_xenheap_pages(mfn_to_maddr(xenheap_mfn_start),
>> -   mfn_to_maddr(xenheap_mfn_end));
>> +   mfn_to_maddr(boot_mfn_end));
> 
> I can see what you are trying to do with this patch and it looks like
> the right fix at the moment. However, shouldn't this last change:
> 
>   mfn_to_maddr(boot_mfn_start)

Oh, indeed - when doing the review yesterday I thought I had
carefully compared with how things looked prior to the change
needing fixing up now, yet I didn't spot this (otherwise
obvious) difference to the original code.

Jan

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

Re: [Xen-devel] [PATCH] SVM: correct CPUID event processing

2019-09-20 Thread Andrew Cooper
On 19/09/2019 11:37, Jan Beulich wrote:
> hvm_monitor_cpuid() expects the input registers, not two of the outputs.

Perhaps worth nothing that this has been broken since its introduction
in c/s d05f1eb3741b85 ?

>
> However, once having made the necessary adjustment, the SVM and VMX
> functions are so similar that they should be folded (thus avoiding
> further similar asymmetries to get introduced). Use the best of both
> worlds by e.g. using "curr" consistently. This then being the only
> caller of hvm_check_cpuid_faulting(), fold in that function as well.
>
> Signed-off-by: Jan Beulich 

Reviewed-by: Andrew Cooper 

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

Re: [Xen-devel] [PATCH] SVM: correct CPUID event processing

2019-09-20 Thread Jan Beulich
On 20.09.2019 10:50, Andrew Cooper wrote:
> On 19/09/2019 11:37, Jan Beulich wrote:
>> hvm_monitor_cpuid() expects the input registers, not two of the outputs.
> 
> Perhaps worth nothing that this has been broken since its introduction
> in c/s d05f1eb3741b85 ?

Ah, yes, I should have done this. I've added half a sentence.

>> However, once having made the necessary adjustment, the SVM and VMX
>> functions are so similar that they should be folded (thus avoiding
>> further similar asymmetries to get introduced). Use the best of both
>> worlds by e.g. using "curr" consistently. This then being the only
>> caller of hvm_check_cpuid_faulting(), fold in that function as well.
>>
>> Signed-off-by: Jan Beulich 
> 
> Reviewed-by: Andrew Cooper 

Thanks.

Jan

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

Re: [Xen-devel] [PATCH v6 4/6] xen/x86: Allow stubdom access to irq created for msi.

2019-09-20 Thread Jan Beulich
On 14.09.2019 17:37, Marek Marczykowski-Górecki  wrote:
> --- a/xen/arch/x86/irq.c
> +++ b/xen/arch/x86/irq.c
> @@ -254,7 +254,13 @@ void __init clear_irq_vector(int irq)
>  /*
>   * Dynamic irq allocate and deallocation for MSI
>   */
> -int create_irq(nodeid_t node)
> +
> +/*
> + * create_irq - allocate irq for MSI
> + * @d domain that will get permission over the allocated irq; this permission
> + * will automatically be revoked on destroy_irq
> + */
> +int create_irq(nodeid_t node, struct domain *d)

I think there's nothing wrong with the pointer getting constified,
but see also below.

> @@ -282,23 +288,30 @@ int create_irq(nodeid_t node)
>  }
>  ret = assign_irq_vector(irq, mask);
>  }
> +ASSERT(desc->arch.creator_domid == DOMID_INVALID);
>  if (ret < 0)

I think this insertion wants to gain blank lines on both sides.

>  {
>  desc->arch.used = IRQ_UNUSED;
>  irq = ret;
>  }
> -else if ( hardware_domain )
> +else if ( d )
>  {
> -ret = irq_permit_access(hardware_domain, irq);
> +ASSERT(d == current->domain);

Why pass in the domain then in the first place? Could by just a
boolean, couldn't it? Suitably named it might even eliminate
the need for the explanatory comment (see also below).

> +ret = irq_permit_access(d, irq);
>  if ( ret )
>  printk(XENLOG_G_ERR
> -   "Could not grant Dom0 access to IRQ%d (error %d)\n",
> -   irq, ret);
> +   "Could not grant Dom%u access to IRQ%d (error %d)\n",
> +   d->domain_id, irq, ret);

Please use %pd here (and elsewhere).

> +else
> +desc->arch.creator_domid = d->domain_id;
>  }
>  
>  return irq;
>  }
>  
> +/*
> + * destroy_irq - deallocate irq for MSI
> + */
>  void destroy_irq(unsigned int irq)

I don't think this is a very helpful comment to add; in fact I think
the respective part on the other function would better be dropped as
well, seeing the further comment ahead of both functions. (Otherwise
I'd have to point out that this is a single line comment.)

> @@ -307,14 +320,25 @@ void destroy_irq(unsigned int irq)
>  
>  BUG_ON(!MSI_IRQ(irq));
>  
> -if ( hardware_domain )
> +if ( desc->arch.creator_domid != DOMID_INVALID )
>  {
> -int err = irq_deny_access(hardware_domain, irq);
> +struct domain *d = get_domain_by_id(desc->arch.creator_domid);
>  
> -if ( err )
> -printk(XENLOG_G_ERR
> -   "Could not revoke Dom0 access to IRQ%u (error %d)\n",
> -   irq, err);
> +if ( d && irq_access_permitted(d, irq) )
> +{
> +int err;
> +
> +err = irq_deny_access(d, irq);

Please keep prior code structure, i.e. the function call being the
initializer of the variable.

> +if ( err )
> +printk(XENLOG_G_ERR
> +   "Could not revoke Dom%u access to IRQ%u (error %d)\n",
> +   d->domain_id, irq, err);
> +}

Why the irq_access_permitted() check around this? You go to some
lengths to explain this in the description, but if the domain has
no permission over the IRQ (because of domain ID re-use),
irq_deny_access() will simply do nothing, won't it? I.e. the way
this gets done and explained (saying that MSI IRQs can't be
shared between domains) wants to change a little.

> --- a/xen/include/asm-x86/irq.h
> +++ b/xen/include/asm-x86/irq.h
> @@ -45,6 +45,11 @@ struct arch_irq_desc {
>  unsigned move_cleanup_count;
>  u8 move_in_progress : 1;
>  s8 used;
> +/*
> + * weak reference to domain having permission over this IRQ (which 
> can
> + * be different from the domain actually havint the IRQ assigned)
> + */
> +domid_t creator_domid;

Comment style (should start with a capital letter).

Jan

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

Re: [Xen-devel] [PATCH] xen/arm32: setup: Give a xenheap page to the boot allocator

2019-09-20 Thread Julien Grall

Hi Stefano,

On 20/09/2019 09:48, Jan Beulich wrote:

On 20.09.2019 00:49, Stefano Stabellini wrote:

On Tue, 17 Sep 2019, Julien Grall wrote:

@@ -665,6 +666,11 @@ static void __init setup_mm(void)
  
  setup_xenheap_mappings((e >> PAGE_SHIFT) - xenheap_pages, xenheap_pages);
  
+/* We need a single mapped page for populating bootmem_region_list. */

+boot_mfn_start = mfn_add(xenheap_mfn_end, -1);
+boot_mfn_end = xenheap_mfn_end;
+init_boot_pages(mfn_to_maddr(boot_mfn_start), mfn_to_maddr(boot_mfn_end));
+
  /* Add non-xenheap memory */
  for ( i = 0; i < bootinfo.mem.nr_banks; i++ )
  {
@@ -710,7 +716,7 @@ static void __init setup_mm(void)
  
  /* Add xenheap memory that was not already added to the boot allocator. */

  init_xenheap_pages(mfn_to_maddr(xenheap_mfn_start),
-   mfn_to_maddr(xenheap_mfn_end));
+   mfn_to_maddr(boot_mfn_end));


I can see what you are trying to do with this patch and it looks like
the right fix at the moment. However, shouldn't this last change:

   mfn_to_maddr(boot_mfn_start)


Doh, yes it should. I will update the patch and resend it.



Oh, indeed - when doing the review yesterday I thought I had
carefully compared with how things looked prior to the change
needing fixing up now, yet I didn't spot this (otherwise
obvious) difference to the original code.

Jan



Cheers,

--
Julien Grall

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

[Xen-devel] [PATCH for-4.13 v2] xen/arm32: setup: Give a xenheap page to the boot allocator

2019-09-20 Thread Julien Grall
After commit 6e3e771203 "xen/arm: setup: Relocate the Device-Tree later on
in the boot", the boot allocator will not receive any xenheap page (i.e.
mapped page) on Arm32.

However, the boot allocator implicitely rely on having the first page
already mapped and therefore result to break boot on Arm32.

The easiest way for now is to give a xenheap page to the boot allocator.
We may want to rethink the interface in the future.

Fixes: 6e3e771203 ('xen/arm: setup: Relocate the Device-Tree later on in the 
boot')
Signed-off-by: Julien Grall 
Reviewed-by: Jan Beulich 

---
Changes in v2:
- Add Jan's reviewed-by
- Use boot_mfn_start rather than boot_mfn_end when giving
xenheap pages.
---
 xen/arch/arm/setup.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 581b262655..fca7e68cba 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -593,6 +593,7 @@ static void __init setup_mm(void)
 unsigned long heap_pages, xenheap_pages, domheap_pages;
 int i;
 const uint32_t ctr = READ_CP32(CTR);
+mfn_t boot_mfn_start, boot_mfn_end;
 
 if ( !bootinfo.mem.nr_banks )
 panic("No memory bank\n");
@@ -665,6 +666,11 @@ static void __init setup_mm(void)
 
 setup_xenheap_mappings((e >> PAGE_SHIFT) - xenheap_pages, xenheap_pages);
 
+/* We need a single mapped page for populating bootmem_region_list. */
+boot_mfn_start = mfn_add(xenheap_mfn_end, -1);
+boot_mfn_end = xenheap_mfn_end;
+init_boot_pages(mfn_to_maddr(boot_mfn_start), mfn_to_maddr(boot_mfn_end));
+
 /* Add non-xenheap memory */
 for ( i = 0; i < bootinfo.mem.nr_banks; i++ )
 {
@@ -710,7 +716,7 @@ static void __init setup_mm(void)
 
 /* Add xenheap memory that was not already added to the boot allocator. */
 init_xenheap_pages(mfn_to_maddr(xenheap_mfn_start),
-   mfn_to_maddr(xenheap_mfn_end));
+   mfn_to_maddr(boot_mfn_start));
 }
 #else /* CONFIG_ARM_64 */
 static void __init setup_mm(void)
-- 
2.11.0


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

Re: [Xen-devel] [[PATCH for-4.13]] xen/arm: mm: Allow generic xen page-tables helpers to be called early

2019-09-20 Thread Julien Grall

Hi,

On 20/09/2019 00:37, Stefano Stabellini wrote:

On Tue, 17 Sep 2019, Julien Grall wrote:

The current implementations of xen_{map, unmap}_table() expect
{map, unmap}_domain_page() to be usable. Those helpers are used to
map/unmap page tables while update Xen page-tables.

Since commit 022387ee1a "xen/arm: mm: Don't open-code Xen PT update in
{set, clear}_fixmap()", setup_fixmap() will make use of the helpers
mentioned above. When booting Xen using GRUB, setup_fixmap() may be used
before map_domain_page() can be called. This will result to data abort:

(XEN) Data Abort Trap. Syndrome=0x5
(XEN) CPU0: Unexpected Trap: Data Abort

[...]

(XEN) Xen call trace:
(XEN)[<0025ab6c>] mm.c#xen_pt_update+0x2b4/0x59c (PC)
(XEN)[<0025ab20>] mm.c#xen_pt_update+0x268/0x59c (LR)
(XEN)[<0025ae70>] set_fixmap+0x1c/0x2c
(XEN)[<002a9c98>] copy_from_paddr+0x7c/0xdc
(XEN)[<002a4ae0>] has_xsm_magic+0x18/0x34
(XEN)[<002a5b5c>] bootfdt.c#early_scan_node+0x398/0x560
(XEN)[<002a5de0>] device_tree_for_each_node+0xbc/0x144
(XEN)[<002a5ed4>] boot_fdt_info+0x6c/0x260
(XEN)[<002ac0d0>] start_xen+0x108/0xc74
(XEN)[<0020044c>] arm64/head.o#paging+0x60/0x88

During early boot, the page tables are either statically allocated in
Xen binary or allocated via alloc_boot_pages().

For statically allocated page-tables, they will already be mapped as
part of Xen binary. So we can easily find the virtual address.

For dynamically allocated page-tables, we need to rely
map_domain_page() to be functionally working.

For arm32, the call will be usable much before page can be dynamically
allocated (see setup_pagetables()). For arm64, the call will be usable
after setup_xenheap_mappings().

In both cases, memory are given to the boot allocator afterwards. So we
can rely on map_domain_page() for mapping page tables allocated
dynamically.

The helpers xen_{map, unmap}_table() are now updated to take into
account the case where page-tables are part of Xen binary.

Fixes: 022387ee1a ('xen/arm: mm: Don't open-code Xen PT update in {set, 
clear}_fixmap()')
Signed-off-by: Julien Grall 
---
  xen/arch/arm/mm.c | 20 
  1 file changed, 20 insertions(+)

diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index e1cdeaaf2f..da6303a8fd 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -950,11 +950,31 @@ static int create_xen_table(lpae_t *entry)
  
  static lpae_t *xen_map_table(mfn_t mfn)

  {
+/*
+ * We may require to map the page table before map_domain_page() is
+ * useable. The requirements here is it must be useable as soon as
+ * page-tables are allocated dynamically via alloc_boot_pages().
+ */
+if ( system_state == SYS_STATE_early_boot )
+{
+vaddr_t va = mfn_to_maddr(mfn) - phys_offset;
+
+if ( is_kernel(va) )
+return (lpae_t *)va;


Is it intended to continue if it is not a xen text page? Shouldn't we
BUG() or WARN?
Yes, I wrote the rationale in the commit message and a summary in a few lines 
above. For convenience, I pasted the commit message again here:


"During early boot, the page tables are either statically allocated in
Xen binary or allocated via alloc_boot_pages().

For statically allocated page-tables, they will already be mapped as
part of Xen binary. So we can easily find the virtual address.

For dynamically allocated page-tables, we need to rely
map_domain_page() to be functionally working.

For arm32, the call will be usable much before page can be dynamically
allocated (see setup_pagetables()). For arm64, the call will be usable
after setup_xenheap_mappings().

In both cases, memory are given to the boot allocator afterwards. So we
can rely on map_domain_page() for mapping page tables allocated
dynamically."

Cheers,

--
Julien Grall

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

Re: [Xen-devel] [PATCH v2 00/35] libxl refactoring to use ev_qmp (with API changes) [and 1 more messages]

2019-09-20 Thread Anthony PERARD
On Thu, Sep 19, 2019 at 08:17:43PM +0100, Ian Jackson wrote:
> Anthony PERARD writes ("[PATCH v2 00/35] libxl refactoring to use ev_qmp 
> (with API changes)"):
> > Patches with missing ackes:
> ...
> > libxl: Use ev_qmp in libxl_set_vcpuonline
> 
> From my point of view I seem to have sent a ack for this,
> 
>Message-ID: <23937.6842.426857.800...@mariner.uk.xensource.com>
>In-Reply-To: <20190802153606.32061-33-anthony.per...@citrix.com>
>References: <20190802153606.32061-1-anthony.per...@citrix.com>
><20190802153606.32061-33-anthony.per...@citrix.com>
>From: Ian Jackson 
>To: Anthony PERARD 
>Cc: "xen-devel@lists.xenproject.org" ,
>Wei Liu 
>Subject: Re: [PATCH 32/35] libxl: Use ev_qmp in libxl_set_vcpuonline
>Date: Tue, 17 Sep 2019 18:41:14 +0100
> 
> ?  I hope it's not mail going missing again...

I didn't carry the acks because I've squashed a patch into this one and
I've change the commit message (adding an extra paragraph to reflect the
squashed commit).

-- 
Anthony PERARD

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

Re: [Xen-devel] [PATCH V4 5/8] xen/common: Introduce xrealloc_flex_struct() helper macros

2019-09-20 Thread Oleksandr


Hi Jan





On 13.09.2019 17:35, Oleksandr Tyshchenko wrote:

--- a/xen/include/xen/xmalloc.h
+++ b/xen/include/xen/xmalloc.h
@@ -35,6 +35,15 @@
  #define xzalloc_array(_type, _num) \
  ((_type *)_xzalloc_array(sizeof(_type), __alignof__(_type), 
_num))
  +/* Allocate space for a structure with a flexible array of typed 
objects. */

+#define xmalloc_flex_struct(type, field, nr) \
+    (type *)_xmalloc(offsetof(type, field[nr]), __alignof__(type))
+
+/* Re-allocate space for a structure with a flexible array of typed 
objects. */
+#define xrealloc_flex_struct(ptr, field, 
nr)  \
+    (typeof(ptr))_xrealloc(ptr, offsetof(typeof(*(ptr)), 
field[nr]),  \

+   __alignof__(typeof(*(ptr

With the missing parentheses around the entire constructs added
Reviewed-by: Jan Beulich 


Thank you.



Would you be happy if I add xzalloc_flex_struct here as well (may I 
retain your R-b)?


Actually the xzalloc_flex_struct better fits in [1] ...


[1] 
https://www.mail-archive.com/xen-devel@lists.xenproject.org/msg7.html



--
Regards,

Oleksandr Tyshchenko


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

Re: [Xen-devel] [PATCH] libxc/x86: avoid overflow in CPUID APIC ID adjustments

2019-09-20 Thread Andrew Cooper
On 19/09/2019 12:48, Jan Beulich wrote:
> Recent AMD processors may report up to 128 logical processors in CPUID
> leaf 1. Doubling this value produces 0 (which OSes sincerely dislike),
> as the respective field is only 8 bits wide. Suppress doubling the value
> (and its leaf 0x8008 counterpart) in such a case.
>
> Additionally don't even do any adjustment when the host topology already
> includes room for multiple threads per core.
>
> Furthermore don't double the Maximum Cores Per Package at all - by us
> introducing a fake HTT effect, the core count doesn't need to change.
> Instead adjust the Maximum Logical Processors Sharing Cache field, which
> so far was zapped altogether.
>
> Also zap leaf 4 (and at the same time leaf 2) EDX output for AMD.
>
> Signed-off-by: Jan Beulich 
> ---
> TBD: Using xc_physinfo() output here needs a better solution. The
>  threads_per_core value returned is the count of active siblings of
>  CPU 0, rather than a system wide applicable value (and constant
>  over the entire session). Using CPUID output (leaves 4 and
>  801e) doesn't look viable either, due to this not really being
>  the host values on PVH. Judging from the host feature set's HTT
>  flag also wouldn't tell us whether there actually are multiple
>  threads per core.

The key thing is that htt != "more than one thread per core".  HTT is
strictly a bit indicating that topology information is available in a
new form in the CPUID leaves (or in AMDs case, the same information
should be interpreted in a new way).  Just because HTT is set (and it
does get set in non-HT capable systems), doesn't mean there is space for
more than thread per core in topology information.

For PV guests, my adjustment in the CPUID series shows (what I believe
to be) the only correct way of propagating the host HTT/CMP_LEGACY
settings through.

For HVM guests, it really shouldn't really have anything to do with the
host setting.  We should be choosing how many threads/core to give to
the guest, then constructing the topology information from first principles.

Ignore the PVH case.  It is totally broken for several other reasons as
well, and PVH Dom0 isn't a production-ready thing yet.

This gets us back to the PV case where the host information is actually
in view, and (for backport purposes) can be trusted.

~Andrew

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

Re: [Xen-devel] [PATCH v6 5/6] xen/x86: add PHYSDEVOP_interrupt_control

2019-09-20 Thread Jan Beulich
On 14.09.2019 17:37, Marek Marczykowski-Górecki  wrote:
> Allow device model running in stubdomain to enable/disable INTx/MSI(-X),
> bypassing pciback. While pciback is still used to access config space
> from within stubdomain, it refuse to write to
> PCI_MSI_FLAGS_ENABLE/PCI_MSIX_FLAGS_ENABLE/PCI_COMMAND_INTX_DISABLE
> in non-permissive mode. Which is the right thing to do for PV domain
> (the main use case for pciback), as PV domain should use XEN_PCI_OP_*
> commands for that. Unfortunately those commands are not good for
> stubdomain use, as they configure MSI in dom0's kernel too, which should
> not happen for HVM domain.

Why the "for HVM domain" here? I.e. why would this be correct for
a PV domain? Besides my dislike for such a bypass (imo all of the
handling should go through pciback, or none of it) I continue to
wonder whether the problem can't be addressed by a pciback change.
And even if not, I'd still wonder whether the request shouldn't go
through pciback, to retain proper layering. Ultimately it may be
better to have even the map/unmap go through pciback (it's at
least an apparent violation of the original physdev-op model that
these two are XSM_DM_PRIV).

Irrespective of this a couple of comments on the patch itself:

> --- a/xen/arch/x86/msi.c
> +++ b/xen/arch/x86/msi.c
> @@ -1443,6 +1443,51 @@ int pci_restore_msi_state(struct pci_dev *pdev)
>  return 0;
>  }
>  
> +int msi_control(struct pci_dev *pdev, bool msix, bool enable)
> +{
> +unsigned int cap = msix ? PCI_CAP_ID_MSIX : PCI_CAP_ID_MSI;
> +unsigned int other_cap = msix ? PCI_CAP_ID_MSI : PCI_CAP_ID_MSIX;
> +uint16_t cmd;
> +
> +if ( !use_msi )
> +return -EOPNOTSUPP;
> +
> +if ( !pci_find_cap_offset(pdev->seg,
> +  pdev->bus,
> +  PCI_SLOT(pdev->devfn),
> +  PCI_FUNC(pdev->devfn),

Please don't use PCI_SLOT() and PCI_FUNC() anymore, now that we
have pdev->dev and pdev->fn. And please put multiple arguments
on one line, as many as will fit.

> +  cap) )
> +return -ENODEV;
> +
> +cmd = pci_conf_read16(pdev->sbdf, PCI_COMMAND);
> +
> +/* don't allow enabling MSI(-X) and INTx at the same time */
> +if ( enable && ! (cmd & PCI_COMMAND_INTX_DISABLE) )

Stray blank after ! .

> +return -EBUSY;
> +
> +/* don't allow enabling both MSI and MSI-X at the same time */
> +if ( enable && find_msi_entry(pdev, -1, other_cap) )
> +return -EBUSY;

Combine both if()-s, since they both check "enable"?

Also - comment style again (should start with capital letter);
more instances elsewhere.

> +int intx_control(struct pci_dev *pdev, bool enable)
> +{
> +/* don't allow enabling INTx if MSI(-X) is already enabled */
> +if ( enable && find_msi_entry(pdev, -1, PCI_CAP_ID_MSI) )
> +return -EBUSY;
> +if ( enable && find_msi_entry(pdev, -1, PCI_CAP_ID_MSIX) )
> +return -EBUSY;

Here even more so you want to combine both if()-s.

> +pci_intx(pdev, enable);
> +return 0;
> +}

Blank line ahead of main return statement please, and I guess
another blank line ahead of the pci_intx() invocation wouldn't
hurt either.

> --- a/xen/arch/x86/physdev.c
> +++ b/xen/arch/x86/physdev.c
> @@ -662,6 +662,59 @@ ret_t do_physdev_op(int cmd, 
> XEN_GUEST_HANDLE_PARAM(void) arg)
>  break;
>  }
>  
> +case PHYSDEVOP_interrupt_control: {
> +struct physdev_interrupt_control op;
> +struct pci_dev *pdev;
> +int intr_type;
> +bool enable;
> +
> +ret = -EFAULT;
> +if ( copy_from_guest(&op, arg, 1) )
> +break;
> +
> +ret = -EINVAL;
> +if ( op.flags & ~(PHYSDEVOP_INTERRUPT_CONTROL_TYPE_MASK |
> +  PHYSDEVOP_INTERRUPT_CONTROL_ENABLE) )
> +break;
> +
> +intr_type = op.flags & PHYSDEVOP_INTERRUPT_CONTROL_TYPE_MASK;
> +enable = op.flags & PHYSDEVOP_INTERRUPT_CONTROL_ENABLE;
> +
> +pcidevs_lock();
> +pdev = pci_get_pdev(op.seg, op.bus, op.devfn);
> +ret = -ENODEV;
> +/* explicitly exclude hidden devices */
> +if ( !pdev || pdev->domain == dom_xen )

The right side should be avoided by reducing the scope of the device
lookup right away, through use of pci_get_pdev_by_domain(). This
will also ensure we don't exclusively rely on the XSM check below to
prevent abuse of this operation. (FAOD, while
pci_get_pdev_by_domain() doesn't assert that the pcidevs lock is
held, you should still acquire it here. That missing ASSERT() should
get added as soon as other violators of the locking requirement have
been taken care of.)

> +goto pci_unlock;
> +
> +ret = xsm_interrupt_control(XSM_DM_PRIV,
> +pdev->domain,
> +pdev->sbdf.sbdf,
> +intr_type,
> +en

Re: [Xen-devel] [PATCH] libxc/x86: avoid overflow in CPUID APIC ID adjustments

2019-09-20 Thread Jan Beulich
On 20.09.2019 12:05, Andrew Cooper wrote:
> On 19/09/2019 12:48, Jan Beulich wrote:
>> Recent AMD processors may report up to 128 logical processors in CPUID
>> leaf 1. Doubling this value produces 0 (which OSes sincerely dislike),
>> as the respective field is only 8 bits wide. Suppress doubling the value
>> (and its leaf 0x8008 counterpart) in such a case.
>>
>> Additionally don't even do any adjustment when the host topology already
>> includes room for multiple threads per core.
>>
>> Furthermore don't double the Maximum Cores Per Package at all - by us
>> introducing a fake HTT effect, the core count doesn't need to change.
>> Instead adjust the Maximum Logical Processors Sharing Cache field, which
>> so far was zapped altogether.
>>
>> Also zap leaf 4 (and at the same time leaf 2) EDX output for AMD.
>>
>> Signed-off-by: Jan Beulich 
>> ---
>> TBD: Using xc_physinfo() output here needs a better solution. The
>>  threads_per_core value returned is the count of active siblings of
>>  CPU 0, rather than a system wide applicable value (and constant
>>  over the entire session). Using CPUID output (leaves 4 and
>>  801e) doesn't look viable either, due to this not really being
>>  the host values on PVH. Judging from the host feature set's HTT
>>  flag also wouldn't tell us whether there actually are multiple
>>  threads per core.
> 
> The key thing is that htt != "more than one thread per core".  HTT is
> strictly a bit indicating that topology information is available in a
> new form in the CPUID leaves (or in AMDs case, the same information
> should be interpreted in a new way).  Just because HTT is set (and it
> does get set in non-HT capable systems), doesn't mean there is space for
> more than thread per core in topology information.
> 
> For PV guests, my adjustment in the CPUID series shows (what I believe
> to be) the only correct way of propagating the host HTT/CMP_LEGACY
> settings through.
> 
> For HVM guests, it really shouldn't really have anything to do with the
> host setting.  We should be choosing how many threads/core to give to
> the guest, then constructing the topology information from first principles.
> 
> Ignore the PVH case.  It is totally broken for several other reasons as
> well, and PVH Dom0 isn't a production-ready thing yet.
> 
> This gets us back to the PV case where the host information is actually
> in view, and (for backport purposes) can be trusted.

Okay, this means I'll revive and finish the half cpuid() based attempt
I had made initially. A fundamental question remains open though from
your reply: Do you agree with the idea of avoiding the multiplication
by 2 if the host topology already provides at least one bit of thread
ID within the APIC ID? Related to which then the question whether you
also agree with my approach of ditching the adjustment to Maximum Cores
Per Package? (I'm asking because I'd like to avoid several more round
trips of the patch itself.)

Jan

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

Re: [Xen-devel] [PATCH V4 5/8] xen/common: Introduce xrealloc_flex_struct() helper macros

2019-09-20 Thread Jan Beulich
On 20.09.2019 11:51, Oleksandr wrote:
>>> On 13.09.2019 17:35, Oleksandr Tyshchenko wrote:
 --- a/xen/include/xen/xmalloc.h
 +++ b/xen/include/xen/xmalloc.h
 @@ -35,6 +35,15 @@
   #define xzalloc_array(_type, _num) \
   ((_type *)_xzalloc_array(sizeof(_type), __alignof__(_type), 
 _num))
   +/* Allocate space for a structure with a flexible array of typed 
 objects. */
 +#define xmalloc_flex_struct(type, field, nr) \
 +    (type *)_xmalloc(offsetof(type, field[nr]), __alignof__(type))
 +
 +/* Re-allocate space for a structure with a flexible array of typed 
 objects. */
 +#define xrealloc_flex_struct(ptr, field, 
 nr)  \
 +    (typeof(ptr))_xrealloc(ptr, offsetof(typeof(*(ptr)), 
 field[nr]),  \
 +   __alignof__(typeof(*(ptr
>>> With the missing parentheses around the entire constructs added
>>> Reviewed-by: Jan Beulich 
>>
>> Thank you.
> 
> 
> Would you be happy if I add xzalloc_flex_struct here as well (may I 
> retain your R-b)?

Yes to both.

Jan

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

Re: [Xen-devel] [PATCH v2 03/11] ioreq: switch selection and forwarding to use ioservid_t

2019-09-20 Thread Jan Beulich
On 10.09.2019 14:31, Paul Durrant wrote:
>> -Original Message-
>> From: Roger Pau Monne 
>> Sent: 03 September 2019 17:14
>> To: xen-devel@lists.xenproject.org
>> Cc: Roger Pau Monne ; Jan Beulich ; 
>> Andrew Cooper
>> ; Wei Liu ; George Dunlap 
>> ; Ian
>> Jackson ; Julien Grall ; 
>> Konrad Rzeszutek Wilk
>> ; Stefano Stabellini ; Tim 
>> (Xen.org) ;
>> Paul Durrant 
>> Subject: [PATCH v2 03/11] ioreq: switch selection and forwarding to use 
>> ioservid_t
>>
>> hvm_select_ioreq_server and hvm_send_ioreq where both using
>> hvm_ioreq_server directly, switch to use ioservid_t in order to select
>> and forward ioreqs.
>>
>> This is a preparatory change, since future patches will use the ioreq
>> server id in order to differentiate between internal and external
>> ioreq servers.
>>
>> Signed-off-by: Roger Pau Monné 
> 
> Reviewed-by: Paul Durrant 
> 
> ... with one suggestion.
> 
> [snip]
>> diff --git a/xen/include/public/hvm/dm_op.h b/xen/include/public/hvm/dm_op.h
>> index d3b554d019..8725cc20d3 100644
>> --- a/xen/include/public/hvm/dm_op.h
>> +++ b/xen/include/public/hvm/dm_op.h
>> @@ -54,6 +54,7 @@
>>   */
>>
>>  typedef uint16_t ioservid_t;
>> +#define XEN_INVALID_IOSERVID 0x
>>
> 
> Perhaps use (ioservid_t)~0 rather than hardcoding?

And then (suitably parenthesized) applicable parts
Acked-by: Jan Beulich 

Jan

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

Re: [Xen-devel] [PATCH v2 04/11] ioreq: add fields to allow internal ioreq servers

2019-09-20 Thread Jan Beulich
On 03.09.2019 18:14, Roger Pau Monne wrote:
> --- a/xen/include/asm-x86/hvm/domain.h
> +++ b/xen/include/asm-x86/hvm/domain.h
> @@ -52,21 +52,29 @@ struct hvm_ioreq_vcpu {
>  #define MAX_NR_IO_RANGES  256
>  
>  struct hvm_ioreq_server {
> -struct domain  *target, *emulator;
> -
> +struct domain  *target;
>  /* Lock to serialize toolstack modifications */
>  spinlock_t lock;
> -
> -struct hvm_ioreq_page  ioreq;
> -struct list_head   ioreq_vcpu_list;
> -struct hvm_ioreq_page  bufioreq;
> -
> -/* Lock to serialize access to buffered ioreq ring */
> -spinlock_t bufioreq_lock;
> -evtchn_port_t  bufioreq_evtchn;
>  struct rangeset*range[NR_IO_RANGE_TYPES];
>  bool   enabled;
> -uint8_tbufioreq_handling;
> +
> +union {
> +struct {
> +struct domain  *emulator;
> +struct hvm_ioreq_page  ioreq;
> +struct list_head   ioreq_vcpu_list;
> +struct hvm_ioreq_page  bufioreq;
> +
> +/* Lock to serialize access to buffered ioreq ring */
> +spinlock_t bufioreq_lock;
> +evtchn_port_t  bufioreq_evtchn;
> +uint8_tbufioreq_handling;
> +};
> +struct {
> +void   *data;
> +int (*handler)(struct vcpu *v, ioreq_t *, void *);

If you omit the latter two parameter names, the first one should
be omitted, too. And if there was to be any inconsistency in this
regard, then the one parameter where the type doesn't immediately
clarify the purpose would be the one to have a name.

As to the struct vcpu * parameter - is there an expectation that
the handler would be called with this being other than "current"?
If not, the parameter would want to either be dropped, or be
named "curr".

Jan

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

[Xen-devel] [linux-4.14 test] 141471: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141471 linux-4.14 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141471/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-i386-pair 10 xen-boot/src_hostfail REGR. vs. 139910
 test-amd64-i386-pair 11 xen-boot/dst_hostfail REGR. vs. 139910
 test-amd64-amd64-xl-pvshim   12 guest-start  fail REGR. vs. 139910

Tests which did not succeed, but are not blocking:
 test-amd64-i386-xl-pvshim12 guest-start  fail   never pass
 test-amd64-i386-libvirt  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-amd64-i386-libvirt-xsm  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-amd64-i386-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-checkfail   never pass
 test-arm64-arm64-xl-credit1  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  14 saverestore-support-checkfail   never pass
 test-amd64-i386-xl-qemut-win7-amd64 17 guest-stop  fail never pass
 test-armhf-armhf-xl-rtds 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 14 saverestore-support-checkfail   never pass
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop  fail never pass
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stop fail never pass
 test-armhf-armhf-xl-credit1  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-libvirt 13 migrate-support-checkfail   never pass
 test-armhf-armhf-libvirt 14 saverestore-support-checkfail   never pass
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stop fail never pass
 test-armhf-armhf-xl  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-cubietruck 13 migrate-support-checkfail never pass
 test-armhf-armhf-xl-cubietruck 14 saverestore-support-checkfail never pass
 test-amd64-i386-xl-qemut-ws16-amd64 17 guest-stop  fail never pass
 test-arm64-arm64-xl  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  13 saverestore-support-checkfail   never pass
 test-armhf-armhf-libvirt-raw 12 migrate-support-checkfail   never pass
 test-armhf-armhf-libvirt-raw 13 saverestore-support-checkfail   never pass
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stop fail never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-checkfail  never pass
 test-armhf-armhf-xl-multivcpu 14 saverestore-support-checkfail  never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-checkfail   never pass
 test-amd64-i386-xl-qemuu-ws16-amd64 17 guest-stop  fail never pass
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stop fail never pass
 test-amd64-amd64-xl-qemuu-win10-i386 10 windows-installfail never pass
 test-amd64-i386-xl-qemut-win10-i386 10 windows-install fail never pass
 test-amd64-amd64-xl-qemut-win10-i386 10 windows-installfail never pass
 test-amd64-i386-xl-qemuu-win10-i386 10 windows-install fail never pass

version targeted for testing:
 linuxb10ab5e2c476b69689bc0c46d3094

Re: [Xen-devel] [PATCH v2 05/11] ioreq: add internal ioreq initialization support

2019-09-20 Thread Jan Beulich
On 03.09.2019 18:14, Roger Pau Monne wrote:
> @@ -821,6 +851,9 @@ int hvm_create_ioreq_server(struct domain *d, int 
> bufioreq_handling,
>  if ( i >= MAX_NR_IOREQ_SERVERS )
>  goto fail;
>  
> +ASSERT((internal &&
> +i >= MAX_NR_EXTERNAL_IOREQ_SERVERS && i < MAX_NR_IOREQ_SERVERS) 
> ||
> +   (!internal && i < MAX_NR_EXTERNAL_IOREQ_SERVERS));

Perhaps easier to read both here and in the event the assertion
would actually trigger as either

ASSERT(internal
   ? i >= MAX_NR_EXTERNAL_IOREQ_SERVERS && i < MAX_NR_IOREQ_SERVERS
   : i < MAX_NR_EXTERNAL_IOREQ_SERVERS);

or even

ASSERT(i < MAX_NR_EXTERNAL_IOREQ_SERVERS
   ? !internal
   : internal && i < MAX_NR_IOREQ_SERVERS);

?

Jan

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

Re: [Xen-devel] [PATCH] tools: fix linking hypervisor includes to tools include directory

2019-09-20 Thread Ian Jackson
Ian Jackson writes ("Re: [PATCH] tools: fix linking hypervisor includes to 
tools include directory"):
> Juergen Gross writes ("[PATCH] tools: fix linking hypervisor includes to 
> tools include directory"):
> > An incremental build of tools/include won't pickup new hypervisor
> > headers in tools/include/xen. Fix that.
> 
> I personally I think trying to get this kind of thing to work properly
> with recursive make is too hard to be worth trying.  But I won't stand
> in your way.
> 
> Acked-by: Ian Jackson 

And committed.

Ian.

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

Re: [Xen-devel] [PATCH] libxlu: Handle += in config files

2019-09-20 Thread Ian Jackson
Ian Jackson writes ("Re: [PATCH] libxlu: Handle += in config files"):
> Anthony PERARD writes ("Re: [PATCH] libxlu: Handle += in config files"):
> > I wonder if instead of doing += on all strings, we should instead have
> > `xl' whitelist the few options where += would make sense. (and at that
> > point, it would be easy to add a ' ' where is make sense, like
> > "cmdline"s. But then, how to tell users that it can't do "name+='-new'"?
> > because xlu would just print a warning, and xl would keep going with
> > name="".  Try "xl create memory+=42" ;-).
> 
> Do we really need to gold-plate it like this ?  If someone tries to
> append to a string when it doesn't make sense the software will still
> do what they ought to have expected.  And it doesn't seem like a
> likely kind of error.
> 
> As for the original patch,
> 
> Acked-by: Ian Jackson 

I reread the thread and I think there were no blocking objections.
So I have pushed it.

Thanks,
Ian.



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

Re: [Xen-devel] [PATCH v2 06/11] ioreq: allow dispatching ioreqs to internal servers

2019-09-20 Thread Jan Beulich
On 03.09.2019 18:14, Roger Pau Monne wrote:
> --- a/xen/arch/x86/hvm/ioreq.c
> +++ b/xen/arch/x86/hvm/ioreq.c
> @@ -1493,9 +1493,18 @@ int hvm_send_ioreq(ioservid_t id, ioreq_t *proto_p, 
> bool buffered)
>  
>  ASSERT(s);
>  
> +if ( hvm_ioreq_is_internal(id) && buffered )
> +{
> +ASSERT_UNREACHABLE();
> +return X86EMUL_UNHANDLEABLE;
> +}
> +
>  if ( buffered )
>  return hvm_send_buffered_ioreq(s, proto_p);

Perhaps better (to avoid yet another conditional on the non-
buffered path)

if ( buffered )
{
if ( likely(!hvm_ioreq_is_internal(id)) )
return hvm_send_buffered_ioreq(s, proto_p);

ASSERT_UNREACHABLE();
return X86EMUL_UNHANDLEABLE;
}

?

> +if ( hvm_ioreq_is_internal(id) )
> +return s->handler(curr, proto_p, s->data);

At this point I'm becoming curious what the significance of
ioreq_t's state field is for internal servers, as nothing was
said so far in this regard: Is it entirely unused? Is every
handler supposed to drive it? If so, what about return value
here and proto_p->state not really matching up? And if not,
shouldn't you update the field here, at the very least to
avoid any chance of confusing callers?

A possible consequence of the answers to this might be for
the hook's middle parameter to be constified (in patch 4).

Having said this, as a result of having looked at some of the
involved code, and with the cover letter not clarifying this,
what's the reason for going this seemingly more complicated
route, rather than putting vPCI behind the hvm_io_intercept()
machinery, just like is the case for other internal handling?

Jan

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

[Xen-devel] [xen-unstable-smoke test] 141498: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141498 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141498/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl   7 xen-boot fail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  14 saverestore-support-checkfail   never pass

version targeted for testing:
 xen  ce44fd015e55d0ecc47c160fb5ce69070aa4991b
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z7 days
Failing since141255  2019-09-12 21:01:22 Z7 days   50 attempts
Testing same since   141489  2019-09-20 01:02:25 Z0 days3 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  pass
 build-amd64  pass
 build-armhf  pass
 build-amd64-libvirt  pass
 test-armhf-armhf-xl  fail
 test-arm64-arm64-xl-xsm  pass
 test-amd64-amd64-xl-qemuu-debianhvm-amd64pass
 test-amd64-amd64-libvirt 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


Not pushing.

(No revision log; it would be 1029 lines long.)

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

[Xen-devel] [PATCH v12] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Alexandru Stefan ISAILA
A/D bit writes (on page walks) can be considered benign by an introspection
agent, so receiving vm_events for them is a pessimization. We try here to
optimize by filtering these events out.
Currently, we are fully emulating the instruction at RIP when the hardware sees
an EPT fault with npfec.kind != npfec_kind_with_gla. This is, however,
incorrect, because the instruction at RIP might legitimately cause an
EPT fault of its own while accessing a _different_ page from the original one,
where A/D were set.
The solution is to perform the whole emulation, while ignoring EPT restrictions
for the walk part, and taking them into account for the "actual" emulating of
the instruction at RIP. When we send out a vm_event, we don't want the emulation
to complete, since in that case we won't be able to veto whatever it is doing.
That would mean that we can't actually prevent any malicious activity, instead
we'd only be able to report on it.
When we see a "send-vm_event" case while emulating, we need to first send the
event out and then suspend the emulation (return X86EMUL_RETRY).
After the emulation stops we'll call hvm_vm_event_do_resume() again after the
introspection agent treats the event and resumes the guest. There, the
instruction at RIP will be fully emulated (with the EPT ignored) if the
introspection application allows it, and the guest will continue to run past
the instruction.

A common example is if the hardware exits because of an EPT fault caused by a
page walk, p2m_mem_access_check() decides if it is going to send a vm_event.
If the vm_event was sent and it would be treated so it runs the instruction
at RIP, that instruction might also hit a protected page and provoke a vm_event.

Now if npfec.kind == npfec_kind_in_gpt and 
d->arch.monitor.inguest_pagefault_disabled
is true then we are in the page walk case and we can do this emulation 
optimization
and emulate the page walk while ignoring the EPT, but don't ignore the EPT for 
the
emulation of the actual instruction.

In the first case we would have 2 EPT events, in the second case we would have
1 EPT event if the instruction at the RIP triggers an EPT event.

We use hvmemul_map_linear_addr() to intercept write access and
__hvm_copy() to intercept exec, read and write access.

In order to have __hvm_copy() issue ~X86EMUL_RETRY a new return type,
HVMTRANS_need_retry, was added and all the places that consume HVMTRANS*
and needed adjustment where changed accordingly.

hvm_emulate_send_vm_event() can return false if there was no violation,
if there was an error from monitor_traps() or p2m_get_mem_access().
-ESRCH from p2m_get_mem_access() is treated as restricted access.

NOTE: hvm_emulate_send_vm_event() assumes the caller will enable/disable
arch.vm_event->send_event

Signed-off-by: Alexandru Isaila 

---
Changes since V11:
- Rename HVMTRANS_bad_gfn_access to HVMTRANS_need_retry
- Check unlikely(v->arch.vm_event) first
- Move send_event disable from hvm_monitor_check_p2m() to the
caller
- Add the missing HVMTRANS_need_retry checks for HVMTRANS*
consumers.
---
 xen/arch/x86/hvm/emulate.c| 18 ++-
 xen/arch/x86/hvm/hvm.c|  9 
 xen/arch/x86/hvm/intercept.c  |  2 +
 xen/arch/x86/hvm/monitor.c| 78 +++
 xen/arch/x86/mm/mem_access.c  |  9 +++-
 xen/arch/x86/mm/shadow/hvm.c  |  1 +
 xen/include/asm-x86/hvm/monitor.h |  3 ++
 xen/include/asm-x86/hvm/support.h |  1 +
 xen/include/asm-x86/vm_event.h|  2 +
 9 files changed, 121 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index 36bcb526d3..ee9b97f5b6 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -548,6 +548,7 @@ static void *hvmemul_map_linear_addr(
 unsigned int nr_frames = ((linear + bytes - !!bytes) >> PAGE_SHIFT) -
 (linear >> PAGE_SHIFT) + 1;
 unsigned int i;
+gfn_t gfn;
 
 /*
  * mfn points to the next free slot.  All used slots have a page reference
@@ -582,7 +583,7 @@ static void *hvmemul_map_linear_addr(
 ASSERT(mfn_x(*mfn) == 0);
 
 res = hvm_translate_get_page(curr, addr, true, pfec,
- &pfinfo, &page, NULL, &p2mt);
+ &pfinfo, &page, &gfn, &p2mt);
 
 switch ( res )
 {
@@ -601,6 +602,7 @@ static void *hvmemul_map_linear_addr(
 
 case HVMTRANS_gfn_paged_out:
 case HVMTRANS_gfn_shared:
+case HVMTRANS_need_retry:
 err = ERR_PTR(~X86EMUL_RETRY);
 goto out;
 
@@ -626,6 +628,14 @@ static void *hvmemul_map_linear_addr(
 
 ASSERT(p2mt == p2m_ram_logdirty || !p2m_is_readonly(p2mt));
 }
+
+if ( unlikely(curr->arch.vm_event) &&
+ curr->arch.vm_event->send_event &&
+ hvm_monitor_check_p2m(addr, gfn, pfec, npfec_kind_with_gla) )
+{
+err = ERR_PTR(~X86EMUL_RETRY);
+go

Re: [Xen-devel] [PATCH] libxc/x86: avoid overflow in CPUID APIC ID adjustments

2019-09-20 Thread Andrew Cooper
On 20/09/2019 11:20, Jan Beulich wrote:
> On 20.09.2019 12:05, Andrew Cooper wrote:
>> On 19/09/2019 12:48, Jan Beulich wrote:
>>> Recent AMD processors may report up to 128 logical processors in CPUID
>>> leaf 1. Doubling this value produces 0 (which OSes sincerely dislike),
>>> as the respective field is only 8 bits wide. Suppress doubling the value
>>> (and its leaf 0x8008 counterpart) in such a case.
>>>
>>> Additionally don't even do any adjustment when the host topology already
>>> includes room for multiple threads per core.
>>>
>>> Furthermore don't double the Maximum Cores Per Package at all - by us
>>> introducing a fake HTT effect, the core count doesn't need to change.
>>> Instead adjust the Maximum Logical Processors Sharing Cache field, which
>>> so far was zapped altogether.
>>>
>>> Also zap leaf 4 (and at the same time leaf 2) EDX output for AMD.
>>>
>>> Signed-off-by: Jan Beulich 
>>> ---
>>> TBD: Using xc_physinfo() output here needs a better solution. The
>>>  threads_per_core value returned is the count of active siblings of
>>>  CPU 0, rather than a system wide applicable value (and constant
>>>  over the entire session). Using CPUID output (leaves 4 and
>>>  801e) doesn't look viable either, due to this not really being
>>>  the host values on PVH. Judging from the host feature set's HTT
>>>  flag also wouldn't tell us whether there actually are multiple
>>>  threads per core.
>> The key thing is that htt != "more than one thread per core".  HTT is
>> strictly a bit indicating that topology information is available in a
>> new form in the CPUID leaves (or in AMDs case, the same information
>> should be interpreted in a new way).  Just because HTT is set (and it
>> does get set in non-HT capable systems), doesn't mean there is space for
>> more than thread per core in topology information.
>>
>> For PV guests, my adjustment in the CPUID series shows (what I believe
>> to be) the only correct way of propagating the host HTT/CMP_LEGACY
>> settings through.
>>
>> For HVM guests, it really shouldn't really have anything to do with the
>> host setting.  We should be choosing how many threads/core to give to
>> the guest, then constructing the topology information from first principles.
>>
>> Ignore the PVH case.  It is totally broken for several other reasons as
>> well, and PVH Dom0 isn't a production-ready thing yet.
>>
>> This gets us back to the PV case where the host information is actually
>> in view, and (for backport purposes) can be trusted.
> Okay, this means I'll revive and finish the half cpuid() based attempt
> I had made initially. A fundamental question remains open though from
> your reply: Do you agree with the idea of avoiding the multiplication
> by 2 if the host topology already provides at least one bit of thread
> ID within the APIC ID?

In theory, yes.  In practice, I'd err on the side of not.

A further problem with CPUID handling is that it is recalculated from
scratch even after migrate.  Therefore, any changes to the algorithm
will cause inconsistencies to be seen in the guest across
migrate/upgrade.  This problem becomes substantially worse if the patch
is backported to stable trees.

Now that get_cpu_policy has existed for a little while, and
set_cpu_policy is imminent, fixing the "CPUID changes across migrate"
problem is almost doable, and is on the plan for toolstack work.

That said, ultimately, anything "pre 4.14" => "4.14" is going to hit a
discontinuity, because there is information discarded on the source side
which can't be reconstructed on the destination.

Overall, I would suggest doing the absolute minimum change required to
unbreak Rome CPUs.  Everything further is going to cause differences
across migrate.

In 4.14, I think we can reasonably fix all of:
1) CPUID data discarded for migrate
2) domain builder uses native CPUID
3) topology handling isn't consistent with SDM/APM

all of which is libxc/libxl work, once set_cpu_policy() is in place.

~Andrew

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

Re: [Xen-devel] [PATCH v3 07/12] livepatch: Add per-function applied/reverted state tracking marker

2019-09-20 Thread Wieczorkiewicz, Pawel

> On 19. Sep 2019, at 17:18, Ross Lagerwall  wrote:
> 
> On 9/16/19 11:59 AM, Pawel Wieczorkiewicz wrote:
>> Livepatch only tracks an entire payload applied/reverted state. But,
>> with an option to supply the apply_payload() and/or revert_payload()
>> functions as optional hooks, it becomes possible to intermix the
>> execution of the original apply_payload()/revert_payload() functions
>> with their dynamically supplied counterparts.
>> It is important then to track the current state of every function
>> being patched and prevent situations of unintentional double-apply
>> or unapplied revert.
>> To support that, it is necessary to extend public interface of the
>> livepatch. The struct livepatch_func gets additional field holding
>> the applied/reverted state marker.
>> To reflect the livepatch payload ABI change, bump the version flag
>> LIVEPATCH_PAYLOAD_VERSION up to 2.
>> [And also update the top of the design document]
> snip> @@ -834,6 +839,8 @@ struct livepatch_func {
>>  uint32_t old_size;
>>  uint8_t version;/* MUST be LIVEPATCH_PAYLOAD_VERSION. */
>>  uint8_t opaque[31];
>> +uint8_t applied;
>> +uint8_t _pad[7];
>>  };
>>  typedef struct livepatch_func livepatch_func_t;
>>  #endif
>> diff --git a/xen/include/xen/livepatch.h b/xen/include/xen/livepatch.h
>> index 2aec532ee2..28f9536776 100644
>> --- a/xen/include/xen/livepatch.h
>> +++ b/xen/include/xen/livepatch.h
>> @@ -109,6 +109,31 @@ static inline int livepatch_verify_distance(const 
>> struct livepatch_func *func)
>>return 0;
>>  }
>> +
>> +static inline bool_t is_func_applied(const struct livepatch_func *func)
> 
> Use bool rather than bool_t (throughout the patch).
> 

ACK.

>> +{
>> +if ( func->applied == LIVEPATCH_FUNC_APPLIED )
>> +{
>> +printk(XENLOG_WARNING LIVEPATCH "%s: %s has been already applied 
>> before\n",
>> +__func__, func->name);
> 
> How about dropping this function and having a wrapper function like this:
> 
> common_livepatch_apply() {
>if (func->applied == LIVEPATCH_FUNC_APPLIED) {
>WARN(...)
>return
>}
> 
>arch_livepatch_apply()
> 
>func->applied = LIVEPATCH_FUNC_APPLIED
> }
> 
> This could be used by the normal apply code and any apply hooks.
> 
> This avoids having duplicate code in each of the architectures that is not 
> arch specific and also avoids having a state querying function emit a warning 
> which seems odd to me.
> 

Yes. That makes a lot of sense. Let me do that.

Thanks.

>> +return true;
>> +}
>> +
>> +return false;
>> +}
>> +
>> +static inline bool_t is_func_reverted(const struct livepatch_func *func)
>> +{
>> +if ( !func->old_addr || func->applied == LIVEPATCH_FUNC_NOT_APPLIED )
>> +{
>> +printk(XENLOG_WARNING LIVEPATCH "%s: %s has not been applied 
>> before\n",
>> +__func__, func->name);
>> +return true;
>> +}
>> +
>> +return false;
>> +}
>> +
>>  /*
>>   * These functions are called around the critical region patching live code,
>>   * for an architecture to take make appropratie global state adjustments.
>> @@ -117,7 +142,7 @@ int arch_livepatch_quiesce(void);
>>  void arch_livepatch_revive(void);
>>  
> -- 
> Ross Lagerwall

Best Regards,
Pawel Wieczorkiewicz






Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Ralf Herbrich
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879




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

Re: [Xen-devel] [PATCH V4 8/8] iommu/arm: Add Renesas IPMMU-VMSA support

2019-09-20 Thread Oleksandr


On 20.09.19 03:25, Yoshihiro Shimoda wrote:

Hi Oleksandr-san,


Hi, Shimoda-san



From: Oleksandr Tyshchenko, Sent: Saturday, September 14, 2019 12:35 AM

From: Oleksandr Tyshchenko 

The IPMMU-VMSA is VMSA-compatible I/O Memory Management Unit (IOMMU)
which provides address translation and access protection functionalities
to processing units and interconnect networks.

Please note, current driver is supposed to work only with newest
R-Car Gen3 SoCs revisions which IPMMU hardware supports stage 2 translation
table format and is able to use CPU's P2M table as is if one is
3-level page table (up to 40 bit IPA).

The major differences compare to the Linux driver are:

1. Stage 1/Stage 2 translation. Linux driver supports Stage 1
translation only (with Stage 1 translation table format). It manages
page table by itself. But Xen driver supports Stage 2 translation
(with Stage 2 translation table format) to be able to share the P2M
with the CPU. Stage 1 translation is always bypassed in Xen driver.

So, Xen driver is supposed to be used with newest R-Car Gen3 SoC revisions
only (H3 ES3.0, M3-W+, etc.) which IPMMU H/W supports stage 2 translation
table format.

2. AArch64 support. Linux driver uses VMSAv8-32 mode, while Xen driver
enables Armv8 VMSAv8-64 mode to cover up to 40 bit input address.

3. Context bank (sets of page table) usage. In Xen, each context bank is
mapped to one Xen domain. So, all devices being pass throughed to the
same Xen domain share the same context bank.

4. IPMMU device tracking. In Xen, all IOMMU devices are managed
by single driver instance. So, driver uses global list to keep track
of registered IPMMU devices.

Signed-off-by: Oleksandr Tyshchenko 
CC: Julien Grall 
CC: Yoshihiro Shimoda 

Thank you for the patch. I have reviewed this patch about the IPMMU hardware 
bits,
so,

Reviewed-by: Yoshihiro Shimoda  [for the 
IPMMU H/W bits]


Thank you.


...

I have checked new driver version on R-Car Gen3 M3N SoC and can confirm 
it works.


--
Regards,

Oleksandr Tyshchenko


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

Re: [Xen-devel] [PATCH] xen/arm: iommu: Panic if not all IOMMUs are initialized

2019-09-20 Thread Oleksandr


On 20.09.19 03:31, Stefano Stabellini wrote:

Hi, Stefano.


On Tue, 20 Aug 2019, Oleksandr wrote:

On 20.08.19 15:22, Julien Grall wrote:

Hi, Julien


   -iommu_setup();
+rc = iommu_setup();
+if ( !iommu_enabled && rc != -ENODEV )
+panic("Couldn't configure correctly all the IOMMUs.");
   

Please add "\n"


You can add:

Tested-by: Oleksandr Tyshchenko 

Reviewed-by: Stefano Stabellini 

I added the "\n", fixed a typo in the commit message, and committed the
patch.



Thank you, I will re-base and drop dependency from the cover letter for 
the coming V5 (IPMMU+iommu_fwspec).



--
Regards,

Oleksandr Tyshchenko


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

Re: [Xen-devel] [PATCH] libxc/x86: avoid overflow in CPUID APIC ID adjustments

2019-09-20 Thread Jan Beulich
On 20.09.2019 14:40, Andrew Cooper wrote:
> Overall, I would suggest doing the absolute minimum change required to
> unbreak Rome CPUs.

Well, okay, I'm zapping everything else, but it feels wrong to
leave in place the similar overflow in intel_xc_cpuid_policy().

Jan

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

Re: [Xen-devel] [PATCH V4 7/8] iommu/arm: Introduce iommu_add_dt_device API

2019-09-20 Thread Julien Grall

On 19/09/2019 14:26, Oleksandr wrote:


On 19.09.19 15:29, Julien Grall wrote:

Hi,


Hi, Julien


Hi,






+
+int __init iommu_add_dt_device(struct dt_device_node *np)


Sorry to only realise it now. Would it make sense to have this function 
implemented in xen/passthrough/device_tree.c? 


Not entirely sure. device_tree.c is a common code. The iommu_fwspec stuff 
(widely used in this function) is ARM code.


Some of the device_tree.c already contains Arm specific code (such as device.h).

DT has been only used by Arm so far, so it is sadly fairly tie to the 
architecture. But it should be easy to make it generic if needs be (such as 
for RISCv).


While iommu_fwspec is been implemented in Arm headers, this could potentially 
be made common. So I would still prefer this that function is moved in 
device_tree.c


Well, will move. Also I will remove __init as it can be called at runtime...


As for runtime:

The current implementation allows us to fail at early stage if something is 
wrong with the device which is behind an IOMMU (and needs to be protected). As 
we scan for all present devices, but not only for "passthrough".
The "splitting" into handle_device() for hwdom and iommu_do_dt_domctl() for 
other guests will postpone an error recognition to the guest domain creation 
time. So, we would have non function system anyway. Wouldn't be better to fail 
early instead of continue and fail anyway?


Yes your implementation allows us to fail at early stage but then you are 
abusing the function handle_device(). There are actually no promise this will be 
called for every device going forward. Think about dom0less where the goal is to 
have no dom0 at all.


You are also tying the order of the domains creation as dom0 would have to be 
always created before any other domains are created.


Similar (ab)use of handle_device() does not exist, so I would rather not start 
to introduce them because this will become quickly unmaintainable as we are 
mixing dom0 creation and Xen initialization.


Even without this series, assigning a device to the guest may not be a success 
because the IOMMU may not have enough context bank (used for configuring the 
IOMMU stage-2) or there are not enough memory. Not been able to add the device 
to the IOMMU driver is only another example where it may fail.


But I would not consider this as not functional. The rest of your system may 
work perfectly even if this particular device is not usable. There are no 
security risk as the IOMMU should block any transaction by default.


I am also not in favor of parsing again the Device-Tree (we have enough of 
them), so this is the best solution I can come up. Feel free to suggest 
something different.


Cheers,

--
Julien Grall

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

Re: [Xen-devel] [PATCH V4 7/8] iommu/arm: Introduce iommu_add_dt_device API

2019-09-20 Thread Oleksandr



Hi Julien









+
+int __init iommu_add_dt_device(struct dt_device_node *np)


Sorry to only realise it now. Would it make sense to have this 
function implemented in xen/passthrough/device_tree.c? 


Not entirely sure. device_tree.c is a common code. The iommu_fwspec 
stuff (widely used in this function) is ARM code.


Some of the device_tree.c already contains Arm specific code (such 
as device.h).


DT has been only used by Arm so far, so it is sadly fairly tie to 
the architecture. But it should be easy to make it generic if needs 
be (such as for RISCv).


While iommu_fwspec is been implemented in Arm headers, this could 
potentially be made common. So I would still prefer this that 
function is moved in device_tree.c


Well, will move. Also I will remove __init as it can be called at 
runtime...



As for runtime:

The current implementation allows us to fail at early stage if 
something is wrong with the device which is behind an IOMMU (and 
needs to be protected). As we scan for all present devices, but not 
only for "passthrough".
The "splitting" into handle_device() for hwdom and 
iommu_do_dt_domctl() for other guests will postpone an error 
recognition to the guest domain creation time. So, we would have non 
function system anyway. Wouldn't be better to fail early instead of 
continue and fail anyway?


Yes your implementation allows us to fail at early stage but then you 
are abusing the function handle_device(). There are actually no 
promise this will be called for every device going forward. Think 
about dom0less where the goal is to have no dom0 at all.


You are also tying the order of the domains creation as dom0 would 
have to be always created before any other domains are created.


Similar (ab)use of handle_device() does not exist, so I would rather 
not start to introduce them because this will become quickly 
unmaintainable as we are mixing dom0 creation and Xen initialization.


Even without this series, assigning a device to the guest may not be a 
success because the IOMMU may not have enough context bank (used for 
configuring the IOMMU stage-2) or there are not enough memory. Not 
been able to add the device to the IOMMU driver is only another 
example where it may fail.


But I would not consider this as not functional. The rest of your 
system may work perfectly even if this particular device is not 
usable. There are no security risk as the IOMMU should block any 
transaction by default.


I am also not in favor of parsing again the Device-Tree (we have 
enough of them), so this is the best solution I can come up. Feel free 
to suggest something different.


I am happy with the explanation, sounds reasonable. Will modify patch as 
you suggested.



--
Regards,

Oleksandr Tyshchenko


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

[Xen-devel] [ovmf test] 141481: all pass - PUSHED

2019-09-20 Thread osstest service owner
flight 141481 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141481/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf 85ccbee2abf4ac9ed006409d1b02a3bdd660261c
baseline version:
 ovmf b0c15fb128c518b9acd8611a2deea213e9e55193

Last test of basis   141451  2019-09-19 01:09:48 Z1 days
Testing same since   141481  2019-09-19 19:13:57 Z0 days1 attempts


People who touched revisions under test:
  Fan, ZhijuX 
  Michael Johnson 
  Ray Ni 
  Zhiju.Fan 

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
   b0c15fb128..85ccbee2ab  85ccbee2abf4ac9ed006409d1b02a3bdd660261c -> 
xen-tested-master

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

[Xen-devel] [PATCH v2] libxc/x86: avoid overflow in CPUID APIC ID adjustments

2019-09-20 Thread Jan Beulich
Recent AMD processors may report up to 128 logical processors in CPUID
leaf 1. Doubling this value produces 0 (which OSes sincerely dislike),
as the respective field is only 8 bits wide. Suppress doubling the value
(and its leaf 0x8008 counterpart) in such a case.

Note that while there's a similar overflow in intel_xc_cpuid_policy(),
that one is being left alone for now.

Note further that while it was considered to suppress the multiplication
by 2 altogether if the host topology already provides at least one bit
of thread ID within APIC IDs, it was decided to avoid more change here
than really needed at this point.

Also zap leaf 4 (and at the same time leaf 2) EDX output for AMD, as it
should have been from the beginning.

Signed-off-by: Jan Beulich 
---
v2: Drop use of physinfo. Drop Intel-only leaf 4 change. Increment
ApicIdCoreSize only when doubling NumberOfCores.

--- a/tools/libxc/xc_cpuid_x86.c
+++ b/tools/libxc/xc_cpuid_x86.c
@@ -385,7 +385,7 @@ static void amd_xc_cpuid_policy(const st
 {
 case 0x0002:
 case 0x0004:
-regs[0] = regs[1] = regs[2] = 0;
+regs[0] = regs[1] = regs[2] = regs[3] = 0;
 break;
 
 case 0x8000:
@@ -395,11 +395,20 @@ static void amd_xc_cpuid_policy(const st
 
 case 0x8008:
 /*
- * ECX[15:12] is ApicIdCoreSize: ECX[7:0] is NumberOfCores (minus one).
- * Update to reflect vLAPIC_ID = vCPU_ID * 2.
+ * ECX[15:12] is ApicIdCoreSize.
+ * ECX[7:0] is NumberOfCores (minus one).
+ * Update to reflect vLAPIC_ID = vCPU_ID * 2.  But make sure to avoid
+ * - overflow,
+ * - going out of sync with leaf 1 EBX[23:16],
+ * - incrementing ApicIdCoreSize when it's zero (which changes the
+ *   meaning of bits 7:0).
  */
-regs[2] = ((regs[2] + (1u << 12)) & 0xf000u) |
-  ((regs[2] & 0xffu) << 1) | 1u;
+if ( (regs[2] & 0x7fu) < 0x7fu )
+{
+if ( (regs[2] & 0xf000u) && (regs[2] & 0xf000u) != 0xf000u )
+regs[2] = ((regs[2] + 0x1000u) & 0xf000u) | (regs[2] & 0xffu);
+regs[2] = (regs[2] & 0xf000u) | ((regs[2] & 0x7fu) << 1) | 1u;
+}
 break;
 
 case 0x800a: {
@@ -478,9 +487,13 @@ static void xc_cpuid_hvm_policy(const st
 case 0x0001:
 /*
  * EBX[23:16] is Maximum Logical Processors Per Package.
- * Update to reflect vLAPIC_ID = vCPU_ID * 2.
+ * Update to reflect vLAPIC_ID = vCPU_ID * 2, but make sure to avoid
+ * overflow.
  */
-regs[1] = (regs[1] & 0xu) | ((regs[1] & 0x007fu) << 1);
+if ( !(regs[1] & 0x0080u) )
+regs[1] = (regs[1] & 0xu) | ((regs[1] & 0x007fu) << 1);
+else
+regs[1] &= 0x00ffu;
 
 regs[2] = info->featureset[featureword_of(X86_FEATURE_SSE3)];
 regs[3] = (info->featureset[featureword_of(X86_FEATURE_FPU)] |

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

Re: [Xen-devel] [PATCH v2] libxc/x86: avoid overflow in CPUID APIC ID adjustments

2019-09-20 Thread Jan Beulich
On 20.09.2019 15:54, Jan Beulich wrote:
> Recent AMD processors may report up to 128 logical processors in CPUID
> leaf 1. Doubling this value produces 0 (which OSes sincerely dislike),
> as the respective field is only 8 bits wide. Suppress doubling the value
> (and its leaf 0x8008 counterpart) in such a case.
> 
> Note that while there's a similar overflow in intel_xc_cpuid_policy(),
> that one is being left alone for now.
> 
> Note further that while it was considered to suppress the multiplication
> by 2 altogether if the host topology already provides at least one bit
> of thread ID within APIC IDs, it was decided to avoid more change here
> than really needed at this point.

Given this I've just changed the title to "avoid certain overflows in
CPUID APIC ID adjustments".

Jan

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

[Xen-devel] [linux-linus bisection] complete test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow

2019-09-20 Thread osstest service owner
branch xen-unstable
xenbranch xen-unstable
job test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow
testid xen-boot

Tree: linux git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: ovmf git://xenbits.xen.org/osstest/ovmf.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: seabios git://xenbits.xen.org/osstest/seabios.git
Tree: xen git://xenbits.xen.org/xen.git

*** Found and reproduced problem changeset ***

  Bug is in tree:  linux 
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
  Bug introduced:  d013cc800a2a41b0496f99a11f3cff724cf65941
  Bug not present: 9e0babf2c06c73cda2c0cd37a1653d823adb40ec
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/141509/


  (Revision log too long, omitted.)


For bisection revision-tuple graph see:
   
http://logs.test-lab.xenproject.org/osstest/results/bisect/linux-linus/test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow.xen-boot.html
Revision IDs in each graph node refer, respectively, to the Trees above.


Running cs-bisection-step 
--graph-out=/home/logs/results/bisect/linux-linus/test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow.xen-boot
 --summary-out=tmp/141509.bisection-summary --basis-template=133580 
--blessings=real,real-bisect linux-linus 
test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow xen-boot
Searching for failure / basis pass:
 141446 fail [host=italia1] / 138849 [host=chardonnay1] 138813 [host=albana1] 
138780 [host=baroque1] 138754 [host=debina1] 138735 [host=debina0] 138710 
[host=elbling1] 138680 [host=pinot0] 138661 [host=albana0] 138639 
[host=italia0] 138612 [host=fiano0] 138584 [host=rimava1] 138488 
[host=chardonnay0] 138386 [host=albana1] 138245 [host=chardonnay1] 138073 
[host=pinot1] 137986 [host=baroque1] 137896 ok.
Failure / basis pass flights: 141446 / 137896
(tree with no url: minios)
Tree: linux git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: ovmf git://xenbits.xen.org/osstest/ovmf.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: seabios git://xenbits.xen.org/osstest/seabios.git
Tree: xen git://xenbits.xen.org/xen.git
Latest d013cc800a2a41b0496f99a11f3cff724cf65941 
c530a75c1e6a472b0eb9558310b518f0dfcd8860 
82c1a2120855e7fe32417870910f4ce20dca97a3 
d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
43f5df79dad6738d52ea79d072de2b56eb96a91f 
1014f47c7a808e025b8920ab80bfe73a2888b3e5
Basis pass 9e0babf2c06c73cda2c0cd37a1653d823adb40ec 
c530a75c1e6a472b0eb9558310b518f0dfcd8860 
b0663641c977f97bef785c86978603c3a31a3d1c 
d0d8ad39ecb51cd7497cd524484fe09f50876798 
9cca02d8ffc23e9688a971d858e4ffdff5389b11 
85137fb5f2dfa5f83e9e340ca881c634ae14d4e9 
36a1c7c213e13eb64d2c2d8aa9c5c805fe19020a
Generating revisions with ./adhoc-revtuple-generator  
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git#9e0babf2c06c73cda2c0cd37a1653d823adb40ec-d013cc800a2a41b0496f99a11f3cff724cf65941
 
git://xenbits.xen.org/osstest/linux-firmware.git#c530a75c1e6a472b0eb9558310b518f0dfcd8860-c530a75c1e6a472b0eb9558310b518f0dfcd8860
 
git://xenbits.xen.org/osstest/ovmf.git#b0663641c977f97bef785c86978603c3a31a3d1c-82c1a2120855e7fe32417870910f4ce20dca97a3
 git://xenbits.xen.org/qemu-xen-traditional.\
 
git#d0d8ad39ecb51cd7497cd524484fe09f50876798-d0d8ad39ecb51cd7497cd524484fe09f50876798
 
git://xenbits.xen.org/qemu-xen.git#9cca02d8ffc23e9688a971d858e4ffdff5389b11-cef9660618a880ced798375a0fd16a8ad80bd0f0
 
git://xenbits.xen.org/osstest/seabios.git#85137fb5f2dfa5f83e9e340ca881c634ae14d4e9-43f5df79dad6738d52ea79d072de2b56eb96a91f
 
git://xenbits.xen.org/xen.git#36a1c7c213e13eb64d2c2d8aa9c5c805fe19020a-1014f47c7a808e025b8920ab80bfe73a2888b3e5
adhoc-revtuple-generator: tree discontiguous: linux-2.6
From git://cache:9419/git://xenbits.xen.org/osstest/ovmf
   b0c15fb128..85ccbee2ab  xen-tested-master -> origin/xen-tested-master
adhoc-revtuple-generator: tree discontiguous: qemu-xen
Loaded 3003 nodes in revision graph
Searching for test results:
 137739 [host=elbling1]
 137896 pass 9e0babf2c06c73cda2c0cd37a1653d823adb40ec 
c530a75c1e6a472b0eb9558310b518f0dfcd8860 
b0663641c977f97bef785c86978603c3a31a3d1c 
d0d8ad39ecb51cd7497cd524484fe09f50876798 
9cca02d8ffc23e9688a971d858e4ffdff5389b11 
85137fb5f2dfa5f83e9e340ca881c634ae14d4e9 
36a1c7c213e13eb64d2c2d8aa9c5c805fe19020a
 137986 [host=baroque1]
 138073 [host=pinot1]
 138245 [host=chardonnay1]
 138386 [host=albana1]
 138488 [host=chardonnay0]
 138584 [host=rimava1]
 138612 [host=fiano0]
 138639 [host=italia0]
 138661 [host=albana0]
 138680 [host=pinot0]
 138710 [host=elbling1]
 138735 [host=debina0]
 138754 [host=debina1]
 138780 [host=baroque1]
 138813 [host=albana1]
 138849 [host=chardonnay1]
 138878 fail irrel

Re: [Xen-devel] [PATCH v12] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Jan Beulich
On 20.09.2019 14:16, Alexandru Stefan ISAILA wrote:
> In order to have __hvm_copy() issue ~X86EMUL_RETRY a new return type,
> HVMTRANS_need_retry, was added and all the places that consume HVMTRANS*
> and needed adjustment where changed accordingly.

This is wrong and hence confusing: __hvm_copy() would never return
~X86EMUL_RETRY. In fact I think you've confused yourself enough to
make a questionable (possibly resulting) change:

> @@ -582,7 +583,7 @@ static void *hvmemul_map_linear_addr(
>  ASSERT(mfn_x(*mfn) == 0);
>  
>  res = hvm_translate_get_page(curr, addr, true, pfec,
> - &pfinfo, &page, NULL, &p2mt);
> + &pfinfo, &page, &gfn, &p2mt);

This function ...

>  switch ( res )
>  {
> @@ -601,6 +602,7 @@ static void *hvmemul_map_linear_addr(
>  
>  case HVMTRANS_gfn_paged_out:
>  case HVMTRANS_gfn_shared:
> +case HVMTRANS_need_retry:

... can't return this value, so you should omit this addition,
letting the new return value go through "default:".

> @@ -1852,6 +1864,8 @@ static int hvmemul_rep_movs(
>  
>  xfree(buf);
>  
> +ASSERT(rc != HVMTRANS_need_retry);
> +
>  if ( rc == HVMTRANS_gfn_paged_out )
>  return X86EMUL_RETRY;
>  if ( rc == HVMTRANS_gfn_shared )
> @@ -1964,6 +1978,8 @@ static int hvmemul_rep_stos(
>  if ( buf != p_data )
>  xfree(buf);
>  
> +ASSERT(rc != HVMTRANS_need_retry);
> +
>  switch ( rc )
>  {
>  case HVMTRANS_gfn_paged_out:

Looking at this again, I think it would better be an addition to
the switch() (using ASSERT_UNREACHABLE()). Generally this is
true for the rep_movs case as well, but that one would first
need converting to switch(), which I agree is beyond the scope
of this change. In both cases a brief comment would seem
worthwhile adding, clarifying that the new return value can
result from hvm_copy_*_guest_linear() only. This might become
relevant in particular if, down the road, we invent more cases
where HVMTRANS_need_retry is produced.

Then again maybe switching rep_movs to switch() would still be
a good thing to do here: Don't you agree that from an abstract
pov in both cases above X86EMUL_RETRY should be produced, if at
a future point physical accesses could also produce
HVMTRANS_need_retry? With this retaining the assertions is
certainly an option, but I think the fallback return value for
this case should still be X86EMUL_RETRY.

Jan

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

Re: [Xen-devel] [PATCH v3 23/47] xen/sched: switch sched_move_irqs() to take sched_unit as parameter

2019-09-20 Thread Jan Beulich
On 14.09.2019 10:52, Juergen Gross wrote:
> --- a/xen/common/schedule.c
> +++ b/xen/common/schedule.c
> @@ -474,12 +474,20 @@ int sched_init_vcpu(struct vcpu *v)
>  return 0;
>  }
>  
> -static void sched_move_irqs(struct vcpu *v)
> +static void vcpu_move_irqs(struct vcpu *v)
>  {
>  arch_move_irqs(v);
>  evtchn_move_pirqs(v);
>  }
>  
> +static void sched_move_irqs(struct sched_unit *unit)

I think the parameter could be constified.

> @@ -1736,7 +1744,7 @@ static void schedule(void)
>  stop_timer(&prev->vcpu_list->periodic_timer);
>  
>  if ( next_slice.migrated )
> -sched_move_irqs(next->vcpu_list);
> +vcpu_move_irqs(next->vcpu_list);

Why is this not also sched_move_irqs(), at which point there wouldn't
be a need for a separate vcpu_move_irqs() afaict?

Jan

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

[Xen-devel] [xen-unstable-smoke test] 141508: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141508 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141508/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 build-amd64-libvirt   1 build-check(1)   blocked  n/a
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a

version targeted for testing:
 xen  a30910bfd71a64895f0d6ddbb301cf1b5ed6c2f4
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z7 days
Failing since141255  2019-09-12 21:01:22 Z7 days   51 attempts
Testing same since   141508  2019-09-20 13:00:42 Z0 days1 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1732 lines long.)

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

Re: [Xen-devel] [PATCH v12] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Alexandru Stefan ISAILA


On 20.09.2019 17:22, Jan Beulich wrote:
> On 20.09.2019 14:16, Alexandru Stefan ISAILA wrote:
>> In order to have __hvm_copy() issue ~X86EMUL_RETRY a new return type,
>> HVMTRANS_need_retry, was added and all the places that consume HVMTRANS*
>> and needed adjustment where changed accordingly.
> 
> This is wrong and hence confusing: __hvm_copy() would never return
> ~X86EMUL_RETRY. In fact I think you've confused yourself enough to
> make a questionable (possibly resulting) change:

The idea was to get X86EMUL_RETRY down the line from __hvm_copy().
I will adjust this.

> 
>> @@ -582,7 +583,7 @@ static void *hvmemul_map_linear_addr(
>>   ASSERT(mfn_x(*mfn) == 0);
>>   
>>   res = hvm_translate_get_page(curr, addr, true, pfec,
>> - &pfinfo, &page, NULL, &p2mt);
>> + &pfinfo, &page, &gfn, &p2mt);
> 
> This function ...
> 
>>   switch ( res )
>>   {
>> @@ -601,6 +602,7 @@ static void *hvmemul_map_linear_addr(
>>   
>>   case HVMTRANS_gfn_paged_out:
>>   case HVMTRANS_gfn_shared:
>> +case HVMTRANS_need_retry:
> 
> ... can't return this value, so you should omit this addition,
> letting the new return value go through "default:".

It is very clear that HVMTRANS_need_retry will not be returned form that 
function. At least for now. I thought you wanted to have every possible 
case covered in the switch. I can remove that case, there is not problem 
here because, like I've said, it will never enter that case.

But as you said later work with HVMTRANS_need_retry will result in 
returning X86EMUL_RETRY. Any way it's your call if I should remove it or 
not.

> 
>> @@ -1852,6 +1864,8 @@ static int hvmemul_rep_movs(
>>   
>>   xfree(buf);
>>   
>> +ASSERT(rc != HVMTRANS_need_retry);
>> +
>>   if ( rc == HVMTRANS_gfn_paged_out )
>>   return X86EMUL_RETRY;
>>   if ( rc == HVMTRANS_gfn_shared )
>> @@ -1964,6 +1978,8 @@ static int hvmemul_rep_stos(
>>   if ( buf != p_data )
>>   xfree(buf);
>>   
>> +ASSERT(rc != HVMTRANS_need_retry);
>> +
>>   switch ( rc )
>>   {
>>   case HVMTRANS_gfn_paged_out:
> 
> Looking at this again, I think it would better be an addition to
> the switch() (using ASSERT_UNREACHABLE()). Generally this is
> true for the rep_movs case as well, but that one would first
> need converting to switch(), which I agree is beyond the scope

I agree that this is beyond the scope of this patch but it's not that 
big of a change and it can be done.

But isn't having a default ASSERT_UNREACHABLE(); in both switch cases 
change the behavior of the function?

> of this change. In both cases a brief comment would seem
> worthwhile adding, clarifying that the new return value can
> result from hvm_copy_*_guest_linear() only. This might become
> relevant in particular if, down the road, we invent more cases
> where HVMTRANS_need_retry is produced.

Is this comment aimed for the commit message or another place?

> 
> Then again maybe switching rep_movs to switch() would still be
> a good thing to do here: Don't you agree that from an abstract
> pov in both cases above X86EMUL_RETRY should be produced, if at
> a future point physical accesses could also produce
> HVMTRANS_need_retry? With this retaining the assertions is
> certainly an option, but I think the fallback return value for
> this case should still be X86EMUL_RETRY.
> 
___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v3 24/47] xen: switch from for_each_vcpu() to for_each_sched_unit()

2019-09-20 Thread Jan Beulich
On 14.09.2019 10:52, Juergen Gross wrote:
> @@ -508,25 +515,27 @@ int sched_move_domain(struct domain *d, struct cpupool 
> *c)
>  if ( IS_ERR(domdata) )
>  return PTR_ERR(domdata);
>  
> -vcpu_priv = xzalloc_array(void *, d->max_vcpus);
> -if ( vcpu_priv == NULL )
> +/* TODO: fix array size with multiple vcpus per unit. */
> +unit_priv = xzalloc_array(void *, d->max_vcpus);
> +if ( unit_priv == NULL )
>  {
>  sched_free_domdata(c->sched, domdata);
>  return -ENOMEM;
>  }
>  
> -for_each_vcpu ( d, v )
> +unit_idx = 0;
> +for_each_sched_unit ( d, unit )
>  {
> -vcpu_priv[v->vcpu_id] = sched_alloc_vdata(c->sched, v->sched_unit,
> -  domdata);
> -if ( vcpu_priv[v->vcpu_id] == NULL )
> +unit_priv[unit_idx] = sched_alloc_vdata(c->sched, unit, domdata);
> +if ( unit_priv[unit_idx] == NULL )
>  {
> -for_each_vcpu ( d, v )
> -xfree(vcpu_priv[v->vcpu_id]);
> -xfree(vcpu_priv);
> +for ( unit_idx = 0; unit_priv[unit_idx]; unit_idx++ )
> +sched_free_vdata(c->sched, unit_priv[unit_idx]);

This is an unexpected change from xfree() to sched_free_vdata(). If
it really is correct, it should be mentioned in the description. I
can see why this might be better from an abstract pov, but it's
questionable whether arinc653's update_schedule_vcpus() really wants
calling at this point (perhaps it does, as a653sched_alloc_vdata()
also calls it).

Josh, Robert: Besides this immediate aspect I also wonder whether
said call is correct to make outside of a sched_priv->lock'ed
region, when both other instances occur inside of one (and in one
case immediately before an unlock, i.e. if the lock wasn't needed
the two steps could well be re-ordered).

Finally, at this point, shouldn't the functions and hooks (already)
be named {alloc,free}_udata()?

> @@ -896,18 +929,22 @@ void restore_vcpu_affinity(struct domain *d)
>  cpupool_domain_cpumask(d));
>  if ( cpumask_empty(cpumask_scratch_cpu(cpu)) )
>  {
> -if ( v->affinity_broken )
> +if ( sched_check_affinity_broken(unit) )
>  {
> -sched_set_affinity(v, unit->cpu_hard_affinity_saved, NULL);
> -v->affinity_broken = 0;
> +/* Affinity settings of one vcpu are for the complete unit. 
> */
> +sched_set_affinity(unit->vcpu_list,
> +   unit->cpu_hard_affinity_saved, NULL);

Yet despite the comment the function gets passed a struct vcpu *,
and this doesn't look to change by the end of the series. Is there
a reason for this?

> @@ -950,17 +986,19 @@ int cpu_disable_scheduler(unsigned int cpu)
>  
>  for_each_domain_in_cpupool ( d, c )
>  {
> -for_each_vcpu ( d, v )
> +struct sched_unit *unit;
> +
> +for_each_sched_unit ( d, unit )
>  {
>  unsigned long flags;
> -struct sched_unit *unit = v->sched_unit;
>  spinlock_t *lock = unit_schedule_lock_irqsave(unit, &flags);
>  
>  cpumask_and(&online_affinity, unit->cpu_hard_affinity, 
> c->cpu_valid);
>  if ( cpumask_empty(&online_affinity) &&
>   cpumask_test_cpu(cpu, unit->cpu_hard_affinity) )
>  {
> -if ( v->affinity_broken )
> +/* TODO: multiple vcpus per unit. */
> +if ( unit->vcpu_list->affinity_broken )

Why not sched_check_affinity_broken(unit)? Quite possibly this would
make the TODO item unnecessary?

> @@ -968,14 +1006,15 @@ int cpu_disable_scheduler(unsigned int cpu)
>  break;
>  }
>  
> -printk(XENLOG_DEBUG "Breaking affinity for %pv\n", v);
> +printk(XENLOG_DEBUG "Breaking affinity for %pv\n",
> +   unit->vcpu_list);
>  
> -sched_set_affinity(v, &cpumask_all, NULL);
> +sched_set_affinity(unit->vcpu_list, &cpumask_all, NULL);
>  }
>  
> -if ( v->processor != cpu )
> +if ( sched_unit_cpu(unit) != sched_get_resource_cpu(cpu) )

Didn't you agree that this can be had cheaper? Quite likely my v2
review remark was on a different instance, but the pattern ought
to be relatively simple to find in the entire series (and by the
end of the series there's one other instance in schedule.c ...

> @@ -988,17 +1027,18 @@ int cpu_disable_scheduler(unsigned int cpu)
>   *  * the scheduler will always find a suitable solution, or
>   *things would have failed before getting in here.
>   */
> -vcpu_migrate_start(v);
> +/* TODO: multiple vcpus per unit. */
> +vcpu_migrate_start(unit->vcpu_list);
>  unit_schedule_unlock_irqrestore(lock, flags, unit);
>  
> - 

Re: [Xen-devel] [xen-unstable-smoke test] 141508: regressions - trouble: blocked/fail

2019-09-20 Thread Jan Beulich
On 20.09.2019 16:45, osstest service owner wrote:
> flight 141508 xen-unstable-smoke real [real]
> http://logs.test-lab.xenproject.org/osstest/logs/141508/
> 
> Regressions :-(
> 
> Tests which did not succeed and are blocking,
> including tests which could not be run:
>  build-arm64-xsm   6 xen-buildfail REGR. vs. 
> 141253
>  build-amd64   6 xen-buildfail REGR. vs. 
> 141253

Just FYI, in case you didn't notice yet:

 CC   xenlight_stubs.o
xenlight_stubs.c: In function 'stub_libxl_domain_pause':
xenlight_stubs.c:632:8: error: too few arguments to function 
'libxl_domain_pause'
  ret = libxl_domain_pause(CTX, c_domid);
^~
In file included from xenlight_stubs.c:30:0:
/home/osstest/build.141508.build-amd64/xen/tools/ocaml/libs/xl/../../../../tools/libxl/libxl.h:1643:5:
 note: declared here
 int libxl_domain_pause(libxl_ctx *ctx, uint32_t domid,
 ^~
xenlight_stubs.c: In function 'stub_libxl_domain_unpause':
xenlight_stubs.c:648:8: error: too few arguments to function 
'libxl_domain_unpause'
  ret = libxl_domain_unpause(CTX, c_domid);
^~~~
In file included from xenlight_stubs.c:30:0:
/home/osstest/build.141508.build-amd64/xen/tools/ocaml/libs/xl/../../../../tools/libxl/libxl.h:1646:5:
 note: declared here
 int libxl_domain_unpause(libxl_ctx *ctx, uint32_t domid,
 ^~~~
xenlight_stubs.c: In function 'stub_xl_send_trigger':
xenlight_stubs.c:1045:8: error: too few arguments to function 
'libxl_send_trigger'
  ret = libxl_send_trigger(CTX, c_domid, c_trigger, c_vcpuid);
^~
In file included from xenlight_stubs.c:30:0:
/home/osstest/build.141508.build-amd64/xen/tools/ocaml/libs/xl/../../../../tools/libxl/libxl.h:2408:5:
 note: declared here
 int libxl_send_trigger(libxl_ctx *ctx, uint32_t domid,
 ^~
/home/osstest/build.141508.build-amd64/xen/tools/ocaml/libs/xl/../../Makefile.rules:37:
 recipe for target 'xenlight_stubs.o' failed
make[7]: Leaving directory 
'/home/osstest/build.141508.build-amd64/xen/tools/ocaml/libs/xl'
make[7]: *** [xenlight_stubs.o] Error 1

Jan

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

Re: [Xen-devel] [[PATCH for-4.13]] xen/arm: mm: Allow generic xen page-tables helpers to be called early

2019-09-20 Thread Stefano Stabellini
On Fri, 20 Sep 2019, Julien Grall wrote:
> On 20/09/2019 00:37, Stefano Stabellini wrote:
> > On Tue, 17 Sep 2019, Julien Grall wrote:
> > > The current implementations of xen_{map, unmap}_table() expect
> > > {map, unmap}_domain_page() to be usable. Those helpers are used to
> > > map/unmap page tables while update Xen page-tables.
> > > 
> > > Since commit 022387ee1a "xen/arm: mm: Don't open-code Xen PT update in
> > > {set, clear}_fixmap()", setup_fixmap() will make use of the helpers
> > > mentioned above. When booting Xen using GRUB, setup_fixmap() may be used
> > > before map_domain_page() can be called. This will result to data abort:
> > > 
> > > (XEN) Data Abort Trap. Syndrome=0x5
> > > (XEN) CPU0: Unexpected Trap: Data Abort
> > > 
> > > [...]
> > > 
> > > (XEN) Xen call trace:
> > > (XEN)[<0025ab6c>] mm.c#xen_pt_update+0x2b4/0x59c (PC)
> > > (XEN)[<0025ab20>] mm.c#xen_pt_update+0x268/0x59c (LR)
> > > (XEN)[<0025ae70>] set_fixmap+0x1c/0x2c
> > > (XEN)[<002a9c98>] copy_from_paddr+0x7c/0xdc
> > > (XEN)[<002a4ae0>] has_xsm_magic+0x18/0x34
> > > (XEN)[<002a5b5c>] bootfdt.c#early_scan_node+0x398/0x560
> > > (XEN)[<002a5de0>] device_tree_for_each_node+0xbc/0x144
> > > (XEN)[<002a5ed4>] boot_fdt_info+0x6c/0x260
> > > (XEN)[<002ac0d0>] start_xen+0x108/0xc74
> > > (XEN)[<0020044c>] arm64/head.o#paging+0x60/0x88
> > > 
> > > During early boot, the page tables are either statically allocated in
> > > Xen binary or allocated via alloc_boot_pages().
> > > 
> > > For statically allocated page-tables, they will already be mapped as
> > > part of Xen binary. So we can easily find the virtual address.
> > > 
> > > For dynamically allocated page-tables, we need to rely
> > > map_domain_page() to be functionally working.
> > > 
> > > For arm32, the call will be usable much before page can be dynamically
> > > allocated (see setup_pagetables()). For arm64, the call will be usable
> > > after setup_xenheap_mappings().
> > > 
> > > In both cases, memory are given to the boot allocator afterwards. So we
> > > can rely on map_domain_page() for mapping page tables allocated
> > > dynamically.
> > > 
> > > The helpers xen_{map, unmap}_table() are now updated to take into
> > > account the case where page-tables are part of Xen binary.
> > > 
> > > Fixes: 022387ee1a ('xen/arm: mm: Don't open-code Xen PT update in {set,
> > > clear}_fixmap()')
> > > Signed-off-by: Julien Grall 
> > > ---
> > >   xen/arch/arm/mm.c | 20 
> > >   1 file changed, 20 insertions(+)
> > > 
> > > diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
> > > index e1cdeaaf2f..da6303a8fd 100644
> > > --- a/xen/arch/arm/mm.c
> > > +++ b/xen/arch/arm/mm.c
> > > @@ -950,11 +950,31 @@ static int create_xen_table(lpae_t *entry)
> > > static lpae_t *xen_map_table(mfn_t mfn)
> > >   {
> > > +/*
> > > + * We may require to map the page table before map_domain_page() is
> > > + * useable. The requirements here is it must be useable as soon as
> > > + * page-tables are allocated dynamically via alloc_boot_pages().
> > > + */
> > > +if ( system_state == SYS_STATE_early_boot )
> > > +{
> > > +vaddr_t va = mfn_to_maddr(mfn) - phys_offset;
> > > +
> > > +if ( is_kernel(va) )
> > > +return (lpae_t *)va;
> > 
> > Is it intended to continue if it is not a xen text page? Shouldn't we
> > BUG() or WARN?
> Yes, I wrote the rationale in the commit message and a summary in a few lines
> above. For convenience, I pasted the commit message again here:
 
The commit message explains what you are doing but I am still missing
something.

Why are we continuing if system_state == SYS_STATE_early_boot and
!is_kernel(va)?

The commit message explains that if system_state == SYS_STATE_early_boot
pagetable pages are static, right? Only after dynamic allocation are
possible it makes sense to use map_domain_page, and dynamic allocations
are possible roughly when system_state switched to SYS_STATE_boot.

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

Re: [Xen-devel] [PATCH v12] x86/emulate: Send vm_event from emulate

2019-09-20 Thread Jan Beulich
On 20.09.2019 16:59, Alexandru Stefan ISAILA wrote:
> 
> 
> On 20.09.2019 17:22, Jan Beulich wrote:
>> On 20.09.2019 14:16, Alexandru Stefan ISAILA wrote:
>>> In order to have __hvm_copy() issue ~X86EMUL_RETRY a new return type,
>>> HVMTRANS_need_retry, was added and all the places that consume HVMTRANS*
>>> and needed adjustment where changed accordingly.
>>
>> This is wrong and hence confusing: __hvm_copy() would never return
>> ~X86EMUL_RETRY. In fact I think you've confused yourself enough to
>> make a questionable (possibly resulting) change:
> 
> The idea was to get X86EMUL_RETRY down the line from __hvm_copy().
> I will adjust this.
> 
>>
>>> @@ -582,7 +583,7 @@ static void *hvmemul_map_linear_addr(
>>>   ASSERT(mfn_x(*mfn) == 0);
>>>   
>>>   res = hvm_translate_get_page(curr, addr, true, pfec,
>>> - &pfinfo, &page, NULL, &p2mt);
>>> + &pfinfo, &page, &gfn, &p2mt);
>>
>> This function ...
>>
>>>   switch ( res )
>>>   {
>>> @@ -601,6 +602,7 @@ static void *hvmemul_map_linear_addr(
>>>   
>>>   case HVMTRANS_gfn_paged_out:
>>>   case HVMTRANS_gfn_shared:
>>> +case HVMTRANS_need_retry:
>>
>> ... can't return this value, so you should omit this addition,
>> letting the new return value go through "default:".
> 
> It is very clear that HVMTRANS_need_retry will not be returned form that 
> function. At least for now. I thought you wanted to have every possible 
> case covered in the switch. I can remove that case, there is not problem 
> here because, like I've said, it will never enter that case.
> 
> But as you said later work with HVMTRANS_need_retry will result in 
> returning X86EMUL_RETRY. Any way it's your call if I should remove it or 
> not.

The result should be consistent (i.e. between the case here
and the rep_movs / rep_stos cases below). Overall I think it
would be cleanest if in all three cases an ASSERT_UNREACHABLE()
fell through to a "return X86EMUL_RETRY;".

>>> @@ -1852,6 +1864,8 @@ static int hvmemul_rep_movs(
>>>   
>>>   xfree(buf);
>>>   
>>> +ASSERT(rc != HVMTRANS_need_retry);
>>> +
>>>   if ( rc == HVMTRANS_gfn_paged_out )
>>>   return X86EMUL_RETRY;
>>>   if ( rc == HVMTRANS_gfn_shared )
>>> @@ -1964,6 +1978,8 @@ static int hvmemul_rep_stos(
>>>   if ( buf != p_data )
>>>   xfree(buf);
>>>   
>>> +ASSERT(rc != HVMTRANS_need_retry);
>>> +
>>>   switch ( rc )
>>>   {
>>>   case HVMTRANS_gfn_paged_out:
>>
>> Looking at this again, I think it would better be an addition to
>> the switch() (using ASSERT_UNREACHABLE()). Generally this is
>> true for the rep_movs case as well, but that one would first
>> need converting to switch(), which I agree is beyond the scope
> 
> I agree that this is beyond the scope of this patch but it's not that 
> big of a change and it can be done.
> 
> But isn't having a default ASSERT_UNREACHABLE(); in both switch cases 
> change the behavior of the function?

It shouldn't be the default case that gains this assertion,
but the HVMTRANS_need_retry one that is to be added.

>> of this change. In both cases a brief comment would seem
>> worthwhile adding, clarifying that the new return value can
>> result from hvm_copy_*_guest_linear() only. This might become
>> relevant in particular if, down the road, we invent more cases
>> where HVMTRANS_need_retry is produced.
> 
> Is this comment aimed for the commit message or another place?

If you go the ASSERT_UNREACHABLE() route, then the comment(s)
should be code comments next to these assertions. They'd be
there to avoid people having to dig out the reason for why
they're there, to make it easy to decide whether it is safe to
drop them once some new producer of HVMTRANS_need_retry would
appear.

Jan

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

Re: [Xen-devel] [PATCH for-4.13 v2] xen/arm32: setup: Give a xenheap page to the boot allocator

2019-09-20 Thread Stefano Stabellini
On Fri, 20 Sep 2019, Julien Grall wrote:
> After commit 6e3e771203 "xen/arm: setup: Relocate the Device-Tree later on
> in the boot", the boot allocator will not receive any xenheap page (i.e.
> mapped page) on Arm32.
> 
> However, the boot allocator implicitely rely on having the first page

"implicitly relies"

I fixed the commit message and committed.

Reviewed-by: Stefano Stabellini 


> already mapped and therefore result to break boot on Arm32.
> 
> The easiest way for now is to give a xenheap page to the boot allocator.
> We may want to rethink the interface in the future.
> 
> Fixes: 6e3e771203 ('xen/arm: setup: Relocate the Device-Tree later on in the 
> boot')
> Signed-off-by: Julien Grall 
> Reviewed-by: Jan Beulich 
> ---
> Changes in v2:
> - Add Jan's reviewed-by
> - Use boot_mfn_start rather than boot_mfn_end when giving
> xenheap pages.
> ---
>  xen/arch/arm/setup.c | 8 +++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 581b262655..fca7e68cba 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -593,6 +593,7 @@ static void __init setup_mm(void)
>  unsigned long heap_pages, xenheap_pages, domheap_pages;
>  int i;
>  const uint32_t ctr = READ_CP32(CTR);
> +mfn_t boot_mfn_start, boot_mfn_end;
>  
>  if ( !bootinfo.mem.nr_banks )
>  panic("No memory bank\n");
> @@ -665,6 +666,11 @@ static void __init setup_mm(void)
>  
>  setup_xenheap_mappings((e >> PAGE_SHIFT) - xenheap_pages, xenheap_pages);
>  
> +/* We need a single mapped page for populating bootmem_region_list. */
> +boot_mfn_start = mfn_add(xenheap_mfn_end, -1);
> +boot_mfn_end = xenheap_mfn_end;
> +init_boot_pages(mfn_to_maddr(boot_mfn_start), 
> mfn_to_maddr(boot_mfn_end));
> +
>  /* Add non-xenheap memory */
>  for ( i = 0; i < bootinfo.mem.nr_banks; i++ )
>  {
> @@ -710,7 +716,7 @@ static void __init setup_mm(void)
>  
>  /* Add xenheap memory that was not already added to the boot allocator. 
> */
>  init_xenheap_pages(mfn_to_maddr(xenheap_mfn_start),
> -   mfn_to_maddr(xenheap_mfn_end));
> +   mfn_to_maddr(boot_mfn_start));
>  }
>  #else /* CONFIG_ARM_64 */
>  static void __init setup_mm(void)
> -- 
> 2.11.0
> 

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

Re: [Xen-devel] [[PATCH for-4.13]] xen/arm: mm: Allow generic xen page-tables helpers to be called early

2019-09-20 Thread Julien Grall

Hi,

On 20/09/2019 16:16, Stefano Stabellini wrote:

On Fri, 20 Sep 2019, Julien Grall wrote:

On 20/09/2019 00:37, Stefano Stabellini wrote:

On Tue, 17 Sep 2019, Julien Grall wrote:

The current implementations of xen_{map, unmap}_table() expect
{map, unmap}_domain_page() to be usable. Those helpers are used to
map/unmap page tables while update Xen page-tables.

Since commit 022387ee1a "xen/arm: mm: Don't open-code Xen PT update in
{set, clear}_fixmap()", setup_fixmap() will make use of the helpers
mentioned above. When booting Xen using GRUB, setup_fixmap() may be used
before map_domain_page() can be called. This will result to data abort:

(XEN) Data Abort Trap. Syndrome=0x5
(XEN) CPU0: Unexpected Trap: Data Abort

[...]

(XEN) Xen call trace:
(XEN)[<0025ab6c>] mm.c#xen_pt_update+0x2b4/0x59c (PC)
(XEN)[<0025ab20>] mm.c#xen_pt_update+0x268/0x59c (LR)
(XEN)[<0025ae70>] set_fixmap+0x1c/0x2c
(XEN)[<002a9c98>] copy_from_paddr+0x7c/0xdc
(XEN)[<002a4ae0>] has_xsm_magic+0x18/0x34
(XEN)[<002a5b5c>] bootfdt.c#early_scan_node+0x398/0x560
(XEN)[<002a5de0>] device_tree_for_each_node+0xbc/0x144
(XEN)[<002a5ed4>] boot_fdt_info+0x6c/0x260
(XEN)[<002ac0d0>] start_xen+0x108/0xc74
(XEN)[<0020044c>] arm64/head.o#paging+0x60/0x88

During early boot, the page tables are either statically allocated in
Xen binary or allocated via alloc_boot_pages().

For statically allocated page-tables, they will already be mapped as
part of Xen binary. So we can easily find the virtual address.

For dynamically allocated page-tables, we need to rely
map_domain_page() to be functionally working.

For arm32, the call will be usable much before page can be dynamically
allocated (see setup_pagetables()). For arm64, the call will be usable
after setup_xenheap_mappings().

In both cases, memory are given to the boot allocator afterwards. So we
can rely on map_domain_page() for mapping page tables allocated
dynamically.

The helpers xen_{map, unmap}_table() are now updated to take into
account the case where page-tables are part of Xen binary.

Fixes: 022387ee1a ('xen/arm: mm: Don't open-code Xen PT update in {set,
clear}_fixmap()')
Signed-off-by: Julien Grall 
---
   xen/arch/arm/mm.c | 20 
   1 file changed, 20 insertions(+)

diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index e1cdeaaf2f..da6303a8fd 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -950,11 +950,31 @@ static int create_xen_table(lpae_t *entry)
 static lpae_t *xen_map_table(mfn_t mfn)
   {
+/*
+ * We may require to map the page table before map_domain_page() is
+ * useable. The requirements here is it must be useable as soon as
+ * page-tables are allocated dynamically via alloc_boot_pages().
+ */
+if ( system_state == SYS_STATE_early_boot )
+{
+vaddr_t va = mfn_to_maddr(mfn) - phys_offset;
+
+if ( is_kernel(va) )
+return (lpae_t *)va;


Is it intended to continue if it is not a xen text page? Shouldn't we
BUG() or WARN?

Yes, I wrote the rationale in the commit message and a summary in a few lines
above. For convenience, I pasted the commit message again here:
  
The commit message explains what you are doing but I am still missing

something.

Why are we continuing if system_state == SYS_STATE_early_boot and
!is_kernel(va)?

The commit message explains that if system_state == SYS_STATE_early_boot
pagetable pages are static, right? 

That's not correct. Below an excerpt of the commit message:

"During early boot, the page tables are either statically allocated in
Xen binary or allocated via alloc_boot_pages()."

An example of dynamic allocation happening when system_state == 
SYS_STATE_early_boot is in setup_xenheap_mappings(). alloc_boot_pages() will be 
used to allocate intermediate page-tables as the runtime allocator is not yet ready.



Only after dynamic allocation are
possible it makes sense to use map_domain_page, and dynamic allocations
are possible roughly when system_state switched to SYS_STATE_boot.


That's not correct. alloc_boot_pages() is actually here to allow dynamic 
allocation before the memory subsystem (and therefore the runtime allocator) is 
initialized.


Half of the commit message actually explain when dynamic allocation can be used. 
I am not entirely sure what is unclear in it so please suggest a different 
commit message.


Cheers,

--
Julien Grall

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

Re: [Xen-devel] [PATCH v3 25/47] xen/sched: add runstate counters to struct sched_unit

2019-09-20 Thread Jan Beulich
On 14.09.2019 10:52, Juergen Gross wrote:
> @@ -368,7 +372,7 @@ static struct sched_unit *sched_alloc_unit(struct vcpu *v)
>  unit->vcpu_list = v;
>  unit->unit_id = v->vcpu_id;
>  unit->domain = d;
> -v->sched_unit = unit;
> +unit->runstate_cnt[v->runstate.state]++;
>  
>  for ( prev_unit = &d->sched_unit_list; *prev_unit;
>prev_unit = &(*prev_unit)->next_in_list )
> @@ -384,6 +388,8 @@ static struct sched_unit *sched_alloc_unit(struct vcpu *v)
>   !zalloc_cpumask_var(&unit->cpu_soft_affinity) )
>  goto fail;
>  
> +v->sched_unit = unit;
> +
>  return unit;
>  
>   fail:

Is this movement of the assignment something which really belongs
here, rather than in some earlier patch (perhaps the one actually
introducing it)?

Jan

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

Re: [Xen-devel] [PATCH v6 5/6] xen/x86: add PHYSDEVOP_interrupt_control

2019-09-20 Thread Marek Marczykowski-Górecki
On Fri, Sep 20, 2019 at 12:10:09PM +0200, Jan Beulich wrote:
> On 14.09.2019 17:37, Marek Marczykowski-Górecki  wrote:
> > Allow device model running in stubdomain to enable/disable INTx/MSI(-X),
> > bypassing pciback. While pciback is still used to access config space
> > from within stubdomain, it refuse to write to
> > PCI_MSI_FLAGS_ENABLE/PCI_MSIX_FLAGS_ENABLE/PCI_COMMAND_INTX_DISABLE
> > in non-permissive mode. Which is the right thing to do for PV domain
> > (the main use case for pciback), as PV domain should use XEN_PCI_OP_*
> > commands for that. Unfortunately those commands are not good for
> > stubdomain use, as they configure MSI in dom0's kernel too, which should
> > not happen for HVM domain.
> 
> Why the "for HVM domain" here? I.e. why would this be correct for
> a PV domain? Besides my dislike for such a bypass (imo all of the
> handling should go through pciback, or none of it) I continue to
> wonder whether the problem can't be addressed by a pciback change.
> And even if not, I'd still wonder whether the request shouldn't go
> through pciback, to retain proper layering. Ultimately it may be
> better to have even the map/unmap go through pciback (it's at
> least an apparent violation of the original physdev-op model that
> these two are XSM_DM_PRIV).

Technically it should be possible to move this part to pciback, and in
fact this is what I've considered in the first version of this series.
But Roger points out on each version[1] of this series that pciback is
meant to serve *PV* domains, where a PCI passthrough is a completely
different different beast. In fact, I even consider that using pcifront
in a Linux stubdomain as a proxy for qemu there may be a bad idea (one
needs to be careful to avoid stubdomain kernel fighting with qemu about
device state).

Roger, what is the state of Xen internal vPCI? If handling PCI
passthrough in Xen (or maybe standalone emulator), without qemu help is
going to happen sooner than later (I guess not 4.13, but maybe 4.14?),
then maybe this whole patch doesn't make sense as a temporary measure?

Anyway, if you all agree that pciback should be the way to go, I can go
that route too. In practice, it would be a flag (set by the toolstack?)
allowing writes to appropriate config space registers directly (with
appropriate checks, as in this patch).

[1] https://lists.xenproject.org/archives/html/xen-devel/2019-08/msg00486.html

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?


signature.asc
Description: PGP signature
___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH v3 28/47] xen/sched: add code to sync scheduling of all vcpus of a sched unit

2019-09-20 Thread Jan Beulich
On 14.09.2019 10:52, Juergen Gross wrote:
> --- a/xen/common/schedule.c
> +++ b/xen/common/schedule.c
> @@ -55,6 +55,9 @@ boolean_param("sched_smt_power_savings", 
> sched_smt_power_savings);
>  int sched_ratelimit_us = SCHED_DEFAULT_RATELIMIT_US;
>  integer_param("sched_ratelimit_us", sched_ratelimit_us);
>  
> +/* Number of vcpus per struct sched_unit. */
> +static unsigned int __read_mostly sched_granularity = 1;

Didn't you indicate earlier that this would be a per-pool property?
Or was that just a longer term plan?

> +/*
> + * Rendezvous before taking a scheduling decision.
> + * Called with schedule lock held, so all accesses to the rendezvous counter
> + * can be normal ones (no atomic accesses needed).
> + * The counter is initialized to the number of cpus to rendezvous initially.
> + * Each cpu entering will decrement the counter. In case the counter becomes
> + * zero do_schedule() is called and the rendezvous counter for leaving
> + * context_switch() is set. All other members will wait until the counter is
> + * becoming zero, dropping the schedule lock in between.
> + */

This recurring lock/unlock is liable to cause a massive cache line
ping-pong, especially for socket or node scheduling. Instead of
just a cpu_relax() between the main unlock and re-lock, could there
perhaps be lock-less checks to determine whether there's any point
at all re-acquiring the lock?

> +static void schedule(void)
> +{
> +struct vcpu  *vnext, *vprev = current;
> +struct sched_unit*prev = vprev->sched_unit, *next = NULL;
> +s_time_t  now;
> +struct sched_resource *sd;
> +spinlock_t   *lock;
> +int cpu = smp_processor_id();
> +
> +ASSERT_NOT_IN_ATOMIC();
> +
> +SCHED_STAT_CRANK(sched_run);
> +
> +sd = get_sched_res(cpu);
> +
> +lock = pcpu_schedule_lock_irq(cpu);
> +
> +if ( prev->rendezvous_in_cnt )
> +{
> +/*
> + * We have a race: sched_slave() should be called, so raise a softirq
> + * in order to re-enter schedule() later and call sched_slave() now.
> + */
> +pcpu_schedule_unlock_irq(lock, cpu);
> +
> +raise_softirq(SCHEDULE_SOFTIRQ);
> +return sched_slave();
> +}
> +
> +now = NOW();
> +
> +stop_timer(&sd->s_timer);

Is the order of these two relevant? A while ago there were a couple
of changes moving such NOW() invocations past anything that may take
non-negligible time, to make accounting as accurate as possible.

> --- a/xen/include/xen/softirq.h
> +++ b/xen/include/xen/softirq.h
> @@ -4,6 +4,7 @@
>  /* Low-latency softirqs come first in the following list. */
>  enum {
>  TIMER_SOFTIRQ = 0,
> +SCHED_SLAVE_SOFTIRQ,
>  SCHEDULE_SOFTIRQ,
>  NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ,
>  RCU_SOFTIRQ,

Seeing the comment, is the insertion you do as well as the pre-
existing placement of SCHEDULE_SOFTIRQ still appropriate with
the rendezvous-ing you introduce?

Jan

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

Re: [Xen-devel] [PATCH v3 00/47] xen: add core scheduling support

2019-09-20 Thread Jan Beulich
On 14.09.2019 10:52, Juergen Gross wrote:
> This is achieved by switching the scheduler to no longer see vcpus as
> the primary object to schedule, but "schedule units". Each schedule
> unit consists of as many vcpus as each core has threads on the current
> system. The vcpu->unit relation is fixed.

There's another aspect here that, while perhaps obvious, I didn't
realize so far: Iirc right now schedulers try to place vCPU-s on
different cores, as long as there aren't more runnable vCPU-s than
there are cores. This is to improve overall throughput, since
vCPU-s on sibling hyperthreads would compete for execution
resources. With a fixed relation this is going to be impossible.
Otoh I can of course see how, once we have proper virtual
topology, this allows better scheduling decisions inside the
guest, in particular if - under the right circumstances - it is
actually wanted to run two entities on sibling threads.

Jan

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

[Xen-devel] [PATCH] tools/ocaml: Build fix following libxl API changes

2019-09-20 Thread Anthony PERARD
The following libxl API became asynchronous and gained an additional
`ao_how' parameter:
libxl_domain_pause()
libxl_domain_unpause()
libxl_send_trigger()

Adapt the ocaml binding.

Build tested only.

Fixes: edaa631ddcee665cdfae1cf6bc7492c791e01ef4
Fixes: 95627b87c3159928458ee586e8c5c593bdd248d8
Signed-off-by: Anthony PERARD 
---

Notes:
Currently, all libxl API that takes an `ao_how` have `?async:'a -> unit`
in the ocaml definition (and an extra unused value unit in the c stub
file), is that `unit` needed ?

I tried to add it, but then for stub_xl_send_trigger() I had to use
CAMLparam6, and that doesn't exist.

 tools/ocaml/libs/xl/xenlight.ml.in   |  6 +++---
 tools/ocaml/libs/xl/xenlight.mli.in  |  6 +++---
 tools/ocaml/libs/xl/xenlight_stubs.c | 27 ++-
 3 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/tools/ocaml/libs/xl/xenlight.ml.in 
b/tools/ocaml/libs/xl/xenlight.ml.in
index 80e620a9be66..954e56fc740b 100644
--- a/tools/ocaml/libs/xl/xenlight.ml.in
+++ b/tools/ocaml/libs/xl/xenlight.ml.in
@@ -41,10 +41,10 @@ module Domain = struct
external reboot : ctx -> domid -> unit = "stub_libxl_domain_reboot"
external destroy : ctx -> domid -> ?async:'a -> unit -> unit = 
"stub_libxl_domain_destroy"
external suspend : ctx -> domid -> Unix.file_descr -> ?async:'a -> unit 
-> unit = "stub_libxl_domain_suspend"
-   external pause : ctx -> domid -> unit = "stub_libxl_domain_pause"
-   external unpause : ctx -> domid -> unit = "stub_libxl_domain_unpause"
+   external pause : ctx -> domid -> ?async:'a -> unit = 
"stub_libxl_domain_pause"
+   external unpause : ctx -> domid -> ?async:'a -> unit = 
"stub_libxl_domain_unpause"
 
-   external send_trigger : ctx -> domid -> trigger -> int -> unit = 
"stub_xl_send_trigger"
+   external send_trigger : ctx -> domid -> trigger -> int -> ?async:'a -> 
unit = "stub_xl_send_trigger"
external send_sysrq : ctx -> domid -> char -> unit = 
"stub_xl_send_sysrq"
 end
 
diff --git a/tools/ocaml/libs/xl/xenlight.mli.in 
b/tools/ocaml/libs/xl/xenlight.mli.in
index b2c06b5eed76..c08304ae8b01 100644
--- a/tools/ocaml/libs/xl/xenlight.mli.in
+++ b/tools/ocaml/libs/xl/xenlight.mli.in
@@ -43,10 +43,10 @@ module Domain : sig
external reboot : ctx -> domid -> unit = "stub_libxl_domain_reboot"
external destroy : ctx -> domid -> ?async:'a -> unit -> unit = 
"stub_libxl_domain_destroy"
external suspend : ctx -> domid -> Unix.file_descr -> ?async:'a -> unit 
-> unit = "stub_libxl_domain_suspend"
-   external pause : ctx -> domid -> unit = "stub_libxl_domain_pause"
-   external unpause : ctx -> domid -> unit = "stub_libxl_domain_unpause"
+   external pause : ctx -> domid -> ?async:'a -> unit = 
"stub_libxl_domain_pause"
+   external unpause : ctx -> domid -> ?async:'a -> unit = 
"stub_libxl_domain_unpause"
 
-   external send_trigger : ctx -> domid -> trigger -> int -> unit = 
"stub_xl_send_trigger"
+   external send_trigger : ctx -> domid -> trigger -> int -> ?async:'a -> 
unit = "stub_xl_send_trigger"
external send_sysrq : ctx -> domid -> char -> unit = 
"stub_xl_send_sysrq"
 end
 
diff --git a/tools/ocaml/libs/xl/xenlight_stubs.c 
b/tools/ocaml/libs/xl/xenlight_stubs.c
index 0140780a342e..37b046df6351 100644
--- a/tools/ocaml/libs/xl/xenlight_stubs.c
+++ b/tools/ocaml/libs/xl/xenlight_stubs.c
@@ -622,32 +622,38 @@ value stub_libxl_domain_suspend(value ctx, value domid, 
value fd, value async, v
CAMLreturn(Val_unit);
 }
 
-value stub_libxl_domain_pause(value ctx, value domid)
+value stub_libxl_domain_pause(value ctx, value domid, value async)
 {
-   CAMLparam2(ctx, domid);
+   CAMLparam3(ctx, domid, async);
int ret;
uint32_t c_domid = Int_val(domid);
+   libxl_asyncop_how *ao_how = aohow_val(async);
 
caml_enter_blocking_section();
-   ret = libxl_domain_pause(CTX, c_domid);
+   ret = libxl_domain_pause(CTX, c_domid, ao_how);
caml_leave_blocking_section();
 
+   free(ao_how);
+
if (ret != 0)
failwith_xl(ret, "domain_pause");
 
CAMLreturn(Val_unit);
 }
 
-value stub_libxl_domain_unpause(value ctx, value domid)
+value stub_libxl_domain_unpause(value ctx, value domid, value async)
 {
-   CAMLparam2(ctx, domid);
+   CAMLparam3(ctx, domid, async);
int ret;
uint32_t c_domid = Int_val(domid);
+   libxl_asyncop_how *ao_how = aohow_val(async);
 
caml_enter_blocking_section();
-   ret = libxl_domain_unpause(CTX, c_domid);
+   ret = libxl_domain_unpause(CTX, c_domid, ao_how);
caml_leave_blocking_section();
 
+   free(ao_how);
+
if (ret != 0)
failwith_xl(ret, "domain_unpause");
 
@@ -1031,20 +1037,23 @@ value stub_xl_domain_sched_params_set(value ctx, value 
domid, value scinfo)
CAMLreturn(Val_unit);
 }
 
-value stub_xl_send_trigger(value ctx,

[Xen-devel] [linux-4.9 test] 141476: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141476 linux-4.9 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141476/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-pvshim 20 guest-start/debian.repeat fail in 141392 REGR. 
vs. 141254

Tests which are failing intermittently (not blocking):
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm 7 xen-boot fail pass in 
141392

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-examine 11 examine-serial/bootloaderfail  like 141277
 test-amd64-amd64-xl-pvshim   18 guest-localmigrate/x10   fail  like 141277
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stopfail like 141277
 test-amd64-i386-xl-qemut-win7-amd64 17 guest-stop fail like 141277
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stopfail like 141277
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop fail like 141277
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stopfail like 141277
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 10 debian-hvm-install 
fail never pass
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 10 debian-hvm-install 
fail never pass
 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-libvirt-xsm  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-amd64-i386-libvirt  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-amd64-i386-xl-pvshim12 guest-start  fail   never pass
 test-arm64-arm64-xl-seattle  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  14 saverestore-support-checkfail   never pass
 test-amd64-i386-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-arm64-arm64-xl-credit1  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-libvirt 13 migrate-support-checkfail   never pass
 test-armhf-armhf-libvirt 14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stop fail never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-checkfail  never pass
 test-armhf-armhf-xl-multivcpu 14 saverestore-support-checkfail  never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-cubietruck 13 migrate-support-checkfail never pass
 test-armhf-armhf-xl-cubietruck 14 saverestore-support-checkfail never pass
 test-amd64-i386-xl-qemut-ws16-amd64 17 guest-stop  fail never pass
 test-armhf-armhf-libvirt-raw 12 migrate-support-checkfail   never pass
 test-armhf-armhf-libvirt-raw 13 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  13 saverestore-support-checkfa

[Xen-devel] [xen-unstable-smoke test] 141513: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141513 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141513/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a
 build-amd64-libvirt   1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a

version targeted for testing:
 xen  a30910bfd71a64895f0d6ddbb301cf1b5ed6c2f4
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z7 days
Failing since141255  2019-09-12 21:01:22 Z7 days   52 attempts
Testing same since   141508  2019-09-20 13:00:42 Z0 days2 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1732 lines long.)

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

Re: [Xen-devel] [PATCH] tools/ocaml: Build fix following libxl API changes

2019-09-20 Thread Anthony PERARD
On Fri, Sep 20, 2019 at 05:19:02PM +0100, Anthony PERARD wrote:
> The following libxl API became asynchronous and gained an additional
> `ao_how' parameter:
> libxl_domain_pause()
> libxl_domain_unpause()
> libxl_send_trigger()
> 
> Adapt the ocaml binding.
> 
> Build tested only.
> 
> Fixes: edaa631ddcee665cdfae1cf6bc7492c791e01ef4
> Fixes: 95627b87c3159928458ee586e8c5c593bdd248d8
> Signed-off-by: Anthony PERARD 
> ---
> 
> Notes:
> Currently, all libxl API that takes an `ao_how` have `?async:'a -> unit`
> in the ocaml definition (and an extra unused value unit in the c stub
> file), is that `unit` needed ?
> 
> I tried to add it, but then for stub_xl_send_trigger() I had to use
> CAMLparam6, and that doesn't exist.

I discovered CAMLxparam1 macro, but that's not better:
File "xenlight.ml", line 1735, characters 25-84:
Error: An external function with more than 5 arguments requires a second 
stub function
   for native-code compilation
-- 
Anthony PERARD

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

Re: [Xen-devel] [PATCH] tools/ocaml: Build fix following libxl API changes

2019-09-20 Thread Ian Jackson
Anthony PERARD writes ("Re: [PATCH] tools/ocaml: Build fix following libxl API 
changes"):
> On Fri, Sep 20, 2019 at 05:19:02PM +0100, Anthony PERARD wrote:
> > The following libxl API became asynchronous and gained an additional
> > `ao_how' parameter:
> > libxl_domain_pause()
> > libxl_domain_unpause()
> > libxl_send_trigger()
> > 
> > Adapt the ocaml binding.
> > 
> > Build tested only.
> > 
> > Fixes: edaa631ddcee665cdfae1cf6bc7492c791e01ef4
> > Fixes: 95627b87c3159928458ee586e8c5c593bdd248d8
> > Signed-off-by: Anthony PERARD 
> > ---
> > 
> > Notes:
> > Currently, all libxl API that takes an `ao_how` have `?async:'a -> unit`
> > in the ocaml definition (and an extra unused value unit in the c stub
> > file), is that `unit` needed ?
> > 
> > I tried to add it, but then for stub_xl_send_trigger() I had to use
> > CAMLparam6, and that doesn't exist.
> 
> I discovered CAMLxparam1 macro, but that's not better:
> File "xenlight.ml", line 1735, characters 25-84:
> Error: An external function with more than 5 arguments requires a second 
> stub function
>for native-code compilation

In order to unbreak the build I have acked and pushed this patch right
away, but IMO a review from an ocaml maintainer is quite important
here.

Thanks,
Ian.

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

[Xen-devel] [linux-4.4 test] 141482: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141482 linux-4.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141482/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-pvshim 20 guest-start/debian.repeat fail in 141448 REGR. 
vs. 139698

Tests which are failing intermittently (not blocking):
 test-amd64-i386-qemuu-rhel6hvm-intel 12 guest-start/redhat.repeat fail in 
141448 pass in 141482
 test-amd64-amd64-xl-qemut-ws16-amd64  7 xen-boot   fail pass in 141448
 test-amd64-amd64-xl-pvshim   18 guest-localmigrate/x10 fail pass in 141448
 test-armhf-armhf-libvirt-raw 10 debian-di-install  fail pass in 141448

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 12 migrate-support-check fail in 141448 never pass
 test-armhf-armhf-libvirt-raw 13 saverestore-support-check fail in 141448 never 
pass
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stop   fail in 141448 never pass
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 10 debian-hvm-install 
fail never pass
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 10 debian-hvm-install 
fail never pass
 test-amd64-i386-xl-pvshim12 guest-start  fail   never pass
 test-amd64-amd64-xl-pvhv2-amd 12 guest-start  fail  never pass
 test-arm64-arm64-examine  8 reboot   fail   never pass
 test-arm64-arm64-libvirt-xsm  7 xen-boot fail   never pass
 test-arm64-arm64-xl   7 xen-boot fail   never pass
 test-arm64-arm64-xl-seattle   7 xen-boot fail   never pass
 test-arm64-arm64-xl-xsm   7 xen-boot fail   never pass
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit1   7 xen-boot fail   never pass
 test-arm64-arm64-xl-credit2   7 xen-boot fail   never pass
 test-amd64-i386-libvirt  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-amd64-amd64-xl-pvhv2-intel 12 guest-start fail never pass
 test-amd64-i386-libvirt-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx  7 xen-boot fail   never pass
 test-amd64-i386-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-armhf-armhf-xl-arndale  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-checkfail   never pass
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stop fail never pass
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop  fail never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stop fail never pass
 test-armhf-armhf-xl-cubietruck 13 migrate-support-checkfail never pass
 test-armhf-armhf-xl-cubietruck 14 saverestore-support-checkfail never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-checkfail  never pass
 test-armhf-armhf-xl-multivcpu 14 saverestore-support-checkfail  never pass
 test-armhf-armhf-libvirt 13 migrate-support-checkfail   never pass
 test-armhf-armhf-libvirt 14 saverestore-support-checkfail   never pass
 test-amd64-i386-xl-qemut-win7-amd64 17 guest-stop  fail never pass
 test-armhf-armhf-xl-rtds 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  13 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stop fail never pass
 test-amd64-i386-xl-qemuu-ws16-amd64 17 guest-stop  fail never pass
 test-amd64-i386-xl-qemut-ws16-amd64 17 guest-stop  fail never pass
 test-amd64-amd64-xl-qemut-win10-i386 10 windows-installfail never pass
 test-amd64-i386-xl-qemuu-win10-i386 10 windows-install fail never pass
 test-amd64-i386-xl-qemut-win10-i386 10 windows-install fail never pass
 test-amd64-amd64-xl-qemuu-win10-i386 10 wind

Re: [Xen-devel] [PATCH] tools/ocaml: Build fix following libxl API changes

2019-09-20 Thread Andrew Cooper
On 20/09/2019 17:19, Anthony PERARD wrote:
> The following libxl API became asynchronous and gained an additional
> `ao_how' parameter:
> libxl_domain_pause()
> libxl_domain_unpause()
> libxl_send_trigger()
>
> Adapt the ocaml binding.
>
> Build tested only.
>
> Fixes: edaa631ddcee665cdfae1cf6bc7492c791e01ef4
> Fixes: 95627b87c3159928458ee586e8c5c593bdd248d8
> Signed-off-by: Anthony PERARD 

This library is entirely unused, full of memory leaks, and has a number
of areas needing extremely careful design due to the differing
behaviours of the libxl and ocaml runtimes.

Another option would be to drop the bindings entirely.

> ---
>
> Notes:
> Currently, all libxl API that takes an `ao_how` have `?async:'a -> unit`
> in the ocaml definition (and an extra unused value unit in the c stub
> file), is that `unit` needed ?
> 
> I tried to add it, but then for stub_xl_send_trigger() I had to use
> CAMLparam6, and that doesn't exist.

In the Ocaml FFI, with more than 5 parameters, the entire set of
parameters is spilled to memory as an array, so the C side of the
function ends with a CAMLparam2 (list pointer and number of entries),
and has extra marshalling to do.

~Andrew

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

[Xen-devel] [xen-unstable-smoke test] 141521: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141521 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141521/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 build-amd64-libvirt   1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a

version targeted for testing:
 xen  ae84f55353475f569daddb9a81ac0a6bc7772c90
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z8 days
Failing since141255  2019-09-12 21:01:22 Z7 days   53 attempts
Testing same since   141521  2019-09-20 17:08:20 Z0 days1 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1756 lines long.)

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

[Xen-devel] [xen-unstable-smoke bisection] complete build-arm64-xsm

2019-09-20 Thread osstest service owner
branch xen-unstable-smoke
xenbranch xen-unstable-smoke
job build-arm64-xsm
testid xen-build

Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: xen git://xenbits.xen.org/xen.git

*** Found and reproduced problem changeset ***

  Bug is in tree:  xen git://xenbits.xen.org/xen.git
  Bug introduced:  edaa631ddcee665cdfae1cf6bc7492c791e01ef4
  Bug not present: d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/141535/


  commit edaa631ddcee665cdfae1cf6bc7492c791e01ef4
  Author: Anthony PERARD 
  Date:   Thu May 23 11:54:52 2019 +0100
  
  libxl: Make libxl_domain_unpause async
  
  libxl_domain_unpause needs to make QMP calls, which are asynchronous,
  change the API to reflect that.
  
  Do the same with libxl_domain_pause async, even if it will keep
  completing synchronously.
  
  Also fix some coding style issue in those functions.
  
  Signed-off-by: Anthony PERARD 
  Acked-by: Ian Jackson 


For bisection revision-tuple graph see:
   
http://logs.test-lab.xenproject.org/osstest/results/bisect/xen-unstable-smoke/build-arm64-xsm.xen-build.html
Revision IDs in each graph node refer, respectively, to the Trees above.


Running cs-bisection-step 
--graph-out=/home/logs/results/bisect/xen-unstable-smoke/build-arm64-xsm.xen-build
 --summary-out=tmp/141535.bisection-summary --basis-template=141253 
--blessings=real,real-bisect xen-unstable-smoke build-arm64-xsm xen-build
Searching for failure / basis pass:
 141521 fail [host=laxton1] / 141498 [host=rochester1] 141494 [host=laxton0] 
141489 [host=laxton0] 141485 [host=rochester0] 141480 [host=laxton0] 141474 
[host=laxton0] 141470 ok.
Failure / basis pass flights: 141521 / 141470
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: xen git://xenbits.xen.org/xen.git
Latest cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
Basis pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
88339ae94f4309888eae81a6cceac9577a319d7e
Generating revisions with ./adhoc-revtuple-generator  
git://xenbits.xen.org/qemu-xen.git#cef9660618a880ced798375a0fd16a8ad80bd0f0-cef9660618a880ced798375a0fd16a8ad80bd0f0
 
git://xenbits.xen.org/xen.git#88339ae94f4309888eae81a6cceac9577a319d7e-ae84f55353475f569daddb9a81ac0a6bc7772c90
Loaded 1001 nodes in revision graph
Searching for test results:
 141513 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
a30910bfd71a64895f0d6ddbb301cf1b5ed6c2f4
 141489 [host=laxton0]
 141485 [host=rochester0]
 141474 [host=laxton0]
 141470 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
88339ae94f4309888eae81a6cceac9577a319d7e
 141498 [host=rochester1]
 141480 [host=laxton0]
 141494 [host=laxton0]
 141514 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
a30910bfd71a64895f0d6ddbb301cf1b5ed6c2f4
 141508 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
a30910bfd71a64895f0d6ddbb301cf1b5ed6c2f4
 141512 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
88339ae94f4309888eae81a6cceac9577a319d7e
 141515 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
8efef84cf25a93a74499a809fa655e8ceedc6f86
 141517 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
dbe92a588c429324fb2b7c02eb1e1cc7027ef8e3
 141518 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
3bf9b8fde811c965b425d621d2651434a95cfe4a
 141522 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
edaa631ddcee665cdfae1cf6bc7492c791e01ef4
 141524 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
4750c9237bd49a2179d5bd28e7259df9c46de25a
 141525 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
 141521 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
 141527 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
edaa631ddcee665cdfae1cf6bc7492c791e01ef4
 141528 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
88339ae94f4309888eae81a6cceac9577a319d7e
 141530 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
 141532 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
 141533 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
edaa631ddcee665cdfae1cf6bc7492c791e01ef4
 141534 pass cef9660618a880ced798375a0fd16a8ad80bd0f0 
d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
 141535 fail cef9660618a880ced798375a0fd16a8ad80bd0f0 
edaa631ddcee665cdfae1cf6bc7492c791e01ef4
Searching for interesting versions
 Result found: flight 141470 (pass), for basis pass
 Result found: flight 141521 (fail), for basis failure
 Repro found: flight 141528 (pass), for basis pass
 Repro found: flight 141530 (fail), for basis failure
 0 revisions at cef9660618a880ced798375a0fd16a8ad80bd0f0 
d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
No revisions left to test, checking graph state.
 Result found: flight 141525 (pass), for last pass
 Result found: flight 141527 (fail), for first failure
 Repro found: flight 141532 (pass), for last pass
 Repro found: flight 141533 (fail), for first failure
 Repr

[Xen-devel] [xen-unstable-smoke test] 141531: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141531 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141531/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 build-amd64-libvirt   1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a

version targeted for testing:
 xen  ae84f55353475f569daddb9a81ac0a6bc7772c90
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z8 days
Failing since141255  2019-09-12 21:01:22 Z7 days   54 attempts
Testing same since   141521  2019-09-20 17:08:20 Z0 days2 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1756 lines long.)

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

Re: [Xen-devel] [Qemu-block] [PATCH] xen-block: treat XenbusStateUnknown the same as XenbusStateClosed

2019-09-20 Thread John Snow


On 9/18/19 7:57 AM, Paul Durrant wrote:
> When a frontend gracefully disconnects from an offline backend, it will
> set its own state to XenbusStateClosed. The code in xen-block.c correctly
> deals with this and sets the backend into XenbusStateClosed. Unfortunately
> it is possible for toolstack to actually delete the frontend area
> before the state key has been read, leading to an apparent frontend state
> of XenbusStateUnknown. This prevents the backend state from transitioning
> to XenbusStateClosed and hence leaves it limbo.
> 

Does the 0 come from a read into de-allocated memory?

--js

> This patch simply treats a frontend state of XenbusStateUnknown the same
> as XenbusStateClosed, which will unblock the backend in these circumstances.
> 
> Reported-by: Mark Syms 
> Signed-off-by: Paul Durrant 
> ---
> Cc: Stefano Stabellini 
> Cc: Anthony Perard 
> Cc: Kevin Wolf 
> Cc: Max Reitz 
> ---
>  hw/block/xen-block.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c
> index f77343db60..879fc310a4 100644
> --- a/hw/block/xen-block.c
> +++ b/hw/block/xen-block.c
> @@ -313,6 +313,7 @@ static void xen_block_frontend_changed(XenDevice *xendev,
>  break;
>  
>  case XenbusStateClosed:
> +case XenbusStateUnknown:
>  xen_block_disconnect(xendev, &local_err);
>  if (local_err) {
>  error_propagate(errp, local_err);
> 

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

[Xen-devel] [xen-unstable-smoke test] 141539: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141539 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141539/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a
 build-amd64-libvirt   1 build-check(1)   blocked  n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a

version targeted for testing:
 xen  ae84f55353475f569daddb9a81ac0a6bc7772c90
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z8 days
Failing since141255  2019-09-12 21:01:22 Z8 days   55 attempts
Testing same since   141521  2019-09-20 17:08:20 Z0 days3 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1756 lines long.)

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

[Xen-devel] [linux-linus test] 141484: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141484 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141484/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-i386-xl-qemuu-win10-i386  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-freebsd10-amd64  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-xl-raw7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-libvirt   7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-examine   8 reboot   fail REGR. vs. 133580
 test-amd64-i386-freebsd10-i386  7 xen-boot   fail REGR. vs. 133580
 test-amd64-i386-xl-qemuu-ovmf-amd64  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-qemuu-rhel6hvm-intel  7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 7 xen-boot fail REGR. vs. 
133580
 test-amd64-i386-libvirt-pair 10 xen-boot/src_hostfail REGR. vs. 133580
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm 7 xen-boot fail REGR. vs. 
133580
 test-amd64-i386-libvirt-pair 11 xen-boot/dst_hostfail REGR. vs. 133580
 test-amd64-i386-qemut-rhel6hvm-intel  7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-xl-qemuu-debianhvm-amd64  7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-qemuu-rhel6hvm-amd  7 xen-boot   fail REGR. vs. 133580
 test-amd64-i386-qemut-rhel6hvm-amd  7 xen-boot   fail REGR. vs. 133580
 test-amd64-i386-xl-qemut-win7-amd64  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-xl-xsm7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-xl-qemuu-ws16-amd64  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-xl-pvshim 7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-xl-qemut-ws16-amd64  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-xl-qemut-win10-i386  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-libvirt-xsm   7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-xl7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict 7 xen-boot fail REGR. vs. 
133580
 test-amd64-i386-xl-qemuu-win7-amd64  7 xen-boot  fail REGR. vs. 133580
 test-amd64-i386-pair 10 xen-boot/src_hostfail REGR. vs. 133580
 test-amd64-i386-pair 11 xen-boot/dst_hostfail REGR. vs. 133580
 test-amd64-i386-xl-shadow 7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-xl-qemut-debianhvm-amd64  7 xen-boot fail REGR. vs. 133580
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow 7 xen-boot fail REGR. vs. 
133580
 test-amd64-amd64-xl-pvshim  20 guest-start/debian.repeat fail REGR. vs. 133580
 test-arm64-arm64-libvirt-xsm 16 guest-start/debian.repeat fail REGR. vs. 133580

Tests which did not succeed, but are not blocking:
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm  7 xen-boot fail baseline untested
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm  7 xen-boot fail baseline untested
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stopfail like 133580
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stopfail like 133580
 test-armhf-armhf-libvirt 14 saverestore-support-checkfail  like 133580
 test-armhf-armhf-libvirt-raw 13 saverestore-support-checkfail  like 133580
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stopfail like 133580
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stopfail like 133580
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-checkfail   never pass
 test-amd64-amd64-qemuu-nested-amd 17 debian-hvm-install/l1/l2  fail never pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-checkfail  

[Xen-devel] Crash with nested HVM and Linux v5.1+

2019-09-20 Thread Sarah Newman
With nestedhvm=1, the L2 HVM guest is either hanging (Xen 4.8) or crashing (Xen 4.12.1) the L1 Xen hypervisor with recent versions of Linux. We 
isolated the commit to:


commit 093ae8f9a86a974c920b613860f1f7fd5bbd70ab
Author: Borislav Petkov 
Date:   Thu Apr 12 13:11:36 2018 +0200

x86/TSC: Use RDTSCP

Currently, the kernel uses

  [LM]FENCE; RDTSC

in the timekeeping code, to guarantee monotonicity of time where the
*FENCE is selected based on vendor.

Replace that sequence with RDTSCP which is faster or on-par and gives
the same guarantees.

A microbenchmark on Intel shows that the change is on-par.

On AMD, the change is either on-par with the current LFENCE-prefixed
RDTSC or slightly better with RDTSCP.

The comparison is done with the LFENCE-prefixed RDTSC (and not with the
MFENCE-prefixed one, as one would normally expect) because all modern
AMD families make LFENCE serializing and thus avoid the heavy MFENCE by
effectively enabling X86_FEATURE_LFENCE_RDTSC.

I could not find RDTSCP instruction being used by Linux before the given commit, which is present in Linux v5.1 and newer. As expected, masking off 
the RDTSCP cpuid flag in leaf 0x8001 prevents a cooperative guest from using that instruction and therefore prevents the crash.


--Sarah

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

[Xen-devel] [libvirt test] 141493: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141493 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141493/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-libvirt-qcow2 15 guest-start/debian.repeat fail REGR. vs. 
141415
 test-armhf-armhf-libvirt-raw 18 leak-check/check fail REGR. vs. 141415

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt 14 saverestore-support-checkfail  like 141415
 test-armhf-armhf-libvirt-raw 13 saverestore-support-checkfail  like 141415
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-amd64-i386-libvirt-xsm  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-amd64-i386-libvirt  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-support-check 
fail never pass
 test-arm64-arm64-libvirt 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-libvirt-qcow2 12 migrate-support-checkfail never pass
 test-arm64-arm64-libvirt-qcow2 13 saverestore-support-checkfail never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-checkfail   never pass
 test-armhf-armhf-libvirt 13 migrate-support-checkfail   never pass
 test-armhf-armhf-libvirt-raw 12 migrate-support-checkfail   never pass

version targeted for testing:
 libvirt  d72ed16ba73279e3f5779bbf1ca48ead3e97d3f9
baseline version:
 libvirt  522b3d2b24d0f7ac78dad442c990d4e34db0eaf2

Last test of basis   141415  2019-09-18 05:36:57 Z2 days
Failing since141456  2019-09-19 04:19:21 Z1 days2 attempts
Testing same since   141493  2019-09-20 04:18:41 Z0 days1 attempts


People who touched revisions under test:
  Daniel P. Berrangé 
  Ján Tomko 
  Michal Privoznik 
  Michal Prívozník 
  Nikolay Shirokovskiy 
  Peter Krempa 
  Shi Lei 
  Xu Yandong 

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  pass
 build-arm64-libvirt  pass
 build-armhf-libvirt  pass
 build-i386-libvirt   pass
 build-amd64-pvopspass
 build-arm64-pvopspass
 build-armhf-pvopspass
 build-i386-pvops pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm   pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsmpass
 test-amd64-amd64-libvirt-xsm pass
 test-arm64-arm64-libvirt-xsm pass
 test-amd64-i386-libvirt-xsm  pass
 test-amd64-amd64-libvirt pass
 test-arm64-arm64-libvirt pass
 test-armhf-armhf-libvirt pass
 test-amd64-i386-libvirt  pass
 test-amd64-amd64-libvirt-pairpass
 test-amd64-i386-libvirt-pair pass
 test-arm64-arm64-libvirt-qcow2   fail
 test-armhf-armhf-libvirt-raw fail
 test-amd64-amd64-libvirt-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 

[Xen-devel] [xen-unstable-smoke test] 141546: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141546 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141546/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 build-amd64-libvirt   1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a

version targeted for testing:
 xen  ae84f55353475f569daddb9a81ac0a6bc7772c90
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z8 days
Failing since141255  2019-09-12 21:01:22 Z8 days   56 attempts
Testing same since   141521  2019-09-20 17:08:20 Z0 days4 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1756 lines long.)

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

[Xen-devel] [linux-4.19 test] 141490: regressions - FAIL

2019-09-20 Thread osstest service owner
flight 141490 linux-4.19 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141490/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-i386-qemut-rhel6hvm-amd 10 redhat-install fail REGR. vs. 129313
 build-armhf-pvops 6 kernel-build fail REGR. vs. 129313

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-multivcpu  1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl-credit2   1 build-check(1)   blocked  n/a
 test-armhf-armhf-libvirt  1 build-check(1)   blocked  n/a
 test-armhf-armhf-examine  1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl-cubietruck  1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl-credit1   1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl-arndale   1 build-check(1)   blocked  n/a
 test-armhf-armhf-libvirt-raw  1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl-rtds  1 build-check(1)   blocked  n/a
 test-armhf-armhf-xl-vhd   1 build-check(1)   blocked  n/a
 test-amd64-i386-xl-qemut-ws16-amd64 17 guest-stop fail like 129313
 test-amd64-i386-xl-pvshim12 guest-start  fail   never pass
 test-amd64-i386-libvirt-xsm  13 migrate-support-checkfail   never pass
 test-amd64-i386-libvirt  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  14 saverestore-support-checkfail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-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-arm64-arm64-xl-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  14 saverestore-support-checkfail   never pass
 test-amd64-amd64-libvirt-vhd 12 migrate-support-checkfail   never pass
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stop fail never pass
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop  fail never pass
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stop fail never pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-checkfail   never pass
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stop fail never pass
 test-amd64-i386-xl-qemut-win7-amd64 17 guest-stop  fail never pass
 test-amd64-i386-xl-qemuu-ws16-amd64 17 guest-stop  fail never pass
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stop fail never pass
 test-amd64-amd64-xl-qemut-win10-i386 10 windows-installfail never pass
 test-amd64-i386-xl-qemut-win10-i386 10 windows-install fail never pass
 test-amd64-amd64-xl-qemuu-win10-i386 10 windows-installfail never pass
 test-amd64-i386-xl-qemuu-win10-i386 10 windows-install fail never pass

version targeted for testing:
 linuxdbc29aff8d04f134553326a0c533a442a1774041
baseline version:
 linux84df9525b0c27f3ebc2ebb1864fa62a97fdedb7d

Last test of basis   129313  2018-11-02 05:39:08 Z  322 days
Failing since129412  2018-11-04 14:10:15 Z  320 days  239 attempts
Testing same since   141490  2019-09-20 01:10:34 Z0 days1 attempts


2571 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm  pass
 build-arm64-xsm  pass
 build-i386-xsm   pass
 build-amd64  pass
 build-arm64  pass
 build-armhf

[Xen-devel] [xen-unstable-smoke test] 141554: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141554 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141554/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a
 build-amd64-libvirt   1 build-check(1)   blocked  n/a

version targeted for testing:
 xen  ae84f55353475f569daddb9a81ac0a6bc7772c90
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z8 days
Failing since141255  2019-09-12 21:01:22 Z8 days   57 attempts
Testing same since   141521  2019-09-20 17:08:20 Z0 days5 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1756 lines long.)

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

[Xen-devel] [freebsd-master test] 141501: all pass - PUSHED

2019-09-20 Thread osstest service owner
flight 141501 freebsd-master real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141501/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 freebsd  14aef6dfca96006e52b8fb920bde7c612ba58b79
baseline version:
 freebsd  2fa3479cfadb0bb3fe694dbfd29f2350eb2570df

Last test of basis   141420  2019-09-18 09:19:54 Z2 days
Testing same since   141501  2019-09-20 09:19:51 Z0 days1 attempts


People who touched revisions under test:
  br 
  kib 

jobs:
 build-amd64-freebsd-againpass
 build-amd64-freebsd  pass
 build-amd64-xen-freebsd  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/freebsd.git
   2fa3479cfad..14aef6dfca9  14aef6dfca96006e52b8fb920bde7c612ba58b79 -> 
tested/master

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

[Xen-devel] [xen-unstable test] 141495: tolerable FAIL

2019-09-20 Thread osstest service owner
flight 141495 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141495/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt 19 leak-check/check   fail pass in 141459

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-examine 11 examine-serial/bootloader fail in 141459 like 
141376
 test-amd64-amd64-xl-qemut-win7-amd64 17 guest-stopfail like 141459
 test-amd64-i386-xl-qemuu-win7-amd64 17 guest-stop fail like 141459
 test-amd64-amd64-xl-qemuu-win7-amd64 17 guest-stopfail like 141459
 test-armhf-armhf-libvirt 14 saverestore-support-checkfail  like 141459
 test-amd64-amd64-xl-qemuu-ws16-amd64 17 guest-stopfail like 141459
 test-amd64-i386-xl-qemut-win7-amd64 17 guest-stop fail like 141459
 test-armhf-armhf-libvirt-raw 13 saverestore-support-checkfail  like 141459
 test-amd64-amd64-xl-qemut-ws16-amd64 17 guest-stopfail like 141459
 test-amd64-i386-xl-qemuu-ws16-amd64 17 guest-stop fail like 141459
 test-amd64-amd64-libvirt 13 migrate-support-checkfail   never pass
 test-amd64-i386-xl-pvshim12 guest-start  fail   never pass
 test-amd64-i386-libvirt-xsm  13 migrate-support-checkfail   never pass
 test-amd64-i386-libvirt  13 migrate-support-checkfail   never pass
 test-amd64-amd64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-seattle  14 saverestore-support-checkfail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 11 migrate-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-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 13 migrate-support-checkfail   never pass
 test-arm64-arm64-libvirt-xsm 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-xsm  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit2  14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-thunderx 14 saverestore-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl-credit1  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-arndale  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit2  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-multivcpu 13 migrate-support-checkfail  never pass
 test-armhf-armhf-xl-multivcpu 14 saverestore-support-checkfail  never pass
 test-armhf-armhf-xl-rtds 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-rtds 14 saverestore-support-checkfail   never pass
 test-armhf-armhf-libvirt 13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-cubietruck 13 migrate-support-checkfail never pass
 test-armhf-armhf-xl-cubietruck 14 saverestore-support-checkfail never pass
 test-arm64-arm64-xl  13 migrate-support-checkfail   never pass
 test-arm64-arm64-xl  14 saverestore-support-checkfail   never pass
 test-armhf-armhf-libvirt-raw 12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  12 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-vhd  13 saverestore-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  13 migrate-support-checkfail   never pass
 test-armhf-armhf-xl-credit1  14 saverestore-support-checkfail   never pass
 test-amd64-i386-xl-qemut-ws16-amd64 17 guest-stop  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-installfail never pass
 test-amd64-amd64-xl-qemut-win10-i386 10 windows-installfail never pass
 test-amd64-i386-xl-qemut-win10-i386 10 windows-install fail never pass

version targeted for testing:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b

[Xen-devel] [xen-unstable-smoke test] 141563: regressions - trouble: blocked/fail

2019-09-20 Thread osstest service owner
flight 141563 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/141563/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm   6 xen-buildfail REGR. vs. 141253
 build-amd64   6 xen-buildfail REGR. vs. 141253
 build-armhf   6 xen-buildfail REGR. vs. 141253

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)blocked n/a
 test-armhf-armhf-xl   1 build-check(1)   blocked  n/a
 test-arm64-arm64-xl-xsm   1 build-check(1)   blocked  n/a
 test-amd64-amd64-libvirt  1 build-check(1)   blocked  n/a
 build-amd64-libvirt   1 build-check(1)   blocked  n/a

version targeted for testing:
 xen  ae84f55353475f569daddb9a81ac0a6bc7772c90
baseline version:
 xen  1014f47c7a808e025b8920ab80bfe73a2888b3e5

Last test of basis   141253  2019-09-12 17:00:43 Z8 days
Failing since141255  2019-09-12 21:01:22 Z8 days   58 attempts
Testing same since   141521  2019-09-20 17:08:20 Z0 days6 attempts


People who touched revisions under test:
  Andrew Cooper 
  Anthony PERARD 
  Chao Gao 
  Christian Lindig 
  Daniel De Graaf 
  Ian Jackson 
  Jan Beulich 
  Juergen Gross 
  Julien Grall 
  Oleksandr Tyshchenko 
  Paul Durrant 
  Pawel Wieczorkiewicz 
  Roger Pau Monné 
  Stefano Stabellini 
  Stefano Stabellini 
  Volodymyr Babchuk 
  Wei Liu 
  Wei Liu 

jobs:
 build-arm64-xsm  fail
 build-amd64  fail
 build-armhf  fail
 build-amd64-libvirt  blocked 
 test-armhf-armhf-xl  blocked 
 test-arm64-arm64-xl-xsm  blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64blocked 
 test-amd64-amd64-libvirt blocked 



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


Not pushing.

(No revision log; it would be 1756 lines long.)

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

[Xen-devel] [xen-unstable-smoke bisection] complete build-amd64

2019-09-20 Thread osstest service owner
branch xen-unstable-smoke
xenbranch xen-unstable-smoke
job build-amd64
testid xen-build

Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: xen git://xenbits.xen.org/xen.git

*** Found and reproduced problem changeset ***

  Bug is in tree:  xen git://xenbits.xen.org/xen.git
  Bug introduced:  edaa631ddcee665cdfae1cf6bc7492c791e01ef4
  Bug not present: d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/141560/


  commit edaa631ddcee665cdfae1cf6bc7492c791e01ef4
  Author: Anthony PERARD 
  Date:   Thu May 23 11:54:52 2019 +0100
  
  libxl: Make libxl_domain_unpause async
  
  libxl_domain_unpause needs to make QMP calls, which are asynchronous,
  change the API to reflect that.
  
  Do the same with libxl_domain_pause async, even if it will keep
  completing synchronously.
  
  Also fix some coding style issue in those functions.
  
  Signed-off-by: Anthony PERARD 
  Acked-by: Ian Jackson 


For bisection revision-tuple graph see:
   
http://logs.test-lab.xenproject.org/osstest/results/bisect/xen-unstable-smoke/build-amd64.xen-build.html
Revision IDs in each graph node refer, respectively, to the Trees above.


Running cs-bisection-step 
--graph-out=/home/logs/results/bisect/xen-unstable-smoke/build-amd64.xen-build 
--summary-out=tmp/141571.bisection-summary --basis-template=141253 
--blessings=real,real-bisect xen-unstable-smoke build-amd64 xen-build
Searching for failure / basis pass:
 141563 fail [host=godello0] / 141498 [host=godello1] 141494 ok.
Failure / basis pass flights: 141563 / 141494
(tree with no url: minios)
(tree with no url: ovmf)
(tree with no url: seabios)
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: xen git://xenbits.xen.org/xen.git
Latest d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
Basis pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ce44fd015e55d0ecc47c160fb5ce69070aa4991b
Generating revisions with ./adhoc-revtuple-generator  
git://xenbits.xen.org/qemu-xen-traditional.git#d0d8ad39ecb51cd7497cd524484fe09f50876798-d0d8ad39ecb51cd7497cd524484fe09f50876798
 
git://xenbits.xen.org/qemu-xen.git#cef9660618a880ced798375a0fd16a8ad80bd0f0-cef9660618a880ced798375a0fd16a8ad80bd0f0
 
git://xenbits.xen.org/xen.git#ce44fd015e55d0ecc47c160fb5ce69070aa4991b-ae84f55353475f569daddb9a81ac0a6bc7772c90
Loaded 1001 nodes in revision graph
Searching for test results:
 141513 [host=godello1]
 141489 pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ce44fd015e55d0ecc47c160fb5ce69070aa4991b
 141498 [host=godello1]
 141494 pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ce44fd015e55d0ecc47c160fb5ce69070aa4991b
 141508 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
a30910bfd71a64895f0d6ddbb301cf1b5ed6c2f4
 141545 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
edaa631ddcee665cdfae1cf6bc7492c791e01ef4
 141565 [host=baroque0]
 141521 [host=huxelrebe0]
 141549 pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
4750c9237bd49a2179d5bd28e7259df9c46de25a
 141551 pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
 141546 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
 141552 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
edaa631ddcee665cdfae1cf6bc7492c791e01ef4
 141531 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
 141536 [host=huxelrebe0]
 141568 [host=baroque0]
 141537 pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ce44fd015e55d0ecc47c160fb5ce69070aa4991b
 141540 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
 141541 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ffc664dcb09654c9d34df68f3faf4d0b00642140
 141539 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
ae84f55353475f569daddb9a81ac0a6bc7772c90
 141553 pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
d6c7cd918adcfdc8ae41cf89e6a47ef4e4d3c1f6
 141542 pass d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0fd16a8ad80bd0f0 
1d1800ed347de5da7d45523758e33561d0b3c72f
 141543 fail d0d8ad39ecb51cd7497cd524484fe09f50876798 
cef9660618a880ced798375a0f