The NetBSD Project

CVS log for src/sys/arch/xen/x86/xenfunc.c

[BACK] Up to [cvs.NetBSD.org] / src / sys / arch / xen / x86

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.29 / (download) - annotate - [select for diffs], Sat Aug 20 23:48:51 2022 UTC (19 months, 4 weeks ago) by riastradh
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10, bouyer-sunxi-drm-base, bouyer-sunxi-drm, HEAD
Changes since 1.28: +3 -2 lines
Diff to previous 1.28 (colored)

x86: Split most of pmap.h into pmap_private.h or vmparam.h.

This way pmap.h only contains the MD definition of the MI pmap(9)
API, which loads of things in the kernel rely on, so changing x86
pmap internals no longer requires recompiling the entire kernel every
time.

Callers needing these internals must now use machine/pmap_private.h.
Note: This is not x86/pmap_private.h because it contains three parts:

1. CPU-specific (different for i386/amd64) definitions used by...

2. common definitions, including Xenisms like xpmap_ptetomach,
   further used by...

3. more CPU-specific inlines for pmap_pte_* operations

So {amd64,i386}/pmap_private.h defines 1, includes x86/pmap_private.h
for 2, and then defines 3.  Maybe we should split that out into a new
pmap_pte.h to reduce this trouble.

No functional change intended, other than that some .c files must
include machine/pmap_private.h when previously uvm/uvm_pmap.h
polluted the namespace with pmap internals.

Note: This migrates part of i386/pmap.h into i386/vmparam.h --
specifically the parts that are needed for several constants defined
in vmparam.h:

VM_MAXUSER_ADDRESS
VM_MAX_ADDRESS
VM_MAX_KERNEL_ADDRESS
VM_MIN_KERNEL_ADDRESS

Since i386 needs PDP_SIZE in vmparam.h, I added it there on amd64
too, just to keep things parallel.

Revision 1.28 / (download) - annotate - [select for diffs], Wed May 6 19:47:05 2020 UTC (3 years, 11 months ago) by bouyer
Branch: MAIN
CVS Tags: thorpej-i2c-spi-conf2-base, thorpej-i2c-spi-conf2, thorpej-i2c-spi-conf-base, thorpej-i2c-spi-conf, thorpej-futex2-base, thorpej-futex2, thorpej-futex-base, thorpej-futex, thorpej-cfargs2-base, thorpej-cfargs2, thorpej-cfargs-base, thorpej-cfargs, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Changes since 1.27: +4 -4 lines
Diff to previous 1.27 (colored)

xpq_queue_* use per-cpu queue; splvm() is enough to protect them.
remove the XXX SMP comments.

Revision 1.27 / (download) - annotate - [select for diffs], Sat Apr 25 15:26:17 2020 UTC (3 years, 11 months ago) by bouyer
Branch: MAIN
Changes since 1.26: +12 -2 lines
Diff to previous 1.26 (colored)

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 1.26.8.2 / (download) - annotate - [select for diffs], Sun Apr 12 17:16:58 2020 UTC (4 years ago) by bouyer
Branch: bouyer-xenpvh
Changes since 1.26.8.1: +5 -3 lines
Diff to previous 1.26.8.1 (colored) to branchpoint 1.26 (colored) next main 1.27 (colored)

kpreempt_disable() only for x86_64 (which calls pmap_changeprot_local)).
On i386 curcpu() is not valid yet and we don't need preemption disabled.

Revision 1.26.8.1 / (download) - annotate - [select for diffs], Sat Apr 11 18:26:07 2020 UTC (4 years ago) by bouyer
Branch: bouyer-xenpvh
Changes since 1.26: +10 -2 lines
Diff to previous 1.26 (colored)

Move softint and preemtion-related functions out of x86/x86/intr.c to
  its own file, x86/x86/x86_softintr.c
Add x86/x86/x86_softintr.c for native and XenPV
Make sure XenPV also check ci_ioending, which is used for softints.
Switch XenPV to fast softints and allow kernel preemption.
kpreempt_disable() before calling pmap_changeprot_local()
run  xen_wallclock_time() and xen_global_systime_ns() at splshed() to
  avoid being interrupted.

XXX amd64 lock stubs are racy for XPENDING

Revision 1.18.2.1 / (download) - annotate - [select for diffs], Mon Jun 10 22:06:56 2019 UTC (4 years, 10 months ago) by christos
Branch: phil-wifi
Changes since 1.18: +52 -13 lines
Diff to previous 1.18 (colored) next main 1.19 (colored)

Sync with HEAD

Revision 1.26 / (download) - annotate - [select for diffs], Sat May 4 11:15:49 2019 UTC (4 years, 11 months ago) by kre
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, phil-wifi-20190609, netbsd-9-base, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, is-mlppp-base, is-mlppp, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, ad-namecache-base3, ad-namecache-base2, ad-namecache-base1, ad-namecache-base, ad-namecache
Branch point for: bouyer-xenpvh
Changes since 1.25: +3 -3 lines
Diff to previous 1.25 (colored)


More of maxv's "switch to proper types" - hopefully unbreak i386 build.

Revision 1.25 / (download) - annotate - [select for diffs], Sat May 4 07:20:22 2019 UTC (4 years, 11 months ago) by maxv
Branch: MAIN
Changes since 1.24: +5 -5 lines
Diff to previous 1.24 (colored)

More inlined ASM. While here switch to proper types.

Revision 1.17.2.6 / (download) - annotate - [select for diffs], Fri Jan 18 08:50:25 2019 UTC (5 years, 3 months ago) by pgoyette
Branch: pgoyette-compat
CVS Tags: pgoyette-compat-merge-20190127
Changes since 1.17.2.5: +26 -92 lines
Diff to previous 1.17.2.5 (colored) to branchpoint 1.17 (colored) next main 1.18 (colored)

Synch with HEAD

Revision 1.24 / (download) - annotate - [select for diffs], Sun Jan 6 14:35:31 2019 UTC (5 years, 3 months ago) by cherry
Branch: MAIN
CVS Tags: pgoyette-compat-20190127, pgoyette-compat-20190118, isaki-audio2-base, isaki-audio2
Changes since 1.23: +24 -90 lines
Diff to previous 1.23 (colored)

Rollback http://mail-index.netbsd.org/source-changes/2018/12/22/msg101629.html

This change breaks module loading due to weak alias being unsupported
in the kernel module linker.

Requested by maxv@ and others as it affects their work.

No immediate decision on a replacement method is available, but other options
suggested include pre-processing, conditional compilation (#ifdef etc) and other
source level methods to avoid linktime decision making.

Revision 1.17.2.5 / (download) - annotate - [select for diffs], Wed Dec 26 14:01:46 2018 UTC (5 years, 3 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.17.2.4: +92 -26 lines
Diff to previous 1.17.2.4 (colored) to branchpoint 1.17 (colored)

Sync with HEAD, resolve a few conflicts

Revision 1.23 / (download) - annotate - [select for diffs], Sat Dec 22 21:27:22 2018 UTC (5 years, 3 months ago) by cherry
Branch: MAIN
CVS Tags: pgoyette-compat-1226
Changes since 1.22: +92 -26 lines
Diff to previous 1.22 (colored)

Introduce a weak alias method of exporting different implementations
of the same API.

For eg: the amd64 native implementation of invlpg() now becomes
amd64_invlpg() with a weak symbol export of invlpg(), while the XEN
implementation becomes xen_invlpg(), also weakly exported as invlpg()

Note that linking in both together without having an override function
named invlpg() would be a mistake, as we have limited control over
which of the two options would emerge as the finally exported invlpg()
resulting in a potential situation where the wrong function is finally
exported. This change avoids this situation.

We should however include an override function invlpg() in that case,
such that it is able to then pass on the call to the appropriate
backing function (amd64_invlpg() in the case of native, and
xen_invlpg() in the case of under XEN virtualisation) at runtime.

This change does not introduce such a function and therefore does not
alter builds to include native as well as XEN implementations in the
same binary. This will be done later, with the introduction of XEN
PVHVM mode, where precisely such a runtime switch is required.

There are no operational changes introduced by this change.

Revision 1.17.2.4 / (download) - annotate - [select for diffs], Sat Oct 20 06:58:30 2018 UTC (5 years, 6 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.17.2.3: +8 -5 lines
Diff to previous 1.17.2.3 (colored) to branchpoint 1.17 (colored)

Sync with head

Revision 1.22 / (download) - annotate - [select for diffs], Thu Oct 18 04:17:18 2018 UTC (5 years, 6 months ago) by cherry
Branch: MAIN
CVS Tags: pgoyette-compat-1126, pgoyette-compat-1020
Changes since 1.21: +8 -5 lines
Diff to previous 1.21 (colored)

Zero out page table memory for IDT before use.
To copy the IDT entry before registration, de-reference the indexed
value, not the first entry.
Add a MAX_XEN_IDT value for max entries we expect and KASSERT() for
this as a sanity check.

Revision 1.17.2.3 / (download) - annotate - [select for diffs], Sun Sep 30 01:45:48 2018 UTC (5 years, 6 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.17.2.2: +46 -2 lines
Diff to previous 1.17.2.2 (colored) to branchpoint 1.17 (colored)

Ssync with HEAD

Revision 1.21 / (download) - annotate - [select for diffs], Sun Sep 23 15:28:49 2018 UTC (5 years, 6 months ago) by cherry
Branch: MAIN
CVS Tags: pgoyette-compat-0930
Changes since 1.20: +6 -2 lines
Diff to previous 1.20 (colored)

Fix for i386, functionality intended in:
http://mail-index.netbsd.org/source-changes/2018/09/23/msg099357.html

This should fix the build for both GENERIC and XEN3PAE_DOM0

This has not been boot tested on native or xen3pae

Notes: pmap_changeprot_local() seems to be x86_64 only.
I was a bit surprised by this initially, but I suspect that the table
protections are enforced via ring0/ring1 fencing rather than page protections

the gdt registration code in i386 is still messy. I will leave it as is
for now - to avoid a rabbit hole.

Revision 1.20 / (download) - annotate - [select for diffs], Sun Sep 23 00:59:59 2018 UTC (5 years, 6 months ago) by cherry
Branch: MAIN
Changes since 1.19: +42 -2 lines
Diff to previous 1.19 (colored)

Make XEN use the same api as native, for idt vector allocation
and registration.

lidt() placed in xenfunc() on maxv@ suggestion.

There should be no functional change due to this commit.

Tested on amd64 native and XEN.

Revision 1.17.2.2 / (download) - annotate - [select for diffs], Sat Jul 28 04:37:43 2018 UTC (5 years, 8 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.17.2.1: +2 -10 lines
Diff to previous 1.17.2.1 (colored) to branchpoint 1.17 (colored)

Sync with HEAD

Revision 1.19 / (download) - annotate - [select for diffs], Thu Jul 26 15:06:14 2018 UTC (5 years, 8 months ago) by maxv
Branch: MAIN
CVS Tags: pgoyette-compat-0906, pgoyette-compat-0728
Changes since 1.18: +2 -10 lines
Diff to previous 1.18 (colored)

Remove dead code.

Revision 1.17.2.1 / (download) - annotate - [select for diffs], Mon Jun 25 07:25:47 2018 UTC (5 years, 9 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.17: +5 -5 lines
Diff to previous 1.17 (colored)

Sync with HEAD

Revision 1.18 / (download) - annotate - [select for diffs], Sun Jun 24 20:28:57 2018 UTC (5 years, 9 months ago) by jdolecek
Branch: MAIN
CVS Tags: phil-wifi-base, pgoyette-compat-0625
Branch point for: phil-wifi
Changes since 1.17: +5 -5 lines
Diff to previous 1.17 (colored)

mark with XXXSMP all remaining spl*() and tsleep() calls

Revision 1.13.10.1 / (download) - annotate - [select for diffs], Sun Dec 3 11:36:51 2017 UTC (6 years, 4 months ago) by jdolecek
Branch: tls-maxphys
Changes since 1.13: +83 -8 lines
Diff to previous 1.13 (colored) next main 1.14 (colored)

update from HEAD

Revision 1.17 / (download) - annotate - [select for diffs], Sun Oct 15 10:58:32 2017 UTC (6 years, 6 months ago) by maxv
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202, pgoyette-compat-base, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315
Branch point for: pgoyette-compat
Changes since 1.16: +8 -0 lines
Diff to previous 1.16 (colored)

Add setusergs on Xen, and simplify.

Revision 1.13.28.3 / (download) - annotate - [select for diffs], Mon Aug 28 17:51:57 2017 UTC (6 years, 7 months ago) by skrll
Branch: nick-nhusb
Changes since 1.13.28.2: +3 -3 lines
Diff to previous 1.13.28.2 (colored) to branchpoint 1.13 (colored) next main 1.14 (colored)

Sync with HEAD

Revision 1.15.2.1 / (download) - annotate - [select for diffs], Fri Apr 21 16:53:39 2017 UTC (7 years ago) by bouyer
Branch: bouyer-socketcan
Changes since 1.15: +3 -3 lines
Diff to previous 1.15 (colored) next main 1.16 (colored)

Sync with HEAD

Revision 1.13.32.2 / (download) - annotate - [select for diffs], Mon Mar 20 06:57:23 2017 UTC (7 years, 1 month ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.13.32.1: +3 -3 lines
Diff to previous 1.13.32.1 (colored) to branchpoint 1.13 (colored) next main 1.14 (colored)

Sync with HEAD

Revision 1.13.28.2 / (download) - annotate - [select for diffs], Sun Feb 5 13:40:23 2017 UTC (7 years, 2 months ago) by skrll
Branch: nick-nhusb
Changes since 1.13.28.1: +14 -14 lines
Diff to previous 1.13.28.1 (colored) to branchpoint 1.13 (colored)

Sync with HEAD

Revision 1.16 / (download) - annotate - [select for diffs], Sun Feb 5 10:42:21 2017 UTC (7 years, 2 months ago) by maxv
Branch: MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-20170426, pgoyette-localcount-20170320, perseant-stdc-iso10646-base, perseant-stdc-iso10646, nick-nhusb-base-20170825, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, matt-nb8-mediatek-base, matt-nb8-mediatek, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1
Changes since 1.15: +3 -3 lines
Diff to previous 1.15 (colored)

Rename ldt->ldtstore and gdt->gdtstore on i386. It reduces the diff with
amd64, and makes it easier to track down these variables on nxr - 'ldt'
and 'gdt' being common keywords.

Revision 1.13.32.1 / (download) - annotate - [select for diffs], Sat Jan 7 08:56:29 2017 UTC (7 years, 3 months ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.13: +74 -7 lines
Diff to previous 1.13 (colored)

Sync with HEAD.  (Note that most of these changes are simply $NetBSD$
tag issues.)

Revision 1.15 / (download) - annotate - [select for diffs], Tue Dec 13 10:21:33 2016 UTC (7 years, 4 months ago) by kamil
Branch: MAIN
CVS Tags: pgoyette-localcount-20170107, nick-nhusb-base-20170204, bouyer-socketcan-base
Branch point for: bouyer-socketcan
Changes since 1.14: +14 -14 lines
Diff to previous 1.14 (colored)

Switch x86 CPU Debug Register types from vaddr_t to register_t

This is more opaque and appropriate type, as vaddr_t is meant to be used
for vitual address value. Not all DR on x86 are used to represent virtual
address (DR6 and DR7 are definitely not).

No functional change intended.

Change suggested by <christos>

Sponsored by <The NetBSD Foundation>

Revision 1.13.28.1 / (download) - annotate - [select for diffs], Mon Dec 5 10:54:59 2016 UTC (7 years, 4 months ago) by skrll
Branch: nick-nhusb
Changes since 1.13: +72 -5 lines
Diff to previous 1.13 (colored)

Sync with HEAD

Revision 1.14 / (download) - annotate - [select for diffs], Sun Nov 27 14:49:21 2016 UTC (7 years, 4 months ago) by kamil
Branch: MAIN
CVS Tags: nick-nhusb-base-20161204
Changes since 1.13: +72 -5 lines
Diff to previous 1.13 (colored)

Add accessors for available x86 Debug Registers

There are 8 Debug Registers on i386 (available at least since 80386) and 16
on AMD64. Currently DR4 and DR5 are reserved on both cpu-families and
DR9-DR15 are still reserved on AMD64. Therefore add accessors for DR0-DR3,
DR6-DR7 for all ports.

Debug Registers x86:
 * DR0-DR3  Debug Address Registers
 * DR4-DR5  Reserved
 * DR6      Debug Status Register
 * DR7      Debug Control Register
 * DR8-DR15 Reserved

Access the registers is available only from a kernel (ring 0) as there is
needed top protected access. For this reason there is need to use special
XEN functions to get and set the registers in the XEN3 kernels.

XEN specific functions as defined in NetBSD:
 - HYPERVISOR_get_debugreg()
 - HYPERVISOR_set_debugreg()

This code extends the existing rdr6() and ldr6() accessor for additional:
 - rdr0() & ldr0()
 - rdr1() & ldr1()
 - rdr2() & ldr2()
 - rdr3() & ldr3()
 - rdr7() & ldr7()

Traditionally accessors for DR6 were passing vaddr_t argument, while it's
appropriate type for DR0-DR3, DR6-DR7 should be using u_long, however it's
not a big deal. The resulting functionality should be equivalent so stick
to this convention and use the vaddr_t type for all DR accessors.

There was already a function defined for rdr6() in XEN, but it had a nit on
AMD64 as it was casting HYPERVISOR_get_debugreg() to u_int (32-bit on
AMD64), truncating result. It still works for DR6, but for the sake of
simplicity always return full 64-bit value.

New accessors duplicate functionality of the dr0() function available on
i386 within the KSTACK_CHECK_DR0 option. dr0() is a specialized layer with
logic to set appropriate types of interrupts, now accessors are designed to
pass verbatim values from user-land (with simple sanity checks in the
kernel). At the moment there are no plans to make possible to coexist
KSTACK_CHECK_DR0 with debug registers for user applications (debuggers).

     options KSTACK_CHECK_DR0
     Detect kernel stack overflow using DR0 register.  This option uses DR0
     register exclusively so you can't use DR0 register for other purpose
     (e.g., hardware breakpoint) if you turn this on.

The KSTACK_CHECK_DR0 functionality was designed for i386 and never ported
to amd64.

Code tested on i386 and amd64 with kernels: GENERIC, XEN3_DOMU, XEN3_DOM0.

Sponsored by <The NetBSD Foundation>

Revision 1.12.2.1 / (download) - annotate - [select for diffs], Thu Nov 10 14:31:45 2011 UTC (12 years, 5 months ago) by yamt
Branch: yamt-pagecache
CVS Tags: yamt-pagecache-tag8
Changes since 1.12: +2 -8 lines
Diff to previous 1.12 (colored) next main 1.13 (colored)

sync with head

Revision 1.13 / (download) - annotate - [select for diffs], Sun Nov 6 11:40:47 2011 UTC (12 years, 5 months ago) by cherry
Branch: MAIN
CVS Tags: yamt-pagecache-base9, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, tls-maxphys-base, tls-earlyentropy-base, tls-earlyentropy, rmind-smpnet-nbase, rmind-smpnet-base, rmind-smpnet, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, pgoyette-localcount-base, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, nick-nhusb-base-20161004, nick-nhusb-base-20160907, nick-nhusb-base-20160529, nick-nhusb-base-20160422, nick-nhusb-base-20160319, nick-nhusb-base-20151226, nick-nhusb-base-20150921, nick-nhusb-base-20150606, nick-nhusb-base-20150406, nick-nhusb-base, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, localcount-20160914, khorben-n900, jmcneill-usbmp-pre-base2, jmcneill-usbmp-base9, jmcneill-usbmp-base8, jmcneill-usbmp-base7, jmcneill-usbmp-base6, jmcneill-usbmp-base5, jmcneill-usbmp-base4, jmcneill-usbmp-base3, jmcneill-usbmp-base2, jmcneill-usbmp-base10, jmcneill-usbmp-base, jmcneill-usbmp, jmcneill-audiomp3-base, jmcneill-audiomp3, agc-symver-base, agc-symver
Branch point for: tls-maxphys, pgoyette-localcount, nick-nhusb
Changes since 1.12: +2 -8 lines
Diff to previous 1.12 (colored)

[merging from cherry-xenmp] Make the xen MMU op queue locking api private. Implement per-cpu queues.

Revision 1.11.6.3 / (download) - annotate - [select for diffs], Tue Sep 20 18:57:53 2011 UTC (12 years, 7 months ago) by cherry
Branch: cherry-xenmp
Changes since 1.11.6.2: +2 -8 lines
Diff to previous 1.11.6.2 (colored) to branchpoint 1.11 (colored) next main 1.12 (colored)

Remove the "xpq lock", since we have per-cpu mmu queues now. This may need further testing. Also add some preliminary locking around queue-ops in the network backend driver

Revision 1.7.12.3 / (download) - annotate - [select for diffs], Sat Aug 27 15:37:32 2011 UTC (12 years, 7 months ago) by jym
Branch: jym-xensuspend
Changes since 1.7.12.2: +11 -5 lines
Diff to previous 1.7.12.2 (colored) to branchpoint 1.7 (colored) next main 1.8 (colored)

Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.

Revision 1.12 / (download) - annotate - [select for diffs], Sat Aug 13 12:09:38 2011 UTC (12 years, 8 months ago) by cherry
Branch: MAIN
CVS Tags: yamt-pagecache-base, jym-xensuspend-nbase, jym-xensuspend-base
Branch point for: yamt-pagecache
Changes since 1.11: +11 -5 lines
Diff to previous 1.11 (colored)

Add locking around ops to the hypervisor MMU "queue".

Revision 1.11.6.2 / (download) - annotate - [select for diffs], Sun Jul 31 20:49:12 2011 UTC (12 years, 8 months ago) by cherry
Branch: cherry-xenmp
Changes since 1.11.6.1: +4 -5 lines
Diff to previous 1.11.6.1 (colored) to branchpoint 1.11 (colored)

grow MP support for i386. boots to single user

Revision 1.11.6.1 / (download) - annotate - [select for diffs], Fri Jun 3 13:27:42 2011 UTC (12 years, 10 months ago) by cherry
Branch: cherry-xenmp
Changes since 1.11: +9 -2 lines
Diff to previous 1.11 (colored)

Initial import of xen MP sources, with kernel and userspace tests.
 - this is a source priview.
 - boots to single user.
 - spurious interrupt and pmap related panics are normal

Revision 1.10.2.1 / (download) - annotate - [select for diffs], Sat Mar 5 20:52:34 2011 UTC (13 years, 1 month ago) by rmind
Branch: rmind-uvmplock
Changes since 1.10: +4 -4 lines
Diff to previous 1.10 (colored) next main 1.11 (colored)

sync with head

Revision 1.7.12.2 / (download) - annotate - [select for diffs], Sun Oct 24 22:48:22 2010 UTC (13 years, 5 months ago) by jym
Branch: jym-xensuspend
Changes since 1.7.12.1: +4 -7 lines
Diff to previous 1.7.12.1 (colored) to branchpoint 1.7 (colored)

Sync with HEAD

Revision 1.9.2.2 / (download) - annotate - [select for diffs], Tue Aug 17 06:45:36 2010 UTC (13 years, 8 months ago) by uebayasi
Branch: uebayasi-xip
Changes since 1.9.2.1: +2 -2 lines
Diff to previous 1.9.2.1 (colored) to branchpoint 1.9 (colored) next main 1.10 (colored)

Sync with HEAD.

Revision 1.5.2.4 / (download) - annotate - [select for diffs], Wed Aug 11 22:52:59 2010 UTC (13 years, 8 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.5.2.3: +4 -4 lines
Diff to previous 1.5.2.3 (colored) to branchpoint 1.5 (colored) next main 1.6 (colored)

sync with head.

Revision 1.11 / (download) - annotate - [select for diffs], Sat Jul 24 00:45:56 2010 UTC (13 years, 9 months ago) by jym
Branch: MAIN
CVS Tags: yamt-nfs-mp-base11, yamt-nfs-mp-base10, uebayasi-xip-base7, uebayasi-xip-base6, uebayasi-xip-base5, uebayasi-xip-base4, uebayasi-xip-base3, uebayasi-xip-base2, rmind-uvmplock-nbase, rmind-uvmplock-base, matt-mips64-premerge-20101231, jruoho-x86intr-base, jruoho-x86intr, cherry-xenmp-base, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2
Branch point for: cherry-xenmp
Changes since 1.10: +4 -4 lines
Diff to previous 1.10 (colored)

Welcome PAE inside i386 current.

This patch is inspired by work previously done by Jeremy Morse, ported by me
to -current, merged with the work previously done for port-xen, together with
additionals fixes and improvements.

PAE option is disabled by default in GENERIC (but will be enabled in ALL in
the next few days).

In quick, PAE switches the CPU to a mode where physical addresses become
36 bits (64 GiB). Virtual address space remains at 32 bits (4 GiB). To cope
with the increased size of the physical address, they are manipulated as
64 bits variables by kernel and MMU.

When supported by the CPU, it also allows the use of the NX/XD bit that
provides no-execution right enforcement on a per physical page basis.

Notes:

- reworked locore.S

- introduce cpu_load_pmap(), used to switch pmap for the curcpu. Due to the
different handling of pmap mappings with PAE vs !PAE, Xen vs native, details
are hidden within this function. This helps calling it from assembly,
as some features, like BIOS calls, switch to pmap_kernel before mapping
trampoline code in low memory.

- some changes in bioscall and kvm86_call, to reflect the above.

- the L3 is "pinned" per-CPU, and is only manipulated by a
reduced set of functions within pmap. To track the L3, I added two
elements to struct cpu_info, namely ci_l3_pdirpa (PA of the L3), and
ci_l3_pdir (the L3 VA). Rest of the code considers that it runs "just
like" a normal i386, except that the L2 is 4 pages long (PTP_LEVELS is
still 2).

- similar to the ci_pae_l3_pdir{,pa} variables, amd64's xen_current_user_pgd
becomes an element of cpu_info (slowly paving the way for MP world).

- bootinfo_source struct declaration is modified, to cope with paddr_t size
change with PAE (it is not correct to assume that bs_addr is a paddr_t when
compiled with PAE - it should remain 32 bits). bs_addrs is now a
void * array (in bootloader's code under i386/stand/, the bs_addrs
is a physaddr_t, which is an unsigned long).

- fixes in multiboot code (same reason as bootinfo): paddr_t size
change. I used Elf32_* types, use RELOC() where necessary, and move the
memcpy() functions out of the if/else if (I do not expect sym and str tables
to overlap with ELF).

- 64 bits atomic functions for pmap

- all pmap_pdirpa access are now done through the pmap_pdirpa macro. It
hides the L3/L2 stuff from PAE, as well as the pm_pdirpa change in
struct pmap (it now becomes a PDP_SIZE array, with or without PAE).

- manipulation of recursive mappings ( PDIR_SLOT_{,A}PTEs ) is done via
loops on PDP_SIZE.

See also http://mail-index.netbsd.org/port-i386/2010/07/17/msg002062.html

No objection raised on port-i386@ and port-xen@R for about a week.

XXX kvm(3) will be fixed in another patch to properly handle both PAE and !PAE
kernel dumps (VA => PA macros are slightly different, and need proper 64 bits
PA support in kvm_i386).

XXX Mixing PAE and !PAE modules may lead to unwanted/unexpected results. This
cannot be solved easily, and needs lots of thinking before being declared
safe (paddr_t/bus_addr_t size handling, PD/PT macros abstractions).

Revision 1.9.2.1 / (download) - annotate - [select for diffs], Fri Apr 30 14:40:00 2010 UTC (13 years, 11 months ago) by uebayasi
Branch: uebayasi-xip
Changes since 1.9: +2 -5 lines
Diff to previous 1.9 (colored)

Sync with HEAD.

Revision 1.5.2.3 / (download) - annotate - [select for diffs], Thu Mar 11 15:03:10 2010 UTC (14 years, 1 month ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.5.2.2: +2 -10 lines
Diff to previous 1.5.2.2 (colored) to branchpoint 1.5 (colored)

sync with head

Revision 1.10 / (download) - annotate - [select for diffs], Fri Feb 12 01:55:46 2010 UTC (14 years, 2 months ago) by jym
Branch: MAIN
CVS Tags: yamt-nfs-mp-base9, uebayasi-xip-base1
Branch point for: rmind-uvmplock
Changes since 1.9: +2 -5 lines
Diff to previous 1.9 (colored)

Starting with Xen 3 API, MMU_EXTENDED_COMMAND (tlb flush, cache flush, page
pinning/unpinning, set_ldt, invlpg) operations cannot be queued in the
xpq_queue[] any more, as they use their own specific hypercall, mmuext_op().

Their associated xpq_queue_*() functions already call xpq_flush_queue()
before issuing the mmuext_op() hypercall, which makes these xpq_flush_queue()
calls not necessary.

Rapidly discussed with bouyer@ in private mail. XEN3_DOM0/XEN3PAE_DOM0 tested
through a build.sh release, amd64 was only compile tested. No regression
expected.

Revision 1.7.12.1 / (download) - annotate - [select for diffs], Sun Nov 1 13:58:46 2009 UTC (14 years, 5 months ago) by jym
Branch: jym-xensuspend
Changes since 1.7: +2 -11 lines
Diff to previous 1.7 (colored)

Sync with HEAD.

Revision 1.9 / (download) - annotate - [select for diffs], Fri Oct 23 02:32:34 2009 UTC (14 years, 6 months ago) by snj
Branch: MAIN
CVS Tags: uebayasi-xip-base, matt-premerge-20091211
Branch point for: uebayasi-xip
Changes since 1.8: +2 -7 lines
Diff to previous 1.8 (colored)

Remove 3rd and 4th clauses.  OK cl@ (copyright holder).

Revision 1.5.2.2 / (download) - annotate - [select for diffs], Wed Aug 19 18:46:55 2009 UTC (14 years, 8 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.5.2.1: +2 -6 lines
Diff to previous 1.5.2.1 (colored) to branchpoint 1.5 (colored)

sync with head.

Revision 1.8 / (download) - annotate - [select for diffs], Wed Jul 29 12:02:08 2009 UTC (14 years, 8 months ago) by cegger
Branch: MAIN
CVS Tags: yamt-nfs-mp-base8, yamt-nfs-mp-base7
Changes since 1.7: +2 -6 lines
Diff to previous 1.7 (colored)

remove Xen2 support.
ok bouyer@

Revision 1.6.2.1 / (download) - annotate - [select for diffs], Mon Jun 23 04:30:51 2008 UTC (15 years, 10 months ago) by wrstuden
Branch: wrstuden-revivesa
Changes since 1.6: +10 -4 lines
Diff to previous 1.6 (colored) next main 1.7 (colored)

Sync w/ -current. 34 merge conflicts to follow.

Revision 1.4.6.1 / (download) - annotate - [select for diffs], Mon Jun 2 13:22:54 2008 UTC (15 years, 10 months ago) by mjf
Branch: mjf-devfs2
Changes since 1.4: +13 -7 lines
Diff to previous 1.4 (colored) next main 1.5 (colored)

Sync with HEAD.

Revision 1.4.8.1 / (download) - annotate - [select for diffs], Sun May 18 12:33:08 2008 UTC (15 years, 11 months ago) by yamt
Branch: yamt-pf42
Changes since 1.4: +13 -7 lines
Diff to previous 1.4 (colored) next main 1.5 (colored)

sync with head.

Revision 1.5.2.1 / (download) - annotate - [select for diffs], Fri May 16 02:23:30 2008 UTC (15 years, 11 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.5: +12 -6 lines
Diff to previous 1.5 (colored)

sync with head.

Revision 1.7 / (download) - annotate - [select for diffs], Sun May 11 16:23:05 2008 UTC (15 years, 11 months ago) by ad
Branch: MAIN
CVS Tags: yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-nfs-mp-base6, yamt-nfs-mp-base5, yamt-nfs-mp-base4, yamt-nfs-mp-base3, yamt-nfs-mp-base2, wrstuden-revivesa-base-4, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, simonb-wapbl-nbase, simonb-wapbl-base, simonb-wapbl, nick-hppapmap-base4, nick-hppapmap-base3, nick-hppapmap-base2, nick-hppapmap-base, nick-hppapmap, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, mjf-devfs2-base, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-base2, jymxensuspend-base, hpcarm-cleanup-nbase, haad-nbase2, haad-dm-base2, haad-dm-base1, haad-dm-base, haad-dm, ad-audiomp2-base, ad-audiomp2
Branch point for: jym-xensuspend
Changes since 1.6: +10 -4 lines
Diff to previous 1.6 (colored)

Don't reload LDTR unless a new value, which only happens for USER_LDT.

Revision 1.6 / (download) - annotate - [select for diffs], Wed Apr 30 00:16:30 2008 UTC (15 years, 11 months ago) by cegger
Branch: MAIN
Branch point for: wrstuden-revivesa
Changes since 1.5: +4 -4 lines
Diff to previous 1.5 (colored)

AMD's APM Volume 2 says 'All control registers are 64bit in long mode'.
Fix the CR0 prototype to match this (the asm implementation is correct though).
OK ad

Revision 1.5 / (download) - annotate - [select for diffs], Mon Apr 21 15:15:34 2008 UTC (16 years ago) by cegger
Branch: MAIN
CVS Tags: yamt-nfs-mp-base
Branch point for: yamt-nfs-mp
Changes since 1.4: +3 -3 lines
Diff to previous 1.4 (colored)

Access Xen's vcpu info structure per-CPU.
Tested on i386 and amd64 (both dom0 and domU) by me.
Xen2 tested (both dom0 and domU) by bouyer.
OK bouyer

Revision 1.2.16.3 / (download) - annotate - [select for diffs], Sun Mar 23 02:04:30 2008 UTC (16 years, 1 month ago) by matt
Branch: matt-armv6
Changes since 1.2.16.2: +4 -2 lines
Diff to previous 1.2.16.2 (colored) to branchpoint 1.2 (colored) next main 1.3 (colored)

sync with HEAD

Revision 1.2.8.4 / (download) - annotate - [select for diffs], Wed Feb 27 08:36:29 2008 UTC (16 years, 1 month ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.2.8.3: +4 -1 lines
Diff to previous 1.2.8.3 (colored) to branchpoint 1.2 (colored) next main 1.3 (colored)

sync with head.

Revision 1.1.4.2 / (download) - annotate - [select for diffs], Mon Feb 18 21:05:20 2008 UTC (16 years, 2 months ago) by mjf
Branch: mjf-devfs
Changes since 1.1.4.1: +4 -2 lines
Diff to previous 1.1.4.1 (colored) to branchpoint 1.1 (colored) next main 1.2 (colored)

Sync with HEAD.

Revision 1.4 / (download) - annotate - [select for diffs], Sun Feb 17 14:03:16 2008 UTC (16 years, 2 months ago) by bouyer
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base, yamt-lazymbuf-base15, yamt-lazymbuf-base14, nick-net80211-sync-base, nick-net80211-sync, mjf-devfs-base, matt-armv6-nbase, keiichi-mipv6-nbase, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-base, ad-socklock-base1
Branch point for: yamt-pf42, mjf-devfs2
Changes since 1.3: +4 -1 lines
Diff to previous 1.3 (colored)

Add missing __KERNEL_RCSID()

Revision 1.2.8.3 / (download) - annotate - [select for diffs], Mon Jan 21 09:40:33 2008 UTC (16 years, 3 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.2.8.2: +1 -2 lines
Diff to previous 1.2.8.2 (colored) to branchpoint 1.2 (colored)

sync with head

Revision 1.3 / (download) - annotate - [select for diffs], Fri Jan 11 20:00:53 2008 UTC (16 years, 3 months ago) by bouyer
Branch: MAIN
CVS Tags: bouyer-xeni386-nbase, bouyer-xeni386-base
Changes since 1.2: +0 -1 lines
Diff to previous 1.2 (colored)

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 1.2.12.1 / (download) - annotate - [select for diffs], Wed Jan 9 19:25:08 2008 UTC (16 years, 3 months ago) by bouyer
Branch: bouyer-xeni386
CVS Tags: bouyer-xeni386-merge1
Changes since 1.2: +1 -2 lines
Diff to previous 1.2 (colored) next main 1.3 (colored)

Merge xen bits to i386/i386/gdt.c. Convert remaining uses of PTE_* macros to
pmap_pte_* macros/inlines.
Fix think-o in pmap.c for native i386.

Revision 1.2.16.2 / (download) - annotate - [select for diffs], Wed Jan 9 01:50:17 2008 UTC (16 years, 3 months ago) by matt
Branch: matt-armv6
Changes since 1.2.16.1: +155 -0 lines
Diff to previous 1.2.16.1 (colored) to branchpoint 1.2 (colored)

sync with HEAD

Revision 1.1.4.1 / (download) - annotate - [select for diffs], Sat Dec 8 18:18:25 2007 UTC (16 years, 4 months ago) by mjf
Branch: mjf-devfs
Changes since 1.1: +155 -0 lines
Diff to previous 1.1 (colored)

Sync with HEAD.

Revision 1.2.8.2 / (download) - annotate - [select for diffs], Fri Dec 7 17:27:19 2007 UTC (16 years, 4 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.2.8.1: +155 -0 lines
Diff to previous 1.2.8.1 (colored) to branchpoint 1.2 (colored)

sync with head

Revision 1.2.4.2 / (download) - annotate - [select for diffs], Mon Dec 3 19:04:46 2007 UTC (16 years, 4 months ago) by ad
Branch: vmlocking
Changes since 1.2.4.1: +310 -0 lines
Diff to previous 1.2.4.1 (colored) to branchpoint 1.2 (colored) next main 1.3 (colored)

Sync with HEAD.

Revision 1.2.2.2 / (download) - annotate - [select for diffs], Tue Nov 27 19:36:24 2007 UTC (16 years, 4 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.2.2.1: +155 -0 lines
Diff to previous 1.2.2.1 (colored) to branchpoint 1.2 (colored) next main 1.3 (colored)

Sync with HEAD. amd64 Xen support needs testing.

Revision 1.2.16.1, Thu Nov 22 16:17:06 2007 UTC (16 years, 5 months ago) by matt
Branch: matt-armv6
Changes since 1.2: +0 -155 lines
FILE REMOVED

file xenfunc.c was added on branch matt-armv6 on 2008-01-09 01:50:17 +0000

Revision 1.2.8.1, Thu Nov 22 16:17:06 2007 UTC (16 years, 5 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.2: +0 -155 lines
FILE REMOVED

file xenfunc.c was added on branch yamt-lazymbuf on 2007-12-07 17:27:19 +0000

Revision 1.2.4.1, Thu Nov 22 16:17:06 2007 UTC (16 years, 5 months ago) by ad
Branch: vmlocking
Changes since 1.2: +0 -155 lines
FILE REMOVED

file xenfunc.c was added on branch vmlocking on 2007-12-03 19:04:45 +0000

Revision 1.2.2.1, Thu Nov 22 16:17:06 2007 UTC (16 years, 5 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.2: +0 -155 lines
FILE REMOVED

file xenfunc.c was added on branch jmcneill-pm on 2007-11-27 19:36:24 +0000

Revision 1.2 / (download) - annotate - [select for diffs], Thu Nov 22 16:17:06 2007 UTC (16 years, 5 months ago) by bouyer
Branch: MAIN
CVS Tags: yamt-kmem-base3, yamt-kmem-base2, yamt-kmem-base, yamt-kmem, vmlocking2-base3, vmlocking2-base2, vmlocking2-base1, vmlocking2, vmlocking-nbase, reinoud-bufcleanup-nbase, reinoud-bufcleanup-base, matt-armv6-base, jmcneill-pm-base, cube-autoconf-base, cube-autoconf
Branch point for: yamt-lazymbuf, vmlocking, matt-armv6, jmcneill-pm, bouyer-xeni386
Changes since 1.1: +155 -0 lines
Diff to previous 1.1 (colored)

Pull up the bouyer-xenamd64 branch to HEAD. This brings in amd64 support
to NetBSD/Xen, both Dom0 and DomU.

Revision 1.1.2.2 / (download) - annotate - [select for diffs], Sun Oct 21 15:41:04 2007 UTC (16 years, 6 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.1.2.1: +2 -2 lines
Diff to previous 1.1.2.1 (colored) to branchpoint 1.1 (colored) next main 1.2 (colored)

Factorise some Xen pmap code in x86_xpmap.c.
More xpmap_{ptom,mtop} -> xpmap_{ptom,mtop}_masked

The xenamd64 kernel is now good enough to complete a sysinst install from
xennet to xbd.

Revision 1.1.2.1 / (download) - annotate - [select for diffs], Wed Oct 17 21:08:22 2007 UTC (16 years, 6 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.1: +155 -0 lines
Diff to previous 1.1 (colored)

Prepare for xenamd64:
- kill xen/i386/identcpu.c, use i386/i386/identcpu.c instead (with a few
  #ifndef XEN)
- move some files that can be shared between i386 and amd64 from
  xen/i386 to xen/x86 (or to xen/xen for non-cpu-specific code)
- split assembly out of xen/include/hypervisor.h to xen/include/hypercalls.h
- use <xen/...> instead of <machine/...> for cpu-independant include files.

more work needed here, i386-specific files should got out of arch/xen to
arch/xeni386, and more code shared with arch/i386.

Revision 1.1, Wed Oct 17 21:08:22 2007 UTC (16 years, 6 months ago) by bouyer
Branch: MAIN
CVS Tags: yamt-x86pmap-base4, jmcneill-base, bouyer-xenamd64-base2, bouyer-xenamd64-base
Branch point for: mjf-devfs, bouyer-xenamd64
FILE REMOVED

file xenfunc.c was initially added on branch bouyer-xenamd64.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>