|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/4] VMX: Add posted interrupt supporting
Zhang, Yang Z wrote on 2013-04-09:
> Jan Beulich wrote on 2013-04-09:
>>>>> On 09.04.13 at 08:01, Yang Zhang <yang.z.zhang@xxxxxxxxx> wrote:
>>> +static void vmx_deliver_posted_intr(struct vcpu *v, u8 vector, u8
>>> trig_mode)
>>> +{
>>> + vlapic_set_tmr(vcpu_vlapic(v), vector, trig_mode);
>>> +
>>> + vmx_update_eoi_exit_bitmap(v, vector, trig_mode);
>>> +
>>> + if ( pi_test_and_set_pir(vector, &v->arch.hvm_vmx.pi_desc) )
>>> + return;
>>> +
>>> + if ( unlikely(v->arch.hvm_vmx.eoi_exitmap_changed) )
>>> + {
>>> + /* If EOI exitbitmap needs to changed or notification vector
>>> + * can't be allocated, interrupt will not be injected till
>>> + * VMEntry as it used to be
>>> + */
>>> + pi_test_and_set_on(&v->arch.hvm_vmx.pi_desc);
>>
>> Why is this a test-and-set when the result is unused?
>>
>>
>>> + goto out;
>>> + }
>>> +
>>> + if ( !pi_test_and_set_on(&v->arch.hvm_vmx.pi_desc) )
>>
>> And if it's just because you don't want to have a simple "set" only
>> operation, then the two instances should be folded, and the result
>> stored in a local variable.
> Yes. Only want to set on bit. Perhaps it is better to define a separate
> function
> pi_set_on() for this to make the logic more clear.
>
>>
>>> +static void vmx_sync_pir_to_irr(struct vcpu *v)
>>> +{
>>> + struct vlapic *vlapic = vcpu_vlapic(v);
>>> + u32 val;
>>> + int offset, group;
>>
>> unsigned.
> Sure.
>
>>> +
>>> + if ( !pi_test_and_clear_on(&v->arch.hvm_vmx.pi_desc) )
>>> + return;
>>> +
>>> + for (group = 0; group < 8; group++ )
>>
>> Formatting.
> Sure.
>
>>
>>> + {
>>> + val = pi_get_pir(&v->arch.hvm_vmx.pi_desc, group);
>>> + offset = APIC_IRR + 0x10 * group;
>>> + *((uint32_t *)(&vlapic->regs->data[offset])) |= val;
>>
>> Can't you use vlapic_set_vector() here (even if that means
>> looping over vectors individually rather than groups), to add the
>> necessary atomicity (I don't see how you avoid races with other
>> updates) and to avoid the ugly cast?
Which races?
Best regards,
Yang
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |