Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2502718ybl; Thu, 9 Jan 2020 14:01:26 -0800 (PST) X-Google-Smtp-Source: APXvYqzV06GHdtKuKUBHh6foOh1cHG+qmj8nLFlSKCAGU6HD0xlAQJlC5jCEr6m/cZXzBd09ASb+ X-Received: by 2002:a05:6830:1b7b:: with SMTP id d27mr51194ote.78.1578607286644; Thu, 09 Jan 2020 14:01:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578607286; cv=none; d=google.com; s=arc-20160816; b=fAVu/aEexs878gpGD8eG7obk1OKmTEOAatZIVsmO0Ja6mkCZdyGgYwsrFxgS+qOjR7 wKxHCFc01XUI8OjR4+hBuMHTRlCez82ttiPwfaZF/KoC2KxxC3XfyiP/k6qVTlXNEMLH IFueJ045E7umUtwFthayHBvC0wq+hZX3I+FWTcY+ybVY0BnQsscjBvKPpVrXge6tMm3N TF+qIf3j27+MCTDRGQXVLZnpgFSW1ecnS3Q5I4suUhNh/oWYMTD8YvpwcinyxlnETR/u jmc6yw4cEeXoAasfDNn6CfZlmqs1eDBw1ly2fk4SCheNKytgCiBYrrwpmSNihteU90TR 8V+A== 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:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :dkim-signature; bh=Rdaq9SFbX4jYyhqKf4tZuFSlxuLEMQhlftxVV6kNjnQ=; b=CvoPIBN73+RKZ4FG96GQXJPcA01qH9vT6X9SQs8bY94jozHjm/hCh6AQU9STOKBp2c zEHo6PKSFypYzf1Iou7VJxacksCK3rws+2bSEchf/x942iELZtpLltiFF6lQz7ufS5+Y OpanRHFKBYRFQR+9dpl7TOAkJ2aGeo5XurGz7pAi7y2M/1bnta+dYdEEh9PGy4hhmymx eNpJ/zjNX9R9T/NxqdtHTaUzWSQ63uINNPAUeh9fKnlrBYE5UaJWJHCG5U/Ojdkz9TC6 MpWpbHQNk2sTfZn+lxXhhj0kbVm373vbsYNlZ0+weFlaZ0CYnYyUgkzBaOI9epPBTQE/ WgPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xFu2sFgS; 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 l6si4753692oti.249.2020.01.09.14.01.10; Thu, 09 Jan 2020 14:01:26 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=xFu2sFgS; 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 S1729035AbgAIWAG (ORCPT + 99 others); Thu, 9 Jan 2020 17:00:06 -0500 Received: from mail.kernel.org ([198.145.29.99]:36362 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725775AbgAIWAF (ORCPT ); Thu, 9 Jan 2020 17:00:05 -0500 Received: from localhost.localdomain (c-73-231-172-41.hsd1.ca.comcast.net [73.231.172.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D5B9020656; Thu, 9 Jan 2020 22:00:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578607205; bh=q2xLvaGoyKJySIfa5H/56/Txq2IoQyySUYKwsDkm/t4=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=xFu2sFgSng3Oh5L/QhhdSaFswmLd5QFevFtpMGRKLCTm888o7PTfP8maChh21vsC7 DpRGSg7PI9jlVTfPXmlCmyH35i3X50uBnufWmH8DhLI1RfSPV40DYz9j6jLSnilPKw 1aV77MFDW0xD7mz2qoB1WKrrA668O9U9abCx/ug8= Date: Thu, 9 Jan 2020 14:00:04 -0800 From: Andrew Morton To: Scott Cheloha Cc: linux-kernel@vger.kernel.org, "Rafael J. Wysocki" , Greg Kroah-Hartman , David Hildenbrand , nathanl@linux.ibm.com, ricklind@linux.vnet.ibm.com, mhocko@suse.com, Scott Cheloha Subject: Re: [PATCH v4] drivers/base/memory.c: cache blocks in radix tree to accelerate lookup Message-Id: <20200109140004.d5e6dc581b62d6e078dcca4c@linux-foundation.org> In-Reply-To: <20200109212516.17849-1-cheloha@linux.vnet.ibm.com> References: <20191217193238-1-cheloha@linux.vnet.ibm.com> <20200109212516.17849-1-cheloha@linux.vnet.ibm.com> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 9 Jan 2020 15:25:16 -0600 Scott Cheloha wrote: > Searching for a particular memory block by id is an O(n) operation > because each memory block's underlying device is kept in an unsorted > linked list on the subsystem bus. > > We can cut the lookup cost to O(log n) if we cache the memory blocks in > a radix tree. With a radix tree cache in place both memory subsystem > initialization and memory hotplug run palpably faster on systems with a > large number of memory blocks. > > ... > > @@ -56,6 +57,13 @@ static struct bus_type memory_subsys = { > .offline = memory_subsys_offline, > }; > > +/* > + * Memory blocks are cached in a local radix tree to avoid > + * a costly linear search for the corresponding device on > + * the subsystem bus. > + */ > +static RADIX_TREE(memory_blocks, GFP_KERNEL); What protects this tree from racy accesses?