xref: /openbmc/qemu/include/system/block-ram-registrar.h (revision 65cb7129f4160c7e07a0da107f888ec73ae96776)
1*32cad1ffSPhilippe Mathieu-Daudé /*
2*32cad1ffSPhilippe Mathieu-Daudé  * BlockBackend RAM Registrar
3*32cad1ffSPhilippe Mathieu-Daudé  *
4*32cad1ffSPhilippe Mathieu-Daudé  * SPDX-License-Identifier: GPL-2.0-or-later
5*32cad1ffSPhilippe Mathieu-Daudé  */
6*32cad1ffSPhilippe Mathieu-Daudé 
7*32cad1ffSPhilippe Mathieu-Daudé #ifndef BLOCK_RAM_REGISTRAR_H
8*32cad1ffSPhilippe Mathieu-Daudé #define BLOCK_RAM_REGISTRAR_H
9*32cad1ffSPhilippe Mathieu-Daudé 
10*32cad1ffSPhilippe Mathieu-Daudé #include "exec/ramlist.h"
11*32cad1ffSPhilippe Mathieu-Daudé 
12*32cad1ffSPhilippe Mathieu-Daudé /**
13*32cad1ffSPhilippe Mathieu-Daudé  * struct BlockRAMRegistrar:
14*32cad1ffSPhilippe Mathieu-Daudé  *
15*32cad1ffSPhilippe Mathieu-Daudé  * Keeps RAMBlock memory registered with a BlockBackend using
16*32cad1ffSPhilippe Mathieu-Daudé  * blk_register_buf() including hotplugged memory.
17*32cad1ffSPhilippe Mathieu-Daudé  *
18*32cad1ffSPhilippe Mathieu-Daudé  * Emulated devices or other BlockBackend users initialize a BlockRAMRegistrar
19*32cad1ffSPhilippe Mathieu-Daudé  * with blk_ram_registrar_init() before submitting I/O requests with the
20*32cad1ffSPhilippe Mathieu-Daudé  * BDRV_REQ_REGISTERED_BUF flag set.
21*32cad1ffSPhilippe Mathieu-Daudé  */
22*32cad1ffSPhilippe Mathieu-Daudé typedef struct {
23*32cad1ffSPhilippe Mathieu-Daudé     BlockBackend *blk;
24*32cad1ffSPhilippe Mathieu-Daudé     RAMBlockNotifier notifier;
25*32cad1ffSPhilippe Mathieu-Daudé     bool ok;
26*32cad1ffSPhilippe Mathieu-Daudé } BlockRAMRegistrar;
27*32cad1ffSPhilippe Mathieu-Daudé 
28*32cad1ffSPhilippe Mathieu-Daudé void blk_ram_registrar_init(BlockRAMRegistrar *r, BlockBackend *blk);
29*32cad1ffSPhilippe Mathieu-Daudé void blk_ram_registrar_destroy(BlockRAMRegistrar *r);
30*32cad1ffSPhilippe Mathieu-Daudé 
31*32cad1ffSPhilippe Mathieu-Daudé /* Have all RAMBlocks been registered successfully? */
blk_ram_registrar_ok(BlockRAMRegistrar * r)32*32cad1ffSPhilippe Mathieu-Daudé static inline bool blk_ram_registrar_ok(BlockRAMRegistrar *r)
33*32cad1ffSPhilippe Mathieu-Daudé {
34*32cad1ffSPhilippe Mathieu-Daudé     return r->ok;
35*32cad1ffSPhilippe Mathieu-Daudé }
36*32cad1ffSPhilippe Mathieu-Daudé 
37*32cad1ffSPhilippe Mathieu-Daudé #endif /* BLOCK_RAM_REGISTRAR_H */
38