Hi, Muhammad, On Wed, Apr 26, 2023 at 12:06:23PM +0500, Muhammad Usama Anjum wrote: > On 4/20/23 11:01 AM, Muhammad Usama Anjum wrote: > > +/* Supported flags */ > > +#define PM_SCAN_OP_GET (1 << 0) > > +#define PM_SCAN_OP_WP (1 << 1) > We have only these flag options available in PAGEMAP_SCAN IOCTL. > PM_SCAN_OP_GET must always be specified for this IOCTL. PM_SCAN_OP_WP can > be specified as need. But PM_SCAN_OP_WP cannot be specified without > PM_SCAN_OP_GET. (This was removed after you had asked me to not duplicate > functionality which can be achieved by UFFDIO_WRITEPROTECT.) > > 1) PM_SCAN_OP_GET | PM_SCAN_OP_WP > vs > 2) UFFDIO_WRITEPROTECT > > After removing the usage of uffd_wp_range() from PAGEMAP_SCAN IOCTL, we are > getting really good performance which is comparable just like we are > depending on SOFT_DIRTY flags in the PTE. But when we want to perform wp, > PM_SCAN_OP_GET | PM_SCAN_OP_WP is more desirable than UFFDIO_WRITEPROTECT > performance and behavior wise. > > I've got the results from someone else that UFFDIO_WRITEPROTECT block > pagefaults somehow which PAGEMAP_IOCTL doesn't. I still need to verify this > as I don't have tests comparing them one-to-one. > > What are your thoughts about it? Have you thought about making > UFFDIO_WRITEPROTECT perform better? > > I'm sorry to mention the word "performance" here. Actually we want better > performance to emulate Windows syscall. That is why we are adding this > functionality. So either we need to see what can be improved in > UFFDIO_WRITEPROTECT or can I please add only PM_SCAN_OP_WP back in > pagemap_ioctl? I'm fine if you want to add it back if it works for you. Though before that, could you remind me why there can be a difference on performance? Thanks, -- Peter Xu