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
nexedi
linux
Commits
4d54d1dd
Commit
4d54d1dd
authored
Mar 26, 2003
by
Anton Blanchard
Browse files
Options
Browse Files
Download
Plain Diff
Merge samba.org:/scratch/anton/export
into samba.org:/scratch/anton/linux-2.5_ppc64
parents
15dbac49
bf49e6b4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
5 deletions
+22
-5
arch/ppc64/kernel/stab.c
arch/ppc64/kernel/stab.c
+22
-5
No files found.
arch/ppc64/kernel/stab.c
View file @
4d54d1dd
...
...
@@ -197,11 +197,23 @@ void make_slbe(unsigned long esid, unsigned long vsid, int large)
PMC_SW_PROCESSOR
(
stab_capacity_castouts
);
/*
* Never cast out the segment for our kernel stack. Since we
* dont invalidate the ERAT we could have a valid translation
* for the kernel stack during the first part of exception exit
* which gets invalidated due to a tlbie from another cpu at a
* non recoverable point (after setting srr0/1) - Anton
*/
castout_entry
=
get_paca
()
->
xStab_data
.
next_round_robin
;
entry
=
castout_entry
;
castout_entry
++
;
if
(
castout_entry
>=
naca
->
slb_size
)
castout_entry
=
1
;
do
{
entry
=
castout_entry
;
castout_entry
++
;
if
(
castout_entry
>=
naca
->
slb_size
)
castout_entry
=
1
;
asm
volatile
(
"slbmfee %0,%1"
:
"=r"
(
esid_data
)
:
"r"
(
entry
));
}
while
(
esid_data
.
data
.
esid
==
GET_ESID
((
unsigned
long
)
_get_SP
())
&&
esid_data
.
data
.
v
);
get_paca
()
->
xStab_data
.
next_round_robin
=
castout_entry
;
/* slbie not needed as the previous mapping is still valid. */
...
...
@@ -346,7 +358,12 @@ static void preload_stab(struct task_struct *tsk, struct mm_struct *mm)
void
flush_stab
(
struct
task_struct
*
tsk
,
struct
mm_struct
*
mm
)
{
if
(
cpu_has_slb
())
{
if
(
!
STAB_PRESSURE
&&
test_thread_flag
(
TIF_32BIT
))
{
/*
* XXX disable 32bit slb invalidate optimisation until we fix
* the issue where a 32bit app execed out of a 64bit app can
* cause segments above 4GB not to be flushed - Anton
*/
if
(
0
&&
!
STAB_PRESSURE
&&
test_thread_flag
(
TIF_32BIT
))
{
union
{
unsigned
long
word0
;
slb_dword0
data
;
...
...
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