---
sys/amd64/amd64/machdep.c | 50 ++
sys/amd64/include/pc/bios.h |2 +
sys/amd64/include/sysarch.h |1 +
sys/x86/xen/pv.c| 25 +
4 files changed, 59 insertions(+), 19 deletions(-)
diff --git
When running as a PVH guest, there's no emulated i8254, so we need to
use the Xen PV timer as the early source for DELAY. This change allows
for different implementations of the early DELAY function and
implements a Xen variant for it.
---
sys/amd64/amd64/machdep.c |6 ++-
This adds and enables the console used on XEN kernels.
---
sys/conf/files |4 +-
sys/dev/xen/console/console.c | 37 +--
sys/dev/xen/console/xencons_ring.c | 15 +
sys/i386/include/xen/xen-os.h |1 -
---
sys/conf/files.amd64 |1 +
sys/x86/xen/pvcpu_enum.c | 136 ++
2 files changed, 137 insertions(+), 0 deletions(-)
create mode 100644 sys/x86/xen/pvcpu_enum.c
diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64
index 109a796..a3491da
This should not introduce any functional change, and makes the
functions suitable to be called before we have actually mapped the
vcpu_info struct on a per-cpu basis.
---
sys/dev/xen/timer/timer.c | 29 -
1 files changed, 20 insertions(+), 9 deletions(-)
diff --git
---
sys/amd64/include/xen/hypercall.h |7 ---
sys/i386/i386/locore.s|9 +
sys/i386/include/xen/hypercall.h |8
sys/x86/xen/hvm.c | 24 ++--
4 files changed, 19 insertions(+), 29 deletions(-)
diff --git
---
sys/x86/isa/isa.c |3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/sys/x86/isa/isa.c b/sys/x86/isa/isa.c
index 1a57137..9287ff2 100644
--- a/sys/x86/isa/isa.c
+++ b/sys/x86/isa/isa.c
@@ -241,3 +241,6 @@ isa_release_resource(device_t bus, device_t child, int
type,
---
sys/xen/gnttab.c | 26 +-
1 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/sys/xen/gnttab.c b/sys/xen/gnttab.c
index 03c32b7..6949be5 100644
--- a/sys/xen/gnttab.c
+++ b/sys/xen/gnttab.c
@@ -25,6 +25,7 @@ __FBSDID($FreeBSD$);
#include sys/lock.h
Introduce a Xen specific nexus that is going to be in charge for
attaching Xen specific devices.
---
sys/conf/files.amd64 |1 +
sys/conf/files.i386 |1 +
sys/dev/xen/console/console.c |2 +-
sys/dev/xen/timer/timer.c |4 +-
sys/dev/xen/xenpci/xenpci.c |
Since Xen PVH guests doesn't have ACPI, we need to create a dummy
bus so top level Xen devices can attach to it (instead of
attaching directly to the nexus) and a pvcpu device that will be used
to fill the pcpu-pc_device field.
---
sys/conf/files.amd64 |1 +
sys/conf/files.i386 |1 +
This hook will only be implemented for bare metal, Xen doesn't require
any bootstrap code since APs are started in long mode with paging
enabled.
---
sys/amd64/amd64/machdep.c |6 +-
sys/amd64/include/sysarch.h |1 +
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git
Since there's no ACPI on PVH guests, we need to create a dummy CPU
device in order to fill the pcpu-pc_device field.
---
sys/conf/files|1 +
sys/dev/xen/pvcpu/pvcpu.c | 101 +
2 files changed, 102 insertions(+), 0 deletions(-)
create
PVH guests don't have an emulated lapic.
---
sys/amd64/amd64/mp_machdep.c | 10 ++
sys/amd64/include/apicvar.h |1 +
sys/i386/include/apicvar.h |1 +
sys/i386/xen/xen_machdep.c |2 ++
sys/x86/x86/local_apic.c |8 +---
sys/x86/xen/pv.c |3 +++
Add the PV shutdown hook to PVH.
---
sys/dev/xen/control/control.c | 37 ++---
1 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/sys/dev/xen/control/control.c b/sys/dev/xen/control/control.c
index bc0609d..78894ba 100644
---
On PVH we don't need to init the shared info page, or disable emulated
devices. Also, make sure PV IPIs are set before starting the APs.
---
sys/x86/xen/hvm.c | 17 -
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/sys/x86/xen/hvm.c b/sys/x86/xen/hvm.c
index
AP startup on PVH follows the PV method, so we need to add a hook in
order to diverge from bare metal.
---
sys/amd64/amd64/mp_machdep.c | 14 +++---
sys/amd64/include/cpu.h |1 +
sys/amd64/include/smp.h |1 +
sys/x86/xen/hvm.c| 12 +-
sys/x86/xen/pv.c
---
sys/amd64/amd64/machdep.c | 41 --
sys/amd64/include/sysarch.h | 12 ++
sys/x86/xen/pv.c| 82 +++
3 files changed, 124 insertions(+), 11 deletions(-)
diff --git a/sys/amd64/amd64/machdep.c
This series is a split of the previous patch Xen x86 DomU PVH
support, with the aim to make the review of the code easier.
The series can also be found on my git repo:
git://xenbits.xen.org/people/royger/freebsd.git pvh_v9
or
This should not introduce any functional change, and makes the
functions suitable to be called before we have actually mapped the
vcpu_info struct on a per-cpu basis.
---
sys/dev/xen/timer/timer.c | 29 -
1 files changed, 20 insertions(+), 9 deletions(-)
diff --git
---
sys/xen/xen-os.h |7 +++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/sys/xen/xen-os.h b/sys/xen/xen-os.h
index c7474d8..e8a5a99 100644
--- a/sys/xen/xen-os.h
+++ b/sys/xen/xen-os.h
@@ -82,6 +82,13 @@ xen_hvm_domain(void)
return (xen_domain_type ==
When running as a PVH guest, there's no emulated i8254, so we need to
use the Xen PV timer as the early source for DELAY. This change allows
for different implementations of the early DELAY function and
implements a Xen variant for it.
---
sys/amd64/amd64/machdep.c |6 ++-
---
sys/amd64/amd64/machdep.c | 50 ++
sys/amd64/include/pc/bios.h |2 +
sys/amd64/include/sysarch.h |1 +
sys/x86/xen/pv.c| 25 +
4 files changed, 59 insertions(+), 19 deletions(-)
diff --git
This adds and enables the console used on XEN kernels.
---
sys/conf/files |4 +-
sys/dev/xen/console/console.c | 37 +--
sys/dev/xen/console/xencons_ring.c | 15 +
sys/i386/include/xen/xen-os.h |1 -
This hook will only be implemented for bare metal, Xen doesn't require
any bootstrap code since APs are started in long mode with paging
enabled.
---
sys/amd64/amd64/machdep.c |6 +-
sys/amd64/include/sysarch.h |1 +
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git
---
sys/xen/xenstore/xenstore.c | 18 +-
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/sys/xen/xenstore/xenstore.c b/sys/xen/xenstore/xenstore.c
index b5cf413..7fa08cc 100644
--- a/sys/xen/xenstore/xenstore.c
+++ b/sys/xen/xenstore/xenstore.c
@@ -229,13 +229,11
---
sys/xen/gnttab.c | 26 +-
1 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/sys/xen/gnttab.c b/sys/xen/gnttab.c
index 03c32b7..6949be5 100644
--- a/sys/xen/gnttab.c
+++ b/sys/xen/gnttab.c
@@ -25,6 +25,7 @@ __FBSDID($FreeBSD$);
#include sys/lock.h
PVH guests don't have an emulated lapic.
---
sys/amd64/amd64/mp_machdep.c | 10 ++
sys/amd64/include/apicvar.h |1 +
sys/i386/include/apicvar.h |1 +
sys/i386/xen/xen_machdep.c |2 ++
sys/x86/x86/local_apic.c |8 +---
sys/x86/xen/pv.c |3 +++
AP startup on PVH follows the PV method, so we need to add a hook in
order to diverge from bare metal.
---
sys/amd64/amd64/mp_machdep.c | 14 +++---
sys/amd64/include/cpu.h |1 +
sys/amd64/include/smp.h |1 +
sys/x86/xen/hvm.c| 12 +-
sys/x86/xen/pv.c
Introduce a Xen specific nexus that is going to be in charge for
attaching Xen specific devices.
---
sys/conf/files.amd64 |1 +
sys/conf/files.i386 |1 +
sys/dev/xen/console/console.c |2 +-
sys/dev/xen/timer/timer.c |4 +-
sys/dev/xen/xenpci/xenpci.c |
Since Xen PVH guests doesn't have ACPI, we need to create a dummy
bus so top level Xen devices can attach to it (instead of
attaching directly to the nexus) and a pvcpu device that will be used
to fill the pcpu-pc_device field.
---
sys/conf/files.amd64 |1 +
sys/conf/files.i386 |1 +
Change order of some of the services in the SI_SUB_INTR stage, so
that it follows the order:
- System intr initialization
- Xen intr initalization
- IO APIC source registration
---
sys/x86/x86/local_apic.c |2 +-
sys/x86/xen/xen_intr.c |2 +-
2 files changed, 2 insertions(+), 2
Event channels should be masked while chaning affinity, or else we
might get spurious/lost interrupts.
---
sys/x86/xen/xen_intr.c | 15 ---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/sys/x86/xen/xen_intr.c b/sys/x86/xen/xen_intr.c
index fd36e68..bc0781e 100644
We need to do some tweaking of the hardware e820 map, since the memory
layout provided by Xen and the e820 map doesn't match.
This consists in clamping the e820 map so that regions above max_pfn
are marked as unusuable.
---
sys/x86/xen/pv.c | 35 +--
1 files
Use madt_setup_io (from madt.c) on Xen apic_enumerator, in order to
parse the interrupt sources from the IO APIC.
I would like to get opinions, but I think we should rename and move
madt_setup_io to io_apic.c.
---
sys/amd64/include/apicvar.h |1 +
sys/i386/include/apicvar.h |1 +
Implement a different set of hooks for IO APIC to use when running
under Xen Dom0.
---
sys/x86/xen/pv.c | 44
1 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/sys/x86/xen/pv.c b/sys/x86/xen/pv.c
index ab4afba..e5ad200 100644
---
Create some hooks for IO APIC operations that will diverge from bare
metal when implemented for Xen Dom0.
This patch should not introduce any changes in functionality, it's a
preparatory patch for the implementation of the Xen IO APIC hooks.
---
sys/amd64/include/apicvar.h | 13
This patch includes changes to xenstore in order to boot as Dom0. This
is different from booting as a guest, since when booted as Dom0
xenstore is not available. This patch sets up a memory page, an
event channel for xenstore and disables xenbus device probing at boot.
It contains a workaround for
Add a new event that will fire each time a PCI device is added to the
system, and allows us to register the device with Xen.
---
sys/dev/pci/pci.c |1 +
sys/sys/eventhandler.h |5 +
sys/x86/xen/pv.c| 21 +
sys/x86/xen/xen_nexus.c |6 ++
Xen PV guests doesn't have a lapic, so disable the lapic call in mca
initialization.
---
sys/x86/x86/mca.c |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/sys/x86/x86/mca.c b/sys/x86/x86/mca.c
index f1369cd..e9d2c1d 100644
--- a/sys/x86/x86/mca.c
+++ b/sys/x86/x86/mca.c
Also disable a couple of ACPI devices that are not usable under Dom0.
---
sys/x86/xen/xen_nexus.c | 24 +---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/sys/x86/xen/xen_nexus.c b/sys/x86/xen/xen_nexus.c
index 288e6b6..823b3bc 100644
---
This series is a split of the previous patch Xen x86 DomU PVH
support, with the aim to make the review of the code easier.
The series can also be found on my git repo:
git://xenbits.xen.org/people/royger/freebsd.git pvh_v7
or
---
sys/amd64/amd64/machdep.c | 50 ++
sys/amd64/include/pc/bios.h |2 +
sys/amd64/include/sysarch.h |1 +
sys/x86/xen/pv.c| 26 ++
4 files changed, 60 insertions(+), 19 deletions(-)
diff --git
---
sys/amd64/include/xen/hypercall.h |7 ---
sys/i386/i386/locore.s|9 +
sys/i386/include/xen/hypercall.h |8
sys/x86/xen/hvm.c | 24 ++--
4 files changed, 19 insertions(+), 29 deletions(-)
diff --git
---
sys/conf/files.amd64 |1 +
sys/x86/xen/mptable.c | 136 +
2 files changed, 137 insertions(+), 0 deletions(-)
create mode 100644 sys/x86/xen/mptable.c
diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64
index bdc1517..3bdc05e 100644
---
sys/xen/xenstore/xenstore.c | 21 ++---
1 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/sys/xen/xenstore/xenstore.c b/sys/xen/xenstore/xenstore.c
index bcf6357..2893c84 100644
--- a/sys/xen/xenstore/xenstore.c
+++ b/sys/xen/xenstore/xenstore.c
@@ -229,13
---
sys/xen/gnttab.c | 26 +-
1 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/sys/xen/gnttab.c b/sys/xen/gnttab.c
index 03c32b7..6949be5 100644
--- a/sys/xen/gnttab.c
+++ b/sys/xen/gnttab.c
@@ -25,6 +25,7 @@ __FBSDID($FreeBSD$);
#include sys/lock.h
This hook will only be implemented for bare metal, Xen doesn't require
any bootstrap code since APs are started in long mode with paging
enabled.
---
sys/amd64/amd64/machdep.c |6 +-
sys/amd64/include/sysarch.h |3 +++
2 files changed, 8 insertions(+), 1 deletions(-)
diff --git
Since Xen PVH guests doesn't have ACPI, we need to create a dummy
pvcpu device that will be used to fill the pcpu-pc_device field.
---
sys/conf/files.amd64 |1 +
sys/x86/xen/pvcpu.c | 84 ++
2 files changed, 85 insertions(+), 0 deletions(-)
AP startup on PVH follows the PV method, so we need to add a hook in
order to diverge from bare metal.
---
sys/amd64/amd64/mp_machdep.c | 16 ---
sys/amd64/include/cpu.h |1 +
sys/x86/xen/hvm.c| 17 +++-
sys/x86/xen/pv.c | 90
Add the PV shutdown hook to PVH.
---
sys/dev/xen/control/control.c | 37 ++---
1 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/sys/dev/xen/control/control.c b/sys/dev/xen/control/control.c
index bc0609d..78894ba 100644
---
---
sys/x86/isa/isa.c |3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/sys/x86/isa/isa.c b/sys/x86/isa/isa.c
index 1a57137..09d1ab7 100644
--- a/sys/x86/isa/isa.c
+++ b/sys/x86/isa/isa.c
@@ -241,3 +241,6 @@ isa_release_resource(device_t bus, device_t child, int
type,
51 matches
Mail list logo