[dpdk-dev] [PATCH 2/5] net/virtio: add DEVICE_NEEDS_RESET status bit
Adrian Moreno
amorenoz at redhat.com
Thu Jul 16 09:34:12 CEST 2020
Hi,
On 7/16/20 4:26 AM, Xia, Chenbo wrote:
> Hi Adrian,
>
>> -----Original Message-----
>> From: Adrian Moreno <amorenoz at redhat.com>
>> Sent: Thursday, July 16, 2020 1:18 AM
>> To: dev at dpdk.org
>> Cc: maxime.coquelin at redhat.com; Wang, Zhihong <zhihong.wang at intel.com>;
>> amorenoz at redhat.com; Xia, Chenbo <chenbo.xia at intel.com>
>> Subject: [PATCH 2/5] net/virtio: add DEVICE_NEEDS_RESET status bit
>>
>> For the sake of completeness, add the definition of the missing status bit in
>> accordance with the virtio spec
>>
>> Signed-off-by: Adrian Moreno <amorenoz at redhat.com>
>> ---
>> drivers/net/virtio/virtio_pci.h | 13 +++++++------
>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/net/virtio/virtio_pci.h b/drivers/net/virtio/virtio_pci.h index
>> 74ed77e33..ab61e911b 100644
>> --- a/drivers/net/virtio/virtio_pci.h
>> +++ b/drivers/net/virtio/virtio_pci.h
>> @@ -57,12 +57,13 @@ struct virtnet_ctl;
>> #define VIRTIO_ID_9P 0x09
>>
>> /* Status byte for guest to report progress. */
>> -#define VIRTIO_CONFIG_STATUS_RESET 0x00
>> -#define VIRTIO_CONFIG_STATUS_ACK 0x01
>> -#define VIRTIO_CONFIG_STATUS_DRIVER 0x02
>> -#define VIRTIO_CONFIG_STATUS_DRIVER_OK 0x04 -#define
>> VIRTIO_CONFIG_STATUS_FEATURES_OK 0x08
>> -#define VIRTIO_CONFIG_STATUS_FAILED 0x80
>> +#define VIRTIO_CONFIG_STATUS_RESET 0x00
>> +#define VIRTIO_CONFIG_STATUS_ACK 0x01
>> +#define VIRTIO_CONFIG_STATUS_DRIVER 0x02
>> +#define VIRTIO_CONFIG_STATUS_DRIVER_OK 0x04
>> +#define VIRTIO_CONFIG_STATUS_FEATURES_OK 0x08
>> +#define VIRTIO_CONFIG_STATUS_DEV_NEED_RESET 0x40
>> +#define VIRTIO_CONFIG_STATUS_FAILED 0x80
>
> Do we need to delete ' VIRTIO_CONFIG_STATUS_RESET'? I see vhost lib does not
> have it now. And I read virtio 1.1 spec and find the description of writing 0 to
> reset device is deleted. I think virtio 1.1 spec is not very clear about reset status.
> Does 'DEV_NEED_RESET' equal old 'RESET'?
>
In virtio 1.1
"2.1.2 Device Requirements: Device Status Field
The device MUST initialize device status to 0 upon reset.
...
"
So I think having "#define VIRTIO_CONFIG_STATUS_RESET 0x00" is still useful to
understand what is going on in:
void
vtpci_reset(struct virtio_hw *hw)
{
VTPCI_OPS(hw)->set_status(hw, VIRTIO_CONFIG_STATUS_RESET);
/* flush status write */
VTPCI_OPS(hw)->get_status(hw);
}
DEV_NEED_RESET is used for the device to notify that it has encountered an
unrecoverable error. Therefore, the driver would never
"set_status(VIRTIO_CONFIG_STATUS_DEV_NEED_RESET)"; instead, it should read the
status and if this bit is set, reset the device.
> Thanks!
> Chenbo
>
>>
>> /*
>> * Each virtqueue indirect descriptor list must be physically contiguous.
>> --
>> 2.26.2
>
--
Adrián Moreno
More information about the dev
mailing list