All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Greg KH <greg@kroah.com>
Cc: "John W. Linville" <linville@tuxdriver.com>,
	Benoit Taine <benoit.taine@lip6.fr>,
	linux-mips@linux-mips.org, linux-fbdev@vger.kernel.org,
	linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, ath5k-devel@venema.h4ckr.net,
	linux-acenic@sunsite.dk, linux-scsi@vger.kernel.org,
	linux-rdma@vger.kernel.org, ath10k@lists.infradead.org,
	linux-hippi@sunsite.dk, industrypack-devel@lists.sourceforge.net,
	linux-mmc@vger.kernel.org, MPT-FusionLinux.pdl@avagotech.com,
	virtualization@lists.linux-foundation.org,
	ath9k-devel@venema.h4ckr.net, wil6210@qca.qualcomm.com,
	linux-pcmcia@lists.infradead.org, linux-can@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	platform-driver-x86@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com,
	e1000-devel@lists.sourceforge.net, linux-crypto@vger.kernel.org,
	devel@linuxdriverproject.org
Subject: Re: [PATCH 0/25] Replace DEFINE_PCI_DEVICE_TABLE macro use
Date: Fri, 18 Jul 2014 11:50:21 -0700	[thread overview]
Message-ID: <1405709421.30262.8.camel@dabdike.int.hansenpartnership.com> (raw)
In-Reply-To: <20140718181759.GB2193@kroah.com>

On Fri, 2014-07-18 at 11:17 -0700, Greg KH wrote:
> On Fri, Jul 18, 2014 at 09:54:32AM -0700, James Bottomley wrote:
> > On Fri, 2014-07-18 at 09:43 -0700, Greg KH wrote:
> > > On Fri, Jul 18, 2014 at 12:22:13PM -0400, John W. Linville wrote:
> > > > On Fri, Jul 18, 2014 at 05:26:47PM +0200, Benoit Taine wrote:
> > > > > We should prefer `const struct pci_device_id` over
> > > > > `DEFINE_PCI_DEVICE_TABLE` to meet kernel coding style guidelines.
> > > > > This issue was reported by checkpatch.
> > > > 
> > > > Honestly, I prefer the macro -- it stands-out more.  Maybe the style
> > > > guidelines and/or checkpatch should change instead?
> > > 
> > > The macro is horrid, no other bus has this type of thing just to save a
> > > few characters in typing
> > 
> > OK, so this is the macro:
> > 
> > #define DEFINE_PCI_DEVICE_TABLE(_table) \
> > 	const struct pci_device_id _table[]
> > 
> > Could you explain what's so horrible?
> > 
> > The reason it's useful today is that people forget the const (and
> > sometimes the [] making it a true table instead of a pointer).  If you
> > use the DEFINE_PCI_DEVICE_TABLE macro, the compile breaks if you use it
> > wrongly (good) and you automatically get the correct annotations.
> 
> We have almost 1000 more uses of the non-macro version than the "macro"
> version in the kernel today:
> $ git grep -w DEFINE_PCI_DEVICE_TABLE | wc -l
> 262
> $ git grep "const struct pci_device_id" | wc -l
> 1254
> 
> My big complaint is that we need to be consistant, either pick one or
> the other and stick to it.  As the macro is the least used, it's easiest
> to fix up, and it also is more consistant with all other kernel
> subsystems which do not have such a macro.

I've a weak preference for consistency, but not at the expense of
hundreds of patches churning the kernel to remove an innocuous macro.
Churn costs time and effort.

> As there is no need for the __init macro mess anymore, there's no real
> need for the DEFINE_PCI_DEVICE_TABLE macro either.  I think checkpatch
> will catch the use of non-const users for the id table already today, it
> catches lots of other uses like this already.
> 
> > > , so why should PCI be "special" in this regard
> > > anymore?
> > 
> > I think the PCI usage dwarfs most other bus types now, so you could turn
> > the question around.  However, I don't think majority voting is a good
> > guide to best practise; lets debate the merits for their own sake.
> 
> Not really "dwarf", USB is close with over 700 such structures:
> $ git grep "const struct usb_device_id" | wc -l
> 725
> 
> And i2c is almost just as big as PCI:
> $ git grep "const struct i2c_device_id" | wc -l
> 1223
> 
> So again, this macro is not consistent with the majority of PCI drivers,
> nor with any other type of "device id" declaration in the kernel, which
> is why I feel it should be removed.
> 
> And finally, the PCI documentation itself says to not use this macro, so
> this isn't a "new" thing.  From Documentation/PCI/pci.txt:
> 
> 	The ID table is an array of struct pci_device_id entries ending with an
> 	all-zero entry.  Definitions with static const are generally preferred.
> 	Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
> 
> That wording went into the file last December, when we last talked about
> this and everyone in that discussion agreed to remove the macro for the
> above reasons.
> 
> Consistency matters.

In this case, I don't think it does that much ... a cut and paste either
way (from a macro or non-macro based driver) yields correct code.  Since
there's no bug here and no apparent way to misuse the macro, why bother?

