diff options
Diffstat (limited to 'util/flashrom_tester')
| -rw-r--r-- | util/flashrom_tester/src/tester.rs | 18 | ||||
| -rw-r--r-- | util/flashrom_tester/src/tests.rs | 10 | 
2 files changed, 24 insertions, 4 deletions
| diff --git a/util/flashrom_tester/src/tester.rs b/util/flashrom_tester/src/tester.rs index d19e45cf..1fa44a84 100644 --- a/util/flashrom_tester/src/tester.rs +++ b/util/flashrom_tester/src/tester.rs @@ -246,6 +246,24 @@ impl<'a> WriteProtectState<'a> {          }      } +    // Set software write protect with a custom range +    pub fn set_range(&mut self, range: (i64, i64), enable: bool) -> Result<&mut Self, String> { +        info!("set_range request={}, current={}", enable, self.current.sw); +        self.cmd +            .wp_range(range, enable) +            .map_err(|e| e.to_string())?; +        let actual_state = Self::get_sw(self.cmd).map_err(|e| e.to_string())?; +        if actual_state != enable { +            Err(format!( +                "set_range request={}, real={}", +                enable, actual_state +            )) +        } else { +            self.current.sw = enable; +            Ok(self) +        } +    } +      /// Set the hardware write protect if supported and check that the state is as expected.      pub fn set_hw(&mut self, enable: bool) -> Result<&mut Self, String> {          info!("set_hw request={}, current={}", enable, self.current.hw); diff --git a/util/flashrom_tester/src/tests.rs b/util/flashrom_tester/src/tests.rs index e6968c81..3e39e4d5 100644 --- a/util/flashrom_tester/src/tests.rs +++ b/util/flashrom_tester/src/tests.rs @@ -272,10 +272,12 @@ fn partial_lock_test(section: LayoutNames) -> impl Fn(&mut TestEnv) -> TestResul          env.ensure_golden()?;          let (wp_section_name, start, len) = utils::layout_section(env.layout(), section); -        // Disable software WP so we can do range protection, but hardware WP -        // must remain enabled for (most) range protection to do anything. -        env.wp.set_hw(false)?.set_sw(false)?; -        env.cmd.wp_range((start, len), true)?; +        // Disable hardware WP so we can modify the protected range. +        env.wp.set_hw(false)?; +        // Then enable software WP so the range is enforced and enable hardware +        // WP so that flashrom does not disable software WP during the +        // operation. +        env.wp.set_range((start, len), true)?;          env.wp.set_hw(true)?;          // Check that we cannot write to the protected region. | 
