Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1396045pxk; Thu, 10 Sep 2020 14:21:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzUgrXsavyA2Dn75Wiyjtow5zr62uQZhZK8M6dJkDpQZYkFiFG+xhna8P41UnLksZ+YQ6MM X-Received: by 2002:aa7:d88a:: with SMTP id u10mr11609227edq.217.1599772873450; Thu, 10 Sep 2020 14:21:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599772873; cv=none; d=google.com; s=arc-20160816; b=MYAvjUL2KzFXRv0wjrtkSQyMPJaAkLqxMROHbvUSOysvgmn/rbafhHuXBGxWxdzk9a PbEIdxa33KLg5Z5g7LH7jKiHc/jh09X0r4pBcZ/+h9HGsEjBAemnTvbIayU491yZpirp XzBN36BZ01SX64vEMhpoT+yY7bi9kzri1lsasTSa9CsDMaO9S+nkgowPwHXoFio6xJgy OJSQBjf1X0qcbXGi45AXgRD9t9WVO7HKEtkhCnBQ1qMYDW9GDD3sqNWSfVpTrr+CfrSL EWe0Bh84QcFv8qDmFBOhonJE2Gm1DDcz8Vtx4pyaw/kdiqlgicCZ/jsCNWxXJS1gRutZ mJ6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=BFCtXTuROc0+YYGPop04Dk+iiUlezsA+0NbzQBhD+BA=; b=lK38NFhGLzH/wNsjGx6L+d9qID76mbTARdhR0mgBop3FlwboEfSFcvd3GvcIp9xWnc 2NsW6HP382BFEfDkKDOHZs7QsWJLjD5u5MhfHvvMj0SSaJKS6N7t6iv8sCkRhFtHCOFD 8QF6BzWiG1BXvvJM+5+4DKMb6Qif3fHFci5qQcD+pioIjXVf/DeL5GjDjVxLYlmsyXLX 6WOPj1efREWSVSMltIJBmqwpO6PQ09EyzCZ41gmMHEhWA+D0LJ4yd6lFMEOlbnvdHDw4 KUgu7aZT2WsKf5YDghQJi7QZJTnpwBtdeuUJAozfRy8zHEMbk26KFyD33Xi5Kj9Fhfxc sjCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GuD3TGmS; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n24si4359538ejs.611.2020.09.10.14.20.50; Thu, 10 Sep 2020 14:21:13 -0700 (PDT) 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=@gmail.com header.s=20161025 header.b=GuD3TGmS; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728130AbgIJVRu (ORCPT + 99 others); Thu, 10 Sep 2020 17:17:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35010 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726588AbgIJVPv (ORCPT ); Thu, 10 Sep 2020 17:15:51 -0400 Received: from mail-oo1-xc44.google.com (mail-oo1-xc44.google.com [IPv6:2607:f8b0:4864:20::c44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0668BC061756; Thu, 10 Sep 2020 14:15:46 -0700 (PDT) Received: by mail-oo1-xc44.google.com with SMTP id h9so1790253ooo.10; Thu, 10 Sep 2020 14:15:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=BFCtXTuROc0+YYGPop04Dk+iiUlezsA+0NbzQBhD+BA=; b=GuD3TGmStXtihH8Sxv8w7dkoBPihevY3v9BGFDKVMp+7HFRNCzM+ojYulbfbw3lzVh Egul2zPj6VBeJQM7kBVVJLNlvhNYje/3IJuRSi/52MWfq2fpQzVo+ZPuxt+0hXyqYijd esXtFKqyodblu9iwD++CZEeeoB5JjwehGQcG2+QYC5rBEC9vr/PiLDNyumU235l6CrNi WgKJBTLvbfe4Fk4BElHk5G5wuI69rh9cNBS0gIykgUQxuHoruMFKh/CeMaFuNmYqSykS LTyVKYWz+lO7ZKlQpGz/z3ESKtcQeqOrQg5nRmddC8yXipIxVptwy1yojTMpwVlb+vXJ D8WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=BFCtXTuROc0+YYGPop04Dk+iiUlezsA+0NbzQBhD+BA=; b=fFAivLO7/bPX7vIn12F1fZaH9IPXrpv1Ggnf41gUeVjw4kPGPXAKxi5sv3gUzmn87l DLB+OFxTsDhb5TfSfXu8EDIooYu05Zg5Vm5gSx6iHpsRcHA8njJooFzz3vyHuG8EW5Tg gqtYU4QH2xTg+7kkQPKtM72NDDQ8mwpM/j2PMnhqvPVP2f8V1JoQ6NMc9NGYzcjrt9pM jym5wU9R3wsDXttkDzlqDmmfgJfMkg2tekmOnPYS4siEbNOYffnDvEMP7Daa4+C76Pui wIKVCLVDKfCeMUmys/pfBPJq585w23ndnjXvFIacUAUnHKqy6YvfFwOKqLDA0w8wmdP6 NAjw== X-Gm-Message-State: AOAM531Z8Z11dXH1g3EkfefAA5Osi8jKPnvcrGKkY4ebCsiWzG0huNSJ eg4XeNNVpnE7MuSEt8kA7VHoNzf1PneHY+ewbe0= X-Received: by 2002:a4a:d509:: with SMTP id m9mr6013838oos.77.1599772545342; Thu, 10 Sep 2020 14:15:45 -0700 (PDT) MIME-Version: 1.0 References: <20200910161126.30948-1-oded.gabbay@gmail.com> <20200910130112.1f6bd9e9@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> <20200910132835.1bf7b638@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> In-Reply-To: From: Oded Gabbay Date: Fri, 11 Sep 2020 00:15:17 +0300 Message-ID: Subject: Re: [PATCH 00/15] Adding GAUDI NIC code to habanalabs driver To: Florian Fainelli Cc: Jakub Kicinski , "Linux-Kernel@Vger. Kernel. Org" , netdev@vger.kernel.org, SW_Drivers , Greg Kroah-Hartman , "David S. Miller" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Sep 11, 2020 at 12:05 AM Florian Fainelli wrote: > > > > On 9/10/2020 1:32 PM, Oded Gabbay wrote: > > On Thu, Sep 10, 2020 at 11:28 PM Jakub Kicinski wrote: > >> > >> On Thu, 10 Sep 2020 23:16:22 +0300 Oded Gabbay wrote: > >>> On Thu, Sep 10, 2020 at 11:01 PM Jakub Kicinski wrote: > >>>> On Thu, 10 Sep 2020 19:11:11 +0300 Oded Gabbay wrote: > >>>>> create mode 100644 drivers/misc/habanalabs/gaudi/gaudi_nic.c > >>>>> create mode 100644 drivers/misc/habanalabs/gaudi/gaudi_nic.h > >>>>> create mode 100644 drivers/misc/habanalabs/gaudi/gaudi_nic_dcbnl.c > >>>>> create mode 100644 drivers/misc/habanalabs/gaudi/gaudi_nic_debugfs.c > >>>>> create mode 100644 drivers/misc/habanalabs/gaudi/gaudi_nic_ethtool.c > >>>>> create mode 100644 drivers/misc/habanalabs/gaudi/gaudi_phy.c > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_qm0_masks.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_qm0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_qm1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_qpc0_masks.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_qpc0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_qpc1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_rxb_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_rxe0_masks.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_rxe0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_rxe1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_stat_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_tmr_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_txe0_masks.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_txe0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_txe1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_txs0_masks.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_txs0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic0_txs1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic1_qm0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic1_qm1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic2_qm0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic2_qm1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic3_qm0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic3_qm1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic4_qm0_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/gaudi/asic_reg/nic4_qm1_regs.h > >>>>> create mode 100644 drivers/misc/habanalabs/include/hw_ip/nic/nic_general.h > >>>> > >>>> The relevant code needs to live under drivers/net/(ethernet/). > >>>> For one thing our automation won't trigger for drivers in random > >>>> (/misc) part of the tree. > >>> > >>> Can you please elaborate on how to do this with a single driver that > >>> is already in misc ? > >>> As I mentioned in the cover letter, we are not developing a > >>> stand-alone NIC. We have a deep-learning accelerator with a NIC > >>> interface. > >>> Therefore, we don't have a separate PCI physical function for the NIC > >>> and I can't have a second driver registering to it. > >> > >> Is it not possible to move the files and still build them into a single > >> module? > > hmm... > > I actually didn't try that as I thought it will be very strange and > > I'm not familiar with other drivers that build as a single ko but have > > files spread out in different subsystems. > > I don't feel it is a better option than what we did here. > > > > Will I need to split pull requests to different subsystem maintainers > > ? For the same driver ? > > Sounds to me this is not going to fly. > > Not necessarily, you can post your patches to all relevant lists and > seek maintainer review/acked-by tags from the relevant maintainers. This > is not unheard of with mlx5 for instance. Yeah, I see what you are saying, the problem is that sometimes, because everything is tightly integrated in our SOC, the patches contain code from common code (common to ALL our ASICs, even those who don't have NIC at all), GAUDI specific code which is not NIC related and the NIC code itself. But I guess that as a last resort if this is a *must* I can do that. Though I would like to hear Greg's opinion on this as he is my current maintainer. Personally I do want to send relevant patches to netdev because I want to get your expert reviews on them, but still keep the code in a single location. > > Have you considered using notifiers to get your NIC driver registered > while the NIC code lives in a different module? Yes, and I prefered to keep it simple. I didn't want to start sending notifications to the NIC driver every time, for example, I needed to reset the SOC because a compute engine got stuck. Or vice-versa - when some error happened in the NIC to start sending notifications to the common driver. In addition, from my AMD days, we had a very tough time managing two drivers that "talk" to each other and manage the same H/W. I'm talking about amdgpu for graphics and amdkfd for compute (which I was the maintainer). AMD is working in the past years to unite those two drivers to get out of that mess. That's why I didn't want to go down that road. Thanks, Oded > -- > Florian