From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755091AbdCBSRc (ORCPT ); Thu, 2 Mar 2017 13:17:32 -0500 Received: from mx1.redhat.com ([209.132.183.28]:54336 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754910AbdCBSRS (ORCPT ); Thu, 2 Mar 2017 13:17:18 -0500 From: Vitaly Kuznetsov To: xen-devel@lists.xenproject.org Cc: x86@kernel.org, linux-kernel@vger.kernel.org, Boris Ostrovsky , Juergen Gross , Andrew Jones Subject: [PATCH v2 00/21] x86/xen: untangle PV and PVHVM guest support code Date: Thu, 2 Mar 2017 18:53:36 +0100 Message-Id: <20170302175357.8222-1-vkuznets@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 02 Mar 2017 17:54:00 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Changes since v1: - Patches 1,2 and 3 were split and reordered to avoid adding temporary #ifdefs [Juergen Gross] - Juergen's R-b added to what is now patches 14 and 15 (patches 4 and 5 in v1). Due to re-ordering there are some tiny diffrences but I opted for keeping the tag. Some patches are known to produce checkpatch.pl WARNINGS and a couple of ERRORs, I fixed a few (mostly in _hvm* code I split) and I refrained from fixing the rest to make it easier to review. I think that we may leave PV code as it is as sooner or later it will go away. Original description: I have a long-standing idea to separate PV and PVHVM code in kernel and introduce Kconfig options to make it possible to enable the required parts only breaking the current 'all or nothing' approach. Motivation: - Xen related x86 code in kernel is rather big and it is unclear which parts of it are required for PV, for HVM or for both. With PVH coming into picture is becomes even more tangled. It makes it hard to understand/audit the code. - In some case we may want to avoid bloating kernel by supporting Xen guests we don't need. In particular, 90% of the code in arch/x86/xen/ is required to support PV guests and one may require PVHVM support only. - PV guests are supposed to go away one day and such code separation would help us to get ready. This series adds XEN_PV Kconfig option and makes it possible to build PV-only and PVHVM-only kernels. It also makes it possible to disable Dom0 support. Some patches are rather big but this is mostly just moving code around, no functional changes intended. I smoke tested it with PV-only and PVHVM-only builds, booted and did save/restore test. I also tried the newly introduced PVHv2 guest, it even worked! Vitaly Kuznetsov (21): x86/xen: separate PV and HVM hypervisors x86/xen: globalize have_vcpu_info_placement x86/xen: add CONFIG_XEN_PV to Kconfig x86/xen: split off enlighten_pvh.c x86/xen: split off enlighten_hvm.c x86/xen: split off enlighten_pv.c x86/xen: split xen_smp_intr_init()/xen_smp_intr_free() x86/xen: split xen_smp_prepare_boot_cpu() x86/xen: split xen_cpu_die() x86/xen: split off smp_hvm.c x86/xen: split off smp_pv.c x86/xen: split off mmu_hvm.c x86/xen: split off mmu_pv.c x86/xen: split suspend.c for PV and PVHVM guests x86/xen: put setup.c, pmu.c and apic.c under CONFIG_XEN_PV x86/xen: define startup_xen for XEN PV only x86/xen: create stubs for HVM-only builds in page.h xen/balloon: decorate PV-only parts with #ifdef CONFIG_XEN_PV xen: create xen_create/destroy_contiguous_region() stubs for PVHVM only builds x86/xen: enable PVHVM-only builds x86/xen: rename some PV-only functions in smp_pv.c arch/x86/include/asm/hypervisor.h | 3 +- arch/x86/include/asm/xen/page.h | 25 + arch/x86/kernel/cpu/hypervisor.c | 7 +- arch/x86/kernel/process_64.c | 2 +- arch/x86/xen/Kconfig | 33 +- arch/x86/xen/Makefile | 16 +- arch/x86/xen/enlighten.c | 1904 +------------------------ arch/x86/xen/enlighten_hvm.c | 210 +++ arch/x86/xen/enlighten_pv.c | 1561 +++++++++++++++++++++ arch/x86/xen/enlighten_pvh.c | 114 ++ arch/x86/xen/mmu.c | 2776 +------------------------------------ arch/x86/xen/mmu_hvm.c | 79 ++ arch/x86/xen/mmu_pv.c | 2635 +++++++++++++++++++++++++++++++++++ arch/x86/xen/pmu.h | 5 + arch/x86/xen/smp.c | 516 +------ arch/x86/xen/smp.h | 16 + arch/x86/xen/smp_hvm.c | 58 + arch/x86/xen/smp_pv.c | 499 +++++++ arch/x86/xen/suspend.c | 54 - arch/x86/xen/suspend_hvm.c | 22 + arch/x86/xen/suspend_pv.c | 44 + arch/x86/xen/xen-head.S | 4 + arch/x86/xen/xen-ops.h | 21 + drivers/xen/balloon.c | 30 +- include/xen/xen-ops.h | 14 + 25 files changed, 5461 insertions(+), 5187 deletions(-) create mode 100644 arch/x86/xen/enlighten_hvm.c create mode 100644 arch/x86/xen/enlighten_pv.c create mode 100644 arch/x86/xen/enlighten_pvh.c create mode 100644 arch/x86/xen/mmu_hvm.c create mode 100644 arch/x86/xen/mmu_pv.c create mode 100644 arch/x86/xen/smp_hvm.c create mode 100644 arch/x86/xen/smp_pv.c create mode 100644 arch/x86/xen/suspend_hvm.c create mode 100644 arch/x86/xen/suspend_pv.c -- 2.9.3 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vitaly Kuznetsov Subject: [PATCH v2 00/21] x86/xen: untangle PV and PVHVM guest support code Date: Thu, 2 Mar 2017 18:53:36 +0100 Message-ID: <20170302175357.8222-1-vkuznets@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cjUvS-0003LY-QV for xen-devel@lists.xenproject.org; Thu, 02 Mar 2017 17:54:02 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Boris Ostrovsky , x86@kernel.org, Andrew Jones , linux-kernel@vger.kernel.org List-Id: xen-devel@lists.xenproject.org Q2hhbmdlcyBzaW5jZSB2MToKLSBQYXRjaGVzIDEsMiBhbmQgMyB3ZXJlIHNwbGl0IGFuZCByZW9y ZGVyZWQgdG8gYXZvaWQgYWRkaW5nIHRlbXBvcmFyeQogICNpZmRlZnMgW0p1ZXJnZW4gR3Jvc3Nd Ci0gSnVlcmdlbidzIFItYiBhZGRlZCB0byB3aGF0IGlzIG5vdyBwYXRjaGVzIDE0IGFuZCAxNSAo cGF0Y2hlcyA0IGFuZCA1CiAgaW4gdjEpLiBEdWUgdG8gcmUtb3JkZXJpbmcgdGhlcmUgYXJlIHNv bWUgdGlueSBkaWZmcmVuY2VzIGJ1dCBJIG9wdGVkCiAgZm9yIGtlZXBpbmcgdGhlIHRhZy4KClNv bWUgcGF0Y2hlcyBhcmUga25vd24gdG8gcHJvZHVjZSBjaGVja3BhdGNoLnBsIFdBUk5JTkdTIGFu ZCBhIGNvdXBsZSBvZgpFUlJPUnMsIEkgZml4ZWQgYSBmZXcgKG1vc3RseSBpbiBfaHZtKiBjb2Rl IEkgc3BsaXQpIGFuZCBJIHJlZnJhaW5lZCBmcm9tCmZpeGluZyB0aGUgcmVzdCB0byBtYWtlIGl0 IGVhc2llciB0byByZXZpZXcuIEkgdGhpbmsgdGhhdCB3ZSBtYXkgbGVhdmUgUFYKY29kZSBhcyBp dCBpcyBhcyBzb29uZXIgb3IgbGF0ZXIgaXQgd2lsbCBnbyBhd2F5LgoKT3JpZ2luYWwgZGVzY3Jp cHRpb246CgpJIGhhdmUgYSBsb25nLXN0YW5kaW5nIGlkZWEgdG8gc2VwYXJhdGUgUFYgYW5kIFBW SFZNIGNvZGUgaW4ga2VybmVsIGFuZCAKaW50cm9kdWNlIEtjb25maWcgb3B0aW9ucyB0byBtYWtl IGl0IHBvc3NpYmxlIHRvIGVuYWJsZSB0aGUgcmVxdWlyZWQKcGFydHMgb25seSBicmVha2luZyB0 aGUgY3VycmVudCAnYWxsIG9yIG5vdGhpbmcnIGFwcHJvYWNoLgoKTW90aXZhdGlvbjoKLSBYZW4g cmVsYXRlZCB4ODYgY29kZSBpbiBrZXJuZWwgaXMgcmF0aGVyIGJpZyBhbmQgaXQgaXMgdW5jbGVh ciB3aGljaAogIHBhcnRzIG9mIGl0IGFyZSByZXF1aXJlZCBmb3IgUFYsIGZvciBIVk0gb3IgZm9y IGJvdGguIFdpdGggUFZIIGNvbWluZwogIGludG8gcGljdHVyZSBpcyBiZWNvbWVzIGV2ZW4gbW9y ZSB0YW5nbGVkLiBJdCBtYWtlcyBpdCBoYXJkIHRvCiAgdW5kZXJzdGFuZC9hdWRpdCB0aGUgY29k ZS4KCi0gSW4gc29tZSBjYXNlIHdlIG1heSB3YW50IHRvIGF2b2lkIGJsb2F0aW5nIGtlcm5lbCBi eSBzdXBwb3J0aW5nIFhlbgogIGd1ZXN0cyB3ZSBkb24ndCBuZWVkLiBJbiBwYXJ0aWN1bGFyLCA5 MCUgb2YgdGhlIGNvZGUgaW4gYXJjaC94ODYveGVuLyBpcwogIHJlcXVpcmVkIHRvIHN1cHBvcnQg UFYgZ3Vlc3RzIGFuZCBvbmUgbWF5IHJlcXVpcmUgUFZIVk0gc3VwcG9ydCBvbmx5LgoKLSBQViBn dWVzdHMgYXJlIHN1cHBvc2VkIHRvIGdvIGF3YXkgb25lIGRheSBhbmQgc3VjaCBjb2RlIHNlcGFy YXRpb24gd291bGQKICBoZWxwIHVzIHRvIGdldCByZWFkeS4KClRoaXMgc2VyaWVzIGFkZHMgWEVO X1BWIEtjb25maWcgb3B0aW9uIGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBidWlsZCBQVi1vbmx5 CmFuZCBQVkhWTS1vbmx5IGtlcm5lbHMuIEl0IGFsc28gbWFrZXMgaXQgcG9zc2libGUgdG8gZGlz YWJsZSBEb20wIHN1cHBvcnQuCgpTb21lIHBhdGNoZXMgYXJlIHJhdGhlciBiaWcgYnV0IHRoaXMg aXMgbW9zdGx5IGp1c3QgbW92aW5nIGNvZGUgYXJvdW5kLCBubwpmdW5jdGlvbmFsIGNoYW5nZXMg aW50ZW5kZWQuIEkgc21va2UgdGVzdGVkIGl0IHdpdGggUFYtb25seSBhbmQgUFZIVk0tb25seQpi dWlsZHMsIGJvb3RlZCBhbmQgZGlkIHNhdmUvcmVzdG9yZSB0ZXN0LiBJIGFsc28gdHJpZWQgdGhl IG5ld2x5IGludHJvZHVjZWQKUFZIdjIgZ3Vlc3QsIGl0IGV2ZW4gd29ya2VkIQoKVml0YWx5IEt1 em5ldHNvdiAoMjEpOgogIHg4Ni94ZW46IHNlcGFyYXRlIFBWIGFuZCBIVk0gaHlwZXJ2aXNvcnMK ICB4ODYveGVuOiBnbG9iYWxpemUgaGF2ZV92Y3B1X2luZm9fcGxhY2VtZW50CiAgeDg2L3hlbjog YWRkIENPTkZJR19YRU5fUFYgdG8gS2NvbmZpZwogIHg4Ni94ZW46IHNwbGl0IG9mZiBlbmxpZ2h0 ZW5fcHZoLmMKICB4ODYveGVuOiBzcGxpdCBvZmYgZW5saWdodGVuX2h2bS5jCiAgeDg2L3hlbjog c3BsaXQgb2ZmIGVubGlnaHRlbl9wdi5jCiAgeDg2L3hlbjogc3BsaXQgeGVuX3NtcF9pbnRyX2lu aXQoKS94ZW5fc21wX2ludHJfZnJlZSgpCiAgeDg2L3hlbjogc3BsaXQgeGVuX3NtcF9wcmVwYXJl X2Jvb3RfY3B1KCkKICB4ODYveGVuOiBzcGxpdCB4ZW5fY3B1X2RpZSgpCiAgeDg2L3hlbjogc3Bs aXQgb2ZmIHNtcF9odm0uYwogIHg4Ni94ZW46IHNwbGl0IG9mZiBzbXBfcHYuYwogIHg4Ni94ZW46 IHNwbGl0IG9mZiBtbXVfaHZtLmMKICB4ODYveGVuOiBzcGxpdCBvZmYgbW11X3B2LmMKICB4ODYv eGVuOiBzcGxpdCBzdXNwZW5kLmMgZm9yIFBWIGFuZCBQVkhWTSBndWVzdHMKICB4ODYveGVuOiBw dXQgc2V0dXAuYywgcG11LmMgYW5kIGFwaWMuYyB1bmRlciBDT05GSUdfWEVOX1BWCiAgeDg2L3hl bjogZGVmaW5lIHN0YXJ0dXBfeGVuIGZvciBYRU4gUFYgb25seQogIHg4Ni94ZW46IGNyZWF0ZSBz dHVicyBmb3IgSFZNLW9ubHkgYnVpbGRzIGluIHBhZ2UuaAogIHhlbi9iYWxsb29uOiBkZWNvcmF0 ZSBQVi1vbmx5IHBhcnRzIHdpdGggI2lmZGVmIENPTkZJR19YRU5fUFYKICB4ZW46IGNyZWF0ZSB4 ZW5fY3JlYXRlL2Rlc3Ryb3lfY29udGlndW91c19yZWdpb24oKSBzdHVicyBmb3IgUFZIVk0KICAg IG9ubHkgYnVpbGRzCiAgeDg2L3hlbjogZW5hYmxlIFBWSFZNLW9ubHkgYnVpbGRzCiAgeDg2L3hl bjogcmVuYW1lIHNvbWUgUFYtb25seSBmdW5jdGlvbnMgaW4gc21wX3B2LmMKCiBhcmNoL3g4Ni9p bmNsdWRlL2FzbS9oeXBlcnZpc29yLmggfCAgICAzICstCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS94 ZW4vcGFnZS5oICAgfCAgIDI1ICsKIGFyY2gveDg2L2tlcm5lbC9jcHUvaHlwZXJ2aXNvci5jICB8 ICAgIDcgKy0KIGFyY2gveDg2L2tlcm5lbC9wcm9jZXNzXzY0LmMgICAgICB8ICAgIDIgKy0KIGFy Y2gveDg2L3hlbi9LY29uZmlnICAgICAgICAgICAgICB8ICAgMzMgKy0KIGFyY2gveDg2L3hlbi9N YWtlZmlsZSAgICAgICAgICAgICB8ICAgMTYgKy0KIGFyY2gveDg2L3hlbi9lbmxpZ2h0ZW4uYyAg ICAgICAgICB8IDE5MDQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC94ODYveGVuL2Vu bGlnaHRlbl9odm0uYyAgICAgIHwgIDIxMCArKysKIGFyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHYu YyAgICAgICB8IDE1NjEgKysrKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni94ZW4vZW5saWdo dGVuX3B2aC5jICAgICAgfCAgMTE0ICsrCiBhcmNoL3g4Ni94ZW4vbW11LmMgICAgICAgICAgICAg ICAgfCAyNzc2ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGFyY2gveDg2 L3hlbi9tbXVfaHZtLmMgICAgICAgICAgICB8ICAgNzkgKysKIGFyY2gveDg2L3hlbi9tbXVfcHYu YyAgICAgICAgICAgICB8IDI2MzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGFyY2gveDg2L3hlbi9wbXUuaCAgICAgICAgICAgICAgICB8ICAgIDUgKwogYXJjaC94ODYveGVu L3NtcC5jICAgICAgICAgICAgICAgIHwgIDUxNiArLS0tLS0tCiBhcmNoL3g4Ni94ZW4vc21wLmgg ICAgICAgICAgICAgICAgfCAgIDE2ICsKIGFyY2gveDg2L3hlbi9zbXBfaHZtLmMgICAgICAgICAg ICB8ICAgNTggKwogYXJjaC94ODYveGVuL3NtcF9wdi5jICAgICAgICAgICAgIHwgIDQ5OSArKysr KysrCiBhcmNoL3g4Ni94ZW4vc3VzcGVuZC5jICAgICAgICAgICAgfCAgIDU0IC0KIGFyY2gveDg2 L3hlbi9zdXNwZW5kX2h2bS5jICAgICAgICB8ICAgMjIgKwogYXJjaC94ODYveGVuL3N1c3BlbmRf cHYuYyAgICAgICAgIHwgICA0NCArCiBhcmNoL3g4Ni94ZW4veGVuLWhlYWQuUyAgICAgICAgICAg fCAgICA0ICsKIGFyY2gveDg2L3hlbi94ZW4tb3BzLmggICAgICAgICAgICB8ICAgMjEgKwogZHJp dmVycy94ZW4vYmFsbG9vbi5jICAgICAgICAgICAgIHwgICAzMCArLQogaW5jbHVkZS94ZW4veGVu LW9wcy5oICAgICAgICAgICAgIHwgICAxNCArCiAyNSBmaWxlcyBjaGFuZ2VkLCA1NDYxIGluc2Vy dGlvbnMoKyksIDUxODcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94ODYv eGVuL2VubGlnaHRlbl9odm0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3hlbi9lbmxp Z2h0ZW5fcHYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3hlbi9lbmxpZ2h0ZW5fcHZo LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL3g4Ni94ZW4vbW11X2h2bS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC94ODYveGVuL21tdV9wdi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC94 ODYveGVuL3NtcF9odm0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3hlbi9zbXBfcHYu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gveDg2L3hlbi9zdXNwZW5kX2h2bS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgYXJjaC94ODYveGVuL3N1c3BlbmRfcHYuYwoKLS0gCjIuOS4zCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==