[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210210125634.GL4718@ziepe.ca>
Date: Wed, 10 Feb 2021 08:56:34 -0400
From: Jason Gunthorpe <jgg@...pe.ca>
To: Alistair Popple <apopple@...dia.com>
Cc: linux-mm@...ck.org, nouveau@...ts.freedesktop.org,
bskeggs@...hat.com, akpm@...ux-foundation.org,
linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org,
kvm-ppc@...r.kernel.org, dri-devel@...ts.freedesktop.org,
jhubbard@...dia.com, rcampbell@...dia.com, jglisse@...hat.com
Subject: Re: [PATCH 1/9] mm/migrate.c: Always allow device private pages to
migrate
On Wed, Feb 10, 2021 at 02:40:10PM +1100, Alistair Popple wrote:
> On Wednesday, 10 February 2021 12:39:32 AM AEDT Jason Gunthorpe wrote:
> > On Tue, Feb 09, 2021 at 12:07:14PM +1100, Alistair Popple wrote:
> > > Device private pages are used to represent device memory that is not
> > > directly accessible from the CPU. Extra references to a device private
> > > page are only used to ensure the struct page itself remains valid whilst
> > > waiting for migration entries. Therefore extra references should not
> > > prevent device private page migration as this can lead to failures to
> > > migrate pages back to the CPU which are fatal to the user process.
> >
> > This should identify the extra references in expected_count, just
> > disabling this protection seems unsafe, ZONE_DEVICE is not so special
> > that the refcount means nothing
>
> This is similar to what migarte_vma_check_page() does now. The issue is that a
> migration wait takes a reference on the device private page so you can end up
> with one thread stuck waiting for migration whilst the other can't migrate due
> to the extra refcount.
>
> Given device private pages can't undergo GUP and that it's not possible to
> differentiate the migration wait refcount from any other refcount we assume
> any possible extra reference must be from migration wait.
GUP is not the only thing that elevates the refcount, I think this is
an unsafe assumption
Why is migration holding an extra refcount anyhow?
Jason
Powered by blists - more mailing lists