All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Andy Gross <agross@kernel.org>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Bjorn Andersson <andersson@kernel.org>,
	AngeloGioacchino Del Regno 
	<angelogioacchino.delregno@collabora.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
	Heiko Stuebner <heiko@sntech.de>,
	iommu@lists.linux.dev, Jernej Skrabec <jernej.skrabec@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-mediatek@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev,
	linux-tegra@vger.kernel.org, Russell King <linux@armlinux.org.uk>,
	linuxppc-dev@lists.ozlabs.org,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	Orson Zhai <orsonzhai@gmail.com>, Rob Clark <robdclark@gmail.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Samuel Holland <samuel@sholland.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Krishna Reddy <vdumpa@nvidia.com>, Chen-Yu Tsai <wens@csie.org>,
	Will Deacon <will@kernel.org>, Yong Wu <yong.wu@mediatek.com>,
	Chunyan Zhang <zhang.lyra@gmail.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>,
	Dmitry Osipenko <digetx@gmail.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	Niklas Schnelle <schnelle@linux.ibm.com>,
	Steven Price <steven.price@arm.com>,
	Thierry Reding <treding@nvidia.com>
Subject: Re: [PATCH v5 15/25] iommufd/selftest: Make the mock iommu driver into a real driver
Date: Wed, 2 Aug 2023 20:50:24 -0300	[thread overview]
Message-ID: <ZMrrwBTt5zHLwWoF@nvidia.com> (raw)
In-Reply-To: <15-v5-d0a204c678c7+3d16a-iommu_all_defdom_jgg@nvidia.com>

On Mon, Jul 24, 2023 at 02:22:05PM -0300, Jason Gunthorpe wrote:

> -void __init iommufd_test_init(void)
> +int __init iommufd_test_init(void)
>  {
> +	struct platform_device_info pdevinfo = {
> +		.name = "iommufd_selftest_iommu",
> +	};
> +	int rc;
> +
>  	dbgfs_root =
>  		fault_create_debugfs_attr("fail_iommufd", NULL, &fail_iommufd);
> -	WARN_ON(bus_register(&iommufd_mock_bus_type));
> +
> +	selftest_iommu_dev = platform_device_register_full(&pdevinfo);
> +	if (IS_ERR(selftest_iommu_dev)) {
> +		rc = PTR_ERR(selftest_iommu_dev);
> +		goto err_dbgfs;
> +	}
> +
> +	rc = bus_register(&iommufd_mock_bus_type.bus);
> +	if (rc)
> +		goto err_platform;
> +
> +	mock_iommu_device.dev = &selftest_iommu_dev->dev;
> +	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
> +				  &iommufd_mock_bus_type.bus,
> +				  &iommufd_mock_bus_type.nb);
> +	if (rc)
> +		goto err_bus;
> +	return 0;
> +
> +err_bus:
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +err_platform:
> +	platform_device_del(selftest_iommu_dev);
> +err_dbgfs:
> +	debugfs_remove_recursive(dbgfs_root);
> +	return rc;
>  }
>  
>  void iommufd_test_exit(void)
>  {
> +	iommu_device_unregister_bus(&mock_iommu_device,
> +				    &iommufd_mock_bus_type.bus,
> +				    &iommufd_mock_bus_type.nb);
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +	platform_device_del(selftest_iommu_dev);
>  	debugfs_remove_recursive(dbgfs_root);
> -	bus_unregister(&iommufd_mock_bus_type);
>  }


There is a mistake here that started to become visible after one of
the rebases, it needs to call iommu_device_sysfs_add() prior to
iommu_device_register_bus() otherwise the iommu core stuff does not
fully initialize and weird stuff starts happening.

So, it needs this:

diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c
index 5433c9c545526d..d2b59a1157441c 100644
--- a/drivers/iommu/iommufd/selftest.c
+++ b/drivers/iommu/iommufd/selftest.c
@@ -987,14 +987,21 @@ int __init iommufd_test_init(void)
 	if (rc)
 		goto err_platform;
 
-	mock_iommu_device.dev = &selftest_iommu_dev->dev;
+	rc = iommu_device_sysfs_add(&mock_iommu_device,
+				    &selftest_iommu_dev->dev, NULL, "%s",
+				    dev_name(&selftest_iommu_dev->dev));
+	if (rc)
+		goto err_bus;
+
 	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
 				  &iommufd_mock_bus_type.bus,
 				  &iommufd_mock_bus_type.nb);
 	if (rc)
-		goto err_bus;
+		goto err_sysfs;
 	return 0;
 
+err_sysfs:
+	iommu_device_sysfs_remove(&mock_iommu_device);
 err_bus:
 	bus_unregister(&iommufd_mock_bus_type.bus);
 err_platform:
@@ -1006,6 +1013,7 @@ int __init iommufd_test_init(void)
 
 void iommufd_test_exit(void)
 {
+	iommu_device_sysfs_remove(&mock_iommu_device);
 	iommu_device_unregister_bus(&mock_iommu_device,
 				    &iommufd_mock_bus_type.bus,
 				    &iommufd_mock_bus_type.nb);


WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Andy Gross <agross@kernel.org>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Bjorn Andersson <andersson@kernel.org>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
	Heiko Stuebner <heiko@sntech.de>,
	iommu@lists.linux.dev, Jernej Skrabec <jernej.skrabec@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-mediatek@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev,
	linux-tegra@vger.kernel.org, Russell King <linux@armlinux.org.uk>,
	linuxppc-dev@lists.ozlabs.org,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	Orson Zhai <orsonzhai@gmail.com>, Rob Clark <robdclark@gmail.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Samuel Holland <samuel@sholland.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Krishna Reddy <vdumpa@nvidia.com>, Chen-Yu Tsai <wens@csie.org>,
	Will Deacon <will@kernel.org>, Yong Wu <yong.wu@mediatek.com>,
	Chunyan Zhang <zhang.lyra@gmail.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>,
	Dmitry Osipenko <digetx@gmail.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	Niklas Schnelle <schnelle@linux.ibm.com>,
	Steven Price <steven.price@arm.com>,
	Thierry Reding <treding@nvidia.com>
Subject: Re: [PATCH v5 15/25] iommufd/selftest: Make the mock iommu driver into a real driver
Date: Wed, 2 Aug 2023 20:50:24 -0300	[thread overview]
Message-ID: <ZMrrwBTt5zHLwWoF@nvidia.com> (raw)
In-Reply-To: <15-v5-d0a204c678c7+3d16a-iommu_all_defdom_jgg@nvidia.com>

On Mon, Jul 24, 2023 at 02:22:05PM -0300, Jason Gunthorpe wrote:

> -void __init iommufd_test_init(void)
> +int __init iommufd_test_init(void)
>  {
> +	struct platform_device_info pdevinfo = {
> +		.name = "iommufd_selftest_iommu",
> +	};
> +	int rc;
> +
>  	dbgfs_root =
>  		fault_create_debugfs_attr("fail_iommufd", NULL, &fail_iommufd);
> -	WARN_ON(bus_register(&iommufd_mock_bus_type));
> +
> +	selftest_iommu_dev = platform_device_register_full(&pdevinfo);
> +	if (IS_ERR(selftest_iommu_dev)) {
> +		rc = PTR_ERR(selftest_iommu_dev);
> +		goto err_dbgfs;
> +	}
> +
> +	rc = bus_register(&iommufd_mock_bus_type.bus);
> +	if (rc)
> +		goto err_platform;
> +
> +	mock_iommu_device.dev = &selftest_iommu_dev->dev;
> +	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
> +				  &iommufd_mock_bus_type.bus,
> +				  &iommufd_mock_bus_type.nb);
> +	if (rc)
> +		goto err_bus;
> +	return 0;
> +
> +err_bus:
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +err_platform:
> +	platform_device_del(selftest_iommu_dev);
> +err_dbgfs:
> +	debugfs_remove_recursive(dbgfs_root);
> +	return rc;
>  }
>  
>  void iommufd_test_exit(void)
>  {
> +	iommu_device_unregister_bus(&mock_iommu_device,
> +				    &iommufd_mock_bus_type.bus,
> +				    &iommufd_mock_bus_type.nb);
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +	platform_device_del(selftest_iommu_dev);
>  	debugfs_remove_recursive(dbgfs_root);
> -	bus_unregister(&iommufd_mock_bus_type);
>  }


There is a mistake here that started to become visible after one of
the rebases, it needs to call iommu_device_sysfs_add() prior to
iommu_device_register_bus() otherwise the iommu core stuff does not
fully initialize and weird stuff starts happening.

So, it needs this:

diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c
index 5433c9c545526d..d2b59a1157441c 100644
--- a/drivers/iommu/iommufd/selftest.c
+++ b/drivers/iommu/iommufd/selftest.c
@@ -987,14 +987,21 @@ int __init iommufd_test_init(void)
 	if (rc)
 		goto err_platform;
 
-	mock_iommu_device.dev = &selftest_iommu_dev->dev;
+	rc = iommu_device_sysfs_add(&mock_iommu_device,
+				    &selftest_iommu_dev->dev, NULL, "%s",
+				    dev_name(&selftest_iommu_dev->dev));
+	if (rc)
+		goto err_bus;
+
 	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
 				  &iommufd_mock_bus_type.bus,
 				  &iommufd_mock_bus_type.nb);
 	if (rc)
-		goto err_bus;
+		goto err_sysfs;
 	return 0;
 
+err_sysfs:
+	iommu_device_sysfs_remove(&mock_iommu_device);
 err_bus:
 	bus_unregister(&iommufd_mock_bus_type.bus);
 err_platform:
@@ -1006,6 +1013,7 @@ int __init iommufd_test_init(void)
 
 void iommufd_test_exit(void)
 {
+	iommu_device_sysfs_remove(&mock_iommu_device);
 	iommu_device_unregister_bus(&mock_iommu_device,
 				    &iommufd_mock_bus_type.bus,
 				    &iommufd_mock_bus_type.nb);


_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Andy Gross <agross@kernel.org>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Bjorn Andersson <andersson@kernel.org>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
	Heiko Stuebner <heiko@sntech.de>,
	iommu@lists.linux.dev, Jernej Skrabec <jernej.skrabec@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-mediatek@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev,
	linux-tegra@vger.kernel.org, Russell King <linux@armlinux.org.uk>,
	linuxppc-dev@lists.ozlabs.org,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	Orson Zhai <orsonzhai@gmail.com>, Rob Clark <robdclark@gmail.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Samuel Holland <samuel@sholland.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Krishna Reddy <vdumpa@nvidia.com>, Chen-Yu Tsai <wens@csie.org>,
	Will Deacon <will@kernel.org>, Yong Wu <yong.wu@mediatek.com>,
	Chunyan Zhang <zhang.lyra@gmail.com>
Cc: Thierry Reding <treding@nvidia.com>,
	Niklas Schnelle <schnelle@linux.ibm.com>,
	Steven Price <steven.price@arm.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	Dmitry Osipenko <digetx@gmail.com>,
	Lu Baolu <baolu.lu@linux.intel.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [PATCH v5 15/25] iommufd/selftest: Make the mock iommu driver into a real driver
Date: Wed, 2 Aug 2023 20:50:24 -0300	[thread overview]
Message-ID: <ZMrrwBTt5zHLwWoF@nvidia.com> (raw)
In-Reply-To: <15-v5-d0a204c678c7+3d16a-iommu_all_defdom_jgg@nvidia.com>

On Mon, Jul 24, 2023 at 02:22:05PM -0300, Jason Gunthorpe wrote:

> -void __init iommufd_test_init(void)
> +int __init iommufd_test_init(void)
>  {
> +	struct platform_device_info pdevinfo = {
> +		.name = "iommufd_selftest_iommu",
> +	};
> +	int rc;
> +
>  	dbgfs_root =
>  		fault_create_debugfs_attr("fail_iommufd", NULL, &fail_iommufd);
> -	WARN_ON(bus_register(&iommufd_mock_bus_type));
> +
> +	selftest_iommu_dev = platform_device_register_full(&pdevinfo);
> +	if (IS_ERR(selftest_iommu_dev)) {
> +		rc = PTR_ERR(selftest_iommu_dev);
> +		goto err_dbgfs;
> +	}
> +
> +	rc = bus_register(&iommufd_mock_bus_type.bus);
> +	if (rc)
> +		goto err_platform;
> +
> +	mock_iommu_device.dev = &selftest_iommu_dev->dev;
> +	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
> +				  &iommufd_mock_bus_type.bus,
> +				  &iommufd_mock_bus_type.nb);
> +	if (rc)
> +		goto err_bus;
> +	return 0;
> +
> +err_bus:
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +err_platform:
> +	platform_device_del(selftest_iommu_dev);
> +err_dbgfs:
> +	debugfs_remove_recursive(dbgfs_root);
> +	return rc;
>  }
>  
>  void iommufd_test_exit(void)
>  {
> +	iommu_device_unregister_bus(&mock_iommu_device,
> +				    &iommufd_mock_bus_type.bus,
> +				    &iommufd_mock_bus_type.nb);
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +	platform_device_del(selftest_iommu_dev);
>  	debugfs_remove_recursive(dbgfs_root);
> -	bus_unregister(&iommufd_mock_bus_type);
>  }


