#
1.26 |
|
18-Oct-2019 |
manu |
Multiboot2 kernel support for i386
That implementation works either with BIOS or UEFI bootstrap
This requires the following kernel changes:
Add UEFI boot services and I/O method protoypes src/sys/arch/x86/include/efi.h 1.8 - 1.9
Fix EFI system table mapping in virtual space src/sys/arch/x86/x86/efi.c 1.19 - 1.20
Make sure no bioscall is issued when booting off UEFI system src/sys/arch/i386/i386/machdep.c 1.821 - 1.822 src/sys/arch/i386/pci/piixpcib.c 1.22 - 1.23
And the following bootstrap changes:
Add kernel symbols for multiboot1 src/sys/arch/i386/stand/lib/exec_multiboot1.c 1.2 - 1.3 src/sys/arch/i386/stand/lib/libi386.h 1.45 - 1.47
Fix kernel symbols for multiboot2 src/sys/arch/i386/stand/lib/exec_multiboot2.c 1.2 - 1.3
|
#
1.25 |
|
18-Oct-2019 |
manu |
Fix multiboot1 kernel symbol load
ELF_Shdr's sh_type field is a value, not a flag field
|
Revision tags: netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.24 |
|
08-Nov-2018 |
msaitoh |
"s/ is is / is /" in comment. No functional change.
|
Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 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 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.23 |
|
30-May-2016 |
dholland |
branches: 1.23.16; 1.23.18; PR 51187 David Binderman: simplify redundant conditional
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base 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 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 tls-maxphys-base
|
#
1.22 |
|
07-Dec-2012 |
msaitoh |
branches: 1.22.14; Fix off by one.
|
Revision tags: matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base rmind-uvmplock-base jym-xensuspend-base
|
#
1.21 |
|
11-Jan-2011 |
gsutre |
branches: 1.21.8; 1.21.14; 1.21.18; 1.21.20; As said in the comment (lines 327-336), we must make sure that we don't overwrite valid data when moving the symbol and string tables.
Assume for instance that the boot-loader left us with:
+--------------+ +--------+ +--------------+ | string table | | kernel | | symbol table | +--------------+ +--------+ +--------------+
The new addresses computed by lines 338-359 (here, it's really lines 344-345) will move the tables so that they end up as:
+--------+--------------+--------------+ | kernel | symbol table | string table | +--------+--------------+--------------+
The current version (rev. 1.20) will, however, first copy the string table and then the symbol table. But the copy of the string table will overwrite the symbol table (see the pictures).
The old code (rev. 1.19) uses the right order of table copy to make sure that we don't overwrite one table when moving the other. Here, we simply restore this behavior. This makes multibooting from GRUB2 work again (for MONOLITHIC).
ok jmcneill@
|
Revision tags: 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
|
#
1.20 |
|
24-Jul-2010 |
jym |
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 tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 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-base2 nick-hppapmap-base
|
#
1.19 |
|
22-Feb-2009 |
ahoka |
branches: 1.19.2; 1.19.4; Add a missing opt_multiboot.h into sys/arch/i386/i386/machdep.c. Also do the missed rename of multiboot_ksyms_init to multiboot_ksyms_addsyms_elf to compile with MULTIBOOT set.
This caused a minor and a more serious bug in the past: - dmesg did not contain the information about the loader - /dev/ksyms did not work when the kernel was booted with a multiboot bootloader (grub for example)
Ok by jmcneill, joerg.
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.18 |
|
30-Nov-2008 |
martin |
branches: 1.18.4; As discussed on tech-kern: mutex_init is too heavyweight for early bootstrap phases, so move the initialization of the ksyms mutex back into main via a function called ksyms_init. Rename the existing (but quite different) ksyms_init* variations into ksyms_addsyms_elf() and ksyms_addsyms_explicit() and adapt machdep code accordingly.
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 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 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
|
#
1.17 |
|
11-Oct-2008 |
joerg |
branches: 1.17.2; Add "multiboot" command to boot multiboot compliant kernels like Xen. Patch provided by Robert Swindell with fixes for the command line parsing and addition of passing module options from me. The kernel now always gets the full string for modules like for the command line, everything before the first space/tab is the path name of the module.
|
Revision tags: 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-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
|
#
1.16 |
|
28-Apr-2008 |
martin |
branches: 1.16.6; Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.15 |
|
22-Mar-2008 |
jmmv |
branches: 1.15.2; 1.15.4; Fix esym calculation to match comments. Reported by Gao Ya'nan in PR port-i386/38170.
|
Revision tags: keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.14 |
|
29-Feb-2008 |
jmmv |
Discard invalid console parameters, which cause initialization failures later on. Reported by njoly@.
|
#
1.13 |
|
29-Feb-2008 |
jmmv |
Drop trailing whitespace.
|
Revision tags: nick-csl-alignment-base5 nick-net80211-sync-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 ppcoea-renovation-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.12 |
|
07-Mar-2007 |
thorpej |
branches: 1.12.20; 1.12.36; 1.12.40; TRUE -> true, FALSE -> false
|
#
1.11 |
|
04-Mar-2007 |
christos |
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.10 |
|
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.9 |
|
06-Nov-2006 |
jmmv |
branches: 1.9.4; Pass a simple ELF header to ksyms_init_explicit with the minimum contents required to initialize ksyms_hdr. Otherwise LKMs do not work when using ksyms_init_explicit instead of ksyms_init, as is the case of booting an i386 kernel using Multiboot.
|
#
1.8 |
|
25-Oct-2006 |
jmmv |
Remove the usage of Multiboot's "a.out kludge" to tell the boot loader to reserve some more space for the BSS section than the binary says. This trick was used to leave room after the kernel's image to copy the symbol table following the format required by ksyms_init. (It was also used to workaround a bug in the physical address fields of the binary, but this has been long fixed.) Yes, the MULTIBOOT_SYMTAB_SPACE option goes away; yay!
Instead, copy the required data after the kernel in a way that avoids having to reserve space and use the new ksyms_init_explicit function to avoid the need to construct a minimal ELF image.
Fixes ksyms when using an "unpatched" GRUB (one that does not contain the fix to honour the "a.out kludge" for ELF images, even when present) -- i.e. ddb and lkms. As a side effect, the new code is much clearer to read and digest.
Closes PR port-i386/32865.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.7 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 rpaulo-netinet-merge-pcb-base yamt-pdpolicy-base8 yamt-pdpolicy-base7
|
#
1.6 |
|
31-Jul-2006 |
mrg |
branches: 1.6.4; 1.6.6; 1.6.8; add a new "biosmem_implicit" variable that is set when a bootloader info parser sets "biosbasemem" and "biosextmem" from. check for this when probing memory size, rather than biosbasemem/biosextmem being zero which is no longer true. also, make the REALBASEMEM/REALEXTMEM options work properly with multiboot-booted kernels. fixes PR#33918.
|
#
1.5 |
|
16-Jul-2006 |
christos |
PR/34007: Noriyuki Shiota: vmstat fails on the multiboot kernel booted by GRUB-0.97. Initialize some previously unititiazed ELF header fields.
|
Revision tags: 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 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
#
1.4 |
|
04-Feb-2006 |
jmmv |
branches: 1.4.2; 1.4.4; 1.4.14; Now that my idea to fix the detection of the boot device cannot work, reword the 'XXX' comment and remove the marker. Also, in case there is no match, fall back to wd0 instead of nothing.
|
#
1.3 |
|
04-Feb-2006 |
jmmv |
Revert yesterday's change that attempted to fix the detection of the boot device when using a Multiboot boot loader. It couldn't work because these boot loaders do not pass a checksum of the disk so matchbiosdisk() cannot really find any matches. I should have gone to sleep before commiting...
Found by xtraeme@.
|
#
1.2 |
|
03-Feb-2006 |
jmmv |
branches: 1.2.2; When booting an i386 kernel with Multiboot, properly detect the boot device by looking it up in the x86_alldisks table (instead of trying to match it to 'wd*' manually).
In order to do this, move the cpu_rootconf function from x86 common code to amd64 and i386 specific one. This way, i386 can do an extra step (call the appropriate Multiboot code) in the appropriate place (after x86_matchbiosdisks and before findroot()).
|
#
1.1 |
|
03-Feb-2006 |
jmmv |
Implement support for 'The Multiboot Specification' so that i386 kernels can be booted directly from Multiboot-compliant boot loaders (e.g. GRUB). See the added multiboot(8) manual page for more information.
No objections in tech-kern@; only positive comments.
|
Revision tags: isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
|
#
1.24 |
|
08-Nov-2018 |
msaitoh |
"s/ is is / is /" in comment. No functional change.
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 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 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.23 |
|
30-May-2016 |
dholland |
branches: 1.23.16; PR 51187 David Binderman: simplify redundant conditional
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base 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 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 tls-maxphys-base
|
#
1.22 |
|
07-Dec-2012 |
msaitoh |
branches: 1.22.14; Fix off by one.
|
Revision tags: matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base rmind-uvmplock-base jym-xensuspend-base
|
#
1.21 |
|
11-Jan-2011 |
gsutre |
branches: 1.21.8; 1.21.14; 1.21.18; 1.21.20; As said in the comment (lines 327-336), we must make sure that we don't overwrite valid data when moving the symbol and string tables.
Assume for instance that the boot-loader left us with:
+--------------+ +--------+ +--------------+ | string table | | kernel | | symbol table | +--------------+ +--------+ +--------------+
The new addresses computed by lines 338-359 (here, it's really lines 344-345) will move the tables so that they end up as:
+--------+--------------+--------------+ | kernel | symbol table | string table | +--------+--------------+--------------+
The current version (rev. 1.20) will, however, first copy the string table and then the symbol table. But the copy of the string table will overwrite the symbol table (see the pictures).
The old code (rev. 1.19) uses the right order of table copy to make sure that we don't overwrite one table when moving the other. Here, we simply restore this behavior. This makes multibooting from GRUB2 work again (for MONOLITHIC).
ok jmcneill@
|
Revision tags: 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
|
#
1.20 |
|
24-Jul-2010 |
jym |
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 tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 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-base2 nick-hppapmap-base
|
#
1.19 |
|
22-Feb-2009 |
ahoka |
branches: 1.19.2; 1.19.4; Add a missing opt_multiboot.h into sys/arch/i386/i386/machdep.c. Also do the missed rename of multiboot_ksyms_init to multiboot_ksyms_addsyms_elf to compile with MULTIBOOT set.
This caused a minor and a more serious bug in the past: - dmesg did not contain the information about the loader - /dev/ksyms did not work when the kernel was booted with a multiboot bootloader (grub for example)
Ok by jmcneill, joerg.
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.18 |
|
30-Nov-2008 |
martin |
branches: 1.18.4; As discussed on tech-kern: mutex_init is too heavyweight for early bootstrap phases, so move the initialization of the ksyms mutex back into main via a function called ksyms_init. Rename the existing (but quite different) ksyms_init* variations into ksyms_addsyms_elf() and ksyms_addsyms_explicit() and adapt machdep code accordingly.
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 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 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
|
#
1.17 |
|
11-Oct-2008 |
joerg |
branches: 1.17.2; Add "multiboot" command to boot multiboot compliant kernels like Xen. Patch provided by Robert Swindell with fixes for the command line parsing and addition of passing module options from me. The kernel now always gets the full string for modules like for the command line, everything before the first space/tab is the path name of the module.
|
Revision tags: 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-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
|
#
1.16 |
|
28-Apr-2008 |
martin |
branches: 1.16.6; Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.15 |
|
22-Mar-2008 |
jmmv |
branches: 1.15.2; 1.15.4; Fix esym calculation to match comments. Reported by Gao Ya'nan in PR port-i386/38170.
|
Revision tags: keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.14 |
|
29-Feb-2008 |
jmmv |
Discard invalid console parameters, which cause initialization failures later on. Reported by njoly@.
|
#
1.13 |
|
29-Feb-2008 |
jmmv |
Drop trailing whitespace.
|
Revision tags: nick-csl-alignment-base5 nick-net80211-sync-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 ppcoea-renovation-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.12 |
|
07-Mar-2007 |
thorpej |
branches: 1.12.20; 1.12.36; 1.12.40; TRUE -> true, FALSE -> false
|
#
1.11 |
|
04-Mar-2007 |
christos |
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.10 |
|
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.9 |
|
06-Nov-2006 |
jmmv |
branches: 1.9.4; Pass a simple ELF header to ksyms_init_explicit with the minimum contents required to initialize ksyms_hdr. Otherwise LKMs do not work when using ksyms_init_explicit instead of ksyms_init, as is the case of booting an i386 kernel using Multiboot.
|
#
1.8 |
|
25-Oct-2006 |
jmmv |
Remove the usage of Multiboot's "a.out kludge" to tell the boot loader to reserve some more space for the BSS section than the binary says. This trick was used to leave room after the kernel's image to copy the symbol table following the format required by ksyms_init. (It was also used to workaround a bug in the physical address fields of the binary, but this has been long fixed.) Yes, the MULTIBOOT_SYMTAB_SPACE option goes away; yay!
Instead, copy the required data after the kernel in a way that avoids having to reserve space and use the new ksyms_init_explicit function to avoid the need to construct a minimal ELF image.
Fixes ksyms when using an "unpatched" GRUB (one that does not contain the fix to honour the "a.out kludge" for ELF images, even when present) -- i.e. ddb and lkms. As a side effect, the new code is much clearer to read and digest.
Closes PR port-i386/32865.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.7 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 rpaulo-netinet-merge-pcb-base yamt-pdpolicy-base8 yamt-pdpolicy-base7
|
#
1.6 |
|
31-Jul-2006 |
mrg |
branches: 1.6.4; 1.6.6; 1.6.8; add a new "biosmem_implicit" variable that is set when a bootloader info parser sets "biosbasemem" and "biosextmem" from. check for this when probing memory size, rather than biosbasemem/biosextmem being zero which is no longer true. also, make the REALBASEMEM/REALEXTMEM options work properly with multiboot-booted kernels. fixes PR#33918.
|
#
1.5 |
|
16-Jul-2006 |
christos |
PR/34007: Noriyuki Shiota: vmstat fails on the multiboot kernel booted by GRUB-0.97. Initialize some previously unititiazed ELF header fields.
|
Revision tags: 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 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
#
1.4 |
|
04-Feb-2006 |
jmmv |
branches: 1.4.2; 1.4.4; 1.4.14; Now that my idea to fix the detection of the boot device cannot work, reword the 'XXX' comment and remove the marker. Also, in case there is no match, fall back to wd0 instead of nothing.
|
#
1.3 |
|
04-Feb-2006 |
jmmv |
Revert yesterday's change that attempted to fix the detection of the boot device when using a Multiboot boot loader. It couldn't work because these boot loaders do not pass a checksum of the disk so matchbiosdisk() cannot really find any matches. I should have gone to sleep before commiting...
Found by xtraeme@.
|
#
1.2 |
|
03-Feb-2006 |
jmmv |
branches: 1.2.2; When booting an i386 kernel with Multiboot, properly detect the boot device by looking it up in the x86_alldisks table (instead of trying to match it to 'wd*' manually).
In order to do this, move the cpu_rootconf function from x86 common code to amd64 and i386 specific one. This way, i386 can do an extra step (call the appropriate Multiboot code) in the appropriate place (after x86_matchbiosdisks and before findroot()).
|
#
1.1 |
|
03-Feb-2006 |
jmmv |
Implement support for 'The Multiboot Specification' so that i386 kernels can be booted directly from Multiboot-compliant boot loaders (e.g. GRUB). See the added multiboot(8) manual page for more information.
No objections in tech-kern@; only positive comments.
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
#
1.23 |
|
30-May-2016 |
dholland |
PR 51187 David Binderman: simplify redundant conditional
|
Revision tags: netbsd-7-0-2-RELEASE netbsd-7-nhusb-base 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 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 tls-maxphys-base
|
#
1.22 |
|
07-Dec-2012 |
msaitoh |
branches: 1.22.14; Fix off by one.
|
Revision tags: matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base rmind-uvmplock-base jym-xensuspend-base
|
#
1.21 |
|
11-Jan-2011 |
gsutre |
branches: 1.21.8; 1.21.14; 1.21.18; 1.21.20; As said in the comment (lines 327-336), we must make sure that we don't overwrite valid data when moving the symbol and string tables.
Assume for instance that the boot-loader left us with:
+--------------+ +--------+ +--------------+ | string table | | kernel | | symbol table | +--------------+ +--------+ +--------------+
The new addresses computed by lines 338-359 (here, it's really lines 344-345) will move the tables so that they end up as:
+--------+--------------+--------------+ | kernel | symbol table | string table | +--------+--------------+--------------+
The current version (rev. 1.20) will, however, first copy the string table and then the symbol table. But the copy of the string table will overwrite the symbol table (see the pictures).
The old code (rev. 1.19) uses the right order of table copy to make sure that we don't overwrite one table when moving the other. Here, we simply restore this behavior. This makes multibooting from GRUB2 work again (for MONOLITHIC).
ok jmcneill@
|
Revision tags: 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
|
#
1.20 |
|
24-Jul-2010 |
jym |
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 tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 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-base2 nick-hppapmap-base
|
#
1.19 |
|
22-Feb-2009 |
ahoka |
branches: 1.19.2; 1.19.4; Add a missing opt_multiboot.h into sys/arch/i386/i386/machdep.c. Also do the missed rename of multiboot_ksyms_init to multiboot_ksyms_addsyms_elf to compile with MULTIBOOT set.
This caused a minor and a more serious bug in the past: - dmesg did not contain the information about the loader - /dev/ksyms did not work when the kernel was booted with a multiboot bootloader (grub for example)
Ok by jmcneill, joerg.
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
#
1.18 |
|
30-Nov-2008 |
martin |
branches: 1.18.4; As discussed on tech-kern: mutex_init is too heavyweight for early bootstrap phases, so move the initialization of the ksyms mutex back into main via a function called ksyms_init. Rename the existing (but quite different) ksyms_init* variations into ksyms_addsyms_elf() and ksyms_addsyms_explicit() and adapt machdep code accordingly.
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 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 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1
|
#
1.17 |
|
11-Oct-2008 |
joerg |
branches: 1.17.2; Add "multiboot" command to boot multiboot compliant kernels like Xen. Patch provided by Robert Swindell with fixes for the command line parsing and addition of passing module options from me. The kernel now always gets the full string for modules like for the command line, everything before the first space/tab is the path name of the module.
|
Revision tags: 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-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
|
#
1.16 |
|
28-Apr-2008 |
martin |
branches: 1.16.6; Remove clause 3 and 4 from TNF licenses
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
#
1.15 |
|
22-Mar-2008 |
jmmv |
branches: 1.15.2; 1.15.4; Fix esym calculation to match comments. Reported by Gao Ya'nan in PR port-i386/38170.
|
Revision tags: keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
#
1.14 |
|
29-Feb-2008 |
jmmv |
Discard invalid console parameters, which cause initialization failures later on. Reported by njoly@.
|
#
1.13 |
|
29-Feb-2008 |
jmmv |
Drop trailing whitespace.
|
Revision tags: nick-csl-alignment-base5 nick-net80211-sync-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base matt-mips64-base yamt-idlelwp-base8 ppcoea-renovation-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
#
1.12 |
|
07-Mar-2007 |
thorpej |
branches: 1.12.20; 1.12.36; 1.12.40; TRUE -> true, FALSE -> false
|
#
1.11 |
|
04-Mar-2007 |
christos |
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
Revision tags: ad-audiomp-base
|
#
1.10 |
|
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
#
1.9 |
|
06-Nov-2006 |
jmmv |
branches: 1.9.4; Pass a simple ELF header to ksyms_init_explicit with the minimum contents required to initialize ksyms_hdr. Otherwise LKMs do not work when using ksyms_init_explicit instead of ksyms_init, as is the case of booting an i386 kernel using Multiboot.
|
#
1.8 |
|
25-Oct-2006 |
jmmv |
Remove the usage of Multiboot's "a.out kludge" to tell the boot loader to reserve some more space for the BSS section than the binary says. This trick was used to leave room after the kernel's image to copy the symbol table following the format required by ksyms_init. (It was also used to workaround a bug in the physical address fields of the binary, but this has been long fixed.) Yes, the MULTIBOOT_SYMTAB_SPACE option goes away; yay!
Instead, copy the required data after the kernel in a way that avoids having to reserve space and use the new ksyms_init_explicit function to avoid the need to construct a minimal ELF image.
Fixes ksyms when using an "unpatched" GRUB (one that does not contain the fix to honour the "a.out kludge" for ELF images, even when present) -- i.e. ddb and lkms. As a side effect, the new code is much clearer to read and digest.
Closes PR port-i386/32865.
|
Revision tags: yamt-splraiseipl-base2
|
#
1.7 |
|
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 rpaulo-netinet-merge-pcb-base yamt-pdpolicy-base8 yamt-pdpolicy-base7
|
#
1.6 |
|
31-Jul-2006 |
mrg |
branches: 1.6.4; 1.6.6; 1.6.8; add a new "biosmem_implicit" variable that is set when a bootloader info parser sets "biosbasemem" and "biosextmem" from. check for this when probing memory size, rather than biosbasemem/biosextmem being zero which is no longer true. also, make the REALBASEMEM/REALEXTMEM options work properly with multiboot-booted kernels. fixes PR#33918.
|
#
1.5 |
|
16-Jul-2006 |
christos |
PR/34007: Noriyuki Shiota: vmstat fails on the multiboot kernel booted by GRUB-0.97. Initialize some previously unititiazed ELF header fields.
|
Revision tags: 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 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
#
1.4 |
|
04-Feb-2006 |
jmmv |
branches: 1.4.2; 1.4.4; 1.4.14; Now that my idea to fix the detection of the boot device cannot work, reword the 'XXX' comment and remove the marker. Also, in case there is no match, fall back to wd0 instead of nothing.
|
#
1.3 |
|
04-Feb-2006 |
jmmv |
Revert yesterday's change that attempted to fix the detection of the boot device when using a Multiboot boot loader. It couldn't work because these boot loaders do not pass a checksum of the disk so matchbiosdisk() cannot really find any matches. I should have gone to sleep before commiting...
Found by xtraeme@.
|
#
1.2 |
|
03-Feb-2006 |
jmmv |
branches: 1.2.2; When booting an i386 kernel with Multiboot, properly detect the boot device by looking it up in the x86_alldisks table (instead of trying to match it to 'wd*' manually).
In order to do this, move the cpu_rootconf function from x86 common code to amd64 and i386 specific one. This way, i386 can do an extra step (call the appropriate Multiboot code) in the appropriate place (after x86_matchbiosdisks and before findroot()).
|
#
1.1 |
|
03-Feb-2006 |
jmmv |
Implement support for 'The Multiboot Specification' so that i386 kernels can be booted directly from Multiboot-compliant boot loaders (e.g. GRUB). See the added multiboot(8) manual page for more information.
No objections in tech-kern@; only positive comments.
|