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
cbe9ee00
Commit
cbe9ee00
authored
Nov 18, 2008
by
Ingo Molnar
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'x86/urgent' into x86/cleanups
parents
0bd7b798
10db4ef7
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
45 additions
and
23 deletions
+45
-23
arch/x86/Kconfig
arch/x86/Kconfig
+4
-1
arch/x86/include/asm/iomap.h
arch/x86/include/asm/iomap.h
+0
-0
arch/x86/kernel/ds.c
arch/x86/kernel/ds.c
+21
-4
arch/x86/kernel/es7000_32.c
arch/x86/kernel/es7000_32.c
+1
-8
arch/x86/kernel/tsc_sync.c
arch/x86/kernel/tsc_sync.c
+4
-0
arch/x86/mach-voyager/voyager_smp.c
arch/x86/mach-voyager/voyager_smp.c
+14
-2
drivers/xen/balloon.c
drivers/xen/balloon.c
+1
-8
No files found.
arch/x86/Kconfig
View file @
cbe9ee00
...
@@ -167,9 +167,12 @@ config GENERIC_PENDING_IRQ
...
@@ -167,9 +167,12 @@ config GENERIC_PENDING_IRQ
config X86_SMP
config X86_SMP
bool
bool
depends on SMP && ((X86_32 && !X86_VOYAGER) || X86_64)
depends on SMP && ((X86_32 && !X86_VOYAGER) || X86_64)
select USE_GENERIC_SMP_HELPERS
default y
default y
config USE_GENERIC_SMP_HELPERS
def_bool y
depends on SMP
config X86_32_SMP
config X86_32_SMP
def_bool y
def_bool y
depends on X86_32 && SMP
depends on X86_32 && SMP
...
...
include/asm-x86
/iomap.h
→
arch/x86/include/asm
/iomap.h
View file @
cbe9ee00
File moved
arch/x86/kernel/ds.c
View file @
cbe9ee00
...
@@ -236,17 +236,33 @@ static inline struct ds_context *ds_alloc_context(struct task_struct *task)
...
@@ -236,17 +236,33 @@ static inline struct ds_context *ds_alloc_context(struct task_struct *task)
struct
ds_context
*
context
=
*
p_context
;
struct
ds_context
*
context
=
*
p_context
;
if
(
!
context
)
{
if
(
!
context
)
{
spin_unlock
(
&
ds_lock
);
context
=
kzalloc
(
sizeof
(
*
context
),
GFP_KERNEL
);
context
=
kzalloc
(
sizeof
(
*
context
),
GFP_KERNEL
);
if
(
!
context
)
if
(
!
context
)
{
spin_lock
(
&
ds_lock
);
return
NULL
;
return
NULL
;
}
context
->
ds
=
kzalloc
(
ds_cfg
.
sizeof_ds
,
GFP_KERNEL
);
context
->
ds
=
kzalloc
(
ds_cfg
.
sizeof_ds
,
GFP_KERNEL
);
if
(
!
context
->
ds
)
{
if
(
!
context
->
ds
)
{
kfree
(
context
);
kfree
(
context
);
spin_lock
(
&
ds_lock
);
return
NULL
;
return
NULL
;
}
}
spin_lock
(
&
ds_lock
);
/*
* Check for race - another CPU could have allocated
* it meanwhile:
*/
if
(
*
p_context
)
{
kfree
(
context
->
ds
);
kfree
(
context
);
return
*
p_context
;
}
*
p_context
=
context
;
*
p_context
=
context
;
context
->
this
=
p_context
;
context
->
this
=
p_context
;
...
@@ -384,14 +400,15 @@ static int ds_request(struct task_struct *task, void *base, size_t size,
...
@@ -384,14 +400,15 @@ static int ds_request(struct task_struct *task, void *base, size_t size,
spin_lock
(
&
ds_lock
);
spin_lock
(
&
ds_lock
);
if
(
!
check_tracer
(
task
))
return
-
EPERM
;
error
=
-
ENOMEM
;
error
=
-
ENOMEM
;
context
=
ds_alloc_context
(
task
);
context
=
ds_alloc_context
(
task
);
if
(
!
context
)
if
(
!
context
)
goto
out_unlock
;
goto
out_unlock
;
error
=
-
EPERM
;
if
(
!
check_tracer
(
task
))
goto
out_unlock
;
error
=
-
EALREADY
;
error
=
-
EALREADY
;
if
(
context
->
owner
[
qual
]
==
current
)
if
(
context
->
owner
[
qual
]
==
current
)
goto
out_unlock
;
goto
out_unlock
;
...
...
arch/x86/kernel/es7000_32.c
View file @
cbe9ee00
...
@@ -250,31 +250,24 @@ int __init find_unisys_acpi_oem_table(unsigned long *oem_addr)
...
@@ -250,31 +250,24 @@ int __init find_unisys_acpi_oem_table(unsigned long *oem_addr)
{
{
struct
acpi_table_header
*
header
=
NULL
;
struct
acpi_table_header
*
header
=
NULL
;
int
i
=
0
;
int
i
=
0
;
acpi_size
tbl_size
;
while
(
ACPI_SUCCESS
(
acpi_get_table
_with_size
(
"OEM1"
,
i
++
,
&
header
,
&
tbl_size
)))
{
while
(
ACPI_SUCCESS
(
acpi_get_table
(
"OEM1"
,
i
++
,
&
header
)))
{
if
(
!
memcmp
((
char
*
)
&
header
->
oem_id
,
"UNISYS"
,
6
))
{
if
(
!
memcmp
((
char
*
)
&
header
->
oem_id
,
"UNISYS"
,
6
))
{
struct
oem_table
*
t
=
(
struct
oem_table
*
)
header
;
struct
oem_table
*
t
=
(
struct
oem_table
*
)
header
;
oem_addrX
=
t
->
OEMTableAddr
;
oem_addrX
=
t
->
OEMTableAddr
;
oem_size
=
t
->
OEMTableSize
;
oem_size
=
t
->
OEMTableSize
;
early_acpi_os_unmap_memory
(
header
,
tbl_size
);
*
oem_addr
=
(
unsigned
long
)
__acpi_map_table
(
oem_addrX
,
*
oem_addr
=
(
unsigned
long
)
__acpi_map_table
(
oem_addrX
,
oem_size
);
oem_size
);
return
0
;
return
0
;
}
}
early_acpi_os_unmap_memory
(
header
,
tbl_size
);
}
}
return
-
1
;
return
-
1
;
}
}
void
__init
unmap_unisys_acpi_oem_table
(
unsigned
long
oem_addr
)
void
__init
unmap_unisys_acpi_oem_table
(
unsigned
long
oem_addr
)
{
{
if
(
!
oem_addr
)
return
;
__acpi_unmap_table
((
char
*
)
oem_addr
,
oem_size
);
}
}
#endif
#endif
...
...
arch/x86/kernel/tsc_sync.c
View file @
cbe9ee00
...
@@ -46,7 +46,9 @@ static __cpuinit void check_tsc_warp(void)
...
@@ -46,7 +46,9 @@ static __cpuinit void check_tsc_warp(void)
cycles_t
start
,
now
,
prev
,
end
;
cycles_t
start
,
now
,
prev
,
end
;
int
i
;
int
i
;
rdtsc_barrier
();
start
=
get_cycles
();
start
=
get_cycles
();
rdtsc_barrier
();
/*
/*
* The measurement runs for 20 msecs:
* The measurement runs for 20 msecs:
*/
*/
...
@@ -61,7 +63,9 @@ static __cpuinit void check_tsc_warp(void)
...
@@ -61,7 +63,9 @@ static __cpuinit void check_tsc_warp(void)
*/
*/
__raw_spin_lock
(
&
sync_lock
);
__raw_spin_lock
(
&
sync_lock
);
prev
=
last_tsc
;
prev
=
last_tsc
;
rdtsc_barrier
();
now
=
get_cycles
();
now
=
get_cycles
();
rdtsc_barrier
();
last_tsc
=
now
;
last_tsc
=
now
;
__raw_spin_unlock
(
&
sync_lock
);
__raw_spin_unlock
(
&
sync_lock
);
...
...
arch/x86/mach-voyager/voyager_smp.c
View file @
cbe9ee00
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
* This file provides all the same external entries as smp.c but uses
* This file provides all the same external entries as smp.c but uses
* the voyager hal to provide the functionality
* the voyager hal to provide the functionality
*/
*/
#include <linux/cpu.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/mm.h>
#include <linux/kernel_stat.h>
#include <linux/kernel_stat.h>
...
@@ -1790,6 +1791,17 @@ void __init smp_setup_processor_id(void)
...
@@ -1790,6 +1791,17 @@ void __init smp_setup_processor_id(void)
x86_write_percpu
(
cpu_number
,
hard_smp_processor_id
());
x86_write_percpu
(
cpu_number
,
hard_smp_processor_id
());
}
}
static
void
voyager_send_call_func
(
cpumask_t
callmask
)
{
__u32
mask
=
cpus_addr
(
callmask
)[
0
]
&
~
(
1
<<
smp_processor_id
());
send_CPI
(
mask
,
VIC_CALL_FUNCTION_CPI
);
}
static
void
voyager_send_call_func_single
(
int
cpu
)
{
send_CPI
(
1
<<
cpu
,
VIC_CALL_FUNCTION_SINGLE_CPI
);
}
struct
smp_ops
smp_ops
=
{
struct
smp_ops
smp_ops
=
{
.
smp_prepare_boot_cpu
=
voyager_smp_prepare_boot_cpu
,
.
smp_prepare_boot_cpu
=
voyager_smp_prepare_boot_cpu
,
.
smp_prepare_cpus
=
voyager_smp_prepare_cpus
,
.
smp_prepare_cpus
=
voyager_smp_prepare_cpus
,
...
@@ -1799,6 +1811,6 @@ struct smp_ops smp_ops = {
...
@@ -1799,6 +1811,6 @@ struct smp_ops smp_ops = {
.
smp_send_stop
=
voyager_smp_send_stop
,
.
smp_send_stop
=
voyager_smp_send_stop
,
.
smp_send_reschedule
=
voyager_smp_send_reschedule
,
.
smp_send_reschedule
=
voyager_smp_send_reschedule
,
.
send_call_func_ipi
=
native_send_call_func_ipi
,
.
send_call_func_ipi
=
voyager_send_call_func
,
.
send_call_func_single_ipi
=
native_send_call_func_single_ipi
,
.
send_call_func_single_ipi
=
voyager_send_call_func_single
,
};
};
drivers/xen/balloon.c
View file @
cbe9ee00
...
@@ -122,14 +122,7 @@ static struct timer_list balloon_timer;
...
@@ -122,14 +122,7 @@ static struct timer_list balloon_timer;
static
void
scrub_page
(
struct
page
*
page
)
static
void
scrub_page
(
struct
page
*
page
)
{
{
#ifdef CONFIG_XEN_SCRUB_PAGES
#ifdef CONFIG_XEN_SCRUB_PAGES
if
(
PageHighMem
(
page
))
{
clear_highpage
(
page
);
void
*
v
=
kmap
(
page
);
clear_page
(
v
);
kunmap
(
v
);
}
else
{
void
*
v
=
page_address
(
page
);
clear_page
(
v
);
}
#endif
#endif
}
}
...
...
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