linux-hyperv.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saurabh Sengar <ssengar@linux.microsoft.com>
To: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org,
	decui@microsoft.com, gregkh@linuxfoundation.org,
	linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org
Cc: longli@microsoft.com, ssengar@microsoft.com
Subject: [PATCH v3 0/7] Low speed Hyper-V devices support
Date: Sat, 30 Mar 2024 01:51:56 -0700	[thread overview]
Message-ID: <1711788723-8593-1-git-send-email-ssengar@linux.microsoft.com> (raw)

Hyper-V is adding multiple low speed "speciality" synthetic devices.
Instead of writing a new kernel-level VMBus driver for each device,
make the devices accessible to user space through UIO-based
uio_hv_generic driver. Each device can then be supported by a user
space driver. This approach optimizes the development process and
provides flexibility to user space applications to control the key
interactions with the VMBus ring buffer.

The new synthetic devices are low speed devices that don't support
VMBus monitor bits, and so they must use vmbus_setevent() to notify
the host of ring buffer updates. These new devices also have smaller
ring buffer sizes which requires to add support for variable ring buffer
sizes.

Moreover, this patch series adds a new implementation of the fcopy
application that uses the new UIO driver. The older fcopy driver and
application will be phased out gradually. Development of other similar
userspace drivers is still underway.

Efforts have been made previously to implement this solution earlier.
Here are the discussions related to those attempts:
Attempt 1: Upgrade uio_hv_generic to cater to Hyper-V slow devices. But this was rejected due
to use of module parameters.
https://lore.kernel.org/lkml/1665575806-27990-1-git-send-email-ssengar@linux.microsoft.com/

Attempt 2: Enable interrupt for low speed VMBus devices in uio_hv_generic and was rejected due to
unavailability of userspace driver for it.
https://lore.kernel.org/lkml/Y05bdCWBs0miLjOu@kroah.com/

Attempt 3: Wrote a new UIO driver but was rejected due to its complexity.
https://lore.kernel.org/lkml/1691132996-11706-1-git-send-email-ssengar@linux.microsoft.com/

[V3]
- Put a check in tools Makefile to avoid compilation of vmbus_bufring library
  on ARM64 platform.

[V2]
- Went through internal review, got few reviewed-by from Long Li.
- Added more details in cover letter for previous attempts.
- Added more details in commit messages.
- Added comments for preferred ring sizes and there values.
- Removed need_sign arg from vmbus_txbr_write
- Change (4 * 4096) to 0x4000 for ring buffer size.
- Removed some unnecessary type casting.
- Removed rte_smp_rwmb as its duplicate of rte_compiler_barrier.
- Added more comment for rte_compiler_barrierx.
- Mentioned in file copyright header that this code is copied.
- Changed the print from "Registration failed" to "Signal to host failed".
- Fixed mask for rx buffer interrupt to 0 before waiting for interrupt.

Saurabh Sengar (7):
  Drivers: hv: vmbus: Add utility function for querying ring size
  uio_hv_generic: Query the ringbuffer size for device
  uio_hv_generic: Enable interrupt for low speed VMBus devices
  tools: hv: Add vmbus_bufring
  tools: hv: Add new fcopy application based on uio driver
  Drivers: hv: Remove fcopy driver
  uio_hv_generic: Remove use of PAGE_SIZE

 drivers/hv/Makefile            |   2 +-
 drivers/hv/channel_mgmt.c      |  15 +-
 drivers/hv/hv_fcopy.c          | 427 ----------------------------
 drivers/hv/hv_util.c           |  12 -
 drivers/hv/hyperv_vmbus.h      |   5 +
 drivers/uio/uio_hv_generic.c   |  19 +-
 include/linux/hyperv.h         |   2 +
 tools/hv/Build                 |   3 +-
 tools/hv/Makefile              |  14 +-
 tools/hv/hv_fcopy_daemon.c     | 266 ------------------
 tools/hv/hv_fcopy_uio_daemon.c | 490 +++++++++++++++++++++++++++++++++
 tools/hv/vmbus_bufring.c       | 318 +++++++++++++++++++++
 tools/hv/vmbus_bufring.h       | 158 +++++++++++
 13 files changed, 1006 insertions(+), 725 deletions(-)
 delete mode 100644 drivers/hv/hv_fcopy.c
 delete mode 100644 tools/hv/hv_fcopy_daemon.c
 create mode 100644 tools/hv/hv_fcopy_uio_daemon.c
 create mode 100644 tools/hv/vmbus_bufring.c
 create mode 100644 tools/hv/vmbus_bufring.h

-- 
2.34.1


             reply	other threads:[~2024-03-30  8:52 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-30  8:51 Saurabh Sengar [this message]
2024-03-30  8:51 ` [PATCH v3 1/7] Drivers: hv: vmbus: Add utility function for querying ring size Saurabh Sengar
2024-03-30  8:51 ` [PATCH v3 2/7] uio_hv_generic: Query the ringbuffer size for device Saurabh Sengar
2024-03-30  8:51 ` [PATCH v3 3/7] uio_hv_generic: Enable interrupt for low speed VMBus devices Saurabh Sengar
2024-03-30  8:52 ` [PATCH v3 4/7] tools: hv: Add vmbus_bufring Saurabh Sengar
2024-03-30  8:52 ` [PATCH v3 5/7] tools: hv: Add new fcopy application based on uio driver Saurabh Sengar
2024-04-03 17:54   ` Long Li
2024-03-30  8:52 ` [PATCH v3 6/7] Drivers: hv: Remove fcopy driver Saurabh Sengar
2024-03-30  8:52 ` [PATCH v3 7/7] uio_hv_generic: Remove use of PAGE_SIZE Saurabh Sengar

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=1711788723-8593-1-git-send-email-ssengar@linux.microsoft.com \
    --to=ssengar@linux.microsoft.com \
    --cc=decui@microsoft.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=haiyangz@microsoft.com \
    --cc=kys@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=longli@microsoft.com \
    --cc=ssengar@microsoft.com \
    --cc=wei.liu@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).