gsp.rs changes to make it work with the new SBuffer changes.
Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index 715e3ca..07b9fdef 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -287,8 +287,8 @@ pub(crate) fn new(
spec.revision
);
- pdev.as_ref().dma_set_mask((1 << 48) - 1)?;
- pdev.as_ref().dma_set_coherent_mask((1 << 48) - 1)?;
+ pdev.dma_set_mask((1 << 48) - 1)?;
+ pdev.dma_set_coherent_mask((1 << 48) - 1)?;
// We must wait for GFW_BOOT completion before doing any significant setup on the GPU.
gfw::wait_gfw_boot_completion(bar)
diff --git a/drivers/gpu/nova-core/gsp.rs b/drivers/gpu/nova-core/gsp.rs
index 3286727..903e3212 100644
--- a/drivers/gpu/nova-core/gsp.rs
+++ b/drivers/gpu/nova-core/gsp.rs
@@ -360,7 +360,7 @@ fn alloc_cmd_sbuffer<'b>(self: &mut Self, cmd_size: usize) -> Result<SBuffer<'b>
core::slice::from_raw_parts_mut(ptr as *mut u8, msg_size * GSP_PAGE_SIZE)
};
- return Ok(SBuffer::<'b>::new([slice]));
+ return SBuffer::<'b>::new((slice, None));
}
// First slice contains the remaining free pages in the queue
@@ -375,7 +375,7 @@ fn alloc_cmd_sbuffer<'b>(self: &mut Self, cmd_size: usize) -> Result<SBuffer<'b>
(msg_size - 0x3f + wptr) * GSP_PAGE_SIZE,
)
};
- return Ok(SBuffer::<'b>::new([slice_1, slice_2]));
+ return SBuffer::<'b>::new((slice_1, Some(slice_2)));
}
pub(crate) fn send<A: GspMessageElement>(
@@ -427,7 +427,7 @@ pub(crate) fn send<A: GspMessageElement>(
cmd.copy_to_sbuf(&mut sbuf_iter)?;
msg_header.checksum = 0;
- let total_size = sbuf.capacity;
+ let total_size = sbuf.total_bytes;
msg_header.elem_count = total_size.div_ceil(GSP_PAGE_SIZE) as u32;
// Calculate checksum over the entire message
@@ -495,9 +495,10 @@ fn receive<A: GspMessageElement>(self: &mut Self, function: u32) -> Result<A> {
}
let sbuf = if rpc.length + header_size < remaining {
- SBuffer::new([
- &mut msg_slice[(header_size as usize)..(header_size + rpc.length) as usize]
- ])
+ SBuffer::new((
+ &mut msg_slice[(header_size as usize)..(header_size + rpc.length) as usize],
+ None
+ ))?
} else {
let slice_1 =
&mut msg_slice[(header_size as usize)..(header_size + remaining) as usize];
@@ -506,7 +507,7 @@ fn receive<A: GspMessageElement>(self: &mut Self, function: u32) -> Result<A> {
let slice_2 = unsafe {
core::slice::from_raw_parts_mut(ptr as *mut u8, rpc.length as usize - slice_1.len())
};
- SBuffer::new([slice_1, slice_2])
+ SBuffer::new((slice_1, Some(slice_2)))?
};
let result = if rpc.function == function {
@@ -612,7 +613,7 @@ fn size(&self) -> usize {
}
fn copy_to_sbuf(&self, sbuf: &mut SBufferIteratorMut<'_, '_>) -> Result {
- for i in 0..self.size() {
+ for _i in 0..self.size {
sbuf.write_byte(0)?;
}
@@ -621,7 +622,7 @@ fn copy_to_sbuf(&self, sbuf: &mut SBufferIteratorMut<'_, '_>) -> Result {
fn new_from_sbuf(sbuf: &SBuffer<'_>) -> Result<Self> {
Ok(Self {
- size: sbuf.capacity,
+ size: sbuf.total_bytes,
})
}
}