On Sat, Mar 14, 2026 at 11:42:02AM +0000, Markus Probst wrote: > On Sat, 2026-03-14 at 09:07 +0100, Greg Kroah-Hartman wrote: > > On Fri, Mar 13, 2026 at 06:12:31PM +0000, Markus Probst wrote: > > > Add rust private data to `struct serdev_device`, as it is required by the > > > rust abstraction added in the following commit > > > (rust: add basic serial device bus abstractions). > > > > why is rust "special" here? What's wrong with the existing private > > pointer in this structure? Why must we add another one? > Because in rust, the device drvdata will be set after probe has run. In > serdev, once the device has been opened, it can receive data. It must > be opened either inside probe or before probe, because it can only be > configured (baudrate, flow control etc.) and data written to after it > has been opened. Because it can receive data before drvdata has been > set yet, we need to ensure it waits on data receival for the probe to > be finished. Otherwise this would be a null pointer dereference. To do > this, we need to store a `Completion` for it to wait and a `bool` in > case the probe exits with an error. We cannot store this data in the > device drvdata, because this is where the drivers drvdata goes. We also > cannot create a wrapper of the drivers drvdata, because > `Device::drvdata::<T>()` would always fail in that case. That is why we > need a "rust_private_data" for this abstraction to store the > `Completion` and `bool`.
So why is this any different from any other bus type? I don't see the "uniqueness" here that has not required this to happen for PCI or USB or anything else. What am I missing? Also, all of this information MUST be in the changelog text in order for us to be able to accept it. You need to say _why_ a change is needed, not just _what_ the change does, as you know. thanks, greg k-h
