[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAFcZKTxFB_iztzAK_Ljy5sU48qCTUs+FPD1aXUyz3qt7ug8DhA@mail.gmail.com>
Date: Wed, 19 Nov 2025 14:23:31 +0000
From: Peter Morrow <pdmorrow@...il.com>
To: Naman Jain <namjain@...ux.microsoft.com>
Cc: Wei Liu <wei.liu@...nel.org>, Dexuan Cui <decui@...rosoft.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Michael Kelley <mhklinux@...look.com>,
Long Li <longli@...rosoft.com>, Saurabh Sengar <ssengar@...ux.microsoft.com>,
"K . Y . Srinivasan" <kys@...rosoft.com>, Haiyang Zhang <haiyangz@...rosoft.com>,
Tianyu Lan <tiala@...rosoft.com>, linux-hyperv@...r.kernel.org,
linux-kernel@...r.kernel.org, stable@...r.kernel.org,
Salvatore Bonaccorso <carnil@...ian.org>
Subject: Re: [PATCH 6.12] uio_hv_generic: Set event for all channels on the device
On Sat, 15 Nov 2025 at 09:02, Naman Jain <namjain@...ux.microsoft.com> wrote:
>
>
>
> On 11/15/2025 2:27 PM, Naman Jain wrote:
> > From: Long Li <longli@...rosoft.com>
> >
> > Hyper-V may offer a non latency sensitive device with subchannels without
> > monitor bit enabled. The decision is entirely on the Hyper-V host not
> > configurable within guest.
> >
> > When a device has subchannels, also signal events for the subchannel
> > if its monitor bit is disabled.
> >
> > This patch also removes the memory barrier when monitor bit is enabled
> > as it is not necessary. The memory barrier is only needed between
> > setting up interrupt mask and calling vmbus_set_event() when monitor
> > bit is disabled.
> >
> > This is a backport of the upstream commit
> > d062463edf17 ("uio_hv_generic: Set event for all channels on the device")
> > with minor modifications to resolve merge conflicts.
> > Original change was not a fix, but it needs to be backported to fix a
> > NULL pointer crash resulting from missing interrupt mask setting.
> >
> > Commit 37bd91f22794 ("uio_hv_generic: Let userspace take care of interrupt mask")
> > removed the default setting of interrupt_mask for channels (including
> > subchannels) in the uio_hv_generic driver, as it relies on the user space
> > to take care of managing it. This approach works fine when user space
> > can control this setting using the irqcontrol interface provided for uio
> > devices. Support for setting the interrupt mask through this interface for
> > subchannels came only after commit d062463edf17 ("uio_hv_generic: Set event
> > for all channels on the device"). On older kernels, this change is not
> > present. With uio_hv_generic no longer setting the interrupt_mask, and
> > userspace not having the capability to set it, it remains unset,
> > and interrupts can come for the subchannels, which can result in a crash
> > in hv_uio_channel_cb. Backport the change to older kernels, where this
> > change was not present, to allow userspace to set the interrupt mask
> > properly for subchannels. Additionally, this patch also adds certain
> > checks for primary vs subchannels in the hv_uio_channel_cb, which can
> > gracefully handle these two cases and prevent the NULL pointer crashes.
> >
> > Signed-off-by: Long Li <longli@...rosoft.com>
> > Reviewed-by: Michael Kelley <mhklinux@...look.com>
> > Reviewed-by: Saurabh Sengar <ssengar@...ux.microsoft.com>
> > Fixes: 37bd91f22794 ("uio_hv_generic: Let userspace take care of interrupt mask")
>
> Sorry for missing this, please add Closes tag, if possible before merging.
>
> Closes: https://bugs.debian.org/1120602
>
> I have kept it in the other patch for 6.6 and prior kernels.
>
> Regards,
> Naman
>
> > Cc: <stable@...r.kernel.org> # 6.12.x
> > Signed-off-by: Naman Jain <namjain@...ux.microsoft.com>
> > ---
>
> Regards,
> Naman
Tested-by: Peter Morrow <pdmorrow@...il.com>
Powered by blists - more mailing lists