Re: [PATCH v3 0/4] Implement IOCTL to get and clear soft dirty PTE

From: Muhammad Usama Anjum
Date: Tue Oct 18 2022 - 08:30:44 EST


On 10/18/22 3:48 PM, Greg KH wrote:
On Tue, Oct 18, 2022 at 03:36:24PM +0500, Muhammad Usama Anjum wrote:
/**
* struct pagemap_sd_args - Soft-dirty IOCTL argument
* @start: Starting address
* @len: Length of the region
* @vec: Output page_region struct array
* @vec_len: Length of the page_region struct array
* @max_out_page: Optional max output pages (It must be less than vec_len if
specified)
* @flags: Special flags for the IOCTL
* @rmask: Special flags for the IOCTL
* @amask: Special flags for the IOCTL
* @emask: Special flags for the IOCTL

What do you mean exactly by "special flags"?
Sorry typo in the comments above. Optional flag can be specified in the flag. At the moment, there is only one flag(PAGEMAP_NO_REUSED_REGIONS).

/**
* struct pagemap_sd_args - Soft-dirty IOCTL argument
* @start: Starting address
* @len: Length of the region
* @vec: Output page_region struct array
* @vec_len: Length of the page_region struct array
* @max_out_page: Optional max output pages (It must be less than vec_len if specified)
* @flags: Special flags for the IOCTL
* @rmask: Required mask - All of these bits have to be set
* @amask: Any mask - Any of these bits are set
* @emask: Exclude mask - None of these bits are set
* @rmask: Bits that have to be reported to the user in page_region
*/
struct pagemap_scan_args {
__u64 __user start;
__u64 len;
__u64 __user vec;
__u64 vec_len;
__u32 max_out_page;
__u32 flags;
__u32 rmask;
__u32 amask;
__u32 emask;
__u32 rmask;
};


* @__reserved: Reserved member to preserve data alignment. Must be 0.
*/
struct pagemap_sd_args {
__u64 __user start;
__u64 len;
__u64 __user vec; // page_region

__user is a marking for a pointer, not a u64, right? Now the fact that
you treat it like a pointer later in the kernel is different, but that
shouldn't be on the uapi header file. You can put it in the kerneldoc,
which you did not do.
I'll update.


thanks,

greg k-h