[PATCH v11 25/59] i386/xen: implement HVMOP_set_evtchn_upcall_vector

2023-02-15 Thread David Woodhouse
x27;s used by Windows and Xen (PV shim) guests but normally not by Linux. Signed-off-by: Ankur Arora Signed-off-by: Joao Martins [dwmw2: Rework for upstream kernel changes and split from HVMOP_set_param] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.h

[PATCH v11 13/59] hw/xen: Add xen_overlay device for emulating shared xenheap pages

2023-02-15 Thread David Woodhouse
From: David Woodhouse For the shared info page and for grant tables, Xen shares its own pages from the "Xen heap" to the guest. The guest requests that a given page from a certain address space (XENMAPSPACE_shared_info, etc.) be mapped to a given GPA using the XENMEM_add_to_physmap

[PATCH v11 14/59] xen: Permit --xen-domid argument when accel is KVM

2023-02-15 Thread David Woodhouse
From: Paul Durrant Signed-off-by: Paul Durrant Signed-off-by: David Wooodhouse --- softmmu/vl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/softmmu/vl.c b/softmmu/vl.c index b2ee3fee3f..2b071159c5 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -3359,7 +3359,7 @@ void q

[PATCH v11 49/59] i386/xen: handle HVMOP_get_param

2023-02-15 Thread David Woodhouse
From: Joao Martins Which is used to fetch xenstore PFN and port to be used by the guest. This is preallocated by the toolstack when guest will just read those and use it straight away. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm

[PATCH v11 18/59] i386/xen: implement XENMEM_add_to_physmap_batch

2023-02-15 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-compat.h | 24 + target/i386/kvm/xen-emu.c| 69 2 files changed, 93 insertions(+) diff --git a/target/i386/kvm/xen-compat.h b/target

[PATCH v11 04/59] i386/kvm: Add xen-version KVM accelerator property and init KVM Xen support

2023-02-15 Thread David Woodhouse
From: David Woodhouse This just initializes the basic Xen support in KVM for now. Only permitted on TYPE_PC_MACHINE because that's where the sysbus devices for Xen heap overlay, event channel, grant tables and other stuff will exist. There's no point having the basic hypercall support

[PATCH v11 28/59] i386/xen: Add support for Xen event channel delivery to vCPU

2023-02-15 Thread David Woodhouse
From: David Woodhouse The kvm_xen_inject_vcpu_callback_vector() function will either deliver the per-vCPU local APIC vector (as an MSI), or just kick the vCPU out of the kernel to trigger KVM's automatic delivery of the global vector. Support for asserting the GSI/PCI_INTX callbacks will

[PATCH v11 32/59] hw/xen: Implement EVTCHNOP_bind_virq

2023-02-15 Thread David Woodhouse
From: David Woodhouse Add the array of virq ports to each vCPU so that we can deliver timers, debug ports, etc. Global virqs are allocated against vCPU 0 initially, but can be migrated to other vCPUs (when we implement that). The kernel needs to know about VIRQ_TIMER in order to accelerate

[PATCH v11 05/59] i386/kvm: handle Xen HVM cpuid leaves

2023-02-15 Thread David Woodhouse
make it automatic] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.c | 1 + target/i386/cpu.h | 2 + target/i386/kvm/kvm.c | 77 ++- target/i386/kvm/xen-emu.c | 4 +- target/i386/kvm/xen-emu.h | 13 ++- 5

[PATCH v11 59/59] i386/xen: Document Xen HVM emulation

2023-02-15 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- docs/system/i386/xen.rst| 76 + docs/system/target-i386.rst | 1 + 2 files changed, 77 insertions(+) create mode 100644 docs/system/i386/xen.rst diff --git a/docs

[PATCH v11 56/59] hw/xen: Support GSI mapping to PIRQ

2023-02-15 Thread David Woodhouse
From: David Woodhouse If I advertise XENFEAT_hvm_pirqs then a guest now boots successfully as long as I tell it 'pci=nomsi'. [root@localhost ~]# cat /proc/interrupts CPU0 0: 52 IO-APIC 2-edge timer 1: 16 xen-pirq 1-ioapic-edge i8042 4:

[PATCH v11 53/59] hw/xen: Automatically add xen-platform PCI device for emulated Xen guests

2023-02-15 Thread David Woodhouse
From: David Woodhouse It isn't strictly mandatory but Linux guests at least will only map their grant tables over the dummy BAR that it provides, and don't have sufficient wit to map them in any other unused part of their guest address space. So include it by default for minimal surpr

[PATCH v11 24/59] i386/xen: implement HYPERVISOR_event_channel_op

2023-02-15 Thread David Woodhouse
From: Joao Martins Signed-off-by: Joao Martins [dwmw2: Ditch event_channel_op_compat which was never available to HVM guests] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-emu.c | 25 + 1 file changed, 25 insertions(+) diff --git a

[PATCH v11 50/59] hw/xen: Add backend implementation of interdomain event channel support

2023-02-15 Thread David Woodhouse
From: David Woodhouse The provides the QEMU side of interdomain event channels, allowing events to be sent to/from the guest. The API mirrors libxenevtchn, and in time both this and the real Xen one will be available through ops structures so that the PV backend drivers can use the correct one

[PATCH v11 10/59] i386/xen: implement HYPERVISOR_xen_version

2023-02-15 Thread David Woodhouse
-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-emu.c | 86 +++ 1 file changed, 86 insertions(+) diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c index 476f464ee2..56b80a7880 100644 --- a/target/i386/kvm/xen-emu.c +++ b

[PATCH v11 19/59] i386/xen: implement HYPERVISOR_hvm_op

2023-02-15 Thread David Woodhouse
From: Joao Martins This is when guest queries for support for HVMOP_pagetable_dying. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-emu.c | 17 + 1 file changed, 17 insertions(+) diff --git a/target/i386/kvm/xen

[PATCH v11 22/59] i386/xen: handle VCPUOP_register_vcpu_time_info

2023-02-15 Thread David Woodhouse
From: Joao Martins In order to support Linux vdso in Xen. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.h | 1 + target/i386/kvm/xen-emu.c | 100 +- target/i386/machine.c | 1 + 3

[PATCH v11 41/59] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_PCI_INTX callback

2023-02-15 Thread David Woodhouse
From: David Woodhouse The guest is permitted to specify an arbitrary domain/bus/device/function and INTX pin from which the callback IRQ shall appear to have come. In QEMU we can only easily do this for devices that actually exist, and even that requires us "knowing" that it's

[PATCH v11 11/59] i386/xen: implement HYPERVISOR_sched_op, SCHEDOP_shutdown

2023-02-15 Thread David Woodhouse
HVM guests, Add SCHEDOP_soft_reset] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- include/sysemu/kvm_xen.h | 1 + target/i386/kvm/trace-events | 1 + target/i386/kvm/xen-emu.c| 75 3 files changed, 77 insertions(+) diff --git a

[PATCH v11 46/59] hw/xen: Implement GNTTABOP_query_size

2023-02-15 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- hw/i386/kvm/xen_gnttab.c | 19 +++ hw/i386/kvm/xen_gnttab.h | 2 ++ target/i386/kvm/xen-emu.c | 16 +++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/hw/i386/kvm

Re: [PULL 00/10] xenpvh machine

2023-02-15 Thread David Woodhouse
On Tue, 2023-02-14 at 15:44 -0800, Stefano Stabellini wrote: > > Something weird has happened here -- I'm getting merge conflicts > > in files in migration/ and in tests/unit/test-xbzrle.c, even though > > your pullreq diffstat says it doesn't touch those files. Can you > > try a rebase and resend?

Re: [PATCH v10 47/59] i386/xen: handle PV timer hypercalls

2023-02-15 Thread David Woodhouse
On Tue, 2023-02-14 at 10:10 +, Paul Durrant wrote: > There's a nasty little semantic subtlety here which has been missed... > If the guest is not in longmode then the timer value is actually split > across param[0] and param[1] (so that it is still 64-bits). I'll work this in. I should be ab

Re: [PATCH v10 32/59] hw/xen: Implement EVTCHNOP_bind_virq

