Brendan Shephard
2025-Dec-08 06:44 UTC
[PATCH v2] drm: nova: Align GEM memory allocation to system page size
Use page::page_align for GEM object memory allocation to ensure the
allocation is page aligned. This ensures that the allocation is page
aligned with the system in cases where 4096 is not the default.
For example on 16k or 64k aarch64 systems this allocation should be
aligned accordingly.
This change uses the updated page_align() function from commit:
"rust: Return Option from page_align and ensure no usize overflow"
Which returns an Option<usize> for overflow safety.
Signed-off-by: Brendan Shephard <bshephar at bne-home.net>
---
Changes in v2:
- Updated to use the new page_align() Option<usize> return value from:
Commit: "rust: Return Option from page_align and ensure no usize
overflow"
https://lore.kernel.org/rust-for-linux/20251204224006.353646-2-bshephar at
bne-home.net/T/#u
drivers/gpu/drm/nova/gem.rs | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/nova/gem.rs b/drivers/gpu/drm/nova/gem.rs
index 2760ba4f3450..41439f3b9361 100644
--- a/drivers/gpu/drm/nova/gem.rs
+++ b/drivers/gpu/drm/nova/gem.rs
@@ -3,6 +3,7 @@
use kernel::{
drm,
drm::{gem, gem::BaseObject},
+ page::page_align,
prelude::*,
sync::aref::ARef,
};
@@ -27,11 +28,7 @@ fn new(_dev: &NovaDevice, _size: usize) -> impl
PinInit<Self, Error> {
impl NovaObject {
/// Create a new DRM GEM object.
pub(crate) fn new(dev: &NovaDevice, size: usize) ->
Result<ARef<gem::Object<Self>>> {
- let aligned_size = size.next_multiple_of(1 << 12);
-
- if size == 0 || size > aligned_size {
- return Err(EINVAL);
- }
+ let aligned_size = page_align(size).ok_or(EINVAL)?
gem::Object::new(dev, aligned_size)
}
base-commit: 37bb2e7217b01404e2abf9d90d8e5705a5603b52
--
2.52.0