mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 23:20:51 +07:00
KVM: PPC: Avoid patching paravirt template code
Currently we patch the whole code include paravirt template code. This isn't safe for scratch area and has impact to performance. Signed-off-by: Liu Yu <yu.liu@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
570135243a
commit
befdc0a65a
@ -665,6 +665,9 @@ static void kvm_check_ins(u32 *inst, u32 features)
|
||||
}
|
||||
}
|
||||
|
||||
extern u32 kvm_template_start[];
|
||||
extern u32 kvm_template_end[];
|
||||
|
||||
static void kvm_use_magic_page(void)
|
||||
{
|
||||
u32 *p;
|
||||
@ -692,8 +695,14 @@ static void kvm_use_magic_page(void)
|
||||
*/
|
||||
local_irq_disable();
|
||||
|
||||
for (p = start; p < end; p++)
|
||||
for (p = start; p < end; p++) {
|
||||
/* Avoid patching the template code */
|
||||
if (p >= kvm_template_start && p < kvm_template_end) {
|
||||
p = kvm_template_end - 1;
|
||||
continue;
|
||||
}
|
||||
kvm_check_ins(p, features);
|
||||
}
|
||||
|
||||
local_irq_enable();
|
||||
|
||||
|
@ -66,6 +66,9 @@ kvm_hypercall_start:
|
||||
shared->critical == r1 and r2 is always != r1 */ \
|
||||
STL64(r2, KVM_MAGIC_PAGE + KVM_MAGIC_CRITICAL, 0);
|
||||
|
||||
.global kvm_template_start
|
||||
kvm_template_start:
|
||||
|
||||
.global kvm_emulate_mtmsrd
|
||||
kvm_emulate_mtmsrd:
|
||||
|
||||
@ -350,3 +353,6 @@ kvm_emulate_mtsrin_orig_ins_offs:
|
||||
.global kvm_emulate_mtsrin_len
|
||||
kvm_emulate_mtsrin_len:
|
||||
.long (kvm_emulate_mtsrin_end - kvm_emulate_mtsrin) / 4
|
||||
|
||||
.global kvm_template_end
|
||||
kvm_template_end:
|
||||
|
Loading…
Reference in New Issue
Block a user