From: Peter Samuelson <peter@cadcamlab.org>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Keith Owens <kaos@ocs.com.au>,
Christoph Hellwig <hch@ns.caldera.de>,
Jeff Garzik <jgarzik@mandrakesoft.com>,
linux-kernel@vger.kernel.org
Subject: Re: test10-pre7
Date: Tue, 31 Oct 2000 20:32:53 -0600 (CST) [thread overview]
Message-ID: <14847.32981.849578.490063@wire.cadcamlab.org> (raw)
In-Reply-To: <20001031075506.B1041@wire.cadcamlab.org> <Pine.LNX.4.10.10010310912050.6866-100000@penguin.transmeta.com>
[Linus]
> But it doesn't even WORK.
>
> You need to have
>
> LINK_FIRST1
> LINK_FIRST2
> LINK_FIRST3
> ...
>
> etc to get the proper ordering.
??? No you don't. Perhaps you mean something else. Here's how
LINK_FIRST works:
Say you have foo.o, bar.o, baz.o and lots of other objects. foo.o must
come before bar.o which must come before baz.o which must come before
some other object. But of course all of the above are conditional:
they can be configured as modules, or not at all.
LINK_FIRST := foo.o bar.o baz.o
obj-$(CONFIG_BAR) += bar.o
obj-$(CONFIG_BAZ) += baz.o
obj-$(CONFIG_BLURFL) += blurfl.o
obj-$(CONFIG_FOO) += foo.o
obj-$(CONFIG_...).....
Problem solved. If CONFIG_FOO=y CONFIG_BAR=n CONFIG_BAZ=y etc, link
order is
foo.o baz.o {everything else}
In short, LINK_FIRST/LINK_LAST take care of any case I can think of in
the kernel. Including things like "buslogic and aha174x must come
before aha1520, but the two parallel zip drivers must come last in
drivers/scsi because you don't want to renumber scsi drives more than
you have to" or "certain ISA cards must come after ne.c because of
autoprobe lockups on cheap ne clones, but ne2kpci should come *before*
ne so ne won't get the pci cards".
> In many other cases, like SCSI, we need almost _total_ ordering. For such
> a case, theer is no "first" or "last" - there is a well-specific ORDER.
I don't understand why we need *total* ordering -- I am only aware of a
few specific requirements.
Anyway, we still need to remove duplicates. NCR53c9x.o appears a lot.
If we can make all those cases go away by use of CONFIG_SCSI_53C9X or
something, I will be a lot happier. Your proposed method,
obj-53C9X-$(CONFIG_SCSI_MCA_53C9X) := y
obj-53C9X-$(CONFIG_SCSI_OKTAGON) := y
obj-$(obj-53C9X-y) := y
obj-$(obj-53C9X-m) := m
is definitely less ugly than a lot of what we do now ... but I still
don't like it. Mostly because each shared object file creates
special-case code in the makefile.
> The only way it would work is to make LINK_FIRST maintain the order,
> but once you do that LINK_FIRST is completely superfluous, as it ends
> up being exactly the same as $(obj-y).
The theory behind LINK_FIRST is that most drivers do not care about
their order: the ones that do are the exception, not the rule. If in
fact you *do* care about the order of every last driver in the kernel,
then I agree that LINK_FIRST is a bad idea.
> So trust me, LINK_FIRST/LINK_LAST is not going to happen.
> And if you really want to remove duplicates, at worst we can even use
> an external program for it - which would solve all these things once
> and for all.
This is true. Mainly what we disagree on is which method is the bigger
kludge. (:
Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2000-11-01 2:33 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-10-30 19:32 test10-pre7 Linus Torvalds
2000-10-30 20:34 ` [PATCH] test10-pre7 Alexander Viro
2000-10-30 21:02 ` Linus Torvalds
2000-10-30 21:23 ` Alexander Viro
2000-10-30 22:01 ` Alexander Viro
2000-10-30 23:05 ` Linus Torvalds
2000-10-30 23:14 ` Alexander Viro
2000-10-30 23:17 ` Linus Torvalds
2000-10-30 22:21 ` Linus Torvalds
2000-10-30 22:06 ` Rik van Riel
2000-10-31 10:05 ` John Kennedy
2000-10-30 21:37 ` test10-pre7 Keith Owens
2000-10-30 22:01 ` test10-pre7 Jeff Garzik
2000-10-30 22:06 ` test10-pre7 Keith Owens
2000-10-30 22:13 ` test10-pre7 Jeff Garzik
2000-10-30 22:24 ` test10-pre7 Linus Torvalds
2000-10-30 22:41 ` test10-pre7 Keith Owens
2000-10-30 22:51 ` test10-pre7 Linus Torvalds
2000-10-30 23:02 ` test10-pre7 Jeff Garzik
2000-10-30 23:04 ` test10-pre7 Keith Owens
2000-10-30 23:08 ` test10-pre7 Linus Torvalds
2000-10-30 23:03 ` test10-pre7 Keith Owens
2000-10-30 23:15 ` test10-pre7 Linus Torvalds
2000-10-30 23:32 ` test10-pre7 Christoph Hellwig
2000-10-30 23:40 ` test10-pre7 Linus Torvalds
2000-10-30 23:45 ` test10-pre7 Christoph Hellwig
2000-10-30 23:51 ` test10-pre7 Linus Torvalds
2000-10-30 23:57 ` test10-pre7 Christoph Hellwig
2000-10-31 0:47 ` test10-pre7 Linus Torvalds
2000-10-31 1:01 ` test10-pre7 Christoph Hellwig
2000-10-31 2:54 ` test10-pre7 Linus Torvalds
2000-10-31 1:49 ` test10-pre7 Keith Owens
2000-10-31 2:07 ` test10-pre7 Keith Owens
2000-10-31 2:58 ` test10-pre7 Linus Torvalds
2000-10-31 13:55 ` test10-pre7 Peter Samuelson
2000-10-31 17:29 ` test10-pre7 Linus Torvalds
2000-10-31 17:38 ` test10-pre7 H. Peter Anvin
2000-10-31 19:51 ` test10-pre7 Horst von Brand
2000-11-01 2:32 ` Peter Samuelson [this message]
2000-10-31 4:57 ` test10-pre7 Rusty Russell
2000-10-31 6:10 ` test10-pre7 Linus Torvalds
2000-10-30 23:38 ` test10-pre7 Keith Owens
2000-10-30 23:47 ` test10-pre7 Linus Torvalds
2000-10-31 0:03 ` test10-pre7 Keith Owens
2000-10-31 9:37 ` test10-pre7 Russell King
2000-10-31 14:02 ` test10-pre7 Keith Owens
2000-10-31 14:16 ` test10-pre7 Peter Samuelson
2000-10-31 17:31 ` test10-pre7 Linus Torvalds
2000-10-31 19:28 ` test10-pre7 Russell King
2000-10-31 20:59 ` test10-pre7 Linus Torvalds
2000-11-01 0:16 ` test10-pre7 (LINK ordering) Randy Dunlap
2000-11-01 0:52 ` Jeff Garzik
2000-11-01 3:06 ` test10-pre7 Peter Samuelson
2000-11-01 2:35 ` test10-pre7 Keith Owens
2000-11-01 12:46 ` test10-pre7 Alan Cox
2000-10-31 11:59 ` test10-pre7 Peter Samuelson
2000-10-31 21:01 ` test10-pre7 John Alvord
2000-11-01 3:30 ` test10-pre7 Peter Samuelson
2000-10-31 8:18 ` test10-pre7 Rogier Wolff
2000-10-31 0:52 test10-pre7 Michael Elizabeth Chastain
2000-10-31 1:05 ` test10-pre7 Christoph Hellwig
2000-10-31 16:15 test10-pre7 Vladislav Malyshkin
2000-10-31 16:45 ` test10-pre7 Peter Samuelson
2000-10-31 18:07 ` test10-pre7 Vladislav Malyshkin
2000-10-31 18:38 ` test10-pre7 Linus Torvalds
2000-10-31 19:16 ` test10-pre7 H. Peter Anvin
2000-11-01 3:15 ` test10-pre7 Peter Samuelson
2000-11-01 6:11 ` test10-pre7 H. Peter Anvin
2000-11-01 6:31 ` test10-pre7 Peter Samuelson
2000-11-01 7:42 ` test10-pre7 Peter Samuelson
2000-11-03 16:26 ` test10-pre7 Vladislav Malyshkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=14847.32981.849578.490063@wire.cadcamlab.org \
--to=peter@cadcamlab.org \
--cc=hch@ns.caldera.de \
--cc=jgarzik@mandrakesoft.com \
--cc=kaos@ocs.com.au \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®