mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-03 15:03:22 +02:00
flashrom_tester: Fix partial_lock_test on libflashrom
partial_lock_test (Lock_top_quad, Lock_bottom_quad, Lock_bottom_half, and Lock_top_half) tries to: 1. Disable HWWP 2. Lock partial 3. Enable HWWP 4. Try to write the locked partial and expect a failure ... The 4th step only works on flashrom binary since the binary will set FLASHROM_FLAG_VERIFY_AFTER_WRITE=1 by default and it will error out while verifying. But libflashrom does not set any flag beforehand, so it has FLASHROM_FLAG_VERIFY_AFTER_WRITE=0 and thus it will think the write command works normally and raise no error. This causes the issue that flashrom_tester with libflashrom has been failed until today. To solve this issue, there are two solutions: 1. Take care of the default flags in libflashrom 2. Always pass --noverify to flashrom binary and verify it afterwards. To make both methods more consistent, I fix it with approach 1. BUG=b:304439294 BRANCH=none TEST=flashrom_tester internal --libflashrom Lock_top_quad Change-Id: I7a8ac0c0984fef3cd9e73ed8d8097ddf429e54b2 Signed-off-by: roccochen@chromium.com <roccochen@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/79304 Reviewed-by: Anastasia Klimchuk <aklm@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:

committed by
Anastasia Klimchuk

parent
c52f949b62
commit
04deed8c8f
@ -35,6 +35,8 @@
|
||||
|
||||
use crate::{FlashChip, FlashromError};
|
||||
|
||||
use libflashrom::FlashromFlags;
|
||||
|
||||
use std::{
|
||||
ffi::{OsStr, OsString},
|
||||
path::Path,
|
||||
@ -295,6 +297,12 @@ impl crate::Flashrom for FlashromCmd {
|
||||
fn can_control_hw_wp(&self) -> bool {
|
||||
self.fc.can_control_hw_wp()
|
||||
}
|
||||
|
||||
fn set_flags(&self, flags: &FlashromFlags) -> () {
|
||||
// The flashrom CLI sets its own default flags,
|
||||
// and we currently have no need for custom flags,
|
||||
// so this set_flags function is intentionally a no-op.
|
||||
}
|
||||
}
|
||||
|
||||
fn flashrom_decode_opts(opts: FlashromOpt) -> Vec<OsString> {
|
||||
|
@ -32,7 +32,7 @@
|
||||
// Software Foundation.
|
||||
//
|
||||
|
||||
use libflashrom::{Chip, Programmer};
|
||||
use libflashrom::{Chip, FlashromFlag, FlashromFlags, Programmer};
|
||||
|
||||
use std::{cell::RefCell, convert::TryFrom, fs, path::Path};
|
||||
|
||||
@ -181,4 +181,25 @@ impl crate::Flashrom for FlashromLib {
|
||||
fn can_control_hw_wp(&self) -> bool {
|
||||
self.fc.can_control_hw_wp()
|
||||
}
|
||||
|
||||
fn set_flags(&self, flags: &FlashromFlags) -> () {
|
||||
self.flashrom
|
||||
.borrow_mut()
|
||||
.flag_set(FlashromFlag::FlashromFlagForce, flags.force);
|
||||
self.flashrom
|
||||
.borrow_mut()
|
||||
.flag_set(FlashromFlag::FlashromFlagForceBoardmismatch, flags.force_boardmismatch);
|
||||
self.flashrom
|
||||
.borrow_mut()
|
||||
.flag_set(FlashromFlag::FlashromFlagVerifyAfterWrite, flags.verify_after_write);
|
||||
self.flashrom
|
||||
.borrow_mut()
|
||||
.flag_set(FlashromFlag::FlashromFlagVerifyWholeChip, flags.verify_whole_chip);
|
||||
self.flashrom
|
||||
.borrow_mut()
|
||||
.flag_set(FlashromFlag::FlashromFlagSkipUnreadableRegions, flags.skip_unreadable_regions);
|
||||
self.flashrom
|
||||
.borrow_mut()
|
||||
.flag_set(FlashromFlag::FlashromFlagSkipUnwritableRegions, flags.skip_unwritable_regions);
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ pub use cmd::FlashromCmd;
|
||||
pub use flashromlib::FlashromLib;
|
||||
|
||||
pub use libflashrom::{
|
||||
flashrom_log_level, FLASHROM_MSG_DEBUG, FLASHROM_MSG_DEBUG2, FLASHROM_MSG_ERROR,
|
||||
flashrom_log_level, FlashromFlags, FLASHROM_MSG_DEBUG, FLASHROM_MSG_DEBUG2, FLASHROM_MSG_ERROR,
|
||||
FLASHROM_MSG_INFO, FLASHROM_MSG_SPEW, FLASHROM_MSG_WARN,
|
||||
};
|
||||
|
||||
@ -162,4 +162,7 @@ pub trait Flashrom {
|
||||
|
||||
/// Return true if the hardware write protect of this flash can be controlled.
|
||||
fn can_control_hw_wp(&self) -> bool;
|
||||
|
||||
/// Set flags used by the flashrom cli.
|
||||
fn set_flags(&self, flags: &FlashromFlags) -> ();
|
||||
}
|
||||
|
Reference in New Issue
Block a user