From nobody Sun May 24 20:36:33 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 6A7343C819E for ; Thu, 21 May 2026 13:51:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779371509; cv=pass; b=SlQ5zXABw/xmF6KpnmeWja9c3AExCx56D7ktfL8O3TWFiOI9S/NFAQFaDYE+TdAGnD/cKSERDSjAZIqsZVOyHMGMpQEfq4tupuYK1Pp1ZF+IfI9NZZ0iHt/IsWMr0mxqhr/6KYaGM0cwmutPmzP0pxGZ92T241uNpQr7SoBBN6Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779371509; c=relaxed/simple; bh=pt5+SeHNLU1bAhGwFQUmk/k4t/xKeP3F8ACfHYFJDNo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JTKfGc1qjIfK7b/GYIAPTryRgZDM6oivkJupODgY1sDY+0ApWY8hEoevzM08MmmLq+nvEjXB1MQp3PYTj7cNZMJd8pEZdjw+7UQTOHcmiG+Q7x2Tj8+APBxbK3TxbR7QbD8fD8FzktvoqEpswNsBLLRnfGWhbkZjHipM8rmCL24= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=N+h+gxix; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="N+h+gxix" ARC-Seal: i=1; a=rsa-sha256; t=1779371495; cv=none; d=zohomail.com; s=zohoarc; b=U5W0+Bsjg0KnBvHEztP7V9P/OOthSou6Je9hZ1clJmEgQvvT1i9xwm/iFnvEl42I3e80HjoMdTbMFmSRJ/UxOvzzuXhrGkw8A67c+hsctYnagCU8v49hExkiw37yxB71hYc/bAhQorBiX2fO9yn3omrrveKDN4xglniV1oeaTZ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371495; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=8cyLCrRV0YTLJMVJbdr4WO4Y8/1yfnaUZ5GcF13NkhI=; b=WFob92ztGT+a+BhyftA5VY7gJE6MpnB6S9lXy8TbnfvifPnUtvT/F2KLblCc+h7WplW9ZEDXQ69wmrb5VVUcwv1cP3wP8MoGN8G8KMLnhQZ0iOZkBHMLX0wERc8Bz2tfoYDbixxVF1SIRRxmjYhN8+QEtF8075hMADEkxzq0Oik= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1779371495; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=8cyLCrRV0YTLJMVJbdr4WO4Y8/1yfnaUZ5GcF13NkhI=; b=N+h+gxixLzZ8oPS4DHVicNCievEY+KOb60GR4jq+qMI5iOTlct9sFxZwE27SKDq2 AhOIiOhRIw9SJm3zSSoxfACTdeHGnvIieERLpR1Dygvucw9PCXRmrCtGIR1ChfC2+Z7 TI7pzAUryClX5ifFmYGLjyo+jzsWJXJqnDVWJ11Q= Received: by mx.zohomail.com with SMTPS id 1779371493370649.9004154103003; Thu, 21 May 2026 06:51:33 -0700 (PDT) From: Nicolas Frattaroli Date: Thu, 21 May 2026 15:51:15 +0200 Subject: [PATCH v5 1/2] drm/panthor: Implement evicted status for GEM objects 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: <20260521-panthor-bo-reclaim-observability-v5-1-49313994da55@collabora.com> References: <20260521-panthor-bo-reclaim-observability-v5-0-49313994da55@collabora.com> In-Reply-To: <20260521-panthor-bo-reclaim-observability-v5-0-49313994da55@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Boris Brezillon , Steven Price , Liviu Dudau Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Nicolas Frattaroli X-Mailer: b4 0.15.2 For fdinfo to be able to fill its evicted counter with data, panthor needs to keep track of whether a GEM object has ever been reclaimed. Just checking whether the pages are resident isn't enough, as newly allocated objects also won't be resident. Do this with a new atomic_t member on panthor_gem_object. It's increased when an object gets evicted by the shrinker, and saturates at INT_MAX. This means that once an object has been evicted at least once, its reclaim counter will never return to 0. Due to this, it's possible to distinguish evicted non-resident pages from newly allocated non-resident pages by checking whether reclaimed_count is !=3D 0 Use this new member to then set the appropriate DRM_GEM_OBJECT_EVICTED status flag for fdinfo. Also add a new column and status flag to the panthor gems debugfs: the column is the number of times an object has been evicted, whereas the flag indicates whether it currently is evicted. Reviewed-by: Steven Price Reviewed-by: Boris Brezillon Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/panthor/panthor_gem.c | 16 ++++++++++++---- drivers/gpu/drm/panthor/panthor_gem.h | 10 ++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/pantho= r/panthor_gem.c index 13295d7a593d..25bb62a48276 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.c +++ b/drivers/gpu/drm/panthor/panthor_gem.c @@ -687,6 +687,8 @@ static void panthor_gem_evict_locked(struct panthor_gem= _object *bo) if (drm_WARN_ON_ONCE(bo->base.dev, !bo->backing.pages)) return; =20 + atomic_add_unless(&bo->reclaimed_count, 1, INT_MAX); + panthor_gem_dev_map_cleanup_locked(bo); panthor_gem_backing_cleanup_locked(bo); panthor_gem_update_reclaim_state_locked(bo, NULL); @@ -1595,6 +1597,7 @@ static void panthor_gem_debugfs_print_flag_names(stru= ct seq_file *m) static const char * const gem_state_flags_names[] =3D { [PANTHOR_DEBUGFS_GEM_STATE_IMPORTED_BIT] =3D "imported", [PANTHOR_DEBUGFS_GEM_STATE_EXPORTED_BIT] =3D "exported", + [PANTHOR_DEBUGFS_GEM_STATE_EVICTED_BIT] =3D "evicted", }; =20 static const char * const gem_usage_flags_names[] =3D { @@ -1625,6 +1628,7 @@ static void panthor_gem_debugfs_bo_print(struct panth= or_gem_object *bo, { enum panthor_gem_reclaim_state reclaim_state =3D bo->reclaim_state; unsigned int refcount =3D kref_read(&bo->base.refcount); + int reclaimed_count =3D atomic_read(&bo->reclaimed_count); char creator_info[32] =3D {}; size_t resident_size; u32 gem_usage_flags =3D bo->debugfs.flags; @@ -1638,16 +1642,20 @@ static void panthor_gem_debugfs_bo_print(struct pan= thor_gem_object *bo, =20 snprintf(creator_info, sizeof(creator_info), "%s/%d", bo->debugfs.creator.process_name, bo->debugfs.creator.tgid); - seq_printf(m, "%-32s%-16d%-16d%-16zd%-16zd0x%-16lx", + seq_printf(m, "%-32s%-16d%-16d%-11d%-16zd%-16zd0x%-16lx", creator_info, bo->base.name, refcount, + reclaimed_count, bo->base.size, resident_size, drm_vma_node_start(&bo->base.vma_node)); =20 if (drm_gem_is_imported(&bo->base)) gem_state_flags |=3D PANTHOR_DEBUGFS_GEM_STATE_FLAG_IMPORTED; + else if (!resident_size && reclaimed_count) + gem_state_flags |=3D PANTHOR_DEBUGFS_GEM_STATE_FLAG_EVICTED; + if (bo->base.dma_buf) gem_state_flags |=3D PANTHOR_DEBUGFS_GEM_STATE_FLAG_EXPORTED; =20 @@ -1671,8 +1679,8 @@ static void panthor_gem_debugfs_print_bos(struct pant= hor_device *ptdev, =20 panthor_gem_debugfs_print_flag_names(m); =20 - seq_puts(m, "created-by global-name refcount = size resident-size file-offset state usage = label\n"); - seq_puts(m, "------------------------------------------------------------= ---------------------------------------------------------------------------= -------\n"); + seq_puts(m, "created-by global-name refcount = evictions size resident-size file-offset state = usage label\n"); + seq_puts(m, "------------------------------------------------------------= ---------------------------------------------------------------------------= ------------------\n"); =20 scoped_guard(mutex, &ptdev->gems.lock) { list_for_each_entry(bo, &ptdev->gems.node, debugfs.node) { @@ -1680,7 +1688,7 @@ static void panthor_gem_debugfs_print_bos(struct pant= hor_device *ptdev, } } =20 - seq_puts(m, "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + seq_puts(m, "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D\n"); seq_printf(m, "Total size: %zd, Total resident: %zd, Total reclaimable: %= zd\n", totals.size, totals.resident, totals.reclaimable); } diff --git a/drivers/gpu/drm/panthor/panthor_gem.h b/drivers/gpu/drm/pantho= r/panthor_gem.h index ae0491d0b121..56d63137b4eb 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.h +++ b/drivers/gpu/drm/panthor/panthor_gem.h @@ -19,12 +19,16 @@ struct panthor_vm; enum panthor_debugfs_gem_state_flags { PANTHOR_DEBUGFS_GEM_STATE_IMPORTED_BIT =3D 0, PANTHOR_DEBUGFS_GEM_STATE_EXPORTED_BIT =3D 1, + PANTHOR_DEBUGFS_GEM_STATE_EVICTED_BIT =3D 2, =20 /** @PANTHOR_DEBUGFS_GEM_STATE_FLAG_IMPORTED: GEM BO is PRIME imported. */ PANTHOR_DEBUGFS_GEM_STATE_FLAG_IMPORTED =3D BIT(PANTHOR_DEBUGFS_GEM_STATE= _IMPORTED_BIT), =20 /** @PANTHOR_DEBUGFS_GEM_STATE_FLAG_EXPORTED: GEM BO is PRIME exported. */ PANTHOR_DEBUGFS_GEM_STATE_FLAG_EXPORTED =3D BIT(PANTHOR_DEBUGFS_GEM_STATE= _EXPORTED_BIT), + + /** @PANTHOR_DEBUGFS_GEM_STATE_FLAG_EVICTED: GEM BO is evicted to swap. */ + PANTHOR_DEBUGFS_GEM_STATE_FLAG_EVICTED =3D BIT(PANTHOR_DEBUGFS_GEM_STATE_= EVICTED_BIT), }; =20 enum panthor_debugfs_gem_usage_flags { @@ -172,6 +176,12 @@ struct panthor_gem_object { /** @reclaim_state: Cached reclaim state */ enum panthor_gem_reclaim_state reclaim_state; =20 + /** + * @reclaimed_count: How many times object has been evicted to swap. + * The count saturates at %INT_MAX and will never wrap around to 0. + */ + atomic_t reclaimed_count; + /** * @exclusive_vm_root_gem: Root GEM of the exclusive VM this GEM object * is attached to. --=20 2.54.0 From nobody Sun May 24 20:36:33 2026 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 D11453EFD00 for ; Thu, 21 May 2026 13:51:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779371512; cv=pass; b=fMcnMtWzF+RUzD1G2X1BB4MXcpwll4ZV34b0yAb6wFbzLxao12YttinzCPRzemG9w/FtzaoeTblP7gRStBQSBwtAiN/Nicbg5LguSngwP3YDxlL7F6T3YkIkC1YiXvQ1vT3WMNiapne747+2F7nQ+ZtR3H1lyvHPSW5SFMAfDgk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779371512; c=relaxed/simple; bh=tGnOppFetS3rMt52S1tvoZ5BhwYc/rIT8UkVer1tvmM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z63jOGZLHzf21uDQHM2Xch70VkE0b+f7yP9Ooj6soCxPwwZBZy+cY2r3FzoYcMNTwBeViry0Tscr3ae5MrzQXQK4YPBKhvoPx/orhVclue0HZ7IxceLpgK93NH4+mIE9c4X8BrNooa/xrjqRgIKlDvr7PN/cTpe8tvl3hNjiaZc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=QNih+0YF; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="QNih+0YF" ARC-Seal: i=1; a=rsa-sha256; t=1779371497; cv=none; d=zohomail.com; s=zohoarc; b=UCRFdi9Mzw0+nmC2EFmHalk9MyjCYCiDYPBQUuYwRRavMKFUtcfS0oZzFdtvkbiQUpW+IhIZJUV441rKzGYQVQaOYBqd3ZbDmYjbwDKcDyIzcCyFgS+KRQjFUVYBzSRIc8i5CWDdGtMIfBLIitiS0zhVCzVzNIzuZ4uhRRwdPIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779371497; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZhyZSwfXn2KIJwjK9GEatQLgb5i7VWy5RSbPa+iiulw=; b=FJ1cw5mtgBJdvOOgaCXxiVoqsqH0wzf5zjuHDjwfpsVk6BRdh59VNqykaGmklRnF1ZdtZ7cyfEGzqlcAg37d0jVixC2Jtboo5uNEsDIaKx+0IXjcIDX0p8D+Una8q+N5pp4UmUpYOk9AkLQWvbYrjDg44chDp8yp5foc1f4decU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1779371497; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=ZhyZSwfXn2KIJwjK9GEatQLgb5i7VWy5RSbPa+iiulw=; b=QNih+0YFzmJ49JQf9WIAVVNNu5pEjUuR6rvwNpRE8ZMN06L/M3FuhcHWZNE9swYT maC9sBJ5FoH48TTGtb94T0AsN+gWIkgUcFdVsejLCcp63wFn1BIgx9TJFLk0yKEsFMD rEffjZegsRRrWb1fEhE3Ld2aHEu0ahWS04mu8jvY= Received: by mx.zohomail.com with SMTPS id 1779371496091958.5240224921871; Thu, 21 May 2026 06:51:36 -0700 (PDT) From: Nicolas Frattaroli Date: Thu, 21 May 2026 15:51:16 +0200 Subject: [PATCH v5 2/2] drm/panthor: Reduce padding in gems debugfs for refcount 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: <20260521-panthor-bo-reclaim-observability-v5-2-49313994da55@collabora.com> References: <20260521-panthor-bo-reclaim-observability-v5-0-49313994da55@collabora.com> In-Reply-To: <20260521-panthor-bo-reclaim-observability-v5-0-49313994da55@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Boris Brezillon , Steven Price , Liviu Dudau Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, Nicolas Frattaroli X-Mailer: b4 0.15.2 The "gems" debugfs file is getting a little too wide for comfort. While a lot of this is unavoidable due to the theoretical upper limits of numbers here (e.g. size needs to be 16 chars because 2**48-1 in decimal is 15 digits, plus one space for separation), the refcount column has a decent 5 characters to be saved, as it can only ever contain a 10-digit decimal number. Reduce the refcount column's width to 11, which fulfils this requirement with an additional space for separation. Reviewed-by: Steven Price Signed-off-by: Nicolas Frattaroli --- drivers/gpu/drm/panthor/panthor_gem.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/pantho= r/panthor_gem.c index 25bb62a48276..ac9b9854c729 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.c +++ b/drivers/gpu/drm/panthor/panthor_gem.c @@ -1642,7 +1642,7 @@ static void panthor_gem_debugfs_bo_print(struct panth= or_gem_object *bo, =20 snprintf(creator_info, sizeof(creator_info), "%s/%d", bo->debugfs.creator.process_name, bo->debugfs.creator.tgid); - seq_printf(m, "%-32s%-16d%-16d%-11d%-16zd%-16zd0x%-16lx", + seq_printf(m, "%-32s%-16d%-11d%-11d%-16zd%-16zd0x%-16lx", creator_info, bo->base.name, refcount, @@ -1679,8 +1679,8 @@ static void panthor_gem_debugfs_print_bos(struct pant= hor_device *ptdev, =20 panthor_gem_debugfs_print_flag_names(m); =20 - seq_puts(m, "created-by global-name refcount = evictions size resident-size file-offset state = usage label\n"); - seq_puts(m, "------------------------------------------------------------= ---------------------------------------------------------------------------= ------------------\n"); + seq_puts(m, "created-by global-name refcount e= victions size resident-size file-offset state usag= e label\n"); + seq_puts(m, "------------------------------------------------------------= ---------------------------------------------------------------------------= -------------\n"); =20 scoped_guard(mutex, &ptdev->gems.lock) { list_for_each_entry(bo, &ptdev->gems.node, debugfs.node) { @@ -1688,7 +1688,7 @@ static void panthor_gem_debugfs_print_bos(struct pant= hor_device *ptdev, } } =20 - seq_puts(m, "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D\n"); + seq_puts(m, "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D\n"); seq_printf(m, "Total size: %zd, Total resident: %zd, Total reclaimable: %= zd\n", totals.size, totals.resident, totals.reclaimable); } --=20 2.54.0