Anyway, it's PCI code ... let the PCI maintainer decide.  However, if he
does want this do it as one big bang patch via either the PCI or Trivial
tree (latter because Jiří has experience doing this, but the former
might be useful so the decider feels the pain ...)

James



WARNING: multiple messages have this Message-ID (diff)
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Greg KH <greg@kroah.com>
Cc: "John W. Linville" <linville@tuxdriver.com>,
	Benoit Taine <benoit.taine@lip6.fr>,
	linux-mips@linux-mips.org, linux-fbdev@vger.kernel.org,
	linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, ath5k-devel@venema.h4ckr.net,
	linux-acenic@sunsite.dk, linux-scsi@vger.kernel.org,
	linux-rdma@vger.kernel.org, ath10k@lists.infradead.org,
	linux-hippi@sunsite.dk, industrypack-devel@lists.sourceforge.net,
	linux-mmc@vger.kernel.org, MPT-FusionLinux.pdl@avagotech.com,
	virtualization@lists.linux-foundation.org,
	ath9k-devel@venema.h4ckr.net, wil6210@qca.qualcomm.com,
	linux-pcmcia@lists.infradead.org, linux-can@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	platform-driver-x86@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com,
	e1000-devel@lists.sourceforge.net, linux-crypto@vger.kernel.org,
	deve
Subject: Re: [PATCH 0/25] Replace DEFINE_PCI_DEVICE_TABLE macro use
Date: Fri, 18 Jul 2014 11:50:21 -0700	[thread overview]
Message-ID: <1405709421.30262.8.camel@dabdike.int.hansenpartnership.com> (raw)
In-Reply-To: <20140718181759.GB2193@kroah.com>

On Fri, 2014-07-18 at 11:17 -0700, Greg KH wrote:
> On Fri, Jul 18, 2014 at 09:54:32AM -0700, James Bottomley wrote:
> > On Fri, 2014-07-18 at 09:43 -0700, Greg KH wrote:
> > > On Fri, Jul 18, 2014 at 12:22:13PM -0400, John W. Linville wrote:
> > > > On Fri, Jul 18, 2014 at 05:26:47PM +0200, Benoit Taine wrote:
> > > > > We should prefer `const struct pci_device_id` over
> > > > > `DEFINE_PCI_DEVICE_TABLE` to meet kernel coding style guidelines.
> > > > > This issue was reported by checkpatch.
> > > > 
> > > > Honestly, I prefer the macro -- it stands-out more.  Maybe the style
> > > > guidelines and/or checkpatch should change instead?
> > > 
> > > The macro is horrid, no other bus has this type of thing just to save a
> > > few characters in typing
> > 
> > OK, so this is the macro:
> > 
> > #define DEFINE_PCI_DEVICE_TABLE(_table) \
> > 	const struct pci_device_id _table[]
> > 
> > Could you explain what's so horrible?
> > 
> > The reason it's useful today is that people forget the const (and
> > sometimes the [] making it a true table instead of a pointer).  If you
> > use the DEFINE_PCI_DEVICE_TABLE macro, the compile breaks if you use it
> > wrongly (good) and you automatically get the correct annotations.
> 
> We have almost 1000 more uses of the non-macro version than the "macro"
> version in the kernel today:
> $ git grep -w DEFINE_PCI_DEVICE_TABLE | wc -l
> 262
> $ git grep "const struct pci_device_id" | wc -l
> 1254
> 
> My big complaint is that we need to be consistant, either pick one or
> the other and stick to it.  As the macro is the least used, it's easiest
> to fix up, and it also is more consistant with all other kernel
> subsystems which do not have such a macro.

I've a weak preference for consistency, but not at the expense of
hundreds of patches churning the kernel to remove an innocuous macro.
Churn costs time and effort.

> As there is no need for the __init macro mess anymore, there's no real
> need for the DEFINE_PCI_DEVICE_TABLE macro either.  I think checkpatch
> will catch the use of non-const users for the id table already today, it
> catches lots of other uses like this already.
> 
> > > , so why should PCI be "special" in this regard
> > > anymore?
> > 
> > I think the PCI usage dwarfs most other bus types now, so you could turn
> > the question around.  However, I don't think majority voting is a good
> > guide to best practise; lets debate the merits for their own sake.
> 
> Not really "dwarf", USB is close with over 700 such structures:
> $ git grep "const struct usb_device_id" | wc -l
> 725
> 
> And i2c is almost just as big as PCI:
> $ git grep "const struct i2c_device_id" | wc -l
> 1223
> 
> So again, this macro is not consistent with the majority of PCI drivers,
> nor with any other type of "device id" declaration in the kernel, which
> is why I feel it should be removed.
> 
> And finally, the PCI documentation itself says to not use this macro, so
> this isn't a "new" thing.  From Documentation/PCI/pci.txt:
> 
> 	The ID table is an array of struct pci_device_id entries ending with an
> 	all-zero entry.  Definitions with static const are generally preferred.
> 	Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
> 
> That wording went into the file last December, when we last talked about
> this and everyone in that discussion agreed to remove the macro for the
> above reasons.
> 
> Consistency matters.

In this case, I don't think it does that much ... a cut and paste either
way (from a macro or non-macro based driver) yields correct code.  Since
there's no bug here and no apparent way to misuse the macro, why bother?

Anyway, it's PCI code ... let the PCI maintainer decide.  However, if he
does want this do it as one big bang patch via either the PCI or Trivial
tree (latter because Jiří has experience doing this, but the former
might be useful so the decider feels the pain ...)

James



WARNING: multiple messages have this Message-ID (diff)
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Greg KH <greg@kroah.com>
Cc: "John W. Linville" <linville@tuxdriver.com>,
	Benoit Taine <benoit.taine@lip6.fr>,
	linux-mips@linux-mips.org, linux-fbdev@vger.kernel.org,
	linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, ath5k-devel@venema.h4ckr.net,
	linux-acenic@sunsite.dk, linux-scsi@vger.kernel.org,
	linux-rdma@vger.kernel.org, ath10k@lists.infradead.org,
	linux-hippi@sunsite.dk, industrypack-devel@lists.sourceforge.net,
	linux-mmc@vger.kernel.org, MPT-FusionLinux.pdl@avagotech.com,
	virtualization@lists.linux-foundation.org,
	ath9k-devel@venema.h4ckr.net, wil6210@qca.qualcomm.com,
	linux-pcmcia@lists.infradead.org, linux-can@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	platform-driver-x86@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com,
	e1000-devel@lists.sourceforge.net,
	linux-crypto@vger.kernel.orgdeve
Subject: Re: [PATCH 0/25] Replace DEFINE_PCI_DEVICE_TABLE macro use
Date: Fri, 18 Jul 2014 11:50:21 -0700	[thread overview]
Message-ID: <1405709421.30262.8.camel@dabdike.int.hansenpartnership.com> (raw)
In-Reply-To: <20140718181759.GB2193@kroah.com>

On Fri, 2014-07-18 at 11:17 -0700, Greg KH wrote:
> On Fri, Jul 18, 2014 at 09:54:32AM -0700, James Bottomley wrote:
> > On Fri, 2014-07-18 at 09:43 -0700, Greg KH wrote:
> > > On Fri, Jul 18, 2014 at 12:22:13PM -0400, John W. Linville wrote:
> > > > On Fri, Jul 18, 2014 at 05:26:47PM +0200, Benoit Taine wrote:
> > > > > We should prefer `const struct pci_device_id` over
> > > > > `DEFINE_PCI_DEVICE_TABLE` to meet kernel coding style guidelines.
> > > > > This issue was reported by checkpatch.
> > > > 
> > > > Honestly, I prefer the macro -- it stands-out more.  Maybe the style
> > > > guidelines and/or checkpatch should change instead?
> > > 
> > > The macro is horrid, no other bus has this type of thing just to save a
> > > few characters in typing
> > 
> > OK, so this is the macro:
> > 
> > #define DEFINE_PCI_DEVICE_TABLE(_table) \
> > 	const struct pci_device_id _table[]
> > 
> > Could you explain what's so horrible?
> > 
> > The reason it's useful today is that people forget the const (and
> > sometimes the [] making it a true table instead of a pointer).  If you
> > use the DEFINE_PCI_DEVICE_TABLE macro, the compile breaks if you use it
> > wrongly (good) and you automatically get the correct annotations.
> 
> We have almost 1000 more uses of the non-macro version than the "macro"
> version in the kernel today:
> $ git grep -w DEFINE_PCI_DEVICE_TABLE | wc -l
> 262
> $ git grep "const struct pci_device_id" | wc -l
> 1254
> 
> My big complaint is that we need to be consistant, either pick one or
> the other and stick to it.  As the macro is the least used, it's easiest
> to fix up, and it also is more consistant with all other kernel
> subsystems which do not have such a macro.

I've a weak preference for consistency, but not at the expense of
hundreds of patches churning the kernel to remove an innocuous macro.
Churn costs time and effort.

> As there is no need for the __init macro mess anymore, there's no real
> need for the DEFINE_PCI_DEVICE_TABLE macro either.  I think checkpatch
> will catch the use of non-const users for the id table already today, it
> catches lots of other uses like this already.
> 
> > > , so why should PCI be "special" in this regard
> > > anymore?
> > 
> > I think the PCI usage dwarfs most other bus types now, so you could turn
> > the question around.  However, I don't think majority voting is a good
> > guide to best practise; lets debate the merits for their own sake.
> 
> Not really "dwarf", USB is close with over 700 such structures:
> $ git grep "const struct usb_device_id" | wc -l
> 725
> 
> And i2c is almost just as big as PCI:
> $ git grep "const struct i2c_device_id" | wc -l
> 1223
> 
> So again, this macro is not consistent with the majority of PCI drivers,
> nor with any other type of "device id" declaration in the kernel, which
> is why I feel it should be removed.
> 
> And finally, the PCI documentation itself says to not use this macro, so
> this isn't a "new" thing.  From Documentation/PCI/pci.txt:
> 
> 	The ID table is an array of struct pci_device_id entries ending with an
> 	all-zero entry.  Definitions with static const are generally preferred.
> 	Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
> 
> That wording went into the file last December, when we last talked about
> this and everyone in that discussion agreed to remove the macro for the
> above reasons.
> 
> Consistency matters.

