From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: [PATCH RFC 0/3] decouple vcpu index from apic id Date: Thu, 21 May 2009 15:56:43 +0300 Message-ID: <1242910606-29286-1-git-send-email-gleb@redhat.com> Cc: kvm@vger.kernel.org To: avi@redhat.com Return-path: Received: from mx2.redhat.com ([66.187.237.31]:36929 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750918AbZEUM4r (ORCPT ); Thu, 21 May 2009 08:56:47 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n4LCumSP005862 for ; Thu, 21 May 2009 08:56:48 -0400 Sender: kvm-owner@vger.kernel.org List-ID: Currently vcpu_id is used as an index into vcpus array and as apic id on x86. This is incorrect since apic ids not have to be continuous (they can also encode cpu hierarchy information) and may have values bigger then vcpu array in case of x2apic. This series decouples vcpu_id and apic_id. apic_id is arbitrary 32bit value that is passed to vcpu_create ioctls. vcpu_id is kvm internal thing (that may be totally removed from x86 code). The code adds one assumption though: boot cpu is created first. Gleb Natapov (3): Introduce kvm_vcpu_is_bsp() function. Use pointer to vcpu instead of vcpu_id in timer code. Break dependency between vcpu index in vcpus array and vcpu's apic id. arch/ia64/kvm/kvm-ia64.c | 27 +++++++++++++++++---- arch/ia64/kvm/vcpu.c | 2 +- arch/powerpc/kvm/booke.c | 20 +++++++++++++++- arch/powerpc/kvm/powerpc.c | 7 ++++- arch/s390/kvm/kvm-s390.c | 24 ++++++++++++++++-- arch/x86/include/asm/kvm_host.h | 1 + arch/x86/kvm/i8254.c | 6 ++-- arch/x86/kvm/kvm_timer.h | 2 +- arch/x86/kvm/lapic.c | 13 +++++---- arch/x86/kvm/svm.c | 4 +- arch/x86/kvm/timer.c | 2 +- arch/x86/kvm/vmx.c | 6 ++-- arch/x86/kvm/x86.c | 49 ++++++++++++++++++++++++++++++++++++-- include/linux/kvm_host.h | 12 ++++++++- virt/kvm/kvm_main.c | 25 +------------------ 15 files changed, 146 insertions(+), 54 deletions(-)