All of lore.kernel.org
 help / color / mirror / Atom feed
From: Khalid Aziz <khalid.aziz@oracle.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	kvm@vger.kernel.org, Christian Koenig <Christian.Koenig@amd.com>,
	Szabolcs Nagy <Szabolcs.Nagy@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	dri-devel@lists.freedesktop.org, linux-mm@kvack.org,
	Lee Smith <Lee.Smith@arm.com>,
	linux-kselftest@vger.kernel.org,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Jacob Bramley <Jacob.Bramley@arm.com>,
	Leon Romanovsky <leon@kernel.org>,
	linux-rdma@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org,
	Dave Martin <Dave.Martin@arm.com>,
	Evgeniy Stepanov <eugenis@google.com>,
	linux-media@vger.kernel.org, Kees Cook <keescook@chromium.org>,
	Ruben Ayrapetyan <Ruben.Ayrapetyan@arm.com>,
	Andrey Konovalov <andreyknvl@google.com>,
	Kevin Brodsky <kevin.brodsky@arm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>Dmitry Vyukov <d>
Subject: Re: [PATCH v15 05/17] arms64: untag user pointers passed to memory syscalls
Date: Thu, 30 May 2019 10:05:55 -0600	[thread overview]
Message-ID: <f79336b5-46b4-39c0-b754-23366207e32d@oracle.com> (raw)
In-Reply-To: <20190530151105.GA35418@arrakis.emea.arm.com>

On 5/30/19 9:11 AM, Catalin Marinas wrote:
> On Wed, May 29, 2019 at 01:16:37PM -0600, Khalid Aziz wrote:
>> mmap() can return the same tagged address but I am uneasy about kernel
>> pre-coloring the pages. Database can mmap 100's of GB of memory. That is
>> lot of work being offloaded to the kernel to pre-color the page even if
>> done in batches as pages are faulted in.
> 
> For anonymous mmap() for example, the kernel would have to zero the
> faulted in pages anyway. We can handle the colouring at the same time in
> clear_user_page() (as I said below, we have to clear the colour anyway
> from previous uses, so it's simply extending this to support something
> other than tag/colour 0 by default with no additional overhead).
> 

On sparc M7, clear_user_page() ends up in M7clear_user_page defined in
arch/sparc/lib/M7memset.S. M7 code use Block Init Store (BIS) to clear
the page. BIS on M7 clears the memory tags as well and no separate
instructions are needed to clear the tags. As a result when kernel
clears a page before returning it to user, the page is not only zeroed
out, its tags are also cleared to 0.

>>> Since we already need such loop in the kernel, we might as well allow
>>> user space to require a certain colour. This comes in handy for large
>>> malloc() and another advantage is that the C library won't be stuck
>>> trying to paint the whole range (think GB).
>>
>> If kernel is going to pre-color all pages in a vma, we will need to
>> store the default tag in the vma. It will add more time to page fault
>> handling code. On sparc M7, kernel will need to execute additional 128
>> stxa instructions to set the tags on a normal page.
> 
> As I said, since the user can retrieve an old colour using ldxa, the
> kernel should perform this operation anyway on any newly allocated page
> (unless you clear the existing colour on page freeing).>

Tags are not cleared on sparc on freeing. They get cleared when the page
is allocated again.

>>>> We can try to store tags for an entire region in vma but that is
>>>> expensive, plus on sparc tags are set in userspace with no
>>>> participation from kernel and now we need a way for userspace to
>>>> communicate the tags to kernel.
>>>
>>> We can't support finer granularity through the mmap() syscall and, as
>>> you said, the vma is not the right thing to store the individual tags.
>>> With the above extension to mmap(), we'd have to store a colour per vma
>>> and prevent merging if different colours (we could as well use the
>>> pkeys mechanism we already have in the kernel but use a colour per vma
>>> instead of a key).
>>
>> Since tags can change on any part of mmap region on sparc at any time
>> without kernel being involved, I am not sure I see much reason for
>> kernel to enforce any tag related restrictions.
> 
> It's not enforcing a tag, more like the default colour for a faulted in
> page. Anyway, if sparc is going with default 0/untagged, that's fine as
> well. We may add this mmap() option to arm64 only.
> 
>>>> From sparc point of view, making kernel responsible for assigning tags
>>>> to a page on page fault is full of pitfalls.
>>>
>>> This could be just some arm64-specific but if you plan to deploy it more
>>> generically for sparc (at the C library level), you may find this
>>> useful.
>>
>> Common semantics from app developer point of view will be very useful to
>> maintain. If arm64 says mmap with MAP_FIXED and a tagged address will
>> return a pre-colored page, I would rather have it be the same on any
>> architecture. Is there a use case that justifies kernel doing this extra
>> work?
> 
> So if a database program is doing an anonymous mmap(PROT_TBI) of 100GB,
> IIUC for sparc the faulted-in pages will have random colours (on 64-byte
> granularity). Ignoring the information leak from prior uses of such
> pages, it would be the responsibility of the db program to issue the
> stxa. On arm64, since we also want to do this via malloc(), any large
> allocation would require all pages to be faulted in so that malloc() can
> set the write colour before being handed over to the user. That's what
> we want to avoid and the user is free to repaint the memory as it likes.
> 

On sparc, any newly allocated page is cleared along with any old tags on
it. Since clearing tag happens automatically when page is cleared on
sparc, clear_user_page() will need to execute additional stxa
instructions to set a new tag. It is doable. In a way it is done already
if page is being pre-colored with tag 0 always ;) Where would the
pre-defined tag be stored - as part of address stored in vm_start or a
new field in vm_area_struct?

--
Khalid

WARNING: multiple messages have this Message-ID (diff)
From: Khalid Aziz <khalid.aziz@oracle.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Andrew Murray <andrew.murray@arm.com>,
	Andrey Konovalov <andreyknvl@google.com>,
	Mark Rutland <mark.rutland@arm.com>,
	kvm@vger.kernel.org, Szabolcs Nagy <Szabolcs.Nagy@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	dri-devel@lists.freedesktop.org, linux-mm@kvack.org,
	linux-kselftest@vger.kernel.org,
	Felix Kuehling <Felix.Kuehling@amd.com>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Jacob Bramley <Jacob.Bramley@arm.com>,
	Leon Romanovsky <leon@kernel.org>,
	linux-rdma@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	Dmitry Vyukov <dvyukov@google.com>,
	Dave Martin <Dave.Martin@arm.com>,
	Evgeniy Stepanov <eugenis@google.com>,
	linux-media@vger.kernel.org,
	Kevin Brodsky <kevin.brodsky@arm.com>,
	Kees Cook <keescook@chromium.org>,
	Ruben Ayrapetyan <Ruben.Ayrapetyan@arm.com>,
	Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	Kostya Serebryany <kcc@google.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Yishai Hadas <yishaih@mellanox.com>,
	linux-kernel@vger.kernel.org,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Lee Smith <Lee.Smith@arm.com>,
	Alexander Deucher <Alexander.Deucher@amd.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Christian Koenig <Christian.Koenig@amd.com>,
	Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Subject: Re: [PATCH v15 05/17] arms64: untag user pointers passed to memory syscalls
