Home | History | Annotate | only in /src/sys/arch/xen/include/i386
History log of /src/sys/arch/xen/include/i386
RevisionDateAuthorComments
 1.2 11-Jan-2008  bouyer branches: 1.2.2; 1.2.4; 1.2.12;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.1 10-Jan-2008  bouyer branches: 1.1.2;
file bus_private.h was initially added on branch bouyer-xeni386.
 1.1.2.1 10-Jan-2008  bouyer Change xeni386 build to match xenamd64:
- machine/ points to xen/include/i386
- remove includes that were identical to the i386/include/ ones; the build
will find them though the xen-ma/machine link.
- include xen files using xen/ not machine/
 1.2.12.2 23-Mar-2008  matt sync with HEAD
 1.2.12.1 11-Jan-2008  matt file bus_private.h was added on branch matt-armv6 on 2008-03-23 02:04:30 +0000
 1.2.4.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.4.1 11-Jan-2008  mjf file bus_private.h was added on branch mjf-devfs on 2008-02-18 21:05:20 +0000
 1.2.2.2 21-Jan-2008  yamt sync with head
 1.2.2.1 11-Jan-2008  yamt file bus_private.h was added on branch yamt-lazymbuf on 2008-01-21 09:40:28 +0000
 1.21 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.20 21-Apr-2020  jdolecek convert to newer HYPERVISOR_physdev_op() interface, now command and the
arg are separate arguments - this is needed for newer physdev_op commands

remove code for PHYSDEVOP_IRQ_UNMASK_NOTIFY, it is obsolete since
interface version 0x00030202 and is unsupported by newer versions of Xen

confirmed working on amd64 Dom0, i386 compile-tested only
 1.19 10-Feb-2019  cherry branches: 1.19.10;
Catchup hypercall interfaces for HYPERVISOR_sched_op which use
arguments to __XEN_INTERFACE_VERSION__ >= 0x00030201

We've been using the sched_op_compat API with sched_op arguments.

fixes PR port-xen/53965
 1.18 02-Feb-2019  cherry Switch NetBSD/xen to use XEN api tag RELEASE-4.11.1

The headers for this api are in sys/external/mit/xen-include-public/dist/
 1.17 24-Jan-2019  cherry The event_channel_op hypercall uses a newer API since
__XEN_INTERFACE_VERSION__ 0x00030202

Since hvm_op only supports event_channel_op via the newer API, we
can't get away with our current event_channel_op_compat shim.

We thus introduce the new API to our internal hypercall C API
interface.

This change should have no effect on the PV kernels, since they will
continue to use the pre 0x00030202 API.
 1.16 26-Jul-2018  maxv Remove the non-PAE-i386 code of Xen. The branches are reordered so that
__x86_64__ comes first, eg:

#if defined(PAE)
/* i386+PAE */
#elif defined(__x86_64__)
/* amd64 */
#else
/* i386 */
#endif

becomes

#ifdef __x86_64__
/* amd64 */
#else
/* i386+PAE */
#endif

Tested on i386pae-domU and amd64-dom0.
 1.15 27-Jun-2012  jym branches: 1.15.38; 1.15.40;
Retire XEN_COMPAT_030001 as detailed on port-xen@:

http://mail-index.netbsd.org/port-xen/2012/06/25/msg007431.html

The xen_p2m API comes next.

ok bouyer@.
Tested on i386 PAE and amd64 (Xen 3.3 on private test bed, and
Xen 3.4 for Amazon EC2).

FWIW, Amazon always reported:

hypervisor0 at mainbus0: Xen version 3.4.3-kaos_t1micro

multiple times for Europe and US West-1, so I guess they are now at
3.4 (32 and 64 bits).
 1.14 07-Dec-2011  cegger switch from xen3-public to xen-public.
 1.13 07-Dec-2011  cegger switch from xen3-public to xen-public.
 1.12 07-Jun-2011  bouyer branches: 1.12.2; 1.12.6;
Don't call psignal() without holding proc_lock. This is the cause of
the reboot of PR port-xen/45028
Now that Xen2 is gone, handle FPU context switches the same way as
amd64. This makes all tests in /usr/tests/lib/libc/ieeefp pass.
 1.11 30-Mar-2011  jym branches: 1.11.2;
Add the HYPERVISOR_sysctl() hypercall.

Although the hypercall arguments (like struct sysctl_readconsole) are not
compatible between different XEN_SYSCTL_INTERFACE_VERSIONs (one of the
reasons why the sysctl calls should only be used by xentools directly),
it's still practical to have when one wants to query Xen's dmesg from
ddb(4) in case of a panic.

Note: additional code is needed for readconsole() functionality, but adding
the hypercall should not cause any harm.
 1.10 19-Oct-2009  bouyer branches: 1.10.4; 1.10.6;
Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen
for the booring work !
 1.9 29-Jul-2009  cegger remove Xen2 support.
