Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp4112606imm; Mon, 14 May 2018 02:46:36 -0700 (PDT) X-Google-Smtp-Source: AB8JxZo7cczswxNgtGd6ATfroAylBrVAXdkfeb8mWpqOxX1i02CcnLLqPo/nr4gE4MberRHqB3KM X-Received: by 2002:a17:902:7841:: with SMTP id e1-v6mr9289202pln.197.1526291196601; Mon, 14 May 2018 02:46:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526291196; cv=none; d=google.com; s=arc-20160816; b=GaRPgTLQvxNGXSQExsWPiCIiSnE+YG+aofVzNKKBeeDPXBJMOslTLUpehLZIXUh/i+ +qCfXJvSaFXaMOs8H+AOQQwonoUdlK+1KbO7xW7m0VMOW/UYuZVhmtAhuDHoCV4SbilJ PbJiG2IMutgO/AYbCEDDCA5gqKhWiPCRSRf8SrCkl1q2WtzNNRQpS15xPpXgsjdsG1Qz lDcw1XNPjGrBSN3KvZayMkmG+n764MmYDSBs3Q19jF6xV4Xkf5IRnBS9uBdrd5PPgpFY r89vld6g3NH8M9+f+K/RmusPV+oInlUE5gJa22XZbki2p+LHmkvb97rh+6x8IsD4xLd9 RwUg== 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:from:references:cc:to:subject:arc-authentication-results; bh=i2crS68eREPEjPl74KHe6/+xxd2x19lw0pO+F43LEco=; b=VAbkT4lVJHR5weaXOT1O4IwQHTGswsdcBLCA2OwMUoVmrAwuC7qkpx9X67WmTJTATI lunAhJn/DbDKl/vOpzPVWlusUDSXX0H628J3c8nvHDMQEZYR3rCYMQPaSgIqMfY93VQa Df6P8QkOcxDMsVi3eYs2/idX9SIeE6E0mk92UMAIz9Kt2FJB07SJsb1WetzUn51utPjp Lu93+G0wTFxAkFjc0wN5TxXLFbSflOak/f4/XRWnOAaK0z0gH4rmGO5vG0qlUg9U7yTT 46jUmWisWJ1bJ7qwaq1HQPctxY0y/Y0lgGaYSMmPVmCj+LzwrtVPVVeYJr0Suco9s1KA JYtg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q2-v6si1557197pgr.149.2018.05.14.02.46.22; Mon, 14 May 2018 02:46:36 -0700 (PDT) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751853AbeENJpI (ORCPT + 99 others); Mon, 14 May 2018 05:45:08 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:38126 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750760AbeENJpG (ORCPT ); Mon, 14 May 2018 05:45:06 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7D9B11435; Mon, 14 May 2018 02:45:06 -0700 (PDT) Received: from [10.1.206.73] (en101.cambridge.arm.com [10.1.206.73]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6781B3F25D; Mon, 14 May 2018 02:45:04 -0700 (PDT) Subject: Re: [PATCH v2] mm/ksm: ignore STABLE_FLAG of rmap_item->address in rmap_walk_ksm To: Andrew Morton , Jia He Cc: Andrea Arcangeli , Minchan Kim , Claudio Imbrenda , Arvind Yadav , Mike Rapoport , linux-mm@kvack.org, linux-kernel@vger.kernel.org, jia.he@hxt-semitech.com, Hugh Dickins References: <20180503124415.3f9d38aa@p-imbrenda.boeblingen.de.ibm.com> <1525403506-6750-1-git-send-email-hejianet@gmail.com> <20180509163101.02f23de1842a822c61fc68ff@linux-foundation.org> From: Suzuki K Poulose Message-ID: <2cd6b39b-1496-bbd5-9e31-5e3dcb31feda@arm.com> Date: Mon, 14 May 2018 10:45:02 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180509163101.02f23de1842a822c61fc68ff@linux-foundation.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/05/18 00:31, Andrew Morton wrote: > On Fri, 4 May 2018 11:11:46 +0800 Jia He wrote: > >> In our armv8a server(QDF2400), I noticed lots of WARN_ON caused by PAGE_SIZE >> unaligned for rmap_item->address under memory pressure tests(start 20 guests >> and run memhog in the host). >> >> ... >> >> In rmap_walk_ksm, the rmap_item->address might still have the STABLE_FLAG, >> then the start and end in handle_hva_to_gpa might not be PAGE_SIZE aligned. >> Thus it will cause exceptions in handle_hva_to_gpa on arm64. >> >> This patch fixes it by ignoring(not removing) the low bits of address when >> doing rmap_walk_ksm. >> >> Signed-off-by: jia.he@hxt-semitech.com > > I assumed you wanted this patch to be committed as > From:jia.he@hxt-semitech.com rather than From:hejianet@gmail.com, so I > made that change. Please let me know if this was inappropriate. > > You can do this yourself by adding an explicit From: line to the very > start of the patch's email text. > > Also, a storm of WARN_ONs is pretty poor behaviour. Is that the only > misbehaviour which this bug causes? Do you think the fix should be > backported into earlier kernels? > I think its just not the WARN_ON(). We do more than what is probably intended with an unaligned address. i.e, We could be modifying the flags for other pages that were not affected. e.g : In the original report [0], the trace looked like : [ 800.511498] [] kvm_age_hva_handler+0xcc/0xd4 [ 800.517324] [] handle_hva_to_gpa+0xec/0x15c [ 800.523063] [] kvm_age_hva+0x5c/0xcc [ 800.528194] [] kvm_mmu_notifier_clear_flush_young+0x54/0x90 [ 800.535324] [] __mmu_notifier_clear_flush_young+0x6c/0xa8 [ 800.542279] [] page_referenced_one+0x1e0/0x1fc [ 800.548279] [] rmap_walk_ksm+0x124/0x1a0 [ 800.553759] [] rmap_walk+0x94/0x98 [ 800.558717] [] page_referenced+0x120/0x180 [ 800.564369] [] shrink_active_list+0x218/0x4a4 [ 800.570281] [] shrink_node_memcg+0x58c/0x6fc [ 800.576107] [] shrink_node+0xe4/0x328 [ 800.581325] [] do_try_to_free_pages+0xe4/0x3b8 [ 800.587324] [] try_to_free_pages+0x124/0x234 [ 800.593150] [] __alloc_pages_nodemask+0x564/0xf7c [ 800.599412] [] khugepaged_alloc_page+0x38/0xb8 [ 800.605411] [] collapse_huge_page+0x74/0xd70 [ 800.611238] [] khugepaged_scan_mm_slot+0x654/0xa98 [ 800.617585] [] khugepaged+0x2bc/0x49c [ 800.622803] [] kthread+0x124/0x150 [ 800.627762] [] ret_from_fork+0x10/0x1c [ 800.633066] ---[ end trace 944c130b5252fb01 ]--- Now, the ksm wants to mark *a page* as referenced via page_referenced_one(), passing it an unaligned address. This could eventually turn out to be one of : ptep_clear_flush_young_notify(address, address + PAGE_SIZE) or pmdp_clear_flush_young_notify(address, address + PMD_SIZE) which now spans two pages/pmds and the notifier consumer might take an action on the second page as well, which is not something intended. So, I do think that old behavior is wrong and has other side effects as mentioned above. [0] https://lkml.kernel.org/r/1525244911-5519-1-git-send-email-hejianet@gmail.com Suzuki