Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
To: Simona Vetter <simona.vetter@ffwll.ch>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>,
	Matthew Brost <matthew.brost@intel.com>,
	intel-xe@lists.freedesktop.org
Subject: Re: VM madvise semantics
Date: Wed, 04 Jun 2025 17:30:16 +0200	[thread overview]
Message-ID: <739ca984c2f60e5ddd5c06de1e435ac82ce66f57.camel@linux.intel.com> (raw)
In-Reply-To: <aEBY9hLSlgNJM5GH@phenom.ffwll.local>

On Wed, 2025-06-04 at 16:32 +0200, Simona Vetter wrote:
> On Wed, Jun 04, 2025 at 02:57:50PM +0200, Thomas Hellström wrote:
> > Hi!
> > 
> > I'm starting an email thread to move forward the questions Himal
> > had on
> > the madvise semantics:
> > 
> > 1) Whether to support an array of ops? 
> > 
> > IMO the VM_BIND implementation got very complicated due to this and
> > the
> > needed rollback support. Perhaps due to single op splitting turning
> > to
> > multiple ops it would've been hard to avoid that. Can we avoid
> > supporting an array of ops for madvise? If so I'd vote for single
> > op.
> 
> Just seen this fly by and wondering why you even want rollback
> support?
> 
> Looking at core mm and the various m* syscalls that manipulate vma,
> they
> just bail out if things fail halfway through. Or at least don't make
> any
> guarantees, userspace gets to keep the pieces.
> 
> And I think that's the semantics we want, because making global
> promises
> around rollback means we need atomicity, which means fine-grained
> locking
> is out. And that doesn't sound like the right way to design this
> stuff to
> me?
> 
> Or is there some userspace requirement that wants rollback for some
> strange reason?

So the rollback was in the context of submitting an array of multiple
VM_BINDs in a single IOCTL, and the nth one failed. That makes it
troublesome for user-space to recover. And in particular in the
situation where there was a signal delivery and the IOCTL is supposed
to be restartable without any user-space-modification of the arguments.

At that time after long discussions and looking at how, for example the
write() syscall behaves, when -EINTR happens, no write is done and the
syscall can be restarted from scratch. Following that we decided that
if that multiple-bind hit an -EINTR, we'd need to roll back, and since
we already had a rollback we'd do the same for all errors. IIRC
blocking signals wasn't an option. But agreed this puts us in a
situation where fine-grained locking is out with that interface, at
least with multiple binds or ops that generate multiple sub-operations.

So my suggestion here is to avoid the array for madvise, also avoiding
rollbacks if possible.

/Thomas



> 
> Cheers, Sima
> 
> > 2) Purgeability. If it's not implemented yet we shouldn't merge an
> > uapi
> > for it, but ensure that it would at least be possible moving
> > forward. 
> > 
> > 3) Multi-device. In the spirit of the above I guess it makes sense
> > if
> > UMD wants to select between VRAM and SRAM now to merge an interface
> > that supports *only* that. When we add multi-device support we
> > could
> > perhaps add another op, or an extension to support agreed multi-
> > device
> > semantics. Even if this means rolling back to Himal's original
> > suggestion of a preferred placement UAPI.
> > 
> > Thoughts?
> > 
> > Thomas
> > 
> 


  reply	other threads:[~2025-06-04 15:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-04 12:57 VM madvise semantics Thomas Hellström
2025-06-04 14:26 ` Matthew Brost
2025-06-04 14:32 ` Simona Vetter
2025-06-04 15:30   ` Thomas Hellström [this message]
2025-06-04 15:39     ` Simona Vetter

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=739ca984c2f60e5ddd5c06de1e435ac82ce66f57.camel@linux.intel.com \
    --to=thomas.hellstrom@linux.intel.com \
    --cc=himal.prasad.ghimiray@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=matthew.brost@intel.com \
    --cc=simona.vetter@ffwll.ch \
    /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