Received: by 2002:a89:2c3:0:b0:1ed:23cc:44d1 with SMTP id d3csp182082lqs; Mon, 4 Mar 2024 21:05:53 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWwgyZxY+cVEYpzz1m/fk77r6OnMqJg0SBsrzhu0+BLAmEontHkivbMDrcZIbuR4H0B00rgYm8zkc/HjOoE7vVzXA5PfuhmRPaO2atzpQ== X-Google-Smtp-Source: AGHT+IHRnRO0d5TtUsP2Qghiblyxxorqdie6hhD34GJFfHRN4ONzOJnfMC+RVh91JzQsqGpMwOHF X-Received: by 2002:a2e:9088:0:b0:2d2:eb57:3abc with SMTP id l8-20020a2e9088000000b002d2eb573abcmr564535ljg.22.1709615153793; Mon, 04 Mar 2024 21:05:53 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709615153; cv=pass; d=google.com; s=arc-20160816; b=qWPw06Qggn1CyqemE/dbPWD8OKZ23yIqvIqZ2Ttc1b35ily9dHnIj9CFxR5oZxwfAV NgtYU+PcVwPtD/RLaCVmW4Oe09QgSGbXgzg/oWTzpwKJf6xn/p7JF2HH2Rx4JA6A8dBQ 1Z6gbtVKqZFY3S6l8dtG3KdqCpDGTnODERyi02vGWEVo525tR9GDEj8sH1Aoyf71UX4S QoekJ8KFta+1Z8wboSNxKED17N9St8boXoFdE6duGMdQ1kWKJ4SHgrvcafkbpAiD1NSE gz1fo5MX9olW5aCVR5RbqHWUi3KxKkLUT+xPdPvU4VZZqZ1lzOncp0d852SJTsSjRXuX f35w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:in-reply-to:date :dkim-signature; bh=kq0SZT0ux4lTSc+RRyaK9dfv6pgUchfiIyZPjXxEFKk=; fh=rtvSHYhztAS/bUvtHx+5cOKIbKD3ixP2+SiLFH+QE0w=; b=PeQRjucVGFAos6zeS65udGrxG8c+Ki+7VAqexV7UwSnnFePESYMHVi/KZ5KEt5YrK1 cWVUCxs1gQ8FcS/BjkWv4FkPsywGQ23yiYksO+6ia+o1y6NkjoO8pl8xMsUJpbpP9VDC JdITKn9MXXOB3XXs+vylAU7T8SbrJ5EYcEip1nJm3TGhULFUGhMdE+D8Y0gFpBoT8b8B vzIizap7HjLyTdH1PuLrpdX//4JyVrpPWhdpfb/BCODFQBL8evM3epxdnOAKtbwdSJny powg0XK4E1jgdr94R2vkasPNIOOcq/MblNymy4SLytE4YaI1DJKFZpEykzljzIglUoOv 5tjg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="FN/zM/lT"; arc=pass (i=1 spf=pass spfdomain=flex--saravanak.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-91687-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-91687-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id n12-20020aa7c68c000000b005647c582612si4731049edq.456.2024.03.04.21.05.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 21:05:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-91687-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b="FN/zM/lT"; arc=pass (i=1 spf=pass spfdomain=flex--saravanak.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-91687-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-91687-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 58F121F2276E for ; Tue, 5 Mar 2024 05:05:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 346A37D3F8; Tue, 5 Mar 2024 05:05:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="FN/zM/lT" Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6B777BAEF for ; Tue, 5 Mar 2024 05:05:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709615111; cv=none; b=Y+Iiv4TEjRg04Nmh26/EnyT91IE/w0DaogEEkaAptgqoGmoqsqsp5L7d/+9l6x818AgSI/icVfOJgHM7kZCNzusa1Lao3h412ZYps75/W2r4K20mdt2x87EejLbADaHdzxnNUqMBPWSlrXAlfH4AqcchLTBrq7L4RTAFPk2g7zc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709615111; c=relaxed/simple; bh=KbTlvkqJZdkWz3JMFIvxA09yqx88DYjINdZ8RsQzQSg=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Cc:Content-Type; b=jUesXPEObO3NRdV17Oa6kslSBbvYItBADVCKfKyWq132SVJOhhgh5Tdyo1KhaqEcIb6WaEdqS1zUMiXkuRfP7L6vyWKWpS1KyDWJld4caqMXd44Bb4zrVefBN8QzeRUjiy0+Xg/lBPV951/0pUVZyImt0gh2PQO22fb+69n5HZQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--saravanak.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=FN/zM/lT; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--saravanak.bounces.google.com Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-608ab197437so82062977b3.1 for ; Mon, 04 Mar 2024 21:05:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709615109; x=1710219909; darn=vger.kernel.org; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=kq0SZT0ux4lTSc+RRyaK9dfv6pgUchfiIyZPjXxEFKk=; b=FN/zM/lTOHIj/8BYWIMntUXN7yeq9q9GgULLDzZpoeCxfR3zIrQBSSuYD+TzJgjLoo Tn53kMr/vfkLpS5w69T+CVIMnwGezCPIdBlyvAxIpS1UVmkz+n+XEbFU0cpMhv0rRwLX nj1WvJBkVqA6B1m9QVJZvB8eIETIf/gaq8d5gVWkqV1anGwvF1esN/2BUzreuE2ELhgP jkSgdXXRNZ9YkioI0dZ5y5sqfmu59SF/D0gctyvIxnJRQKTS8u5F0VXgMZDR7OZTM3n7 qD0o3ng9NrPIu2T0kCcuLz0aLmS/EJgJ0e0fMNQDhdX13cdoDX+T4wSlLhIXXThobt9U xkWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709615109; x=1710219909; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kq0SZT0ux4lTSc+RRyaK9dfv6pgUchfiIyZPjXxEFKk=; b=anHIT3PY8jhstrh9euqZ7cOfUDYx5etL5jxMhUo9jczXwT/IAnMes2FJmCtO0CdwYa Y67GsB+Y0h+Js0oAVkicHbKDcoWE6tCeeniHVfr+rFDHSh2ZE6r3zY3d4JZV/ih/N3JK 8xq/TzYh6HUyAKjInu/Eo8E/X5uyhbCTZ2SDSHZ2E1nxC5q/5IQ/iM8h+Q3TgpEGBrPI u7jWCv3TbnNHLCCNBg052yio9M9DW3OKDj98H+yl2aO4Vu+RrwxXPO8MuZx0oOte3LEf CjeCLZBl/i8berKO0wcTpd1LMSIrN0hQHB0VZf7D8HYoKCtAVFPyJWsT43946sORF3fV uRTg== X-Forwarded-Encrypted: i=1; AJvYcCXzL/e4HLHn9G+ySTdu9qSYlx8QkvM2fXDWbYij4iXrKJjVNDnwVLytO4gF0X2kaC6ZhtbJ6LKlshvlJsd2r/Lg4SJdzQRS2HPbguq6 X-Gm-Message-State: AOJu0Yx50XtOYMUJbYMSL3kR1Lot6elTWhlrl437wbn2FsaY8tqpHzEu sxpAq96g+HdsVlrEAD02hWyr9NvcAa6e/eHsM+JvOYw6kXYrvzpkhEMWNU76amqKAmeidPg5AbA Bib6+Z7uQoi0Lyg== X-Received: from saravanak.san.corp.google.com ([2620:15c:2d:3:d64:6ee3:55a9:46e6]) (user=saravanak job=sendgmr) by 2002:a05:690c:a87:b0:608:a8da:1caf with SMTP id ci7-20020a05690c0a8700b00608a8da1cafmr3127642ywb.6.1709615108938; Mon, 04 Mar 2024 21:05:08 -0800 (PST) Date: Mon, 4 Mar 2024 21:04:55 -0800 In-Reply-To: <20240305050458.1400667-1-saravanak@google.com> Message-Id: <20240305050458.1400667-3-saravanak@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240305050458.1400667-1-saravanak@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v5 2/3] driver core: Add FWLINK_FLAG_IGNORE to completely ignore a fwnode link From: Saravana Kannan To: Greg Kroah-Hartman , "Rafael J. Wysocki" , Ard Biesheuvel , Rob Herring , Frank Rowand , Andy Shevchenko , Daniel Scally , Heikki Krogerus , Sakari Ailus , Len Brown Cc: Saravana Kannan , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, devicetree@vger.kernel.org, linux-acpi@vger.kernel.org, Rob Herring Content-Type: text/plain; charset="UTF-8" A fwnode link between specific supplier-consumer fwnodes can be added multiple times for multiple reasons. If that dependency doesn't exist, deleting the fwnode link once doesn't guarantee that it won't get created again. So, add FWLINK_FLAG_IGNORE flag to mark a fwnode link as one that needs to be completely ignored. Since a fwnode link's flags is an OR of all the flags passed to all the fwnode_link_add() calls to create that specific fwnode link, the FWLINK_FLAG_IGNORE flag is preserved and can be used to mark a fwnode link as on that need to be completely ignored until it is deleted. Signed-off-by: Saravana Kannan Acked-by: Rafael J. Wysocki Reviewed-by: Rob Herring --- drivers/base/core.c | 9 ++++++++- include/linux/fwnode.h | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index adeff041d472..fac017657d25 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -1012,7 +1012,8 @@ static struct fwnode_handle *fwnode_links_check_suppliers( return NULL; list_for_each_entry(link, &fwnode->suppliers, c_hook) - if (!(link->flags & FWLINK_FLAG_CYCLE)) + if (!(link->flags & + (FWLINK_FLAG_CYCLE | FWLINK_FLAG_IGNORE))) return link->supplier; return NULL; @@ -1963,6 +1964,9 @@ static bool __fw_devlink_relax_cycles(struct device *con, } list_for_each_entry(link, &sup_handle->suppliers, c_hook) { + if (link->flags & FWLINK_FLAG_IGNORE) + continue; + if (__fw_devlink_relax_cycles(con, link->supplier)) { __fwnode_link_cycle(link); ret = true; @@ -2041,6 +2045,9 @@ static int fw_devlink_create_devlink(struct device *con, int ret = 0; u32 flags; + if (link->flags & FWLINK_FLAG_IGNORE) + return 0; + if (con->fwnode == link->consumer) flags = fw_devlink_get_flags(link->flags); else diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h index c964749953e3..21699eee9641 100644 --- a/include/linux/fwnode.h +++ b/include/linux/fwnode.h @@ -53,8 +53,10 @@ struct fwnode_handle { * fwnode link flags * * CYCLE: The fwnode link is part of a cycle. Don't defer probe. + * IGNORE: Completely ignore this link, even during cycle detection. */ #define FWLINK_FLAG_CYCLE BIT(0) +#define FWLINK_FLAG_IGNORE BIT(1) struct fwnode_link { struct fwnode_handle *supplier; -- 2.44.0.278.ge034bb2e1d-goog