[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87y12vxzh1.fsf@nvdebian.thelocal>
Date: Fri, 11 Oct 2024 11:17:20 +1100
From: Alistair Popple <apopple@...dia.com>
To: Dan Williams <dan.j.williams@...el.com>
Cc: linux-mm@...ck.org, vishal.l.verma@...el.com, dave.jiang@...el.com,
logang@...tatee.com, bhelgaas@...gle.com, jack@...e.cz, jgg@...pe.ca,
catalin.marinas@....com, will@...nel.org, mpe@...erman.id.au,
npiggin@...il.com, dave.hansen@...ux.intel.com, ira.weiny@...el.com,
willy@...radead.org, djwong@...nel.org, tytso@....edu,
linmiaohe@...wei.com, david@...hat.com, peterx@...hat.com,
linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linuxppc-dev@...ts.ozlabs.org,
nvdimm@...ts.linux.dev, linux-cxl@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-ext4@...r.kernel.org,
linux-xfs@...r.kernel.org, jhubbard@...dia.com, hch@....de,
david@...morbit.com
Subject: Re: [PATCH 02/12] pci/p2pdma: Don't initialise page refcount to one
Dan Williams <dan.j.williams@...el.com> writes:
> Alistair Popple wrote:
[...]
>> diff --git a/mm/memremap.c b/mm/memremap.c
>> index 40d4547..07bbe0e 100644
>> --- a/mm/memremap.c
>> +++ b/mm/memremap.c
>> @@ -488,15 +488,24 @@ void free_zone_device_folio(struct folio *folio)
>> folio->mapping = NULL;
>> folio->page.pgmap->ops->page_free(folio_page(folio, 0));
>>
>> - if (folio->page.pgmap->type != MEMORY_DEVICE_PRIVATE &&
>> - folio->page.pgmap->type != MEMORY_DEVICE_COHERENT)
>> + switch (folio->page.pgmap->type) {
>> + case MEMORY_DEVICE_PRIVATE:
>> + case MEMORY_DEVICE_COHERENT:
>> + put_dev_pagemap(folio->page.pgmap);
>> + break;
>> +
>> + case MEMORY_DEVICE_FS_DAX:
>> + case MEMORY_DEVICE_GENERIC:
>> /*
>> * Reset the refcount to 1 to prepare for handing out the page
>> * again.
>> */
>> folio_set_count(folio, 1);
>> - else
>> - put_dev_pagemap(folio->page.pgmap);
>> + break;
>> +
>> + case MEMORY_DEVICE_PCI_P2PDMA:
>> + break;
>
> A follow on cleanup is that either all implementations should be
> put_dev_pagemap(), or none of them. Put the onus on the implementation
> to track how many pages it has handed out in the implementation
> allocator.
Agreed. I've ignored the get/put_dev_pagemap() calls for this clean up
but am planning to do a follow up to clean those up too, probably by
removing them entirely as you suggest.
[...]
> For this one:
>
> Reviewed-by: Dan Williams <dan.j.williams@...el.com>
Thanks.
Powered by blists - more mailing lists