Re: [PATCH] Make S390x work in qemu-kvm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux