From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC 2/2] kvm: guest-side changes for tmem on KVM Date: Mon, 19 Mar 2012 13:49:54 -0400 Message-ID: <20120319174954.GD5063@phenom.dumpdata.com> References: <1331226157.2585.33.camel@aks> <20120315170316.GM30250@phenom.dumpdata.com> <1331874035.2790.5.camel@aks> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-kernel@vger.kernel.org, Dan Magenheimer , kvm@vger.kernel.org, ashu tripathi , nishant gulhane , Shreyas Mahure , amarmore2006 , mahesh mohan To: Akshay Karle , avi@redhat.com Return-path: Content-Disposition: inline In-Reply-To: <1331874035.2790.5.camel@aks> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Fri, Mar 16, 2012 at 10:30:35AM +0530, Akshay Karle wrote: > >> +/* kvm tmem foundation ops/hypercalls */ > >> + > >> +static inline int kvm_tmem_op(u32 tmem_cmd, u32 tmem_pool, struct tmem_oid oid, > >> + u32 index, u32 tmem_offset, u32 pfn_offset, unsigned long pfn, u32 len, uint16_t cli_id) > > > > That is rather long list of arguments. Could you pass in a structure instead? > > > > Are you actually using all of the arguments in every call? > > For different functions different parameters are used. If we want to reduce the number of arguments, > the tmem_ops structure can be created in the functions calling kvm_tmem_op instead of creating it here > and that can be passed, will make these changes in the next patch. > > >> +{ > >> + struct tmem_ops op; > >> + int rc = 0; > >> + op.cmd = tmem_cmd; > >> + op.pool_id = tmem_pool; > >> + op.u.gen.oid[0] = oid.oid[0]; > >> + op.u.gen.oid[1] = oid.oid[1]; > >> + op.u.gen.oid[2] = oid.oid[2]; > >> + op.u.gen.index = index; > >> + op.u.gen.tmem_offset = tmem_offset; > >> + op.u.gen.pfn_offset = pfn_offset; > >> + op.u.gen.pfn = pfn; > >> + op.u.gen.len = len; > >> + op.u.gen.cli_id = cli_id; > >> + rc = kvm_hypercall1(KVM_HC_TMEM, virt_to_phys(&op)); > >> + rc = rc + 1000; > > > > Why the addition? > > If you notice the host patch I had subtracted 1000 while passing the return value > in the kvm_emulate_hypercall function. This was to avoid the guest kernel panic due to > the return of a non-negative value by the kvm_hypercall. In order to get the original value > back I added 1000. Avi, is there a right way of doing this?