2013-04-09 11:50:02

by Christian Ruppert

[permalink] [raw]
Subject: [PATCH] Add option to disable kernel compression

Until now, kernel compression can only be disabled by deselecting
HAVE_<compression> in the architecture Kconfig. However, some
users/platforms within the same architecture might want to use
compression while others might want to disable it.
This patch is a solution to the dilemma.

Signed-off-by: Christian Ruppert <[email protected]>
---
init/Kconfig | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/init/Kconfig b/init/Kconfig
index 5341d72..0924c51 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -101,7 +101,6 @@ config HAVE_KERNEL_LZO
choice
prompt "Kernel compression mode"
default KERNEL_GZIP
- depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
help
The linux kernel is a kind of self-extracting executable.
Several compression algorithms are available, which differ
@@ -120,6 +119,13 @@ choice

If in doubt, select 'gzip'

+config KERNEL_UNCOMPRESSED
+ bool "No compression"
+ help
+ No compression at all. The kernel is huge but the compression and
+ decompression times are zero.
+ This is usually not what you want.
+
config KERNEL_GZIP
bool "Gzip"
depends on HAVE_KERNEL_GZIP
--
1.7.1


2013-04-11 07:38:27

by Vineet Gupta

[permalink] [raw]
Subject: Re: [PATCH] Add option to disable kernel compression

On 04/09/2013 05:19 PM, Christian Ruppert wrote:
> Until now, kernel compression can only be disabled by deselecting
> HAVE_<compression> in the architecture Kconfig. However, some
> users/platforms within the same architecture might want to use
> compression while others might want to disable it.
> This patch is a solution to the dilemma.
>
> Signed-off-by: Christian Ruppert <[email protected]>
> ---
> init/Kconfig | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/init/Kconfig b/init/Kconfig
> index 5341d72..0924c51 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -101,7 +101,6 @@ config HAVE_KERNEL_LZO
> choice
> prompt "Kernel compression mode"
> default KERNEL_GZIP
> - depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
> help
> The linux kernel is a kind of self-extracting executable.
> Several compression algorithms are available, which differ
> @@ -120,6 +119,13 @@ choice
>
> If in doubt, select 'gzip'
>
> +config KERNEL_UNCOMPRESSED
> + bool "No compression"

> + help
> + No compression at all. The kernel is huge but the compression and
> + decompression times are zero.
> + This is usually not what you want.
> +
> config KERNEL_GZIP
> bool "Gzip"
> depends on HAVE_KERNEL_GZIP

FWIW, this is an issue for ARC port where one of our platforms runs on a very slow
FPGA, hence doesn't want to spend time uncompressing the image - while others do
want the gzip.

Reviewed-by: Vineet Gupta <[email protected]>

Thx,
-Vineet

2013-04-11 07:46:08

by Alexander Stein

[permalink] [raw]
Subject: Re: [PATCH] Add option to disable kernel compression

Hello,

On Thursday 11 April 2013 13:08:08, Vineet Gupta wrote:
> On 04/09/2013 05:19 PM, Christian Ruppert wrote:
> > Until now, kernel compression can only be disabled by deselecting
> > HAVE_<compression> in the architecture Kconfig. However, some
> > users/platforms within the same architecture might want to use
> > compression while others might want to disable it.
> > This patch is a solution to the dilemma.
> >
> > Signed-off-by: Christian Ruppert <[email protected]>
> > ---
> > init/Kconfig | 8 +++++++-
> > 1 files changed, 7 insertions(+), 1 deletions(-)
> >
> > diff --git a/init/Kconfig b/init/Kconfig
> > index 5341d72..0924c51 100644
> > --- a/init/Kconfig
> > +++ b/init/Kconfig
> > @@ -101,7 +101,6 @@ config HAVE_KERNEL_LZO
> > choice
> > prompt "Kernel compression mode"
> > default KERNEL_GZIP
> > - depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
> > help
> > The linux kernel is a kind of self-extracting executable.
> > Several compression algorithms are available, which differ
> > @@ -120,6 +119,13 @@ choice
> >
> > If in doubt, select 'gzip'
> >
> > +config KERNEL_UNCOMPRESSED
> > + bool "No compression"
>
> > + help
> > + No compression at all. The kernel is huge but the compression and
> > + decompression times are zero.
> > + This is usually not what you want.
> > +
> > config KERNEL_GZIP
> > bool "Gzip"
> > depends on HAVE_KERNEL_GZIP
>
> FWIW, this is an issue for ARC port where one of our platforms runs on a very slow
> FPGA, hence doesn't want to spend time uncompressing the image - while others do
> want the gzip.
>
> Reviewed-by: Vineet Gupta <[email protected]>

Even some other platforms, e.g. ARM you want no compression, if you can effort the additional space, if you want to boot extremely fast.

Best regards,
Alexander

2013-10-08 12:34:11

by Christian Ruppert

[permalink] [raw]
Subject: [PATCH REBASE] Add option to disable kernel compression

