| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
As reported by Almudena Garcia <liberamenso10000@gmail.com>
* kern/ast.h [NCPUS > 1] (cause_ast_check): Add prototype.
|
|
|
|
|
|
| |
As reported by Almudena Garcia <liberamenso10000@gmail.com>
* kern/cpu_number.h [NCPUS != 1] (CPU_L1_SIZE): Define macro.
|
|
|
|
|
|
|
|
| |
as now enabled automatically by some distributions...
Reported and tested by Almudena Garcia <liberamenso10000@gmail.com>
* Makefile.am (AM_CFLAGS): Add -no-pie -fno-pic.
|
|
|
|
| |
* kern/machine.h (action_thread): Add prototype.
|
|
|
|
| |
* machine/lock.h (_simple_lock_xchg_): Remove spurious parenthesis.
|
|
|
|
| |
* machine/lock.h (_simple_lock_xchg_): Add missing parenthesis.
|
|
|
|
|
|
|
|
| |
When the host is very loaded, some requests might time out, but that is
not a reason for disabling DMA, so keep it enabled.
* linux/src/drivers/block/triton.c (config_drive_for_dma): When disk is
QEMU, set using_dma and keep_settings to 1.
|
|
|
|
|
| |
* vm/vm_map.c (vm_map_find_entry_anywhere): Also check that (min + mask) &
~mask remains bigger than min.
|
|
|
|
|
| |
* include/device/bpf.h: Do not include <sys/types.h>
(struct bpf_version): Use unsigned short type instead of u_short.
|
|
|
|
|
|
| |
* i386/include/mach/i386/mach_i386_types.h (const_descriptor_list_t):
New type.
* include/mach/port.h (const_mach_port_array_t): New type.
|
|
|
|
| |
* i386/i386at/lpr.c (lpropen): Cast io port to void *.
|
|
|
|
| |
* vm/vm_map.c (vm_map_copyout): Fix panic format.
|
|
|
|
| |
* kern/sched_prim.c (assert_wait): Fix panic format.
|
|
|
|
| |
* kern/ast.c (ast_check): Fix panic format.
|
|
|
|
|
| |
* i386/i386at/model_dep.c (halt_all_cpus): Change halt message to better
explain what happened.
|
|
|
|
|
| |
* linux/dev/glue/block.c (rdwr_full): Set BH_Bounce if the physical
address of the user data is not in directmap.
|
|
|
|
|
|
|
|
|
| |
This happens if passed count is 0.
Reported by Richard Braun.
* linux/dev/glue/block.c (device_write): Set copy variable before
vm_map_copy_discard() is called.
|
|
|
|
|
|
| |
* kern/task.c (task_ledger_acquire): Remove function that I added by
accident.
(task_ledger_release): Likewise.
|
|
|
|
| |
* kern/task.c (task_create_kernel): Handle NULL parent tasks.
|
|
|
|
|
|
|
|
|
|
| |
Check receiver in task_create. Fixes a crash when sending that
message to a non-task port.
* kern/bootstrap.c (boot_script_task_create): Use the new function.
* kern/task.c (task_create): Rename to task_create_internal, create a
new function in its place that checks the receiver first.
* kern/task.h (task_create_internal): New prototype.
|
|
|
|
| |
* linux/dev/glue/net.c (device_write): Remove unused variables.
|
|
|
|
|
|
|
|
|
| |
* i386/intel/pmap.c: Drop the register qualifier.
* ipc/ipc_kmsg.h: Likewise.
* kern/bootstrap.c: Likewise.
* kern/profile.c: Likewise.
* kern/thread.c: Likewise.
* vm/vm_object.c: Likewise.
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, we used an invalid pointer to mark interrupts as reserved
by Mach. This, however, crashes code trying to iterate over the list
of interrupt handlers. Use a valid structure instead.
* linux/dev/arch/i386/kernel/irq.c (reserved_mach_handler): New
function.
(reserved_mach): New variable.
(reserve_mach_irqs): Use the new variable.
|
|
|
|
| |
* device/dev_forward.defs: Remove unused file.
|
|
|
|
|
| |
* vm/vm_object.c (vm_object_accept_old_init_protocol): Remove.
(vm_object_enter): Adapt.
|
|
|
|
|
|
|
|
|
|
|
| |
* i386/i386/db_interface.h (db_read_bytes): Return boolean_t instead of
void.
* i386/i386/db_interface.c (db_user_to_kernel_address): Return -1
instead of calling db_error() if address is bogus.
(db_read_bytes): Return FALSE instead of calling db_error() if address
is bogus.
* ddb/db_access.c (db_get_task_value): Return 0 if db_read_bytes failed.
* ddb/db_examine.c (db_xcdump): Only print * if db_read_bytes failed.
|
|
|
|
|
| |
* i386/intel/pmap.c (pmap_remove): Fix iteration over page directory.
(pmap_enter): Explain why it is ok here.
|
|
|
|
|
| |
* vm/vm_map.c (vm_map_create): Gracefully handle resource exhaustion.
(vm_map_fork): Likewise at the callsite.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Maps '$mapXX' to a VM map structure address. @var{xx} is a task
identification number printed by a @code{show all tasks} command.
* ddb/db_task_thread.c (db_get_map): New function.
* ddb/db_task_thread.h (db_get_map): New declaration.
* ddb/db_variables.c (db_vars): Add new variable.
* doc/mach.texi: Document this.
|
|
|
|
|
|
| |
* vm/vm_fault.c (vm_fault_page): Mute paging error message if the
objects pager is NULL. This happens when a pager is destroyed,
e.g. at system shutdown time when the root filesystem terminates.
|
|
|
|
|
|
|
|
|
|
|
| |
* ddb/db_command.c (db_debug_all_traps_cmd): New declaration and
function.
(db_debug_port_references_cmd): Likewise.
* doc/mach.texi: Describe new commands.
* i386/i386/db_interface.h (db_debug_all_traps): New declaration.
* i386/i386/trap.c (db_debug_all_traps): New function.
* ipc/mach_port.c (db_debug_port_references): New function.
* ipc/mach_port.h (db_debug_port_references): New declaration.
|
|
|
|
|
|
|
|
|
|
| |
* ddb/db_print.c (OPTION_SCHED): New macro.
(db_print_thread): Display scheduling information if the flag is
given.
(db_print_task): Adapt.
(db_show_all_threads): Parse new modifier.
(db_show_one_thread): Likewise.
* doc/mach.texi: Document the new flag.
|
| |
|
|
|
|
|
| |
* kern/host.c (host_info): Scale 'min_quantum' by 'tick', then convert
to milliseconds.
|
|
|
|
| |
* Makefile.am (clib_routines): Steal '__divdi3' from the gcc runtime.
|
|
|
|
|
| |
* i386/intel/pmap.c (pmap_remove_range): Make function static.
* i386/intel/pmap.h (pmap_remove_range): Remove declaration.
|
|
|
|
| |
* i386/i386at/rtc.c (readtodc): Do not spuriously add 70 to the year.
|
|
|
|
|
|
| |
* i386/i386at/rtc.c (CENTURY_START): New macro.
(readtodc): Use CENTURY_START instead of assuming it is equal to 1970,
and set yr to an absolute date before calling yeartoday.
|
|
|
|
|
| |
* Makefile.am (clib_routines): Add __udivmoddi4.
* linux/src/include/linux/compiler-gcc7.h: New file.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
* kern/bootstrap.c (bootstrap_create): Insert the variable
'kernel-task' into the bootscript environment. Userspace can use this
instead of guessing based on the order of the first tasks.
|
|/ |
|
|
|
|
|
|
|
|
|
|
| |
* kern/atomic.h: New file.
* kern/kmutex.h: New file.
* kern/kmutex.c: New file.
* Makefrag.am (libkernel_a_SOURCES): Add atomic.h, kmutex.h, kmutex.c.
* kern/sched_prim.h (thread_wakeup_prim): Make it return boolean_t.
* kern/sched_prim.c (thread_wakeup_prim): Return TRUE if we woke a
thread, and FALSE otherwise.
|
|
|
|
|
|
|
| |
In practice, fixes 2100, 2200, 2300, 2500, 2600, 2700, etc.
* i386/i386at/rtc.c (yeartoday): Make years divisible by 100 but not
divisible by 400 non-bisextile.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit eb07428ffb0009085fcd01dd1b79d9953af8e0ad does fix pageout of
external objects backed by the default pager, but the way it's done
has a vicious side effect: because they're considered external, the
pageout daemon can keep evicting them even though the external pagers
haven't released them, unlike internal pages which must all be
released before the pageout daemon can make progress. This can lead
to a situation where too many pages become wired, the default pager
cannot allocate memory to process new requests, and the pageout
daemon cannot recycle any more page, causing a panic.
This change makes the pageout daemon use the same strategy for both
internal pages and external pages sent to the default pager: use
the laundry bit and wait for all laundry pages to be released,
thereby completely synchronizing the pageout daemon and the default
pager.
* vm/vm_page.c (vm_page_can_move): Allow external laundry pages to
be moved.
(vm_page_seg_evict): Don't alter the `external_laundry' bit, merely
disable double paging for external pages sent to the default pager.
* vm/vm_pageout.c: Include vm/memory_object.h.
(vm_pageout_setup): Don't check whether the `external_laundry' bit
is set, but handle external pages sent to the default pager the same
as internal pages.
|
|
|
|
|
|
|
|
| |
Sometimes, in particular during IO spikes, the slab allocator needs
more virtual memory than is currently available. The new size should
also be fine for the Xen version.
* i386/i386/vm_param.h (VM_KERNEL_MAP_SIZE): Increase value.
|
|
|
|
|
| |
* doc/mach.texi: Describe vm_wire_all, and add more information
about vm_wire and vm_protect.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This call maps the POSIX mlockall and munlockall calls.
* Makefrag.am (include_mach_HEADERS): Add include/mach/vm_wire.h.
* include/mach/gnumach.defs (vm_wire_t): New type.
(vm_wire_all): New routine.
* include/mach/mach_types.h: Include mach/vm_wire.h.
* vm/vm_map.c: Likewise.
(vm_map_enter): Automatically wire new entries if requested.
(vm_map_copyout): Likewise.
(vm_map_pageable_all): New function.
vm/vm_map.h: Include mach/vm_wire.h.
(struct vm_map): Update description of member `wiring_required'.
(vm_map_pageable_all): New function.
* vm/vm_user.c (vm_wire_all): New function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First, user wiring is removed, simply because it has never been used.
Second, make the VM system track wiring requests to better handle
protection. This change makes it possible to wire entries with
VM_PROT_NONE protection without actually reserving any page for
them until protection changes, and even make those pages pageable
if protection is downgraded to VM_PROT_NONE.
* ddb/db_ext_symtab.c: Update call to vm_map_pageable.
* i386/i386/user_ldt.c: Likewise.
* ipc/mach_port.c: Likewise.
* vm/vm_debug.c (mach_vm_region_info): Update values returned
as appropriate.
* vm/vm_map.c (vm_map_entry_copy): Update operation as appropriate.
(vm_map_setup): Update member names as appropriate.
(vm_map_find_entry): Update to account for map member variable changes.
(vm_map_enter): Likewise.
(vm_map_entry_inc_wired): New function.
(vm_map_entry_reset_wired): Likewise.
(vm_map_pageable_scan): Likewise.
(vm_map_protect): Update wired access, call vm_map_pageable_scan.
(vm_map_pageable_common): Rename to ...
(vm_map_pageable): ... and rewrite to use vm_map_pageable_scan.
(vm_map_entry_delete): Fix unwiring.
(vm_map_copy_overwrite): Replace inline code with a call to
vm_map_entry_reset_wired.
(vm_map_copyin_page_list): Likewise.
(vm_map_print): Likewise. Also print map size and wired size.
(vm_map_copyout_page_list): Update to account for map member variable
changes.
* vm/vm_map.h (struct vm_map_entry): Remove `user_wired_count' member,
add `wired_access' member.
(struct vm_map): Rename `user_wired' member to `size_wired'.
(vm_map_pageable_common): Remove function.
(vm_map_pageable_user): Remove macro.
(vm_map_pageable): Replace macro with function declaration.
* vm/vm_user.c (vm_wire): Update call to vm_map_pageable.
|