Age | Commit message (Collapse) | Author |
|
* i386/intel/pmap.c (pmap_map_mfn) [MACH_XEN && !MACH_PV_PAGETABLES]:
Implement.
|
|
* i386/xen/xen_boothdr.S (FEATURES): Mark PVH features as required.
|
|
|
|
* i386/i386/gdt.c (gdt_init) [MACH_PV_DESCRIPTORS && !MACH_PV_PAGETABLES]:
Do not enable VMASST_TYPE_4gb_segments.
* i386/i386/trap.c (user_trap): Do not handle trap 15, 4gb segment
assist notification.
|
|
* i386/i386/vm_param.h [MACH_XEN && !MACH_PV_PAGETABLES]: Do not include
<xen/public/xen.h>.
|
|
* i386/i386/vm_param.h (VM_MAX_KERNEL_ADDRESS) [MACH_XEN &&
!MACH_PV_PAGETABLES]: Remove hypervisor area from VM_MAX_KERNEL_ADDRESS
restriction.
|
|
* i386/i386/idt_inittab.S: Turn MACH_XEN test into MACH_PV_DESCRIPTORS test.
* i386/i386/fpu.c: Turn appropriate MACH_HYP/XEN tests into MACH_RING1 tests.
* i386/i386/ktss.c: Likewise.
* i386/i386/locore.S: Likewise.
* i386/i386/mp_desc.c: Likewise.
* i386/i386/pcb.c: Likewise.
* i386/i386/proc_reg.h: Likewise.
* i386/i386/trap.c: Likewise.
|
|
* xen/configfrag.ac (--disable-pv-pagetables): Add option.
* i386/xen/xen_boothdr.S (XEN_ELFNOTE_FEATURES) [!MACH_PV_PAGETABLES]: Add
writable_page_tables.
* i386/i386/gdt.c: Turn appropriate MACH_XEN/MACH_HYP tests into
MACH_PV_PAGETABLES tests.
* i386/i386/i386asm.sym: Likewise
* i386/i386/ldt.c: Likewise
* i386/i386/locore.S: Likewise
* i386/i386/proc_reg.h: Likewise
* i386/i386/user_ldt.c: Likewise
* i386/i386/vm_param.h: Likewise
* i386/i386/xen.h: Likewise
* i386/i386at/model_dep.c: Likewise
* i386/intel/pmap.h: Likewise
* include/mach/xen.h: Likewise
* xen/console.c: Likewise
* xen/store.c: Likewise
* i386/intel/pmap.c: Likewise. Define pmap_map_mfn as TODO stub.
|
|
|
|
* i386/i386/i386asm.sym (PFN_LIST) [!MACH_PSEUDO_PHYS]: Do not define.
|
|
* xen/configfrag.ac (--disable-ring1): Add option.
* i386/xen/xen_boothdr.S (XEN_ELFNOTE_FEATURES) [!MACH_RING1]: Add
supervisor_mode_kernel.
* i386/i386/seg.h (KERNEL_RING) [!MACH_RING1]: Set macro to 0.
|
|
* xen/configfrag.ac (--disable-pv-descriptors): Add option
* i386/xen/xen_boothdr.S (XEN_ELFNOTE_FEATURES) [!MACH_PV_DESCRIPTORS]: Add
writable_descriptor_tables.
* i386/i386/gdt.c: Turn appropriate MACH_XEN/MACH_HYP tests into
MACH_PV_DESCRIPTORS tests.
* i386/i386/gdt.h: Likewise.
* i386/i386/i386asm.sym: Likewise.
* i386/i386/idt.c: Likewise.
* i386/i386/idt_inittab.S: Likewise.
* i386/i386/ldt.c: Likewise.
* i386/i386/pcb.c: Likewise.
* i386/i386/seg.h: Likewise.
* i386/i386/user_ldt.c: Likewise.
* i386/i386/user_ldt.h: Likewise.
|
|
The purpose of this system call is to help debugging in situations where
it's desirable to bypass the mach_msg call entirely.
* include/mach/syscall_sw.h (mach_print): Generate system call code.
* kern/syscall_subr.c: Include <kern/printf.h>.
[MACH_KDB] (mach_print): New function.
* kern/syscall_subr.h (mach_print): New prototype.
* kern/syscall_sw.c [MACH_KDB] (mach_trap_table): Declare mach_print
system call.
|
|
|
|
* vm/vm_fault.c (vm_fault_page): Properly increment
current_task()->zero_fills and cow_faults.
|
|
* ipc/ipc_mqueue.c (ipc_mqueue_send, ipc_mqueue_receive): Increment
counters for message sent and received.
* kern/ipc_kobject.c (ipc_kobject_server): Increment sent and received
counters for the kernel task.
* kern/task.c (task_create): Zero statistics.
* kern/task.c (task_info): Add task_events_info call.
* kern/task.h: Add statistics.
* vm/vm_fault.c (vm_fault_page): Increment zero_fills, pageins,
reactivations and cow_faults counters.
* vm/vm_fault.c (vm_fault_wire_fast): Increment faults counters.
* vm/vm_pageout.c (vm_pageout_scan): Increment reactivations counter.
|
|
This problem was overlooked because of simple locks being no-ops.
* kern/slab.c (slab_collect): Fix lock name to kmem_cache_list_lock.
(host_slab_info): Likewise.
|
|
The purpose of this function is to allow kernel code to display the state
of the slab caches in situations where the host_slab_info RPC wouldn't be
available, e.g. before a panic.
* kern/slab.c (slab_info): New function.
* kern/slab.h: Add declaration for slab_info.
|
|
* vm/vm_map.h (KENTRY_DATA_SIZE): Bump from 32 pages to 64 pages.
|
|
When kernel debugger support is requested ipc and vm need
the prototype for the debugger function kdbprintf.
* ddb/db_output.h: Add prototype for kdbprintf.
* ipc/ipc_object.c: Add include file ddb/db_output.h
* ipc/ipc_port.c: Likewise.
* ipc/ipc_pset.c: Likewise.
* vm/vm_map.c: Likewise.
* vm/vm_object.c: Likewise.
* vm/vm_resident.c: Likewise.
|
|
By disabling some of the most slow drivers by default, and giving progress
feedback to the user.
* linux/configfrag.ac (CONFIG_SCSI_NCR53C7xx, CONFIG_SCSI_AIC7XXX,
CONFIG_SCSI_GDTH): Disable by default
* linux/src/drivers/scsi/eata.c (__initfunc): Don't feed line in probe
message.
* linux/src/drivers/scsi/hosts.c (scsi_init): Print SCSI probe progress.
|
|
Cherry picked from Linux kernel commit 76c25284e0d845bff4ee1031721556148af4db1c
* linux/dev/drivers/block/floppy.c (config_types): Clear from
`allowed_drive_mask' floppy drives whose cmos type is 0.
|
|
|
|
0a55db5 made thread_suspend return KERN_FAILURE when the target thread is in
TH_UNINT state. That however is not currently handled by libc, and it's more
useful to just wait for the thread to get interruptible.
* kern/sched_prim.c (thread_invoke): Wake NEW_THREAD->STATE for thread_suspend.
* kern/thread.c (thread_suspend): Wait on NEW_THREAD->STATE as long as THREAD
has TH_UNINT.
|
|
Based upon a patch by Philippe De Muyter, and feedback from Mark
Lord and Robert Hancock.
As noted by Mark Lord, the outdated ATA1 spec specifies a 20msec
timeout for setting DRQ but lots of common devices overshoot this.
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from Linux kernel commit 602da297e293eb2cbd28dcdbbe247593a46a853a)
* linux/src/drivers/block/ide.h (WAIT_DRQ): Increase to 1 s.
|
|
* linux/src/drivers/block/ide.c: Partially update to Linux 2.0.40 code.
|
|
The mapable_time_init function is called before machine_init, but the
latter sets the system boot time. Fix their calling order.
* kern/startup.c (setup_main): Call machine_init before mapable_time_init.
|
|
* kern/rbtree.h (rbtree_lookup): Prefix local variable names with three
underscores.
(rbtree_lookup_nearest): Likewise.
(rbtree_insert): Likewise.
(rbtree_lookup_slot): Likewise.
(rbtree_insert_slot): Rewrite as an inline function.
|
|
* vm/vm_map.c (vm_map_enter): return KERN_INVALID_ARGUMENT if size is 0.
* vm/vm_user.c (vm_map): Likewise.
|
|
Some versions of GCC will error if you define a type twice (even if
the definition is the same). The NCR53C8XX SCSI driver defines
'vm_offset_t', this is also defined in vm_types.h and will therefore
cause a compilation error depending on the GCC version.
* linux/src/drivers/scsi/ncr53c8xx.c [!MACH] (vm_offset_t, vm_size_t): Don't
define types.
|
|
* kern/ipc_kobject.c (ipc_kobject_server): Set gnumach_server_routine
prototype to mig_routine_t.
|
|
* kern/gnumach.srv: New file.
|
|
* include/mach/vm_cache_statistics.h: New file
|
|
* linux/src/drivers/net/pci-scan.c (pci_drv_register): Skip device
if we are getting an invalid IRQ >= 16 and different from 255 (it
happens in some motherboard).
|
|
* linux/configfrag.ac (--enable-ide-forcedma): Add option.
* linux/src/drivers/block/ide.c (ide_probe_promise_20246): Do not call
ide_init_promise.
(probe_for_hwifs): Add SI, VIA, AL PCI probing.
* linux/src/drivers/block/ide.h (hwif_chipset_t): Add hpt343, udma and
ultra66 chipsets.
* linux/src/drivers/block/triton.c: Update to upstream 1.14 version.
* linux/src/include/linux/hdreg.h (HDIO_GET_IDENTITY): Rename to ...
(HDIO_OBSOLETE_IDENTITY): ... new macro.
(HDIO_GET_IDENTITY): New macro.
(hd_driveid): Add fields for extended identification.
|
|
* linux/dev/glue/block.c
(device_open): Properly return devp on multiple opens.
(device_close_forced): Renamed from device_close, when force parameter is 1, do
not wait for open_count to become 0 before closing.
(device_close): New function.
(device_no_senders): New function.
linux_block_emulation_ops: Use (device_no_senders).
|
|
* Makefrag.am (EXTRA_DIST): Add kern/gnumach.srv.
(include_mach_HEADERS): Add include/mach/gnumach.defs and
include/mach/vm_cache_statistics.h
(nodist_libkernel_a_SOURCES): Add kern/gnumach.server.defs.c,
kern/gnumach.server.h, kern/gnumach.server.c, kern/gnumach.server.msgids,
kern/gnumach.server.defs.
* include/mach/mach_types.h: Add #include <mach/vm_cache_statistics.h>.
* kern/ipc_kobject.c (ipc_kobject_server): Declare and call
gnumach_server_routine.
* vm/vm_object.c (vm_object_cached_pages): New variable.
(vm_object_cached_pages_lock_data): Likewise.
(vm_object_deallocate): Update number of cached pages.
(vm_object_lookup): Likewise.
(vm_object_lookup_name): Likewise.
(vm_object_destroy): Likewise.
(vm_object_enter): Likewise.
* vm/vm_object.h (ref_count): Declare as int.
(resident_page_count): Likewise.
(vm_object_cached_count): Add extern declaration.
(vm_object_cached_pages): Likewise.
(vm_object_cached_pages_lock_data): Likewise.
(vm_object_cached_pages_update): New macro.
* vm/vm_resident.c (vm_page_insert): Assert resident page count doesn't
overflow, update number of cached pages as appropriate.
(vm_page_replace): Likewise.
(vm_page_remove): Update number of cached pages as appropriate.
* vm/vm_user.c: Add #include <mach/vm_cache_statistics.h>.
(vm_cache_statistics): New function.
* vm/vm_user.h: Add #include <mach/mach_types.h>.
(vm_cache_statistics): New declaration.
* include/mach/gnumach.defs: New file.
|
|
* ipc/ipc_thread.h (ipc_thread_enqueue_macro): Insert thread at the
head of the list instead of the tail.
|
|
* i386/intel/pmap.c (pmap_bootstrap): Interate over linear addresses and compute
l3 and l2 offsets from it instead of assuming nul l3 offset.
|
|
The slab garbage collector uses sched_tick as its time reference, which
is increased every seconds, while the interval is expressed in clock
ticks. Use the proper time reference instead.
* kern/slab.c (kmem_gc_last_tick): Declare as unsigned long.
(slab_collect): Use elapsed_ticks instead of sched_tick.
|
|
* kern/slab.c (KMEM_GC_INTERVAL): Increase to 5 seconds.
|
|
The kernel submaps eat most of the available kernel space. Using the
main kernel map for thread stacks sometimes lead to exhaustion when many
threads are created. Use kmem_map instead to increase this limit.
* kern/thread.c (stack_alloc): Use kmem_map instead of kernel_map for
stack allocation.
(stack_collect): Likewise for release.
|
|
* ipc/ipc_table.c: Add #include <kern/slab.h>.
(ipc_table_alloc): Use kmem_map instead of kalloc_map when allocating
a table.
(ipc_table_realloc): Likewise for reallocation.
(ipc_table_free): Likewise for release.
* kern/kalloc.h (kalloc_map): Remove declaration.
* kern/slab.c (KMEM_MAP_SIZE): Increase to 128 MiB.
(KALLOC_MAP_SIZE): Remove macro.
(kalloc_map_store): Remove variable.
(kalloc_map): Likewise.
(kalloc_pagealloc): Use kmem_map instead of kalloc_map for general
purpose allocations.
(kalloc_pagefree): Likewise.
(kalloc_init): Remove the creation of kalloc_map.
|
|
* linux/configfrag.ac (AC_OPTION_Linux_group): New function
(AC_OPTION_Linux_ix86_at): Do not enable driver by default if the group was
explicitly disabled.
(scsi, net, pcmcia, wireless): Define groups.
|
|
* linux/src/arch/i386/kernel/bios32.c (check_pcibios, pcibios_init): Convert
physical bios32 entry address to kernel virtual address.
|
|
Linux does this, there are probably wild BIOSes out there.
* linux/src/arch/i386/kernel/bios32.c (bios32_service, check_pcibios,
pci_bios_find_class, pci_bios_find_device, pci_bios_read_config_byte,
pci_bios_read_config_word, pci_bios_read_config_dword,
pci_bios_write_config_byte, pci_bios_write_config_word,
pci_bios_write_config_dword): Clear direction flag after lcall to bios32.
|
|
This permits better trace support in kdb.
* i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS): Set to 0xC0000000
* i386/Makefrag.am (_START): Set to 0xC0100000.
|
|
* i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS): Document that it can be
changed, but _START has to be offset too.
(INIT_VM_MIN_KERNEL_ADDRESS): Document that it should remain 0.
|
|
* vm/vm_map.c: Add #include <kern/rbtree.h>.
(vm_map_setup): Initialize the map red-black tree.
(vm_map_entry_cmp_lookup): New function.
(vm_map_entry_cmp_insert): Likewise.
(_vm_map_entry_link): Insert map entry in the red-black tree.
(_vm_map_entry_unlink): Remove map entry from the red-black tree.
(vm_map_lookup_entry): Rework the way the VM map hint is used, and
replace the linear search with a binary search tree lookup.
(vm_map_copy_insert): Move map entries from the map copy tree to the
destination map tree.
(vm_map_copyin): Initialize the map copy red-black tree.
* vm/vm_map.h: Add #include <kern/rbtree.h>.
(vm_map_entry): Add `tree_node' member.
(vm_map_header): Add `tree' member.
|
|
Literature about red-black trees vary concerning the cases numbering,
and the implementation doesn't make all of them clearly appear. Remove
cases numbering references to avoid confusion.
|