Date: Thu, 30 May 2019 10:05:55 -0600	[thread overview]
Message-ID: <f79336b5-46b4-39c0-b754-23366207e32d@oracle.com> (raw)
In-Reply-To: <20190530151105.GA35418@arrakis.emea.arm.com>

On 5/30/19 9:11 AM, Catalin Marinas wrote:
> On Wed, May 29, 2019 at 01:16:37PM -0600, Khalid Aziz wrote:
>> mmap() can return the same tagged address but I am uneasy about kernel
>> pre-coloring the pages. Database can mmap 100's of GB of memory. That is
>> lot of work being offloaded to the kernel to pre-color the page even if
>> done in batches as pages are faulted in.
> 
> For anonymous mmap() for example, the kernel would have to zero the
> faulted in pages anyway. We can handle the colouring at the same time in
> clear_user_page() (as I said below, we have to clear the colour anyway
> from previous uses, so it's simply extending this to support something
> other than tag/colour 0 by default with no additional overhead).
> 

On sparc M7, clear_user_page() ends up in M7clear_user_page defined in
arch/sparc/lib/M7memset.S. M7 code use Block Init Store (BIS) to clear
the page. BIS on M7 clears the memory tags as well and no separate
instructions are needed to clear the tags. As a result when kernel
clears a page before returning it to user, the page is not only zeroed
out, its tags are also cleared to 0.

>>> Since we already need such loop in the kernel, we might as well allow
>>> user space to require a certain colour. This comes in handy for large
>>> malloc() and another advantage is that the C library won't be stuck
>>> trying to paint the whole range (think GB).
>>
>> If kernel is going to pre-color all pages in a vma, we will need to
>> store the default tag in the vma. It will add more time to page fault
>> handling code. On sparc M7, kernel will need to execute additional 128
>> stxa instructions to set the tags on a normal page.
> 
> As I said, since the user can retrieve an old colour using ldxa, the
> kernel should perform this operation anyway on any newly allocated page
> (unless you clear the existing colour on page freeing).>

Tags are not cleared on sparc on freeing. They get cleared when the page
is allocated again.

>>>> We can try to store tags for an entire region in vma but that is
>>>> expensive, plus on sparc tags are set in userspace with no
>>>> participation from kernel and now we need a way for userspace to
>>>> communicate the tags to kernel.
>>>
>>> We can't support finer granularity through the mmap() syscall and, as
>>> you said, the vma is not the right thing to store the individual tags.
>>> With the above extension to mmap(), we'd have to store a colour per vma
>>> and prevent merging if different colours (we could as well use the
>>> pkeys mechanism we already have in the kernel but use a colour per vma
>>> instead of a key).
>>
>> Since tags can change on any part of mmap region on sparc at any time
>> without kernel being involved, I am not sure I see much reason for
>> kernel to enforce any tag related restrictions.
> 
> It's not enforcing a tag, more like the default colour for a faulted in
> page. Anyway, if sparc is going with default 0/untagged, that's fine as
> well. We may add this mmap() option to arm64 only.
> 
>>>> From sparc point of view, making kernel responsible for assigning tags
>>>> to a page on page fault is full of pitfalls.
>>>
>>> This could be just some arm64-specific but if you plan to deploy it more
>>> generically for sparc (at the C library level), you may find this
>>> useful.
>>
>> Common semantics from app developer point of view will be very useful to
>> maintain. If arm64 says mmap with MAP_FIXED and a tagged address will
>> return a pre-colored page, I would rather have it be the same on any
>> architecture. Is there a use case that justifies kernel doing this extra
>> work?
> 
> So if a database program is doing an anonymous mmap(PROT_TBI) of 100GB,
> IIUC for sparc the faulted-in pages will have random colours (on 64-byte
> granularity). Ignoring the information leak from prior uses of such
> pages, it would be the responsibility of the db program to issue the
> stxa. On arm64, since we also want to do this via malloc(), any large
> allocation would require all pages to be faulted in so that malloc() can
> set the write colour before being handed over to the user. That's what
> we want to avoid and the user is free to repaint the memory as it likes.
> 

On sparc, any newly allocated page is cleared along with any old tags on
it. Since clearing tag happens automatically when page is cleared on
sparc, clear_user_page() will need to execute additional stxa
instructions to set a new tag. It is doable. In a way it is done already
if page is being pre-colored with tag 0 always ;) Where would the
pre-defined tag be stored - as part of address stored in vm_start or a
new field in vm_area_struct?

--
Khalid


WARNING: multiple messages have this Message-ID (diff)
From: khalid.aziz at oracle.com (Khalid Aziz)
Subject: [PATCH v15 05/17] arms64: untag user pointers passed to memory syscalls
Date: Thu, 30 May 2019 10:05:55 -0600	[thread overview]
Message-ID: <f79336b5-46b4-39c0-b754-23366207e32d@oracle.com> (raw)
In-Reply-To: <20190530151105.GA35418@arrakis.emea.arm.com>

On 5/30/19 9:11 AM, Catalin Marinas wrote:
> On Wed, May 29, 2019 at 01:16:37PM -0600, Khalid Aziz wrote:
>> mmap() can return the same tagged address but I am uneasy about kernel
>> pre-coloring the pages. Database can mmap 100's of GB of memory. That is
>> lot of work being offloaded to the kernel to pre-color the page even if
>> done in batches as pages are faulted in.
> 
> For anonymous mmap() for example, the kernel would have to zero the
> faulted in pages anyway. We can handle the colouring at the same time in
> clear_user_page() (as I said below, we have to clear the colour anyway
> from previous uses, so it's simply extending this to support something
> other than tag/colour 0 by default with no additional overhead).
> 

On sparc M7, clear_user_page() ends up in M7clear_user_page defined in
arch/sparc/lib/M7memset.S. M7 code use Block Init Store (BIS) to clear
the page. BIS on M7 clears the memory tags as well and no separate
instructions are needed to clear the tags. As a result when kernel
clears a page before returning it to user, the page is not only zeroed
out, its tags are also cleared to 0.

>>> Since we already need such loop in the kernel, we might as well allow
>>> user space to require a certain colour. This comes in handy for large
>>> malloc() and another advantage is that the C library won't be stuck
>>> trying to paint the whole range (think GB).
>>
>> If kernel is going to pre-color all pages in a vma, we will need to
>> store the default tag in the vma. It will add more time to page fault
>> handling code. On sparc M7, kernel will need to execute additional 128
>> stxa instructions to set the tags on a normal page.
> 
> As I said, since the user can retrieve an old colour using ldxa, the
> kernel should perform this operation anyway on any newly allocated page
> (unless you clear the existing colour on page freeing).>

Tags are not cleared on sparc on freeing. They get cleared when the page
is allocated again.

>>>> We can try to store tags for an entire region in vma but that is
>>>> expensive, plus on sparc tags are set in userspace with no
>>>> participation from kernel and now we need a way for userspace to
>>>> communicate the tags to kernel.
>>>
>>> We can't support finer granularity through the mmap() syscall and, as
>>> you said, the vma is not the right thing to store the individual tags.
>>> With the above extension to mmap(), we'd have to store a colour per vma
>>> and prevent merging if different colours (we could as well use the
>>> pkeys mechanism we already have in the kernel but use a colour per vma
>>> instead of a key).
>>
>> Since tags can change on any part of mmap region on sparc at any time
>> without kernel being involved, I am not sure I see much reason for
>> kernel to enforce any tag related restrictions.
> 
> It's not enforcing a tag, more like the default colour for a faulted in
> page. Anyway, if sparc is going with default 0/untagged, that's fine as
> well. We may add this mmap() option to arm64 only.
> 
>>>> From sparc point of view, making kernel responsible for assigning tags
>>>> to a page on page fault is full of pitfalls.
>>>
>>> This could be just some arm64-specific but if you plan to deploy it more
>>> generically for sparc (at the C library level), you may find this
>>> useful.
>>
>> Common semantics from app developer point of view will be very useful to
>> maintain. If arm64 says mmap with MAP_FIXED and a tagged address will
>> return a pre-colored page, I would rather have it be the same on any
>> architecture. Is there a use case that justifies kernel doing this extra
>> work?
> 
> So if a database program is doing an anonymous mmap(PROT_TBI) of 100GB,
> IIUC for sparc the faulted-in pages will have random colours (on 64-byte
> granularity). Ignoring the information leak from prior uses of such
> pages, it would be the responsibility of the db program to issue the
> stxa. On arm64, since we also want to do this via malloc(), any large
> allocation would require all pages to be faulted in so that malloc() can
> set the write colour before being handed over to the user. That's what
> we want to avoid and the user is free to repaint the memory as it likes.
> 

On sparc, any newly allocated page is cleared along with any old tags on
it. Since clearing tag happens automatically when page is cleared on
sparc, clear_user_page() will need to execute additional stxa
instructions to set a new tag. It is doable. In a way it is done already
if page is being pre-colored with tag 0 always ;) Where would the
pre-defined tag be stored - as part of address stored in vm_start or a
new field in vm_area_struct?

--
Khalid

WARNING: multiple messages have this Message-ID (diff)
From: khalid.aziz@oracle.com (Khalid Aziz)
Subject: [PATCH v15 05/17] arms64: untag user pointers passed to memory syscalls
Date: Thu, 30 May 2019 10:05:55 -0600	[thread overview]
Message-ID: <f79336b5-46b4-39c0-b754-23366207e32d@oracle.com> (raw)
Message-ID: <20190530160555.7TJDW6szbBJLpit3MXqfpywKWI3apGxQOk5GK5fpqMI@z> (raw)
In-Reply-To: <20190530151105.GA35418@arrakis.emea.arm.com>

On 5/30/19 9:11 AM, Catalin Marinas wrote:
> On Wed, May 29, 2019@01:16:37PM -0600, Khalid Aziz wrote:
>> mmap() can return the same tagged address but I am uneasy about kernel
>> pre-coloring the pages. Database can mmap 100's of GB of memory. That is
>> lot of work being offloaded to the kernel to pre-color the page even if
>> done in batches as pages are faulted in.
> 
> For anonymous mmap() for example, the kernel would have to zero the
> faulted in pages anyway. We can handle the colouring at the same time in
> clear_user_page() (as I said below, we have to clear the colour anyway
> from previous uses, so it's simply extending this to support something
> other than tag/colour 0 by default with no additional overhead).
> 

On sparc M7, clear_user_page() ends up in M7clear_user_page defined in
arch/sparc/lib/M7memset.S. M7 code use Block Init Store (BIS) to clear
the page. BIS on M7 clears the memory tags as well and no separate
instructions are needed to clear the tags. As a result when kernel
clears a page before returning it to user, the page is not only zeroed
out, its tags are also cleared to 0.

>>> Since we already need such loop in the kernel, we might as well allow
>>> user space to require a certain colour. This comes in handy for large
>>> malloc() and another advantage is that the C library won't be stuck
>>> trying to paint the whole range (think GB).
>>
>> If kernel is going to pre-color all pages in a vma, we will need to
>> store the default tag in the vma. It will add more time to page fault
>> handling code. On sparc M7, kernel will need to execute additional 128
>> stxa instructions to set the tags on a normal page.
> 
> As I said, since the user can retrieve an old colour using ldxa, the
> kernel should perform this operation anyway on any newly allocated page
> (unless you clear the existing colour on page freeing).>

Tags are not cleared on sparc on freeing. They get cleared when the page
is allocated again.

>>>> We can try to store tags for an entire region in vma but that is
>>>> expensive, plus on sparc tags are set in userspace with no
>>>> participation from kernel and now we need a way for userspace to
>>>> communicate the tags to kernel.
>>>
>>> We can't support finer granularity through the mmap() syscall and, as
>>> you said, the vma is not the right thing to store the individual tags.
>>> With the above extension to mmap(), we'd have to store a colour per vma
>>> and prevent merging if different colours (we could as well use the
>>> pkeys mechanism we already have in the kernel but use a colour per vma
>>> instead of a key).
>>
>> Since tags can change on any part of mmap region on sparc at any time
>> without kernel being involved, I am not sure I see much reason for
>> kernel to enforce any tag related restrictions.
> 
> It's not enforcing a tag, more like the default colour for a faulted in
> page. Anyway, if sparc is going with default 0/untagged, that's fine as
> well. We may add this mmap() option to arm64 only.
> 
>>>> From sparc point of view, making kernel responsible for assigning tags
>>>> to a page on page fault is full of pitfalls.
>>>
>>> This could be just some arm64-specific but if you plan to deploy it more
>>> generically for sparc (at the C library level), you may find this
>>> useful.
>>
>> Common semantics from app developer point of view will be very useful to
>> maintain. If arm64 says mmap with MAP_FIXED and a tagged address will
>> return a pre-colored page, I would rather have it be the same on any
>> architecture. Is there a use case that justifies kernel doing this extra
>> work?
> 
> So if a database program is doing an anonymous mmap(PROT_TBI) of 100GB,
> IIUC for sparc the faulted-in pages will have random colours (on 64-byte
> granularity). Ignoring the information leak from prior uses of such
> pages, it would be the responsibility of the db program to issue the
> stxa. On arm64, since we also want to do this via malloc(), any large
> allocation would require all pages to be faulted in so that malloc() can
> set the write colour before being handed over to the user. That's what
> we want to avoid and the user is free to repaint the memory as it likes.
> 

On sparc, any newly allocated page is cleared along with any old tags on
it. Since clearing tag happens automatically when page is cleared on
sparc, clear_user_page() will need to execute additional stxa
instructions to set a new tag. It is doable. In a way it is done already
if page is being pre-colored with tag 0 always ;) Where would the
pre-defined tag be stored - as part of address stored in vm_start or a
new field in vm_area_struct?

--
Khalid

WARNING: multiple messages have this Message-ID (diff)
From: Khalid Aziz <khalid.aziz@oracle.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	kvm@vger.kernel.org, Christian Koenig <Christian.Koenig@amd.com>,
	Szabolcs Nagy <Szabolcs.Nagy@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	dri-devel@lists.freedesktop.org, linux-mm@kvack.org,
	Lee Smith <Lee.Smith@arm.com>,
	linux-kselftest@vger.kernel.org,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Jacob Bramley <Jacob.Bramley@arm.com>,
	Leon Romanovsky <leon@kernel.org>,
	linux-rdma@vger.kernel.org, amd-gfx@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org,
	Dave Martin <Dave.Martin@arm.com>,
	Evgeniy Stepanov <eugenis@google.com>,
	linux-media@vger.kernel.org, Kees Cook <keescook@chromium.org>,
	Ruben Ayrapetyan <Ruben.Ayrapetyan@arm.com>,
	Andrey Konovalov <andreyknvl@google.com>,
	Kevin Brodsky <kevin.brodsky@arm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Dmitry Vyukov <dvyukov@google.com>,
	Kostya Serebryany <kcc@google.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Felix Kuehling <Felix.Kuehling@amd.com>,
	linux-kernel@vger.kernel.org,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>,
	Alexander Deucher <Alexander.Deucher@amd.com>,
	Andrew Murray <andrew.murray@arm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Yishai Hadas <yishaih@mellanox.com>,
	Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Subject: Re: [PATCH v15 05/17] arms64: untag user pointers passed to memory syscalls
Date: Thu, 30 May 2019 10:05:55 -0600	[thread overview]
Message-ID: <f79336b5-46b4-39c0-b754-23366207e32d@oracle.com> (raw)
In-Reply-To: <20190530151105.GA35418@arrakis.emea.arm.com>

On 5/30/19 9:11 AM, Catalin Marinas wrote:
> On Wed, May 29, 2019 at 01:16:37PM -0600, Khalid Aziz wrote:
>> mmap() can return the same tagged address but I am uneasy about kernel
>> pre-coloring the pages. Database can mmap 100's of GB of memory. That is
>> lot of work being offloaded to the kernel to pre-color the page even if
>> done in batches as pages are faulted in.
> 
> For anonymous mmap() for example, the kernel would have to zero the
> faulted in pages anyway. We can handle the colouring at the same time in
> clear_user_page() (as I said below, we have to clear the colour anyway
> from previous uses, so it's simply extending this to support something
> other than tag/colour 0 by default with no additional overhead).
> 

On sparc M7, clear_user_page() ends up in M7clear_user_page defined in
arch/sparc/lib/M7memset.S. M7 code use Block Init Store (BIS) to clear
the page. BIS on M7 clears the memory tags as well and no separate
instructions are needed to clear the tags. As a result when kernel
clears a page before returning it to user, the page is not only zeroed
out, its tags are also cleared to 0.

>>> Since we already need such loop in the kernel, we might as well allow
>>> user space to require a certain colour. This comes in handy for large
>>> malloc() and another advantage is that the C library won't be stuck
>>> trying to paint the whole range (think GB).
>>
>> If kernel is going to pre-color all pages in a vma, we will need to
>> store the default tag in the vma. It will add more time to page fault
>> handling code. On sparc M7, kernel will need to execute additional 128
>> stxa instructions to set the tags on a normal page.
> 
> As I said, since the user can retrieve an old colour using ldxa, the
> kernel should perform this operation anyway on any newly allocated page
> (unless you clear the existing colour on page freeing).>

Tags are not cleared on sparc on freeing. They get cleared when the page
is allocated again.

>>>> We can try to store tags for an entire region in vma but that is
>>>> expensive, plus on sparc tags are set in userspace with no
>>>> participation from kernel and now we need a way for userspace to
>>>> communicate the tags to kernel.
>>>
>>> We can't support finer granularity through the mmap() syscall and, as
>>> you said, the vma is not the right thing to store the individual tags.
>>> With the above extension to mmap(), we'd have to store a colour per vma
>>> and prevent merging if different colours (we could as well use the
>>> pkeys mechanism we already have in the kernel but use a colour per vma
>>> instead of a key).
>>
>> Since tags can change on any part of mmap region on sparc at any time
>> without kernel being involved, I am not sure I see much reason for
>> kernel to enforce any tag related restrictions.
> 
> It's not enforcing a tag, more like the default colour for a faulted in
> page. Anyway, if sparc is going with default 0/untagged, that's fine as
> well. We may add this mmap() option to arm64 only.
> 
>>>> From sparc point of view, making kernel responsible for assigning tags
>>>> to a page on page fault is full of pitfalls.
>>>
>>> This could be just some arm64-specific but if you plan to deploy it more
>>> generically for sparc (at the C library level), you may find this
>>> useful.
>>
>> Common semantics from app developer point of view will be very useful to
>> maintain. If arm64 says mmap with MAP_FIXED and a tagged address will
>> return a pre-colored page, I would rather have it be the same on any
>> architecture. Is there a use case that justifies kernel doing this extra
>> work?
> 
> So if a database program is doing an anonymous mmap(PROT_TBI) of 100GB,
> IIUC for sparc the faulted-in pages will have random colours (on 64-byte
> granularity). Ignoring the information leak from prior uses of such
> pages, it would be the responsibility of the db program to issue the
> stxa. On arm64, since we also want to do this via malloc(), any large
> allocation would require all pages to be faulted in so that malloc() can
> set the write colour before being handed over to the user. That's what
> we want to avoid and the user is free to repaint the memory as it likes.
> 

On sparc, any newly allocated page is cleared along with any old tags on
it. Since clearing tag happens automatically when page is cleared on
sparc, clear_user_page() will need to execute additional stxa
instructions to set a new tag. It is doable. In a way it is done already
if page is being pre-colored with tag 0 always ;) Where would the
pre-defined tag be stored - as part of address stored in vm_start or a
new field in vm_area_struct?

--
Khalid


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-05-30 16:05 UTC|newest]

