Thread (1 message) 1 message, 1 author, 2021-11-25

Re: [PATCH] Bluetooth: virtio_bt: fix device removal

From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2021-11-25 20:47:04
Also in: linux-bluetooth, lkml

On Thu, Nov 25, 2021 at 09:02:01PM +0100, Marcel Holtmann wrote:
Hi Michael,
quoted
Device removal is clearly out of virtio spec: it attempts to remove
unused buffers from a VQ before invoking device reset. To fix, make
open/close NOPs and do all cleanup/setup in probe/remove.
so the virtbt_{open,close} as NOP is not really what a driver is suppose
to be doing. These are transport enable/disable callbacks from the BT
Core towards the driver. It maps to a device being enabled/disabled by
something like bluetoothd for example. So if disabled, I expect that no
resources/queues are in use.

Maybe I misunderstand the virtio spec in that regard, but I would like
to keep this fundamental concept of a Bluetooth driver. It does work
with all other transports like USB, SDIO, UART etc.
quoted
The cost here is a single skb wasted on an unused bt device - which
seems modest.
There should be no buffer used if the device is powered off. We also don’t
have any USB URBs in-flight if the transport is not active.
quoted
NB: with this fix in place driver still suffers from a race condition if
an interrupt triggers while device is being reset. Work on a fix for
that issue is in progress.
In the virtbt_close() callback we should deactivate all interrupts.

Regards

Marcel
If you want to do that then device has to be reset on close,
and fully reinitialized on open.
Can you work on a patch like that?
Given I don't have the device such a rework is probably more
than I can undertake.

-- 
MST

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help