mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Zachary Amsden <zach@vmware.com>
Cc: Adrian Bunk <bunk@stusta.de>, Andrew Morton <akpm@osdl.org>,
	linux-kernel@vger.kernel.org, rdunlap@xenotime.net,
	fastboot@osdl.org
Subject: Re: 2.6.17-rc1-mm1: KEXEC became SMP-only
Date: Tue, 04 Apr 2006 12:43:26 -0600	[thread overview]
Message-ID: <m1irpp41wx.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <4432B22F.6090803@vmware.com> (Zachary Amsden's message of "Tue, 04 Apr 2006 10:51:43 -0700")

Zachary Amsden <zach@vmware.com> writes:

> No, this cleanup only eliminates the need to duplicate redundant code.   How
> does a machine vector make it any harder to break?  You still have a function
> with multiple definitions.  Duplicating code makes things really easy to break -
> twice.

Sharing functions is good, but if you don't share things carefully your code
becomes very brittle because it depends in non obvious ways on other
code.

A machine vector isn't exactly what is needed (although that allows building
all of the subarches at the same time).  What is needed are clear places
where the sub architectures get called.

The lack of visibility is what makes subarch code so easy to break right now.

I have had times where I have made a global change and fixed up the entire
kernel and all that broke was the i386 subarchitectures because there
was a dependency but it was totally invisible.  Despite testing on and
being most familiar with i386.

For example every other arch only has one implementation
of machine_restart, machine_halt, machine_power_off, and if they
have subarchitectures they have calls to subarch_restart, subarch_halt,
and subarch_power_off.  At which point it is trivial to see that
the code lives in a subarchitecture.

Even if that code turns right around and calls a common function on
all but one of the subarchitectures, at least the logic is visible when
you read the code.

If all you are doing is this one little clean up we can probably stop here.
But this looks like a start on getting a vmi or xen subarch working.

If this is really a prelude to introducing more subarchitectures we
need to fix the infrastructure, so it is obvious what is going on.
I would really like to see a machine vector, so we could compile in
multiple subarchitectures at the same time.  That makes building
a generic kernel easier, and the requirement that the we need
to build a generic kernel makes the structure of the subarchiteture
hooks hierarchical and you wind up with code whose dependencies
are visible.  Instead of the current linker and preprocessor magic.
Functions named hook are impossible to comprehend what they
are supposed to do while reading through the code.

Eric


  reply	other threads:[~2006-04-04 18:44 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-04  8:45 2.6.17-rc1-mm1 Andrew Morton
2006-04-04 14:31 ` 2.6.17-rc1-mm1 Kumar Gala
2006-04-04 16:02 ` 2.6.17-mm1: drivers/w1/: patch undoes reasonable cleanups Adrian Bunk
2006-04-04 16:35   ` Evgeniy Polyakov
2006-04-04 16:29 ` 2.6.17-rc1-mm1: KEXEC became SMP-only Adrian Bunk
2006-04-04 17:22   ` Zachary Amsden
2006-04-04 17:50     ` Eric W. Biederman
2006-04-06 22:37     ` Adrian Bunk
2006-04-04 17:43   ` Eric W. Biederman
2006-04-04 17:51     ` Zachary Amsden
2006-04-04 18:43       ` Eric W. Biederman [this message]
2006-04-04 19:23         ` Zachary Amsden
2006-04-04 19:38           ` Muli Ben-Yehuda
2006-04-04 20:25           ` Andrew Morton
2006-04-04 22:02             ` Zachary Amsden
2006-04-04 22:19               ` Andrew Morton
2006-04-04 22:34                 ` Zachary Amsden
2006-04-04 22:38                   ` Andrew Morton
2006-04-05  0:21                 ` Martin Bligh
2006-04-05  2:45                   ` Eric W. Biederman
2006-04-04 16:29 ` [-mm patch] i386: pre_intr_init_hook optimization Adrian Bunk
2006-04-04 17:16   ` Zachary Amsden
2006-04-04 16:29 ` 2.6.17-rc1-mm1: why did acpi_ns_build_external_path() become global? Adrian Bunk
2006-04-04 16:30 ` [-mm patch] drivers/media/video/bt866.c: small fixes Adrian Bunk
2006-04-04 18:32   ` Martin Samuelsson
2006-04-05  7:42     ` Andrew Morton
2006-04-05  9:02       ` Adrian Bunk
2006-04-05 13:44       ` Martin Samuelsson
2006-04-05  8:32     ` Johannes Stezenbach
2006-04-05 13:54       ` Martin Samuelsson
2006-04-04 16:30 ` [-mm patch] fs/nfsd/nfs4state.c: make a struct static Adrian Bunk
2006-04-04 16:50   ` [NFS] " J. Bruce Fields
2006-04-04 17:29     ` Adrian Bunk
2006-04-04 20:53 ` 2.6.17-rc1-mm1: mlockall() regression on x86_64 Rafael J. Wysocki
2006-04-04 22:24   ` Andrew Morton
2006-04-04 21:53 ` 2.6.17-rc1-mm1 Zan Lynx
2006-04-04 22:09   ` 2.6.17-rc1-mm1 Andrew Morton
2006-04-05  7:01     ` 2.6.17-rc1-mm1 Roger Luethi
2006-04-05  7:29       ` 2.6.17-rc1-mm1 Andrew Morton
2006-04-05 22:01         ` 2.6.17-rc1-mm1 Roger Luethi
2006-04-04 23:38 ` 2.6.17-rc1-mm1 Luck, Tony
2006-04-05  2:05   ` 2.6.17-rc1-mm1 Zou Nan hai
2006-04-05 16:15     ` 2.6.17-rc1-mm1 Bjorn Helgaas
2006-04-05 21:17       ` 2.6.17-rc1-mm1 Luck, Tony
2006-04-05 21:37         ` 2.6.17-rc1-mm1 Andrew Morton
2006-04-05 21:39         ` 2.6.17-rc1-mm1 Andreas Schwab
2006-04-05 22:01         ` 2.6.17-rc1-mm1 Bjorn Helgaas
2006-04-06  1:49           ` 2.6.17-rc1-mm1 Antonino A. Daplas
2006-04-06 10:21           ` 2.6.17-rc1-mm1 Russell King
2006-04-06 10:34             ` 2.6.17-rc1-mm1 Russell King
2006-04-06 14:55               ` 2.6.17-rc1-mm1 Bjorn Helgaas
2006-04-06 10:16         ` 2.6.17-rc1-mm1 Russell King
2006-04-05  2:27 ` 2.6.17-rc1-mm1, nfsd/reiser4 BUG Zan Lynx
2006-04-07 12:27 ` 2.6.17-rc1-mm1: drivers/acpi/numa.c compile error Adrian Bunk
2006-04-07 20:59   ` Andrew Morton
2006-04-09 15:44     ` Adrian Bunk
2006-04-09 15:57       ` Randy.Dunlap
2006-04-07 20:58 ` 2.6.17-rc1-mm1 - detects buggy TSC on GEODE Jim Cromie
2006-04-08  0:07   ` Andrew Morton
2006-04-08  0:25     ` john stultz
2006-04-08  1:15     ` Jim Cromie
2006-04-13  7:39 ` 2.6.17-rc1-mm1 Heiko Carstens
2006-04-13  8:13   ` 2.6.17-rc1-mm1 Andrew Morton
2006-04-14 16:07     ` 2.6.17-rc1-mm1 Alasdair G Kergon

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=m1irpp41wx.fsf@ebiederm.dsl.xmission.com \
    --to=ebiederm@xmission.com \
    --cc=akpm@osdl.org \
    --cc=bunk@stusta.de \
    --cc=fastboot@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdunlap@xenotime.net \
    --cc=zach@vmware.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

Powered by JetHome