| Age | Commit message (Collapse) | Author |
|
Move the headers to include/asm-x86 and fixup the
header install make rules
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
|
gcc 5.0 will likely not have the constraint problem
Signed-off-by: Andi Kleen <ak@suse.de>
|
|
+m is really correct for a RMW instruction, but some older gccs
error out. I finally gave in and ifdefed it.
This fixes compilation errors with some compiler version.
Signed-off-by: Andi Kleen <ak@suse.de>
|
|
Based on patch from David Rientjes <rientjes@google.com>, but
changed by AK.
Optimizes the 64-bit hamming weight for x86_64 processors assuming they
have fast multiplication. Uses five fewer bitops than the generic
hweight64. Benchmark on one EMT64 showed ~25% speedup with 2^24
consecutive calls.
Define a new ARCH_HAS_FAST_MULTIPLIER that can be set by other
architectures that can also multiply fast.
Signed-off-by: Andi Kleen <ak@suse.de>
|
|
Changes are largely identical to the i386 version:
* alternative #define are moved to the new alternative.h file.
* one new elf section with pointers to the lock prefixes which can be
nop'ed out for non-smp.
* two new elf sections simliar to the "classic" alternatives to
replace SMP code with simpler UP code.
* fixup headers to use alternative.h instead of defining their own
LOCK / LOCK_PREFIX macros.
The patch reuses the i386 version of the alternatives code to avoid code
duplication. The code in alternatives.c was shuffled around a bit to
reduce the number of #ifdefs needed. It also got some tweaks needed for
x86_64 (vsyscall page handling) and new features (noreplacement option
which was x86_64 only up to now). Debug printk's are changed from
compile-time to runtime.
Loosely based on a early version from Bastian Blank <waldi@debian.org>
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
|
|
- remove sched_find_first_bit()
- remove generic_hweight{64,32,16,8}()
- remove ext2_{set,clear,test,find_first_zero,find_next_zero}_bit()
- remove minix_{test,set,test_and_clear,test,find_first_zero}_bit()
Signed-off-by: Akinobu Mita <mita@miraclelinux.com>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
Use single instruction for find largest set bit on x86_64.
[Updated by Jan Beulich to fix wrong asm constraints in original
patch -AK]
Cc: jbeulich@novell.com
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
Noticed by Andreas Schwab
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
This patch eliminates the GCC4 warning on the x86_64 platform:
kernel/sched.c:1824: warning: control may reach end of non-void function
'sched_find_first_bit' being inlined.
The change follows the lead of others, i.e. it is guaranteed that at least
one of b[0], b[1], or b[2] will have a bit set and evaluate to true. That
being said, GCC4.0.0 notices that the code flow does not return anything if
b[0], b[1] and b[2] are not true. Since we know better, if it's not b[0] or
b[1], it has to be b[2].
Signed-off-by: Jesse Millan <jessem@cs.pdx.edu>
Signed-off-by: Domen Puncer <domen@coderock.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
This patch adds in the necessary support for sparsemem such that x86-64
kernels may use sparsemem as an alternative to discontigmem for NUMA
kernels. Note that this does no preclude one from continuing to build NUMA
kernels using discontigmem, but merely allows the option to build NUMA
kernels with sparsemem.
Interestingly, the use of sparsemem in lieu of discontigmem in NUMA kernels
results in reduced text size for otherwise equivalent kernels as shown in
the example builds below:
text data bss dec hex filename
2371036 765884 1237108 4374028 42be0c vmlinux.discontig
2366549 776484 1302772 4445805 43d66d vmlinux.sparse
Signed-off-by: Matt Tolentino <matthew.e.tolentino@intel.com>
Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
Add missing argument brackets in bitop macros
Makes these macros somewhat safer to use.
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
This fixes various issues in the previous update, in particular
a kernel without CONFIG_GART_IOMMU should boot now again,
The kernel discoverys PCI BUS<->CPU affinity on AMD systems
now. It is so far used by dma_alloc_coherent to allocate memory
Experimental patches to add this to sysfs exist, but they're not
included yet. On systems with no memory on a CPU this information may
be wrong.
It has a new experimental CONFIG_UNORDERED_IO option. When enabled
it uses write combining for stores to device iomemory mapping. This
may give better performance with some device drivers, but has a slight
risk of breaking drivers (in general if a driver works on ia64,ppc64,sparc64
it should also work). Based on some discussions with Grant Grundler.
It requires the driver to use memory barriers properly. I would be interested
in feedback on any performance changes you're seeing. For a production system I
would recommend to keep it turned off(although I run it on all my systems and
haven't run into any problems yet)
ACPI and Centrino speedstep is enabled now for Nocona systems.
The IOMMU code does lazy merging by default now, which should be safe
and may increase performance on block IO. It also avoids SAC force by default
now.
The machine check code has been improved again, hopefully it is good
now. It will log now machine check events from before the last reset.
And various other fixes.
The x86-64 parts are now gcc 3.5 clean.
And various other fixes
- Update defconfig
- Reset lost ticks on lost time warning, print RIP.
- Make TASK_SIZE test for 32bit (Arjan van de Ven)
- Work around bug in generic code that broke pcibus_to_cpumask
- Actually fix dummy iommu code
- Compile i386 acpi and speedstep-centrino cpufreq modules
- Export cpu_khz
- Fix compilation without GART_IOMMU
- Optimize find_*_bit functions for small fields
- Discover nodes near PCI busses on K8 (Travis Betak, changed by me)
- Optimize gart tlb flush slightly
- Add experimental CONFIG_UNORDERED_IO for unordered IO stores
- Add 32bit emulation for PTRACE_GETEVENTMSG
- Fix kernel_fpu_{begin,end} for preemptive kernels (Alexander Nyberg)
- Readd proper check for biomerge (got lost)
- Set up 32bit vsyscall page for ptrace early
- Add 32bit emulation for lookup_dcookie() for oprofile
- Export copy_page / clear_page
- Use rex prefix in save_init_fpu fxsave (Jan Beulich)
- Make it compile again
- Fix handling of hwdev == NULL (= ISA/LPC devices) in swiotlb
- Convert PCI DMA code to dma devices
- Change IOMMU code to use dummy fallback device instead of hardcoded
NULL tests everywhere.
- Test iommu_sac_force instead of nommu for DAC supported macro
(will cause more drivers to use DAC)
- Harden non IOMMU dma_alloc_consistent code to fail less likely.
- Remove use of strsep in option parsers
- Remove duplicated exports (Arjan van der Ven)
- Fix EFAULT checking in ptrace (John Blackwood)
- Update defconfig
- Remove dead URL from boot/setup.S (R.J. Wysocki)
- Use compat_sigval_t instead of sigval_t32 (Al Viro)
- Nanooptimization in 32bit ptregs calls
- Fix gcc 3.5 compilation in mtrr.h
- Pass pt_regs as pointer to avoid illegal pass by reference (for gcc 3.5)
- Make set_bit take int not long (Harald Dunkel)
- Avoid panic on pci_map_sg and pci_alloc_consistent overflow in GART IOMMU
- Handle large lost time delays in HPET code (Suresh B. Siddha)
- Work around theoretical bugs in prefetch handling (suggested by Jamie Lokier)
- Remove mtrr_strings declaration for gcc 3.5
- Set KBUILD_IMAGE for make rpm (William Lee Irwin III)
- Add iommu=noaperture to not touch the aperture
- Clean up argument parsing for iommu= option
- Export symbols for xchgadd based rwsems (still disabled)
- Define iommu_bio_merge for !CONFIG_GART_IOMMU
- Don't use backwards rep ; movsb for memmove
- Out line bitmap search functions (saves 8k .text, from i386)
- Convert bitmap search functions to 64bit accesses and optimize them
a bit.
- Handle corrupted page tables in page fault handler
- Set iommu_merge (without force) to on by default again.
- Don't do bio merging by default for iommu=merge. This should make it
safe to use again
- Add iommu=biomerge option to enable BIO merging (like old iommu=merge)
- Fix iommu=memaper=... parsing
- More MCE fixes (based on a patch by Eric Morton, heavily changed by me)
- Fix check for banks causing exceptions
- Allow to reinit MCEs later even after mce=off, fix wrong
use of __initdata
to disable at boot, but reenable later.
- Log left over machine checks after boot and resume
- Fix missing prototype warning with CPU_FREQ on
- Fix parsing of noexec=on (Ian Hastie)
- Fix warning in ia32_binfmt.c
- Resync time variable cpu frequency handling with i386
- Resync msr.c with i386
- Add 0x60 level 1 intel cache descriptor (from i386)
- Remove duplicated 32bit ioctls (Arnd Bergmann)
- Enable -msoft-float (from i386)
- Use faster version of FPU hang fix - handle the exception
* a bit experimental, if you see "kernel ... math error" events
in the log please report.
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
Add accumulated bug fixes for x86-64 and some minor cleanups.
- Add ptep_set_access_flags from i386
- Change memory text mapping to 10MB from 40MB to make alias window
smaller
- Disable change_page_attr for kernel mapoing for now (wrong, but the
other code also doesn't work)
- Add .bss.page_aligned and align interrupt/exception stacks (idea from
Matt Mackall)
- Protect sysenter MSR setup against missing registers.
- Set mce tolerance level to 1 (panic instead of deadlock)
- Fix cross 4GB bug in find_first_bit (Michael Matz)
- Add missing memory clobbers in bitops.h (Suresh B. Siddha)
- Check kernel size at boot up
- Set boot cpu online at boot to fix early printk
- Fix EFER bit definitions (Dave Jones)
- Fix comments in 32bit syscall table.
- Quieten all 32bit syscalls that are unimplemented in 32bit.
- Various MCE fixes suggested by Eric Morton, David Boles et.al.
More to come.
- Quieten some printks
- Fix cpu online check in msr driver
- Lower polling interval for machine checks to 5 minutes to avoid
overrunning the registers.
- Make memcpy_{from,to}io more compatible with i386 (Roland Dreier)
|
|
x86_64 has an incorrect ffs() implementation. The asm uses "g" instead
of "rm" for the bsfl instruction. (This was spotted by Yuri Per.)
bsfl does not accept constant values but only memory or register ones.
On i386 the correct "rm" is used.
This causes NTFS build to fail as gcc optimizes a variable into a
constant and ffs() then fails to assemble.
|
|
From: Paul Jackson <pj@sgi.com>
I've read over the code in each case, built and ran a test case for i386 in
particular, and studied the other uses and definitions of
test_and_change_bit(). Everything I see recommends this change.
- Fix test_and_change_bit() comment: returns old value, not new one.
|
|
From: Andi Kleen <ak@suse.de>
This patch saves 2MB of memory on a 1GB x86-64 machine, 20MB on a 10GB
machine. It does this by eliminating 8 bytes of useless padding in struct
page.
This resurrects an older patch in a hopefully cleaner form.
|
|
At least one of them is critical. It fixes an path in the IOMMU that
I broke with the ealier "fullflush" workaround.
- Check for ~/bin/installkernel like i386 (M. Bligh)
- Implement 32bit RTC_IRQ_SET correctly (Lutz Vieweg)
- Disable some useless printks in 32bit emulation
- Warning fixes for mixed C99 style declarations/statements.
- Sync lAPIC power management with i386
- Use topology sysfs like i386
- Fix some serious bugs in the MCE handler. ECC should
be decoded correctly now.
- Add oops=panic option to panic on Oopses.
- Fix hackish code in head.S
- Add missing options in IOMMU
- Fix _syscall6 (Olaf Hering)
- Remove broken ACPI locking code. Port IA64 C version.
- Make safe_smp_processor_id() more reliable
- Read HPET in vsyscall code
- Add workaround for BIOS that corrupt 64bit registers in HLT
- Fix unaligned access in bitops.h
- Remove broken ntp drift correction code for now
- i386 merge in SCI setup
- Fix wrong offset in callin.h (Jim Houston)
- Minor comment fixes
|
|
Nothing too exciting, just some minor new features and bug fixes.
The IOMMU code should now not BUG again without CONFIG_IOMMU_DEBUG/iommu=force
- Compiles now with -funit-at-a-time
- Fix up ioctl 32bit tables following Andrew's change.
- Fix __SI_POLL siginfo_t passing to user space
- Add 32bit emulation for fadvise64_64
- Remove unneeded sys32_utimes
- Various merges with i386 (ACPI, APIC etc.)
- Port cpuid patching infrastructure from i386
- Use it to provide better copy_*_user/memcpy/memset/clear/copy_page for
C stepping K8. String instructions are faster now that unrolled loops.
- Don't try to merge unforced PCI mappings that don't exceed the device's
DMA mask.
- Discard .exit.data/.exit.text at runtime like i386
- Don't use NTI stores for clear_user
- Convert bitops.h bitmap functions to use unsigned long * pointers instead
of void *
- Fix some warnings in kernel headers.
- Fix PDA comments
|
|
Make everything compile and boot again.
- Update defconfig
- Some minor cleanup
- Introduce physid_t for APIC masks (fixes UP kernels)
- Add bandaid for CardBus bridges and broken BIOS (Vojtech)
- Add bandaid for unsynchronized TSCs (Vojtech)
- Fix ffs(0) return value (fixes XFS)
- Fix compilation with software suspend
|
|
From: William Lee Irwin III <wli@holomorphy.com>
Contributions from:
Jan Dittmer <jdittmer@sfhq.hn.org>
Arnd Bergmann <arnd@arndb.de>
"Bryan O'Sullivan" <bos@serpentine.com>
"David S. Miller" <davem@redhat.com>
Badari Pulavarty <pbadari@us.ibm.com>
"Martin J. Bligh" <mbligh@aracnet.com>
Zwane Mwaikambo <zwane@linuxpower.ca>
It has ben tested on x86, sparc64, x86_64, ia64 (I think), ppc and ppc64.
cpumask_t enables systems with NR_CPUS > BITS_PER_LONG to utilize all their
cpus by creating an abstract data type dedicated to representing cpu
bitmasks, similar to fd sets from userspace, and sweeping the appropriate
code to update callers to the access API. The fd set-like structure is
according to Linus' own suggestion; the macro calling convention to ambiguate
representations with minimal code impact is my own invention.
Specifically, a new set of inline functions for manipulating arbitrary-width
bitmaps is introduced with a relatively simple implementation, in tandem with
a new data type representing bitmaps of width NR_CPUS, cpumask_t, whose
accessor functions are defined in terms of the bitmap manipulation inlines.
This bitmap ADT found an additional use in i386 arch code handling sparse
physical APIC ID's, which was convenient to use in this case as the
accounting structure was required to be wider to accommodate the physids
consumed by larger numbers of cpus.
For the sake of simplicity and low code impact, these cpu bitmasks are passed
primarily by value; however, an additional set of accessors along with an
auxiliary data type with const call-by-reference semantics is provided to
address performance concerns raised in connection with very large systems,
such as SGI's larger models, where copying and call-by-value overhead would
be prohibitive. Few (if any) users of the call-by-reference API are
immediately introduced.
Also, in order to avoid calling convention overhead on architectures where
structures are required to be passed by value, NR_CPUS <= BITS_PER_LONG is
special-cased so that cpumask_t falls back to an unsigned long and the
accessors perform the usual bit twiddling on unsigned longs as opposed to
arrays thereof. Audits were done with the structure overhead in-place,
restoring this special-casing only afterward so as to ensure a more complete
API conversion while undergoing the majority of its end-user exposure in -mm.
More -mm's were shipped after its restoration to be sure that was tested,
too.
The immediate users of this functionality are Sun sparc64 systems, SGI mips64
and ia64 systems, and IBM ia32, ppc64, and s390 systems. Of these, only the
ppc64 machines needing the functionality have yet to be released; all others
have had systems requiring it for full functionality for at least 6 months,
and in some cases, since the initial Linux port to the affected architecture.
|
|
Without these changes an x86-64 NUMA kernel won't boot in many
configurations.
The main change is the improved IOMMU code which supports merging of
mappings and has various bugfixes.
- Update defconfig
- Use argument ptregs in 32bit elf_core_copy_task_fpregs
- Harden aperture fixup code: read aperture from the AGP bridge if needed,
better error checking.
- Support nmi_watchdog=panic to panic on watchdog trigger
- IOMMU: Support panic on IOMMU overflow (iommu=panic)
- IOMMU: Force SAC for mappings >40bits when iommu=force is active
(this can potentially give better performance)
- IOMMU: Cache northbridges for faster TLB flush
- IOMMU: Fix SMP race in TLB flush
- IOMMU: Merge pci_alloc_consistent and pci_map_single
- IOMMU: Clean up leak tracing
- IOMMU: Rewrite pci_map_sg, support merging of mappings
On overflow fall back to piece-by-piece mapping.
- IOMMU: Tell block layer to assume merging when iommu force is active
(this gives better performance with MTP fusion, drawback is that the
overflow/fragmentation handling of the IOMMU area is still a big
dubious with that)
- Fix/clean up per cpu data
- Add 64bit clean time(2)
- Export cpu_callout_map for IPv6
- Handle nodes with no own memory in NUMA discovery.
This fixes boot on various newer Opteron motherboards where the memory
is only connected to a single CPU.
- Fix fallback path for failed NUMA discovery. numnodes has to be reset.
- Check for enabled nodes in NUMA discovery (Eric Biederman)
- Remove NUMA emunodes support. Has badly bitrotted.
- Add __clear_bit_string for IOMMU code
- Add new 32bit system calls to ia32_unistd.h
- Remove duplicate default_do_nmi prototype
- Make PCI_DMA_BUS_IS_PHYS dependent on no_iommu
- Fix padding length of siginfo_t to match glibc
- More pci direct access functions.
|
|
From Alex Tomas and myself
ext2 currently uses lock_super() to protect the filesystem's in-core block
allocation bitmaps.
On big SMP machines the contention on that semaphore is causing high context
switch rates, large amounts of idle time and reduced throughput.
The context switch rate can also worsen block allocation: if several tasks
are trying to allocate blocks inside the same blockgroup for different files,
madly rotating between those tasks will cause the files' blocks to be
intermingled.
On SDET and dbench-style worloads (lots of tasks doing lots of allocation)
this patch (and a similar one for the inode allocator) improve throughout on
an 8-way by ~15%. On 16-way NUMAQ the speedup is 150%.
What wedo isto remove the lock altogether and just rely on the atomic
semantics of test_and_set_bit(): if the allocator sees a block was free it
runs test_and_set_bit(). If that fails, then we raced and the allocator will
go and look for another block.
Of course, we don't really use test_and_set_bit() because that
isn'tendian-dependent. New atomic endian-independent functions are
introduced: ext2_set_bit_atomic() and ext2_clear_bit_atomic(). We do not
need ext2_test_bit_atomic(), since even if ext2_test_bit() returns the wrong
result, that error will be detected and naturally handled in the subsequent
ext2_set_bit_atomic().
For little-endian machines the new atomic ops map directly onto the
test_and_set_bit(), etc.
For big-endian machines we provide the architecture's impementation with the
address of a spinlock whcih can be taken around the nonatomic ext2_set_bit().
The spinlocks are hashed, and the hash is scaled according to the machine
size. Architectures are free to implement optimised versions of
ext2_set_bit_atomic() and ext2_clear_bit_atomic().
|
|
This still has a few problems; e.g. posix-timers.c seems to be miscompiled
by many x86-64 compilers when compiled with -O1. But overall it is better
than before.
- Disable numa again that was enabled by mistake
- Fix CPU detection in early boot. Force SSE when needed.
- Hack for nested NMIs.
- Fix typo in vsyscall code that lead to broken time reporting
- Merge with 2.5.62-bk4 (new switch_to, printk cleanups, new timer calls etc.)
- Fix bug in strace - don't assume syscall_trace doesn't clobber %rcx
- Fix gs load workaround
- Fix return value of ioperm (found by new LTP test)
- Remove some unecessary boot output
- Remove some obsolete code in setup.c
- Report more in /proc/cpuinfo, fix extended cpu family computation
- Fix thread_info access from interrupt/exception stacks - this
fixes many problems that especially showed on SMP (lost reschedule
interrupts etc.)
- Fix UP compilation
- Symlink hugetlbpage.c from i386
- Fix buggy lazy fpu handling
|
|
- Optimize __copy*user a bit.
- Merge with 2.5.53/i386
- Fix broken 32bit signal handling.
- Implement AT_SYSINFO and a vsyscall page for 32bit programs.
- Fix 32bit SYSCALL entry point to handle 6 arguments and restart correctly.
- Add oprofile support (Vojtech Pavlik, with changes by me)
This is shared code with i386.
|
|
This patch depends on the i386 MTRR driver cleanup I sent earlier.
- Support non executable mappings for x86-64. data/heap are non executable
by default now.
- Beginnings of software suspend from Pavel (not working yet)
- Support generic compat functions and remove some shared code
in the 32bit emulation (Stephen Rothwell)
- Support hugetlbfs
- Some makefile updates
- Make sure all 32bit emulation functions return long, not int.
This fixes some problems with ERESTARTNOSYS.et.al. leaking to userspace.
- Add new system calls.
- Fix long standing fs/gs context switch bugs (thanks to Karsten Keil
for helping to fix that mess). Also make sure the gs selector is
set to 0 after an exec.
- Simplify TLS switching
- Paranoid CPUID check at bootup
- Reorder scatterlist to be more space efficient (Jes Soerensen)
- Enlarge 32bit address space to full 4GB.
- Beginnings of 32bit SYSCALL support (not completely working yet
and vsyscall page miss yet)
- Various merges from i386
- New module loader
- Support threaded core dump (XMM saving for 32bit programs doesn't
work, but it appears to be broken on i386 too)
- Fix bug in signal stack rounding
- Remove DRM 32bit emulation.
- Use MTRR driver from i386
- Use bootflag.c from i386
- Various other fixes and cleanups.
|
|
Update various lib/ functions for x86-64:
- new memcpy/memset/csum-copy/copy_page/user
- add bitstr support function for IOMMU
- Other minor fixes and updates.
|
|
Here is the big 2.5.21 x86-64 sync patch. It only touches arch/x86_64
and include/asm-x86_64. It requires a few other changes that I'm sending
in separate mail.
Changes:
- merge wit 2.5.21
- merge from 2.5.21/i386 (new PCI code, new LDT code etc.)
- sync with 2.4-x86_64 tree.
- minor updates to 32bit emulation
- better early console; including serial support.
- now set up dummy PDA for booting to avoid problems
- Fix GS reloading in context switch one instruction race
- Remove hardcoded names from mpparse code
- Fix inline assembly for RAID-5 xor (similar change needed for i386)
- Real per cpu data support based on PDA field
- Cleanup of offset.c generation requested by Kai: it only puts structure
offsets into offset.h now.
- Fix i387 fxsave signal frame problems.
- Add uname emulation via personality ("linux32")
- New SSE optimized checksum-copy, copy*user, memcpy, clear_page, copy_page
functions. Other tunings/cleanups in checksum and other user memory
access function.
- check if exception table is really sorted
- Cleanups in page table handling in preparation of non executable pages
support.
- Cleanup PDA access to not require offset.h (thanks to kai for kicking me
to this)
- use long long for u64/s64 to avoid more warnings
- remove CONFIG_ISA
- fix various bugs and other cleanups
|
|
This patch brings 2.5.8 in sync with the x86-64 2.4 development tree again
(excluding device drivers)
It has lots of bug fixes and enhancements. It only touches architecture
specific files.
- Sync with 2.5.8
- SMP/APIC supported now.
- Module loading works now.
- Time keeping bugs fixed.
- entry.S streamlined and some bugs fixed.
- modify_ldt works now
- mostly rewritten FPU support (including FXRSTOR for initial FPU
initialization based on the initial state)
- 32bit emulation enhanced and bugs fixed.
- rewrote mm initialization and lots of cleanups in the page table handling
__PAGE_OFFSET is now moved to 0x10000000000 and some vmalloc/ioremap
problems have been fixed. They have an own PML4 slot now.
- WCHAN reporting support for RIP (but not RSP)
- Lots of various other bug fixes and cleanups.
Currently broken:
- ACPI
- MTRR
It needs some other bugfixes outside architecture specific code. I sent
them all in separate mail.
|
|
This patch makes x86-64 compile in 2.5.5 and syncs it with changes in the i386
port. It also fixes some bugs that were discovered in recent testing:
- enhance 32bit emulation and fix bugs.
- fix security hole in vmalloc handling
- Do not use lockless gettimeofday for now because it is buggy.
The patch only changes x86_64 specific files.
-Andi
|
|
This adds the x86_64 arch and asm directories and a Documentation/x86_64.
It took a bit longer because I first had to make preemption and thread_info
work and also found some other bugs while doing this. The port has been
tested for a long time on UP.
I'm not sure what I should describe. A lot is based on i386 with
a lot of cleanups. I wrote a paper about it for last year's OLS that describes
most of the changes (ftp://ftp.firstfloor.org/pub/ak/x86_64.ps.gz). It is
a bit outdated now, but should give a good overview.
It currently has a completely cut'n'pasted from others+hacked 32bit
emulation. I hope to clean that up in the future by merging the generic
core of this with other 64bit archs.
Thanks,
-Andi
|