[SLOF] [PATCH v1 10/27] virtio: make virtio_vring_desc 1.0 aware

Nikunj A Dadhania nikunj at linux.vnet.ibm.com
Mon Jan 18 15:46:55 AEDT 2016


Alexey Kardashevskiy <aik at ozlabs.ru> writes:

> On 01/14/2016 10:04 PM, Nikunj A Dadhania wrote:
>> Alexey Kardashevskiy <aik at ozlabs.ru> writes:
>>
>>> On 01/13/2016 10:16 PM, Nikunj A Dadhania wrote:
>>>> Signed-off-by: Nikunj A Dadhania <nikunj at linux.vnet.ibm.com>
>>>> ---
>>>>    lib/libvirtio/virtio.c | 14 +++++++++++---
>>>>    1 file changed, 11 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/lib/libvirtio/virtio.c b/lib/libvirtio/virtio.c
>>>> index aa4a45b..f95e86b 100644
>>>> --- a/lib/libvirtio/virtio.c
>>>> +++ b/lib/libvirtio/virtio.c
>>>> @@ -235,14 +235,22 @@ struct vring_desc *virtio_get_vring_desc(struct virtio_device *dev, int queue)
>>>>    {
>>>>    	struct vring_desc *desc = 0;
>>>>
>>>> -	if (dev->type == VIRTIO_TYPE_PCI) {
>>>> +	if (dev->type != VIRTIO_TYPE_PCI)
>>>> +		return NULL;
>
>
> [1]
>
>
>>>> +	if (dev->is_modern) {
>>>> +		void *q_sel = dev->common.addr + offset_of(struct virtio_dev_common, q_select);
>>>> +		void *q_desc = dev->common.addr + offset_of(struct virtio_dev_common, q_desc);
>>>> +
>>>> +		ci_write_16(q_sel, cpu_to_le16(queue));
>>>> +		eieio();
>>>
>>>
>>> Here and in next patches I see this new eieio(), please merge similar
>>> changes to one patch and add a commit log about this "make xxx 1.0 aware"
>>> change.
>>
>> These are two different code path now:
>>
>> if (modern) {
>>     select_queue_virtio_1_0()
>>     eieio()
>>     write_virtio_1_0()
>> }
>> else {
>>    select_queue()
>>    eieio()
>>    write()
>> }
>>
>> So the change should come with this patch and not separately. Am i
>> missing something ?
>
>
> Ah, I missed that old code did have eieio() already. Never mind.
>
>
>
>>
>>>
>>>
>>>> +		desc = (void *)(virtio_read64(q_desc));
>>>> +	} else {
>>>>    		ci_write_16(dev->base+VIRTIOHDR_QUEUE_SELECT,
>>>>    			    cpu_to_le16(queue));
>>>>    		eieio();
>>>>    		desc = (void*)(4096L *
>>>> -		   le32_to_cpu(ci_read_32(dev->base+VIRTIOHDR_QUEUE_ADDRESS)));
>>>> +			       le32_to_cpu(ci_read_32(dev->base+VIRTIOHDR_QUEUE_ADDRESS)));
>>>
>>> Unrelared change.
>>
>> Tab changes which wasnt correct.
>
>
> Separate patch, please. You can merge all these code design fixes into one 
> huge patch. [1] could go there too. Easier to read now and bisect later if 
> functional changes are separated from cosmetic ones.

Sure, that is fine, will do that.

>
>>
>>>
>>>
>>>>    	}
>>>> -
>>>
>>> Here too.
>>>
>>>
>>>>    	return desc;
>>>>    }
>>>>
>>>>
>>>
>>>
>>> --
>>> Alexey
>>
>
>
> -- 
> Alexey



More information about the SLOF mailing list