From nobody Fri Apr 3 08:27:23 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6289345CB2 for ; Wed, 18 Feb 2026 17:15:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771434912; cv=none; b=STU5vSEE71reQhoVNfjofMcvOsopyEzKNWa7e15hf3nxEwQioAeEdh9UBw+mBJ4dJ2FylblfNFQbrE1BVZTmuABkh8nX4Grxy7ev1i6t/b+w6+bzN0FxmJ93DKjaQdh+QrO/dPEljzyx58ak/ImHXI72p3B34WYZszHFLvGtZ8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771434912; c=relaxed/simple; bh=J3KmHWHvAFmGVjG/uQfaIEu+JFw9VxdB6dh65Ea9/Tg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DHEfupcD5gwtmqZBWDdUGDh2IJRFKEg5yA9gqRw8vWCxstpf5RcfV35GAcvgz28Hp1dqLrwT0LLgeQQECrgae7s+lCnmTEQfZjfhLPHdyUI+zEDcQeL7qA+n1h8q76Qrv7O6abhF6L4bBoWMOscQ4WhQ1Dr14fxrcOD8+djBnmU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=YXCsPxHS; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=BBBW0c+z; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="YXCsPxHS"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="BBBW0c+z" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771434906; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RWROfJdWhlgxA5rcp8Pj9VJ7m2fa4/nREAlFrPf4oa8=; b=YXCsPxHS1XoX08qE57J0uO7e/ABt0x88xarlYiF/w53DJw+CzcGQu5QZT03kWGkmUJR0I1 ztPbZHxEQZdla14VZAnCtVR8tyT+aAIL4u/Ug64CWRL7fivBRVe//5hZEV92Iz+pjkNkw8 m1aXzlNb8PAxpvuyAFbJtsArMQqkf7w= Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-KUWE3TKxP2OEepgA82pLXQ-1; Wed, 18 Feb 2026 12:15:05 -0500 X-MC-Unique: KUWE3TKxP2OEepgA82pLXQ-1 X-Mimecast-MFC-AGG-ID: KUWE3TKxP2OEepgA82pLXQ_1771434905 Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8946f1b8691so1076846d6.3 for ; Wed, 18 Feb 2026 09:15:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1771434905; x=1772039705; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=RWROfJdWhlgxA5rcp8Pj9VJ7m2fa4/nREAlFrPf4oa8=; b=BBBW0c+zODAlsJsHcanCOTXhlO1yeyXyRRq3JiytR5K0wK3pjA35vZUTZrUP4Jfrsq wLPfPVujV4wE45vK6wxRSoqnMXzUqVC5NHiatVvfTKbT3+4FTHaluT7Noea4iIScwPxv KMsl0SLz1w3vAlrMKNca0rTmz8tajVMLNM9l/ZHjzm11/ee2ewi3bpTWnw+v91pyb/IN rCJX2uNhwwdGVuFYCObNDnivKe88/ZqGue7j+2suLmPwflFxtt7mkeMq3Zt1zjXvWiME iQJolFoAeV/3whKX+sQ7S6XFgd4f1q7CnpMn7SkK2ky45niUjA4knxvEUPnNxP25vINH DIfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771434905; x=1772039705; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RWROfJdWhlgxA5rcp8Pj9VJ7m2fa4/nREAlFrPf4oa8=; b=hakY08x11ZoTtpRrwJlJx5i9lW9PuCte7USyCdVqhgYeefwuHYVo9qFFJXxR7XYQLJ PiuW77oEZTF5bbhUj2b7f9GcPN/sWEMMVU2ZZTRr3e3bK6X9zSlV2s5J5gh66NWCitQG ZuuZkGKXTcqinX+yEYSgd9RTzVQza6hzTx+8ITUNhR1UPOIg+C3fcEuYACwsuOL51g1c Zf8NASXZC9r1A6F0wWy0VCs7/WuoXWDSkfYV1oADBzzNpCGPiVcmzgBLYLu8ygkf7FOC MEj0PR92+PrEt1lobE0o2ESP75p2U2C3MzUztPeKGktA+4QCjWK7N6SiUkf9Wcpvzotd lbRw== X-Forwarded-Encrypted: i=1; AJvYcCURnutB497jfNRiq1kKudF6ozcAABr7ze+R+Mrt4vdGMgPGQ/zlVR60HpNo+k36tULy6cUXNaCpzdAKwAM=@vger.kernel.org X-Gm-Message-State: AOJu0YzTgtwj6WIPOHu4tEpbKzgoilncUIBTwGQhMLwhtLaYhoEjZhoO rATnhezD+N+19MwhXl8JfF8rEqpZSAbGhTtRfDBk8ZSQvkwwO5UQ0i7rdUw0Ht1qyiqwSRhzUti W6UT8Npk65sEPYksruIRn6Pn8ijS47PykV7amD+4D1tYPRprqV/CZnENUjJ5Bwn58BQ== X-Gm-Gg: AZuq6aI3n5u3UwGlgHqLksldxQQ5mxQH4GlUgLote7StaEh/PfT/SmvlXSevlaecwxJ dwBt9O4D7lhKR452YKyw1CnyLRYxoEGAwQ74eZKxPNY6AozpmTGQywyNMhL0ue+h+wLdlS/H9E9 Bl8DjTc+WZL4xAQjqX6/RqFoDreoa2HNuuhEpbnUYwfUvhuSs0AjsoSia8uo5nX5sMWvbed5b7y hkuukqmWnU8D7EfjQPS6k7Glv2SrVowOfmrRpxAi93ZiTTaJVORbtOzr3FaPsWObiTIr9mhLk3h Z4tioAjN8cm3/SlzLWynWpTZu6uQICpkJEsAEGWdepTJ8F2hh/j+3uFV6+dKSx4h4cztgCSm/PC I0Ha9VByt7kop0goNSL82ACFXAQBB2haB06Dss47qekHwxdllTQ6E1NStVDl4jyA= X-Received: by 2002:a05:6214:5194:b0:895:d652:e3a5 with SMTP id 6a1803df08f44-89957fd539fmr37373456d6.23.1771434904516; Wed, 18 Feb 2026 09:15:04 -0800 (PST) X-Received: by 2002:a05:6214:5194:b0:895:d652:e3a5 with SMTP id 6a1803df08f44-89957fd539fmr37372786d6.23.1771434904004; Wed, 18 Feb 2026 09:15:04 -0800 (PST) Received: from localhost (pool-100-17-19-56.bstnma.fios.verizon.net. [100.17.19.56]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8971cc7f82csm195307856d6.4.2026.02.18.09.15.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Feb 2026 09:15:02 -0800 (PST) From: Eric Chanudet Date: Wed, 18 Feb 2026 12:14:12 -0500 Subject: [PATCH v2 3/3] dma-buf: heaps: cma: charge each cma heap's dmem Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260218-dmabuf-heap-cma-dmem-v2-3-b249886fb7b2@redhat.com> References: <20260218-dmabuf-heap-cma-dmem-v2-0-b249886fb7b2@redhat.com> In-Reply-To: <20260218-dmabuf-heap-cma-dmem-v2-0-b249886fb7b2@redhat.com> To: Sumit Semwal , Benjamin Gaignard , Brian Starkey , John Stultz , "T.J. Mercier" , =?utf-8?q?Christian_K=C3=B6nig?= , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org, Maxime Ripard , Albert Esteve , linux-mm@kvack.org, Eric Chanudet X-Mailer: b4 0.14.2 The cma dma-buf heaps let userspace allocate buffers in CMA regions without enforcing limits. Since each cma region registers in dmem, charge against it when allocating a buffer in a cma heap. Signed-off-by: Eric Chanudet Acked-by: Maxime Ripard --- drivers/dma-buf/heaps/cma_heap.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_h= eap.c index 49cc45fb42dd7200c3c14384bcfdbe85323454b1..bbd4f9495808da19256d97bd6a4= dca3e1b0a30a0 100644 --- a/drivers/dma-buf/heaps/cma_heap.c +++ b/drivers/dma-buf/heaps/cma_heap.c @@ -27,6 +27,7 @@ #include #include #include +#include =20 #define DEFAULT_CMA_NAME "default_cma_region" =20 @@ -58,6 +59,7 @@ struct cma_heap_buffer { pgoff_t pagecount; int vmap_cnt; void *vaddr; + struct dmem_cgroup_pool_state *pool; }; =20 struct dma_heap_attachment { @@ -276,6 +278,7 @@ static void cma_heap_dma_buf_release(struct dma_buf *dm= abuf) kfree(buffer->pages); /* release memory */ cma_release(cma_heap->cma, buffer->cma_pages, buffer->pagecount); + dmem_cgroup_uncharge(buffer->pool, buffer->len); kfree(buffer); } =20 @@ -319,9 +322,17 @@ static struct dma_buf *cma_heap_allocate(struct dma_he= ap *heap, if (align > CONFIG_CMA_ALIGNMENT) align =3D CONFIG_CMA_ALIGNMENT; =20 + if (mem_accounting) { + ret =3D dmem_cgroup_try_charge( + cma_get_dmem_cgroup_region(cma_heap->cma), size, + &buffer->pool, NULL); + if (ret) + goto free_buffer; + } + cma_pages =3D cma_alloc(cma_heap->cma, pagecount, align, false); if (!cma_pages) - goto free_buffer; + goto uncharge_cgroup; =20 /* Clear the cma pages */ if (PageHighMem(cma_pages)) { @@ -376,6 +387,8 @@ static struct dma_buf *cma_heap_allocate(struct dma_hea= p *heap, kfree(buffer->pages); free_cma: cma_release(cma_heap->cma, cma_pages, pagecount); +uncharge_cgroup: + dmem_cgroup_uncharge(buffer->pool, size); free_buffer: kfree(buffer); =20 --=20 2.52.0