diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..1b704de
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,25 @@
+
+{
+ description = "Shell for building rust-for-linux.com";
+ inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
+ inputs.systems.url = "github:nix-systems/default";
+ inputs.flake-utils = {
+ url = "github:numtide/flake-utils";
+ inputs.systems.follows = "systems";
+ };
+
+ outputs =
+ { nixpkgs, flake-utils, ... }:
+ flake-utils.lib.eachDefaultSystem (
+ system:
+ let
+ pkgs = nixpkgs.legacyPackages.${system};
+ in
+ {
+ devShells.default = pkgs.mkShell { packages = with pkgs; [
+ python3
+ mdbook
+ ]; };
+ }
+ );
+}
diff --git a/src/NVMe-driver.md b/src/NVMe-driver.md
index 811992e..9900b4e 100644
--- a/src/NVMe-driver.md
+++ b/src/NVMe-driver.md
@@ -24,6 +24,76 @@ The driver is not currently suitable for general use.
[slides](https://lpc.events/event/16/contributions/1180/attachments/1017/1961/deck.pdf)
and [video](https://lpc.events/event/16/contributions/1180/attachments/1017/2249/go)
+## 6.12-rc2 Rebase Performance ([`rnvme-v6.12-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme-v6.12-rc2))
+
+### Setup
+
+ - AMD Ryzen 5 7600
+ - 32 GB 4800 MT/s DDR5 on one channel
+ - 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
+ - NixOS 24.05
+
+### Results
+
+- 40 samples
+- Difference of means modeled with t-distribution
+- P95 confidence intervals
+
+![](rnvme/nvme-v6.12-rc2-absolute.svg)
+
+![](rnvme/nvme-v6.12-rc2-relative.svg)
+
+The graph shows
+
+where C is IO/s for the C driver and R is IO/s for the Rust driver. Thus, negative
+means the C driver is faster while positive means the Rust driver is faster.
+
+## 6.11 Rebase Performance ([`rnvme-v6.11`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme-v6.11))
+
+### Setup
+
+ - AMD Ryzen 5 7600
+ - 32 GB 4800 MT/s DDR5 on one channel
+ - 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
+ - NixOS 24.05
+
+### Results
+
+- 40 samples
+- Difference of means modeled with t-distribution
+- P95 confidence intervals
+
+![](rnvme/nvme-v6.11-absolute.svg)
+
+![](rnvme/nvme-v6.11-relative.svg)
+
+The graph shows
+
+where C is IO/s for the C driver and R is IO/s for the Rust driver. Thus, negative
+means the C driver is faster while positive means the Rust driver is faster.
+
## 6.11-rc2 Rebase Performance ([`rnvme-v6.11-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnvme-v6.11-rc2))
### Setup
diff --git a/src/Null-Block-Driver.md b/src/Null-Block-Driver.md
index 3dcbafb..73cae7c 100644
--- a/src/Null-Block-Driver.md
+++ b/src/Null-Block-Driver.md
@@ -67,6 +67,54 @@ in this work:
- [Mailing List Post](https://lore.kernel.org/all/20230503090708.2524310-1-nmi@metaspace.dk/)
- [Subset merged in v6.11-rc1](https://lore.kernel.org/all/20240611114551.228679-1-nmi@metaspace.dk/)
+## 6.12-rc2 Rebase ([`rnull-v6.12-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.12-rc2))
+
+Changes from `rnull-v6.10`:
+
+ - Make `QueueData` references pinned.
+
+### Performance
+
+#### Setup
+
+ - AMD Ryzen 5 7600
+ - 32 GB 4800 MT/s DDR5 on one channel
+ - 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
+ - NixOS 24.05
+
+#### Results
+
+- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
+- 40 samples for each configuration
+- Difference of means modeled with t-distribution
+- P95 confidence intervals
+
+![](rnull/rnull-v6.12-rc2.svg)
+
+## 6.11 Rebase ([`rnull-v6.11`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.11))
+
+Changes from `rnull-v6.10`:
+
+ - None.
+
+### Performance
+
+#### Setup
+
+ - AMD Ryzen 5 7600
+ - 32 GB 4800 MT/s DDR5 on one channel
+ - 1x Samsung 990 Pro 1TB (PCIe 4.0 x4 16 GT/S)
+ - NixOS 24.05
+
+#### Results
+
+- Plot shows `(mean_iops_r - mean_iops_c) / mean_iops_c`
+- 40 samples for each configuration
+- Difference of means modeled with t-distribution
+- P95 confidence intervals
+
+![](rnull/rnull-v6.11.svg)
+
## 6.11-rc2 Rebase ([`rnull-v6.11-rc2`](https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git/log/?h=rnull-v6.11-rc2))
Changes from `rnull-v6.10`:
diff --git a/src/rnull/rnull-v6.11.svg b/src/rnull/rnull-v6.11.svg
new file mode 100644
index 0000000..336dbc9
--- /dev/null
+++ b/src/rnull/rnull-v6.11.svg
@@ -0,0 +1,5044 @@
+
+
+
diff --git a/src/rnull/rnull-v6.12-rc2.svg b/src/rnull/rnull-v6.12-rc2.svg
new file mode 100644
index 0000000..93f0d9e
--- /dev/null
+++ b/src/rnull/rnull-v6.12-rc2.svg
@@ -0,0 +1,4930 @@
+
+
+
diff --git a/src/rnvme/nvme-v6.11-absolute.svg b/src/rnvme/nvme-v6.11-absolute.svg
new file mode 100644
index 0000000..a29059c
--- /dev/null
+++ b/src/rnvme/nvme-v6.11-absolute.svg
@@ -0,0 +1,2331 @@
+
+
+
diff --git a/src/rnvme/nvme-v6.11-relative.svg b/src/rnvme/nvme-v6.11-relative.svg
new file mode 100644
index 0000000..0a4953e
--- /dev/null
+++ b/src/rnvme/nvme-v6.11-relative.svg
@@ -0,0 +1,1880 @@
+
+
+
diff --git a/src/rnvme/nvme-v6.12-rc2-absolute.svg b/src/rnvme/nvme-v6.12-rc2-absolute.svg
new file mode 100644
index 0000000..1f433cf
--- /dev/null
+++ b/src/rnvme/nvme-v6.12-rc2-absolute.svg
@@ -0,0 +1,2331 @@
+
+
+
diff --git a/src/rnvme/nvme-v6.12-rc2-relative.svg b/src/rnvme/nvme-v6.12-rc2-relative.svg
new file mode 100644
index 0000000..d2f3d30
--- /dev/null
+++ b/src/rnvme/nvme-v6.12-rc2-relative.svg
@@ -0,0 +1,1880 @@
+
+
+