From nobody Mon Feb 9 04:56:03 2026 Received: from out-181.mta0.migadu.com (out-181.mta0.migadu.com [91.218.175.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0084A25C6F1 for ; Mon, 10 Feb 2025 19:40:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216426; cv=none; b=OTIy/7oRuCqaV/CNMBwMXj5YzMfrAmZQanKkZPVZm31gO45P66+bp05A8b+50PjuA9TsytBTiB+5DsyVxWRUJT96JjA1B4xgpqEPQCOGrFDnkk6iYzQfjRUyotGvTWIcXPhNGOUOKLmD8mf2C2NI2H5LNEuqhwEZJVTB8GGiyGs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216426; c=relaxed/simple; bh=DPdvKhQ3kbgTp3Fn2VyCCGlV/g2DDrlKViyHLbfPM1o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bIX9Y7TrTDHU1LwjJeB+u5W2rZogVt+uQTYq0Ld9LsnoldEB0R/9ooJVoijFRwvjjuUOTbUpAL4Ii35/T9SWsUb6ZoTvi7PEajfOwPjMv7WPa2tAa83vCq2IC5PNBscqRmofwvhu5wtgSYgIr4ElD6Lp5xWmOZoIkRGXbPB/1AU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io; spf=pass smtp.mailfrom=rosenzweig.io; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b=tllRQVac; arc=none smtp.client-ip=91.218.175.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b="tllRQVac" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rosenzweig.io; s=key1; t=1739216421; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SPT9rgj0rLpckhACaCzlKgGeeCb7MV3HiAZFcPnjPCo=; b=tllRQVac7aKjW2rAIx9zhjYgi3keo7pIMJVAyv9DPj9OLvDEc2qwDn/EGjJy7Cp68AeeVG meyL9UWkzu0Tl6WW1e8ETEYsIeY6gmt+aBvfwfjak5T1P2UPcZl/fkj+HoXdoo4eSK0aet kirFTxP+VoV8bo18i7Tg17IgrNpSenV4ODzdY2iNO3iwvvAFNjwCjqzVNuFri9pDQIqS+R UyZHSTm5//LLl7MAR7rtGyfvjDpRZ1tSlMrXPSN6gzU0VLrBU9VeqDDiDElEZja/Q8M1Lu /Q19d3lYFID7XJBT5atjBpYL6cJ07UUV6xcX16JP+Bvec4EMlIONvOCGvHj6qQ== From: Alyssa Rosenzweig Date: Mon, 10 Feb 2025 14:39:53 -0500 Subject: [PATCH 1/5] iommu/dart: Track if the DART is locked Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250210-locked-dart-v1-1-5d97fe247f35@rosenzweig.io> References: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> In-Reply-To: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> To: Sven Peter , Janne Grunau , Joerg Roedel , Will Deacon , Robin Murphy Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Alyssa Rosenzweig X-Developer-Signature: v=1; a=openpgp-sha256; l=2311; i=alyssa@rosenzweig.io; h=from:subject:message-id; bh=DPdvKhQ3kbgTp3Fn2VyCCGlV/g2DDrlKViyHLbfPM1o=; b=kA0DAAgB/v5QWgr1WA0ByyZiAGeqVhmhMAEDsg2LrpEFYFtHpvoi59s/jPPOHIcYInI9JT71g IkCMwQAAQgAHRYhBENe4JuwrwDQHar2OP7+UFoK9VgNBQJnqlYZAAoJEP7+UFoK9VgNwJMQAKJm FqkCYR0CPS075sM8jAaNwH61RG7jWysqRhdrd9RWnY90Ni9DTozTZTBpYHGqjlvU39F0nC70WPU LfTQcqV8PiymZ30FpxyPpRynmJwrw6FjDhQNI3xJy9KLEjy0GqoNwwjYVFUdftXoPetPjGo2bv/ L0mY2vXCS0aPvoPOA9Y2iJOEjpAiHlC+XYAkZaDzbsDTIiXHPj3NzLEi3y/d13fxWw4YGX1uHHd 0mYyd0ymPgb8An9pwmL2Q75NgVJdPRYKdY/ZhlMbUfd6h/EYRleKkZNW13Lpk2M8Nnxdc852dPD 0HJdmn0h1UpRjuIkY32hA6gzmFXj77jpcOsqRkEmVDS5nCvrGv3aL5J3vxUjqbeXoENGeSOtZQT vx5xVm0J+ueuwPZRqZxK0yUkP3sqU8Nvwa5znSSOzDVAwQ4aLqpYHXYrChHbn6MVWYd8yC7vR6j xZbVGQqU4FUiDHJEr+HMvyOb9TlvSFuWuFtXBnH49YNxFtDqNT8eZZA/4ADIDMUGWBlIbkp/1kl trouAk/ftwx9TuM5CxccxVng79ULPOfbfOPMonaWkjf9TAEU6pq0SFh/lI1Vd6iRLVyuJBh9BXQ 1VrnET6L1lVXVO7CW0CSiYLWFIcGylH4C4fcDLgL5AZqTApbaK7pkdVmrUrzfdOAmgPYxAnDiJd KwjO5 X-Developer-Key: i=alyssa@rosenzweig.io; a=openpgp; fpr=435EE09BB0AF00D01DAAF638FEFE505A0AF5580D X-Migadu-Flow: FLOW_OUT Some DARTs are locked at boot-time. That means they are already configured and we cannot change their configuration, which requires special handling. Locked DARTs are identified in the configuration register. Check this bit when probing and save the result so we can handle accordingly. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Neal Gompa --- drivers/iommu/apple-dart.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 95ba3caeb40177901086076416874b9905a1f40a..460cf96bc8001e051916f356d5d= 175b35e36c608 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -197,6 +197,7 @@ struct apple_dart_hw { * @lock: lock for hardware operations involving this dart * @pgsize: pagesize supported by this DART * @supports_bypass: indicates if this DART supports bypass mode + * @locked: indicates if this DART is locked * @sid2group: maps stream ids to iommu_groups * @iommu: iommu core device */ @@ -217,6 +218,7 @@ struct apple_dart { u32 pgsize; u32 num_streams; u32 supports_bypass : 1; + u32 locked : 1; =20 struct iommu_group *sid2group[DART_MAX_STREAMS]; struct iommu_device iommu; @@ -1076,6 +1078,11 @@ static irqreturn_t apple_dart_t8110_irq(int irq, voi= d *dev) return IRQ_HANDLED; } =20 +static bool apple_dart_is_locked(struct apple_dart *dart) +{ + return !!(readl(dart->regs + dart->hw->lock) & dart->hw->lock_bit); +} + static int apple_dart_probe(struct platform_device *pdev) { int ret; @@ -1143,6 +1150,7 @@ static int apple_dart_probe(struct platform_device *p= dev) goto err_clk_disable; } =20 + dart->locked =3D apple_dart_is_locked(dart); ret =3D apple_dart_hw_reset(dart); if (ret) goto err_clk_disable; @@ -1165,9 +1173,9 @@ static int apple_dart_probe(struct platform_device *p= dev) =20 dev_info( &pdev->dev, - "DART [pagesize %x, %d streams, bypass support: %d, bypass forced: %d] i= nitialized\n", + "DART [pagesize %x, %d streams, bypass support: %d, bypass forced: %d, l= ocked: %d] initialized\n", dart->pgsize, dart->num_streams, dart->supports_bypass, - dart->pgsize > PAGE_SIZE); + dart->pgsize > PAGE_SIZE, dart->locked); return 0; =20 err_sysfs_remove: --=20 2.48.1 From nobody Mon Feb 9 04:56:03 2026 Received: from out-180.mta0.migadu.com (out-180.mta0.migadu.com [91.218.175.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 505DC25C6FD for ; Mon, 10 Feb 2025 19:40:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216427; cv=none; b=CLuk1a869MRp5eDFiXJui18kMqlhx/7+b1ZpsxIE3EtuZ/kaaMt8sI/PeWE23dO8jZz8VxBn2p2hDsU+qltvL6OCuHPUTHn4U7UuOTW3G/moVhQAkQ6N1lMeaZRkz6Ow9oe4oDGdPY0fsrfZnRhv5GeX48Adbv5n7rn1sBL4aK4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216427; c=relaxed/simple; bh=aaTDpX6ibfDGaC/RfCGv1TxYljIk7EiF/i2ba6hh4K4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k1ufKZ6V8zKY60ktYH9xO+EmgEEc0lfuMTmgY9ANwZiJ9nvQ+DmV98eICK+MoXmSnYwlt/3RxQWhhBbkJN940ySTvsjM5cQd6Eg+RI7h7Yw82fx6Sz0tUr6deRw0SKKrWvAIPVGOKf4Y2HShU10yrgM/7jO7L8LMWpuiKtFGhKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io; spf=pass smtp.mailfrom=rosenzweig.io; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b=Yrdlg6Us; arc=none smtp.client-ip=91.218.175.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b="Yrdlg6Us" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rosenzweig.io; s=key1; t=1739216423; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Kz0nyJ7WvRmnQlm0RtDzsCt8ytIfHB7c5nD03lfkpQo=; b=Yrdlg6Ustd49sldQRowOZXLEs3setf3ln0voRaH2wpyzcHRMKugrZJJR6cG/nvo7YfRo82 F2SNQJsefmje6IDldZouEfGy/ZFbQcNfmintFJKrfTWdFWeQEkgprAHvIaawXX3R08LX0d myH2eEG2yOT0PdpYfdRP3uMeBRxTdFw7whaQJSTJZw7AisxI/PNMYD/Iv79/Uy3Db7BnHb lSh2GprWdYqrFj/+ib4R2B4TEFkQh8uDGYOIl7pAkdNZ6CDIG8VMAij9UeoIeidRQG+I1M jCcj+EIblzby3we1eq2bs58/ML1A5CKEdIttLYa+t9mwmIrgzXRWPlkujijycw== From: Alyssa Rosenzweig Date: Mon, 10 Feb 2025 14:39:54 -0500 Subject: [PATCH 2/5] iommu/dart: Skip reset for locked DARTs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250210-locked-dart-v1-2-5d97fe247f35@rosenzweig.io> References: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> In-Reply-To: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> To: Sven Peter , Janne Grunau , Joerg Roedel , Will Deacon , Robin Murphy Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Alyssa Rosenzweig , Hector Martin X-Developer-Signature: v=1; a=openpgp-sha256; l=2327; i=alyssa@rosenzweig.io; h=from:subject:message-id; bh=aaTDpX6ibfDGaC/RfCGv1TxYljIk7EiF/i2ba6hh4K4=; b=owEBbQKS/ZANAwAIAf7+UFoK9VgNAcsmYgBnqlYZ4XpVKED3AuP44JWAGY5N9sUenu+SB6n/R MuO7oEpJq6JAjMEAAEIAB0WIQRDXuCbsK8A0B2q9jj+/lBaCvVYDQUCZ6pWGQAKCRD+/lBaCvVY DVZtEACF0ixVnQrS6o/8V7HVns7hmOv7asVpK1AKZstPf+b99/Ojt6HaJkBlZfR5mQXZVpPwF+8 Cq9lJpfykH/tBMISpG2Uhr6qkBDcDe8AQALK/179b3VCOydowJ2njiRYTUqe7jTaUFs6GrEuI4M 3/kee6DR+rA7s0SqTE9huwjyAo/tIFQKuQUf2ha1o5LeBQ7Hmkjt0OjW9qCiaTdrk/xawtzCjtp K9Ee2y4/Ev90qmvm/0cpj4QcuCvSKehKn930a7biQu83n0mDSdWBXqeigbHDzRxPwhsee+fw8aa /LxMi5bw/CmyUf1orROoFQG3NfPQT+5lnO7hu/gPfDXRvbNGlR+tNY3qWosjT10wssd+2sq9lp/ qCIP2+XYnOA0M5bFNwDKkcTvjm2Uy+AV1MheCb+LXXX35BCKlMPHc7BeeMNhtIBUW0u1UeWpbo7 6opowGblNJW0OdQY8TidlegtFq5uSyDlXuWYYWYdBElBvpte0CqinXEVwgiGvHDTHXf61aYrXm6 pTdSCj3YS8/IcDNVRqsEZYUqKhMaBmcrLLBWSKK7RX01BeMdT3rTD7AzkErkiv5pxM1CSyRLcLQ qar7Wl3CUPorSW2uVQMzGfSqGKQGjtcHRMkjYIgJaz8vk3jb7oy6Sku6S/awoFpvhLYU4xV+UBt 2eAYA9IwaIuqDBQ== X-Developer-Key: i=alyssa@rosenzweig.io; a=openpgp; fpr=435EE09BB0AF00D01DAAF638FEFE505A0AF5580D X-Migadu-Flow: FLOW_OUT Locked DARTs cannot be reconfigured, therefore the reset/restore procedure can't work and should not be needed. Skip it, allowing locked DARTs to probe. Co-developed-by: Hector Martin Signed-off-by: Hector Martin Signed-off-by: Alyssa Rosenzweig Reviewed-by: Neal Gompa --- drivers/iommu/apple-dart.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 460cf96bc8001e051916f356d5d175b35e36c608..9c74a95eb7e819e94ab2fb47ed0= d411a1eba8bf7 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -452,17 +452,9 @@ apple_dart_t8110_hw_invalidate_tlb(struct apple_dart_s= tream_map *stream_map) =20 static int apple_dart_hw_reset(struct apple_dart *dart) { - u32 config; struct apple_dart_stream_map stream_map; int i; =20 - config =3D readl(dart->regs + dart->hw->lock); - if (config & dart->hw->lock_bit) { - dev_err(dart->dev, "DART is locked down until reboot: %08x\n", - config); - return -EINVAL; - } - stream_map.dart =3D dart; bitmap_zero(stream_map.sidmap, DART_MAX_STREAMS); bitmap_set(stream_map.sidmap, 0, dart->num_streams); @@ -1151,9 +1143,11 @@ static int apple_dart_probe(struct platform_device *= pdev) } =20 dart->locked =3D apple_dart_is_locked(dart); - ret =3D apple_dart_hw_reset(dart); - if (ret) - goto err_clk_disable; + if (!dart->locked) { + ret =3D apple_dart_hw_reset(dart); + if (ret) + goto err_clk_disable; + } =20 ret =3D request_irq(dart->irq, dart->hw->irq_handler, IRQF_SHARED, "apple-dart fault handler", dart); @@ -1192,7 +1186,9 @@ static void apple_dart_remove(struct platform_device = *pdev) { struct apple_dart *dart =3D platform_get_drvdata(pdev); =20 - apple_dart_hw_reset(dart); + if (!dart->locked) + apple_dart_hw_reset(dart); + free_irq(dart->irq, dart); =20 iommu_device_unregister(&dart->iommu); @@ -1325,6 +1321,10 @@ static __maybe_unused int apple_dart_resume(struct d= evice *dev) unsigned int sid, idx; int ret; =20 + /* Locked DARTs can't be restored, and they should not need it */ + if (dart->locked) + return 0; + ret =3D apple_dart_hw_reset(dart); if (ret) { dev_err(dev, "Failed to reset DART on resume\n"); --=20 2.48.1 From nobody Mon Feb 9 04:56:03 2026 Received: from out-185.mta0.migadu.com (out-185.mta0.migadu.com [91.218.175.185]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2383C25C712 for ; Mon, 10 Feb 2025 19:40:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.185 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216429; cv=none; b=oT0uCDIJ6syixiowRGZpxNy5It8TeNZuczTCP4ZDivp8N82YogpVNkF1zbsKsA5RHMx8PYnICwuK8QWi/CZwHfh0UFVgxfS22ID+aPyI+TydXZpCyfvX23zoCCPcmGpteMN/f8oSU2pYeWym9BhxlgGhUurEfozycC/zk0pKF+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216429; c=relaxed/simple; bh=vfY3Ml+fLw1XdmnLqUIQmLLEE3BWPKNL9c3pG0gr//M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ANkDMQyS96dFgn2oC6nsxeUQ287uusZ2//1GqwWsESVv9PSUOZYdlZtAtowp25u4nKVxkGl7XaWGjlPTN4Qvd+imc1nDFcGICOMh7qgoVAy3wXQGiYumEzGiwYVf5CXUxrJ/SVGG+2CKMIeAhxoCFi8p+eDbJZbUpVaW9n5TV7E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io; spf=pass smtp.mailfrom=rosenzweig.io; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b=YP6oko9y; arc=none smtp.client-ip=91.218.175.185 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b="YP6oko9y" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rosenzweig.io; s=key1; t=1739216425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fjtngZOALj0IdzC20tSSm4wP6kwl37jWj1bmM1dPR3M=; b=YP6oko9ydeGKDbCUXgUWDwZx7AmLeQHdkfPPiX0YgmxNqrGYhqcaz16AyITxVHYxiPRlDd mWzZ7zimIZuEzTq8TDoZcSIU17UGviFlmVa07thtRUEHeLayJI5Jz5t0sTASdLbc3PLS0r nMxuy6Ygqq3pi/c8mE5yzYDutR/en9KdJy/Zy0g4LowvqEEzgAt1f5mU/5KoY1LJKGn4mm 7gDC7Gvb/xYrwa0QdJZufBcHz6mhrDI/21uLeDyZuxcX7sJO+t/p+ENgXGRNYi6p0dARAg Y22uBXJpWc/XwZfKIPQkdwlHxKpGXfqiO0O3d5s+dggAE776izoT0+XwH5tP0Q== From: Alyssa Rosenzweig Date: Mon, 10 Feb 2025 14:39:55 -0500 Subject: [PATCH 3/5] iommu/dart: Set DMA domain for locked DARTs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250210-locked-dart-v1-3-5d97fe247f35@rosenzweig.io> References: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> In-Reply-To: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> To: Sven Peter , Janne Grunau , Joerg Roedel , Will Deacon , Robin Murphy Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Alyssa Rosenzweig X-Developer-Signature: v=1; a=openpgp-sha256; l=688; i=alyssa@rosenzweig.io; h=from:subject:message-id; bh=vfY3Ml+fLw1XdmnLqUIQmLLEE3BWPKNL9c3pG0gr//M=; b=owEBbQKS/ZANAwAIAf7+UFoK9VgNAcsmYgBnqlYZaLYJk9YI39mlAZ7tjhDRbEXzpCnX3HelN hhl52qjIAWJAjMEAAEIAB0WIQRDXuCbsK8A0B2q9jj+/lBaCvVYDQUCZ6pWGQAKCRD+/lBaCvVY DQTKD/90hufX4dDRXOyWEiQmFI/VWv/5QX3qjHE7OWRfK5qgiPC5/291LA6X0ncH8GkjUPvV26O EQRBjaKcB4ej74zuhj/haSG8A+jR3JtYIlzwq4PQ0zcFVjQDCSA9KD5Pt9lZrrvKfCOv2jdlVd+ el3H4KQ3d0VqveZcUjfQF5iqWFakbituKGIhVCIdKWThMh+gh+rf6An8U+aPx6LFc4nvizzKMGu Lnp4SX/ZTEODdKwWzeG4VnbtRt5yOlvpA3jeWgFPre1K+SJNL8O1hbXkjtX4QEQyGMEt3cbmk3K xzjQkofbN2ljTPKrgBPcMQKnqGmBr5uM4aTUkHou4m/mkx24VAUrlWZf3+kM+wU6v4iE17mmxf0 /DkHDg+QIKnqFtbfBSqYn+dNGUR+a4UE3t0lktQu0VRd6efUrd06sAwoUs91QcQviVYaRmHAzSL Ch82dZ/XLzlPC14r0hnmjaPmnFDlKXw1z9z68Pxpnbz1w0RPwI0nyhCgCwffvxBsr5xpij94Rj7 Ot+9UAEgQXk7Q5g4rTckNe/A+nRr1GZmOERATyyZFI4wehp9rYB8t3mZgbaFJ7E3bfXIlGDr7rP I+QCjuC2ov+yTcJ+ZPLi42kCmMGb0G/9pPn59Z8JNaI3SLY1cFcxpcXLQj4HSSLcXWmMQWhi7hC lDZ3xcY606Wx95Q== X-Developer-Key: i=alyssa@rosenzweig.io; a=openpgp; fpr=435EE09BB0AF00D01DAAF638FEFE505A0AF5580D X-Migadu-Flow: FLOW_OUT This is required. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Neal Gompa --- drivers/iommu/apple-dart.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 9c74a95eb7e819e94ab2fb47ed0d411a1eba8bf7..9c6f780dc7220096ed6bba692fa= 1a4bd859b0d61 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -941,6 +941,8 @@ static int apple_dart_def_domain_type(struct device *de= v) return IOMMU_DOMAIN_IDENTITY; if (!cfg->stream_maps[0].dart->supports_bypass) return IOMMU_DOMAIN_DMA; + if (cfg->stream_maps[0].dart->locked) + return IOMMU_DOMAIN_DMA; =20 return 0; } --=20 2.48.1 From nobody Mon Feb 9 04:56:03 2026 Received: from out-176.mta0.migadu.com (out-176.mta0.migadu.com [91.218.175.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1BE1625742A for ; Mon, 10 Feb 2025 19:40:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216431; cv=none; b=RzdC7G6d+5QLuO1Cn0m/A6lJXgSqKwLgk6CfkHxb43EJfm9/ZYYyz9+edWtvkFOpIxwYTdDVjaLIaEtIRatXcaZyYE6s+UPS3Q3zvAkUd/hhMx+lHO87ePA2F/tfKRdyeLeVWzDLBpdkXR78/0zyt27jYbxBBxGj9bKA3gAZ4o4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216431; c=relaxed/simple; bh=Q2X3fPKVvdzr1B3hHwj4E/4Mk7pqhs1UeDt0uJfgsNE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ir0IZxg8Ej0/LH3xj65l8hwOldM319RRAJkrNcHdEBgVg8xGqvCMAzIXyFKlJ3utSX6To6oHN5mDR9dFq0uR04hesUW/uJgGz1ky6BrFwkvu1C4XCzzPDXbxKLJlxVTYfNM9nIS8s6/FdJOkRN2Gdvfzu6NlDwq1KX/Bj241JZ0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io; spf=pass smtp.mailfrom=rosenzweig.io; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b=d9bfjWKu; arc=none smtp.client-ip=91.218.175.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b="d9bfjWKu" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rosenzweig.io; s=key1; t=1739216426; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Occ2Auitkp4TNvTqlmdDCEbjvoCr3RaS62RKSPjLibw=; b=d9bfjWKuGE6S10cVSNw9w48WqXMUZBcGuoaR9zleSEB3XvbuAzC4YlbGcc2ewqroMo5mca elLQz7k9lFnDVTTaiyq7QJnP1epkIm6bLx/+8tHS1MbY+FzPSCi6D7CeXDEAktN3z6MLik damm9V/imb6ZqferHa0FWI/tlbvfpYFb13iC8CpOjlQyuayo04qb3V5X50TGnXAtd8lT32 P7DfX8rVNnOgAH7LdRYMxKMxg5azLSvPtJoCumZ8L8D2xNTHcUJ+oRSKbPe7L5BGHHig8S 5wLVjx41NtZC+lhECott69vlwiFAmIU+oscASzZq5MnIg1rkiS0DxY+xXrQB1Q== From: Alyssa Rosenzweig Date: Mon, 10 Feb 2025 14:39:56 -0500 Subject: [PATCH 4/5] iommu/dart: Reject identity domain for locked DARTs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250210-locked-dart-v1-4-5d97fe247f35@rosenzweig.io> References: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> In-Reply-To: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> To: Sven Peter , Janne Grunau , Joerg Roedel , Will Deacon , Robin Murphy Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Alyssa Rosenzweig X-Developer-Signature: v=1; a=openpgp-sha256; l=781; i=alyssa@rosenzweig.io; h=from:subject:message-id; bh=Q2X3fPKVvdzr1B3hHwj4E/4Mk7pqhs1UeDt0uJfgsNE=; b=owEBbQKS/ZANAwAIAf7+UFoK9VgNAcsmYgBnqlYZblhzlpiuLR3xbq+t6xWjNWkzODbgWUFF5 Fs8N4cPjwOJAjMEAAEIAB0WIQRDXuCbsK8A0B2q9jj+/lBaCvVYDQUCZ6pWGQAKCRD+/lBaCvVY DfbXD/9R9X6kCnXTZvOwa5wliwk7U6TDTvgktXgigweVT9oIXCaiqPqOzuaP147ASN3CDzU+Hym HkKienPTMPBI8OUUsO7EH/fC9njHeIxIht6fiz1MHV23cmySLs9fgevS0rXk6+JMjQDWviAhbA6 en0KYZA0ZEe7VRGlgqGZKDhMmwtbOp9QQMOkvNC6UKxQymcwaipOSuG8JZNIDtt5PJZt8zglc6P Bst0ZY4KogoLg5lXWoirtipWmtjE6LXFB27ggVATt6OxOTbSp/bgghq9pU7gMlpjtneOQe+BmH4 KV8FGp6Bsipd11gUJPx+qVLWBc6pTmLmkiJsR4Q4Yt2gDmJC5DEnpX6BB4Zh0Y1lLNQyIvqHOq/ tFangOvZ2w5JR7pbSNFLVo5A/7Sn3KRT6LZjC8oS5P3WvPTs+v4thCPjx07G9vKLTngzUI+ao2r B/L8n1NOusN93T1127AGB/+n+hPeEVxX7xv7rP4xgkpfNMAHqPKjOHFhBwheOBQ25T2e/PJx462 I2qkNPtIHvCvsJIF5fPaf4HObzeY+quJp7eiGXkqHyQwGvbO3H2CX9dRJkgpjtNLYWUv0Sp0TIg OffyZwpGvQHldBCXuxjpnYA1vJP3LVFDf8VSR+O4qpSVoL/IbjYG5gFp1RbbsNPV66svskh0aB8 mmyCRBY9jh67snQ== X-Developer-Key: i=alyssa@rosenzweig.io; a=openpgp; fpr=435EE09BB0AF00D01DAAF638FEFE505A0AF5580D X-Migadu-Flow: FLOW_OUT This cannot work. Signed-off-by: Alyssa Rosenzweig Signed-off-by: Janne Grunau Reviewed-by: Neal Gompa --- drivers/iommu/apple-dart.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 9c6f780dc7220096ed6bba692fa1a4bd859b0d61..29b627b38e8c37afd2b6a72865f= 43d24b633834a 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -681,6 +681,9 @@ static int apple_dart_attach_dev_identity(struct iommu_= domain *domain, if (!cfg->stream_maps[0].dart->supports_bypass) return -EINVAL; =20 + if (cfg->stream_maps[0].dart->locked) + return -EINVAL; + for_each_stream_map(i, cfg, stream_map) apple_dart_hw_enable_bypass(stream_map); return 0; --=20 2.48.1 From nobody Mon Feb 9 04:56:03 2026 Received: from out-176.mta0.migadu.com (out-176.mta0.migadu.com [91.218.175.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B16482580D4 for ; Mon, 10 Feb 2025 19:40:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216432; cv=none; b=lj1J0IEXfdt+lHmQvAQMP/r4L8s1iBfQFrrpEcLcLJGaSfOShS6do9XLOpuYJgAg25T1+6HPlBr6ktlnpmbB/ntZzfuK3Slre+Ztlqdam3UVpeyaWVi7HdibAQe8m+cT1nLSj7faFPoYB58xZsJM66IaK9R5EKA1Q1WyJMHwKPw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739216432; c=relaxed/simple; bh=apwlrHK+NFmUFcATPM4IEl3yfbQ24a1UqxWS9zc+/wc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QCynVTdEIbmv61uzwM7AllouZf5MyaXtbkbFNJ0xEjqkl430SZLPcEClniVBIfG2zku6v9vHy2XIDy5xzboqEAIyVzodUGYl9apnDHrEGSoCM6yBA/3AX3mfEBYAhav1lZiVJP1KxsuEBg60uGPK7YIudz7QIGaSkStLPUunMJs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io; spf=pass smtp.mailfrom=rosenzweig.io; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b=mEB+Xkj8; arc=none smtp.client-ip=91.218.175.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rosenzweig.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rosenzweig.io header.i=@rosenzweig.io header.b="mEB+Xkj8" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rosenzweig.io; s=key1; t=1739216428; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lOD2Sq5+ZH4AcnNDOmSUoO/ljPGq1eIifxgBsdfQLiY=; b=mEB+Xkj8T8zGigBKiyv7FB06VJrCxIGpILs21+CpcutU5jlc0MWNb1aUfNlgnvwcp5Zwub psyi+BgX8tRe1LYfw35T0eLHelVndz55BfAqxCuXw8Ecyw0yPUbJcHTsJmD9mZhEfT9DdP bIEZWiNNb4U52rCnloNeb9NjZMv1yOVQTL5x3mbfRvc+Mc+xFEwZJkf8kk25clMtRcvDa9 IRYHl+O2rWr+dmA452gcgDFHawO8b09IezIHm3NA553dfTGiaPHi47vRE5ObJdaO0iIQVI T45sAe5S5uPg7yezUVNN8zVAS4XMYpOxL9Fw2Ebw1edHwxE2E2qT4Jho5N5uyA== From: Alyssa Rosenzweig Date: Mon, 10 Feb 2025 14:39:57 -0500 Subject: [PATCH 5/5] iommu/dart: Assert !locked when configuring Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250210-locked-dart-v1-5-5d97fe247f35@rosenzweig.io> References: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> In-Reply-To: <20250210-locked-dart-v1-0-5d97fe247f35@rosenzweig.io> To: Sven Peter , Janne Grunau , Joerg Roedel , Will Deacon , Robin Murphy Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Alyssa Rosenzweig X-Developer-Signature: v=1; a=openpgp-sha256; l=2308; i=alyssa@rosenzweig.io; h=from:subject:message-id; bh=apwlrHK+NFmUFcATPM4IEl3yfbQ24a1UqxWS9zc+/wc=; b=owEBbQKS/ZANAwAIAf7+UFoK9VgNAcsmYgBnqlYZdwU6iimgUcyo61wE4/xA3zJtr53OpF+Dx ctCIBx48SSJAjMEAAEIAB0WIQRDXuCbsK8A0B2q9jj+/lBaCvVYDQUCZ6pWGQAKCRD+/lBaCvVY DVycD/49tr1weIxdnNGNmj3jpsXXmZOfwks2OSyN89yavv1Na4aT4E+O2fNw3BRnk1VspirBigp ll9E48WekXnXMa8kQxS/2I1/aYigRPd2T4L2iiKbxPEi8UCNQgbAqGlHGxvqhCLvvYh+2aiDLpv xH2nW+kMVzdMlunP7GVyAZZvOyCG2RtlbboG0Qj5J4G3nZpDU6AaDXYbHX1a4FzTsPS0LqiTnpt qUqjp6NjnCOMaQlHvKIjhf83bVlSMr7tzYIhdzb80lX/ZAJGtOhM5feKQyeF9wkfVhaFtU/pN4V 35/in4R1dTefaMz6tsoF3MBj/m44M8slSaK86gCIePgTWDpr+e6z8wqy8fjqgghaxlNuV7f1wMz 34yVh6f/hp1tQn0C7xlKfF1rhCAk+LblHY9/U2CLdt85dWhLBFnANsyPpPgMCqqp0z6G2pqYGOB qz1a1oPkM8XMYzed6vENNWVflXNkAYPcHfY1/tXCck/4jWHVdfp7ZUaCDX6wTFBOMHKy9LVPJsl UBZX50SMZJhbfMPNyhvJFTuPc3c0W4HFibXi+NA2Pw92klqA2ja8fy8CQ6hOMYf+PvjKayDLUZv lil/vSW3MdZk8Hee4FrkwJv+iftK+Js8/p9i3HQRHdzCNRXjNkiTXHTc6x/iYwiWIWIM3oaGoWz T6IiGUagk+V8YCw== X-Developer-Key: i=alyssa@rosenzweig.io; a=openpgp; fpr=435EE09BB0AF00D01DAAF638FEFE505A0AF5580D X-Migadu-Flow: FLOW_OUT Configuration is only possible and needed for non-locked DARTs and will fail for locked DARTs. We cannot try -- assert that we do not. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Neal Gompa --- drivers/iommu/apple-dart.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 29b627b38e8c37afd2b6a72865f43d24b633834a..87eb87bb2f5158d000a2c2fc801= b722a2262c941 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -309,6 +309,7 @@ apple_dart_hw_enable_translation(struct apple_dart_stre= am_map *stream_map) struct apple_dart *dart =3D stream_map->dart; int sid; =20 + WARN_ON(stream_map->dart->locked); for_each_set_bit(sid, stream_map->sidmap, dart->num_streams) writel(dart->hw->tcr_enabled, dart->regs + DART_TCR(dart, sid)); } @@ -318,6 +319,7 @@ static void apple_dart_hw_disable_dma(struct apple_dart= _stream_map *stream_map) struct apple_dart *dart =3D stream_map->dart; int sid; =20 + WARN_ON(stream_map->dart->locked); for_each_set_bit(sid, stream_map->sidmap, dart->num_streams) writel(dart->hw->tcr_disabled, dart->regs + DART_TCR(dart, sid)); } @@ -328,7 +330,7 @@ apple_dart_hw_enable_bypass(struct apple_dart_stream_ma= p *stream_map) struct apple_dart *dart =3D stream_map->dart; int sid; =20 - WARN_ON(!stream_map->dart->supports_bypass); + WARN_ON(stream_map->dart->locked || !stream_map->dart->supports_bypass); for_each_set_bit(sid, stream_map->sidmap, dart->num_streams) writel(dart->hw->tcr_bypass, dart->regs + DART_TCR(dart, sid)); @@ -340,6 +342,7 @@ static void apple_dart_hw_set_ttbr(struct apple_dart_st= ream_map *stream_map, struct apple_dart *dart =3D stream_map->dart; int sid; =20 + WARN_ON(stream_map->dart->locked); WARN_ON(paddr & ((1 << dart->hw->ttbr_shift) - 1)); for_each_set_bit(sid, stream_map->sidmap, dart->num_streams) writel(dart->hw->ttbr_valid | @@ -353,6 +356,7 @@ static void apple_dart_hw_clear_ttbr(struct apple_dart_= stream_map *stream_map, struct apple_dart *dart =3D stream_map->dart; int sid; =20 + WARN_ON(stream_map->dart->locked); for_each_set_bit(sid, stream_map->sidmap, dart->num_streams) writel(0, dart->regs + DART_TTBR(dart, sid, idx)); } --=20 2.48.1