On Fri, Sep 08, 2023 at 06:35:56AM +0000, Daisuke Matsuda (Fujitsu) wrote: > > IIRC this also needs to keep track in the xarray on a per page basis > > if the page is writable. > > An xarray entry can hold a pointer or a value from 0 to LONG_MAX. > That is not enough to store page address and its permission. It is, this is a page list so you know the lower 12 bits are not used and you can encode stuff there. > If we try to do everything with xarray, we need to allocate a new struct > for each page that holds a pointer to a page and a value to store r/w permission. > That is inefficient in terms of memory usage and implementation. No, just use the lower extra bits. > I think the xarray can be used to check presence of pages just like we have > been doing in the non-ODP case. On the other hand, the permission > should be fetched from umem_odp->pfn_list, which is updated everytime > page fault is executed. Definately not Jason