mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-11 10:25:20 +00:00
flash: ensure proper pstate alignment
The pstate structure is written using the low-level flash_physical_write() function. As a consequence, it is supposed to meet the CONFIG_FLASH_WRITE_SIZE alignment constraint. Add a build-time assertion to avoid silent failures. Slightly decrease the maximum size of the serial number string, so the structure has a natural 32-byte alignment which is compatible with a large number of platforms (including STM32L4 which requires 64-bit alignment). Of course, this change is not fully backward-compatible. Signed-off-by: Vincent Palatin <vpalatin@chromium.org> BRANCH=none BUG=chromium:571477 b:35648258 TEST=on STM32L442, build and run 'flashrom --wp-enable' without failure. Change-Id: Ia8f82790a61a6c7d2cf9bfeb95bfdaf7b8c52d11 Reviewed-on: https://chromium-review.googlesource.com/458201 Commit-Ready: Vincent Palatin <vpalatin@chromium.org> Tested-by: Vincent Palatin <vpalatin@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Nick Sanders <nsanders@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
e43ba03ebf
commit
d9afaba9b4
@@ -38,7 +38,7 @@
|
||||
/* NOTE: It's not expected that RO and RW will support
|
||||
* differing PSTATE versions. */
|
||||
#define PERSIST_STATE_VERSION 3 /* Expected persist_state.version */
|
||||
#define SERIALNO_MAX 30
|
||||
#define SERIALNO_MAX 28
|
||||
|
||||
/* Flags for persist_state.flags */
|
||||
/* Protect persist state and RO firmware at boot */
|
||||
@@ -53,6 +53,10 @@ struct persist_state {
|
||||
uint8_t reserved; /* Reserved; set 0 */
|
||||
uint8_t serialno[SERIALNO_MAX]; /* Serial number. */
|
||||
};
|
||||
/* written with flash_physical_write, need to respect alignment constraints */
|
||||
#ifndef CHIP_FAMILY_STM32L /* STM32L1xx is somewhat lying to us */
|
||||
BUILD_ASSERT(sizeof(struct persist_state) % CONFIG_FLASH_WRITE_SIZE == 0);
|
||||
#endif
|
||||
|
||||
#else /* !CONFIG_FLASH_PSTATE_BANK */
|
||||
|
||||
|
||||
@@ -258,7 +258,7 @@ struct usb_setup_packet {
|
||||
|
||||
#ifdef CONFIG_USB_SERIALNO
|
||||
/* String Descriptor for USB, for editable strings. */
|
||||
#define USB_STRING_LEN 30
|
||||
#define USB_STRING_LEN 28
|
||||
struct usb_string_desc {
|
||||
uint8_t _len;
|
||||
uint8_t _type;
|
||||
|
||||
Reference in New Issue
Block a user