On 30/10/22 21:46, Arnd Bergmann wrote: > Hmm, I see an of_node_put() between devm_rpi_firmware_get() and the > error check. With OF_DYNAMIC=y, this is an external function call, so > I guess gcc can no longer assume that drvdata->fw is NULL after that, > so it doesn't make this optimization. Ah, of course, you're right. > Ok, I see. My best guess would be OF_DYNAMIC I checked and you are correct. > but I don't actually see how that changes anything in this file Yeah. I had a look as well and I'm similarly puzzled. > This would mean you only get a warning when both RASPBERRYPI_FIRMWARE > and OF_DYNAMIC are disabled. If you can confirm that, adding a dependency > on RASPBERRYPI_FIRMWARE is still the correct fix. It builds ok as long as OF_DYNAMIC is set; RASPBERRYPI_FIRMWARE doesn't need setting (maybe since devm_rpi_firmware_get() is a static inline it's optimized differently?). Perhaps RASPBERRYPI_FIRMWARE ought to be made a dependency in any case, but since it depends on ARCH_BCM2835, doing so will mean one is unable to test-compile/run sparse on x86. Which is fine; I wouldn't expect to be able to; I'm not really sure what accommodations (if any) are usually made in this regard with respect to drivers. Scott.