Logan Gunthorpe <logang@xxxxxxxxxxxx> writes: > Hi Alistair, > > I was working on testing your patch set, however I'm dealing with some > hardware issues at the moment so I haven't fully tested everything yet. Oh great. I haven't extensively tested the p2pdma setup yet because I rely on a pretty janky qemu setup to do so. > I managed to find one issue though: > > On 2024-04-10 18:57, Alistair Popple wrote: >> diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c >> index fa7370f..ab7ef18 100644 >> --- a/drivers/pci/p2pdma.c >> +++ b/drivers/pci/p2pdma.c >> @@ -128,6 +128,8 @@ static int p2pmem_alloc_mmap(struct file *filp, struct kobject *kobj, >> goto out; >> } >> >> + get_page(virt_to_page(kaddr)); >> + > > kaddr may represent more than one page, so this will fail to map > anything if the mapping size is greater than 4KB. There is a loop just > below this that calls vm_insert_page(). Moving a set_page_count() call > just before vm_insert_page() fixes the issue. Good point. I'm in the middle of respinning this (I was hoping to get it done before LSF/MM but I suspect my travel will preempt it) so will add this fix. Note that there are problems with both fs-dax and device-dax in this version which the next one fixes, but any p2p dma testing would be appreciated. Thanks! > Thanks! > > Logan