2008-02-16 06:13:55

by Yoshinori Sato

[permalink] [raw]
Subject: [PATCH 3/6] h8300 setup.c initrd support fix

initrd setting fix.

arch/h8300/kernel/setup.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
index b1f25c2..75712ec 100644
--- a/arch/h8300/kernel/setup.c
+++ b/arch/h8300/kernel/setup.c
@@ -57,6 +57,7 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
extern int _ramstart, _ramend;
extern char _target_name[];
extern void h8300_gpio_init(void);
+extern void *initrd_start, *initrd_end;

#if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
&& defined(CONFIG_GDB_MAGICPRINT)
@@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
/* allow for ROMFS on the end of the kernel */
if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
#if defined(CONFIG_BLK_DEV_INITRD)
- initrd_start = memory_start;
- initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
+ initrd_start = (void *)memory_start;
+ initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
#else
memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
#endif
--
1.5.4.1

--
Yoshinori Sato
<[email protected]>


2008-02-16 06:24:13

by Yoshinori Sato

[permalink] [raw]
Subject: Re: [PATCH 3/6] h8300 setup.c initrd support fix

Signed-off-by: Yoshinori Sato <[email protected]>

At Sat, 16 Feb 2008 01:13:37 -0500,
Yoshinori Sato wrote:
>
> initrd setting fix.
>
> arch/h8300/kernel/setup.c | 5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> index b1f25c2..75712ec 100644
> --- a/arch/h8300/kernel/setup.c
> +++ b/arch/h8300/kernel/setup.c
> @@ -57,6 +57,7 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
> extern int _ramstart, _ramend;
> extern char _target_name[];
> extern void h8300_gpio_init(void);
> +extern void *initrd_start, *initrd_end;
>
> #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
> && defined(CONFIG_GDB_MAGICPRINT)
> @@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
> /* allow for ROMFS on the end of the kernel */
> if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
> #if defined(CONFIG_BLK_DEV_INITRD)
> - initrd_start = memory_start;
> - initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
> + initrd_start = (void *)memory_start;
> + initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
> #else
> memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
> #endif
> --
> 1.5.4.1
>
> --
> Yoshinori Sato
> <[email protected]>

2008-02-16 06:30:19

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 3/6] h8300 setup.c initrd support fix

On Sat, 16 Feb 2008 01:13:37 -0500 Yoshinori Sato <[email protected]> wrote:

> initrd setting fix.
>
> arch/h8300/kernel/setup.c | 5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> index b1f25c2..75712ec 100644
> --- a/arch/h8300/kernel/setup.c
> +++ b/arch/h8300/kernel/setup.c
> @@ -57,6 +57,7 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
> extern int _ramstart, _ramend;
> extern char _target_name[];
> extern void h8300_gpio_init(void);
> +extern void *initrd_start, *initrd_end;
>
> #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
> && defined(CONFIG_GDB_MAGICPRINT)
> @@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
> /* allow for ROMFS on the end of the kernel */
> if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
> #if defined(CONFIG_BLK_DEV_INITRD)
> - initrd_start = memory_start;
> - initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
> + initrd_start = (void *)memory_start;
> + initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
> #else
> memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
> #endif

But include/linux/initrd.h declares:

extern unsigned long initrd_start, initrd_end;

2008-02-17 04:39:20

by Yoshinori Sato

[permalink] [raw]
Subject: Re: [PATCH 3/6] h8300 setup.c initrd support fix

At Fri, 15 Feb 2008 22:29:49 -0800,
Andrew Morton wrote:
>
> On Sat, 16 Feb 2008 01:13:37 -0500 Yoshinori Sato <[email protected]> wrote:
>
> > initrd setting fix.
> >
> > arch/h8300/kernel/setup.c | 5 +++--
> > 1 files changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> > index b1f25c2..75712ec 100644
> > --- a/arch/h8300/kernel/setup.c
> > +++ b/arch/h8300/kernel/setup.c
> > @@ -57,6 +57,7 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
> > extern int _ramstart, _ramend;
> > extern char _target_name[];
> > extern void h8300_gpio_init(void);
> > +extern void *initrd_start, *initrd_end;
> >
> > #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
> > && defined(CONFIG_GDB_MAGICPRINT)
> > @@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
> > /* allow for ROMFS on the end of the kernel */
> > if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
> > #if defined(CONFIG_BLK_DEV_INITRD)
> > - initrd_start = memory_start;
> > - initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
> > + initrd_start = (void *)memory_start;
> > + initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
> > #else
> > memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
> > #endif
>
> But include/linux/initrd.h declares:
>
> extern unsigned long initrd_start, initrd_end;
>

