From nobody Mon Feb 9 00:16:15 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1535115480500196.4272249851939; Fri, 24 Aug 2018 05:58:00 -0700 (PDT) Received: from localhost ([::1]:41653 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ftBf5-0000x5-CJ for importer@patchew.org; Fri, 24 Aug 2018 08:57:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38413) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ft8dA-0007Om-UH for qemu-devel@nongnu.org; Fri, 24 Aug 2018 05:43:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ft8d7-0002SE-N8 for qemu-devel@nongnu.org; Fri, 24 Aug 2018 05:43:48 -0400 Received: from mail-db5eur01on0100.outbound.protection.outlook.com ([104.47.2.100]:54966 helo=EUR01-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ft8d7-0002RD-CG for qemu-devel@nongnu.org; Fri, 24 Aug 2018 05:43:45 -0400 Received: from giyaffe.intra.qt.io (62.220.2.194) by DB6PR0202MB2823.eurprd02.prod.outlook.com (2603:10a6:4:a9::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.14; Fri, 24 Aug 2018 09:43:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtcompany.onmicrosoft.com; s=selector1-qt-io; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Twz12VcFS5Jn6qavzAbxDMFXWGSHZX3B6g1UUY0/Fxo=; b=CD0XI1kwioAXVOMmWdJmc10+U/8DcXFSv15NyYl/8zDoPA4GHc0BJEhChMTBh9D5qAxMje0avo6NcSTtsuwr7OKR50ND0MoWTdjp0lyGZrz2P0pijp+t+jdpTkL3Ol4wZlErJMyD3ijxlYTQ733IboDeZtH9Fug0F0+DG4J0HJU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Simon.Hausmann@qt.io; From: Simon Hausmann To: qemu-devel@nongnu.org Date: Fri, 24 Aug 2018 11:43:30 +0200 Message-Id: <20180824094330.8908-1-simon.hausmann@qt.io> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: VI1P193CA0004.EURP193.PROD.OUTLOOK.COM (2603:10a6:800:bd::14) To DB6PR0202MB2823.eurprd02.prod.outlook.com (2603:10a6:4:a9::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8920b737-5cff-4a45-6b80-08d609a61489 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:DB6PR0202MB2823; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0202MB2823; 3:9mfSTKps/SW7Fx2Teu4gp3YEMohSMvwdnFB4im/2m+arfcEto7JZ1WpTGI4lMEhC/YZz+F2EVAdRQDwCNU9L9Ptb7tMHI62Ufge1Otv125iLRKflEn/B/LYZhoqalhxaHtlOGtyKeXQAsr9SEtSgS4d7lNmGTKBFtgJYRQC/o+ZaOBLVO9xEYszELXx3eg89Ok1bPRSfZFDze0leAwM7737eIg60UeucggiblJLdchBGxyKoSU/LnSVvk8KD+S7I; 25:24zxI6M3Xh3HIjfxBEwhKZfSwbqzSOWO7hJbtWQFJOd7vrfrHajPG+jDeFx9G0PrfHuTU4wo225n6Xdu8GQwPvoMSs6KsMddTpiRvvIu/Vb7ssYx8jSqNiSt4O9hbStf6ahQHCLm28Ov2nhG59mvYolEKmgEwDsWIC36F+KhIBcad3ZXJbbyJ+cGk0JIZyEjW9NQar5hCrjhzgX+/1E55Mv0FC1FnSG+oUNaK4/ws7AsuKLZ4M5bPiKiiBGNI0/S/HmUxkboG7KoIyBNWMWwyqT+ITa0dw008yGzOuv5LD/xGh8qTh1dd5Ob2WwiY4IZFS6I9NajzqhKyJ54denq4A==; 31:jxfOE8hbtUps68Nc9Wzz/seu2b5fkccu/DSU2BxujM4mNQq8SZTvCKiHxeSqJvx3U4zCNWHSs+nCrb2vZXNNz2xDXdUppG29+jlUXuf/GIfcY8WbSVI7Lz8eEGWXNFRyMnDaMgOhwLu2A7Fs/JDxV4TFOxo18MDYQQgaBB9BClJ9U8+ltQSstzWOZty/4Jy9ZJ+9whifkKF3O4XRTxIE5aHTJ0YhnNloxjR6fRGPe9k= X-MS-TrafficTypeDiagnostic: DB6PR0202MB2823: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0202MB2823; 20:I2zBIz/ak0Xu2N/JELi5vBmSKjZ2YIA/phivGQkjNTmjuno1HG7tPpGKGvnLeWF81RbyJ5suYxXmtw3IWD0HvLHtHnWk66IwxFVrK57NtPsL7WeZv4zeRVUQth27kqxl1wvCGrRbODX/Lt+PlnRZ0bHgnR2qK9ieJCwLFN0bek/CStRFAoUIpl5pst/BFTp8aAp+q3La2Tce5ETSbVJxOWSb8tn4JtrPYC2UEmieDDC365NazxfYUJdPNj73zQ8UYzn1TXNHweLviSB3UP28CxseDD2v0vPEouU/jfFl9EnApDNeAqbiZ2zU27cTWCAW+lbbjcIH2My+5GlriOl9AUIRtjUMwpUQPO/lmUadmj9hOqcD/U9g78pFUO0zmDBVWnFBJcW/qVgofXa0RwQOIDFeG5Qy0GmlV0oCKxD69PtetN3G/UdsL/jdUqWCxRln8GBGyQaPkvqqQMtyUOkBcmWFlnZrdC12bdMP3/hJ5f2EwjP75efXvrTXCWSjkL5T; 4:Y4lsrvZ3ijdIy4+p2+hLj4yfCzkHLOp3wGc6mrSR9C27h++vimxyI+QukDiDODM3EdWBvOZS5uBjdnJmGMn1X5TDJ3zJ9z4n6VbPxdYsWr49zccLNZYU+KTjMbZJ7IbM3pvxGB/LxS1uHfHz+Acql+s7GPctquuuaniv62+79M6l5FTNZD+gmq1PS7C151cGWPdHmiqESLBnwg2aPyC4+a86pXt9M1LhEBpa2BBQg2Knnl8K1nftchBkLUyhup70WzXxeGYYbs4GhyEc731RdQCsrpPxm+weRfwH+ZFWSytvFd6Xq3tgcwqhPiqIiVTG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699016); SRVR:DB6PR0202MB2823; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0202MB2823; X-Forefront-PRVS: 07749F8C42 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(39850400004)(396003)(376002)(136003)(346002)(189003)(199004)(54906003)(6666003)(386003)(6916009)(33896004)(6486002)(7736002)(106356001)(53936002)(68736007)(74482002)(4326008)(52116002)(51416003)(7696005)(50226002)(25786009)(44832011)(105586002)(16586007)(48376002)(72206003)(97736004)(2906002)(305945005)(2616005)(50466002)(956004)(81156014)(476003)(8936002)(2351001)(8676002)(486006)(316002)(66066001)(36756003)(16526019)(186003)(14444005)(1076002)(26005)(86362001)(5660300001)(3846002)(53416004)(69596002)(47776003)(81166006)(6116002)(478600001)(2361001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0202MB2823; H:giyaffe.intra.qt.io; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: qt.io does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0202MB2823; 23:M/u3uwCrV0fah2TrFaWmNXSYZYf7U/fE1Rr++EV?= =?us-ascii?Q?HL+1lABwA7CJUEMXMSvzt3BmuF4B5Yw2S20mRV+sL2/x8rwLOMPpNFGZno8H?= =?us-ascii?Q?4KvcKREIQvjJmzDfepG3AOnwbTsSV2i+klh5+ETB5i+ongqiX8dKTIujVyw3?= =?us-ascii?Q?cc4YdBu0CY622gfvH2rVMPq+orZ5Pf0YtEJSHtYQ3fTh3BWOInDaiTVHpspK?= =?us-ascii?Q?w/sods4OYouDXdABoLbCx4sFa3LwTIS17tjzzuwngkjoPmMtN58LDQQy2wNd?= =?us-ascii?Q?3Xoe9xQrGw60aN1f8HAsaRB0BscEbbRWouAAhv13OVFjlnB9g3Fk75srLSmW?= =?us-ascii?Q?o9S4CEakspY6VtRNTq9iIryoINlmeV/S6NJA0F4EI1Wjq8vh/gdMjXh4SDHX?= =?us-ascii?Q?5FFXvrzarnX7Rn2nK/r8cVHstRK2BPWELeZDBjOQcAZ4L5JiWBUJjZ5XlEwo?= =?us-ascii?Q?lfVY4V+QRDbJ6v5Y5tN0SiQpFMDfCVba1rnngJ6KGWH6+edoD3oYfAoRWkE7?= =?us-ascii?Q?kbVf+K5+z7+HikuvtZu1HG/2PSnzgW58vNPLPin+5TqYmReLVv7Mxr1LGfDx?= =?us-ascii?Q?pDdRxYyki5p4EYvV7Inm24KR5wJ9uMsGelPNLAJ0bZX3LR6mzCDHV2zQc208?= =?us-ascii?Q?+bZrGrCojBZNmKRWje43avGav9+N+6s7ID2tnuMiffneH8f8/vx9RZnOWQz4?= =?us-ascii?Q?5Ay4CZLNRIPtPfBt112dIIEOJpL5kwiLZgsylEetIVumUhHlbr0CFLfRn/bj?= =?us-ascii?Q?lTQ/gniDCP7aqxjGR7L6Y+vTJ43q3v78Pr8cTAM7pCIWWGr2cRIwwExwJzD1?= =?us-ascii?Q?UrLytlb8WO9Wu7JimXDBUeB3r0fmq9bmhMjJMBh2sR5K0YiTnNbjB6+fYzV9?= =?us-ascii?Q?0TkjDroL2Ej2rWtto+rxSfDrbW0mHfjbuJVgG1G/e4qyG4YZUFCKo+yLqrKA?= =?us-ascii?Q?NobqS2speEpFRKPrfuAD2SgdHVX4EBKjdHT2VgFvAg7O4DzDByYZYrBSdkUd?= =?us-ascii?Q?AVER4pnfRxGf/XdnD4XKKWF234RKb+rzHdTQXAcXf9Y5Xg+0u5JH0sKhEKTQ?= =?us-ascii?Q?/86T43RCbLYa87ak2qKeXsNuYamb6yWhmhIhMon6i6HsXQ49XRfpwztBJIXb?= =?us-ascii?Q?XexSrcwp01PA8DuiYrfxpiyoqvtsdwUqMcMZgfEEFfOFCiw96aLVm3G2cywo?= =?us-ascii?Q?eDxc4JxscAmTu8vnYCJD/cw/6sCfG3m/DSKvCWlYt1LgkGNlhp4EDbcowk1y?= =?us-ascii?Q?w4qAHpimofBRcSgvF4dYxahUCWZmtqNDXMmkM8oqinbMqWmnodjjkb0mZYwm?= =?us-ascii?Q?RYT9uIgmvECq+Ud1jVedK0dw=3D?= X-Microsoft-Antispam-Message-Info: P++QjuDMHmlwQsnZ4gSgDesMaKb/b6HxEswDNmf94CFHoJOnkCd0Rl9TK911+7KtFKkCCX/j0WbHGXRuZs0gOp1h/c+ZC3u31Z/hkDueuxy2/p5oE6mq/w5Qr8p3hYuu0evG+yH3G9g0REXUu/RrkxzHWp5YgpkWhiMY9GjQCCgGj249GE7T+vb9DFWUpEIKVYt9zmRZjpdr93wQPWmvTnN0coC3SiXXfROeL1KsASS43ju7Zkv985aJ8baRKqaPavA87g0Nu6J0spAYKfANznMNIONNRMq4v7lvyGPa1SZOzOFDi2IQuZdXcLoslvxX4S88mXYQy2FQLX490tj7eIJFCJ7kGtGwo/3nkRkv6lo= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0202MB2823; 6:GuhUguzoU/Ps2Nf5M1H2TmI2AMG7i8sAFR7c2rfA0kCqx0GOA7Fj9XpWvYovp6SPNSXHBeWxTTqlAMlg9pJ+vx8igmFgKWxiBrZEPHN0HZim+S0lOynTQqZj/xK17Q8eWlhVKAk3gWykYUJfsgzwflJn4bis8/dgYCZvLhytgUT+SW3TILtmkvcdHHxbSMOZhuSsq0tljqs/BuRarx8BTL/SuqcZ83jCmlsvqFVA82N4Kx8QJynj4YydZSlFyZArkFRzBdHeR1K4yzSYDsnzm+Blc5EbRKToZ+nj92ldMv7LDsvshje95D2EDwxIT678R8A9BGlPz6i8lxwsMj2EAdFXptKXNf62PlesKeBeHNcEHF2r+23fRbUZXAQW5HezrzGnukUglbkxihDDLD8ElWiBBbq0e9BPpYLy+9VYGsEsr7Kibdxum47/jrZm4sh3HIGZ/MAAvViRrYcclG5XnQ==; 5:7M4KC7uvtLzVMlD+vNAEF25La3mZpOHMH39lJpZAZIzC4YWLnHJNOIPxZfG513xmkq7Vk4G/6Qrb5BY844dcsJbg/8JcLyUaOEQcR5FiUGGrnG/xEmELAWagolGM/uMgrXWMT6ZFi/Ovj+hxOjK1td2fobbVLpHlKO7g9pyccrY=; 7:xRWF+qbsTgDc5B/hMxewIAJrrZS282wsMxxEXvFK6pxfP3haStKbMXn9kaLsGbQOZkm3VUxwXvMGVu0q/I4mVVv8EO5w5hi1na3eLkFNKgTfun4VFlT6ATUtV8AemJ9NIIh+DfrEQ9ugBsA/2BOI2zDOAR60zbmZ2AOud2mtue6a4J7dOzL5oX9A/sFjtmzOsdKUtjN98ZyOdptGZHqGfHp/nn8eDeS6pIN+EAYcUqpLGSTwGvE4FhxLU3cn7Hlh SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2018 09:43:42.9402 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8920b737-5cff-4a45-6b80-08d609a61489 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 20d0b167-794d-448a-9d01-aaeccc1124ac X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0202MB2823 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.100 X-Mailman-Approved-At: Fri, 24 Aug 2018 08:56:28 -0400 Subject: [Qemu-devel] [PATCH v2] linux-user: add support for MADV_DONTNEED X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sami Nurmenniemi , Riku Voipio , Simon Hausmann , Laurent Vivier Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Most flags to madvise() are just hints, so typically ignoring the syscall and returning okay is fine. However applications exist that do rely on MADV_DONTNEED behavior to guarantee that upon subsequent access the mapping is refreshed from the backing file or zero for anonymous mappings. Signed-off-by: Simon Hausmann --- linux-user/mmap.c | 21 +++++++++++++++++++++ linux-user/qemu.h | 1 + linux-user/syscall.c | 6 +----- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 41e0983ce8..6b308d4e13 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -762,3 +762,24 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong o= ld_size, mmap_unlock(); return new_addr; } + +int target_madvise(abi_ulong start, abi_ulong len, int flags) +{ + len =3D HOST_PAGE_ALIGN(len); + start &=3D qemu_host_page_mask; + + if (!guest_range_valid(start, len)) { + errno =3D TARGET_EINVAL; + return -1; + } + + /* A straight passthrough may not be safe because qemu sometimes + turns private file-backed mappings into anonymous mappings. + Most flags are hints, except for MADV_DONTNEED that applications + may rely on to zero out pages, so we pass that through. + Otherwise returning success is ok. */ + if (flags & MADV_DONTNEED) { + return madvise(g2h(start), len, MADV_DONTNEED); + } + return 0; +} diff --git a/linux-user/qemu.h b/linux-user/qemu.h index b4959e41c6..4b68019904 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -437,6 +437,7 @@ int target_munmap(abi_ulong start, abi_ulong len); abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, abi_ulong new_size, unsigned long flags, abi_ulong new_addr); +int target_madvise(abi_ulong start, abi_ulong len, int flags); extern unsigned long last_brk; extern abi_ulong mmap_next_start; abi_ulong mmap_find_vma(abi_ulong, abi_ulong); diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 202aa777ad..023874ac8c 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -11874,11 +11874,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_lo= ng arg1, =20 #ifdef TARGET_NR_madvise case TARGET_NR_madvise: - /* A straight passthrough may not be safe because qemu sometimes - turns private file-backed mappings into anonymous mappings. - This will break MADV_DONTNEED. - This is a hint, so ignoring and returning success is ok. */ - ret =3D get_errno(0); + ret =3D get_errno(target_madvise(arg1, arg2, arg3)); break; #endif #if TARGET_ABI_BITS =3D=3D 32 --=20 2.17.1