Skip to contentSkip to conversation

Cannot hotplug VFIO devices if VFIO driver was not loaded at init

dpdk-dev [email protected] 1 participant 1 message Nov 22, 2019

lore
Share & tools
lore
#0 lore raw

https://bugs.dpdk.org/show_bug.cgi?id=370

Bug ID: 370
Summary: Cannot hotplug VFIO devices if VFIO driver was not
loaded at init
Product: DPDK
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: core
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---

Currently, VFIO device initialization depends upon checking if VFIO is enabled. That code looks like this:

Quoted 6 lines

int
rte_vfio_is_enabled(const char *modname)

{
    const int mod_available = rte_eal_check_module(modname) > 0;
    return default_vfio_cfg->vfio_enabled && mod_available;
}

The default_vfio_cfg->vfio_enabled is set at initialization time with rte_vfio_enable function, and is never rechecked afterwards. This makes it so that if vfio driver was not loaded at EAL initialization time, any subsequent VFIO device initialization will fail.

To fix that, we would have to re-check the existence of a vfio driver every time, however the current API gets in the way, because even though it stores global state, it is implemented in a way that looks like it is supposed to be generic and support multiple driver names (and is never used that way - the only time this API is used is in the EAL initialization when checking for a specific vfio driver - i think it's a safe assumption to make that whatever implementation of VFIO is in use, it will depend upon the vfio kernel module).

So, current API will need to be changed (it makes no sense anyway) before this bug can be fixed.

Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.