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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html