From patchwork Wed Aug 9 10:18:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 9890249 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A51B560384 for ; Wed, 9 Aug 2017 10:20:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9A2B9283C5 for ; Wed, 9 Aug 2017 10:20:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8F1B228A52; Wed, 9 Aug 2017 10:20:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id F060D283C5 for ; Wed, 9 Aug 2017 10:20:54 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dfO4T-0001Mn-5F; Wed, 09 Aug 2017 10:18:37 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dfO4R-0001MD-Dp for xen-devel@lists.xenproject.org; Wed, 09 Aug 2017 10:18:35 +0000 Received: from [85.158.137.68] by server-2.bemta-3.messagelabs.com id 57/3D-22472-B71EA895; Wed, 09 Aug 2017 10:18:35 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrCIsWRWlGSWpSXmKPExsXitHRDpG7Vw65 Igw1fJS2+b5nM5MDocfjDFZYAxijWzLyk/IoE1owNp9qZCxpcK7a27GNqYDyg28XIwSEh4C8x 9a1/FyMnB5uAjsTFuTvZQMIiAioSt/cagJjMAuUSM27Eg5jCAp4Svy74gBSzABV8mdfDCBLmF bCU+LerEiQsIaAn8XbiC0YQm1PASqJl30I2EFsIqGR7234WEJtXQFDi5MwnYDazgKZE6/bf7B C2vETz1tnMEPWKEv3zHrBNYOSbhaRlFpKWWUhaFjAyr2LUKE4tKkst0jU01UsqykzPKMlNzMz RNTQw1stNLS5OTE/NSUwq1kvOz93ECAwxBiDYwbhmu+chRkkOJiVR3k3anZFCfEn5KZUZicUZ 8UWlOanFhxhlODiUJHgjH3RFCgkWpaanVqRl5gCDHSYtwcGjJMIbAZLmLS5IzC3OTIdInWLU5 Xg14f83JiGWvPy8VClx3gaQIgGQoozSPLgRsMi7xCgrJczLCHSUEE9BalFuZgmq/CtGcQ5GJW FeG5ApPJl5JXCbXgEdwQRyhG8nyBEliQgpqQbGOp7LDNtvNt7i3HbN+4cZc8S83rDU+Gs5X/U Fn5a+6xPcyGJ5uLXy6YeAy3vmFZyN2t8tv2/ZaSGebR+Xlc95f6jN+ob5jBeba1a/eF8aLxz0 bWrTpksLtE+G51RY5sluDdXuZfzQ+vJVLUPU55s9T98HFxkWzej61j35ufa/bONnrKXPxFSnK rEUZyQaajEXFScCAJKwcSS3AgAA X-Env-Sender: prvs=3873657b9=roger.pau@citrix.com X-Msg-Ref: server-12.tower-31.messagelabs.com!1502273912!92433541!1 X-Originating-IP: [66.165.176.89] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n, received_headers: No Received headers X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 36834 invoked from network); 9 Aug 2017 10:18:34 -0000 Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89) by server-12.tower-31.messagelabs.com with RC4-SHA encrypted SMTP; 9 Aug 2017 10:18:34 -0000 X-IronPort-AV: E=Sophos;i="5.41,347,1498521600"; d="scan'208";a="434835738" From: Roger Pau Monne To: Date: Wed, 9 Aug 2017 11:18:21 +0100 Message-ID: <20170809101821.50836-2-roger.pau@citrix.com> X-Mailer: git-send-email 2.11.0 (Apple Git-81) In-Reply-To: <20170809101821.50836-1-roger.pau@citrix.com> References: <20170809101821.50836-1-roger.pau@citrix.com> MIME-Version: 1.0 Cc: Andrew Cooper , Jan Beulich , Roger Pau Monne Subject: [Xen-devel] [PATCH 2/2] x86: fix printed messages in arch_set_info_hvm_guest X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Using gprintk in arch_set_info_hvm_guest doesn't make sense, since most of the time this function will be called from the toolstack domain builder or Xen itself in case of Dom0. Switch to using printk instead. Signed-off-by: Roger Pau Monné --- Cc: Jan Beulich Cc: Andrew Cooper --- xen/arch/x86/hvm/domain.c | 77 +++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c index 60474649de..cb4e6cd98f 100644 --- a/xen/arch/x86/hvm/domain.c +++ b/xen/arch/x86/hvm/domain.c @@ -24,12 +24,14 @@ #include -static int check_segment(struct segment_register *reg, enum x86_segment seg) +static int check_segment(struct vcpu *v, struct segment_register *reg, + enum x86_segment seg) { if ( reg->pad != 0 ) { - gprintk(XENLOG_ERR, "Segment attribute bits 12-15 are not zero\n"); + printk(XENLOG_ERR "%pv Segment attribute bits 12-15 are not zero\n", + v); return -EINVAL; } @@ -37,7 +39,8 @@ static int check_segment(struct segment_register *reg, enum x86_segment seg) { if ( seg != x86_seg_ds && seg != x86_seg_es ) { - gprintk(XENLOG_ERR, "Null selector provided for CS, SS or TR\n"); + printk(XENLOG_ERR "%pv Null selector provided for CS, SS or TR\n", + v); return -EINVAL; } return 0; @@ -47,26 +50,27 @@ static int check_segment(struct segment_register *reg, enum x86_segment seg) { if ( reg->s ) { - gprintk(XENLOG_ERR, "Code or data segment provided for TR\n"); + printk(XENLOG_ERR "%pv Code or data segment provided for TR\n", v); return -EINVAL; } if ( reg->type != SYS_DESC_tss_busy ) { - gprintk(XENLOG_ERR, "Non-32-bit-TSS segment provided for TR\n"); + printk(XENLOG_ERR "%pc Non-32-bit-TSS segment provided for TR\n", + v); return -EINVAL; } } else if ( !reg->s ) { - gprintk(XENLOG_ERR, - "System segment provided for a code or data segment\n"); + printk(XENLOG_ERR + "%pv System segment provided for a code or data segment\n", v); return -EINVAL; } if ( !reg->p ) { - gprintk(XENLOG_ERR, "Non-present segment provided\n"); + printk(XENLOG_ERR "%pv Non-present segment provided\n", v); return -EINVAL; } @@ -75,7 +79,7 @@ static int check_segment(struct segment_register *reg, enum x86_segment seg) case x86_seg_cs: if ( !(reg->type & 0x8) ) { - gprintk(XENLOG_ERR, "Non-code segment provided for CS\n"); + printk(XENLOG_ERR "%pv Non-code segment provided for CS\n", v); return -EINVAL; } break; @@ -83,7 +87,7 @@ static int check_segment(struct segment_register *reg, enum x86_segment seg) case x86_seg_ss: if ( (reg->type & 0x8) || !(reg->type & 0x2) ) { - gprintk(XENLOG_ERR, "Non-writeable segment provided for SS\n"); + printk(XENLOG_ERR "%pv Non-writeable segment provided for SS\n", v); return -EINVAL; } break; @@ -92,7 +96,8 @@ static int check_segment(struct segment_register *reg, enum x86_segment seg) case x86_seg_es: if ( (reg->type & 0x8) && !(reg->type & 0x2) ) { - gprintk(XENLOG_ERR, "Non-readable segment provided for DS or ES\n"); + printk(XENLOG_ERR + "%pv Non-readable segment provided for DS or ES\n", v); return -EINVAL; } break; @@ -141,7 +146,7 @@ int arch_set_info_hvm_guest(struct vcpu *v, const vcpu_hvm_context_t *ctx) /* Set accessed / busy bit for present segments. */ \ if ( s.p ) \ s.type |= (x86_seg_##s != x86_seg_tr ? 1 : 2); \ - check_segment(&s, x86_seg_ ## s); }) + check_segment(v, &s, x86_seg_ ## s); }) rc = SEG(cs, regs); rc |= SEG(ds, regs); @@ -159,36 +164,36 @@ int arch_set_info_hvm_guest(struct vcpu *v, const vcpu_hvm_context_t *ctx) limit = (limit << 12) | 0xfff; if ( regs->eip > limit ) { - gprintk(XENLOG_ERR, "EIP (%#08x) outside CS limit (%#08x)\n", - regs->eip, limit); + printk(XENLOG_ERR "%pv EIP (%#08x) outside CS limit (%#08x)\n", + v, regs->eip, limit); return -EINVAL; } if ( ss.dpl != cs.dpl ) { - gprintk(XENLOG_ERR, "SS.DPL (%u) is different than CS.DPL (%u)\n", - ss.dpl, cs.dpl); + printk(XENLOG_ERR "%pv SS.DPL (%u) is different than CS.DPL (%u)\n", + v, ss.dpl, cs.dpl); return -EINVAL; } if ( ds.p && ds.dpl > cs.dpl ) { - gprintk(XENLOG_ERR, "DS.DPL (%u) is greater than CS.DPL (%u)\n", - ds.dpl, cs.dpl); + printk(XENLOG_ERR "%pv DS.DPL (%u) is greater than CS.DPL (%u)\n", + v, ds.dpl, cs.dpl); return -EINVAL; } if ( es.p && es.dpl > cs.dpl ) { - gprintk(XENLOG_ERR, "ES.DPL (%u) is greater than CS.DPL (%u)\n", - es.dpl, cs.dpl); + printk(XENLOG_ERR "%pv ES.DPL (%u) is greater than CS.DPL (%u)\n", + v, es.dpl, cs.dpl); return -EINVAL; } if ( (regs->efer & EFER_LMA) && !(regs->efer & EFER_LME) ) { - gprintk(XENLOG_ERR, "EFER.LMA set without EFER.LME (%#016lx)\n", - regs->efer); + printk(XENLOG_ERR "%pv EFER.LMA set without EFER.LME (%#016lx)\n", + v, regs->efer); return -EINVAL; } @@ -217,29 +222,29 @@ int arch_set_info_hvm_guest(struct vcpu *v, const vcpu_hvm_context_t *ctx) /* Basic sanity checks. */ if ( !is_canonical_address(regs->rip) ) { - gprintk(XENLOG_ERR, "RIP contains a non-canonical address (%#lx)\n", - regs->rip); + printk(XENLOG_ERR "%pv RIP contains a non-canonical address (%#lx)\n", + v, regs->rip); return -EINVAL; } if ( !(regs->cr0 & X86_CR0_PG) ) { - gprintk(XENLOG_ERR, "CR0 doesn't have paging enabled (%#016lx)\n", - regs->cr0); + printk(XENLOG_ERR "%pv CR0 doesn't have paging enabled (%#016lx)\n", + v, regs->cr0); return -EINVAL; } if ( !(regs->cr4 & X86_CR4_PAE) ) { - gprintk(XENLOG_ERR, "CR4 doesn't have PAE enabled (%#016lx)\n", - regs->cr4); + printk(XENLOG_ERR "%pv CR4 doesn't have PAE enabled (%#016lx)\n", + v, regs->cr4); return -EINVAL; } if ( !(regs->efer & EFER_LME) ) { - gprintk(XENLOG_ERR, "EFER doesn't have LME enabled (%#016lx)\n", - regs->efer); + printk(XENLOG_ERR "%pv EFER doesn't have LME enabled (%#016lx)\n", + v, regs->efer); return -EINVAL; } @@ -274,16 +279,16 @@ int arch_set_info_hvm_guest(struct vcpu *v, const vcpu_hvm_context_t *ctx) if ( v->arch.hvm_vcpu.guest_cr[4] & ~hvm_cr4_guest_valid_bits(v, 0) ) { - gprintk(XENLOG_ERR, "Bad CR4 value: %#016lx\n", - v->arch.hvm_vcpu.guest_cr[4]); + printk(XENLOG_ERR "%pv Bad CR4 value: %#016lx\n", + v, v->arch.hvm_vcpu.guest_cr[4]); return -EINVAL; } errstr = hvm_efer_valid(v, v->arch.hvm_vcpu.guest_efer, -1); if ( errstr ) { - gprintk(XENLOG_ERR, "Bad EFER value (%#016lx): %s\n", - v->arch.hvm_vcpu.guest_efer, errstr); + printk(XENLOG_ERR "%pv Bad EFER value (%#016lx): %s\n", + v, v->arch.hvm_vcpu.guest_efer, errstr); return -EINVAL; } @@ -300,8 +305,8 @@ int arch_set_info_hvm_guest(struct vcpu *v, const vcpu_hvm_context_t *ctx) NULL, P2M_ALLOC); if ( !page ) { - gprintk(XENLOG_ERR, "Invalid CR3: %#lx\n", - v->arch.hvm_vcpu.guest_cr[3]); + printk(XENLOG_ERR "%pv Invalid CR3: %#lx\n", + v, v->arch.hvm_vcpu.guest_cr[3]); return -EINVAL; }