From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= Date: Tue, 12 Apr 2011 13:40:36 +0200 Subject: [RFC][PATCH V3] axi: add AXI bus driver In-Reply-To: References: <1302557114-7880-1-git-send-email-zajec5@gmail.com> <20110411210631.GA28559@kroah.com> <20110411212513.GA17809@kroah.com> <20110411215619.GA27943@kroah.com> <20110411223632.GB31833@kroah.com> <20110411233506.GA13240@kroah.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-arm-kernel@lists.infradead.org 2011/4/12 Rafa? Mi?ecki : > 2011/4/12 Greg KH : >> On Tue, Apr 12, 2011 at 12:45:33AM +0200, Rafa? Mi?ecki wrote: >>> 2011/4/12 Greg KH : >>> > Then in your release function, free the struct axi_device. ?It's that >>> > simple. ?To try to free it before then would be wrong and cause >>> > problems. >>> >>> This is because it is defined as: >>> struct axi_device cores[AXI_MAX_NR_CORES]; >> >> No way, seriously? >> >> You can't do that, no static struct devices please. ?Make these dynamic >> and everything will be fine. ?The -mm tree used to have a huge warning >> if you ever tried to register a statically allocated struct, but that >> didn't really work out, but would have saved you a lot of time here, >> sorry. >> >> So dynamically allocate the structures and you will be fine. > > Well, I saw that along kernel, I had no idea there is anything wrong > about this. It seems more ppl do not know about this: > struct radeon_ib ? ? ? ?ibs[RADEON_IB_POOL_SIZE]; > struct radeon_pm_clock_info clock_info[8]; > struct radeon_pm_profile profiles[PM_PROFILE_MAX]; > struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES]; > struct radeon_i2c_chan *i2c_bus[RADEON_MAX_I2C_BUS]; > > struct b43_key key[B43_NR_GROUP_KEYS * 2 + B43_NR_PAIRWISE_KEYS]; > > struct ssb_device devices[SSB_MAX_NR_CORES]; > I guess I could fine more examples by simple grepping .h files. > > Is there some guide around with things like this we should avoid? > checkpatch does no catch this, so maybe just some manual? Could you > point me to it? Greg, my: struct ssb_device devices[SSB_MAX_NR_CORES]; is part of "struct axi_bus", which we allocate dynamically anyway: struct axi_bus *bus; bus = kzalloc(sizeof(*bus), GFP_KERNEL); if (!bus) goto out; So do we really need to dynamically alloc main structure and separately every of it's array of structs? Does it really make sense? Please point me to some place where I can read more about this. Some tips about coding style for such things, cases. -- Rafa? From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-qw0-f46.google.com ([209.85.216.46]:55030 "EHLO mail-qw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753590Ab1DLLkh convert rfc822-to-8bit (ORCPT ); Tue, 12 Apr 2011 07:40:37 -0400 MIME-Version: 1.0 In-Reply-To: References: <1302557114-7880-1-git-send-email-zajec5@gmail.com> <20110411210631.GA28559@kroah.com> <20110411212513.GA17809@kroah.com> <20110411215619.GA27943@kroah.com> <20110411223632.GB31833@kroah.com> <20110411233506.GA13240@kroah.com> Date: Tue, 12 Apr 2011 13:40:36 +0200 Message-ID: Subject: Re: [RFC][PATCH V3] axi: add AXI bus driver From: =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= To: Greg KH Cc: linux-wireless@vger.kernel.org, "John W. Linville" , George Kashperko , Arnd Bergmann , Russell King , "linux-kernel@vger.kernel.org" , b43-dev@lists.infradead.org, =?UTF-8?Q?Michael_B=C3=BCsch?= , linuxdriverproject , Andy Botting , "linux-arm-kernel@lists.infradead.org" , Larry Finger Content-Type: text/plain; charset=UTF-8 Sender: linux-wireless-owner@vger.kernel.org List-ID: 2011/4/12 Rafał Miłecki : > 2011/4/12 Greg KH : >> On Tue, Apr 12, 2011 at 12:45:33AM +0200, Rafał Miłecki wrote: >>> 2011/4/12 Greg KH : >>> > Then in your release function, free the struct axi_device.  It's that >>> > simple.  To try to free it before then would be wrong and cause >>> > problems. >>> >>> This is because it is defined as: >>> struct axi_device cores[AXI_MAX_NR_CORES]; >> >> No way, seriously? >> >> You can't do that, no static struct devices please.  Make these dynamic >> and everything will be fine.  The -mm tree used to have a huge warning >> if you ever tried to register a statically allocated struct, but that >> didn't really work out, but would have saved you a lot of time here, >> sorry. >> >> So dynamically allocate the structures and you will be fine. > > Well, I saw that along kernel, I had no idea there is anything wrong > about this. It seems more ppl do not know about this: > struct radeon_ib        ibs[RADEON_IB_POOL_SIZE]; > struct radeon_pm_clock_info clock_info[8]; > struct radeon_pm_profile profiles[PM_PROFILE_MAX]; > struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES]; > struct radeon_i2c_chan *i2c_bus[RADEON_MAX_I2C_BUS]; > > struct b43_key key[B43_NR_GROUP_KEYS * 2 + B43_NR_PAIRWISE_KEYS]; > > struct ssb_device devices[SSB_MAX_NR_CORES]; > I guess I could fine more examples by simple grepping .h files. > > Is there some guide around with things like this we should avoid? > checkpatch does no catch this, so maybe just some manual? Could you > point me to it? Greg, my: struct ssb_device devices[SSB_MAX_NR_CORES]; is part of "struct axi_bus", which we allocate dynamically anyway: struct axi_bus *bus; bus = kzalloc(sizeof(*bus), GFP_KERNEL); if (!bus) goto out; So do we really need to dynamically alloc main structure and separately every of it's array of structs? Does it really make sense? Please point me to some place where I can read more about this. Some tips about coding style for such things, cases. -- Rafał From mboxrd@z Thu Jan 1 00:00:00 1970 From: zajec5@gmail.com (=?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?=) Date: Tue, 12 Apr 2011 13:40:36 +0200 Subject: [RFC][PATCH V3] axi: add AXI bus driver In-Reply-To: References: <1302557114-7880-1-git-send-email-zajec5@gmail.com> <20110411210631.GA28559@kroah.com> <20110411212513.GA17809@kroah.com> <20110411215619.GA27943@kroah.com> <20110411223632.GB31833@kroah.com> <20110411233506.GA13240@kroah.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org 2011/4/12 Rafa? Mi?ecki : > 2011/4/12 Greg KH : >> On Tue, Apr 12, 2011 at 12:45:33AM +0200, Rafa? Mi?ecki wrote: >>> 2011/4/12 Greg KH : >>> > Then in your release function, free the struct axi_device. ?It's that >>> > simple. ?To try to free it before then would be wrong and cause >>> > problems. >>> >>> This is because it is defined as: >>> struct axi_device cores[AXI_MAX_NR_CORES]; >> >> No way, seriously? >> >> You can't do that, no static struct devices please. ?Make these dynamic >> and everything will be fine. ?The -mm tree used to have a huge warning >> if you ever tried to register a statically allocated struct, but that >> didn't really work out, but would have saved you a lot of time here, >> sorry. >> >> So dynamically allocate the structures and you will be fine. > > Well, I saw that along kernel, I had no idea there is anything wrong > about this. It seems more ppl do not know about this: > struct radeon_ib ? ? ? ?ibs[RADEON_IB_POOL_SIZE]; > struct radeon_pm_clock_info clock_info[8]; > struct radeon_pm_profile profiles[PM_PROFILE_MAX]; > struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES]; > struct radeon_i2c_chan *i2c_bus[RADEON_MAX_I2C_BUS]; > > struct b43_key key[B43_NR_GROUP_KEYS * 2 + B43_NR_PAIRWISE_KEYS]; > > struct ssb_device devices[SSB_MAX_NR_CORES]; > I guess I could fine more examples by simple grepping .h files. > > Is there some guide around with things like this we should avoid? > checkpatch does no catch this, so maybe just some manual? Could you > point me to it? Greg, my: struct ssb_device devices[SSB_MAX_NR_CORES]; is part of "struct axi_bus", which we allocate dynamically anyway: struct axi_bus *bus; bus = kzalloc(sizeof(*bus), GFP_KERNEL); if (!bus) goto out; So do we really need to dynamically alloc main structure and separately every of it's array of structs? Does it really make sense? Please point me to some place where I can read more about this. Some tips about coding style for such things, cases. -- Rafa?