From patchwork Mon Nov 6 14:34:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: David Woodhouse X-Patchwork-Id: 13446987 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 827CFC4332F for ; Mon, 6 Nov 2023 14:36:40 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r00hX-0006j7-1Q; Mon, 06 Nov 2023 09:35:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r00hP-0006eb-D0; Mon, 06 Nov 2023 09:35:32 -0500 Received: from smtp-fw-80008.amazon.com ([99.78.197.219]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r00hL-0000LF-NP; Mon, 06 Nov 2023 09:35:30 -0500 X-IronPort-AV: E=Sophos;i="6.03,281,1694736000"; d="scan'208";a="41362360" Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO email-inbound-relay-iad-1d-m6i4x-d23e07e8.us-east-1.amazon.com) ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Nov 2023 14:35:21 +0000 Received: from smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38]) by email-inbound-relay-iad-1d-m6i4x-d23e07e8.us-east-1.amazon.com (Postfix) with ESMTPS id 20E1283A70; Mon, 6 Nov 2023 14:35:14 +0000 (UTC) Received: from EX19MTAUWA002.ant.amazon.com [10.0.38.20:14317] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.52.187:2525] with esmtp (Farcaster) id 1c473c1c-c50b-4c1c-b64e-8d2edea49916; Mon, 6 Nov 2023 14:35:13 +0000 (UTC) X-Farcaster-Flow-ID: 1c473c1c-c50b-4c1c-b64e-8d2edea49916 Received: from EX19EXOUWB002.ant.amazon.com (10.250.64.247) by EX19MTAUWA002.ant.amazon.com (10.250.64.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.39; Mon, 6 Nov 2023 14:35:13 +0000 Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by EX19EXOUWB002.ant.amazon.com (10.250.64.247) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.27; Mon, 6 Nov 2023 14:35:12 +0000 Received: from u3832b3a9db3152.ant.amazon.com (10.106.83.6) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP Server id 15.2.1118.39 via Frontend Transport; Mon, 6 Nov 2023 14:35:09 +0000 From: David Woodhouse To: CC: Kevin Wolf , Hanna Reitz , "Peter Maydell" , Stefano Stabellini , Anthony Perard , "Paul Durrant" , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Paolo Bonzini , "Richard Henderson" , Eduardo Habkost , "Michael S. Tsirkin" , "Marcel Apfelbaum" , Jason Wang , Marcelo Tosatti , , , Subject: [PATCH v4 00/17] Get Xen PV shim running in QEMU, add net and console Date: Mon, 6 Nov 2023 14:34:50 +0000 Message-ID: <20231106143507.1060610-1-dwmw2@infradead.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Precedence: Bulk Received-SPF: none client-ip=99.78.197.219; envelope-from=prvs=667a8cc2a=dwmw2@infradead.org; helo=smtp-fw-80008.amazon.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org The Xen PV shim requires a PV console; add that. Also update the Xen PV network support to the new XenDevice model so that it can be used with emulated Xen guests. Fix up the Xen block support to allow it to be used with '-device file=IMAGE,if=xen'. Update the documentation to reflect all of these, taking the opportunity to simplify what it says about q35, by making unplug work for AHCI. Ignore the VCPU_SSHOTTMR_future timer flag, and advertise the 'fixed' per-vCPU upcall vector support, as newer upstream Xen do. Fix a bug where net_cleanup() would remove the NIC from underneath the emulated network devices, which doesn't work well when network devices have their own destructors (as the Xen PV one has to, in order to clean up the XenStore nodes). v4: • Drop the fixes from the start of the series, which have been sent as a separate pull request (cc: qemu-stable): https://lore.kernel.org/qemu-devel/20231106103955.200867-1-dwmw2@infradead.org/ • Go back to the original, more hackish, version of making `-nic` work for Xen network. The better fix for that is not going to get through review before the soft freeze. • Fix the documentation so the docs can reference the '-initrd' command line option with newer Sphinx. • Improve the duplicate detection for Xen block devices to match all partitions and even the same disk number on different majors. David Woodhouse (17): i386/xen: Ignore VCPU_SSHOTTMR_future flag in set_singleshot_timer() hw/xen: Clean up event channel 'type_val' handling to use union include: update Xen public headers to Xen 4.17.2 release i386/xen: advertise XEN_HVM_CPUID_UPCALL_VECTOR in CPUID hw/xen: populate store frontend nodes with XenStore PFN/port hw/xen: automatically assign device index to block devices hw/xen: add get_frontend_path() method to XenDeviceClass hw/xen: do not repeatedly try to create a failing backend device hw/xen: update Xen console to XenDevice model hw/xen: add support for Xen primary console in emulated mode hw/xen: only remove peers of PCI NICs on unplug hw/xen: update Xen PV NIC to XenDevice model hw/i386/pc: support '-nic' for xen-net-device net: do not delete nics in net_cleanup() xen-platform: unplug AHCI disks doc/sphinx/hxtool.py: add optional label argument to SRST directive docs: update Xen-on-KVM documentation MAINTAINERS | 2 +- blockdev.c | 15 +- docs/sphinx/hxtool.py | 18 +- docs/system/i386/xen.rst | 107 +++-- docs/system/invocation.rst | 1 + hw/block/xen-block.c | 118 ++++- hw/char/trace-events | 8 + hw/char/xen_console.c | 572 +++++++++++++++++++------ hw/i386/kvm/meson.build | 1 + hw/i386/kvm/trace-events | 2 + hw/i386/kvm/xen-stubs.c | 8 + hw/i386/kvm/xen_evtchn.c | 151 +++---- hw/i386/kvm/xen_gnttab.c | 7 +- hw/i386/kvm/xen_primary_console.c | 193 +++++++++ hw/i386/kvm/xen_primary_console.h | 23 + hw/i386/kvm/xen_xenstore.c | 23 +- hw/i386/pc.c | 11 +- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/i386/xen/xen_platform.c | 77 ++-- hw/net/meson.build | 2 +- hw/net/trace-events | 11 + hw/net/xen_nic.c | 484 ++++++++++++++++----- hw/xen/xen-backend.c | 27 +- hw/xen/xen-bus.c | 23 +- hw/xen/xen-legacy-backend.c | 1 - hw/xen/xen_devconfig.c | 28 -- hw/xenpv/xen_machine_pv.c | 10 - include/hw/i386/pc.h | 4 +- include/hw/xen/interface/arch-arm.h | 37 +- include/hw/xen/interface/arch-x86/cpuid.h | 31 +- include/hw/xen/interface/arch-x86/xen-x86_32.h | 19 +- include/hw/xen/interface/arch-x86/xen-x86_64.h | 19 +- include/hw/xen/interface/arch-x86/xen.h | 26 +- include/hw/xen/interface/event_channel.h | 19 +- include/hw/xen/interface/features.h | 19 +- include/hw/xen/interface/grant_table.h | 19 +- include/hw/xen/interface/hvm/hvm_op.h | 19 +- include/hw/xen/interface/hvm/params.h | 19 +- include/hw/xen/interface/io/blkif.h | 27 +- include/hw/xen/interface/io/console.h | 19 +- include/hw/xen/interface/io/fbif.h | 19 +- include/hw/xen/interface/io/kbdif.h | 19 +- include/hw/xen/interface/io/netif.h | 25 +- include/hw/xen/interface/io/protocols.h | 19 +- include/hw/xen/interface/io/ring.h | 49 +-- include/hw/xen/interface/io/usbif.h | 19 +- include/hw/xen/interface/io/xenbus.h | 19 +- include/hw/xen/interface/io/xs_wire.h | 36 +- include/hw/xen/interface/memory.h | 30 +- include/hw/xen/interface/physdev.h | 23 +- include/hw/xen/interface/sched.h | 19 +- include/hw/xen/interface/trace.h | 19 +- include/hw/xen/interface/vcpu.h | 19 +- include/hw/xen/interface/version.h | 19 +- include/hw/xen/interface/xen-compat.h | 19 +- include/hw/xen/interface/xen.h | 19 +- include/hw/xen/xen-backend.h | 1 + include/hw/xen/xen-bus.h | 5 +- include/hw/xen/xen-legacy-backend.h | 1 - net/net.c | 28 +- qemu-options.hx | 14 +- target/i386/kvm/kvm.c | 4 + target/i386/kvm/xen-emu.c | 43 +- 64 files changed, 1681 insertions(+), 991 deletions(-)