aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.9.21/0003-KVM-x86-introduce-linear_-read-write-_system.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0003-KVM-x86-introduce-linear_-read-write-_system.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.9.21/0003-KVM-x86-introduce-linear_-read-write-_system.patch187
1 files changed, 0 insertions, 187 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0003-KVM-x86-introduce-linear_-read-write-_system.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0003-KVM-x86-introduce-linear_-read-write-_system.patch
deleted file mode 100644
index cb9af0b2..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0003-KVM-x86-introduce-linear_-read-write-_system.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From 9dd58f6cbef90d8a962b6365db32391f4a6ac4f9 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Wed, 6 Jun 2018 16:43:02 +0200
-Subject: [PATCH 03/10] KVM: x86: introduce linear_{read,write}_system
-
-commit 79367a65743975e5cac8d24d08eccc7fdae832b0 upstream.
-
-Wrap the common invocation of ctxt->ops->read_std and ctxt->ops->write_std, so
-as to have a smaller patch when the functions grow another argument.
-
-Fixes: 129a72a0d3c8 ("KVM: x86: Introduce segmented_write_std", 2017-01-12)
-Cc: stable@vger.kernel.org
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/emulate.c | 64 +++++++++++++++++++++++++-------------------------
- 1 file changed, 32 insertions(+), 32 deletions(-)
-
-diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
-index 6faac71..b6ec3e9 100644
---- a/arch/x86/kvm/emulate.c
-+++ b/arch/x86/kvm/emulate.c
-@@ -802,6 +802,19 @@ static inline int jmp_rel(struct x86_emulate_ctxt *ctxt, int rel)
- return assign_eip_near(ctxt, ctxt->_eip + rel);
- }
-
-+static int linear_read_system(struct x86_emulate_ctxt *ctxt, ulong linear,
-+ void *data, unsigned size)
-+{
-+ return ctxt->ops->read_std(ctxt, linear, data, size, &ctxt->exception);
-+}
-+
-+static int linear_write_system(struct x86_emulate_ctxt *ctxt,
-+ ulong linear, void *data,
-+ unsigned int size)
-+{
-+ return ctxt->ops->write_std(ctxt, linear, data, size, &ctxt->exception);
-+}
-+
- static int segmented_read_std(struct x86_emulate_ctxt *ctxt,
- struct segmented_address addr,
- void *data,
-@@ -1500,8 +1513,7 @@ static int read_interrupt_descriptor(struct x86_emulate_ctxt *ctxt,
- return emulate_gp(ctxt, index << 3 | 0x2);
-
- addr = dt.address + index * 8;
-- return ctxt->ops->read_std(ctxt, addr, desc, sizeof *desc,
-- &ctxt->exception);
-+ return linear_read_system(ctxt, addr, desc, sizeof *desc);
- }
-
- static void get_descriptor_table_ptr(struct x86_emulate_ctxt *ctxt,
-@@ -1564,8 +1576,7 @@ static int read_segment_descriptor(struct x86_emulate_ctxt *ctxt,
- if (rc != X86EMUL_CONTINUE)
- return rc;
-
-- return ctxt->ops->read_std(ctxt, *desc_addr_p, desc, sizeof(*desc),
-- &ctxt->exception);
-+ return linear_read_system(ctxt, *desc_addr_p, desc, sizeof(*desc));
- }
-
- /* allowed just for 8 bytes segments */
-@@ -1579,8 +1590,7 @@ static int write_segment_descriptor(struct x86_emulate_ctxt *ctxt,
- if (rc != X86EMUL_CONTINUE)
- return rc;
-
-- return ctxt->ops->write_std(ctxt, addr, desc, sizeof *desc,
-- &ctxt->exception);
-+ return linear_write_system(ctxt, addr, desc, sizeof *desc);
- }
-
- static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
-@@ -1741,8 +1751,7 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
- return ret;
- }
- } else if (ctxt->mode == X86EMUL_MODE_PROT64) {
-- ret = ctxt->ops->read_std(ctxt, desc_addr+8, &base3,
-- sizeof(base3), &ctxt->exception);
-+ ret = linear_read_system(ctxt, desc_addr+8, &base3, sizeof(base3));
- if (ret != X86EMUL_CONTINUE)
- return ret;
- if (is_noncanonical_address(get_desc_base(&seg_desc) |
-@@ -2055,11 +2064,11 @@ static int __emulate_int_real(struct x86_emulate_ctxt *ctxt, int irq)
- eip_addr = dt.address + (irq << 2);
- cs_addr = dt.address + (irq << 2) + 2;
-
-- rc = ops->read_std(ctxt, cs_addr, &cs, 2, &ctxt->exception);
-+ rc = linear_read_system(ctxt, cs_addr, &cs, 2);
- if (rc != X86EMUL_CONTINUE)
- return rc;
-
-- rc = ops->read_std(ctxt, eip_addr, &eip, 2, &ctxt->exception);
-+ rc = linear_read_system(ctxt, eip_addr, &eip, 2);
- if (rc != X86EMUL_CONTINUE)
- return rc;
-
-@@ -3018,35 +3027,30 @@ static int task_switch_16(struct x86_emulate_ctxt *ctxt,
- u16 tss_selector, u16 old_tss_sel,
- ulong old_tss_base, struct desc_struct *new_desc)
- {
-- const struct x86_emulate_ops *ops = ctxt->ops;
- struct tss_segment_16 tss_seg;
- int ret;
- u32 new_tss_base = get_desc_base(new_desc);
-
-- ret = ops->read_std(ctxt, old_tss_base, &tss_seg, sizeof tss_seg,
-- &ctxt->exception);
-+ ret = linear_read_system(ctxt, old_tss_base, &tss_seg, sizeof tss_seg);
- if (ret != X86EMUL_CONTINUE)
- return ret;
-
- save_state_to_tss16(ctxt, &tss_seg);
-
-- ret = ops->write_std(ctxt, old_tss_base, &tss_seg, sizeof tss_seg,
-- &ctxt->exception);
-+ ret = linear_write_system(ctxt, old_tss_base, &tss_seg, sizeof tss_seg);
- if (ret != X86EMUL_CONTINUE)
- return ret;
-
-- ret = ops->read_std(ctxt, new_tss_base, &tss_seg, sizeof tss_seg,
-- &ctxt->exception);
-+ ret = linear_read_system(ctxt, new_tss_base, &tss_seg, sizeof tss_seg);
- if (ret != X86EMUL_CONTINUE)
- return ret;
-
- if (old_tss_sel != 0xffff) {
- tss_seg.prev_task_link = old_tss_sel;
-
-- ret = ops->write_std(ctxt, new_tss_base,
-- &tss_seg.prev_task_link,
-- sizeof tss_seg.prev_task_link,
-- &ctxt->exception);
-+ ret = linear_write_system(ctxt, new_tss_base,
-+ &tss_seg.prev_task_link,
-+ sizeof tss_seg.prev_task_link);
- if (ret != X86EMUL_CONTINUE)
- return ret;
- }
-@@ -3162,38 +3166,34 @@ static int task_switch_32(struct x86_emulate_ctxt *ctxt,
- u16 tss_selector, u16 old_tss_sel,
- ulong old_tss_base, struct desc_struct *new_desc)
- {
-- const struct x86_emulate_ops *ops = ctxt->ops;
- struct tss_segment_32 tss_seg;
- int ret;
- u32 new_tss_base = get_desc_base(new_desc);
- u32 eip_offset = offsetof(struct tss_segment_32, eip);
- u32 ldt_sel_offset = offsetof(struct tss_segment_32, ldt_selector);
-
-- ret = ops->read_std(ctxt, old_tss_base, &tss_seg, sizeof tss_seg,
-- &ctxt->exception);
-+ ret = linear_read_system(ctxt, old_tss_base, &tss_seg, sizeof tss_seg);
- if (ret != X86EMUL_CONTINUE)
- return ret;
-
- save_state_to_tss32(ctxt, &tss_seg);
-
- /* Only GP registers and segment selectors are saved */
-- ret = ops->write_std(ctxt, old_tss_base + eip_offset, &tss_seg.eip,
-- ldt_sel_offset - eip_offset, &ctxt->exception);
-+ ret = linear_write_system(ctxt, old_tss_base + eip_offset, &tss_seg.eip,
-+ ldt_sel_offset - eip_offset);
- if (ret != X86EMUL_CONTINUE)
- return ret;
-
-- ret = ops->read_std(ctxt, new_tss_base, &tss_seg, sizeof tss_seg,
-- &ctxt->exception);
-+ ret = linear_read_system(ctxt, new_tss_base, &tss_seg, sizeof tss_seg);
- if (ret != X86EMUL_CONTINUE)
- return ret;
-
- if (old_tss_sel != 0xffff) {
- tss_seg.prev_task_link = old_tss_sel;
-
-- ret = ops->write_std(ctxt, new_tss_base,
-- &tss_seg.prev_task_link,
-- sizeof tss_seg.prev_task_link,
-- &ctxt->exception);
-+ ret = linear_write_system(ctxt, new_tss_base,
-+ &tss_seg.prev_task_link,
-+ sizeof tss_seg.prev_task_link);
- if (ret != X86EMUL_CONTINUE)
- return ret;
- }
---
-2.7.4
-