From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH 4/4] kvm: i386: Add classic PCI device assignment Date: Mon, 27 Aug 2012 14:15:21 +0200 Message-ID: <503B64D9.4000708@siemens.com> References: <825e653c9cfe9d8e26185917cbe1f1dd7ae299e2.1346048917.git.jan.kiszka@web.de> <503B62F4.9070500@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" , Alexey Kardashevskiy , Marcelo Tosatti , qemu-devel@nongnu.org, Alex Williamson , qemu-ppc , Avi Kivity To: =?ISO-8859-15?Q?Andreas_F=E4rber?= Return-path: In-Reply-To: <503B62F4.9070500@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org On 2012-08-27 14:07, Andreas F=E4rber wrote: > Hi, >=20 > Am 27.08.2012 08:28, schrieb Jan Kiszka: >> From: Jan Kiszka >> >> 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 = is >> expected to remain relevant for another couple of years until kernels >> without full-features and performance-wise equivalent VFIO support are >> obsolete. >> >> 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 alrea= dy >> doing for MSI-X. This should improve the correctness and clean up the >> code from duplicate logic. >> >> 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 modi= fy it >> + * under the terms and conditions of the GNU General Public License, >> + * version 2, as published by the Free Software Foundation. >=20 > 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... The history is documented in qemu-kvm. I personally don't see it will pay off going through this, but someone else may, and nothing will prevent trying this at least. I can leave a comment. BTW, VFIO will be GPLv2 only as well. If I understood Alex correctly, it is too much derived from this code. IOW: There is probably no PCI assignment without this restriction in the foreseeable future. >=20 >> + * >> + * This program is distributed in the hope it will be useful, but WIT= HOUT >> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY= or >> + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Lice= nse 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. >=20 > (Expect the usual GNU address reminder here.) Will fix. >=20 >> + * >> + * >> + * 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" >=20 >> +#include "kvm_i386.h" >=20 > Am I correct to understand we compile this only for i386 / x86_64? This is correct. > (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. You mean in the header of pci-assign.c? Can do. Jan --=20 Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59038) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T5yEM-0001MQ-68 for qemu-devel@nongnu.org; Mon, 27 Aug 2012 08:15:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T5yE3-0002kM-9X for qemu-devel@nongnu.org; Mon, 27 Aug 2012 08:15:46 -0400 Message-ID: <503B64D9.4000708@siemens.com> Date: Mon, 27 Aug 2012 14:15:21 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <825e653c9cfe9d8e26185917cbe1f1dd7ae299e2.1346048917.git.jan.kiszka@web.de> <503B62F4.9070500@suse.de> In-Reply-To: <503B62F4.9070500@suse.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: =?ISO-8859-15?Q?Andreas_F=E4rber?= Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" , Alexey Kardashevskiy , Marcelo Tosatti , qemu-devel@nongnu.org, Alex Williamson , qemu-ppc , Avi Kivity On 2012-08-27 14:07, Andreas F=E4rber wrote: > Hi, >=20 > Am 27.08.2012 08:28, schrieb Jan Kiszka: >> From: Jan Kiszka >> >> 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 = is >> expected to remain relevant for another couple of years until kernels >> without full-features and performance-wise equivalent VFIO support are >> obsolete. >> >> 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 alrea= dy >> doing for MSI-X. This should improve the correctness and clean up the >> code from duplicate logic. >> >> 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 modi= fy it >> + * under the terms and conditions of the GNU General Public License, >> + * version 2, as published by the Free Software Foundation. >=20 > 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... The history is documented in qemu-kvm. I personally don't see it will pay off going through this, but someone else may, and nothing will prevent trying this at least. I can leave a comment. BTW, VFIO will be GPLv2 only as well. If I understood Alex correctly, it is too much derived from this code. IOW: There is probably no PCI assignment without this restriction in the foreseeable future. >=20 >> + * >> + * This program is distributed in the hope it will be useful, but WIT= HOUT >> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY= or >> + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Lice= nse 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. >=20 > (Expect the usual GNU address reminder here.) Will fix. >=20 >> + * >> + * >> + * 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" >=20 >> +#include "kvm_i386.h" >=20 > Am I correct to understand we compile this only for i386 / x86_64? This is correct. > (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. You mean in the header of pci-assign.c? Can do. Jan --=20 Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux