From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N0tor-0002XN-37 for qemu-devel@nongnu.org; Thu, 22 Oct 2009 05:18:53 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N0tok-0002V7-Um for qemu-devel@nongnu.org; Thu, 22 Oct 2009 05:18:51 -0400 Received: from [199.232.76.173] (port=47320 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N0tok-0002Uy-E8 for qemu-devel@nongnu.org; Thu, 22 Oct 2009 05:18:46 -0400 Received: from mtagate5.de.ibm.com ([195.212.17.165]:40403) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1N0toj-00088C-GT for qemu-devel@nongnu.org; Thu, 22 Oct 2009 05:18:46 -0400 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate5.de.ibm.com (8.13.1/8.13.1) with ESMTP id n9M9IbYB006138 for ; Thu, 22 Oct 2009 09:18:37 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id n9M9IbGu3379232 for ; Thu, 22 Oct 2009 11:18:37 +0200 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n9M9IaNv020493 for ; Thu, 22 Oct 2009 11:18:36 +0200 Message-ID: <4AE02379.4090603@de.ibm.com> Date: Thu, 22 Oct 2009 11:18:49 +0200 From: Carsten Otte MIME-Version: 1.0 References: <1255963059-10298-1-git-send-email-agraf@suse.de> <4ADDE7E3.9090601@de.ibm.com> <4AE0210D.9020409@redhat.com> In-Reply-To: <4AE0210D.9020409@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 0/9] S390x KVM support List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Carsten Otte , KVM list , Alexander Graf , qemu-devel , hare@suse.de Avi Kivity wrote: >> @@ -116,6 +117,11 @@ >> __u64 cr8; >> __u64 apic_base; >> >> +#ifdef CONFIG_S390 >> + /* the processor status word for s390 */ >> + __u64 psw_mask; /* psw upper half */ >> + __u64 psw_addr; /* psw lower half */ >> +#endif > > Doesn't this break backward compatibility by changing the structure? Yes, but with a zero user base I think it's okay. I'd update our userspace. Once we pull CONFIG_EXPERIMENTAL we keep the API stable. > Additionally, CONFIG_ in public headers are frowned upon as > non-portable. A workaround is to #define __KVM_S390 in and > depend on that. Yea, that's better. >> --- kvm.orig/arch/s390/kvm/kvm-s390.c 2009-10-20 15:01:02.000000000 >> +0200 >> +++ kvm/arch/s390/kvm/kvm-s390.c 2009-10-20 18:13:45.000000000 +0200 >> @@ -421,7 +421,8 @@ >> if (atomic_read(&vcpu->arch.sie_block->cpuflags) & CPUSTAT_RUNNING) >> rc = -EBUSY; >> else >> - vcpu->arch.sie_block->gpsw = psw; >> + vcpu->run->psw_mask = psw.mask; >> + vcpu->run->psw_addr = psw.addr; > > It's traditional to add braces around multi-line else blocks. This is a plain bug, will fix. > I'd also appreciate an explanation of what this is all about. The processor status word does contain various bits about the CPU's state, such as interrupt mask bits, current address space, and the current instruction address. The status is kept in the in-kernel sie control block data structure and has so far only been mirrored into kvm_run during exit_reason == s390_sieic exits because user space needs to work on it. It was never part of get_regs/set_regs and friends as performance optimization: it's needed on almost every exit, having it in kvm_run saves doing syscalls. The gdb stub requires an up-to-date copy at every exit, and therefore the patch moves it out of the union and updates it at all userland exits.