On 10.05.2011, at 14:49, Christian Borntraeger wrote: > Alex, > > the s390 memory detection has a 16bit field that specifies the amount of > increments. This patch adopts the memory size to always fit into that > scheme. This also fixes virtio detection for these guests, since the > descriptor page is located after the main memory. > > Signed-off-by: Christian Borntraeger <borntrae...@de.ibm.com> > > --- a/target-s390x/op_helper.c > +++ b/target-s390x/op_helper.c > @@ -2361,6 +2361,7 @@ static void ext_interrupt(CPUState *env, int type, > uint32_t param, > int sclp_service_call(CPUState *env, uint32_t sccb, uint64_t code) > { > int r = 0; > + int shift = 0; > > #ifdef DEBUG_HELPER > printf("sclp(0x%x, 0x%" PRIx64 ")\n", sccb, code); > @@ -2375,8 +2376,10 @@ int sclp_service_call(CPUState *env, uint32_t sccb, > uint64_t code) > switch(code) { > case SCLP_CMDW_READ_SCP_INFO: > case SCLP_CMDW_READ_SCP_INFO_FORCED: > - stw_phys(sccb + SCP_MEM_CODE, ram_size >> 20); > - stb_phys(sccb + SCP_INCREMENT, 1); > + while ((ram_size >> (20 + shift)) > 65535) > + shift++;
Please run scripts/checkpatch.pl on your patch. Alex