public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:24 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
@ 2002-01-31 23:21   ` Arnaldo Carvalho de Melo
  2002-02-02 16:32     ` Denis Vlasenko
  2002-01-31 23:43   ` Jeff Garzik
                     ` (4 subsequent siblings)
  5 siblings, 1 reply; 73+ messages in thread
From: Arnaldo Carvalho de Melo @ 2002-01-31 23:21 UTC (permalink / raw)
  To: Alan Cox
  Cc: David S. Miller, vandrove, torvalds, garzik, linux-kernel, paulus,
	davidm, ralf

Em Thu, Jan 31, 2002 at 11:24:10PM +0000, Alan Cox escreveu:
> > As a side note, this thing is so tiny (less than 4K on sparc64!) so
> > why don't we just include it unconditionally instead of having all
> > of this "turn it on for these drivers" stuff?
> 
> Because 100 4K drivers suddenly becomes 0.5Mb. There are those of us trying
> to stuff Linux into embedded devices who if anything want more configuration
> options not people taking stuff out.
> 
> What I'd much rather see if this is an issue is:
> 
> bool	'Do you want to customise for a very small system' 
> 
> which auto enables all the random small stuff if you say no, and goes
> much deeper into options if you say yes.

heh, after I've read that you managed to boot 2.4 + rmap in a machine with
just 4 MB after tweaking some table sizes I thought about devoting some
time to identify those tables and making them options in make *config, with
even a nice CONFIG_TINY, like you said 8)

I'll eventually do this, and I'd appreciate if people send me suggestions
of tables/data structures that can be trimmed/reduced. Yeah, I'll take a
look at the .config files used in the embedded distros.

- Arnaldo

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 22:59 [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does not David S. Miller
@ 2002-01-31 23:24 ` Alan Cox
  2002-01-31 23:21   ` Arnaldo Carvalho de Melo
                     ` (5 more replies)
  0 siblings, 6 replies; 73+ messages in thread
From: Alan Cox @ 2002-01-31 23:24 UTC (permalink / raw)
  To: David S. Miller
  Cc: vandrove, torvalds, garzik, linux-kernel, paulus, davidm, ralf

> As a side note, this thing is so tiny (less than 4K on sparc64!) so
> why don't we just include it unconditionally instead of having all
> of this "turn it on for these drivers" stuff?

Because 100 4K drivers suddenly becomes 0.5Mb. There are those of us trying
to stuff Linux into embedded devices who if anything want more configuration
options not people taking stuff out.

What I'd much rather see if this is an issue is:

bool	'Do you want to customise for a very small system' 

which auto enables all the random small stuff if you say no, and goes
much deeper into options if you say yes.

Alan

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:24 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
  2002-01-31 23:21   ` Arnaldo Carvalho de Melo
@ 2002-01-31 23:43   ` Jeff Garzik
  2002-01-31 23:45   ` David S. Miller
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 73+ messages in thread
From: Jeff Garzik @ 2002-01-31 23:43 UTC (permalink / raw)
  To: Alan Cox
  Cc: David S. Miller, vandrove, torvalds, linux-kernel, paulus, davidm,
	ralf

On Thu, Jan 31, 2002 at 11:24:10PM +0000, Alan Cox wrote:
> What I'd much rather see if this is an issue is:
> 
> bool	'Do you want to customise for a very small system' 
> 
> which auto enables all the random small stuff if you say no, and goes
> much deeper into options if you say yes.

CONFIG_SMALL or similar would indeed be nice...

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:24 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
  2002-01-31 23:21   ` Arnaldo Carvalho de Melo
  2002-01-31 23:43   ` Jeff Garzik
@ 2002-01-31 23:45   ` David S. Miller
  2002-02-01  0:32     ` Alan Cox
  2002-02-01 10:07     ` Horst von Brand
  2002-02-01  8:14   ` David Woodhouse
                     ` (2 subsequent siblings)
  5 siblings, 2 replies; 73+ messages in thread
From: David S. Miller @ 2002-01-31 23:45 UTC (permalink / raw)
  To: alan; +Cc: vandrove, torvalds, garzik, linux-kernel, paulus, davidm, ralf

   From: Alan Cox <alan@lxorguk.ukuu.org.uk>
   Date: Thu, 31 Jan 2002 23:24:10 +0000 (GMT)

   > As a side note, this thing is so tiny (less than 4K on sparc64!) so
   > why don't we just include it unconditionally instead of having all
   > of this "turn it on for these drivers" stuff?
   
   Because 100 4K drivers suddenly becomes 0.5Mb.

However this isn't a driver, the crc library stuff is more akin to
"strlen()".  Are you suggesting to provide a CONFIG_STRINGOPS=n
too?  I wish you luck building that kernel :-)



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  0:42 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
@ 2002-02-01  0:30   ` David S. Miller
  2002-02-01  3:46     ` Jeff Garzik
                       ` (3 more replies)
  0 siblings, 4 replies; 73+ messages in thread
From: David S. Miller @ 2002-02-01  0:30 UTC (permalink / raw)
  To: alan; +Cc: vandrove, torvalds, garzik, linux-kernel, paulus, davidm, ralf

   From: Alan Cox <alan@lxorguk.ukuu.org.uk>
   Date: Fri, 1 Feb 2002 00:42:44 +0000 (GMT)
   
   I'd like to eliminate lots of the magic weird cases in Config.in too - but
   by making the language express it. Something like
   
   tristate_orif "blah" CONFIG_FOO $CONFIG_SMALL
   
This doesn't solve the CRC32 case.  What if you want
CONFIG_SMALL, yet some net driver that needs the crc32
routines?

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:45   ` David S. Miller
@ 2002-02-01  0:32     ` Alan Cox
  2002-02-01 10:07     ` Horst von Brand
  1 sibling, 0 replies; 73+ messages in thread
From: Alan Cox @ 2002-02-01  0:32 UTC (permalink / raw)
  To: David S. Miller
  Cc: alan, vandrove, torvalds, garzik, linux-kernel, paulus, davidm,
	ralf

>    Because 100 4K drivers suddenly becomes 0.5Mb.
> 
> However this isn't a driver, the crc library stuff is more akin to
> "strlen()".  Are you suggesting to provide a CONFIG_STRINGOPS=n
> too?  I wish you luck building that kernel :-)

For a large number of systems you don't need the CRC library. There are no
systems where you don't need memcpy, so your comparison is stupid to say
the least.

"Gee making this link is hard" is not a good reason to simplify the
config file, its a good reason to simplify the make file system

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
       [not found] <20020131.162549.74750188.davem@redhat.com>
@ 2002-02-01  0:42 ` Alan Cox
  2002-02-01  0:30   ` David S. Miller
  0 siblings, 1 reply; 73+ messages in thread
From: Alan Cox @ 2002-02-01  0:42 UTC (permalink / raw)
  To: David S. Miller
  Cc: alan, vandrove, torvalds, garzik, linux-kernel, paulus, davidm,
	ralf

> What I did propose was to eliminate the Config.in special casings all
> over the place to turn this stuff on.  It's just a wart when I look at
> it.  But you don't seem to like that idea so I'll drop it.

I'd like to eliminate lots of the magic weird cases in Config.in too - but
by making the language express it. Something like

tristate_orif "blah" CONFIG_FOO $CONFIG_SMALL


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  0:30   ` David S. Miller
@ 2002-02-01  3:46     ` Jeff Garzik
  2002-02-01  4:25       ` David S. Miller
  2002-02-01  4:18     ` H. Peter Anvin
                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 73+ messages in thread
From: Jeff Garzik @ 2002-02-01  3:46 UTC (permalink / raw)
  To: David S. Miller
  Cc: alan, vandrove, torvalds, linux-kernel, paulus, davidm, ralf

On Thu, Jan 31, 2002 at 04:30:54PM -0800, David S. Miller wrote:
>    From: Alan Cox <alan@lxorguk.ukuu.org.uk>
>    Date: Fri, 1 Feb 2002 00:42:44 +0000 (GMT)
>    
>    I'd like to eliminate lots of the magic weird cases in Config.in too - but
>    by making the language express it. Something like
>    
>    tristate_orif "blah" CONFIG_FOO $CONFIG_SMALL
>    
> This doesn't solve the CRC32 case.  What if you want
> CONFIG_SMALL, yet some net driver that needs the crc32
> routines?

Maybe not in this hypothetical future situation, but currently makefile
magic was added for crc32 specifically to ensure that it is linked
in when needed... even when CONFIG_CRC32=n.

The Config.in for crc32 only exists for the case where no driver in the
built kernel uses it... but a 3rd party module might want it.

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  0:30   ` David S. Miller
  2002-02-01  3:46     ` Jeff Garzik
@ 2002-02-01  4:18     ` H. Peter Anvin
  2002-02-01  4:35       ` Jeff Garzik
  2002-02-01 15:19     ` Alan Cox
  2002-02-01 19:37     ` Rob Landley
  3 siblings, 1 reply; 73+ messages in thread
From: H. Peter Anvin @ 2002-02-01  4:18 UTC (permalink / raw)
  To: linux-kernel

Followup to:  <20020131.163054.41634626.davem@redhat.com>
By author:    "David S. Miller" <davem@redhat.com>
In newsgroup: linux.dev.kernel
>    
>    tristate_orif "blah" CONFIG_FOO $CONFIG_SMALL
>    
> This doesn't solve the CRC32 case.  What if you want
> CONFIG_SMALL, yet some net driver that needs the crc32
> routines?
> 

We could do it something like what I did with inflate_fs -- build it
as a module if the kernel proper doesn't need it (and modules are
enabled.)

It *does* mean the configure rules need to contain these dependencies,
though.

crc32 is an interesting case... you can create code to make the tables
with a very small amount of code.  This saves space on disk, but not
in memory; in fact, if you can't jettison this code you lose in
memory...

	-hpa
-- 
<hpa@transmeta.com> at work, <hpa@zytor.com> in private!
"Unix gives you enough rope to shoot yourself in the foot."
http://www.zytor.com/~hpa/puzzle.txt	<amsp@zytor.com>

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  3:46     ` Jeff Garzik
@ 2002-02-01  4:25       ` David S. Miller
  2002-02-01  4:48         ` Jeff Garzik
  2002-02-01  5:10         ` Keith Owens
  0 siblings, 2 replies; 73+ messages in thread
From: David S. Miller @ 2002-02-01  4:25 UTC (permalink / raw)
  To: garzik; +Cc: alan, vandrove, torvalds, linux-kernel, paulus, davidm, ralf

   From: Jeff Garzik <garzik@havoc.gtf.org>
   Date: Thu, 31 Jan 2002 22:46:35 -0500
   
   Maybe not in this hypothetical future situation, but currently makefile
   magic was added for crc32 specifically to ensure that it is linked
   in when needed... even when CONFIG_CRC32=n.
   
   The Config.in for crc32 only exists for the case where no driver in the
   built kernel uses it... but a 3rd party module might want it.
   
My point is this: Having to say something like "CONFIG_INEED_CRC32"
for each driver that needs it is just plain stupid and a total eye
sore.

It would be really great if, some day, you just add your source
file(s) to drivers/net and that is the only thing you ever touch.  You
DO NOT touch Makefiles, you DO NOT touch Config.in files, you DO NOT
add Config.help entries.

The Makefile rules are auto-generated from keys in the *.c file(s), as
are the Config.in and help entries.  Ie. cp driver.[ch]
linux/drivers/net and then simply rebuild the tree.

Think of what kind of pains this would save from a maintainership
point of view.  When multiple new drivers are added at once we run
into all kinds of conflict issues today, whereas my scheme would do
away with that for all cases except totally new subsystems. (but I
think that could be automated in a similar fashion as well)

I have this feeling Keith Owens is going to scream "the new build
system DOES EXACTLY THAT!"  If so, that's fscking great. :-)

That is the kind of direction I'd like to see things going in.  The
lib config thing checking "if LANCE or 8130TOO or ... then force CRC32
on", on the other hand, is just garbage.  It is rediculious to expect
J. Random driver author to know to put junk into weird places like
that just to get at the crc32 routines.

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  4:18     ` H. Peter Anvin
@ 2002-02-01  4:35       ` Jeff Garzik
  0 siblings, 0 replies; 73+ messages in thread
From: Jeff Garzik @ 2002-02-01  4:35 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: linux-kernel

On Thu, Jan 31, 2002 at 08:18:01PM -0800, H. Peter Anvin wrote:
> It *does* mean the configure rules need to contain these dependencies,
> though.

No.  The Makefile not configure needs to mention these dependencies.

Look at how crc32 is -really- included in the kernel.

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  4:25       ` David S. Miller
@ 2002-02-01  4:48         ` Jeff Garzik
  2002-02-01  5:59           ` David S. Miller
  2002-02-01  5:10         ` Keith Owens
  1 sibling, 1 reply; 73+ messages in thread
From: Jeff Garzik @ 2002-02-01  4:48 UTC (permalink / raw)
  To: David S. Miller
  Cc: alan, vandrove, torvalds, linux-kernel, paulus, davidm, ralf

On Thu, Jan 31, 2002 at 08:25:09PM -0800, David S. Miller wrote:
>    From: Jeff Garzik <garzik@havoc.gtf.org>
>    Date: Thu, 31 Jan 2002 22:46:35 -0500
>    
>    Maybe not in this hypothetical future situation, but currently makefile
>    magic was added for crc32 specifically to ensure that it is linked
>    in when needed... even when CONFIG_CRC32=n.
>    
>    The Config.in for crc32 only exists for the case where no driver in the
>    built kernel uses it... but a 3rd party module might want it.
>    
> My point is this: Having to say something like "CONFIG_INEED_CRC32"
> for each driver that needs it is just plain stupid and a total eye
> sore.

I agree.

This is -not- the situation now, and it will never be the situation.

Did you read drivers/net/Makefile.lib ?

Another example, take a look at drivers/video/Config.in.  We actually do
not need those hideously long if statements "if foofb or barfb or bazfb"...
Makefile rules clean that shit up nicely.


> It would be really great if, some day, you just add your source
> file(s) to drivers/net and that is the only thing you ever touch.  You
> DO NOT touch Makefiles, you DO NOT touch Config.in files, you DO NOT
> add Config.help entries.

You are preaching to the choir.  ;-)


> The Makefile rules are auto-generated from keys in the *.c file(s), as
> are the Config.in and help entries.  Ie. cp driver.[ch]
> linux/drivers/net and then simply rebuild the tree.

Close...  Check out this thread from December.  I agree with Linus
we need metadata files (driver.conf), not yanking all that info out
of the source code.

http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.3/0969.html
	and
http://www.uwsg.iu.edu/hypermail/linux/kernel/0112.3/0801.html

To sum, Makefile rules are better than Config.in garbage because it can
be far more modular, and more resistant to breakage.  But, for the
longer term, we want 8139too.conf and lance.conf and...

Regards,

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  4:25       ` David S. Miller
  2002-02-01  4:48         ` Jeff Garzik
@ 2002-02-01  5:10         ` Keith Owens
  2002-02-01  5:12           ` Jeff Garzik
  2002-02-01  6:01           ` David S. Miller
  1 sibling, 2 replies; 73+ messages in thread
From: Keith Owens @ 2002-02-01  5:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: garzik, alan, vandrove, torvalds, linux-kernel, paulus, davidm,
	ralf

On Thu, 31 Jan 2002 20:25:09 -0800 (PST), 
"David S. Miller" <davem@redhat.com> wrote:
>It would be really great if, some day, you just add your source
>file(s) to drivers/net and that is the only thing you ever touch.  You
>DO NOT touch Makefiles, you DO NOT touch Config.in files, you DO NOT
>add Config.help entries.
>...
>I have this feeling Keith Owens is going to scream "the new build
>system DOES EXACTLY THAT!"  If so, that's fscking great. :-)

Close but not quite.  I would love to do exactly that and remove all
the monolithic files like Configure.*, Config.in and Makefile.  But I
can't.

The only thing stopping me writing a simple "install this source and
the kernel detects it" model is initialization order, module_init ->
.text.init.  The initialization order is controlled by the order of
entries in Makefiles and subdirs entries between Makefiles.  That
sucks, as the recent problems with crc32.o have shown.

Two years ago I suggested breaking the implicit nexus between Makefile
order and initialization order, by adding new directives to explicitly
define initialization order - where required.  For example, group
memory must initialize before group network, within group network
driver ne2000 must initialize before driver eepro100.

As long as Makefiles control initialization order, you need monolithic
Makefiles.  Adding another layer to say which order the make entries
for each source are to be combined just compounds the problem.  Let me
separate the initialization order from Makefiles and I will happily
give you "add a source and kbuild autobuilds it" model.

Why can't I do it?  Linus wants the current method, where monolithic
Makefiles control initialization order.
http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg10645.html


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  5:10         ` Keith Owens
@ 2002-02-01  5:12           ` Jeff Garzik
  2002-02-01  5:18             ` Keith Owens
  2002-02-01  6:01           ` David S. Miller
  1 sibling, 1 reply; 73+ messages in thread
From: Jeff Garzik @ 2002-02-01  5:12 UTC (permalink / raw)
  To: Keith Owens
  Cc: David S. Miller, alan, vandrove, torvalds, linux-kernel, paulus,
	davidm, ralf

On Fri, Feb 01, 2002 at 04:10:13PM +1100, Keith Owens wrote:
> Why can't I do it?  Linus wants the current method, where monolithic
> Makefiles control initialization order.

Wrong, we have multi-level initcalls now.

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  5:12           ` Jeff Garzik
@ 2002-02-01  5:18             ` Keith Owens
  2002-02-01 13:42               ` Horst von Brand
  0 siblings, 1 reply; 73+ messages in thread
From: Keith Owens @ 2002-02-01  5:18 UTC (permalink / raw)
  To: Jeff Garzik
  Cc: David S. Miller, alan, vandrove, torvalds, linux-kernel, paulus,
	davidm, ralf

On Fri, 1 Feb 2002 00:12:42 -0500, 
Jeff Garzik <garzik@havoc.gtf.org> wrote:
>On Fri, Feb 01, 2002 at 04:10:13PM +1100, Keith Owens wrote:
>> Why can't I do it?  Linus wants the current method, where monolithic
>> Makefiles control initialization order.
>
>Wrong, we have multi-level initcalls now.

I know, it makes it even harder to see what the initialization order
is.  Some are controlled by the Makefile/subdirs order, some by special
calls in the code.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  4:48         ` Jeff Garzik
@ 2002-02-01  5:59           ` David S. Miller
  0 siblings, 0 replies; 73+ messages in thread
From: David S. Miller @ 2002-02-01  5:59 UTC (permalink / raw)
  To: garzik; +Cc: alan, vandrove, torvalds, linux-kernel, paulus, davidm, ralf

   From: Jeff Garzik <garzik@havoc.gtf.org>
   Date: Thu, 31 Jan 2002 23:48:45 -0500

   I agree with Linus we need metadata files (driver.conf), not
   yanking all that info out of the source code.

I'm perfectly fine with this too.

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  5:10         ` Keith Owens
  2002-02-01  5:12           ` Jeff Garzik
@ 2002-02-01  6:01           ` David S. Miller
  2002-02-01  6:11             ` Keith Owens
  1 sibling, 1 reply; 73+ messages in thread
From: David S. Miller @ 2002-02-01  6:01 UTC (permalink / raw)
  To: kaos; +Cc: garzik, alan, vandrove, torvalds, linux-kernel, paulus, davidm,
	ralf

   From: Keith Owens <kaos@ocs.com.au>
   Date: Fri, 01 Feb 2002 16:10:13 +1100
   
   As long as Makefiles control initialization order, you need monolithic
   Makefiles.

With the current 2.5.x scheme, you can put your init into the
appropriate group.  Makefiles only control init order within
the groups.

I actually like this solution a lot.

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  6:01           ` David S. Miller
@ 2002-02-01  6:11             ` Keith Owens
  2002-02-01  6:26               ` David S. Miller
  0 siblings, 1 reply; 73+ messages in thread
From: Keith Owens @ 2002-02-01  6:11 UTC (permalink / raw)
  To: David S. Miller
  Cc: garzik, alan, vandrove, torvalds, linux-kernel, paulus, davidm,
	ralf

On Thu, 31 Jan 2002 22:01:21 -0800 (PST), 
"David S. Miller" <davem@redhat.com> wrote:
>   From: Keith Owens <kaos@ocs.com.au>
>   Date: Fri, 01 Feb 2002 16:10:13 +1100
>   
>   As long as Makefiles control initialization order, you need monolithic
>   Makefiles.
>
>With the current 2.5.x scheme, you can put your init into the
>appropriate group.  Makefiles only control init order within
>the groups.

But you still need monolithic makefiles.

They also control order across directories as well, including up one,
down two constructs like this.

obj-$(CONFIG_SCSI_AHA1740)      += aha1740.o
ifeq ($(CONFIG_SCSI_AIC7XXX),y)
obj-$(CONFIG_SCSI_AIC7XXX)      += aic7xxx/aic7xxx_drv.o
endif
obj-$(CONFIG_SCSI_AIC7XXX_OLD)  += aic7xxx_old.o

and the abomination

obj-$(CONFIG_SCSI_LASI700)      += lasi700.o 53c700.o

subdir-$(CONFIG_ARCH_ACORN)     += ../acorn/scsi
obj-$(CONFIG_ARCH_ACORN)        += ../acorn/scsi/acorn-scsi.o

obj-$(CONFIG_CHR_DEV_ST)        += st.o

BTW, the grouped initcalls in the code are exactly what I proposed in
October 2000 and was shouted down.  Except my proposal would have put
all the initialization order information together, instead of putting
some information in the source and some in the Makefiles.  It is now
even harder to see the precise order, you have to check which type of
initcall each source is using in addition to scanning the makefile
order.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  6:11             ` Keith Owens
@ 2002-02-01  6:26               ` David S. Miller
  2002-02-01  6:43                 ` Keith Owens
  2002-02-01 15:03                 ` Alan Cox
  0 siblings, 2 replies; 73+ messages in thread
From: David S. Miller @ 2002-02-01  6:26 UTC (permalink / raw)
  To: kaos; +Cc: garzik, alan, vandrove, torvalds, linux-kernel, paulus, davidm,
	ralf

   From: Keith Owens <kaos@ocs.com.au>
   Date: Fri, 01 Feb 2002 17:11:05 +1100
   
   Except my proposal would have put all the initialization order
   information together, instead of putting some information in the
   source and some in the Makefiles.

NONE OF IT IS IN THE MAKEFILES!  Please change your perspective
to see this!

If you have a dependency concern, you put yourself in the
right initcall group.  You don't depend ever on the order within the
group, thats the whole idea.  You can't depend on that, so you must
group things correctly.

Again, if you have some dependency within the initcall group, then
you're grouping things incorrectly.  If the grouping is selected
properly, you could link in the total opposite order all the objects
and it still would work out fine.

I think your complaints are for problems that don't really exist.

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  6:26               ` David S. Miller
@ 2002-02-01  6:43                 ` Keith Owens
  2002-02-01 15:03                 ` Alan Cox
  1 sibling, 0 replies; 73+ messages in thread
From: Keith Owens @ 2002-02-01  6:43 UTC (permalink / raw)
  To: David S. Miller
  Cc: garzik, alan, vandrove, torvalds, linux-kernel, paulus, davidm,
	ralf

On Thu, 31 Jan 2002 22:26:43 -0800 (PST), 
"David S. Miller" <davem@redhat.com> wrote:
>If you have a dependency concern, you put yourself in the
>right initcall group.  You don't depend ever on the order within the
>group, thats the whole idea.  You can't depend on that, so you must
>group things correctly.

Again this is exactly what I argued back in 2000.  I have long held
that the kernel link order is over defined where it should be fuzzy.
Defining an order between groups but not within groups is exactly what
I wanted but I was told that the initialization order must be
explicitly and fully specified for the entire kernel.  Nice to see that
I have been proved right, pity it took this long.  C'est la vie.

The Makefiles still control order within the .text.init section
(__init, module_init).  Many drivers depend on the Makefile getting
that order correct, otherwise probes stuff up.  But which entries are
order sensitive and which ones are from a developer picking a random
place to insert obj-$(CONFIG) is anyone's guess.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:24 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
                     ` (2 preceding siblings ...)
  2002-01-31 23:45   ` David S. Miller
@ 2002-02-01  8:14   ` David Woodhouse
  2002-02-02  2:12   ` Chris Wedgwood
  2002-02-03  4:14   ` Eric W. Biederman
  5 siblings, 0 replies; 73+ messages in thread
From: David Woodhouse @ 2002-02-01  8:14 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Alan Cox, David S. Miller, vandrove, torvalds, garzik,
	linux-kernel, paulus, davidm, ralf


acme@conectiva.com.br said:
>  heh, after I've read that you managed to boot 2.4 + rmap in a machine
> with just 4 MB after tweaking some table sizes I thought about
> devoting some time to identify those tables and making them options in
> make *config, with even a nice CONFIG_TINY, like you said 8)

> I'll eventually do this, and I'd appreciate if people send me
> suggestions of tables/data structures that can be trimmed/reduced.
> Yeah, I'll take a look at the .config files used in the embedded
> distros. 

CONFIG_BLK_DEV=n should allow you to trim a lot of cruft that most of my 
embedded boxen never use.


--
dwmw2



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:45   ` David S. Miller
  2002-02-01  0:32     ` Alan Cox
@ 2002-02-01 10:07     ` Horst von Brand
  2002-02-01 10:28       ` Keith Owens
  1 sibling, 1 reply; 73+ messages in thread
From: Horst von Brand @ 2002-02-01 10:07 UTC (permalink / raw)
  To: David S. Miller; +Cc: alan, linux-kernel

"David S. Miller" <davem@redhat.com> said:

[...]

> However this isn't a driver, the crc library stuff is more akin to
> "strlen()".  Are you suggesting to provide a CONFIG_STRINGOPS=n
> too?  I wish you luck building that kernel :-)

libc.a was invented precisely to handle such stuff automatically when
linking... if it doesn't work, it should be fixed. I.e., making .a --> .o
is a step in the wrong direction IMVHO.
-- 
Horst von Brand			     http://counter.li.org # 22616

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 10:07     ` Horst von Brand
@ 2002-02-01 10:28       ` Keith Owens
  2002-02-01 11:03         ` David S. Miller
  0 siblings, 1 reply; 73+ messages in thread
From: Keith Owens @ 2002-02-01 10:28 UTC (permalink / raw)
  To: Horst von Brand; +Cc: David S. Miller, alan, linux-kernel

On Fri, 01 Feb 2002 11:07:42 +0100, 
Horst von Brand <brand@jupiter.cs.uni-dortmund.de> wrote:
>"David S. Miller" <davem@redhat.com> said:
>> However this isn't a driver, the crc library stuff is more akin to
>> "strlen()".  Are you suggesting to provide a CONFIG_STRINGOPS=n
>> too?  I wish you luck building that kernel :-)
>
>libc.a was invented precisely to handle such stuff automatically when
>linking... if it doesn't work, it should be fixed. I.e., making .a --> .o
>is a step in the wrong direction IMVHO.

There are two contradictory requirements.  crc32.o must only be linked
if anything in the kernel needs it, linker puts crc32.o after the code
that uses it.  crc32.o must be linked before anything that uses it so
the crc32 __init code can initialize first.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 10:28       ` Keith Owens
@ 2002-02-01 11:03         ` David S. Miller
  2002-02-01 11:25           ` Keith Owens
  0 siblings, 1 reply; 73+ messages in thread
From: David S. Miller @ 2002-02-01 11:03 UTC (permalink / raw)
  To: kaos; +Cc: brand, alan, linux-kernel

   From: Keith Owens <kaos@ocs.com.au>
   Date: Fri, 01 Feb 2002 21:28:52 +1100

   On Fri, 01 Feb 2002 11:07:42 +0100, 
   Horst von Brand <brand@jupiter.cs.uni-dortmund.de> wrote:
   >libc.a was invented precisely to handle such stuff automatically when
   >linking... if it doesn't work, it should be fixed. I.e., making .a --> .o
   >is a step in the wrong direction IMVHO.
   
   There are two contradictory requirements.  crc32.o must only be linked
   if anything in the kernel needs it, linker puts crc32.o after the code
   that uses it.  crc32.o must be linked before anything that uses it so
   the crc32 __init code can initialize first.
   
Horst isn't even talking about the initcall issues, he's talking about
how linking with libc works in that it only brings in the routines you
actually reference.

Will you get over the initcall thing already, you must be dreaming
about it at this point. I mean really, just GET OVER IT. :-)

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 11:03         ` David S. Miller
@ 2002-02-01 11:25           ` Keith Owens
  2002-02-01 14:56             ` Jeff Garzik
  0 siblings, 1 reply; 73+ messages in thread
From: Keith Owens @ 2002-02-01 11:25 UTC (permalink / raw)
  To: David S. Miller; +Cc: linux-kernel

On Fri, 01 Feb 2002 03:03:45 -0800 (PST), 
"David S. Miller" <davem@redhat.com> wrote:
>   From: Keith Owens <kaos@ocs.com.au>
>   Date: Fri, 01 Feb 2002 21:28:52 +1100
>
>   On Fri, 01 Feb 2002 11:07:42 +0100, 
>   Horst von Brand <brand@jupiter.cs.uni-dortmund.de> wrote:
>   >libc.a was invented precisely to handle such stuff automatically when
>   >linking... if it doesn't work, it should be fixed. I.e., making .a --> .o
>   >is a step in the wrong direction IMVHO.
>   
>   There are two contradictory requirements.  crc32.o must only be linked
>   if anything in the kernel needs it, linker puts crc32.o after the code
>   that uses it.  crc32.o must be linked before anything that uses it so
>   the crc32 __init code can initialize first.
>   
>Horst isn't even talking about the initcall issues, he's talking about
>how linking with libc works in that it only brings in the routines you
>actually reference.

Go back and read the entire thread Dave.  It started with

http://www.lib.uaa.alaska.edu/linux-kernel/archive/2002-Week-04/1235.html

  "Besides problem with segfaulting crc32 (it is initialized after
  net/ipv4/ipconfig.c due to lib/lib.a being a library... I had to
  hardcode lib/crc32.o before --start-group in main Makefile, but it is
  another story)"

http://www.lib.uaa.alaska.edu/linux-kernel/archive/2002-Week-04/1384.html

  "included patch (for 2.5.3) fixes problems with late initialization
  of lib/crc32.o - as it was part of .a library file, it was picked by
  link process AFTER at least one .o file required it - for example
  when ipv4 autoconfiguration file needed it. So crc32's initalization
  function was invoked after ipconfig's one - and it crashed inside of
  ipconfig due to this problem."

Horst was not talking about initcall but his suggestion of using lib.a
for crc32.o had already been proven not to work, because of the
(surprise) initcall problem.  I was merely pointing out to Horst why
lib.a was not working and why other options had to be considered.

>Will you get over the initcall thing already, you must be dreaming
>about it at this point. I mean really, just GET OVER IT. :-)

Nightmare is more like it.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  5:18             ` Keith Owens
@ 2002-02-01 13:42               ` Horst von Brand
  2002-02-03 23:34                 ` Keith Owens
  0 siblings, 1 reply; 73+ messages in thread
From: Horst von Brand @ 2002-02-01 13:42 UTC (permalink / raw)
  To: Keith Owens; +Cc: linux-kernel

Keith Owens <kaos@ocs.com.au> said:

[...]

> I know, it makes it even harder to see what the initialization order
> is.  Some are controlled by the Makefile/subdirs order, some by special
> calls in the code.

Just to repeat myself: This is clearly a problem for tsort(1): Give
restrictions of the form "This has to come after that" (perhaps a special
comment at the start of the file containing the init function?), tsort that
and pick the order out of the result. Should be a few lines of script. No
central repository for the dependencies, no messing around with half the
world to fix dependencies. Plus they become explicit, which they aren't
today.
-- 
Horst von Brand			     http://counter.li.org # 22616

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 15:03                 ` Alan Cox
@ 2002-02-01 14:55                   ` Jeff Garzik
  2002-02-01 15:12                     ` Petr Vandrovec
                                       ` (2 more replies)
  0 siblings, 3 replies; 73+ messages in thread
From: Jeff Garzik @ 2002-02-01 14:55 UTC (permalink / raw)
  To: Alan Cox
  Cc: David S. Miller, kaos, vandrove, torvalds, linux-kernel, paulus,
	davidm, ralf

On Fri, Feb 01, 2002 at 03:03:13PM +0000, Alan Cox wrote:
> > If you have a dependency concern, you put yourself in the
> > right initcall group.  You don't depend ever on the order within the
> > group, thats the whole idea.  You can't depend on that, so you must
> > group things correctly.
> 
> This was proposed right back at the start. Linus point blank vetoed it.

My ideal would be to express dependencies in driver.conf (when that is
implemented), and that will in turn affect the link order by
autogenerating part of vmlinux.lds.  Until then, initcall groups are
fine with me...

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 11:25           ` Keith Owens
@ 2002-02-01 14:56             ` Jeff Garzik
  0 siblings, 0 replies; 73+ messages in thread
From: Jeff Garzik @ 2002-02-01 14:56 UTC (permalink / raw)
  To: Keith Owens; +Cc: David S. Miller, linux-kernel

On Fri, Feb 01, 2002 at 10:25:20PM +1100, Keith Owens wrote:
> On Fri, 01 Feb 2002 03:03:45 -0800 (PST), 
> "David S. Miller" <davem@redhat.com> wrote:
> >Will you get over the initcall thing already, you must be dreaming
> >about it at this point. I mean really, just GET OVER IT. :-)
> 
> Nightmare is more like it.

Exaggeration is more like it :)

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  6:26               ` David S. Miller
  2002-02-01  6:43                 ` Keith Owens
@ 2002-02-01 15:03                 ` Alan Cox
  2002-02-01 14:55                   ` Jeff Garzik
  1 sibling, 1 reply; 73+ messages in thread
From: Alan Cox @ 2002-02-01 15:03 UTC (permalink / raw)
  To: David S. Miller
  Cc: kaos, garzik, alan, vandrove, torvalds, linux-kernel, paulus,
	davidm, ralf

> If you have a dependency concern, you put yourself in the
> right initcall group.  You don't depend ever on the order within the
> group, thats the whole idea.  You can't depend on that, so you must
> group things correctly.

This was proposed right back at the start. Linus point blank vetoed it.

Alan

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 14:55                   ` Jeff Garzik
@ 2002-02-01 15:12                     ` Petr Vandrovec
  2002-02-01 15:29                       ` VESA Anybody out there Martin Dalecki
  2002-02-01 16:08                     ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does David Woodhouse
  2002-02-04 13:24                     ` Horst von Brand
  2 siblings, 1 reply; 73+ messages in thread
From: Petr Vandrovec @ 2002-02-01 15:12 UTC (permalink / raw)
  To: torvalds
  Cc: Alan Cox, David S. Miller, kaos, linux-kernel, paulus, davidm,
	ralf, garzik

On Fri, Feb 01, 2002 at 09:55:10AM -0500, Jeff Garzik wrote:
> On Fri, Feb 01, 2002 at 03:03:13PM +0000, Alan Cox wrote:
> > > If you have a dependency concern, you put yourself in the
> > > right initcall group.  You don't depend ever on the order within the
> > > group, thats the whole idea.  You can't depend on that, so you must
> > > group things correctly.
> > 
> > This was proposed right back at the start. Linus point blank vetoed it.

Hi Linus,
  I've found that multiple level initcalls went into kernel
behind my back, so you can throw away my yesterday patch
which converted lib.a => lib.o, and apply this one.

  I decided to use fs_initcall level, as nobody is using this
yet. If jffs2 will get initialized by fs_initcall, we'll have
to switch init_crc32 from fs_initcall to arch_initcall or
even sooner - crc32 initialization needs only working
kmalloc, nothing else (and it could use static buffer happilly,
as zeroes compress very good), so subsys_initcall could work
too.

  This patch does NOT solve problem with useless option CRC32 in
Config.in, as we compile crc32.o, but nobody picks it up for kernel
link. It is impossible to have .a for this directory unless we'll
start using --undefined= linker option to bring crc32 into final
image.

  Best is probably applying this over lib.a=>lib.o patch. Then
ordering is ensured by initcall level, and not by Makefiles,
and in addition CRC32 makefile option really does something...
					Best regards,
						Petr Vandrovec
						vandrove@vc.cvut.cz

[Patch tested with both lib.a and lib.o - it boots correctly
in both cases]


diff -urdN linux/lib/crc32.c linux/lib/crc32.c
--- linux/lib/crc32.c	Tue Jan 15 19:08:05 2002
+++ linux/lib/crc32.c	Fri Feb  1 14:54:28 2002
@@ -564,7 +564,7 @@
 	crc32cleanup_be();
 }
 
-module_init(init_crc32);
+fs_initcall(init_crc32);
 module_exit(cleanup_crc32);
 
 EXPORT_SYMBOL(crc32_le);

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  0:30   ` David S. Miller
  2002-02-01  3:46     ` Jeff Garzik
  2002-02-01  4:18     ` H. Peter Anvin
@ 2002-02-01 15:19     ` Alan Cox
  2002-02-01 19:37     ` Rob Landley
  3 siblings, 0 replies; 73+ messages in thread
From: Alan Cox @ 2002-02-01 15:19 UTC (permalink / raw)
  To: David S. Miller
  Cc: alan, vandrove, torvalds, garzik, linux-kernel, paulus, davidm,
	ralf

>    tristate_orif "blah" CONFIG_FOO $CONFIG_SMALL
>    
> This doesn't solve the CRC32 case.  What if you want
> CONFIG_SMALL, yet some net driver that needs the crc32
> routines?

The crc32 dependancy deduction is a seperate problem to asking excessive
questions. That is down to the makefiles. If its hard to express then
presumably Rules.make isnt yet perfect.

Does kbuild make it all simpler ?

^ permalink raw reply	[flat|nested] 73+ messages in thread

* VESA Anybody out there
  2002-02-01 15:12                     ` Petr Vandrovec
@ 2002-02-01 15:29                       ` Martin Dalecki
  2002-02-01 15:42                         ` Davidovac Zoran
                                           ` (3 more replies)
  0 siblings, 4 replies; 73+ messages in thread
From: Martin Dalecki @ 2002-02-01 15:29 UTC (permalink / raw)
  To: linux-kernel

Is there actually anybody out there for whoom the vga=ask kernelparamter
followed by a mode scan actually works? For me personally I never 
encountered
*any* single one computer wher ethis wouldn't hang the system entierly, so
I wonder whatever the wholesale option ain't borken?



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 15:29                       ` VESA Anybody out there Martin Dalecki
@ 2002-02-01 15:42                         ` Davidovac Zoran
  2002-02-01 16:21                           ` Martin Dalecki
  2002-02-01 16:37                           ` Anton Altaparmakov
  2002-02-01 16:33                         ` Petr Baudis
                                           ` (2 subsequent siblings)
  3 siblings, 2 replies; 73+ messages in thread
From: Davidovac Zoran @ 2002-02-01 15:42 UTC (permalink / raw)
  To: Martin Dalecki; +Cc: linux-kernel

kernel 2.2.X ati rage,ati radeon vga=ask works (as vesa)
kernel 2.4.X 800x600 mode didn't tested vga=ask

regards,

 Zoran

On Fri, 1 Feb 2002, Martin Dalecki wrote:

> Date: Fri, 01 Feb 2002 16:29:39 +0100
> From: Martin Dalecki <dalecki@evision-ventures.com>
> To: linux-kernel@vger.kernel.org
> Subject: VESA Anybody out there
>
> Is there actually anybody out there for whoom the vga=ask kernelparamter
> followed by a mode scan actually works? For me personally I never
> encountered
> *any* single one computer wher ethis wouldn't hang the system entierly, so
> I wonder whatever the wholesale option ain't borken?
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 14:55                   ` Jeff Garzik
  2002-02-01 15:12                     ` Petr Vandrovec
@ 2002-02-01 16:08                     ` David Woodhouse
  2002-02-04 13:24                     ` Horst von Brand
  2 siblings, 0 replies; 73+ messages in thread
From: David Woodhouse @ 2002-02-01 16:08 UTC (permalink / raw)
  To: Petr Vandrovec
  Cc: torvalds, Alan Cox, David S. Miller, kaos, linux-kernel, paulus,
	davidm, ralf, garzik


vandrove@vc.cvut.cz said:
>   I decided to use fs_initcall level, as nobody is using this yet. If
> jffs2 will get initialized by fs_initcall, we'll have to switch
> init_crc32 from fs_initcall to arch_initcall or even sooner - crc32
> initialization needs only working kmalloc, nothing else (and it could
> use static buffer happilly, as zeroes compress very good), so
> subsys_initcall could work too. 

JFFS2 won't actually use the crc32 routines till it tries to mount a file 
system, so you shouldn't have a problem unless you try to mount the rootfs 
before init_crc32().


--
dwmw2



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 15:42                         ` Davidovac Zoran
@ 2002-02-01 16:21                           ` Martin Dalecki
  2002-02-01 16:33                             ` Thomas Capricelli
  2002-02-01 16:35                             ` Sergey S. Kostyliov
  2002-02-01 16:37                           ` Anton Altaparmakov
  1 sibling, 2 replies; 73+ messages in thread
From: Martin Dalecki @ 2002-02-01 16:21 UTC (permalink / raw)
  To: Davidovac Zoran; +Cc: linux-kernel

Davidovac Zoran wrote:

>kernel 2.2.X ati rage,ati radeon vga=ask works (as vesa)
>kernel 2.4.X 800x600 mode didn't tested vga=ask
>
I really mean the "scan" command after VGA ask.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 15:29                       ` VESA Anybody out there Martin Dalecki
  2002-02-01 15:42                         ` Davidovac Zoran
@ 2002-02-01 16:33                         ` Petr Baudis
  2002-02-01 17:45                         ` The Candyman
  2002-02-05 17:05                         ` Pavel Machek
  3 siblings, 0 replies; 73+ messages in thread
From: Petr Baudis @ 2002-02-01 16:33 UTC (permalink / raw)
  To: Martin Dalecki; +Cc: linux-kernel

Dear diary, on Fri, Feb 01, 2002 at 04:29:39PM CET, I got a letter, where
Martin Dalecki <dalecki@evision-ventures.com> told me, that...
> Is there actually anybody out there for whoom the vga=ask kernelparamter
> followed by a mode scan actually works? For me personally I never encountered
> *any* single one computer wher ethis wouldn't hang the system entierly, so I
> wonder whatever the wholesale option ain't borken?
Oh, it somewhere hangs? I never encountered *any* single one computer where
this would hang the system :-).

Trident 9440 -> 2.1.x, 2.2.x, 2.4.x -> No problem
Trident 9660 ->        2.2.x, 2.4.x -> No problem
S3 Trio3D    ->        2.2.x, 2.4.x -> No problem

Those are my home videocards, I know it works with others as well (just can't
name them just now).

-- 

				Petr "Pasky" Baudis

* UN*X programmer && admin         * IPv6 guy (XS26 co-coordinator)
* elinks maintainer                * FreeCiv AI hacker
* IRCnet local operator
.
"Something has fallen on us that falls very seldom on men; perhaps the worst
thing that can fall on them.
We have found the truth; and the truth makes no sense."
		-- Father Brown
.
Public PGP key && geekcode && homepage: http://pasky.ji.cz/~pasky/

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 16:21                           ` Martin Dalecki
@ 2002-02-01 16:33                             ` Thomas Capricelli
  2002-02-01 16:53                               ` Martin Dalecki
  2002-02-01 16:35                             ` Sergey S. Kostyliov
  1 sibling, 1 reply; 73+ messages in thread
From: Thomas Capricelli @ 2002-02-01 16:33 UTC (permalink / raw)
  To: Martin Dalecki; +Cc: linux-kernel



Do I have to understand that you're using : "vga=ask scan" ?
this can't work, cause it doesn't mean anything.

The syntax is "vga=ask" _or_ "vga=scan"

Or, if you prefer, 'ask' is a special scan code you can put, that will ask 
you (at boot time) which one you want (you'll get a list of scancode 
supported by your graphic card to choose from)


best wishes,
Thomas

On Friday 01 February 2002 17:21, Martin Dalecki wrote:
> Davidovac Zoran wrote:
> >kernel 2.2.X ati rage,ati radeon vga=ask works (as vesa)
> >kernel 2.4.X 800x600 mode didn't tested vga=ask
>
> I really mean the "scan" command after VGA ask.
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 16:21                           ` Martin Dalecki
  2002-02-01 16:33                             ` Thomas Capricelli
@ 2002-02-01 16:35                             ` Sergey S. Kostyliov
  1 sibling, 0 replies; 73+ messages in thread
From: Sergey S. Kostyliov @ 2002-02-01 16:35 UTC (permalink / raw)
  To: Martin Dalecki; +Cc: linux-kernel

1 Февраль 2002 19:21, Martin Dalecki написал:
> Davidovac Zoran wrote:
> >kernel 2.2.X ati rage,ati radeon vga=ask works (as vesa)
> >kernel 2.4.X 800x600 mode didn't tested vga=ask
>
> I really mean the "scan" command after VGA ask.
2.4.17  mga G400, i810 not problem at all

--
		Best regards,
		Sergey S. Kostyliov <rathamahata@php4.ru>

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 15:42                         ` Davidovac Zoran
  2002-02-01 16:21                           ` Martin Dalecki
@ 2002-02-01 16:37                           ` Anton Altaparmakov
  1 sibling, 0 replies; 73+ messages in thread
From: Anton Altaparmakov @ 2002-02-01 16:37 UTC (permalink / raw)
  To: Martin Dalecki; +Cc: Davidovac Zoran, linux-kernel

At 16:21 01/02/02, Martin Dalecki wrote:
>Davidovac Zoran wrote:
>
>>kernel 2.2.X ati rage,ati radeon vga=ask works (as vesa)
>>kernel 2.4.X 800x600 mode didn't tested vga=ask
>I really mean the "scan" command after VGA ask.

Works fine on all systems I have ever tried it on (so that would be various 
Matrox AGP cards and one or more of random SiS PCI card, random Trident 
ISA, random Diamond Stealth - I've been changing cards a lot in my server 
box and in my development box and am not sure on which I have used it and 
on which not...). This would be all on 2.4.x kernels by the way, haven't 
needed to use it recently.

Anton


-- 
   "I've not lost my mind. It's backed up on tape somewhere." - Unknown
-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Linux NTFS Maintainer / WWW: http://linux-ntfs.sf.net/
ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 16:33                             ` Thomas Capricelli
@ 2002-02-01 16:53                               ` Martin Dalecki
  0 siblings, 0 replies; 73+ messages in thread
From: Martin Dalecki @ 2002-02-01 16:53 UTC (permalink / raw)
  To: Thomas Capricelli; +Cc: linux-kernel

Thomas Capricelli wrote:

>
>Do I have to understand that you're using : "vga=ask scan" ?
>this can't work, cause it doesn't mean anything.
>
>The syntax is "vga=ask" _or_ "vga=scan"
>
>Or, if you prefer, 'ask' is a special scan code you can put, that will ask 
>you (at boot time) which one you want (you'll get a list of scancode 
>supported by your graphic card to choose from)
>

I use vga=ask as kernel parameter
and type scan at the dialogue, which than hangs the system *allways*.




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 15:29                       ` VESA Anybody out there Martin Dalecki
  2002-02-01 15:42                         ` Davidovac Zoran
  2002-02-01 16:33                         ` Petr Baudis
@ 2002-02-01 17:45                         ` The Candyman
  2002-02-02 13:41                           ` Andreas Happe
  2002-02-05 17:05                         ` Pavel Machek
  3 siblings, 1 reply; 73+ messages in thread
From: The Candyman @ 2002-02-01 17:45 UTC (permalink / raw)
  To: Martin Dalecki; +Cc: linux-kernel

Martin Dalecki wrote:

> Is there actually anybody out there for whoom the vga=ask kernelparamter
> followed by a mode scan actually works? For me personally I never 
> encountered
> *any* single one computer wher ethis wouldn't hang the system 
> entierly, so
> I wonder whatever the wholesale option ain't borken?

On my computers it has never been of any use, but it didn't crash. It 
only returned the normal screen modes (the text ones) and nothing else.



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01  0:30   ` David S. Miller
                       ` (2 preceding siblings ...)
  2002-02-01 15:19     ` Alan Cox
@ 2002-02-01 19:37     ` Rob Landley
  2002-02-01 19:50       ` Jeff Garzik
  3 siblings, 1 reply; 73+ messages in thread
From: Rob Landley @ 2002-02-01 19:37 UTC (permalink / raw)
  To: David S. Miller, alan; +Cc: linux-kernel

On Thursday 31 January 2002 07:30 pm, David S. Miller wrote:
>    From: Alan Cox <alan@lxorguk.ukuu.org.uk>
>    Date: Fri, 1 Feb 2002 00:42:44 +0000 (GMT)
>
>    I'd like to eliminate lots of the magic weird cases in Config.in too -
> but by making the language express it. Something like
>
>    tristate_orif "blah" CONFIG_FOO $CONFIG_SMALL
>
> This doesn't solve the CRC32 case.  What if you want
> CONFIG_SMALL, yet some net driver that needs the crc32
> routines?

I thought this was the sort of reason CML2 was invented?

Rob

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 19:37     ` Rob Landley
@ 2002-02-01 19:50       ` Jeff Garzik
  0 siblings, 0 replies; 73+ messages in thread
From: Jeff Garzik @ 2002-02-01 19:50 UTC (permalink / raw)
  To: Rob Landley; +Cc: David S. Miller, alan, linux-kernel

On Fri, Feb 01, 2002 at 02:37:30PM -0500, Rob Landley wrote:
> On Thursday 31 January 2002 07:30 pm, David S. Miller wrote:
> >    From: Alan Cox <alan@lxorguk.ukuu.org.uk>
> >    Date: Fri, 1 Feb 2002 00:42:44 +0000 (GMT)
> >
> >    I'd like to eliminate lots of the magic weird cases in Config.in too -
> > but by making the language express it. Something like
> >
> >    tristate_orif "blah" CONFIG_FOO $CONFIG_SMALL
> >
> > This doesn't solve the CRC32 case.  What if you want
> > CONFIG_SMALL, yet some net driver that needs the crc32
> > routines?
> 
> I thought this was the sort of reason CML2 was invented?

This case is handled now, CML2 is not needed for this.

RTFS

	Jeff, allowing himself to be trolled




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:24 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
                     ` (3 preceding siblings ...)
  2002-02-01  8:14   ` David Woodhouse
@ 2002-02-02  2:12   ` Chris Wedgwood
  2002-02-02  3:01     ` Andrew Morton
  2002-02-03  4:14   ` Eric W. Biederman
  5 siblings, 1 reply; 73+ messages in thread
From: Chris Wedgwood @ 2002-02-02  2:12 UTC (permalink / raw)
  To: Alan Cox
  Cc: David S. Miller, vandrove, torvalds, garzik, linux-kernel, paulus,
	davidm, ralf

On Thu, Jan 31, 2002 at 11:24:10PM +0000, Alan Cox wrote:

    Because 100 4K drivers suddenly becomes 0.5Mb. There are those of
    us trying to stuff Linux into embedded devices who if anything
    want more configuration options not people taking stuff out.

Well, I'm more or less in agreement here, especially when working with
small embedded devices which have a few (say 16 or 32) MB of RAM for
EVERYTHING, kernel, userspace AND filesystems.

However, I wonder if we can't have the linker remove unnecessary and
unreferences objects, functions and variables?

    What I'd much rather see if this is an issue is:

    bool	'Do you want to customise for a very small system'

_IF_ the linker can remove things, it would simplify this too --- we
could if a few important places produce code slightly differently to
favour speed over size and not reference various things.  Also, the
above option would turn-off inlining as that seems to makie quite a
difference at times (BTW, I'm not sure about this, but it seems gcc
and C99 don't agree with static/extern inline semantics?)



  --cw

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  2:12   ` Chris Wedgwood
@ 2002-02-02  3:01     ` Andrew Morton
  2002-02-02  7:30       ` Chris Wedgwood
  0 siblings, 1 reply; 73+ messages in thread
From: Andrew Morton @ 2002-02-02  3:01 UTC (permalink / raw)
  To: Chris Wedgwood
  Cc: Alan Cox, David S. Miller, vandrove, torvalds, garzik,
	linux-kernel, paulus, davidm, ralf

Chris Wedgwood wrote:
> 
> On Thu, Jan 31, 2002 at 11:24:10PM +0000, Alan Cox wrote:
> 
>     Because 100 4K drivers suddenly becomes 0.5Mb. There are those of
>     us trying to stuff Linux into embedded devices who if anything
>     want more configuration options not people taking stuff out.
> 
> Well, I'm more or less in agreement here, especially when working with
> small embedded devices which have a few (say 16 or 32) MB of RAM for
> EVERYTHING, kernel, userspace AND filesystems.
> 
> However, I wonder if we can't have the linker remove unnecessary and
> unreferences objects, functions and variables?

We can.  Graham Stoney had all this going against 2.2.  See

http://www.google.com/search?q=stoney+ffunction-sections&hl=en&start=10&sa=N
http://www.cs.helsinki.fi/linux/linux-kernel/Year-2000/2000-29/0415.html

>     What I'd much rather see if this is an issue is:
> 
>     bool        'Do you want to customise for a very small system'
> 
> _IF_ the linker can remove things, it would simplify this too --- we
> could if a few important places produce code slightly differently to
> favour speed over size and not reference various things.  Also, the
> above option would turn-off inlining as that seems to makie quite a
> difference at times (BTW, I'm not sure about this, but it seems gcc
> and C99 don't agree with static/extern inline semantics?)

The kernel doesn't link when you compile with -fno-inline because of all
the `extern inline' qualifiers.  These need to be converted to `static
inline'.    Jim Houston has a script which does this.  See

	http://www.uwsg.iu.edu/hypermail/linux/kernel/0201.3/0888.html

It would be rather good if we could get that script run across the
tree - no-inline has its uses at times.

-

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  3:01     ` Andrew Morton
@ 2002-02-02  7:30       ` Chris Wedgwood
  2002-02-02  7:42         ` Daniel Jacobowitz
                           ` (2 more replies)
  0 siblings, 3 replies; 73+ messages in thread
From: Chris Wedgwood @ 2002-02-02  7:30 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Alan Cox, David S. Miller, vandrove, torvalds, garzik,
	linux-kernel, paulus, davidm, ralf

On Fri, Feb 01, 2002 at 07:01:56PM -0800, Andrew Morton wrote:

    We can.  Graham Stoney had all this going against 2.2.  See

    http://www.google.com/search?q=stoney+ffunction-sections&hl=en&start=10&sa=N
    http://www.cs.helsinki.fi/linux/linux-kernel/Year-2000/2000-29/0415.html

This puts every function it's own section.  That seems not only
cumbersome to me, but also a little complex.  That said,  it may be a
good way if run every now and then to detect when cruft starts to
accumulate for any given .config and allow people to tweak things for
smaller kernels.

Is there no way to write something like:

--snip-- foo.c --snip--
void
blem()
{
}

void
bar()
{
    blem();
    return 0;
}

int foo()
{
    return 1;
}

int main(...)
{
    return foo();
}
--snip-- foo.c --snip--

compile and link it, have the linker know main or some part of crt0 is
special, build a graph of the final ELF object, see that bar and blem
are not connected to 'main' and discard them?

I'm pretty sure (but not 100% certain) that oher compilers can do
this, maybe someone can test on other platforms?

A really smart linker (if given enough compiler help) could build a
directional graph and still remove this code even if blem called foo.


Perhaps I'm making something that's extremely complex sound simple,
but it doesn't seem to me that this should be that complex...  maybe
someone more farmiliar with binutils and/or gcc can comment and tell
me why I'm being a fool :)

    The kernel doesn't link when you compile with -fno-inline because
    of all the `extern inline' qualifiers.  These need to be converted
    to `static inline'.  Jim Houston has a script which does this.

Semantically, in gcc land, someone explain the difference between:

     inline

     extern inline

     static inline

please?


My tests seem to indicte:

  inline creates an non-inline functions.  Simple tests failed to have
  this function inlined at all

  static inline and extern inline functions can and will be inlined depending
  on optimization level

  extern inline doesn't product a non-inlined function (even if it is
  referenced) and hence barfs if you don't compile with optimisations
  for my simple test

Now, I wonder

  why 'inline' for me, never inlines?

  is there a way to force inlining of a function?

  are non-inlined functions ever called when optimizations are
  enabled?




Thanks,


  --cw

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  7:30       ` Chris Wedgwood
@ 2002-02-02  7:42         ` Daniel Jacobowitz
  2002-02-02  8:08           ` Jeff Garzik
  2002-02-02  8:06         ` Jeff Garzik
  2002-02-02  8:08         ` Keith Owens
  2 siblings, 1 reply; 73+ messages in thread
From: Daniel Jacobowitz @ 2002-02-02  7:42 UTC (permalink / raw)
  To: Chris Wedgwood
  Cc: Andrew Morton, Alan Cox, David S. Miller, vandrove, torvalds,
	garzik, linux-kernel, paulus, davidm, ralf

On Fri, Feb 01, 2002 at 11:30:20PM -0800, Chris Wedgwood wrote:
> Is there no way to write something like:
> 
> --snip-- foo.c --snip--
> void
> blem()
> {
> }
> 
> void
> bar()
> {
>     blem();
>     return 0;
> }
> 
> int foo()
> {
>     return 1;
> }
> 
> int main(...)
> {
>     return foo();
> }
> --snip-- foo.c --snip--
> 
> compile and link it, have the linker know main or some part of crt0 is
> special, build a graph of the final ELF object, see that bar and blem
> are not connected to 'main' and discard them?
> 
> I'm pretty sure (but not 100% certain) that oher compilers can do
> this, maybe someone can test on other platforms?
> 
> A really smart linker (if given enough compiler help) could build a
> directional graph and still remove this code even if blem called foo.

One piece of the necessary compiler help would be -ffunction-sections. 
If they are in the same section in the same object file, they simply
can not be removed safely.  Relocation information for calls to local
functions is not reliably available at link time.


-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  7:30       ` Chris Wedgwood
  2002-02-02  7:42         ` Daniel Jacobowitz
@ 2002-02-02  8:06         ` Jeff Garzik
  2002-02-02  8:08         ` Keith Owens
  2 siblings, 0 replies; 73+ messages in thread
From: Jeff Garzik @ 2002-02-02  8:06 UTC (permalink / raw)
  To: Chris Wedgwood
  Cc: Andrew Morton, Alan Cox, David S. Miller, vandrove, torvalds,
	linux-kernel, paulus, davidm, ralf

On Fri, Feb 01, 2002 at 11:30:20PM -0800, Chris Wedgwood wrote:
> A really smart linker (if given enough compiler help) could build a
> directional graph and still remove this code even if blem called foo.

Agreed and this has been my objection to the function-sections patch.
There is no need for it if you make the toolchain smarter.

For example I would love to see a !CONFIG_MODULES build rip out all the
code that was not actively referenced, such as EXPORT_SYMBOL functions
which are never called.

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  7:30       ` Chris Wedgwood
  2002-02-02  7:42         ` Daniel Jacobowitz
  2002-02-02  8:06         ` Jeff Garzik
@ 2002-02-02  8:08         ` Keith Owens
  2002-02-02  8:40           ` David Woodhouse
  2 siblings, 1 reply; 73+ messages in thread
From: Keith Owens @ 2002-02-02  8:08 UTC (permalink / raw)
  To: Chris Wedgwood; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2323 bytes --]

cc: list trimmed.

On Fri, 1 Feb 2002 23:30:20 -0800, 
Chris Wedgwood <cw@f00f.org> wrote:
>compile and link it, have the linker know main or some part of crt0 is
>special, build a graph of the final ELF object, see that bar and blem
>are not connected to 'main' and discard them?
>
>I'm pretty sure (but not 100% certain) that oher compilers can do
>this, maybe someone can test on other platforms?
>
>A really smart linker (if given enough compiler help) could build a
>directional graph and still remove this code even if blem called foo.

AFAICT it has to be done in two stages.  Identify extern symbols that
are not referenced and convert them to static, then compile and let gcc
warn about unused statics and remove them.

The two stage approach is required because ld does not have enough
information to identify all function calls.  ld views an object as
opaque blobs of text and data with relocation entries that tie them
together.  When a function is called from the same source file, gcc/gas
tend to use PC relative branches for the inter-source call.  PC
relative local branches do not usually generate relocation entries.
Without a relocation entry, ld cannot detect the inter-source call.

There is also a problem with exported symbols.  To ld, EXPORT_SYMBOL
looks like a reference to the symbol, but the export entry is
irrelevant, what really matters is if any module refers to those
symbols.  ld cannot distinguish between used and unused exported
symbols.  To make matters worse, if you define foo as static and
EXPORT_SYMBOL(foo) in the same source then gcc thinks that the symbol
is used, because of the EXPORT_SYMBOL() reference.  Again what really
matters is if any module uses the exported symbol.

The script below runs the .o files for the kernel and identifies extern
symbols with no extern references, i.e. the first part of the problem.
It knows about exported symbols and modules and handles them correctly.
I have not run the script for years, the list of conglomerates and the
list starting with mod_use_count_ will need updating.

Beware that you get a lot of false positives because of the kernel
config mechanism.  A symbol may be listed as unused but changing the
config may cause it to be used.  This is especially true for exported
symbols.

<davem>What, no initc**l reference?</davem>

[-- Attachment #2: namespace.pl --]
[-- Type: text/plain , Size: 7714 bytes --]

#!/usr/bin/perl -w
#
#	namespace.pl.  Mon Jan 27 22:25:47 EST 1997
#
#	Perform a name space analysis on the linux kernel.
#
#	Copyright Keith Owens <kaos@ocs.com.au>.  GPL.
#
#	Invoke by changing directory to the top of the kernel source
#	tree then namespace.pl, no parameters.
#
#	Tuned for 2.1.x kernels with the new module handling, it will
#	work with 2.0 kernels as well.  Last change 2.1.81.
#
#	The source must be compiled/assembled first, the object files
#	are the primary input to this script.  Incomplete or missing
#	objects will result in a flawed analysis.
#
#	Even with complete objects, treat the result of the analysis
#	with caution.  Some external references are only used by
#	certain architectures, others with certain combinations of
#	configuration parameters.  Ideally the source should include
#	something like
#
#	#ifndef CONFIG_...
#	static
#	#endif
#	symbol_definition;
#
#	so the symbols are defined as static unless a particular
#	CONFIG_... requires it to be external.
#

require 5;	# at least perl 5
use strict;
use File::Find;

my $nm = "/usr/bin/nm -p";	# in case somebody moves nm

if ($#ARGV != -1) {
	print STDERR "usage: $0 takes no parameters\n";
	die("giving up\n");
}

my %nmdata = ();	# nm data for each object
my %def = ();		# all definitions for each name
my %ksymtab = ();	# names that appear in __ksymtab_
my %ref = ();		# $ref{$name} exists if there is a true external reference to $name
my %export = ();	# $export{$name} exists if there is an EXPORT_... of $name

&find(\&linux_objects, '.');	# find the objects and do_nm on them
list_multiply_defined();
resolve_external_references();
list_extra_externals();

exit(0);

sub linux_objects
{
	# Select objects, ignoring objects which are only created by
	# merging other objects.  Also ignore all of modules, scripts
	# and compressed.
	my $basename = $_;
	$_ = $File::Find::name;
	s:^\./::;
	if (/.*\.o$/ && ! (
	    m:/fs.o$: || m:/isofs.o$: || m:/nfs.o$:
	    || m:/xiafs.o$: || m:/umsdos.o$: || m:/hpfs.o$:
	    || m:/smbfs.o$: || m:/ncpfs.o$: || m:/ufs.o$:
	    || m:/affs.o$: || m:/romfs.o$: || m:/kernel.o$:
	    || m:/mm.o$: || m:/ipc.o$: || m:/ext.o$:
	    || m:/msdos.o$: || m:/proc/proc.o$: || m:/minix.o$:
	    || m:/ext2.o$: || m:/sysv.o$: || m:/fat.o$:
	    || m:/vfat.o$: || m:/unix.o$: || m:/802.o$:
	    || m:/appletalk.o$: || m:/ax25.o$: || m:/core.o$:
	    || m:/ethernet.o$: || m:/ipv4.o$: || m:/ipx.o$:
	    || m:/netrom.o$: || m:/ipv6.o$: || m:/x25.o$:
	    || m:/rose.o$: || m:/bridge.o$: || m:/lapb.o$:
	    || m:/sock_n_syms.o$: || m:/teles.o$: || m:/pcbit.o$:
	    || m:/isdn.o$: || m:/ftape.o$: || m:/scsi_mod.o$:
	    || m:/sd_mod.o$: || m:/sr_mod.o$: || m:/lowlevel.o$:
	    || m:/sound.o$: || m:/piggy.o$: || m:/bootsect.o$:
	    || m:/boot/setup.o$: || m:^modules/: || m:^scripts/:
	    || m:/compressed/:
	    || m:/autofs.o$: || m:/lockd/lockd.o$: || m:/nfsd.o$:
	    || m:/sunrpc.o$: || m:/scsi_n_syms.o$:
	    || m:/boot/bbootsect.o$: || m:/boot/bsetup.o$:
	    || m:/misc/parport.o$: || m:/nls/nls.o$:
	    || m:/debug/debug.o$: || m:/netlink/netlink.o$:
	    || m:/sched/sched.o$: || m:/sound/sb.o$: 
	    || m:/sound/soundcore.o$: || m:/pci/pci_syms.o$: 
	    || m:/devpts/devpts.o$: || m:/video/fbdev.o$: 
	  )
	) {
		do_nm($basename, $_);
	}
	$_ = $basename;		# File::Find expects $_ untouched (undocumented)
}

sub do_nm
{
	my ($basename, $fullname) = @_;
	my ($source, $type, $name);
	if (! -e $basename) {
		printf STDERR "$basename does not exist\n";
		return;
	}
	if ($fullname !~ /\.o$/) {
		printf STDERR "$fullname is not an object file\n";
		return;
	}
	$source = $basename;
	$source =~ s/\.o$//;
	if (! -e "$source.c" && ! -e "$source.S") {
		printf STDERR "No source file found for $fullname\n";
		return;
	}
	if (! open(NMDATA, "$nm $basename|")) {
		printf STDERR "$nm $fullname failed $!\n";
		return;
	}
	my @nmdata;
	while (<NMDATA>) {
		chop;
		($type, $name) = (split(/ +/, $_, 3))[1..2];
		# Expected types
		# B weak external reference to data that has been resolved
		# C global variable, uninitialised
		# D global variable, initialised
		# R global array, initialised
		# T global label/procedure
		# U external reference
		# W weak external reference to text that has been resolved
		# a assembler equate
		# b static variable, uninitialised
		# d static variable, initialised
		# r static array, initialised
		# t static label/procedures
		# ? undefined type, used a lot by modules
		if ($type !~ /^[BCDRTUWabdrt?]$/) {
			printf STDERR "nm output for $fullname contains unknown type '$_'\n";
		}
		elsif ($name =~ /\./) {
			# name with '.' is local static
		}
		else {
			$name =~ s/_R[a-f0-9]{8}$//;	# module versions adds this
			if ($type =~ /[BCDRTW]/ &&
				$name ne 'init_module' &&
				$name ne 'cleanup_module' &&
				$name ne 'Using_Versions' &&
				$name !~ /^Version_[0-9]+$/ &&
				$name ne 'kernel_version') {
				if (!exists($def{$name})) {
					$def{$name} = [];
				}
				push(@{$def{$name}}, $fullname);
			}
			push(@nmdata, "$type $name");
			if ($name =~ /^__ksymtab_/) {
				$name = substr($name, 10);
				if (!exists($ksymtab{$name})) {
					$ksymtab{$name} = [];
				}
				push(@{$ksymtab{$name}}, $fullname);
			}
		}
	}
	close(NMDATA);
	if ($#nmdata < 0) {
		printf "No nm data for $fullname\n";
		return;
	}
	$nmdata{$fullname} = \@nmdata;
}

sub list_multiply_defined
{
	my ($name, $module);
	foreach $name (keys(%def)) {
		if ($#{$def{$name}} > 0) {
			printf "$name is multiply defined in :-\n";
			foreach $module (@{$def{$name}}) {
				printf "\t$module\n";
			}
		}
	}
}

sub resolve_external_references
{
	my ($object, $type, $name, $i, $j, $kstrtab, $ksymtab, $export);
	printf "\n";
	foreach $object (keys(%nmdata)) {
		my $nmdata = $nmdata{$object};
		for ($i = 0; $i <= $#{$nmdata}; ++$i) {
			($type, $name) = split(' ', $nmdata->[$i], 2);
			if ($type eq "U") {
				if (exists($def{$name}) || exists($ksymtab{$name})) {
					# add the owning object to the nmdata
					$nmdata->[$i] = "$type $name $object";
					# only count as a reference if it is not EXPORT_...
					$kstrtab = "? __kstrtab_$name";
					$ksymtab = "? __ksymtab_$name";
					$export = 0;
					for ($j = 0; $j <= $#{$nmdata}; ++$j) {
						if ($nmdata->[$j] eq $kstrtab ||
						    $nmdata->[$j] eq $ksymtab) {
							$export = 1;
							last;
						}
					}
					if ($export) {
						$export{$name} = "";
					}
					else {
						$ref{$name} = ""
					}
				}
				elsif ($name ne "mod_use_count_" &&
				       $name ne "__this_module" &&
				       $name ne "_etext" &&
				       $name ne "_edata" &&
				       $name ne "_end" &&
				       $name ne "__start___ksymtab" &&
				       $name ne "__start___ex_table" &&
				       $name ne "__stop___ksymtab" &&
				       $name ne "__stop___ex_table" &&
				       $name ne "__stop___ex_table" &&
				       $name ne "__bss_start" &&
				       $name ne "_text" &&
				       $name ne "__init_begin" &&
				       $name ne "__init_end") {
					printf "Cannot resolve reference to $name from $object\n";
				}
			}
		}
	}
}

sub list_extra_externals
{
	my %noref = ();
	my ($name, @module, $module, $export);
	foreach $name (keys(%def)) {
		if (! exists($ref{$name})) {
			@module = @{$def{$name}};
			foreach $module (@module) {
				if (! exists($noref{$module})) {
					$noref{$module} = [];
				}
				push(@{$noref{$module}}, $name);
			}
		}
	}
	if (%noref) {
		printf "\nExternally defined symbols with no external references\n";
		foreach $module (sort(keys(%noref))) {
			printf "  $module\n";
			foreach (sort(@{$noref{$module}})) {
				if (exists($export{$_})) {
					$export = " (export only)";
				}
				else {
					$export = "";
				}
				printf "    $_$export\n";
			}
		}
	}
}

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  7:42         ` Daniel Jacobowitz
@ 2002-02-02  8:08           ` Jeff Garzik
  2002-02-02 19:20             ` Daniel Jacobowitz
  0 siblings, 1 reply; 73+ messages in thread
From: Jeff Garzik @ 2002-02-02  8:08 UTC (permalink / raw)
  To: Chris Wedgwood, Andrew Morton, Alan Cox, David S. Miller,
	vandrove, torvalds, linux-kernel, paulus, davidm, ralf

On Sat, Feb 02, 2002 at 02:42:36AM -0500, Daniel Jacobowitz wrote:
> One piece of the necessary compiler help would be -ffunction-sections. 
> If they are in the same section in the same object file, they simply
> can not be removed safely.

Such as the patch that was mentioned earlier in this thread :)


> Relocation information for calls to local
> functions is not reliably available at link time.

With a smarter toolchain it could be.

One will need a smarter toolchain in order to re-order functions
anyway, which is an area where benchmarks on other compilers are
showing benefits.  (ie. moving "cold" functions to the end of the
module, given profiling feedback)

	Jeff




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  8:08         ` Keith Owens
@ 2002-02-02  8:40           ` David Woodhouse
  2002-02-02  8:59             ` Keith Owens
  0 siblings, 1 reply; 73+ messages in thread
From: David Woodhouse @ 2002-02-02  8:40 UTC (permalink / raw)
  To: Keith Owens; +Cc: Chris Wedgwood, linux-kernel


kaos@ocs.com.au said:
>  There is also a problem with exported symbols.  To ld, EXPORT_SYMBOL
> looks like a reference to the symbol, 

Er, surely that's not a problem at all? This is desired behaviour?

>  but the export entry is irrelevant,  what really matters is if any module
> refers to those symbols.

Absolutely not.  If we mark a symbol EXPORT_SYMBOL, we want it exported. No 
questions asked.

The export entry _is_ relevant; furthermore it's the _only_ thing that's
relevant, and there is no way of knowing if there's a module that isn't in
the tree, or maybe even a module that _is_ in the tree but not compiled
today, that needs the symbol in question.

I sincerely hope it's just too early in the morning here and I'm 
misunderstanding you :)

--
dwmw2



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  8:40           ` David Woodhouse
@ 2002-02-02  8:59             ` Keith Owens
  2002-02-02  9:14               ` David Woodhouse
  0 siblings, 1 reply; 73+ messages in thread
From: Keith Owens @ 2002-02-02  8:59 UTC (permalink / raw)
  To: David Woodhouse; +Cc: Chris Wedgwood, linux-kernel

On Sat, 02 Feb 2002 08:40:11 +0000, 
David Woodhouse <dwmw2@infradead.org> wrote:
>kaos@ocs.com.au said:
>>  There is also a problem with exported symbols.  To ld, EXPORT_SYMBOL
>> looks like a reference to the symbol, 
>
>Er, surely that's not a problem at all? This is desired behaviour?
>
>>  but the export entry is irrelevant,  what really matters is if any module
>> refers to those symbols.
>
>Absolutely not.  If we mark a symbol EXPORT_SYMBOL, we want it exported. No 
>questions asked.

Does anything still use this symbol or is it dead?  Quite valid question.

>The export entry _is_ relevant; furthermore it's the _only_ thing that's
>relevant, and there is no way of knowing if there's a module that isn't in
>the tree, or maybe even a module that _is_ in the tree but not compiled
>today, that needs the symbol in question.

I said that you get false positives because the code that uses the
symbol might not be compiled in your kernel.  The script flags symbols
that are extern or exported and are not used in the current kernel.
Somebody then has to go through the report and decide if those symbols
are required under other config settings or by third party modules,
assuming that they care about third party modules.

The script is NOT an automatic list of what can be cleaned up.  I doubt
that such a list can be generated in the face of the kernel config
system and third party modules.  It is only a starting point for
symbols that need reviewing.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  8:59             ` Keith Owens
@ 2002-02-02  9:14               ` David Woodhouse
  0 siblings, 0 replies; 73+ messages in thread
From: David Woodhouse @ 2002-02-02  9:14 UTC (permalink / raw)
  To: Keith Owens; +Cc: Chris Wedgwood, linux-kernel


kaos@ocs.com.au said:
>  Does anything still use this symbol or is it dead?  Quite valid
> question. 

Indeed. 

>  The script is NOT an automatic list of what can be cleaned up.  I
> doubt that such a list can be generated in the face of the kernel
> config system and third party modules.  It is only a starting point
> for symbols that need reviewing.

OK, cool. As it came out of the discussion about -ffunction-sections and
automatically garbage-collecting unused functions during the build, I
thought you had other, less sane intentions. Sorry for the misunderstanding.

--
dwmw2



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02 16:32     ` Denis Vlasenko
@ 2002-02-02 12:57       ` Jens Axboe
  2002-02-02 13:16         ` arjan
  2002-02-03 11:37       ` David Woodhouse
  1 sibling, 1 reply; 73+ messages in thread
From: Jens Axboe @ 2002-02-02 12:57 UTC (permalink / raw)
  To: Denis Vlasenko; +Cc: Arnaldo Carvalho de Melo, linux-kernel

> include/linux/blk.h
> 
>         Changed NR_REQUEST from 256 to 16.  This reduces the number of
>         requests that can be queued.  The size of the queue is reduced
>         from 16K to 1K.

You can do even more than this -- I dunno what I/O interface these
embedded system generally uses (the mtd stuff?). Provided you provide a
direct make_request_fn entry into these instead of using the queue, you
can basically cut all of ll_rw_blk.c and elevator.c. ll_rw_block,
submit_bh, and generic_make_request would be all that is left.

That should reclaim quite a lot of space. If there's any interest in
this (has it already been done?), I can help out getting it done.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02 12:57       ` Jens Axboe
@ 2002-02-02 13:16         ` arjan
  2002-02-02 13:52           ` Jens Axboe
  0 siblings, 1 reply; 73+ messages in thread
From: arjan @ 2002-02-02 13:16 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel

In article <20020202135749.B4934@suse.de> you wrote:
>> include/linux/blk.h
>> 
>>         Changed NR_REQUEST from 256 to 16.  This reduces the number of
>>         requests that can be queued.  The size of the queue is reduced
>>         from 16K to 1K.

> You can do even more than this -- I dunno what I/O interface these
> embedded system generally uses (the mtd stuff?)