In this case, I don't think it does that much ... a cut and paste either
way (from a macro or non-macro based driver) yields correct code.  Since
there's no bug here and no apparent way to misuse the macro, why bother?

Anyway, it's PCI code ... let the PCI maintainer decide.  However, if he
does want this do it as one big bang patch via either the PCI or Trivial
tree (latter because Jiří has experience doing this, but the former
might be useful so the decider feels the pain ...)

James



WARNING: multiple messages have this Message-ID (diff)
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Greg KH <greg@kroah.com>
Cc: "John W. Linville" <linville@tuxdriver.com>,
	Benoit Taine <benoit.taine@lip6.fr>,
	linux-mips@linux-mips.org, linux-fbdev@vger.kernel.org,
	linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, ath5k-devel@venema.h4ckr.net,
	linux-acenic@sunsite.dk, linux-scsi@vger.kernel.org,
	linux-rdma@vger.kernel.org, ath10k@lists.infradead.org,
	linux-hippi@sunsite.dk, industrypack-devel@lists.sourceforge.net,
	linux-mmc@vger.kernel.org, MPT-FusionLinux.pdl@avagotech.com,
	virtualization@lists.linux-foundation.org,
	ath9k-devel@venema.h4ckr.net, wil6210@qca.qualcomm.com,
	linux-pcmcia@lists.infradead.org, linux-can@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	platform-driver-x86@vger.kernel.org, netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com,
	e1000-devel@lists.sourceforge.net,
	linux-crypto@vger.kernel.orgdeve
Subject: Re: [PATCH 0/25] Replace DEFINE_PCI_DEVICE_TABLE macro use
Date: Fri, 18 Jul 2014 18:50:21 +0000	[thread overview]
Message-ID: <1405709421.30262.8.camel@dabdike.int.hansenpartnership.com> (raw)
In-Reply-To: <20140718181759.GB2193@kroah.com>

On Fri, 2014-07-18 at 11:17 -0700, Greg KH wrote:
> On Fri, Jul 18, 2014 at 09:54:32AM -0700, James Bottomley wrote:
> > On Fri, 2014-07-18 at 09:43 -0700, Greg KH wrote:
> > > On Fri, Jul 18, 2014 at 12:22:13PM -0400, John W. Linville wrote:
> > > > On Fri, Jul 18, 2014 at 05:26:47PM +0200, Benoit Taine wrote:
> > > > > We should prefer `const struct pci_device_id` over
> > > > > `DEFINE_PCI_DEVICE_TABLE` to meet kernel coding style guidelines.
> > > > > This issue was reported by checkpatch.
> > > > 
> > > > Honestly, I prefer the macro -- it stands-out more.  Maybe the style
> > > > guidelines and/or checkpatch should change instead?
> > > 
> > > The macro is horrid, no other bus has this type of thing just to save a
> > > few characters in typing
> > 
> > OK, so this is the macro:
> > 
> > #define DEFINE_PCI_DEVICE_TABLE(_table) \
> > 	const struct pci_device_id _table[]
> > 
> > Could you explain what's so horrible?
> > 
> > The reason it's useful today is that people forget the const (and
> > sometimes the [] making it a true table instead of a pointer).  If you
> > use the DEFINE_PCI_DEVICE_TABLE macro, the compile breaks if you use it
> > wrongly (good) and you automatically get the correct annotations.
> 
> We have almost 1000 more uses of the non-macro version than the "macro"
> version in the kernel today:
> $ git grep -w DEFINE_PCI_DEVICE_TABLE | wc -l
> 262
> $ git grep "const struct pci_device_id" | wc -l
> 1254
> 
> My big complaint is that we need to be consistant, either pick one or
> the other and stick to it.  As the macro is the least used, it's easiest
> to fix up, and it also is more consistant with all other kernel
> subsystems which do not have such a macro.

I've a weak preference for consistency, but not at the expense of
hundreds of patches churning the kernel to remove an innocuous macro.
Churn costs time and effort.

