Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Refactor physical pointer API - #824

Merged
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2
Jun 18, 2026
Merged

Refactor physical pointer API#824
Sangho Lee (sangho2) merged 12 commits into
sanghle/lvbs/vmap_copyfrom
sanghle/lvbs/physlock_v2

Conversation

@sangho2

@sangho2Sangho Lee (sangho2) commented May 1, 2026

Copy link
Copy Markdown
Contributor

This PR refactors the physical pointer API.

@sangho2Sangho Lee (sangho2) added the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 1, 2026
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory read/write APIPhysical memory range ownership for safe memory APIMay 1, 2026
@sangho2
Sangho Lee (sangho2)force-pushed the sanghle/lvbs/physlock_v2 branch 2 times, most recently from 420bea6 to d0c665cCompareMay 2, 2026 03:32
@sangho2Sangho Lee (sangho2) removed the must-not-merge:prototype An experimental/proof-of-concept PR that must not be merged. label May 2, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review May 5, 2026 22:54
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 15, 2026
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label May 29, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 2, 2026 16:31
@sangho2Sangho Lee (sangho2) changed the title Physical memory range ownership for safe memory APIPhysical memory access reservation for safe memory APIJun 2, 2026
@wdcui

Copy link
Copy Markdown
Member

Weiteng Chen (@CvvT) I think we should take a look at this PR as well. Thanks!

@wdcuiWeidong Cui (wdcui) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments below. I'm confident about my review because this PR has a lot of subtlties, so I didn't approve it and asked Weiteng to take a look at it as well.

Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
Comment threadlitebox_platform_lvbs/src/lib.rs Outdated
Comment threadlitebox_common_linux/src/physical_pointers.rs Outdated
@sangho2Sangho Lee (sangho2) added the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 15, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as draft June 15, 2026 23:09

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to take a slightly more in-depth pass over lib.rs, but otherwise this looks pretty good to me!

It's hard to judge what this + the other changes in #817 look like. Is it work merging this one into the sanghle/lvbs/vmap_copy branch first, and then doing another thorough pass over the merged result to make sure it's consistent?

Given the comparisons between this infrastructure and DMA, maybe it's worth looking at tock/tock#4702? That PR to Tock addresses two separate but related concerns:

  • It prevents the Rust compiler from making incorrect assumptions about the state of memory it can dereference (Rust slices). This is not directly applicable here, as memory is only ever accessed through asm!()-backed memcpy helpers, so there is no buffer with "shared custody" between Rust and the foreign entity.
  • It emits the appropriate synchronization instructions (i.e., fences) for when Rust-issued writes need to be made visible to the foreign entity, or when foreign-issued writes need to be made visible to Rust. This may still be missing here.

Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_common_linux/src/vmap.rs Outdated
Comment threadlitebox_platform_linux_userland/src/lib.rs
Comment threadlitebox_platform_lvbs/src/arch/x86/mm/paging.rs Outdated
@sangho2Sangho Lee (sangho2) changed the title Physical memory access reservation for safe memory APIRefactor physical pointer APIJun 18, 2026
@sangho2
Sangho Lee (sangho2) marked this pull request as ready for review June 18, 2026 15:18
@sangho2Sangho Lee (sangho2) removed the must-not-merge:blocked-on-other-changes Other changes/PRs to be handled first. Label not needed for non-main changes. label Jun 18, 2026
@sangho2
Sangho Lee (sangho2) merged commit fefb293 into sanghle/lvbs/vmap_copyJun 18, 2026
7 checks passed
@sangho2
Sangho Lee (sangho2) deleted the sanghle/lvbs/physlock_v2 branch June 18, 2026 15:50
@github-actions

Copy link
Copy Markdown

ℹ️ Note: This semver check was run against the sanghle/lvbs/vmap_copy branch, not main or ulitebox.

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure derive_trait_impl_removed: built-in derived trait no longer implemented ---
Description:
A public type has stopped deriving one or more traits. This can break downstream code that depends on those types implementing those traits.
ref: https://doc.rust-lang.org/reference/attributes/derive.html#derive
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/derive_trait_impl_removed.ron
Failed in:
type PhysConstPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:417
type PhysMutPtr no longer derives Clone, in /home/runner/work/litebox/litebox/litebox_common_linux/src/physical_pointers.rs:88
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_missing.ron
Failed in:
struct litebox_common_linux::vmap::PhysPageMapInfo, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-sanghle_lvbs_vmap_copy/acd6ae561116135b6915cf113a535d2c2e02cfc9/litebox_common_linux/src/vmap.rs:111
--- failure trait_associated_type_added: non-sealed public trait added associated type without default value ---
Description:
A non-sealed trait has gained an associated type without a default value, which breaks downstream implementations of the trait
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_associated_type_added.ron
Failed in:
trait associated type litebox_common_linux::vmap::VmapManager::MapInfo in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:22
--- failure trait_unsafe_added: pub trait became unsafe ---
Description:
A publicly-visible trait became `unsafe`, so implementing it now requires an `unsafe impl` block.
ref: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#implementing-an-unsafe-trait
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/trait_unsafe_added.ron
Failed in:
trait litebox_common_linux::vmap::VmapManager in file /home/runner/work/litebox/litebox/litebox_common_linux/src/vmap.rs:19

Sangho Lee (sangho2) added a commit that referenced this pull request Jun 18, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jun 30, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 9, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sangho Lee (sangho2) added a commit that referenced this pull request Jul 10, 2026
This PR refactors the physical pointer API.
---------
Co-authored-by: Sangho Lee <sanghle@microsoft.com>
Sign up for freeto 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.

4 participants

@sangho2@wdcui@lschuermann@CvvT