On 15/08/2016 19:17, Jim Harris wrote: > On Linux, all huge pages are zeroed by the kernel before > first access by the DPDK application. But on FreeBSD, > the contigmem driver would only zero the contiguous > memory regions during initial driver load. > > DPDK commit b78c91751 eliminated the explicit memset() > operation for rte_zmalloc(), which was OK on Linux > because the kernel zeroes the pages during app start, > but this broke FreeBSD. So this patch explicitly > zeroes the pages before they are mmap'd, to ensure > equivalent behavior to Linux > > Reported-by: Daniel Verkamp <daniel.verkamp at intel.com> > Tested-by: Daniel Verkamp <daniel.verkamp at intel.com> > Signed-off-by: Jim Harris <james.r.harris at intel.com> > --- > lib/librte_eal/bsdapp/contigmem/contigmem.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_eal/bsdapp/contigmem/contigmem.c > b/lib/librte_eal/bsdapp/contigmem/contigmem.c > index c6ca3b9..da971de 100644 > --- a/lib/librte_eal/bsdapp/contigmem/contigmem.c > +++ b/lib/librte_eal/bsdapp/contigmem/contigmem.c > @@ -216,15 +216,19 @@ static int > contigmem_mmap_single(struct cdev *cdev, vm_ooffset_t *offset, vm_size_t > size, > struct vm_object **obj, int nprot) > { > + uint64_t buffer_index; > + > /* > * The buffer index is encoded in the offset. Divide the offset by > * PAGE_SIZE to get the index of the buffer requested by the user > * app. > */ > - if ((*offset/PAGE_SIZE) >= contigmem_num_buffers) > + buffer_index = *offset / PAGE_SIZE; > + if (buffer_index >= contigmem_num_buffers) > return EINVAL; > > - *offset = (vm_ooffset_t)vtophys(contigmem_buffers[*offset/PAGE_SIZE]); > + memset(contigmem_buffers[buffer_index], 0, contigmem_buffer_size); > + *offset = (vm_ooffset_t)vtophys(contigmem_buffers[buffer_index]); > *obj = vm_pager_allocate(OBJT_DEVICE, cdev, size, nprot, *offset, > curthread->td_ucred); > > >
I think you should include the Fixes line: Fixes: b78c9175118f ("mem: do not zero out memory on zmalloc") Other than that: Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy at intel.com>