Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
648d453d
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
648d453d
编写于
9月 14, 2017
作者:
R
Radim Krčmář
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'kvm-ppc-fixes' of
git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
Bug fixes for stable.
上级
a5f01f8e
67f8a8c1
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
22 addition
and
6 deletion
+22
-6
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/kvm/book3s_hv.c
+2
-0
arch/powerpc/kvm/book3s_hv_rm_xive.c
arch/powerpc/kvm/book3s_hv_rm_xive.c
+0
-1
arch/powerpc/kvm/book3s_hv_rmhandlers.S
arch/powerpc/kvm/book3s_hv_rmhandlers.S
+16
-1
arch/powerpc/kvm/book3s_xive.c
arch/powerpc/kvm/book3s_xive.c
+0
-1
arch/powerpc/kvm/book3s_xive_template.c
arch/powerpc/kvm/book3s_xive_template.c
+4
-3
未找到文件。
arch/powerpc/kvm/book3s_hv.c
浏览文件 @
648d453d
...
@@ -4212,11 +4212,13 @@ static int kvmhv_configure_mmu(struct kvm *kvm, struct kvm_ppc_mmuv3_cfg *cfg)
...
@@ -4212,11 +4212,13 @@ static int kvmhv_configure_mmu(struct kvm *kvm, struct kvm_ppc_mmuv3_cfg *cfg)
if
((
cfg
->
process_table
&
PRTS_MASK
)
>
24
)
if
((
cfg
->
process_table
&
PRTS_MASK
)
>
24
)
return
-
EINVAL
;
return
-
EINVAL
;
mutex_lock
(
&
kvm
->
lock
);
kvm
->
arch
.
process_table
=
cfg
->
process_table
;
kvm
->
arch
.
process_table
=
cfg
->
process_table
;
kvmppc_setup_partition_table
(
kvm
);
kvmppc_setup_partition_table
(
kvm
);
lpcr
=
(
cfg
->
flags
&
KVM_PPC_MMUV3_GTSE
)
?
LPCR_GTSE
:
0
;
lpcr
=
(
cfg
->
flags
&
KVM_PPC_MMUV3_GTSE
)
?
LPCR_GTSE
:
0
;
kvmppc_update_lpcr
(
kvm
,
lpcr
,
LPCR_GTSE
);
kvmppc_update_lpcr
(
kvm
,
lpcr
,
LPCR_GTSE
);
mutex_unlock
(
&
kvm
->
lock
);
return
0
;
return
0
;
}
}
...
...
arch/powerpc/kvm/book3s_hv_rm_xive.c
浏览文件 @
648d453d
...
@@ -38,7 +38,6 @@ static inline void __iomem *get_tima_phys(void)
...
@@ -38,7 +38,6 @@ static inline void __iomem *get_tima_phys(void)
#define __x_tima get_tima_phys()
#define __x_tima get_tima_phys()
#define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_page))
#define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_page))
#define __x_trig_page(xd) ((void __iomem *)((xd)->trig_page))
#define __x_trig_page(xd) ((void __iomem *)((xd)->trig_page))
#define __x_readb __raw_rm_readb
#define __x_writeb __raw_rm_writeb
#define __x_writeb __raw_rm_writeb
#define __x_readw __raw_rm_readw
#define __x_readw __raw_rm_readw
#define __x_readq __raw_rm_readq
#define __x_readq __raw_rm_readq
...
...
arch/powerpc/kvm/book3s_hv_rmhandlers.S
浏览文件 @
648d453d
...
@@ -771,6 +771,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
...
@@ -771,6 +771,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_207S)
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
BEGIN_FTR_SECTION
/
*
*
NOTE
THAT
THIS
TRASHES
ALL
NON
-
VOLATILE
REGISTERS
INCLUDING
CR
*/
bl
kvmppc_restore_tm
bl
kvmppc_restore_tm
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
#endif
#endif
...
@@ -1630,6 +1633,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
...
@@ -1630,6 +1633,9 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_300)
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
BEGIN_FTR_SECTION
/
*
*
NOTE
THAT
THIS
TRASHES
ALL
NON
-
VOLATILE
REGISTERS
INCLUDING
CR
*/
bl
kvmppc_save_tm
bl
kvmppc_save_tm
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
#endif
#endif
...
@@ -1749,7 +1755,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
...
@@ -1749,7 +1755,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
/
*
/
*
*
Are
we
running
hash
or
radix
?
*
Are
we
running
hash
or
radix
?
*/
*/
beq
cr2
,
3
f
ld
r5
,
VCPU_KVM
(
r9
)
lbz
r0
,
KVM_RADIX
(
r5
)
cmpwi
cr2
,
r0
,
0
beq
cr2
,
3
f
/
*
Radix
:
Handle
the
case
where
the
guest
used
an
illegal
PID
*/
/
*
Radix
:
Handle
the
case
where
the
guest
used
an
illegal
PID
*/
LOAD_REG_ADDR
(
r4
,
mmu_base_pid
)
LOAD_REG_ADDR
(
r4
,
mmu_base_pid
)
...
@@ -2466,6 +2475,9 @@ _GLOBAL(kvmppc_h_cede) /* r3 = vcpu pointer, r11 = msr, r13 = paca */
...
@@ -2466,6 +2475,9 @@ _GLOBAL(kvmppc_h_cede) /* r3 = vcpu pointer, r11 = msr, r13 = paca */
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
BEGIN_FTR_SECTION
/
*
*
NOTE
THAT
THIS
TRASHES
ALL
NON
-
VOLATILE
REGISTERS
INCLUDING
CR
*/
ld
r9
,
HSTATE_KVM_VCPU
(
r13
)
ld
r9
,
HSTATE_KVM_VCPU
(
r13
)
bl
kvmppc_save_tm
bl
kvmppc_save_tm
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
...
@@ -2578,6 +2590,9 @@ kvm_end_cede:
...
@@ -2578,6 +2590,9 @@ kvm_end_cede:
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
BEGIN_FTR_SECTION
BEGIN_FTR_SECTION
/
*
*
NOTE
THAT
THIS
TRASHES
ALL
NON
-
VOLATILE
REGISTERS
INCLUDING
CR
*/
bl
kvmppc_restore_tm
bl
kvmppc_restore_tm
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
END_FTR_SECTION_IFSET
(
CPU_FTR_TM
)
#endif
#endif
...
...
arch/powerpc/kvm/book3s_xive.c
浏览文件 @
648d453d
...
@@ -48,7 +48,6 @@
...
@@ -48,7 +48,6 @@
#define __x_tima xive_tima
#define __x_tima xive_tima
#define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_mmio))
#define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_mmio))
#define __x_trig_page(xd) ((void __iomem *)((xd)->trig_mmio))
#define __x_trig_page(xd) ((void __iomem *)((xd)->trig_mmio))
#define __x_readb __raw_readb
#define __x_writeb __raw_writeb
#define __x_writeb __raw_writeb
#define __x_readw __raw_readw
#define __x_readw __raw_readw
#define __x_readq __raw_readq
#define __x_readq __raw_readq
...
...
arch/powerpc/kvm/book3s_xive_template.c
浏览文件 @
648d453d
...
@@ -28,7 +28,8 @@ static void GLUE(X_PFX,ack_pending)(struct kvmppc_xive_vcpu *xc)
...
@@ -28,7 +28,8 @@ static void GLUE(X_PFX,ack_pending)(struct kvmppc_xive_vcpu *xc)
* bit.
* bit.
*/
*/
if
(
cpu_has_feature
(
CPU_FTR_POWER9_DD1
))
{
if
(
cpu_has_feature
(
CPU_FTR_POWER9_DD1
))
{
u8
pipr
=
__x_readb
(
__x_tima
+
TM_QW1_OS
+
TM_PIPR
);
__be64
qw1
=
__x_readq
(
__x_tima
+
TM_QW1_OS
);
u8
pipr
=
be64_to_cpu
(
qw1
)
&
0xff
;
if
(
pipr
>=
xc
->
hw_cppr
)
if
(
pipr
>=
xc
->
hw_cppr
)
return
;
return
;
}
}
...
@@ -336,7 +337,6 @@ X_STATIC unsigned long GLUE(X_PFX,h_ipoll)(struct kvm_vcpu *vcpu, unsigned long
...
@@ -336,7 +337,6 @@ X_STATIC unsigned long GLUE(X_PFX,h_ipoll)(struct kvm_vcpu *vcpu, unsigned long
struct
kvmppc_xive_vcpu
*
xc
=
vcpu
->
arch
.
xive_vcpu
;
struct
kvmppc_xive_vcpu
*
xc
=
vcpu
->
arch
.
xive_vcpu
;
u8
pending
=
xc
->
pending
;
u8
pending
=
xc
->
pending
;
u32
hirq
;
u32
hirq
;
u8
pipr
;
pr_devel
(
"H_IPOLL(server=%ld)
\n
"
,
server
);
pr_devel
(
"H_IPOLL(server=%ld)
\n
"
,
server
);
...
@@ -353,7 +353,8 @@ X_STATIC unsigned long GLUE(X_PFX,h_ipoll)(struct kvm_vcpu *vcpu, unsigned long
...
@@ -353,7 +353,8 @@ X_STATIC unsigned long GLUE(X_PFX,h_ipoll)(struct kvm_vcpu *vcpu, unsigned long
pending
=
0xff
;
pending
=
0xff
;
}
else
{
}
else
{
/* Grab pending interrupt if any */
/* Grab pending interrupt if any */
pipr
=
__x_readb
(
__x_tima
+
TM_QW1_OS
+
TM_PIPR
);
__be64
qw1
=
__x_readq
(
__x_tima
+
TM_QW1_OS
);
u8
pipr
=
be64_to_cpu
(
qw1
)
&
0xff
;
if
(
pipr
<
8
)
if
(
pipr
<
8
)
pending
|=
1
<<
pipr
;
pending
|=
1
<<
pipr
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录