From patchwork Mon Sep 28 12:05:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11803587 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8C546112C for ; Mon, 28 Sep 2020 12:06:05 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 540A820774 for ; Mon, 28 Sep 2020 12:06:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="dmZcRApl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 540A820774 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMruL-0004aj-PY; Mon, 28 Sep 2020 12:05:29 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMruK-0004aT-RL for xen-devel@lists.xenproject.org; Mon, 28 Sep 2020 12:05:28 +0000 X-Inumbo-ID: dddf9e3f-5782-43e1-8bd6-99709a9d540e Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id dddf9e3f-5782-43e1-8bd6-99709a9d540e; Mon, 28 Sep 2020 12:05:28 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1601294727; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Js2i3+t2MjKKdoxJFs426NVI70khStNEv3wPtYu3ANc=; b=dmZcRAplKOWy4eYFGb/R1j56e4ra1PeML2ixY1XGzQds6KR7KrHtIdiaimDpBZBhhAP7cr ng/VD5FPRYiz2gI67H41Z9JBGzWdez7+jDi5sNVjRRnFlVgcNRYZDs84EZDl40G72k25XL 9gqlmzPjajDQEEb11BKN7CfKgoJJKc0= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 3A3B2ACD5; Mon, 28 Sep 2020 12:05:27 +0000 (UTC) Subject: [PATCH 1/5] x86: introduce read_sregs() to allow storing to memory directly From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: <6cd5dfca-a10c-0847-c084-a511ab2cbb1c@suse.com> Date: Mon, 28 Sep 2020 14:05:26 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" When storing all (data) segment registers in one go, prefer writing the selector values directly to memory (as opposed to read_sreg()). Also move the single register variant into the regs.h. Signed-off-by: Jan Beulich --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1703,10 +1703,7 @@ static void save_segments(struct vcpu *v { struct cpu_user_regs *regs = &v->arch.user_regs; - regs->ds = read_sreg(ds); - regs->es = read_sreg(es); - regs->fs = read_sreg(fs); - regs->gs = read_sreg(gs); + read_sregs(regs); if ( !is_pv_32bit_vcpu(v) ) { --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -43,10 +43,7 @@ static void read_registers(struct cpu_us crs[2] = read_cr2(); crs[3] = read_cr3(); crs[4] = read_cr4(); - regs->ds = read_sreg(ds); - regs->es = read_sreg(es); - regs->fs = read_sreg(fs); - regs->gs = read_sreg(gs); + read_sregs(regs); crs[5] = rdfsbase(); crs[6] = rdgsbase(); crs[7] = rdgsshadow(); --- a/xen/include/asm-x86/regs.h +++ b/xen/include/asm-x86/regs.h @@ -15,4 +15,18 @@ (diff == 0); \ }) +#define read_sreg(name) ({ \ + unsigned int __sel; \ + asm volatile ( "mov %%" STR(name) ",%0" : "=r" (__sel) ); \ + __sel; \ +}) + +static inline void read_sregs(struct cpu_user_regs *regs) +{ + asm volatile ( "mov %%ds, %0" : "=m" (regs->ds) ); + asm volatile ( "mov %%es, %0" : "=m" (regs->es) ); + asm volatile ( "mov %%fs, %0" : "=m" (regs->fs) ); + asm volatile ( "mov %%gs, %0" : "=m" (regs->gs) ); +} + #endif /* __X86_REGS_H__ */ --- a/xen/include/asm-x86/system.h +++ b/xen/include/asm-x86/system.h @@ -5,12 +5,6 @@ #include #include -#define read_sreg(name) \ -({ unsigned int __sel; \ - asm volatile ( "mov %%" STR(name) ",%0" : "=r" (__sel) ); \ - __sel; \ -}) - static inline void wbinvd(void) { asm volatile ( "wbinvd" ::: "memory" ); From patchwork Mon Sep 28 12:05:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11803589 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B6203112C for ; Mon, 28 Sep 2020 12:06:45 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7763720774 for ; Mon, 28 Sep 2020 12:06:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="POcM85f/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7763720774 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMrur-0004hv-8p; Mon, 28 Sep 2020 12:06:01 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMruq-0004hZ-2g for xen-devel@lists.xenproject.org; Mon, 28 Sep 2020 12:06:00 +0000 X-Inumbo-ID: eb873d6d-bbf2-4f59-835f-4085c5d4113e Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id eb873d6d-bbf2-4f59-835f-4085c5d4113e; Mon, 28 Sep 2020 12:05:59 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1601294758; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=u5ow4pZ7eeUG6oXiFYbm6DR8f6xhKFmqDHIo8zuzbmU=; b=POcM85f/FhzTVbM6qJ9WOrssFznTm54J/9eMbj27D109GwdsEgPV9aEcV0kldG4gKh37z7 sUdEoVV9ylU67s85HgjZUkRZcmw6D2Y8lauDBZrhypLPG9y4UD19JO4Fh9cd2NNX1Pc/+t JKCEMppNfqEa1YxcaclT1I7ncMqbIt8= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 97CB9AD11; Mon, 28 Sep 2020 12:05:58 +0000 (UTC) Subject: [PATCH 2/5] x86/ELF: don't open-code read_sreg() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: Date: Mon, 28 Sep 2020 14:05:58 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Signed-off-by: Jan Beulich --- a/xen/include/asm-x86/x86_64/elf.h +++ b/xen/include/asm-x86/x86_64/elf.h @@ -1,6 +1,8 @@ #ifndef __X86_64_ELF_H__ #define __X86_64_ELF_H__ +#include + typedef struct { unsigned long r15; unsigned long r14; @@ -53,16 +55,16 @@ static inline void elf_core_save_regs(EL asm volatile("movq %%rdi,%0" : "=m"(core_regs->rdi)); /* orig_rax not filled in for now */ core_regs->rip = (unsigned long)elf_core_save_regs; - asm volatile("movl %%cs, %%eax;" :"=a"(core_regs->cs)); + core_regs->cs = read_sreg(cs); asm volatile("pushfq; popq %0" :"=m"(core_regs->rflags)); asm volatile("movq %%rsp,%0" : "=m"(core_regs->rsp)); asm volatile("movl %%ss, %%eax;" :"=a"(core_regs->ss)); /* thread_fs not filled in for now */ /* thread_gs not filled in for now */ - asm volatile("movl %%ds, %%eax;" :"=a"(core_regs->ds)); - asm volatile("movl %%es, %%eax;" :"=a"(core_regs->es)); - asm volatile("movl %%fs, %%eax;" :"=a"(core_regs->fs)); - asm volatile("movl %%gs, %%eax;" :"=a"(core_regs->gs)); + core_regs->ds = read_sreg(ds); + core_regs->es = read_sreg(es); + core_regs->fs = read_sreg(fs); + core_regs->gs = read_sreg(gs); asm volatile("mov %%cr0, %0" : "=r" (tmp) : ); xen_core_regs->cr0 = tmp; From patchwork Mon Sep 28 12:06:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11803591 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 299EF618 for ; Mon, 28 Sep 2020 12:07:37 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EEE9620774 for ; Mon, 28 Sep 2020 12:07:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="acGqAoPG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EEE9620774 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMrvT-0004o7-IU; Mon, 28 Sep 2020 12:06:39 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMrvR-0004ni-Hn for xen-devel@lists.xenproject.org; Mon, 28 Sep 2020 12:06:37 +0000 X-Inumbo-ID: d92448d5-000e-455a-bae2-1c7c36843a38 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id d92448d5-000e-455a-bae2-1c7c36843a38; Mon, 28 Sep 2020 12:06:36 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1601294796; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=39RXtyp1xnMTiCSoxMegNOqZkefB1zrQPUzVnA3Y13o=; b=acGqAoPGlJrm4R5Bn8G2ty+vgAuzeYh+2GxtGp7zLzsklH+v+/lbTNBjVOeiz2VEZKFP05 yt1aCUij2tKSs0/0MY3zY3ev1yop5K4iVUYWS08FjxCSlOGL3BXGJrB/j5ahaorDhrhosA v5t6y5f4ghntnOdxvMecTJ7CqpAyhSY= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 2A680AD11; Mon, 28 Sep 2020 12:06:36 +0000 (UTC) Subject: [PATCH 3/5] x86/ELF: don't store function pointer in elf_core_save_regs() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: <8abe7016-1cd7-246e-24ef-92d92ff27ad3@suse.com> Date: Mon, 28 Sep 2020 14:06:35 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" This keeps at least gcc 10 from generating a separate function instance in common/kexec.o alongside the inlining of the function in its sole caller. I also think putting the address of the actual code storing the registers is a better indication to consumers than that of an otherwise unreferenced function. Signed-off-by: Jan Beulich --- a/xen/include/asm-x86/x86_64/elf.h +++ b/xen/include/asm-x86/x86_64/elf.h @@ -54,7 +54,7 @@ static inline void elf_core_save_regs(EL asm volatile("movq %%rsi,%0" : "=m"(core_regs->rsi)); asm volatile("movq %%rdi,%0" : "=m"(core_regs->rdi)); /* orig_rax not filled in for now */ - core_regs->rip = (unsigned long)elf_core_save_regs; + asm volatile("call 0f; 0: popq %0" : "=m" (core_regs->rip)); core_regs->cs = read_sreg(cs); asm volatile("pushfq; popq %0" :"=m"(core_regs->rflags)); asm volatile("movq %%rsp,%0" : "=m"(core_regs->rsp)); From patchwork Mon Sep 28 12:06:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11803595 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8565B618 for ; Mon, 28 Sep 2020 12:07:50 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4E2F220789 for ; Mon, 28 Sep 2020 12:07:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="hPMCOuR/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E2F220789 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMrvj-0004rE-Rq; Mon, 28 Sep 2020 12:06:55 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMrvi-0004qz-KR for xen-devel@lists.xenproject.org; Mon, 28 Sep 2020 12:06:54 +0000 X-Inumbo-ID: ae64392f-e7d4-4a97-879a-da544e2527eb Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id ae64392f-e7d4-4a97-879a-da544e2527eb; Mon, 28 Sep 2020 12:06:53 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1601294813; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+j7kytoAkHPvZqCUffA6Hq83rtd5YVvzPLNyUaQ7Eow=; b=hPMCOuR/fsALI0ndiJldWU7w09pCrIwsDM/SfaYfhDQhBO+RtQthzYY1Aejxnf2mJ8GGPO enEBLGPseheMQqRPeCjpDEvtF5LPJMkPssfdqW2HacRlO2ER8egy4rfneiVYvH4qnDyJSZ sR3yK1QPzWSIdf/84dD8kUdiadRR5Kk= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 2FEDEADA2; Mon, 28 Sep 2020 12:06:53 +0000 (UTC) Subject: [PATCH 4/5] x86/ELF: also record FS/GS bases in elf_core_save_regs() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: <518a5f88-3ae4-a3ed-ab13-caaf7e8a7295@suse.com> Date: Mon, 28 Sep 2020 14:06:52 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- a/xen/include/asm-x86/x86_64/elf.h +++ b/xen/include/asm-x86/x86_64/elf.h @@ -1,6 +1,7 @@ #ifndef __X86_64_ELF_H__ #define __X86_64_ELF_H__ +#include #include typedef struct { @@ -59,8 +60,8 @@ static inline void elf_core_save_regs(EL asm volatile("pushfq; popq %0" :"=m"(core_regs->rflags)); asm volatile("movq %%rsp,%0" : "=m"(core_regs->rsp)); asm volatile("movl %%ss, %%eax;" :"=a"(core_regs->ss)); - /* thread_fs not filled in for now */ - /* thread_gs not filled in for now */ + rdmsrl(MSR_FS_BASE, core_regs->thread_fs); + rdmsrl(MSR_GS_BASE, core_regs->thread_gs); core_regs->ds = read_sreg(ds); core_regs->es = read_sreg(es); core_regs->fs = read_sreg(fs); From patchwork Mon Sep 28 12:07:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11803593 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3971B618 for ; Mon, 28 Sep 2020 12:07:38 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 080F220789 for ; Mon, 28 Sep 2020 12:07:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="JZYqowXr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 080F220789 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMrw4-0004wx-61; Mon, 28 Sep 2020 12:07:16 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMrw3-0004vD-3n for xen-devel@lists.xenproject.org; Mon, 28 Sep 2020 12:07:15 +0000 X-Inumbo-ID: 08b581de-3285-44a4-b7eb-d7b24e750507 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 08b581de-3285-44a4-b7eb-d7b24e750507; Mon, 28 Sep 2020 12:07:13 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1601294832; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4inM3R0NfCzA5Q58fpfmc4RRtX/Qa9D0qpUJsy1JraU=; b=JZYqowXrB+/1bP58YnmbPgDzZKdC1G90QITO9Sy2z4LV4D2L9pHxrXfryEMnV3E2Ar/mdE mL6mQcLB6JbnlRErJ3OuRg90TEPmjM7EdmbaYHpKqpMmaWrkyUwKk2PXCL7A5AJ9/Pbp1k p++c1Oyx0FVsRcz9chaBM+tffb8lDOQ= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id CD92BACD5; Mon, 28 Sep 2020 12:07:12 +0000 (UTC) Subject: [PATCH 5/5] x86/ELF: eliminate pointless local variable from elf_core_save_regs() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: <47b0c4cf-df3b-ee07-f639-14ab6680f90f@suse.com> Date: Mon, 28 Sep 2020 14:07:12 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" We can just as well specify the CRn structure fields directly in the asm()s, just like done for all other ones. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- a/xen/include/asm-x86/x86_64/elf.h +++ b/xen/include/asm-x86/x86_64/elf.h @@ -37,8 +37,6 @@ typedef struct { static inline void elf_core_save_regs(ELF_Gregset *core_regs, crash_xen_core_t *xen_core_regs) { - unsigned long tmp; - asm volatile("movq %%r15,%0" : "=m"(core_regs->r15)); asm volatile("movq %%r14,%0" : "=m"(core_regs->r14)); asm volatile("movq %%r13,%0" : "=m"(core_regs->r13)); @@ -67,17 +65,10 @@ static inline void elf_core_save_regs(EL core_regs->fs = read_sreg(fs); core_regs->gs = read_sreg(gs); - asm volatile("mov %%cr0, %0" : "=r" (tmp) : ); - xen_core_regs->cr0 = tmp; - - asm volatile("mov %%cr2, %0" : "=r" (tmp) : ); - xen_core_regs->cr2 = tmp; - - asm volatile("mov %%cr3, %0" : "=r" (tmp) : ); - xen_core_regs->cr3 = tmp; - - asm volatile("mov %%cr4, %0" : "=r" (tmp) : ); - xen_core_regs->cr4 = tmp; + asm volatile("mov %%cr0, %0" : "=r" (xen_core_regs->cr0)); + asm volatile("mov %%cr2, %0" : "=r" (xen_core_regs->cr2)); + asm volatile("mov %%cr3, %0" : "=r" (xen_core_regs->cr3)); + asm volatile("mov %%cr4, %0" : "=r" (xen_core_regs->cr4)); } #endif /* __X86_64_ELF_H__ */ From patchwork Mon Sep 28 15:04:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 11803939 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5C4986CB for ; Mon, 28 Sep 2020 15:04:55 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 166A32078B for ; Mon, 28 Sep 2020 15:04:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="Dz4BabKn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 166A32078B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMuhB-0006IL-QP; Mon, 28 Sep 2020 15:04:05 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kMuhA-0006IG-KD for xen-devel@lists.xenproject.org; Mon, 28 Sep 2020 15:04:04 +0000 X-Inumbo-ID: 2be7f9bb-072e-4934-aeb1-b4485ee51b00 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 2be7f9bb-072e-4934-aeb1-b4485ee51b00; Mon, 28 Sep 2020 15:04:03 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1601305442; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PUo4DUEk3bsvbscc/27FSQKRTGz6kKuP6MnEqbPBVSI=; b=Dz4BabKn37pIFiEGERmEx1T392tp3G4K4XGgCPTojbJwnk0POH78ppYEGAnJScisIRHKlO VXbYfRXin87IZZWWmH0RB3IzBwfpQxKU6UiRVTfzjC4v7ZEJaiqYWB3C92LOOuHYCaSCk+ oXnczY43OuA9aazmwSc7HSYMCuKEekg= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id BB14CAD3C; Mon, 28 Sep 2020 15:04:02 +0000 (UTC) Subject: [PATCH 6/5] x86/ELF: drop unnecessary volatile from asm()-s in elf_core_save_regs() From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?utf-8?q?Roger_Pau_Monn=C3=A9?= References: Message-ID: <06b8dedb-49d9-eeb6-d56a-c7852486d22e@suse.com> Date: Mon, 28 Sep 2020 17:04:01 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" There are no hidden side effects here. Signed-off-by: Jan Beulich --- v2: New. --- a/xen/include/asm-x86/x86_64/elf.h +++ b/xen/include/asm-x86/x86_64/elf.h @@ -37,26 +37,26 @@ typedef struct { static inline void elf_core_save_regs(ELF_Gregset *core_regs, crash_xen_core_t *xen_core_regs) { - asm volatile("movq %%r15,%0" : "=m"(core_regs->r15)); - asm volatile("movq %%r14,%0" : "=m"(core_regs->r14)); - asm volatile("movq %%r13,%0" : "=m"(core_regs->r13)); - asm volatile("movq %%r12,%0" : "=m"(core_regs->r12)); - asm volatile("movq %%rbp,%0" : "=m"(core_regs->rbp)); - asm volatile("movq %%rbx,%0" : "=m"(core_regs->rbx)); - asm volatile("movq %%r11,%0" : "=m"(core_regs->r11)); - asm volatile("movq %%r10,%0" : "=m"(core_regs->r10)); - asm volatile("movq %%r9,%0" : "=m"(core_regs->r9)); - asm volatile("movq %%r8,%0" : "=m"(core_regs->r8)); - asm volatile("movq %%rax,%0" : "=m"(core_regs->rax)); - asm volatile("movq %%rcx,%0" : "=m"(core_regs->rcx)); - asm volatile("movq %%rdx,%0" : "=m"(core_regs->rdx)); - asm volatile("movq %%rsi,%0" : "=m"(core_regs->rsi)); - asm volatile("movq %%rdi,%0" : "=m"(core_regs->rdi)); + asm ( "movq %%r15,%0" : "=m" (core_regs->r15) ); + asm ( "movq %%r14,%0" : "=m" (core_regs->r14) ); + asm ( "movq %%r13,%0" : "=m" (core_regs->r13) ); + asm ( "movq %%r12,%0" : "=m" (core_regs->r12) ); + asm ( "movq %%rbp,%0" : "=m" (core_regs->rbp) ); + asm ( "movq %%rbx,%0" : "=m" (core_regs->rbx) ); + asm ( "movq %%r11,%0" : "=m" (core_regs->r11) ); + asm ( "movq %%r10,%0" : "=m" (core_regs->r10) ); + asm ( "movq %%r9,%0" : "=m" (core_regs->r9) ); + asm ( "movq %%r8,%0" : "=m" (core_regs->r8) ); + asm ( "movq %%rax,%0" : "=m" (core_regs->rax) ); + asm ( "movq %%rcx,%0" : "=m" (core_regs->rcx) ); + asm ( "movq %%rdx,%0" : "=m" (core_regs->rdx) ); + asm ( "movq %%rsi,%0" : "=m" (core_regs->rsi) ); + asm ( "movq %%rdi,%0" : "=m" (core_regs->rdi) ); /* orig_rax not filled in for now */ asm ( "call 0f; 0: popq %0" : "=m" (core_regs->rip) ); core_regs->cs = read_sreg(cs); - asm volatile("pushfq; popq %0" :"=m"(core_regs->rflags)); - asm volatile("movq %%rsp,%0" : "=m"(core_regs->rsp)); + asm ( "pushfq; popq %0" : "=m" (core_regs->rflags) ); + asm ( "movq %%rsp,%0" : "=m" (core_regs->rsp) ); core_regs->ss = read_sreg(ss); rdmsrl(MSR_FS_BASE, core_regs->thread_fs); rdmsrl(MSR_GS_BASE, core_regs->thread_gs);