From: Boqun Feng <boqun.feng@gmail.com> To: linux-hyperv@vger.kernel.org, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-scsi@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: "K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, Stephen Hemminger <sthemmin@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Jiri Kosina <jikos@kernel.org>, Benjamin Tissoires <benjamin.tissoires@redhat.com>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>, "James E.J. Bottomley" <jejb@linux.ibm.com>, "Martin K. Petersen" <martin.petersen@oracle.com>, Michael Kelley <mikelley@microsoft.com>, will@kernel.org, ardb@kernel.org, arnd@arndb.de, catalin.marinas@arm.com, mark.rutland@arm.com, maz@kernel.org, Boqun Feng <boqun.feng@gmail.com> Subject: [PATCH v4 10/11] Driver: hv: util: Use VMBUS_RING_SIZE() for ringbuffer sizes Date: Wed, 16 Sep 2020 11:48:16 +0800 [thread overview] Message-ID: <20200916034817.30282-11-boqun.feng@gmail.com> (raw) In-Reply-To: <20200916034817.30282-1-boqun.feng@gmail.com> For a Hyper-V vmbus, the size of the ringbuffer has two requirements: 1) it has to take one PAGE_SIZE for the header 2) it has to be PAGE_SIZE aligned so that double-mapping can work VMBUS_RING_SIZE() could calculate a correct ringbuffer size which fulfills both requirements, therefore use it to make sure vmbus work when PAGE_SIZE != HV_HYP_PAGE_SIZE (4K). Note that since the argument for VMBUS_RING_SIZE() is the size of payload (data part), so it will be minus 4k (the size of header when PAGE_SIZE = 4k) than the original value to keep the ringbuffer total size unchanged when PAGE_SIZE = 4k. Signed-off-by: Boqun Feng <boqun.feng@gmail.com> Cc: Michael Kelley <mikelley@microsoft.com> --- Michael, I drop your Reviewed-by tag because of the page align issue. Could you review this updated version? Thanks! Regards, Boqun drivers/hv/hv_util.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c index a4e8d96513c2..05566ecdbe4b 100644 --- a/drivers/hv/hv_util.c +++ b/drivers/hv/hv_util.c @@ -500,6 +500,9 @@ static void heartbeat_onchannelcallback(void *context) } } +#define HV_UTIL_RING_SEND_SIZE VMBUS_RING_SIZE(3 * HV_HYP_PAGE_SIZE) +#define HV_UTIL_RING_RECV_SIZE VMBUS_RING_SIZE(3 * HV_HYP_PAGE_SIZE) + static int util_probe(struct hv_device *dev, const struct hv_vmbus_device_id *dev_id) { @@ -530,8 +533,8 @@ static int util_probe(struct hv_device *dev, hv_set_drvdata(dev, srv); - ret = vmbus_open(dev->channel, 4 * HV_HYP_PAGE_SIZE, - 4 * HV_HYP_PAGE_SIZE, NULL, 0, srv->util_cb, + ret = vmbus_open(dev->channel, HV_UTIL_RING_SEND_SIZE, + HV_UTIL_RING_RECV_SIZE, NULL, 0, srv->util_cb, dev->channel); if (ret) goto error; @@ -590,8 +593,8 @@ static int util_resume(struct hv_device *dev) return ret; } - ret = vmbus_open(dev->channel, 4 * HV_HYP_PAGE_SIZE, - 4 * HV_HYP_PAGE_SIZE, NULL, 0, srv->util_cb, + ret = vmbus_open(dev->channel, HV_UTIL_RING_SEND_SIZE, + HV_UTIL_RING_RECV_SIZE, NULL, 0, srv->util_cb, dev->channel); return ret; } -- 2.28.0
WARNING: multiple messages have this Message-ID (diff)
From: Boqun Feng <boqun.feng@gmail.com> To: linux-hyperv@vger.kernel.org, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-scsi@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: mark.rutland@arm.com, maz@kernel.org, Wei Liu <wei.liu@kernel.org>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, Stephen Hemminger <sthemmin@microsoft.com>, arnd@arndb.de, "Martin K. Petersen" <martin.petersen@oracle.com>, ardb@kernel.org, will@kernel.org, Haiyang Zhang <haiyangz@microsoft.com>, Jiri Kosina <jikos@kernel.org>, Boqun Feng <boqun.feng@gmail.com>, Michael Kelley <mikelley@microsoft.com>, Benjamin Tissoires <benjamin.tissoires@redhat.com>, catalin.marinas@arm.com, Jakub Kicinski <kuba@kernel.org>, "K. Y. Srinivasan" <kys@microsoft.com>, "James E.J. Bottomley" <jejb@linux.ibm.com>, "David S. Miller" <davem@davemloft.net> Subject: [PATCH v4 10/11] Driver: hv: util: Use VMBUS_RING_SIZE() for ringbuffer sizes Date: Wed, 16 Sep 2020 11:48:16 +0800 [thread overview] Message-ID: <20200916034817.30282-11-boqun.feng@gmail.com> (raw) In-Reply-To: <20200916034817.30282-1-boqun.feng@gmail.com> For a Hyper-V vmbus, the size of the ringbuffer has two requirements: 1) it has to take one PAGE_SIZE for the header 2) it has to be PAGE_SIZE aligned so that double-mapping can work VMBUS_RING_SIZE() could calculate a correct ringbuffer size which fulfills both requirements, therefore use it to make sure vmbus work when PAGE_SIZE != HV_HYP_PAGE_SIZE (4K). Note that since the argument for VMBUS_RING_SIZE() is the size of payload (data part), so it will be minus 4k (the size of header when PAGE_SIZE = 4k) than the original value to keep the ringbuffer total size unchanged when PAGE_SIZE = 4k. Signed-off-by: Boqun Feng <boqun.feng@gmail.com> Cc: Michael Kelley <mikelley@microsoft.com> --- Michael, I drop your Reviewed-by tag because of the page align issue. Could you review this updated version? Thanks! Regards, Boqun drivers/hv/hv_util.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c index a4e8d96513c2..05566ecdbe4b 100644 --- a/drivers/hv/hv_util.c +++ b/drivers/hv/hv_util.c @@ -500,6 +500,9 @@ static void heartbeat_onchannelcallback(void *context) } } +#define HV_UTIL_RING_SEND_SIZE VMBUS_RING_SIZE(3 * HV_HYP_PAGE_SIZE) +#define HV_UTIL_RING_RECV_SIZE VMBUS_RING_SIZE(3 * HV_HYP_PAGE_SIZE) + static int util_probe(struct hv_device *dev, const struct hv_vmbus_device_id *dev_id) { @@ -530,8 +533,8 @@ static int util_probe(struct hv_device *dev, hv_set_drvdata(dev, srv); - ret = vmbus_open(dev->channel, 4 * HV_HYP_PAGE_SIZE, - 4 * HV_HYP_PAGE_SIZE, NULL, 0, srv->util_cb, + ret = vmbus_open(dev->channel, HV_UTIL_RING_SEND_SIZE, + HV_UTIL_RING_RECV_SIZE, NULL, 0, srv->util_cb, dev->channel); if (ret) goto error; @@ -590,8 +593,8 @@ static int util_resume(struct hv_device *dev) return ret; } - ret = vmbus_open(dev->channel, 4 * HV_HYP_PAGE_SIZE, - 4 * HV_HYP_PAGE_SIZE, NULL, 0, srv->util_cb, + ret = vmbus_open(dev->channel, HV_UTIL_RING_SEND_SIZE, + HV_UTIL_RING_RECV_SIZE, NULL, 0, srv->util_cb, dev->channel); return ret; } -- 2.28.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-09-16 3:50 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-16 3:48 [PATCH v4 00/11] Hyper-V: Support PAGE_SIZE larger than 4K Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 01/11] Drivers: hv: vmbus: Always use HV_HYP_PAGE_SIZE for gpadl Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 02/11] Drivers: hv: vmbus: Move __vmbus_open() Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 03/11] Drivers: hv: vmbus: Introduce types of GPADL Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 04/11] Drivers: hv: Use HV_HYP_PAGE in hv_synic_enable_regs() Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 05/11] Drivers: hv: vmbus: Move virt_to_hvpfn() to hyperv header Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 06/11] hv: hyperv.h: Introduce some hvpfn helper functions Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 07/11] hv_netvsc: Use HV_HYP_PAGE_SIZE for Hyper-V communication Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 3:48 ` [PATCH v4 08/11] Input: hyperv-keyboard: Use VMBUS_RING_SIZE() for ringbuffer sizes Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-16 4:05 ` Dmitry Torokhov 2020-09-16 4:05 ` Dmitry Torokhov 2020-09-27 0:10 ` Michael Kelley 2020-09-27 0:10 ` Michael Kelley 2020-09-16 3:48 ` [PATCH v4 09/11] HID: hyperv: " Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-27 0:11 ` Michael Kelley 2020-09-27 0:11 ` Michael Kelley 2020-09-16 3:48 ` Boqun Feng [this message] 2020-09-16 3:48 ` [PATCH v4 10/11] Driver: hv: util: " Boqun Feng 2020-09-27 0:12 ` Michael Kelley 2020-09-27 0:12 ` Michael Kelley 2020-09-16 3:48 ` [PATCH v4 11/11] scsi: storvsc: Support PAGE_SIZE larger than 4K Boqun Feng 2020-09-16 3:48 ` Boqun Feng 2020-09-28 8:59 ` [PATCH v4 00/11] Hyper-V: " Wei Liu 2020-09-28 8:59 ` Wei Liu
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=20200916034817.30282-11-boqun.feng@gmail.com \ --to=boqun.feng@gmail.com \ --cc=ardb@kernel.org \ --cc=arnd@arndb.de \ --cc=benjamin.tissoires@redhat.com \ --cc=catalin.marinas@arm.com \ --cc=davem@davemloft.net \ --cc=dmitry.torokhov@gmail.com \ --cc=haiyangz@microsoft.com \ --cc=jejb@linux.ibm.com \ --cc=jikos@kernel.org \ --cc=kuba@kernel.org \ --cc=kys@microsoft.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-hyperv@vger.kernel.org \ --cc=linux-input@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=martin.petersen@oracle.com \ --cc=maz@kernel.org \ --cc=mikelley@microsoft.com \ --cc=netdev@vger.kernel.org \ --cc=sthemmin@microsoft.com \ --cc=wei.liu@kernel.org \ --cc=will@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: linkBe 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.