diff options
| author | David Gibson <david@gibson.dropbear.id.au> | 2004-07-01 20:29:27 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-07-01 20:29:27 -0700 |
| commit | 78c39c9f64ed94eb1414aeecbcc82f62153c7ccd (patch) | |
| tree | 46ebc9fa5fa3940c08148d96000303539affb9a3 /include/asm-ppc64 | |
| parent | 004a3668794a9ed1349b3b786987871100fc8389 (diff) | |
[PATCH] ppc64: remove RTAS arguments from PACA
This patch removes the RTAS arguments structure on ppc64 from the PACA.
The args have to be in the RMO, but since we have a global spinlock for
RTAS anyway, there's no reason to have a separate copy of the args per-CPU.
This patch replaces the PACA field with a single instance in the global
rtas structure.
The one exception is for the rtas_stop_self() call, which can't take the
lock, because it never returns. But it has a fixed set of arguments, so we
can use another global instance which is initialized at boot.
This lets us remove rtas.h from paca.h, which substantially reduces overall
#include hairiness (because paca.h is now, as it wants to be, a nice
low-level structure-defining header which relies on very little and can
safely be included almost anywhere). Although it does add some noise to
the patch, because a bunch of places relied on the indirect inclusion of
rtas.h, or even more indirect inclusions (see the hunks applying to eeh.h
and current.h!).
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-ppc64')
| -rw-r--r-- | include/asm-ppc64/current.h | 2 | ||||
| -rw-r--r-- | include/asm-ppc64/eeh.h | 1 | ||||
| -rw-r--r-- | include/asm-ppc64/paca.h | 4 | ||||
| -rw-r--r-- | include/asm-ppc64/rtas.h | 7 |
4 files changed, 5 insertions, 9 deletions
diff --git a/include/asm-ppc64/current.h b/include/asm-ppc64/current.h index 24ea6e1ab6e8..94a49c2588f1 100644 --- a/include/asm-ppc64/current.h +++ b/include/asm-ppc64/current.h @@ -10,8 +10,6 @@ * 2 of the License, or (at your option) any later version. */ -#include <asm/thread_info.h> - #define get_current() (get_paca()->xCurrent) #define current get_current() diff --git a/include/asm-ppc64/eeh.h b/include/asm-ppc64/eeh.h index 3ca700cb04bc..d5e44bf36c7b 100644 --- a/include/asm-ppc64/eeh.h +++ b/include/asm-ppc64/eeh.h @@ -24,6 +24,7 @@ #include <linux/init.h> struct pci_dev; +struct device_node; /* I/O addresses are converted to EEH "tokens" such that a driver will cause * a bad page fault if the address is used directly (i.e. these addresses are diff --git a/include/asm-ppc64/paca.h b/include/asm-ppc64/paca.h index 218ab7178fc3..06e2208e5e43 100644 --- a/include/asm-ppc64/paca.h +++ b/include/asm-ppc64/paca.h @@ -29,7 +29,6 @@ #include <asm/iSeries/ItLpPaca.h> #include <asm/iSeries/ItLpRegSave.h> #include <asm/iSeries/ItLpQueue.h> -#include <asm/rtas.h> #include <asm/mmu.h> #include <asm/processor.h> @@ -122,10 +121,9 @@ struct paca_struct { * CACHE_LINE_17-18 0x0800 - 0x08FF Reserved *===================================================================================== */ - struct rtas_args xRtas; /* Per processor RTAS struct */ u64 xR1; /* r1 save for RTAS calls */ u64 xSavedMsr; /* Old msr saved here by HvCall */ - u8 rsvd5[256-16-sizeof(struct rtas_args)]; + u8 rsvd5[256-16]; /*===================================================================================== * CACHE_LINE_19-30 0x0900 - 0x0EFF Reserved diff --git a/include/asm-ppc64/rtas.h b/include/asm-ppc64/rtas.h index 4ce9bddc62a2..d596ec5b4c9f 100644 --- a/include/asm-ppc64/rtas.h +++ b/include/asm-ppc64/rtas.h @@ -51,18 +51,17 @@ struct rtas_args { u32 nargs; u32 nret; rtas_arg_t args[16]; -#if 0 - spinlock_t lock; -#endif rtas_arg_t *rets; /* Pointer to return values in args[]. */ }; +extern struct rtas_args rtas_stop_self_args; + struct rtas_t { unsigned long entry; /* physical address pointer */ unsigned long base; /* physical address pointer */ unsigned long size; spinlock_t lock; - + struct rtas_args args; struct device_node *dev; /* virtual address pointer */ }; |
