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
d371c0c1
Commit
d371c0c1
authored
Feb 21, 2006
by
David S. Miller
Committed by
David S. Miller
Mar 20, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC64]: Pass multiple CPUs at once to hypervisor cross-call API.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
c79f7677
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
54 deletions
+0
-54
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/smp.c
+0
-54
No files found.
arch/sparc64/kernel/smp.c
View file @
d371c0c1
...
@@ -557,7 +557,6 @@ retry:
...
@@ -557,7 +557,6 @@ retry:
}
}
}
}
#if 0
/* Multi-cpu list version. */
/* Multi-cpu list version. */
static
int
init_cpu_list
(
u16
*
list
,
cpumask_t
mask
)
static
int
init_cpu_list
(
u16
*
list
,
cpumask_t
mask
)
{
{
...
@@ -631,59 +630,6 @@ static void hypervisor_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t
...
@@ -631,59 +630,6 @@ static void hypervisor_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t
put_cpu
();
put_cpu
();
}
}
#else
/* Single-cpu list version. */
static
void
hypervisor_xcall_deliver
(
u64
data0
,
u64
data1
,
u64
data2
,
cpumask_t
mask
)
{
int
this_cpu
=
get_cpu
();
struct
trap_per_cpu
*
tb
=
&
trap_block
[
this_cpu
];
u64
*
mondo
=
__va
(
tb
->
cpu_mondo_block_pa
);
u16
*
cpu_list
=
__va
(
tb
->
cpu_list_pa
);
int
i
;
mondo
[
0
]
=
data0
;
mondo
[
1
]
=
data1
;
mondo
[
2
]
=
data2
;
wmb
();
for_each_cpu_mask
(
i
,
mask
)
{
int
retries
=
0
;
do
{
register
unsigned
long
func
__asm__
(
"%o5"
);
register
unsigned
long
arg0
__asm__
(
"%o0"
);
register
unsigned
long
arg1
__asm__
(
"%o1"
);
register
unsigned
long
arg2
__asm__
(
"%o2"
);
cpu_list
[
0
]
=
i
;
func
=
HV_FAST_CPU_MONDO_SEND
;
arg0
=
1
;
arg1
=
tb
->
cpu_list_pa
;
arg2
=
tb
->
cpu_mondo_block_pa
;
__asm__
__volatile__
(
"ta %8"
:
"=&r"
(
func
),
"=&r"
(
arg0
),
"=&r"
(
arg1
),
"=&r"
(
arg2
)
:
"0"
(
func
),
"1"
(
arg0
),
"2"
(
arg1
),
"3"
(
arg2
),
"i"
(
HV_FAST_TRAP
)
:
"memory"
);
if
(
likely
(
arg0
==
HV_EOK
))
break
;
if
(
unlikely
(
++
retries
>
100
))
{
printk
(
"CPU[%d]: sun4v mondo error %lu
\n
"
,
this_cpu
,
func
);
break
;
}
udelay
(
2
*
i
);
}
while
(
1
);
}
put_cpu
();
}
#endif
/* Send cross call to all processors mentioned in MASK
/* Send cross call to all processors mentioned in MASK
* except self.
* except self.
...
...
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