From patchwork Tue Feb 25 11:39:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868298 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 E2C71267B1D; Tue, 25 Feb 2025 11:39:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483590; cv=none; b=EAxFVHuDJ6YOsgBjNjoLdc0tXP3IOtXny58UfA0yT2AREEjQ2bZFg1P3A7WySLAwB/4DOXPva+TfOl2/ngU+ROhGX/UVkIypMrYrcG5JrO1DTyjZst6xqNqGRgjG0Z/klcbR39VWwxqfyQkb1+WBngmbbhpzcedqCFplu1ACPEI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483590; c=relaxed/simple; bh=Z3q6d2KoYcwqI1FYMKRCPsrGbXms4OIkpAtzw9QVUnQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DNh/ubZhVzzhBgFUePNMXWr9Kog0CnaTj/cuo18RGP5b+ODbYHXwnVZYiPU12t1oKPLwXHH9qgmTUWB6WxOeLS4PeKFbMlkFuj+Wnnht2MgGUZPZB5YyUL2Xg5MAgRAUzHWO6PaduE3iZzJa9nml9ivJwagKYLZCp5QKBJK8LbY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hUFQnKia; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hUFQnKia" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-abb75200275so869368166b.3; Tue, 25 Feb 2025 03:39:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483587; x=1741088387; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uwTefxFXTw38FMjS0DrFd4KzMWhLSYAuwn1lwiNQkZk=; b=hUFQnKia8vzUo9LRiKj1YXPi5RNb00oe6bwZf2BMzGj08IdpvAWIh31e45x37QxiPH 1UVRCwqjhOAbdYZEGE2uvRlxuN18xpSZTMVZRQNElirV49A1tSjOcM/cJQSFJoMY2o93 /pLmXEtealG7ZUhdeAHxRLfw86h39y0x3GcD+a/ZvrNk3RPL0mGdroNCT2w+FhcqxOY1 YakalgzBXm35EYysmrEo2sWtX6JT4bluIzzU8B6JnuAyou7Q44ykiWbUbQCXwTLLpU7N ZScw4FBgCBXoIHNHzIKOzO9/foy56MIdS3+YpS0saQz/L7oUNNkAkxUAErIxtAl72khP wR3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483587; x=1741088387; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uwTefxFXTw38FMjS0DrFd4KzMWhLSYAuwn1lwiNQkZk=; b=OhkGHnSlCn6SWaVgNFUZSnA07xraBOBs2iDfaVqoWgLR8gHRhTjg54rQcQzVd5U5Fw 03kd27DSPCSPhxa3lT3ke+xfZ24OiyPXKTFgz5e2ng9b32Tdwbr+RB7wnuy82yTbk+fj xAQXsngnydvin2Tb1O+kGkZ2QtIHivVnCT9J58/1HZIDjH7efukJW8dmlEFzfcEzoQrE gU6/Z4Dr+IR+dP+VYiuUb3/o8O4dPX3TPx/YmTHSRFPGeM4ubIGBFJIkbsrZH+sNd23E 5+KIxavfak/uYyp2cR86J7+TaeByxt/Ay//qZwMjhyq7AUYZlrrEWw8rRomwtUo0MZZk uypw== X-Forwarded-Encrypted: i=1; AJvYcCVEg6NobtVdd036HSvBeR5SyzB9PHqrwKArNViD4+i1TkmhdNuW0jrnGRvGHG3UJBlKTFpbFjAjapfYOKc9@vger.kernel.org, AJvYcCWszRkJ8lZtW89SZw2gIiBLInAv9hoq7TaNkorKaVvoUDWfL/MRDbrzBNksFv5aasEWfh/tFE6OBqg=@vger.kernel.org X-Gm-Message-State: AOJu0YzVsTNzkHe5WfQOYmd4gMi+N8wczckXETjH0bUxpTv59AvNfyw4 prQ7mkLz3bJBj1VT5zLEOruniLBuMsaTLkEfBhH6zXhiRYNp0w0y X-Gm-Gg: ASbGncvNXaZEHmQ2IfLQmwI9qvlqDA2CmX/n2SRfl3V9ukNK2OMWhmknJaFxeBw4hbu beaI4zJ/POxYLziNwsVon0lHXaK0WGvSDd3U6QvqK3A31LtiRBoQpQE7lSixhyw9xeh7sOMm30h NUOzruQFcmljBtYdDZt0FqQPLQ/bGz+rDNxqzF3Qgmc9fF/j6SjqKZYO+VoPAYNdrzYHrdY3JAO Zdr2JjjGsQhgUf5bfOCLpTTM5O0iquEL6lN47D2gEZepXDxdiun96xRhAZPS5zzyZypomNR12wC yObDet6qz8mwIQN/XMGx/eltRnS1E6Q2rV7CRhI= X-Google-Smtp-Source: AGHT+IGFDRm/ulrJyQU1OaBedXIkQQUTa1wFTjnD50Pp1SafglMTGdgwys7LwNzPYvUjOcjrBBiAdg== X-Received: by 2002:a17:906:80e:b0:abc:c34:4134 with SMTP id a640c23a62f3a-abc0c344449mr1328292966b.18.1740483586327; Tue, 25 Feb 2025 03:39:46 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:45 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen Subject: [PATCH v2 1/9] i2c: atr: Fix lockdep for nested ATRs Date: Tue, 25 Feb 2025 13:39:29 +0200 Message-ID: <20250225113939.49811-2-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Tomi Valkeinen When we have an ATR, and another ATR as a subdevice of the first ATR, we get lockdep warnings for the i2c_atr.lock and i2c_atr_chan.orig_addrs_lock. This is because lockdep uses a static key for the locks, and doesn't see the locks of the separate ATR instances as separate. Fix this by generating a dynamic lock key per lock instance. Signed-off-by: Tomi Valkeinen --- drivers/i2c/i2c-atr.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index 1a6ff47b4200..39b3b95c6842 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -68,11 +68,13 @@ struct i2c_atr_alias_pool { * @atr: The parent I2C ATR * @chan_id: The ID of this channel * @alias_pairs_lock: Mutex protecting @alias_pairs + * @alias_pairs_lock_key: Lock key for @alias_pairs_lock * @alias_pairs: List of @struct i2c_atr_alias_pair containing the * assigned aliases * @alias_pool: Pool of available client aliases * * @orig_addrs_lock: Mutex protecting @orig_addrs + * @orig_addrs_lock_key: Lock key for @orig_addrs_lock * @orig_addrs: Buffer used to store the original addresses during transmit * @orig_addrs_size: Size of @orig_addrs */ @@ -83,11 +85,13 @@ struct i2c_atr_chan { /* Lock alias_pairs during attach/detach */ struct mutex alias_pairs_lock; + struct lock_class_key alias_pairs_lock_key; struct list_head alias_pairs; struct i2c_atr_alias_pool *alias_pool; /* Lock orig_addrs during xfer */ struct mutex orig_addrs_lock; + struct lock_class_key orig_addrs_lock_key; u16 *orig_addrs; unsigned int orig_addrs_size; }; @@ -100,6 +104,7 @@ struct i2c_atr_chan { * @priv: Private driver data, set with i2c_atr_set_driver_data() * @algo: The &struct i2c_algorithm for adapters * @lock: Lock for the I2C bus segment (see &struct i2c_lock_operations) + * @lock_key: Lock key for @lock * @max_adapters: Maximum number of adapters this I2C ATR can have * @alias_pool: Optional common pool of available client aliases * @i2c_nb: Notifier for remote client add & del events @@ -115,6 +120,7 @@ struct i2c_atr { struct i2c_algorithm algo; /* lock for the I2C bus segment (see struct i2c_lock_operations) */ struct mutex lock; + struct lock_class_key lock_key; int max_adapters; struct i2c_atr_alias_pool *alias_pool; @@ -679,7 +685,8 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, if (!atr) return ERR_PTR(-ENOMEM); - mutex_init(&atr->lock); + lockdep_register_key(&atr->lock_key); + mutex_init_with_key(&atr->lock, &atr->lock_key); atr->parent = parent; atr->dev = dev; @@ -707,6 +714,7 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, i2c_atr_free_alias_pool(atr->alias_pool); err_destroy_mutex: mutex_destroy(&atr->lock); + lockdep_unregister_key(&atr->lock_key); kfree(atr); return ERR_PTR(ret); @@ -723,6 +731,7 @@ void i2c_atr_delete(struct i2c_atr *atr) bus_unregister_notifier(&i2c_bus_type, &atr->i2c_nb); i2c_atr_free_alias_pool(atr->alias_pool); mutex_destroy(&atr->lock); + lockdep_unregister_key(&atr->lock_key); kfree(atr); } EXPORT_SYMBOL_NS_GPL(i2c_atr_delete, "I2C_ATR"); @@ -757,8 +766,10 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, struct i2c_atr_adap_desc *desc) chan->atr = atr; chan->chan_id = chan_id; INIT_LIST_HEAD(&chan->alias_pairs); - mutex_init(&chan->alias_pairs_lock); - mutex_init(&chan->orig_addrs_lock); + lockdep_register_key(&chan->alias_pairs_lock_key); + lockdep_register_key(&chan->orig_addrs_lock_key); + mutex_init_with_key(&chan->alias_pairs_lock, &chan->alias_pairs_lock_key); + mutex_init_with_key(&chan->orig_addrs_lock, &chan->orig_addrs_lock_key); snprintf(chan->adap.name, sizeof(chan->adap.name), "i2c-%d-atr-%d", i2c_adapter_id(parent), chan_id); @@ -835,6 +846,8 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, struct i2c_atr_adap_desc *desc) fwnode_handle_put(dev_fwnode(&chan->adap.dev)); mutex_destroy(&chan->orig_addrs_lock); mutex_destroy(&chan->alias_pairs_lock); + lockdep_unregister_key(&chan->orig_addrs_lock_key); + lockdep_unregister_key(&chan->alias_pairs_lock_key); kfree(chan); return ret; } @@ -872,6 +885,8 @@ void i2c_atr_del_adapter(struct i2c_atr *atr, u32 chan_id) fwnode_handle_put(fwnode); mutex_destroy(&chan->orig_addrs_lock); mutex_destroy(&chan->alias_pairs_lock); + lockdep_unregister_key(&chan->orig_addrs_lock_key); + lockdep_unregister_key(&chan->alias_pairs_lock_key); kfree(chan->orig_addrs); kfree(chan); } From patchwork Tue Feb 25 11:39:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868297 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 DD5D2267B82; Tue, 25 Feb 2025 11:39:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483593; cv=none; b=ta/2H5//hunvJByXqJNQlT1TL/x2e7LQG1CdiKSy2Wpb8y4lD2t0wMxQ081gAs72o6UM64SDRGFJUXfA+8vYgpsE7JP7Ry24GFYN5PBJqjkHuj30unxTBiVbrj30sqecmqnx4UnbQw8x13NHQwyTuGfrFwpumL1En/SVILIWa9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483593; c=relaxed/simple; bh=PISapsmI9qRM5gfeVkdF4JKCyiQMUadO3rWiMlD7RFg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o70VDE7cwKfcyb+13NmB49QqY7oTOQX0zV8pjquRpfwnm1PLR6Bbo38SKvULgGm72fKzWcY/ri0LGim4cGRx6p/GYWGtRzJ1n8fINvlOY+B0D3G5EvxdBdA1aM3KQMf768xOj00buxf2E7s7PTgNu1HlMchoOQRoPoAHAKPUr/A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NjVqzy+A; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NjVqzy+A" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5e04f87584dso8253332a12.3; Tue, 25 Feb 2025 03:39:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483590; x=1741088390; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=02Nk7Tu7oSWRbXywdmWr43MleXDMMaL38pYc/cnl7sc=; b=NjVqzy+AF/dHukYneZaAYkt9oy4uPPDb6nzIeUXApsUGJx10bEQD0hh50Uki+qy1gf 90Nicuoi0+8lhi7knvYSIYifgXzzHo+XYIQcVDYZx23oBuq857P/FE5bGC1Fzk0qkxxB md/U/LVvo2pv6IDvEo1dR6bLfMJScTCdV6EiK6pyMkCY2l2TQYbf/jBel6HQnroHG+Jy gKmysbnM/uQUX9ZTPH+LTjRr8lCfZvWCAq3zXVMT9y8/TZH+D5FE3s/O01AUOUYp/RRP pNU+4giiUSNbWbDq/aMnjfKOURNE31Jto2bgROeBlVN5L7+7vqEK30R/f7JPcTaMUmSs VSwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483590; x=1741088390; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=02Nk7Tu7oSWRbXywdmWr43MleXDMMaL38pYc/cnl7sc=; b=euWwVuyCyP+LM/bHwGR4lMEstLtsOZH3Z3fbigZZllIS+Plos2WHSUgFzVglfYukY3 sfkFnnKPcTX1HjUppEyrrcMy/a0Fkg5tWxf8efa8fJblnTViDhX3QvB0bTg9K39pv8qm xKDFrl3vwIDWp3/KioDYqem9qr15uRn9fx5G8tFU2gnRUmlF1ARY6lEQEw9gDM19huAe XHJ6EmxLyn6A79G5wsFwOe/9UGjdYgWP7qwWffdQynMcNvbeDRbF9xv/tfun46yEbj89 aJy/3FPR6rYRXB3KHK1zHV9ONscE26AogdePERxPtro92aSU/R88xfaPjKWOqJTpycrB eebA== X-Forwarded-Encrypted: i=1; AJvYcCUesDH8RkYHzfewJI5CVLwjQvCzq4O8wm/QPcI7YAPqYYXryLz0o7c4IsGiIoU4AnKVt5ck1B/nbvS2Uzka@vger.kernel.org, AJvYcCW4qZCNrHx6dt8trNP1JFOBsooKOa+lNnbbVTLLIGKWXtKhYp/SBp9T/yH7g9pqTFPBSZlB9+Ky1so=@vger.kernel.org X-Gm-Message-State: AOJu0YzXd+ZXNQuyxYb+QoYcOy1Iu2VJ7UYfKJNx/38HEIIZUXzpLfsg 56Z9mKQDf2+D6Svf5aI+3Bmj2Z/IDjZLF89PD/gwJ7IgiQVqTQI2 X-Gm-Gg: ASbGncsHUEQmAsh2bMFSR+TRAhu+ey7t3589qKyUAJXNwpiWaRw1fdP+cm8x+o7/q3r 8pK3kg61+oMNUBKpjTiX+TDkkeO9AyXktT3iChoPdjNoq/hORhjTWaYTyxarN3qLw83PPdCtLly uuYvhuvK2bBgpcqtfs8hhdWliCY9y7B+pGGiiRzAloXA0Y0GgLpOG/bmn7vglhEkFguo5hnTo4l udSmMC5/B+1ZqfiCYo/Mql+7+eAzKkRbI4WUDJZ3prmTeKN4fjLZoh0eVtIKV6vnNjGJORabjsI +NrHcmcJv+7e+biDVm6V9LpnGrAPfj/tHzAIlAk= X-Google-Smtp-Source: AGHT+IGEtrP1t7R3oNNfJRkyQQplkyx3FK3zYN2M9tcnU9p8vq3Z/aM29j1E1o2X1xj8tJPaMGrq8w== X-Received: by 2002:a17:907:8a91:b0:abb:9a1e:47cb with SMTP id a640c23a62f3a-abc09e49525mr1488485466b.55.1740483590034; Tue, 25 Feb 2025 03:39:50 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:49 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 3/9] i2c: atr: find_mapping() -> get_mapping() Date: Tue, 25 Feb 2025 13:39:31 +0200 Message-ID: <20250225113939.49811-4-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 A find operation implies that a null result is not an error. Use get naming to clarify things and to prepare for splitting up the logic inside this function. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index f6033c99f474..f2485d1670a2 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -241,7 +241,7 @@ static void i2c_atr_release_alias(struct i2c_atr_alias_pool *alias_pool, u16 ali /* Must be called with alias_pairs_lock held */ static struct i2c_atr_alias_pair * -i2c_atr_find_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) +i2c_atr_get_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) { struct i2c_atr *atr = chan->atr; struct i2c_atr_alias_pair *c2a; @@ -335,7 +335,7 @@ static int i2c_atr_map_msgs(struct i2c_atr_chan *chan, struct i2c_msg *msgs, for (i = 0; i < num; i++) { chan->orig_addrs[i] = msgs[i].addr; - c2a = i2c_atr_find_mapping_by_addr(chan, msgs[i].addr); + c2a = i2c_atr_get_mapping_by_addr(chan, msgs[i].addr); if (!c2a) { dev_err(atr->dev, "client 0x%02x not mapped!\n", @@ -428,7 +428,7 @@ static int i2c_atr_smbus_xfer(struct i2c_adapter *adap, u16 addr, mutex_lock(&chan->alias_pairs_lock); - c2a = i2c_atr_find_mapping_by_addr(chan, addr); + c2a = i2c_atr_get_mapping_by_addr(chan, addr); if (!c2a) { dev_err(atr->dev, "client 0x%02x not mapped!\n", addr); @@ -536,7 +536,7 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); - c2a = i2c_atr_find_mapping_by_addr(chan, addr); + c2a = i2c_atr_get_mapping_by_addr(chan, addr); if (!c2a) { /* This should never happen */ dev_warn(atr->dev, "Unable to find address mapping\n"); From patchwork Tue Feb 25 11:39:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868296 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 3169226869C; Tue, 25 Feb 2025 11:39:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483597; cv=none; b=JKSIVdatUfZ2cxnUaSMQp2r2cMov5EuPHBX7ZqQ1NqOtfRhSr7inZ0Txq0XkELqPczgwHkiwkwnwNFCmQYhglzfsbbClXsAhzXRI2u3i72hbE2LgPJXDneFuxdPQHiURmACQdaLng7u9M5lM8swNOOBMPBus9F8pdZ5nZbLN5EA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483597; c=relaxed/simple; bh=4PY50C8Avc+lTFpH8LdjHloYwAHg3iwYhHX7DA+Cyno=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oUYKQ5+InqAZDnfZxyCyDzjzZyW83QSfEDCTpMTTtKq9QMxdrKf8VEWpytLQv07kfd5XdCbbqUpIPWkkICiYg9688/qt4Rl+A8g1gIYOLYRkzKgYXOEFz6+XxnftvJ0p9FOzmiQuHnejLAtyzGYQUDQmAJ/7LI2VebJU3q+9tMw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=c8HNp2a0; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="c8HNp2a0" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5e04cb346eeso9138329a12.2; Tue, 25 Feb 2025 03:39:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483593; x=1741088393; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=N9kWaCJhtkh0bPdMO9DCBTqxCndKa3EBYb2BxDOBS9s=; b=c8HNp2a0qMI7MJYmUcswG6eBuOohlAcXNUou/q2nQcwlucdSpeorr8oieUC5+PdzMO P03qDP1ZUqc3ZG1OhUXUWdManvU5f7NCICzT//0Y+pUsGImFbcMM9/UASw/YFgeo+sAj g85j0IBoZTWUvZOvBFEWhHJycowJRFIXOlcULilQIbXSEw2bXYCk5ioMMbuEUL+xT9wQ gINSn2JDcKgCD2CrbCIejMdbcEkT5b8x0xc/PaELUnB/eFATOTrjUROLpKBZiWZBRy9m duzDreTwBG+mOzl5EYNFwvV3XJUUnI8WIZsgjGUTy3B9hUK3JaAiyRt3BKCx4wlIpd/x T7DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483593; x=1741088393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N9kWaCJhtkh0bPdMO9DCBTqxCndKa3EBYb2BxDOBS9s=; b=m1FowLqjSyLTajIF6HLQjFlqydS0NKx6H1Pz2L4hcYASZVs5p89LkIye55A5jat0Ie 5oRfD0IxNpzUf21P8OMcvJO7BLhBqhds2pyghxEBALbA/CDTzlrQwQr2ec51SW3hAgu4 gqTFoFlYrTIs0ZVhBKbEWBVg3Rth1b7Y7vvahB5Qotkfj61cLZljVp7ZiaRrghpGO9T2 DTnc0QRK2EKhl8m2ZEtx6fUht5zjlDsaXmDdcDR/NRLoya774/53hB4M9XzoiZZaDAf2 xhewMGhY8vkpPAXaJoVvFKvpfdvBuhX60tkmhpKdnhIHXl53jAE90u5HMTnYH0s8NDHE xTyw== X-Forwarded-Encrypted: i=1; AJvYcCVT22/1OVhXRF+qTJI9j/CwaEnTC/hiOn1FjMPrrU3usYlEM4/CYObHoruxCG58C0nHbAdEqGHIIJGuyxNr@vger.kernel.org, AJvYcCXhrDM30QbcX0YGglrVZprBObAuZHgJykLC8rizOdeHy1765Z1mXc0BVmhfMMgXM2/3KZ2y9GxI/2o=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0ayblTple8afLDIuA2q1wrUNjgNzGL58pScSYftVYanazktcN LAX4Emcyu4LujPK3lNU/h/nmZEJSYayhw0yv45n0+FjA7KTb1GXa X-Gm-Gg: ASbGncsgMPpO0vKMu3RTGV/4k2JiSetg0ErFnjSRJny+E6rXdROuhUF3vBYtsh1gdVv k5isGpVV45QVjKnxZPBiQSjiF/vMERWRlzy/J23RA94yiAd4BcYIKBwBtZNQuXT05TxVASqYK32 KlOSgMIvll9FBa2zIU6lh+BAd1NnIx9pHcl0EfzgNCs9PPmUwEiAshxBGHNTHKtgOeX6bHe1vX0 tJGjQiVgaRgkeUpu/P1wrNTIu8ZBu2Ke9ILu5JJHY6CG+tqojlGOTsbJ9govn69olxnfzUUEdX/ Pv6mGsVB0u46efhxSbM9AXJU71oUKN5jhMVSvas= X-Google-Smtp-Source: AGHT+IHP+GV77v428hueQ02JWwug2ZEcOVkY9IMYLBrI5f5rrEbAaKfIEc4ah4LFG4fuz4Yc1BcyaA== X-Received: by 2002:a17:907:944b:b0:abb:c647:a4c1 with SMTP id a640c23a62f3a-abc09e37de2mr1881348866b.52.1740483593466; Tue, 25 Feb 2025 03:39:53 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:52 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 5/9] i2c: atr: do not create mapping in detach_addr() Date: Tue, 25 Feb 2025 13:39:33 +0200 Message-ID: <20250225113939.49811-6-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 It is useless to create a new mapping just to detach it immediately. Use the newly added i2c_atr_find_mapping_by_addr() function to avoid it, and exit without logging an error if not found. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index 9c4e9e8ec802..b62aa6ae452e 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -586,10 +586,8 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); - c2a = i2c_atr_get_mapping_by_addr(chan, addr); + c2a = i2c_atr_find_mapping_by_addr(chan, addr); if (!c2a) { - /* This should never happen */ - dev_warn(atr->dev, "Unable to find address mapping\n"); mutex_unlock(&chan->alias_pairs_lock); return; } From patchwork Tue Feb 25 11:39:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868295 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 BC6E8268C42; Tue, 25 Feb 2025 11:39:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483600; cv=none; b=raWg/gBZr5tJJtNys42jare95iiUNAExW/ly7vPWD4lsw6LU0qTxEoO9C8mbpnk54mOVhnXMcJ/kTaQi8q9dK/9mvnyDW8FzGbRH2ZRisnhlsJ7LdoDeI5xflcish33opGOPTpDKaLmR6ze+hFNJAMCyzPvBiZiuQt1epr7i270= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483600; c=relaxed/simple; bh=FH5pABemfdyBTd81fPkLUCkcaMB13Gtpt950QuGWACU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nPMi/ujhJ1My3x2dHrf55cGwtozWPduD2DTZ0Es7RK6nGIIUPLNbdFI+feVn7HSD+1zn0gdcSiqXIHKPC/uu4XlVzzXaFQs/TN0KQhk6T/64kCois0OUxLiZOH4mSkk61T3U/L9iTEuRJBW1XCe8KYFvhthfOf8Bli2O8o+hcNs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kGQn/djF; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kGQn/djF" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5e04064af07so8477274a12.0; Tue, 25 Feb 2025 03:39:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483597; x=1741088397; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KHavu49N7UrC0j4N/STFuWdZClinsRdO2TF0wU7/E3g=; b=kGQn/djFP1XPsIETaAOLauVrSHHg2VHdtyRf5dbHe/O31RCN7vcfInwXcynbhiC8zi FYOmR+85LMUUZomgNk0Reu6VlwMZ2UrHqgih84o+qT5582nyDOZ1r/0Nfl1T89ybplGU CnTy5tjmTVVXTqOzOCNjTXoeC07lPRP9To9YJd0apeoPIzNoR40K8pViQQ/4mNkVzXxz Q/3dniCunN71ZO4aMeEgB2SPQoU/zaKkmcGC/ChQUPvxDwKzS1dmREIP0dBwcXmpRP7q XE4/KkQsyYpQKTp25NWJ7OlAnXW0vwj+B3AmviB90mSfcdNG2px3ezKPH8HWlGINDyJJ mFuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483597; x=1741088397; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KHavu49N7UrC0j4N/STFuWdZClinsRdO2TF0wU7/E3g=; b=uMxB75QdyizbVJRDcqzslgQTVN2OVDHx1NeJw6UyP0THuDncCr+TYft9s6i3byXGmp AkpqCOHcIV1lujSc/c/t9GL+Yd5ufoWaEuFZSVk+EcDL+eoYEFTdPtVwza9vL4IqiJ4x 5J+QpbdtWxZKISCfqXtUzrF/XPaqoLBk1QaeZ9ziZbbA6KzTmLitNbjX/iisfJgiw3wL mTBgJmobVjIWOpIDSWYzAZWypSjRXX4cVadObqLq1ReYVYWiw12lnQtQmSxaxOXmhcIM GyXhScdUgbb8dUQV2Zeh13FLHg7g/uHzpxMQZAzU79VwfZq8q13Jb40WCFCJQtdrFBiW paXw== X-Forwarded-Encrypted: i=1; AJvYcCVDuSzzI86OMqxMnndMlRumPRAf8jwKjy4OdX+rnpGupk1TFq92MNL4XNa0v+GUwkTMdBwG9Dz4194=@vger.kernel.org, AJvYcCWGbj+mKT+IovdhVigibYq6Evv4iXNEoDOVdBsNvpFjPSoamH/JnMUgDJOijt2JQLEP6OA+MRtrxU+Po8Fk@vger.kernel.org X-Gm-Message-State: AOJu0YyKPzNFsT+HnXlVfesUpKIpjq8jfA2KOcPHchivk5q8/+ddWNsd SnxRyGKkKOAJ4tcxAP+NANcznY6Q4JVBU3VKB5kK61aVNG6lomAS X-Gm-Gg: ASbGncsNKMdahSgLOlcHmfO7vg0bWACgTxlgmDD6tOSnx00jtVTXO8qR9O0p7Fm3ydr SHb9SsKZ1/LucsDV644ef0dVq4LAZVeRN+h72AvJTC/kc6RmtFe2kj/yNurEdyK8pXA7uNuu4em ARZ1NMnF/4XLucSltbzt+QqOUPE/W+/lKgIW6NJaVyq71c3MTru2L0nbFbsIGMLYr7hOuEfS8az W2asWul+HQfSqr3xzYDS4leLPI3VI9M/Nl5cIri6bcs6CZOmNeOBBF8tA2VFgYEeBjvNY9aF0pv atdnPLZXG1wsxhQxfccoLRZk5JIyC474URl9XUM= X-Google-Smtp-Source: AGHT+IGkBLXTNXrNxdESWi9oEK4A+zL2ej0qhVSYmjq4CJmFZxPOFwAIz0IQBFMzAmvz5M9odyi81Q== X-Received: by 2002:a17:907:6d27:b0:ab7:e567:4fe8 with SMTP id a640c23a62f3a-abed0d60b6fmr301892766b.25.1740483596798; Tue, 25 Feb 2025 03:39:56 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:56 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 7/9] i2c: atr: allow replacing mappings in attach_addr() Date: Tue, 25 Feb 2025 13:39:35 +0200 Message-ID: <20250225113939.49811-8-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 It is possible for aliases to be exhausted while we are still attaching children. Allow replacing mapping on attach by calling i2c_atr_replace_mapping_by_addr() if i2c_atr_create_mapping_by_addr() fails. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index 5b53eaee0408..d8748d71ae15 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -543,6 +543,9 @@ static int i2c_atr_attach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); c2a = i2c_atr_create_mapping_by_addr(chan, addr); + if (!c2a) + c2a = i2c_atr_replace_mapping_by_addr(chan, addr); + if (!c2a) { dev_err(atr->dev, "failed to find a free alias\n"); ret = -EBUSY; From patchwork Tue Feb 25 11:39:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868294 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 E4A35268FDD; Tue, 25 Feb 2025 11:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483603; cv=none; b=ikIE3T8yvlj2OXD4yZHbhRHupKHBugoOLoqzG4x33EfgXhPZc8H/w333OQ9PaV5HDQ95b3b1NgbQ6fg19KcWtBMlB72i4RD7vPr6wqkHOXQcfAhERXqo2ZNWm8txqPoBAiP15WlTUjMopGqhaqoAKlQ49c0Pctd7YPjNZIWjjlA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483603; c=relaxed/simple; bh=09Sp2mWLnAegYNwA8F2u352PpyBaXNXliN8Ag4OkvzI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Cx4IHrsoX+sGLT9KY3KRgy881q9w73RTZBXpS61oZ3+yjGs5qwxmpxMr5ymnagl8MQRPLvUL9X9BL89X6JIpVUPpPsf58xnCv97JotdDCPFxvW2XNqURMVsy5hYm+ChTorpVvubUEkOlstZDFC64eQegNpfTWZjYwZBSmYmbnpY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mByTob3X; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mByTob3X" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-abb8045c3f3so676366266b.2; Tue, 25 Feb 2025 03:40:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483600; x=1741088400; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oLO2Wt1zOV1CJ5zuVwnVC3DTITBXMZP+UbGnpAaCAMY=; b=mByTob3X/WbaMFhuGvkOMnJkFtHp9uTV+LcXzORSJUB+QEclUiBE11UPceme2sifYf WVPG7/usYmDdKR+JS7QbRvEzFkY7dGz5bYKrXTZpqFA3sZtJlsFMbph9dXgbeDzwcc+d cwPxnKLOq5LbR9aqCHGsANKD6e/D2NA7pk2UOPZRFR08V+2AdLEfijiepZqcBjdltfQ/ r3D1/7U4lNobvvdL2P5n9HdrGClc/ymdl6K/Kz5f/hC2BnEf/6zeBBBFeK3qNhqqDvG7 Cpd8aFL88HeF4OuGP7jDUH48sNF7GkFGRV7F6ahJM0jYP+dY4Y8LhkGDMF7jwnBplqbF 5Vuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483600; x=1741088400; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oLO2Wt1zOV1CJ5zuVwnVC3DTITBXMZP+UbGnpAaCAMY=; b=Y5gSl8uB/dUJc0LKZCJhIJo7wji8Al4FTNskIRxKZaWrFj40YidCKjVTrariInM23/ oPwZBnWchBIrKQ8hW7S2PkbbQpXSy6kpG1xrghe+23ZHbOKyWL7qjCuB1aXe0hP32oYy O54fCGyA6zSCY+K9JfH2xgOVa1Yby06EI67809vr0iRw+7gbzS1/xGqKuaEf5y7T0PMT XowsqarcbyPh+lOd/Vv42A6cy/j/pb+ml/ifqisQVoC8C1sn0IvdRUe11YcyD/86Y1Pf Ayisu9j5vk1i8/ZeoIPhfPdRuwNiLNmyYUTw6NQPLiTi4Yz0pCsxIgYRY/dy43B2+/UC exew== X-Forwarded-Encrypted: i=1; AJvYcCUhD0mNRBYUBebKFC3xX0bNVvVS16oi5nmbMIm7fQGIJXb+07PygX1z2dk4eQz7+6GGzB9k2dilEKhDTXRG@vger.kernel.org, AJvYcCWfBXgGw8Ql2wQk7lec0JaZXtlprL3ZvbJ+7so7x7bgEF5/FFUTvC3XN+sITClFizMGIidW1Lm81mE=@vger.kernel.org X-Gm-Message-State: AOJu0YzDN/6lxyOsW9r61Ad5m5T/6RIuOz++pnjNqu91SkIxs+EV4vd9 QLhDXArsp3AFqQ22KWXQoJ0zZjiNvaYW+fiHD3VyMo4P1KVSmTi5 X-Gm-Gg: ASbGncuoUCiWMcO5R6RmHeP0lEN86cRxNDrLqyLVEHW6k+nPb1i15ubHb5IxoRQ5eA6 l0Y+kVC9w3aB4YQj3hOVt8nQbqcGVEwMH2TnRorm3utrlDWeFN8iHHPqVHxUDPXmzmFK4EvVFTM BRyV8ASaXdKcFQmJnGaNxRim9g/O/+m212XN4CHamWJD8R9X7Y7S1n6V3IiIABkvMUdgv50jEFq OR2X3j0rS4SUAA0tNRkTfxEf1PKEL7HE2jWfRtrDPq+V/1VA2L+aGioZOXEsP//P+0GhM9Fqg4O TFzoF4xE8p9n+3nd5ZDS70Krq5NoifQGUuBvdVM= X-Google-Smtp-Source: AGHT+IF8P+MAckBDQjFe1PQsS4Rk01Tzs/TC2jlZ9olXvr5z+Ya3lVc7Jp7BfoON9lcNDneOHnWEMQ== X-Received: by 2002:a17:907:6ea5:b0:abb:e6e1:22c1 with SMTP id a640c23a62f3a-abc09bf55bfmr1984381766b.35.1740483599961; Tue, 25 Feb 2025 03:39:59 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:59 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 9/9] i2c: atr: add passthrough flag Date: Tue, 25 Feb 2025 13:39:37 +0200 Message-ID: <20250225113939.49811-10-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Some I2C ATRs can have other I2C ATRs as children. The I2C messages of the child ATRs need to be forwarded as-is if the parent I2C ATR can only do static mapping. In the case of GMSL, the deserializer I2C ATR actually doesn't have I2C address remapping hardware capabilities, but it is able to select which GMSL link to talk to, allowing it to change the address of the serializer. The child ATRs need to have their alias pools defined in such a way to prevent overlapping addresses between them, but there's no way around this without orchestration between multiple ATR instances. To allow for this use-case, add a flag that allows unmapped addresses to be passed through, since they are already remapped by the child ATRs. There's no case where an address that has not been remapped by the child ATR will hit the parent ATR. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 3 +++ include/linux/i2c-atr.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index f7b853f55630..1986fa055f20 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -394,6 +394,9 @@ static int i2c_atr_map_msgs(struct i2c_atr_chan *chan, struct i2c_msg *msgs, c2a = i2c_atr_get_mapping_by_addr(chan, msgs[i].addr); if (!c2a) { + if (atr->flags & I2C_ATR_PASSTHROUGH) + continue; + dev_err(atr->dev, "client 0x%02x not mapped!\n", msgs[i].addr); diff --git a/include/linux/i2c-atr.h b/include/linux/i2c-atr.h index 2f79d0d9140f..b3797a930a7a 100644 --- a/include/linux/i2c-atr.h +++ b/include/linux/i2c-atr.h @@ -22,9 +22,11 @@ struct i2c_atr; * enum i2c_atr_flags - Flags for an I2C ATR driver * * @I2C_ATR_STATIC: ATR does not support dynamic mapping, use static mapping + * @I2C_ATR_PASSTHROUGH: Allow unmapped incoming addresses to pass through */ enum i2c_atr_flags { I2C_ATR_STATIC = BIT(0), + I2C_ATR_PASSTHROUGH = BIT(1), }; /**