2023-02-15 Thread David Woodhouse
On Fri, 2023-02-10 at 13:48 +, Paul Durrant wrote: > > > +static int allocate_port(XenEvtchnState *s, uint32_t vcpu, > > uint16_t type, > > + uint16_t val, evtchn_port_t *port) > > +{ > > +    evtchn_port_t p = 1; > > + > > +    for (p = 1; valid_port(p); p++) { > > +  

Re: [PATCH v10 49/59] i386/xen: handle HVMOP_get_param

2023-02-14 Thread David Woodhouse
On 14 February 2023 16:47:13 CET, Paul Durrant wrote: >On 01/02/2023 14:31, David Woodhouse wrote: >> From: Joao Martins >> >> Which is used to fetch xenstore PFN and port to be used >> by the guest. This is preallocated by the toolstack when >> guest will ju

Re: [PATCH v10 44/59] hw/xen: Support mapping grant frames

2023-02-14 Thread David Woodhouse
On 14 February 2023 16:40:11 CET, Paul Durrant wrote: >On 14/02/2023 15:35, David Woodhouse wrote: >> >> >> On 13 February 2023 16:31:57 CET, Paul Durrant wrote: >>> On 01/02/2023 14:31, David Woodhouse wrote: >>>> From: David Woodhouse

Re: [PATCH v10 47/59] i386/xen: handle PV timer hypercalls

2023-02-14 Thread David Woodhouse
On 14 February 2023 11:10:05 CET, Paul Durrant wrote: >On 01/02/2023 14:31, David Woodhouse wrote: >> From: Joao Martins >> >> Introduce support for one shot and periodic mode of Xen PV timers, >> whereby timer interrupts come through a special virq event channel

Re: [PATCH v10 44/59] hw/xen: Support mapping grant frames

2023-02-14 Thread David Woodhouse
On 13 February 2023 16:31:57 CET, Paul Durrant wrote: >On 01/02/2023 14:31, David Woodhouse wrote: >> From: David Woodhouse >> >> Signed-off-by: David Woodhouse >> --- >> hw/i386/kvm/xen_gnttab.c | 74 ++- >> hw

Re: [PATCH v10 45/59] i386/xen: Implement HYPERVISOR_grant_table_op and GNTTABOP_[gs]et_verson

2023-02-14 Thread David Woodhouse
On 14 February 2023 10:59:12 CET, Paul Durrant wrote: >On 01/02/2023 14:31, David Woodhouse wrote: >> From: David Woodhouse >> >> Signed-off-by: David Woodhouse >> --- >> hw/i386/kvm/xen_gnttab.c | 31 >> hw/i386/kvm/xen_gntta

Re: [PATCH v10 39/59] i386/xen: add monitor commands to test event injection

2023-02-10 Thread David Woodhouse
On Fri, 2023-02-10 at 14:54 +, Paul Durrant wrote: > > Given that this patch only provides a command to inject an event on a > specific port, I think it's be useful to have the target field report > the type of a VIRQ. PV drivers often hook VIRQ_DEBUG for dumping debug > info, so knowing whic

Re: [PATCH v10 35/59] hw/xen: Implement EVTCHNOP_alloc_unbound

2023-02-10 Thread David Woodhouse
On Fri, 2023-02-10 at 14:13 +, Paul Durrant wrote: > > --- a/target/i386/kvm/xen-emu.c > > +++ b/target/i386/kvm/xen-emu.c > > @@ -918,6 +918,21 @@ static bool kvm_xen_hcall_evtchn_op(struct > > kvm_xen_exit *exit, X86CPU *cpu, > >    err = xen_evtchn_send_op(&send); > >    bre

Re: [PATCH v10 33/59] hw/xen: Implement EVTCHNOP_bind_ipi

2023-02-10 Thread David Woodhouse
On Fri, 2023-02-10 at 13:55 +, Paul Durrant wrote: > > > +    ret = allocate_port(s, ipi->vcpu, EVTCHNSTAT_ipi, 0, &ipi->port); > > +    if (!ret && s->evtchn_in_kernel) { > > +    assign_kernel_port(EVTCHNSTAT_ipi, ipi->port, ipi->vcpu); > > Should the error not be propagated here? Nah

Re: [QEMU][PATCH v5 00/10] Introduce xenpvh machine for arm architecture

2023-02-07 Thread David Woodhouse
On Tue, 2023-01-31 at 14:51 -0800, Vikram Garhwal wrote: > > Hi, > This series add xenpvh machine for aarch64. Motivation behind creating xenpvh > machine with IOREQ and TPM was to enable each guest on Xen aarch64 to have > it's > own unique and emulated TPM. > > This series does following: >   

Re: [SeaBIOS] [SeaBIOS PATCH] xen: require Xen info structure at 0x1000 to detect Xen

2023-02-02 Thread David Woodhouse
On Wed, 2023-02-01 at 21:13 -0500, Kevin O'Connor wrote: > On Fri, Jan 20, 2023 at 11:33:19AM +0000, David Woodhouse wrote: > > From: David Woodhouse > > > > When running under Xen, hvmloader places a table at 0x1000 with the e820 > > information and BIOS tables

[RFC PATCH v1 6/8] xenstore perms WIP

2023-02-01 Thread David Woodhouse
From: Paul Durrant Store perms as a GList of strings, check permissions. No unit tests yet. Signed-off-by: Paul Durrant Signed-off-by: David Woodhoues --- hw/i386/kvm/xen_xenstore.c | 2 +- hw/i386/kvm/xenstore_impl.c | 237 +--- hw/i386/kvm/xenstore_impl.h

[PATCH v10 04/59] i386/kvm: Add xen-version KVM accelerator property and init KVM Xen support

2023-02-01 Thread David Woodhouse
From: David Woodhouse This just initializes the basic Xen support in KVM for now. Only permitted on TYPE_PC_MACHINE because that's where the sysbus devices for Xen heap overlay, event channel, grant tables and other stuff will exist. There's no point having the basic hypercall support

[PATCH v10 30/59] hw/xen: Implement EVTCHNOP_close

2023-02-01 Thread David Woodhouse
From: David Woodhouse It calls an internal close_port() helper which will also be used from EVTCHNOP_reset and will actually do the work to disconnect/unbind a port once any of that is actually implemented in the first place. That in turn calls a free_port() internal function which will be in

[PATCH v10 22/59] i386/xen: handle VCPUOP_register_vcpu_time_info

2023-02-01 Thread David Woodhouse
From: Joao Martins In order to support Linux vdso in Xen. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.h | 1 + target/i386/kvm/xen-emu.c | 100 +- target/i386/machine.c | 1 + 3

[PATCH v10 39/59] i386/xen: add monitor commands to test event injection

2023-02-01 Thread David Woodhouse
From: Joao Martins Specifically add listing, injection of event channels. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Acked-by: Dr. David Alan Gilbert --- hmp-commands.hx | 29 + hw/i386/kvm/xen_evtchn.c | 137 +++ include

[PATCH v10 55/59] hw/xen: Implement emulated PIRQ hypercall support

2023-02-01 Thread David Woodhouse
From: David Woodhouse This wires up the basic infrastructure but the actual interrupts aren't there yet, so don't advertise it to the guest. Signed-off-by: David Woodhouse --- hw/i386/kvm/trace-events | 4 + hw/i386/kvm/trace.h | 1 + hw/i386/kvm/xen_evtch

[PATCH v10 26/59] i386/xen: implement HVMOP_set_param

2023-02-01 Thread David Woodhouse
From: Ankur Arora This is the hook for adding the HVM_PARAM_CALLBACK_IRQ parameter in a subsequent commit. Signed-off-by: Ankur Arora Signed-off-by: Joao Martins [dwmw2: Split out from another commit] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-emu.c

[PATCH v10 13/59] hw/xen: Add xen_overlay device for emulating shared xenheap pages

2023-02-01 Thread David Woodhouse
From: David Woodhouse For the shared info page and for grant tables, Xen shares its own pages from the "Xen heap" to the guest. The guest requests that a given page from a certain address space (XENMAPSPACE_shared_info, etc.) be mapped to a given GPA using the XENMEM_add_to_physmap

[PATCH v10 09/59] i386/xen: handle guest hypercalls

2023-02-01 Thread David Woodhouse
-by: David Woodhouse --- target/i386/kvm/kvm.c| 5 target/i386/kvm/trace-events | 3 +++ target/i386/kvm/xen-emu.c| 44 target/i386/kvm/xen-emu.h| 1 + 4 files changed, 53 insertions(+) diff --git a/target/i386/kvm/kvm.c b/target/i386/

[PATCH v10 23/59] i386/xen: handle VCPUOP_register_runstate_memory_area

2023-02-01 Thread David Woodhouse
From: Joao Martins Allow guest to setup the vcpu runstates which is used as steal clock. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.h | 1 + target/i386/kvm/xen-emu.c | 57 +++ target

[RFC PATCH v1 7/8] hw/xen: Implement core serialize/deserialize methods for xenstore_impl

2023-02-01 Thread David Woodhouse
From: David Woodhouse In fact I think we want to only serialize the contents of the domain's path in /local/domain/${domid} and leave the rest to be recreated? Will defer to Paul for that. Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_xenstore.c | 25 +- hw/i386/kvm/xenstore_i

[PATCH v10 56/59] hw/xen: Support GSI mapping to PIRQ

2023-02-01 Thread David Woodhouse
From: David Woodhouse If I advertise XENFEAT_hvm_pirqs then a guest now boots successfully as long as I tell it 'pci=nomsi'. [root@localhost ~]# cat /proc/interrupts CPU0 0: 52 IO-APIC 2-edge timer 1: 16 xen-pirq 1-ioapic-edge i8042 4:

[RFC PATCH v1 4/8] hw/xen: Implement XenStore transactions

2023-02-01 Thread David Woodhouse
From: David Woodhouse Given that the whole thing supported copy on write from the beginning, transactions end up being fairly simple. On starting a transaction, just take a ref of the existing root; swap it back in on a successful commit. The main tree has a transaction ID too, and we keep a

[PATCH v10 51/59] hw/xen: Add xen_xenstore device for xenstore emulation

2023-02-01 Thread David Woodhouse
From: David Woodhouse Just the basic shell, with the event channel hookup. It only dumps the buffer for now; a real ring implmentation will come in a subsequent patch. Signed-off-by: David Woodhouse --- hw/i386/kvm/meson.build| 1 + hw/i386/kvm/xen_evtchn.c | 1 + hw/i386/kvm

[RFC PATCH v1 2/8] hw/xen: Add basic XenStore tree walk and write/read/directory support

2023-02-01 Thread David Woodhouse
From: David Woodhouse This is a fairly simple implementation of a copy-on-write tree. The node walk function starts off at the root, with 'inplace == true'. If it ever encounters a node with a refcount greater than one (including the root node), then that node is shared with other

[PATCH v10 44/59] hw/xen: Support mapping grant frames

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_gnttab.c | 74 ++- hw/i386/kvm/xen_overlay.c | 2 +- hw/i386/kvm/xen_overlay.h | 2 ++ 3 files changed, 76 insertions(+), 2 deletions(-) diff --git a/hw/i386/kvm/xen_gnttab.c b/hw

[PATCH v10 11/59] i386/xen: implement HYPERVISOR_sched_op, SCHEDOP_shutdown

2023-02-01 Thread David Woodhouse
HVM guests, Add SCHEDOP_soft_reset] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- include/sysemu/kvm_xen.h | 1 + target/i386/kvm/trace-events | 1 + target/i386/kvm/xen-emu.c| 75 3 files changed, 77 insertions(+) diff --git a

[PATCH v10 34/59] hw/xen: Implement EVTCHNOP_send

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 180 ++ hw/i386/kvm/xen_evtchn.h | 2 + target/i386/kvm/xen-emu.c | 12 +++ 3 files changed, 194 insertions(+) diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm

[PATCH v10 24/59] i386/xen: implement HYPERVISOR_event_channel_op

2023-02-01 Thread David Woodhouse
From: Joao Martins Signed-off-by: Joao Martins [dwmw2: Ditch event_channel_op_compat which was never available to HVM guests] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-emu.c | 25 + 1 file changed, 25 insertions(+) diff --git a

[PATCH v10 18/59] i386/xen: implement XENMEM_add_to_physmap_batch

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-compat.h | 24 + target/i386/kvm/xen-emu.c| 69 2 files changed, 93 insertions(+) diff --git a/target/i386/kvm/xen-compat.h b/target

[PATCH v10 35/59] hw/xen: Implement EVTCHNOP_alloc_unbound

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 32 hw/i386/kvm/xen_evtchn.h | 2 ++ target/i386/kvm/xen-emu.c | 15 +++ 3 files changed, 49 insertions(+) diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm

[PATCH v10 14/59] xen: Permit --xen-domid argument when accel is KVM

2023-02-01 Thread David Woodhouse
From: Paul Durrant Signed-off-by: Paul Durrant Signed-off-by: David Wooodhouse --- softmmu/vl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/softmmu/vl.c b/softmmu/vl.c index 9177d95d4e..25d7ee9098 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -3362,7 +3362,7 @@ void q

[PATCH v10 57/59] hw/xen: Support MSI mapping to PIRQ

2023-02-01 Thread David Woodhouse
From: David Woodhouse The way that Xen handles MSI PIRQs is kind of awful. There is a special MSI message which targets a PIRQ. The vector in the low bits of data must be zero. The low 8 bits of the PIRQ# are in the destination ID field, the extended destination ID field is unused, and instead

[PATCH v10 48/59] i386/xen: Reserve Xen special pages for console, xenstore rings

2023-02-01 Thread David Woodhouse
From: David Woodhouse Xen has eight frames at 0xfeff8000 for this; we only really need two for now and KVM puts the identity map at 0xfeffc000, so limit ourselves to four. Signed-off-by: David Woodhouse --- include/sysemu/kvm_xen.h | 8 target/i386/kvm/xen-emu.c | 10 ++ 2

[PATCH v10 52/59] hw/xen: Add basic ring handling to xenstore

2023-02-01 Thread David Woodhouse
From: David Woodhouse Extract requests, return ENOSYS to all of them. This is enough to allow older Linux guests to boot, as they need *something* back but it doesn't matter much what. In the first instance we're likely to wire this up over a UNIX socket to an actual xenstored impl

[RFC PATCH v1 8/8] hw/xen: Create initial XenStore nodes

2023-02-01 Thread David Woodhouse
From: Paul Durrant Signed-off-by: Paul Durrant Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_xenstore.c | 70 ++ 1 file changed, 70 insertions(+) diff --git a/hw/i386/kvm/xen_xenstore.c b/hw/i386/kvm/xen_xenstore.c index 23d6d9b5a8..d72ac7093f 100644

[PATCH v10 42/59] kvm/i386: Add xen-gnttab-max-frames property

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- accel/kvm/kvm-all.c | 1 + include/sysemu/kvm_int.h | 1 + include/sysemu/kvm_xen.h | 1 + target/i386/kvm/kvm.c | 34 ++ target/i386/kvm/xen-emu.c | 6 ++ 5 files changed, 43

[RFC PATCH v1 3/8] hw/xen: Implement XenStore watches

2023-02-01 Thread David Woodhouse
From: David Woodhouse Starts out fairly simple: a hash table of watches based on the path. Except there can be multiple watches on the same path, so the watch ends up being a simple linked list, and the head of that list is in the hash table. Which makes removal a bit of a PITA but it's n

[PATCH v10 49/59] i386/xen: handle HVMOP_get_param

2023-02-01 Thread David Woodhouse
From: Joao Martins Which is used to fetch xenstore PFN and port to be used by the guest. This is preallocated by the toolstack when guest will just read those and use it straight away. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse --- target/i386/kvm/xen-emu.c | 39

[RFC PATCH v1 1/8] hw/xen: Add xenstore wire implementation and implementation stubs

2023-02-01 Thread David Woodhouse
From: David Woodhouse This implements the basic wire protocol for the XenStore commands, punting all the actual implementation to xs_impl_* functions which all just return errors for now. Signed-off-by: David Woodhouse --- hw/i386/kvm/meson.build | 1 + hw/i386/kvm/trace-events| 14

[PATCH v10 21/59] i386/xen: handle VCPUOP_register_vcpu_info

2023-02-01 Thread David Woodhouse
invoked. Add the vcpu_info (and default) GPA to the vmstate_x86_cpu for migration, and restore it in kvm_arch_put_registers() appropriately. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.h| 2 + target/i386/kvm/kvm.c

[PATCH v10 33/59] hw/xen: Implement EVTCHNOP_bind_ipi

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 69 +++ hw/i386/kvm/xen_evtchn.h | 2 ++ target/i386/kvm/xen-emu.c | 15 + 3 files changed, 86 insertions(+) diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm

[RFC PATCH v1 5/8] hw/xen: Watches on XenStore transactions

2023-02-01 Thread David Woodhouse
From: David Woodhouse Firing watches on the nodes that still exist is relatively easy; just walk the tree and look at the nodes with refcount of one. Firing watches on *deleted* nodes is more fun. We add 'modified_in_tx' and 'deleted_in_tx' flags to each node. Nodes with t

[PATCH v10 08/59] xen-platform: allow its creation with XEN_EMULATE mode

2023-02-01 Thread David Woodhouse
without actual Xen, move it to CONFIG_XEN_BUS to include it in the KVM-only builds. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- hw/i386/xen/meson.build| 5 - hw/i386/xen/xen_platform.c | 39 +- 2 files changed

[PATCH v10 25/59] i386/xen: implement HVMOP_set_evtchn_upcall_vector

2023-02-01 Thread David Woodhouse
x27;s used by Windows and Xen (PV shim) guests but normally not by Linux. Signed-off-by: Ankur Arora Signed-off-by: Joao Martins [dwmw2: Rework for upstream kernel changes and split from HVMOP_set_param] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.h

[PATCH v10 27/59] hw/xen: Add xen_evtchn device for event channel emulation

2023-02-01 Thread David Woodhouse
From: David Woodhouse Include basic support for setting HVM_PARAM_CALLBACK_IRQ to the global vector method HVM_PARAM_CALLBACK_TYPE_VECTOR, which is handled in-kernel by raising the vector whenever the vCPU's vcpu_info->evtchn_upcall_pending flag is set. Signed-off-by: David Woodhouse

[PATCH v10 45/59] i386/xen: Implement HYPERVISOR_grant_table_op and GNTTABOP_[gs]et_verson

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_gnttab.c | 31 hw/i386/kvm/xen_gnttab.h | 5 target/i386/kvm/xen-emu.c | 60 +++ 3 files changed, 96 insertions(+) diff --git a/hw/i386/kvm/xen_gnttab.c b

[PATCH v10 29/59] hw/xen: Implement EVTCHNOP_status

2023-02-01 Thread David Woodhouse
From: David Woodhouse This adds the basic structure for maintaining the port table and reporting the status of ports therein. Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- hw/i386/kvm/xen_evtchn.c | 104 ++ hw/i386/kvm/xen_evtchn.h | 3

[RFC PATCH v1 0/8] Look Ma! We made a XenStore

2023-02-01 Thread David Woodhouse
in/${domid} and letting the rest be recreated on the QEMU side just as they were created the first time. But there's plenty here to heckle even before we tweak those details... https://git.infradead.org/users/dwmw2/qemu.git/shortlog/refs/heads/xenfv-kvm-10-xenstore David Woodhouse (6):

[PATCH v10 10/59] i386/xen: implement HYPERVISOR_xen_version

2023-02-01 Thread David Woodhouse
-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-emu.c | 86 +++ 1 file changed, 86 insertions(+) diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c index 476f464ee2..56b80a7880 100644 --- a/target/i386/kvm/xen-emu.c +++ b

[PATCH v10 32/59] hw/xen: Implement EVTCHNOP_bind_virq

2023-02-01 Thread David Woodhouse
From: David Woodhouse Add the array of virq ports to each vCPU so that we can deliver timers, debug ports, etc. Global virqs are allocated against vCPU 0 initially, but can be migrated to other vCPUs (when we implement that). The kernel needs to know about VIRQ_TIMER in order to accelerate

[PATCH v10 40/59] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_GSI callback

2023-02-01 Thread David Woodhouse
From: David Woodhouse The GSI callback (and later PCI_INTX) is a level triggered interrupt. It is asserted when an event channel is delivered to vCPU0, and is supposed to be cleared when the vcpu_info->evtchn_upcall_pending field for vCPU0 is cleared again. Thankfully, Xen does *not* assert

[PATCH v10 31/59] hw/xen: Implement EVTCHNOP_unmask

2023-02-01 Thread David Woodhouse
From: David Woodhouse This finally comes with a mechanism for actually injecting events into the guest vCPU, with all the atomic-test-and-set that's involved in setting the bit in the shinfo, then the index in the vcpu_info, and injecting either the lapic vector as MSI, or letting KVM injec

[PATCH v10 16/59] i386/xen: manage and save/restore Xen guest long_mode setting

2023-02-01 Thread David Woodhouse
From: David Woodhouse Xen will "latch" the guest's 32-bit or 64-bit ("long mode") setting when the guest writes the MSR to fill in the hypercall page, or when the guest sets the event channel callback in HVM_PARAM_CALLBACK_IRQ. KVM handles the former and sets th

[PATCH v10 12/59] i386/xen: Implement SCHEDOP_poll and SCHEDOP_yield

2023-02-01 Thread David Woodhouse
From: David Woodhouse They both do the same thing and just call sched_yield. This is enough to stop the Linux guest panicking when running on a host kernel which doesn't intercept SCHEDOP_poll and lets it reach userspace. Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- t

[PATCH v10 46/59] hw/xen: Implement GNTTABOP_query_size

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_gnttab.c | 19 +++ hw/i386/kvm/xen_gnttab.h | 2 ++ target/i386/kvm/xen-emu.c | 16 +++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/hw/i386/kvm/xen_gnttab.c b/hw/i386/kvm

[PATCH v10 19/59] i386/xen: implement HYPERVISOR_hvm_op

2023-02-01 Thread David Woodhouse
From: Joao Martins This is when guest queries for support for HVMOP_pagetable_dying. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/kvm/xen-emu.c | 17 + 1 file changed, 17 insertions(+) diff --git a/target/i386/kvm/xen

[PATCH v10 17/59] i386/xen: implement HYPERVISOR_memory_op

2023-02-01 Thread David Woodhouse
From: Joao Martins Specifically XENMEM_add_to_physmap with space XENMAPSPACE_shared_info to allow the guest to set its shared_info page. Signed-off-by: Joao Martins [dwmw2: Use the xen_overlay device, add compat support] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target

[PATCH v10 54/59] i386/xen: Implement HYPERVISOR_physdev_op

2023-02-01 Thread David Woodhouse
From: David Woodhouse Just hook up the basic hypercalls to stubs in xen_evtchn.c for now. Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 25 hw/i386/kvm/xen_evtchn.h | 11 target/i386/kvm/xen-compat.h | 19 ++ target/i386/kvm/xen-emu.c| 118

[PATCH v10 59/59] i386/xen: Document Xen HVM emulation

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- docs/system/i386/xen.rst| 76 + docs/system/target-i386.rst | 1 + 2 files changed, 77 insertions(+) create mode 100644 docs/system/i386/xen.rst diff --git a/docs/system/i386/xen.rst b/docs

[PATCH v10 50/59] hw/xen: Add backend implementation of interdomain event channel support

2023-02-01 Thread David Woodhouse
From: David Woodhouse The provides the QEMU side of interdomain event channels, allowing events to be sent to/from the guest. The API mirrors libxenevtchn, and in time both this and the real Xen one will be available through ops structures so that the PV backend drivers can use the correct one

[PATCH v10 41/59] hw/xen: Support HVM_PARAM_CALLBACK_TYPE_PCI_INTX callback

2023-02-01 Thread David Woodhouse
From: David Woodhouse The guest is permitted to specify an arbitrary domain/bus/device/function and INTX pin from which the callback IRQ shall appear to have come. In QEMU we can only easily do this for devices that actually exist, and even that requires us "knowing" that it's

[PATCH v10 05/59] i386/kvm: handle Xen HVM cpuid leaves

2023-02-01 Thread David Woodhouse
make it automatic] Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- target/i386/cpu.c | 1 + target/i386/cpu.h | 2 + target/i386/kvm/kvm.c | 77 ++- target/i386/kvm/xen-emu.c | 4 +- target/i386/kvm/xen-emu.h | 13 ++- 5

[PATCH v10 43/59] hw/xen: Add xen_gnttab device for grant table emulation

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/meson.build | 1 + hw/i386/kvm/xen_gnttab.c | 111 ++ hw/i386/kvm/xen_gnttab.h | 18 +++ hw/i386/pc.c | 2 + target/i386/kvm/xen-emu.c | 3 ++ 5 files changed

[PATCH v10 36/59] hw/xen: Implement EVTCHNOP_bind_interdomain

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 78 +++ hw/i386/kvm/xen_evtchn.h | 2 + target/i386/kvm/xen-emu.c | 16 3 files changed, 96 insertions(+) diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm

[PATCH v10 00/59] Xen HVM support under KVM

2023-02-01 Thread David Woodhouse
ads/xenfv-kvm-1 v0: https://github.com/jpemartins/qemu/commits/xen-shim-rfc (Joao et al.) Ankur Arora (2): i386/xen: implement HVMOP_set_evtchn_upcall_vector i386/xen: implement HVMOP_set_param David Woodhouse (39): xen: add CONFIG_XEN_BUS and CONFIG_XEN_EMU options for Xen emulation

[PATCH v10 06/59] i386/hvm: Set Xen vCPU ID in KVM

2023-02-01 Thread David Woodhouse
From: David Woodhouse There are (at least) three different vCPU ID number spaces. One is the internal KVM vCPU index, based purely on which vCPU was chronologically created in the kernel first. If userspace threads are all spawned and create their KVM vCPUs in essentially random order, then the

[PATCH v10 53/59] hw/xen: Automatically add xen-platform PCI device for emulated Xen guests

2023-02-01 Thread David Woodhouse
From: David Woodhouse It isn't strictly mandatory but Linux guests at least will only map their grant tables over the dummy BAR that it provides, and don't have sufficient wit to map them in any other unused part of their guest address space. So include it by default for minimal surpr

[PATCH v10 47/59] i386/xen: handle PV timer hypercalls

2023-02-01 Thread David Woodhouse
hypercalls Signed-off-by: Joao Martins Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 31 + hw/i386/kvm/xen_evtchn.h | 2 + target/i386/cpu.h | 5 + target/i386/kvm/xen-emu.c | 245 +- target/i386/machine.c | 1 + 5 files

[PATCH v10 28/59] i386/xen: Add support for Xen event channel delivery to vCPU

2023-02-01 Thread David Woodhouse
From: David Woodhouse The kvm_xen_inject_vcpu_callback_vector() function will either deliver the per-vCPU local APIC vector (as an MSI), or just kick the vCPU out of the kernel to trigger KVM's automatic delivery of the global vector. Support for asserting the GSI/PCI_INTX callbacks will

[PATCH v10 07/59] xen-platform: exclude vfio-pci from the PCI platform unplug

2023-02-01 Thread David Woodhouse
From: Joao Martins Such that PCI passthrough devices work for Xen emulated guests. Signed-off-by: Joao Martins Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- hw/i386/xen/xen_platform.c | 18 +++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/hw

[PATCH v10 58/59] kvm/i386: Add xen-evtchn-max-pirq property

2023-02-01 Thread David Woodhouse
From: David Woodhouse The default number of PIRQs is set to 256 to avoid issues with 32-bit MSI devices. Allow it to be increased if the user desires. Signed-off-by: David Woodhouse --- accel/kvm/kvm-all.c | 1 + hw/i386/kvm/xen_evtchn.c | 21 +++-- include/sysemu

[PATCH v10 38/59] hw/xen: Implement EVTCHNOP_reset

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 30 ++ hw/i386/kvm/xen_evtchn.h | 3 +++ target/i386/kvm/xen-emu.c | 17 + 3 files changed, 50 insertions(+) diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm

[PATCH v10 37/59] hw/xen: Implement EVTCHNOP_bind_vcpu

2023-02-01 Thread David Woodhouse
From: David Woodhouse Signed-off-by: David Woodhouse --- hw/i386/kvm/xen_evtchn.c | 40 +++ hw/i386/kvm/xen_evtchn.h | 2 ++ target/i386/kvm/xen-emu.c | 12 3 files changed, 54 insertions(+) diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386

[PATCH v10 15/59] i386/xen: add pc_machine_kvm_type to initialize XEN_EMULATE mode

2023-02-01 Thread David Woodhouse
From: David Woodhouse The xen_overlay device (and later similar devices for event channels and grant tables) need to be instantiated. Do this from a kvm_type method on the PC machine derivatives, since KVM is only way to support Xen emulation for now. Signed-off-by: David Woodhouse Reviewed-by

[PATCH v10 03/59] xen: Add XEN_DISABLED mode and make it default

2023-02-01 Thread David Woodhouse
From: David Woodhouse Also set XEN_ATTACH mode in xen_init() to reflect the truth; not that anyone ever cared before. It was *only* ever checked in xen_init_pv() before. Suggested-by: Paolo Bonzini Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- accel/xen/xen-all.c | 2

[PATCH v10 02/59] xen: add CONFIG_XEN_BUS and CONFIG_XEN_EMU options for Xen emulation

2023-02-01 Thread David Woodhouse
From: David Woodhouse The XEN_EMU option will cover core Xen support in target/, which exists only for x86 with KVM today but could theoretically also be implemented on Arm/Aarch64 and with TCG or other accelerators (if anyone wants to run the gauntlet of struct layout compatibility, errno

<    7   8   9   10   11   12   13   14   15   16   >