On Thu, Dec 08, 2022 at 10:55:58PM +0000, Fan Ni wrote: > On Mon, Nov 28, 2022 at 10:01:57AM -0500, Gregory Price wrote: > > > > - if (cxl_dstate->pmem_size < CXL_CAPACITY_MULTIPLIER) { > > + if ((cxl_dstate->vmem_size < CXL_CAPACITY_MULTIPLIER) || > > + (cxl_dstate->pmem_size < CXL_CAPACITY_MULTIPLIER)) { > > return CXL_MBOX_INTERNAL_ERROR; > > } > For a cxl configuration with only pmem or vmem, vmem_size or pmem_size > can be 0 and fail the check? >
While nonsensical, i believe it's technically supported. The prior implementation likewise enabled pmem_size to be 0 in these checks. > > > > +error_cleanup: > > + int i; > > + for (i = 0; i < cur_ent; i++) { > > + g_free(table[i]); > > + } > > + return rc; > > } > > I hit an error when compiling with gcc version 9.4.0 > (Ubuntu 9.4.0-1ubuntu1~20.04.1), maybe moving the declaration of `i` to > the following loop. > > > ../hw/mem/cxl_type3.c:211:5: error: a label can only be part of a statement > and a declaration is not a statement > 211 | int i; > | ^~~ Moved the declaration to the top fo the function with the rest of the declarations. Good catch.