mirror of https://gitee.com/openkylin/qemu.git
s390x: do not use ram_size global
Use the machine properties instead. Cc: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
82e6905465
commit
382a04afa0
|
@ -112,6 +112,7 @@ static uint64_t bios_translate_addr(void *opaque, uint64_t srcaddr)
|
||||||
|
|
||||||
static void s390_ipl_realize(DeviceState *dev, Error **errp)
|
static void s390_ipl_realize(DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
S390IPLState *ipl = S390_IPL(dev);
|
S390IPLState *ipl = S390_IPL(dev);
|
||||||
uint32_t *ipl_psw;
|
uint32_t *ipl_psw;
|
||||||
uint64_t pentry;
|
uint64_t pentry;
|
||||||
|
@ -126,7 +127,7 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp)
|
||||||
* even if an external kernel has been defined.
|
* even if an external kernel has been defined.
|
||||||
*/
|
*/
|
||||||
if (!ipl->kernel || ipl->enforce_bios) {
|
if (!ipl->kernel || ipl->enforce_bios) {
|
||||||
uint64_t fwbase = (MIN(ram_size, 0x80000000U) - 0x200000) & ~0xffffUL;
|
uint64_t fwbase = (MIN(ms->ram_size, 0x80000000U) - 0x200000) & ~0xffffUL;
|
||||||
|
|
||||||
bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, ipl->firmware);
|
bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, ipl->firmware);
|
||||||
if (bios_filename == NULL) {
|
if (bios_filename == NULL) {
|
||||||
|
@ -163,7 +164,7 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp)
|
||||||
&pentry, NULL,
|
&pentry, NULL,
|
||||||
NULL, NULL, 1, EM_S390, 0, 0);
|
NULL, NULL, 1, EM_S390, 0, 0);
|
||||||
if (kernel_size < 0) {
|
if (kernel_size < 0) {
|
||||||
kernel_size = load_image_targphys(ipl->kernel, 0, ram_size);
|
kernel_size = load_image_targphys(ipl->kernel, 0, ms->ram_size);
|
||||||
if (kernel_size < 0) {
|
if (kernel_size < 0) {
|
||||||
error_setg(errp, "could not load kernel '%s'", ipl->kernel);
|
error_setg(errp, "could not load kernel '%s'", ipl->kernel);
|
||||||
return;
|
return;
|
||||||
|
@ -210,7 +211,7 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp)
|
||||||
initrd_offset += 0x100000;
|
initrd_offset += 0x100000;
|
||||||
}
|
}
|
||||||
initrd_size = load_image_targphys(ipl->initrd, initrd_offset,
|
initrd_size = load_image_targphys(ipl->initrd, initrd_offset,
|
||||||
ram_size - initrd_offset);
|
ms->ram_size - initrd_offset);
|
||||||
if (initrd_size == -1) {
|
if (initrd_size == -1) {
|
||||||
error_setg(errp, "could not load initrd '%s'", ipl->initrd);
|
error_setg(errp, "could not load initrd '%s'", ipl->initrd);
|
||||||
return;
|
return;
|
||||||
|
@ -448,6 +449,7 @@ int s390_ipl_set_loadparm(uint8_t *loadparm)
|
||||||
|
|
||||||
static int load_netboot_image(Error **errp)
|
static int load_netboot_image(Error **errp)
|
||||||
{
|
{
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
S390IPLState *ipl = get_ipl_device();
|
S390IPLState *ipl = get_ipl_device();
|
||||||
char *netboot_filename;
|
char *netboot_filename;
|
||||||
MemoryRegion *sysmem = get_system_memory();
|
MemoryRegion *sysmem = get_system_memory();
|
||||||
|
@ -480,7 +482,7 @@ static int load_netboot_image(Error **errp)
|
||||||
false);
|
false);
|
||||||
|
|
||||||
if (img_size < 0) {
|
if (img_size < 0) {
|
||||||
img_size = load_image_size(netboot_filename, ram_ptr, ram_size);
|
img_size = load_image_size(netboot_filename, ram_ptr, ms->ram_size);
|
||||||
ipl->start_addr = KERN_IMAGE_START;
|
ipl->start_addr = KERN_IMAGE_START;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,8 @@ void qmp_dump_skeys(const char *filename, Error **errp)
|
||||||
{
|
{
|
||||||
S390SKeysState *ss = s390_get_skeys_device();
|
S390SKeysState *ss = s390_get_skeys_device();
|
||||||
S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss);
|
S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss);
|
||||||
const uint64_t total_count = ram_size / TARGET_PAGE_SIZE;
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
|
const uint64_t total_count = ms->ram_size / TARGET_PAGE_SIZE;
|
||||||
uint64_t handled_count = 0, cur_count;
|
uint64_t handled_count = 0, cur_count;
|
||||||
Error *lerr = NULL;
|
Error *lerr = NULL;
|
||||||
vaddr cur_gfn = 0;
|
vaddr cur_gfn = 0;
|
||||||
|
@ -256,7 +257,8 @@ static void s390_storage_keys_save(QEMUFile *f, void *opaque)
|
||||||
{
|
{
|
||||||
S390SKeysState *ss = S390_SKEYS(opaque);
|
S390SKeysState *ss = S390_SKEYS(opaque);
|
||||||
S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss);
|
S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss);
|
||||||
uint64_t pages_left = ram_size / TARGET_PAGE_SIZE;
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
|
uint64_t pages_left = ms->ram_size / TARGET_PAGE_SIZE;
|
||||||
uint64_t read_count, eos = S390_SKEYS_SAVE_FLAG_EOS;
|
uint64_t read_count, eos = S390_SKEYS_SAVE_FLAG_EOS;
|
||||||
vaddr cur_gfn = 0;
|
vaddr cur_gfn = 0;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "hw/boards.h"
|
#include "hw/boards.h"
|
||||||
#include "exec/address-spaces.h"
|
#include "exec/address-spaces.h"
|
||||||
#include "exec/ram_addr.h"
|
#include "exec/ram_addr.h"
|
||||||
|
#include "hw/boards.h"
|
||||||
#include "hw/s390x/s390-virtio-hcall.h"
|
#include "hw/s390x/s390-virtio-hcall.h"
|
||||||
#include "hw/s390x/sclp.h"
|
#include "hw/s390x/sclp.h"
|
||||||
#include "hw/s390x/s390_flic.h"
|
#include "hw/s390x/s390_flic.h"
|
||||||
|
@ -142,8 +143,9 @@ static int virtio_ccw_hcall_notify(const uint64_t *args)
|
||||||
static int virtio_ccw_hcall_early_printk(const uint64_t *args)
|
static int virtio_ccw_hcall_early_printk(const uint64_t *args)
|
||||||
{
|
{
|
||||||
uint64_t mem = args[0];
|
uint64_t mem = args[0];
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
|
|
||||||
if (mem < ram_size) {
|
if (mem < ms->ram_size) {
|
||||||
/* Early printk */
|
/* Early printk */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,9 +156,10 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
|
||||||
!address_space_access_valid(&address_space_memory, raddr,
|
!address_space_access_valid(&address_space_memory, raddr,
|
||||||
TARGET_PAGE_SIZE, access_type,
|
TARGET_PAGE_SIZE, access_type,
|
||||||
MEMTXATTRS_UNSPECIFIED)) {
|
MEMTXATTRS_UNSPECIFIED)) {
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
qemu_log_mask(CPU_LOG_MMU,
|
qemu_log_mask(CPU_LOG_MMU,
|
||||||
"%s: raddr %" PRIx64 " > ram_size %" PRIx64 "\n",
|
"%s: raddr %" PRIx64 " > ram_size %" PRIx64 "\n",
|
||||||
__func__, (uint64_t)raddr, (uint64_t)ram_size);
|
__func__, (uint64_t)raddr, (uint64_t)ms->ram_size);
|
||||||
excp = PGM_ADDRESSING;
|
excp = PGM_ADDRESSING;
|
||||||
tec = 0; /* unused */
|
tec = 0; /* unused */
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
|
|
||||||
#if !defined(CONFIG_USER_ONLY)
|
#if !defined(CONFIG_USER_ONLY)
|
||||||
#include "hw/s390x/storage-keys.h"
|
#include "hw/s390x/storage-keys.h"
|
||||||
|
#include "hw/boards.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2075,12 +2076,13 @@ uint32_t HELPER(tprot)(CPUS390XState *env, uint64_t a1, uint64_t a2)
|
||||||
/* insert storage key extended */
|
/* insert storage key extended */
|
||||||
uint64_t HELPER(iske)(CPUS390XState *env, uint64_t r2)
|
uint64_t HELPER(iske)(CPUS390XState *env, uint64_t r2)
|
||||||
{
|
{
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
static S390SKeysState *ss;
|
static S390SKeysState *ss;
|
||||||
static S390SKeysClass *skeyclass;
|
static S390SKeysClass *skeyclass;
|
||||||
uint64_t addr = wrap_address(env, r2);
|
uint64_t addr = wrap_address(env, r2);
|
||||||
uint8_t key;
|
uint8_t key;
|
||||||
|
|
||||||
if (addr > ram_size) {
|
if (addr > ms->ram_size) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2098,12 +2100,13 @@ uint64_t HELPER(iske)(CPUS390XState *env, uint64_t r2)
|
||||||
/* set storage key extended */
|
/* set storage key extended */
|
||||||
void HELPER(sske)(CPUS390XState *env, uint64_t r1, uint64_t r2)
|
void HELPER(sske)(CPUS390XState *env, uint64_t r1, uint64_t r2)
|
||||||
{
|
{
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
static S390SKeysState *ss;
|
static S390SKeysState *ss;
|
||||||
static S390SKeysClass *skeyclass;
|
static S390SKeysClass *skeyclass;
|
||||||
uint64_t addr = wrap_address(env, r2);
|
uint64_t addr = wrap_address(env, r2);
|
||||||
uint8_t key;
|
uint8_t key;
|
||||||
|
|
||||||
if (addr > ram_size) {
|
if (addr > ms->ram_size) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2124,11 +2127,12 @@ void HELPER(sske)(CPUS390XState *env, uint64_t r1, uint64_t r2)
|
||||||
/* reset reference bit extended */
|
/* reset reference bit extended */
|
||||||
uint32_t HELPER(rrbe)(CPUS390XState *env, uint64_t r2)
|
uint32_t HELPER(rrbe)(CPUS390XState *env, uint64_t r2)
|
||||||
{
|
{
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
static S390SKeysState *ss;
|
static S390SKeysState *ss;
|
||||||
static S390SKeysClass *skeyclass;
|
static S390SKeysClass *skeyclass;
|
||||||
uint8_t re, key;
|
uint8_t re, key;
|
||||||
|
|
||||||
if (r2 > ram_size) {
|
if (r2 > ms->ram_size) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "hw/hw.h"
|
#include "hw/hw.h"
|
||||||
#include "hw/s390x/storage-keys.h"
|
#include "hw/s390x/storage-keys.h"
|
||||||
|
#include "hw/boards.h"
|
||||||
|
|
||||||
/* Fetch/store bits in the translation exception code: */
|
/* Fetch/store bits in the translation exception code: */
|
||||||
#define FS_READ 0x800
|
#define FS_READ 0x800
|
||||||
|
@ -292,10 +293,11 @@ static void mmu_handle_skey(target_ulong addr, int rw, int *flags)
|
||||||
{
|
{
|
||||||
static S390SKeysClass *skeyclass;
|
static S390SKeysClass *skeyclass;
|
||||||
static S390SKeysState *ss;
|
static S390SKeysState *ss;
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
uint8_t key;
|
uint8_t key;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (unlikely(addr >= ram_size)) {
|
if (unlikely(addr >= ms->ram_size)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue