From nobody Sun Feb 8 15:53:10 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.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 1C7B52236F0 for ; Mon, 29 Dec 2025 19:07:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767035260; cv=none; b=sANdpbh6LR8fAUDLKSr8tcfaPa6TY5Pg2AUYdtxfKz5Sx7kmzJWdMBBV4YaifSrf1P0JK9Kwnriil/g2zAhO0qmx5fzW0aCgR1ZfujFXkIkEEq3c5CqttOFpH0IifmMpnr3zQhO6XNVDs+C6ktM+vnGSid2/1lnq3lSp3jUsd00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767035260; c=relaxed/simple; bh=FgvNRjyVuB56J6pgRUwXe+fBJ4b8dq+SZ91KABRDXxU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Sht30ZAALotXRRlqD9qpFc8OXGvekhc4bSU8SGVDvOWyorrYeCRRLBIxZo1X5coWuqzBrV92YxhKvOurZxMzSXRODoEv6neB7Q4I69nUu8Nz+HJJphSQwhpkmUcyZIkgQL/oWu98jlM1/PAGziOPNScubVDat+JrN0i0Wgo+jqM= 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=UKOWlq9N; arc=none smtp.client-ip=209.85.128.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="UKOWlq9N" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-47d1d8a49f5so44704675e9.3 for ; Mon, 29 Dec 2025 11:07:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767035257; x=1767640057; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=rP1SzOzXmRlDn6/Q1ZH2RIeUyWZyRi5yjsuMgj/3+UE=; b=UKOWlq9NAtfMqzjA4Vq8VpE2ObYVoAf77fPkng077BaxChuER1P6519jsMrDigSw7G 8NK1zaQaRPmi6skRA4gyQd8Mcb4+6pEPNNM4W91dj1f4cp+QH45WUBDe66IOrlbePufZ U7Tzex8ihIlrrcQAvhXwFY1vpUqM0LNYdTjfBZxzuyX+ethUUL5Afo6yJbAoYolsEnk4 iv/m+LwJRk41lAVbr5cmgqNf2TrtPDi/vVckb5A27jXLeTqIavr/4B5QZf5dV7dLqb4q Fs2mSmags9BIy92A6ekgN5MM6N4VCZtmibv78DiqLGLh7XmZ3vzpNJ01936Fk49x/iLc npHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767035257; x=1767640057; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rP1SzOzXmRlDn6/Q1ZH2RIeUyWZyRi5yjsuMgj/3+UE=; b=tkwR5L0pciFTiPOsNxG2HRxLFUT3F3kwhDfksN6qD+eSsngMF9qoECkLzhBkKR5Du0 u8eNLJlniBvFqvl+GnOZvwgq0DAt4fhhsUZbqvD8hY66Spbpsp9GHPD0bL32VU9Juh86 tcjhPVqbCUP13zKNO9C2J/azKHouWUNQgLoEMvoecl6L7QTwBhn6vYshwgus5RH98yAB UpPhxVvS4xuvXbP4LfFr8Q4tRbuIxs8TYv3BU3lE79Z7e6yr9ebpwZ2BjDJbUpYdzEHy EUHJkEqysG31moG0ka5rjIXU3Wpseb+FjE49kD3+6oMgaBZq5z1QwBnLTcTfmGNku7VN cMcQ== X-Forwarded-Encrypted: i=1; AJvYcCW+/MVQ/aVhyPnXxzU56jB2pKqAhIRefXc1906kBMl+Jvv0+cm9MM1TTOOL73fSgk6d4bT3rGjXXsKXHHI=@vger.kernel.org X-Gm-Message-State: AOJu0Yyp9v1fB1mQ+ZearmHpedUMg1vay48hSl3QSObKTuHrK/zYtIKu 8L6MzxCWE8neiDhJ8dte/L9++abImfxnJFn1giwsPLPD9ephElLzcaaB X-Gm-Gg: AY/fxX5o4jMGNNvirXfxyW2kzc0prn0VuybVAnXjpP3I7vtIQuxbTw/WwD089bh+5LG 42K22NsXFqi0FozYDAw5EgVemz6sjxp//eSi5m4qHZu1KUUw3jZrud9qGAcFF7Q83GdYFEAHUQT rf6JMkPGGHPidgb/fPt5HAk+3hYbVF4/ujTRNiStotTPl+N4d7l+VWrH5vkZ/oVb2nf7b1ofsol iB0vOgZkk7qKKwGH0i/MAd0ikii8ez9hyfr0jsNCeZReP7TxLdw36fy8flpZBC0hXbU4nKom8MM WlmyI/D00SWy37p2q45hoW4anejumryG0Vpn3ZUVKLQwwj5GOF4fhEvC08GGJg5MqCfiVsoriRf aoXU7fpxaJNOsA+UfVD6RDRnzzhcvGxUDd8H7k2jnUJAtN/CPTBr8+hDiwiAvW4kYpEk5KXsHvJ TiAMTIKZI8ZvkdzRMXJ6ASz9/4kpNAZ36MCvc8ZPfgneGwer5Mv5hRA8fPHPg= X-Google-Smtp-Source: AGHT+IFs58qgOQfQUVXt/sriHQkP0GV7v9bRIdmKBBiev34WBxTlhriKFM6AOrAkGjmpQz8xz0VYTg== X-Received: by 2002:a05:600c:a31a:b0:477:b48d:ba7a with SMTP id 5b1f17b1804b1-47d1afcd9e2mr278650755e9.32.1767035257227; Mon, 29 Dec 2025 11:07:37 -0800 (PST) Received: from navid-Latitude-E6430.homestation.setup ([2.190.79.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be2723b2bsm604164695e9.3.2025.12.29.11.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 11:07:37 -0800 (PST) From: Navid-Derakhshandeh To: mporter@kernel.crashing.org Cc: alex.bou9@gmail.com, linux-kernel@vger.kernel.org, Navid-Derakhshandeh Subject: [PATCH] mailbox: rio : implement discovery for all Date: Mon, 29 Dec 2025 22:37:23 +0330 Message-ID: <20251229190724.20608-1-navid.derakhshandeh1@gmail.com> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Navid-Derakhshandeh Implement rio discovery for all --- drivers/rapidio/rio.c | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/drivers/rapidio/rio.c b/drivers/rapidio/rio.c index 333d783af6d4..0b11e8ba3126 100644 --- a/drivers/rapidio/rio.c +++ b/drivers/rapidio/rio.c @@ -23,6 +23,8 @@ #include #include #include +#include + =20 #include "rio.h" =20 @@ -1062,6 +1064,62 @@ rio_get_input_status(struct rio_dev *rdev, int pnum,= u32 *lnkresp) =20 return -EIO; } +/** + * rio_restart_discovery_all - Restart discovery on all RapidIO networks + * + * Iterates through all registered RapidIO networks and restarts topology + * discovery process from each network's host port. Intended to be used + * after a system-wide error or configuration change. + */ +void rio_restart_discovery_all(void) +{ + struct rio_net *net; + + spin_lock(&rio_global_list_lock); + list_for_each_entry(net, &rio_nets, node) { + if (net->hport) + rio_scan_mport(net->hport); + } + spin_unlock(&rio_global_list_lock); +} +EXPORT_SYMBOL_GPL(rio_restart_discovery_all); +/** + * rio_maybe_restart_discovery - Restart discovery if device requires redi= scovery + * @rdev: Pointer to RIO device control structure + * + * If the given device is associated with a RapidIO network, + * attempts to restart topology discovery from the network's host port. + * Intended to be called if an error condition is detected that may + * require rediscovery to restore normal operation. + */ +static void rio_maybe_restart_discovery(struct rio_dev *rdev) +{ + struct rio_net *net; + + if (!rdev || !rdev->net) + return; + + net =3D rdev->net; + + /* Only restart if there is a valid host port */ + if (net->hport) { + msleep(100); /* Brief delay for safety */ + pr_info("RIO: Discovery restart triggered for device %s (net '%s')\n", + dev_name(&rdev->dev), dev_name(&net->dev)); + rio_scan_mport(net->hport); + } +} + +static void rio_restart_discovery(struct rio_net *net) +{ + if (net && net->hport) { + /* Delay briefly to avoid hammering after repeated errors */ + msleep(100); + pr_info("RIO: Restarting discovery process on network '%s'\n", dev_name(= &net->dev)); + rio_scan_mport(net->hport); + } +} + =20 /** * rio_clr_err_stopped - Clears port Error-stopped states. --=20 2.51.0