summary refs log tree commit diff
path: root/devices
diff options
context:
space:
mode:
Diffstat (limited to 'devices')
-rw-r--r--devices/src/ioapic.rs38
-rw-r--r--devices/src/pic.rs6
-rw-r--r--devices/src/register_space/register.rs16
-rw-r--r--devices/src/usb/xhci/event_ring.rs27
-rw-r--r--devices/src/usb/xhci/interrupter.rs52
-rw-r--r--devices/src/usb/xhci/scatter_gather_buffer.rs34
-rw-r--r--devices/src/virtio/gpu/mod.rs8
7 files changed, 82 insertions, 99 deletions
diff --git a/devices/src/ioapic.rs b/devices/src/ioapic.rs
index d8b3808..0e9c89b 100644
--- a/devices/src/ioapic.rs
+++ b/devices/src/ioapic.rs
@@ -261,27 +261,25 @@ impl Ioapic {
                     return;
                 }
 
-                {
-                    let entry = &mut self.redirect_table[index];
-                    if is_high_bits {
-                        entry.set(32, 32, val.into());
-                    } else {
-                        let before = *entry;
-                        entry.set(0, 32, val.into());
-
-                        // respect R/O bits.
-                        entry.set_delivery_status(before.get_delivery_status());
-                        entry.set_remote_irr(before.get_remote_irr());
-
-                        // Clear remote_irr when switching to edge_triggered.
-                        if entry.get_trigger_mode() == TriggerMode::Edge {
-                            entry.set_remote_irr(false);
-                        }
-
-                        // NOTE: on pre-4.0 kernels, there's a race we would need to work around.
-                        // "KVM: x86: ioapic: Fix level-triggered EOI and IOAPIC reconfigure race"
-                        // is the fix for this.
+                let entry = &mut self.redirect_table[index];
+                if is_high_bits {
+                    entry.set(32, 32, val.into());
+                } else {
+                    let before = *entry;
+                    entry.set(0, 32, val.into());
+
+                    // respect R/O bits.
+                    entry.set_delivery_status(before.get_delivery_status());
+                    entry.set_remote_irr(before.get_remote_irr());
+
+                    // Clear remote_irr when switching to edge_triggered.
+                    if entry.get_trigger_mode() == TriggerMode::Edge {
+                        entry.set_remote_irr(false);
                     }
+
+                    // NOTE: on pre-4.0 kernels, there's a race we would need to work around.
+                    // "KVM: x86: ioapic: Fix level-triggered EOI and IOAPIC reconfigure race"
+                    // is the fix for this.
                 }
 
                 // TODO(mutexlox): route MSI.
diff --git a/devices/src/pic.rs b/devices/src/pic.rs
index 33106ef..9b8235f 100644
--- a/devices/src/pic.rs
+++ b/devices/src/pic.rs
@@ -724,10 +724,8 @@ mod tests {
         // OCW2: Set rotate on auto EOI.
         data.pic.write(PIC_SECONDARY_COMMAND, &[0x80]);
 
-        {
-            let secondary_pic = &data.pic.pics[PicSelect::Secondary as usize];
-            assert!(secondary_pic.rotate_on_auto_eoi);
-        }
+        let secondary_pic = &data.pic.pics[PicSelect::Secondary as usize];
+        assert!(secondary_pic.rotate_on_auto_eoi);
 
         // OCW2: Clear rotate on auto EOI.
         data.pic.write(PIC_SECONDARY_COMMAND, &[0x00]);
diff --git a/devices/src/register_space/register.rs b/devices/src/register_space/register.rs
index 160412c..268b945 100644
--- a/devices/src/register_space/register.rs
+++ b/devices/src/register_space/register.rs
@@ -259,15 +259,13 @@ impl<T: RegisterValue> RegisterInterface for Register<T> {
         let total_size = (overlap.to - overlap.from) as usize + 1;
 
         let mut reg_value: T = self.lock().value;
-        {
-            let value: &mut [u8] = reg_value.as_mut_slice();
-            for i in 0..total_size {
-                value[my_start_idx + i] = self.apply_write_masks_to_byte(
-                    value[my_start_idx + i],
-                    data[write_start_idx + i],
-                    my_start_idx + i,
-                );
-            }
+        let value: &mut [u8] = reg_value.as_mut_slice();
+        for i in 0..total_size {
+            value[my_start_idx + i] = self.apply_write_masks_to_byte(
+                value[my_start_idx + i],
+                data[write_start_idx + i],
+                my_start_idx + i,
+            );
         }
 
         // A single u64 register is done by write to lower 32 bit and then higher 32 bit. Callback
diff --git a/devices/src/usb/xhci/event_ring.rs b/devices/src/usb/xhci/event_ring.rs
index 0b35ef7..4b510f1 100644
--- a/devices/src/usb/xhci/event_ring.rs
+++ b/devices/src/usb/xhci/event_ring.rs
@@ -89,20 +89,19 @@ impl EventRing {
         fence(Ordering::SeqCst);
 
         trb.set_cycle_bit(self.producer_cycle_state);
-        {
-            // Offset of cycle state byte.
-            const CYCLE_STATE_OFFSET: usize = 12usize;
-            let data = trb.as_slice();
-            // Trb contains 4 dwords, the last one contains cycle bit.
-            let cycle_bit_dword = &data[CYCLE_STATE_OFFSET..];
-            let address = self.enqueue_pointer;
-            let address = address
-                .checked_add(CYCLE_STATE_OFFSET as u64)
-                .ok_or(Error::BadEnqueuePointer(self.enqueue_pointer))?;
-            self.mem
-                .write_all_at_addr(cycle_bit_dword, address)
-                .map_err(Error::MemoryWrite)?;
-        }
+
+        // Offset of cycle state byte.
+        const CYCLE_STATE_OFFSET: usize = 12usize;
+        let data = trb.as_slice();
+        // Trb contains 4 dwords, the last one contains cycle bit.
+        let cycle_bit_dword = &data[CYCLE_STATE_OFFSET..];
+        let address = self.enqueue_pointer;
+        let address = address
+            .checked_add(CYCLE_STATE_OFFSET as u64)
+            .ok_or(Error::BadEnqueuePointer(self.enqueue_pointer))?;
+        self.mem
+            .write_all_at_addr(cycle_bit_dword, address)
+            .map_err(Error::MemoryWrite)?;
 
         usb_debug!(
             "event write to pointer {:#x}, trb_count {}, {}",
diff --git a/devices/src/usb/xhci/interrupter.rs b/devices/src/usb/xhci/interrupter.rs
index e850eb2..a896fb4 100644
--- a/devices/src/usb/xhci/interrupter.rs
+++ b/devices/src/usb/xhci/interrupter.rs
@@ -83,14 +83,12 @@ impl Interrupter {
     /// Send port status change trb for port.
     pub fn send_port_status_change_trb(&mut self, port_id: u8) -> Result<()> {
         let mut trb = Trb::new();
-        {
-            let psctrb = trb
-                .cast_mut::<PortStatusChangeEventTrb>()
-                .map_err(Error::CastTrb)?;
-            psctrb.set_port_id(port_id);
-            psctrb.set_completion_code(TrbCompletionCode::Success as u8);
-            psctrb.set_trb_type(TrbType::PortStatusChangeEvent as u8);
-        }
+        let psctrb = trb
+            .cast_mut::<PortStatusChangeEventTrb>()
+            .map_err(Error::CastTrb)?;
+        psctrb.set_port_id(port_id);
+        psctrb.set_completion_code(TrbCompletionCode::Success as u8);
+        psctrb.set_trb_type(TrbType::PortStatusChangeEvent as u8);
         self.add_event(trb)
     }
 
@@ -102,17 +100,15 @@ impl Interrupter {
         trb_addr: GuestAddress,
     ) -> Result<()> {
         let mut trb = Trb::new();
-        {
-            let ctrb = trb
-                .cast_mut::<CommandCompletionEventTrb>()
-                .map_err(Error::CastTrb)?;
-            ctrb.set_trb_pointer(trb_addr.0);
-            ctrb.set_command_completion_parameter(0);
-            ctrb.set_completion_code(completion_code as u8);
-            ctrb.set_trb_type(TrbType::CommandCompletionEvent as u8);
-            ctrb.set_vf_id(0);
-            ctrb.set_slot_id(slot_id);
-        }
+        let ctrb = trb
+            .cast_mut::<CommandCompletionEventTrb>()
+            .map_err(Error::CastTrb)?;
+        ctrb.set_trb_pointer(trb_addr.0);
+        ctrb.set_command_completion_parameter(0);
+        ctrb.set_completion_code(completion_code as u8);
+        ctrb.set_trb_type(TrbType::CommandCompletionEvent as u8);
+        ctrb.set_vf_id(0);
+        ctrb.set_slot_id(slot_id);
         self.add_event(trb)
     }
 
@@ -127,16 +123,14 @@ impl Interrupter {
         endpoint_id: u8,
     ) -> Result<()> {
         let mut trb = Trb::new();
-        {
-            let event_trb = trb.cast_mut::<TransferEventTrb>().map_err(Error::CastTrb)?;
-            event_trb.set_trb_pointer(trb_pointer);
-            event_trb.set_trb_transfer_length(transfer_length);
-            event_trb.set_completion_code(completion_code as u8);
-            event_trb.set_event_data(event_data.into());
-            event_trb.set_trb_type(TrbType::TransferEvent as u8);
-            event_trb.set_endpoint_id(endpoint_id);
-            event_trb.set_slot_id(slot_id);
-        }
+        let event_trb = trb.cast_mut::<TransferEventTrb>().map_err(Error::CastTrb)?;
+        event_trb.set_trb_pointer(trb_pointer);
+        event_trb.set_trb_transfer_length(transfer_length);
+        event_trb.set_completion_code(completion_code as u8);
+        event_trb.set_event_data(event_data.into());
+        event_trb.set_trb_type(TrbType::TransferEvent as u8);
+        event_trb.set_endpoint_id(endpoint_id);
+        event_trb.set_slot_id(slot_id);
         self.add_event(trb)
     }
 
diff --git a/devices/src/usb/xhci/scatter_gather_buffer.rs b/devices/src/usb/xhci/scatter_gather_buffer.rs
index c05afd5..da43b33 100644
--- a/devices/src/usb/xhci/scatter_gather_buffer.rs
+++ b/devices/src/usb/xhci/scatter_gather_buffer.rs
@@ -132,31 +132,29 @@ mod test {
     fn scatter_gather_buffer_test() {
         let gm = GuestMemory::new(&vec![(GuestAddress(0), 0x1000)]).unwrap();
         let mut td = TransferDescriptor::new();
+
         // In this td, we are going to have scatter buffer at 0x100, length 4, 0x200 length 2 and
         // 0x300 length 1.
+
         let mut trb = Trb::new();
-        {
-            let ntrb = trb.cast_mut::<NormalTrb>().unwrap();
-            ntrb.set_trb_type(TrbType::Normal as u8);
-            ntrb.set_data_buffer(0x100);
-            ntrb.set_trb_transfer_length(4);
-        }
+        let ntrb = trb.cast_mut::<NormalTrb>().unwrap();
+        ntrb.set_trb_type(TrbType::Normal as u8);
+        ntrb.set_data_buffer(0x100);
+        ntrb.set_trb_transfer_length(4);
         td.push(AddressedTrb { trb, gpa: 0 });
+
         let mut trb = Trb::new();
-        {
-            let ntrb = trb.cast_mut::<NormalTrb>().unwrap();
-            ntrb.set_trb_type(TrbType::Normal as u8);
-            ntrb.set_data_buffer(0x200);
-            ntrb.set_trb_transfer_length(2);
-        }
+        let ntrb = trb.cast_mut::<NormalTrb>().unwrap();
+        ntrb.set_trb_type(TrbType::Normal as u8);
+        ntrb.set_data_buffer(0x200);
+        ntrb.set_trb_transfer_length(2);
         td.push(AddressedTrb { trb, gpa: 0 });
+
         let mut trb = Trb::new();
-        {
-            let ntrb = trb.cast_mut::<NormalTrb>().unwrap();
-            ntrb.set_trb_type(TrbType::Normal as u8);
-            ntrb.set_data_buffer(0x300);
-            ntrb.set_trb_transfer_length(1);
-        }
+        let ntrb = trb.cast_mut::<NormalTrb>().unwrap();
+        ntrb.set_trb_type(TrbType::Normal as u8);
+        ntrb.set_data_buffer(0x300);
+        ntrb.set_trb_transfer_length(1);
         td.push(AddressedTrb { trb, gpa: 0 });
 
         let buffer = ScatterGatherBuffer::new(gm.clone(), td).unwrap();
diff --git a/devices/src/virtio/gpu/mod.rs b/devices/src/virtio/gpu/mod.rs
index 686c174..2c13acc 100644
--- a/devices/src/virtio/gpu/mod.rs
+++ b/devices/src/virtio/gpu/mod.rs
@@ -690,11 +690,9 @@ impl VirtioDevice for Gpu {
         let offset = offset as usize;
         let len = data.len();
         let mut cfg = self.get_config();
-        {
-            let cfg_slice = cfg.as_mut_slice();
-            if offset + len <= cfg_slice.len() {
-                cfg_slice[offset..offset + len].copy_from_slice(data);
-            }
+        let cfg_slice = cfg.as_mut_slice();
+        if offset + len <= cfg_slice.len() {
+            cfg_slice[offset..offset + len].copy_from_slice(data);
         }
         if (cfg.events_clear.to_native() & VIRTIO_GPU_EVENT_DISPLAY) != 0 {
             self.config_event = false;