diff options
author | Bernhard Beschow <shentey@gmail.com> | 2024-01-14 13:39:06 +0100 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2024-02-14 06:09:32 -0500 |
commit | f165cdf102bb93c255c63b77617ba371d73344e0 (patch) | |
tree | 12797f4bb3b1feae2c39caa99f53e4561a44f449 | |
parent | ad2b652341f4257e2fb7ebf3834724f91173a07a (diff) | |
download | qemu-f165cdf102bb93c255c63b77617ba371d73344e0.zip qemu-f165cdf102bb93c255c63b77617ba371d73344e0.tar.gz qemu-f165cdf102bb93c255c63b77617ba371d73344e0.tar.bz2 |
exec/ioport: Add portio_list_set_enabled()
Some SuperI/O devices such as the VIA south bridges or the PC87312 controller
allow to enable or disable their SuperI/O functions. Add a convenience function
for implementing this in the VIA south bridges.
The naming of the functions is inspired by its memory_region_set_enabled()
pendant.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Message-Id: <20240114123911.4877-7-shentey@gmail.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r-- | docs/devel/migration/main.rst | 1 | ||||
-rw-r--r-- | include/exec/ioport.h | 1 | ||||
-rw-r--r-- | system/ioport.c | 9 |
3 files changed, 11 insertions, 0 deletions
diff --git a/docs/devel/migration/main.rst b/docs/devel/migration/main.rst index 9439adc..331252a 100644 --- a/docs/devel/migration/main.rst +++ b/docs/devel/migration/main.rst @@ -444,6 +444,7 @@ Examples of such API functions are: - memory_region_set_address() - memory_region_set_alias_offset() - portio_list_set_address() + - portio_list_set_enabled() Iterative device migration -------------------------- diff --git a/include/exec/ioport.h b/include/exec/ioport.h index 96858e5..4397f12 100644 --- a/include/exec/ioport.h +++ b/include/exec/ioport.h @@ -71,6 +71,7 @@ void portio_list_add(PortioList *piolist, struct MemoryRegion *address_space, uint32_t addr); void portio_list_del(PortioList *piolist); +void portio_list_set_enabled(PortioList *piolist, bool enabled); void portio_list_set_address(PortioList *piolist, uint32_t addr); #endif /* IOPORT_H */ diff --git a/system/ioport.c b/system/ioport.c index 000e0ee..fd551d0 100644 --- a/system/ioport.c +++ b/system/ioport.c @@ -324,6 +324,15 @@ void portio_list_del(PortioList *piolist) } } +void portio_list_set_enabled(PortioList *piolist, bool enabled) +{ + unsigned i; + + for (i = 0; i < piolist->nr; ++i) { + memory_region_set_enabled(piolist->regions[i], enabled); + } +} + void portio_list_set_address(PortioList *piolist, uint32_t addr) { MemoryRegionPortioList *mrpio; |