On 03/17/2016 06:35 PM, Stefan Hajnoczi wrote:
On Thu, Mar 17, 2016 at 04:32:56PM +0800, Xiao Guangrong wrote:+static void +nvdimm_dsm_function0(uint32_t supported_func, hwaddr dsm_mem_addr) +{ + NvdimmDsmFunc0Out func0 = { + .len = cpu_to_le32(sizeof(func0)), + .supported_func = cpu_to_le32(supported_func), + }; + cpu_physical_memory_write(dsm_mem_addr, &func0, sizeof(func0)); +} + +static void +nvdimm_dsm_no_payload(uint32_t func_ret_status, hwaddr dsm_mem_addr) +{ + NvdimmDsmFuncNoPayloadOut out = { + .len = cpu_to_le32(sizeof(out)), + .func_ret_status = cpu_to_le32(func_ret_status), + }; + cpu_physical_memory_write(dsm_mem_addr, &out, sizeof(out)); +} + +static void nvdimm_dsm_root(NvdimmDsmIn *in, hwaddr dsm_mem_addr) +{ + /* + * function 0 is called to inquire which functions are supported by + * OSPM + */ + if (!in->function) { + return nvdimm_dsm_function0(0 /* No function supported other + than function 0 */, dsm_mem_addr);The return type is void so "return foo()" looks strange. I went back and double-checked function prototypes because I was surprised by this line of code. Please use the conventional "foo(); return;" for void return instead.
I am so lazy to omit this single line. :) Okay, will follow this style in the next version.