> As there is no need for the __init macro mess anymore, there's no real
> need for the DEFINE_PCI_DEVICE_TABLE macro either.  I think checkpatch
> will catch the use of non-const users for the id table already today, it
> catches lots of other uses like this already.
> 
> > > , so why should PCI be "special" in this regard
> > > anymore?
> > 
> > I think the PCI usage dwarfs most other bus types now, so you could turn
> > the question around.  However, I don't think majority voting is a good
> > guide to best practise; lets debate the merits for their own sake.
> 
> Not really "dwarf", USB is close with over 700 such structures:
> $ git grep "const struct usb_device_id" | wc -l
> 725
> 
> And i2c is almost just as big as PCI:
> $ git grep "const struct i2c_device_id" | wc -l
> 1223
> 
> So again, this macro is not consistent with the majority of PCI drivers,
> nor with any other type of "device id" declaration in the kernel, which
> is why I feel it should be removed.
> 
> And finally, the PCI documentation itself says to not use this macro, so
> this isn't a "new" thing.  From Documentation/PCI/pci.txt:
> 
> 	The ID table is an array of struct pci_device_id entries ending with an
> 	all-zero entry.  Definitions with static const are generally preferred.
> 	Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
> 
> That wording went into the file last December, when we last talked about
> this and everyone in that discussion agreed to remove the macro for the
> above reasons.
> 
> Consistency matters.

In this case, I don't think it does that much ... a cut and paste either
way (from a macro or non-macro based driver) yields correct code.  Since
there's no bug here and no apparent way to misuse the macro, why bother?

Anyway, it's PCI code ... let the PCI maintainer decide.  However, if he
does want this do it as one big bang patch via either the PCI or Trivial
tree (latter because Jiří has experience doing this, but the former
might be useful so the decider feels the pain ...)

James



WARNING: multiple messages have this Message-ID (diff)
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: ath9k-devel@lists.ath9k.org
Subject: [ath9k-devel] [PATCH 0/25] Replace DEFINE_PCI_DEVICE_TABLE macro use
Date: Fri, 18 Jul 2014 11:50:21 -0700	[thread overview]
Message-ID: <1405709421.30262.8.camel@dabdike.int.hansenpartnership.com> (raw)
In-Reply-To: <20140718181759.GB2193@kroah.com>

On Fri, 2014-07-18 at 11:17 -0700, Greg KH wrote:
> On Fri, Jul 18, 2014 at 09:54:32AM -0700, James Bottomley wrote:
> > On Fri, 2014-07-18 at 09:43 -0700, Greg KH wrote:
> > > On Fri, Jul 18, 2014 at 12:22:13PM -0400, John W. Linville wrote:
> > > > On Fri, Jul 18, 2014 at 05:26:47PM +0200, Benoit Taine wrote:
> > > > > We should prefer `const struct pci_device_id` over
> > > > > `DEFINE_PCI_DEVICE_TABLE` to meet kernel coding style guidelines.
> > > > > This issue was reported by checkpatch.
> > > > 
> > > > Honestly, I prefer the macro -- it stands-out more.  Maybe the style
> > > > guidelines and/or checkpatch should change instead?
> > > 
> > > The macro is horrid, no other bus has this type of thing just to save a
> > > few characters in typing
> > 
> > OK, so this is the macro:
> > 
> > #define DEFINE_PCI_DEVICE_TABLE(_table) \
> > 	const struct pci_device_id _table[]
> > 
> > Could you explain what's so horrible?
> > 
> > The reason it's useful today is that people forget the const (and
> > sometimes the [] making it a true table instead of a pointer).  If you
> > use the DEFINE_PCI_DEVICE_TABLE macro, the compile breaks if you use it
> > wrongly (good) and you automatically get the correct annotations.
> 
> We have almost 1000 more uses of the non-macro version than the "macro"
> version in the kernel today:
> $ git grep -w DEFINE_PCI_DEVICE_TABLE | wc -l
> 262
> $ git grep "const struct pci_device_id" | wc -l
> 1254
> 
> My big complaint is that we need to be consistant, either pick one or
> the other and stick to it.  As the macro is the least used, it's easiest
> to fix up, and it also is more consistant with all other kernel
> subsystems which do not have such a macro.

I've a weak preference for consistency, but not at the expense of
hundreds of patches churning the kernel to remove an innocuous macro.
Churn costs time and effort.

> As there is no need for the __init macro mess anymore, there's no real
> need for the DEFINE_PCI_DEVICE_TABLE macro either.  I think checkpatch
> will catch the use of non-const users for the id table already today, it
> catches lots of other uses like this already.
> 
> > > , so why should PCI be "special" in this regard
> > > anymore?
> > 
> > I think the PCI usage dwarfs most other bus types now, so you could turn
> > the question around.  However, I don't think majority voting is a good
> > guide to best practise; lets debate the merits for their own sake.
> 
> Not really "dwarf", USB is close with over 700 such structures:
> $ git grep "const struct usb_device_id" | wc -l
> 725
> 
> And i2c is almost just as big as PCI:
> $ git grep "const struct i2c_device_id" | wc -l
> 1223
> 
> So again, this macro is not consistent with the majority of PCI drivers,
> nor with any other type of "device id" declaration in the kernel, which
> is why I feel it should be removed.
> 
> And finally, the PCI documentation itself says to not use this macro, so
> this isn't a "new" thing.  From Documentation/PCI/pci.txt:
> 
> 	The ID table is an array of struct pci_device_id entries ending with an
> 	all-zero entry.  Definitions with static const are generally preferred.
> 	Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
> 
> That wording went into the file last December, when we last talked about
> this and everyone in that discussion agreed to remove the macro for the
> above reasons.
> 
> Consistency matters.

In this case, I don't think it does that much ... a cut and paste either
way (from a macro or non-macro based driver) yields correct code.  Since
there's no bug here and no apparent way to misuse the macro, why bother?

Anyway, it's PCI code ... let the PCI maintainer decide.  However, if he
does want this do it as one big bang patch via either the PCI or Trivial
tree (latter because Ji?? has experience doing this, but the former
might be useful so the decider feels the pain ...)

James

WARNING: multiple messages have this Message-ID (diff)
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Greg KH <greg@kroah.com>
Cc: linux-mips@linux-mips.org, linux-fbdev@vger.kernel.org,
	linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org,
	virtualization@lists.linux-foundation.org,
	Benoit Taine <benoit.taine@lip6.fr>,
	ath5k-devel@venema.h4ckr.net, linux-acenic@sunsite.dk,
	linux-scsi@vger.kernel.org, users@rt2x00.serialmonkey.com,
	linux-rdma@vger.kernel.org, ath10k@lists.infradead.org,
	linux-hippi@sunsite.dk, industrypack-devel@lists.sourceforge.net,
	linux-wireless@vger.kernel.org, xen-devel@lists.xenproject.org,
	MPT-FusionLinux.pdl@avagotech.com, ath9k-devel@venema.h4ckr.net,
	wil6210@qca.qualcomm.com, linux-pcmcia@lists.infradead.org,
	"John W. Linville" <linville@tuxdriver.com>,
	linux-can@vger.kernel.org, platform-driver-x86@vger.kernel.org,
	netdev@vger.kernel.org, linux-mmc@vger.kernel.org,
	linux-kernel@vger.kernel.org, e1000-devel@lists.sourceforge.net,
	linux-crypto@vger.kernel.org, devel@linuxdriverproject.org
Subject: Re: [PATCH 0/25] Replace DEFINE_PCI_DEVICE_TABLE macro use
Date: Fri, 18 Jul 2014 11:50:21 -0700	[thread overview]
Message-ID: <1405709421.30262.8.camel@dabdike.int.hansenpartnership.com> (raw)
In-Reply-To: <20140718181759.GB2193@kroah.com>

On Fri, 2014-07-18 at 11:17 -0700, Greg KH wrote:
> On Fri, Jul 18, 2014 at 09:54:32AM -0700, James Bottomley wrote:
> > On Fri, 2014-07-18 at 09:43 -0700, Greg KH wrote:
> > > On Fri, Jul 18, 2014 at 12:22:13PM -0400, John W. Linville wrote:
> > > > On Fri, Jul 18, 2014 at 05:26:47PM +0200, Benoit Taine wrote:
> > > > > We should prefer `const struct pci_device_id` over
> > > > > `DEFINE_PCI_DEVICE_TABLE` to meet kernel coding style guidelines.
> > > > > This issue was reported by checkpatch.
> > > > 
> > > > Honestly, I prefer the macro -- it stands-out more.  Maybe the style
> > > > guidelines and/or checkpatch should change instead?
> > > 
> > > The macro is horrid, no other bus has this type of thing just to save a
> > > few characters in typing
> > 
> > OK, so this is the macro:
> > 
> > #define DEFINE_PCI_DEVICE_TABLE(_table) \
> > 	const struct pci_device_id _table[]
> > 
> > Could you explain what's so horrible?
> > 
> > The reason it's useful today is that people forget the const (and
> > sometimes the [] making it a true table instead of a pointer).  If you
> > use the DEFINE_PCI_DEVICE_TABLE macro, the compile breaks if you use it
> > wrongly (good) and you automatically get the correct annotations.
> 
> We have almost 1000 more uses of the non-macro version than the "macro"
> version in the kernel today:
> $ git grep -w DEFINE_PCI_DEVICE_TABLE | wc -l
> 262
> $ git grep "const struct pci_device_id" | wc -l
> 1254
> 
> My big complaint is that we need to be consistant, either pick one or
> the other and stick to it.  As the macro is the least used, it's easiest
> to fix up, and it also is more consistant with all other kernel
> subsystems which do not have such a macro.

I've a weak preference for consistency, but not at the expense of
hundreds of patches churning the kernel to remove an innocuous macro.
Churn costs time and effort.

> As there is no need for the __init macro mess anymore, there's no real
> need for the DEFINE_PCI_DEVICE_TABLE macro either.  I think checkpatch
> will catch the use of non-const users for the id table already today, it
> catches lots of other uses like this already.
> 
> > > , so why should PCI be "special" in this regard
> > > anymore?
> > 
> > I think the PCI usage dwarfs most other bus types now, so you could turn
> > the question around.  However, I don't think majority voting is a good
> > guide to best practise; lets debate the merits for their own sake.
> 
> Not really "dwarf", USB is close with over 700 such structures:
> $ git grep "const struct usb_device_id" | wc -l
> 725
> 
> And i2c is almost just as big as PCI:
> $ git grep "const struct i2c_device_id" | wc -l
> 1223
> 
> So again, this macro is not consistent with the majority of PCI drivers,
> nor with any other type of "device id" declaration in the kernel, which
> is why I feel it should be removed.
> 
> And finally, the PCI documentation itself says to not use this macro, so
> this isn't a "new" thing.  From Documentation/PCI/pci.txt:
> 
> 	The ID table is an array of struct pci_device_id entries ending with an
> 	all-zero entry.  Definitions with static const are generally preferred.
> 	Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
> 
> That wording went into the file last December, when we last talked about
> this and everyone in that discussion agreed to remove the macro for the
> above reasons.
> 
> Consistency matters.

In this case, I don't think it does that much ... a cut and paste either
way (from a macro or non-macro based driver) yields correct code.  Since
there's no bug here and no apparent way to misuse the macro, why bother?

Anyway, it's PCI code ... let the PCI maintainer decide.  However, if he
does want this do it as one big bang patch via either the PCI or Trivial
tree (latter because Jiří has experience doing this, but the former
might be useful so the decider feels the pain ...)

James



_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

  reply	other threads:[~2014-07-18 18:50 UTC|newest]

Thread overview: 125+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-18 15:26 [PATCH 0/25] Replace DEFINE_PCI_DEVICE_TABLE macro use Benoit Taine
2014-07-18 15:26 ` Benoit Taine
2014-07-18 15:26 ` [ath9k-devel] " Benoit Taine
2014-07-18 15:26 ` Benoit Taine
2014-07-18 15:26 ` Benoit Taine
2014-07-18 15:26 ` [PATCH 1/25] bna: " Benoit Taine
2014-07-18 15:26 ` [PATCH 2/25] BusLogic: " Benoit Taine
2014-07-21 14:48   ` Khalid Aziz
2014-07-18 15:26 ` [PATCH 3/25] iwlegacy: " Benoit Taine
2014-07-18 15:26 ` [PATCH 4/25] net: pasemi: " Benoit Taine
2014-07-18 15:26 ` [PATCH 5/25] net/ethernet/sgi/ioc3-eth: " Benoit Taine
2014-07-18 15:26 ` [PATCH 6/25] x86: " Benoit Taine
2014-07-18 15:26 ` [PATCH 7/25] rt2x00: " Benoit Taine
2014-07-18 15:26 ` [PATCH 8/25] dscc4: " Benoit Taine
2014-07-18 15:26 ` [PATCH 9/25] net: neterion: " Benoit Taine
2014-07-18 15:26 ` [PATCH 10/25] netxen: " Benoit Taine
2014-07-18 15:26 ` [PATCH 11/25] pcnet32: " Benoit Taine
2014-07-18 15:26 ` [PATCH 12/25] r8169: " Benoit Taine
2014-07-18 15:27 ` [PATCH 13/25] IB/mlx5: " Benoit Taine
2014-07-18 15:27 ` [PATCH 14/25] adm8211: " Benoit Taine
2014-07-18 15:27 ` [PATCH 15/25] qlcnic: " Benoit Taine
2014-07-18 15:27 ` [PATCH 16/25] be2net: " Benoit Taine
2014-07-18 15:27 ` [PATCH 17/25] block: " Benoit Taine
2014-07-18 15:27 ` [PATCH 18/25] smsc9420: " Benoit Taine
2014-07-18 15:27 ` [PATCH 19/25] irda: " Benoit Taine
2014-07-18 15:27 ` [PATCH 20/25] via-rhine: " Benoit Taine
2014-07-18 15:27 ` [PATCH 21/25] hostap: " Benoit Taine
2014-07-18 15:27 ` [PATCH 22/25] drivers/net: " Benoit Taine
2014-07-18 15:27 ` [PATCH 23/25] virtio: " Benoit Taine
2014-07-18 15:27 ` Benoit Taine
2014-07-21  1:22   ` Rusty Russell
2014-07-21  1:22     ` Rusty Russell
2014-07-18 15:27 ` [PATCH 24/25] starfire: " Benoit Taine
2014-07-18 15:27 ` [PATCH 25/25] ipack: " Benoit Taine
2014-07-18 15:59   ` Samuel Iglesias Gonsálvez
2014-07-18 23:03     ` Greg Kroah-Hartman
2014-07-18 16:22 ` [PATCH 0/25] " John W. Linville
2014-07-18 16:22   ` John W. Linville
2014-07-18 16:22   ` [ath9k-devel] " John W. Linville
2014-07-18 16:22   ` John W. Linville
2014-07-18 16:22   ` John W. Linville
2014-07-18 16:43   ` Greg KH
2014-07-18 16:43     ` Greg KH
2014-07-18 16:43     ` [ath9k-devel] " Greg KH
2014-07-18 16:43     ` Greg KH
2014-07-18 16:43     ` Greg KH
2014-07-18 16:54     ` James Bottomley
2014-07-18 16:54     ` James Bottomley
2014-07-18 16:54       ` James Bottomley
2014-07-18 16:54       ` [ath9k-devel] " James Bottomley
2014-07-18 16:54       ` James Bottomley
2014-07-18 16:54       ` James Bottomley
2014-07-18 16:54       ` James Bottomley
2014-07-18 18:17       ` Greg KH
2014-07-18 18:17       ` Greg KH
2014-07-18 18:17       ` Greg KH
2014-07-18 18:17         ` Greg KH
2014-07-18 18:17         ` [ath9k-devel] " Greg KH
2014-07-18 18:17         ` Greg KH
2014-07-18 18:17         ` Greg KH
2014-07-18 18:17         ` Greg KH
2014-07-18 18:50         ` James Bottomley [this message]
2014-07-18 18:50           ` James Bottomley
2014-07-18 18:50           ` [ath9k-devel] " James Bottomley
2014-07-18 18:50           ` James Bottomley
2014-07-18 18:50           ` James Bottomley
2014-07-18 18:50           ` James Bottomley
2014-07-21 23:16           ` Bjorn Helgaas
2014-07-21 23:16           ` Bjorn Helgaas
2014-07-21 23:16             ` Bjorn Helgaas
2014-07-21 23:16             ` [ath9k-devel] " Bjorn Helgaas
2014-07-21 23:16             ` Bjorn Helgaas
2014-07-21 23:16             ` Bjorn Helgaas
2014-07-22 17:12             ` Benoit Taine
2014-07-22 17:12             ` Benoit Taine
2014-07-22 17:12               ` Benoit Taine
2014-07-22 17:12               ` [ath9k-devel] " Benoit Taine
2014-07-22 17:12               ` Benoit Taine
2014-07-22 17:12               ` Benoit Taine
2014-07-22 17:12             ` Benoit Taine
2014-07-18 18:50         ` James Bottomley
2014-07-18 21:14         ` Dave Airlie
2014-07-18 21:14         ` Dave Airlie
2014-07-18 21:14           ` Dave Airlie
2014-07-18 21:14           ` [ath9k-devel] " Dave Airlie
2014-07-18 21:14           ` Dave Airlie
2014-07-18 21:14           ` Dave Airlie
2014-07-18 21:27           ` Greg KH
2014-07-18 21:27           ` Greg KH
2014-07-18 21:27             ` Greg KH
2014-07-18 21:27             ` [ath9k-devel] " Greg KH
2014-07-18 21:27             ` Greg KH
2014-07-18 21:27             ` Greg KH
2014-07-18 18:05     ` Joe Perches
2014-07-18 18:05       ` Joe Perches
2014-07-18 18:05       ` [ath9k-devel] " Joe Perches
2014-07-18 18:05       ` Joe Perches
2014-07-18 18:05       ` Joe Perches
2014-07-18 18:05       ` Joe Perches
2014-07-18 18:05     ` Joe Perches
2014-07-18 18:05     ` Joe Perches
2014-07-18 16:43   ` Greg KH
2014-07-18 16:22 ` John W. Linville
2014-07-18 16:22 ` John W. Linville
2014-07-18 16:28 ` James Bottomley
2014-07-18 16:28 ` James Bottomley
2014-07-18 16:28   ` James Bottomley
2014-07-18 16:28   ` [ath9k-devel] " James Bottomley
2014-07-18 16:28   ` James Bottomley
2014-07-18 16:28   ` James Bottomley
2014-07-18 16:33   ` Keller, Jacob E
2014-07-18 16:33   ` Keller, Jacob E
2014-07-18 16:33   ` Keller, Jacob E
2014-07-18 16:33     ` Keller, Jacob E
2014-07-18 16:33     ` [ath9k-devel] " Keller, Jacob E
2014-07-18 16:33     ` Keller, Jacob E
2014-07-18 16:33     ` Keller, Jacob E
2014-07-21  4:18 ` David Miller
2014-07-21  4:18   ` David Miller
2014-07-21  4:18   ` [ath9k-devel] " David Miller
2014-07-21  4:18   ` David Miller
2014-07-21  4:18 ` David Miller
2014-07-21  4:18 ` David Miller
2014-07-18 15:26 Benoit Taine
2014-07-18 15:26 Benoit Taine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1405709421.30262.8.camel@dabdike.int.hansenpartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=MPT-FusionLinux.pdl@avagotech.com \
    --cc=ath10k@lists.infradead.org \
    --cc=ath5k-devel@venema.h4ckr.net \
    --cc=ath9k-devel@venema.h4ckr.net \
    --cc=benoit.taine@lip6.fr \
    --cc=devel@linuxdriverproject.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=e1000-devel@lists.sourceforge.net \
    --cc=greg@kroah.com \
    --cc=industrypack-devel@lists.sourceforge.net \
    --cc=linux-acenic@sunsite.dk \
    --cc=linux-can@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-hippi@sunsite.dk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-pcmcia@lists.infradead.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=netdev@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=users@rt2x00.serialmonkey.com \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=wil6210@qca.qualcomm.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.