In r345811 I introduced a bug when I copied the malloc() of the fake-page array from one place to another by omitting the M_ZERO. Put it back in dmar_bus_dmamap_load_phys() and dmar_bus_dmamap_load_buffer() as well as nvdimm_spa_uio() and nvdimm_spa_g_all_unmapped().
Details
Details
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
I think that adding M_ZERO in the places were it is missed is better solution. I am not sure that re-initialization case is not used at all. It is supposed to be used when fake pages come from the vm_page_array[], e.g. typically x86 aperture (or BARs) is located in PCI window and we specially cover memory to 4G in vm_page_array[] even if machine has less than 4G. For such persistent fake pages, it is useful to keep all the fields of struct vm_page intact. I believe I once pasted you the change I have in bhyve+DMAR branch which unconditionally initializes holes in phys map as fictitious pages.