Skip to content

RFC-12: The seL4 Device Driver Framework - #19

Open
lsf37 wants to merge 2 commits into
mainfrom
0120-device-driver-framework
Open

RFC-12: The seL4 Device Driver Framework#19
lsf37 wants to merge 2 commits into
mainfrom
0120-device-driver-framework

Conversation

@lsf37

@lsf37 lsf37 commented Jun 13, 2024

Copy link
Copy Markdown
Member

@lsf37

lsf37 commented Aug 4, 2024

Copy link
Copy Markdown
Member Author

Status update from 2024-07-25 TSC meeting: wait for framework to mature more, including support for further device classes.

@wom-bat

wom-bat commented Jun 15, 2026

Copy link
Copy Markdown
Member

The sDDF (available https://github.com/au-ts/sddf ) documented at https://trustworthy.systems/projects/drivers
is now significantly more mature. It's probably worth revisiting this,

@midnightveil

Copy link
Copy Markdown

I'd say it is also worth revisiting the text of the RFC, at the moment it just describes the framework, it says nowhere what the RFC is for: that is, to subsume sel4_libs (et al) and CAmkES as the 'recommended' way to use seL4.

Like, this just documents why we want the sDDF to exist, not why it should be part of the seL4 organisation/project?

@Indanz

Indanz commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

My main concern is that it doesn't provide a clean device class independent, generic communication framework, with the device class specific stuff build on top of that. At least I can't find it if I look in the source. I think sDDF should provide generic infrastructure that can also be used by non-devices, like servers and other inter process communication by user written code. Specifically the message passing queue mechanism used, no point in everyone re-inventing the wheel there. The device specific details are just details and extra metadata. Once you have a generic framework, you only have to proof that once for correctness.

@gernotheiser

Copy link
Copy Markdown
Member

I don't understand this argument.
The sDDF is, as the name says, a device driver framework, that's intentionally OS-personality agnostic. We specifically don't want to impose on the design of the OS personality (and specifically removed the initial dependence on the microkit for that reason).
If you want to extend the model into the rest of the OS, you have LionsOS.

@Indanz

Indanz commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

All the reasons why you want a device driver framework to be OS-personality agnostic also apply to client-server communication frameworks. Furthermore, the problem that is being solved by sDDF is essentially generic client-server communication, with nothing device driver specific about it, other than perhaps cleaning caches for DMA.

That is one reason reason to make the message queue generic. The other reason is to avoid code duplication in different driver subsystems that need bulk data transfer via shared memory.

@gernotheiser

Copy link
Copy Markdown
Member

When you say "make the message queue generic" are you arguing that the queues should be an independent piece of infrastructure and the sDDF a user of it, i.e. built on top? I.e. splitting the two?
I'd be open to this, as long as it doesn't compromise the simplicity.
It's certainly true that a lot of investment went into getting those queues right and performant, including a fair (and on-going) amount of formal verification.

@Indanz

Indanz commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Implementation wise, yes. Organisation wise, I would still bundle it with sDDF to keep it all in one place for practical purposes, at least initially.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants