From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1765020AbdEXQkX (ORCPT ); Wed, 24 May 2017 12:40:23 -0400 Received: from mx2.suse.de ([195.135.220.15]:47009 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1763946AbdEXQkE (ORCPT ); Wed, 24 May 2017 12:40:04 -0400 Subject: Re: [PATCH 05/10] paravirt: add new PARAVIRT_FULL config item To: Boris Ostrovsky , linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, x86@kernel.org, virtualization@lists.linux-foundation.org Cc: jeremy@goop.org, chrisw@sous-sol.org, akataria@vmware.com, rusty@rustcorp.com.au, hpa@zytor.com, tglx@linutronix.de, mingo@redhat.com References: <20170519154746.29389-1-jgross@suse.com> <20170519154746.29389-6-jgross@suse.com> <260e7bc9-8cba-bc57-9fe8-0e437562229a@oracle.com> From: Juergen Gross Message-ID: <61a3d1ac-8fd2-9f2c-f4b3-b183b62faf1f@suse.com> Date: Wed, 24 May 2017 18:39:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 MIME-Version: 1.0 In-Reply-To: <260e7bc9-8cba-bc57-9fe8-0e437562229a@oracle.com> Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 24/05/17 17:40, Boris Ostrovsky wrote: > On 05/19/2017 11:47 AM, Juergen Gross wrote: >> Add a new config item PARAVIRT_FULL. It will be used to guard the >> pv_*_ops functions used by fully paravirtualized guests (Xen pv-guests >> and lguest) only. >> >> Kernels not meant to support those guest types will be able to use many >> operations without paravirt abstraction while still supporting all the >> other paravirt features. >> >> For now just add the new Kconfig option and select it for XEN_PV and >> LGUEST_GUEST. Add paravirt_full.c, paravirt_full.h and >> paravirt_types_full.h which will contain the necessary implementation >> parts of the pv guest specific paravirt functions. > > Is it not possible to just 'ifdef CONFIG_PARAVIT_FULL' the (ir)relevant > parts of paravirt.[ch] and paravirt_types.c? Sure it is possible. The question is whether we want it. This would be a lot of ifdeffery. The main reason I did it this way was to have a clear split between the two levels of paravirtualization. A kernel built without pv-full would not need to include paravirt[_types]_full.h saving some compilation time (there are lots of source files which are including the paravirt header now). > Separating structures and files into pv and pvfull seems somewhat > arbitrary (.flush_tlb_others in patch 8 being a good example of one type > of guest deciding to use something that normally would be considered > part of a pvfull-type structure). I was thinking of using that for Xen HVM-guests, too. This should speed up multi-vcpu guests quite a bit. In case others think doing it via idefs only would be better I'm ready to change the patches accordingly. Juergen