On Tue, May 21, 2024 at 03:19:37PM +0200, Alexandre Ghiti wrote: > On Tue, May 21, 2024 at 1:49 PM Björn Töpel <bjorn@xxxxxxxxxx> wrote: > > + if (PageReserved(page)) { > > + __ClearPageReserved(page); > > What's the difference between __ClearPageReserved() and > ClearPageReserved()? Because it seems like free_reserved_page() calls > the latter already, so why would you need to call > __ClearPageReserved() on the first page? __{Set,Clear}Page are the non-atomic version. Usually used when you know that no one else can fiddle with the page, which should be the case here since we are removing the memory. As to why we have __ClearPageReserved and then having free_reserved_page() call ClearPageReserved I do not really know. Looking at the history, it has always been like this. I remember I looked at this a few years ago but I cannot remember the outcome of that. Maybe David remembers better, but I think we could remove that __ClearPageReserved. Looking at powerpc implementation code, it does not do the __ClearPageReserved and relies only on free_reserved_page(). I will have a look. -- Oscar Salvador SUSE Labs