From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A8FE0CEE326 for ; Wed, 9 Oct 2024 15:54:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D0FC66B00BC; Wed, 9 Oct 2024 11:54:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CBFCB6B00C3; Wed, 9 Oct 2024 11:54:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B3A8F6B00C4; Wed, 9 Oct 2024 11:54:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 9247F6B00BC for ; Wed, 9 Oct 2024 11:54:12 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E2A5581740 for ; Wed, 9 Oct 2024 15:54:09 +0000 (UTC) X-FDA: 82654510302.03.5676583 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by imf02.hostedemail.com (Postfix) with ESMTP id 9D48C80012 for ; Wed, 9 Oct 2024 15:54:09 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=scylladb.com header.s=google header.b=bz2Pguru; spf=pass (imf02.hostedemail.com: domain of avi@scylladb.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=avi@scylladb.com; dmarc=pass (policy=reject) header.from=scylladb.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728489206; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=Jzu8P669xFb8ANBX8qT0vycIOPvch6FhYdLRuhW8npA=; b=d/SD5Dpr9O4fxM01sVMxC02cVoXb7iATDnsTXJbfrKWLMuSfNMMSeFKVkREjSL2lD9EONh qj5Prush/Qjy4/2Iz91ILNVW7GODVlNlDgvydMv7Gf9zD1bBsN+WMW2WtS7TNrHZul8zHl WO0hkaEtomoMFfi0AS1Dvjkrobwm51E= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=scylladb.com header.s=google header.b=bz2Pguru; spf=pass (imf02.hostedemail.com: domain of avi@scylladb.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=avi@scylladb.com; dmarc=pass (policy=reject) header.from=scylladb.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728489206; a=rsa-sha256; cv=none; b=W5Lr3kZ7US6/GueGzucoFqm0vJhcA1E2T1hTaI1ApdEVR0kdO6UnIA8q9AAtlAUYSLWjPN 8Rfi/i6G7Kybdu5xU8dp5+BYCrlHZXwZIBcztIZiYj11Kb+sL7QER4DnhJWSDlWyXVRzod 6VGuNpIchZ9hQqdRMCLOeHhdsAluIk0= Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-430f6bc9ca6so7926455e9.2 for ; Wed, 09 Oct 2024 08:54:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=scylladb.com; s=google; t=1728489248; x=1729094048; darn=kvack.org; h=mime-version:user-agent:content-transfer-encoding:date:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=Jzu8P669xFb8ANBX8qT0vycIOPvch6FhYdLRuhW8npA=; b=bz2Pguru1Px475TxqxE7v6U4waw1bK7FSnX4cA1giicAeX/8Q48TZZ2rzubZPN6lQx JuLDcDMWO+5OYSEw2z+6/BjrTLvfPEoc5VDErhTtnJxDlXuBF9Js1rY5CEhk9r20102/ BnvqRmkBtCmx09rHVHHdm5hb2n1JEVEqYDDQ2ArnM3MkPdmND6KnVd2/ZzL2AunBldhq KJqjyQC32LCuKs8frLqnzswgWrxPuWysiTfHb/ewTqxYdPy4uF4Y7qEoCcZKNsGjYi7R vmFt7ka8YQ6JgJSFBtI9EcBIokL7vdFclbtxSIe/pLcpuy82M7YGgRcmWuuTYziBkamX T1ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728489248; x=1729094048; h=mime-version:user-agent:content-transfer-encoding:date:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Jzu8P669xFb8ANBX8qT0vycIOPvch6FhYdLRuhW8npA=; b=BBi0znQeCdS2dXffW9+1gbrLYaSlOMHmGaU/hBUgXp9SkBM2SDn33TisiwZW+PpDbc ba09jF4ISpb146rmVUAgft96moNGYrUCcNGPOcwKPc+cAbyICnZsIglEtIO/GxnP5OcZ zJl9sfmj1t0ZFQgwKA3FAUrCfYaxJyERlULKM51875T/FqfJggF3MAIdFxe+DHahqPZo 4HShQskNPJErJ59R8TW5etknbL/ncqTtXiq1kCY2nZftXQS1y0N1evq+0HyhHa7FwQgH nRfa+5Ackvj09/kQeTRcBENrURL67NPik9gUkCfv1oeBDcMQQlDrD7ulvpV2qB+3c7GM iQNw== X-Gm-Message-State: AOJu0YxWXCJx4SUYoyH2ptT1q1iE9t1Yb1/XWoQ72m9RzcT7JjtqSwPg eXzGu7j81F1nKMieJz9BG4o3MR3g5Kp4JF15Mse4FqLaBMp5e7KL2FuDbyqu1l640xQJvhmOVoR cyFZ2arwjqzGYmulctAexcrKd04KmP8RJea8kXeAnJbeAaQj9cJFLdQosf0uG4leJ6dZFKRnPfX YXj9WmDlTWyLrCNpX3duzbHb4bPbpPBhyNdjVE/9ErQy72+55eCc2BweYBcYkIG8I2vLu42m5qG tKIcyCuumxQYtyBwuqJ/JNvB8cbwYl4IQeX08zMT4shrNMaWsf7ImGpk52fdYy/RqpSjpWJhEQl jgTUwDcmkZgP3ojZTJc= X-Google-Smtp-Source: AGHT+IGsVvZxYg+qm44UnRNz5MDaFcW9XrnYAhcBBMd39XcL6C2eiDV2/vpfFYp3lcVXC0eCy03yoQ== X-Received: by 2002:a05:600c:a01:b0:42f:7717:ac04 with SMTP id 5b1f17b1804b1-430ccf31b40mr25115825e9.16.1728489247385; Wed, 09 Oct 2024 08:54:07 -0700 (PDT) Received: from avi.lan ([5.29.124.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-37d376009a0sm3160874f8f.88.2024.10.09.08.54.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Oct 2024 08:54:06 -0700 (PDT) Message-ID: <8ac28fb858a2394cc72c3dc5924f1fd031fc6fe0.camel@scylladb.com> Subject: Possible regression with file madvise(MADV_COLLAPSE) From: Avi Kivity To: linux-mm Date: Wed, 09 Oct 2024 18:54:06 +0300 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.52.4 (3.52.4-1.fc40) MIME-Version: 1.0 X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: scylladb,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 X-CLOUD-SEC-AV-Sent: true X-CLOUD-SEC-AV-Info: scylla,google_mail,monitor X-Gm-Spam: 0 X-Gm-Phishy: 0 X-Rspam-User: X-Stat-Signature: ucytaourjt3na5xx5azemkizu6htxnrq X-Rspamd-Queue-Id: 9D48C80012 X-Rspamd-Server: rspam11 X-HE-Tag: 1728489249-730704 X-HE-Meta: U2FsdGVkX18P2cNOML2Q6CrTIzPoYFynYCDn68NINA8EKRYGpT3Y7fr5Zn1g7JsRcW/vWIrfvlwvr4hXTw1mh79MHZ5PpA/B2H2A3H+fpkPZAb/E2eopBpLKO2kMzlpw8pe4qZOWBiQZUH8C6M1brr6fH3YpB7/WGUo4NlQI4gzTMF62cJr+IdHOkq3mnpaYTysYU8v7FUmc2wbVrfO+OniAVvdbE/1Eba28ncsVyibWvQV2Q2aYg/wIqTmFo7sS6SvDBF0s+QQEF/sLd5Q89AbZyefvPWxm1+KfCrGNfZf1X6bm1sVpD5Z0dFBrEdDrusp5Wj23sL5CB2dJtRN7+ZZWykRwNG8HJGzcxLEPUpQm8RCZ+WYIBaWFvhPZwrVe9f2w6K8dKzd1VCSbwlR6v59EfBHgi+wLdOXdtkd7ShUHtEFHliEge/gDhKdROMWhw4DTsk2ST7wqvF0O/pzIYdE9EO3E4BeNCyrnZTUP4Sle3sGErfnsxWudiBmwufzypWLb8RWOuDwxlwrgC8Nqqf/p+3wbzw4t+rSvq6IdjVoAsmo53ilun2jcq9l1MhkBv/Lwn5iYTqiI5Xck3UVBmK6OTfRfToqe3gIP59YunfOnyO7IFvHuleiH9g4YYx313Ux3lNz+CZI5s6E8/A668D03vUalxcNEQ/CkOLDZ3b9j4LSg2LMdIiHRDlm6PiToUByW4QEvtPfOHRPiRGn/CqXtGRa5XJ2XsHedOTQPpv/GVNpuLnOOGzApct9MQICs+e9yEItzZi4aohAR+JKeV38zKMKWiq2NqMZl+gNxnCYX3rYLyq/ulmbdUnmH3uyAbeiqQbfQM9DifzaVe/B80XmFCSDutea0VWSo7B2YUlSy4swm78YAiu8Loqb1oTF6knOV2CuYowCbWzBsvPzf+m0rxAMVhgyXbqcqHIB9a2z9Qo2ECoDpGtobaIaZsHI6fr9AYLE0MXiNsJG5ADD cT41+ZZF 1Uqbi6cvWH3Gjlm5OPmwlTX3jiNLaq3f7HHlQQxFk3W6cGEN7hnofavs6yk1SLukJZr22PW+NvHrdGYZEnWPMuB5fHfR7MzTk6RdE2E5LC6MmP2PU2Me0mbt/FHdEr7CyWjg5DqY7eNuy+vgjMoAJJ9c8+6Bk1IU+bQvS7mrzTctsgOHcV18InwKWy0qcKXTENfeAmHAQ2xhzAiUUgWVWZbFhip1ddWLAciJAMHDDQdsHIqXzRORR7o58JF8OU7sVtGuLUXxS3A1r9tHKlQGCyFQwqx88iHh4mAD2p5qNxPQX6zK0HAsb2+1VY1fPtoUlUAs2WXaBdhNNo4g= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000738, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Linux 6.10.10 with CONFIG_READ_ONLY_THP_FOR_FS=3Dy, madvise(MADV_COLLAPSE) on =C2=A0program text fails with EINVAL. To reproduce, compile the reproducer with clang -g -o text-hugepage text-hugepage.c \ -fuse-ld=3Dlld \ -Wl,-zcommon-page-size=3D2097152 -Wl,-zmax-page-size=3D2097152 \ -Wl,-z,separate-loadable-segments and run: $ strace -e trace=3Dmadvise ./text-hugepage madvise(0x400000, 2097152, MADV_HUGEPAGE) =3D 0 madvise(0x400000, 2097152, MADV_POPULATE_READ) =3D 0 madvise(0x400000, 2097152, MADV_COLLAPSE) =3D -1 EINVAL (Invalid argument) (the funky linker options are needed to make sure the .text vma spans a hugepage). I say "possible regression" since I haven't tried it with an older kernel, but I believe it worked at some point or other seeing that others managed to get it to work. =3D=3D=3D=3D text-hugepage.c =3D=3D=3D=3D #include #include #include #include #include static void try_remap_text_segment() { FILE *fp =3D fopen("/proc/self/maps", "r"); if (!fp) { return; } char *buf =3D NULL; size_t n; while (getline(&buf, &n, fp) >=3D 0) { char *lstart =3D buf; char *lmid =3D strchr(lstart, '-'); if (!lmid) { continue; } *lmid++ =3D '\0'; char *lend =3D strchr(lmid, ' '); if (!lend) { continue; } *lend =3D '\0'; =20 size_t start =3D strtoul(lstart, NULL, 16); size_t end =3D strtoul(lmid, NULL, 16); uintptr_t some_text_addr =3D (uintptr_t)&try_remap_text_segment; if (some_text_addr >=3D start && some_text_addr < end) { end &=3D ~(uintptr_t)0x1fffff; madvise((void*)start, end - start, MADV_HUGEPAGE); madvise((void*)start, end - start, MADV_POPULATE_READ); madvise((void*)start, end - start, MADV_COLLAPSE); break; } } free(buf); fclose(fp); } void huge_function() { // Make sure .text is has a huge page full of stuff asm volatile (".fill 4000000, 1, 0x90"); } int main() { try_remap_text_segment(); } =3D=3D=3D=3D end text-hugepage.c =3D=3D=3D=3D