summaryrefslogtreecommitdiffstats
path: root/lib/libkvm
Commit message (Collapse)AuthorAgeFilesLines
* Allow libkvm to get the kernel va to pa delta without the need forandrew2014-10-191-10/+26
| | | | | | | | | | | | physaddr. This should allow for a kernel where PHYSADDR and KERNPHYSADDR are both undefined. For now libkvm will use the old method of reading physaddr and kernaddr to allow it to work with old kernels. This could be removed in the future when enough time has passed. Differential Revision: https://reviews.freebsd.org/D939 MFC after: 1 week
* Update the ULE scheduler + thread and kinfo structs to use int for cpuidadrian2014-10-181-0/+18
| | | | | | | | | | | rather than u_char. To try and play nice with the ABI, the u_char CPU ID values are clamped at 254. The new fields now contain the full CPU ID, or -1 for no cpu. Differential Revision: D955 Reviewed by: jhb, kib Sponsored by: Norse Corp, Inc.
* Fix the type of pte_pa as when it is passed into _kvm_pa2off it is eitherandrew2014-10-161-2/+2
| | | | | a uint64_t or a pointer to an off_t. With it being a u_long can result in incorrect values being returned.
* Remove ia64.marcel2014-07-073-379/+2
| | | | | | | | | | | | | | | | | This includes: o All directories named *ia64* o All files named *ia64* o All ia64-specific code guarded by __ia64__ o All ia64-specific makefile logic o Mention of ia64 in comments and documentation This excludes: o Everything under contrib/ o Everything under crypto/ o sys/xen/interface o sys/sys/elf_common.h Discussed at: BSDcan
* Add a new ARM TARGET_ARCH, armv6hf. This is considered experimental.andrew2014-03-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | This targets the existing ARMv6 and ARMv7 SoCs that contain a VFP unit. This is an optional coprocessors may not be present in all devices, however it appears to be in all current SoCs we support. armv6hf targets the VFP variant of the ARM EABI and our copy of gcc is too old to support this. Because of this there are a number of WITH/WITHOUT options that are unsupported and must be left as the default value. The options and their required value are: * WITH_ARM_EABI * WITHOUT_GCC * WITHOUT_GNUCXX In addition, without an external toolchain, the following need to be left as their default: * WITH_CLANG * WITH_CLANG_IS_CC As there is a different method of passing float and double values to functions the ABI is incompatible with existing armv6 binaries. To use this a full rebuild of world is required. Because no floating point values are passed into the kernel an armv6 kernel with VFP enabled will work with an armv6hf userland and vice versa.
* Add kvm_getncpus() to obtain mp_ncpus.glebius2014-02-123-1/+18
| | | | Sponsored by: Nginx, Inc.
* Add bounds check for pteindex / pdeindexemaste2014-02-121-0/+4
|
* While it isn't too late and kvm_read_zpcpu() function isn't yet usedglebius2014-02-123-4/+4
| | | | | | | outside libkvm(3), change its order of arguments, so that it is the same as in kvm_read(). Sponsored by: Nginx, Inc.
* add support for building a cross-gdb for ARM... This isn't hooked upjmg2014-02-122-1/+13
| | | | | | | to xdev yet as I don't know how to make it work properly... It also isn't heavily tested... Reviewed by: silence on -arm
* Handle truncation of the size returned by _kvm_kvatop(). Cores can havemarcel2014-01-161-1/+1
| | | | segments larger than INT_MAX.
* We don't have to worry about page sizes when working on virtualmarcel2014-01-131-1/+1
| | | | cores (i.e. minidumps). Every segment is virtually contiguous.
* Re-apply the part of r260022 that was reverted by r260030 withmarcel2014-01-131-5/+18
| | | | | | | | | | | | one significant difference: for LIB32 builds both TARGET_ARCH and MACHINE_ARCH are defined. TARGET_ARCH confusingly holds the architecture of the host (e.g. amd64), while MACHINE_ARCH holds the architecture were trying to build (e.g. i386). With both set and different, r260022 changed the behaviour to interpret the condition as building a cross-amd64 libkvm on i386, when obviously we're trying to build an i386 version on amd64. When COMPAT_32BIT is defined, we're building LIB32 and ignore the value of TARGET_ARCH as we did before.
* Revert part of r260022: LIB32 builds were broken by it.marcel2013-12-291-17/+5
|
* Add support for virtual cores (aka minidumps). To that end, refactor thismarcel2013-12-291-72/+141
| | | | | | | | | | | | | | | | | | | file as follows: 1. Common ia64-specific support functions have the ia64_ prefix. 2. Functions that work on physical cores have the phys_ prefix. 3. Functions that work on virtual cores have the virt_ prefix. With that: 1. _kvm_kvatop() has been renamed to phys_kvatop() as it handles physical cores only. 2. The new _kvm_kvatop() is nothing but a wrapper that calls either phys_kvatop() or virt_kvatop() by virtue of the kvatop function pointer in the vmstate structure. 3. virt_kvatop() is nothing but a wrapper around virt_addr2off(). 4. virt_addr2off() iterates over the Phdrs to find the segment in which the address falls and return the file offset for it. Now it's up to the kernel to populate the core file appropriately.
* Allow building a cross libkvm for ia64.marcel2013-12-281-0/+10
|
* Allow building a cross libkvm by setting TARGET_ARCH. The library somarcel2013-12-282-7/+54
| | | | | | | | | | | | produced will be called libkvm-${ARCH} instead of libkvm. This allows installing it alongside the native version. For symbol lookups, use ps_pglobal_lookup() instead of __fdnlist() when building a cross libkvm. It is assumed that the cross tool that uses the cross libkvm also provides an implementation for this proc_services function. Note that this commit does not change any of the architecture-specific code for cross-compilation.
* Fix "kptdir is itself virtual" error, caused by having the kptdir in PBVM.marcel2013-12-261-7/+11
| | | | | While here improve errors by having them include addresses (either virtual or physical).
* Revert r256514 for libkvm. It wasn't correct actually and breaks build.glebius2013-10-151-3/+1
|
* - While we are spreading the counter(9) across network stack, more userlandglebius2013-10-151-1/+3
| | | | | | | | | tools would need to know about the counter_u64_t type. Allow to include sys/counter.h from userspace. - Utilize now defined type in kvm_counter_u64_fetch(). Sponsored by: Netflix Sponsored by: Nginx, Inc.
* In r227839, when removing libkvm dependency on procfs(5),trociny2013-07-102-2/+1
| | | | | | | | | | | kvm_uread() function, used for reading from /proc/pid/mem, was removed too. But the function declaration remained in kvm.h public header and the soname was not bumped. Remove kvm_uread() from kvm.h and bump the soname. Reported by: rmh Discussed on: arch
* Switch to 2-clause license and standard textemaste2013-06-061-15/+11
| | | | Approved by: bms@
* libkvm: Make second /dev/null file descriptor close-on-exec as well.jilles2013-05-041-1/+1
| | | | MFC after: 1 week
* libkvm: Use O_CLOEXEC instead of separate fcntl(F_SETFD) call.jilles2013-05-041-15/+4
| | | | MFC after: 1 week
* Remove EOL whitespace.joel2013-04-111-1/+1
|
* Fix typo.glebius2013-04-111-1/+1
|
* Include types.h for C99 uintXX_t types.glebius2013-04-111-1/+1
|
* o Provide function kvm_read_zpcpu() to access UMA_ZONE_PCPU allocations.glebius2013-04-104-7/+89
| | | | | | o Provide function kvm_counter_u64_fetch() to fetch valut of a counter(9). Sponsored by: Nginx, Inc.
* kvm_getprocs: gracefully handle errors from kvm_deadprocsavg2012-10-061-2/+8
| | | | | | and don't confuse callers with incorrect return value MFC after: 9 days
* kvm_proclist: ignore processes in larvae stateavg2012-10-061-0/+2
| | | | | Reviewed by: jhb MFC after: 8 days
* If the IdlePDPT is not present, PAE is not activekevlo2012-09-101-1/+0
|
* General mdoc(7) and typo fixes.gjb2012-05-111-2/+2
| | | | | | PR: 167734 Submitted by: Nobuyuki Koganemaru (kogane!jp.freebsd.org) MFC after: 3 days
* Try to avoid ambiguity when sysctl returns ENOMEM additionallytrociny2012-02-011-2/+3
| | | | | | | | | | | | checking the returned oldlen: when ENOMEM is due to the supplied buffer being too short the return oldlen is equal to buffer size. Without this additional check kvm_getprocs() gets stuck in loop if the returned ENOMEM was due the exceeded memorylocked limit. This is easily can be observed running `limits -l 1k top'. Submitted by: Andrey Zonov <andrey zonov org> MFC after: 1 week
* In kvm_argv(), the case when the supplied buffer was too short to hold thetrociny2012-01-151-23/+31
| | | | | | | | | | requested value was handled incorrectly, and the function retuned NULL instead of the truncated result. Fix this and also remove unnecessary check for buf != NULL, which alway retuns true. MFC after: 3 days
* Now kvm_getenvv() and kvm_getargv() don't need procfs(5).trociny2011-11-222-341/+27
| | | | MFC after: 2 weeks
* Add support for PBVM addresses. In a nutshell this means:marcel2011-08-061-7/+81
| | | | | | | | | | | | | | | o get the physical address and size of the PBVM page table. This can be found in the bootinfo structure, of which the physical address is recorded as the ELF entry point. o translate region 4 virtual addresses to physical addresses using the PBVM page table. In _kvm_kvatop() make the distinction between physical address and core file offset a little clearer to avoid confusion. To further enhance readability, always store the translated address into pa so that it's obvious how the translation from va to pa happened. Approved by: re (blanket)
* Rename ki_ocomm to ki_tdname and OCOMMLEN to TDNAMLEN.bz2011-07-181-2/+2
| | | | | | | | | Provide backward compatibility defines under BURN_BRIDGES. Suggested by: jhb Reviewed by: emaste Sponsored by: Sandvine Incorporated Approved by: re (kib)
* With retirement of cpumask_t and usage of cpuset_t for representing aattilio2011-07-041-29/+2
| | | | | | | | | | | | | | | mask of CPUs, pc_other_cpus and pc_cpumask become highly inefficient. Remove them and replace their usage with custom pc_cpuid magic (as, atm, pc_cpumask can be easilly represented by (1 << pc_cpuid) and pc_other_cpus by (all_cpus & ~(1 << pc_cpuid))). This change is not targeted for MFC because of struct pcpu members removal and dependency by cpumask_t retirement. MD review by: marcel, marius, alc Tested by: pluknet MD testing by: marcel, marius, gonzo, andreast
* Revert r222363, as bde@ pointed out the initial solution was far moreattilio2011-05-311-1/+1
| | | | correct.
* Style fix: cast to size_t rather than u_long when comparing to sizeof()attilio2011-05-271-1/+1
| | | | | | rets. Requested by: kib
* In the near future cpuset_t objects in struct pcpu will be axed out, butattilio2011-05-271-2/+29
| | | | | | | | as long as this does not happen, we need to fix interfaces to userland in order to not break run-time accesses to the structure. Reviwed by: kib Tested by: pluknet
* MFCattilio2011-05-142-8/+0
|
* libkvm: fix logic inversion introduced with last commituqs2011-02-021-2/+2
| | | | | Reported by: Brandon Gooch <jamesbrandongooch@gmail.com> Pointy hat to: uqs
* libkvm: Unbreak build for powerpc64/powerpcuqs2011-01-241-0/+1
| | | | | This slipped through my testing due to the recent roto-tiling of the ARCH/TARGET parts that I need to catch up with. Mea culpa.
* libkvm: fix process runtime calculation on crashdumpsuqs2011-01-232-13/+29
| | | | | | | | | | | | | Fix a long standing bug, where the procs ticks where assumed to be in us. Instead, read cpu_tick_frequency from the kernel and use the same logic to convert runtime. This is still too optimistic in that it assumes cpu_tick_frequency is available and fixed. Since this function is only called on crashdumps, I think we can live with that. Testing has shown the values to be correct for different kern.hz inside Virtualbox. Bump WARNS. Alignment issues on some archs mean this is still at 3. Reviewed by: bde
* libkvm code janitoringuqs2011-01-2320-309/+215
| | | | | | | | | | | | - make WARNS=6 clean for archs w/o strict alignment requirments - add const, ANSIfy, remove unused vars, cast types for comparison - thanks to differing definitions of VM_MIN_ADDRESS across our archs, we need to trick the compiler to not complain about signedness. We could either fix VM_MIN_ADDRESS to always be a simple integer or make the check conditional on $ARCH. Closes PRs: kern/42386, kern/83364 Reviewed by: bde
* Revert most of r210764, now that mdocml does the rightuqs2010-12-281-1/+1
| | | | | | thing with empty quotation macros. Requested by: Alex Kozlov
* Similar to sys/net/vnet.h, define the linker set name for sys/sys/pcpu.hdim2010-11-142-5/+6
| | | | as a macro, and use it instead of literal strings.
* amd64: introduce minidump version 2avg2010-11-111-14/+94
| | | | | | | | | | | | | | | | | | After KVA space was increased to 512GB on amd64 it became impractical to use PTEs as entries in the minidump map of dumped pages, because size of that map alone would already be 1GB. Instead, we now use PDEs as page map entries and employ two stage lookup in libkvm: virtual address -> PDE -> PTE -> physical address. PTEs are now dumped as regular pages. Fixed page map size now is 2MB. libkvm keeps support for accessing amd64 minidumps of version 1. Support for 1GB pages is added. Many thanks to Alan Cox for his guidance, numerous reviews, suggestions, enhancments and corrections. Reviewed by: alc [kernel part] MFC after: 15 days
* Add minidump support for MIPSgonzo2010-11-074-11/+318
|
* Repair some build breakage introduced in r211725 and garbage collect somenwhitehorn2010-08-281-2/+8
| | | | code made obsolete in the same commit.
OpenPOWER on IntegriCloud