Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp9580993imu; Wed, 5 Dec 2018 07:07:52 -0800 (PST) X-Google-Smtp-Source: AFSGD/Wrq39+YNko2j/ErKnFNq9ot/qYkCwJxMiKwOaAe3eZxtOUH1+IfqRO1/nknMsi31jkU7Fd X-Received: by 2002:a63:dc0c:: with SMTP id s12mr19851759pgg.398.1544022472382; Wed, 05 Dec 2018 07:07:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544022472; cv=none; d=google.com; s=arc-20160816; b=rjTbVsUR7jL1IhDR+HWgwfr5LZkOqC4r+w2XOnMjPAZeW/GCb0z/tvOZy6XWu/NSdI 77zzF855Au7DfMPvsgGabxz+5Uxg9G8YRzr9egMfC3QkDwEfkpm72sqsNHBGMV0/25tY QPLQkirk7wvvzYMXZnzefJmWGARm4SBXZl87+6/2CuegcloiakncZTtE157uRFozab1I 9dnmbAqTf4B5+WYhsoEgAbnGdRV/Upl39ZDOO+3++w+K+9kUZF4Zi4wfPhSvfwqtcj6Z 7QgOpoMx9PgeBHOc/RFZw2E0CU22TFbzz3ow87WuIgFyUdgcZG+jNYuP8AwWhXzC9xJG qCSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:autocrypt:openpgp:from:references:cc:to :subject; bh=JhsRTYJiB+ZSv390iJPBTNDZPGyAFDW7XaKuZzUAU9U=; b=l/VgcF8ZIqn4g0X3lnwrYV12F0UH944sFE+S9lWcjKHyKUfS1X0Bdw0oNtDOdrOjgC /zMqSMcX86QOmCZvUQ1Rpn9LnsgrgBdxlRyltFeeKbqqZabjRtjiWHASpgswNFhPibFp zMiaIjay+0QT+I11CG4Luc9PngLwnxXo15CTF7Av5pnxXfObGcrBRjs0S0gnpldh0k/m VAuFcRczwhjC1zljy2La1aGFGuOGpfJpJQ29ZToIHKd86L2d2FsYFBUMk5ZCwoQLSmbj af3JDAlIRfkUvLyOpRjE2vvz6m8bZgsZXr5B+nVLrx29+cA12JTsqgcjhoiMbf5P5pNf Ippg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q7si20346784pfa.99.2018.12.05.07.07.30; Wed, 05 Dec 2018 07:07:52 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727888AbeLEPF0 (ORCPT + 99 others); Wed, 5 Dec 2018 10:05:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:57403 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727177AbeLEPFZ (ORCPT ); Wed, 5 Dec 2018 10:05:25 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 230843B714; Wed, 5 Dec 2018 15:05:24 +0000 (UTC) Received: from [10.36.116.113] (ovpn-116-113.ams2.redhat.com [10.36.116.113]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4964C5C545; Wed, 5 Dec 2018 15:05:13 +0000 (UTC) Subject: Re: [PATCH RFC 7/7] mm: better document PG_reserved To: Matthew Wilcox Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-m68k@lists.linux-m68k.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-mediatek@lists.infradead.org, Andrew Morton , Stephen Rothwell , Pavel Tatashin , Michal Hocko , Alexander Duyck , Anthony Yznaga , Miles Chen , yi.z.zhang@linux.intel.com, Dan Williams References: <20181205122851.5891-1-david@redhat.com> <20181205122851.5891-8-david@redhat.com> <20181205143510.GA17232@bombadil.infradead.org> From: David Hildenbrand Openpgp: preference=signencrypt Autocrypt: addr=david@redhat.com; prefer-encrypt=mutual; keydata= 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 SE+xAvmumFBY Organization: Red Hat GmbH Message-ID: <46d0e90f-f0bb-815e-7a5b-4429de1c502a@redhat.com> Date: Wed, 5 Dec 2018 16:05:12 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1 MIME-Version: 1.0 In-Reply-To: <20181205143510.GA17232@bombadil.infradead.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 05 Dec 2018 15:05:24 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05.12.18 15:35, Matthew Wilcox wrote: > On Wed, Dec 05, 2018 at 01:28:51PM +0100, David Hildenbrand wrote: >> I don't see a reason why we have to document "Some of them might not even >> exist". If there is a user, we should document it. E.g. for balloon >> drivers we now use PG_offline to indicate that a page might currently >> not be backed by memory in the hypervisor. And that is independent from >> PG_reserved. > > I think you're confused by the meaning of "some of them might not even > exist". What this means is that there might not be memory there; maybe > writes to that memory will be discarded, or maybe they'll cause a machine > check. Maybe reads will return ~0, or 0, or cause a machine check. > We just don't know what's there, and we shouldn't try touching the memory. If there are users, let's document it. And I need more details for that :) 1. machine check: if there is a HW error, we set PG_hwpoison (except ia64 MCA, see the list) 2. Writes to that memory will be discarded Who is the user of that? When will we have such pages right now? 3. Reads will return ~0, / 0? I think this is a special case of e.g. x86? But where do we have that, are there any user? In summary: When can we have memory sections that are online but pages reserved and not accessible? (one example is ballooning I mention here) (I classify this as dangerous as dump tools will happily dump PG_reserved pages (unless PG_hwpoison/PG_offline) and that's the right thing to do). I want to avoid documenting things that are not actually getting used. > >> +++ b/include/linux/page-flags.h >> @@ -17,8 +17,22 @@ >> /* >> * Various page->flags bits: >> * >> - * PG_reserved is set for special pages, which can never be swapped out. Some >> - * of them might not even exist... >> + * PG_reserved is set for special pages. The "struct page" of such a page >> + * should in general not be touched (e.g. set dirty) except by their owner. >> + * Pages marked as PG_reserved include: >> + * - Kernel image (including vDSO) and similar (e.g. BIOS, initrd) >> + * - Pages allocated early during boot (bootmem, memblock) >> + * - Zero pages >> + * - Pages that have been associated with a zone but are not available for >> + * the page allocator (e.g. excluded via online_page_callback()) >> + * - Pages to exclude from the hibernation image (e.g. loaded kexec images) >> + * - MMIO pages (communicate with a device, special caching strategy needed) >> + * - MCA pages on ia64 (pages with memory errors) >> + * - Device memory (e.g. PMEM, DAX, HMM) >> + * Some architectures don't allow to ioremap pages that are not marked >> + * PG_reserved (as they might be in use by somebody else who does not respect >> + * the caching strategy). Consequently, PG_reserved for a page mapped into >> + * user space can indicate the zero page, the vDSO, MMIO pages or device memory. > > So maybe just add one more option to the list. > -- Thanks, David / dhildenb