Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: (23 commits) sparc: sunzilog uart order [SPARC64]: Detect trap frames in stack backtraces. [SPARC64]: %l6 trap return handling no longer necessary. [SPARC64]: Use trap type stored in pt_regs to handle syscall restart. [SPARC64]: Store magic cookie and trap type in pt_regs. [SPARC64]: PROM debug console can be CON_ANYTIME. sparc64: cleanup after SunOS/Solaris binary emulation removal sparc: cleanup after SunOS binary emulation removal [SPARC64]: Add NUMA support. [SPARC64]: Allocate TSB node-local. [SPARC64]: NUMA device infrastructure. [SPARC64]: Kill pci_iommu_table_init() declaration. [SPARC64]: Once we have the boot cmdline, call parse_early_param() [SPARC64]: Remove unused asm-sparc64/numnodes.h [SPARC64]: Decrease SECTION_SIZE_BITS to 30. [SPARC64]: Initialize MDESC earlier and use lmb_alloc() [SPARC64]: Use lmb_alloc() for PROM device tree. [SPARC64]: Call real_setup_per_cpu_areas() earlier and use lmb_alloc(). [SPARC64]: Fully use LMB information in bootmem_init(). [SPARC64]: Start using LMB information in bootmem_init(). ...
This commit is contained in:
@@ -16,6 +16,8 @@ struct dev_archdata {
|
||||
|
||||
struct device_node *prom_node;
|
||||
struct of_device *op;
|
||||
|
||||
int numa_node;
|
||||
};
|
||||
|
||||
#endif /* _ASM_SPARC_DEVICE_H */
|
||||
|
@@ -77,6 +77,11 @@ extern int of_getintprop_default(struct device_node *np,
|
||||
const char *name,
|
||||
int def);
|
||||
extern int of_find_in_proplist(const char *list, const char *match, int len);
|
||||
#ifdef CONFIG_NUMA
|
||||
extern int of_node_to_nid(struct device_node *dp);
|
||||
#else
|
||||
#define of_node_to_nid(dp) (-1)
|
||||
#endif
|
||||
|
||||
extern void prom_build_devicetree(void);
|
||||
|
||||
|
@@ -56,6 +56,7 @@ struct strbuf {
|
||||
};
|
||||
|
||||
extern int iommu_table_init(struct iommu *iommu, int tsbsize,
|
||||
u32 dma_offset, u32 dma_addr_mask);
|
||||
u32 dma_offset, u32 dma_addr_mask,
|
||||
int numa_node);
|
||||
|
||||
#endif /* !(_SPARC64_IOMMU_H) */
|
||||
|
17
include/asm-sparc64/mmzone.h
Normal file
17
include/asm-sparc64/mmzone.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef _SPARC64_MMZONE_H
|
||||
#define _SPARC64_MMZONE_H
|
||||
|
||||
#ifdef CONFIG_NEED_MULTIPLE_NODES
|
||||
|
||||
extern struct pglist_data *node_data[];
|
||||
|
||||
#define NODE_DATA(nid) (node_data[nid])
|
||||
#define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
|
||||
#define node_end_pfn(nid) (NODE_DATA(nid)->node_end_pfn)
|
||||
|
||||
extern int numa_cpu_lookup_table[];
|
||||
extern cpumask_t numa_cpumask_lookup_table[];
|
||||
|
||||
#endif /* CONFIG_NEED_MULTIPLE_NODES */
|
||||
|
||||
#endif /* _SPARC64_MMZONE_H */
|
@@ -1,6 +0,0 @@
|
||||
#ifndef _SPARC64_NUMNODES_H
|
||||
#define _SPARC64_NUMNODES_H
|
||||
|
||||
#define NODES_SHIFT 0
|
||||
|
||||
#endif /* !(_SPARC64_NUMNODES_H) */
|
@@ -8,6 +8,8 @@
|
||||
* stack during a system call and basically all traps.
|
||||
*/
|
||||
|
||||
#define PT_REGS_MAGIC 0x57ac6c00
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
struct pt_regs {
|
||||
@@ -16,7 +18,19 @@ struct pt_regs {
|
||||
unsigned long tpc;
|
||||
unsigned long tnpc;
|
||||
unsigned int y;
|
||||
unsigned int fprs;
|
||||
|
||||
/* We encode a magic number, PT_REGS_MAGIC, along
|
||||
* with the %tt (trap type) register value at trap
|
||||
* entry time. The magic number allows us to identify
|
||||
* accurately a trap stack frame in the stack
|
||||
* unwinder, and the %tt value allows us to test
|
||||
* things like "in a system call" etc. for an arbitray
|
||||
* process.
|
||||
*
|
||||
* The PT_REGS_MAGIC is choosen such that it can be
|
||||
* loaded completely using just a sethi instruction.
|
||||
*/
|
||||
unsigned int magic;
|
||||
};
|
||||
|
||||
struct pt_regs32 {
|
||||
@@ -147,7 +161,7 @@ extern void __show_regs(struct pt_regs *);
|
||||
#define PT_V9_TPC 0x88
|
||||
#define PT_V9_TNPC 0x90
|
||||
#define PT_V9_Y 0x98
|
||||
#define PT_V9_FPRS 0x9c
|
||||
#define PT_V9_MAGIC 0x9c
|
||||
#define PT_TSTATE PT_V9_TSTATE
|
||||
#define PT_TPC PT_V9_TPC
|
||||
#define PT_TNPC PT_V9_TNPC
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define SECTION_SIZE_BITS 31
|
||||
#define SECTION_SIZE_BITS 30
|
||||
#define MAX_PHYSADDR_BITS 42
|
||||
#define MAX_PHYSMEM_BITS 42
|
||||
|
||||
|
@@ -1,6 +1,77 @@
|
||||
#ifndef _ASM_SPARC64_TOPOLOGY_H
|
||||
#define _ASM_SPARC64_TOPOLOGY_H
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
|
||||
#include <asm/mmzone.h>
|
||||
|
||||
static inline int cpu_to_node(int cpu)
|
||||
{
|
||||
return numa_cpu_lookup_table[cpu];
|
||||
}
|
||||
|
||||
#define parent_node(node) (node)
|
||||
|
||||
static inline cpumask_t node_to_cpumask(int node)
|
||||
{
|
||||
return numa_cpumask_lookup_table[node];
|
||||
}
|
||||
|
||||
/* Returns a pointer to the cpumask of CPUs on Node 'node'. */
|
||||
#define node_to_cpumask_ptr(v, node) \
|
||||
cpumask_t *v = &(numa_cpumask_lookup_table[node])
|
||||
|
||||
#define node_to_cpumask_ptr_next(v, node) \
|
||||
v = &(numa_cpumask_lookup_table[node])
|
||||
|
||||
static inline int node_to_first_cpu(int node)
|
||||
{
|
||||
cpumask_t tmp;
|
||||
tmp = node_to_cpumask(node);
|
||||
return first_cpu(tmp);
|
||||
}
|
||||
|
||||
struct pci_bus;
|
||||
#ifdef CONFIG_PCI
|
||||
extern int pcibus_to_node(struct pci_bus *pbus);
|
||||
#else
|
||||
static inline int pcibus_to_node(struct pci_bus *pbus)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define pcibus_to_cpumask(bus) \
|
||||
(pcibus_to_node(bus) == -1 ? \
|
||||
CPU_MASK_ALL : \
|
||||
node_to_cpumask(pcibus_to_node(bus)))
|
||||
|
||||
#define SD_NODE_INIT (struct sched_domain) { \
|
||||
.min_interval = 8, \
|
||||
.max_interval = 32, \
|
||||
.busy_factor = 32, \
|
||||
.imbalance_pct = 125, \
|
||||
.cache_nice_tries = 2, \
|
||||
.busy_idx = 3, \
|
||||
.idle_idx = 2, \
|
||||
.newidle_idx = 0, \
|
||||
.wake_idx = 1, \
|
||||
.forkexec_idx = 1, \
|
||||
.flags = SD_LOAD_BALANCE \
|
||||
| SD_BALANCE_FORK \
|
||||
| SD_BALANCE_EXEC \
|
||||
| SD_SERIALIZE \
|
||||
| SD_WAKE_BALANCE, \
|
||||
.last_balance = jiffies, \
|
||||
.balance_interval = 1, \
|
||||
}
|
||||
|
||||
#else /* CONFIG_NUMA */
|
||||
|
||||
#include <asm-generic/topology.h>
|
||||
|
||||
#endif /* !(CONFIG_NUMA) */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#define topology_physical_package_id(cpu) (cpu_data(cpu).proc_id)
|
||||
#define topology_core_id(cpu) (cpu_data(cpu).core_id)
|
||||
@@ -10,8 +81,6 @@
|
||||
#define smt_capable() (sparc64_multi_core)
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#include <asm-generic/topology.h>
|
||||
|
||||
#define cpu_coregroup_map(cpu) (cpu_core_map[cpu])
|
||||
|
||||
#endif /* _ASM_SPARC64_TOPOLOGY_H */
|
||||
|
@@ -28,7 +28,7 @@
|
||||
call routine; \
|
||||
add %sp, PTREGS_OFF, %o0; \
|
||||
ba,pt %xcc, rtrap; \
|
||||
clr %l6; \
|
||||
nop; \
|
||||
nop;
|
||||
|
||||
#define TRAP_7INSNS(routine) \
|
||||
@@ -38,7 +38,7 @@
|
||||
call routine; \
|
||||
add %sp, PTREGS_OFF, %o0; \
|
||||
ba,pt %xcc, rtrap; \
|
||||
clr %l6;
|
||||
nop;
|
||||
|
||||
#define TRAP_SAVEFPU(routine) \
|
||||
sethi %hi(109f), %g7; \
|
||||
@@ -47,7 +47,7 @@
|
||||
call routine; \
|
||||
add %sp, PTREGS_OFF, %o0; \
|
||||
ba,pt %xcc, rtrap; \
|
||||
clr %l6; \
|
||||
nop; \
|
||||
nop;
|
||||
|
||||
#define TRAP_NOSAVE(routine) \
|
||||
@@ -67,7 +67,7 @@
|
||||
call routine; \
|
||||
add %sp, PTREGS_OFF, %o0; \
|
||||
ba,pt %xcc, rtrap; \
|
||||
clr %l6; \
|
||||
nop; \
|
||||
nop;
|
||||
|
||||
#define TRAP_ARG(routine, arg) \
|
||||
@@ -78,7 +78,7 @@
|
||||
call routine; \
|
||||
mov arg, %o1; \
|
||||
ba,pt %xcc, rtrap; \
|
||||
clr %l6;
|
||||
nop;
|
||||
|
||||
#define TRAPTL1_ARG(routine, arg) \
|
||||
sethi %hi(109f), %g7; \
|
||||
@@ -88,7 +88,7 @@
|
||||
call routine; \
|
||||
mov arg, %o1; \
|
||||
ba,pt %xcc, rtrap; \
|
||||
clr %l6;
|
||||
nop;
|
||||
|
||||
#define SYSCALL_TRAP(routine, systbl) \
|
||||
sethi %hi(109f), %g7; \
|
||||
@@ -166,7 +166,7 @@
|
||||
ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1; \
|
||||
add %l1, 4, %l2; \
|
||||
stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC]; \
|
||||
ba,pt %xcc, rtrap_clr_l6; \
|
||||
ba,pt %xcc, rtrap; \
|
||||
stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC];
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
|
Reference in New Issue
Block a user