So far the major items are:
* Performance evaluation of the changes, with these requirements:
* Support the same number of NMI nesting level we have now.
* Overflow detection for irq disable nest levels
* One major impact is that hardware access vs per-CPU memory access at each time we disable/enable irq.
* Maybe we can use `refscale` (kernel/rcu/refscale.c) as a skeletion for micro-benchmarking?
* Plan/tool/work of avoiding introduction of another irq disable/enable primitives.
* So what we have current is:
* `local_irq_disable()` and `local_irq_enable()`
* `local_irq_save()` and `local_irq_restore()`
* And what we are introducing is:
* `local_interrupt_disable()` and `local_interrupt_enable()`.
Boqun: Maybe we only need to prove that we can do this (not necessarily clean up at first)
Lyude: will need to get the kernel boot into a reasonable state to figure what are the creative use cases and how to detect and resolve them.
Boqun: Keep in mind the least we can do is implement a Rust version of `local_interrupt_disable()` and only use it in Rust for the moment.
If we want to avoid 3 sets of API in total, the thing we should do is using `local_interrupt_disable()` to replace either `local_irq_disable()` or `local_irq_save()`. My gut feeling is that replacing `local_irq_disable()` will be easier.
# Takeaways
* Figuring out long-term plan for converting APIs
* Performance concerns (lower priority)
* If we can't solve the performance concerns ATM/cannot deal with them, keeping the implementation limited to rust *might* be an option?
* Consider doing topic in plumbers to get more attention on some of the potential issues w/ conversion&performance (should be fine w/ long term plan, will let us decouple merging/blocking on conv&perf)
* Figuring out plan for handling performance issues before sending out next version (can be limiting usage, or showing that performance is fine)