ok bouyer@
 1.8 13-Nov-2008  cegger branches: 1.8.4;
add platform_op hypercall (already exists for amd64)
 1.7 13-Nov-2008  cegger prepare move to new interface
 1.6 24-Oct-2008  jym branches: 1.6.2;
- add mfn_to_pfn() and pfn_to_mfn() macros, for rapid conversion between
pseudo-physical and machine frame numbers.

- add HYPERVISOR_crash() for i386 and amd64. Intended to be used by a domain
to notify Xen that it crashed on purpose, and request a dump (if applicable).

No functional changes intended.

Reviewed by Christoph (cegger@).
 1.5 21-Oct-2008  cegger catch up with amd64: add hvm_op hypercall
 1.4 25-Aug-2008  cegger Add machine check hypercall.
There will be one file where this will be used. In the initialization a hypervisor version check will verify, if this feature is usable or not.
 1.3 23-Jan-2008  bouyer branches: 1.3.2; 1.3.8; 1.3.10; 1.3.14; 1.3.16; 1.3.20;
Merge the bouyer-xeni386 branch. This brings in PAE support to NetBSD xeni386
(domU only). PAE support is enabled by 'options PAE', see the new XEN3PAE_DOMU
and INSTALL_XEN3PAE_DOMU kernel config files.

See the comments in arch/i386/include/{pte.h,pmap.h} to see how it works.
In short, we still handle it as a 2-level MMU, with the second level page
directory being 4 pages in size. pmap switching is done by switching the
L2 pages in the L3 entries, instead of loading %cr3. This is almost required
by Xen, which handle the last L2 page (the one mapping 0xc0000000 - 0xffffffff)
in a very special way. But this approach should also work for native PAE
support if ever supported (in fact, the pmap should almost suport native
PAE, what's missing is bootstrap code in locore.S).
 1.2 11-Jan-2008  bouyer branches: 1.2.2;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.1 10-Jan-2008  bouyer branches: 1.1.2;
file hypercalls.h was initially added on branch bouyer-xeni386.
 1.1.2.4 20-Jan-2008  bouyer Remove debug printk()
 1.1.2.3 13-Jan-2008  bouyer Make non-PAE kernels build again.
 1.1.2.2 13-Jan-2008  bouyer Work in progress on xeni386 PAE support:
Make xeni386 build with a 64bit paddr_t. For this vaddr_t vs paddr_t vs
pointers usages had to be clarified.
If 'options PAE' is present in a Xen3 kernel, switch paddr_t, pd_entry_t
and pt_entry_t to 64bits, and add the PAE entry in the __xen_guest ELF section.
 1.1.2.1 10-Jan-2008  bouyer Change xeni386 build to match xenamd64:
- machine/ points to xen/include/i386
- remove includes that were identical to the i386/include/ ones; the build
will find them though the xen-ma/machine link.
- include xen files using xen/ not machine/
 1.2.2.3 04-Feb-2008  yamt sync with head.
 1.2.2.2 21-Jan-2008  yamt sync with head
 1.2.2.1 11-Jan-2008  yamt file hypercalls.h was added on branch yamt-lazymbuf on 2008-01-21 09:40:29 +0000
 1.3.20.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.3.20.1 19-Oct-2008  haad Sync with HEAD.
 1.3.16.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.3.14.3 11-Mar-2010  yamt sync with head
 1.3.14.2 19-Aug-2009  yamt sync with head.
 1.3.14.1 04-May-2009  yamt sync with head.
 1.3.10.2 23-Mar-2008  matt sync with HEAD
 1.3.10.1 23-Jan-2008  matt file hypercalls.h was added on branch matt-armv6 on 2008-03-23 02:04:30 +0000
 1.3.8.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.8.1 28-Sep-2008  mjf Sync with HEAD.
 1.3.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.3.2.1 23-Jan-2008  mjf file hypercalls.h was added on branch mjf-devfs on 2008-02-18 21:05:20 +0000
 1.6.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.8.4.6 27-Aug-2011  jym Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.
 1.8.4.5 02-May-2011  jym Sync with head.
 1.8.4.4 30-Mar-2011  jym Sync with my commits in HEAD.
 1.8.4.3 01-Nov-2009  jym - Upgrade suspend/resume code to comply with Xen2 removal.
- Add support for PAE domUs suspend/resume.
- Fix an issue regarding initialization of the xbd ring I/O that could end
badly during resume, with invalid block operations submitted to dom0 backend.

NetBSD supports PAE under x86_32 by considering the L2 page as being
4 pages long instead of 1.

Xen validates the page types during resume. Sadly, the hypervisor handles
alternative recursive mappings (== PG/PD entries pointing to pages other
than self) inadequately, which could lead to incorrect page pinning.

As a result, the important change with this patch is to clear these alternative
mappings during suspend, and reset them back to their former self upon
resume. For PAE, approx. all 4 PDIR_SLOT_PTEs could be considered as
alternative recursive mappings.

See comments in pmap.c for further details.

Now, let the testing and bug hunting begin.
 1.8.4.2 01-Nov-2009  jym Sync with HEAD.
 1.8.4.1 31-May-2009  jym Modifications for the Xen suspend/migrate/resume branch:

- introduce xenbus_device_{suspend,resume}() functions. These are routines
used to suspend/resume MI parts of the Xenbus device interfaces, like updating
frontend/backend devices' paths found in XenStore.

- introduce HYPERVISOR_sysctl(), an hypercall used only by Xentools to obtain
information from hypervisor (listing VMs, printing console, etc.). I use it
to query xenconsole from ddb(), as a last resort in case of a panic() in
dom0 (xm being not available). Currently unused in the branch; could be, if
requested.

- disable the rwlock(9) used to protect code that could use transient MFNs.
It could trigger nasty context switches in place it should not to.

- fix some bugs in the xennet/xbd suspend/resume pmf(9) handlers.

- following XenSource's design, talk_to_otherend() is now called
watch_otherend(), and free_otherend_details() is used by Xenbus device
suspend/resume routines.

- some slight modifications in pmap regarding APDP. Introduce an inline
function (pmap_unmap_apdp_pde()) that clears APDP entry for the current pmap.

- similarly, implement pmap_unmap_all_apdp_pdes() that iterates through all
pmaps and tears down APDP, as Xen does not handle them properly.

TODO/XXX:

- pmap_unmap_apdp_pde() does not handle APDP shadow entry of PAE. It will,
once I figure out how PAE uses it.

- revisit the pmap locking issue regarding transient MFNs. As NetBSD does not
use kernel preemption and MP for Xen, this could be skipped momentarily. See
http://mail-index.netbsd.org/port-xen/2009/04/27/msg004903.html for details.

- fix a bug regarding grant tables which could technically DoS a dom0 if
ridiculously high consumer/producer indexes are passed down in the ring during
a resume.

All in all, once the grant table index issue and APDP PAE are fixed, next step
is to torture test this branch.

Tested under i386 PAE and non-PAE, Xen3 dom0 and domU. amd64 is only compile
tested.
 1.10.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.10.4.2 12-Jun-2011  rmind sync with head
 1.10.4.1 21-Apr-2011  rmind sync with head
 1.11.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.12.6.1 18-Feb-2012  mrg merge to -current.
 1.12.2.2 30-Oct-2012  yamt sync with head
 1.12.2.1 17-Apr-2012  yamt sync with head
 1.15.40.1 10-Jun-2019  christos Sync with HEAD
 1.15.38.2 26-Jan-2019  pgoyette Sync with HEAD
 1.15.38.1 28-Jul-2018  pgoyette Sync with HEAD
 1.19.10.1 16-Apr-2020  bouyer Reorganise sources to make it possible to include Xen PVHVM support in
native kernels. Among others:
- move xen/include/amd64/hypercall.h to amd64/include/xen and
xen/include/i386/hypercall.h to i386/include/xen
- exclude some native files from the build for xenpv
- add xen to "machine" config statement for amd64 and i386
- split arch/xen/conf/files.xen to arch/xen/conf/files.xen (for pv drivers)
and arch/xen/conf/files.xen.pv (for full pv support)
- add GENERIC_XENHVM kernel config which includes GENERIC and add Xen PV
drivers.
 1.2 11-Jan-2008  bouyer branches: 1.2.2; 1.2.4; 1.2.12;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.1 10-Jan-2008  bouyer branches: 1.1.2;
file i82093var.h was initially added on branch bouyer-xeni386.
 1.1.2.1 10-Jan-2008  bouyer Change xeni386 build to match xenamd64:
- machine/ points to xen/include/i386
- remove includes that were identical to the i386/include/ ones; the build
will find them though the xen-ma/machine link.
- include xen files using xen/ not machine/
 1.2.12.2 23-Mar-2008  matt sync with HEAD
 1.2.12.1 11-Jan-2008  matt file i82093var.h was added on branch matt-armv6 on 2008-03-23 02:04:30 +0000
 1.2.4.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.4.1 11-Jan-2008  mjf file i82093var.h was added on branch mjf-devfs on 2008-02-18 21:05:20 +0000
 1.2.2.2 21-Jan-2008  yamt sync with head
 1.2.2.1 11-Jan-2008  yamt file i82093var.h was added on branch yamt-lazymbuf on 2008-01-21 09:40:29 +0000
 1.2 11-Jan-2008  bouyer branches: 1.2.2; 1.2.4; 1.2.12;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.1 10-Jan-2008  bouyer branches: 1.1.2;
file i82489var.h was initially added on branch bouyer-xeni386.
 1.1.2.1 10-Jan-2008  bouyer Change xeni386 build to match xenamd64:
- machine/ points to xen/include/i386
- remove includes that were identical to the i386/include/ ones; the build
will find them though the xen-ma/machine link.
- include xen files using xen/ not machine/
 1.2.12.2 23-Mar-2008  matt sync with HEAD
 1.2.12.1 11-Jan-2008  matt file i82489var.h was added on branch matt-armv6 on 2008-03-23 02:04:30 +0000
 1.2.4.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.4.1 11-Jan-2008  mjf file i82489var.h was added on branch mjf-devfs on 2008-02-18 21:05:20 +0000
 1.2.2.2 21-Jan-2008  yamt sync with head
 1.2.2.1 11-Jan-2008  yamt file i82489var.h was added on branch yamt-lazymbuf on 2008-01-21 09:40:29 +0000
 1.2 11-Jan-2008  bouyer branches: 1.2.2; 1.2.4; 1.2.12;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.1 10-Jan-2008  bouyer branches: 1.1.2;
file intr.h was initially added on branch bouyer-xeni386.
 1.1.2.1 10-Jan-2008  bouyer Change xeni386 build to match xenamd64:
- machine/ points to xen/include/i386
- remove includes that were identical to the i386/include/ ones; the build
will find them though the xen-ma/machine link.
- include xen files using xen/ not machine/
 1.2.12.2 23-Mar-2008  matt sync with HEAD
 1.2.12.1 11-Jan-2008  matt file intr.h was added on branch matt-armv6 on 2008-03-23 02:04:30 +0000
 1.2.4.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.4.1 11-Jan-2008  mjf file intr.h was added on branch mjf-devfs on 2008-02-18 21:05:20 +0000
 1.2.2.2 21-Jan-2008  yamt sync with head
 1.2.2.1 11-Jan-2008  yamt file intr.h was added on branch yamt-lazymbuf on 2008-01-21 09:40:30 +0000
 1.2 11-Jan-2008  bouyer branches: 1.2.2; 1.2.4; 1.2.12;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.1 10-Jan-2008  bouyer branches: 1.1.2;
file pci_machdep.h was initially added on branch bouyer-xeni386.
 1.1.2.1 10-Jan-2008  bouyer Change xeni386 build to match xenamd64:
- machine/ points to xen/include/i386
- remove includes that were identical to the i386/include/ ones; the build
will find them though the xen-ma/machine link.
- include xen files using xen/ not machine/
 1.2.12.2 23-Mar-2008  matt sync with HEAD
 1.2.12.1 11-Jan-2008  matt file pci_machdep.h was added on branch matt-armv6 on 2008-03-23 02:04:30 +0000
 1.2.4.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.4.1 11-Jan-2008  mjf file pci_machdep.h was added on branch mjf-devfs on 2008-02-18 21:05:20 +0000
 1.2.2.2 21-Jan-2008  yamt sync with head
 1.2.2.1 11-Jan-2008  yamt file pci_machdep.h was added on branch yamt-lazymbuf on 2008-01-21 09:40:30 +0000
 1.2 11-Jan-2008  bouyer branches: 1.2.2; 1.2.4; 1.2.12;
Merge the bouyer-xeni386 branch to head, at tag bouyer-xeni386-merge1 (the
branch is still active and will see i386PAE support developement).
Sumary of changes:
- switch xeni386 to the x86/x86/pmap.c, and the xen/x86/x86_xpmap.c
pmap bootstrap.
- merge back most of xen/i386/ to i386/i386
- change the build to reduce diffs between i386 and amd64 in file locations
- remove include files that were identical to the i386/amd64 counterparts,
the build will find them via the xen-ma/machine link.
 1.1 10-Jan-2008  bouyer branches: 1.1.2;
file pic.h was initially added on branch bouyer-xeni386.
 1.1.2.1 10-Jan-2008  bouyer Change xeni386 build to match xenamd64:
- machine/ points to xen/include/i386
- remove includes that were identical to the i386/include/ ones; the build
will find them though the xen-ma/machine link.
- include xen files using xen/ not machine/
 1.2.12.2 23-Mar-2008  matt sync with HEAD
 1.2.12.1 11-Jan-2008  matt file pic.h was added on branch matt-armv6 on 2008-03-23 02:04:30 +0000
 1.2.4.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.4.1 11-Jan-2008  mjf file pic.h was added on branch mjf-devfs on 2008-02-18 21:05:20 +0000
 1.2.2.2 21-Jan-2008  yamt sync with head
 1.2.2.1 11-Jan-2008  yamt file pic.h was added on branch yamt-lazymbuf on 2008-01-21 09:40:30 +0000

RSS XML Feed