Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755228AbdCQAxu (ORCPT ); Thu, 16 Mar 2017 20:53:50 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36174 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754411AbdCQAxs (ORCPT ); Thu, 16 Mar 2017 20:53:48 -0400 MIME-Version: 1.0 In-Reply-To: References: <1489680335-6594-1-git-send-email-jglisse@redhat.com> <1489680335-6594-8-git-send-email-jglisse@redhat.com> <20170316160520.d03ac02474cad6d2c8eba9bc@linux-foundation.org> From: Balbir Singh Date: Fri, 17 Mar 2017 11:45:19 +1100 Message-ID: Subject: Re: [HMM 07/16] mm/migrate: new memory migration helper for use with device memory v4 To: John Hubbard Cc: Andrew Morton , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , "linux-kernel@vger.kernel.org" , linux-mm , Naoya Horiguchi , David Nellans , Evgeny Baskakov , Mark Hairgrove , Sherry Cheung , Subhash Gutti Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id v2H0s0Gx021911 Content-Length: 1873 Lines: 47 On Fri, Mar 17, 2017 at 11:22 AM, John Hubbard wrote: > On 03/16/2017 04:05 PM, Andrew Morton wrote: >> >> On Thu, 16 Mar 2017 12:05:26 -0400 Jérôme Glisse >> wrote: >> >>> +static inline struct page *migrate_pfn_to_page(unsigned long mpfn) >>> +{ >>> + if (!(mpfn & MIGRATE_PFN_VALID)) >>> + return NULL; >>> + return pfn_to_page(mpfn & MIGRATE_PFN_MASK); >>> +} >> >> >> i386 allnoconfig: >> >> In file included from mm/page_alloc.c:61: >> ./include/linux/migrate.h: In function 'migrate_pfn_to_page': >> ./include/linux/migrate.h:139: warning: left shift count >= width of type >> ./include/linux/migrate.h:141: warning: left shift count >= width of type >> ./include/linux/migrate.h: In function 'migrate_pfn_size': >> ./include/linux/migrate.h:146: warning: left shift count >= width of type >> > > It seems clear that this was never meant to work with < 64-bit pfns: > > // migrate.h excerpt: > #define MIGRATE_PFN_VALID (1UL << (BITS_PER_LONG_LONG - 1)) > #define MIGRATE_PFN_MIGRATE (1UL << (BITS_PER_LONG_LONG - 2)) > #define MIGRATE_PFN_HUGE (1UL << (BITS_PER_LONG_LONG - 3)) > #define MIGRATE_PFN_LOCKED (1UL << (BITS_PER_LONG_LONG - 4)) > #define MIGRATE_PFN_WRITE (1UL << (BITS_PER_LONG_LONG - 5)) > #define MIGRATE_PFN_DEVICE (1UL << (BITS_PER_LONG_LONG - 6)) > #define MIGRATE_PFN_ERROR (1UL << (BITS_PER_LONG_LONG - 7)) > #define MIGRATE_PFN_MASK ((1UL << (BITS_PER_LONG_LONG - PAGE_SHIFT)) > - 1) > > ...obviously, there is not enough room for these flags, in a 32-bit pfn. > > So, given the current HMM design, I think we are going to have to provide a > 32-bit version of these routines (migrate_pfn_to_page, and related) that is > a no-op, right? Or make the HMM Kconfig feature 64BIT only by making it depend on 64BIT? Balbir Singh