Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
d25e6b0b
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d25e6b0b
编写于
10月 20, 2010
作者:
H
H. Peter Anvin
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'x86/cleanups' into x86/trampoline
上级
e44dea35
40ffa937
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
21 addition
and
99 deletion
+21
-99
arch/x86/include/asm/apb_timer.h
arch/x86/include/asm/apb_timer.h
+0
-1
arch/x86/include/asm/cpu.h
arch/x86/include/asm/cpu.h
+0
-1
arch/x86/kernel/Makefile
arch/x86/kernel/Makefile
+0
-1
arch/x86/kernel/apb_timer.c
arch/x86/kernel/apb_timer.c
+1
-1
arch/x86/kernel/apic/io_apic.c
arch/x86/kernel/apic/io_apic.c
+6
-6
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/cpu/amd.c
+1
-1
arch/x86/kernel/cpu/common.c
arch/x86/kernel/cpu/common.c
+1
-1
arch/x86/kernel/cpu/intel.c
arch/x86/kernel/cpu/intel.c
+1
-1
arch/x86/kernel/early-quirks.c
arch/x86/kernel/early-quirks.c
+0
-2
arch/x86/kernel/machine_kexec_64.c
arch/x86/kernel/machine_kexec_64.c
+2
-2
arch/x86/kernel/pmtimer_64.c
arch/x86/kernel/pmtimer_64.c
+0
-69
arch/x86/kernel/reboot.c
arch/x86/kernel/reboot.c
+1
-1
arch/x86/kernel/setup.c
arch/x86/kernel/setup.c
+0
-1
arch/x86/kernel/setup_percpu.c
arch/x86/kernel/setup_percpu.c
+1
-1
arch/x86/kvm/lapic.c
arch/x86/kvm/lapic.c
+1
-2
arch/x86/mm/init_32.c
arch/x86/mm/init_32.c
+2
-2
arch/x86/mm/init_64.c
arch/x86/mm/init_64.c
+1
-1
arch/x86/mm/k8topology_64.c
arch/x86/mm/k8topology_64.c
+3
-3
include/linux/acpi_pmtmr.h
include/linux/acpi_pmtmr.h
+0
-2
未找到文件。
arch/x86/include/asm/apb_timer.h
浏览文件 @
d25e6b0b
...
...
@@ -54,7 +54,6 @@ extern struct clock_event_device *global_clock_event;
extern
unsigned
long
apbt_quick_calibrate
(
void
);
extern
int
arch_setup_apbt_irqs
(
int
irq
,
int
trigger
,
int
mask
,
int
cpu
);
extern
void
apbt_setup_secondary_clock
(
void
);
extern
unsigned
int
boot_cpu_id
;
extern
struct
sfi_timer_table_entry
*
sfi_get_mtmr
(
int
hint
);
extern
void
sfi_free_mtmr
(
struct
sfi_timer_table_entry
*
mtmr
);
...
...
arch/x86/include/asm/cpu.h
浏览文件 @
d25e6b0b
...
...
@@ -32,6 +32,5 @@ extern void arch_unregister_cpu(int);
DECLARE_PER_CPU
(
int
,
cpu_state
);
extern
unsigned
int
boot_cpu_id
;
#endif
/* _ASM_X86_CPU_H */
arch/x86/kernel/Makefile
浏览文件 @
d25e6b0b
...
...
@@ -121,7 +121,6 @@ obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o
# 64 bit specific files
ifeq
($(CONFIG_X86_64),y)
obj-$(CONFIG_X86_UV)
+=
tlb_uv.o bios_uv.o uv_irq.o uv_sysfs.o uv_time.o
obj-$(CONFIG_X86_PM_TIMER)
+=
pmtimer_64.o
obj-$(CONFIG_AUDIT)
+=
audit_64.o
obj-$(CONFIG_GART_IOMMU)
+=
pci-gart_64.o aperture_64.o
...
...
arch/x86/kernel/apb_timer.c
浏览文件 @
d25e6b0b
...
...
@@ -343,7 +343,7 @@ void apbt_setup_secondary_clock(void)
/* Don't register boot CPU clockevent */
cpu
=
smp_processor_id
();
if
(
cpu
==
boot_cpu_id
)
if
(
!
cpu
)
return
;
/*
* We need to calculate the scaled math multiplication factor for
...
...
arch/x86/kernel/apic/io_apic.c
浏览文件 @
d25e6b0b
...
...
@@ -162,7 +162,7 @@ int __init arch_early_irq_init(void)
cfg
=
irq_cfgx
;
count
=
ARRAY_SIZE
(
irq_cfgx
);
node
=
cpu_to_node
(
boot_cpu_id
);
node
=
cpu_to_node
(
0
);
for
(
i
=
0
;
i
<
count
;
i
++
)
{
desc
=
irq_to_desc
(
i
);
...
...
@@ -1488,7 +1488,7 @@ static void __init setup_IO_APIC_irqs(void)
int
notcon
=
0
;
struct
irq_desc
*
desc
;
struct
irq_cfg
*
cfg
;
int
node
=
cpu_to_node
(
boot_cpu_id
);
int
node
=
cpu_to_node
(
0
);
apic_printk
(
APIC_VERBOSE
,
KERN_DEBUG
"init IO_APIC IRQs
\n
"
);
...
...
@@ -1553,7 +1553,7 @@ static void __init setup_IO_APIC_irqs(void)
void
setup_IO_APIC_irq_extra
(
u32
gsi
)
{
int
apic_id
=
0
,
pin
,
idx
,
irq
;
int
node
=
cpu_to_node
(
boot_cpu_id
);
int
node
=
cpu_to_node
(
0
);
struct
irq_desc
*
desc
;
struct
irq_cfg
*
cfg
;
...
...
@@ -2932,7 +2932,7 @@ static inline void __init check_timer(void)
{
struct
irq_desc
*
desc
=
irq_to_desc
(
0
);
struct
irq_cfg
*
cfg
=
desc
->
chip_data
;
int
node
=
cpu_to_node
(
boot_cpu_id
);
int
node
=
cpu_to_node
(
0
);
int
apic1
,
pin1
,
apic2
,
pin2
;
unsigned
long
flags
;
int
no_pin1
=
0
;
...
...
@@ -3286,7 +3286,7 @@ unsigned int create_irq_nr(unsigned int irq_want, int node)
int
create_irq
(
void
)
{
int
node
=
cpu_to_node
(
boot_cpu_id
);
int
node
=
cpu_to_node
(
0
);
unsigned
int
irq_want
;
int
irq
;
...
...
@@ -3908,7 +3908,7 @@ static int __io_apic_set_pci_routing(struct device *dev, int irq,
if
(
dev
)
node
=
dev_to_node
(
dev
);
else
node
=
cpu_to_node
(
boot_cpu_id
);
node
=
cpu_to_node
(
0
);
desc
=
irq_to_desc_alloc_node
(
irq
,
node
);
if
(
!
desc
)
{
...
...
arch/x86/kernel/cpu/amd.c
浏览文件 @
d25e6b0b
...
...
@@ -148,7 +148,7 @@ static void __cpuinit amd_k7_smp_check(struct cpuinfo_x86 *c)
{
#ifdef CONFIG_SMP
/* calling is from identify_secondary_cpu() ? */
if
(
c
->
cpu_index
==
boot_cpu_id
)
if
(
!
c
->
cpu_index
)
return
;
/*
...
...
arch/x86/kernel/cpu/common.c
浏览文件 @
d25e6b0b
...
...
@@ -665,7 +665,7 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c)
this_cpu
->
c_early_init
(
c
);
#ifdef CONFIG_SMP
c
->
cpu_index
=
boot_cpu_id
;
c
->
cpu_index
=
0
;
#endif
filter_cpuid_features
(
c
,
false
);
}
...
...
arch/x86/kernel/cpu/intel.c
浏览文件 @
d25e6b0b
...
...
@@ -170,7 +170,7 @@ static void __cpuinit intel_smp_check(struct cpuinfo_x86 *c)
{
#ifdef CONFIG_SMP
/* calling is from identify_secondary_cpu() ? */
if
(
c
->
cpu_index
==
boot_cpu_id
)
if
(
!
c
->
cpu_index
)
return
;
/*
...
...
arch/x86/kernel/early-quirks.c
浏览文件 @
d25e6b0b
...
...
@@ -96,7 +96,6 @@ static void __init nvidia_bugs(int num, int slot, int func)
}
#if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC)
#if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC)
static
u32
__init
ati_ixp4x0_rev
(
int
num
,
int
slot
,
int
func
)
{
...
...
@@ -115,7 +114,6 @@ static u32 __init ati_ixp4x0_rev(int num, int slot, int func)
d
&=
0xff
;
return
d
;
}
#endif
static
void
__init
ati_bugs
(
int
num
,
int
slot
,
int
func
)
{
...
...
arch/x86/kernel/machine_kexec_64.c
浏览文件 @
d25e6b0b
...
...
@@ -36,7 +36,7 @@ static int init_one_level2_page(struct kimage *image, pgd_t *pgd,
if
(
!
page
)
goto
out
;
pud
=
(
pud_t
*
)
page_address
(
page
);
memset
(
pud
,
0
,
PAGE_SIZE
);
clear_page
(
pud
);
set_pgd
(
pgd
,
__pgd
(
__pa
(
pud
)
|
_KERNPG_TABLE
));
}
pud
=
pud_offset
(
pgd
,
addr
);
...
...
@@ -45,7 +45,7 @@ static int init_one_level2_page(struct kimage *image, pgd_t *pgd,
if
(
!
page
)
goto
out
;
pmd
=
(
pmd_t
*
)
page_address
(
page
);
memset
(
pmd
,
0
,
PAGE_SIZE
);
clear_page
(
pmd
);
set_pud
(
pud
,
__pud
(
__pa
(
pmd
)
|
_KERNPG_TABLE
));
}
pmd
=
pmd_offset
(
pud
,
addr
);
...
...
arch/x86/kernel/pmtimer_64.c
已删除
100644 → 0
浏览文件 @
e44dea35
/* Ported over from i386 by AK, original copyright was:
*
* (C) Dominik Brodowski <linux@brodo.de> 2003
*
* Driver to use the Power Management Timer (PMTMR) available in some
* southbridges as primary timing source for the Linux kernel.
*
* Based on parts of linux/drivers/acpi/hardware/hwtimer.c, timer_pit.c,
* timer_hpet.c, and on Arjan van de Ven's implementation for 2.4.
*
* This file is licensed under the GPL v2.
*
* Dropped all the hardware bug workarounds for now. Hopefully they
* are not needed on 64bit chipsets.
*/
#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include <linux/init.h>
#include <linux/cpumask.h>
#include <linux/acpi_pmtmr.h>
#include <asm/io.h>
#include <asm/proto.h>
#include <asm/msr.h>
#include <asm/vsyscall.h>
static
inline
u32
cyc2us
(
u32
cycles
)
{
/* The Power Management Timer ticks at 3.579545 ticks per microsecond.
* 1 / PM_TIMER_FREQUENCY == 0.27936511 =~ 286/1024 [error: 0.024%]
*
* Even with HZ = 100, delta is at maximum 35796 ticks, so it can
* easily be multiplied with 286 (=0x11E) without having to fear
* u32 overflows.
*/
cycles
*=
286
;
return
(
cycles
>>
10
);
}
static
unsigned
pmtimer_wait_tick
(
void
)
{
u32
a
,
b
;
for
(
a
=
b
=
inl
(
pmtmr_ioport
)
&
ACPI_PM_MASK
;
a
==
b
;
b
=
inl
(
pmtmr_ioport
)
&
ACPI_PM_MASK
)
cpu_relax
();
return
b
;
}
/* note: wait time is rounded up to one tick */
void
pmtimer_wait
(
unsigned
us
)
{
u32
a
,
b
;
a
=
pmtimer_wait_tick
();
do
{
b
=
inl
(
pmtmr_ioport
);
cpu_relax
();
}
while
(
cyc2us
(
b
-
a
)
<
us
);
}
static
int
__init
nopmtimer_setup
(
char
*
s
)
{
pmtmr_ioport
=
0
;
return
1
;
}
__setup
(
"nopmtimer"
,
nopmtimer_setup
);
arch/x86/kernel/reboot.c
浏览文件 @
d25e6b0b
...
...
@@ -84,7 +84,7 @@ static int __init reboot_setup(char *str)
}
/* we will leave sorting out the final value
when we are ready to reboot, since we might not
have
set up boot_cpu_id
or smp_num_cpu */
have
detected BSP APIC ID
or smp_num_cpu */
break
;
#endif
/* CONFIG_SMP */
...
...
arch/x86/kernel/setup.c
浏览文件 @
d25e6b0b
...
...
@@ -124,7 +124,6 @@ unsigned long max_pfn_mapped;
RESERVE_BRK
(
dmi_alloc
,
65536
);
#endif
unsigned
int
boot_cpu_id
__read_mostly
;
static
__initdata
unsigned
long
_brk_start
=
(
unsigned
long
)
__brk_base
;
unsigned
long
_brk_end
=
(
unsigned
long
)
__brk_base
;
...
...
arch/x86/kernel/setup_percpu.c
浏览文件 @
d25e6b0b
...
...
@@ -253,7 +253,7 @@ void __init setup_per_cpu_areas(void)
* Up to this point, the boot CPU has been using .init.data
* area. Reload any changed state for the boot CPU.
*/
if
(
cpu
==
boot_cpu_id
)
if
(
!
cpu
)
switch_to_new_gdt
(
cpu
);
}
...
...
arch/x86/kvm/lapic.c
浏览文件 @
d25e6b0b
...
...
@@ -1056,14 +1056,13 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
vcpu
->
arch
.
apic
=
apic
;
apic
->
regs_page
=
alloc_page
(
GFP_KERNEL
);
apic
->
regs_page
=
alloc_page
(
GFP_KERNEL
|
__GFP_ZERO
);
if
(
apic
->
regs_page
==
NULL
)
{
printk
(
KERN_ERR
"malloc apic regs error for vcpu %x
\n
"
,
vcpu
->
vcpu_id
);
goto
nomem_free_apic
;
}
apic
->
regs
=
page_address
(
apic
->
regs_page
);
memset
(
apic
->
regs
,
0
,
PAGE_SIZE
);
apic
->
vcpu
=
vcpu
;
hrtimer_init
(
&
apic
->
lapic_timer
.
timer
,
CLOCK_MONOTONIC
,
...
...
arch/x86/mm/init_32.c
浏览文件 @
d25e6b0b
...
...
@@ -67,7 +67,7 @@ static __init void *alloc_low_page(void)
panic
(
"alloc_low_page: ran out of memory"
);
adr
=
__va
(
pfn
*
PAGE_SIZE
);
memset
(
adr
,
0
,
PAGE_SIZE
);
clear_page
(
adr
);
return
adr
;
}
...
...
@@ -558,7 +558,7 @@ char swsusp_pg_dir[PAGE_SIZE]
static
inline
void
save_pg_dir
(
void
)
{
memcpy
(
swsusp_pg_dir
,
swapper_pg_dir
,
PAGE_SIZE
);
copy_page
(
swsusp_pg_dir
,
swapper_pg_dir
);
}
#else
/* !CONFIG_ACPI_SLEEP */
static
inline
void
save_pg_dir
(
void
)
...
...
arch/x86/mm/init_64.c
浏览文件 @
d25e6b0b
...
...
@@ -293,7 +293,7 @@ static __ref void *alloc_low_page(unsigned long *phys)
panic
(
"alloc_low_page: ran out of memory"
);
adr
=
early_memremap
(
pfn
*
PAGE_SIZE
,
PAGE_SIZE
);
memset
(
adr
,
0
,
PAGE_SIZE
);
clear_page
(
adr
);
*
phys
=
pfn
*
PAGE_SIZE
;
return
adr
;
}
...
...
arch/x86/mm/k8topology_64.c
浏览文件 @
d25e6b0b
...
...
@@ -54,8 +54,8 @@ static __init int find_northbridge(void)
static
__init
void
early_get_boot_cpu_id
(
void
)
{
/*
* need to get
boot_cpu_id so can use that to create apicid_to_node
* in k8_scan_nodes()
* need to get
the APIC ID of the BSP so can use that to
*
create apicid_to_node
in k8_scan_nodes()
*/
#ifdef CONFIG_X86_MPPARSE
/*
...
...
@@ -212,7 +212,7 @@ int __init k8_scan_nodes(void)
bits
=
boot_cpu_data
.
x86_coreid_bits
;
cores
=
(
1
<<
bits
);
apicid_base
=
0
;
/*
need to get boot_cpu_id early for system
with apicid lifting */
/*
get the APIC ID of the BSP early for systems
with apicid lifting */
early_get_boot_cpu_id
();
if
(
boot_cpu_physical_apicid
>
0
)
{
pr_info
(
"BSP APIC ID: %02x
\n
"
,
boot_cpu_physical_apicid
);
...
...
include/linux/acpi_pmtmr.h
浏览文件 @
d25e6b0b
...
...
@@ -25,8 +25,6 @@ static inline u32 acpi_pm_read_early(void)
return
acpi_pm_read_verified
()
&
ACPI_PM_MASK
;
}
extern
void
pmtimer_wait
(
unsigned
);
#else
static
inline
u32
acpi_pm_read_early
(
void
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录