Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp4359010pxb; Tue, 25 Jan 2022 08:44:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJw9zojHQig26Yp9KR6OJnZhmCH+/DLHxGaXe3a7HwJofmMmnpSeAwr/d/ezla2y8ZdaGlLM X-Received: by 2002:a17:906:d184:: with SMTP id c4mr16567043ejz.20.1643129072254; Tue, 25 Jan 2022 08:44:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643129072; cv=none; d=google.com; s=arc-20160816; b=n2H9cF9iZ2idaM2EVBpsLyWLE2kH5kxU8Q/wPrkqkOiaYu79L1l26HvHV9JHEmBCnK 0L2OhzbEwYjK9j0n3GYAjL2npYqT217KYxd6vsmyBAIXMyh0C2zcc+TIZVbcnKJvNRpL SYysSYVA5MB7iETw0ibb8GuvIT9rOTStkVKfg62WlDHBxhj6uh0byrwkPIf1XftU9cwu kA3LeFa9NQTzA42iAo+vnhJNSAj2Ge6ArxtUJyZiv8KqDIj/LDvBO7Dd9ZeTehhbzq2s hzIzPFd63D9m9zCXvWIMpy+vMDkplhIo8KKwnewGZYJPhpTIty6PKb/P+xSGOLciihs8 hT7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=RJcbe5w2XSHxzMRgZ2Y2pQFdn57O19rCLWQF0CALTH0=; b=AyA2vgEMvqOZqKi5+fMzr0sMNNWL1JTMT9mmiY6HphvpcWuKs/nK+dfv0oP2VrHFPb Dt0RxAjhdVPn7dXZ+cLV4pJYk8mPkvMTuub+0jd+yXIFP0/GMFMHSaU2DR9GZZh3XTJn CS4mT/cLQcw4V+Msk1qQ892wkV29/sDwrZjW9en7XfegbK1yCQfsTdjoG6DLK7TBv0k9 AmOTqM9R39D2KC+Rmo41sg03OVoAhRIgnGNTolOhmUL8Uaf6OWMm6Mau4KqqFwi1TCMk Dzq7vw8RXBRkibWrAlcnZyJHdCicqB9B+RsvmW6cKxzF5PAZsMW/93KUqCBaix89XTfz 06wA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@shutemov-name.20210112.gappssmtp.com header.s=20210112 header.b=kGRdpXqc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c11si11664913edx.610.2022.01.25.08.44.07; Tue, 25 Jan 2022 08:44:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@shutemov-name.20210112.gappssmtp.com header.s=20210112 header.b=kGRdpXqc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1384820AbiAYLqM (ORCPT + 99 others); Tue, 25 Jan 2022 06:46:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356015AbiAYLlp (ORCPT ); Tue, 25 Jan 2022 06:41:45 -0500 Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE8C3C06173B for ; Tue, 25 Jan 2022 03:41:41 -0800 (PST) Received: by mail-lj1-x232.google.com with SMTP id e17so3187242ljk.5 for ; Tue, 25 Jan 2022 03:41:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shutemov-name.20210112.gappssmtp.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=RJcbe5w2XSHxzMRgZ2Y2pQFdn57O19rCLWQF0CALTH0=; b=kGRdpXqcvVI0JCXEBkcXAlaCnbgjqFw+y8JqKUUVByiZmzUD++/K6HXdokfYHT1e/s sxFaso5HE7DDGYcZVeGpk8Msnbaks/2Hjj29YYAaKOvfBHvyu9JdDdLsYD3EMoWOhT86 bLX6DSF5pwDpP8/Ng2zMIQV/Vb/s/ltR+vKyYOtgvrsZ6+gU+V4SdJ4slvOgWET6E1+4 DrD81m/LvFIUeiDn7bli+yM8Xff0h728ycJDGY6NdzW0+koC7t9lXNLHLwulYhjYI/lj zWnCnFyvYelEtdcajUL7Io5igV21i5JXiULGMX+wOkcwQcHeXAPJL3AP9en639+5B0fu NXNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=RJcbe5w2XSHxzMRgZ2Y2pQFdn57O19rCLWQF0CALTH0=; b=WhMQUtHVCAbULKjbpZQ8VvBdDEctb5vaWG/JbCkyZHamCoeWvO2eDuCrfCjvrf3+cG PlY2nRYfR4GWkQzagL4SdCPBlm1UMtxO4n+QbZPnIBfafi4o/FV+NXzIOGKiQij3b+QZ fTLpDWkIOI5ZZClz8B4IUh0cvekNVH2Yi4JjTGZirTYcEvw6QUd00FKKBg76z/EaEog/ I98Gq7dGOZp7p/Ayyu+nnIiJ2rwCO0zlUFmNAdNAFLIk5qeE8NG0DGzSIZjRRTwSQ9aL J4cefi5teocb6x/BdFH9/0koipJkjlThN70uI4JKhYg/oMlLUUBarFJ+fNC+BK90dunQ Qi7A== X-Gm-Message-State: AOAM532sx/cCgrHkPcjMJoplxnu8RkpdqOWqU2Q6vMsc9teE5rkYKIsN HxuIh/f+XqLa27OM7WPu/eBoKg== X-Received: by 2002:a2e:3212:: with SMTP id y18mr3250783ljy.270.1643110899999; Tue, 25 Jan 2022 03:41:39 -0800 (PST) Received: from box.localdomain ([86.57.175.117]) by smtp.gmail.com with ESMTPSA id p19sm1463920lfh.18.2022.01.25.03.41.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Jan 2022 03:41:39 -0800 (PST) Received: by box.localdomain (Postfix, from userid 1000) id 42B23103C0E; Tue, 25 Jan 2022 14:42:12 +0300 (+03) Date: Tue, 25 Jan 2022 14:42:12 +0300 From: "Kirill A. Shutemov" To: Khalid Aziz Cc: akpm@linux-foundation.org, willy@infradead.org, longpeng2@huawei.com, arnd@arndb.de, dave.hansen@linux.intel.com, david@redhat.com, rppt@kernel.org, surenb@google.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [RFC PATCH 0/6] Add support for shared PTEs across processes Message-ID: <20220125114212.ks2qtncaahi6foan@box.shutemov.name> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jan 18, 2022 at 02:19:12PM -0700, Khalid Aziz wrote: > Example Code > ============ > > Snippet of the code that a donor process would run looks like below: > > ----------------- > addr = mmap((void *)TB(2), GB(512), PROT_READ | PROT_WRITE, > MAP_SHARED | MAP_ANONYMOUS, 0, 0); > if (addr == MAP_FAILED) > perror("ERROR: mmap failed"); > > err = syscall(MSHARE_SYSCALL, "testregion", (void *)TB(2), > GB(512), O_CREAT|O_RDWR|O_EXCL, 600); > if (err < 0) { > perror("mshare() syscall failed"); > exit(1); > } > > strncpy(addr, "Some random shared text", > sizeof("Some random shared text")); > ----------------- > > Snippet of code that a consumer process would execute looks like: > > ----------------- > fd = open("testregion", O_RDONLY); > if (fd < 0) { > perror("open failed"); > exit(1); > } > > if ((count = read(fd, &mshare_info, sizeof(mshare_info)) > 0)) > printf("INFO: %ld bytes shared at addr %lx \n", > mshare_info[1], mshare_info[0]); > else > perror("read failed"); > > close(fd); > > addr = (char *)mshare_info[0]; > err = syscall(MSHARE_SYSCALL, "testregion", (void *)mshare_info[0], > mshare_info[1], O_RDWR, 600); > if (err < 0) { > perror("mshare() syscall failed"); > exit(1); > } > > printf("Guest mmap at %px:\n", addr); > printf("%s\n", addr); > printf("\nDone\n"); > > err = syscall(MSHARE_UNLINK_SYSCALL, "testregion"); > if (err < 0) { > perror("mshare_unlink() failed"); > exit(1); > } > ----------------- I wounder if we can get away with zero-API here: we can transparently create/use shared page tables for any inode on mmap(MAP_SHARED) as long as size and alignment is sutiable. Page tables will be linked to the inode and will be freed when the last of such mapping will go away. I don't see a need in new syscalls of flags to existing one. -- Kirill A. Shutemov