All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Alexander Graf <agraf@suse.de>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH] Make S390x work in qemu-kvm
Date: Tue, 15 Dec 2009 14:30:25 +0200	[thread overview]
Message-ID: <4B278161.7080600@redhat.com> (raw)
In-Reply-To: <4B276F4A.805@suse.de>

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?

>>>    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.

>>>    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.

-- 
error compiling committee.c: too many arguments to function


  reply	other threads:[~2009-12-15 12:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-08 15:35 [PATCH] Make S390x work in qemu-kvm Alexander Graf
2009-12-15 10:42 ` Avi Kivity
2009-12-15 11:13   ` Alexander Graf
2009-12-15 12:30     ` Avi Kivity [this message]
2009-12-15 13:03       ` Alexander Graf
2009-12-15 13:07         ` Avi Kivity

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B278161.7080600@redhat.com \
    --to=avi@redhat.com \
    --cc=agraf@suse.de \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.