mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 18:44:58 -06:00
s390x/s390-virtio-ccw: prepare for memory devices
Let's prepare our address space for memory devices if enabled via "maxmem" and if we have CONFIG_MEM_DEVICE enabled at all. Note that CONFIG_MEM_DEVICE will be selected automatically once we add support for devices. Just like on other architectures, the region container for memory devices is placed directly above our initial memory. For now, we only align the start address of the region up to 1 GiB, but we won't add any additional space to the region for internal alignment purposes; this can be done in the future if really required. The RAM size returned via SCLP is not modified, as this only covers initial RAM (and standby memory we don't implement) and not memory devices; clarify that in the docs of read_SCP_info(). Existing OSes without support for memory devices will keep working as is, even when memory devices would be attached the VM. Guest OSs which support memory devices, such as virtio-mem, will consult diag500(), to find out the maximum possible pfn. Guest OSes that don't support memory devices, don't have to be changed and will continue relying on information provided by SCLP. There are no remaining maxram_size users in s390x code, and the remaining ram_size users only care about initial RAM: * hw/s390x/ipl.c * hw/s390x/s390-hypercall.c * hw/s390x/sclp.c * target/s390x/kvm/pv.c Message-ID: <20241219144115.2820241-11-david@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com>
This commit is contained in:
parent
d1e3c2ac41
commit
1e86400298
2 changed files with 27 additions and 2 deletions
|
@ -161,7 +161,11 @@ static void read_SCP_info(SCLPDevice *sclp, SCCB *sccb)
|
|||
read_info->rnsize2 = cpu_to_be32(rnsize);
|
||||
}
|
||||
|
||||
/* we don't support standby memory, maxram_size is never exposed */
|
||||
/*
|
||||
* We don't support standby memory. maxram_size is used for sizing the
|
||||
* memory device region, which is not exposed through SCLP but through
|
||||
* diag500.
|
||||
*/
|
||||
rnmax = machine->ram_size >> sclp->increment_size;
|
||||
if (rnmax < 0x10000) {
|
||||
read_info->rnmax = cpu_to_be16(rnmax);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue