From nobody Mon Feb 9 00:53:53 2026 Received: from mail-dy1-f201.google.com (mail-dy1-f201.google.com [74.125.82.201]) (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 61C373AE6FE for ; Tue, 3 Feb 2026 15:46:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770133603; cv=none; b=pijY2K7M9Rxjh1NHCkY1xxy9mvHVn0pOXZG3UQA+5IUxNzl1mJ5nkFf+N3FtTXWKYLBsj4jSDbwsAH/DMojcYLx6tTGPQOuq0fHo2UKlcIv7ZhEj0gnb74E4ahLldASqQdl3wSL9p3Iz5sXfsRcZ8AGyeJlz1cfsxwdYnVsHsto= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770133603; c=relaxed/simple; bh=RwCJ/xEwqbjligRdRo7donBAUlsdrVxdbuTW9DJLV3g=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=n2Idcy9UrPGPpd0cgUDwTkqqI5OUG2SUdA7YhEmIw2vsiKacKgUEDam4DvxRxGddla8Sdm6Ltxb2/Oj48CkLbQZyyo2cyAVVlSWTprzx/9f6DU3Qt0O3N/2tuliFTkLfXSbgfTMjdxTr39eVHqNuKoiIWouCIFnNdHreK0dgoSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--mmaurer.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=QWWpbDi+; arc=none smtp.client-ip=74.125.82.201 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--mmaurer.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="QWWpbDi+" Received: by mail-dy1-f201.google.com with SMTP id 5a478bee46e88-2b72b6fc371so11046825eec.0 for ; Tue, 03 Feb 2026 07:46:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1770133600; x=1770738400; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=KdXVf1jtiVVdnaqb+rLnoB8/QmUjcxzniTwKjo2bXrU=; b=QWWpbDi+07DEGZt/vbKJ4gHNZQvQ9xKkTh6732LHW4Pw7iLWmQPaPw40lm/jK1iXFv RsaY+EyR9ugT8iRjNWYsQIz1WYyFkALVnbRps2rNI4MePXVn+R3HTfn0sd47SAYRESmm VdM68Uzak3YXOm3T1MiTs9pny8iOXHAQNiiR7Bh2L17xpL4bISRbqjE8xe8bNPD/bimA q/3aMkFxtIKqOqH49AuO4K/nB7Hwzc7iyMgpG40QINdvujP6h3q2gDd1SxJ0DR4OehQW YlWFgqYRM8NgxMibh9YHCkNx1FQ84lHH14/keobHJFY1ilaYorqUT27KXV8kqoFJVS7N W85A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770133600; x=1770738400; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KdXVf1jtiVVdnaqb+rLnoB8/QmUjcxzniTwKjo2bXrU=; b=HP0oGkEo8OU2gThmN01DtZtsnAffVdnIZic9RtEv8z6d8HAnj2Ch1JvbG2g3OySEdH 2YhZw1/tKBwYW3B7YNiO4bmuWHAfvxn1IfG9NHyKGaDf8AvnR/gKpDHpoPyQTC60g25B fVR45xOQq6IjbseedTegCdEj1w2zpt2cGggfysb6oSH6qt8Arp54YVWGfKE7gTbeBG7X mO81Gnjba+xY/eiJ93J2bIpi/EAu9jq45ViYN+RIC57a/CzHC8zTHcYcsKW6z7OjyG0A xRrKH5tmSQigSy4ECCuERjPlqYRYsyGWiXJl6Y53bfUvc/oHpecitX8DIGyzOCI6adWU 8cVg== X-Forwarded-Encrypted: i=1; AJvYcCVJrK8t9VAVSOW/x0pGNB2PO1FamBzDRhVzq+m86key4tQRHH1we0693XxgMh1RwCj0bgLjfXnoIRYQ5nI=@vger.kernel.org X-Gm-Message-State: AOJu0YzsbyK8qZIx3dLc+YZOXtOJvjAoP/q6aUHsxliWQHVVf3Jn1jV/ 8N6/F7TBY57n71Hd8hydcKpTw+BjrP0VlgNz6I/3fBaLvhCXmEQsL/++SKYHPEu3sQhlMDimPQh zKPCK242UrQ== X-Received: from dycrt20.prod.google.com ([2002:a05:693c:2d94:b0:2b6:c6a7:636a]) (user=mmaurer job=prod-delivery.src-stubby-dispatcher) by 2002:a05:693c:3002:b0:2b6:c617:f795 with SMTP id 5a478bee46e88-2b7c86663c1mr7418033eec.17.1770133600442; Tue, 03 Feb 2026 07:46:40 -0800 (PST) Date: Tue, 03 Feb 2026 15:46:32 +0000 In-Reply-To: <20260203-qcom-socinfo-v2-0-d6719db85637@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260203-qcom-socinfo-v2-0-d6719db85637@google.com> X-Developer-Key: i=mmaurer@google.com; a=ed25519; pk=2Ezhl7+fEjTOMVFpplDeak2AdQ8cjJieLRVJdNzrW+E= X-Developer-Signature: v=1; a=ed25519-sha256; t=1770133593; l=2963; i=mmaurer@google.com; s=20250429; h=from:subject:message-id; bh=RwCJ/xEwqbjligRdRo7donBAUlsdrVxdbuTW9DJLV3g=; b=SQdCmaIOesp2nNqbcmI1qfM3G5NEMlAiTI7JoMUcwHSNW8vyq+fqK1lL17+OwnTzARN5rGU+z 9PyU4DL3NSyDmB3rGdnOpkIMgMGTW/9HGTk/h/gqJgPbPfyQrUyBmYk X-Mailer: b4 0.14.2 Message-ID: <20260203-qcom-socinfo-v2-3-d6719db85637@google.com> Subject: [PATCH v2 3/6] rust: device: Support testing devices for equality From: Matthew Maurer To: Bjorn Andersson , Konrad Dybcio , Satya Durga Srinivasu Prabhala , Miguel Ojeda , Boqun Feng , Gary Guo , "=?utf-8?q?Bj=C3=B6rn_Roy_Baron?=" , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Greg Kroah-Hartman , "Rafael J. Wysocki" , David Airlie , Simona Vetter , Michal Wilczynski , Dave Ertman , Ira Weiny , Leon Romanovsky Cc: Trilok Soni , linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, rust-for-linux@vger.kernel.org, driver-core@lists.linux.dev, dri-devel@lists.freedesktop.org, linux-pwm@vger.kernel.org, Matthew Maurer Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable This allows device drivers to check if, for example, an auxiliary devices is one of its children by comparing the parent field, or checking if a device parameter is its own device. Also convert existing `.as_raw() !=3D .as_raw()` to use this new implementation. Signed-off-by: Matthew Maurer Acked-by: Danilo Krummrich Reviewed-by: Gary Guo --- rust/kernel/device.rs | 8 ++++++++ rust/kernel/devres.rs | 2 +- rust/kernel/drm/driver.rs | 2 +- rust/kernel/pwm.rs | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs index 94e0548e76871d8b7de309c1f1c7b77bb49738ed..aa10359d3ebdd1c99cc567a35b8= 9f52ddb2ee050 100644 --- a/rust/kernel/device.rs +++ b/rust/kernel/device.rs @@ -516,6 +516,14 @@ unsafe impl Send for Device {} // synchronization in `struct device`. unsafe impl Sync for Device {} =20 +impl PartialEq> for = Device { + fn eq(&self, other: &Device) -> bool { + self.as_raw() =3D=3D other.as_raw() + } +} + +impl Eq for Device {} + /// Marker trait for the context or scope of a bus specific device. /// /// [`DeviceContext`] is a marker trait for types representing the context= of a bus specific diff --git a/rust/kernel/devres.rs b/rust/kernel/devres.rs index cdc49677022a6b466e771d9d8cf3818ab9b9112d..20126daad193370868661b94129= 37937eda6d3c4 100644 --- a/rust/kernel/devres.rs +++ b/rust/kernel/devres.rs @@ -281,7 +281,7 @@ pub fn device(&self) -> &Device { /// } /// ``` pub fn access<'a>(&'a self, dev: &'a Device) -> Result<&'a T> { - if self.dev.as_raw() !=3D dev.as_raw() { + if self.dev.as_ref() !=3D dev { return Err(EINVAL); } =20 diff --git a/rust/kernel/drm/driver.rs b/rust/kernel/drm/driver.rs index f30ee4c6245cda72ac72852bf9362736d8fe992f..497ef46028d560bc9649dbbdf69= 316ce4fce8199 100644 --- a/rust/kernel/drm/driver.rs +++ b/rust/kernel/drm/driver.rs @@ -139,7 +139,7 @@ pub fn new_foreign_owned( where T: 'static, { - if drm.as_ref().as_raw() !=3D dev.as_raw() { + if drm.as_ref() !=3D dev { return Err(EINVAL); } =20 diff --git a/rust/kernel/pwm.rs b/rust/kernel/pwm.rs index cb00f8a8765c8ec58ed78a73275b022b02bf7aa3..033f778909a2633acbc25d5a21a= 1c8a7b8e41a70 100644 --- a/rust/kernel/pwm.rs +++ b/rust/kernel/pwm.rs @@ -680,7 +680,7 @@ impl Registration= { /// calling `pwmchip_remove`. This function should be called from the = driver's `probe`. pub fn register(dev: &device::Device, chip: ARef>) -> R= esult { let chip_parent =3D chip.device().parent().ok_or(EINVAL)?; - if dev.as_raw() !=3D chip_parent.as_raw() { + if dev !=3D chip_parent { return Err(EINVAL); } =20 --=20 2.53.0.rc2.204.g2597b5adb4-goog