Avi Kivity wrote: > On 12/15/2009 01:13 PM, Alexander Graf wrote: >> >>> This should be CONFIG_PCI or CONFIG_PCI_MSI. Also, better to hack it >>> at the Makefile level. >>> >> That's what I did at first in a hacky way. To be honest, the new >> makefile structure scares me a bit, so I'm not sure I'll easily figure >> out how to do that properly :). >> > > I'm sure Juan will be glad to help. > >>>> + >>>> +#ifndef KVM_UPSTREAM >>>> + kvm_arch_load_regs(env); >>>> +#endif >>>> } >>>> >>>> >>> Why isn't cpu_synchronize_state() suitable? >>> >> Because the KVM fd's are not available yet. >> > > Then kvm_arch_load_regs() will fail as well, no? Eeeh - there was a reason this didn't fail :-). I don't remember. > >>>> static int get_free_slot(kvm_context_t kvm) >>>> { >>>> - int i; >>>> + int i = 0; >>>> int tss_ext; >>>> >>>> #if defined(KVM_CAP_SET_TSS_ADDR)&& !defined(__s390__) >>>> @@ -171,10 +171,12 @@ static int get_free_slot(kvm_context_t kvm) >>>> * slot 0 to hold the extended memory, as the vmx will use the >>>> last 3 >>>> * pages of this slot. >>>> */ >>>> +#ifndef __s390x__ >>>> if (tss_ext> 0) >>>> i = 0; >>>> else >>>> i = 1; >>>> +#endif >>>> >>>> >>> That should conditioned on x86, not s390. While you're at it, drop >>> the i = 0 assignment please. >>> >> So it's useless for IA64 as well? >> > > Yes. > >>>> for (; i< KVM_MAX_NUM_MEM_REGIONS; ++i) >>>> if (!slots[i].len) >>>> @@ -450,6 +452,14 @@ static void kvm_create_vcpu(CPUState *env, int >>>> id) >>>> env->kvm_fd = r; >>>> env->kvm_state = kvm_state; >>>> >>>> +#ifdef __s390x__ >>>> + r = kvm_vcpu_ioctl(env, KVM_S390_INITIAL_RESET, 0); >>>> + if (r< 0) { >>>> + fprintf(stderr, "kvm_s390_initial_reset: %m\n"); >>>> + exit(1); >>>> + } >>>> +#endif >>>> >>>> >>> Isn't there an arch hook for this? >>> >>> TARGET_S390 or similar. >>> >> Yes, there is. I figured this is just a temporary hack, so who cares >> :-). >> > > The whole of qemu-kvm.c is a temporary hack. No reason to make it > uglier than it needs to be. > >>>> break; >>>> -#if defined(__s390__) >>>> - case KVM_EXIT_S390_SIEIC: >>>> - r = kvm_s390_handle_intercept(kvm, env, run); >>>> - break; >>>> - case KVM_EXIT_S390_RESET: >>>> - r = kvm_s390_handle_reset(kvm, env, run); >>>> - break; >>>> -#endif >>>> >>>> >>> Ditto. >>> >> Ditto what? This is code removal. >> > > Um, yes. > >>>> +#ifdef __s390x__ >>>> +static >>>> +#endif >>>> >>>> >>> Lovely. Why? >>> >> Because it collided with the init function provided by >> target-s390x/kvm.c. >> > > I'd prefer a separate rename then. Rename in kvm.c? > >>>> int kvm_arch_init_vcpu(CPUState *env) >>>> { >>>> @@ -86,12 +88,27 @@ int kvm_arch_init_vcpu(CPUState *env) >>>> return ret; >>>> } >>>> >>>> +#ifdef KVM_UPSTREAM >>>> void kvm_arch_reset_vcpu(CPUState *env) >>>> +#else >>>> +void kvm_arch_cpu_reset(CPUState *env) >>>> +#endif >>>> >>>> >>> :( >>> >> Yeah, feel like getting the naming a bit closer? :) >> > > A renaming patch would be welcome. > >>> I thought we no longer include libkvm.h! >>> >>> >> Some file failed to build without it. IIRC because PAGE_* was not >> defined. >> > > There's a TARGET_PAGE_SIZE or something, we can use that instead. > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html