Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci-2.6.23
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
...
@@ -357,7 +357,6 @@ config HOTPLUG_CPU
config PROC_DEVICETREE
config PROC_DEVICETREE
bool "Support for Open Firmware device tree in /proc"
bool "Support for Open Firmware device tree in /proc"
depends on !PPC_ISERIES
help
help
This option adds a device-tree directory under /proc which contains
This option adds a device-tree directory under /proc which contains
an image of the device tree that the kernel copies from Open
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 \
...
@@ -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
\
udbg.o binfmt_elf32.o sys_ppc32.o ioctl32.o
\
ptrace32.o signal32.o rtc.o init_task.o
\
ptrace32.o signal32.o rtc.o init_task.o
\
lmb.o cputable.o cpu_setup_power4.o idle_power4.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-y
+=
vdso32/ vdso64/
obj-$(CONFIG_PPC_OF)
+=
of_device.o
obj-$(CONFIG_PPC_OF)
+=
of_device.o
...
@@ -27,7 +27,7 @@ obj-$(CONFIG_PPC_ISERIES) += HvCall.o HvLpConfig.o LparData.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
\
mf.o HvLpEvent.o iSeries_proc.o iSeries_htab.o
\
iSeries_iommu.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
\
obj-$(CONFIG_PPC_PSERIES)
+=
pSeries_pci.o pSeries_lpar.o pSeries_hvCall.o
\
pSeries_nvram.o rtasd.o ras.o pSeries_reconfig.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)
...
@@ -1364,6 +1364,7 @@ _STATIC(__start_initialization_iSeries)
addi
r2
,
r2
,
0x4000
addi
r2
,
r2
,
0x4000
bl
.
iSeries_early_setup
bl
.
iSeries_early_setup
bl
.
early_setup
/
*
relocation
is
on
at
this
point
*/
/
*
relocation
is
on
at
this
point
*/
...
@@ -1970,20 +1971,22 @@ _GLOBAL(hmt_start_secondary)
...
@@ -1970,20 +1971,22 @@ _GLOBAL(hmt_start_secondary)
blr
blr
#endif
#endif
#if defined(CONFIG_KEXEC) ||
(defined(CONFIG_SMP) && !defined(CONFIG_PPC_ISERIES)
)
#if defined(CONFIG_KEXEC) ||
defined(CONFIG_SMP
)
_GLOBAL
(
smp_release_cpus
)
_GLOBAL
(
smp_release_cpus
)
/
*
All
secondary
cpus
are
spinning
on
a
common
/
*
All
secondary
cpus
are
spinning
on
a
common
*
spinloop
,
release
them
all
now
so
they
can
start
*
spinloop
,
release
them
all
now
so
they
can
start
*
to
spin
on
their
individual
paca
spinloops
.
*
to
spin
on
their
individual
paca
spinloops
.
*
For
non
SMP
kernels
,
the
secondary
cpus
never
*
For
non
SMP
kernels
,
the
secondary
cpus
never
*
get
out
of
the
common
spinloop
.
*
get
out
of
the
common
spinloop
.
*
XXX
This
does
nothing
useful
on
iSeries
,
secondaries
are
*
already
waiting
on
their
paca
.
*/
*/
li
r3
,
1
li
r3
,
1
LOADADDR
(
r5
,
__secondary_hold_spinloop
)
LOADADDR
(
r5
,
__secondary_hold_spinloop
)
std
r3
,
0
(
r5
)
std
r3
,
0
(
r5
)
sync
sync
blr
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,
...
@@ -84,6 +84,25 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va,
return
(
secondary
<<
3
)
|
(
slot
&
7
);
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
)
static
unsigned
long
iSeries_hpte_getword0
(
unsigned
long
slot
)
{
{
hpte_t
hpte
;
hpte_t
hpte
;
...
...
arch/ppc64/kernel/iSeries_irq.c
View file @
51a0885e
...
@@ -351,3 +351,16 @@ int __init iSeries_allocate_IRQ(HvBusNumber busNumber,
...
@@ -351,3 +351,16 @@ int __init iSeries_allocate_IRQ(HvBusNumber busNumber,
irq_desc
[
virtirq
].
handler
=
&
iSeries_IRQ_handler
;
irq_desc
[
virtirq
].
handler
=
&
iSeries_IRQ_handler
;
return
virtirq
;
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)
...
@@ -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
)
static
int
smp_iSeries_probe
(
void
)
{
{
unsigned
i
;
return
cpus_weight
(
cpu_possible_map
);
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
;
}
}
static
void
smp_iSeries_kick_cpu
(
int
nr
)
static
void
smp_iSeries_kick_cpu
(
int
nr
)
...
@@ -144,6 +118,4 @@ static struct smp_ops_t iSeries_smp_ops = {
...
@@ -144,6 +118,4 @@ static struct smp_ops_t iSeries_smp_ops = {
void
__init
smp_init_iSeries
(
void
)
void
__init
smp_init_iSeries
(
void
)
{
{
smp_ops
=
&
iSeries_smp_ops
;
smp_ops
=
&
iSeries_smp_ops
;
systemcfg
->
processorCount
=
smp_iSeries_numProcs
();
}
}
arch/ppc64/kernel/setup.c
View file @
51a0885e
...
@@ -58,6 +58,7 @@
...
@@ -58,6 +58,7 @@
#include <asm/mmu.h>
#include <asm/mmu.h>
#include <asm/lmb.h>
#include <asm/lmb.h>
#include <asm/iSeries/ItLpNaca.h>
#include <asm/iSeries/ItLpNaca.h>
#include <asm/firmware.h>
#ifdef DEBUG
#ifdef DEBUG
#define DBG(fmt...) udbg_printf(fmt)
#define DBG(fmt...) udbg_printf(fmt)
...
@@ -153,7 +154,7 @@ struct screen_info screen_info = {
...
@@ -153,7 +154,7 @@ struct screen_info screen_info = {
.
orig_video_points
=
16
.
orig_video_points
=
16
};
};
#if
defined(CONFIG_PPC_MULTIPLATFORM) && defined(CONFIG_SMP)
#if
def CONFIG_SMP
static
int
smt_enabled_cmdline
;
static
int
smt_enabled_cmdline
;
...
@@ -306,15 +307,13 @@ static void __init setup_cpu_maps(void)
...
@@ -306,15 +307,13 @@ static void __init setup_cpu_maps(void)
systemcfg
->
processorCount
=
num_present_cpus
();
systemcfg
->
processorCount
=
num_present_cpus
();
}
}
#endif
/* defined(CONFIG_PPC_MULTIPLATFORM) && defined(CONFIG_SMP) */
#endif
/* CONFIG_SMP */
#ifdef CONFIG_PPC_MULTIPLATFORM
extern
struct
machdep_calls
pSeries_md
;
extern
struct
machdep_calls
pSeries_md
;
extern
struct
machdep_calls
pmac_md
;
extern
struct
machdep_calls
pmac_md
;
extern
struct
machdep_calls
maple_md
;
extern
struct
machdep_calls
maple_md
;
extern
struct
machdep_calls
bpa_md
;
extern
struct
machdep_calls
bpa_md
;
extern
struct
machdep_calls
iseries_md
;
/* Ultimately, stuff them in an elf section like initcalls... */
/* Ultimately, stuff them in an elf section like initcalls... */
static
struct
machdep_calls
__initdata
*
machines
[]
=
{
static
struct
machdep_calls
__initdata
*
machines
[]
=
{
...
@@ -329,6 +328,9 @@ static struct machdep_calls __initdata *machines[] = {
...
@@ -329,6 +328,9 @@ static struct machdep_calls __initdata *machines[] = {
#endif
/* CONFIG_PPC_MAPLE */
#endif
/* CONFIG_PPC_MAPLE */
#ifdef CONFIG_PPC_BPA
#ifdef CONFIG_PPC_BPA
&
bpa_md
,
&
bpa_md
,
#endif
#ifdef CONFIG_PPC_ISERIES
&
iseries_md
,
#endif
#endif
NULL
NULL
};
};
...
@@ -401,7 +403,8 @@ void __init early_setup(unsigned long dt_ptr)
...
@@ -401,7 +403,8 @@ void __init early_setup(unsigned long dt_ptr)
/*
/*
* Initialize stab / SLB management
* 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
* Initialize the MMU Hash table and create the linear mapping
...
@@ -532,8 +535,6 @@ static void __init check_for_initrd(void)
...
@@ -532,8 +535,6 @@ static void __init check_for_initrd(void)
#endif
/* CONFIG_BLK_DEV_INITRD */
#endif
/* CONFIG_BLK_DEV_INITRD */
}
}
#endif
/* CONFIG_PPC_MULTIPLATFORM */
/*
/*
* Do some initial setup of the system. The parameters are those which
* Do some initial setup of the system. The parameters are those which
* were passed in from the bootloader.
* were passed in from the bootloader.
...
@@ -542,14 +543,6 @@ void __init setup_system(void)
...
@@ -542,14 +543,6 @@ void __init setup_system(void)
{
{
DBG
(
" -> setup_system()
\n
"
);
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
* Unflatten the device-tree passed by prom_init or kexec
*/
*/
...
@@ -607,9 +600,8 @@ void __init setup_system(void)
...
@@ -607,9 +600,8 @@ void __init setup_system(void)
strlcpy
(
saved_command_line
,
cmd_line
,
COMMAND_LINE_SIZE
);
strlcpy
(
saved_command_line
,
cmd_line
,
COMMAND_LINE_SIZE
);
parse_early_param
();
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.
* iSeries has already initialized the cpu maps at this point.
*/
*/
...
@@ -619,7 +611,7 @@ void __init setup_system(void)
...
@@ -619,7 +611,7 @@ void __init setup_system(void)
* we can map physical -> logical CPU ids
* we can map physical -> logical CPU ids
*/
*/
smp_release_cpus
();
smp_release_cpus
();
#endif
/* defined(CONFIG_SMP) && !defined(CONFIG_PPC_ISERIES) */
#endif
printk
(
"Starting Linux PPC64 %s
\n
"
,
system_utsname
.
version
);
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)
...
@@ -465,7 +465,7 @@ int do_settimeofday(struct timespec *tv)
EXPORT_SYMBOL
(
do_settimeofday
);
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
)
void
__init
generic_calibrate_decr
(
void
)
{
{
struct
device_node
*
cpu
;
struct
device_node
*
cpu
;
...
...
arch/ppc64/mm/hash_utils.c
View file @
51a0885e
...
@@ -90,7 +90,6 @@ static inline void loop_forever(void)
...
@@ -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
,
static
inline
void
create_pte_mapping
(
unsigned
long
start
,
unsigned
long
end
,
unsigned
long
mode
,
int
large
)
unsigned
long
mode
,
int
large
)
{
{
...
@@ -111,7 +110,7 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end,
...
@@ -111,7 +110,7 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end,
unsigned
long
vpn
,
hash
,
hpteg
;
unsigned
long
vpn
,
hash
,
hpteg
;
unsigned
long
vsid
=
get_kernel_vsid
(
addr
);
unsigned
long
vsid
=
get_kernel_vsid
(
addr
);
unsigned
long
va
=
(
vsid
<<
28
)
|
(
addr
&
0xfffffff
);
unsigned
long
va
=
(
vsid
<<
28
)
|
(
addr
&
0xfffffff
);
int
ret
;
int
ret
=
-
1
;
if
(
large
)
if
(
large
)
vpn
=
va
>>
HPAGE_SHIFT
;
vpn
=
va
>>
HPAGE_SHIFT
;
...
@@ -129,16 +128,25 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end,
...
@@ -129,16 +128,25 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end,
hpteg
=
((
hash
&
htab_hash_mask
)
*
HPTES_PER_GROUP
);
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
#ifdef CONFIG_PPC_PSERIES
if
(
systemcfg
->
platform
&
PLATFORM_LPAR
)
if
(
systemcfg
->
platform
&
PLATFORM_LPAR
)
ret
=
pSeries_lpar_hpte_insert
(
hpteg
,
va
,
ret
=
pSeries_lpar_hpte_insert
(
hpteg
,
va
,
virt_to_abs
(
addr
)
>>
PAGE_SHIFT
,
virt_to_abs
(
addr
)
>>
PAGE_SHIFT
,
vflags
,
tmp_mode
);
vflags
,
tmp_mode
);
else
else
#endif
/* CONFIG_PPC_PSERIES */
#endif
#ifdef CONFIG_PPC_MULTIPLATFORM
ret
=
native_hpte_insert
(
hpteg
,
va
,
ret
=
native_hpte_insert
(
hpteg
,
va
,
virt_to_abs
(
addr
)
>>
PAGE_SHIFT
,
virt_to_abs
(
addr
)
>>
PAGE_SHIFT
,
vflags
,
tmp_mode
);
vflags
,
tmp_mode
);
#endif
if
(
ret
==
-
1
)
{
if
(
ret
==
-
1
)
{
ppc64_terminate_msg
(
0x20
,
"create_pte_mapping"
);
ppc64_terminate_msg
(
0x20
,
"create_pte_mapping"
);
...
@@ -261,7 +269,6 @@ void __init htab_initialize(void)
...
@@ -261,7 +269,6 @@ void __init htab_initialize(void)
}
}
#undef KB
#undef KB
#undef MB
#undef MB
#endif
/* CONFIG_PPC_MULTIPLATFORM */
/*
/*
* Called by asm hashtable.S for doing lazy icache flush
* 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,
...
@@ -206,6 +206,10 @@ extern long native_hpte_insert(unsigned long hpte_group, unsigned long va,
unsigned
long
prpn
,
unsigned
long
prpn
,
unsigned
long
vflags
,
unsigned
long
rflags
);
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
);
extern
void
stabs_alloc
(
void
);
#endif
/* __ASSEMBLY__ */
#endif
/* __ASSEMBLY__ */
...
...
include/asm-ppc64/processor.h
View file @
51a0885e
...
@@ -291,6 +291,7 @@
...
@@ -291,6 +291,7 @@
#define IC_OPEN_PIC 1
#define IC_OPEN_PIC 1
#define IC_PPC_XIC 2
#define IC_PPC_XIC 2
#define IC_BPA_IIC 3
#define IC_BPA_IIC 3
#define IC_ISERIES 4
#define XGLUE(a,b) a##b
#define XGLUE(a,b) a##b
#define GLUE(a,b) XGLUE(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