Received: by 10.192.165.148 with SMTP id m20csp4924045imm; Tue, 24 Apr 2018 10:36:08 -0700 (PDT) X-Google-Smtp-Source: AIpwx49YkhJYIwu88b7VjWxVWQ9zT4AK563QLrcgkGxA4kLFNaoekI8C0UFNxC/0TYyzhCT50d7f X-Received: by 10.99.124.72 with SMTP id l8mr16471588pgn.420.1524591368142; Tue, 24 Apr 2018 10:36:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524591368; cv=none; d=google.com; s=arc-20160816; b=cG79tTOav+svn7GBC1a3T0bCzcqqYtxzA8dof7DHxnEkGxbkjvYcSWDg0Mra7Xa6qP b2xhOCQfc51+mXqUEoadcvZH8kbyIl2A/l/nH15+jBaih7BrRZagNVO0ia7WOQUg3C+A Wn9P7iDlkMYzPSCikdFvIWBrzcAxj6k54pqMFqp3ONRjWBfDXN4ycBrigx3pNHHDV4+d UwKbjlxZx0Z7dvaUL/4bZDV6Ck3E5WV79asbA1QgrFV1DUTkCYRWBZP+s/wcLQeJf0QN 4n2nH8hRHlceWRFYY8fiqLr+xqAWc//xLK6QSiuL3PT6C/h5cXCthTe7KlRuHhEhPVQW j+Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=Hphkt6sRKx6VihPh1q2ZHpK8q6ml/dUdDZYmNt/z0/k=; b=XuA6uDcOiGnF+Z8C084ZpE5nWlhGZgxJgKOHSsKNQb5OdR8dW0tnxWvVABz3XHpoiX 0QzFPO+FS/iCaO8QFM2oZzRdFwiXYUvIOXF/Gc0ndyiK/VKmxbRlA6bdL9+2ujS1qiRU +2d073XWkSVRxg5549e8vnI01NNL9O4mAsd8IDFeGg7XybqcNHNntWKUOQTQxavuxWjm eE36KmRadwrGNBnKwNPvIXus9tLUeUh9N5szSjEbJS/QivVm09Sg4cjOxeN8cSx8SMcc JhsFMjCWQBl65zZXsJPoRVLh/BQRpCMEQOEw4txz2lKaEx55rqkphkDL3IUW12bmPB7I Csug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bgdev-pl.20150623.gappssmtp.com header.s=20150623 header.b=Lj+Xr/mY; 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 z18-v6si14909524plo.241.2018.04.24.10.35.54; Tue, 24 Apr 2018 10:36:08 -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; dkim=pass header.i=@bgdev-pl.20150623.gappssmtp.com header.s=20150623 header.b=Lj+Xr/mY; 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 S1753157AbeDXRdj (ORCPT + 99 others); Tue, 24 Apr 2018 13:33:39 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:52409 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752444AbeDXRbT (ORCPT ); Tue, 24 Apr 2018 13:31:19 -0400 Received: by mail-wm0-f68.google.com with SMTP id w195so2599437wmw.2 for ; Tue, 24 Apr 2018 10:31:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Hphkt6sRKx6VihPh1q2ZHpK8q6ml/dUdDZYmNt/z0/k=; b=Lj+Xr/mY3F52lcfDbxwPOV8r0pHUIzWNGuLd2/vp/Pw9D53i5s0vgIRsOxJiNwH/JZ ++NqG8eIP5eZ9G52trHK5f89Ms1Y0MsIe1GnixCyeRNyhA12RrlkvHpwdDGahuxWrGyc Vv8zUcdSXqo61NE8qq2QYy0AWSeSxwhIL+mlRtBzTXzUWVPmLEvjgyctVoKDh7WTB2tk W6KWoYjmiEIWs/4C/a2ZyaGqj55LXVWWI1pmHK1qe0kn7CfgCiVG1w1G+EyElYOkNTop nYhVc9BmvsQQZvyNn9xmFKIqaV0Q7sHjF1AH36G1A2EDFxhGuOuQExAQPLz79aGvsio5 56bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Hphkt6sRKx6VihPh1q2ZHpK8q6ml/dUdDZYmNt/z0/k=; b=DO1ncfe7UJOeXbnxhPF1q7ttCkevMTNGNQE2K9Nl9lU4MxV8yCw7/EZ2nzJYdEb3hS ci4VGa6eqsoYeBvnGxtsoZb5ZKb6QOXvlG2l0atuT0xUQWMVwm4D1v1HZ++sZxGFxCbB axP3jIyo/6zD+HLmSRVQuUbtF66M+OUAPm5GEL+jIG8Gx/8axRHIYNWsC8qcf66pD4d+ K34be7hy9QoJsTFTsBKPSxN2xgREL88QTBmICKOFOB2EDw+DBISaEyLiTrtQOPOXzEAV FyCNexdfifMTJdNsN8RiFMx8O2WAzvZ2B1NpW33OpYUx3XH6ccLkHqOLTfcjV+i8iyNi hWHg== X-Gm-Message-State: ALQs6tDV+2OVYLo0vjMgJNKyxJ2ebDTYz5V15EaQAdsM8J94sMoSh82k Th37mZKrHxdf/8rEpgZ8sxGqgw== X-Received: by 10.28.153.199 with SMTP id b190mr13428408wme.104.1524591078118; Tue, 24 Apr 2018 10:31:18 -0700 (PDT) Received: from brgl-bgdev.baylibre.local ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id n21sm15513826wmi.37.2018.04.24.10.31.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Apr 2018 10:31:17 -0700 (PDT) From: Bartosz Golaszewski To: Sekhar Nori , Kevin Hilman , David Lechner , Michael Turquette , Stephen Boyd , Arnd Bergmann , Greg Kroah-Hartman , Rob Herring , Mark Rutland , Yoshinori Sato , Rich Felker , Frank Rowand , "Rafael J . Wysocki" , Jarkko Sakkinen , Dmitry Torokhov , Arend van Spriel , Heikki Krogerus , Michal Suchanek , Jan Kiszka , Andy Shevchenko Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Bartosz Golaszewski Subject: [PATCH 05/11] platform: use a dedicated list_head for early devices Date: Tue, 24 Apr 2018 19:30:45 +0200 Message-Id: <20180424173051.15099-6-brgl@bgdev.pl> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180424173051.15099-1-brgl@bgdev.pl> References: <20180424173051.15099-1-brgl@bgdev.pl> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bartosz Golaszewski The current implementation of early platform device support uses the devres list head in struct device. This causes problems when adding support for device tree based early devices. Use a dedicated list_head which is included in struct device conditionally in order to avoid adding bloat for all architectures. Signed-off-by: Bartosz Golaszewski --- drivers/base/platform.c | 23 +++++++++++------------ include/linux/device.h | 4 ++++ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index af440d703f0b..90526acdcb84 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -1264,12 +1264,10 @@ void __init early_platform_add_devices(struct platform_device **devs, int num) for (i = 0; i < num; i++) { dev = &devs[i]->dev; - if (!dev->devres_head.next) { - pm_runtime_early_init(dev); - INIT_LIST_HEAD(&dev->devres_head); - list_add_tail(&dev->devres_head, - &early_platform_device_list); - } + pm_runtime_early_init(dev); + INIT_LIST_HEAD(&dev->early_dev_head); + list_add_tail(&dev->early_dev_head, + &early_platform_device_list); } } @@ -1310,7 +1308,7 @@ early_platform_match(struct early_platform_driver *epdrv, int id) { struct platform_device *pd; - list_for_each_entry(pd, &early_platform_device_list, dev.devres_head) + list_for_each_entry(pd, &early_platform_device_list, dev.early_dev_head) if (platform_match(&pd->dev, &epdrv->pdrv->driver)) if (pd->id == id) return pd; @@ -1328,7 +1326,7 @@ static int __init early_platform_left(struct early_platform_driver *epdrv, { struct platform_device *pd; - list_for_each_entry(pd, &early_platform_device_list, dev.devres_head) + list_for_each_entry(pd, &early_platform_device_list, dev.early_dev_head) if (platform_match(&pd->dev, &epdrv->pdrv->driver)) if (pd->id >= id) return 1; @@ -1465,11 +1463,12 @@ void __init early_platform_cleanup(void) { struct platform_device *pd, *pd2; - /* clean up the devres list used to chain devices */ + /* clean up the list used to chain devices */ list_for_each_entry_safe(pd, pd2, &early_platform_device_list, - dev.devres_head) { - list_del(&pd->dev.devres_head); - memset(&pd->dev.devres_head, 0, sizeof(pd->dev.devres_head)); + dev.early_dev_head) { + list_del(&pd->dev.early_dev_head); + memset(&pd->dev.early_dev_head, 0, + sizeof(pd->dev.early_dev_head)); } } diff --git a/include/linux/device.h b/include/linux/device.h index 0059b99e1f25..4fadba0f9a35 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -979,6 +979,10 @@ struct device { spinlock_t devres_lock; struct list_head devres_head; +#ifdef CONFIG_EARLY_PLATFORM_DEVICES + struct list_head early_dev_head; +#endif + struct klist_node knode_class; struct class *class; const struct attribute_group **groups; /* optional groups */ -- 2.17.0