From patchwork Tue Apr 3 14:24:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oliver O'Halloran X-Patchwork-Id: 894607 Return-Path: X-Original-To: incoming-dt@patchwork.ozlabs.org Delivered-To: patchwork-incoming-dt@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=devicetree-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="URCKYRRM"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40FrwK6qdQz9s3M for ; Wed, 4 Apr 2018 00:25:21 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750950AbeDCOZU (ORCPT ); Tue, 3 Apr 2018 10:25:20 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:37633 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750786AbeDCOZT (ORCPT ); Tue, 3 Apr 2018 10:25:19 -0400 Received: by mail-pl0-f68.google.com with SMTP id v5-v6so7035819plo.4 for ; Tue, 03 Apr 2018 07:25:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qNKZna/mb3UKPmT5vKseHxGyq/MnldxTgdUZXi1nWsI=; b=URCKYRRMGGhPkXoxxUhH2y8mTV0r/h6aDhS0oB5NImOeemEBMhOGs/faRZNbo6e2oi ljYt1i63ebv4w6XPDrvU3nKtdBGOzbeVS+SswKJDlw2UaCK/eO6bTGUJgrTsGD+BvQmI webrcxmLU/LM5O+ys/4QOJ6TKr4AIDN27VXhHyhreOy/lvLDZfINiU7FAadhokB5bWQm eq0tPq6Obpevs2ED2XvrCL1cMPk3pj7KnGKrxyWeBrxYQ8vkD2j0dyImDhgthe0/ni4T mgOa6xVTDkXKCh8DcgwcePY+oMrW33q/9SBAedg+DCLEuJblLGa/lGJ5eVHIuwLQV4ZP ha1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qNKZna/mb3UKPmT5vKseHxGyq/MnldxTgdUZXi1nWsI=; b=koeBorheo1UbBeEJ37OFB+lLfBs/mVofMxcItReOF1TjRcDk95cQkEV6rXIKu9HIDd ie/vID5XHFPbkngYgoaoI6TljjyzghvrPxUoChW9YLdGA0cdmY2QUrysG13uuIIKS81t 9lCuQERMjpimRoaOj1WsthjeTJMk22W/8H5Roratg+g/0e4qAIejGySVJr4hFwXWojau k1KxA8pUKzSSgPvF6Nan4hOkTifxAZWtFh/HKcif24FjsBWI93C6/cSKaOirzd1mwWEc sOAqT3pdVCn3mD0CehyNuKQFaVhbRS8m6ZJ1TrvZwA0iyPpcTseuKC+jbmU496Se9XEL qzfQ== X-Gm-Message-State: AElRT7EsfKhaAez0Ole5RD4d0H8AY9vWC6+wx9zOb8/+HWHRA9qJ6lM5 t2k7/Eqyyc9Skaj1bT57Res= X-Google-Smtp-Source: AIpwx48mPF5o0/o4ZDE3MPKM3mAL/AlxTvm25Ty/CeQiG8HiLQHN12wO7xvLjuAQu7zCDsKHOfZTrw== X-Received: by 10.98.11.144 with SMTP id 16mr10721800pfl.228.1522765519209; Tue, 03 Apr 2018 07:25:19 -0700 (PDT) Received: from localhost.localdomain ([61.68.80.171]) by smtp.gmail.com with ESMTPSA id j83sm6987587pfe.178.2018.04.03.07.25.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Apr 2018 07:25:18 -0700 (PDT) From: Oliver O'Halloran To: linuxppc-dev@lists.ozlabs.org Cc: linux-nvdimm@lists.01.org, Oliver O'Halloran , devicetree@vger.kernel.org Subject: [RESEND v2 3/4] doc/devicetree: Persistent memory region bindings Date: Wed, 4 Apr 2018 00:24:14 +1000 Message-Id: <20180403142415.30083-3-oohall@gmail.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180403142415.30083-1-oohall@gmail.com> References: <20180403142415.30083-1-oohall@gmail.com> Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Add device-tree binding documentation for the nvdimm region driver. Cc: devicetree@vger.kernel.org Signed-off-by: Oliver O'Halloran --- v2: Changed name from nvdimm-region to pmem-region. Cleaned up the example binding and fixed the overlapping regions. Added support for multiple regions in a single reg. --- .../devicetree/bindings/pmem/pmem-region.txt | 80 ++++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 81 insertions(+) create mode 100644 Documentation/devicetree/bindings/pmem/pmem-region.txt diff --git a/Documentation/devicetree/bindings/pmem/pmem-region.txt b/Documentation/devicetree/bindings/pmem/pmem-region.txt new file mode 100644 index 000000000000..de48dc8cd562 --- /dev/null +++ b/Documentation/devicetree/bindings/pmem/pmem-region.txt @@ -0,0 +1,80 @@ +Device-tree bindings for persistent memory regions +----------------------------------------------------- + +Persistent memory refers to a class of memory devices that are: + + a) Usable as main system memory (i.e. cacheable), and + b) Retain their contents across power failure. + +Given b) it is best to think of persistent memory as a kind of memory mapped +storage device. To ensure data integrity the operating system needs to manage +persistent regions separately to the normal memory pool. To aid with that this +binding provides a standardised interface for discovering where persistent +memory regions exist inside the physical address space. + +Bindings for the region nodes: +----------------------------- + +Required properties: + - compatible = "pmem-region" + + - reg = ; + The system physical address range of this nvdimm region. + + If the reg property contains multiple address ranges + each address range will be treated as though it was specified + in a separate device node. Having multiple address ranges in a + node implies no special relationship between the two ranges. + +Optional properties: + - Any relevant NUMA assocativity properties for the target platform. + + - A "volatile" property indicating that this region is actually in + normal DRAM and does not require cache flushes after each write. + + If this property is absent then the OS must assume that the region + is backed by non-volatile memory. + +A complete example: +-------------------- + +Here we define three 4KB regions: + + a) A volatile region at 0x5000 on numa node 0, + b) A non-volatile region at 0x6000, and + c) A non-volatile region at 0x8000. + +/dts-v1/; + +/ { + #address-cells = <1>; + #size-cells = <1>; + + platform { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* + * This node specifies one non-volatile region spanning from + * 0x5000 to 0x5fff. + */ + pmem@5000 { + compatible = "pmem-region"; + reg = <0x00005000 0x00001000>; + numa-node-id = <0>; + volatile; + }; + + /* + * This node specifies two 4KB regions that are backed by + * volatile (normal) memory. + */ + pmem@6000 { + compatible = "pmem-region"; + reg = <0x00006000 0x00001000 0x00008000 0x00001000>; + }; + }; +}; + diff --git a/MAINTAINERS b/MAINTAINERS index 6ef38be700e8..fa3c9211d6ff 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8041,6 +8041,7 @@ L: linux-nvdimm@lists.01.org Q: https://patchwork.kernel.org/project/linux-nvdimm/list/ S: Supported F: drivers/nvdimm/of_pmem.c +F: Documentation/devicetree/bindings/pmem/pmem-region.txt LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM M: Dan Williams