fix it.
Signed-off-by: Yoshinori Sato <[email protected]>

arch/h8300/kernel/setup.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
index 75712ec..4dd744f 100644
--- a/arch/h8300/kernel/setup.c
+++ b/arch/h8300/kernel/setup.c
@@ -30,6 +30,7 @@
#include <linux/bootmem.h>
#include <linux/seq_file.h>
#include <linux/init.h>
+#include <linux/initrd.h>

#include <asm/setup.h>
#include <asm/irq.h>
@@ -57,7 +58,6 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
extern int _ramstart, _ramend;
extern char _target_name[];
extern void h8300_gpio_init(void);
-extern void *initrd_start, *initrd_end;

#if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
&& defined(CONFIG_GDB_MAGICPRINT)
--
1.5.4.1

--
Yoshinori Sato
<[email protected]>

2008-02-17 04:55:28

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 3/6] h8300 setup.c initrd support fix

On Sat, 16 Feb 2008 23:39:09 -0500 Yoshinori Sato <[email protected]> wrote:

> At Fri, 15 Feb 2008 22:29:49 -0800,
> Andrew Morton wrote:
> >
> > On Sat, 16 Feb 2008 01:13:37 -0500 Yoshinori Sato <[email protected]> wrote:
> >
> > > initrd setting fix.
> > >
> > > arch/h8300/kernel/setup.c | 5 +++--
> > > 1 files changed, 3 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> > > index b1f25c2..75712ec 100644
> > > --- a/arch/h8300/kernel/setup.c
> > > +++ b/arch/h8300/kernel/setup.c
> > > @@ -57,6 +57,7 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
> > > extern int _ramstart, _ramend;
> > > extern char _target_name[];
> > > extern void h8300_gpio_init(void);
> > > +extern void *initrd_start, *initrd_end;
> > >
> > > #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
> > > && defined(CONFIG_GDB_MAGICPRINT)
> > > @@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
> > > /* allow for ROMFS on the end of the kernel */
> > > if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
> > > #if defined(CONFIG_BLK_DEV_INITRD)
> > > - initrd_start = memory_start;
> > > - initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
> > > + initrd_start = (void *)memory_start;
> > > + initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
> > > #else
> > > memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
> > > #endif
> >
> > But include/linux/initrd.h declares:
> >
> > extern unsigned long initrd_start, initrd_end;
> >
>
> fix it.

I assume this new patch is an addition to the previous one quoted above?

> Signed-off-by: Yoshinori Sato <[email protected]>
>
> arch/h8300/kernel/setup.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> index 75712ec..4dd744f 100644
> --- a/arch/h8300/kernel/setup.c
> +++ b/arch/h8300/kernel/setup.c
> @@ -30,6 +30,7 @@
> #include <linux/bootmem.h>
> #include <linux/seq_file.h>
> #include <linux/init.h>
> +#include <linux/initrd.h>
>
> #include <asm/setup.h>
> #include <asm/irq.h>
> @@ -57,7 +58,6 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
> extern int _ramstart, _ramend;
> extern char _target_name[];
> extern void h8300_gpio_init(void);
> -extern void *initrd_start, *initrd_end;
>
> #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
> && defined(CONFIG_GDB_MAGICPRINT)

If so then surely it generated a warning when assigning a void* to an
unsigned long.

So please send a complete new fully tested patch. Please also include a
changelog which describes what is being fixed, and how it is fixed. The
text "initrd setting fix." and "fit it" is not sufficient - it doesn't
tell us what was wrong with the old code, nor how the change improved it.

Thanks.

2008-02-17 05:09:57

by Yoshinori Sato

[permalink] [raw]
Subject: Re: [PATCH 3/6] h8300 setup.c initrd support fix

At Sat, 16 Feb 2008 20:55:02 -0800,
Andrew Morton wrote:
>
> On Sat, 16 Feb 2008 23:39:09 -0500 Yoshinori Sato <[email protected]> wrote:
>
> > At Fri, 15 Feb 2008 22:29:49 -0800,
> > Andrew Morton wrote:
> > >
> > > On Sat, 16 Feb 2008 01:13:37 -0500 Yoshinori Sato <[email protected]> wrote:
> > >
> > > > initrd setting fix.
> > > >
> > > > arch/h8300/kernel/setup.c | 5 +++--
> > > > 1 files changed, 3 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> > > > index b1f25c2..75712ec 100644
> > > > --- a/arch/h8300/kernel/setup.c
> > > > +++ b/arch/h8300/kernel/setup.c
> > > > @@ -57,6 +57,7 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
> > > > extern int _ramstart, _ramend;
> > > > extern char _target_name[];
> > > > extern void h8300_gpio_init(void);
> > > > +extern void *initrd_start, *initrd_end;
> > > >
> > > > #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
> > > > && defined(CONFIG_GDB_MAGICPRINT)
> > > > @@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
> > > > /* allow for ROMFS on the end of the kernel */
> > > > if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
> > > > #if defined(CONFIG_BLK_DEV_INITRD)
> > > > - initrd_start = memory_start;
> > > > - initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
> > > > + initrd_start = (void *)memory_start;
> > > > + initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
> > > > #else
> > > > memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
> > > > #endif
> > >
> > > But include/linux/initrd.h declares:
> > >
> > > extern unsigned long initrd_start, initrd_end;
> > >
> >
> > fix it.
>
> I assume this new patch is an addition to the previous one quoted above?
>
> > Signed-off-by: Yoshinori Sato <[email protected]>
> >
> > arch/h8300/kernel/setup.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> > index 75712ec..4dd744f 100644
> > --- a/arch/h8300/kernel/setup.c
> > +++ b/arch/h8300/kernel/setup.c
> > @@ -30,6 +30,7 @@
> > #include <linux/bootmem.h>
> > #include <linux/seq_file.h>
> > #include <linux/init.h>
> > +#include <linux/initrd.h>
> >
> > #include <asm/setup.h>
> > #include <asm/irq.h>
> > @@ -57,7 +58,6 @@ extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
> > extern int _ramstart, _ramend;
> > extern char _target_name[];
> > extern void h8300_gpio_init(void);
> > -extern void *initrd_start, *initrd_end;
> >
> > #if (defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)) \
> > && defined(CONFIG_GDB_MAGICPRINT)
>
> If so then surely it generated a warning when assigning a void* to an
> unsigned long.
>
> So please send a complete new fully tested patch. Please also include a
> changelog which describes what is being fixed, and how it is fixed. The
> text "initrd setting fix." and "fit it" is not sufficient - it doesn't
> tell us what was wrong with the old code, nor how the change improved it.
>
> Thanks.

Sorry. I mistake orign.
Signed-off-by: Yoshinori Sato <[email protected]>

arch/h8300/kernel/setup.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
index b1f25c2..4dd744f 100644
--- a/arch/h8300/kernel/setup.c
+++ b/arch/h8300/kernel/setup.c
@@ -30,6 +30,7 @@
#include <linux/bootmem.h>
#include <linux/seq_file.h>
#include <linux/init.h>
+#include <linux/initrd.h>

#include <asm/setup.h>
#include <asm/irq.h>
@@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
/* allow for ROMFS on the end of the kernel */
if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
#if defined(CONFIG_BLK_DEV_INITRD)
- initrd_start = memory_start;
- initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
+ initrd_start = (void *)memory_start;
+ initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
#else
memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
#endif

--
1.5.4.1

--
Yoshinori Sato
<[email protected]>

2008-02-17 05:27:31

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 3/6] h8300 setup.c initrd support fix

On Sun, 17 Feb 2008 00:09:47 -0500 Yoshinori Sato <[email protected]> wrote:

>
> Sorry. I mistake orign.
> Signed-off-by: Yoshinori Sato <[email protected]>
>

Please include a full description of your patches!

>
> diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
> index b1f25c2..4dd744f 100644
> --- a/arch/h8300/kernel/setup.c
> +++ b/arch/h8300/kernel/setup.c
> @@ -30,6 +30,7 @@
> #include <linux/bootmem.h>
> #include <linux/seq_file.h>
> #include <linux/init.h>
> +#include <linux/initrd.h>
>
> #include <asm/setup.h>
> #include <asm/irq.h>
> @@ -99,8 +100,8 @@ void __init setup_arch(char **cmdline_p)
> /* allow for ROMFS on the end of the kernel */
> if (memcmp((void *)memory_start, "-rom1fs-", 8) == 0) {
> #if defined(CONFIG_BLK_DEV_INITRD)
> - initrd_start = memory_start;
> - initrd_end = memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]);
> + initrd_start = (void *)memory_start;
> + initrd_end = (void *)(memory_start += be32_to_cpu(((unsigned long *) (memory_start))[2]));
> #else
> memory_start += be32_to_cpu(((unsigned long *) memory_start)[2]);
> #endif

This is still wrong.

initrd_start and initrd_end have type `unsigned long'. But the
right-hand-side of these assignemtns has type void*. THe compiler will
warn.