Commit 714fccbf authored by Yuri Nudelman's avatar Yuri Nudelman Committed by Oded Gabbay
Browse files

habanalabs: save pid per userptr



Currently userptr endpoint in debugfs prints out virtual addresses
in the user process memory space, without specifying their owner process
ID. User space virtual address is meaningless without knowing the owner
process.

Signed-off-by: default avatarYuri Nudelman <ynudelman@habana.ai>
Reviewed-by: default avatarOded Gabbay <ogabbay@kernel.org>
Signed-off-by: default avatarOded Gabbay <ogabbay@kernel.org>
parent 83f14f2f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -209,12 +209,12 @@ static int userptr_show(struct seq_file *s, void *data)
		if (first) {
			first = false;
			seq_puts(s, "\n");
			seq_puts(s, " user virtual address     size             dma dir\n");
			seq_puts(s, " pid      user virtual address     size             dma dir\n");
			seq_puts(s, "----------------------------------------------------------\n");
		}
		seq_printf(s,
			"    0x%-14llx      %-10llu    %-30s\n",
			userptr->addr, userptr->size, dma_dir[userptr->dir]);
		seq_printf(s, " %-7d  0x%-14llx      %-10llu    %-30s\n",
				userptr->pid, userptr->addr, userptr->size,
				dma_dir[userptr->dir]);
	}

	spin_unlock(&dev_entry->userptr_spinlock);
+2 −0
Original line number Diff line number Diff line
@@ -1434,6 +1434,7 @@ struct hl_ctx_mgr {
 * @sgt: pointer to the scatter-gather table that holds the pages.
 * @dir: for DMA unmapping, the direction must be supplied, so save it.
 * @debugfs_list: node in debugfs list of command submissions.
 * @pid: the pid of the user process owning the memory
 * @addr: user-space virtual address of the start of the memory area.
 * @size: size of the memory area to pin & map.
 * @dma_mapped: true if the SG was mapped to DMA addresses, false otherwise.
@@ -1446,6 +1447,7 @@ struct hl_userptr {
	struct sg_table		*sgt;
	enum dma_data_direction dir;
	struct list_head	debugfs_list;
	pid_t			pid;
	u64			addr;
	u64			size;
	u8			dma_mapped;
+1 −0
Original line number Diff line number Diff line
@@ -1762,6 +1762,7 @@ int hl_pin_host_memory(struct hl_device *hdev, u64 addr, u64 size,
		return -EINVAL;
	}

	userptr->pid = current->pid;
	userptr->sgt = kzalloc(sizeof(*userptr->sgt), GFP_KERNEL);
	if (!userptr->sgt)
		return -ENOMEM;