mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-19 08:02:15 -06:00
s390x: remember the maximum page size
Let's remember the value (successfully) set via s390_set_max_pagesize(). This will be helpful to reject hotplugged memory devices that would exceed this initially set page size. Handle it just like how we handle s390_get_memory_limit(), storing it in the machine, and moving the handling to machine code. Message-ID: <20241219144115.2820241-13-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
a056332e73
commit
df2ac211a6
4 changed files with 12 additions and 9 deletions
|
@ -143,6 +143,16 @@ static void s390_set_memory_limit(S390CcwMachineState *s390ms,
|
||||||
s390ms->memory_limit = new_limit;
|
s390ms->memory_limit = new_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void s390_set_max_pagesize(S390CcwMachineState *s390ms,
|
||||||
|
uint64_t pagesize)
|
||||||
|
{
|
||||||
|
assert(!s390ms->max_pagesize && pagesize);
|
||||||
|
if (kvm_enabled()) {
|
||||||
|
kvm_s390_set_max_pagesize(pagesize, &error_fatal);
|
||||||
|
}
|
||||||
|
s390ms->max_pagesize = pagesize;
|
||||||
|
}
|
||||||
|
|
||||||
static void s390_memory_init(MachineState *machine)
|
static void s390_memory_init(MachineState *machine)
|
||||||
{
|
{
|
||||||
S390CcwMachineState *s390ms = S390_CCW_MACHINE(machine);
|
S390CcwMachineState *s390ms = S390_CCW_MACHINE(machine);
|
||||||
|
@ -191,7 +201,7 @@ static void s390_memory_init(MachineState *machine)
|
||||||
* Configure the maximum page size. As no memory devices were created
|
* Configure the maximum page size. As no memory devices were created
|
||||||
* yet, this is the page size of initial memory only.
|
* yet, this is the page size of initial memory only.
|
||||||
*/
|
*/
|
||||||
s390_set_max_pagesize(qemu_maxrampagesize(), &error_fatal);
|
s390_set_max_pagesize(s390ms, qemu_maxrampagesize());
|
||||||
/* Initialize storage key device */
|
/* Initialize storage key device */
|
||||||
s390_skeys_init();
|
s390_skeys_init();
|
||||||
/* Initialize storage attributes device */
|
/* Initialize storage attributes device */
|
||||||
|
|
|
@ -30,6 +30,7 @@ struct S390CcwMachineState {
|
||||||
bool pv;
|
bool pv;
|
||||||
uint8_t loadparm[8];
|
uint8_t loadparm[8];
|
||||||
uint64_t memory_limit;
|
uint64_t memory_limit;
|
||||||
|
uint64_t max_pagesize;
|
||||||
|
|
||||||
SCLPDevice *sclp;
|
SCLPDevice *sclp;
|
||||||
};
|
};
|
||||||
|
|
|
@ -255,13 +255,6 @@ unsigned int s390_cpu_set_state(uint8_t cpu_state, S390CPU *cpu)
|
||||||
return s390_count_running_cpus();
|
return s390_count_running_cpus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void s390_set_max_pagesize(uint64_t pagesize, Error **errp)
|
|
||||||
{
|
|
||||||
if (kvm_enabled()) {
|
|
||||||
kvm_s390_set_max_pagesize(pagesize, errp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void s390_cmma_reset(void)
|
void s390_cmma_reset(void)
|
||||||
{
|
{
|
||||||
if (kvm_enabled()) {
|
if (kvm_enabled()) {
|
||||||
|
|
|
@ -881,7 +881,6 @@ static inline void s390_do_cpu_load_normal(CPUState *cs, run_on_cpu_data arg)
|
||||||
|
|
||||||
/* cpu.c */
|
/* cpu.c */
|
||||||
void s390_crypto_reset(void);
|
void s390_crypto_reset(void);
|
||||||
void s390_set_max_pagesize(uint64_t pagesize, Error **errp);
|
|
||||||
void s390_cmma_reset(void);
|
void s390_cmma_reset(void);
|
||||||
void s390_enable_css_support(S390CPU *cpu);
|
void s390_enable_css_support(S390CPU *cpu);
|
||||||
void s390_do_cpu_set_diag318(CPUState *cs, run_on_cpu_data arg);
|
void s390_do_cpu_set_diag318(CPUState *cs, run_on_cpu_data arg);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue