[dpdk-dev] [PATCH 2/5] net/virtio: add DEVICE_NEEDS_RESET status bit

Xia, Chenbo chenbo.xia at intel.com
Thu Jul 16 10:14:19 CEST 2020


Hi Adrian,

> -----Original Message-----
> From: Adrian Moreno <amorenoz at redhat.com>
> Sent: Thursday, July 16, 2020 3:34 PM
> To: Xia, Chenbo <chenbo.xia at intel.com>; dev at dpdk.org
> Cc: maxime.coquelin at redhat.com; Wang, Zhihong <zhihong.wang at intel.com>;
> Li, Miao <miao.li at intel.com>
> Subject: Re: [PATCH 2/5] net/virtio: add DEVICE_NEEDS_RESET status bit
> 
> 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.

Yes, you are correct! I missed that part. Btw, should we add STATUS_RESET to
Vhost lib? I see there's no reset status now.

Thanks!
Chenbo

> 
> 
> > Thanks!
> > Chenbo
> >
> >>
> >>  /*
> >>   * Each virtqueue indirect descriptor list must be physically contiguous.
> >> --
> >> 2.26.2
> >
> 
> --
> Adrián Moreno



More information about the dev mailing list