Until now, kernel compression can only be disabled by deselecting
HAVE_<compression> in the architecture Kconfig. However, some
users/platforms within the same architecture might want to use
compression while others might want to disable it.
This patch is a solution to the dilemma.

Signed-off-by: Christian Ruppert <[email protected]>
---
init/Kconfig | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/init/Kconfig b/init/Kconfig
index fed81b5..7db419b 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -118,7 +118,6 @@ config HAVE_KERNEL_LZ4
choice
prompt "Kernel compression mode"
default KERNEL_GZIP
- depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
help
The linux kernel is a kind of self-extracting executable.
Several compression algorithms are available, which differ
@@ -137,6 +136,13 @@ choice

If in doubt, select 'gzip'

+config KERNEL_UNCOMPRESSED
+ bool "No compression"
+ help
+ No compression at all. The kernel is huge but the compression and
+ decompression times are zero.
+ This is usually not what you want.
+
config KERNEL_GZIP
bool "Gzip"
depends on HAVE_KERNEL_GZIP
--
1.7.1

2013-10-08 19:29:49

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH REBASE] Add option to disable kernel compression

On Tue, 8 Oct 2013 14:33:32 +0200 Christian Ruppert <[email protected]> wrote:

> Until now, kernel compression can only be disabled by deselecting
> HAVE_<compression> in the architecture Kconfig.

Scratching my head a bit. There's no way of deselecting these things.
I *think* you mean "by editing arch/xxx/Kconfig and removing all the
"select HAVE_KERNEL_<compression>" lines"?

> However, some
> users/platforms within the same architecture might want to use
> compression while others might want to disable it.

Why would anyone want to run an uncompressed kernel, btw? Boot time?

> This patch is a solution to the dilemma.
>
> ...
>
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -118,7 +118,6 @@ config HAVE_KERNEL_LZ4
> choice
> prompt "Kernel compression mode"
> default KERNEL_GZIP
> - depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
> help
> The linux kernel is a kind of self-extracting executable.
> Several compression algorithms are available, which differ
> @@ -137,6 +136,13 @@ choice
>
> If in doubt, select 'gzip'
>
> +config KERNEL_UNCOMPRESSED
> + bool "No compression"
> + help
> + No compression at all. The kernel is huge but the compression and
> + decompression times are zero.
> + This is usually not what you want.
> +
> config KERNEL_GZIP
> bool "Gzip"
> depends on HAVE_KERNEL_GZIP

It's odd to create CONFIG_KERNEL_UNCOMPRESSED and not use it for
anything, but I guess Kconfig's `choice' forces this.

2013-10-09 08:03:18

by Christian Ruppert

[permalink] [raw]
Subject: Re: [PATCH REBASE] Add option to disable kernel compression

On Tue, Oct 08, 2013 at 12:29:40PM -0700, Andrew Morton wrote:
> On Tue, 8 Oct 2013 14:33:32 +0200 Christian Ruppert <[email protected]> wrote:
>
> > Until now, kernel compression can only be disabled by deselecting
> > HAVE_<compression> in the architecture Kconfig.
>
> Scratching my head a bit. There's no way of deselecting these things.
> I *think* you mean "by editing arch/xxx/Kconfig and removing all the
> "select HAVE_KERNEL_<compression>" lines"?

Exactly. I actually meant "not selecting" instead of deselecting. In
practise this comes down to editing arch/xxx/Kconfig and removing (or
adding) the respective HAVE_KERNEL_<compression> lines.

> > However, some
> > users/platforms within the same architecture might want to use
> > compression while others might want to disable it.
>
> Why would anyone want to run an uncompressed kernel, btw? Boot time?

Originally, the patch was developed because we wanted to compress the
kernel but other users of the ARC architecture didn't. We now have
customers of both camps ourselves, some say they can boot faster with
compression and some say they can boot faster without compression. This
probably depends on things like the FLASH chip they use etc.

> > This patch is a solution to the dilemma.
> >
> > ...
> >
> > --- a/init/Kconfig
> > +++ b/init/Kconfig
> > @@ -118,7 +118,6 @@ config HAVE_KERNEL_LZ4
> > choice
> > prompt "Kernel compression mode"
> > default KERNEL_GZIP
> > - depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
> > help
> > The linux kernel is a kind of self-extracting executable.
> > Several compression algorithms are available, which differ
> > @@ -137,6 +136,13 @@ choice
> >
> > If in doubt, select 'gzip'
> >
> > +config KERNEL_UNCOMPRESSED
> > + bool "No compression"
> > + help
> > + No compression at all. The kernel is huge but the compression and
> > + decompression times are zero.
> > + This is usually not what you want.
> > +
> > config KERNEL_GZIP
> > bool "Gzip"
> > depends on HAVE_KERNEL_GZIP
>
> It's odd to create CONFIG_KERNEL_UNCOMPRESSED and not use it for
> anything, but I guess Kconfig's `choice' forces this.

I haven't found another way to do this but I'd be happy to send an
update if someone can point me to a cleaner implementation.

Greetings,
Christian