On Sat, Nov 19, 2022 at 08:29:38PM -0500, Zhu Yanjun wrote: > From: Zhu Yanjun <yanjun.zhu@xxxxxxxxx> > > In ib_umem_get, sgt_append is allocated from the function > sg_alloc_append_table_from_pages. And it is not from highmem. You've confused the allocation of the SGL table itself with the page_address called on the struct page * stored inside the SGL table. Think of the SGL as an array of 'struct page *' The page_address() can return NULL because the 'struct page *' it contains came from userspace and could very will be highmem. Jason