• Dave Jiang's avatar
    dmaengine: idxd: create dmaengine driver for wq 'device' · 0cda4f69
    Dave Jiang authored
    The original architecture of /sys/bus/dsa invented a scheme whereby a
    single entry in the list of bus drivers, /sys/bus/drivers/dsa, handled
    all device types and internally routed them to different drivers.
    Those internal drivers were invisible to userspace. Now, as
    /sys/bus/dsa wants to grow support for alternate drivers for a given
    device, for example vfio-mdev instead of kernel-internal-dmaengine, a
    proper bus device-driver model is needed. The first step in that process
    is separating the existing omnibus/implicit "dsa" driver into proper
    individual drivers registered on /sys/bus/dsa. Establish the
    idxd_dmaengine_drv driver that controls the enabling and disabling of the
    wq and also register and unregister the dma channel.
    
    idxd_wq_alloc_resources() and idxd_wq_free_resources() also get moved to
    the dmaengine driver. The resources (dma descriptors allocation and setup)
    are only used by the dmaengine driver and should only happen when it loads.
    
    The char dev driver (cdev) related bits are left in the __drv_enable_wq()
    and __drv_disable_wq() calls to be moved when we split out the char dev
    driver just like how the dmaengine driver is split out.
    
    WQ autoload support is not expected currently. With the amount of
    configuration needed for the device, the wq is always expected to
    be enabled by a tool (or via sysfs) rather than auto enabled at driver
    load.
    Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/162637467033.744545.12330636655625405394.stgit@djiang5-desk3.ch.intel.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
    0cda4f69
device.c 30.8 KB