devices: gpu: gfxstream: use MemSlot

Not strictly necessary to build gfxstream, but the MemSlot abstraction
was recently introduced and it makes sense to use it everywhere.

BUG=b/153580313
TEST=gfxstream builds

Change-Id: I06c2ca15edd39c553eacf1256dd95c2fc72f67dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2349394
Tested-by: Gurchetan Singh <gurchetansingh@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jason Macnak <natsu@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
This commit is contained in:
Gurchetan Singh 2020-08-11 10:28:24 -07:00 committed by Commit Bot
parent 02a17bb588
commit 3035dd87df

View file

@ -25,7 +25,7 @@ use gpu_renderer::RendererFlags;
use msg_socket::{MsgReceiver, MsgSender}; use msg_socket::{MsgReceiver, MsgSender};
use resources::Alloc; use resources::Alloc;
use sync::Mutex; use sync::Mutex;
use vm_control::{VmMemoryControlRequestSocket, VmMemoryRequest, VmMemoryResponse}; use vm_control::{MemSlot, VmMemoryControlRequestSocket, VmMemoryRequest, VmMemoryResponse};
use vm_memory::{GuestAddress, GuestMemory}; use vm_memory::{GuestAddress, GuestMemory};
use super::protocol::GpuResponse; use super::protocol::GpuResponse;
@ -247,7 +247,7 @@ const GFXSTREAM_RENDERER_CALLBACKS: &GfxStreamRendererCallbacks = &GfxStreamRend
struct VirtioGfxStreamResource { struct VirtioGfxStreamResource {
guest_memory_backing: Option<Vec<iovec>>, guest_memory_backing: Option<Vec<iovec>>,
kvm_slot: Option<u32>, slot: Option<MemSlot>,
} }
pub struct VirtioGfxStreamBackend { pub struct VirtioGfxStreamBackend {
@ -685,7 +685,7 @@ impl Backend for VirtioGfxStreamBackend {
Entry::Vacant(entry) => { Entry::Vacant(entry) => {
entry.insert(VirtioGfxStreamResource { entry.insert(VirtioGfxStreamResource {
guest_memory_backing: None, /* no guest memory attached yet */ guest_memory_backing: None, /* no guest memory attached yet */
kvm_slot: None, slot: None,
}); });
} }
Entry::Occupied(_) => { Entry::Occupied(_) => {
@ -826,7 +826,7 @@ impl Backend for VirtioGfxStreamBackend {
Entry::Vacant(entry) => { Entry::Vacant(entry) => {
entry.insert(VirtioGfxStreamResource { entry.insert(VirtioGfxStreamResource {
guest_memory_backing: None, /* no guest memory attached yet */ guest_memory_backing: None, /* no guest memory attached yet */
kvm_slot: None, slot: None,
}); });
} }
Entry::Occupied(_) => { Entry::Occupied(_) => {
@ -881,7 +881,7 @@ impl Backend for VirtioGfxStreamBackend {
match response { match response {
VmMemoryResponse::RegisterMemory { pfn: _, slot } => { VmMemoryResponse::RegisterMemory { pfn: _, slot } => {
// 0x02 for uncached type in map info // 0x02 for uncached type in map info
resource.kvm_slot = Some(slot); resource.slot = Some(slot);
GpuResponse::OkMapInfo { map_info: 0x02 } GpuResponse::OkMapInfo { map_info: 0x02 }
} }
VmMemoryResponse::Err(e) => { VmMemoryResponse::Err(e) => {
@ -901,12 +901,12 @@ impl Backend for VirtioGfxStreamBackend {
None => return GpuResponse::ErrInvalidResourceId, None => return GpuResponse::ErrInvalidResourceId,
}; };
let kvm_slot = match resource.kvm_slot { let slot = match resource.slot {
Some(kvm_slot) => kvm_slot, Some(slot) => slot,
None => return GpuResponse::ErrUnspec, None => return GpuResponse::ErrUnspec,
}; };
let request = VmMemoryRequest::UnregisterMemory(kvm_slot); let request = VmMemoryRequest::UnregisterMemory(slot);
match self.gpu_device_socket.send(&request) { match self.gpu_device_socket.send(&request) {
Ok(_) => (), Ok(_) => (),
Err(e) => { Err(e) => {
@ -925,7 +925,7 @@ impl Backend for VirtioGfxStreamBackend {
match response { match response {
VmMemoryResponse::Ok => { VmMemoryResponse::Ok => {
resource.kvm_slot = None; resource.slot = None;
GpuResponse::OkNoData GpuResponse::OkNoData
} }
VmMemoryResponse::Err(e) => { VmMemoryResponse::Err(e) => {