Message ID | 20230123202347.317065-1-sidhartha.kumar@oracle.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1800489wrn; Mon, 23 Jan 2023 12:26:06 -0800 (PST) X-Google-Smtp-Source: AMrXdXtTrOLrV6Dh+Nho6MBq7qj7JuWOrqv2VdgInRLUeeZHX+Wk/jaF2KvHIxD4KxxJOaQ5Byf7 X-Received: by 2002:a17:90a:a895:b0:229:d400:11c1 with SMTP id h21-20020a17090aa89500b00229d40011c1mr20427891pjq.10.1674505566660; Mon, 23 Jan 2023 12:26:06 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1674505566; cv=pass; d=google.com; s=arc-20160816; b=NDsWjbrO9hr3Z/ihmSBZ7X3uvtaFJeadyc+SvywkWWqfWjM9vF2Ghl97Y0yoHQAVmD 4RWc2XaypxIYVeVB270ebSdXyXvdgiQpfxLyhEzGMMCuCt4HzYpRsX1uL4/ZqWNUXNDr cJ6IfoU6rgj66gi5vZ1sX058ZsNFKOA570Vv6HEX96sTSyFFYfO2eX4v6rPlpXvijWLh E6SP835XpZJNY8B8OTUX71ZdO2XrZTMc3oXvuJH6LA/lOmAwYsBhF0icQIm/lRQgAPQs k+XWmMJQbFSeYCRhH875A8UxZ7Wn2dPJohKKQnLtd1wQb8UYdy2JGCYgNoGfsCce2r/W zXig== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :message-id:date:subject:cc:to:from:dkim-signature:dkim-signature; bh=JfFX0b2CIlyocqogZlxkBT4HhqRHSXFipYtB+o3pynY=; b=dA71GYAyUGtg4B3GoLbDHPjPPTkNbxtoJnqGzMkxiR2NefPDstvh99Md37ECKwZ09+ wWaB308PmROdn2mUgpkrqVIVF2qW68qyrK3UhjnOL1FpTWtoIbuPys/UUJSsPd37ljkw 3dr5QdTRevOTSTW7Z0DxCNg9NQqnkpFTA7fgldszYQ0nYtwYIgIx926jM/G7OBA1pq1U C8dt1B3uinHZO9BcnJozbi+Xz/3+edCvgyxM+YdXG0jzHozS17Hxp5ldYGFHuRR2oq7s n3HQbkHZPhQiDPllnDSCSas+m54U1kQvKtzo6XqZvLoqfbPKREilGUHOYLTUds2nTSUo Wmaw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2022-7-12 header.b="YY1P+/lu"; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=hspzSNv2; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c6-20020a63da06000000b004a6549b92afsi51508526pgh.699.2023.01.23.12.25.54; Mon, 23 Jan 2023 12:26:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2022-7-12 header.b="YY1P+/lu"; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=hspzSNv2; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231771AbjAWUZH (ORCPT <rfc822;rust.linux@gmail.com> + 99 others); Mon, 23 Jan 2023 15:25:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231485AbjAWUZE (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 23 Jan 2023 15:25:04 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C8D43212E for <linux-kernel@vger.kernel.org>; Mon, 23 Jan 2023 12:25:03 -0800 (PST) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 30NKDmbQ022179; Mon, 23 Jan 2023 20:24:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=JfFX0b2CIlyocqogZlxkBT4HhqRHSXFipYtB+o3pynY=; b=YY1P+/luo4+SsLljrQ4hlJtKuMPPSNxnR1LJlt1NqZk1w3HOYu1HZlS9KVAAKFJz4jrD MqbkBp+EzKLcoCCRmHzHV4d5yveuVIrlrnQGSlTpogoKXIEynkJLEo6qmW/QzZeXkkba in3MIrTDnZTMP+rp6xXBijqzRTxUZakq8iU/QZs0EUsfxT/kh2Eyg6F45Z4MnHOt7cUl wlpj9LGQGfLVcSeqWDD6OcERZN23OcG/z+WznCbUefbaACYinMcGzBCjbYEOfc6ROr4s Xz1VgSZWuBIKpoed3WGZSlvFSeFUqBd3pAuWcgZSUoNdpSZppRbD3c4miBh67JDpygnt Eg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3n86u2utqr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 23 Jan 2023 20:24:45 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 30NIhMLi040190; Mon, 23 Jan 2023 20:24:44 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2176.outbound.protection.outlook.com [104.47.59.176]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3n86g41fcs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 23 Jan 2023 20:24:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FamlMBvYphuLe3JFnQJvSEYokYqyd/bUkHWEfcFCM7kJfQfo1iZ0/ZlUW3ZsTZcblQnxDlHcznehO2JPSn1KbThBOGcFLO1v7+4m8EwRDukPQ24/i9YEYdB/eiN6kADn8kzEWnwZph2pb9YT9NCp7z9FT5ZYNkxW2HzoiwCDh9wRE/OT/0WFW4gE/zrqUYfDJDab1cLzFFJGeEpJ0VcP0LgVd1rONFMTsggxNH54VA8vBTXbMP3rMI0NrIIBJkpyHGAEFAa8Iwe9PbA9Huf53EuPzaMXLYCoEyRwcFEDRCIOE6XdxQ9qS9ZKjR5gedug+HD4xP3nv4DLSe48py/69g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JfFX0b2CIlyocqogZlxkBT4HhqRHSXFipYtB+o3pynY=; b=XorSyspAm9tWYV9TQc7F996dnXz1JL5xasRY25BH1rkUQ/q9pglWrPFi9dQVtUK3T/cKgh4X56nS0/5Vq2cz/NPLGF3eZ/PS+FDrRIbnJrvd41TFkwGxKL9fFY+jAjYKq/SEup/9D/IOyVT9SRNPbo/9fyy/kl9sbtAJt4W476vZDaiMDnOMVOkG7iDhJ0wScg//8NAIdsQyOtu9tqqz7SOz7v/sbFmGFT/oKMc94H1v6QDG1f1Sdhn8StsbKNfRv2DyPWlgIcOhX4hp+rt/CkRlWBkj4oV/JgANi6O6UTV9x4PE6ox0GE4UOPJKM/n8eXgXSWluvNT4Uzpl8xpu3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JfFX0b2CIlyocqogZlxkBT4HhqRHSXFipYtB+o3pynY=; b=hspzSNv2y8NMUTTw69RRMQH+3qFyeLXrb6cFbGvAuGsNFNZgeXWQiFb8WCFZ3BiCuDwxSU4y8Zex7KHaGOqImzKr0iD0pZvCt04byTyHA4wb1PGjsjP7oJlUZYOTrB0usd5lY4koOD8EkTdguX/C2tcw2G2J98eCOBlYPF5VLt4= Received: from BLAPR10MB5106.namprd10.prod.outlook.com (2603:10b6:208:30c::14) by DM4PR10MB6013.namprd10.prod.outlook.com (2603:10b6:8:ae::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.16; Mon, 23 Jan 2023 20:24:43 +0000 Received: from BLAPR10MB5106.namprd10.prod.outlook.com ([fe80::682f:125b:f637:f89f]) by BLAPR10MB5106.namprd10.prod.outlook.com ([fe80::682f:125b:f637:f89f%4]) with mapi id 15.20.6043.005; Mon, 23 Jan 2023 20:24:43 +0000 From: Sidhartha Kumar <sidhartha.kumar@oracle.com> To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: akpm@linux-foundation.org, willy@infradead.org, david@redhat.com, osalvador@suse.de, Sidhartha Kumar <sidhartha.kumar@oracle.com> Subject: [PATCH 1/2] mm/memory_hotplug: remove head page reference in do_migrate_range Date: Mon, 23 Jan 2023 12:23:46 -0800 Message-Id: <20230123202347.317065-1-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.39.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BY5PR03CA0020.namprd03.prod.outlook.com (2603:10b6:a03:1e0::30) To BLAPR10MB5106.namprd10.prod.outlook.com (2603:10b6:208:30c::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BLAPR10MB5106:EE_|DM4PR10MB6013:EE_ X-MS-Office365-Filtering-Correlation-Id: 2e9de00e-bac8-45f4-e112-08dafd7fdc6f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fJkvCticmoHWQ08s36GoSqm7oVXD5RUpWZQO5k3AZOOxK8OS5Qm+dA03oqSC4tYoLFr6P+OVsf5E9ncb8rUFu0Gx1AxZJf78dSGZewB4nJvDT9+x5Asl/XqmrXurh5TCwlObwzYS/ThshWocg14rLhXrV4yi3SN/23m/PvjYBOQ9nz9yoQAnYGDvbGItvkBDIV0FArg5R3qGqSc/88gpCpnWpI+NRaq25C/HqbWtRTfxUw0JDmzk/ON3rVwUk/KXAFfGccq2jRtWM1+5QyYs+feAJTwaO2KBZRoBkVHtxQSFWdjhPsFFE+KMeyWFD0wEjgtQSYRilD4guZZMEsYW23yVJ9SuAznX46HhYgtyxu509gS/9m4t1s7O3SZDZteEIcM27bF9YdZ0aefIVmwtErWQuKLGPspmwkuvqx0v7Y+Ck79N3xKdLC6Xqb/FO6nB6fKejmw51ue1jUsSyGg1r6RHr+WyFiLl0jICr3UzfkXf6Ail0spPD66cFcVEDVinRNH/wmcGVX9uxkY01wNeLEuB4+WIoDDsDaTiZ44zvKwP5U2YvD+DzV46pK1Le5yEyyE2+OYEkopdg2q6odP7/QnkD/PgAuMtcYDKyFt9qducYxHHz3EzmtnCwuwm+qH30Ql2pdjYrmqIErhnTWFBBQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BLAPR10MB5106.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(376002)(346002)(136003)(39860400002)(366004)(451199015)(36756003)(316002)(66476007)(86362001)(66946007)(66556008)(4326008)(8676002)(26005)(186003)(6512007)(107886003)(83380400001)(6506007)(478600001)(6486002)(2906002)(2616005)(1076003)(5660300002)(44832011)(8936002)(41300700001)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 80xXFqETGEL7MMrJCd7KIPcyweDlNL+96lTObhWTkeYJYQYM5JcEtxWTnbdWMsiRNeeub7cULNqcwsgzXg4ccTfWFTd2id2A6CKeI/KakAUE4vbLQiOxmQ7QZit3K1eC8LghP2L333vJ3HwZIfCZMa3hvOGEtk24b2/b5wLYGdL82LCpFpCQIXm5uBPku4h4ANeKCypZavcnzc4FMm4ZZOK7XnvyfMynrVEn0ZjYcL4f/oA8ul2wHJp3exC85AAIg3s8Iw64l8uEwtF0qNWGB6CG0Ii0avTlDdmINif1P4VAViKObM2NJvfBA3ELk1UWWO23/fgpWCDU5f4IY03qLBFTGShpciZsLUo1HFU+ITFL+LqDa1m3xJuqS4lMUKHZLGRIV/ZxQE1wsFv1ux5uBHkQUA25YFQyrPZCV72pd3ms0yEnW3wAqcHaCv4qPYzZMSG0TOjNmjtziF067XmLCP44ykaPav89J1vDbSuTTNzwjC/LFdEXgWxz/K+0XOdmqffI24FS7EBQOaSVI5cnp4hpHYKrQkJPX2ukBZMj75CJ6RHvXZwnexyLNTSOFJ0lQJUCVytltT3o6BfiRlj/bFzikPLy6t2/wRpTRZKUoM6wAZn0JGFLK0jIlJLP5k+vUK/6JVuKwePoeN+1df3dEu1/X0A6REPdmZkGXWkVQQuyF546PktQYJn1H+VOSclqcWh7+x9p/9L5tf/ZR0WiZxnHijb4VN/Vt+CgmlLB+rb2xEcb8XmbAihnxHnuyt1yI3xSlfZyi0buJAe/6wyIy6w/CwBFVxyZPv17BBwpactM8Z2AnQPm1oFcM902zWavJMl7/3/5/4iKT/+b4grW+ySEZPaf6UEvFkRnBS4XTk24ySGafIIDxZCdducotOsBdOai9oKZb4EHKjoeTDPZk61Nj22zlKDeB0uYRJCnjtcPWnkjU1WaBkeDVAtwzFd99K9HX0XqNvJGguXUmry01fO8UdSCxKdvq94hPHa4MuCTrPsom/wfcrygxkST5n2uMhMeKomapOKJhcjYLwHXLmd9wnp5q6VlLhI9XI45RgHMNBdDWuo7W0y8fPtJ26UG8XG/JZMTgxEkcNIXkngyMoWFqT5Y4EFP8S3YI+vaxIMt4AvLDE2YXi4vVUYq/3FxIhfOhzrFvA6wc3Yz0+Gqn8KLBtLkdSUUPqWcuQHgCXybuYbMoUma63Mbjzh3xwG862s9M4OL6KzMJGixEukQoaUOxvYm0FMJ4IpV52JAAkZ2aniy2zNb7II7EGkSDoAYSnDzF5CpzdMKXk3rxf4SqnGJGQ8qjaPscwLA7BRTC0DKMyJc6FubtF7Wvkydjs6q6XnDXOziYoO7Gmzd6BNK+TtLgme+S0LEbgyO+af8kZrPsAmRKNnRLO6V14WBGkMNM0dqsIFno45VJqew7JqRKAR3NLHaDY2lbBwquOJN4iPZypO+IQ7M1OC6ECjjdDNKYnZuyDXqc2TBJML31MgVjYlWmpMC3g2/uQWRkkRMU0ojL+KLJMoh6c8z2bgDjnjZVpZeHuhr+d+TUt+SBTXGLM4yUIBkNWNdABhh0DFEXLdtqPJW8cy64G0+Qpmbz/v2fCJgS2/14xUSHqOCJbWDxA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Bd59JLjyDkafp7U2UZy7uKnyEjlBaUmLo8sxy3u3qFta+bytgOa84REUW1BsYFN8vvF0LxhvrhB0sG2iGzrG3Xv8rUDuTuWUYOlxjEVBRuQ3ONor7iK4hcrED54hmUDdY+YRI0Mszo830BjIRJXlbrCuDRfSuZht3ZNK9OFTpWanavEX6Yez4iZjeFwheADE+Mapk1wL5cP89rXZlLQ+AfkqJhM0FtwW3rvRSM1v/OYV2QHb8hcf2jzuLSmkWzWd4/3D75WQuHB3a0aQ7ujJ6ksoG7GKdkZ0Mp//+2eYjTbRSl3fh+tWkUQif2llAlTcFy8ZmyqmZJ0tDP6d6vCtMf/UE5gnq6cBRAqTj14qKgzPXENL0erFdiMKyy1S9m9aRy6mbddlmxsIrJ+Pw09vSrS8x7T7EfKQNvdpS6VYW0eaANnWS9xmvyvcA1BMwi4jTuldbrtnXLIG62gNr0auvpjP1+3w4quHmjUSiUJ9w/5H2VCl2piErO2FoOdoEesD8gFR0srs59bNxR5JepYq7xLlrM4z2OC1ceNe/IsZvi4gej6G0VVz6qGHZ+MdEQJs3mmRbgF/ROhpNeOtUyCVrrSdhXiHjqLCG9nAAaePR5k1d76bj3t1XrLw22gEsjPRAgByJMnAoR0K7QLlJQs76j8wVaEk6TD6ncdLP+iQmOJ8j8dhUUHxxm83E9LrVJmcbftFoUtOhkjlGxIwd1GuZNAZiMdY99WNipXGHxbZisk4p6M19Ox1bfKGoIX5bwzyeHPmLAwPFOjeZLYO6apq1qvTKCY1EEmlBq5S01XZ5QANGMd/hqqKIFVmIExVkpsNUgxnOl5Nt603u3aBLwL3yuNnK3HZqxG/caTgxD4OOnv/YxSSg+MvD8Zd2Jw2tLiVfmeaajZY7lwKSwe4YLAQPVdeghCbkrrd0NvM40KOoj7+TdRZXczShK5LATDHSHRM X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2e9de00e-bac8-45f4-e112-08dafd7fdc6f X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5106.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2023 20:24:42.9683 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rV9rdyA2Mb2nuAK1zx5849jZnBK/Aw0NPk+y6xxGm4ZBe8TRFFQKt7igNLOIxvzE/5EYsqt9QK6R/QtQWpyQZY7BOzQUwOuAsp3tRn+q1UY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6013 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-01-23_12,2023-01-23_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301230195 X-Proofpoint-GUID: ZtoY5MbMW4W_QoSf9eh0B_g7F_Do_80K X-Proofpoint-ORIG-GUID: ZtoY5MbMW4W_QoSf9eh0B_g7F_Do_80K X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755846348596442318?= X-GMAIL-MSGID: =?utf-8?q?1755846348596442318?= |
Series |
[1/2] mm/memory_hotplug: remove head page reference in do_migrate_range
|
|
Commit Message
Sidhartha Kumar
Jan. 23, 2023, 8:23 p.m. UTC
The head page variable is not needed as we can use folio equivalent
functions.
Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
---
mm/memory_hotplug.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
Comments
On Mon, Jan 23, 2023 at 12:23:46PM -0800, Sidhartha Kumar wrote: > @@ -1637,14 +1637,13 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) > continue; > page = pfn_to_page(pfn); > folio = page_folio(page); > - head = &folio->page; > > - if (PageHuge(page)) { > - pfn = page_to_pfn(head) + compound_nr(head) - 1; > + if (folio_test_hugetlb(folio)) { > + pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; > isolate_hugetlb(folio, &source); > continue; > - } else if (PageTransHuge(page)) > - pfn = page_to_pfn(head) + thp_nr_pages(page) - 1; > + } else if (folio_test_transhuge(folio)) > + pfn = folio_pfn(folio) + thp_nr_pages(page) - 1; I'm pretty sure those two lines should be... } else if (folio_test_large(folio)) pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; But, erm ... we're doing this before we have a refcount on the page, right? So this is unsafe because the page might change which folio it is in. And the folio we found earlier might become a tail page of a different folio. (As the comment below explains, HWPoison pages won't, so it's not unsafe for them). Also, thp_nr_pages(page) is going to return 1 for tail pages. So this is a noop, unless page is a head page. It's all a bit confusing, and being memory-hotplug, it's not well tested. More thought needed.
On 1/23/23 12:37 PM, Matthew Wilcox wrote: > On Mon, Jan 23, 2023 at 12:23:46PM -0800, Sidhartha Kumar wrote: >> @@ -1637,14 +1637,13 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) >> continue; >> page = pfn_to_page(pfn); >> folio = page_folio(page); >> - head = &folio->page; >> >> - if (PageHuge(page)) { >> - pfn = page_to_pfn(head) + compound_nr(head) - 1; >> + if (folio_test_hugetlb(folio)) { >> + pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; >> isolate_hugetlb(folio, &source); >> continue; >> - } else if (PageTransHuge(page)) >> - pfn = page_to_pfn(head) + thp_nr_pages(page) - 1; >> + } else if (folio_test_transhuge(folio)) >> + pfn = folio_pfn(folio) + thp_nr_pages(page) - 1; > > I'm pretty sure those two lines should be... > > } else if (folio_test_large(folio) > pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; > > But, erm ... we're doing this before we have a refcount on the page, > right? So this is unsafe because the page might change which folio > it is in. And the folio we found earlier might become a tail page > of a different folio. (As the comment below explains, HWPoison pages > won't, so it's not unsafe for them). > Thanks for the explanation of why this is unsafe. Would it be worth to put this code block inside the if (!get_page_unless_zero(page)) continue; put_page(page); block found lower? My motivation for this series is the HPageMigratable call in patch 2 is the last user of the huge page flag test macros so a conversion would allow for the removal of the macro. I thought I could also remove the head page references found in this function, but if that would cause too much churn in a complicated sub-system it can be dropped. Thanks, Sidhartha Kumar > Also, thp_nr_pages(page) is going to return 1 for tail pages. So this > is a noop, unless page is a head page. > > It's all a bit confusing, and being memory-hotplug, it's not well > tested. More thought needed.
On Mon, Jan 23, 2023 at 01:08:49PM -0800, Sidhartha Kumar wrote: > On 1/23/23 12:37 PM, Matthew Wilcox wrote: > > On Mon, Jan 23, 2023 at 12:23:46PM -0800, Sidhartha Kumar wrote: > > > @@ -1637,14 +1637,13 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) > > > continue; > > > page = pfn_to_page(pfn); > > > folio = page_folio(page); > > > - head = &folio->page; > > > - if (PageHuge(page)) { > > > - pfn = page_to_pfn(head) + compound_nr(head) - 1; > > > + if (folio_test_hugetlb(folio)) { > > > + pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; > > > isolate_hugetlb(folio, &source); > > > continue; > > > - } else if (PageTransHuge(page)) > > > - pfn = page_to_pfn(head) + thp_nr_pages(page) - 1; > > > + } else if (folio_test_transhuge(folio)) > > > + pfn = folio_pfn(folio) + thp_nr_pages(page) - 1; > > > > I'm pretty sure those two lines should be... > > > > } else if (folio_test_large(folio) > pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; > > > > But, erm ... we're doing this before we have a refcount on the page, > > right? So this is unsafe because the page might change which folio > > it is in. And the folio we found earlier might become a tail page > > of a different folio. (As the comment below explains, HWPoison pages > > won't, so it's not unsafe for them). > > > > Thanks for the explanation of why this is unsafe. Would it be worth to put > this code block inside the > > if (!get_page_unless_zero(page)) > continue; > > put_page(page); > > block found lower? My motivation for this series is the HPageMigratable call > in patch 2 is the last user of the huge page flag test macros so a > conversion would allow for the removal of the macro. I thought I could also > remove the head page references found in this function, but if that would > cause too much churn in a complicated sub-system it can be dropped. I think we just have to be very careful when working without a page ref. Now, specifically to the matter of converting HPageMigratable(), I think that's fine. Your folio_test_hugetlb_##flname macro does not have a VM_BUG_ON_PGFLAGS(PageTail(page), page) in it, unlike folio_flags(). So it looks like even if your folio becomes a tail page in the middle of scan_movable_pages(), you won't hit a BUG(). Now, should we go further? Possibly. But I'm more concerned that we haven't really figured out which functions should be checking this. Maybe we should drop the BUG entirely and rely more on the type system (and people not casting) to prevent errors. We could go a lot further with the type system and define a new type for "might be a folio but we don't have a refcount on it". But we don't do a lot of work with unreferenced folios, so I'm not inclined to go to all that effort. Perhaps we want a folio_maybe_X() series of functions that don't warn if the folio has morphed into not-a-folio. I don't know.
On 23.01.23 21:37, Matthew Wilcox wrote: > On Mon, Jan 23, 2023 at 12:23:46PM -0800, Sidhartha Kumar wrote: >> @@ -1637,14 +1637,13 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) >> continue; >> page = pfn_to_page(pfn); >> folio = page_folio(page); >> - head = &folio->page; >> >> - if (PageHuge(page)) { >> - pfn = page_to_pfn(head) + compound_nr(head) - 1; >> + if (folio_test_hugetlb(folio)) { >> + pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; >> isolate_hugetlb(folio, &source); >> continue; >> - } else if (PageTransHuge(page)) >> - pfn = page_to_pfn(head) + thp_nr_pages(page) - 1; >> + } else if (folio_test_transhuge(folio)) >> + pfn = folio_pfn(folio) + thp_nr_pages(page) - 1; > > I'm pretty sure those two lines should be... > > } else if (folio_test_large(folio)) > pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; > > But, erm ... we're doing this before we have a refcount on the page, > right? So this is unsafe because the page might change which folio > it is in. And the folio we found earlier might become a tail page > of a different folio. (As the comment below explains, HWPoison pages > won't, so it's not unsafe for them). > > Also, thp_nr_pages(page) is going to return 1 for tail pages. So this > is a noop, unless page is a head page. > > It's all a bit confusing, and being memory-hotplug, it's not well > tested. More thought needed. Ehm, it is fairly well tested ;) As memory offlining keeps retrying, temporarily making wrong assumptions about a folio is acceptable, as long as we don't run into BUGs. It's certainly worth a big comment in a code, that this is all racy and that page migration code will stabilize. Now, we could temporarily take a reference, but ... common migration code will try taking its own ref to stabilize the page and would be confused about yet another ref (-> migration will fail). So we have to be careful about grabbing references on these pages, and how long we're going to hold them. Otherwise we'll break memory offlining completely :)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index a1e8c3e9ab08..ad09189786b1 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1624,7 +1624,7 @@ static int do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) { unsigned long pfn; - struct page *page, *head; + struct page *page; int ret = 0; LIST_HEAD(source); static DEFINE_RATELIMIT_STATE(migrate_rs, DEFAULT_RATELIMIT_INTERVAL, @@ -1637,14 +1637,13 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) continue; page = pfn_to_page(pfn); folio = page_folio(page); - head = &folio->page; - if (PageHuge(page)) { - pfn = page_to_pfn(head) + compound_nr(head) - 1; + if (folio_test_hugetlb(folio)) { + pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; isolate_hugetlb(folio, &source); continue; - } else if (PageTransHuge(page)) - pfn = page_to_pfn(head) + thp_nr_pages(page) - 1; + } else if (folio_test_transhuge(folio)) + pfn = folio_pfn(folio) + thp_nr_pages(page) - 1; /* * HWPoison pages have elevated reference counts so the migration would