Thread overview: 558+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-06 16:30 [PATCH v15 00/17] arm64: untag user pointers passed to the kernel Andrey Konovalov
2019-05-06 16:30 ` Andrey Konovalov
2019-05-06 16:30 ` Andrey Konovalov
2019-05-06 16:30 ` Andrey Konovalov
2019-05-06 16:30 ` andreyknvl
2019-05-06 16:30 ` Andrey Konovalov
2019-05-06 16:30 ` [PATCH v15 01/17] uaccess: add untagged_addr definition for other arches Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-29 14:49   ` Khalid Aziz
2019-05-29 14:49     ` Khalid Aziz
2019-05-29 14:49     ` Khalid Aziz
2019-05-29 14:49     ` khalid.aziz
2019-05-29 14:49     ` Khalid Aziz
2019-05-06 16:30 ` [PATCH v15 02/17] arm64: untag user pointers in access_ok and __uaccess_mask_ptr Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30 ` [PATCH v15 03/17] lib, arm64: untag user pointers in strn*_user Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-22 10:41   ` Catalin Marinas
2019-05-22 10:41     ` Catalin Marinas
2019-05-22 10:41     ` Catalin Marinas
2019-05-22 10:41     ` catalin.marinas
2019-05-22 10:41     ` Catalin Marinas
2019-05-06 16:30 ` [PATCH v15 04/17] mm: add ksys_ wrappers to memory syscalls Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-22 10:56   ` Catalin Marinas
2019-05-22 10:56     ` Catalin Marinas
2019-05-22 10:56     ` Catalin Marinas
2019-05-22 10:56     ` catalin.marinas
2019-05-22 10:56     ` Catalin Marinas
2019-05-06 16:30 ` [PATCH v15 05/17] arms64: untag user pointers passed " Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-22 11:49   ` Catalin Marinas
2019-05-22 11:49     ` Catalin Marinas
2019-05-22 11:49     ` Catalin Marinas
2019-05-22 11:49     ` catalin.marinas
2019-05-22 11:49     ` Catalin Marinas
2019-05-22 21:16     ` Evgenii Stepanov
2019-05-22 21:16       ` Evgenii Stepanov
2019-05-22 21:16       ` Evgenii Stepanov
2019-05-22 21:16       ` Evgenii Stepanov
2019-05-22 21:16       ` eugenis
2019-05-22 21:16       ` Evgenii Stepanov
2019-05-23  9:04       ` Catalin Marinas
2019-05-23  9:04         ` Catalin Marinas
2019-05-23  9:04         ` Catalin Marinas
2019-05-23  9:04         ` Catalin Marinas
2019-05-23  9:04         ` catalin.marinas
2019-05-23  9:04         ` Catalin Marinas
2019-05-24  4:23         ` Evgenii Stepanov
2019-05-24  4:23           ` Evgenii Stepanov
2019-05-24  4:23           ` Evgenii Stepanov
2019-05-24  4:23           ` Evgenii Stepanov
2019-05-24  4:23           ` eugenis
2019-05-24  4:23           ` Evgenii Stepanov
2019-05-24 15:41   ` Andrew Murray
2019-05-24 15:41     ` Andrew Murray
2019-05-24 15:41     ` Andrew Murray
2019-05-24 15:41     ` andrew.murray
2019-05-24 15:41     ` Andrew Murray
2019-05-25  9:57   ` Catalin Marinas
2019-05-25  9:57     ` Catalin Marinas
2019-05-25  9:57     ` Catalin Marinas
2019-05-25  9:57     ` catalin.marinas
2019-05-25  9:57     ` Catalin Marinas
2019-05-27  9:42   ` Catalin Marinas
2019-05-27  9:42     ` Catalin Marinas
2019-05-27  9:42     ` Catalin Marinas
2019-05-27  9:42     ` catalin.marinas
2019-05-27  9:42     ` Catalin Marinas
2019-05-27 14:37   ` Catalin Marinas
2019-05-27 14:37     ` Catalin Marinas
2019-05-27 14:37     ` Catalin Marinas
2019-05-27 14:37     ` catalin.marinas
2019-05-27 14:37     ` Catalin Marinas
2019-05-28 14:54     ` Andrew Murray
2019-05-28 14:54       ` Andrew Murray
2019-05-28 14:54       ` Andrew Murray
2019-05-28 14:54       ` andrew.murray
2019-05-28 14:54       ` Andrew Murray
2019-05-28 15:40       ` Catalin Marinas
2019-05-28 15:40         ` Catalin Marinas
2019-05-28 15:40         ` Catalin Marinas
2019-05-28 15:40         ` catalin.marinas
2019-05-28 15:40         ` Catalin Marinas
2019-05-28 15:56         ` Dave Martin
2019-05-28 15:56           ` Dave Martin
2019-05-28 15:56           ` Dave Martin
2019-05-28 15:56           ` Dave.Martin
2019-05-28 15:56           ` Dave Martin
2019-05-28 16:34           ` Catalin Marinas
2019-05-28 16:34             ` Catalin Marinas
2019-05-28 16:34             ` Catalin Marinas
2019-05-28 16:34             ` catalin.marinas
2019-05-28 16:34             ` Catalin Marinas
2019-05-29 12:42             ` Dave Martin
2019-05-29 12:42               ` Dave Martin
2019-05-29 12:42               ` Dave Martin
2019-05-29 12:42               ` Dave.Martin
2019-05-29 12:42               ` Dave Martin
2019-05-29 13:23               ` Catalin Marinas
2019-05-29 13:23                 ` Catalin Marinas
2019-05-29 13:23                 ` Catalin Marinas
2019-05-29 13:23                 ` catalin.marinas
2019-05-29 13:23                 ` Catalin Marinas
2019-05-29 15:18                 ` Dave Martin
2019-05-29 15:18                   ` Dave Martin
2019-05-29 15:18                   ` Dave Martin
2019-05-29 15:18                   ` Dave.Martin
2019-05-29 15:18                   ` Dave Martin
2019-05-28 23:33         ` Khalid Aziz
2019-05-28 23:33           ` Khalid Aziz
2019-05-28 23:33           ` Khalid Aziz
2019-05-28 23:33           ` khalid.aziz
2019-05-28 23:33           ` Khalid Aziz
2019-05-29 14:20           ` Catalin Marinas
2019-05-29 14:20             ` Catalin Marinas
2019-05-29 14:20             ` Catalin Marinas
2019-05-29 14:20             ` catalin.marinas
2019-05-29 14:20             ` Catalin Marinas
2019-05-29 19:16             ` Khalid Aziz
2019-05-29 19:16               ` Khalid Aziz
2019-05-29 19:16               ` Khalid Aziz
2019-05-29 19:16               ` khalid.aziz
2019-05-29 19:16               ` Khalid Aziz
2019-05-30 15:11               ` Catalin Marinas
2019-05-30 15:11                 ` Catalin Marinas
2019-05-30 15:11                 ` Catalin Marinas
2019-05-30 15:11                 ` catalin.marinas
2019-05-30 15:11                 ` Catalin Marinas
2019-05-30 16:05                 ` Khalid Aziz [this message]
2019-05-30 16:05                   ` Khalid Aziz
2019-05-30 16:05                   ` Khalid Aziz
2019-05-30 16:05                   ` khalid.aziz
2019-05-30 16:05                   ` Khalid Aziz
2019-05-30 16:57                   ` Catalin Marinas
2019-05-30 16:57                     ` Catalin Marinas
2019-05-30 16:57                     ` Catalin Marinas
2019-05-30 16:57                     ` catalin.marinas
2019-05-30 16:57                     ` Catalin Marinas
2019-05-28 13:05   ` Catalin Marinas
2019-05-28 13:05     ` Catalin Marinas
2019-05-28 13:05     ` Catalin Marinas
2019-05-28 13:05     ` catalin.marinas
2019-05-28 13:05     ` Catalin Marinas
2019-05-06 16:30 ` [PATCH v15 06/17] mm: untag user pointers in do_pages_move Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-22 11:51   ` Catalin Marinas
2019-05-22 11:51     ` Catalin Marinas
2019-05-22 11:51     ` Catalin Marinas
2019-05-22 11:51     ` catalin.marinas
2019-05-22 11:51     ` Catalin Marinas
2019-05-06 16:30 ` [PATCH v15 07/17] mm, arm64: untag user pointers in mm/gup.c Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-22 11:56   ` Catalin Marinas
2019-05-22 11:56     ` Catalin Marinas
2019-05-22 11:56     ` Catalin Marinas
2019-05-22 11:56     ` catalin.marinas
2019-05-22 11:56     ` Catalin Marinas
2019-05-06 16:30 ` [PATCH v15 08/17] mm, arm64: untag user pointers in get_vaddr_frames Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30 ` [PATCH v15 09/17] fs, arm64: untag user pointers in copy_mount_options Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-22 12:09   ` Catalin Marinas
2019-05-22 12:09     ` Catalin Marinas
2019-05-22 12:09     ` Catalin Marinas
2019-05-22 12:09     ` catalin.marinas
2019-05-22 12:09     ` Catalin Marinas
2019-05-06 16:30 ` [PATCH v15 10/17] fs, arm64: untag user pointers in fs/userfaultfd.c Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30 ` [PATCH v15 11/17] drm/amdgpu, arm64: untag user pointers Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-07 16:43   ` Kuehling, Felix
2019-05-07 16:43     ` Kuehling, Felix
2019-05-07 16:43     ` Kuehling, Felix
2019-05-07 16:43     ` Kuehling, Felix
2019-05-07 16:43     ` Felix.Kuehling
2019-05-07 16:43     ` Kuehling, Felix
2019-05-06 16:30 ` [PATCH v15 12/17] drm/radeon, arm64: untag user pointers in radeon_gem_userptr_ioctl Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
     [not found]   ` <03fe9d923db75cf72678f3ce103838e67390751a.1557160186.git.andreyknvl-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2019-05-07 16:44     ` Kuehling, Felix
