mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: linux@horizon.com
To: linux-kernel@vger.kernel.org
Cc: mingo@elte.hu
Subject: Re: Add prefetch switch stack hook in scheduler function
Date: 29 Jul 2005 11:18:04 -0400	[thread overview]
Message-ID: <20050729151804.28355.qmail@science.horizon.com> (raw)

>  include/asm-alpha/mmu_context.h     |    6 ++++++
>  include/asm-arm/mmu_context.h       |    6 ++++++
>  include/asm-arm26/mmu_context.h     |    6 ++++++
>  include/asm-cris/mmu_context.h      |    6 ++++++
>  include/asm-frv/mmu_context.h       |    6 ++++++
>  include/asm-h8300/mmu_context.h     |    6 ++++++
>  include/asm-i386/mmu_context.h      |    6 ++++++
>  include/asm-ia64/mmu_context.h      |    6 ++++++
>  include/asm-m32r/mmu_context.h      |    6 ++++++
>  include/asm-m68k/mmu_context.h      |    6 ++++++
>  include/asm-m68knommu/mmu_context.h |    6 ++++++
>  include/asm-mips/mmu_context.h      |    6 ++++++
>  include/asm-parisc/mmu_context.h    |    6 ++++++
>  include/asm-ppc/mmu_context.h       |    6 ++++++
>  include/asm-ppc64/mmu_context.h     |    6 ++++++
>  include/asm-s390/mmu_context.h      |    6 ++++++
>  include/asm-sh/mmu_context.h        |    6 ++++++
>  include/asm-sh64/mmu_context.h      |    6 ++++++
>  include/asm-sparc/mmu_context.h     |    6 ++++++
>  include/asm-sparc64/mmu_context.h   |    6 ++++++
>  include/asm-um/mmu_context.h        |    6 ++++++
>  include/asm-v850/mmu_context.h      |    6 ++++++
>  include/asm-x86_64/mmu_context.h    |    5 +++++
>  include/asm-xtensa/mmu_context.h    |    6 ++++++
>  kernel/sched.c                      |    9 ++++++++-
>  25 files changed, 151 insertions(+), 1 deletion(-)

I think this pretty clearly points out the need for some arch-generic
infrastructure in Linux.  An awful lot of arch hooks are for one
or two architectures with some peculiarities, and the other 90% of
the implementations are identical.

For example, this is 22 repetitions of
#define MIN_KERNEL_STACK_FOOTPRINT L1_CACHE_BYTES

with one different case.

It would be awfully nice if there was a standard way to provide a default
implementation that was automatically picked up by any architecture that
didn't explicitly override it.

One possibility is to use #ifndef:

/* asm-$PLATFORM/foo.h */
#define MIN_KERNEL_STACK_FOOTPRINT IA64_SWITCH_STACK_SIZE
inline void
prefetch_task(struct task_struct const *task)
{
	...
}
#define prefetch_task prefetch_task


/* asm-generic/foo.h */
#include <asm/foo.h>

#ifndef MIN_KERNEL_STACK_FOOTPRINT
#define MIN_KERNEL_STACK_FOOTPRINT L1_CACHE_BYTES
#endif

#ifndef prefetch_task
inline void prefetch_task(struct task_struct const *task) { }
/* The #define is OPTIONAL... */
#define prefetch_task prefetch_task
#endif


But both understanding and maintaining the arch code could be
much easier if the shared parts were collapsed.  A comment in the
generic versions can explain what the assumptions are.


If there are cases where there is more than one implementation with
multiple users, it can be stuffed into a third category of headers.
E.g. <asm-generic/noiommu/foo.h> and <asm-generic/iommu/foo.h> or some
such, using the same duplicate-suppression technique and #included at
the end of <asm-$PLATFORM/foo.h>

             reply	other threads:[~2005-07-29 15:19 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-29 15:18 linux [this message]
2005-07-29 15:49 ` Ingo Molnar
  -- strict thread matches above, loose matches on Subject: below --
2005-07-27 22:07 Chen, Kenneth W
2005-07-27 23:13 ` Andrew Morton
2005-07-27 23:23   ` david mosberger
2005-07-28  7:41     ` Ingo Molnar
2005-07-28  8:09       ` Keith Owens
2005-07-28  8:16         ` Ingo Molnar
2005-07-28  9:09           ` Ingo Molnar
2005-07-28 19:14             ` Chen, Kenneth W
2005-07-29  7:04               ` Ingo Molnar
2005-07-29  7:07                 ` Ingo Molnar
2005-07-29  8:30                   ` Eric Dumazet
2005-07-29  8:44                     ` Ingo Molnar
2005-07-29  8:30                   ` Chen, Kenneth W
2005-07-29  8:35                     ` Ingo Molnar
2005-07-29  8:39                       ` Chen, Kenneth W
2005-07-29  9:17                   ` Peter Zijlstra
2005-07-29 10:52                     ` Ingo Molnar
2005-07-29  7:22                 ` Chen, Kenneth W
2005-07-29  7:45                   ` Keith Owens
2005-07-29  8:02                     ` Chen, Kenneth W
2005-07-29  8:28                   ` Ingo Molnar
2005-07-29  9:02                     ` Russell King
2005-07-29  9:45                       ` Ingo Molnar
2005-07-29  7:38                 ` Keith Owens
2005-07-29  8:08                   ` Chen, Kenneth W
2005-07-28  8:31         ` Nick Piggin
2005-07-28  8:35           ` Ingo Molnar
2005-07-28  8:48             ` Nick Piggin
2005-07-28  9:16               ` Ingo Molnar
2005-07-28  9:19                 ` Ingo Molnar
2005-07-28  9:34                 ` Nick Piggin
2005-07-28 10:04                   ` Ingo Molnar
2005-07-28 10:29                     ` Nick Piggin

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=20050729151804.28355.qmail@science.horizon.com \
    --to=linux@horizon.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /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