There is a mistake here that started to become visible after one of
the rebases, it needs to call iommu_device_sysfs_add() prior to
iommu_device_register_bus() otherwise the iommu core stuff does not
fully initialize and weird stuff starts happening.

So, it needs this:

diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c
index 5433c9c545526d..d2b59a1157441c 100644
--- a/drivers/iommu/iommufd/selftest.c
+++ b/drivers/iommu/iommufd/selftest.c
@@ -987,14 +987,21 @@ int __init iommufd_test_init(void)
 	if (rc)
 		goto err_platform;
 
-	mock_iommu_device.dev = &selftest_iommu_dev->dev;
+	rc = iommu_device_sysfs_add(&mock_iommu_device,
+				    &selftest_iommu_dev->dev, NULL, "%s",
+				    dev_name(&selftest_iommu_dev->dev));
+	if (rc)
+		goto err_bus;
+
 	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
 				  &iommufd_mock_bus_type.bus,
 				  &iommufd_mock_bus_type.nb);
 	if (rc)
-		goto err_bus;
+		goto err_sysfs;
 	return 0;
 
+err_sysfs:
+	iommu_device_sysfs_remove(&mock_iommu_device);
 err_bus:
 	bus_unregister(&iommufd_mock_bus_type.bus);
 err_platform:
@@ -1006,6 +1013,7 @@ int __init iommufd_test_init(void)
 
 void iommufd_test_exit(void)
 {
+	iommu_device_sysfs_remove(&mock_iommu_device);
 	iommu_device_unregister_bus(&mock_iommu_device,
 				    &iommufd_mock_bus_type.bus,
 				    &iommufd_mock_bus_type.nb);


WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Andy Gross <agross@kernel.org>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Bjorn Andersson <andersson@kernel.org>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>,
	Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
	Heiko Stuebner <heiko@sntech.de>,
	iommu@lists.linux.dev, Jernej Skrabec <jernej.skrabec@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Joerg Roedel <joro@8bytes.org>, Kevin Tian <kevin.tian@intel.com>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-mediatek@lists.infradead.org,
	linux-rockchip@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org, linux-sunxi@lists.linux.dev,
	linux-tegra@vger.kernel.org, Russell King <linux@armlinux.org.uk>,
	linuxppc-dev@lists.ozlabs.org,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Matthew Rosato <mjrosato@linux.ibm.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	Orson Zhai <orsonzhai@gmail.com>, Rob Clark <robdclark@gmail.com>,
	Robin Murphy <robin.murphy@arm.com>,
	Samuel Holland <samuel@sholland.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Krishna Reddy <vdumpa@nvidia.com>, Chen-Yu Tsai <wens@csie.org>,
	Will Deacon <will@kernel.org>, Yong Wu <yong.wu@mediatek.com>,
	Chunyan Zhang <zhang.lyra@gmail.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>,
	Dmitry Osipenko <digetx@gmail.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	Niklas Schnelle <schnelle@linux.ibm.com>,
	Steven Price <steven.price@arm.com>,
	Thierry Reding <treding@nvidia.com>
Subject: Re: [PATCH v5 15/25] iommufd/selftest: Make the mock iommu driver into a real driver
Date: Wed, 2 Aug 2023 20:50:24 -0300	[thread overview]
Message-ID: <ZMrrwBTt5zHLwWoF@nvidia.com> (raw)
In-Reply-To: <15-v5-d0a204c678c7+3d16a-iommu_all_defdom_jgg@nvidia.com>

On Mon, Jul 24, 2023 at 02:22:05PM -0300, Jason Gunthorpe wrote:

> -void __init iommufd_test_init(void)
> +int __init iommufd_test_init(void)
>  {
> +	struct platform_device_info pdevinfo = {
> +		.name = "iommufd_selftest_iommu",
> +	};
> +	int rc;
> +
>  	dbgfs_root =
>  		fault_create_debugfs_attr("fail_iommufd", NULL, &fail_iommufd);
> -	WARN_ON(bus_register(&iommufd_mock_bus_type));
> +
> +	selftest_iommu_dev = platform_device_register_full(&pdevinfo);
> +	if (IS_ERR(selftest_iommu_dev)) {
> +		rc = PTR_ERR(selftest_iommu_dev);
> +		goto err_dbgfs;
> +	}
> +
> +	rc = bus_register(&iommufd_mock_bus_type.bus);
> +	if (rc)
> +		goto err_platform;
> +
> +	mock_iommu_device.dev = &selftest_iommu_dev->dev;
> +	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
> +				  &iommufd_mock_bus_type.bus,
> +				  &iommufd_mock_bus_type.nb);
> +	if (rc)
> +		goto err_bus;
> +	return 0;
> +
> +err_bus:
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +err_platform:
> +	platform_device_del(selftest_iommu_dev);
> +err_dbgfs:
> +	debugfs_remove_recursive(dbgfs_root);
> +	return rc;
>  }
>  
>  void iommufd_test_exit(void)
>  {
> +	iommu_device_unregister_bus(&mock_iommu_device,
> +				    &iommufd_mock_bus_type.bus,
> +				    &iommufd_mock_bus_type.nb);
> +	bus_unregister(&iommufd_mock_bus_type.bus);
> +	platform_device_del(selftest_iommu_dev);
>  	debugfs_remove_recursive(dbgfs_root);
> -	bus_unregister(&iommufd_mock_bus_type);
>  }


There is a mistake here that started to become visible after one of
the rebases, it needs to call iommu_device_sysfs_add() prior to
iommu_device_register_bus() otherwise the iommu core stuff does not
fully initialize and weird stuff starts happening.

So, it needs this:

diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c
index 5433c9c545526d..d2b59a1157441c 100644
--- a/drivers/iommu/iommufd/selftest.c
+++ b/drivers/iommu/iommufd/selftest.c
@@ -987,14 +987,21 @@ int __init iommufd_test_init(void)
 	if (rc)
 		goto err_platform;
 
-	mock_iommu_device.dev = &selftest_iommu_dev->dev;
+	rc = iommu_device_sysfs_add(&mock_iommu_device,
+				    &selftest_iommu_dev->dev, NULL, "%s",
+				    dev_name(&selftest_iommu_dev->dev));
+	if (rc)
+		goto err_bus;
+
 	rc = iommu_device_register_bus(&mock_iommu_device, &mock_ops,
 				  &iommufd_mock_bus_type.bus,
 				  &iommufd_mock_bus_type.nb);
 	if (rc)
-		goto err_bus;
+		goto err_sysfs;
 	return 0;
 
+err_sysfs:
+	iommu_device_sysfs_remove(&mock_iommu_device);
 err_bus:
 	bus_unregister(&iommufd_mock_bus_type.bus);
 err_platform:
@@ -1006,6 +1013,7 @@ int __init iommufd_test_init(void)
 
 void iommufd_test_exit(void)
 {
+	iommu_device_sysfs_remove(&mock_iommu_device);
 	iommu_device_unregister_bus(&mock_iommu_device,
 				    &iommufd_mock_bus_type.bus,
 				    &iommufd_mock_bus_type.nb);


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2023-08-02 23:50 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-24 17:21 [PATCH v5 00/25] iommu: Make default_domain's mandatory Jason Gunthorpe
2023-07-24 17:21 ` Jason Gunthorpe
2023-07-24 17:21 ` Jason Gunthorpe
2023-07-24 17:21 ` [PATCH v5 01/25] iommu: Add iommu_ops->identity_domain Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-26  6:11   ` Baolu Lu
2023-07-26  6:11     ` Baolu Lu
2023-07-26  6:11     ` Baolu Lu
2023-07-24 17:21 ` [PATCH v5 02/25] iommu: Add IOMMU_DOMAIN_PLATFORM Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-26  6:24   ` Baolu Lu
2023-07-26  6:24     ` Baolu Lu
2023-07-26  6:24     ` Baolu Lu
2023-07-24 17:21 ` [PATCH v5 03/25] powerpc/iommu: Setup a default domain and remove set_platform_dma_ops Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21 ` [PATCH v5 04/25] iommu: Add IOMMU_DOMAIN_PLATFORM for S390 Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21 ` [PATCH v5 05/25] iommu/fsl_pamu: Implement a PLATFORM domain Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21 ` [PATCH v5 06/25] iommu/tegra-gart: Remove tegra-gart Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21 ` [PATCH v5 07/25] iommu/mtk_iommu_v1: Implement an IDENTITY domain Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21 ` [PATCH v5 08/25] iommu: Reorganize iommu_get_default_domain_type() to respect def_domain_type() Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-26  9:33   ` Baolu Lu
2023-07-26  9:33     ` Baolu Lu
2023-07-26  9:33     ` Baolu Lu
2023-07-24 17:21 ` [PATCH v5 09/25] iommu: Allow an IDENTITY domain as the default_domain in ARM32 Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:21   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 10/25] iommu/exynos: Implement an IDENTITY domain Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 11/25] iommu/tegra-smmu: " Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 12/25] iommu/tegra-smmu: Support DMA domains in tegra Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 13/25] iommu/omap: Implement an IDENTITY domain Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 14/25] iommu/msm: " Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 22:22   ` Dmitry Baryshkov
2023-07-24 22:22     ` Dmitry Baryshkov
2023-07-24 22:22     ` Dmitry Baryshkov
2023-07-24 17:22 ` [PATCH v5 15/25] iommufd/selftest: Make the mock iommu driver into a real driver Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-08-02 23:50   ` Jason Gunthorpe [this message]
2023-08-02 23:50     ` Jason Gunthorpe
2023-08-02 23:50     ` Jason Gunthorpe
2023-08-02 23:50     ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 16/25] iommu: Remove ops->set_platform_dma_ops() Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-26  9:42   ` Baolu Lu
2023-07-26  9:42     ` Baolu Lu
2023-07-26  9:42     ` Baolu Lu
2023-07-24 17:22 ` [PATCH v5 17/25] iommu/qcom_iommu: Add an IOMMU_IDENTITIY_DOMAIN Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 18/25] iommu/ipmmu: " Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 19/25] iommu/mtk_iommu: " Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 20/25] iommu/sun50i: " Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 21/25] iommu: Require a default_domain for all iommu drivers Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-26  9:50   ` Baolu Lu
2023-07-26  9:50     ` Baolu Lu
2023-07-26  9:50     ` Baolu Lu
2023-07-24 17:22 ` [PATCH v5 22/25] iommu: Add __iommu_group_domain_alloc() Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-26  9:54   ` Baolu Lu
2023-07-26  9:54     ` Baolu Lu
2023-07-26  9:54     ` Baolu Lu
2023-07-24 17:22 ` [PATCH v5 23/25] iommu: Add ops->domain_alloc_paging() Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-26 10:02   ` Baolu Lu
2023-07-26 10:02     ` Baolu Lu
2023-07-26 10:02     ` Baolu Lu
2023-07-24 17:22 ` [PATCH v5 24/25] iommu: Convert simple drivers with DOMAIN_DMA to domain_alloc_paging() Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22 ` [PATCH v5 25/25] iommu: Convert remaining simple drivers " Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-24 17:22   ` Jason Gunthorpe
2023-07-31 12:29 ` [PATCH v5 00/25] iommu: Make default_domain's mandatory Jason Gunthorpe
2023-07-31 12:29   ` Jason Gunthorpe
2023-07-31 12:29   ` Jason Gunthorpe
2023-07-31 12:29   ` Jason Gunthorpe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZMrrwBTt5zHLwWoF@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=agross@kernel.org \
    --cc=alim.akhtar@samsung.com \
    --cc=andersson@kernel.org \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=christophe.leroy@csgroup.eu \
    --cc=digetx@gmail.com \
    --cc=gerald.schaefer@linux.ibm.com \
    --cc=heiko@sntech.de \
    --cc=iommu@lists.linux.dev \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=konrad.dybcio@linaro.org \
    --cc=krzysztof.kozlowski@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=m.szyprowski@samsung.com \
    --cc=matthias.bgg@gmail.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=nicolinc@nvidia.com \
    --cc=npiggin@gmail.com \
    --cc=orsonzhai@gmail.com \
    --cc=robdclark@gmail.com \
    --cc=robin.murphy@arm.com \
    --cc=samuel@sholland.org \
    --cc=schnelle@linux.ibm.com \
    --cc=steven.price@arm.com \
    --cc=thierry.reding@gmail.com \
    --cc=treding@nvidia.com \
    --cc=vdumpa@nvidia.com \
    --cc=wens@csie.org \
    --cc=will@kernel.org \
    --cc=yong.wu@mediatek.com \
    --cc=zhang.lyra@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.