All of lore.kernel.org
 help / color / mirror / Atom feed
From: Khalid Aziz <khalid.aziz@oracle.com>
To: Julian Calaby <julian.calaby@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	corbet@lwn.net, Andrew Morton <akpm@linux-foundation.org>,
	dingel@linux.vnet.ibm.com, zhenzhang.zhang@huawei.com,
	bob.picco@oracle.com, kirill.shutemov@linux.intel.com,
	aneesh.kumar@linux.vnet.ibm.com, aarcange@redhat.com,
	Arnd Bergmann <arnd@arndb.de>,
	sparclinux <sparclinux@vger.kernel.org>,
	rob.gardner@oracle.com, mhocko@suse.cz, chris.hyser@oracle.com,
	richard@nod.at, vbabka@suse.cz, koct9i@gmail.com,
	oleg@redhat.com, gthelen@google.com, jack@suse.cz,
	xiexiuqi@huawei.com, Vineet.Gupta1@synopsys.com,
	Andy Lutomirski <luto@kernel.org>,
	ebiederm@xmission.com, bsegall@google.com,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	dave@stgolabs.net, Alexey Dobriyan <adobriyan@gmail.com>,
	linux-doc@vger.kernel.org"linux-kernel@vger.kernel.org" <linu>
Subject: Re: [PATCH v2] sparc64: Add support for Application Data Integrity (ADI)
Date: Thu, 3 Mar 2016 10:28:45 -0700	[thread overview]
Message-ID: <56D8744D.9020300@oracle.com> (raw)
In-Reply-To: <CAGRGNgVyPUUUTV9_GAyE9S4FVPce4PBU-G+QXv3eNkosGj3eyg@mail.gmail.com>

On 03/02/2016 05:48 PM, Julian Calaby wrote:
> Hi Khalid,
>
> On Thu, Mar 3, 2016 at 11:25 AM, Khalid Aziz <khalid.aziz@oracle.com> wrote:
>> Thanks, Julian! I really appreciate your feedback.
>
> No problem!
>
>> My comments below.
>>
>> On 03/02/2016 04:08 PM, Julian Calaby wrote:
>>>
>>> Hi Khalid,
>>>
>>> On Thu, Mar 3, 2016 at 7:39 AM, Khalid Aziz <khalid.aziz@oracle.com>
>>> wrote:
>>>>
>>>>
>>>> Enable Application Data Integrity (ADI) support in the sparc
>>>> kernel for applications to use ADI in userspace. ADI is a new
>>>> feature supported on sparc M7 and newer processors. ADI is supported
>>>> for data fetches only and not instruction fetches. This patch adds
>>>> prctl commands to enable and disable ADI (TSTATE.mcde), return ADI
>>>> parameters to userspace, enable/disable MCD (Memory Corruption
>>>> Detection) on selected memory ranges and enable TTE.mcd in PTEs. It
>>>> also adds handlers for all traps related to MCD. ADI is not enabled
>>>> by default for any task and a task must explicitly enable ADI
>>>> (TSTATE.mcde), turn MCD on on a memory range and set version tag
>>>> for ADI to be effective for the task. This patch adds support for
>>>> ADI for hugepages only. Addresses passed into system calls must be
>>>> non-ADI tagged addresses.
>>>
>>>
>>> I can't comment on the actual functionality here, but I do see a few
>>> minor style issues in your patch.
>>>
>>> My big concern is that you're defining a lot of new code that is ADI
>>> specific but isn't inside a CONFIG_SPARC_ADI ifdef. (That said,
>>> handling ADI specific traps if ADI isn't enabled looks like a good
>>> idea to me, however most of the other stuff is just dead code if
>>> CONFIG_SPARC_ADI isn't enabled.)
>>
>>
>> Some of the code will be executed when CONFIG_SPARC_ADI is not enabled, for
>> instance init_adi() which will parse machine description to determine if
>> platform supports ADI. On the other hand, it might still make sense to
>> enclose this code in #ifdef. More on that below.
>>
>>
>>>
>>>> Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com>
>>>> ---
>>>> NOTES: ADI is a new feature added to M7 processor to allow hardware
>>>>           to catch rogue accesses to memory. An app can enable ADI on
>>>>           its data pages, set version tags on them and use versioned
>>>>           addresses (bits 63-60 of the address contain a version tag)
>>>>           to access the data pages. If a rogue app attempts to access
>>>>           ADI enabled data pages, its access is blocked and processor
>>>>           generates an exception. Enabling this functionality for all
>>>>           data pages of an app requires adding infrastructure to save
>>>>           version tags for any data pages that get swapped out and
>>>>           restoring those tags when pages are swapped back in. In this
>>>>           first implementation I am enabling ADI for hugepages only
>>>>           since these pages are locked in memory and hence avoid the
>>>>           issue of saving and restoring tags. Once this core functionality
>>>>           is stable, ADI for other memory pages can be enabled more
>>>>           easily.
>>>>
>>>> v2:
>>>>           - Fixed a build error
>>>>
>>>>    Documentation/prctl/sparc_adi.txt     |  62 ++++++++++
>>>>    Documentation/sparc/adi.txt           | 206
>>>> +++++++++++++++++++++++++++++++
>>>>    arch/sparc/Kconfig                    |  12 ++
>>>>    arch/sparc/include/asm/hugetlb.h      |  14 +++
>>>>    arch/sparc/include/asm/hypervisor.h   |   2 +
>>>>    arch/sparc/include/asm/mmu_64.h       |   1 +
>>>>    arch/sparc/include/asm/pgtable_64.h   |  15 +++
>>>>    arch/sparc/include/asm/processor_64.h |  19 +++
>>>>    arch/sparc/include/asm/ttable.h       |  10 ++
>>>>    arch/sparc/include/uapi/asm/asi.h     |   3 +
>>>>    arch/sparc/include/uapi/asm/pstate.h  |  10 ++
>>>>    arch/sparc/kernel/entry.h             |   3 +
>>>>    arch/sparc/kernel/head_64.S           |   1 +
>>>>    arch/sparc/kernel/mdesc.c             |  81 +++++++++++++
>>>>    arch/sparc/kernel/process_64.c        | 222
>>>> ++++++++++++++++++++++++++++++++++
>>>>    arch/sparc/kernel/sun4v_mcd.S         |  16 +++
>>>>    arch/sparc/kernel/traps_64.c          |  96 ++++++++++++++-
>>>>    arch/sparc/kernel/ttable_64.S         |   6 +-
>>>>    include/linux/mm.h                    |   2 +
>>>>    include/uapi/asm-generic/siginfo.h    |   5 +-
>>>>    include/uapi/linux/prctl.h            |  16 +++
>>>>    kernel/sys.c                          |  30 +++++
>>>>    22 files changed, 826 insertions(+), 6 deletions(-)
>>>>    create mode 100644 Documentation/prctl/sparc_adi.txt
>>>>    create mode 100644 Documentation/sparc/adi.txt
>>>>    create mode 100644 arch/sparc/kernel/sun4v_mcd.S
>>>
>>>
>>> I must admit that I'm slightly impressed that the documentation is
>>> over a quarter of the lines added. =)
>>>
>>>> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
>>>> index 56442d2..0aac0ae 100644
>>>> --- a/arch/sparc/Kconfig
>>>> +++ b/arch/sparc/Kconfig
>>>> @@ -80,6 +80,7 @@ config SPARC64
>>>>           select NO_BOOTMEM
>>>>           select HAVE_ARCH_AUDITSYSCALL
>>>>           select ARCH_SUPPORTS_ATOMIC_RMW
>>>> +       select SPARC_ADI
>>>
>>>
>>> This doesn't look right.
>>>
>>>>    config ARCH_DEFCONFIG
>>>>           string
>>>> @@ -314,6 +315,17 @@ if SPARC64
>>>>    source "kernel/power/Kconfig"
>>>>    endif
>>>>
>>>> +config SPARC_ADI
>>>> +       bool "Application Data Integrity support"
>>>> +       def_bool y if SPARC64
>>>
>>>
>>> def_bool is for config options without names (i.e. "this is a boolean
>>> value and it's default is...")
>>>
>>> So if you want people to be able to disable this option, then you
>>> should remove the select above and just have:
>>>
>>> bool "Application Data Integrity support"
>>> default y if SPARC64
>>>
>>> If you don't want people disabling it, then there's no point in having
>>> a separate Kconfig symbol.
>>>
>>
>> Ah, I see. I do not want people disabling it. I will make changes.
>
> Why don't you want people disabling it? I must acknowledge that it's
> not a lot of code, but I can see people wanting to build "minimal"
> kernels for processors without ADI or to run some specific thing that
> doesn't use ADI. Providing the kernel responds appropriately if
> there's an unexpected ADI fault I don't see why the code would be
> needed if it'll never be used.
>

Hi Julian,

My goal in making CONFIG_SPARC_ADI auto-selected was to not add yet 
another config option that end user has to understand and figure out 
what to do with, and make the kernel self-configuring where ADI simply 
becomes available if platform supports it. Kernel auto-detecting 
platform features is especially useful for distro kernels. I do see your 
point in being able to build a minimal kernel when building a custom 
kernel. Both options of making CONFIG_SPARC_ADI auto-selected or not, 
have pros and cons. I don't have a strong feeling about it one way or 
the other and can go either way.

Thanks,
Khalid

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Khalid Aziz <khalid.aziz@oracle.com>
To: Julian Calaby <julian.calaby@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	corbet@lwn.net, Andrew Morton <akpm@linux-foundation.org>,
	dingel@linux.vnet.ibm.com, zhenzhang.zhang@huawei.com,
	bob.picco@oracle.com, kirill.shutemov@linux.intel.com,
	aneesh.kumar@linux.vnet.ibm.com, aarcange@redhat.com,
	Arnd Bergmann <arnd@arndb.de>,
	sparclinux <sparclinux@vger.kernel.org>,
	rob.gardner@oracle.com, mhocko@suse.cz, chris.hyser@oracle.com,
	richard@nod.at, vbabka@suse.cz, koct9i@gmail.com,
	oleg@redhat.com, gthelen@google.com, jack@suse.cz,
	xiexiuqi@huawei.com, Vineet.Gupta1@synopsys.com,
	Andy Lutomirski <luto@kernel.org>,
	ebiederm@xmission.com, bsegall@google.com,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	dave@stgolabs.net, Alexey Dobriyan <adobriyan@gmail.com>,
	linux-doc@vger.kernel.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org, linux-arch@vger.kernel.org,
	linux-api@vger.kernel.org
Subject: Re: [PATCH v2] sparc64: Add support for Application Data Integrity (ADI)
Date: Thu, 3 Mar 2016 10:28:45 -0700	[thread overview]
Message-ID: <56D8744D.9020300@oracle.com> (raw)
Message-ID: <20160303172845.qXWuYYLZ5sTfWUHc28H_UhuUOhb5oOAqWtJUFal6gdU@z> (raw)
In-Reply-To: <CAGRGNgVyPUUUTV9_GAyE9S4FVPce4PBU-G+QXv3eNkosGj3eyg@mail.gmail.com>

On 03/02/2016 05:48 PM, Julian Calaby wrote:
> Hi Khalid,
>
> On Thu, Mar 3, 2016 at 11:25 AM, Khalid Aziz <khalid.aziz@oracle.com> wrote:
>> Thanks, Julian! I really appreciate your feedback.
>
> No problem!
>
>> My comments below.
>>
>> On 03/02/2016 04:08 PM, Julian Calaby wrote:
>>>
>>> Hi Khalid,
>>>
>>> On Thu, Mar 3, 2016 at 7:39 AM, Khalid Aziz <khalid.aziz@oracle.com>
>>> wrote:
>>>>
>>>>
>>>> Enable Application Data Integrity (ADI) support in the sparc
>>>> kernel for applications to use ADI in userspace. ADI is a new
>>>> feature supported on sparc M7 and newer processors. ADI is supported
>>>> for data fetches only and not instruction fetches. This patch adds
>>>> prctl commands to enable and disable ADI (TSTATE.mcde), return ADI
>>>> parameters to userspace, enable/disable MCD (Memory Corruption
>>>> Detection) on selected memory ranges and enable TTE.mcd in PTEs. It
>>>> also adds handlers for all traps related to MCD. ADI is not enabled
>>>> by default for any task and a task must explicitly enable ADI
>>>> (TSTATE.mcde), turn MCD on on a memory range and set version tag
>>>> for ADI to be effective for the task. This patch adds support for
>>>> ADI for hugepages only. Addresses passed into system calls must be
>>>> non-ADI tagged addresses.
>>>
>>>
>>> I can't comment on the actual functionality here, but I do see a few
>>> minor style issues in your patch.
>>>
>>> My big concern is that you're defining a lot of new code that is ADI
>>> specific but isn't inside a CONFIG_SPARC_ADI ifdef. (That said,
>>> handling ADI specific traps if ADI isn't enabled looks like a good
>>> idea to me, however most of the other stuff is just dead code if
>>> CONFIG_SPARC_ADI isn't enabled.)
>>
>>
>> Some of the code will be executed when CONFIG_SPARC_ADI is not enabled, for
>> instance init_adi() which will parse machine description to determine if
>> platform supports ADI. On the other hand, it might still make sense to
>> enclose this code in #ifdef. More on that below.
>>
>>
>>>
>>>> Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com>
>>>> ---
>>>> NOTES: ADI is a new feature added to M7 processor to allow hardware
>>>>           to catch rogue accesses to memory. An app can enable ADI on
>>>>           its data pages, set version tags on them and use versioned
>>>>           addresses (bits 63-60 of the address contain a version tag)
>>>>           to access the data pages. If a rogue app attempts to access
>>>>           ADI enabled data pages, its access is blocked and processor
>>>>           generates an exception. Enabling this functionality for all
>>>>           data pages of an app requires adding infrastructure to save
>>>>           version tags for any data pages that get swapped out and
>>>>           restoring those tags when pages are swapped back in. In this
>>>>           first implementation I am enabling ADI for hugepages only
>>>>           since these pages are locked in memory and hence avoid the
>>>>           issue of saving and restoring tags. Once this core functionality
>>>>           is stable, ADI for other memory pages can be enabled more
>>>>           easily.
>>>>
>>>> v2:
>>>>           - Fixed a build error
>>>>
>>>>    Documentation/prctl/sparc_adi.txt     |  62 ++++++++++
>>>>    Documentation/sparc/adi.txt           | 206
>>>> +++++++++++++++++++++++++++++++
>>>>    arch/sparc/Kconfig                    |  12 ++
>>>>    arch/sparc/include/asm/hugetlb.h      |  14 +++
>>>>    arch/sparc/include/asm/hypervisor.h   |   2 +
>>>>    arch/sparc/include/asm/mmu_64.h       |   1 +
>>>>    arch/sparc/include/asm/pgtable_64.h   |  15 +++
>>>>    arch/sparc/include/asm/processor_64.h |  19 +++
>>>>    arch/sparc/include/asm/ttable.h       |  10 ++
>>>>    arch/sparc/include/uapi/asm/asi.h     |   3 +
>>>>    arch/sparc/include/uapi/asm/pstate.h  |  10 ++
>>>>    arch/sparc/kernel/entry.h             |   3 +
>>>>    arch/sparc/kernel/head_64.S           |   1 +
>>>>    arch/sparc/kernel/mdesc.c             |  81 +++++++++++++
>>>>    arch/sparc/kernel/process_64.c        | 222
>>>> ++++++++++++++++++++++++++++++++++
>>>>    arch/sparc/kernel/sun4v_mcd.S         |  16 +++
>>>>    arch/sparc/kernel/traps_64.c          |  96 ++++++++++++++-
>>>>    arch/sparc/kernel/ttable_64.S         |   6 +-
>>>>    include/linux/mm.h                    |   2 +
>>>>    include/uapi/asm-generic/siginfo.h    |   5 +-
>>>>    include/uapi/linux/prctl.h            |  16 +++
>>>>    kernel/sys.c                          |  30 +++++
>>>>    22 files changed, 826 insertions(+), 6 deletions(-)
>>>>    create mode 100644 Documentation/prctl/sparc_adi.txt
>>>>    create mode 100644 Documentation/sparc/adi.txt
>>>>    create mode 100644 arch/sparc/kernel/sun4v_mcd.S
>>>
>>>
>>> I must admit that I'm slightly impressed that the documentation is
>>> over a quarter of the lines added. =)
>>>
>>>> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
>>>> index 56442d2..0aac0ae 100644
>>>> --- a/arch/sparc/Kconfig
>>>> +++ b/arch/sparc/Kconfig
>>>> @@ -80,6 +80,7 @@ config SPARC64
>>>>           select NO_BOOTMEM
>>>>           select HAVE_ARCH_AUDITSYSCALL
>>>>           select ARCH_SUPPORTS_ATOMIC_RMW
>>>> +       select SPARC_ADI
>>>
>>>
>>> This doesn't look right.
>>>
>>>>    config ARCH_DEFCONFIG
>>>>           string
>>>> @@ -314,6 +315,17 @@ if SPARC64
>>>>    source "kernel/power/Kconfig"
>>>>    endif
>>>>
>>>> +config SPARC_ADI
>>>> +       bool "Application Data Integrity support"
>>>> +       def_bool y if SPARC64
>>>
>>>
>>> def_bool is for config options without names (i.e. "this is a boolean
>>> value and it's default is...")
>>>
>>> So if you want people to be able to disable this option, then you
>>> should remove the select above and just have:
>>>
>>> bool "Application Data Integrity support"
>>> default y if SPARC64
>>>
>>> If you don't want people disabling it, then there's no point in having
>>> a separate Kconfig symbol.
>>>
>>
>> Ah, I see. I do not want people disabling it. I will make changes.
>
> Why don't you want people disabling it? I must acknowledge that it's
> not a lot of code, but I can see people wanting to build "minimal"
> kernels for processors without ADI or to run some specific thing that
> doesn't use ADI. Providing the kernel responds appropriately if
> there's an unexpected ADI fault I don't see why the code would be
> needed if it'll never be used.
>

Hi Julian,

My goal in making CONFIG_SPARC_ADI auto-selected was to not add yet 
another config option that end user has to understand and figure out 
what to do with, and make the kernel self-configuring where ADI simply 
becomes available if platform supports it. Kernel auto-detecting 
platform features is especially useful for distro kernels. I do see your 
point in being able to build a minimal kernel when building a custom 
kernel. Both options of making CONFIG_SPARC_ADI auto-selected or not, 
have pros and cons. I don't have a strong feeling about it one way or 
the other and can go either way.

Thanks,
Khalid


WARNING: multiple messages have this Message-ID (diff)
From: Khalid Aziz <khalid.aziz@oracle.com>
To: Julian Calaby <julian.calaby@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	corbet@lwn.net, Andrew Morton <akpm@linux-foundation.org>,
	dingel@linux.vnet.ibm.com, zhenzhang.zhang@huawei.com,
	bob.picco@oracle.com, kirill.shutemov@linux.intel.com,
	aneesh.kumar@linux.vnet.ibm.com, aarcange@redhat.com,
	Arnd Bergmann <arnd@arndb.de>,
	sparclinux <sparclinux@vger.kernel.org>,
	rob.gardner@oracle.com, mhocko@suse.cz, chris.hyser@oracle.com,
	richard@nod.at, vbabka@suse.cz, koct9i@gmail.com,
	oleg@redhat.com, gthelen@google.com, jack@suse.cz,
	xiexiuqi@huawei.com, Vineet.Gupta1@synopsys.com,
	Andy Lutomirski <luto@kernel.org>,
	ebiederm@xmission.com, bsegall@google.com,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	dave@stgolabs.net, Alexey Dobriyan <adobriyan@gmail.com>,
	linux-doc@vger.kernel.org"linux-kernel@vger.kernel.org" <linu>
Subject: Re: [PATCH v2] sparc64: Add support for Application Data Integrity (ADI)
Date: Thu, 03 Mar 2016 17:28:45 +0000	[thread overview]
Message-ID: <56D8744D.9020300@oracle.com> (raw)
In-Reply-To: <CAGRGNgVyPUUUTV9_GAyE9S4FVPce4PBU-G+QXv3eNkosGj3eyg@mail.gmail.com>

On 03/02/2016 05:48 PM, Julian Calaby wrote:
> Hi Khalid,
>
> On Thu, Mar 3, 2016 at 11:25 AM, Khalid Aziz <khalid.aziz@oracle.com> wrote:
>> Thanks, Julian! I really appreciate your feedback.
>
> No problem!
>
>> My comments below.
>>
>> On 03/02/2016 04:08 PM, Julian Calaby wrote:
>>>
>>> Hi Khalid,
>>>
>>> On Thu, Mar 3, 2016 at 7:39 AM, Khalid Aziz <khalid.aziz@oracle.com>
>>> wrote:
>>>>
>>>>
>>>> Enable Application Data Integrity (ADI) support in the sparc
>>>> kernel for applications to use ADI in userspace. ADI is a new
>>>> feature supported on sparc M7 and newer processors. ADI is supported
>>>> for data fetches only and not instruction fetches. This patch adds
>>>> prctl commands to enable and disable ADI (TSTATE.mcde), return ADI
>>>> parameters to userspace, enable/disable MCD (Memory Corruption
>>>> Detection) on selected memory ranges and enable TTE.mcd in PTEs. It
>>>> also adds handlers for all traps related to MCD. ADI is not enabled
>>>> by default for any task and a task must explicitly enable ADI
>>>> (TSTATE.mcde), turn MCD on on a memory range and set version tag
>>>> for ADI to be effective for the task. This patch adds support for
>>>> ADI for hugepages only. Addresses passed into system calls must be
>>>> non-ADI tagged addresses.
>>>
>>>
>>> I can't comment on the actual functionality here, but I do see a few
>>> minor style issues in your patch.
>>>
>>> My big concern is that you're defining a lot of new code that is ADI
>>> specific but isn't inside a CONFIG_SPARC_ADI ifdef. (That said,
>>> handling ADI specific traps if ADI isn't enabled looks like a good
>>> idea to me, however most of the other stuff is just dead code if
>>> CONFIG_SPARC_ADI isn't enabled.)
>>
>>
>> Some of the code will be executed when CONFIG_SPARC_ADI is not enabled, for
>> instance init_adi() which will parse machine description to determine if
>> platform supports ADI. On the other hand, it might still make sense to
>> enclose this code in #ifdef. More on that below.
>>
>>
>>>
>>>> Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com>
>>>> ---
>>>> NOTES: ADI is a new feature added to M7 processor to allow hardware
>>>>           to catch rogue accesses to memory. An app can enable ADI on
>>>>           its data pages, set version tags on them and use versioned
>>>>           addresses (bits 63-60 of the address contain a version tag)
>>>>           to access the data pages. If a rogue app attempts to access
>>>>           ADI enabled data pages, its access is blocked and processor
>>>>           generates an exception. Enabling this functionality for all
>>>>           data pages of an app requires adding infrastructure to save
>>>>           version tags for any data pages that get swapped out and
>>>>           restoring those tags when pages are swapped back in. In this
>>>>           first implementation I am enabling ADI for hugepages only
>>>>           since these pages are locked in memory and hence avoid the
>>>>           issue of saving and restoring tags. Once this core functionality
>>>>           is stable, ADI for other memory pages can be enabled more
>>>>           easily.
>>>>
>>>> v2:
>>>>           - Fixed a build error
>>>>
>>>>    Documentation/prctl/sparc_adi.txt     |  62 ++++++++++
>>>>    Documentation/sparc/adi.txt           | 206
>>>> +++++++++++++++++++++++++++++++
>>>>    arch/sparc/Kconfig                    |  12 ++
>>>>    arch/sparc/include/asm/hugetlb.h      |  14 +++
>>>>    arch/sparc/include/asm/hypervisor.h   |   2 +
>>>>    arch/sparc/include/asm/mmu_64.h       |   1 +
>>>>    arch/sparc/include/asm/pgtable_64.h   |  15 +++
>>>>    arch/sparc/include/asm/processor_64.h |  19 +++
>>>>    arch/sparc/include/asm/ttable.h       |  10 ++
>>>>    arch/sparc/include/uapi/asm/asi.h     |   3 +
>>>>    arch/sparc/include/uapi/asm/pstate.h  |  10 ++
>>>>    arch/sparc/kernel/entry.h             |   3 +
>>>>    arch/sparc/kernel/head_64.S           |   1 +
>>>>    arch/sparc/kernel/mdesc.c             |  81 +++++++++++++
>>>>    arch/sparc/kernel/process_64.c        | 222
>>>> ++++++++++++++++++++++++++++++++++
>>>>    arch/sparc/kernel/sun4v_mcd.S         |  16 +++
>>>>    arch/sparc/kernel/traps_64.c          |  96 ++++++++++++++-
>>>>    arch/sparc/kernel/ttable_64.S         |   6 +-
>>>>    include/linux/mm.h                    |   2 +
>>>>    include/uapi/asm-generic/siginfo.h    |   5 +-
>>>>    include/uapi/linux/prctl.h            |  16 +++
>>>>    kernel/sys.c                          |  30 +++++
>>>>    22 files changed, 826 insertions(+), 6 deletions(-)
>>>>    create mode 100644 Documentation/prctl/sparc_adi.txt
>>>>    create mode 100644 Documentation/sparc/adi.txt
>>>>    create mode 100644 arch/sparc/kernel/sun4v_mcd.S
>>>
>>>
>>> I must admit that I'm slightly impressed that the documentation is
>>> over a quarter of the lines added. =)
>>>
>>>> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
>>>> index 56442d2..0aac0ae 100644
>>>> --- a/arch/sparc/Kconfig
>>>> +++ b/arch/sparc/Kconfig
>>>> @@ -80,6 +80,7 @@ config SPARC64
>>>>           select NO_BOOTMEM
>>>>           select HAVE_ARCH_AUDITSYSCALL
>>>>           select ARCH_SUPPORTS_ATOMIC_RMW
>>>> +       select SPARC_ADI
>>>
>>>
>>> This doesn't look right.
>>>
>>>>    config ARCH_DEFCONFIG
>>>>           string
>>>> @@ -314,6 +315,17 @@ if SPARC64
>>>>    source "kernel/power/Kconfig"
>>>>    endif
>>>>
>>>> +config SPARC_ADI
>>>> +       bool "Application Data Integrity support"
>>>> +       def_bool y if SPARC64
>>>
>>>
>>> def_bool is for config options without names (i.e. "this is a boolean
>>> value and it's default is...")
>>>
>>> So if you want people to be able to disable this option, then you
>>> should remove the select above and just have:
>>>
>>> bool "Application Data Integrity support"
>>> default y if SPARC64
>>>
>>> If you don't want people disabling it, then there's no point in having
>>> a separate Kconfig symbol.
>>>
>>
>> Ah, I see. I do not want people disabling it. I will make changes.
>
> Why don't you want people disabling it? I must acknowledge that it's
> not a lot of code, but I can see people wanting to build "minimal"
> kernels for processors without ADI or to run some specific thing that
> doesn't use ADI. Providing the kernel responds appropriately if
> there's an unexpected ADI fault I don't see why the code would be
> needed if it'll never be used.
>

Hi Julian,

My goal in making CONFIG_SPARC_ADI auto-selected was to not add yet 
another config option that end user has to understand and figure out 
what to do with, and make the kernel self-configuring where ADI simply 
becomes available if platform supports it. Kernel auto-detecting 
platform features is especially useful for distro kernels. I do see your 
point in being able to build a minimal kernel when building a custom 
kernel. Both options of making CONFIG_SPARC_ADI auto-selected or not, 
have pros and cons. I don't have a strong feeling about it one way or 
the other and can go either way.

Thanks,
Khalid


WARNING: multiple messages have this Message-ID (diff)
From: Khalid Aziz <khalid.aziz@oracle.com>
To: Julian Calaby <julian.calaby@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	corbet@lwn.net, Andrew Morton <akpm@linux-foundation.org>,
	dingel@linux.vnet.ibm.com, zhenzhang.zhang@huawei.com,
	bob.picco@oracle.com, kirill.shutemov@linux.intel.com,
	aneesh.kumar@linux.vnet.ibm.com, aarcange@redhat.com,
	Arnd Bergmann <arnd@arndb.de>,
	sparclinux <sparclinux@vger.kernel.org>,
	rob.gardner@oracle.com, mhocko@suse.cz, chris.hyser@oracle.com,
	richard@nod.at, vbabka@suse.cz, koct9i@gmail.com,
	oleg@redhat.com, gthelen@google.com, jack@suse.cz,
	xiexiuqi@huawei.com, Vineet.Gupta1@synopsys.com,
	Andy Lutomirski <luto@kernel.org>,
	ebiederm@xmission.com, bsegall@google.com,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	dave@stgolabs.net, Alexey Dobriyan <adobriyan@gmail.com>,
	linux-doc@vger.kernel.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org, linux-arch@vger.kernel.org,
	linux-api@vger.kernel.org
Subject: Re: [PATCH v2] sparc64: Add support for Application Data Integrity (ADI)
Date: Thu, 3 Mar 2016 10:28:45 -0700	[thread overview]
Message-ID: <56D8744D.9020300@oracle.com> (raw)
In-Reply-To: <CAGRGNgVyPUUUTV9_GAyE9S4FVPce4PBU-G+QXv3eNkosGj3eyg@mail.gmail.com>

On 03/02/2016 05:48 PM, Julian Calaby wrote:
> Hi Khalid,
>
> On Thu, Mar 3, 2016 at 11:25 AM, Khalid Aziz <khalid.aziz@oracle.com> wrote:
>> Thanks, Julian! I really appreciate your feedback.
>
> No problem!
>
>> My comments below.
>>
>> On 03/02/2016 04:08 PM, Julian Calaby wrote:
>>>
>>> Hi Khalid,
>>>
>>> On Thu, Mar 3, 2016 at 7:39 AM, Khalid Aziz <khalid.aziz@oracle.com>
>>> wrote:
>>>>
>>>>
>>>> Enable Application Data Integrity (ADI) support in the sparc
>>>> kernel for applications to use ADI in userspace. ADI is a new
>>>> feature supported on sparc M7 and newer processors. ADI is supported
>>>> for data fetches only and not instruction fetches. This patch adds
>>>> prctl commands to enable and disable ADI (TSTATE.mcde), return ADI
>>>> parameters to userspace, enable/disable MCD (Memory Corruption
>>>> Detection) on selected memory ranges and enable TTE.mcd in PTEs. It
>>>> also adds handlers for all traps related to MCD. ADI is not enabled
>>>> by default for any task and a task must explicitly enable ADI
>>>> (TSTATE.mcde), turn MCD on on a memory range and set version tag
>>>> for ADI to be effective for the task. This patch adds support for
>>>> ADI for hugepages only. Addresses passed into system calls must be
>>>> non-ADI tagged addresses.
>>>
>>>
>>> I can't comment on the actual functionality here, but I do see a few
>>> minor style issues in your patch.
>>>
>>> My big concern is that you're defining a lot of new code that is ADI
>>> specific but isn't inside a CONFIG_SPARC_ADI ifdef. (That said,
>>> handling ADI specific traps if ADI isn't enabled looks like a good
>>> idea to me, however most of the other stuff is just dead code if
>>> CONFIG_SPARC_ADI isn't enabled.)
>>
>>
>> Some of the code will be executed when CONFIG_SPARC_ADI is not enabled, for
>> instance init_adi() which will parse machine description to determine if
>> platform supports ADI. On the other hand, it might still make sense to
>> enclose this code in #ifdef. More on that below.
>>
>>
>>>
>>>> Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com>
>>>> ---
>>>> NOTES: ADI is a new feature added to M7 processor to allow hardware
>>>>           to catch rogue accesses to memory. An app can enable ADI on
>>>>           its data pages, set version tags on them and use versioned
>>>>           addresses (bits 63-60 of the address contain a version tag)
>>>>           to access the data pages. If a rogue app attempts to access
>>>>           ADI enabled data pages, its access is blocked and processor
>>>>           generates an exception. Enabling this functionality for all
>>>>           data pages of an app requires adding infrastructure to save
>>>>           version tags for any data pages that get swapped out and
>>>>           restoring those tags when pages are swapped back in. In this
>>>>           first implementation I am enabling ADI for hugepages only
>>>>           since these pages are locked in memory and hence avoid the
>>>>           issue of saving and restoring tags. Once this core functionality
>>>>           is stable, ADI for other memory pages can be enabled more
>>>>           easily.
>>>>
>>>> v2:
>>>>           - Fixed a build error
>>>>
>>>>    Documentation/prctl/sparc_adi.txt     |  62 ++++++++++
>>>>    Documentation/sparc/adi.txt           | 206
>>>> +++++++++++++++++++++++++++++++
>>>>    arch/sparc/Kconfig                    |  12 ++
>>>>    arch/sparc/include/asm/hugetlb.h      |  14 +++
>>>>    arch/sparc/include/asm/hypervisor.h   |   2 +
>>>>    arch/sparc/include/asm/mmu_64.h       |   1 +
>>>>    arch/sparc/include/asm/pgtable_64.h   |  15 +++
>>>>    arch/sparc/include/asm/processor_64.h |  19 +++
>>>>    arch/sparc/include/asm/ttable.h       |  10 ++
>>>>    arch/sparc/include/uapi/asm/asi.h     |   3 +
>>>>    arch/sparc/include/uapi/asm/pstate.h  |  10 ++
>>>>    arch/sparc/kernel/entry.h             |   3 +
>>>>    arch/sparc/kernel/head_64.S           |   1 +
>>>>    arch/sparc/kernel/mdesc.c             |  81 +++++++++++++
>>>>    arch/sparc/kernel/process_64.c        | 222
>>>> ++++++++++++++++++++++++++++++++++
>>>>    arch/sparc/kernel/sun4v_mcd.S         |  16 +++
>>>>    arch/sparc/kernel/traps_64.c          |  96 ++++++++++++++-
>>>>    arch/sparc/kernel/ttable_64.S         |   6 +-
>>>>    include/linux/mm.h                    |   2 +
>>>>    include/uapi/asm-generic/siginfo.h    |   5 +-
>>>>    include/uapi/linux/prctl.h            |  16 +++
>>>>    kernel/sys.c                          |  30 +++++
>>>>    22 files changed, 826 insertions(+), 6 deletions(-)
>>>>    create mode 100644 Documentation/prctl/sparc_adi.txt
>>>>    create mode 100644 Documentation/sparc/adi.txt
>>>>    create mode 100644 arch/sparc/kernel/sun4v_mcd.S
>>>
>>>
>>> I must admit that I'm slightly impressed that the documentation is
>>> over a quarter of the lines added. =)
>>>
>>>> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
>>>> index 56442d2..0aac0ae 100644
>>>> --- a/arch/sparc/Kconfig
>>>> +++ b/arch/sparc/Kconfig
>>>> @@ -80,6 +80,7 @@ config SPARC64
>>>>           select NO_BOOTMEM
>>>>           select HAVE_ARCH_AUDITSYSCALL
>>>>           select ARCH_SUPPORTS_ATOMIC_RMW
>>>> +       select SPARC_ADI
>>>
>>>
>>> This doesn't look right.
>>>
>>>>    config ARCH_DEFCONFIG
>>>>           string
>>>> @@ -314,6 +315,17 @@ if SPARC64
>>>>    source "kernel/power/Kconfig"
>>>>    endif
>>>>
>>>> +config SPARC_ADI
>>>> +       bool "Application Data Integrity support"
>>>> +       def_bool y if SPARC64
>>>
>>>
>>> def_bool is for config options without names (i.e. "this is a boolean
>>> value and it's default is...")
>>>
>>> So if you want people to be able to disable this option, then you
>>> should remove the select above and just have:
>>>
>>> bool "Application Data Integrity support"
>>> default y if SPARC64
>>>
>>> If you don't want people disabling it, then there's no point in having
>>> a separate Kconfig symbol.
>>>
>>
>> Ah, I see. I do not want people disabling it. I will make changes.
>
> Why don't you want people disabling it? I must acknowledge that it's
> not a lot of code, but I can see people wanting to build "minimal"
> kernels for processors without ADI or to run some specific thing that
> doesn't use ADI. Providing the kernel responds appropriately if
> there's an unexpected ADI fault I don't see why the code would be
> needed if it'll never be used.
>

Hi Julian,

My goal in making CONFIG_SPARC_ADI auto-selected was to not add yet 
another config option that end user has to understand and figure out 
what to do with, and make the kernel self-configuring where ADI simply 
becomes available if platform supports it. Kernel auto-detecting 
platform features is especially useful for distro kernels. I do see your 
point in being able to build a minimal kernel when building a custom 
kernel. Both options of making CONFIG_SPARC_ADI auto-selected or not, 
have pros and cons. I don't have a strong feeling about it one way or 
the other and can go either way.

Thanks,
Khalid

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2016-03-03 17:28 UTC|newest]

