LGTM, thx.
On Wed, Oct 14, 2015 at 04:34:07PM +0800, Pan Xiuli wrote: > Now device and driver can support bigger memory, we need to abandon > our old 2G hard code. We get global memory by considering device > limitation, drm driver and kernel support and raw, this will ensure > a bigger global memory and a more stable system. We get max mem alloc > size from global memory size and the device limition. > > Signed-off-by: Pan Xiuli <xiuli....@intel.com> > --- > src/cl_device_id.c | 20 +++++++++++++++----- > src/intel/intel_driver.c | 5 +++++ > 2 files changed, 20 insertions(+), 5 deletions(-) > > diff --git a/src/cl_device_id.c b/src/cl_device_id.c > index d92ce95..1c626f8 100644 > --- a/src/cl_device_id.c > +++ b/src/cl_device_id.c > @@ -547,14 +547,24 @@ skl_gt4_break: > > /* Apply any driver-dependent updates to the device info */ > cl_driver_update_device_info(ret); > - > + #define toMB(size) (size)&(0xfffffffffffffff<<20) > + /* Get the global_mem_size and max_mem_alloc size from > + * driver, system ram and hardware*/ > struct sysinfo info; > if (sysinfo(&info) == 0) { > - uint64_t two_gb = 2 * 1024 * 1024 * 1024ul; > + uint64_t totalgpumem = ret->global_mem_size; > + uint64_t maxallocmem = ret->max_mem_alloc_size; > uint64_t totalram = info.totalram * info.mem_unit; > - ret->global_mem_size = (totalram > two_gb) ? > - two_gb : info.totalram; > - ret->max_mem_alloc_size = ret->global_mem_size / 2; > + /* In case to keep system stable we just use half > + * of the raw as global mem */ > + ret->global_mem_size = toMB((totalram / 2 > totalgpumem) ? > + totalgpumem: totalram / 2); > + /* The hardware has some limit about the alloc size > + * and the excution of kernel need some global mem > + * so we now make sure single mem does not use much > + * than 3/4 global mem*/ > + ret->max_mem_alloc_size = toMB((ret->global_mem_size * 3 / 4 > > maxallocmem) ? > + maxallocmem: ret->global_mem_size * 3 / 4); > } > > return ret; > diff --git a/src/intel/intel_driver.c b/src/intel/intel_driver.c > index 035a103..782a2de 100644 > --- a/src/intel/intel_driver.c > +++ b/src/intel/intel_driver.c > @@ -829,6 +829,11 @@ intel_update_device_info(cl_device_id device) > if (IS_CHERRYVIEW(device->device_id)) > printf(CHV_CONFIG_WARNING); > #endif > + //We should get the device memory dynamically, but the > + //mapablce mem size usage is unknown. Just ignore it. > + size_t total_mem,map_mem; > + if(drm_intel_get_aperture_sizes(driver->fd,&map_mem,&total_mem) == 0) > + device->global_mem_size = (cl_ulong)total_mem; > > intel_driver_context_destroy(driver); > intel_driver_close(driver); > -- > 2.1.4 > > _______________________________________________ > Beignet mailing list > Beignet@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet