Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932513AbcCBV6T (ORCPT ); Wed, 2 Mar 2016 16:58:19 -0500 Received: from g9t5008.houston.hp.com ([15.240.92.66]:48439 "EHLO g9t5008.houston.hp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932435AbcCBV6Q (ORCPT ); Wed, 2 Mar 2016 16:58:16 -0500 From: Toshi Kani To: mingo@kernel.org, bp@suse.de, dan.j.williams@intel.com, rjw@rjwysocki.net, akpm@linux-foundation.org Cc: linux-nvdimm@ml01.01.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 0/4] Support persistent memory as reserved type in e820/EFI Date: Wed, 2 Mar 2016 15:50:52 -0700 Message-Id: <1456959056-12316-1-git-send-email-toshi.kani@hpe.com> X-Mailer: git-send-email 2.5.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2043 Lines: 53 ACPI 6.0 defines persistent memory (PMEM) ranges in multiple firmware interfaces, e820, EFI, and ACPI NFIT table. This EFI change, however, leads to hit a bug in the grub bootloader, which treats EFI_PERSISTENT_MEMORY type as regular memory and corrupts stored user data [1]. Therefore, BIOS may set generic reserved type in e820 and EFI to cover PMEM ranges. The kernel can initialize PMEM ranges from ACPI NFIT table alone. This scheme cause a problem in the iomem table, though. On x86, for instance, e820_reserve_resources() initializes top-level entries (iomem_resource.child) from the e820 table at early boot-time. This creates "reserved" entry for a PMEM range, which does not allow region_intersects() to check with PMEM type. This patch-set introduces devm_insert/remove_resource(), and changes the NFIT driver to insert a PMEM entry to the iomem table. [1] https://lists.gnu.org/archive/html/grub-devel/2015-11/msg00209.html Patch 1 fixes __request_region() to handle inheritance of attribute properly. This patch is independent from this series. Patch 2 adds remove_resource() interface. Patch 3 adds devm_insert_resource() and devm_remove_resouce(). Patch 4 changes the ACPI nfit driver to call devm_insert_resource() to insert a PMEM range from NFIT. --- v2: - Change the NFIT driver to call insert_resource() to insert a PMEM entry when necessary. (Dan Williams) - The NFIT driver still needs to allow unloading. (Dan Williams) --- This patch-set is based on the tip tree, which has the following patchset. https://lkml.org/lkml/2016/1/26/886 --- Toshi Kani (4): 1/4 resource: Change __request_region to inherit from immediate parent 2/4 resource: Add remove_resource interface 3/4 resource: Add device-managed insert/remove_resource() 4/4 ACPI: Change NFIT driver to insert new resource --- drivers/acpi/nfit.c | 30 ++++++++++++ include/linux/ioport.h | 6 +++ kernel/resource.c | 127 +++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 155 insertions(+), 8 deletions(-)