Thread overview: 212+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-02 20:39 [PATCH v2] sparc64: Add support for Application Data Integrity (ADI) Khalid Aziz
2016-03-02 20:39 ` Khalid Aziz
2016-03-02 20:39 ` Khalid Aziz
2016-03-02 23:08 ` Julian Calaby
2016-03-02 23:08   ` Julian Calaby
2016-03-02 23:08   ` Julian Calaby
2016-03-02 23:08   ` Julian Calaby
2016-03-03  0:25   ` Khalid Aziz
2016-03-03  0:25     ` Khalid Aziz
2016-03-03  0:25     ` Khalid Aziz
2016-03-03  0:25     ` Khalid Aziz
2016-03-03  0:48     ` Julian Calaby
2016-03-03  0:48       ` Julian Calaby
2016-03-03  0:48       ` Julian Calaby
2016-03-03  0:48       ` Julian Calaby
2016-03-03 17:28       ` Khalid Aziz [this message]
2016-03-03 17:28         ` Khalid Aziz
2016-03-03 17:28         ` Khalid Aziz
2016-03-03 17:28         ` Khalid Aziz
2016-03-06  4:07 ` David Miller
2016-03-06  4:07   ` David Miller
2016-03-06  4:07   ` David Miller
2016-03-07 15:07   ` Khalid Aziz
2016-03-07 15:07     ` Khalid Aziz
2016-03-07 15:07     ` Khalid Aziz
2016-03-07 15:30     ` Rob Gardner
2016-03-07 15:30       ` Rob Gardner
2016-03-07 15:30       ` Rob Gardner
2016-03-07 15:43       ` Andy Lutomirski
2016-03-07 15:43         ` Andy Lutomirski
2016-03-07 15:43         ` Andy Lutomirski
2016-03-07 15:43         ` Andy Lutomirski
2016-03-07 16:06         ` Khalid Aziz
2016-03-07 16:06           ` Khalid Aziz
2016-03-07 16:06           ` Khalid Aziz
2016-03-07 16:06           ` Khalid Aziz
2016-03-07 17:46           ` Dave Hansen
2016-03-07 17:46             ` Dave Hansen
2016-03-07 17:46             ` Dave Hansen
2016-03-07 17:46             ` Dave Hansen
2016-03-07 17:53             ` Andy Lutomirski
2016-03-07 17:53               ` Andy Lutomirski
2016-03-07 17:53               ` Andy Lutomirski
2016-03-07 17:53               ` Andy Lutomirski
2016-03-07 18:12               ` Dave Hansen
2016-03-07 18:12                 ` Dave Hansen
2016-03-07 18:12                 ` Dave Hansen
2016-03-07 18:12                 ` Dave Hansen
2016-03-07 18:39                 ` Khalid Aziz
2016-03-07 18:39                   ` Khalid Aziz
2016-03-07 18:39                   ` Khalid Aziz
2016-03-07 18:39                   ` Khalid Aziz
2016-03-07 18:53                   ` Andy Lutomirski
2016-03-07 18:53                     ` Andy Lutomirski
2016-03-07 18:53                     ` Andy Lutomirski
2016-03-07 18:53                     ` Andy Lutomirski
     [not found]                     ` <CALCETrVNM7ZcN7WnmLRMDqGrcYXn9xYWJfjMVwFLdiQS63-TcA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-07 19:22                       ` David Miller
2016-03-07 19:22                         ` David Miller
2016-03-07 19:22                         ` David Miller
2016-03-07 19:22                         ` David Miller
2016-03-07 19:46                         ` Khalid Aziz
2016-03-07 19:46                           ` Khalid Aziz
2016-03-07 19:46                           ` Khalid Aziz
2016-03-07 22:40                           ` Dave Hansen
2016-03-07 22:40                             ` Dave Hansen
2016-03-07 22:40                             ` Dave Hansen
2016-03-08  1:31                   ` Rob Gardner
2016-03-08  1:31                     ` Rob Gardner
2016-03-08  1:31                     ` Rob Gardner
2016-03-08  1:31                     ` Rob Gardner
2016-03-07 21:06             ` Khalid Aziz
2016-03-07 21:06               ` Khalid Aziz
2016-03-07 21:06               ` Khalid Aziz
2016-03-07 21:06               ` Khalid Aziz
2016-03-08 19:57               ` David Miller
2016-03-08 19:57                 ` David Miller
2016-03-08 19:57                 ` David Miller
2016-03-08 20:16                 ` Khalid Aziz
2016-03-08 20:16                   ` Khalid Aziz
2016-03-08 20:16                   ` Khalid Aziz
2016-03-08 20:27                   ` David Miller
2016-03-08 20:27                     ` David Miller
2016-03-08 20:27                     ` David Miller
2016-03-08 20:59                     ` Khalid Aziz
2016-03-08 20:59                       ` Khalid Aziz
2016-03-08 20:59                       ` Khalid Aziz
2016-03-07 15:45       ` Khalid Aziz
2016-03-07 15:45         ` Khalid Aziz
2016-03-07 15:45         ` Khalid Aziz
2016-03-07 16:45     ` David Miller
2016-03-07 16:45       ` David Miller
2016-03-07 16:45       ` David Miller
2016-03-07 17:51       ` Khalid Aziz
2016-03-07 17:51         ` Khalid Aziz
2016-03-07 17:51         ` Khalid Aziz
     [not found]     ` <56DD9949.1000106-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-03-07 16:56       ` David Miller
2016-03-07 16:56         ` David Miller
2016-03-07 16:56         ` David Miller
2016-03-07 16:56         ` David Miller
2016-03-07 18:04         ` Khalid Aziz
2016-03-07 18:04           ` Khalid Aziz
2016-03-07 18:04           ` Khalid Aziz
     [not found]           ` <56DDC2B6.6020009-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-03-07 18:08             ` Andy Lutomirski
2016-03-07 18:08               ` Andy Lutomirski
2016-03-07 18:08               ` Andy Lutomirski
2016-03-07 18:08               ` Andy Lutomirski
2016-03-07 18:22               ` Khalid Aziz
2016-03-07 18:22                 ` Khalid Aziz
2016-03-07 18:22                 ` Khalid Aziz
2016-03-07 18:22                 ` Khalid Aziz
2016-03-07 18:49                 ` Andy Lutomirski
2016-03-07 18:49                   ` Andy Lutomirski
2016-03-07 18:49                   ` Andy Lutomirski
2016-03-07 18:49                   ` Andy Lutomirski
2016-03-07 19:19                   ` David Miller
2016-03-07 19:19                     ` David Miller
2016-03-07 19:19                     ` David Miller
2016-03-07 19:44                   ` Khalid Aziz
2016-03-07 19:44                     ` Khalid Aziz
2016-03-07 19:44                     ` Khalid Aziz
2016-03-07 19:44                     ` Khalid Aziz
2016-03-07 19:54                     ` Andy Lutomirski
2016-03-07 19:54                       ` Andy Lutomirski
2016-03-07 19:54                       ` Andy Lutomirski
2016-03-07 19:54                       ` Andy Lutomirski
2016-03-07 20:41                       ` Khalid Aziz
2016-03-07 20:41                         ` Khalid Aziz
2016-03-07 20:41                         ` Khalid Aziz
2016-03-07 20:41                         ` Khalid Aziz
     [not found]                         ` <56DDE783.8090009-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-03-07 20:58                           ` David Miller
2016-03-07 20:58                             ` David Miller
2016-03-07 20:58                             ` David Miller
2016-03-07 20:58                             ` David Miller
2016-03-07 21:02                             ` Andy Lutomirski
2016-03-07 21:02                               ` Andy Lutomirski
2016-03-07 21:02                               ` Andy Lutomirski
2016-03-07 21:02                               ` Andy Lutomirski
2016-03-07 21:09                             ` Khalid Aziz
2016-03-07 21:09                               ` Khalid Aziz
2016-03-07 21:09                               ` Khalid Aziz
2016-03-07 23:34                             ` James Morris
2016-03-07 23:34                               ` James Morris
2016-03-07 23:34                               ` James Morris
2016-03-07 23:48                       ` James Morris
2016-03-07 23:48                         ` James Morris
2016-03-07 23:48                         ` James Morris
2016-03-07 23:48                         ` James Morris
2016-03-08  9:33                         ` James Morris
2016-03-08  9:33                           ` James Morris
2016-03-08  9:33                           ` James Morris
2016-03-08  9:33                           ` James Morris
2016-03-07 18:09           ` Rob Gardner
2016-03-07 18:09             ` Rob Gardner
2016-03-07 18:09             ` Rob Gardner
2016-03-07 18:24             ` Khalid Aziz
2016-03-07 18:24               ` Khalid Aziz
2016-03-07 18:24               ` Khalid Aziz
2016-03-07 19:16               ` David Miller
2016-03-07 19:16                 ` David Miller
2016-03-07 19:16                 ` David Miller
2016-03-07 21:33                 ` Khalid Aziz
2016-03-07 21:33                   ` Khalid Aziz
2016-03-07 21:33                   ` Khalid Aziz
2016-03-07 21:38                   ` David Miller
2016-03-07 21:38                     ` David Miller
2016-03-07 21:38                     ` David Miller
2016-03-07 23:13                     ` Rob Gardner
2016-03-07 23:13                       ` Rob Gardner
2016-03-07 23:13                       ` Rob Gardner
2016-03-08  4:13                       ` David Miller
2016-03-08  4:13                         ` David Miller
2016-03-08  4:13                         ` David Miller
2016-03-07 23:12                   ` Rob Gardner
2016-03-07 23:12                     ` Rob Gardner
2016-03-07 23:12                     ` Rob Gardner
2016-03-07 23:27                     ` Khalid Aziz
2016-03-07 23:27                       ` Khalid Aziz
2016-03-07 23:27                       ` Khalid Aziz
2016-03-08  0:21                 ` Khalid Aziz
2016-03-08  0:21                   ` Khalid Aziz
2016-03-08  0:21                   ` Khalid Aziz
2016-03-08  4:24                   ` David Miller
2016-03-08  4:24                     ` David Miller
2016-03-08  4:24                     ` David Miller
2016-03-07 23:32               ` Rob Gardner
2016-03-07 23:32                 ` Rob Gardner
2016-03-07 23:32                 ` Rob Gardner
2016-03-07 19:09           ` David Miller
2016-03-07 19:09             ` David Miller
2016-03-07 19:09             ` David Miller
2016-03-07 21:27             ` Khalid Aziz
2016-03-07 21:27               ` Khalid Aziz
2016-03-07 21:27               ` Khalid Aziz
     [not found]               ` <56DDF22D.9090102-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-03-07 21:34                 ` David Miller
