[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen staging] tools/dombuilder: Initialise vcpu debug registers correctly
commit 46029da12e5efeca6d957e5793bd34f2965fa0a1 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Mon May 28 15:18:17 2018 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Wed Oct 24 14:43:05 2018 +0100 tools/dombuilder: Initialise vcpu debug registers correctly In particular, initialising %dr6 with the value 0 is buggy, because on hardware supporting Transactional Memory, it will cause the sticky RTM bit to be asserted, even though a debug exception from a transaction hasn't actually been observed. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxc/xc_dom_x86.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index 77a4c6ccd0..9e279d6768 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -53,6 +53,9 @@ #define X86_CR0_PE 0x01 #define X86_CR0_ET 0x10 +#define X86_DR6_DEFAULT 0xffff0ff0u +#define X86_DR7_DEFAULT 0x00000400u + #define MTRR_TYPE_WRBACK 6 #define MTRR_DEF_TYPE_ENABLE (1u << 11) @@ -863,6 +866,9 @@ static int vcpu_x86_32(struct xc_dom_image *dom) dom->parms.virt_base + (dom->start_info_pfn) * PAGE_SIZE_X86; ctxt->user_regs.eflags = 1 << 9; /* Interrupt Enable */ + ctxt->debugreg[6] = X86_DR6_DEFAULT; + ctxt->debugreg[7] = X86_DR7_DEFAULT; + ctxt->flags = VGCF_in_kernel_X86_32 | VGCF_online_X86_32; if ( dom->parms.pae == XEN_PAE_EXTCR3 || dom->parms.pae == XEN_PAE_BIMODAL ) @@ -910,6 +916,9 @@ static int vcpu_x86_64(struct xc_dom_image *dom) dom->parms.virt_base + (dom->start_info_pfn) * PAGE_SIZE_X86; ctxt->user_regs.rflags = 1 << 9; /* Interrupt Enable */ + ctxt->debugreg[6] = X86_DR6_DEFAULT; + ctxt->debugreg[7] = X86_DR7_DEFAULT; + ctxt->flags = VGCF_in_kernel_X86_64 | VGCF_online_X86_64; cr3_pfn = xc_dom_p2m(dom, dom->pgtables_seg.pfn); ctxt->ctrlreg[3] = xen_pfn_to_cr3_x86_64(cr3_pfn); @@ -1030,6 +1039,9 @@ static int vcpu_hvm(struct xc_dom_image *dom) /* Set the IP. */ bsp_ctx.cpu.rip = dom->parms.phys_entry; + bsp_ctx.cpu.dr6 = X86_DR6_DEFAULT; + bsp_ctx.cpu.dr7 = X86_DR7_DEFAULT; + if ( dom->start_info_seg.pfn ) bsp_ctx.cpu.rbx = dom->start_info_seg.pfn << PAGE_SHIFT; -- generated by git-patchbot for /home/xen/git/xen.git#staging _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |