- 13 Apr, 2018 1 commit
-
-
kib authored
The change makes the user and kernel address spaces on i386 independent, giving each almost the full 4G of usable virtual addresses except for one PDE at top used for trampoline and per-CPU trampoline stacks, and system structures that must be always mapped, namely IDT, GDT, common TSS and LDT, and process-private TSS and LDT if allocated. By using 1:1 mapping for the kernel text and data, it appeared possible to eliminate assembler part of the locore.S which bootstraps initial page table and KPTmap. The code is rewritten in C and moved into the pmap_cold(). The comment in vmparam.h explains the KVA layout. There is no PCID mechanism available in protected mode, so each kernel/user switch forth and back completely flushes the TLB, except for the trampoline PTD region. The TLB invalidations for userspace becomes trivial, because IPI handlers switch page tables. On the other hand, context switches no longer need to reload %cr3. copyout(9) was rewritten to use vm_fault_quick_hold(). An issue for new copyout(9) is compatibility with wiring user buffers around sysctl handlers. This explains two kind of locks for copyout ptes and accounting of the vslock() calls. The vm_fault_quick_hold() AKA slow path, is only tried after the 'fast path' failed, which temporary changes mapping to the userspace and copies the data to/from small per-cpu buffer in the trampoline. If a page fault occurs during the copy, it is short-circuit by exception.s to not even reach C code. The change was motivated by the need to implement the Meltdown mitigation, but instead of KPTI the full split is done. The i386 architecture already shows the sizing problems, in particular, it is impossible to link clang and lld with debugging. I expect that the issues due to the virtual address space limits would only exaggerate and the split gives more liveness to the platform. Tested by: pho Discussed with: bde Sponsored by: The FreeBSD Foundation MFC after: 1 month Differential revision: https://reviews.freebsd.org/D14633
-
- 27 Nov, 2017 1 commit
-
-
pfg authored
Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
-
- 10 Aug, 2017 3 commits
-
-
royger authored
Reported by: emaste X-MFC-with: r322347
-
royger authored
Introduce a new define to take int account the xAPIC ID limit, for systems where x2APIC is not available/reliable. Also change some of the usages of the APIC ID to use an unsigned int (which is the correct storage type to deal with x2APIC IDs as found in x2APIC MADT entries). This allows booting FreeBSD on a box with 256 CPUs and APIC IDs up to 295: FreeBSD/SMP: Multiprocessor System Detected: 256 CPUs FreeBSD/SMP: 1 package(s) x 64 core(s) x 4 hardware threads Package HW ID = 0 Core HW ID = 0 CPU0 (BSP): APIC ID: 0 CPU1 (AP/HT): APIC ID: 1 CPU2 (AP/HT): APIC ID: 2 CPU3 (AP/HT): APIC ID: 3 [...] Core HW ID = 73 CPU252 (AP): APIC ID: 292 CPU253 (AP/HT): APIC ID: 293 CPU254 (AP/HT): APIC ID: 294 CPU255 (AP/HT): APIC ID: 295 Submitted by: kib (previous version) Relnotes: yes MFC after: 1 month Reviewed by: kib Differential revision: https://reviews.freebsd.org/D11913
-
royger authored
Populate the lapics arrays and call cpu_add/lapic_create in the setup phase instead. Also store the max APIC ID found in the newly introduced max_apic_id global variable. This is a requirement in order to make the static arrays currently using MAX_LAPIC_ID dynamic. Sponsored by: Citrix Systems R&D MFC after: 1 month Reviewed by: kib Differential revision: https://reviews.freebsd.org/D11911
-
- 28 Jan, 2017 1 commit
-
-
nyan authored
I thank all developers and contributors for pc98. Relnotes: yes
-
- 15 Jan, 2017 1 commit
-
-
cem authored
Replace archaic "busses" with modern form "buses." Intentionally excluded: * Old/random drivers I didn't recognize * Old hardware in general * Use of "busses" in code as identifiers No functional change. http://grammarist.com/spelling/buses-busses/ PR: 216099 Reported by: bltsrc at mail.ru Sponsored by: Dell EMC Isilon
-
- 27 May, 2016 1 commit
-
-
grehan authored
-
- 21 Feb, 2014 1 commit
-
-
gjb authored
^/user/gjb/hacking since this is likely to be merged to head/ soon. Sponsored by: The FreeBSD Foundation
-
- 27 Dec, 2013 1 commit
-
-
gjb authored
inclusion of (at least) arm builds with the release. Sponsored by: The FreeBSD Foundation
-
- 11 Dec, 2013 1 commit
-
-
jhb authored
all the structures. While here, move a helper struct only used in the kernel parser out of this header since it is not part of the MP specification itself.
-
- 09 Dec, 2013 1 commit
-
-
jhb authored
apicvar.h to apicreg.h.
-
- 16 Jul, 2011 1 commit
-
-
jhb authored
Submitted by: gcooper (partially) Pointy hat to: jhb
-
- 15 Jul, 2011 1 commit
-
-
jhb authored
resource allocation on x86 platforms: - Add a new helper API that Host-PCI bridge drivers can use to restrict resource allocation requests to a set of address ranges for different resource types. - For the ACPI Host-PCI bridge driver, use Producer address range resources in _CRS to enumerate valid address ranges for a given Host-PCI bridge. This can be disabled by including "hostres" in the debug.acpi.disabled tunable. - For the MPTable Host-PCI bridge driver, use entries in the extended MPTable to determine the valid address ranges for a given Host-PCI bridge. This required adding code to parse extended table entries. Similar to the new PCI-PCI bridge driver, these changes are only enabled if the NEW_PCIB kernel option is enabled (which is enabled by default on amd64 and i386). Approved by: re (kib)
-
- 09 Nov, 2010 1 commit
-
-
attilio authored
Sponsored by: Sandvine Incorporated MFC after: 14 days
-
- 08 Nov, 2010 1 commit
-
-
jhb authored
- Register APIC enumerators at SI_SUB_TUNABLES - 1 instead of SI_SUB_CPU - 1. - Probe CPUs at SI_SUB_TUNABLES - 1. This allows i386 to set a truly accurate mp_maxid value rather than always setting it to MAXCPU - 1.
-
- 01 Nov, 2010 1 commit
-
-
jhb authored
-
- 28 Oct, 2010 1 commit
-
-
attilio authored
Sponsored by: Sandvine Incorporated Discussed with: jhb
-
- 19 Oct, 2010 1 commit
-
-
jamie authored
by /etc/rc.d/jail.
-
- 19 Mar, 2010 1 commit
-
-
delphij authored
-
- 22 Nov, 2008 1 commit
-
-
dfr authored
performance in Xen's HVM mode.
-
- 19 Oct, 2008 1 commit
-
-
lulf authored
-
- 22 Jul, 2008 1 commit
-
-
rwatson authored
In keeping with style(9)'s recommendations on macros, use a ';' after each SYSINIT() macro invocation. This makes a number of lightweight C parsers much happier with the FreeBSD kernel source, including cflow's prcc and lxr. Discussed with: imp, rink The requirement to place a ; after each SYSINIT definition has not been MFC'd, as this might break the compile third-party modules, but merging the actual ; additions reduces diffs against 8.x making it easier to merge other changes.
-
- 16 Mar, 2008 1 commit
-
-
rwatson authored
after each SYSINIT() macro invocation. This makes a number of lightweight C parsers much happier with the FreeBSD kernel source, including cflow's prcc and lxr. MFC after: 1 month Discussed with: imp, rink
-
- 05 Oct, 2007 1 commit
-
-
jhb authored
-
- 08 May, 2007 1 commit
-
-
jhb authored
an APIC ID of 38 for its second CPU): - Add a new MAX_APIC_ID constant for the highest valid APIC ID for modern systems. - Size the various arrays in the MADT, MP Table, and SMP code that are indexed by APIC IDs to allow for up to MAX_APIC_ID. - Explicitly go through and assign logical cpu ids to local APICs before starting any of the APs up rather than doing it while starting up the APs. This step is now where we honor MAXCPU. MFC after: 1 week
-
- 09 Mar, 2007 1 commit
-
-
jhb authored
printf. Otherwise, printfs inside of lapic_init() (such as during a verbose boot) can uglify the output.
-
- 05 Mar, 2007 1 commit
-
-
jhb authored
APICs to lapic_init() and ioapic_create().
-
- 31 Oct, 2005 1 commit
-
-
rwatson authored
- Prefer '_' to ' ', as it results in more easily parsed results in memory monitoring tools such as vmstat. - Remove punctuation that is incompatible with using memory type names as file names, such as '/' characters. - Disambiguate some collisions by adding subsystem prefixes to some memory types. - Generally prefer lower case to upper case. - If the same type is defined in multiple architecture directories, attempt to use the same name in additional cases. Not all instances were caught in this change, so more work is required to finish this conversion. Similar changes are required for UMA zone names.
-
- 14 Apr, 2005 1 commit
-
-
jhb authored
when using an APIC. This simplifies the APIC code somewhat and also allows us to be pedantically more compliant with ACPI which mandates no use of mixed mode.
-
- 10 Feb, 2005 1 commit
-
-
phk authored
Found by: src/tools/tools/kernxref
-
- 18 Jan, 2005 1 commit
-
-
jhb authored
interrupts that have a trigger mode of conforming. This fixes problems on some older machines that still route PCI devices via ISA interrupts when using an I/O APIC. Tested by: Peter Trifonov pvtrifonov at mail dot ru MFC after: 1 month
-
- 12 Jan, 2005 1 commit
-
-
jhb authored
interrupt is wired up to all the I/O APICs in the system. If the system has only one I/O APIC, then just act as if the entry specified that APIC. We still don't try to handle global entries in a system with multiple I/O APICs. Tested by: Peter Trifonov pvtrifonov at mail dot ru MFC after: 1 week
-
- 07 Jan, 2005 1 commit
-
-
jhb authored
- Fix the MP Table pci bridge drivers to not probe the configuration table unless we actually have one. Machines using a default configuration do not have such a table. - Only allow default configuration types of 5 (ISA + PCI) and 6 (EISA + PCI) as the others are not likely to work. Types 1 through 4 use an external APIC (probably with 80486 processors) which we certainly do not support, and type 7 uses an MCA bus which has not been tested with the new MP Table code. - Correct the fact that the single I/O APIC in a default configuration has an ID of 2, not 0. - Fix off by one errors in setting the bus types from the default_data[] arrays for default configurations. - Explicitly configure each of the 16 interrupt pins on the sole I/O APIC when using a default configuration. This is especially helpful for type 6 (EISA + PCI) since the EISA interrupts need to have their polarity programmed based on the values in the ELCR. Much thanks to the submitter and tester who endured several rounds of testing to get this fixed. MFC after: 1 week Tested by: Georg Schwarz georg dot schwarz at freenet dot de
-
- 24 Sep, 2004 1 commit
-
-
jhb authored
for the same PCI interrupt. Tested by: Pavel Gubin pg at ie dot tusur dot ru MFC after: 3 days
-
- 01 Jul, 2004 1 commit
-
-
jhb authored
cut down on the clutter including PCI interrupt routing, MTRR, pcibios, etc. Discussed with: USENIX Cabal
-
- 23 Jun, 2004 1 commit
-
-
jhb authored
- Allow ioapic_set_{nmi,smi,extint}() to be called multiple times on the same pin so long as the pin's mode is the same as the mode being requested. - Add a notion of bus type for the interrupt associated with interrupt pin. This is needed so that we can force all EISA interrupts to be active high in the forthcoming ioapic_config_intr(). - Fix a bug for EISA systems that didn't remap IRQs. This would have broken EISA systems that tried to disable mixed mode for IRQ 0.
-
- 24 May, 2004 1 commit
-
-
jhb authored
polarity rather than assuming that level triggered IRQs use active low and edge triggered IRQs use active high. Both the MultiProcessor 1.4 and ACPI 2.0 Specifications state in their examples that level triggered EISA IRQs are active low, but in practice they seem to be active high. Reported by: Nik Azim Azam nskyline_r35 at yahoo dot com
-
- 10 May, 2004 1 commit
-
-
jhb authored
- Require the APIC enumerators to explicitly enable mixed mode by calling ioapic_enable_mixed_mode(). Calling this function tells the apic driver that the PC-AT 8259A PICs are present and routable through the first I/O APIC via an ExtINT pin. The mptable enumerator always calls this function for now. The MADT enumerator only enables mixed mode if the PC-AT compatability flag is set in the MADT header. - Allow mixed mode to be enabled or disabled via a 'hw.apic.mixed_mode' tunable. By default this tunable is set to 1 (true). The kernel option NO_MIXED_MODE changes the default to 0 to preserve existing behavior, but adding 'hw.apic.mixed_mode=0' to loader.conf achieves the same effect. - Only use mixed mode to route IRQ 0 if it is both enabled by the APIC enumerator and activated by the loader tunable. Note that both conditions must be true, so if the APIC enumerator does not enable mixed mode, then you can't set the tunable to try to override the enumerator.
-
- 06 May, 2004 1 commit
-
-
nyan authored
-