From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34636) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ymfa6-00072F-IE for qemu-devel@nongnu.org; Mon, 27 Apr 2015 05:44:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ymfa3-0001dp-5x for qemu-devel@nongnu.org; Mon, 27 Apr 2015 05:44:02 -0400 Received: from e06smtp14.uk.ibm.com ([195.75.94.110]:57632) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ymfa2-0001ct-Te for qemu-devel@nongnu.org; Mon, 27 Apr 2015 05:43:59 -0400 Received: from /spool/local by e06smtp14.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 27 Apr 2015 10:43:57 +0100 Received: from b06cxnps4074.portsmouth.uk.ibm.com (d06relay11.portsmouth.uk.ibm.com [9.149.109.196]) by d06dlp01.portsmouth.uk.ibm.com (Postfix) with ESMTP id 17F0417D8062 for ; Mon, 27 Apr 2015 10:44:36 +0100 (BST) Received: from d06av08.portsmouth.uk.ibm.com (d06av08.portsmouth.uk.ibm.com [9.149.37.249]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t3R9htp25767556 for ; Mon, 27 Apr 2015 09:43:55 GMT Received: from d06av08.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av08.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t3R9hseU021671 for ; Mon, 27 Apr 2015 03:43:55 -0600 Date: Mon, 27 Apr 2015 11:43:53 +0200 From: Michael Mueller Message-ID: <20150427114353.0386c3eb@bee> In-Reply-To: <553DF033.1060405@de.ibm.com> References: <1428933396-37887-1-git-send-email-mimu@linux.vnet.ibm.com> <1428933396-37887-12-git-send-email-mimu@linux.vnet.ibm.com> <553DF033.1060405@de.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v5 11/17] target-s390x: Add KVM VM attribute interface for S390 CPU models List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Christian Borntraeger Cc: linux-s390@vger.kernel.org, Eduardo Habkost , kvm@vger.kernel.org, Gleb Natapov , qemu-devel@nongnu.org, linux-kernel@vger.kernel.org, Cornelia Huck , Alexander Graf , "Jason J. Herne" , Daniel Hansel , Paolo Bonzini , Andreas Faerber , Richard Henderson On Mon, 27 Apr 2015 10:15:47 +0200 Christian Borntraeger wrote: > Am 13.04.2015 um 15:56 schrieb Michael Mueller: > [...] > > +static int cpu_model_get(KVMState *s, uint64_t attr, uint64_t addr) > > +{ > > + int rc = -ENOSYS; > > + struct kvm_device_attr dev_attr = { > > + .group = KVM_S390_VM_CPU_MODEL, > > + .attr = attr, > > + .addr = addr, > > Would it make sense to do the cast here.... cpu_model_get/set() is used to handle both attributes, KVM_S390_VM_CPU_MACHINE and KVM_S390_VM_CPU_PROCESSOR. Both require a different type in the signature, (S390ProcessorProps*) and (S390MachineProps*). Adding both as parameters seems to be odd and would require additionally logic in the function. Thus I think doing the cast outside is just the right thing to do. Michael > > + }; > > + > > + if (kvm_vm_check_attr(s, dev_attr.group, dev_attr.attr)) { > > + rc = kvm_vm_ioctl(s, KVM_GET_DEVICE_ATTR, &dev_attr); > > + } > > + > > + return rc; > > +} > > + > > +static int cpu_model_set(KVMState *s, uint64_t attr, uint64_t addr) > > +{ > > + int rc = -ENOSYS; > > + struct kvm_device_attr dev_attr = { > > + .group = KVM_S390_VM_CPU_MODEL, > > + .attr = attr, > > + .addr = addr, > > ...and here... > > > + }; > > + > > + if (kvm_vm_check_attr(s, dev_attr.group, dev_attr.attr)) { > > + rc = kvm_vm_ioctl(s, KVM_SET_DEVICE_ATTR, &dev_attr); > > + } > > + > > + return rc; > > +} > > + > > +static int kvm_s390_get_machine_props(KVMState *s, S390MachineProps *prop) > > +{ > > + int rc = -EFAULT; > > + > > + if (s) { > > + rc = cpu_model_get(s, KVM_S390_VM_CPU_MACHINE, (uint64_t) prop); > > and pass S390MachineProps as 3rd parameter? > > > > +int kvm_s390_get_processor_props(S390ProcessorProps *prop) > > +{ > > + int rc; > > + > > + rc = cpu_model_get(kvm_state, KVM_S390_VM_CPU_PROCESSOR, (uint64_t) prop); > > dito > > + trace_kvm_get_processor_props(rc, prop->cpuid, prop->ibc); > > + return rc; > > +} > > + > > +int kvm_s390_set_processor_props(S390ProcessorProps *prop) > > +{ > > + int rc; > > + > > + rc = cpu_model_set(kvm_state, KVM_S390_VM_CPU_PROCESSOR, (uint64_t) prop); > > dito