public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: David Mosberger <davidm@hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: RE: [Linux-ia64] determining read or write on a page fault
Date: Fri, 22 Feb 2002 17:06:24 +0000	[thread overview]
Message-ID: <marc-linux-ia64-105590701905171@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590701905163@msgid-missing>

>>>>> On Fri, 22 Feb 2002 07:58:31 -0800, "Hoeflinger, Jay P" <jay.p.hoeflinger@intel.com> said:

  Jay> Decoding the instruction seems really messy, but maybe I am not
  Jay> familiar enough with the Itanium architecture.

It shouldn't be that bad.  For a DSM, you only need to be able to
reliably detect stores (everything else you can just assume to be
loads).

  Jay> Apparently the
  Jay> PC points to an instruction bundle and memory instructions can
  Jay> appear in both slots 0 and 1, meaning you have to do more than
  Jay> just determining whether a single instruction was a load or a
  Jay> store.

Bits 0 and 1 in the IP stored in the sigcontext (sc_ip) encode the
slot number 0, so you'll know exactly which instruction caused the
fault.

  Jay> What if one slot has a load and the other a store?  In that
  Jay> case you have to resort to matching the address with the
  Jay> address computed in the instruction, which can be in a
  Jay> register, but I don't know how to determine whether the current
  Jay> register contents are valid, or whether I have to find the
  Jay> register save area where the value was saved at the time of the
  Jay> fault.  Additionally, there could be an immediate value that is
  Jay> added to the register contents, so the decoder code must
  Jay> compute the same address that the instruction computed before
  Jay> it can compare that to the address passed in sigcontext.

None of that should be necessary.

  Jay> All of this sounds do-able, but it will take time to make sure
  Jay> the code mimics the address computation precisely.

  Jay> What isn't do-able is to handle currently undefined op-codes.
  Jay> This means that when new instructions are added, existing
  Jay> binaries break and we have to revise the decoder.

  Jay> In looking at the kernel page-fault code, we see that the
  Jay> memory access type is known at the time of signal dispatch, but
  Jay> then not passed through to the user's signal handler.  Couldn't
  Jay> the kernel just pass the access type in sigcontext (this is how
  Jay> it was done in IA32)?  In the event that the access type is not
  Jay> appropriate, then the access type could be tagged UNKNOWN.

Yes, we can do that and I'm planning to make such a change.  The solution
Hans proposed is what you'd have to do if you need things working with
today's kernels.

If you're willing to wait for a new kernel, I can send you a patch
that adds the extra info to siginfo.

  Jay> It seems that this change to the page-fault code would be
  Jay> practically free since the information is already available,
  Jay> and it would save us (and others) from writing a difficult
  Jay> instruction-decoder that will break as soon as a new
  Jay> instruction is added to IPF.

Yes, clearly that's preferable in the longer term.  Nobody is
objecting to doing this, it's just that nobody has gotten around to
implementing it so far.

	--david


  parent reply	other threads:[~2002-02-22 17:06 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-02-21 21:09 [Linux-ia64] determining read or write on a page fault Hoeflinger, Jay P
2002-02-21 21:57 ` Boehm, Hans
2002-02-22 15:58 ` Hoeflinger, Jay P
2002-02-22 17:06 ` David Mosberger [this message]
2002-02-22 17:27 ` Hoeflinger, Jay P
2002-02-22 17:29 ` n0ano
2002-02-22 18:45 ` David Mosberger
2002-02-23  1:24 ` David Mosberger
2002-02-25 17:07 ` Hoeflinger, Jay P
2002-02-25 18:36 ` David Mosberger
2002-04-03 16:18 ` Hoeflinger, Jay P
2002-04-04 21:59 ` David Mosberger
2002-04-04 22:49 ` Neelakantam, NaveenX
2002-04-14 22:08 ` Neelakantam, NaveenX
2002-04-15 16:55 ` David Mosberger
2002-04-16 20:18 ` Neelakantam, NaveenX

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=marc-linux-ia64-105590701905171@msgid-missing \
    --to=davidm@hpl.hp.com \
    --cc=linux-ia64@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox