Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
51a0885e
Commit
51a0885e
authored
Sep 26, 2005
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge refs/heads/devtree from
rsync://oak/kernels/iseries/work/.git
parents
14cf11af
3d8a66cc
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
313 additions
and
273 deletions
+313
-273
arch/ppc64/Kconfig
arch/ppc64/Kconfig
+0
-1
arch/ppc64/kernel/Makefile
arch/ppc64/kernel/Makefile
+2
-2
arch/ppc64/kernel/head.S
arch/ppc64/kernel/head.S
+5
-2
arch/ppc64/kernel/iSeries_htab.c
arch/ppc64/kernel/iSeries_htab.c
+19
-0
arch/ppc64/kernel/iSeries_irq.c
arch/ppc64/kernel/iSeries_irq.c
+13
-0
arch/ppc64/kernel/iSeries_setup.c
arch/ppc64/kernel/iSeries_setup.c
+245
-215
arch/ppc64/kernel/iSeries_smp.c
arch/ppc64/kernel/iSeries_smp.c
+1
-29
arch/ppc64/kernel/setup.c
arch/ppc64/kernel/setup.c
+11
-19
arch/ppc64/kernel/time.c
arch/ppc64/kernel/time.c
+1
-1
arch/ppc64/mm/hash_utils.c
arch/ppc64/mm/hash_utils.c
+11
-4
include/asm-ppc64/mmu.h
include/asm-ppc64/mmu.h
+4
-0
include/asm-ppc64/processor.h
include/asm-ppc64/processor.h
+1
-0
No files found.
arch/ppc64/Kconfig
View file @
51a0885e
...
...
@@ -357,7 +357,6 @@ config HOTPLUG_CPU
config PROC_DEVICETREE
bool "Support for Open Firmware device tree in /proc"
depends on !PPC_ISERIES
help
This option adds a device-tree directory under /proc which contains
an image of the device tree that the kernel copies from Open
...
...
arch/ppc64/kernel/Makefile
View file @
51a0885e
...
...
@@ -11,7 +11,7 @@ obj-y := setup.o entry.o traps.o irq.o idle.o dma.o \
udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o
\
ptrace32.o signal32.o rtc.o init_task.o
\
lmb.o cputable.o cpu_setup_power4.o idle_power4.o
\
iommu.o sysfs.o vdso.o pmc.o firmware.o
iommu.o sysfs.o vdso.o pmc.o firmware.o
prom.o
obj-y
+=
vdso32/ vdso64/
obj-$(CONFIG_PPC_OF)
+=
of_device.o
...
...
@@ -27,7 +27,7 @@ obj-$(CONFIG_PPC_ISERIES) += HvCall.o HvLpConfig.o LparData.o \
mf.o HvLpEvent.o iSeries_proc.o iSeries_htab.o
\
iSeries_iommu.o
obj-$(CONFIG_PPC_MULTIPLATFORM)
+=
nvram.o i8259.o prom_init.o
prom.o
obj-$(CONFIG_PPC_MULTIPLATFORM)
+=
nvram.o i8259.o prom_init.o
obj-$(CONFIG_PPC_PSERIES)
+=
pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o
\
pSeries_nvram.o rtasd.o ras.o pSeries_reconfig.o
\
...
...
arch/ppc64/kernel/head.S
View file @
51a0885e
...
...
@@ -1364,6 +1364,7 @@ _STATIC(__start_initialization_iSeries)
addi
r2
,
r2
,
0x4000
bl
.
iSeries_early_setup
bl
.
early_setup
/
*
relocation
is
on
at
this
point
*/
...
...
@@ -1970,20 +1971,22 @@ _GLOBAL(hmt_start_secondary)
blr
#endif
#if defined(CONFIG_KEXEC) ||
(defined(CONFIG_SMP) && !defined(CONFIG_PPC_ISERIES)
)
#if defined(CONFIG_KEXEC) ||
defined(CONFIG_SMP
)
_GLOBAL
(
smp_release_cpus
)
/
*
All
secondary
cpus
are
spinning
on
a
common
*
spinloop
,
release
them
all
now
so
they
can
start
*
to
spin
on
their
individual
paca
spinloops
.
*
For
non
SMP
kernels
,
the
secondary
cpus
never
*
get
out
of
the
common
spinloop
.
*
XXX
This
does
nothing
useful
on
iSeries
,
secondaries
are
*
already
waiting
on
their
paca
.
*/
li
r3
,
1
LOADADDR
(
r5
,
__secondary_hold_spinloop
)
std
r3
,
0
(
r5
)
sync
blr
#endif /* CONFIG_SMP
&& !CONFIG_PPC_ISERIES
*/
#endif /* CONFIG_SMP */
/*
...
...
arch/ppc64/kernel/iSeries_htab.c
View file @
51a0885e
...
...
@@ -84,6 +84,25 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va,
return
(
secondary
<<
3
)
|
(
slot
&
7
);
}
long
iSeries_hpte_bolt_or_insert
(
unsigned
long
hpte_group
,
unsigned
long
va
,
unsigned
long
prpn
,
unsigned
long
vflags
,
unsigned
long
rflags
)
{
long
slot
;
hpte_t
lhpte
;
slot
=
HvCallHpt_findValid
(
&
lhpte
,
va
>>
PAGE_SHIFT
);
if
(
lhpte
.
v
&
HPTE_V_VALID
)
{
/* Bolt the existing HPTE */
HvCallHpt_setSwBits
(
slot
,
0x10
,
0
);
HvCallHpt_setPp
(
slot
,
PP_RWXX
);
return
0
;
}
return
iSeries_hpte_insert
(
hpte_group
,
va
,
prpn
,
vflags
,
rflags
);
}
static
unsigned
long
iSeries_hpte_getword0
(
unsigned
long
slot
)
{
hpte_t
hpte
;
...
...
arch/ppc64/kernel/iSeries_irq.c
View file @
51a0885e
...
...
@@ -351,3 +351,16 @@ int __init iSeries_allocate_IRQ(HvBusNumber busNumber,
irq_desc
[
virtirq
].
handler
=
&
iSeries_IRQ_handler
;
return
virtirq
;
}
int
virt_irq_create_mapping
(
unsigned
int
real_irq
)
{
BUG
();
/* Don't call this on iSeries, yet */
return
0
;
}
void
virt_irq_init
(
void
)
{
return
;
}
arch/ppc64/kernel/iSeries_setup.c
View file @
51a0885e
This diff is collapsed.
Click to expand it.
arch/ppc64/kernel/iSeries_smp.c
View file @
51a0885e
...
...
@@ -82,35 +82,9 @@ static void smp_iSeries_message_pass(int target, int msg)
}
}
static
int
smp_iSeries_numProcs
(
void
)
{
unsigned
np
,
i
;
np
=
0
;
for
(
i
=
0
;
i
<
NR_CPUS
;
++
i
)
{
if
(
paca
[
i
].
lppaca
.
dyn_proc_status
<
2
)
{
cpu_set
(
i
,
cpu_possible_map
);
cpu_set
(
i
,
cpu_present_map
);
cpu_set
(
i
,
cpu_sibling_map
[
i
]);
++
np
;
}
}
return
np
;
}
static
int
smp_iSeries_probe
(
void
)
{
unsigned
i
;
unsigned
np
=
0
;
for
(
i
=
0
;
i
<
NR_CPUS
;
++
i
)
{
if
(
paca
[
i
].
lppaca
.
dyn_proc_status
<
2
)
{
/*paca[i].active = 1;*/
++
np
;
}
}
return
np
;
return
cpus_weight
(
cpu_possible_map
);
}
static
void
smp_iSeries_kick_cpu
(
int
nr
)
...
...
@@ -144,6 +118,4 @@ static struct smp_ops_t iSeries_smp_ops = {
void
__init
smp_init_iSeries
(
void
)
{
smp_ops
=
&
iSeries_smp_ops
;
systemcfg
->
processorCount
=
smp_iSeries_numProcs
();
}
arch/ppc64/kernel/setup.c
View file @
51a0885e
...
...
@@ -58,6 +58,7 @@
#include <asm/mmu.h>
#include <asm/lmb.h>
#include <asm/iSeries/ItLpNaca.h>
#include <asm/firmware.h>
#ifdef DEBUG
#define DBG(fmt...) udbg_printf(fmt)
...
...
@@ -153,7 +154,7 @@ struct screen_info screen_info = {
.
orig_video_points
=
16
};
#if
defined(CONFIG_PPC_MULTIPLATFORM) && defined(CONFIG_SMP)
#if
def CONFIG_SMP
static
int
smt_enabled_cmdline
;
...
...
@@ -306,15 +307,13 @@ static void __init setup_cpu_maps(void)
systemcfg
->
processorCount
=
num_present_cpus
();
}
#endif
/* defined(CONFIG_PPC_MULTIPLATFORM) && defined(CONFIG_SMP) */
#ifdef CONFIG_PPC_MULTIPLATFORM
#endif
/* CONFIG_SMP */
extern
struct
machdep_calls
pSeries_md
;
extern
struct
machdep_calls
pmac_md
;
extern
struct
machdep_calls
maple_md
;
extern
struct
machdep_calls
bpa_md
;
extern
struct
machdep_calls
iseries_md
;
/* Ultimately, stuff them in an elf section like initcalls... */
static
struct
machdep_calls
__initdata
*
machines
[]
=
{
...
...
@@ -329,6 +328,9 @@ static struct machdep_calls __initdata *machines[] = {
#endif
/* CONFIG_PPC_MAPLE */
#ifdef CONFIG_PPC_BPA
&
bpa_md
,
#endif
#ifdef CONFIG_PPC_ISERIES
&
iseries_md
,
#endif
NULL
};
...
...
@@ -401,7 +403,8 @@ void __init early_setup(unsigned long dt_ptr)
/*
* Initialize stab / SLB management
*/
stab_initialize
(
lpaca
->
stab_real
);
if
(
!
firmware_has_feature
(
FW_FEATURE_ISERIES
))
stab_initialize
(
lpaca
->
stab_real
);
/*
* Initialize the MMU Hash table and create the linear mapping
...
...
@@ -532,8 +535,6 @@ static void __init check_for_initrd(void)
#endif
/* CONFIG_BLK_DEV_INITRD */
}
#endif
/* CONFIG_PPC_MULTIPLATFORM */
/*
* Do some initial setup of the system. The parameters are those which
* were passed in from the bootloader.
...
...
@@ -542,14 +543,6 @@ void __init setup_system(void)
{
DBG
(
" -> setup_system()
\n
"
);
#ifdef CONFIG_PPC_ISERIES
/* pSeries systems are identified in prom.c via OF. */
if
(
itLpNaca
.
xLparInstalled
==
1
)
systemcfg
->
platform
=
PLATFORM_ISERIES_LPAR
;
ppc_md
.
init_early
();
#else
/* CONFIG_PPC_ISERIES */
/*
* Unflatten the device-tree passed by prom_init or kexec
*/
...
...
@@ -607,9 +600,8 @@ void __init setup_system(void)
strlcpy
(
saved_command_line
,
cmd_line
,
COMMAND_LINE_SIZE
);
parse_early_param
();
#endif
/* !CONFIG_PPC_ISERIES */
#if
defined(CONFIG_SMP) && !defined(CONFIG_PPC_ISERIES)
#if
def CONFIG_SMP
/*
* iSeries has already initialized the cpu maps at this point.
*/
...
...
@@ -619,7 +611,7 @@ void __init setup_system(void)
* we can map physical -> logical CPU ids
*/
smp_release_cpus
();
#endif
/* defined(CONFIG_SMP) && !defined(CONFIG_PPC_ISERIES) */
#endif
printk
(
"Starting Linux PPC64 %s
\n
"
,
system_utsname
.
version
);
...
...
arch/ppc64/kernel/time.c
View file @
51a0885e
...
...
@@ -465,7 +465,7 @@ int do_settimeofday(struct timespec *tv)
EXPORT_SYMBOL
(
do_settimeofday
);
#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_MAPLE) || defined(CONFIG_PPC_BPA)
#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_MAPLE) || defined(CONFIG_PPC_BPA)
|| defined(CONFIG_PPC_ISERIES)
void
__init
generic_calibrate_decr
(
void
)
{
struct
device_node
*
cpu
;
...
...
arch/ppc64/mm/hash_utils.c
View file @
51a0885e
...
...
@@ -90,7 +90,6 @@ static inline void loop_forever(void)
;
}
#ifdef CONFIG_PPC_MULTIPLATFORM
static
inline
void
create_pte_mapping
(
unsigned
long
start
,
unsigned
long
end
,
unsigned
long
mode
,
int
large
)
{
...
...
@@ -111,7 +110,7 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end,
unsigned
long
vpn
,
hash
,
hpteg
;
unsigned
long
vsid
=
get_kernel_vsid
(
addr
);
unsigned
long
va
=
(
vsid
<<
28
)
|
(
addr
&
0xfffffff
);
int
ret
;
int
ret
=
-
1
;
if
(
large
)
vpn
=
va
>>
HPAGE_SHIFT
;
...
...
@@ -129,16 +128,25 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end,
hpteg
=
((
hash
&
htab_hash_mask
)
*
HPTES_PER_GROUP
);
#ifdef CONFIG_PPC_ISERIES
if
(
systemcfg
->
platform
&
PLATFORM_ISERIES_LPAR
)
ret
=
iSeries_hpte_bolt_or_insert
(
hpteg
,
va
,
virt_to_abs
(
addr
)
>>
PAGE_SHIFT
,
vflags
,
tmp_mode
);
else
#endif
#ifdef CONFIG_PPC_PSERIES
if
(
systemcfg
->
platform
&
PLATFORM_LPAR
)
ret
=
pSeries_lpar_hpte_insert
(
hpteg
,
va
,
virt_to_abs
(
addr
)
>>
PAGE_SHIFT
,
vflags
,
tmp_mode
);
else
#endif
/* CONFIG_PPC_PSERIES */
#endif
#ifdef CONFIG_PPC_MULTIPLATFORM
ret
=
native_hpte_insert
(
hpteg
,
va
,
virt_to_abs
(
addr
)
>>
PAGE_SHIFT
,
vflags
,
tmp_mode
);
#endif
if
(
ret
==
-
1
)
{
ppc64_terminate_msg
(
0x20
,
"create_pte_mapping"
);
...
...
@@ -261,7 +269,6 @@ void __init htab_initialize(void)
}
#undef KB
#undef MB
#endif
/* CONFIG_PPC_MULTIPLATFORM */
/*
* Called by asm hashtable.S for doing lazy icache flush
...
...
include/asm-ppc64/mmu.h
View file @
51a0885e
...
...
@@ -206,6 +206,10 @@ extern long native_hpte_insert(unsigned long hpte_group, unsigned long va,
unsigned
long
prpn
,
unsigned
long
vflags
,
unsigned
long
rflags
);
extern
long
iSeries_hpte_bolt_or_insert
(
unsigned
long
hpte_group
,
unsigned
long
va
,
unsigned
long
prpn
,
unsigned
long
vflags
,
unsigned
long
rflags
);
extern
void
stabs_alloc
(
void
);
#endif
/* __ASSEMBLY__ */
...
...
include/asm-ppc64/processor.h
View file @
51a0885e
...
...
@@ -291,6 +291,7 @@
#define IC_OPEN_PIC 1
#define IC_PPC_XIC 2
#define IC_BPA_IIC 3
#define IC_ISERIES 4
#define XGLUE(a,b) a##b
#define GLUE(a,b) XGLUE(a,b)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment