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.
signature.asc
Description: PGP signature