All of lore.kernel.org
 help / color / mirror / Atom feed
From: Auger Eric <eric.auger@redhat.com>
To: Christoffer Dall <christoffer.dall@arm.com>
Cc: eric.auger.pro@gmail.com, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu,
	marc.zyngier@arm.com, cdall@kernel.org, peter.maydell@linaro.org,
	andre.przywara@arm.com, drjones@redhat.com, wei@redhat.com
Subject: Re: [PATCH v3 09/12] KVM: arm/arm64: Check all vcpu redistributors are set on map_resources
Date: Thu, 26 Apr 2018 11:56:10 +0200	[thread overview]
Message-ID: <cd56c99f-a266-dc04-41d7-62f35165a39b@redhat.com> (raw)
In-Reply-To: <20180424210809.GJ4533@C02W217FHV2R.local>



On 04/24/2018 11:08 PM, Christoffer Dall wrote:
> On Fri, Apr 13, 2018 at 10:20:55AM +0200, Eric Auger wrote:
>> On vcpu first run, we eventually know the actual number of vcpus.
>> This is a synchronization point to check all redistributors regions
>> were assigned.
> 
> Isn't it the other way around?  We want to check that all redistributors
> (one for every VCPU) has its base address set?  (I don't suppose we care
> about unused redistributor regions).
Yes I meant "to check all redistributors were assigned"
> 
>> On kvm_vgic_map_resources() we check both dist and
>> redist were set, eventually check potential base address inconsistencies.
> 
> Do we need to check that again?  Didn't we check that at
> creation/register time?
Yes we need to, to handle the case where the userspace does not provide
sufficient rdist region space

create 8 vcpus (no iodev registered)
define a redist region for 4 (4 iodevs registered)
start the vcpus
> 
>>
>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>> ---
>>  virt/kvm/arm/vgic/vgic-v3.c | 19 ++++++++++++++-----
>>  1 file changed, 14 insertions(+), 5 deletions(-)
>>
>> diff --git a/virt/kvm/arm/vgic/vgic-v3.c b/virt/kvm/arm/vgic/vgic-v3.c
>> index b80f650..feabc24 100644
>> --- a/virt/kvm/arm/vgic/vgic-v3.c
>> +++ b/virt/kvm/arm/vgic/vgic-v3.c
>> @@ -484,16 +484,25 @@ struct vgic_redist_region *vgic_v3_rdist_region_from_index(struct kvm *kvm,
>>  
>>  int vgic_v3_map_resources(struct kvm *kvm)
>>  {
>> -	int ret = 0;
>>  	struct vgic_dist *dist = &kvm->arch.vgic;
>> -	struct vgic_redist_region *rdreg =
>> -		list_first_entry(&dist->rd_regions,
>> -				 struct vgic_redist_region, list);
>> +	struct kvm_vcpu *vcpu;
>> +	int ret = 0;
>> +	int c;
>>  
>>  	if (vgic_ready(kvm))
>>  		goto out;
>>  
>> -	if (IS_VGIC_ADDR_UNDEF(dist->vgic_dist_base) || !rdreg) {
>> +	kvm_for_each_vcpu(c, vcpu, kvm) {
>> +		struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
>> +
>> +		if (IS_VGIC_ADDR_UNDEF(vgic_cpu->rd_iodev.base_addr)) {
>> +			kvm_err("vcpu %d redistributor base not set\n", c);
> 
> Shouldn't this be a kvm_debug instead?  I think the user can just
> provoke this by failing to register enough redistributor regions.
yes indeed.
> 
> I'm also wondering if we could check this on vgic_init time for gicv3,
> which should have a defined vgic init ordering requirement.  That would
> make debugging it slightly easier to debug than "my machine isn't
> starting, and I get -ENXIO, and it can mean anything".

Well at vgic_init time, vcpus are frozen but dist and redist regions are
not forced to be set, hence the late check we do in map_resources, on
1st VCPU run. Not sure I get this one?

Thanks

Eric
> 
>> +			ret = -ENXIO;
>> +			goto out;
>> +		}
>> +	}
>> +
>> +	if (IS_VGIC_ADDR_UNDEF(dist->vgic_dist_base)) {
>>  		kvm_err("Need to set vgic distributor addresses first\n");
>>  		ret = -ENXIO;
>>  		goto out;
>> -- 
>> 2.5.5
>>
> 
> Thanks,
> -Christoffer
> 

  reply	other threads:[~2018-04-26  9:56 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-13  8:20 [PATCH v3 00/12] KVM: arm/arm64: Allow multiple GICv3 redistributor regions Eric Auger
2018-04-13  8:20 ` [PATCH v3 01/12] KVM: arm/arm64: Set dist->spis to NULL after kfree Eric Auger
2018-04-13  8:20   ` Eric Auger
2018-04-24 21:06   ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 02/12] KVM: arm/arm64: Document KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION Eric Auger
2018-04-13  9:00   ` Peter Maydell
2018-04-24 16:46   ` Christoffer Dall
2018-04-24 16:50     ` Peter Maydell
2018-04-24 20:34       ` Auger Eric
2018-04-24 21:12       ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 03/12] KVM: arm/arm64: Replace the single rdist region by a list Eric Auger
2018-04-13  8:20   ` Eric Auger
2018-04-24 21:06   ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 04/12] KVM: arm/arm64: Helper to locate free rdist index Eric Auger
2018-04-13  8:20   ` Eric Auger
2018-04-24 21:07   ` Christoffer Dall
2018-04-26  7:47     ` Auger Eric
2018-04-13  8:20 ` [PATCH v3 05/12] KVM: arm/arm64: Revisit Redistributor TYPER last bit computation Eric Auger
2018-04-24 21:06   ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 06/12] KVM: arm/arm64: Helper to register a new redistributor region Eric Auger
2018-04-24 16:47   ` Christoffer Dall
2018-04-26  7:32     ` Auger Eric
2018-04-26 10:04       ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 07/12] KVM: arm/arm64: Adapt vgic_v3_check_base to multiple rdist regions Eric Auger
2018-04-24 21:07   ` Christoffer Dall
2018-04-26  8:29     ` Auger Eric
2018-04-26 10:06       ` Christoffer Dall
2018-04-26 14:52         ` Auger Eric
2018-04-13  8:20 ` [PATCH v3 08/12] KVM: arm/arm64: Check vcpu redist base before registering an iodev Eric Auger
2018-04-24 21:07   ` Christoffer Dall
2018-04-26  9:25     ` Auger Eric
2018-04-26 10:12       ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 09/12] KVM: arm/arm64: Check all vcpu redistributors are set on map_resources Eric Auger
2018-04-24 21:08   ` Christoffer Dall
2018-04-26  9:56     ` Auger Eric [this message]
2018-04-26 10:16       ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 10/12] KVM: arm/arm64: Add KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION Eric Auger
2018-04-24 21:08   ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 11/12] KVM: arm/arm64: Implement KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION Eric Auger
2018-04-24 21:06   ` Christoffer Dall
2018-04-30  7:25     ` Auger Eric
2018-04-27 19:14   ` Christoffer Dall
2018-04-13  8:20 ` [PATCH v3 12/12] KVM: arm/arm64: Bump VGIC_V3_MAX_CPUS to 512 Eric Auger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cd56c99f-a266-dc04-41d7-62f35165a39b@redhat.com \
    --to=eric.auger@redhat.com \
    --cc=andre.przywara@arm.com \
    --cc=cdall@kernel.org \
    --cc=christoffer.dall@arm.com \
    --cc=drjones@redhat.com \
    --cc=eric.auger.pro@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=peter.maydell@linaro.org \
    --cc=wei@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.