Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755246AbcLNJMP (ORCPT ); Wed, 14 Dec 2016 04:12:15 -0500 Received: from mail-wj0-f177.google.com ([209.85.210.177]:36839 "EHLO mail-wj0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755018AbcLNJMN (ORCPT ); Wed, 14 Dec 2016 04:12:13 -0500 From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org, will.deacon@arm.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: catalin.marinas@arm.com, akpm@linux-foundation.org, hanjun.guo@linaro.org, xieyisheng1@huawei.com, rrichter@cavium.com, james.morse@arm.com, Ard Biesheuvel Subject: [PATCH 0/2] arm64: numa: fix spurious BUG() on NOMAP regions Date: Wed, 14 Dec 2016 09:11:45 +0000 Message-Id: <1481706707-6211-1-git-send-email-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1404 Lines: 33 This fixes the issue reported by Robert Richter where the fact that the node id of struct pages covered by NOMAP regions is not initialized, triggering a VM_BUG_ON() in the mm code. I know that this approach is the least preferred option by Robert, but it has been used successfully in the downstream Linaro Enterprise kernel, running on HiSilicon D05, which suffered from the same issue as Cavium ThunderX where it was originally reported. Given that the other proposed solutions either fail to solve the issue completely, or cause regressions in other code (hibernate), I think this issue is appropriate for merging now, and backported to -stable. If there are performance concerns, we can try to improve on this solution, which could include reverting patch #2 altogether, for all I care. Patch #1 fixes a bug in the generic mm code where a struct page is dereferenced before pfn_valid() is called. This should probably go to stable regardless of where the arm64 discussion goes. Patch #2 enables CONFIG_HOLES_IN_ZONE for arm64 numa, causing the kernel to no longer assume that all pages in a zone have valid struct pages associated with them. Ard Biesheuvel (2): mm: don't dereference struct page fields of invalid pages arm64: mm: enable CONFIG_HOLES_IN_ZONE for NUMA arch/arm64/Kconfig | 4 ++++ mm/page_alloc.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) -- 2.7.4