On Mon Sep 14, 2026 at 10:58 AM BST, Danilo Krummrich wrote:
> On Mon Sep 14, 2026 at 2:45 AM CEST, Alexandre Courbot wrote:
>> On Mon Sep 14, 2026 at 6:08 AM JST, Matteo Kloiber wrote:
>>> On Mon Sep 7, 2026 at 11:43 AM JST, Alexandre Courbot wrote:
>>>> It also means that without patch 1, nova-core would split the firmware
>>>> into hundreds of 64KB SG entries, which is not breaking but still
>>>> something we want to avoid. The correct fix is to make sure that
>>>> `dma_set_max_seg_size` is called by the driver, and while we are at it
>>>> we also want every driver to call `dma_set_mask_and_coherent`. Ideally
>>>> we would use the type system to make sure that both functions are called
>>>> before any DMA operation can take place (using a safe interface), but
>>>> I'm not quite sure yet how we can do this.
>>>
>>> This sounds sensible indeed. Should I open a thread regarding that on Zulip?
>>
>> Probably not necessary, the mailing-list has a larger audience and is
>> the right place for this. I expect people will jump in here with their
>> thoughts.
>
> The problem with those is not that they must strictly be called before
> allocating DMA memory, but they must not be called concurrently with other DMA
> operations, such as allocating DMA memory, as it would technically be a data
> race.

Do they really have to be called *before* allocating DMA memory, not do they
just need not be called *concurrent* to DMA memory allocation?

If it's the former, we can require these to require mutable reference instead,
so the probe takes `Pin<&'bound mut Device<Core<'_>>>` which still derefs to
`&'bound Device<Bound>`, but Rust will require the shared reference to not
co-exist with the mutable reference.

Best,
Gary

Reply via email to