Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932549AbcLRRU7 (ORCPT ); Sun, 18 Dec 2016 12:20:59 -0500 Received: from ale.deltatee.com ([207.54.116.67]:60325 "EHLO ale.deltatee.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753253AbcLRRU6 (ORCPT ); Sun, 18 Dec 2016 12:20:58 -0500 To: Greg Kroah-Hartman References: <1481994562-9283-1-git-send-email-logang@deltatee.com> <1481994562-9283-2-git-send-email-logang@deltatee.com> <20161218075141.GE29850@kroah.com> Cc: Bjorn Helgaas , Geert Uytterhoeven , Jonathan Corbet , "David S. Miller" , Andrew Morton , Emil Velikov , Mauro Carvalho Chehab , Guenter Roeck , Kurt Schwemmer , Stephen Bates , linux-pci@vger.kernel.org, linux-doc@vger.kernel.org, linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org From: Logan Gunthorpe Message-ID: Date: Sun, 18 Dec 2016 10:20:47 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.4.0 MIME-Version: 1.0 In-Reply-To: <20161218075141.GE29850@kroah.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 50.66.97.235 X-SA-Exim-Rcpt-To: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-doc@vger.kernel.org, linux-pci@vger.kernel.org, stephen.bates@microsemi.com, kurt.schwemmer@microsemi.com, linux@roeck-us.net, mchehab@kernel.org, emil.l.velikov@gmail.com, akpm@linux-foundation.org, davem@davemloft.net, corbet@lwn.net, geert+renesas@glider.be, bhelgaas@google.com, gregkh@linuxfoundation.org X-SA-Exim-Mail-From: logang@deltatee.com Subject: Re: [RFC 1/1] MicroSemi Switchtec management interface driver X-SA-Exim-Version: 4.2.1 (built Mon, 26 Dec 2011 16:24:06 +0000) X-SA-Exim-Scanned: Yes (on ale.deltatee.com) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1142 Lines: 35 Hi Greg, Thanks for the quick review! On 18/12/16 12:51 AM, Greg Kroah-Hartman wrote: > On Sat, Dec 17, 2016 at 10:09:22AM -0700, Logan Gunthorpe wrote: >> +struct switchtec_dev { >> + struct pci_dev *pdev; >> + struct msix_entry *msix; >> + struct device *dev; >> + struct kref kref; > > Why do you have a pointer to a device, yet a kref as well? Just have > this structure embed a 'struct device' in itself, like you did for a > kref, and you will be fine. Otherwise you are dealing with two > different sets of reference counting here, for no good reason. Ok, understood. I had referenced the device dax driver which did it this way in 4.8 but looks like it was changed to the way you suggest in 4.9. >> +#define stdev_pdev(stdev) ((stdev)->pdev) >> +#define stdev_pdev_dev(stdev) (&stdev_pdev(stdev)->dev) >> +#define stdev_name(stdev) pci_name(stdev_pdev(stdev)) >> +#define stdev_dev(stdev) ((stdev)->dev) > > Ick, just open code these please. That's a huge hint your use of the > driver model is not correct :) Ok, will do. For reference, I was copying drivers/ntb/hw/intel/ntb_hw_intel.h which does a similar thing. Logan