Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2018699pxb; Sat, 27 Feb 2021 07:45:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJz/FivnvpDjkOGMf7glz406dqZkkvMaHZiWrRz5dA2DgNBpDx7MmLYMWef63Ctp3utg92gP X-Received: by 2002:a17:906:1848:: with SMTP id w8mr8294098eje.3.1614440727631; Sat, 27 Feb 2021 07:45:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614440727; cv=none; d=google.com; s=arc-20160816; b=aqTQX1nl5ymdtHUSpS9OQrhSN6E/TmWQquBCqbSi7sd9AlF+GCmqaxPlWRDDAUb35n aY8fcqT24LKVLEVUpBOl57gOk+gSqFbiAGEJvRc8LOzQAEHS7AWbSm2dOXjDYw2UmHMb q8LdNfujTqP8Cq0sBdrZRinde5oWkJlgnqt2fSdil01qtH3DGVMPYsOzw9OWMWUfasGX 808T+gVC0M1my0wOpds7z/ShNvisJ/C1B6vKgfG0a/Z+CP4V4vQXumtAKsakRbawDwFJ llhoZy/TZr4qb07v5O6LCkNgqLz710Mm5p4QgWqAefS9ev/lAj4w6UnULjQm7OSjnVLX i+cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=kqO8bVF8B6Nl2rq+DK1S2nb9UQZQGjF3pnjjgqi0RiI=; b=r1QAjFKF6ckP9YQd/U5DmQMEUro/TO4ouY22ddZVQKKBwbb5DZ4UGMtJIZAL6R7fd6 eFhAa03MhiNlWW/yyQJagMzL7gBK3+POCL4pN1jZMhxF/dbj4Ws8lE72oa9WC6zRKvvE 25z3eA40X4aAi6NvIlDYILLOTpq1r0cpyQ663RvfRx2vr8Npz9GQIkW0CnyiNMGnX5ge y8qIGJeD7K2VShwkirXqyW2GFYNz917GQBBP6MIYYNh9pz71r3jComjz3VHr/mIDw6sf rzk7mZZxACkiqAD6S35g/VPdHCuGorGBXmZb1eccxkBpKqHuQiGLvilL1l05HefvDmms eT+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YhYDrCUY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z11si7008025edc.454.2021.02.27.07.45.03; Sat, 27 Feb 2021 07:45:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YhYDrCUY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230041AbhB0Pnn (ORCPT + 99 others); Sat, 27 Feb 2021 10:43:43 -0500 Received: from mail.kernel.org ([198.145.29.99]:48982 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230010AbhB0Pnm (ORCPT ); Sat, 27 Feb 2021 10:43:42 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6D6A864EC4; Sat, 27 Feb 2021 15:42:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1614440578; bh=BZHTpNmxPcifzrs/52k103sir9baVWuxb1XKoW4mbxs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=YhYDrCUYrjEkANePt0kWbGYEWs4e0rCU8gbT4kJ17Eja4VJnnmMoOXX8oOyswtihm zpluO48qaMt6xXZ/sd2KQfcTmm/Jyppxtg1D3kqp+RnKnWBefoZOf0patVOJG0gkva 30z/2wvEEoYqDyCi42kMnIFjOkSc13aDHu9NhqLY= Date: Sat, 27 Feb 2021 16:42:55 +0100 From: Greg KH To: Xu Yilun Cc: mdf@kernel.org, linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org, trix@redhat.com, lgoncalv@redhat.com, hao.wu@intel.com Subject: Re: [RESEND PATCH v11 1/2] uio: uio_dfl: add userspace i/o driver for DFL bus Message-ID: References: <1614439624-3946-1-git-send-email-yilun.xu@intel.com> <1614439624-3946-2-git-send-email-yilun.xu@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1614439624-3946-2-git-send-email-yilun.xu@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Feb 27, 2021 at 11:27:03PM +0800, Xu Yilun wrote: > This patch supports the DFL drivers be written in userspace. This is > realized by exposing the userspace I/O device interfaces. > > The driver now only binds the ether group feature, which has no irq. So > the irq support is not implemented yet. > > Signed-off-by: Xu Yilun > Reviewed-by: Tom Rix > --- > v9: switch to add a uio driver in drivers/uio > v10: add the source file in MAINTAINERS > more descriptive Kconfig header > add detailed path for opae uio example > v11: no change > --- > MAINTAINERS | 1 + > drivers/uio/Kconfig | 17 +++++++++++++ > drivers/uio/Makefile | 1 + > drivers/uio/uio_dfl.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 85 insertions(+) > create mode 100644 drivers/uio/uio_dfl.c > > diff --git a/MAINTAINERS b/MAINTAINERS > index 000fe0b..4dc0354 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -6943,6 +6943,7 @@ S: Maintained > F: Documentation/ABI/testing/sysfs-bus-dfl* > F: Documentation/fpga/dfl.rst > F: drivers/fpga/dfl* > +F: drivers/uio/uio_dfl.c > F: include/linux/dfl.h > F: include/uapi/linux/fpga-dfl.h > > diff --git a/drivers/uio/Kconfig b/drivers/uio/Kconfig > index 202ee81..5531f3a 100644 > --- a/drivers/uio/Kconfig > +++ b/drivers/uio/Kconfig > @@ -165,4 +165,21 @@ config UIO_HV_GENERIC > to network and storage devices from userspace. > > If you compile this as a module, it will be called uio_hv_generic. > + > +config UIO_DFL > + tristate "Generic driver for DFL (Device Feature List) bus" > + depends on FPGA_DFL > + help > + Generic DFL (Device Feature List) driver for Userspace I/O devices. > + It is useful to provide direct access to DFL devices from userspace. > + A sample userspace application using this driver is available for > + download in a git repository: > + > + git clone https://github.com/OPAE/opae-sdk.git > + > + It could be found at: > + > + opae-sdk/tools/libopaeuio/ > + > + If you compile this as a module, it will be called uio_dfl. > endif > diff --git a/drivers/uio/Makefile b/drivers/uio/Makefile > index c285dd2..f2f416a1 100644 > --- a/drivers/uio/Makefile > +++ b/drivers/uio/Makefile > @@ -11,3 +11,4 @@ obj-$(CONFIG_UIO_PRUSS) += uio_pruss.o > obj-$(CONFIG_UIO_MF624) += uio_mf624.o > obj-$(CONFIG_UIO_FSL_ELBC_GPCM) += uio_fsl_elbc_gpcm.o > obj-$(CONFIG_UIO_HV_GENERIC) += uio_hv_generic.o > +obj-$(CONFIG_UIO_DFL) += uio_dfl.o > diff --git a/drivers/uio/uio_dfl.c b/drivers/uio/uio_dfl.c > new file mode 100644 > index 0000000..89c0fc7 > --- /dev/null > +++ b/drivers/uio/uio_dfl.c > @@ -0,0 +1,66 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Generic DFL driver for Userspace I/O devicess > + * > + * Copyright (C) 2021 Intel Corporation, Inc. > + */ > +#include > +#include > +#include > +#include > + > +#define DRIVER_NAME "uio_dfl" > + > +static int uio_dfl_probe(struct dfl_device *ddev) > +{ > + struct resource *r = &ddev->mmio_res; > + struct device *dev = &ddev->dev; > + struct uio_info *uioinfo; > + struct uio_mem *uiomem; > + int ret; > + > + uioinfo = devm_kzalloc(dev, sizeof(struct uio_info), GFP_KERNEL); > + if (!uioinfo) > + return -ENOMEM; > + > + uioinfo->name = DRIVER_NAME; > + uioinfo->version = "0"; > + > + uiomem = &uioinfo->mem[0]; > + uiomem->memtype = UIO_MEM_PHYS; > + uiomem->addr = r->start & PAGE_MASK; > + uiomem->offs = r->start & ~PAGE_MASK; > + uiomem->size = (uiomem->offs + resource_size(r) > + + PAGE_SIZE - 1) & PAGE_MASK; > + uiomem->name = r->name; > + > + /* Irq is yet to be supported */ > + uioinfo->irq = UIO_IRQ_NONE; > + > + ret = devm_uio_register_device(dev, uioinfo); > + if (ret) > + dev_err(dev, "unable to register uio device\n"); > + > + return ret; > +} > + > +#define FME_FEATURE_ID_ETH_GROUP 0x10 Why are you saying that an ethernet driver should be using the UIO interface? And why can't you use the existing UIO drivers that bind to memory regions specified by firmware? Without an interrupt being used, why is UIO needed at all? thanks, greg k-h