| History log of /src/sys/arch/x86/x86/idt.c |
| Revision | | Date | Author | Comments |
| 1.17 |
| 20-Aug-2022 |
riastradh | 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.
|
| 1.16 |
| 13-Feb-2022 |
riastradh | x86: Membar audit in idt.c.
- idt_vec_free/alloc are obviously supposed to synchronize with a happens-before relation, so use release/acquire.
- There is no store-before-load ordering needed, so omit membar_sync.
|
| 1.15 |
| 23-Dec-2021 |
yamaguchi | x86: improve error handling related to idt_vec_alloc()
|
| 1.14 |
| 14-Jul-2020 |
para | mark diagused variable as such
fixing non DIAGNOSTIC builds
|
| 1.13 |
| 14-Jul-2020 |
yamaguchi | Introduce per-cpu IDTs
This is realized by following modifications: - Add IDT pages and its allocation maps for each cpu in "struct cpu_info" - Load per-cpu IDTs at cpu_init_idt(struct cpu_info*) - Copy the IDT entries for cpu0 to other CPUs at attach - These are, for example, exceptions, db, system calls, etc.
And, added a kernel option named PCPU_IDT to enable the feature.
|
| 1.12 |
| 04-Jul-2020 |
bouyer | Fix unset_idtgate() for XENPV, pointed out by yamaguchi@
|
| 1.11 |
| 17-Jun-2019 |
msaitoh | KNF. No functional change.
|
| 1.10 |
| 11-Feb-2019 |
cherry | We reorganise definitions for XEN source support as follows:
XEN - common sources required for baseline XEN support. XENPV - sources required for support of XEN in PV mode. XENPVHVM - sources required for support for XEN in HVM mode. XENPVH - sources required for support for XEN in PVH mode.
|
| 1.9 |
| 18-Oct-2018 |
cherry | Make compile-time type differentiation more explicit.
|
| 1.8 |
| 23-Sep-2018 |
cherry | 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.
|
| 1.7 |
| 23-Sep-2018 |
cherry | 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.
|
| 1.6 |
| 04-Nov-2017 |
cherry | branches: 1.6.2; 1.6.4; In XEN PV, the idt vector table is not required to be altered at runtime, since only entries for exceptions/traps are registered with the hypervisor and interrupts are managed via a completely different mechanism.
This change uses the idt_vec_reserve() mechanism nevertheless, modifying it slightly to only do namespace management in XEN, while on native it will continue to do idt entry init as before.
Rationale: Consistent API usage and potential future merging of XEN/non-XEN code.
There are no functional changes in this commit.
|
| 1.5 |
| 07-Aug-2017 |
maxv | Remove incorrect KASSERT, only the allocation is protected by cpu_lock.
|
| 1.4 |
| 27-Aug-2016 |
maxv | branches: 1.4.8; Remove idt_init.
|
| 1.3 |
| 19-Apr-2009 |
ad | branches: 1.3.22; 1.3.40; cpuctl:
- Add interrupt shielding (direct hardware interrupts away from the specified CPUs). Not documented just yet but will be soon.
- Redo /dev/cpu time_t compat so no kernel changes are needed.
x86:
- Make intr_establish, intr_disestablish safe to use when !cold.
- Distribute hardware interrupts among the CPUs, instead of directing everything to the boot CPU.
- Add MD code for interrupt sheilding. This works in most cases but there is a bug where delivery is not accepted by an LAPIC after redistribution. It also needs re-balancing to make things fair after interrupts are turned back on for a CPU.
|
| 1.2 |
| 28-Apr-2008 |
martin | branches: 1.2.8; 1.2.14; Remove clause 3 and 4 from TNF licenses
|
| 1.1 |
| 26-Dec-2007 |
yamt | branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10; 1.1.16; 1.1.18; 1.1.20; - share idt entry allocation code among x86. - introduce a function to reserve an idt entry and use it instead of manipulating idt_allocmap directly. - rename idt to xen_idt for amd64 xen. add missing #ifdef XEN.
|
| 1.1.20.2 |
| 04-May-2009 |
yamt | sync with head.
|
| 1.1.20.1 |
| 16-May-2008 |
yamt | sync with head.
|
| 1.1.18.1 |
| 18-May-2008 |
yamt | sync with head.
|
| 1.1.16.1 |
| 02-Jun-2008 |
mjf | Sync with HEAD.
|
| 1.1.10.2 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
| 1.1.10.1 |
| 26-Dec-2007 |
mjf | file idt.c was added on branch mjf-devfs on 2008-02-18 21:05:17 +0000
|
| 1.1.8.2 |
| 21-Jan-2008 |
yamt | sync with head
|
| 1.1.8.1 |
| 26-Dec-2007 |
yamt | file idt.c was added on branch yamt-lazymbuf on 2008-01-21 09:40:14 +0000
|
| 1.1.6.2 |
| 09-Jan-2008 |
matt | sync with HEAD
|
| 1.1.6.1 |
| 26-Dec-2007 |
matt | file idt.c was added on branch matt-armv6 on 2008-01-09 01:49:55 +0000
|
| 1.1.4.2 |
| 02-Jan-2008 |
bouyer | Sync with HEAD
|
| 1.1.4.1 |
| 26-Dec-2007 |
bouyer | file idt.c was added on branch bouyer-xeni386 on 2008-01-02 21:51:24 +0000
|
| 1.1.2.2 |
| 26-Dec-2007 |
ad | Sync with head.
|
| 1.1.2.1 |
| 26-Dec-2007 |
ad | file idt.c was added on branch vmlocking2 on 2007-12-26 19:17:18 +0000
|
| 1.2.14.2 |
| 01-Nov-2009 |
jym | Sync with HEAD.
|
| 1.2.14.1 |
| 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
| 1.2.8.1 |
| 28-Apr-2009 |
skrll | Sync with HEAD.
|
| 1.3.40.2 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
| 1.3.40.1 |
| 05-Oct-2016 |
skrll | Sync with HEAD
|
| 1.3.22.1 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
| 1.4.8.1 |
| 25-Aug-2017 |
snj | Pull up following revision(s) (requested by jdolecek in ticket #224): sys/arch/x86/x86/idt.c: revision 1.5 Remove incorrect KASSERT, only the allocation is protected by cpu_lock.
|
| 1.6.4.2 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
| 1.6.4.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
| 1.6.2.2 |
| 20-Oct-2018 |
pgoyette | Sync with head
|
| 1.6.2.1 |
| 30-Sep-2018 |
pgoyette | Ssync with HEAD
|