the MTD stuff wants CONFIG_BLOCKLAYER ;)
flash + jffs2 doesn't need any blocklayer at all ;)

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 17:45                         ` The Candyman
@ 2002-02-02 13:41                           ` Andreas Happe
  2002-02-02 21:09                             ` Martin Dalecki
  0 siblings, 1 reply; 73+ messages in thread
From: Andreas Happe @ 2002-02-02 13:41 UTC (permalink / raw)
  To: The Candyman, lkml

same for me,
, but when using scan on my laptop it took around 5 minutes to discover the
textmodes (while the screen was entirely black, i've rebooted the laptop
several times, 'cause i thought that my system was dead)

-a.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02 13:16         ` arjan
@ 2002-02-02 13:52           ` Jens Axboe
  0 siblings, 0 replies; 73+ messages in thread
From: Jens Axboe @ 2002-02-02 13:52 UTC (permalink / raw)
  To: arjan; +Cc: linux-kernel

On Sat, Feb 02 2002, arjan@fenrus.demon.nl wrote:
> In article <20020202135749.B4934@suse.de> you wrote:
> >> include/linux/blk.h
> >> 
> >>         Changed NR_REQUEST from 256 to 16.  This reduces the number of
> >>         requests that can be queued.  The size of the queue is reduced
> >>         from 16K to 1K.
> 
> > You can do even more than this -- I dunno what I/O interface these
> > embedded system generally uses (the mtd stuff?)
> 
> the MTD stuff wants CONFIG_BLOCKLAYER ;)
> flash + jffs2 doesn't need any blocklayer at all ;)

Right, that was exactly my point...

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:21   ` Arnaldo Carvalho de Melo
@ 2002-02-02 16:32     ` Denis Vlasenko
  2002-02-02 12:57       ` Jens Axboe
  2002-02-03 11:37       ` David Woodhouse
  0 siblings, 2 replies; 73+ messages in thread
From: Denis Vlasenko @ 2002-02-02 16:32 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: linux-kernel

On 31 January 2002 21:21, Arnaldo Carvalho de Melo wrote:
> Em Thu, Jan 31, 2002 at 11:24:10PM +0000, Alan Cox escreveu:
> > What I'd much rather see if this is an issue is:
> >
> > bool	'Do you want to customise for a very small system'
> >
> > which auto enables all the random small stuff if you say no, and goes
> > much deeper into options if you say yes.
>
> heh, after I've read that you managed to boot 2.4 + rmap in a machine with
> just 4 MB after tweaking some table sizes I thought about devoting some
> time to identify those tables and making them options in make *config, with
> even a nice CONFIG_TINY, like you said 8)
>
> I'll eventually do this, and I'd appreciate if people send me suggestions
> of tables/data structures that can be trimmed/reduced. Yeah, I'll take a
> look at the .config files used in the embedded distros.

One of inhabitants of my "Don't delete!" mail folder:

Re: Limited RAM - how to save it?
 From: Lars Brinkhoff <lars.spam@nocrew.org>
 To: Jan-Benedict Glaw <jbglaw@microdata-pos.de>
 Cc: linux-kernel@vger.kernel.org
 
Jan-Benedict Glaw <jbglaw@microdata-pos.de> writes:
> I'm working on a 4MB linux system (for a customer) which has quite
> limited resources [...] If you've got further ideas on getting the
> kernel a bit smaller, would be nice to get a mail dropped...

I started a port of Linux 2.3.99 to a MIPS device which usually has 2M
flash and 4M RAM.

To reduce the size of the text and data sections, I sorted the output
of the "size" command and investigated the files with the largest
sections.

These are the memory-saving changes I arrived at.  They are not really
tested, so some of them may break some functionality.  Also, I don't
know whether they apply to the current kernels.

fs/dcache.c

        Changed HASH_BITS from 14 to 8.  This reduces the size of the
        cache from 128K to 2K.

fs/inode.c

        Changed HASH_BITS from 14 to 8.  This reduces the size of the
        cache from 128K to 2K.

include/linux/blk.h

        Changed NR_REQUEST from 256 to 16.  This reduces the number of
        requests that can be queued.  The size of the queue is reduced
        from 16K to 1K.

include/linux/major.h

        Changed MAX_BLKDEV and MAX_CHRDEV from 256 to 10 and 20,
        respectively.  This reduces the number of block and character
        devices and saves about 40K.

kernel/printk.c

        Changed LOG_BUF_LEN from 16384 bytes to 2048 bytes.

include/linux/tty.h

        Changed NR_PTYS and NR_LDISCS from 256 and 16, respectively,
        to 16 and 4, respectively.  Saved about 12K.

        Warning: this change may break the pty driver, in which case
        further modifications will have to be done to
        drivers/char/pty.c.

kernel/panic.c

        Changed a buffer from 1024 bytes to 200 bytes.

include/linux/sched.h

        Changed PIDHASH_SZ from 1024 to 16, which saves 1008 bytes.

include/linux/mmzone.h

        NR_GPFINDEX from 0x100 to 0x10.  Saves 4800 bytes, but I'm not
        sure it doesn't break anything.

net/Makefile, net/socket.c, net/nosocket.c

        Replacing socket.c with nosocket.c, a file containing dummy
        replacement functions for those in socket.c, saves about 24K.

        Warning: this disables the socket API entirely, but it is
        currently not used in the product.

mm/Makefile, mm/swapfile.c, mm/swap_state.c, mm/noswapfile.c, 
mm/noswap_state.c

        Replacing swapfile.c with noswapfile.c, and swap_state.c with
        noswap_state.c saves about 12K.  The no*.c files contains
        empty replacement functions.

        Warning: this disables swapping of anonymous memory, which
        isn't used in the product.  But note that demand paging of
        executables still works.

mm/Makefile, mm/mmap.c

        The functions in mmap.c could probably also be replaced by
        empty functions.  Estimated saving: 9K (not included in the
        grand total below).

*, CONFIG_MESSAGES

        Applying the CONFIG_MESSAGES patch and disabling all kernel
        messages saves about 80K.

        The CONFIG_MESSAGES patch was written by Graham Stoney
        <greyham@research.canon.com.au>.

With all of the above, and only this enabled in .config:
        CONFIG_EXPERIMENTAL=y
        CONFIG_CPU_R3000=y
        CONFIG_CPU_LITTLE_ENDIAN=y
        CONFIG_ELF_KERNEL=y
        CONFIG_BINFMT_ELF=y
        CONFIG_MODULES=y
        CONFIG_MODVERSIONS=y
        CONFIG_KMOD=y
        CONFIG_CROSSCOMPILE=y
, the kernel is down to about 550K.

Here is the output of "size vmlinux".  I think this is without the
CONFIG_MESSAGES patch (it was long since I worked with this).

text    data    bss     dec     hex     filename
572128  41964   15860   629952  99cc0   vmlinux

-- 
Lars Brinkhoff          http://lars.nocrew.org/     Linux, GCC, PDP-10
Brinkhoff Consulting    http://www.brinkhoff.se/    programming
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02  8:08           ` Jeff Garzik
@ 2002-02-02 19:20             ` Daniel Jacobowitz
  0 siblings, 0 replies; 73+ messages in thread
From: Daniel Jacobowitz @ 2002-02-02 19:20 UTC (permalink / raw)
  To: Jeff Garzik
  Cc: Chris Wedgwood, Andrew Morton, Alan Cox, David S. Miller,
	vandrove, torvalds, linux-kernel, paulus, davidm, ralf

On Sat, Feb 02, 2002 at 03:08:47AM -0500, Jeff Garzik wrote:
> On Sat, Feb 02, 2002 at 02:42:36AM -0500, Daniel Jacobowitz wrote:
> > One piece of the necessary compiler help would be -ffunction-sections. 
> > If they are in the same section in the same object file, they simply
> > can not be removed safely.
> 
> Such as the patch that was mentioned earlier in this thread :)

Yes, the patch that he was objecting to :)

> > Relocation information for calls to local
> > functions is not reliably available at link time.
> 
> With a smarter toolchain it could be.
> 
> One will need a smarter toolchain in order to re-order functions
> anyway, which is an area where benchmarks on other compilers are
> showing benefits.  (ie. moving "cold" functions to the end of the
> module, given profiling feedback)

No, the linker simply can not assume that this information is present. 
That's a limitation of ELF.  The right way to do this sort of
optimization is to compile every function into its own section and then
handle the (very small) performance cost of doing so by a relaxation
pass in the linker.  You can't safely remove any part of an input
section, no matter what relocation information you think you have.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-02 13:41                           ` Andreas Happe
@ 2002-02-02 21:09                             ` Martin Dalecki
  0 siblings, 0 replies; 73+ messages in thread
From: Martin Dalecki @ 2002-02-02 21:09 UTC (permalink / raw)
  To: Andreas Happe; +Cc: The Candyman, lkml

Andreas Happe wrote:

>same for me,
>, but when using scan on my laptop it took around 5 minutes to discover the
>textmodes (while the screen was entirely black, i've rebooted the laptop
>several times, 'cause i thought that my system was dead)
>

I didn't wait *that* long for sure....
Apparently on my desk system the scan is returnning after a long time as 
well.




^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-01-31 23:24 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
                     ` (4 preceding siblings ...)
  2002-02-02  2:12   ` Chris Wedgwood
@ 2002-02-03  4:14   ` Eric W. Biederman
  2002-02-03  7:01     ` Ralf Baechle
  5 siblings, 1 reply; 73+ messages in thread
From: Eric W. Biederman @ 2002-02-03  4:14 UTC (permalink / raw)
  To: Alan Cox
  Cc: David S. Miller, vandrove, torvalds, garzik, linux-kernel, paulus,
	davidm, ralf

Alan Cox <alan@lxorguk.ukuu.org.uk> writes:

> > As a side note, this thing is so tiny (less than 4K on sparc64!) so
> > why don't we just include it unconditionally instead of having all
> > of this "turn it on for these drivers" stuff?
> 
> Because 100 4K drivers suddenly becomes 0.5Mb. There are those of us trying
> to stuff Linux into embedded devices who if anything want more configuration
> options not people taking stuff out.
> 
> What I'd much rather see if this is an issue is:
> 
> bool	'Do you want to customise for a very small system' 
> 
> which auto enables all the random small stuff if you say no, and goes
> much deeper into options if you say yes.

I mostly agree.  Except when I have looked at trying to get the kernel
(compiled size down) the biggest bloat was in the core.  Things like
having both a page and a block cache.

Getting code reuse in the core higher would cut down on kernel size a
lot.  But that isn't quick fix territory.

Eric

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-03  4:14   ` Eric W. Biederman
@ 2002-02-03  7:01     ` Ralf Baechle
  2002-02-03  9:13       ` Chris Wedgwood
                         ` (2 more replies)
  0 siblings, 3 replies; 73+ messages in thread
From: Ralf Baechle @ 2002-02-03  7:01 UTC (permalink / raw)
  To: Eric W. Biederman
  Cc: Alan Cox, David S. Miller, vandrove, torvalds, garzik,
	linux-kernel, paulus, davidm

On Sat, Feb 02, 2002 at 09:14:33PM -0700, Eric W. Biederman wrote:

> > > As a side note, this thing is so tiny (less than 4K on sparc64!) so
> > > why don't we just include it unconditionally instead of having all
> > > of this "turn it on for these drivers" stuff?
> > 
> > Because 100 4K drivers suddenly becomes 0.5Mb. There are those of us trying
> > to stuff Linux into embedded devices who if anything want more configuration
> > options not people taking stuff out.
> > 
> > What I'd much rather see if this is an issue is:
> > 
> > bool	'Do you want to customise for a very small system' 
> > 
> > which auto enables all the random small stuff if you say no, and goes
> > much deeper into options if you say yes.
> 
> I mostly agree.  Except when I have looked at trying to get the kernel
> (compiled size down) the biggest bloat was in the core.  Things like
> having both a page and a block cache.
> 
> Getting code reuse in the core higher would cut down on kernel size a
> lot.  But that isn't quick fix territory.

Is it really worth the effort?  During the past year the average size of
embedded systems that people want to use for seems to have increased
dramatically.  In case of the MIPS port the core activity is about to
move away from the 32-bit to 64-bit kernel.

  Ralf

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-03  7:01     ` Ralf Baechle
@ 2002-02-03  9:13       ` Chris Wedgwood
  2002-02-03 12:16       ` David Woodhouse
  2002-02-03 13:40       ` Alan Cox
  2 siblings, 0 replies; 73+ messages in thread
From: Chris Wedgwood @ 2002-02-03  9:13 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Eric W. Biederman, Alan Cox, David S. Miller, vandrove, torvalds,
	garzik, linux-kernel, paulus, davidm

On Sun, Feb 03, 2002 at 08:01:35AM +0100, Ralf Baechle wrote:

    Is it really worth the effort?  During the past year the average
    size of embedded systems that people want to use for seems to have
    increased dramatically.  In case of the MIPS port the core
    activity is about to move away from the 32-bit to 64-bit kernel.

For some hand-held devices (eg. iPAQ), we want as much memory free as
possible as the only filesystem available is ramfs... moving to 64-bit
would be unthinkable! :)


  --cw


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-02 16:32     ` Denis Vlasenko
  2002-02-02 12:57       ` Jens Axboe
@ 2002-02-03 11:37       ` David Woodhouse
  1 sibling, 0 replies; 73+ messages in thread
From: David Woodhouse @ 2002-02-03 11:37 UTC (permalink / raw)
  To: Jens Axboe; +Cc: Denis Vlasenko, Arnaldo Carvalho de Melo, linux-kernel


axboe@suse.de said:
>  You can do even more than this -- I dunno what I/O interface these
> embedded system generally uses (the mtd stuff?). Provided you provide
> a direct make_request_fn entry into these instead of using the queue,
> you can basically cut all of ll_rw_blk.c and elevator.c. 

We don't even do that - look at jffs2_read_super(). The only reason it even 
_looks_ like we're using a block device is because it was the easiest way 
to arrange mounting. We only allow you to mount the 'mtdblock' device, 
which isn't actually used - all we do is use the minor number to look up 
the real underlying MTD device. The dependency on _any_ of the block code 
isn't real - I can fix it as soon as there's an incentive to do so (like 
CONFIG_BLK_DEV).

> ll_rw_block, submit_bh, and generic_make_request would be all that is left. 

Those can go too. Likewise page->buffers.

>  That should reclaim quite a lot of space. If there's any interest in
> this (has it already been done?), I can help out getting it done.

I had a go once. Long enough ago that it's probably not worth trying to find
it again. I'd suggest a boolean like CONFIG_BUFFER_CACHE which does the
really intrusive stuff like removing page->buffers, and CONFIG_BLK_DEV which
can be modular (if CONFIG_BUFFER_CACHE is on), and which controls
compilation of everything in drivers/block/ and fs/block_dev.c

--
dwmw2



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-03  7:01     ` Ralf Baechle
  2002-02-03  9:13       ` Chris Wedgwood
@ 2002-02-03 12:16       ` David Woodhouse
  2002-02-03 12:33         ` Chris Wedgwood
  2002-02-03 12:47         ` David Woodhouse
  2002-02-03 13:40       ` Alan Cox
  2 siblings, 2 replies; 73+ messages in thread
From: David Woodhouse @ 2002-02-03 12:16 UTC (permalink / raw)
  To: Chris Wedgwood; +Cc: linux-kernel


