On Mon, Jul 11, 2022 at 1:49 PM Stephen Boyd <sboyd@xxxxxxxxxx> wrote: > > Quoting Daniel Latypov (2022-07-11 09:27:13) > > CONFIG_UML_PCI_OVER_VIRTIO=y is needed to enable CONFIG_PCI=y on UML. > > However, this causes test failures when running the clk tests, i.e. > > $ ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/clk > > > > A snippet of the particular error is: > > > ok 1 - clk_gate_test_parent_rate > > > ------------[ cut here ]------------ > > > WARNING: CPU: 0 PID: 45 at lib/logic_iomem.c:141 __raw_readl+0x9f/0xd0 > > > > This is triggered by this cast in the test: > > 143 ctx->fake_mem = (void __force __iomem *)&ctx->fake_reg; > > this seems to work except when logic iomem is enabled, i.e. > > CONFIG_INDIRECT_IOMEM=y. > > > > As a short-term fix, explicitly disable CONFIG_UML_PCI_OVER_VIRTIO in > > drivers/clk/.kunitconfig so we can enable it for everyone else by > > default in kunit.py. > > > > The long-term fix probably requires something more complicated, like > > #ifdef CONFIG_INDIRECT_IOMEM > > logic_iomem_add_region(...); > > #endif > > If this is how platform IO is mocked then yes we'll have to implement > that. It's not clear that it will be, but it's likely. Until it's more clear, I figured we'd go with this simple bandaid fix for now. There was initially some talk of using function-level "stubbing"/"mocking" [1] to do the same, but Brendan started playing around with logic iomem more. He and David can comment on it more cogently than I can. [1] https://lore.kernel.org/linux-kselftest/20220318021314.3225240-3-davidgow@xxxxxxxxxx/ Daniel