From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= Subject: Re: [Qemu-devel] [PATCH 4/4] kvm: i386: Add classic PCI device assignment Date: Mon, 27 Aug 2012 14:07:16 +0200 Message-ID: <503B62F4.9070500@suse.de> References: <825e653c9cfe9d8e26185917cbe1f1dd7ae299e2.1346048917.git.jan.kiszka@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Avi Kivity , Marcelo Tosatti , Alex Williamson , qemu-devel@nongnu.org, kvm@vger.kernel.org, "Michael S. Tsirkin" , qemu-ppc , Alexey Kardashevskiy To: Jan Kiszka Return-path: Received: from cantor2.suse.de ([195.135.220.15]:52956 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750948Ab2H0MHV (ORCPT ); Mon, 27 Aug 2012 08:07:21 -0400 In-Reply-To: <825e653c9cfe9d8e26185917cbe1f1dd7ae299e2.1346048917.git.jan.kiszka@web.de> Sender: kvm-owner@vger.kernel.org List-ID: Hi, Am 27.08.2012 08:28, schrieb Jan Kiszka: > From: Jan Kiszka >=20 > This adds PCI device assignment for i386 targets using the classic KV= M > interfaces. This version is 100% identical to what is being maintaine= d > in qemu-kvm for several years and is supported by libvirt as well. It= is > expected to remain relevant for another couple of years until kernels > without full-features and performance-wise equivalent VFIO support ar= e > obsolete. >=20 > A refactoring to-do that should be done in-tree is to model MSI and > MSI-X support via the generic PCI layer, similar to what VFIO is alre= ady > doing for MSI-X. This should improve the correctness and clean up the > code from duplicate logic. >=20 > Signed-off-by: Jan Kiszka > --- > hw/kvm/Makefile.objs | 2 +- > hw/kvm/pci-assign.c | 1929 ++++++++++++++++++++++++++++++++++++++++= ++++++++++ > 2 files changed, 1930 insertions(+), 1 deletions(-) > create mode 100644 hw/kvm/pci-assign.c [...] > diff --git a/hw/kvm/pci-assign.c b/hw/kvm/pci-assign.c > new file mode 100644 > index 0000000..9cce02c > --- /dev/null > +++ b/hw/kvm/pci-assign.c > @@ -0,0 +1,1929 @@ > +/* > + * Copyright (c) 2007, Neocleus Corporation. > + * > + * This program is free software; you can redistribute it and/or mod= ify it > + * under the terms and conditions of the GNU General Public License, > + * version 2, as published by the Free Software Foundation. The downside of accepting this into qemu.git is that it gets us a huge blob of GPLv2-only code without history of contributors for GPLv2+ relicensing... > + * > + * This program is distributed in the hope it will be useful, but WI= THOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILIT= Y or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Lic= ense for > + * more details. > + * > + * You should have received a copy of the GNU General Public License= along with > + * this program; if not, write to the Free Software Foundation, Inc.= , 59 Temple > + * Place - Suite 330, Boston, MA 02111-1307 USA. (Expect the usual GNU address reminder here.) > + * > + * > + * Assign a PCI device from the host to a guest VM. > + * > + * Adapted for KVM by Qumranet. > + * > + * Copyright (c) 2007, Neocleus, Alex Novik (alex@neocleus.com) > + * Copyright (c) 2007, Neocleus, Guy Zana (guy@neocleus.com) > + * Copyright (C) 2008, Qumranet, Amit Shah (amit.shah@qumranet.com) > + * Copyright (C) 2008, Red Hat, Amit Shah (amit.shah@redhat.com) > + * Copyright (C) 2008, IBM, Muli Ben-Yehuda (muli@il.ibm.com) > + */ > +#include > +#include > +#include > +#include > +#include > +#include > +#include "hw/hw.h" > +#include "hw/pc.h" > +#include "qemu-error.h" > +#include "console.h" > +#include "hw/loader.h" > +#include "monitor.h" > +#include "range.h" > +#include "sysemu.h" > +#include "hw/pci.h" > +#include "hw/msi.h" > +#include "kvm_i386.h" Am I correct to understand we compile this only for i386 / x86_64? (apic.o in kvm/Makefile.objs hints in that direction) You may want to update the description in the comment above accordingly, also mentionin= g that this is some deprecated backwards-compatibility thing. Regards, Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrn= berg From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T5y6F-0007SN-JL for qemu-devel@nongnu.org; Mon, 27 Aug 2012 08:07:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T5y6D-00009j-Pa for qemu-devel@nongnu.org; Mon, 27 Aug 2012 08:07:23 -0400 Message-ID: <503B62F4.9070500@suse.de> Date: Mon, 27 Aug 2012 14:07:16 +0200 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <825e653c9cfe9d8e26185917cbe1f1dd7ae299e2.1346048917.git.jan.kiszka@web.de> In-Reply-To: <825e653c9cfe9d8e26185917cbe1f1dd7ae299e2.1346048917.git.jan.kiszka@web.de> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 4/4] kvm: i386: Add classic PCI device assignment List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" , Alexey Kardashevskiy , Marcelo Tosatti , qemu-devel@nongnu.org, Alex Williamson , qemu-ppc , Avi Kivity Hi, Am 27.08.2012 08:28, schrieb Jan Kiszka: > From: Jan Kiszka >=20 > This adds PCI device assignment for i386 targets using the classic KVM > interfaces. This version is 100% identical to what is being maintained > in qemu-kvm for several years and is supported by libvirt as well. It i= s > expected to remain relevant for another couple of years until kernels > without full-features and performance-wise equivalent VFIO support are > obsolete. >=20 > A refactoring to-do that should be done in-tree is to model MSI and > MSI-X support via the generic PCI layer, similar to what VFIO is alread= y > doing for MSI-X. This should improve the correctness and clean up the > code from duplicate logic. >=20 > Signed-off-by: Jan Kiszka > --- > hw/kvm/Makefile.objs | 2 +- > hw/kvm/pci-assign.c | 1929 ++++++++++++++++++++++++++++++++++++++++++= ++++++++ > 2 files changed, 1930 insertions(+), 1 deletions(-) > create mode 100644 hw/kvm/pci-assign.c [...] > diff --git a/hw/kvm/pci-assign.c b/hw/kvm/pci-assign.c > new file mode 100644 > index 0000000..9cce02c > --- /dev/null > +++ b/hw/kvm/pci-assign.c > @@ -0,0 +1,1929 @@ > +/* > + * Copyright (c) 2007, Neocleus Corporation. > + * > + * This program is free software; you can redistribute it and/or modif= y it > + * under the terms and conditions of the GNU General Public License, > + * version 2, as published by the Free Software Foundation. The downside of accepting this into qemu.git is that it gets us a huge blob of GPLv2-only code without history of contributors for GPLv2+ relicensing... > + * > + * This program is distributed in the hope it will be useful, but WITH= OUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY = or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licen= se for > + * more details. > + * > + * You should have received a copy of the GNU General Public License a= long with > + * this program; if not, write to the Free Software Foundation, Inc., = 59 Temple > + * Place - Suite 330, Boston, MA 02111-1307 USA. (Expect the usual GNU address reminder here.) > + * > + * > + * Assign a PCI device from the host to a guest VM. > + * > + * Adapted for KVM by Qumranet. > + * > + * Copyright (c) 2007, Neocleus, Alex Novik (alex@neocleus.com) > + * Copyright (c) 2007, Neocleus, Guy Zana (guy@neocleus.com) > + * Copyright (C) 2008, Qumranet, Amit Shah (amit.shah@qumranet.com) > + * Copyright (C) 2008, Red Hat, Amit Shah (amit.shah@redhat.com) > + * Copyright (C) 2008, IBM, Muli Ben-Yehuda (muli@il.ibm.com) > + */ > +#include > +#include > +#include > +#include > +#include > +#include > +#include "hw/hw.h" > +#include "hw/pc.h" > +#include "qemu-error.h" > +#include "console.h" > +#include "hw/loader.h" > +#include "monitor.h" > +#include "range.h" > +#include "sysemu.h" > +#include "hw/pci.h" > +#include "hw/msi.h" > +#include "kvm_i386.h" Am I correct to understand we compile this only for i386 / x86_64? (apic.o in kvm/Makefile.objs hints in that direction) You may want to update the description in the comment above accordingly, also mentioning that this is some deprecated backwards-compatibility thing. Regards, Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg