Jason Gunthorpe
2023-Nov-29 19:12 UTC
[Nouveau] [PATCH 10/10] ACPI: IORT: Allow COMPILE_TEST of IORT
On Wed, Nov 29, 2023 at 01:55:04PM +0100, Lorenzo Pieralisi wrote:> I don't think it should be done this way. Is the goal compile testing > IORT code ?Yes> If so, why are we forcing it through the SMMU (only because > it can be compile tested while eg SMMUv3 driver can't ?) menu entry ?Because something needs to select it, and SMMU is one of the places that are implicitly using it. It isn't (and shouldn't be) a user selectable kconfig. Currently the only thing that selects it is the ARM64 master kconfig.> This looks a bit artificial (and it is unclear from the Kconfig > file why only that driver selects IORT, it looks like eg the SMMUv3 > does not have the same dependency - there is also the SMMUv3 perf > driver to consider).SMMUv3 doesn't COMPILE_TEST so it picks up the dependency transitivity through ARM64. I'm not sure why IORT was put as a global ARM64 kconfig dependency and not put in the places that directly need it. "perf driver" ? There is a bunch of GIC stuff that uses this too but I don't know if it compile tests.> Maybe we can move IORT code into drivers/acpi and add a silent config > option there with a dependency on ARM64 || COMPILE_TEST.That seems pretty weird to me, this is the right way to approach it, IMHO. Making an entire directory condition is pretty incompatible with COMPILE_TEST as a philosophy.> Don't know but at least it is clearer. As for the benefits of compile > testing IORT code - yes the previous patch is a warning to fix but > I am not so sure about the actual benefits.IMHO COMPILE_TEST is an inherently good thing. It makes development easier for everyone because you have a less fractured code base to work with. Jason
Lorenzo Pieralisi
2023-Nov-30 11:12 UTC
[PATCH 10/10] ACPI: IORT: Allow COMPILE_TEST of IORT
On Wed, Nov 29, 2023 at 03:12:40PM -0400, Jason Gunthorpe wrote:> On Wed, Nov 29, 2023 at 01:55:04PM +0100, Lorenzo Pieralisi wrote: > > > I don't think it should be done this way. Is the goal compile testing > > IORT code ? > > Yes > > > If so, why are we forcing it through the SMMU (only because > > it can be compile tested while eg SMMUv3 driver can't ?) menu entry ? > > Because something needs to select it, and SMMU is one of the places > that are implicitly using it. > > It isn't (and shouldn't be) a user selectable kconfig. Currently the > only thing that selects it is the ARM64 master kconfig.I never said it should be a user selectable kconfig. I said that I don't like using the SMMU entry (only) to select it just because that entry allows COMPILE_TEST.> > This looks a bit artificial (and it is unclear from the Kconfig > > file why only that driver selects IORT, it looks like eg the SMMUv3 > > does not have the same dependency - there is also the SMMUv3 perf > > driver to consider). > > SMMUv3 doesn't COMPILE_TEST so it picks up the dependency transitivity > through ARM64. I'm not sure why IORT was put as a global ARM64 kconfig > dependency and not put in the places that directly need it.Because IORT is used by few ARM64 system IPs (that are enabled by default, eg GIC), it makes sense to have a generic ARM64 select (if ACPI).> "perf driver" ? There is a bunch of GIC stuff that uses this too but I > don't know if it compile tests."SMMUv3 perf driver" drivers/perf/arm_smmuv3_pmu.c> > Maybe we can move IORT code into drivers/acpi and add a silent config > > option there with a dependency on ARM64 || COMPILE_TEST. > > That seems pretty weird to me, this is the right way to approach it, > IMHO. Making an entire directory condition is pretty incompatible with > COMPILE_TEST as a philosophy.That's not what I was suggesting. I was suggesting to move iort.c (or some portions of it) into drivers/acpi if we care enough to compile test it on arches !ARM64. It is also weird to have a file in drivers/acpi/arm64 that you want to compile test on other arches IMO (and I don't think it is very useful to compile test it either).> > Don't know but at least it is clearer. As for the benefits of compile > > testing IORT code - yes the previous patch is a warning to fix but > > I am not so sure about the actual benefits. > > IMHO COMPILE_TEST is an inherently good thing. It makes development > easier for everyone because you have a less fractured code base to > work with.I am talking about IORT code, not COMPILE_TEST as a whole. I am not sure what "less fractured" means in this context. Anyway - it is not a big deal either way but I don't like selecting ACPI_IORT only on kconfig entries that allow COMPILE_TEST to implicitly compile test it so *if* we want to do it we will have to do it differently. Thanks, Lorenzo
Jason Gunthorpe
2023-Nov-30 12:21 UTC
[Nouveau] [PATCH 10/10] ACPI: IORT: Allow COMPILE_TEST of IORT
On Thu, Nov 30, 2023 at 12:12:26PM +0100, Lorenzo Pieralisi wrote:> On Wed, Nov 29, 2023 at 03:12:40PM -0400, Jason Gunthorpe wrote: > > On Wed, Nov 29, 2023 at 01:55:04PM +0100, Lorenzo Pieralisi wrote: > > > > > I don't think it should be done this way. Is the goal compile testing > > > IORT code ? > > > > Yes > > > > > If so, why are we forcing it through the SMMU (only because > > > it can be compile tested while eg SMMUv3 driver can't ?) menu entry ? > > > > Because something needs to select it, and SMMU is one of the places > > that are implicitly using it. > > > > It isn't (and shouldn't be) a user selectable kconfig. Currently the > > only thing that selects it is the ARM64 master kconfig. > > I never said it should be a user selectable kconfig. I said that > I don't like using the SMMU entry (only) to select it just because > that entry allows COMPILE_TEST.So you would like each of the drivers that use it to select it?> > SMMUv3 doesn't COMPILE_TEST so it picks up the dependency transitivity > > through ARM64. I'm not sure why IORT was put as a global ARM64 kconfig > > dependency and not put in the places that directly need it. > > Because IORT is used by few ARM64 system IPs (that are enabled by > default, eg GIC), it makes sense to have a generic ARM64 select (if ACPI).IMHO that is not a good way to use kconfig, it is obfuscating and doesn't support things like COMPILE_TEST.> > > Maybe we can move IORT code into drivers/acpi and add a silent config > > > option there with a dependency on ARM64 || COMPILE_TEST. > > > > That seems pretty weird to me, this is the right way to approach it, > > IMHO. Making an entire directory condition is pretty incompatible with > > COMPILE_TEST as a philosophy. > > That's not what I was suggesting. I was suggesting to move iort.c (or > some portions of it) into drivers/acpi if we care enough to compile test > it on arches !ARM64. > > It is also weird to have a file in drivers/acpi/arm64 that you want > to compile test on other arches IMO (and I don't think it is very useful > to compile test it either).Why? Just because the directory is named "arm64" doesn't mean it should be excluded from COMPILE_TEST. arch/arm64 yes, but not random directories in the driver tree. Stuff under drivers/ should strive to get 100% COMPILE_TEST coverage as much as practical. This makes everyone else's life easier. Jason
Reasonably Related Threads
- [PATCH 10/10] ACPI: IORT: Allow COMPILE_TEST of IORT
- [PATCH 10/10] ACPI: IORT: Allow COMPILE_TEST of IORT
- [RFC PATCH v2 4/5] ACPI/IORT: Support paravirtualized IOMMU
- [RFC 04/13] ACPI/IORT: Add node categories
- [PATCH 00/14] iommu: Move iommu_fwspec out of 'struct device'