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)
|
static void kvm_use_magic_page(void)
|
||||||
{
|
{
|
||||||
u32 *p;
|
u32 *p;
|
||||||
|
@ -692,8 +695,14 @@ static void kvm_use_magic_page(void)
|
||||||
*/
|
*/
|
||||||
local_irq_disable();
|
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);
|
kvm_check_ins(p, features);
|
||||||
|
}
|
||||||
|
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,9 @@ kvm_hypercall_start:
|
||||||
shared->critical == r1 and r2 is always != r1 */ \
|
shared->critical == r1 and r2 is always != r1 */ \
|
||||||
STL64(r2, KVM_MAGIC_PAGE + KVM_MAGIC_CRITICAL, 0);
|
STL64(r2, KVM_MAGIC_PAGE + KVM_MAGIC_CRITICAL, 0);
|
||||||
|
|
||||||
|
.global kvm_template_start
|
||||||
|
kvm_template_start:
|
||||||
|
|
||||||
.global kvm_emulate_mtmsrd
|
.global kvm_emulate_mtmsrd
|
||||||
kvm_emulate_mtmsrd:
|
kvm_emulate_mtmsrd:
|
||||||
|
|
||||||
|
@ -350,3 +353,6 @@ kvm_emulate_mtsrin_orig_ins_offs:
|
||||||
.global kvm_emulate_mtsrin_len
|
.global kvm_emulate_mtsrin_len
|
||||||
kvm_emulate_mtsrin_len:
|
kvm_emulate_mtsrin_len:
|
||||||
.long (kvm_emulate_mtsrin_end - kvm_emulate_mtsrin) / 4
|
.long (kvm_emulate_mtsrin_end - kvm_emulate_mtsrin) / 4
|
||||||
|
|
||||||
|
.global kvm_template_end
|
||||||
|
kvm_template_end:
|
||||||
|
|
Loading…
Reference in a new issue