2016-03-07 21:34                   ` David Miller
2016-03-07 21:34                   ` David Miller
2016-03-07 21:34                   ` David Miller
2016-03-07 22:30                   ` Khalid Aziz
2016-03-07 22:30                     ` Khalid Aziz
2016-03-07 22:30                     ` Khalid Aziz
2016-03-07 17:32 ` Dave Hansen
2016-03-07 17:32   ` Dave Hansen
2016-03-07 17:32   ` Dave Hansen
2016-03-07 17:35 ` Dave Hansen
2016-03-07 17:35   ` Dave Hansen
2016-03-07 17:35   ` Dave Hansen
2016-03-07 18:15   ` Khalid Aziz
2016-03-07 18:15     ` Khalid Aziz
2016-03-07 18:15     ` Khalid Aziz
2016-03-07 19:06   ` David Miller
2016-03-07 19:06     ` David Miller
2016-03-07 19:06     ` David Miller

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=56D8744D.9020300@oracle.com \
    --to=khalid.aziz@oracle.com \
    --cc=Vineet.Gupta1@synopsys.com \
    --cc=aarcange@redhat.com \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=arnd@arndb.de \
    --cc=bob.picco@oracle.com \
    --cc=bsegall@google.com \
    --cc=chris.hyser@oracle.com \
    --cc=corbet@lwn.net \
    --cc=dave@stgolabs.net \
    --cc=davem@davemloft.net \
    --cc=dingel@linux.vnet.ibm.com \
    --cc=ebiederm@xmission.com \
    --cc=geert@linux-m68k.org \
    --cc=gthelen@google.com \
    --cc=jack@suse.cz \
    --cc=julian.calaby@gmail.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=koct9i@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mhocko@suse.cz \
    --cc=oleg@redhat.com \
    --cc=richard@nod.at \
    --cc=rob.gardner@oracle.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=vbabka@suse.cz \
    --cc=xiexiuqi@huawei.com \
    --cc=zhenzhang.zhang@huawei.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.