All of lore.kernel.org
 help / color / mirror / Atom feed
From: Haiyang Zhang <haiyangz@microsoft.com>
To: "Michael Kelley (LINUX)" <mikelley@microsoft.com>,
	Tianyu Lan <ltykernel@gmail.com>,
	KY Srinivasan <kys@microsoft.com>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	"wei.liu@kernel.org" <wei.liu@kernel.org>,
	Dexuan Cui <decui@microsoft.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"kuba@kernel.org" <kuba@kernel.org>,
	"jejb@linux.ibm.com" <jejb@linux.ibm.com>,
	"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"hch@infradead.org" <hch@infradead.org>,
	"m.szyprowski@samsung.com" <m.szyprowski@samsung.com>,
	"robin.murphy@arm.com" <robin.murphy@arm.com>,
	Tianyu Lan <Tianyu.Lan@microsoft.com>,
	"thomas.lendacky@amd.com" <thomas.lendacky@amd.com>
Cc: "iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	vkuznets <vkuznets@redhat.com>,
	"brijesh.singh@amd.com" <brijesh.singh@amd.com>,
	"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
	"hch@lst.de" <hch@lst.de>, "joro@8bytes.org" <joro@8bytes.org>,
	"parri.andrea@gmail.com" <parri.andrea@gmail.com>,
	"dave.hansen@intel.com" <dave.hansen@intel.com>
Subject: RE: [PATCH V6 5/5] net: netvsc: Add Isolation VM support for netvsc driver
Date: Thu, 9 Dec 2021 20:40:02 +0000	[thread overview]
Message-ID: <BN8PR21MB128403BCF7A491E55F8E2B26CA709@BN8PR21MB1284.namprd21.prod.outlook.com> (raw)
In-Reply-To: <MWHPR21MB1593AF3BB6CBCA14B3805D35D7709@MWHPR21MB1593.namprd21.prod.outlook.com>



> -----Original Message-----
> From: Michael Kelley (LINUX) <mikelley@microsoft.com>
> Sent: Thursday, December 9, 2021 2:54 PM
> To: Haiyang Zhang <haiyangz@microsoft.com>; Tianyu Lan <ltykernel@gmail.com>; KY
> Srinivasan <kys@microsoft.com>; Stephen Hemminger <sthemmin@microsoft.com>;
> wei.liu@kernel.org; Dexuan Cui <decui@microsoft.com>; tglx@linutronix.de; mingo@redhat.com;
> bp@alien8.de; dave.hansen@linux.intel.com; x86@kernel.org; hpa@zytor.com;
> davem@davemloft.net; kuba@kernel.org; jejb@linux.ibm.com; martin.petersen@oracle.com;
> arnd@arndb.de; hch@infradead.org; m.szyprowski@samsung.com; robin.murphy@arm.com; Tianyu
> Lan <Tianyu.Lan@microsoft.com>; thomas.lendacky@amd.com
> Cc: iommu@lists.linux-foundation.org; linux-arch@vger.kernel.org; linux-
> hyperv@vger.kernel.org; linux-kernel@vger.kernel.org; linux-scsi@vger.kernel.org;
> netdev@vger.kernel.org; vkuznets <vkuznets@redhat.com>; brijesh.singh@amd.com;
> konrad.wilk@oracle.com; hch@lst.de; joro@8bytes.org; parri.andrea@gmail.com;
> dave.hansen@intel.com
> Subject: RE: [PATCH V6 5/5] net: netvsc: Add Isolation VM support for netvsc driver
> 
> From: Haiyang Zhang <haiyangz@microsoft.com> Sent: Wednesday, December 8, 2021 12:14 PM
> > > From: Tianyu Lan <ltykernel@gmail.com>
> > > Sent: Tuesday, December 7, 2021 2:56 AM
> 
> [snip]
> 
> > >  static inline int netvsc_send_pkt(
> > >  	struct hv_device *device,
> > >  	struct hv_netvsc_packet *packet,
> > > @@ -986,14 +1105,24 @@ static inline int netvsc_send_pkt(
> > >
> > >  	trace_nvsp_send_pkt(ndev, out_channel, rpkt);
> > >
> > > +	packet->dma_range = NULL;
> > >  	if (packet->page_buf_cnt) {
> > >  		if (packet->cp_partial)
> > >  			pb += packet->rmsg_pgcnt;
> > >
> > > +		ret = netvsc_dma_map(ndev_ctx->device_ctx, packet, pb);
> > > +		if (ret) {
> > > +			ret = -EAGAIN;
> > > +			goto exit;
> > > +		}
> >
> > Returning EAGAIN will let the upper network layer busy retry,
> > which may make things worse.
> > I suggest to return ENOSPC here like another place in this
> > function, which will just drop the packet, and let the network
> > protocol/app layer decide how to recover.
> >
> > Thanks,
> > - Haiyang
> 
> I made the original suggestion to return -EAGAIN here.   A
> DMA mapping failure should occur only if swiotlb bounce
> buffer space is unavailable, which is a transient condition.
> The existing code already stops the queue and returns
> -EAGAIN when the ring buffer is full, which is also a transient
> condition.  My sense is that the two conditions should be
> handled the same way.  Or is there a reason why a ring
> buffer full condition should stop the queue and retry, while
> a mapping failure should drop the packet?

The netvsc_dma_map() fails in these two places. The dma_map_single() 
is doing the maping with swiotlb bounce buffer, correct? And it will 
become successful after the previous packets are unmapped?

+	packet->dma_range = kcalloc(page_count,
+				    sizeof(*packet->dma_range),
+				    GFP_KERNEL);

+		dma = dma_map_single(&hv_dev->device, src, len,
+				     DMA_TO_DEVICE);

I recalled your previous suggestion now, and agree with you that 
we can treat it the same way (return -EAGAIN) in this case. And 
the existing code will stop the queue temporarily.

Thanks,
- Haiyang

WARNING: multiple messages have this Message-ID (diff)
From: Haiyang Zhang via iommu <iommu@lists.linux-foundation.org>
To: "Michael Kelley (LINUX)" <mikelley@microsoft.com>,
	Tianyu Lan <ltykernel@gmail.com>,
	KY Srinivasan <kys@microsoft.com>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	"wei.liu@kernel.org" <wei.liu@kernel.org>,
	Dexuan Cui <decui@microsoft.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"kuba@kernel.org" <kuba@kernel.org>,
	"jejb@linux.ibm.com" <jejb@linux.ibm.com>,
	"martin.petersen@oracle.com" <martin.petersen@oracle.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"hch@infradead.org" <hch@infradead.org>,
	"m.szyprowski@samsung.com" <m.szyprowski@samsung.com>,
	"robin.murphy@arm.com" <robin.murphy@arm.com>,
	Tianyu Lan <Tianyu.Lan@microsoft.com>,
	"thomas.lendacky@amd.com" <thomas.lendacky@amd.com>
Cc: "linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
	"parri.andrea@gmail.com" <parri.andrea@gmail.com>,
	"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
	"brijesh.singh@amd.com" <brijesh.singh@amd.com>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"dave.hansen@intel.com" <dave.hansen@intel.com>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	vkuznets <vkuznets@redhat.com>, "hch@lst.de" <hch@lst.de>
Subject: RE: [PATCH V6 5/5] net: netvsc: Add Isolation VM support for netvsc driver
Date: Thu, 9 Dec 2021 20:40:02 +0000	[thread overview]
Message-ID: <BN8PR21MB128403BCF7A491E55F8E2B26CA709@BN8PR21MB1284.namprd21.prod.outlook.com> (raw)
In-Reply-To: <MWHPR21MB1593AF3BB6CBCA14B3805D35D7709@MWHPR21MB1593.namprd21.prod.outlook.com>



> -----Original Message-----
> From: Michael Kelley (LINUX) <mikelley@microsoft.com>
> Sent: Thursday, December 9, 2021 2:54 PM
> To: Haiyang Zhang <haiyangz@microsoft.com>; Tianyu Lan <ltykernel@gmail.com>; KY
> Srinivasan <kys@microsoft.com>; Stephen Hemminger <sthemmin@microsoft.com>;
> wei.liu@kernel.org; Dexuan Cui <decui@microsoft.com>; tglx@linutronix.de; mingo@redhat.com;
> bp@alien8.de; dave.hansen@linux.intel.com; x86@kernel.org; hpa@zytor.com;
> davem@davemloft.net; kuba@kernel.org; jejb@linux.ibm.com; martin.petersen@oracle.com;
> arnd@arndb.de; hch@infradead.org; m.szyprowski@samsung.com; robin.murphy@arm.com; Tianyu
> Lan <Tianyu.Lan@microsoft.com>; thomas.lendacky@amd.com
> Cc: iommu@lists.linux-foundation.org; linux-arch@vger.kernel.org; linux-
> hyperv@vger.kernel.org; linux-kernel@vger.kernel.org; linux-scsi@vger.kernel.org;
> netdev@vger.kernel.org; vkuznets <vkuznets@redhat.com>; brijesh.singh@amd.com;
> konrad.wilk@oracle.com; hch@lst.de; joro@8bytes.org; parri.andrea@gmail.com;
> dave.hansen@intel.com
> Subject: RE: [PATCH V6 5/5] net: netvsc: Add Isolation VM support for netvsc driver
> 
> From: Haiyang Zhang <haiyangz@microsoft.com> Sent: Wednesday, December 8, 2021 12:14 PM
> > > From: Tianyu Lan <ltykernel@gmail.com>
> > > Sent: Tuesday, December 7, 2021 2:56 AM
> 
> [snip]
> 
> > >  static inline int netvsc_send_pkt(
> > >  	struct hv_device *device,
> > >  	struct hv_netvsc_packet *packet,
> > > @@ -986,14 +1105,24 @@ static inline int netvsc_send_pkt(
> > >
> > >  	trace_nvsp_send_pkt(ndev, out_channel, rpkt);
> > >
> > > +	packet->dma_range = NULL;
> > >  	if (packet->page_buf_cnt) {
> > >  		if (packet->cp_partial)
> > >  			pb += packet->rmsg_pgcnt;
> > >
> > > +		ret = netvsc_dma_map(ndev_ctx->device_ctx, packet, pb);
> > > +		if (ret) {
> > > +			ret = -EAGAIN;
> > > +			goto exit;
> > > +		}
> >
> > Returning EAGAIN will let the upper network layer busy retry,
> > which may make things worse.
> > I suggest to return ENOSPC here like another place in this
> > function, which will just drop the packet, and let the network
> > protocol/app layer decide how to recover.
> >
> > Thanks,
> > - Haiyang
> 
> I made the original suggestion to return -EAGAIN here.   A
> DMA mapping failure should occur only if swiotlb bounce
> buffer space is unavailable, which is a transient condition.
> The existing code already stops the queue and returns
> -EAGAIN when the ring buffer is full, which is also a transient
> condition.  My sense is that the two conditions should be
> handled the same way.  Or is there a reason why a ring
> buffer full condition should stop the queue and retry, while
> a mapping failure should drop the packet?

The netvsc_dma_map() fails in these two places. The dma_map_single() 
is doing the maping with swiotlb bounce buffer, correct? And it will 
become successful after the previous packets are unmapped?

+	packet->dma_range = kcalloc(page_count,
+				    sizeof(*packet->dma_range),
+				    GFP_KERNEL);

+		dma = dma_map_single(&hv_dev->device, src, len,
+				     DMA_TO_DEVICE);

I recalled your previous suggestion now, and agree with you that 
we can treat it the same way (return -EAGAIN) in this case. And 
the existing code will stop the queue temporarily.

Thanks,
- Haiyang
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

  reply	other threads:[~2021-12-09 20:40 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-07  7:55 [PATCH V6 0/5] x86/Hyper-V: Add Hyper-V Isolation VM support(Second part) Tianyu Lan
2021-12-07  7:55 ` Tianyu Lan
2021-12-07  7:55 ` [PATCH V6 1/5] swiotlb: Add swiotlb bounce buffer remap function for HV IVM Tianyu Lan
2021-12-07  7:55   ` Tianyu Lan
2021-12-07  7:55 ` [PATCH V6 2/5] x86/hyper-v: Add hyperv Isolation VM check in the cc_platform_has() Tianyu Lan
2021-12-07  7:55   ` Tianyu Lan
2021-12-07  9:47   ` Borislav Petkov
2021-12-07  9:47     ` Borislav Petkov
2021-12-07 11:18     ` Tianyu Lan
2021-12-07 11:18       ` Tianyu Lan
2021-12-08 14:52   ` [PATCH V6.1] " Tianyu Lan
2021-12-08 15:12     ` Tianyu Lan
2021-12-09 20:38   ` [PATCH V6 2/5] " Michael Kelley (LINUX)
2021-12-09 20:38     ` Michael Kelley (LINUX) via iommu
2021-12-10 11:26     ` Tianyu Lan
2021-12-10 11:26       ` Tianyu Lan
2021-12-07  7:55 ` [PATCH V6 3/5] hyper-v: Enable swiotlb bounce buffer for Isolation VM Tianyu Lan
2021-12-07  7:55   ` Tianyu Lan
2021-12-09 20:09   ` Michael Kelley (LINUX)
2021-12-09 20:09     ` Michael Kelley (LINUX) via iommu
2021-12-10 13:25     ` Tianyu Lan
2021-12-10 13:25       ` Tianyu Lan
2021-12-10 14:01       ` Tianyu Lan
2021-12-10 14:01         ` Tianyu Lan
2021-12-07  7:56 ` [PATCH V6 4/5] scsi: storvsc: Add Isolation VM support for storvsc driver Tianyu Lan
2021-12-07  7:56   ` Tianyu Lan
2021-12-09  8:00   ` Long Li
2021-12-09  8:00     ` Long Li via iommu
2021-12-09 11:17     ` Tianyu Lan
2021-12-09 11:17       ` Tianyu Lan
2021-12-07  7:56 ` [PATCH V6 5/5] net: netvsc: Add Isolation VM support for netvsc driver Tianyu Lan
2021-12-07  7:56   ` Tianyu Lan
2021-12-08 20:14   ` Haiyang Zhang
2021-12-08 20:14     ` Haiyang Zhang via iommu
2021-12-09  8:08     ` Tianyu Lan
2021-12-09  8:08       ` Tianyu Lan
2021-12-09 19:54     ` Michael Kelley (LINUX)
2021-12-09 19:54       ` Michael Kelley (LINUX) via iommu
2021-12-09 20:40       ` Haiyang Zhang [this message]
2021-12-09 20:40         ` Haiyang Zhang via iommu
  -- strict thread matches above, loose matches on Subject: below --
2021-12-07  7:19 [PATCH V6 0/5] x86/Hyper-V: Add Hyper-V Isolation VM support(Second part) Tianyu Lan
2021-12-07  7:19 ` [PATCH V6 5/5] net: netvsc: Add Isolation VM support for netvsc driver Tianyu Lan
2021-12-07  7:19   ` Tianyu Lan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BN8PR21MB128403BCF7A491E55F8E2B26CA709@BN8PR21MB1284.namprd21.prod.outlook.com \
    --to=haiyangz@microsoft.com \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=decui@microsoft.com \
    --cc=hch@infradead.org \
    --cc=hch@lst.de \
    --cc=hpa@zytor.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jejb@linux.ibm.com \
    --cc=joro@8bytes.org \
    --cc=konrad.wilk@oracle.com \
    --cc=kuba@kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=ltykernel@gmail.com \
    --cc=m.szyprowski@samsung.com \
    --cc=martin.petersen@oracle.com \
    --cc=mikelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=parri.andrea@gmail.com \
    --cc=robin.murphy@arm.com \
    --cc=sthemmin@microsoft.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=vkuznets@redhat.com \
    --cc=wei.liu@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.