[SLOF] [PATCH v2 12/19] virtio: add 64-bit virtio helpers for 1.0

Alexey Kardashevskiy aik at ozlabs.ru
Fri Jan 22 15:55:25 AEDT 2016


On 01/21/2016 06:58 PM, Nikunj A Dadhania wrote:
> Thomas Huth <thuth at redhat.com> writes:
>
>> On 20.01.2016 13:10, Nikunj A Dadhania wrote:
>>>   } __attribute__ ((packed));
>>>
>>> +/* virtio 1.0 Spec: 4.1.3 PCI Device Layout
>>> + *
>>> + * Fields of different sizes are present in the device configuration regions.
>>> + * All 64-bit, 32-bit and 16-bit fields are little-endian. 64-bit fields are to
>>> + * be treated as two 32-bit fields, with low 32 bit part followed by the high 32
>>> + * bit part.
>>> + */
>>> +static void virtio_write64(void *addr, uint64_t val)
>>> +{
>>> +	uint32_t hi = (val >> 32) & 0xFFFFFFFF;
>>> +	uint32_t lo = val & 0xFFFFFFFF;
>>> +
>>> +	ci_write_32(addr, cpu_to_le32(lo));
>>> +	ci_write_32(addr + 4, cpu_to_le32(hi));
>>> +}
>>> +
>>> +static uint64_t virtio_read64(void *addr)
>>> +{
>>> +	uint64_t hi, lo;
>>> +
>>> +	lo = le32_to_cpu(ci_read_32(addr));
>>> +	hi = le32_to_cpu(ci_read_32(addr + 4));
>>> +	return (hi << 32) | lo;
>>> +}
>>
>> I'd maybe name them "virtio_pci_write64" and "virtio_pci_read64" to make
>> it clear that they are only to be used when reading and writing to the
>> PCI space - otherwise somebody might use them for accessing the virtio
>> rings one day, for example.
>
> Right, will rename.


I'd rename these to virtio_ci_write_64/virtio_ci_read_64 as they are 
wrappers on top of ci_read_xx/ci_write_xx. And frankly they can be used to 
access any guest physical memory and any MMIO.



-- 
Alexey


More information about the SLOF mailing list