All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anshuman Khandual <khandual@linux.vnet.ibm.com>
To: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Cc: akpm@linux-foundation.org, avagin@openvz.org, davej@redhat.com,
	davem@davemloft.net, dhowells@redhat.com,
	Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>,
	james.hogan@imgtec.com, kirjanov@gmail.com,
	linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
	Michael Neuling <mikey@neuling.org>,
	oleg@redhat.com, palves@redhat.com, Paul.Clothier@imgtec.com,
	peterz@infradead.org, sam.bobroff@au1.ibm.com,
	shuahkh@osg.samsung.com, sukadev@linux.vnet.ibm.com,
	tglx@linutronix.de
Subject: Re: [V6,1/9] elf: Add new powerpc specifc core note sections
Date: Mon, 13 Apr 2015 14:18:57 +0530	[thread overview]
Message-ID: <552B82F9.3080108@linux.vnet.ibm.com> (raw)
In-Reply-To: <OFCDE0430E.A5CD2FAF-ONC1257E23.003813C4-C1257E23.0039F950@de.ibm.com>

On 04/10/2015 04:03 PM, Ulrich Weigand wrote:
> Anshuman Khandual <khandual@linux.vnet.ibm.com> wrote on 10.04.2015
> 11:10:35:
> 
>> I had posted a newer version [V7] of this patch series couple of months
> back
>> which got ignored while the discussion continued in this version.
>>
>> V7: https://lkml.org/lkml/2015/1/14/19
> 
> Ah, with all the back-and-forth on the checkpointed state, I never looked
> at this.  Unfortunately, there's still a number of issues with this, I
> think:
> 
> - You provide checkpointed FPR and VMX registers, but there doesn't seem
>   to be any way to get at the checkpointed *VSX* registers (i.e. the part
>   that is neither covered by FPR or VMX, corresponding to NT_PPC_VSX).

Will change vsr_get, vsr_set functions as we have done for fpr_get and fpr_set
functions. Also will add one more ELF core note NT_PPC_TM_CVSX to fetch the
check pointed state of VSX register while inside the transaction.

> 
> - We may have had this discussion in the past, but I still do not like the
>   notion of a "misc" register set, in particular since the three registers
>   in it are available at different architecture levels and categories.

Misc category as always stands for registers which can not be easily classified
into any meaningful categories.

> 
>   I would much prefer three separate regsets (e.g. NT_PPC_DSCR, NT_PPC_PPR,
>   and NT_PPC_TAR), each of which is available and valid if and only if the
>   current processor actually has the register in question.

Thats like adding one ELF core note for every single register because we cannot
put them in any category. Then as Michael Ellerman had pointed out to include
a lot more registers in this MISC category (which we are not doing right now
in the interest of having minimum support available before we look at the full
possible list of MISC registers), we should add one ELF core note section for
each of those individual registers ? I am not sure.

> 
>   If we do have a single regset, at the very least a "get" operation should
>   set registers unvailable on the machine to a defined state (zero?)
>   instead of simply leaving memory uninitialized.

Yeah sure, we can do that.

> 
> - Similarly, the NT_PPC_TM_SPR regset as currently defined mixes and
> matches
>   registers with different "lifetimes".  The transactional memory registers
>   (TFHAR, TEXASR, TFIAR) are available *always* on machines that support
>   transactions.  But the other registers in that regset are checkpointed
>   versions that are only available/valid within a transaction.  I think a
>   better way to faithfully represent this would be to have the
> NT_PPC_TM_SPR
>   regset only contain the transcational memory registers, and use separate
>   regsets for the checkpointed registers -- those should parallel the non-
>   checkpointed register regset.

Right now, we support NT_PPC_TM_SPR only inside the transaction, so we dont
have the problem with different "lifetimes" registers accessed together. But
yes, I get your point.

> 
>   For example, if we have NT_PPC_DSCR, there should be a NT_PPC_CDSCR for
>   the checkpointed version etc.  (If we do stay with MISC, there should
> then
>   be a CMISC).

But then NT_PPC_MISC and NT_PPC_CMISC can contain different set of registers.
NT_PPC_CMISC will contain the orig_msr for now which the other elf core note
does not have and NT_PPC_MISC will grow to have lot more registers in the
future leaving behind NT_PPC_CMISC as it is. Need to take care of these.

> 
> - Particularly confusing to me is the "checkpointed original MSR" which
>   currently also resides in NT_PPC_TM_SPR.  What exactly is this?  How
>   does that differ from the MSR slot in the NT_PPC_TM_CGPR regset?

I believed it stores the check pointed MSR value which was in the register
before the transaction started. But then how it is different from the
ckpt_regs.msr, I am not sure. Mikey or Michael should be able to clarify
more on this. I can see "orig_msr" getting used in many places to hold the
check pointed value of MSR.

> 
>   I may be misreading kernel code, but it seems the kernel does not
> actually
>   use the ckpt_regs.msr slot at all, and therefore the corresponding slot
> of
>   the NT_PPC_TM_CGPR regset is likewise undefined/unused.  Would it not be
>   more consistent to use that slot to pass the checkpointed MSR?

Hmm. Its a valid point. Would like to get some more clarity on this from
Mikey whether that slot can be used for check pointed MSR value or not.
Then why did we have these two slots to hold the same check pointed MSR
value in the first place at all. Getting confused a bit.

> 
>   In any case, it seems the ptrace set-register case currently allows user
>   space to restore *any* arbitrary value into the checkpointed MSR, which
>   would presumably get restored into the real MSR at some point, unless I'm
>   missing something here.  Do we not need a check that only safe bits are
>   modified, just like with ptrace access to the real MSR?

Where and which safe bits do we check before writing any value into the MSR
register from ptrace interface ? May be I am missing something here.


WARNING: multiple messages have this Message-ID (diff)
From: Anshuman Khandual <khandual@linux.vnet.ibm.com>
To: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Cc: shuahkh@osg.samsung.com, Michael Neuling <mikey@neuling.org>,
	james.hogan@imgtec.com, avagin@openvz.org,
	Paul.Clothier@imgtec.com, peterz@infradead.org,
	palves@redhat.com, linux-kernel@vger.kernel.org,
	davem@davemloft.net, dhowells@redhat.com,
	linuxppc-dev@ozlabs.org, kirjanov@gmail.com, tglx@linutronix.de,
	oleg@redhat.com, davej@redhat.com, akpm@linux-foundation.org,
	sukadev@linux.vnet.ibm.com,
	Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>,
	sam.bobroff@au1.ibm.com
Subject: Re: [V6,1/9] elf: Add new powerpc specifc core note sections
Date: Mon, 13 Apr 2015 14:18:57 +0530	[thread overview]
Message-ID: <552B82F9.3080108@linux.vnet.ibm.com> (raw)
In-Reply-To: <OFCDE0430E.A5CD2FAF-ONC1257E23.003813C4-C1257E23.0039F950@de.ibm.com>

On 04/10/2015 04:03 PM, Ulrich Weigand wrote:
> Anshuman Khandual <khandual@linux.vnet.ibm.com> wrote on 10.04.2015
> 11:10:35:
> 
>> I had posted a newer version [V7] of this patch series couple of months
> back
>> which got ignored while the discussion continued in this version.
>>
>> V7: https://lkml.org/lkml/2015/1/14/19
> 
> Ah, with all the back-and-forth on the checkpointed state, I never looked
> at this.  Unfortunately, there's still a number of issues with this, I
> think:
> 
> - You provide checkpointed FPR and VMX registers, but there doesn't seem
>   to be any way to get at the checkpointed *VSX* registers (i.e. the part
>   that is neither covered by FPR or VMX, corresponding to NT_PPC_VSX).

Will change vsr_get, vsr_set functions as we have done for fpr_get and fpr_set
functions. Also will add one more ELF core note NT_PPC_TM_CVSX to fetch the
check pointed state of VSX register while inside the transaction.

> 
> - We may have had this discussion in the past, but I still do not like the
>   notion of a "misc" register set, in particular since the three registers
>   in it are available at different architecture levels and categories.

Misc category as always stands for registers which can not be easily classified
into any meaningful categories.

> 
>   I would much prefer three separate regsets (e.g. NT_PPC_DSCR, NT_PPC_PPR,
>   and NT_PPC_TAR), each of which is available and valid if and only if the
>   current processor actually has the register in question.

Thats like adding one ELF core note for every single register because we cannot
put them in any category. Then as Michael Ellerman had pointed out to include
a lot more registers in this MISC category (which we are not doing right now
in the interest of having minimum support available before we look at the full
possible list of MISC registers), we should add one ELF core note section for
each of those individual registers ? I am not sure.

> 
>   If we do have a single regset, at the very least a "get" operation should
>   set registers unvailable on the machine to a defined state (zero?)
>   instead of simply leaving memory uninitialized.

Yeah sure, we can do that.

> 
> - Similarly, the NT_PPC_TM_SPR regset as currently defined mixes and
> matches
>   registers with different "lifetimes".  The transactional memory registers
>   (TFHAR, TEXASR, TFIAR) are available *always* on machines that support
>   transactions.  But the other registers in that regset are checkpointed
>   versions that are only available/valid within a transaction.  I think a
>   better way to faithfully represent this would be to have the
> NT_PPC_TM_SPR
>   regset only contain the transcational memory registers, and use separate
>   regsets for the checkpointed registers -- those should parallel the non-
>   checkpointed register regset.

Right now, we support NT_PPC_TM_SPR only inside the transaction, so we dont
have the problem with different "lifetimes" registers accessed together. But
yes, I get your point.

> 
>   For example, if we have NT_PPC_DSCR, there should be a NT_PPC_CDSCR for
>   the checkpointed version etc.  (If we do stay with MISC, there should
> then
>   be a CMISC).

But then NT_PPC_MISC and NT_PPC_CMISC can contain different set of registers.
NT_PPC_CMISC will contain the orig_msr for now which the other elf core note
does not have and NT_PPC_MISC will grow to have lot more registers in the
future leaving behind NT_PPC_CMISC as it is. Need to take care of these.

> 
> - Particularly confusing to me is the "checkpointed original MSR" which
>   currently also resides in NT_PPC_TM_SPR.  What exactly is this?  How
>   does that differ from the MSR slot in the NT_PPC_TM_CGPR regset?

I believed it stores the check pointed MSR value which was in the register
before the transaction started. But then how it is different from the
ckpt_regs.msr, I am not sure. Mikey or Michael should be able to clarify
more on this. I can see "orig_msr" getting used in many places to hold the
check pointed value of MSR.

> 
>   I may be misreading kernel code, but it seems the kernel does not
> actually
>   use the ckpt_regs.msr slot at all, and therefore the corresponding slot
> of
>   the NT_PPC_TM_CGPR regset is likewise undefined/unused.  Would it not be
>   more consistent to use that slot to pass the checkpointed MSR?

Hmm. Its a valid point. Would like to get some more clarity on this from
Mikey whether that slot can be used for check pointed MSR value or not.
Then why did we have these two slots to hold the same check pointed MSR
value in the first place at all. Getting confused a bit.

> 
>   In any case, it seems the ptrace set-register case currently allows user
>   space to restore *any* arbitrary value into the checkpointed MSR, which
>   would presumably get restored into the real MSR at some point, unless I'm
>   missing something here.  Do we not need a check that only safe bits are
>   modified, just like with ptrace access to the real MSR?

Where and which safe bits do we check before writing any value into the MSR
register from ptrace interface ? May be I am missing something here.

  reply	other threads:[~2015-04-13  8:49 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-02  7:56 [PATCH V6 0/9] Add new powerpc specific ELF core notes Anshuman Khandual
2014-12-02  7:56 ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 1/9] elf: Add new powerpc specifc core note sections Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-03  5:22   ` [V6,1/9] " Michael Ellerman
2014-12-03  5:22     ` Michael Ellerman
2014-12-03  6:48     ` Anshuman Khandual
2014-12-03  6:48       ` Anshuman Khandual
2014-12-08 10:08       ` Anshuman Khandual
2014-12-08 10:08         ` Anshuman Khandual
2014-12-19 19:28         ` Edjunior Barbosa Machado
2014-12-19 19:28           ` Edjunior Barbosa Machado
2015-01-01  8:08           ` Anshuman Khandual
2015-01-01  8:08             ` Anshuman Khandual
2015-01-14  4:44             ` Anshuman Khandual
2015-01-14  4:44               ` Anshuman Khandual
2015-01-21 23:39             ` Michael Neuling
2015-01-21 23:39               ` Michael Neuling
2015-01-22 15:55               ` Ulrich Weigand
2015-01-22 15:55                 ` Ulrich Weigand
2015-01-22 21:44                 ` Michael Neuling
2015-01-22 21:44                   ` Michael Neuling
2015-01-28  4:28                   ` Michael Neuling
2015-01-28  4:28                     ` Michael Neuling
2015-02-06 14:47                     ` Ulrich Weigand
2015-02-06 14:47                       ` Ulrich Weigand
2015-02-23  4:51                       ` Michael Neuling
2015-02-23  4:51                         ` Michael Neuling
2015-03-18 12:53                         ` Ulrich Weigand
2015-03-18 12:53                           ` Ulrich Weigand
2015-03-18 22:45                           ` Michael Neuling
2015-03-18 22:45                             ` Michael Neuling
2015-03-18 22:50                             ` Michael Neuling
2015-03-18 22:50                               ` Michael Neuling
2015-03-23 10:34                               ` Anshuman Khandual
2015-03-23 10:34                                 ` Anshuman Khandual
2015-04-08 17:50                                 ` Ulrich Weigand
2015-04-08 17:50                                   ` Ulrich Weigand
2015-04-08 23:11                                   ` Michael Neuling
2015-04-08 23:11                                     ` Michael Neuling
2015-04-09 12:50                                     ` Anshuman Khandual
2015-04-09 12:50                                       ` Anshuman Khandual
2015-04-10  3:03                                       ` Michael Neuling
2015-04-10  3:03                                         ` Michael Neuling
2015-04-10  9:10                                         ` Anshuman Khandual
2015-04-10  9:10                                           ` Anshuman Khandual
2015-04-10 10:33                                           ` Ulrich Weigand
2015-04-10 10:33                                             ` Ulrich Weigand
2015-04-13  8:48                                             ` Anshuman Khandual [this message]
2015-04-13  8:48                                               ` Anshuman Khandual
2015-04-20  6:42                                               ` Anshuman Khandual
2015-04-20  6:42                                                 ` Anshuman Khandual
2015-04-20 12:27                                               ` Ulrich Weigand
2015-04-20 12:27                                                 ` Ulrich Weigand
2015-04-21  4:55                                                 ` Anshuman Khandual
2015-04-21  4:55                                                   ` Anshuman Khandual
2015-04-21 14:41                                                   ` Ulrich Weigand
2015-04-21 14:41                                                     ` Ulrich Weigand
2015-04-22  9:24                                                     ` Anshuman Khandual
2015-04-22  9:24                                                       ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 2/9] powerpc, process: Add the function flush_tmregs_to_thread Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 3/9] powerpc, ptrace: Enable fpr_(get/set) for transactional memory Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 4/9] powerpc, ptrace: Enable vr_(get/set) " Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 5/9] powerpc, ptrace: Enable support for transactional memory register sets Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 6/9] powerpc, ptrace: Enable support for miscellaneous debug registers Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 7/9] selftests, powerpc: Add test case for TM related ptrace interface Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 8/9] selftests, powerpc: Make GIT ignore all binaries related to TM Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02  7:56 ` [PATCH V6 9/9] selftests: Make GIT ignore all binaries in powerpc test suite Anshuman Khandual
2014-12-02  7:56   ` Anshuman Khandual
2014-12-02 18:23   ` Shuah Khan
2014-12-02 18:23     ` Shuah Khan
2014-12-03  5:46     ` Anshuman Khandual
2014-12-03  5:46       ` Anshuman Khandual

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=552B82F9.3080108@linux.vnet.ibm.com \
    --to=khandual@linux.vnet.ibm.com \
    --cc=Paul.Clothier@imgtec.com \
    --cc=Ulrich.Weigand@de.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=avagin@openvz.org \
    --cc=davej@redhat.com \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=emachado@linux.vnet.ibm.com \
    --cc=james.hogan@imgtec.com \
    --cc=kirjanov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=mikey@neuling.org \
    --cc=oleg@redhat.com \
    --cc=palves@redhat.com \
    --cc=peterz@infradead.org \
    --cc=sam.bobroff@au1.ibm.com \
    --cc=shuahkh@osg.samsung.com \
    --cc=sukadev@linux.vnet.ibm.com \
    --cc=tglx@linutronix.de \
    /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.