Anthony Liguori wrote: > Izik Eidus wrote: >> Anthony Liguori wrote: >>> >>> I think it's just a matter of calling do_mmap() with the appropriate >>> parameters. It looks likes there's some drivers call do_mmap() >>> directly. >>> >> yea, i think you right, this is excellent idea!, when we will merge >> the swapping to kvm, we will add swapping support to older userspace. > > Here's a patch against your series. The memset in kvmctl ends up > making the guest use all physical memory to start off with but I did > confirm that once the system is under memory pressure, the guest's > memory becomes swappable. Of course, it's quite painful :-) > > A nice thing though is that a lot of the code becomes a bit cleaner > and we can eliminate the phys_mem array entirely. > /* Allocate if a slot is being created */ > - if (npages && !new.phys_mem) { > - new.phys_mem = vmalloc(npages * sizeof(struct page *)); > - > - if (!new.phys_mem) > - goto out_unlock; > - > + if (npages) { This is wrong apparently. We needed to have new.phys_mem to indicate whether the slot has been created yet or not. The new attached patch uses new.rmap instead of new.phys_mem to accomplish the same goal. I no longer see the BUG() that I was seeing. > Regards, > > Anthony Liguori > >