cw@f00f.org said:
>  For some hand-held devices (eg. iPAQ), we want as much memory free as
> possible as the only filesystem available is ramfs...

You took the flash out of your iPAQ? How does it boot?

--
dwmw2



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-03 12:16       ` David Woodhouse
@ 2002-02-03 12:33         ` Chris Wedgwood
  2002-02-03 12:47         ` David Woodhouse
  1 sibling, 0 replies; 73+ messages in thread
From: Chris Wedgwood @ 2002-02-03 12:33 UTC (permalink / raw)
  To: David Woodhouse; +Cc: linux-kernel

On Sun, Feb 03, 2002 at 12:16:00PM +0000, David Woodhouse wrote:

    cw@f00f.org said:

    You took the flash out of your iPAQ? How does it boot?

Obviously it still has flash... but much of the filesystem is ramfs
and thus ram is rather precious.

For now anyhow, I think I'll upgrade it to 128M shortly.



  --cw

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-03 12:16       ` David Woodhouse
  2002-02-03 12:33         ` Chris Wedgwood
@ 2002-02-03 12:47         ` David Woodhouse
  1 sibling, 0 replies; 73+ messages in thread
From: David Woodhouse @ 2002-02-03 12:47 UTC (permalink / raw)
  To: Chris Wedgwood; +Cc: linux-kernel


cw@f00f.org said:
>  Obviously it still has flash... but much of the filesystem is ramfs
> and thus ram is rather precious.

Ah, I see. What are you doing with it? Mine hardly touches the ramfs.

sh-2.03# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/mtdblock/2          32256     26908      5348  84% /
tmpfs                    15428       260     15168   2% /mnt/ramfs


--
dwmw2



^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-03  7:01     ` Ralf Baechle
  2002-02-03  9:13       ` Chris Wedgwood
  2002-02-03 12:16       ` David Woodhouse
@ 2002-02-03 13:40       ` Alan Cox
  2 siblings, 0 replies; 73+ messages in thread
From: Alan Cox @ 2002-02-03 13:40 UTC (permalink / raw)
  To: Ralf Baechle
  Cc: Eric W. Biederman, Alan Cox, David S. Miller, vandrove, torvalds,
	garzik, linux-kernel, paulus, davidm

> Is it really worth the effort?  During the past year the average size of
> embedded systems that people want to use for seems to have increased
> dramatically.  In case of the MIPS port the core activity is about to
> move away from the 32-bit to 64-bit kernel.

Embedded system and fancy handheld toys are not really the same thing. One
subset of the market gets cheaper the other gets flashier and more high
powered.

Mips is now dead in the handheld market if windows ce drops it.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 13:42               ` Horst von Brand
@ 2002-02-03 23:34                 ` Keith Owens
  2002-02-04 20:14                   ` Horst von Brand
  0 siblings, 1 reply; 73+ messages in thread
From: Keith Owens @ 2002-02-03 23:34 UTC (permalink / raw)
  To: Horst von Brand; +Cc: linux-kernel

On Fri, 01 Feb 2002 14:42:11 +0100, 
Horst von Brand <brand@jupiter.cs.uni-dortmund.de> wrote:
>Keith Owens <kaos@ocs.com.au> said:
>> I know, it makes it even harder to see what the initialization order
>> is.  Some are controlled by the Makefile/subdirs order, some by special
>> calls in the code.
>
>Just to repeat myself: This is clearly a problem for tsort(1): Give
>restrictions of the form "This has to come after that" (perhaps a special
>comment at the start of the file containing the init function?), tsort that
>and pick the order out of the result. Should be a few lines of script. No
>central repository for the dependencies, no messing around with half the
>world to fix dependencies. Plus they become explicit, which they aren't
>today.

Just to repeat myself: That is exactly what I want to do.  Linus vetoed
it in October 2000.


^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-01 14:55                   ` Jeff Garzik
  2002-02-01 15:12                     ` Petr Vandrovec
  2002-02-01 16:08                     ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does David Woodhouse
@ 2002-02-04 13:24                     ` Horst von Brand
  2002-02-05  7:51                       ` Jeff Garzik
  2 siblings, 1 reply; 73+ messages in thread
From: Horst von Brand @ 2002-02-04 13:24 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-kernel

Jeff Garzik <garzik@havoc.gtf.org> said:
> On Fri, Feb 01, 2002 at 03:03:13PM +0000, Alan Cox wrote:
> > > If you have a dependency concern, you put yourself in the
> > > right initcall group.  You don't depend ever on the order within the
> > > group, thats the whole idea.  You can't depend on that, so you must
> > > group things correctly.

> > This was proposed right back at the start. Linus point blank vetoed it.

> My ideal would be to express dependencies in driver.conf (when that is
> implemented), and that will in turn affect the link order by
> autogenerating part of vmlinux.lds.  Until then, initcall groups are
> fine with me...

Not _one_ central file telling everything, please! Let each driver declare
what it needs and provides, and sort it out from there. Even better would
be something like "depmod -a" that doesn't need explicit dependencies
declared, but that looks like too much hair IMVHO.

Why do I have this uneasy feeling it would somehow overlap with CML2's job?
-- 
Horst von Brand			     http://counter.li.org # 22616

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-03 23:34                 ` Keith Owens
@ 2002-02-04 20:14                   ` Horst von Brand
  0 siblings, 0 replies; 73+ messages in thread
From: Horst von Brand @ 2002-02-04 20:14 UTC (permalink / raw)
  To: Keith Owens; +Cc: linux-kernel

Keith Owens <kaos@ocs.com.au> said:
> On Fri, 01 Feb 2002 14:42:11 +0100, 
> Horst von Brand <brand@jupiter.cs.uni-dortmund.de> wrote:
> >Keith Owens <kaos@ocs.com.au> said:
> >> I know, it makes it even harder to see what the initialization order
> >> is.  Some are controlled by the Makefile/subdirs order, some by special
> >> calls in the code.

> >Just to repeat myself: This is clearly a problem for tsort(1): Give
> >restrictions of the form "This has to come after that" (perhaps a special
> >comment at the start of the file containing the init function?), tsort that
> >and pick the order out of the result. Should be a few lines of script. No
> >central repository for the dependencies, no messing around with half the
> >world to fix dependencies. Plus they become explicit, which they aren't
> >today.

> Just to repeat myself: That is exactly what I want to do.  Linus vetoed
> it in October 2000.

Right. And I still think Linus is dead wrong here. IMVVHO.
-- 
Horst von Brand			     http://counter.li.org # 22616

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does
  2002-02-04 13:24                     ` Horst von Brand
@ 2002-02-05  7:51                       ` Jeff Garzik
  0 siblings, 0 replies; 73+ messages in thread
From: Jeff Garzik @ 2002-02-05  7:51 UTC (permalink / raw)
  To: Horst von Brand; +Cc: linux-kernel

Horst von Brand wrote:
> 
> Jeff Garzik <garzik@havoc.gtf.org> said:
> > On Fri, Feb 01, 2002 at 03:03:13PM +0000, Alan Cox wrote:
> > > > If you have a dependency concern, you put yourself in the
> > > > right initcall group.  You don't depend ever on the order within the
> > > > group, thats the whole idea.  You can't depend on that, so you must
> > > > group things correctly.
> 
> > > This was proposed right back at the start. Linus point blank vetoed it.
> 
> > My ideal would be to express dependencies in driver.conf (when that is
> > implemented), and that will in turn affect the link order by
> > autogenerating part of vmlinux.lds.  Until then, initcall groups are
> > fine with me...
> 
> Not _one_ central file telling everything, please! Let each driver declare
> what it needs and provides, and sort it out from there.

"driver.conf" is a reference is a metadata file per driver or
per-subdirectory, not one big file.

Linus suggested this back in December.  See the links I posted.


> Why do I have this uneasy feeling it would somehow overlap with CML2's job?

It could either (a) generate CML2 or (b) make CML2 irrelevant, depending
on the implementation.

	Jeff



-- 
Jeff Garzik      | "I went through my candy like hot oatmeal
Building 1024    |  through an internally-buttered weasel."
MandrakeSoft     |             - goats.com

^ permalink raw reply	[flat|nested] 73+ messages in thread

* Re: VESA Anybody out there
  2002-02-01 15:29                       ` VESA Anybody out there Martin Dalecki
                                           ` (2 preceding siblings ...)
  2002-02-01 17:45                         ` The Candyman
@ 2002-02-05 17:05                         ` Pavel Machek
  3 siblings, 0 replies; 73+ messages in thread
From: Pavel Machek @ 2002-02-05 17:05 UTC (permalink / raw)
  To: Martin Dalecki; +Cc: linux-kernel

Hi!

> Is there actually anybody out there for whoom the vga=ask kernelparamter
> followed by a mode scan actually works? For me personally I never 
> encountered
> *any* single one computer wher ethis wouldn't hang the system entierly, so
> I wonder whatever the wholesale option ain't borken?

Works for me.

ask mj@ucw.cz, he coded that.
									Pavel
-- 
(about SSSCA) "I don't say this lightly.  However, I really think that the U.S.
no longer is classifiable as a democracy, but rather as a plutocracy." --hpa

^ permalink raw reply	[flat|nested] 73+ messages in thread

end of thread, other threads:[~2002-02-05 17:57 UTC | newest]

Thread overview: 73+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20020131.162549.74750188.davem@redhat.com>
2002-02-01  0:42 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
2002-02-01  0:30   ` David S. Miller
2002-02-01  3:46     ` Jeff Garzik
2002-02-01  4:25       ` David S. Miller
2002-02-01  4:48         ` Jeff Garzik
2002-02-01  5:59           ` David S. Miller
2002-02-01  5:10         ` Keith Owens
2002-02-01  5:12           ` Jeff Garzik
2002-02-01  5:18             ` Keith Owens
2002-02-01 13:42               ` Horst von Brand
2002-02-03 23:34                 ` Keith Owens
2002-02-04 20:14                   ` Horst von Brand
2002-02-01  6:01           ` David S. Miller
2002-02-01  6:11             ` Keith Owens
2002-02-01  6:26               ` David S. Miller
2002-02-01  6:43                 ` Keith Owens
2002-02-01 15:03                 ` Alan Cox
2002-02-01 14:55                   ` Jeff Garzik
2002-02-01 15:12                     ` Petr Vandrovec
2002-02-01 15:29                       ` VESA Anybody out there Martin Dalecki
2002-02-01 15:42                         ` Davidovac Zoran
2002-02-01 16:21                           ` Martin Dalecki
2002-02-01 16:33                             ` Thomas Capricelli
2002-02-01 16:53                               ` Martin Dalecki
2002-02-01 16:35                             ` Sergey S. Kostyliov
2002-02-01 16:37                           ` Anton Altaparmakov
2002-02-01 16:33                         ` Petr Baudis
2002-02-01 17:45                         ` The Candyman
2002-02-02 13:41                           ` Andreas Happe
2002-02-02 21:09                             ` Martin Dalecki
2002-02-05 17:05                         ` Pavel Machek
2002-02-01 16:08                     ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does David Woodhouse
2002-02-04 13:24                     ` Horst von Brand
2002-02-05  7:51                       ` Jeff Garzik
2002-02-01  4:18     ` H. Peter Anvin
2002-02-01  4:35       ` Jeff Garzik
2002-02-01 15:19     ` Alan Cox
2002-02-01 19:37     ` Rob Landley
2002-02-01 19:50       ` Jeff Garzik
2002-01-31 22:59 [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does not David S. Miller
2002-01-31 23:24 ` [PATCH] Re: crc32 and lib.a (was Re: [PATCH] nbd in 2.5.3 does Alan Cox
2002-01-31 23:21   ` Arnaldo Carvalho de Melo
2002-02-02 16:32     ` Denis Vlasenko
2002-02-02 12:57       ` Jens Axboe
2002-02-02 13:16         ` arjan
2002-02-02 13:52           ` Jens Axboe
2002-02-03 11:37       ` David Woodhouse
2002-01-31 23:43   ` Jeff Garzik
2002-01-31 23:45   ` David S. Miller
2002-02-01  0:32     ` Alan Cox
2002-02-01 10:07     ` Horst von Brand
2002-02-01 10:28       ` Keith Owens
2002-02-01 11:03         ` David S. Miller
2002-02-01 11:25           ` Keith Owens
2002-02-01 14:56             ` Jeff Garzik
2002-02-01  8:14   ` David Woodhouse
2002-02-02  2:12   ` Chris Wedgwood
2002-02-02  3:01     ` Andrew Morton
2002-02-02  7:30       ` Chris Wedgwood
2002-02-02  7:42         ` Daniel Jacobowitz
2002-02-02  8:08           ` Jeff Garzik
2002-02-02 19:20             ` Daniel Jacobowitz
2002-02-02  8:06         ` Jeff Garzik
2002-02-02  8:08         ` Keith Owens
2002-02-02  8:40           ` David Woodhouse
2002-02-02  8:59             ` Keith Owens
2002-02-02  9:14               ` David Woodhouse
2002-02-03  4:14   ` Eric W. Biederman
2002-02-03  7:01     ` Ralf Baechle
2002-02-03  9:13       ` Chris Wedgwood
2002-02-03 12:16       ` David Woodhouse
2002-02-03 12:33         ` Chris Wedgwood
2002-02-03 12:47         ` David Woodhouse
2002-02-03 13:40       ` Alan Cox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox