Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1542045

Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with kvm_{x,x2}apic_id

From Paolo Bonzini <pbonzini@redhat.com>
Newsgroups linux.kernel
Subject Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with kvm_{x,x2}apic_id
Date 2016-12-14 18:00 +0100
Message-ID <sOl4v-mI-15@gated-at.bofh.it> (permalink)
References <sNYhr-3rV-23@gated-at.bofh.it> <sNYhs-3rV-41@gated-at.bofh.it> <sOkrD-9J-25@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw



On 14/12/2016 17:15, David Hildenbrand wrote:
> 
>>      kvm_for_each_vcpu(i, vcpu, kvm)
>>          if (kvm_apic_present(vcpu))
>> -            max_id = max(max_id, kvm_apic_id(vcpu->arch.apic));
>> +            max_id = max(max_id, kvm_x2apic_id(vcpu->arch.apic));
>>
>>      new = kvm_kvzalloc(sizeof(struct kvm_apic_map) +
>>                         sizeof(struct kvm_lapic *) * ((u64)max_id + 1));
>> @@ -179,16 +189,23 @@ static void recalculate_apic_map(struct kvm *kvm)
>>          struct kvm_lapic *apic = vcpu->arch.apic;
>>          struct kvm_lapic **cluster;
>>          u16 mask;
>> -        u32 ldr, aid;
>> +        u32 ldr;
>> +        u8 xapic_id;
>> +        u32 x2apic_id;
>>
>>          if (!kvm_apic_present(vcpu))
>>              continue;
>>
>> -        aid = kvm_apic_id(apic);
> 
> think I'd even prefer here a simple
> 
> aid = kvm_xapic_id(apic);
> if (apic_x2apic_mode(apic))
>     aid = kvm_x2apic_id(apic);
> 
> that would keep changes minimal and I don't really see any benefit in
> the code when splitting handling up.
> 
> Patch 4 then simply can fixup setting code
> 
> if (aid <= new->max_apic_id && !new->phys_map[aid])
>     new->phys_map[aid] = apic;
> 
> (if I am not missing some important corner case here)

Radim, what do you think?  I wanted to get these in before Christmas,
but it's your call.

Paolo

> 
>> -        ldr = kvm_lapic_get_reg(apic, APIC_LDR);
>> +        xapic_id = kvm_xapic_id(apic);
>> +        x2apic_id = kvm_x2apic_id(apic);
>>
>> -        if (aid <= new->max_apic_id)
>> -            new->phys_map[aid] = apic;
>> +        if (apic_x2apic_mode(apic) &&
>> +                x2apic_id <= new->max_apic_id)
>> +            new->phys_map[x2apic_id] = apic;
>> +        else if (!apic_x2apic_mode(apic))
> 
> 
> This looks good to me.
> 

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 0/4] KVM: x86: allow hotplug of VCPU with APIC ID over 0xff Radim Krčmář <rkrcmar@redhat.com> - 2016-12-13 17:40 +0100
  [PATCH v2 3/4] KVM: x86: make interrupt delivery fast and slow path behave the same Radim Krčmář <rkrcmar@redhat.com> - 2016-12-13 17:40 +0100
  [PATCH v2 4/4] KVM: x86: allow hotplug of VCPU with APIC ID over 0xff Radim Krčmář <rkrcmar@redhat.com> - 2016-12-13 17:40 +0100
  [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with kvm_{x,x2}apic_id Radim Krčmář <rkrcmar@redhat.com> - 2016-12-13 17:40 +0100
    Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id David Hildenbrand <david@redhat.com> - 2016-12-14 13:40 +0100
      Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id Radim Krčmář <rkrcmar@redhat.com> - 2016-12-14 14:50 +0100
        Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id Paolo Bonzini <pbonzini@redhat.com> - 2016-12-14 17:00 +0100
    Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id David Hildenbrand <david@redhat.com> - 2016-12-14 17:20 +0100
      Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id Paolo Bonzini <pbonzini@redhat.com> - 2016-12-14 18:00 +0100
        Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id Radim Krčmář <rkrcmar@redhat.com> - 2016-12-14 18:20 +0100
      Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id Radim Krčmář <rkrcmar@redhat.com> - 2016-12-14 18:20 +0100
        Re: [PATCH v2 2/4] KVM: x86: replace kvm_apic_id with  kvm_{x,x2}apic_id David Hildenbrand <david@redhat.com> - 2016-12-14 18:30 +0100

csiph-web