Pavel Begunkov <asml.silence@xxxxxxxxx> writes: > On 3/11/25 13:44, Toke Høiland-Jørgensen wrote: >> Pavel Begunkov <asml.silence@xxxxxxxxx> writes: >> >>> On 3/9/25 12:42, Toke Høiland-Jørgensen wrote: >>>> Mina Almasry <almasrymina@xxxxxxxxxx> writes: > ... >>>> No, pp_magic was also my backup plan (see the other thread). Tried >>>> actually doing that now, and while there's a bit of complication due to >>>> the varying definitions of POISON_POINTER_DELTA across architectures, >>>> but it seems that this can be defined at compile time. I'll send a v2 >>>> RFC with this change. >>> >>> FWIW, personally I like this one much more than an extra indirection >>> to pp. >>> >>> If we're out of space in the page, why can't we use struct page * >>> as indices into the xarray? Ala >>> >>> struct page *p = ...; >>> xa_store(xarray, index=(unsigned long)p, p); >>> >>> Indices wouldn't be nicely packed, but it's still a map. Is there >>> a problem with that I didn't consider? >> >> Huh. As I just replied to Yunsheng, I was under the impression that this >> was not supported. But since you're now the second person to suggest >> this, I looked again, and it looks like I was wrong. There does indeed >> seem to be other places in the kernel that does this. > > And I just noticed there is an entire discussion my email > client didn't pull :) > > At least that's likely the easiest solution. Depends on how > complicated it is to fit the index in, but there is an option > to just go with it and continue the discussion on how to > improve it on top. Didn't seem to be too complicated, assuming no problems appear with using the middle bits of the pp_magic field. See v2 of the RFC, or here for the latest version: https://git.kernel.org/toke/c/df6248a71f85 -Toke