Messages in this thread | | | Date | Fri, 16 Dec 2022 11:40:57 +0000 | Subject | Re: [6.2][regression] after commit ffcb754584603adf7039d7972564fbf6febdc542 all sound devices disappeared (due BUG at mm/page_alloc.c:3592!) | From | Robin Murphy <> |
| |
On 2022-12-16 06:46, Christoph Hellwig wrote: > Ok, it seems like the sound noncontig alloc code that I already > commented on as potentially bogus GFP_GOMP mapping trips this. I think > for now the right thing would be to revert the hunk in dma-iommu.c > (see patch below). The other thing to try would be to remove both > uses GFP_COMP in sound/core/memalloc.c, which should have the same > effect.
Or we explicitly strip the flag in dma_alloc_noncontiguous() (and maybe dma_alloc_pages() as well) for consistency with dma_alloc_attrs(). That seems like it might be the most robust option.
Robin.
> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c > index 9297b741f5e80e..f798c44e090337 100644 > --- a/drivers/iommu/dma-iommu.c > +++ b/drivers/iommu/dma-iommu.c > @@ -744,9 +744,6 @@ static struct page **__iommu_dma_alloc_pages(struct device *dev, > /* IOMMU can map any pages, so himem can also be used here */ > gfp |= __GFP_NOWARN | __GFP_HIGHMEM; > > - /* It makes no sense to muck about with huge pages */ > - gfp &= ~__GFP_COMP; > - > while (count) { > struct page *page = NULL; > unsigned int order_size; >
| |