From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiao Guangrong Subject: Re: [PATCH v4 2/3] nvdimm acpi: introduce _FIT Date: Thu, 3 Nov 2016 22:53:43 +0800 Message-ID: References: <1478145090-11987-1-git-send-email-guangrong.xiao@linux.intel.com> <1478145090-11987-3-git-send-email-guangrong.xiao@linux.intel.com> <20161103125808.11857a35@nial.brq.redhat.com> <2f770790-f3e9-ce56-e11b-e9f7e73e7078@linux.intel.com> <20161103140015.5f07b009@nial.brq.redhat.com> <20161103154934.2a9321f7@Igors-MacBook-Pro.local> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: pbonzini@redhat.com, gleb@kernel.org, mtosatti@redhat.com, stefanha@redhat.com, mst@redhat.com, rth@twiddle.net, ehabkost@redhat.com, dan.j.williams@intel.com, kvm@vger.kernel.org, qemu-devel@nongnu.org To: Igor Mammedov Return-path: Received: from mga09.intel.com ([134.134.136.24]:49517 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751301AbcKCPB2 (ORCPT ); Thu, 3 Nov 2016 11:01:28 -0400 In-Reply-To: <20161103154934.2a9321f7@Igors-MacBook-Pro.local> Sender: kvm-owner@vger.kernel.org List-ID: On 11/03/2016 10:49 PM, Igor Mammedov wrote: > On Thu, 3 Nov 2016 21:02:22 +0800 > Xiao Guangrong wrote: > >> >> >> On 11/03/2016 09:00 PM, Igor Mammedov wrote: >> >> >> >> >>>>> just drop this and describe properly 'len' in spec section >>>>> i.e. len: length of entire returned data (including the header) >>>> >>>> Okay, i will change the spec like this: >>>> >>>> QEMU Writes Output Data (based on the offset in the page): >>>> [0x0 - 0x3]: 4 bytes, length of entire returned data >>>> (including the header) >>>> >>>> And drop the length field in Read_Fit return buffer, doc >>>> the fit buffer like this: >>>> >>>> +----------+--------+--------+-------------------------------------------+ >>>> | Field | Length | Offset | >>>> Description | >>>> +----------+--------+--------+-------------------------------------------+ >>> you need to add length here, otherwise this table is not correct >> >> Ah, so i am confused. >> >> struct NvdimmFuncReadFITOut definition is based on the layout of >> Read_FI output. You suggested to drop the length filed in >> NvdimmFuncReadFITOut but keep it in the layout, it is not consistent. >> >> I missed something? > > +struct NvdimmFuncReadFITOut { > + /* the size of buffer filled by QEMU. */ > + uint32_t len; > + uint32_t func_ret_status; /* return status code. */ > + uint8_t fit[0]; /* the FIT data. */ > +} QEMU_PACKED; > > -------------------------------- > | field | len | off | desc... > -------------------------------- > | length | 4 | 0 | .... > -------------------------------- > | status | 4 | 4 | .... > -------------------------------- > | fit data | ................ > > i.e. you were forgetting to add length in spec so offsets were wrong > even for described fields. We can not do this. @len is used by QEMU emulation to count the size of the buffer that _DSM should return. It's only used in NVDIMM_COMMON_DSM method which is shared by the DSM method from VM and Read_Fit.