Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'dma-mapping-5.8-5' of git://git.infradead.org/users/hch/dma-mapping

Pull dma-mapping fixes from Christoph Hellwig:

- add a warning when the atomic pool is depleted (David Rientjes)

- protect the parameters of the new scatterlist helper macros (Marek
Szyprowski )

* tag 'dma-mapping-5.8-5' of git://git.infradead.org/users/hch/dma-mapping:
scatterlist: protect parameters of the sg_table related macros
dma-mapping: warn when coherent pool is depleted

+9 -5
+4 -4
include/linux/scatterlist.h
··· 155 155 * Loop over each sg element in the given sg_table object. 156 156 */ 157 157 #define for_each_sgtable_sg(sgt, sg, i) \ 158 - for_each_sg(sgt->sgl, sg, sgt->orig_nents, i) 158 + for_each_sg((sgt)->sgl, sg, (sgt)->orig_nents, i) 159 159 160 160 /* 161 161 * Loop over each sg element in the given *DMA mapped* sg_table object. ··· 163 163 * of the each element. 164 164 */ 165 165 #define for_each_sgtable_dma_sg(sgt, sg, i) \ 166 - for_each_sg(sgt->sgl, sg, sgt->nents, i) 166 + for_each_sg((sgt)->sgl, sg, (sgt)->nents, i) 167 167 168 168 /** 169 169 * sg_chain - Chain two sglists together ··· 451 451 * See also for_each_sg_page(). In each loop it operates on PAGE_SIZE unit. 452 452 */ 453 453 #define for_each_sgtable_page(sgt, piter, pgoffset) \ 454 - for_each_sg_page(sgt->sgl, piter, sgt->orig_nents, pgoffset) 454 + for_each_sg_page((sgt)->sgl, piter, (sgt)->orig_nents, pgoffset) 455 455 456 456 /** 457 457 * for_each_sgtable_dma_page - iterate over the DMA mapped sg_table object ··· 465 465 * unit. 466 466 */ 467 467 #define for_each_sgtable_dma_page(sgt, dma_iter, pgoffset) \ 468 - for_each_sg_dma_page(sgt->sgl, dma_iter, sgt->nents, pgoffset) 468 + for_each_sg_dma_page((sgt)->sgl, dma_iter, (sgt)->nents, pgoffset) 469 469 470 470 471 471 /*
+5 -1
kernel/dma/pool.c
··· 239 239 } 240 240 241 241 val = gen_pool_alloc(pool, size); 242 - if (val) { 242 + if (likely(val)) { 243 243 phys_addr_t phys = gen_pool_virt_to_phys(pool, val); 244 244 245 245 *ret_page = pfn_to_page(__phys_to_pfn(phys)); 246 246 ptr = (void *)val; 247 247 memset(ptr, 0, size); 248 + } else { 249 + WARN_ONCE(1, "DMA coherent pool depleted, increase size " 250 + "(recommended min coherent_pool=%zuK)\n", 251 + gen_pool_size(pool) >> 9); 248 252 } 249 253 if (gen_pool_avail(pool) < atomic_pool_size) 250 254 schedule_work(&atomic_pool_work);