2001-07-21 16:51:49

by Stefan Becker

[permalink] [raw]
Subject: [PATCH] init/main.c

Hi!

The following patch against 2.4.6-ac5 does

(a) a small cleanup to profile_setup()
(b) wraps certain root_dev_names[] into #ifdefs.
I hope I found the correct CONFIG_BLK_* variables

Compiles and boots here, but I don't have any RAID-controllers ;-)

Greetings from Aachen,
Stefan

--- linux-2.4.6-ac5/init/main.c Sat Jul 21 18:34:15 2001
+++ linux/init/main.c Sat Jul 21 18:36:38 2001
@@ -138,8 +138,9 @@

static int __init profile_setup(char *str)
{
- int par;
- if (get_option(&str,&par)) prof_shift = par;
+ int par;
+ if (get_option(&str,&par))
+ prof_shift = par;
return 1;
}

@@ -280,6 +281,7 @@
{ "xpram30", (XPRAM_MAJOR << MINORBITS) + 30 },
{ "xpram31", (XPRAM_MAJOR << MINORBITS) + 31 },
#endif
+#ifdef CONFIG_BLK_DEV_DAC960
{ "rd/c0d0p",0x3000 },
{ "rd/c0d1p",0x3008 },
{ "rd/c0d2p",0x3010 },
@@ -296,6 +298,8 @@
{ "rd/c0d13p",0x3068 },
{ "rd/c0d14p",0x3070 },
{ "rd/c0d15p",0x3078 },
+#endif
+#ifdef CONFIG_BLK_CPQ_DA
{ "ida/c0d0p",0x4800 },
{ "ida/c0d1p",0x4810 },
{ "ida/c0d2p",0x4820 },
@@ -312,6 +316,8 @@
{ "ida/c0d13p",0x48D0 },
{ "ida/c0d14p",0x48E0 },
{ "ida/c0d15p",0x48F0 },
+#endif
+#ifdef CONFIG_BLK_CPQ_CISS_DA
{ "cciss/c0d0p",0x6800 },
{ "cciss/c0d1p",0x6810 },
{ "cciss/c0d2p",0x6820 },
@@ -328,6 +334,8 @@
{ "cciss/c0d13p",0x68D0 },
{ "cciss/c0d14p",0x68E0 },
{ "cciss/c0d15p",0x68F0 },
+#endif
+#ifdef CONFIG_BLK_DEV_ATARAID
{ "ataraid/d0p",0x7200 },
{ "ataraid/d1p",0x7210 },
{ "ataraid/d2p",0x7220 },
@@ -344,6 +352,7 @@
{ "ataraid/d13p",0x72D0 },
{ "ataraid/d14p",0x72E0 },
{ "ataraid/d15p",0x72F0 },
+#endif
{ "mtdblock", 0x1f00 },
{ "nftla", 0x5d00 },
{ "nftlb", 0x5d10 },


2001-07-21 17:09:41

by Alexander Griesser

[permalink] [raw]
Subject: Re: [PATCH] init/main.c

On Sat, Jul 21, 2001 at 06:51:07PM +0200, you wrote:
> The following patch against 2.4.6-ac5 does
> - int par;
> - if (get_option(&str,&par)) prof_shift = par;
> + int par;
> + if (get_option(&str,&par))
> + prof_shift = par;
> return 1;

This is already done in 2.4.7.

regards, alexx
--
| .-. | Alexander Griesser <[email protected]> -=- ICQ:63180135 | .''`. |
| /v\ | http://www.tuxx-home.at -=- Linux Version 2.4.7 | : :' : |
| /( )\ | FAQ zu at.linux: http://alfie.ist.org/LinuxFAQ | `. `' |
| ^^ ^^ `---------------------------------------------------? `- |

2001-07-21 17:36:05

by Robert Love

[permalink] [raw]
Subject: Re: [PATCH] init/main.c

On 21 Jul 2001 18:51:07 +0200, Stefan Becker wrote:
> static int __init profile_setup(char *str)
> {
> - int par;
> - if (get_option(&str,&par)) prof_shift = par;
> + int par;
> + if (get_option(&str,&par))
> + prof_shift = par;
> return 1;
> }

I wrote a similar patch awhile back and submitted it, to no avail. So,
this is good -- but 2.4.7 already has this fix merged.

--
Robert M. Love
rml at ufl.edu
rml at tech9.net

2001-07-21 22:09:27

by Andrzej Krzysztofowicz

[permalink] [raw]
Subject: Re: [PATCH] init/main.c

Hi,
What do you aim at doing this changes ?

> The following patch against 2.4.6-ac5 does
[...]
> (b) wraps certain root_dev_names[] into #ifdefs.
> I hope I found the correct CONFIG_BLK_* variables
[...]
> #endif
> +#ifdef CONFIG_BLK_DEV_DAC960
> { "rd/c0d0p",0x3000 },
> { "rd/c0d1p",0x3008 },
> { "rd/c0d2p",0x3010 },
> @@ -296,6 +298,8 @@
> { "rd/c0d13p",0x3068 },
> { "rd/c0d14p",0x3070 },
> { "rd/c0d15p",0x3078 },
> +#endif
> +#ifdef CONFIG_BLK_CPQ_DA
... etc.

AFAIR, the above (and similar) #ifdefs were intentionally removed as they
break using root=... kernel parameters for apropriate drivers loaded as
module from initrd. In these cases there are 3 solutions:

1. Use numeric values (not convenient)
2. #if defined(CONFIG_FOO) || defined(CONFIG_FOO_MODULE)
This is ugly (main kernel depends on too many module settings).
Also, Linux (Alan too ?) hate too many unnecessary
3. Remove all #ifdefs here. (prefered as this is init code...)

Alan, please DON'T apply this patch.

Andrzej

2001-07-22 03:58:32

by Stefan Becker

[permalink] [raw]
Subject: Re: [PATCH] init/main.c

Hi!

Andrzej Krzysztofowicz wrote:
[...]
> AFAIR, the above (and similar) #ifdefs were intentionally removed as
they
> break using root=... kernel parameters for apropriate drivers loaded as
> module from initrd. In these cases there are 3 solutions:
[...]

Sorry, but I thought that even if a driver is built as a module the
corresponding CONFIG_* symbol is defined. I don't see the difference to
#if defined(CONFIG_ARCH_S390) as my system is i386 and doesn't need RAID
block devices.

Sorry for the disturbance, it was my first try to improve the linux
kernel and it was wrong. ;-)

Greetings,
Stefan

2001-07-22 04:06:02

by Keith Owens

[permalink] [raw]
Subject: Re: [PATCH] init/main.c

On Sun, 22 Jul 2001 05:58:15 +0200 (CEST),
Stefan Becker <[email protected]> wrote:
>Sorry, but I thought that even if a driver is built as a module the
>corresponding CONFIG_* symbol is defined.

CONFIG_foo= CONFIG_foo CONFIG_foo_MODULE
n undef undef
y 1 undef
m undef 1