Skip to content

espi-service: Synchronize payload buffer access during message sending #486

@kurtjd

Description

@kurtjd

Currently the way messaging works is that a reference to a shared buffer is passed to the eSPI service when a service wishes to send a message to the host. The eSPI service must then take an immutable borrow to process the packet and send it to the host.

There are a couple issues with this: The eSPI service might be holding a borrow() across await points and another task might attempt to take a borrow_mut() causing panic. Or, the sending task might successfully take a borrow_mut() after calling send() and overwrite the buffer before the eSPI service even gets a chance to process the payload.

Currently it does not appear any synchronization primitives are in place to solve this, so need to investigate the best way to handle this.

FYI @tullom @jerrysxie

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

Status

Backlog

Relationships

None yet

Development

No branches or pull requests

Issue actions