From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Alexander Potapenko <glider@google.com>
Cc: catalin.marinas@arm.com, will@kernel.org, pcc@google.com,
andreyknvl@gmail.com, linux@rasmusvillemoes.dk,
yury.norov@gmail.com, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, eugenis@google.com,
syednwaris@gmail.com, william.gray@linaro.org
Subject: Re: [PATCH v3 5/5] arm64: mte: add compression support to mteswap.c
Date: Mon, 17 Jul 2023 16:53:46 +0300 [thread overview]
Message-ID: <ZLVH6t25HD+HhCka@smile.fi.intel.com> (raw)
In-Reply-To: <20230717113709.328671-6-glider@google.com>
On Mon, Jul 17, 2023 at 01:37:08PM +0200, Alexander Potapenko wrote:
> Define the internal mteswap.h interface:
> - _mte_alloc_and_save_tags()
> - _mte_free_saved_tags()
> - _mte_restore_tags()
>
> , that encapsulates saving tags for a struct page (together with memory
> allocation), restoring tags, and deleting the storage allocated for them.
>
> These functions accept opaque pointers, which may point to 128-byte
> tag buffers, as well as smaller buffers containing compressed tags, or
> have compressed tags stored directly in them.
>
> The existing code from mteswap.c operating with uncompressed tags is split
> away into mteswap_nocomp.c, and the newly introduced mteswap_comp.c
> provides compression with the EA0 algorithm. The latter implementation
> is picked if CONFIG_ARM64_MTE_COMP=y.
>
> Soon after booting Android, tag compression saves ~2.5x memory previously
> spent by mteswap.c on tag allocations. With the growing uptime, the
> savings reach 20x and even more.
...
> +#ifndef ARCH_ARM64_MM_MTESWAP_H_
> +#define ARCH_ARM64_MM_MTESWAP_H_
> +#include <linux/mm_types.h>
But you actually don't use that.
struct page;
forward declaration is enough.
> +void *_mte_alloc_and_save_tags(struct page *page);
> +void _mte_free_saved_tags(void *tags);
> +void _mte_restore_tags(void *tags, struct page *page);
> +
> +#endif // ARCH_ARM64_MM_MTESWAP_H_
...
> +void _mte_free_saved_tags(void *storage)
> +{
> + unsigned long handle = xa_to_value(storage);
> + int size;
> +
> + if (!handle)
> + return;
Perhaps
unsigned long handle;
handle = xa_to_value(storage);
if (!handle)
return;
> + size = ea0_storage_size(handle);
> + ea0_release_handle(handle);
> +}
> +void _mte_restore_tags(void *tags, struct page *page)
> +{
As per above.
> + if (try_page_mte_tagging(page)) {
> + if (!ea0_decompress(handle, tags_decomp))
> + return;
> + mte_restore_page_tags(page_address(page), tags_decomp);
> + set_page_mte_tagged(page);
> + }
I think you may drop an indentation level by
if (!try_page_mte_tagging(page))
return;
> +}
...
> +void _mte_restore_tags(void *tags, struct page *page)
> +{
> + if (try_page_mte_tagging(page)) {
> + mte_restore_page_tags(page_address(page), tags);
> + set_page_mte_tagged(page);
> + }
Ditto.
> +}
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2023-07-17 13:54 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-17 11:37 [PATCH v3 0/5] Implement MTE tag compression for swapped pages Alexander Potapenko
2023-07-17 11:37 ` [PATCH v3 1/5] lib/bitmap: add bitmap_{set,get}_value() Alexander Potapenko
2023-07-17 13:01 ` Andy Shevchenko
2023-07-17 14:14 ` Alexander Potapenko
2023-07-17 14:29 ` Andy Shevchenko
2023-07-17 14:31 ` Andy Shevchenko
2023-07-17 16:15 ` Yury Norov
2023-07-17 14:53 ` Alexander Potapenko
2023-07-17 15:03 ` Andy Shevchenko
2023-07-17 16:29 ` Alexander Potapenko
2023-07-17 15:50 ` Yury Norov
2023-07-18 9:30 ` Alexander Potapenko
2023-07-18 14:01 ` Andy Shevchenko
2023-07-18 17:03 ` Yury Norov
2023-07-18 17:20 ` Andy Shevchenko
2023-07-19 9:00 ` Alexander Potapenko
2023-07-17 11:37 ` [PATCH v3 2/5] lib/test_bitmap: add tests for bitmap_{set,get}_value() Alexander Potapenko
2023-07-17 13:04 ` Andy Shevchenko
2023-07-18 10:19 ` Alexander Potapenko
2023-07-17 16:11 ` Yury Norov
2023-07-17 16:28 ` Andy Shevchenko
2023-07-17 16:42 ` Alexander Potapenko
2023-07-17 11:37 ` [PATCH v3 3/5] arm64: mte: implement CONFIG_ARM64_MTE_COMP Alexander Potapenko
2023-07-17 13:49 ` Andy Shevchenko
2023-07-18 15:33 ` Alexander Potapenko
2023-07-18 17:17 ` Andy Shevchenko
2023-07-19 12:16 ` Alexander Potapenko
2023-07-19 6:09 ` Yury Norov
2023-07-19 14:00 ` Alexander Potapenko
2023-07-19 21:06 ` Yury Norov
2023-07-20 12:00 ` Alexander Potapenko
2023-07-19 20:32 ` Evgenii Stepanov
2023-07-17 11:37 ` [PATCH v3 4/5] arm64: mte: add a test for MTE tags compression Alexander Potapenko
2023-07-17 11:37 ` [PATCH v3 5/5] arm64: mte: add compression support to mteswap.c Alexander Potapenko
2023-07-17 13:53 ` Andy Shevchenko [this message]
2023-07-18 10:48 ` Alexander Potapenko
2023-07-18 14:13 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZLVH6t25HD+HhCka@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=andreyknvl@gmail.com \
--cc=catalin.marinas@arm.com \
--cc=eugenis@google.com \
--cc=glider@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=pcc@google.com \
--cc=syednwaris@gmail.com \
--cc=will@kernel.org \
--cc=william.gray@linaro.org \
--cc=yury.norov@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®