From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC177C43334 for ; Thu, 9 Jun 2022 05:19:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3CC676B0073; Thu, 9 Jun 2022 01:19:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 37C0D6B0074; Thu, 9 Jun 2022 01:19:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 245226B0075; Thu, 9 Jun 2022 01:19:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1410F6B0073 for ; Thu, 9 Jun 2022 01:19:46 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id D0E65C3B for ; Thu, 9 Jun 2022 05:19:45 +0000 (UTC) X-FDA: 79557545130.30.9AC3028 Received: from out2.migadu.com (out2.migadu.com [188.165.223.204]) by imf31.hostedemail.com (Postfix) with ESMTP id 2604A20068 for ; Thu, 9 Jun 2022 05:19:44 +0000 (UTC) Date: Wed, 8 Jun 2022 22:19:32 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1654751982; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6DZpV+uN4f8trR7cow66ys5/tS3rIS+dNuOhVPIRE2k=; b=W9bp2FmIJi7K+/8TUdK5q7lcneNLnYwU6QHv0HLZeKir4zoJeheew3c5M1dYeCArwMNBpf SPPIafp8RWt82YGZWJGk2UBT6UTR3iNh12GFBOuAG9F37WUD2Ukm0TF8mgJ5bNOceGPbur WzH074nFiKk3BXw25D/s+lLq0ZlzIVM= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Roman Gushchin To: Kefeng Wang Cc: Vasily Averin , Naresh Kamboju , Shakeel Butt , Linux ARM , Stephen Rothwell , Linux-Next Mailing List , open list , regressions@lists.linux.dev, lkft-triage@lists.linaro.org, linux-mm , Andrew Morton , Ard Biesheuvel , Arnd Bergmann , Catalin Marinas , Raghuram Thammiraju , Mark Brown , Will Deacon , Qian Cai Subject: Re: [next] arm64: boot failed - next-20220606 Message-ID: References: <20220607162504.7fd5a92a@canb.auug.org.au> <2a4cc632-c936-1e42-4fdc-572334c58ee1@openvz.org> <44530040-0384-796e-143f-b7293886753c@huawei.com> <6763271f-6f65-b83a-6892-dbd502368f5e@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <6763271f-6f65-b83a-6892-dbd502368f5e@huawei.com> X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1654751985; a=rsa-sha256; cv=none; b=wOsu97wJ92AJuPxaf1OMZuxt0AYTk+E+RfjyuYfpwmd/rx5g3pi083goBEO7hPPrKnJuXU L2+6Eri/oYo+gTXXzJgqMmHFuyKOffAK8++HH6n3vYwuOBLjs8+9AR1JtgYI96lO5yTHlX 9eGJl/kHADNVSqrQZS6FChBmDryQt9Y= ARC-Authentication-Results: i=1; imf31.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=W9bp2FmI; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf31.hostedemail.com: domain of roman.gushchin@linux.dev designates 188.165.223.204 as permitted sender) smtp.mailfrom=roman.gushchin@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1654751985; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6DZpV+uN4f8trR7cow66ys5/tS3rIS+dNuOhVPIRE2k=; b=eiJQtU4sGq/Rl5/SbV+3A0rV3KPfvVCuhVZP3QDQ/Lr8c0dPd8VtUl8PgQLuIrLwVvqirV zyGNyjnsJpMZcb10tir0pHxLkEiPyrzA4stwOfBg2rcQdSe2+qvoNPjHomCSFDhZlA3TXv bd5PW0cjv3pvrpxSSfkB5o13iPnnEmA= X-Stat-Signature: m61osua9jhciuh6h3pzh1bzzk4wxa5gb X-Rspamd-Queue-Id: 2604A20068 X-Rspam-User: X-Rspamd-Server: rspam10 Authentication-Results: imf31.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=W9bp2FmI; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf31.hostedemail.com: domain of roman.gushchin@linux.dev designates 188.165.223.204 as permitted sender) smtp.mailfrom=roman.gushchin@linux.dev X-HE-Tag: 1654751984-622612 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Jun 09, 2022 at 12:43:00PM +0800, Kefeng Wang wrote: > > On 2022/6/9 11:44, Kefeng Wang wrote: > > > > On 2022/6/9 10:49, Vasily Averin wrote: > > > Dear ARM developers, > > > could you please help me to find the reason of this problem? > > Hi, > > > mem_cgroup_from_obj(): > > > ffff80000836cf40:       d503245f        bti     c > > > ffff80000836cf44:       d503201f        nop > > > ffff80000836cf48:       d503201f        nop > > > ffff80000836cf4c:       d503233f        paciasp > > > ffff80000836cf50:       d503201f        nop > > > ffff80000836cf54:       d2e00021        mov     x1, > > > #0x1000000000000            // #281474976710656 > > > ffff80000836cf58:       8b010001        add     x1, x0, x1 > > > ffff80000836cf5c:       b25657e4        mov     x4, > > > #0xfffffc0000000000         // #-4398046511104 > > > ffff80000836cf60:       d34cfc21        lsr     x1, x1, #12 > > > ffff80000836cf64:       d37ae421        lsl     x1, x1, #6 > > > ffff80000836cf68:       8b040022        add     x2, x1, x4 > > > ffff80000836cf6c:       f9400443        ldr     x3, [x2, #8] > > > > > > x5 : ffff80000a96f000 x4 : fffffc0000000000 x3 : ffff80000ad5e680 > > > x2 : fffffe00002bc240 x1 : 00000200002bc240 x0 : ffff80000af09740 > > > > > > x0 = 0xffff80000af09740 is an argument of mem_cgroup_from_obj() > > > according to System.map it is init_net > > > > > > This issue is caused by calling virt_to_page() on address of static > > > variable init_net. > > > Arm64 consider that addresses of static variables are not valid > > > virtual addresses. > > > On x86_64 the same API works without any problem. > > > > > > Unfortunately I do not understand the cause of the problem. > > > I do not see any bugs in my patch. > > > I'm using an existing API, mem_cgroup_from_obj(), to find the memory > > > cgroup used > > > to account for the specified object. > > > In particular, in the current case, I wanted to get the memory > > > cgroup of the > > > specified network namespace by the name taken from for_each_net(). > > > The first object in this list is the static structure unit_net > > > > root@test:~# cat /proc/kallsyms |grep -w _data > > ffff80000a110000 D _data > > root@test:~# cat /proc/kallsyms |grep -w _end > > ffff80000a500000 B _end > > root@test:~# cat /proc/kallsyms |grep -w init_net > > ffff80000a4eb980 B init_net > > > > the init_net is located in data section, on arm64, it is allowed by > > vmalloc, see > > > >     map_kernel_segment(pgdp, _data, _end, PAGE_KERNEL, &vmlinux_data, 0, > > 0); > > > > and the arm has same behavior. > > > > We could let init_net be allocated dynamically, but I think it could > > change a lot. > > > > Any better sugguestion, Catalin? > > or  add vmalloc check in mem_cgroup_from_obj()? > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 27cebaa53472..fb817e5da5f0 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -2860,7 +2860,10 @@ struct mem_cgroup *mem_cgroup_from_obj(void *p) >         if (mem_cgroup_disabled()) >                 return NULL; > > -       folio = virt_to_folio(p); > +       if (unlikely(is_vmalloc_addr(p))) > +               folio = page_folio(vmalloc_to_page(p)); > +       else > +               folio = virt_to_folio(p); > >         /* >          * Slab objects are accounted individually, not per-page. > It sounds right. Later we can add something like mem_cgroup_from_slab_obj() to use on hot paths and avoid this check.