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,
         })
     }
 }