#
1.44 |
|
26-May-2020 |
bouyer |
Ajust pmap_enter_ma() for upcoming new Xen privcmd ioctl: pass flags to xpq_update_foreign() Introduce a pmap MD flag: PMAP_MD_XEN_NOTR, which cause xpq_update_foreign() to use the MMU_PT_UPDATE_NO_TRANSLATE flag. make xpq_update_foreign() return the raw Xen error. This will cause pmap_enter_ma() to return a negative error number in this case, but the only user of this code path is privcmd.c and it can deal with it.
Add pmap_enter_gnt()m which maps a set of Xen grant entries at the specified va in the specified pmap. Use the hooks implemented for EPT to keep track of mapped grand entries in the pmap, and unmap them when pmap_remove() is called. This requires pmap_remove() to be split into a pmap_remove_locked(), to be called from pmap_remove_gnt().
|
#
1.43 |
|
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
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
|
#
1.42 |
|
30-Oct-2019 |
maxv |
branches: 1.42.6; Switch to new PTE bits.
|
Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.41 |
|
13-Feb-2019 |
cherry |
Further restrict the scope of XENPV to relevant parts.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728
|
#
1.40 |
|
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.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
#
1.39 |
|
08-Mar-2017 |
maxv |
branches: 1.39.12; 1.39.14; A few changes: * Use markers to reduce false sharing. * Remove XENDEBUG_SYNC and several debug messages, they are just useless. * Remove xen_vcpu_*. They are unused and not optimized: if we really wanted to flush ranges we should pack the VAs in a mmuext_op array instead of performing several hypercalls in a loop. * Start removing PG_k. * KNF, reorder, simplify and remove stupid comments.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
#
1.38 |
|
06-May-2014 |
cherry |
branches: 1.38.4; 1.38.8; 1.38.12; Use the hypervisor to copy/zero pages. This saves us the extra overheads of setting up temporary kernel mapping/unmapping.
riz@ reports savings of about 2s on a 120s kernel build.
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.37 |
|
30-Jun-2012 |
jym |
branches: 1.37.2; 1.37.4; 1.37.12; Extend the xpmap API, as described in [1]. This change is mechanical and avoids exposing the MD phys_to_machine/machine_to_phys tables directly. Added:
- xpmap_ptom handles PFN (pseudo physical) to MFN (machine frame number) translations, and is under control of the domain. - xpmap_mtop is its counterpart (MFN to PFN), and is under control of hypervisor.
xpmap_ptom_map() map a pseudo-phys address to a machine address xpmap_ptom_unmap() unmap a pseudo-phys address (invalidation) xpmap_ptom_isvalid() check for pseudo-phys address validity
The parameters are physical/machine addresses, like bus_dma/bus_space(9). As x86 MFNs are tracked by u_long (Xen's choice) while machine addresses can be 64 bits entities (PAE), use ptoa() to avoid truncation when bit shifting by PAGE_SHIFT.
I kept the same namespace (xpmap_) to avoid code churn.
[1] http://mail-index.netbsd.org/port-xen/2009/05/09/msg004951.html
XXX will document ptoa/atop/trunc_page separately.
|
#
1.36 |
|
27-Jun-2012 |
jym |
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.35 |
|
24-Jun-2012 |
jym |
Enable the map/unmap recursive mapping functions for all Xen ports for save/restore.
For an unknown reason (to me) Xen refuses to update VM translations when the entry is pointing back to itself (which is precisely what our recursive VM model does). So enable the functions that take care of this, which will avoid all sort of memory corruption upon restore leading domU to trample upon itself.
Save/restore works again for amd64. The occasional domU frontend corruption is still present, but is harmless to dom0. Now we have a working shell and ddb inside domU, that helps debugging a tiny bit.
XXX pull-up to -6.
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
|
#
1.34 |
|
20-Apr-2012 |
rmind |
- Convert x86 MD code, mainly pmap(9) e.g. TLB shootdown code, to use kcpuset(9) and thus replace hardcoded CPU bitmasks. This removes the limitation of maximum CPUs.
- Support up to 256 CPUs on amd64 architecture by default.
Bug fixes, improvements, completion of Xen part and testing on 64-core AMD Opteron(tm) Processor 6282 SE (also, as Xen HVM domU with 128 CPUs) by Manuel Bouyer.
|
Revision tags: yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
#
1.33 |
|
30-Dec-2011 |
cherry |
branches: 1.33.2; per-cpu shadow directory pages should be updated locally via cross-calls. Do this.
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
#
1.32 |
|
23-Nov-2011 |
jym |
branches: 1.32.2; Move Xen-specific functions to Xen pmap. Requested by cherry@.
Un'ifdef XEN in xen_pmap.c, it is always defined there.
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3
|
#
1.31 |
|
08-Nov-2011 |
cherry |
Expose the PG_k #define pt/pd bit to both xen and "baremetal" x86. This is required, since kernel pages are mapped with user permissions in XEN/amd64 since the VM kernel runs in ring3. Since XEN/i386(including PAE) runs in ring1, supervisor mode is appropriate for these ports. We need to share this since the pmap implementation is still shared. Once the xen implementation is sufficiently independant of the x86 one, this can be made private to xen/include/xenpmap.h
|
Revision tags: yamt-pagecache-base2
|
#
1.30 |
|
06-Nov-2011 |
cherry |
[merging from cherry-xenmp] Make the xen MMU op queue locking api private. Implement per-cpu queues.
|
Revision tags: yamt-pagecache-base jym-xensuspend-nbase jym-xensuspend-base
|
#
1.29 |
|
13-Aug-2011 |
cherry |
branches: 1.29.2; remove unnecessary locking overhead for UP
|
#
1.28 |
|
10-Aug-2011 |
cherry |
Introduce locking primitives for Xen pte operations, and xen helper calls for MP related MMU ops
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.27 |
|
29-Apr-2011 |
jym |
branches: 1.27.2; Apply DRY: xpmap_{mtop,ptom}() can reuse xpmap_{mtop,ptom}_masked() for the frame number lookup.
No functional change.
|
#
1.26 |
|
17-Apr-2011 |
mrg |
apply some _KERNEL_OPT.
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
#
1.25 |
|
10-Feb-2011 |
jym |
Use only one function to pin pages with Xen, and provide macros to call it for different levels (L1 => L4).
Replace all calls to xpq_queue_pin_table(...) in MD code with these new functions, with proper #ifdef'ing depending on $MACHINE.
Rationale: - only one function to modify for logging - pushes responsibility to caller for chosing the proper pin level, rather than Xen internal functions; this makes the pin level explicit rather than implicit.
Boot tested for dom0 i386/amd64, PAE included. No functional change intended.
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
#
1.24 |
|
23-Oct-2009 |
snj |
branches: 1.24.4; 1.24.6; 1.24.8; Remove 3rd and 4th clauses. OK cl@ (copyright holder).
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
#
1.23 |
|
29-Jul-2009 |
cegger |
remove Xen2 support. ok bouyer@
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
|
#
1.22 |
|
10-Mar-2009 |
bouyer |
More i386PAE fixes: - x86_round_page, x86_trunc_page, x86_btop and x86_ptob macros are used with physical addresses; cast to paddr_t instead of u_long. Issue pointed out by jym@ - machine_to_phys_mapping[] is a long. This is fine as it holds page frame numbers (and this fits in a 32bit int as physical addresses are only 36bits), but cast to paddr_t before << PAGE_SHIFT - xen_start_info.store_mfn is a long; cast it to paddr_t before << PAGE_SHIFT. should fix issue pointed out by cegger@
|
Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base mjf-devfs2-base
|
#
1.21 |
|
24-Oct-2008 |
jym |
branches: 1.21.2; 1.21.4; 1.21.8; 1.21.12; - 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.20 |
|
24-Oct-2008 |
jym |
- printf -> aprint_* - fix and add comments - make some panic/error messages more relevant - remove last '\n' in DPRINTK() macros, not required as it is already part of format string.
No functional changes.
|
Revision tags: haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.19 |
|
23-Jan-2008 |
bouyer |
branches: 1.19.6; 1.19.10; 1.19.16; 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).
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.18 |
|
11-Jan-2008 |
bouyer |
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.
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase matt-armv6-base jmcneill-pm-base reinoud-bufcleanup-base
|
#
1.17 |
|
28-Nov-2007 |
ad |
branches: 1.17.6; Use the new atomic ops.
|
#
1.16 |
|
22-Nov-2007 |
bouyer |
Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support to NetBSD/Xen, both Dom0 and DomU.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 wrstuden-fixsa-base ppcoea-renovation-base thorpej-atomic-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
#
1.15 |
|
17-Oct-2006 |
bouyer |
branches: 1.15.8; 1.15.14; 1.15.26; 1.15.28; 1.15.32; 1.15.34; Add ELF_PADDR_OFFSET and VIRT_ENTRY strings to __xen_guest ELF section, so that our kernels works with newer xen-3 hypervisors; and correct the value of VIRT_BASE for dom0. Now that we can embed the values of KERNBASE and KERNTEXTOFF in the binary for Xen, make the domU memory layout the same as dom0 for Xen3 (making it the other way round doens't work; probably because of alignement constraints in the hypervisor). The old domU layout is used if options XEN_COMPAT_030001 is present in the kernel config file. Enable this the domU kernel config files for now, in case someone wants to run a NetBSD domU on an older Xen3 installation.
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
#
1.14 |
|
06-Mar-2006 |
bouyer |
branches: 1.14.12; 1.14.14; Implement MULTI_update_va_mapping() and MULTI_update_va_mapping_otherdomain(), which fills in multicall arguments for __HYPERVISOR_update_va_mapping and __HYPERVISOR_update_va_mapping_otherdomain dealing with differences between i386 and amd64.
|
Revision tags: yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.13 |
|
16-Feb-2006 |
perry |
branches: 1.13.2; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
#
1.12 |
|
15-Jan-2006 |
bouyer |
branches: 1.12.2; 1.12.4; Snapshot of work in progress on NetBSD port to Xen3: - kernel (both dom0 and domU) boot, console is functionnal and it can starts software from a ramdisk - there is no driver front-end expect console for domU yet. - dom0 can probe devices and ex(4) work when Xen3 is booted without acpi and apic support. But the on-board IDE doens't get interrupts. The PCI code still needs work (it's hardcoded to mode 1). Some of this code should be shared with ../x86 The physical insterrupt code needs to get MPBIOS and ACPI support, and do interrupt routing to properly interract with Xen. To enable Xen-3.0 support, add options XEN3 to your kernel config file (this will disable Xen2 support) Changes affecting Xen-2.0 support (no functionnal changes intended): - get more constants from genassym for assembly code - remove some unneeded registers move from start() - map the shared info page from start(), and remove the pte = 0xffffffff hack - vector.S: in hypervisor_callback() make sure %esi points to HYPERVISOR_shared_info before accessing the info page. Remplace some hand-written assembly with the equivalent macro defined in frameasm.h - more debug code, dissabled by default.
while here added my copyright on some files I worked on in 2005.
|
#
1.11 |
|
24-Dec-2005 |
perry |
branches: 1.11.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
#
1.10 |
|
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
#
1.9 |
|
07-Nov-2005 |
yamt |
some assym cleanup. - move copyin and friends from locore.S to their own file, copy.S. share it between i386 and xen. - defparam KERNBASE and kill KERNBASE_LOCORE hack. - add more symbols to assym.h and use it where appropriate.
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.8 |
|
20-Aug-2005 |
bouyer |
Implement xpq_queue_machphys_update(), which queues a request to update the machine to physical table (to be used after a MEMOP_increase_reservation).
|
#
1.7 |
|
31-May-2005 |
yamt |
branches: 1.7.2; avoid variable shadowing.
|
#
1.6 |
|
26-May-2005 |
bouyer |
Always call the xpq_queue*() functions at splvm(), so that it's safe to call them from interrupt context. xpq_flush_queue() is called from IPL_NET in if_xennet.c, and other xpq_queue* functions may be called from interrupt context via pmap_kenter*(). Should fix port-xen/30153. Thanks to Jason Thorpe and YAMAMOTO Takashi for enlightments on this issue.
|
Revision tags: kent-audio2-base
|
#
1.5 |
|
16-Apr-2005 |
yamt |
s/foreing/foreign/g ok'ed by Manuel Bouyer.
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base
|
#
1.4 |
|
09-Mar-2005 |
bouyer |
branches: 1.4.2; Merge the bouyer-xen2 branch. This add supports for the Xen 2.0 virtual machine kernel (both privileged and non-privileged domains), and remove support for the old xen 1.2.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge bouyer-xen2-base kent-audio1-base
|
#
1.3 |
|
26-Apr-2004 |
cl |
branches: 1.3.2; 1.3.6; 1.3.8; 1.3.10; Rework the physical<->machine memory mapping: offset physical addresses by 0x100000 (above the I/O Memory "hole") leaving all physical addresses below unused, don't perform phys<->mach mapping for addresses below 0x100000 or beyond the real hardware's physical memory.
-> /dev/mem works now as expected and X works in domain0.
|
#
1.2 |
|
24-Apr-2004 |
cl |
Make bus_space map machine addresses instead of physical addresses.
|
Revision tags: netbsd-2-0-base
|
#
1.1 |
|
11-Mar-2004 |
cl |
branches: 1.1.2; Add port to the Xen virtual machine monitor. (see http://www.cl.cam.ac.uk/Research/SRG/netos/xen/)
|
#
1.43 |
|
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
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
|
#
1.42 |
|
30-Oct-2019 |
maxv |
branches: 1.42.6; Switch to new PTE bits.
|
Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.41 |
|
13-Feb-2019 |
cherry |
Further restrict the scope of XENPV to relevant parts.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728
|
#
1.40 |
|
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.
|
Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
#
1.39 |
|
08-Mar-2017 |
maxv |
branches: 1.39.12; 1.39.14; A few changes: * Use markers to reduce false sharing. * Remove XENDEBUG_SYNC and several debug messages, they are just useless. * Remove xen_vcpu_*. They are unused and not optimized: if we really wanted to flush ranges we should pack the VAs in a mmuext_op array instead of performing several hypercalls in a loop. * Start removing PG_k. * KNF, reorder, simplify and remove stupid comments.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
#
1.38 |
|
06-May-2014 |
cherry |
branches: 1.38.4; 1.38.8; 1.38.12; Use the hypervisor to copy/zero pages. This saves us the extra overheads of setting up temporary kernel mapping/unmapping.
riz@ reports savings of about 2s on a 120s kernel build.
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.37 |
|
30-Jun-2012 |
jym |
branches: 1.37.2; 1.37.4; 1.37.12; Extend the xpmap API, as described in [1]. This change is mechanical and avoids exposing the MD phys_to_machine/machine_to_phys tables directly. Added:
- xpmap_ptom handles PFN (pseudo physical) to MFN (machine frame number) translations, and is under control of the domain. - xpmap_mtop is its counterpart (MFN to PFN), and is under control of hypervisor.
xpmap_ptom_map() map a pseudo-phys address to a machine address xpmap_ptom_unmap() unmap a pseudo-phys address (invalidation) xpmap_ptom_isvalid() check for pseudo-phys address validity
The parameters are physical/machine addresses, like bus_dma/bus_space(9). As x86 MFNs are tracked by u_long (Xen's choice) while machine addresses can be 64 bits entities (PAE), use ptoa() to avoid truncation when bit shifting by PAGE_SHIFT.
I kept the same namespace (xpmap_) to avoid code churn.
[1] http://mail-index.netbsd.org/port-xen/2009/05/09/msg004951.html
XXX will document ptoa/atop/trunc_page separately.
|
#
1.36 |
|
27-Jun-2012 |
jym |
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.35 |
|
24-Jun-2012 |
jym |
Enable the map/unmap recursive mapping functions for all Xen ports for save/restore.
For an unknown reason (to me) Xen refuses to update VM translations when the entry is pointing back to itself (which is precisely what our recursive VM model does). So enable the functions that take care of this, which will avoid all sort of memory corruption upon restore leading domU to trample upon itself.
Save/restore works again for amd64. The occasional domU frontend corruption is still present, but is harmless to dom0. Now we have a working shell and ddb inside domU, that helps debugging a tiny bit.
XXX pull-up to -6.
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
|
#
1.34 |
|
20-Apr-2012 |
rmind |
- Convert x86 MD code, mainly pmap(9) e.g. TLB shootdown code, to use kcpuset(9) and thus replace hardcoded CPU bitmasks. This removes the limitation of maximum CPUs.
- Support up to 256 CPUs on amd64 architecture by default.
Bug fixes, improvements, completion of Xen part and testing on 64-core AMD Opteron(tm) Processor 6282 SE (also, as Xen HVM domU with 128 CPUs) by Manuel Bouyer.
|
Revision tags: yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
#
1.33 |
|
30-Dec-2011 |
cherry |
branches: 1.33.2; per-cpu shadow directory pages should be updated locally via cross-calls. Do this.
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
#
1.32 |
|
23-Nov-2011 |
jym |
branches: 1.32.2; Move Xen-specific functions to Xen pmap. Requested by cherry@.
Un'ifdef XEN in xen_pmap.c, it is always defined there.
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3
|
#
1.31 |
|
08-Nov-2011 |
cherry |
Expose the PG_k #define pt/pd bit to both xen and "baremetal" x86. This is required, since kernel pages are mapped with user permissions in XEN/amd64 since the VM kernel runs in ring3. Since XEN/i386(including PAE) runs in ring1, supervisor mode is appropriate for these ports. We need to share this since the pmap implementation is still shared. Once the xen implementation is sufficiently independant of the x86 one, this can be made private to xen/include/xenpmap.h
|
Revision tags: yamt-pagecache-base2
|
#
1.30 |
|
06-Nov-2011 |
cherry |
[merging from cherry-xenmp] Make the xen MMU op queue locking api private. Implement per-cpu queues.
|
Revision tags: yamt-pagecache-base jym-xensuspend-nbase jym-xensuspend-base
|
#
1.29 |
|
13-Aug-2011 |
cherry |
branches: 1.29.2; remove unnecessary locking overhead for UP
|
#
1.28 |
|
10-Aug-2011 |
cherry |
Introduce locking primitives for Xen pte operations, and xen helper calls for MP related MMU ops
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.27 |
|
29-Apr-2011 |
jym |
branches: 1.27.2; Apply DRY: xpmap_{mtop,ptom}() can reuse xpmap_{mtop,ptom}_masked() for the frame number lookup.
No functional change.
|
#
1.26 |
|
17-Apr-2011 |
mrg |
apply some _KERNEL_OPT.
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
#
1.25 |
|
10-Feb-2011 |
jym |
Use only one function to pin pages with Xen, and provide macros to call it for different levels (L1 => L4).
Replace all calls to xpq_queue_pin_table(...) in MD code with these new functions, with proper #ifdef'ing depending on $MACHINE.
Rationale: - only one function to modify for logging - pushes responsibility to caller for chosing the proper pin level, rather than Xen internal functions; this makes the pin level explicit rather than implicit.
Boot tested for dom0 i386/amd64, PAE included. No functional change intended.
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
#
1.24 |
|
23-Oct-2009 |
snj |
branches: 1.24.4; 1.24.6; 1.24.8; Remove 3rd and 4th clauses. OK cl@ (copyright holder).
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
#
1.23 |
|
29-Jul-2009 |
cegger |
remove Xen2 support. ok bouyer@
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
|
#
1.22 |
|
10-Mar-2009 |
bouyer |
More i386PAE fixes: - x86_round_page, x86_trunc_page, x86_btop and x86_ptob macros are used with physical addresses; cast to paddr_t instead of u_long. Issue pointed out by jym@ - machine_to_phys_mapping[] is a long. This is fine as it holds page frame numbers (and this fits in a 32bit int as physical addresses are only 36bits), but cast to paddr_t before << PAGE_SHIFT - xen_start_info.store_mfn is a long; cast it to paddr_t before << PAGE_SHIFT. should fix issue pointed out by cegger@
|
Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base mjf-devfs2-base
|
#
1.21 |
|
24-Oct-2008 |
jym |
branches: 1.21.2; 1.21.4; 1.21.8; 1.21.12; - 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.20 |
|
24-Oct-2008 |
jym |
- printf -> aprint_* - fix and add comments - make some panic/error messages more relevant - remove last '\n' in DPRINTK() macros, not required as it is already part of format string.
No functional changes.
|
Revision tags: haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.19 |
|
23-Jan-2008 |
bouyer |
branches: 1.19.6; 1.19.10; 1.19.16; 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).
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.18 |
|
11-Jan-2008 |
bouyer |
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.
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase matt-armv6-base jmcneill-pm-base reinoud-bufcleanup-base
|
#
1.17 |
|
28-Nov-2007 |
ad |
branches: 1.17.6; Use the new atomic ops.
|
#
1.16 |
|
22-Nov-2007 |
bouyer |
Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support to NetBSD/Xen, both Dom0 and DomU.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 wrstuden-fixsa-base ppcoea-renovation-base thorpej-atomic-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
#
1.15 |
|
17-Oct-2006 |
bouyer |
branches: 1.15.8; 1.15.14; 1.15.26; 1.15.28; 1.15.32; 1.15.34; Add ELF_PADDR_OFFSET and VIRT_ENTRY strings to __xen_guest ELF section, so that our kernels works with newer xen-3 hypervisors; and correct the value of VIRT_BASE for dom0. Now that we can embed the values of KERNBASE and KERNTEXTOFF in the binary for Xen, make the domU memory layout the same as dom0 for Xen3 (making it the other way round doens't work; probably because of alignement constraints in the hypervisor). The old domU layout is used if options XEN_COMPAT_030001 is present in the kernel config file. Enable this the domU kernel config files for now, in case someone wants to run a NetBSD domU on an older Xen3 installation.
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
#
1.14 |
|
06-Mar-2006 |
bouyer |
branches: 1.14.12; 1.14.14; Implement MULTI_update_va_mapping() and MULTI_update_va_mapping_otherdomain(), which fills in multicall arguments for __HYPERVISOR_update_va_mapping and __HYPERVISOR_update_va_mapping_otherdomain dealing with differences between i386 and amd64.
|
Revision tags: yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.13 |
|
16-Feb-2006 |
perry |
branches: 1.13.2; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
#
1.12 |
|
15-Jan-2006 |
bouyer |
branches: 1.12.2; 1.12.4; Snapshot of work in progress on NetBSD port to Xen3: - kernel (both dom0 and domU) boot, console is functionnal and it can starts software from a ramdisk - there is no driver front-end expect console for domU yet. - dom0 can probe devices and ex(4) work when Xen3 is booted without acpi and apic support. But the on-board IDE doens't get interrupts. The PCI code still needs work (it's hardcoded to mode 1). Some of this code should be shared with ../x86 The physical insterrupt code needs to get MPBIOS and ACPI support, and do interrupt routing to properly interract with Xen. To enable Xen-3.0 support, add options XEN3 to your kernel config file (this will disable Xen2 support) Changes affecting Xen-2.0 support (no functionnal changes intended): - get more constants from genassym for assembly code - remove some unneeded registers move from start() - map the shared info page from start(), and remove the pte = 0xffffffff hack - vector.S: in hypervisor_callback() make sure %esi points to HYPERVISOR_shared_info before accessing the info page. Remplace some hand-written assembly with the equivalent macro defined in frameasm.h - more debug code, dissabled by default.
while here added my copyright on some files I worked on in 2005.
|
#
1.11 |
|
24-Dec-2005 |
perry |
branches: 1.11.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
#
1.10 |
|
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
#
1.9 |
|
07-Nov-2005 |
yamt |
some assym cleanup. - move copyin and friends from locore.S to their own file, copy.S. share it between i386 and xen. - defparam KERNBASE and kill KERNBASE_LOCORE hack. - add more symbols to assym.h and use it where appropriate.
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.8 |
|
20-Aug-2005 |
bouyer |
Implement xpq_queue_machphys_update(), which queues a request to update the machine to physical table (to be used after a MEMOP_increase_reservation).
|
#
1.7 |
|
31-May-2005 |
yamt |
branches: 1.7.2; avoid variable shadowing.
|
#
1.6 |
|
26-May-2005 |
bouyer |
Always call the xpq_queue*() functions at splvm(), so that it's safe to call them from interrupt context. xpq_flush_queue() is called from IPL_NET in if_xennet.c, and other xpq_queue* functions may be called from interrupt context via pmap_kenter*(). Should fix port-xen/30153. Thanks to Jason Thorpe and YAMAMOTO Takashi for enlightments on this issue.
|
Revision tags: kent-audio2-base
|
#
1.5 |
|
16-Apr-2005 |
yamt |
s/foreing/foreign/g ok'ed by Manuel Bouyer.
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base
|
#
1.4 |
|
09-Mar-2005 |
bouyer |
branches: 1.4.2; Merge the bouyer-xen2 branch. This add supports for the Xen 2.0 virtual machine kernel (both privileged and non-privileged domains), and remove support for the old xen 1.2.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge bouyer-xen2-base kent-audio1-base
|
#
1.3 |
|
26-Apr-2004 |
cl |
branches: 1.3.2; 1.3.6; 1.3.8; 1.3.10; Rework the physical<->machine memory mapping: offset physical addresses by 0x100000 (above the I/O Memory "hole") leaving all physical addresses below unused, don't perform phys<->mach mapping for addresses below 0x100000 or beyond the real hardware's physical memory.
-> /dev/mem works now as expected and X works in domain0.
|
#
1.2 |
|
24-Apr-2004 |
cl |
Make bus_space map machine addresses instead of physical addresses.
|
Revision tags: netbsd-2-0-base
|
#
1.1 |
|
11-Mar-2004 |
cl |
branches: 1.1.2; Add port to the Xen virtual machine monitor. (see http://www.cl.cam.ac.uk/Research/SRG/netos/xen/)
|
#
1.42 |
|
30-Oct-2019 |
maxv |
Switch to new PTE bits.
|
Revision tags: netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
#
1.41 |
|
13-Feb-2019 |
cherry |
Further restrict the scope of XENPV to relevant parts.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728
|
#
1.40 |
|
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.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
#
1.39 |
|
08-Mar-2017 |
maxv |
branches: 1.39.12; 1.39.14; A few changes: * Use markers to reduce false sharing. * Remove XENDEBUG_SYNC and several debug messages, they are just useless. * Remove xen_vcpu_*. They are unused and not optimized: if we really wanted to flush ranges we should pack the VAs in a mmuext_op array instead of performing several hypercalls in a loop. * Start removing PG_k. * KNF, reorder, simplify and remove stupid comments.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
#
1.38 |
|
06-May-2014 |
cherry |
branches: 1.38.4; 1.38.8; 1.38.12; Use the hypervisor to copy/zero pages. This saves us the extra overheads of setting up temporary kernel mapping/unmapping.
riz@ reports savings of about 2s on a 120s kernel build.
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.37 |
|
30-Jun-2012 |
jym |
branches: 1.37.2; 1.37.4; 1.37.12; Extend the xpmap API, as described in [1]. This change is mechanical and avoids exposing the MD phys_to_machine/machine_to_phys tables directly. Added:
- xpmap_ptom handles PFN (pseudo physical) to MFN (machine frame number) translations, and is under control of the domain. - xpmap_mtop is its counterpart (MFN to PFN), and is under control of hypervisor.
xpmap_ptom_map() map a pseudo-phys address to a machine address xpmap_ptom_unmap() unmap a pseudo-phys address (invalidation) xpmap_ptom_isvalid() check for pseudo-phys address validity
The parameters are physical/machine addresses, like bus_dma/bus_space(9). As x86 MFNs are tracked by u_long (Xen's choice) while machine addresses can be 64 bits entities (PAE), use ptoa() to avoid truncation when bit shifting by PAGE_SHIFT.
I kept the same namespace (xpmap_) to avoid code churn.
[1] http://mail-index.netbsd.org/port-xen/2009/05/09/msg004951.html
XXX will document ptoa/atop/trunc_page separately.
|
#
1.36 |
|
27-Jun-2012 |
jym |
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.35 |
|
24-Jun-2012 |
jym |
Enable the map/unmap recursive mapping functions for all Xen ports for save/restore.
For an unknown reason (to me) Xen refuses to update VM translations when the entry is pointing back to itself (which is precisely what our recursive VM model does). So enable the functions that take care of this, which will avoid all sort of memory corruption upon restore leading domU to trample upon itself.
Save/restore works again for amd64. The occasional domU frontend corruption is still present, but is harmless to dom0. Now we have a working shell and ddb inside domU, that helps debugging a tiny bit.
XXX pull-up to -6.
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
|
#
1.34 |
|
20-Apr-2012 |
rmind |
- Convert x86 MD code, mainly pmap(9) e.g. TLB shootdown code, to use kcpuset(9) and thus replace hardcoded CPU bitmasks. This removes the limitation of maximum CPUs.
- Support up to 256 CPUs on amd64 architecture by default.
Bug fixes, improvements, completion of Xen part and testing on 64-core AMD Opteron(tm) Processor 6282 SE (also, as Xen HVM domU with 128 CPUs) by Manuel Bouyer.
|
Revision tags: yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
#
1.33 |
|
30-Dec-2011 |
cherry |
branches: 1.33.2; per-cpu shadow directory pages should be updated locally via cross-calls. Do this.
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
#
1.32 |
|
23-Nov-2011 |
jym |
branches: 1.32.2; Move Xen-specific functions to Xen pmap. Requested by cherry@.
Un'ifdef XEN in xen_pmap.c, it is always defined there.
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3
|
#
1.31 |
|
08-Nov-2011 |
cherry |
Expose the PG_k #define pt/pd bit to both xen and "baremetal" x86. This is required, since kernel pages are mapped with user permissions in XEN/amd64 since the VM kernel runs in ring3. Since XEN/i386(including PAE) runs in ring1, supervisor mode is appropriate for these ports. We need to share this since the pmap implementation is still shared. Once the xen implementation is sufficiently independant of the x86 one, this can be made private to xen/include/xenpmap.h
|
Revision tags: yamt-pagecache-base2
|
#
1.30 |
|
06-Nov-2011 |
cherry |
[merging from cherry-xenmp] Make the xen MMU op queue locking api private. Implement per-cpu queues.
|
Revision tags: yamt-pagecache-base jym-xensuspend-nbase jym-xensuspend-base
|
#
1.29 |
|
13-Aug-2011 |
cherry |
branches: 1.29.2; remove unnecessary locking overhead for UP
|
#
1.28 |
|
10-Aug-2011 |
cherry |
Introduce locking primitives for Xen pte operations, and xen helper calls for MP related MMU ops
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.27 |
|
29-Apr-2011 |
jym |
branches: 1.27.2; Apply DRY: xpmap_{mtop,ptom}() can reuse xpmap_{mtop,ptom}_masked() for the frame number lookup.
No functional change.
|
#
1.26 |
|
17-Apr-2011 |
mrg |
apply some _KERNEL_OPT.
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
#
1.25 |
|
10-Feb-2011 |
jym |
Use only one function to pin pages with Xen, and provide macros to call it for different levels (L1 => L4).
Replace all calls to xpq_queue_pin_table(...) in MD code with these new functions, with proper #ifdef'ing depending on $MACHINE.
Rationale: - only one function to modify for logging - pushes responsibility to caller for chosing the proper pin level, rather than Xen internal functions; this makes the pin level explicit rather than implicit.
Boot tested for dom0 i386/amd64, PAE included. No functional change intended.
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
#
1.24 |
|
23-Oct-2009 |
snj |
branches: 1.24.4; 1.24.6; 1.24.8; Remove 3rd and 4th clauses. OK cl@ (copyright holder).
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
#
1.23 |
|
29-Jul-2009 |
cegger |
remove Xen2 support. ok bouyer@
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
|
#
1.22 |
|
10-Mar-2009 |
bouyer |
More i386PAE fixes: - x86_round_page, x86_trunc_page, x86_btop and x86_ptob macros are used with physical addresses; cast to paddr_t instead of u_long. Issue pointed out by jym@ - machine_to_phys_mapping[] is a long. This is fine as it holds page frame numbers (and this fits in a 32bit int as physical addresses are only 36bits), but cast to paddr_t before << PAGE_SHIFT - xen_start_info.store_mfn is a long; cast it to paddr_t before << PAGE_SHIFT. should fix issue pointed out by cegger@
|
Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base mjf-devfs2-base
|
#
1.21 |
|
24-Oct-2008 |
jym |
branches: 1.21.2; 1.21.4; 1.21.8; 1.21.12; - 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.20 |
|
24-Oct-2008 |
jym |
- printf -> aprint_* - fix and add comments - make some panic/error messages more relevant - remove last '\n' in DPRINTK() macros, not required as it is already part of format string.
No functional changes.
|
Revision tags: haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.19 |
|
23-Jan-2008 |
bouyer |
branches: 1.19.6; 1.19.10; 1.19.16; 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).
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.18 |
|
11-Jan-2008 |
bouyer |
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.
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase matt-armv6-base jmcneill-pm-base reinoud-bufcleanup-base
|
#
1.17 |
|
28-Nov-2007 |
ad |
branches: 1.17.6; Use the new atomic ops.
|
#
1.16 |
|
22-Nov-2007 |
bouyer |
Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support to NetBSD/Xen, both Dom0 and DomU.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 wrstuden-fixsa-base ppcoea-renovation-base thorpej-atomic-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
#
1.15 |
|
17-Oct-2006 |
bouyer |
branches: 1.15.8; 1.15.14; 1.15.26; 1.15.28; 1.15.32; 1.15.34; Add ELF_PADDR_OFFSET and VIRT_ENTRY strings to __xen_guest ELF section, so that our kernels works with newer xen-3 hypervisors; and correct the value of VIRT_BASE for dom0. Now that we can embed the values of KERNBASE and KERNTEXTOFF in the binary for Xen, make the domU memory layout the same as dom0 for Xen3 (making it the other way round doens't work; probably because of alignement constraints in the hypervisor). The old domU layout is used if options XEN_COMPAT_030001 is present in the kernel config file. Enable this the domU kernel config files for now, in case someone wants to run a NetBSD domU on an older Xen3 installation.
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
#
1.14 |
|
06-Mar-2006 |
bouyer |
branches: 1.14.12; 1.14.14; Implement MULTI_update_va_mapping() and MULTI_update_va_mapping_otherdomain(), which fills in multicall arguments for __HYPERVISOR_update_va_mapping and __HYPERVISOR_update_va_mapping_otherdomain dealing with differences between i386 and amd64.
|
Revision tags: yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.13 |
|
16-Feb-2006 |
perry |
branches: 1.13.2; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
#
1.12 |
|
15-Jan-2006 |
bouyer |
branches: 1.12.2; 1.12.4; Snapshot of work in progress on NetBSD port to Xen3: - kernel (both dom0 and domU) boot, console is functionnal and it can starts software from a ramdisk - there is no driver front-end expect console for domU yet. - dom0 can probe devices and ex(4) work when Xen3 is booted without acpi and apic support. But the on-board IDE doens't get interrupts. The PCI code still needs work (it's hardcoded to mode 1). Some of this code should be shared with ../x86 The physical insterrupt code needs to get MPBIOS and ACPI support, and do interrupt routing to properly interract with Xen. To enable Xen-3.0 support, add options XEN3 to your kernel config file (this will disable Xen2 support) Changes affecting Xen-2.0 support (no functionnal changes intended): - get more constants from genassym for assembly code - remove some unneeded registers move from start() - map the shared info page from start(), and remove the pte = 0xffffffff hack - vector.S: in hypervisor_callback() make sure %esi points to HYPERVISOR_shared_info before accessing the info page. Remplace some hand-written assembly with the equivalent macro defined in frameasm.h - more debug code, dissabled by default.
while here added my copyright on some files I worked on in 2005.
|
#
1.11 |
|
24-Dec-2005 |
perry |
branches: 1.11.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
#
1.10 |
|
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
#
1.9 |
|
07-Nov-2005 |
yamt |
some assym cleanup. - move copyin and friends from locore.S to their own file, copy.S. share it between i386 and xen. - defparam KERNBASE and kill KERNBASE_LOCORE hack. - add more symbols to assym.h and use it where appropriate.
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.8 |
|
20-Aug-2005 |
bouyer |
Implement xpq_queue_machphys_update(), which queues a request to update the machine to physical table (to be used after a MEMOP_increase_reservation).
|
#
1.7 |
|
31-May-2005 |
yamt |
branches: 1.7.2; avoid variable shadowing.
|
#
1.6 |
|
26-May-2005 |
bouyer |
Always call the xpq_queue*() functions at splvm(), so that it's safe to call them from interrupt context. xpq_flush_queue() is called from IPL_NET in if_xennet.c, and other xpq_queue* functions may be called from interrupt context via pmap_kenter*(). Should fix port-xen/30153. Thanks to Jason Thorpe and YAMAMOTO Takashi for enlightments on this issue.
|
Revision tags: kent-audio2-base
|
#
1.5 |
|
16-Apr-2005 |
yamt |
s/foreing/foreign/g ok'ed by Manuel Bouyer.
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base
|
#
1.4 |
|
09-Mar-2005 |
bouyer |
branches: 1.4.2; Merge the bouyer-xen2 branch. This add supports for the Xen 2.0 virtual machine kernel (both privileged and non-privileged domains), and remove support for the old xen 1.2.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge bouyer-xen2-base kent-audio1-base
|
#
1.3 |
|
26-Apr-2004 |
cl |
branches: 1.3.2; 1.3.6; 1.3.8; 1.3.10; Rework the physical<->machine memory mapping: offset physical addresses by 0x100000 (above the I/O Memory "hole") leaving all physical addresses below unused, don't perform phys<->mach mapping for addresses below 0x100000 or beyond the real hardware's physical memory.
-> /dev/mem works now as expected and X works in domain0.
|
#
1.2 |
|
24-Apr-2004 |
cl |
Make bus_space map machine addresses instead of physical addresses.
|
Revision tags: netbsd-2-0-base
|
#
1.1 |
|
11-Mar-2004 |
cl |
branches: 1.1.2; Add port to the Xen virtual machine monitor. (see http://www.cl.cam.ac.uk/Research/SRG/netos/xen/)
|
Revision tags: isaki-audio2-base
|
#
1.41 |
|
13-Feb-2019 |
cherry |
Further restrict the scope of XENPV to relevant parts.
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728
|
#
1.40 |
|
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.
|
Revision tags: netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
#
1.39 |
|
08-Mar-2017 |
maxv |
branches: 1.39.12; A few changes: * Use markers to reduce false sharing. * Remove XENDEBUG_SYNC and several debug messages, they are just useless. * Remove xen_vcpu_*. They are unused and not optimized: if we really wanted to flush ranges we should pack the VAs in a mmuext_op array instead of performing several hypercalls in a loop. * Start removing PG_k. * KNF, reorder, simplify and remove stupid comments.
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
#
1.38 |
|
06-May-2014 |
cherry |
branches: 1.38.4; 1.38.8; 1.38.12; Use the hypervisor to copy/zero pages. This saves us the extra overheads of setting up temporary kernel mapping/unmapping.
riz@ reports savings of about 2s on a 120s kernel build.
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.37 |
|
30-Jun-2012 |
jym |
branches: 1.37.2; 1.37.4; 1.37.12; Extend the xpmap API, as described in [1]. This change is mechanical and avoids exposing the MD phys_to_machine/machine_to_phys tables directly. Added:
- xpmap_ptom handles PFN (pseudo physical) to MFN (machine frame number) translations, and is under control of the domain. - xpmap_mtop is its counterpart (MFN to PFN), and is under control of hypervisor.
xpmap_ptom_map() map a pseudo-phys address to a machine address xpmap_ptom_unmap() unmap a pseudo-phys address (invalidation) xpmap_ptom_isvalid() check for pseudo-phys address validity
The parameters are physical/machine addresses, like bus_dma/bus_space(9). As x86 MFNs are tracked by u_long (Xen's choice) while machine addresses can be 64 bits entities (PAE), use ptoa() to avoid truncation when bit shifting by PAGE_SHIFT.
I kept the same namespace (xpmap_) to avoid code churn.
[1] http://mail-index.netbsd.org/port-xen/2009/05/09/msg004951.html
XXX will document ptoa/atop/trunc_page separately.
|
#
1.36 |
|
27-Jun-2012 |
jym |
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.35 |
|
24-Jun-2012 |
jym |
Enable the map/unmap recursive mapping functions for all Xen ports for save/restore.
For an unknown reason (to me) Xen refuses to update VM translations when the entry is pointing back to itself (which is precisely what our recursive VM model does). So enable the functions that take care of this, which will avoid all sort of memory corruption upon restore leading domU to trample upon itself.
Save/restore works again for amd64. The occasional domU frontend corruption is still present, but is harmless to dom0. Now we have a working shell and ddb inside domU, that helps debugging a tiny bit.
XXX pull-up to -6.
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
|
#
1.34 |
|
20-Apr-2012 |
rmind |
- Convert x86 MD code, mainly pmap(9) e.g. TLB shootdown code, to use kcpuset(9) and thus replace hardcoded CPU bitmasks. This removes the limitation of maximum CPUs.
- Support up to 256 CPUs on amd64 architecture by default.
Bug fixes, improvements, completion of Xen part and testing on 64-core AMD Opteron(tm) Processor 6282 SE (also, as Xen HVM domU with 128 CPUs) by Manuel Bouyer.
|
Revision tags: yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
#
1.33 |
|
30-Dec-2011 |
cherry |
branches: 1.33.2; per-cpu shadow directory pages should be updated locally via cross-calls. Do this.
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
#
1.32 |
|
23-Nov-2011 |
jym |
branches: 1.32.2; Move Xen-specific functions to Xen pmap. Requested by cherry@.
Un'ifdef XEN in xen_pmap.c, it is always defined there.
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3
|
#
1.31 |
|
08-Nov-2011 |
cherry |
Expose the PG_k #define pt/pd bit to both xen and "baremetal" x86. This is required, since kernel pages are mapped with user permissions in XEN/amd64 since the VM kernel runs in ring3. Since XEN/i386(including PAE) runs in ring1, supervisor mode is appropriate for these ports. We need to share this since the pmap implementation is still shared. Once the xen implementation is sufficiently independant of the x86 one, this can be made private to xen/include/xenpmap.h
|
Revision tags: yamt-pagecache-base2
|
#
1.30 |
|
06-Nov-2011 |
cherry |
[merging from cherry-xenmp] Make the xen MMU op queue locking api private. Implement per-cpu queues.
|
Revision tags: yamt-pagecache-base jym-xensuspend-nbase jym-xensuspend-base
|
#
1.29 |
|
13-Aug-2011 |
cherry |
branches: 1.29.2; remove unnecessary locking overhead for UP
|
#
1.28 |
|
10-Aug-2011 |
cherry |
Introduce locking primitives for Xen pte operations, and xen helper calls for MP related MMU ops
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.27 |
|
29-Apr-2011 |
jym |
branches: 1.27.2; Apply DRY: xpmap_{mtop,ptom}() can reuse xpmap_{mtop,ptom}_masked() for the frame number lookup.
No functional change.
|
#
1.26 |
|
17-Apr-2011 |
mrg |
apply some _KERNEL_OPT.
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
#
1.25 |
|
10-Feb-2011 |
jym |
Use only one function to pin pages with Xen, and provide macros to call it for different levels (L1 => L4).
Replace all calls to xpq_queue_pin_table(...) in MD code with these new functions, with proper #ifdef'ing depending on $MACHINE.
Rationale: - only one function to modify for logging - pushes responsibility to caller for chosing the proper pin level, rather than Xen internal functions; this makes the pin level explicit rather than implicit.
Boot tested for dom0 i386/amd64, PAE included. No functional change intended.
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
#
1.24 |
|
23-Oct-2009 |
snj |
branches: 1.24.4; 1.24.6; 1.24.8; Remove 3rd and 4th clauses. OK cl@ (copyright holder).
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
#
1.23 |
|
29-Jul-2009 |
cegger |
remove Xen2 support. ok bouyer@
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
|
#
1.22 |
|
10-Mar-2009 |
bouyer |
More i386PAE fixes: - x86_round_page, x86_trunc_page, x86_btop and x86_ptob macros are used with physical addresses; cast to paddr_t instead of u_long. Issue pointed out by jym@ - machine_to_phys_mapping[] is a long. This is fine as it holds page frame numbers (and this fits in a 32bit int as physical addresses are only 36bits), but cast to paddr_t before << PAGE_SHIFT - xen_start_info.store_mfn is a long; cast it to paddr_t before << PAGE_SHIFT. should fix issue pointed out by cegger@
|
Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base mjf-devfs2-base
|
#
1.21 |
|
24-Oct-2008 |
jym |
branches: 1.21.2; 1.21.4; 1.21.8; 1.21.12; - 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.20 |
|
24-Oct-2008 |
jym |
- printf -> aprint_* - fix and add comments - make some panic/error messages more relevant - remove last '\n' in DPRINTK() macros, not required as it is already part of format string.
No functional changes.
|
Revision tags: haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.19 |
|
23-Jan-2008 |
bouyer |
branches: 1.19.6; 1.19.10; 1.19.16; 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).
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.18 |
|
11-Jan-2008 |
bouyer |
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.
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase matt-armv6-base jmcneill-pm-base reinoud-bufcleanup-base
|
#
1.17 |
|
28-Nov-2007 |
ad |
branches: 1.17.6; Use the new atomic ops.
|
#
1.16 |
|
22-Nov-2007 |
bouyer |
Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support to NetBSD/Xen, both Dom0 and DomU.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 wrstuden-fixsa-base ppcoea-renovation-base thorpej-atomic-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
#
1.15 |
|
17-Oct-2006 |
bouyer |
branches: 1.15.8; 1.15.14; 1.15.26; 1.15.28; 1.15.32; 1.15.34; Add ELF_PADDR_OFFSET and VIRT_ENTRY strings to __xen_guest ELF section, so that our kernels works with newer xen-3 hypervisors; and correct the value of VIRT_BASE for dom0. Now that we can embed the values of KERNBASE and KERNTEXTOFF in the binary for Xen, make the domU memory layout the same as dom0 for Xen3 (making it the other way round doens't work; probably because of alignement constraints in the hypervisor). The old domU layout is used if options XEN_COMPAT_030001 is present in the kernel config file. Enable this the domU kernel config files for now, in case someone wants to run a NetBSD domU on an older Xen3 installation.
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
#
1.14 |
|
06-Mar-2006 |
bouyer |
branches: 1.14.12; 1.14.14; Implement MULTI_update_va_mapping() and MULTI_update_va_mapping_otherdomain(), which fills in multicall arguments for __HYPERVISOR_update_va_mapping and __HYPERVISOR_update_va_mapping_otherdomain dealing with differences between i386 and amd64.
|
Revision tags: yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.13 |
|
16-Feb-2006 |
perry |
branches: 1.13.2; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
#
1.12 |
|
15-Jan-2006 |
bouyer |
branches: 1.12.2; 1.12.4; Snapshot of work in progress on NetBSD port to Xen3: - kernel (both dom0 and domU) boot, console is functionnal and it can starts software from a ramdisk - there is no driver front-end expect console for domU yet. - dom0 can probe devices and ex(4) work when Xen3 is booted without acpi and apic support. But the on-board IDE doens't get interrupts. The PCI code still needs work (it's hardcoded to mode 1). Some of this code should be shared with ../x86 The physical insterrupt code needs to get MPBIOS and ACPI support, and do interrupt routing to properly interract with Xen. To enable Xen-3.0 support, add options XEN3 to your kernel config file (this will disable Xen2 support) Changes affecting Xen-2.0 support (no functionnal changes intended): - get more constants from genassym for assembly code - remove some unneeded registers move from start() - map the shared info page from start(), and remove the pte = 0xffffffff hack - vector.S: in hypervisor_callback() make sure %esi points to HYPERVISOR_shared_info before accessing the info page. Remplace some hand-written assembly with the equivalent macro defined in frameasm.h - more debug code, dissabled by default.
while here added my copyright on some files I worked on in 2005.
|
#
1.11 |
|
24-Dec-2005 |
perry |
branches: 1.11.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
#
1.10 |
|
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
#
1.9 |
|
07-Nov-2005 |
yamt |
some assym cleanup. - move copyin and friends from locore.S to their own file, copy.S. share it between i386 and xen. - defparam KERNBASE and kill KERNBASE_LOCORE hack. - add more symbols to assym.h and use it where appropriate.
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.8 |
|
20-Aug-2005 |
bouyer |
Implement xpq_queue_machphys_update(), which queues a request to update the machine to physical table (to be used after a MEMOP_increase_reservation).
|
#
1.7 |
|
31-May-2005 |
yamt |
branches: 1.7.2; avoid variable shadowing.
|
#
1.6 |
|
26-May-2005 |
bouyer |
Always call the xpq_queue*() functions at splvm(), so that it's safe to call them from interrupt context. xpq_flush_queue() is called from IPL_NET in if_xennet.c, and other xpq_queue* functions may be called from interrupt context via pmap_kenter*(). Should fix port-xen/30153. Thanks to Jason Thorpe and YAMAMOTO Takashi for enlightments on this issue.
|
Revision tags: kent-audio2-base
|
#
1.5 |
|
16-Apr-2005 |
yamt |
s/foreing/foreign/g ok'ed by Manuel Bouyer.
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base
|
#
1.4 |
|
09-Mar-2005 |
bouyer |
branches: 1.4.2; Merge the bouyer-xen2 branch. This add supports for the Xen 2.0 virtual machine kernel (both privileged and non-privileged domains), and remove support for the old xen 1.2.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge bouyer-xen2-base kent-audio1-base
|
#
1.3 |
|
26-Apr-2004 |
cl |
branches: 1.3.2; 1.3.6; 1.3.8; 1.3.10; Rework the physical<->machine memory mapping: offset physical addresses by 0x100000 (above the I/O Memory "hole") leaving all physical addresses below unused, don't perform phys<->mach mapping for addresses below 0x100000 or beyond the real hardware's physical memory.
-> /dev/mem works now as expected and X works in domain0.
|
#
1.2 |
|
24-Apr-2004 |
cl |
Make bus_space map machine addresses instead of physical addresses.
|
Revision tags: netbsd-2-0-base
|
#
1.1 |
|
11-Mar-2004 |
cl |
branches: 1.1.2; Add port to the Xen virtual machine monitor. (see http://www.cl.cam.ac.uk/Research/SRG/netos/xen/)
|
#
1.39 |
|
08-Mar-2017 |
maxv |
A few changes: * Use markers to reduce false sharing. * Remove XENDEBUG_SYNC and several debug messages, they are just useless. * Remove xen_vcpu_*. They are unused and not optimized: if we really wanted to flush ranges we should pack the VAs in a mmuext_op array instead of performing several hypercalls in a loop. * Start removing PG_k. * KNF, reorder, simplify and remove stupid comments.
|
Revision tags: netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
#
1.38 |
|
06-May-2014 |
cherry |
Use the hypervisor to copy/zero pages. This saves us the extra overheads of setting up temporary kernel mapping/unmapping.
riz@ reports savings of about 2s on a 120s kernel build.
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
#
1.37 |
|
30-Jun-2012 |
jym |
branches: 1.37.2; 1.37.4; 1.37.12; Extend the xpmap API, as described in [1]. This change is mechanical and avoids exposing the MD phys_to_machine/machine_to_phys tables directly. Added:
- xpmap_ptom handles PFN (pseudo physical) to MFN (machine frame number) translations, and is under control of the domain. - xpmap_mtop is its counterpart (MFN to PFN), and is under control of hypervisor.
xpmap_ptom_map() map a pseudo-phys address to a machine address xpmap_ptom_unmap() unmap a pseudo-phys address (invalidation) xpmap_ptom_isvalid() check for pseudo-phys address validity
The parameters are physical/machine addresses, like bus_dma/bus_space(9). As x86 MFNs are tracked by u_long (Xen's choice) while machine addresses can be 64 bits entities (PAE), use ptoa() to avoid truncation when bit shifting by PAGE_SHIFT.
I kept the same namespace (xpmap_) to avoid code churn.
[1] http://mail-index.netbsd.org/port-xen/2009/05/09/msg004951.html
XXX will document ptoa/atop/trunc_page separately.
|
#
1.36 |
|
27-Jun-2012 |
jym |
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.35 |
|
24-Jun-2012 |
jym |
Enable the map/unmap recursive mapping functions for all Xen ports for save/restore.
For an unknown reason (to me) Xen refuses to update VM translations when the entry is pointing back to itself (which is precisely what our recursive VM model does). So enable the functions that take care of this, which will avoid all sort of memory corruption upon restore leading domU to trample upon itself.
Save/restore works again for amd64. The occasional domU frontend corruption is still present, but is harmless to dom0. Now we have a working shell and ddb inside domU, that helps debugging a tiny bit.
XXX pull-up to -6.
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9
|
#
1.34 |
|
20-Apr-2012 |
rmind |
- Convert x86 MD code, mainly pmap(9) e.g. TLB shootdown code, to use kcpuset(9) and thus replace hardcoded CPU bitmasks. This removes the limitation of maximum CPUs.
- Support up to 256 CPUs on amd64 architecture by default.
Bug fixes, improvements, completion of Xen part and testing on 64-core AMD Opteron(tm) Processor 6282 SE (also, as Xen HVM domU with 128 CPUs) by Manuel Bouyer.
|
Revision tags: yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
#
1.33 |
|
30-Dec-2011 |
cherry |
branches: 1.33.2; per-cpu shadow directory pages should be updated locally via cross-calls. Do this.
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
#
1.32 |
|
23-Nov-2011 |
jym |
branches: 1.32.2; Move Xen-specific functions to Xen pmap. Requested by cherry@.
Un'ifdef XEN in xen_pmap.c, it is always defined there.
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3
|
#
1.31 |
|
08-Nov-2011 |
cherry |
Expose the PG_k #define pt/pd bit to both xen and "baremetal" x86. This is required, since kernel pages are mapped with user permissions in XEN/amd64 since the VM kernel runs in ring3. Since XEN/i386(including PAE) runs in ring1, supervisor mode is appropriate for these ports. We need to share this since the pmap implementation is still shared. Once the xen implementation is sufficiently independant of the x86 one, this can be made private to xen/include/xenpmap.h
|
Revision tags: yamt-pagecache-base2
|
#
1.30 |
|
06-Nov-2011 |
cherry |
[merging from cherry-xenmp] Make the xen MMU op queue locking api private. Implement per-cpu queues.
|
Revision tags: yamt-pagecache-base jym-xensuspend-nbase jym-xensuspend-base
|
#
1.29 |
|
13-Aug-2011 |
cherry |
branches: 1.29.2; remove unnecessary locking overhead for UP
|
#
1.28 |
|
10-Aug-2011 |
cherry |
Introduce locking primitives for Xen pte operations, and xen helper calls for MP related MMU ops
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.27 |
|
29-Apr-2011 |
jym |
branches: 1.27.2; Apply DRY: xpmap_{mtop,ptom}() can reuse xpmap_{mtop,ptom}_masked() for the frame number lookup.
No functional change.
|
#
1.26 |
|
17-Apr-2011 |
mrg |
apply some _KERNEL_OPT.
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
#
1.25 |
|
10-Feb-2011 |
jym |
Use only one function to pin pages with Xen, and provide macros to call it for different levels (L1 => L4).
Replace all calls to xpq_queue_pin_table(...) in MD code with these new functions, with proper #ifdef'ing depending on $MACHINE.
Rationale: - only one function to modify for logging - pushes responsibility to caller for chosing the proper pin level, rather than Xen internal functions; this makes the pin level explicit rather than implicit.
Boot tested for dom0 i386/amd64, PAE included. No functional change intended.
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
#
1.24 |
|
23-Oct-2009 |
snj |
branches: 1.24.4; 1.24.6; 1.24.8; Remove 3rd and 4th clauses. OK cl@ (copyright holder).
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
#
1.23 |
|
29-Jul-2009 |
cegger |
remove Xen2 support. ok bouyer@
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base
|
#
1.22 |
|
10-Mar-2009 |
bouyer |
More i386PAE fixes: - x86_round_page, x86_trunc_page, x86_btop and x86_ptob macros are used with physical addresses; cast to paddr_t instead of u_long. Issue pointed out by jym@ - machine_to_phys_mapping[] is a long. This is fine as it holds page frame numbers (and this fits in a 32bit int as physical addresses are only 36bits), but cast to paddr_t before << PAGE_SHIFT - xen_start_info.store_mfn is a long; cast it to paddr_t before << PAGE_SHIFT. should fix issue pointed out by cegger@
|
Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base mjf-devfs2-base
|
#
1.21 |
|
24-Oct-2008 |
jym |
branches: 1.21.2; 1.21.4; 1.21.8; 1.21.12; - 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.20 |
|
24-Oct-2008 |
jym |
- printf -> aprint_* - fix and add comments - make some panic/error messages more relevant - remove last '\n' in DPRINTK() macros, not required as it is already part of format string.
No functional changes.
|
Revision tags: haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
#
1.19 |
|
23-Jan-2008 |
bouyer |
branches: 1.19.6; 1.19.10; 1.19.16; 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).
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
#
1.18 |
|
11-Jan-2008 |
bouyer |
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.
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase matt-armv6-base jmcneill-pm-base reinoud-bufcleanup-base
|
#
1.17 |
|
28-Nov-2007 |
ad |
branches: 1.17.6; Use the new atomic ops.
|
#
1.16 |
|
22-Nov-2007 |
bouyer |
Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support to NetBSD/Xen, both Dom0 and DomU.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 wrstuden-fixsa-base ppcoea-renovation-base thorpej-atomic-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
#
1.15 |
|
17-Oct-2006 |
bouyer |
branches: 1.15.8; 1.15.14; 1.15.26; 1.15.28; 1.15.32; 1.15.34; Add ELF_PADDR_OFFSET and VIRT_ENTRY strings to __xen_guest ELF section, so that our kernels works with newer xen-3 hypervisors; and correct the value of VIRT_BASE for dom0. Now that we can embed the values of KERNBASE and KERNTEXTOFF in the binary for Xen, make the domU memory layout the same as dom0 for Xen3 (making it the other way round doens't work; probably because of alignement constraints in the hypervisor). The old domU layout is used if options XEN_COMPAT_030001 is present in the kernel config file. Enable this the domU kernel config files for now, in case someone wants to run a NetBSD domU on an older Xen3 installation.
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
#
1.14 |
|
06-Mar-2006 |
bouyer |
branches: 1.14.12; 1.14.14; Implement MULTI_update_va_mapping() and MULTI_update_va_mapping_otherdomain(), which fills in multicall arguments for __HYPERVISOR_update_va_mapping and __HYPERVISOR_update_va_mapping_otherdomain dealing with differences between i386 and amd64.
|
Revision tags: yamt-pdpolicy-base yamt-uio_vmspace-base5
|
#
1.13 |
|
16-Feb-2006 |
perry |
branches: 1.13.2; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
#
1.12 |
|
15-Jan-2006 |
bouyer |
branches: 1.12.2; 1.12.4; Snapshot of work in progress on NetBSD port to Xen3: - kernel (both dom0 and domU) boot, console is functionnal and it can starts software from a ramdisk - there is no driver front-end expect console for domU yet. - dom0 can probe devices and ex(4) work when Xen3 is booted without acpi and apic support. But the on-board IDE doens't get interrupts. The PCI code still needs work (it's hardcoded to mode 1). Some of this code should be shared with ../x86 The physical insterrupt code needs to get MPBIOS and ACPI support, and do interrupt routing to properly interract with Xen. To enable Xen-3.0 support, add options XEN3 to your kernel config file (this will disable Xen2 support) Changes affecting Xen-2.0 support (no functionnal changes intended): - get more constants from genassym for assembly code - remove some unneeded registers move from start() - map the shared info page from start(), and remove the pte = 0xffffffff hack - vector.S: in hypervisor_callback() make sure %esi points to HYPERVISOR_shared_info before accessing the info page. Remplace some hand-written assembly with the equivalent macro defined in frameasm.h - more debug code, dissabled by default.
while here added my copyright on some files I worked on in 2005.
|
#
1.11 |
|
24-Dec-2005 |
perry |
branches: 1.11.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
#
1.10 |
|
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
#
1.9 |
|
07-Nov-2005 |
yamt |
some assym cleanup. - move copyin and friends from locore.S to their own file, copy.S. share it between i386 and xen. - defparam KERNBASE and kill KERNBASE_LOCORE hack. - add more symbols to assym.h and use it where appropriate.
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
#
1.8 |
|
20-Aug-2005 |
bouyer |
Implement xpq_queue_machphys_update(), which queues a request to update the machine to physical table (to be used after a MEMOP_increase_reservation).
|
#
1.7 |
|
31-May-2005 |
yamt |
branches: 1.7.2; avoid variable shadowing.
|
#
1.6 |
|
26-May-2005 |
bouyer |
Always call the xpq_queue*() functions at splvm(), so that it's safe to call them from interrupt context. xpq_flush_queue() is called from IPL_NET in if_xennet.c, and other xpq_queue* functions may be called from interrupt context via pmap_kenter*(). Should fix port-xen/30153. Thanks to Jason Thorpe and YAMAMOTO Takashi for enlightments on this issue.
|
Revision tags: kent-audio2-base
|
#
1.5 |
|
16-Apr-2005 |
yamt |
s/foreing/foreign/g ok'ed by Manuel Bouyer.
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base
|
#
1.4 |
|
09-Mar-2005 |
bouyer |
branches: 1.4.2; Merge the bouyer-xen2 branch. This add supports for the Xen 2.0 virtual machine kernel (both privileged and non-privileged domains), and remove support for the old xen 1.2.
|
Revision tags: yamt-km-base2 yamt-km-base kent-audio1-beforemerge bouyer-xen2-base kent-audio1-base
|
#
1.3 |
|
26-Apr-2004 |
cl |
branches: 1.3.2; 1.3.6; 1.3.8; 1.3.10; Rework the physical<->machine memory mapping: offset physical addresses by 0x100000 (above the I/O Memory "hole") leaving all physical addresses below unused, don't perform phys<->mach mapping for addresses below 0x100000 or beyond the real hardware's physical memory.
-> /dev/mem works now as expected and X works in domain0.
|
#
1.2 |
|
24-Apr-2004 |
cl |
Make bus_space map machine addresses instead of physical addresses.
|
Revision tags: netbsd-2-0-base
|
#
1.1 |
|
11-Mar-2004 |
cl |
branches: 1.1.2; Add port to the Xen virtual machine monitor. (see http://www.cl.cam.ac.uk/Research/SRG/netos/xen/)
|