[PATCH] powerpc/8xx: tqm8xx: fix incorrect placement of __initdata tag

Subsystems: linux for powerpc (32-bit and 64-bit), linux for powerpc embedded ppc8xx and ppc83xx, the rest

STALE4709d

3 messages, 2 authors, 2013-09-30 · open the first message on its own page

[PATCH] powerpc/8xx: tqm8xx: fix incorrect placement of __initdata tag

From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2013-09-30 13:14:13

__initdata tag should be placed between the variable name and equal
sign for the variable to be placed in the intended .init.data section.

Signed-off-by: Bartlomiej Zolnierkiewicz <redacted>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 arch/powerpc/platforms/8xx/tqm8xx_setup.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/platforms/8xx/tqm8xx_setup.c b/arch/powerpc/platforms/8xx/tqm8xx_setup.c
index 8d21ab7..ef0778a 100644
--- a/arch/powerpc/platforms/8xx/tqm8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/tqm8xx_setup.c
@@ -48,7 +48,7 @@ struct cpm_pin {
 	int port, pin, flags;
 };
 
-static struct __initdata cpm_pin tqm8xx_pins[] = {
+static struct cpm_pin tqm8xx_pins[] __initdata = {
 	/* SMC1 */
 	{CPM_PORTB, 24, CPM_PIN_INPUT}, /* RX */
 	{CPM_PORTB, 25, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, /* TX */
@@ -63,7 +63,7 @@ static struct __initdata cpm_pin tqm8xx_pins[] = {
 	{CPM_PORTC, 11, CPM_PIN_INPUT | CPM_PIN_SECONDARY | CPM_PIN_GPIO},
 };
 
-static struct __initdata cpm_pin tqm8xx_fec_pins[] = {
+static struct cpm_pin tqm8xx_fec_pins[] __initdata = {
 	/* MII */
 	{CPM_PORTD, 3, CPM_PIN_OUTPUT},
 	{CPM_PORTD, 4, CPM_PIN_OUTPUT},
-- 
1.8.2.3

RE: [PATCH] powerpc/8xx: tqm8xx: fix incorrect placement of __initdata tag

From: David Laight <hidden>
Date: 2013-09-30 14:21:43

__initdata tag should be placed between the variable name and equal
sign for the variable to be placed in the intended .init.data section.
...
-static struct __initdata cpm_pin tqm8xx_pins[] =3D {
+static struct cpm_pin tqm8xx_pins[] __initdata =3D {
As far as gcc is concerned it can go almost anywhere before the '=3D',
even before the 'static'.
Splitting 'struct cpm_pin' does seem an odd choice.

The Linux coding standards might suggest a location.
I'd have thought that either before or after the 'static' would be best
(ie as a storage class qualifier).

	David

Re: [PATCH] powerpc/8xx: tqm8xx: fix incorrect placement of __initdata tag

From: Bartlomiej Zolnierkiewicz <hidden>
Date: 2013-09-30 15:06:06

On Monday, September 30, 2013 03:20:29 PM David Laight wrote:
quoted
__initdata tag should be placed between the variable name and equal
sign for the variable to be placed in the intended .init.data section.
...
quoted
-static struct __initdata cpm_pin tqm8xx_pins[] = {
+static struct cpm_pin tqm8xx_pins[] __initdata = {
As far as gcc is concerned it can go almost anywhere before the '=',
even before the 'static'.
Splitting 'struct cpm_pin' does seem an odd choice.
It is not only an odd choice, it just doesn't work as it should in
the practice (as tested with gcc-4.6.3 from Ubuntu 12.04).
The Linux coding standards might suggest a location.
I'd have thought that either before or after the 'static' would be best
(ie as a storage class qualifier).
The majority of the kernel code uses __initdata before equal sign
and the __initdata documentation in <linux/init.h> recommends such
usage:

"
 * For initialized data:
 * You should insert __initdata or __initconst between the variable name
 * and equal sign followed by value, e.g.:
 *
 * static int init_variable __initdata = 0;
 * static const char linux_logo[] __initconst = { 0x32, 0x36, ... };
"

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help