To get to the root of the matter: - I made creating an MMIO handle in derive-mmio unsafe because it exposes APIs that do RMW, but also because it takes a raw memory address - Should a HAL driver that uses derive-mmio to handle one peripheral at a well known address be unsafe to create? It knows the pointer, but if someone makes two driver objects they can race on the same memory address. It’s probably not UB, but it’s not good that it’s racing.