Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp3341931pxb; Thu, 10 Feb 2022 19:13:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJwzWeb5I1+k+QIKfZsqHk3OI1kdjLposQRgMpl2zvJjt28cwXkoIQR5wtN6Ugw9SEV8nZxq X-Received: by 2002:a05:6402:298e:: with SMTP id eq14mr11218239edb.240.1644549192312; Thu, 10 Feb 2022 19:13:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644549192; cv=none; d=google.com; s=arc-20160816; b=jkOkRT38wFJ3TMIoxfw9DsRInODVkOpxBleWKnY1YgL3+1qHDHldeTqbieW6sQt+Vs IeCcS06PnXk6ONWizXi84xtBPzUqTxmgvmC+c2wKpmo6UPhyh6JMIagxNN3exU+SPBnO zw1nW6awNdZhr3k5Hs9I8aHsLum9imQL8yExzjCvGdwKOWpOaS6A66KF2pf29eLPNT7/ 64QidFjH0pGwpXr/1b+1ML3VMJoxQXtMhgNBKppGJOBhO2U2fYltJHWzkBH2uJjJuCKy ZWMCYYtjX9CSTO7Fk+abHxmyYfGvswOF/bgw9eoeITtj0og4tMUr2dKjLBLaXbSoBuTW 5wRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=g672afMOWPofXOHvvpzMvP9no/e9tuPgH5JHAmWPU8Y=; b=wFQgVBMWW5VKK9+GLQFT78NM2vJi0MJDg+eCWnviNDoBWp51VzTlocA+kpd1T1IpDH McsS7qpVW414wCtHBLKmc7J9M0PhHK9bfvqXCPCB7zIZ4Ij+2R0qC6WEspIHDbHNTjco yHN06kJcBeAwfnsDMPetw6SebKD6cyEQ6+FEk/3Qopuebuy+4eZMLDRLuZhOImpBTJzU ei/9dxIh4IF91Ha8rcADBh5MrYHxzZFgCjLxj4q+x9YCza/2Shm1RENvym/CTKDcHHx+ qALulpG8oDpBZs7oihrDhqIkceFrzCc9SM2NYwtjf5xSuaHMW3QAGJJNPeVrDyNg0yjb PChQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ndoVMRka; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dp17si3468758ejc.421.2022.02.10.19.12.46; Thu, 10 Feb 2022 19:13:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ndoVMRka; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346912AbiBKBlk (ORCPT + 99 others); Thu, 10 Feb 2022 20:41:40 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:47590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235662AbiBKBlj (ORCPT ); Thu, 10 Feb 2022 20:41:39 -0500 Received: from mail-io1-xd32.google.com (mail-io1-xd32.google.com [IPv6:2607:f8b0:4864:20::d32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E9AB559F; Thu, 10 Feb 2022 17:41:39 -0800 (PST) Received: by mail-io1-xd32.google.com with SMTP id s18so9661084ioa.12; Thu, 10 Feb 2022 17:41:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=g672afMOWPofXOHvvpzMvP9no/e9tuPgH5JHAmWPU8Y=; b=ndoVMRkaFlE5uP+00x6Ts/PUE4LWG3Od0SOLJomDYAqb3ExhfLwgb32rA1o8beLjTU 669MmZKMX15+2uZ4xHxl/nuAiB4MC5f4GuqTd44R9Ccwp6W+NSAjFpoYPz1LiOj0/EGV pAJXYf7fLa3OWVsitFb3SATLm2AjkK+BmXKsIZTD2y8vV8wxMmUxBs4zQgaPRFn5USk9 RRhd9aYY7jcQhPCEA48GHdkEJIqlW+PoQClKxy1hYn1m6XwVNnm25q/4XsLCuHKNK2gV /mQ/1sSrJg+/U583qtvsGhxdT4GYo2eU77OIYReybBY3h90tpeLH7GImTMCXBPRn1QoI L/3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=g672afMOWPofXOHvvpzMvP9no/e9tuPgH5JHAmWPU8Y=; b=UKIhDiZssm38K5pptJCB5FErO5kj8SKAbdAjHf8LJTRZPMwoiSX7wWkUnw4Qw6SCxZ ABO7Pfx9Kk5xUzmU5h6MMlqtV9RYf7bSxRhplTKDSo21gRsEaWO9SMdj9K7Au6ONpjp0 E7qewWoBRNAmyvEwsGM8Sdc6Qt7WSfBdBambD+W2KZsifGOPZZdia5nv1wxe4UYeQlmT lXHqHfBHTNWi4xWnQAQ/SZfeWt/H/JrlbtSa07X5e75QdCphe9kvpWE0OPI6JoQj9FNN FcqKkkXBEAbAF/U7buGLs5o+v2Kubzc1PkZ5lkOhiKhPUCIsrdCMPWztH8L6wSXVowuH kgag== X-Gm-Message-State: AOAM533XRp4fQ7v4dumPg3cKgn89k+2wIE9YXtcRCQQcB45pr3BXs/Bu AxuPX038iwUQogMQoRbx9mwktXK7aUQ3aUsFL9M= X-Received: by 2002:a02:c8c8:: with SMTP id q8mr5164312jao.243.1644543698735; Thu, 10 Feb 2022 17:41:38 -0800 (PST) MIME-Version: 1.0 References: <20220211001345.3429572-1-gch981213@gmail.com> In-Reply-To: <20220211001345.3429572-1-gch981213@gmail.com> From: Ilya Lipnitskiy Date: Thu, 10 Feb 2022 17:41:28 -0800 Message-ID: Subject: Re: [PATCH] MIPS: ralink: mt7621: do memory detection on KSEG1 To: Chuanhong Guo Cc: "open list:MIPS" , Rui Salvaterra , Thomas Bogendoerfer , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Guo, On Thu, Feb 10, 2022 at 4:14 PM Chuanhong Guo wrote: > > It's reported that current memory detection code occasionally detects > larger memory under some bootloaders. > Current memory detection code tests whether address space wraps around > on KSEG0, which is unreliable because it's cached. > > Rewrite memory size detection to perform the same test on KSEG1 instead. > While at it, this patch also does the following two things: > 1. use a fixed pattern instead of a random function pointer as the magic > value. > 2. add an additional memory write and a second comparison as part of the > test to prevent possible smaller memory detection result due to > leftover values in memory. > > Fixes: 139c949f7f0a MIPS: ("ralink: mt7621: add memory detection support") > Reported-by: Rui Salvaterra > Signed-off-by: Chuanhong Guo > --- > arch/mips/ralink/mt7621.c | 36 +++++++++++++++++++++++------------- > 1 file changed, 23 insertions(+), 13 deletions(-) > > diff --git a/arch/mips/ralink/mt7621.c b/arch/mips/ralink/mt7621.c > index d6efffd4dd20..12c8808e0dea 100644 > --- a/arch/mips/ralink/mt7621.c > +++ b/arch/mips/ralink/mt7621.c > @@ -22,7 +22,9 @@ > > #include "common.h" > > -static void *detect_magic __initdata = detect_memory_region; > +#define MT7621_MEM_TEST_PATTERN 0xaa5555aa > + > +static u32 detect_magic __initdata; > > int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) > { > @@ -58,24 +60,32 @@ phys_addr_t mips_cpc_default_phys_base(void) > panic("Cannot detect cpc address"); > } > > +static bool __init mt7621_addr_wraparound_test(phys_addr_t size) > +{ > + void *dm = (void *)KSEG1ADDR(&detect_magic); > + > + if (CPHYSADDR(dm + size) >= MT7621_LOWMEM_MAX_SIZE) > + return true; > + __raw_writel(MT7621_MEM_TEST_PATTERN, dm); > + if (__raw_readl(dm) != __raw_readl(dm + size)) > + return false; > + __raw_writel(!MT7621_MEM_TEST_PATTERN, dm); > + return __raw_readl(dm) == __raw_readl(dm + size); > +} > + > static void __init mt7621_memory_detect(void) > { > - void *dm = &detect_magic; > phys_addr_t size; > > - for (size = 32 * SZ_1M; size < 256 * SZ_1M; size <<= 1) { > - if (!__builtin_memcmp(dm, dm + size, sizeof(detect_magic))) > - break; > + for (size = 32 * SZ_1M; size <= 256 * SZ_1M; size <<= 1) { > + if (mt7621_addr_wraparound_test(size)) { > + memblock_add(MT7621_LOWMEM_BASE, size); > + return; > + } > } > > - if ((size == 256 * SZ_1M) && > - (CPHYSADDR(dm + size) < MT7621_LOWMEM_MAX_SIZE) && > - __builtin_memcmp(dm, dm + size, sizeof(detect_magic))) { > - memblock_add(MT7621_LOWMEM_BASE, MT7621_LOWMEM_MAX_SIZE); > - memblock_add(MT7621_HIGHMEM_BASE, MT7621_HIGHMEM_SIZE); > - } else { > - memblock_add(MT7621_LOWMEM_BASE, size); > - } > + memblock_add(MT7621_LOWMEM_BASE, MT7621_LOWMEM_MAX_SIZE); > + memblock_add(MT7621_HIGHMEM_BASE, MT7621_HIGHMEM_SIZE); > } > > void __init ralink_of_remap(void) > -- > 2.34.1 > Thanks for your change. I think this will also fix https://lore.kernel.org/lkml/202201191557.OISJHNMi-lkp@intel.com/ since you are removing __builtin_memcmp usage. Ilya