Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1472410ybi; Wed, 3 Jul 2019 16:48:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqwk5m8cWxNeetBh7RGH5y0v5ceIOs3MoooroIKPby55iFqqAq5KhFXdWio+OA0Q8raPAuAB X-Received: by 2002:a17:90a:ab01:: with SMTP id m1mr4948609pjq.69.1562197714972; Wed, 03 Jul 2019 16:48:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562197714; cv=none; d=google.com; s=arc-20160816; b=WSGlgGpOnnJwe9uS4IgpBwSpwEwdQ/n7AqqlU3PQZIzzzBRt0rkbwLuAe/p2KREBTq L/0R17pqnXFIH7u7r1lTrIdpgNfWWvY4cfnw+MTwEzipRdxP9mxSGbJs+Ukmd+iwX8Z+ q/ouZ376f0NI+fo7+Wo98ePh1RL1nQVWBBDp1hr9Wam1FniMPcU5pu+Oew8NIyz+CS+4 RdhVlupX6sSbtv0wFMSfWILFKNJfgW50CcIkCqeZ3WmCmNPAEdygAMXgkeqyEIK2Ku8/ B3cjP3bictIuGypVbrtg/Qi1r7nYJiNrpaXR3KBSe7yl58FcBoorS/td1VT2+RlX3ZP5 /Unw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=hMtDmc6cGFUDhdg4o6V6pc3l+++dVjdNzmuKm2r3KLU=; b=FdiCxHsuLdSmHCdwajEtpseyiHt5ykN7cCdDGPOaj6gloWmIhTxW4ZaCHbjB/bEBUG ZxIcL668fbiZ7waa2NjVgyhV8ksqgN1ta0Nehx3JGxX6BKu2++NAPENfq5E5mLTeQFJW LLGCtGTW/jiuGwdA1VZziujID3/n/R15ugoQ6WWSnRk5BtXLxgAj6eepJ3NXCXi4eevG jwLqEKVZq2+y9R54l9lSylWgpejMwDu2/XpXMmhb7yngzVQZwNVSAGJuE9JmIJJuFbmk cMISTJvrvs8vtCaq58RQLqoqIN+/PbhpiuiNKo+rtY300djWqdxCUOYW/9K7I9mTMEcr ZpjQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p22si3281349plq.233.2019.07.03.16.48.20; Wed, 03 Jul 2019 16:48:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727485AbfGCXro (ORCPT + 99 others); Wed, 3 Jul 2019 19:47:44 -0400 Received: from mga07.intel.com ([134.134.136.100]:25134 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726902AbfGCXro (ORCPT ); Wed, 3 Jul 2019 19:47:44 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Jul 2019 16:47:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,448,1557212400"; d="scan'208";a="154901178" Received: from hao-dev.bj.intel.com (HELO localhost) ([10.238.157.65]) by orsmga007.jf.intel.com with ESMTP; 03 Jul 2019 16:47:41 -0700 Date: Thu, 4 Jul 2019 07:30:58 +0800 From: Wu Hao To: Greg KH Cc: Moritz Fischer , linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Zhang Yi Z , Xu Yilun , Alan Tull Subject: Re: [PATCH 06/15] fpga: dfl: fme: add DFL_FPGA_FME_PORT_RELEASE/ASSIGN ioctl support. Message-ID: <20190703233058.GA15825@hao-dev> References: <20190628004951.6202-1-mdf@kernel.org> <20190628004951.6202-7-mdf@kernel.org> <20190703180753.GA24723@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190703180753.GA24723@kroah.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 03, 2019 at 08:07:53PM +0200, Greg KH wrote: > On Thu, Jun 27, 2019 at 05:49:42PM -0700, Moritz Fischer wrote: > > From: Wu Hao > > > > In order to support virtualization usage via PCIe SRIOV, this patch > > adds two ioctls under FPGA Management Engine (FME) to release and > > assign back the port device. In order to safely turn Port from PF > > into VF and enable PCIe SRIOV, it requires user to invoke this > > PORT_RELEASE ioctl to release port firstly to remove userspace > > interfaces, and then configure the PF/VF access register in FME. > > After disable SRIOV, it requires user to invoke this PORT_ASSIGN > > ioctl to attach the port back to PF. > > > > Ioctl interfaces: > > * DFL_FPGA_FME_PORT_RELEASE > > Release platform device of given port, it deletes port platform > > device to remove related userspace interfaces on PF, then > > configures PF/VF access mode to VF. > > > > * DFL_FPGA_FME_PORT_ASSIGN > > Assign platform device of given port back to PF, it configures > > PF/VF access mode to PF, then adds port platform device back to > > re-enable related userspace interfaces on PF. > > Why are you not using the "generic" bind/unbind facility that userspace > already has for this with binding drivers to devices? Why a special > ioctl? Hi Greg, Actually we think it should be safer that making the device invisble than just unbinding its driver. Looks like user can try to rebind it at any time and we don't have any method to stop them. > > > --- a/include/uapi/linux/fpga-dfl.h > > +++ b/include/uapi/linux/fpga-dfl.h > > @@ -176,4 +176,36 @@ struct dfl_fpga_fme_port_pr { > > > > #define DFL_FPGA_FME_PORT_PR _IO(DFL_FPGA_MAGIC, DFL_FME_BASE + 0) > > > > +/** > > + * DFL_FPGA_FME_PORT_RELEASE - _IOW(DFL_FPGA_MAGIC, DFL_FME_BASE + 1, > > + * struct dfl_fpga_fme_port_release) > > + * > > + * Driver releases the port per Port ID provided by caller. > > + * Return: 0 on success, -errno on failure. > > + */ > > +struct dfl_fpga_fme_port_release { > > + /* Input */ > > + __u32 argsz; /* Structure length */ > > + __u32 flags; /* Zero for now */ > > + __u32 port_id; > > +}; > > meta-comment, why do all of your structures for ioctls have argsz? You > "know" the size of the structure already, it's part of the ioctl > definition. You shouldn't need to also set it again, right? Otherwise > ALL Linux ioctls would need something crazy like this. Actually we followed the same method as vfio. The major purpose should be extendibility, as we really need this to be sth long term maintainable. It really helps, if we add some new members for extentions/enhancement under the same ioctl. I don't think everybody needs this, but my consideration here is if newer generations of hardware/specs come with some extentions, I still hope we can resue these IOCTLs as much as we could, instead of creating more new ones. Thanks Hao > > thanks, > > greg k-h