2019-05-07 16:44       ` Kuehling, Felix
2019-05-07 16:44       ` Kuehling, Felix
2019-05-07 16:44       ` Kuehling, Felix
2019-05-07 16:44       ` Felix.Kuehling
2019-05-07 16:44       ` Kuehling, Felix
2019-05-06 16:30 ` [PATCH v15 13/17] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr() Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 16:30   ` andreyknvl
2019-05-06 16:30   ` Andrey Konovalov
2019-05-06 19:50   ` Jason Gunthorpe
2019-05-06 19:50     ` Jason Gunthorpe
2019-05-06 19:50     ` Jason Gunthorpe
2019-05-06 19:50     ` jgg
2019-05-06 19:50     ` Jason Gunthorpe
2019-05-07  6:33     ` Leon Romanovsky
2019-05-07  6:33       ` Leon Romanovsky
2019-05-07  6:33       ` Leon Romanovsky
2019-05-07  6:33       ` leon
2019-05-07  6:33       ` Leon Romanovsky
2019-05-06 16:31 ` [PATCH v15 14/17] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` andreyknvl
2019-05-06 16:31   ` Andrey Konovalov
2019-05-24 13:13   ` Mauro Carvalho Chehab
2019-05-24 13:13     ` Mauro Carvalho Chehab
2019-05-24 13:13     ` Mauro Carvalho Chehab
2019-05-24 13:13     ` mchehab+samsung
2019-05-24 13:13     ` Mauro Carvalho Chehab
2019-05-06 16:31 ` [PATCH v15 15/17] tee, arm64: untag user pointers in tee_shm_register Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` andreyknvl
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31 ` [PATCH v15 16/17] vfio/type1, arm64: untag user pointers in vaddr_get_pfn Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` andreyknvl
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31 ` [PATCH v15 17/17] selftests, arm64: add a selftest for passing tagged pointers to kernel Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` Andrey Konovalov
2019-05-06 16:31   ` andreyknvl
2019-05-06 16:31   ` Andrey Konovalov
2019-05-22 14:16   ` Catalin Marinas
2019-05-22 14:16     ` Catalin Marinas
2019-05-22 14:16     ` Catalin Marinas
2019-05-22 14:16     ` catalin.marinas
2019-05-22 14:16     ` Catalin Marinas
2019-05-31 14:21     ` Andrey Konovalov
2019-05-31 14:21       ` Andrey Konovalov
2019-05-31 14:21       ` Andrey Konovalov
2019-05-31 14:21       ` Andrey Konovalov
2019-05-31 14:21       ` andreyknvl
2019-05-31 14:21       ` Andrey Konovalov
2019-05-31 16:22       ` Catalin Marinas
2019-05-31 16:22         ` Catalin Marinas
2019-05-31 16:22         ` Catalin Marinas
2019-05-31 16:22         ` Catalin Marinas
2019-05-31 16:22         ` catalin.marinas
2019-05-31 16:22         ` Catalin Marinas
2019-05-17 14:49 ` [PATCH v15 00/17] arm64: untag user pointers passed to the kernel Catalin Marinas
2019-05-17 14:49   ` Catalin Marinas
2019-05-17 14:49   ` Catalin Marinas
2019-05-17 14:49   ` catalin.marinas
2019-05-17 14:49   ` Catalin Marinas
2019-05-20 23:53   ` Evgenii Stepanov
2019-05-20 23:53     ` Evgenii Stepanov
2019-05-20 23:53     ` Evgenii Stepanov
2019-05-20 23:53     ` Evgenii Stepanov
2019-05-20 23:53     ` eugenis
2019-05-20 23:53     ` Evgenii Stepanov
2019-05-21 18:29     ` Catalin Marinas
2019-05-21 18:29       ` Catalin Marinas
2019-05-21 18:29       ` Catalin Marinas
2019-05-21 18:29       ` Catalin Marinas
2019-05-21 18:29       ` catalin.marinas
2019-05-21 18:29       ` Catalin Marinas
2019-05-22  0:04       ` Kees Cook
2019-05-22  0:04         ` Kees Cook
2019-05-22  0:04         ` Kees Cook
2019-05-22  0:04         ` Kees Cook
2019-05-22  0:04         ` keescook
2019-05-22  0:04         ` Kees Cook
2019-05-22 10:11         ` Catalin Marinas
2019-05-22 10:11           ` Catalin Marinas
2019-05-22 10:11           ` Catalin Marinas
2019-05-22 10:11           ` Catalin Marinas
2019-05-22 10:11           ` catalin.marinas
2019-05-22 10:11           ` Catalin Marinas
2019-05-22 15:30           ` enh
2019-05-22 15:30             ` enh
2019-05-22 15:30             ` enh
2019-05-22 15:30             ` enh
2019-05-22 15:30             ` enh
2019-05-22 15:30             ` enh
2019-05-22 16:35             ` Catalin Marinas
2019-05-22 16:35               ` Catalin Marinas
2019-05-22 16:35               ` Catalin Marinas
2019-05-22 16:35               ` Catalin Marinas
2019-05-22 16:35               ` catalin.marinas
2019-05-22 16:35               ` Catalin Marinas
2019-05-22 16:58               ` enh
2019-05-22 16:58                 ` enh
2019-05-22 16:58                 ` enh
2019-05-22 16:58                 ` enh
2019-05-22 16:58                 ` enh
2019-05-22 16:58                 ` enh
2019-05-23 15:21                 ` Catalin Marinas
2019-05-23 15:21                   ` Catalin Marinas
2019-05-23 15:21                   ` Catalin Marinas
2019-05-23 15:21                   ` Catalin Marinas
2019-05-23 15:21                   ` catalin.marinas
2019-05-23 15:21                   ` Catalin Marinas
2019-05-22 20:47               ` Kees Cook
2019-05-22 20:47                 ` Kees Cook
2019-05-22 20:47                 ` Kees Cook
2019-05-22 20:47                 ` Kees Cook
2019-05-22 20:47                 ` keescook
2019-05-22 20:47                 ` Kees Cook
2019-05-22 23:03                 ` Evgenii Stepanov
2019-05-22 23:03                   ` Evgenii Stepanov
2019-05-22 23:03                   ` Evgenii Stepanov
2019-05-22 23:03                   ` Evgenii Stepanov
2019-05-22 23:03                   ` eugenis
2019-05-22 23:03                   ` Evgenii Stepanov
2019-05-22 23:09                   ` enh
2019-05-22 23:09                     ` enh
2019-05-22 23:09                     ` enh
2019-05-22 23:09                     ` enh
2019-05-22 23:09                     ` enh
2019-05-22 23:09                     ` enh
2019-05-23  7:34                     ` Catalin Marinas
2019-05-23  7:34                       ` Catalin Marinas
2019-05-23  7:34                       ` Catalin Marinas
2019-05-23  7:34                       ` Catalin Marinas
2019-05-23  7:34                       ` catalin.marinas
2019-05-23  7:34                       ` Catalin Marinas
2019-05-23 14:44                 ` Catalin Marinas
2019-05-23 14:44                   ` Catalin Marinas
2019-05-23 14:44                   ` Catalin Marinas
2019-05-23 14:44                   ` Catalin Marinas
2019-05-23 14:44                   ` catalin.marinas
2019-05-23 14:44                   ` Catalin Marinas
2019-05-23 15:44                   ` enh
2019-05-23 15:44                     ` enh
2019-05-23 15:44                     ` enh
2019-05-23 15:44                     ` enh
2019-05-23 15:44                     ` enh
2019-05-23 15:44                     ` enh
2019-05-23 17:00                     ` Catalin Marinas
2019-05-23 17:00                       ` Catalin Marinas
2019-05-23 17:00                       ` Catalin Marinas
2019-05-23 17:00                       ` Catalin Marinas
2019-05-23 17:00                       ` catalin.marinas
2019-05-23 17:00                       ` Catalin Marinas
2019-05-23 16:38                   ` Kees Cook
2019-05-23 16:38                     ` Kees Cook
2019-05-23 16:38                     ` Kees Cook
2019-05-23 16:38                     ` Kees Cook
2019-05-23 16:38                     ` keescook
2019-05-23 16:38                     ` Kees Cook
2019-05-23 17:43                     ` Catalin Marinas
2019-05-23 17:43                       ` Catalin Marinas
2019-05-23 17:43                       ` Catalin Marinas
2019-05-23 17:43                       ` Catalin Marinas
2019-05-23 17:43                       ` catalin.marinas
2019-05-23 17:43                       ` Catalin Marinas
2019-05-23 21:31                       ` Kees Cook
2019-05-23 21:31                         ` Kees Cook
2019-05-23 21:31                         ` Kees Cook
2019-05-23 21:31                         ` Kees Cook
2019-05-23 21:31                         ` keescook
2019-05-23 21:31                         ` Kees Cook
2019-05-24 11:20                         ` Catalin Marinas
2019-05-24 11:20                           ` Catalin Marinas
2019-05-24 11:20                           ` Catalin Marinas
2019-05-24 11:20                           ` Catalin Marinas
2019-05-24 11:20                           ` catalin.marinas
2019-05-24 11:20                           ` Catalin Marinas
2019-05-28 17:02                         ` Catalin Marinas
2019-05-28 17:02                           ` Catalin Marinas
2019-05-28 17:02                           ` Catalin Marinas
2019-05-28 17:02                           ` Catalin Marinas
2019-05-28 17:02                           ` catalin.marinas
2019-05-28 17:02                           ` Catalin Marinas
2019-06-02  5:06                           ` Kees Cook
2019-06-02  5:06                             ` Kees Cook
2019-06-02  5:06                             ` Kees Cook
2019-06-02  5:06                             ` Kees Cook
2019-06-02  5:06                             ` keescook
2019-06-02  5:06                             ` Kees Cook
2019-05-22 19:21             ` Kees Cook
2019-05-22 19:21               ` Kees Cook
2019-05-22 19:21               ` Kees Cook
2019-05-22 19:21               ` Kees Cook
2019-05-22 19:21               ` keescook
2019-05-22 19:21               ` Kees Cook
2019-05-22 20:15               ` enh
2019-05-22 20:15                 ` enh
2019-05-22 20:15                 ` enh
2019-05-22 20:15                 ` enh
2019-05-22 20:15                 ` enh
2019-05-22 20:15                 ` enh
2019-05-23 15:08               ` Catalin Marinas
2019-05-23 15:08                 ` Catalin Marinas
2019-05-23 15:08                 ` Catalin Marinas
2019-05-23 15:08                 ` Catalin Marinas
2019-05-23 15:08                 ` catalin.marinas
2019-05-23 15:08                 ` Catalin Marinas
2019-05-23 17:51         ` Khalid Aziz
2019-05-23 17:51           ` Khalid Aziz
2019-05-23 17:51           ` Khalid Aziz
2019-05-23 17:51           ` Khalid Aziz
2019-05-23 17:51           ` khalid.aziz
2019-05-23 17:51           ` Khalid Aziz
2019-05-23 20:11           ` Catalin Marinas
2019-05-23 20:11             ` Catalin Marinas
2019-05-23 20:11             ` Catalin Marinas
2019-05-23 20:11             ` Catalin Marinas
2019-05-23 20:11             ` catalin.marinas
2019-05-23 20:11             ` Catalin Marinas
2019-05-23 21:42             ` Khalid Aziz
2019-05-23 21:42               ` Khalid Aziz
2019-05-23 21:42               ` Khalid Aziz
2019-05-23 21:42               ` Khalid Aziz
2019-05-23 21:42               ` khalid.aziz
2019-05-23 21:42               ` Khalid Aziz
2019-05-23 21:49             ` Khalid Aziz
2019-05-23 21:49               ` Khalid Aziz
2019-05-23 21:49               ` Khalid Aziz
2019-05-23 21:49               ` Khalid Aziz
2019-05-23 21:49               ` khalid.aziz
2019-05-23 21:49               ` Khalid Aziz
2019-05-24 10:11               ` Catalin Marinas
2019-05-24 10:11                 ` Catalin Marinas
2019-05-24 10:11                 ` Catalin Marinas
2019-05-24 10:11                 ` Catalin Marinas
2019-05-24 10:11                 ` catalin.marinas
2019-05-24 10:11                 ` Catalin Marinas
2019-05-24 14:25                 ` Khalid Aziz
2019-05-24 14:25                   ` Khalid Aziz
2019-05-24 14:25                   ` Khalid Aziz
2019-05-24 14:25                   ` Khalid Aziz
2019-05-24 14:25                   ` khalid.aziz
2019-05-24 14:25                   ` Khalid Aziz
2019-05-28 14:14                   ` Andrey Konovalov
2019-05-28 14:14                     ` Andrey Konovalov
2019-05-28 14:14                     ` Andrey Konovalov
2019-05-28 14:14                     ` Andrey Konovalov
2019-05-28 14:14                     ` andreyknvl
2019-05-28 14:14                     ` Andrey Konovalov
2019-05-29  6:11                     ` Christoph Hellwig
2019-05-29  6:11                       ` Christoph Hellwig
2019-05-29  6:11                       ` Christoph Hellwig
2019-05-29  6:11                       ` Christoph Hellwig
2019-05-29  6:11                       ` hch
2019-05-29  6:11                       ` Christoph Hellwig
2019-05-29 12:12                       ` Catalin Marinas
2019-05-29 12:12                         ` Catalin Marinas
2019-05-29 12:12                         ` Catalin Marinas
2019-05-29 12:12                         ` Catalin Marinas
2019-05-29 12:12                         ` catalin.marinas
2019-05-29 12:12                         ` Catalin Marinas
2019-05-30 17:15                     ` Catalin Marinas
2019-05-30 17:15                       ` Catalin Marinas
2019-05-30 17:15                       ` Catalin Marinas
2019-05-30 17:15                       ` Catalin Marinas
2019-05-30 17:15                       ` catalin.marinas
2019-05-30 17:15                       ` Catalin Marinas
2019-05-31 14:29                       ` Andrey Konovalov
2019-05-31 14:29                         ` Andrey Konovalov
2019-05-31 14:29                         ` Andrey Konovalov
2019-05-31 14:29                         ` Andrey Konovalov
2019-05-31 14:29                         ` andreyknvl
2019-05-31 14:29                         ` Andrey Konovalov
2019-05-31 16:19                         ` Catalin Marinas
2019-05-31 16:19                           ` Catalin Marinas
2019-05-31 16:19                           ` Catalin Marinas
2019-05-31 16:19                           ` Catalin Marinas
2019-05-31 16:19                           ` catalin.marinas
2019-05-31 16:19                           ` Catalin Marinas
2019-05-31 16:24                           ` Andrey Konovalov
2019-05-31 16:24                             ` Andrey Konovalov
2019-05-31 16:24                             ` Andrey Konovalov
2019-05-31 16:24                             ` Andrey Konovalov
2019-05-31 16:24                             ` andreyknvl
2019-05-31 16:24                             ` Andrey Konovalov
2019-05-31 16:46                             ` Catalin Marinas
2019-05-31 16:46                               ` Catalin Marinas
2019-05-31 16:46                               ` Catalin Marinas
2019-05-31 16:46                               ` Catalin Marinas
2019-05-31 16:46                               ` catalin.marinas
2019-05-31 16:46                               ` Catalin Marinas
2019-05-21 18:48   ` Jason Gunthorpe
2019-05-21 18:48     ` Jason Gunthorpe
2019-05-21 18:48     ` Jason Gunthorpe
2019-05-21 18:48     ` jgg
2019-05-21 18:48     ` Jason Gunthorpe
2019-05-22 13:49     ` Dave Martin
2019-05-22 13:49       ` Dave Martin
2019-05-22 13:49       ` Dave Martin
2019-05-22 13:49       ` Dave.Martin
2019-05-22 13:49       ` Dave Martin
2019-05-23  0:20       ` Jason Gunthorpe
2019-05-23  0:20         ` Jason Gunthorpe
2019-05-23  0:20         ` Jason Gunthorpe
2019-05-23  0:20         ` jgg
2019-05-23  0:20         ` Jason Gunthorpe
2019-05-23 10:42         ` Dave Martin
2019-05-23 10:42           ` Dave Martin
2019-05-23 10:42           ` Dave Martin
2019-05-23 10:42           ` Dave.Martin
2019-05-23 10:42           ` Dave Martin
2019-05-23 16:57           ` Catalin Marinas
2019-05-23 16:57             ` Catalin Marinas
2019-05-23 16:57             ` Catalin Marinas
2019-05-23 16:57             ` catalin.marinas
2019-05-23 16:57             ` Catalin Marinas
2019-05-24 14:23             ` Dave Martin
2019-05-24 14:23               ` Dave Martin
2019-05-24 14:23               ` Dave Martin
2019-05-24 14:23               ` Dave.Martin
2019-05-24 14:23               ` Dave Martin

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=f79336b5-46b4-39c0-b754-23366207e32d@oracle.com \
    --to=khalid.aziz@oracle.com \
    --cc=Christian.Koenig@amd.com \
    --cc=Dave.Martin@arm.com \
    --cc=Jacob.Bramley@arm.com \
    --cc=Lee.Smith@arm.com \
    --cc=Ruben.Ayrapetyan@arm.com \
    --cc=Szabolcs.Nagy@arm.com \
    --cc=alex.williamson@redhat.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=andreyknvl@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=eugenis@google.com \
    --cc=keescook@chromium.org \
    --cc=kevin.brodsky@arm.com \
    --cc=kvm@vger.kernel.org \
    --cc=leon@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@kernel.org \
    --cc=vincenzo.frascino@arm.com \
    --cc=will.deacon@arm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.