qemu/hw/nvram
Peter Delevoryas 4f2c6448c3 hw/nvram/eeprom_at24c: Make reset behavior more like hardware
EEPROM's are a form of non-volatile memory. After power-cycling an EEPROM,
I would expect the I2C state machine to be reset to default values, but I
wouldn't really expect the memory to change at all.

The current implementation of the at24c EEPROM resets its internal memory on
reset. This matches the specification in docs/devel/reset.rst:

  Cold reset is supported by every resettable object. In QEMU, it means we reset
  to the initial state corresponding to the start of QEMU; this might differ
  from what is a real hardware cold reset. It differs from other resets (like
  warm or bus resets) which may keep certain parts untouched.

But differs from my intuition. For example, if someone writes some information
to an EEPROM, then AC power cycles their board, they would expect the EEPROM to
retain that information. It's very useful to be able to test things like this
in QEMU as well, to verify software instrumentation like determining the cause
of a reboot.

Fixes: 5d8424dbd3 ("nvram: add AT24Cx i2c eeprom")
Signed-off-by: Peter Delevoryas <peter@pjd.dev>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Corey Minyard <cminyard@mvista.com>
Link: https://lore.kernel.org/r/20230128060543.95582-6-peter@pjd.dev
Signed-off-by: Cédric Le Goater <clg@kaod.org>
2023-02-07 09:02:05 +01:00
..
chrp_nvram.c nvram: Exit QEMU if NVRAM cannot contain all -prom-env data 2020-08-14 13:34:31 +10:00
ds1225y.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
eeprom93xx.c Drop useless casts from g_malloc() & friends to pointer 2022-10-22 23:15:40 +02:00
eeprom_at24c.c hw/nvram/eeprom_at24c: Make reset behavior more like hardware 2023-02-07 09:02:05 +01:00
fw_cfg-interface.c hw/nvram: Always register FW_CFG_DATA_GENERATOR_INTERFACE 2020-10-12 11:50:20 -04:00
fw_cfg.c x86: don't let decompressed kernel image clobber setup_data 2023-01-28 06:21:29 -05:00
Kconfig hw/nvram: Introduce Xilinx battery-backed ram 2021-09-30 13:42:10 +01:00
mac_nvram.c hw/ppc/mac.h: Rename to include/hw/nvram/mac_nvram.h 2022-10-31 18:48:23 +00:00
meson.build hw/nvram: Restrict fw_cfg QOM interface to sysemu and tools 2022-01-18 10:45:35 +01:00
npcm7xx_otp.c hw/*: Use type casting for SysBusDevice in NPCM7XX 2021-01-12 21:19:02 +00:00
nrf51_nvm.c Do not include exec/address-spaces.h if it's not really necessary 2021-05-02 17:24:51 +02:00
spapr_nvram.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
trace-events docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
xlnx-bbram.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
xlnx-efuse-crc.c hw/nvram: Introduce Xilinx eFuse QOM 2021-09-30 13:42:09 +01:00
xlnx-efuse.c block: Change blk_{pread,pwrite}() param order 2022-07-12 12:14:56 +02:00
xlnx-versal-efuse-cache.c hw/nvram: Introduce Xilinx Versal eFuse device 2021-09-30 13:42:10 +01:00
xlnx-versal-efuse-ctrl.c hw/nvram: Fix Memory Leak in Xilinx Versal eFuse device 2021-10-23 18:50:33 +02:00
xlnx-zynqmp-efuse.c hw/nvram: Fix Memory Leak in Xilinx ZynqMP eFuse device 2021-10-23 18:50:33 +02:00