LKML Archive on lore.kernel.org help / color / mirror / Atom feed
* [git pull] x86 arch updates for v2.6.25 @ 2008-01-30 1:15 Ingo Molnar 2008-01-31 0:33 ` x86 arch updates also broke s390 Adrian Bunk ` (3 more replies) 0 siblings, 4 replies; 49+ messages in thread From: Ingo Molnar @ 2008-01-30 1:15 UTC (permalink / raw) To: Linus Torvalds Cc: linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin Linus, please pull the latest x86 git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git Find the shortlog attached below. Most of the changes we have described here: http://lkml.org/lkml/2008/1/21/230 It's not a small merge, it consists of 908 commits from 96 individual arch/x86 developers (!): 671 files changed, 42791 insertions(+), 38967 deletions(-) so here are a few highlevel comments as well, in addition to the shortlog: - a number of core files are changed as well: most notably percpu, debugging details, timers, the firewire remote debugging patch and ... the KGDB remote debugging stub in kernel/kgdb.c. - we tested KGDB to be merge-worthy within the x86 architecture (the only supported architecture for now) and it's better to have kernel/kgdb.c than arch/x86/kernel/kgdb.c. The code is reasonably clean and the user-space exposure is small - the only real exposure is the decades-old remote GDB protocol. We are happy to fix up any further cleanliness comments that people might have - but we really wanted to start somewhere and get this thing moving. As an added bonus: finally a kernel debugger that can be read without puking too much ;-) [anyone remember KDB?] - the core timer and genirq changes are pushed via x86.git for convenience reasons, we tested them inside x86.git for a long time. - the module loader bits have been seen and acked by Rusty - work is going on in parallel to make those bits cleaner, but they are no merge-stopper for him now. - the ptrace/regset bits from Roland are tied to x86 regset support and affect no other architecture. (but they enable easy regset merging for other architectures in the future) - the lockbreak cleanup patches are tied to the ticket spinlocks and big ticket spinlocks - hence the changes to fs/*. - the changes to agp drivers are mechanic, due to the CPA API cleanups and fixes. Behavior is not supposed to change, a number of drivers were tested in that category and no breakage is known at the moment. (see further below about the CPA changes) - a sizable portion of the queue is the 120 patches strong CPA/ioremap rewrite. Tons of bugs fixed and we now think it's a dependable basis. Because this is the riskiest item we've placed it near the end of our queue, in a way that makes it easy to revert/mute the riskiest (or all) aspects of these changes. [ NOTE: these CPA fixes, due to their intrusiveness are not backmergable into v2.6.24. Sorry about that, but pushing 100+ patches into stable is just not realistic. ] - the PAT patches are not included yet - they were breaking too many boxes and were exposing too many hardware details that we are neither handling right nor do we have them all mapped yet to a sufficient degree. Also, the basic CPA machinery has to be dependable before we can start putting in the hard cache attribute constraints that PAT requires. The CPA changes are fully compatible with all known driver details and there's no known breakage at the moment. - there's full 64-bit paravirt support now - but no hypervisor bindings yet. These might show up a bit later as they are rather isolated (in fact i'd expect them to show up real soon ;) - important was to get the core changes cleaned up, integrated and tested. - PIE/brk randomization. Not a single regression happened due to this so far (and it's been in x86.git for months) - it seems exec-shield has rooted out stuff years ago - but we'll see. Details in the patch. It's easily revertable in any case. - new debugging feature: init memory permanently unmapped from the direct mappings, to catch __init section bugs faster. This could trigger in other subsystems. Right now dependent on CONFIG_DEBUG_PAGEALLOC=y. - if we forgot to mention any important item it's due to sheer exhaustion :-/ Please ask and we'll explain anything that is missing. the x86.git queue has been built and booted on 32-bit and 64-bit x86, allnoconfig and allyesconfig [the new CONFIG_SIS190 gigabit driver in -git has been disabled because it has build failures], including a real legacy i386 DX 33 MHz system which successfully booted x86.git today. In the past few weeks tens of thousands of random x86.git bzImages were successfully built and booted on a number of (commodity) 32-bit and 64-bit testsystems - and there has been a fair amount of test exposure on -mm as well. We expect the x86.git changes to be pretty robust - if any problems there are they should be under more specialized conditions. (or due to very recent changes that we kept at the tail of the commit list) Famous last words? :) Ingo, Thomas ------------------> Aaron Durbin (1): x86: add ACPI reboot option Abhishek Sagar (2): x86: kprobes change kprobe_handler flow x86: fix singlestep handling in reenter_kprobe Adrian Bunk (8): x86: unexport __{read,write}_lock_failed x86 e820_64.c: make 2 functions static x86 mce_64.c: make struct mcelog static x86: nmi_64.c: make code static x86: pci-calgary_64.c: make a variable static x86: pci-dma_64.c: cleanups x86: remove -maccumulate-outgoing-args on 32-bit x86: default to PCI=y Alan Cox (3): x86: isolate PIC/PIT in/out calls x86: serverworks: IRQ routing needs no _p x86: reboot: remove inb_p usage Alistair John Strachan (1): x86: force enable HPET on (some?) ICH9 boards Ananth N Mavinakayanahalli (1): x86: kprobes: add kprobes smoke tests that run on boot Andi Kleen (49): clocksource: make clocksource watchdog cycle through online CPUs x86: untable __init references between IO data x86: make ptrace.h safe to include from assembler code x86: implement support to synchronize RDTSC through MFENCE on AMD CPUs x86: Implement support to synchronize RDTSC with LFENCE on Intel CPUs x86: move nop declarations into separate include file x86: introduce rdtsc_barrier() x86: remove get_cycles_sync x86: remove the now unused X86_FEATURE_SYNC_RDTSC x86: move X86_FEATURE_CONSTANT_TSC into early cpu feature detection x86: allow TSC clock source on AMD Fam10h and some cleanup x86: remove explicit C3 TSC check on 64bit x86: don't disable TSC in any C states on AMD Fam10h genirq: turn irq debugging options into module params x86: add /proc/irq/*/spurious to dump the spurious irq debugging state x86: remove CPU capabitilites printks on 32-bit x86: document fdimage/isoimage completely in make help x86: compile apm and voyager module only when selected in Kconfig x86: Set CFQ as default in 32-bit defconfig x86: mark memory_setup __init x86: move MWAIT idle check to generic CPU initialization on 32-bit x86: use the correct cpuid method to detect MWAIT support for C states x86: use shorter addresses in i386 segfault printks x86: replace hard coded reservations in 64-bit early boot code with dynamic table x86: optimize lock prefix switching to run less frequently x86: don't disable the APIC if it hasn't been mapped yet x86: print which shared library/executable faulted in segfault etc. messages v3 x86: add framework to disable CPUID bits on the command line x86: convert some existing cpuid disable options to new generic bitmap x86: don't disable RDTSC in userland for 32bit notsc x86: convert TSC disabling to generic cpuid disable bitmap x86: add noclflush option x86: add generic clearcpuid=... option x86: remove iBCS support c_p_a(): do a simple self test at boot x86: clean up pte_exec x86: add pte accessors for the global bit x86: c_p_a(), add simple self test at boot x86: cpa: use wbinvd() macro instead of inline assembly in 64bit c_p_a() x86: cpa: remove unnecessary masking of address x86: shrink __PAGE_KERNEL/__PAGE_KERNEL_EXEC on non PAE kernels x86: add pte_pgprot to 32-bit x86: don't drop NX bit in pte modifier functions on 32-bit x86: fix c_p_a() boot crash x86: c_p_a() fix: reorder TLB / cache flushes to follow Intel recommendation x86: c_p_a() make it more robust against use of PAT bits x86: introduce canon_pgprot() x86: remove set_kernel_exec() x86: fix early_ioremap() on 64-bit Andreas Herrmann (1): x86: fix detection of CONSTANT_TSC bit for AMD CPUs Andreas Herrmann3 (1): x86: fix cpu MHz reporting for AMD family 0x11 Andres Salomon (1): x86: GEODE: update GPIO API to support setting multiple GPIOs at once Andrew Morton (9): x86: kmap_atomic() debugging x86: PIE executable randomization, checkpatch fixes x86: PIE executable randomization, uninlining x86: __vdso_getcpu() warning fix x86: arch/x86/kernel/cpu/mcheck/ checkpatch fixes x86: arch/x86/kernel/cpu/mcheck/k7.c checkpatch fixes x86: arch/x86/math-emu/errors.c: fix printk warnings git-x86: drivers/pnp/pnpbios/bioscalls.c build fix arch/x86/mm/numa_64.c: section fix Arjan van de Ven (20): debug: move WARN_ON() out of line debug: add the end-of-trace marker and the module list to x86: fix 32-bit FRAME_POINTER chasing code x86: add the capability to print fuzzy backtraces x86: improve the 32 bit Frame Pointer backtracer to also use the traditional backtrace x86: pull bp calculation earlier into the backtrace path x86: turn 64 bit x86 HANDLE_STACK into print_context_stack like 32 bit has x86: use the stack frames to get exact stack-traces for CONFIG_FRAMEPOINTER on x86-64 x86: add a simple backtrace test module x86: add the "print code before the trapping instruction" feature to 64 bit x86: make printk_address regs->ip always reliable x86: turn the check_exec function into function that x86: a new API for drivers/etc to control cache and other page attributes x86: convert CPA users to the new set_page_ API x86: deprecate change_page_attr() for drivers x86: make various pageattr.c functions static x86: fix pageattr-selftest x86: make sure initmem is writable x86: add testcases for RODATA and NX protections/attributes x86: move misplaced rodata check call Atsushi Nemoto (1): clocksource: make CLOCKSOURCE_MASK bullet-proof Balaji Rao (2): x86: assign IRQs to HPET timers x86: assign IRQs to HPET timers, fix Benjamin LaHaise (1): x86: fix synchronize_rcu(): high latency on idle system Bernhard Kaindl (1): x86: early boot debugging via FireWire (ohci1394_dma=early) Bernhard Walle (3): x86: remove extern declarations for code, data, bss resources x86, rtc: make CONFIG_HPET_EMULATE_RTC usable from modules rtc: use the IRQ callback interface in (old) RTC driver Borislav Petkov (1): x86: vmlinux_32.lds.S: remove repeated comment from the x86-32 linker script Carlos R. Mafra (2): x86: fix style errors in nmi_int.c x86: clean up k8topology.c Chris Wright (2): x86: fix ioport unification on 32-bit x86: refactor ioport unification Christoph Lameter (1): x86: 64-bit, make sparsemem vmemmap the only memory model Cyrill Gorcunov (6): x86: remove dead code in ia32-emu x86: clean up include/asm-x86/pda.h x86: cleanup i387_32.c according to checkpatch x86: coding style cleanup for kernel/bootflag.c x86: get rid of checkpatch.pl complains on apm_32.c x86: use KSYM_NAME_LEN Daniel Walker (1): mcheck mce_64: mce_read_sem to mutex Dave Jones (2): x86: remove more bogus filenames in comments. x86: use CR0 defines. Dmitri Vorobiev (1): x86_32: remove the useless NR_syscalls macro Eduardo Habkost (3): x86: include/asm-x86/paravirt.h: x86_64 mmu operations x86: don't set pagetable_setup_{start,done} hooks on 64-bit x86: fill in missing pv_mmu_ops entries for PAGETABLE_LEVELS >= 3 Eduardo Pereira Habkost (2): x86: allow enabling PARAVIRT without any guest implementation x86: remove depends on X86_32 from PARAVIRT & PARAVIRT_GUEST Eric Dumazet (1): x86: make arch/x86/kernel/acpi/wakeup_32.S use a separate Florian Fainelli (4): x86: add generic GPIO support to x86 pci: add PCI identifiers for the RDC devices x86: add support for the RDC R-321x SoC x86: add the RDC machine specific reboot fixup Gary Hade (1): PCI: remove default PCI expansion ROM memory allocation Geert Uytterhoeven (1): time: fold __get_realtime_clock_ts() into getnstimeofday() Glauber de Oliveira Costa (97): x86: irqflags consolidation x86: consolidate spinlock.h x86: wipe out traditional opt from x86_64 Makefile x86: unify msr smp funcs x86: allow sched clock to be overridden by paravirt x86: split get_cycles_sync x86: unify cpuid functions x86: introduce native_read_tscp x86: change rdpmc interface x86: change write msr functions interface x86: make fixups wordsize agnostic x86: integrate 32-bit and 64-bit code in msr.h x86: remove volatile keyword from clflush. x86: put together equal pieces of system.h x86: unify load_segment macro x86: unify paravirt parts of system.h x86: remove unused macro x86: unify smp parts of system.h x86: move switch_to macro to system.h x86: unify system.h x86: put get_kernel_rpl in a common location x86: unify common parts of segment.h x86: remove arch specific segment headers x86: export math_state_restore x86: export cpu_gdt_descr x86: turn priviled operation into a macro in head_64.S x86: prepare time related functions for paravirt x86: tweak io_64.h for paravirt. x86: prepare 64-bit architecture initialization for paravirt x86: unify desc_struct x86: unify struct desc_ptr x86: change gdt acessor macro name x86: removed unused variable x86: introduce gate_desc type. x86: change write_idt_entry signature x86: introduce ldt_desc type. x86: modify write_ldt function x86: introduce fill_ldt x86: provide tss_desc x86: change write_gdt_entry signature. x86: change write_ldt_entry signature x86: move constants to desc_defs.h x86: unify non-paravirt parts of desc.h x86: use the same data type for tls_array. x86: modify get_desc_base x86: unify paravirt pieces of descriptor handling x86: move _set_gate and its users to a common location x86: unify set_tss_desc x86: avoid ifdefs in desc.h, getting rid of pack_ldt and pack_tss x86: move tsc definitions to were they belong x86: get rid of _MASK flags x86: move desc_empty to where they belong x86: move load_cr3 to a common place. x86: unify paravirt pieces of processor.h x86: move the definition of set_iopl_mask to common header x86: unify common parts of processor.h x86: unify current_text_addr x86: unify tss_struct x86: provide 64-bit with a load_sp0 function. x86: unify thread struct. x86: unify TASK_ALIGN definitions x86: change bitwise operations to get a void parameter. x86: unify x86_cpuinfo struct. x86: remove legacy stuff from processor_64.h x86: unify mm_segment_t definition x86: move definitions to processor.h x86: unify prefetch operations x86: unify asm nops x86: move i387 definitions to processor.h x86: remove __init modifier from header declaration x86: finish processor.h integration x86: change paravirt_32.c name x86: adjust PVOP_CALL/VCALL macros for 64-bit x86: cleanup write_tsc x86: provide paravirtualized hook for rdtscp x86: change assembly definition of paravirt_patch_site x86: adjust assembly macros on 64-bit as well. x86: change irq functions to accomodate 64-bit x86: add macro for privileged 64-bit operation x86: adds paravirt hook for swapgs x86: replace privileged instructions with paravirt macros x86: cleanup CLI_STRING, STI_STRING and friends x86: add CLBR_ defines for 64-bit x86: move patching code to arch-specific file. x86: patching functions on 64-bit replace x86_read/write_per_cpu with a common function. x86: add stringify header x86: provide a native_init_IRQ function on 64-bit x86: put generic mm_hooks include into PARAVIRT x86: puts read and write cr8 into pv_cpu_ops x86: provide read and write cr8 paravirt hooks x86: fill pv_cpu_ops structure with cr8 fields x86: add asm_offset PARAVIRT constants x86: provide __parainstructions section x86: change function orders in paravirt.h x86: export check_tsc_unstable x86: export __supported_pte_mask Greg KH (1): kobj: fix threshold_init_device/kobject_uevent_env oops Guillaume Chazarain (1): x86: scale cyc_2_nsec according to CPU frequency H. Peter Anvin (21): x86: add <asm/asm.h> x86: unify asm/cpufeature.h x86: prepare merger of <asm/alternative_{32,64}.h> x86: actually merge <asm/alternative.h> x86: rename the struct pt_regs members for 32/64-bit consistency x86: use generic register names in struct user_regs_struct x86: use generic register names in struct sigcontext x86: use generic register name in the thread and tss structures i386: handle an initrd in highmem (version 2) x86: <asm/segment.h>: boot GDT entries are 32/64-independent x86 setup: make PM transition more paranoid; cleanup 32-bit entry x86 setup: initialize LDTR and TR to make life easier to Intel VT x86 setup: use X86_CR0_PE macro instead of hard-coded constant x86 setup: display VESA graphics modes in vga=ask menu x86 setup: fix constraints in segment accessor functions x86 setup: OK -> ok (no need to scream) x86 setup: add missing prototype; formatting fix x86 setup: add note to use edd=off on EDD probing hangs x86 setup: push video mode setup as late as possible x86 setup: guard the heap against invalid stack setups x86 setup: correct the base in the GDT_ENTRY() macro Harvey Harrison (56): x86: use def_bool where possible x86: use def_bool where possible in Kconfig.cpu x86: unify include/asm-x86/linkage_[32|64].h x86: unify mmap_{32|64}.c UML: remove remaining FASTCALL uses x86: remove last users of FASTCALL core: remove last users of empty FASTCALL macro x86: remove all definitions with fastcall x86: remove fastcall from include/asm-x86 x86: clean up local_{32|64}.h x86: fix asm memory constraints in local_64.h x86: introduce asm helpers in local_{32|64}.h x86: unify local_{32|64}.h x86: local.h fix checkpatch warnings x86: unify kexec_{32|64}.h x86: unify extable_{32|64}.c x86: use helper in fault_64.c x86: kprobes leftover cleanups x86: unify module_{32|64}.h x86: add reenter_kprobe helper x86: introduce REX prefix helper for kprobes x86: kprobes remove fix_riprel #ifdef x86: cosmetic fixes fault_{32|64}.c x86: kprobes change kprobe_handler flow x86: fault_32.c cleanup x86: begin fault_{32|64}.c unification x86: introduce force_sig_info_fault helper to X86_64 x86: introduce __die helper to X86_32 x86: more users of PF_ constants in fault_32|64.c x86: use fixup_exception() in traps_64.c x86: move get_segment_eip() to step.c x86: trivial whitespace in kprobes.c x86: use wrmsrl in kprobes.c, step.c x86: common x86_32|64 naming x86: remove last user of get_segment_eip x86: do_page_fault small unification x86: last of trivial fault_32|64.c unification x86: function ifdefs in fault_32|64.c x86: unify pt_regs accessors ptrace.h x86: clean up ptrace.h x86: rename stack_pointer to kernel_trap_sp x86: unify printk strings in fault_32|64.c x86: use v8086_mode helper, trivial unification x86: add vdso32-int80-syms.lds to .gitignore x86: update reliability argument to printk_address x86: make printk_address available on X86_32 x86: add dump_pagetable helper to X86_32 x86: add is_f00f_bug helper to fault_32|64.c x86: add is_errata100 helper to fault_32|64.c x86: introduce show_fault_oops helper to fault_32|64.c x86: unify page fault oops printing x86: unify fault_32|64.c by ifdef'd function bodies x86: unify fault_32|64.c with ifdefs x86: unify fault_32|64.c x86: remove nx_enabled from fault.c x86: shrink some ifdefs in fault.c Hiroshi Shimamoto (11): x86: enable irq in default_idle on 64-bit x86: io_apic_64.c: remove unused config check x86: clean up nmi_32/64.c x86: clean up process_32/64.c x86: clean up apic_32/64.c x86: clean up apic_32.c, take 2 x86: move out tick_nohz_stop_sched_tick() call from the loop x86: kdump failure x86: move warning message of polling idle and HT enabled x86: move select_idle_routine() call after detect_ht() x86: remove struct cpu_model_info Huang, Ying (17): x86: EFI runtime service support x86: EFI runtime service support: EFI runtime services x86: EFI runtime service support: document for EFI runtime services x86: EFI runtime service support: remove duplicated code from efi_32.c x86 boot: use E820 memory map on EFI 32 platform x86: 32-bit EFI runtime service support: fixes in sync with 64-bit support x86 boot : export boot_params via debugfs for debugging i386 boot: replace boot_ioremap with enhanced bt_ioremap - enhance bt_ioremap x86: replace boot_ioremap() with enhanced bt_ioremap() - remove boot_ioremap() x86 32-bit boot: rename bt_ioremap() to early_ioremap() x86: early_ioremap_reset fix x86: make early_ioremap_debug early_param x86: fix some bugs about EFI runtime code mapping x86: fix NX bit handling in change_page_attr() x86: ioremap_nocache fix x86: use reboot_type on EFI 32 x86: fixes some bugs about EFI memory map handling Ian Campbell (11): x86_32: remove unnecessary use of %ebx as the boot cpu flag x86_32: always run the full set of paging state. x86: unify whitespace and comments in arch/x86/boot/compressed/vmlinux_??.lds x86: unify whitespace in arch/x86/boot/compressed/vmlinux_??.scr x86: switch to .rodata.compressed in arch/x86/boot/compressed/vmlinux_??.scr x86: unify arch/x86/boot/compressed/vmlinux_??.scr x86: unify strings in arch/x86/boot/compressed/misc_??.c x86: unify whitespace and comments in arch/x86/boot/compressed/misc_??.c x86: unify headers in arch/x86/boot/compressed/misc_??.c x86: unify variable names in arch/x86/boot/compressed/misc_??.c x86: unify arch/x86/boot/compressed/misc_??.c Ingo Molnar (124): x86: offer is_hpet_enabled() on !CONFIG_HPET_TIMER too x86: make clockevents more robust x86: various changes and cleanups to in_p/out_p delay details x86: make io_delay=0xed the default x86: add DMI quirk for io-delay hangs on Compaq Presario V6000 laptops x86: idle wakeup event in the HLT loop x86: clean up arch/x86/kernel/aperture_64.c x86: clean up arch/x86/kernel/aperture_64.c printk()s x86: mach-voyager, lindent x86: lindent arch/i386/math-emu x86: lindent arch/i386/math-emu, cleanup x86: code cleanups in arch/x86/kernel/pci-gart_64.c x86: clean up drivers/char/rtc.c x86: avoid build warning x86: dummy placeholder for acpi/reboot.h x86: replace outb_p() with udelay(2) in drivers/input/mouse/pc110pad.c x86: remove unused include/asm-x86/processor_32/64.h x86: add some pirq debugging x86: hlt on early crash x86: debug: double-check the empty zero page x86: lfence fix x86: move native_read_tsc() offline x86: map vsyscalls early enough x86: read_tsc sync x86: fix sched_clock() x86: page.h: move and unify types for pagetable entry, #1 x86: page.h: move and unify types for pagetable entry, #2 x86: page.h: move and unify types for pagetable entry, #3 x86: page.h: move and unify types for pagetable entry, #4 x86: page.h: move and unify types for pagetable entry, #5 x86: page.h: move and unify types for pagetable entry, #6 x86: clean up include/asm-x86/calling.h x86: clean up arch/x86/mm/fault_64.c x86: migration helpers for KVM x86: add PWT to NOCACHE flags x86/pgtable: fix constant sign extension problem x86/pgtable: unify pagetable accessors, #1 x86/pgtable: unify pagetable accessors, #2 x86/pgtable: unify pagetable accessors, #3 x86/pgtable: unify pagetable accessors, #4 x86/pgtable: unify pagetable accessors, #5 x86: unify pgtable accessors which use, #2 x86: fix pte_modify() bug x86: fix UML and -regparm=3 x86: make early printk selectable on 64-bit as well x86: smp_scan_config() debugging printouts x86: pat: e820 cleanup x86: fix DMI ioremap leak x86: early fault debugging improvement x86: add debug of invalid per_cpu map accesses x86: check_tsc_warp() slowness fix x86: add warning to check_tsc_warp() x86: fix up alternatives with lockdep enabled genirq: stackdump after the "Trying to free already-free IRQ" message x86: get_cycles() fix x86: clean up paging_init() x86: fix DEBUG_RODATA kconfig text x86: improve MTRR trimming messages kgdb: cleanup header section pid: add pid_max prototype kgdb: eliminate KGDB_WRITE_TEST kgdb: eliminate KGDB_READ_TEST kgdb: cleanups kgdb: cleanups x86: change ioremap() to default to uncached x86: clean up arch/x86/mm/pageattr_32.c x86: clean up arch/x86/mm/pageattr_64.c x86: return the page table level in lookup_address() x86: clean up arch/x86/mm/pageattr-test.c x86: enhance early_ioremap() x86: increase the number of boot-mappings x86: add debug warnings to early_ioremap() x86: early_ioremap(), debugging x86: add early_ioremap() leak detection x86: fix early_ioremap()/btmap x86: fix EISA ioremap x86: early_ioremap_init(), enhance warnings x86: fix more non-global TLB flushes x86: simplify the 32-bit cpa code x86: simplify 32-bit cpa largepage splitting x86: further cpa largepage-split cleanups x86: cpa self-test fixes x86: simplify cpa largepage split, #3 x86: cpa: simplify locking x86: do not PSE on CONFIG_DEBUG_PAGEALLOC=y x86: cpa self-test, WARN_ON() x86: prepare for the unification of the cpa code x86: prepare for the unification of the cpa code x86: simplify pageattr_64.c x86: unify header part of pageattr_64.c x86: clean up and simplify 64-bit split_large_page() x86: introduce native_set_pte_atomic() on 64-bit too x86: simplify __change_page_attr() x86: change 64-bit __change_page_attr() to struct page x86: change 64-bit pageattr to use set_pte_atomic() x86: 64-bit pageattr.c, prepare for unification x86: 64-bit, add the new split_large_page() function x86: clean up differences between 64-bit and 32-bit x86: return -EINVAL in __change_page_attr(), instead of 0 x86: add kernel_map_pages() to 64-bit x86: enable DEBUG_PAGEALLOC on 64-bit x86: backmerge 64-bit details into 32-bit pageattr.c x86: prepare for pageattr.c unification x86: unify pageattr_32.c and pageattr_64.c x86: re-add clflush_cache_range() x86: clean up arch/x86/mm/pageattr.c x86: keep the BIOS area executable x86: change cpa to pfn based x86: add PAGE_KERNEL_EXEC_NOCACHE x86: cpa: make self-test depend on DEBUG_KERNEL x86: cpa: move clflush_cache_range() x86: cpa: set_memory_notpresent() x86: remove flush_agp_mappings() x86: cpa: fix loop x86: ioremap KERN_INFO x86: fix clflush_page_range logic x86: init memory debugging x86: enable CONFIG_DEBUG_PAGEALLOC more widely x86: rodata config hookup x86: cpa: fix the self-test x86: make ioremap() UC by default x86: arch/x86/mm/init_64.c printk fixes x86: arch/x86/mm/init_32.c cleanup x86: arch/x86/mm/init_32.c printk fixes Jan Beulich (9): i386: hard_{en,dis}able_TSC can be static x86-64: make pda's cpunumber and nodenumber unsigned x86-64: honor notify_die() returning NOTIFY_STOP x86: move to .rodata/.init.data x86: make __{save,restore}_processor_state static x86: adjust enable_NMI_through_LVT0() x86: also define AT_VECTOR_SIZE_ARCH x86-64: clean up linker script x86: adjust/fix LDT handling for Xen Jan Engelhardt (2): x86: remove unneded casts x86: constify function pointer tables Jan Kiszka (3): KGDB: various refactorings KGDB: various refactorings, #2 KGDB: refactor kconfig menu Jason Wessel (9): kgdb: core-lite x86: kgdb, clocksource_watchdog x86: kgdb, softlockup x86: kgdb, 8250 x86: kgdb, lite x86: kgdb, sysrq_bugfix x86: kgdb, modules x86: kgdb, asm_debug KGDB: core code cleanups Jeff Dike (2): UML: change sigcontext fields to match x86 uml: add asm-um/asm.h Jeremy Fitzhardinge (45): x86: partial unification of asm-x86/bitops.h x86: clean up bitops-related warnings x86: add set/clear_cpu_cap operations x86: kill mk_pte_huge x86: clean up mm/init_32.c x86: page.h: unify constants x86: page.h: unify page copying and clearing x86: add _AT() macro to conditionally cast x86: page.h: move and unify types for pagetable entry x86: page.h: move pa and va related things x86: page.h: move remaining bits and pieces x86: page.h: move things back to their own files x86/efi: fix improper use of lvalue x86: move all asm/pgtable constants into one place x86: avoid name conflict for Voyager leave_mm x86/pgtable: unify pagetable accessors, #6 x86: mask NX from pte_pfn x86: unify pgtable accessors which use x86: page.h: make pte_t a union to always include x86/vmi: fix compilation as a result of pte_t changes x86: pgtable: unify pte accessors x86: fix warning x86: unify zero_page definition x86: unify paravirt pagetable accessors xen: mask out PWT too x86/pgtable: explain constant sign extension problem add native_pud_val and _pmd_val for 2 and 3 x86/paravirt: rearrange common mmu_ops x86/paravirt: common implementation for pte value ops x86/paravirt: common implementation for pgd value ops x86/paravirt: common implementation for pmd value ops x86/paravirt: make set_pte operations common x86/paravirt: make set_pmd operation common x86/paravirt: make set_pud operation common xen: fix mismerge in masking pte flags x86: add mm parameter to paravirt_alloc_pd x86: demacro asm-x86/pgalloc_32.h xen: deal with pmd being allocated/freed x86: preallocate pmds at pgd creation time x86: allocate and initialize unshared pmds x86: ignore spurious faults x86: don't special-case pmd allocations as much x86: defer cr3 reload when doing pud_clear() x86: use the same pgd_list for PAE and 64-bit x86: fix early_ioremap pagetable ops Jesse Barnes (1): x86, 32-bit: trim memory not covered by wb mtrrs Jiri Kosina (2): x86: randomize brk x86: PIE executable randomization Joachim Deguara (1): x86: add PCI IDs to k8topology_64.c Joe Perches (1): arch/x86/: spelling fixes Joerg Roedel (4): x86: define all _PAGE_* in terms of _PAGE_BIT_* on 64-bit x86: use __PAGE_KERNEL* instead of _KERNPG_TABLE x86: some whitespace cleanups in paging code x86: use __PAGE_KERNEL_EXEC in ioremap_64.c John Reiser (1): x86: add ENDPROC() markers Julia Lawall (3): arch/x86/ia32: use time_before, time_before_eq, etc. arch/x86/kernel/apm_32.c: use time_before, time_before_eq, arch/x86/kernel/io_apic_{64,32}.c: use time_before Kyle McMartin (1): x86: 64-bit, remove redundant cpu_has_ definitions Len Brown (1): x86: 32-bit IOAPIC: de-fang IRQ compression Lucas Woods (1): x86: remove duplicate includes Markus Metzger (10): x86, ptrace: support for branch trace store(BTS) x86, ptrace: remove bad comment x86, ptrace: use jiffies for BTS timestamps x86, ptrace: change BTS GET ptrace interface x86, ptrace: new ptrace BTS API x86, ptrace: rlimit BTS buffer allocation x86, ptrace: support 32bit-cross-64bit BTS recording x86, ptrace: add buffer size checks x86, ptrace: overflow signal API x86, ptrace: add bts_struct size to status command Masami Hiramatsu (6): x86: kprobe-booster for x86-64 x86: return probe-booster for x86-64 x86: prepare kprobes code for x86 unification x86: kprobes code for x86 unification x86: fix kprobe_handler reenable preemption x86: move deeply indented code to reenter_kprobe Mathieu Desnoyers (1): x86: fall back on interrupt disable in cmpxchg8b on 80386 and 80486 Mel Gorman (3): x86: make NUMA work on 32-bit again x86: make NUMA work on 32-bit x86: relax restrictions on setting CONFIG_NUMA on x86, #2 Michael Opdenacker (1): x86: fix unconditional arch/x86/kernel/pcspeaker.o compiling Miguel Boton (1): x86: reboot_{32|64}.c unification Mike Galbraith (1): x86: fix: s2ram + P4 + tsc = annoyance Mike Travis (5): x86: prevent dereferencing non-allocated per_cpu variables x86: reduce memory and intra-node effects x86: fix early NUMA-id access x86: fix early cpu_to_node panic from nr_free_zone_pages x86/non-x86: percpu, node ids, apic ids x86.git fixup Min Zhang (1): arch/x86/kernel/cpu/mcheck/p4.c: cleanups Minoru Usui (1): x86: fix NUMA emulation on 64-bit Neil Horman (2): x86, kexec: force x86 arches to boot kdump kernels on boot cpu x86: clean up arch/x86/kernel/early-quirks.c Nick Piggin (4): spinlock: lockbreak cleanup x86: FIFO ticket spinlocks x86: reduce CONFIG_X86_PPRO_FENCE bloat x86: big ticket locks Nikanth Karthikesan (1): x86: change x86 machine check handler to use unlocked_ioctl instead Olof Johansson (1): debug: introduce __WARN() Paolo Ciarrocchi (2): x86: coding style fixes in arch/x86/ia32/audit.c x86: coding style fixes in arch/x86/pci/fixup.c Parag Warudkar (3): clocksource.c: use init_timer_deferrable for clocksource_watchdog x86: fix DMI out of memory problems x86: fix dmi_alloc() to not advance alloc index in case of Paul Jimenez (2): x86: make i8259_64 more _32-like x86: mtrr use type bool [RESEND AGAIN] Pavel Machek (4): time: clean hungarian notation from timers time: timer cleanups time: more timer related cleanups x86: unify arch/x86/kernel/acpi/sleep*.c Quentin Barnes (1): x86: code clarification patch to Kprobes arch code Rafael J. Wysocki (1): x86: hibernation: document __save_processor_state() on x86 Ralf Baechle (1): mips, x86: optimize the i8259 code a bit Randy Dunlap (3): x86: bitops_32.h style cleanups x64/page.h: convert some macros to inlines x86: discover_ebda section mismatch Rene Herman (1): x86: provide a DMI based port 0x80 I/O delay override. Robert Richter (1): x86: extended interrupt LVT support for AMD Barcelona Roland McGrath (101): x86: protect against sigaltstack wraparound x86 vDSO: generate vdso-syms.lds x86 vDSO: use vdso-syms.lds x86 vDSO: remove vdso-syms.o x86 vDSO: new layout x86 vDSO: harmonize asm-offsets x86 vDSO: arch/x86/vdso/vdso32 x86 vDSO: vdso32 build x86 vDSO: i386 vdso32 x86 vDSO: absolute relocs x86 vDSO: i386 vdso32 install x86 vDSO: vdso32 setup x86 vDSO: ia32_sysenter_target x86 vDSO: ia32 sysenter_return x86 vDSO: ia32 vdso32-syscall build x86 vDSO: consolidate vdso32 x86 vDSO: ia32 vsyscall removal x86 vDSO: reorder vdso32 code x86 vDSO: makefile cleanup x86 vDSO: canonicalize sysenter .eh_frame x86: get_desc_base x86: use get_desc_base x86: ptrace fs/gs_base x86: desc_empty x86: tls32 moved x86: TLS cleanup ptrace: arch_has_single_step x86: segment selector macros x86: remove TRAP_FLAG x86: arch_has_single_step x86: single_step moved x86: single_step segment macros x86: single_step 0xf0 x86: single_step: share code x86 single_step: TIF_FORCED_TF ptrace: generic resume x86-64: ptrace generic resume x86-32: ptrace generic resume powerpc: arch_has_single_step powerpc: ptrace generic resume x86-32 ptrace: use task_pt_regs x86-64 ptrace: use task_pt_regs x86: x86-64 ptrace debugreg cleanup x86: x86-64 ia32 ptrace debugreg cleanup x86: x86-32 ptrace debugreg cleanup ptrace: arch_has_block_step ptrace: generic PTRACE_SINGLEBLOCK x86: debugctlmsr constants x86: debugctlmsr kconfig x86: debugctlmsr context switch x86: debugctlmsr arch_has_block_step x86: debugctlmsr kprobes x86: PTRACE_SINGLEBLOCK x86: setup64 eflags constants x86: eflags enum x86: x86-64 ia32 ptrace pt_regs cleanup x86: x86-64 ptrace whitespace x86: x86-32 ptrace whitespace x86: x86-64 ptrace get/putreg current task x86: x86-32 ptrace get/putreg current task x86: x86-64 ia32 ptrace get/putreg32 current task x86: x86-32 thread_struct.debugreg x86: ptrace_32 renamed x86: ptrace FLAG_MASK cleanup x86: x86 ptrace getreg/putreg cleanup x86: x86 ptrace getreg/putreg merge x86: x86 ptrace arch merge x86: x86 ptrace merge syscall trace x86: x86 ia32 ptrace getreg/putreg merge x86: x86 ia32 ptrace arch merge x86: x86 ptrace merge complete x86: x86 ptrace merge removals x86: user_regset header elf core dump: notes reorg elf core dump: notes user_regset x86: user_regset helpers x86: compat_binfmt_elf x86: compat_binfmt_elf Kconfig x86: user_regset user-copy helpers x86: ptrace_request peekdata/pokedata x86: compat_ptrace_request x86: compat_sys_ptrace x86: x86-64 wired cpu_has macros x86: x86 i387 unify structs x86: x86 i387 header cleanup x86: x86 user_regset math_emu x86: i387 renaming x86: x86 i387 user_regset x86: x86 i387 cleanup x86: x86 TLS desc_struct cleanup x86: x86 user_regset TLS x86: x86 user_regset general regs x86: x86 user_regset_view x86: x86 CORE_DUMP_USE_REGSET x86: x86 ptrace user_regset x86: x86 user_regset cleanup x86: compat_binfmt_elf x86: x86 ia32_binfmt removal x86: x86 core dump TLS x86: x86 ptrace generic requests x86: early_idt_handler improvements, 64-bit Sam Ravnborg (20): x86: fix make mrproper x86: unification of arch/x86/Makefiles x86: share more options between 32 and 64 bit build x86: biarch support for 32 bit builds beautified x86: teach vdso to clean x86: unify arch/x86/kernel/Makefile(s) x86: unify arch/x86/boot/compressed/Makefile(s) x86: unify arch/x86/lib/Makefile(s) x86: gitignore arch/x86/vdso files xen: fix section usage in xen-head.S and setup.c x86: fix Section mismatch: reference to .init.text:lguest_entry x86: fix section mismatch warning in mcheck/mce_64.c x86: fix section mismatch warning in mcheck/mce_amd_64.c x86: fix section mismatch warning in process_*.c x86: fix section mismatch warning in acpi/boot.c x86: fix section mismatch warning in early-quirks.c x86: fix section mismatch warning in srat_64.c x86: fix section mismatch warning in topology.c x86: fix section mismatch warning in setup_64.c x86: fix usage of .section .sched.text in assembler code Siddha, Suresh B (1): x86: set strong uncacheable where UC is really desired Steven Rostedt (1): x86: remove unused tsk_thread from asm-offsets_64.c Thomas Gleixner (116): timer: clean up tick-broadcast.c x86: restrict PIT clocksource usage clocksource: add unregister function to disable unusable clocksources x86: unregister PIT clocksource when PIT is disabled x86: clean up arch/x86/ia32/fpu32.c x86: clean up arch/x86/ia32/aout32.c x86: clean up arch/x86/ia32/ia32_signal.c x86: clean up arch/x86/ia32/ipc32.c x86: clean up arch/x86/ia32/ptrace32.c x86: clean up arch/x86/ia32/sys_ia32.c x86: clean up arch/x86/ia32/syscall32.c x86: clean up arch/x86/ia32/mmap32.c x86: clean up arch/x86/kernel/e820_64.c x86: clean up arch/x86/kernel/ldt_32/64.c x86: clean up include/asm-x86/desc_64.h x86: introduce ldt_write accessor x86: prepare arch/x86/kernel/ldt_32/64.c for merging x86: merge arch/x86/kernel/ldt_32/64.c x86: unify include/asm-x86/apicdef_32/64.h x86: prepare unification of include/asm-x86/apic_32/64.h x86: rename get_maxlvt to lapic_get_maxlvt x86: use u32 for safe_apic_wait_icr_idle() x86: use u32 for some lapic functions x86: merge apic_32/64.h x86: remove duplicated declarations x86: move acpi and pci declarations x86: make early_indentify_cpu static x86: move idle related declarations x86: move k8 related declarations x86: move debug related declarations to kdebug.h x86: move mce related declarations x86: move numa related declarations x86: move page related declaration x86: move pda related declaration x86: move tsc related declarations x86: move pmtmr related declarations x86: remove obsolete nohpet declaration x86: remove duplicate start_kernel declaration x86: remove obsolte declarations from proto.h x86: move ioapic code where it belongs x86: move ack_bad_irq into irq code x86: make smp_local_timer_interrupt() static x86: prepare merging arch/x86/kernel/apic_32/64.c x86: prepare merging futex_32/64.h x86: merge futex_32/64.h x86: merge include/asm-x86/dma.h x86: merge include/asm-x86/scatterlist.h x86: simplify set_bitmap in ioport_32.c x86: clean up ioport_32.c x86: clean up arch/x86/kernel/vsmp_64.c x86: clean up arch/x86/mm/mmap_32/64.c x86: remove the duplicated arch/x86/ia32/mmap32.c x86: unify mc146818rtc.h - prepare for sharing rtc code x86: isolate the rtc code for sharing x86: share rtc code x86: clean up arch/x86/kernel/time_64.c includes x86: smp_64.c: remove unused exports and cleanup while at it x86: nuke a ton of dead hpet code x86: remove dead code and exports x86: nuke a ton of unused exports x86: move 8259 defines to i8259.h x86: fix asm constraints in spinlock_32/64.h x86: use immediates instead of RW_LOCK_BIAS_STR x86: spinlock_32/64 match the jump labels and symbols x86: spinlock_32/64 substitute types and instructions x86: merge spinlock.h variants x86: cleanup tlbflush.h variants x86: merge tlbflush.h variants x86: cleanup mpspec variants x86: merge mpspec variants x86: cleanup smp.h variants x86: cleanup acpi_32/64.h x86: merge acpi_32/64.h x86: put all kern_addr_valid() incarnations to pgtable.h x86: merge include/asm-x86/sparsemem.h x86: merge include/asm-x86/sparsemem.h x86: cleanup numa_64.c x86: fixup numa 64 namespace x86: adjust numa 32 namespace x86: consolidate toloplogy_32/64.h x86: merge topology.h variants x86: merge resume-trace.h variants x86: cleanup kernel/setup_64.c x86: sanity check APIC timer frequency x86: preset apic clockevents multiplicator x86: cleanup boot_ioremap_32.c x86: clean up lookup_address() declarations x86: add PG_LEVEL enum x86: fix ioremap pgprot inconsistency x86: fix ioremap pgprot inconsistency x86: style cleanup of ioremap code x86: cleanup ioremap includes x86: introduce max_pfn_mapped x86: make c_p_a unconditional in ioremap x86: switch to change_page_attr_addr in ioremap_32.c x86: __iomem annotations x86: use remove_vm_are in ioremap_32 error path x86: unify ioremap x86: unify ioremap_32 and _64 x86: move page_is_ram() function x86: fix the missing BIOS area check in page_is_ram x86: fix ioremap RAM check x86: fix ioremap API x86: cpa: convert ioremap to new API x86: cpa: move flush to cpa x86: cpa: fix split thinko x86: cpa: clean up change_page_attr_set/clear() x86: cpa move the flush into set and clear functions x86: cpa create set_and_clr function x86: cpa use the new set_clr function x86: cpa: implement clflush optimization x86: cpa: rename global_flush_tlb() to cpa_flush_all() x86: clflush_page_range needs mfence x86: optimize clflush x86: cpa cleanup the 64-bit alias math x86: unify ioremap Venki Pallipadi (2): time: track accurate idle time with tick_sched.idle_sleeptime x86: voluntary leave_mm before entering ACPI C3 Vladimir Berezniker (1): x86: sanitize user specified e820 memmap values WANG Cong (1): git-x86: unbreak UML Willy Tarreau (1): x86: GEODE add the "mfgptfix" boot time option to fix MFGPT timers Yi Yang (1): cpufreq: fix obvious condition statement error Yinghai Lu (22): x86: clear IO_APIC before enabing apic error vector. x86: store core id bits in cpuinfo_x8 x86: use core id bits for apicid_to_node initialization x86: set cpu_index to nr_cpus instead of 0 x86: do not set boot cpu in cpu_online_map at x86_64_start_kernel() x86: not clear empty_zero_page again x86: cleanup setup_node_zones called by paging_init() x86: disable the GART early, 64-bit x86: only call early_init_amd one time x86: msr for AMD Fam 10h mmio x86: checking aperture report for node instead x86: only support sparsemem x86_32: trim memory by updating e820 x86: left over fix for leak of early_ioremp in dmi_scan x86: remove duplicated line about x86: should use array directly for early_ptr x86: not set boot cpu in cpu_present_map again x86: not set boot cpu in cpu_online_map in smp_prepare_boot_cpu() x86: change aper valid checking sequence x86: fix recursion in arch/x86/kernel/cpu/mcheck/mce_amd_64.c x86: fix overlap between pagetable with bss section x86: fix nodemap_size according to nodeid bits clameter@sgi.com (1): x86: clean up stack allocation and free devzero@web.de (2): x86 setup: early cmdline parser handle boolean options x86 setup: be more verbose when probing EDD john stultz (1): NTP: correct inconsistent ntp interval/tick_length usage mboton@gmail.com (1): x86: ioport_{32|64}.c unification travis@sgi.com (21): percpu: use a kconfig variable to signal arch specific percpu setup percpu: move arch XX_PER_CPU_XX definitions into linux/percpu.h percpu: make the asm-generic/percpu.h more "generic" x86_32: use generic percpu.h x86: use generic percpu on 64-bit x86: unify percpu.h x86: change size of APICIDs from u8 to u16 x86: change size of node ids from u8 to u16 x86: change NR_CPUS arrays in powernow-k8 x86: change NR_CPUS arrays in smpboot_64 x86: change NR_CPUS arrays in topology x86: cleanup x86_cpu_to_apicid references x86: change NR_CPUS arrays in numa_64 x86: change NR_CPUS arrays in acpi-cpufreq x86: change bios_cpu_apicid to percpu data variable x86: fixup NR-CPUS patch for numa x86: change NR_CPUS arrays in numa_64 fixup x86: change bios_cpu_apicid to percpu data variable fixup x86: add debug of invalid per_cpu map accesses x86: change size of node ids from u8 to s16 x86: early cpu_to_node fix in numa_64.c arch/x86/Makefile_32 | 175 - arch/x86/Makefile_64 | 144 - arch/x86/boot/compressed/Makefile_32 | 50 arch/x86/boot/compressed/Makefile_64 | 30 arch/x86/boot/compressed/misc_32.c | 382 --- arch/x86/boot/compressed/misc_64.c | 371 --- arch/x86/boot/compressed/vmlinux_32.scr | 10 arch/x86/boot/compressed/vmlinux_64.scr | 10 arch/x86/ia32/fpu32.c | 183 - arch/x86/ia32/ia32_binfmt.c | 285 -- arch/x86/ia32/mmap32.c | 79 arch/x86/ia32/ptrace32.c | 404 --- arch/x86/ia32/syscall32.c | 83 arch/x86/ia32/syscall32_syscall.S | 17 arch/x86/ia32/tls32.c | 163 - arch/x86/ia32/vsyscall-sigreturn.S | 143 - arch/x86/ia32/vsyscall-syscall.S | 69 arch/x86/ia32/vsyscall-sysenter.S | 95 arch/x86/ia32/vsyscall.lds | 80 arch/x86/kernel/Makefile_32 | 88 arch/x86/kernel/Makefile_64 | 45 arch/x86/kernel/acpi/sleep_64.c | 117 - arch/x86/kernel/i387_32.c | 544 ---- arch/x86/kernel/i387_64.c | 150 - arch/x86/kernel/ioport_32.c | 151 - arch/x86/kernel/ioport_64.c | 117 - arch/x86/kernel/kprobes_32.c | 756 ------ arch/x86/kernel/kprobes_64.c | 749 ------ arch/x86/kernel/ldt_32.c | 248 -- arch/x86/kernel/ldt_64.c | 250 -- arch/x86/kernel/paravirt_32.c | 472 ---- arch/x86/kernel/ptrace_32.c | 717 ------ arch/x86/kernel/ptrace_64.c | 621 ----- arch/x86/kernel/reboot_32.c | 413 --- arch/x86/kernel/reboot_64.c | 176 - arch/x86/kernel/sysenter_32.c | 346 --- arch/x86/kernel/vsyscall-int80_32.S | 53 arch/x86/kernel/vsyscall-note_32.S | 45 arch/x86/kernel/vsyscall-sigreturn_32.S | 143 - arch/x86/kernel/vsyscall-sysenter_32.S | 122 - arch/x86/kernel/vsyscall_32.S | 15 arch/x86/kernel/vsyscall_32.lds.S | 67 arch/x86/lib/Makefile_32 | 11 arch/x86/lib/Makefile_64 | 13 arch/x86/mm/boot_ioremap_32.c | 100 arch/x86/mm/extable_32.c | 35 arch/x86/mm/extable_64.c | 34 arch/x86/mm/fault_32.c | 659 ----- arch/x86/mm/fault_64.c | 623 ----- arch/x86/mm/ioremap_32.c | 274 -- arch/x86/mm/ioremap_64.c | 210 - arch/x86/mm/mmap_32.c | 77 arch/x86/mm/mmap_64.c | 29 arch/x86/mm/pageattr_32.c | 278 -- arch/x86/mm/pageattr_64.c | 255 -- arch/x86/vdso/vdso-start.S | 2 arch/x86/vdso/voffset.h | 1 b/Documentation/DocBook/Makefile | 2 b/Documentation/DocBook/kgdb.tmpl | 236 ++ b/Documentation/debugging-via-ohci1394.txt | 179 + b/Documentation/kernel-parameters.txt | 51 b/Documentation/x86_64/boot-options.txt | 8 b/Documentation/x86_64/uefi.txt | 9 b/MAINTAINERS | 9 b/Makefile | 8 b/arch/arm/Kconfig | 5 b/arch/ia64/Kconfig | 8 b/arch/ia64/ia32/binfmt_elf32.c | 3 b/arch/ia64/kernel/module.c | 2 b/arch/m32r/Kconfig | 5 b/arch/mips/Kconfig | 5 b/arch/mips/kernel/i8253.c | 12 b/arch/parisc/Kconfig | 5 b/arch/powerpc/Kconfig | 8 b/arch/powerpc/kernel/ptrace.c | 52 b/arch/sparc64/Kconfig | 8 b/arch/um/kernel/ksyms.c | 4 b/arch/um/sys-i386/signal.c | 50 b/arch/um/sys-x86_64/signal.c | 70 b/arch/x86/Kconfig | 311 +- b/arch/x86/Kconfig.cpu | 65 b/arch/x86/Kconfig.debug | 129 + b/arch/x86/Makefile | 247 ++ b/arch/x86/boot/Makefile | 10 b/arch/x86/boot/apm.c | 3 b/arch/x86/boot/boot.h | 17 b/arch/x86/boot/cmdline.c | 65 b/arch/x86/boot/compressed/Makefile | 62 b/arch/x86/boot/compressed/misc.c | 413 +++ b/arch/x86/boot/compressed/relocs.c | 7 b/arch/x86/boot/compressed/vmlinux.scr | 10 b/arch/x86/boot/compressed/vmlinux_32.lds | 10 b/arch/x86/boot/compressed/vmlinux_64.lds | 12 b/arch/x86/boot/edd.c | 13 b/arch/x86/boot/header.S | 5 b/arch/x86/boot/main.c | 31 b/arch/x86/boot/pm.c | 6 b/arch/x86/boot/pmjump.S | 54 b/arch/x86/boot/video-bios.c | 3 b/arch/x86/boot/video-vesa.c | 26 b/arch/x86/boot/video-vga.c | 20 b/arch/x86/boot/video.c | 33 b/arch/x86/boot/video.h | 3 b/arch/x86/boot/voyager.c | 4 b/arch/x86/configs/i386_defconfig | 4 b/arch/x86/configs/x86_64_defconfig | 9 b/arch/x86/ia32/Makefile | 41 b/arch/x86/ia32/audit.c | 2 b/arch/x86/ia32/ia32_aout.c | 246 +- b/arch/x86/ia32/ia32_signal.c | 472 ++-- b/arch/x86/ia32/ia32entry.S | 11 b/arch/x86/ia32/ipc32.c | 30 b/arch/x86/ia32/sys_ia32.c | 504 ++-- b/arch/x86/kernel/Makefile | 97 b/arch/x86/kernel/acpi/Makefile | 2 b/arch/x86/kernel/acpi/sleep.c | 87 b/arch/x86/kernel/acpi/sleep_32.c | 70 b/arch/x86/kernel/acpi/wakeup_32.S | 2 b/arch/x86/kernel/acpi/wakeup_64.S | 32 b/arch/x86/kernel/alternative.c | 40 b/arch/x86/kernel/aperture_64.c | 374 ++- b/arch/x86/kernel/apic_32.c | 156 - b/arch/x86/kernel/apic_64.c | 1257 +++++------ b/arch/x86/kernel/apm_32.c | 379 +-- b/arch/x86/kernel/asm-offsets_32.c | 65 b/arch/x86/kernel/asm-offsets_64.c | 56 b/arch/x86/kernel/bootflag.c | 50 b/arch/x86/kernel/bugs_64.c | 1 b/arch/x86/kernel/cpu/addon_cpuid_features.c | 2 b/arch/x86/kernel/cpu/amd.c | 23 b/arch/x86/kernel/cpu/bugs.c | 5 b/arch/x86/kernel/cpu/common.c | 179 - b/arch/x86/kernel/cpu/cpu.h | 3 b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 25 b/arch/x86/kernel/cpu/cpufreq/longhaul.c | 2 b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 12 b/arch/x86/kernel/cpu/cyrix.c | 6 b/arch/x86/kernel/cpu/intel.c | 39 b/arch/x86/kernel/cpu/mcheck/k7.c | 25 b/arch/x86/kernel/cpu/mcheck/mce.h | 2 b/arch/x86/kernel/cpu/mcheck/mce_32.c | 4 b/arch/x86/kernel/cpu/mcheck/mce_64.c | 45 b/arch/x86/kernel/cpu/mcheck/mce_amd_64.c | 21 b/arch/x86/kernel/cpu/mcheck/p4.c | 35 b/arch/x86/kernel/cpu/mcheck/p5.c | 2 b/arch/x86/kernel/cpu/mcheck/p6.c | 23 b/arch/x86/kernel/cpu/mcheck/winchip.c | 2 b/arch/x86/kernel/cpu/mtrr/amd.c | 2 b/arch/x86/kernel/cpu/mtrr/cyrix.c | 3 b/arch/x86/kernel/cpu/mtrr/generic.c | 27 b/arch/x86/kernel/cpu/mtrr/if.c | 23 b/arch/x86/kernel/cpu/mtrr/main.c | 147 + b/arch/x86/kernel/cpu/mtrr/mtrr.h | 9 b/arch/x86/kernel/cpu/mtrr/state.c | 3 b/arch/x86/kernel/cpu/perfctr-watchdog.c | 1 b/arch/x86/kernel/cpu/proc.c | 2 b/arch/x86/kernel/cpuid.c | 2 b/arch/x86/kernel/doublefault_32.c | 19 b/arch/x86/kernel/ds.c | 464 ++++ b/arch/x86/kernel/e820_32.c | 241 -- b/arch/x86/kernel/e820_64.c | 428 ++- b/arch/x86/kernel/early-quirks.c | 127 - b/arch/x86/kernel/efi.c | 512 ++++ b/arch/x86/kernel/efi_32.c | 618 ----- b/arch/x86/kernel/efi_64.c | 134 + b/arch/x86/kernel/efi_stub_64.S | 109 b/arch/x86/kernel/entry_32.S | 26 b/arch/x86/kernel/entry_64.S | 101 b/arch/x86/kernel/genapic_64.c | 15 b/arch/x86/kernel/geode_32.c | 48 b/arch/x86/kernel/head64.c | 63 b/arch/x86/kernel/head_32.S | 17 b/arch/x86/kernel/head_64.S | 48 b/arch/x86/kernel/hpet.c | 60 b/arch/x86/kernel/i386_ksyms_32.c | 7 b/arch/x86/kernel/i387.c | 479 ++++ b/arch/x86/kernel/i8253.c | 72 b/arch/x86/kernel/i8259_32.c | 24 b/arch/x86/kernel/i8259_64.c | 160 - b/arch/x86/kernel/init_task.c | 1 b/arch/x86/kernel/io_apic_32.c | 13 b/arch/x86/kernel/io_apic_64.c | 112 - b/arch/x86/kernel/io_delay.c | 114 + b/arch/x86/kernel/ioport.c | 154 + b/arch/x86/kernel/irq_32.c | 22 b/arch/x86/kernel/irq_64.c | 30 b/arch/x86/kernel/kdebugfs.c | 65 b/arch/x86/kernel/kgdb-jmp_32.S | 74 b/arch/x86/kernel/kgdb-jmp_64.S | 65 b/arch/x86/kernel/kgdb.c | 533 ++++ b/arch/x86/kernel/kprobes.c | 1066 +++++++++ b/arch/x86/kernel/ldt.c | 260 ++ b/arch/x86/kernel/machine_kexec_32.c | 4 b/arch/x86/kernel/machine_kexec_64.c | 5 b/arch/x86/kernel/mfgpt_32.c | 15 b/arch/x86/kernel/microcode.c | 12 b/arch/x86/kernel/mpparse_32.c | 39 b/arch/x86/kernel/mpparse_64.c | 28 b/arch/x86/kernel/nmi_32.c | 14 b/arch/x86/kernel/nmi_64.c | 99 b/arch/x86/kernel/numaq_32.c | 2 b/arch/x86/kernel/paravirt.c | 440 +++ b/arch/x86/kernel/paravirt_patch_32.c | 49 b/arch/x86/kernel/paravirt_patch_64.c | 57 b/arch/x86/kernel/pci-calgary_64.c | 5 b/arch/x86/kernel/pci-dma_64.c | 3 b/arch/x86/kernel/pci-gart_64.c | 510 ++-- b/arch/x86/kernel/pci-swiotlb_64.c | 1 b/arch/x86/kernel/pmtimer_64.c | 4 b/arch/x86/kernel/process_32.c | 419 +-- b/arch/x86/kernel/process_64.c | 342 +-- b/arch/x86/kernel/ptrace.c | 1545 +++++++++++++ b/arch/x86/kernel/quirks.c | 2 b/arch/x86/kernel/reboot.c | 451 ++++ b/arch/x86/kernel/reboot_fixups_32.c | 14 b/arch/x86/kernel/rtc.c | 204 + b/arch/x86/kernel/setup64.c | 59 b/arch/x86/kernel/setup_32.c | 287 ++ b/arch/x86/kernel/setup_64.c | 555 ++--- b/arch/x86/kernel/signal_32.c | 225 +- b/arch/x86/kernel/signal_64.c | 133 - b/arch/x86/kernel/smp_32.c | 15 b/arch/x86/kernel/smp_64.c | 91 b/arch/x86/kernel/smpboot_32.c | 61 b/arch/x86/kernel/smpboot_64.c | 79 b/arch/x86/kernel/smpcommon_32.c | 7 b/arch/x86/kernel/srat_32.c | 8 b/arch/x86/kernel/stacktrace.c | 12 b/arch/x86/kernel/step.c | 203 + b/arch/x86/kernel/suspend_64.c | 30 b/arch/x86/kernel/suspend_asm_64.S | 32 b/arch/x86/kernel/sys_x86_64.c | 98 b/arch/x86/kernel/test_nx.c | 176 + b/arch/x86/kernel/test_rodata.c | 86 b/arch/x86/kernel/time_32.c | 114 - b/arch/x86/kernel/time_64.c | 187 - b/arch/x86/kernel/tls.c | 213 + b/arch/x86/kernel/tls.h | 21 b/arch/x86/kernel/topology.c | 23 b/arch/x86/kernel/traps_32.c | 350 +-- b/arch/x86/kernel/traps_64.c | 374 +-- b/arch/x86/kernel/tsc_32.c | 62 b/arch/x86/kernel/tsc_64.c | 100 b/arch/x86/kernel/tsc_sync.c | 30 b/arch/x86/kernel/vm86_32.c | 115 - b/arch/x86/kernel/vmi_32.c | 126 - b/arch/x86/kernel/vmiclock_32.c | 3 b/arch/x86/kernel/vmlinux_32.lds.S | 8 b/arch/x86/kernel/vmlinux_64.lds.S | 23 b/arch/x86/kernel/vsmp_64.c | 11 b/arch/x86/kernel/vsyscall_64.c | 11 b/arch/x86/kernel/x8664_ksyms_64.c | 13 b/arch/x86/lguest/Kconfig | 1 b/arch/x86/lguest/boot.c | 51 b/arch/x86/lib/Makefile | 26 b/arch/x86/lib/memcpy_32.c | 4 b/arch/x86/lib/memmove_64.c | 4 b/arch/x86/lib/semaphore_32.S | 22 b/arch/x86/lib/thunk_64.S | 2 b/arch/x86/mach-rdc321x/Makefile | 5 b/arch/x86/mach-rdc321x/gpio.c | 91 b/arch/x86/mach-rdc321x/platform.c | 68 b/arch/x86/mach-rdc321x/wdt.c | 275 ++ b/arch/x86/mach-visws/mpparse.c | 16 b/arch/x86/mach-voyager/setup.c | 34 b/arch/x86/mach-voyager/voyager_basic.c | 132 - b/arch/x86/mach-voyager/voyager_cat.c | 601 ++--- b/arch/x86/mach-voyager/voyager_smp.c | 690 ++---- b/arch/x86/mach-voyager/voyager_thread.c | 52 b/arch/x86/math-emu/errors.c | 882 +++---- b/arch/x86/math-emu/exception.h | 9 b/arch/x86/math-emu/fpu_arith.c | 150 - b/arch/x86/math-emu/fpu_asm.h | 1 b/arch/x86/math-emu/fpu_aux.c | 211 - b/arch/x86/math-emu/fpu_emu.h | 67 b/arch/x86/math-emu/fpu_entry.c | 1230 +++++------ b/arch/x86/math-emu/fpu_etc.c | 185 - b/arch/x86/math-emu/fpu_proto.h | 28 b/arch/x86/math-emu/fpu_tags.c | 94 b/arch/x86/math-emu/fpu_trig.c | 2884 ++++++++++++-------------- b/arch/x86/math-emu/get_address.c | 650 ++--- b/arch/x86/math-emu/load_store.c | 448 ++-- b/arch/x86/math-emu/poly.h | 69 b/arch/x86/math-emu/poly_2xm1.c | 199 - b/arch/x86/math-emu/poly_atan.c | 353 +-- b/arch/x86/math-emu/poly_l2.c | 376 +-- b/arch/x86/math-emu/poly_sin.c | 597 ++--- b/arch/x86/math-emu/poly_tan.c | 338 +-- b/arch/x86/math-emu/reg_add_sub.c | 563 ++--- b/arch/x86/math-emu/reg_compare.c | 567 ++--- b/arch/x86/math-emu/reg_constant.c | 73 b/arch/x86/math-emu/reg_convert.c | 57 b/arch/x86/math-emu/reg_divide.c | 301 +- b/arch/x86/math-emu/reg_ld_str.c | 2147 ++++++++----------- b/arch/x86/math-emu/reg_mul.c | 163 - b/arch/x86/math-emu/status_w.h | 8 b/arch/x86/mm/Makefile_32 | 3 b/arch/x86/mm/Makefile_64 | 3 b/arch/x86/mm/discontig_32.c | 110 b/arch/x86/mm/extable.c | 62 b/arch/x86/mm/fault.c | 986 ++++++++ b/arch/x86/mm/highmem_32.c | 47 b/arch/x86/mm/hugetlbpage.c | 3 b/arch/x86/mm/init_32.c | 425 +-- b/arch/x86/mm/init_64.c | 418 ++- b/arch/x86/mm/ioremap.c | 501 ++++ b/arch/x86/mm/k8topology_64.c | 173 - b/arch/x86/mm/mmap.c | 123 + b/arch/x86/mm/numa_64.c | 274 +- b/arch/x86/mm/pageattr-test.c | 224 ++ b/arch/x86/mm/pageattr.c | 564 +++++ b/arch/x86/mm/pgtable_32.c | 145 - b/arch/x86/mm/srat_64.c | 95 b/arch/x86/oprofile/backtrace.c | 12 b/arch/x86/oprofile/nmi_int.c | 212 - b/arch/x86/pci/common.c | 17 b/arch/x86/pci/fixup.c | 30 b/arch/x86/pci/irq.c | 20 b/arch/x86/power/cpu.c | 18 b/arch/x86/vdso/.gitignore | 5 b/arch/x86/vdso/Makefile | 132 - b/arch/x86/vdso/vclock_gettime.c | 1 b/arch/x86/vdso/vdso-layout.lds.S | 64 b/arch/x86/vdso/vdso.lds.S | 94 b/arch/x86/vdso/vdso32-setup.c | 444 ++++ b/arch/x86/vdso/vdso32.S | 19 b/arch/x86/vdso/vdso32/.gitignore | 1 b/arch/x86/vdso/vdso32/int80.S | 56 b/arch/x86/vdso/vdso32/note.S | 44 b/arch/x86/vdso/vdso32/sigreturn.S | 144 + b/arch/x86/vdso/vdso32/syscall.S | 77 b/arch/x86/vdso/vdso32/sysenter.S | 116 + b/arch/x86/vdso/vdso32/vdso32.lds.S | 37 b/arch/x86/vdso/vgetcpu.c | 4 b/arch/x86/vdso/vma.c | 18 b/arch/x86/xen/Kconfig | 1 b/arch/x86/xen/enlighten.c | 102 b/arch/x86/xen/events.c | 4 b/arch/x86/xen/mmu.c | 23 b/arch/x86/xen/setup.c | 9 b/arch/x86/xen/smp.c | 8 b/arch/x86/xen/time.c | 2 b/arch/x86/xen/xen-head.S | 6 b/drivers/Makefile | 2 b/drivers/acpi/processor_idle.c | 34 b/drivers/char/agp/ali-agp.c | 2 b/drivers/char/agp/backend.c | 3 b/drivers/char/agp/generic.c | 3 b/drivers/char/agp/i460-agp.c | 2 b/drivers/char/agp/intel-agp.c | 11 b/drivers/char/hpet.c | 126 - b/drivers/char/keyboard.c | 1 b/drivers/char/rtc.c | 253 +- b/drivers/cpufreq/cpufreq.c | 2 b/drivers/firmware/dmi_scan.c | 26 b/drivers/ieee1394/Makefile | 1 b/drivers/ieee1394/init_ohci1394_dma.c | 285 ++ b/drivers/input/mouse/pc110pad.c | 7 b/drivers/kvm/svm.c | 2 b/drivers/kvm/vmx.c | 8 b/drivers/lguest/x86/core.c | 4 b/drivers/pnp/pnpbios/bioscalls.c | 5 b/drivers/serial/8250.c | 52 b/drivers/serial/8250_kgdb.c | 558 +++++ b/drivers/serial/Kconfig | 2 b/drivers/serial/Makefile | 1 b/drivers/serial/serial_core.c | 24 b/drivers/video/vermilion/vermilion.c | 15 b/fs/Kconfig.binfmt | 4 b/fs/Makefile | 1 b/fs/aio.c | 2 b/fs/binfmt_elf.c | 677 ++++-- b/fs/compat_binfmt_elf.c | 131 + b/fs/jbd/checkpoint.c | 3 b/fs/jbd/commit.c | 2 b/fs/jbd2/checkpoint.c | 3 b/fs/jbd2/commit.c | 2 b/include/acpi/reboot.h | 9 b/include/asm-alpha/agp.h | 1 b/include/asm-generic/bug.h | 17 b/include/asm-generic/kgdb.h | 105 b/include/asm-generic/percpu.h | 97 b/include/asm-generic/tlb.h | 1 b/include/asm-generic/vmlinux.lds.h | 1 b/include/asm-ia64/acpi.h | 2 b/include/asm-ia64/agp.h | 1 b/include/asm-ia64/percpu.h | 24 b/include/asm-m32r/signal.h | 2 b/include/asm-parisc/agp.h | 1 b/include/asm-powerpc/agp.h | 1 b/include/asm-powerpc/percpu.h | 17 b/include/asm-powerpc/ptrace.h | 7 b/include/asm-s390/percpu.h | 20 b/include/asm-sparc64/agp.h | 1 b/include/asm-sparc64/percpu.h | 16 b/include/asm-um/asm.h | 6 b/include/asm-um/linkage.h | 1 b/include/asm-um/nops.h | 6 b/include/asm-x86/Kbuild | 4 b/include/asm-x86/acpi.h | 151 + b/include/asm-x86/agp.h | 9 b/include/asm-x86/alternative.h | 162 + b/include/asm-x86/apic.h | 141 + b/include/asm-x86/apicdef.h | 412 +++ b/include/asm-x86/arch_hooks.h | 5 b/include/asm-x86/asm.h | 32 b/include/asm-x86/bitops.h | 316 ++ b/include/asm-x86/bitops_32.h | 324 -- b/include/asm-x86/bitops_64.h | 297 -- b/include/asm-x86/bootparam.h | 5 b/include/asm-x86/bug.h | 3 b/include/asm-x86/bugs.h | 3 b/include/asm-x86/cacheflush.h | 35 b/include/asm-x86/calling.h | 194 - b/include/asm-x86/checksum_64.h | 2 b/include/asm-x86/cmpxchg_32.h | 122 - b/include/asm-x86/compat.h | 2 b/include/asm-x86/cpu.h | 2 b/include/asm-x86/cpufeature.h | 208 + b/include/asm-x86/desc.h | 380 +++ b/include/asm-x86/desc_64.h | 203 - b/include/asm-x86/desc_defs.h | 47 b/include/asm-x86/dma.h | 318 ++ b/include/asm-x86/dmi.h | 10 b/include/asm-x86/ds.h | 72 b/include/asm-x86/e820.h | 6 b/include/asm-x86/e820_32.h | 9 b/include/asm-x86/e820_64.h | 16 b/include/asm-x86/efi.h | 97 b/include/asm-x86/elf.h | 212 + b/include/asm-x86/emergency-restart.h | 12 b/include/asm-x86/fixmap_32.h | 24 b/include/asm-x86/fixmap_64.h | 6 b/include/asm-x86/futex.h | 138 + b/include/asm-x86/gart.h | 5 b/include/asm-x86/geode.h | 12 b/include/asm-x86/gpio.h | 6 b/include/asm-x86/hpet.h | 8 b/include/asm-x86/hw_irq_32.h | 16 b/include/asm-x86/hw_irq_64.h | 2 b/include/asm-x86/i387.h | 361 +++ b/include/asm-x86/i8253.h | 3 b/include/asm-x86/i8259.h | 20 b/include/asm-x86/ia32.h | 6 b/include/asm-x86/ia32_unistd.h | 2 b/include/asm-x86/ide.h | 2 b/include/asm-x86/idle.h | 1 b/include/asm-x86/io_32.h | 35 b/include/asm-x86/io_64.h | 57 b/include/asm-x86/io_apic.h | 158 + b/include/asm-x86/irqflags.h | 246 ++ b/include/asm-x86/k8.h | 1 b/include/asm-x86/kdebug.h | 11 b/include/asm-x86/kexec.h | 169 + b/include/asm-x86/kgdb.h | 86 b/include/asm-x86/kprobes.h | 103 b/include/asm-x86/lguest.h | 14 b/include/asm-x86/linkage.h | 26 b/include/asm-x86/local.h | 243 ++ b/include/asm-x86/mach-bigsmp/mach_apic.h | 12 b/include/asm-x86/mach-default/apm.h | 2 b/include/asm-x86/mach-default/mach_apic.h | 18 b/include/asm-x86/mach-default/mach_timer.h | 2 b/include/asm-x86/mach-default/mach_traps.h | 2 b/include/asm-x86/mach-es7000/mach_apic.h | 10 b/include/asm-x86/mach-generic/gpio.h | 15 b/include/asm-x86/mach-numaq/mach_apic.h | 10 b/include/asm-x86/mach-rdc321x/gpio.h | 56 b/include/asm-x86/mach-rdc321x/rdc321x_defs.h | 6 b/include/asm-x86/mach-summit/mach_apic.h | 18 b/include/asm-x86/math_emu.h | 5 b/include/asm-x86/mc146818rtc.h | 101 b/include/asm-x86/mce.h | 18 b/include/asm-x86/mmu.h | 8 b/include/asm-x86/mmu_context_32.h | 2 b/include/asm-x86/mmu_context_64.h | 13 b/include/asm-x86/mmzone_32.h | 3 b/include/asm-x86/mmzone_64.h | 12 b/include/asm-x86/module.h | 81 b/include/asm-x86/mpspec.h | 116 + b/include/asm-x86/mpspec_def.h | 87 b/include/asm-x86/msr-index.h | 15 b/include/asm-x86/msr.h | 299 -- b/include/asm-x86/mtrr.h | 14 b/include/asm-x86/mutex_32.h | 7 b/include/asm-x86/nmi_32.h | 3 b/include/asm-x86/nmi_64.h | 5 b/include/asm-x86/nops.h | 90 b/include/asm-x86/numa_32.h | 14 b/include/asm-x86/numa_64.h | 12 b/include/asm-x86/page.h | 190 + b/include/asm-x86/page_32.h | 247 -- b/include/asm-x86/page_64.h | 110 b/include/asm-x86/paravirt.h | 615 +++-- b/include/asm-x86/pci.h | 17 b/include/asm-x86/pci_64.h | 1 b/include/asm-x86/pda.h | 73 b/include/asm-x86/percpu.h | 145 + b/include/asm-x86/pgalloc_32.h | 85 b/include/asm-x86/pgtable-2level.h | 45 b/include/asm-x86/pgtable-3level.h | 88 b/include/asm-x86/pgtable.h | 359 +++ b/include/asm-x86/pgtable_32.h | 291 -- b/include/asm-x86/pgtable_64.h | 260 -- b/include/asm-x86/processor.h | 841 +++++++ b/include/asm-x86/proto.h | 69 b/include/asm-x86/ptrace-abi.h | 62 b/include/asm-x86/ptrace.h | 220 + b/include/asm-x86/resume-trace.h | 23 b/include/asm-x86/rio.h | 4 b/include/asm-x86/rwlock.h | 1 b/include/asm-x86/rwsem.h | 14 b/include/asm-x86/scatterlist.h | 34 b/include/asm-x86/segment.h | 203 + b/include/asm-x86/semaphore_32.h | 8 b/include/asm-x86/setup.h | 11 b/include/asm-x86/sigcontext.h | 42 b/include/asm-x86/sigcontext32.h | 22 b/include/asm-x86/signal.h | 11 b/include/asm-x86/smp_32.h | 119 - b/include/asm-x86/smp_64.h | 137 - b/include/asm-x86/sparsemem.h | 35 b/include/asm-x86/spinlock.h | 295 ++ b/include/asm-x86/spinlock_types.h | 2 b/include/asm-x86/stacktrace.h | 5 b/include/asm-x86/suspend_32.h | 4 b/include/asm-x86/suspend_64.h | 11 b/include/asm-x86/system.h | 418 +++ b/include/asm-x86/system_64.h | 163 - b/include/asm-x86/thread_info_32.h | 16 b/include/asm-x86/thread_info_64.h | 34 b/include/asm-x86/time.h | 26 b/include/asm-x86/timer.h | 23 b/include/asm-x86/timex.h | 2 b/include/asm-x86/tlbflush.h | 157 + b/include/asm-x86/topology.h | 187 + b/include/asm-x86/tsc.h | 40 b/include/asm-x86/uaccess_64.h | 2 b/include/asm-x86/unistd_32.h | 2 b/include/asm-x86/user_32.h | 24 b/include/asm-x86/user_64.h | 41 b/include/asm-x86/vdso.h | 28 b/include/asm-x86/vsyscall.h | 2 b/include/asm-x86/xor_32.h | 2 b/include/asm-x86/xor_64.h | 2 b/include/linux/acpi_pmtmr.h | 2 b/include/linux/clocksource.h | 4 b/include/linux/compat.h | 15 b/include/linux/const.h | 5 b/include/linux/cpumask.h | 4 b/include/linux/elf.h | 1 b/include/linux/hpet.h | 5 b/include/linux/init_ohci1394_dma.h | 4 b/include/linux/ioport.h | 2 b/include/linux/kernel.h | 3 b/include/linux/kgdb.h | 301 ++ b/include/linux/kprobes.h | 10 b/include/linux/linkage.h | 8 b/include/linux/mm.h | 15 b/include/linux/module.h | 16 b/include/linux/pci_ids.h | 7 b/include/linux/percpu.h | 24 b/include/linux/pid.h | 2 b/include/linux/ptrace.h | 75 b/include/linux/regset.h | 368 +++ b/include/linux/sched.h | 21 b/include/linux/serial_8250.h | 2 b/include/linux/smp.h | 2 b/include/linux/spinlock.h | 6 b/include/linux/spinlock_types.h | 4 b/include/linux/spinlock_up.h | 2 b/include/linux/suspend.h | 3 b/include/linux/swap.h | 1 b/include/linux/thread_info.h | 10 b/include/linux/tick.h | 6 b/include/linux/timer.h | 6 b/include/linux/uaccess.h | 30 b/include/xen/page.h | 6 b/init/main.c | 25 b/kernel/Makefile | 3 b/kernel/backtracetest.c | 48 b/kernel/irq/manage.c | 3 b/kernel/irq/proc.c | 21 b/kernel/irq/spurious.c | 5 b/kernel/kgdb.c | 2306 ++++++++++++++++++++ b/kernel/kprobes.c | 2 b/kernel/module.c | 66 b/kernel/panic.c | 29 b/kernel/printk.c | 7 b/kernel/ptrace.c | 165 + b/kernel/sched.c | 20 b/kernel/signal.c | 4 b/kernel/softirq.c | 11 b/kernel/softlockup.c | 11 b/kernel/spinlock.c | 3 b/kernel/sysctl.c | 11 b/kernel/test_kprobes.c | 216 + b/kernel/time/clockevents.c | 13 b/kernel/time/clocksource.c | 43 b/kernel/time/tick-broadcast.c | 7 b/kernel/time/tick-internal.h | 2 b/kernel/time/tick-sched.c | 76 b/kernel/time/timekeeping.c | 28 b/kernel/time/timer_stats.c | 2 b/kernel/timer.c | 82 b/lib/Kconfig.debug | 54 b/lib/Kconfig.kgdb | 88 b/lib/rwsem.c | 8 b/mm/memory.c | 39 b/mm/mmap.c | 3 b/net/sunrpc/svc.c | 1 b/sound/pci/intel8x0.c | 8 include/asm-x86/acpi_32.h | 143 - include/asm-x86/acpi_64.h | 153 - include/asm-x86/alternative_32.h | 154 - include/asm-x86/alternative_64.h | 159 - include/asm-x86/apic_32.h | 127 - include/asm-x86/apic_64.h | 102 include/asm-x86/apicdef_32.h | 375 --- include/asm-x86/apicdef_64.h | 392 --- include/asm-x86/cpufeature_32.h | 176 - include/asm-x86/cpufeature_64.h | 30 include/asm-x86/desc_32.h | 244 -- include/asm-x86/dma_32.h | 297 -- include/asm-x86/dma_64.h | 304 -- include/asm-x86/fpu32.h | 10 include/asm-x86/futex_32.h | 135 - include/asm-x86/futex_64.h | 125 - include/asm-x86/i387_32.h | 151 - include/asm-x86/i387_64.h | 214 - include/asm-x86/io_apic_32.h | 155 - include/asm-x86/io_apic_64.h | 138 - include/asm-x86/irqflags_32.h | 197 - include/asm-x86/irqflags_64.h | 176 - include/asm-x86/kexec_32.h | 99 include/asm-x86/kexec_64.h | 94 include/asm-x86/kprobes_32.h | 94 include/asm-x86/kprobes_64.h | 90 include/asm-x86/linkage_32.h | 15 include/asm-x86/linkage_64.h | 6 include/asm-x86/local_32.h | 233 -- include/asm-x86/local_64.h | 222 -- include/asm-x86/mach-default/io_ports.h | 25 include/asm-x86/mach-default/mach_time.h | 111 - include/asm-x86/mc146818rtc_32.h | 97 include/asm-x86/mc146818rtc_64.h | 29 include/asm-x86/mmsegment.h | 8 include/asm-x86/module_32.h | 75 include/asm-x86/module_64.h | 10 include/asm-x86/mpspec_32.h | 81 include/asm-x86/mpspec_64.h | 233 -- include/asm-x86/percpu_32.h | 154 - include/asm-x86/percpu_64.h | 68 include/asm-x86/processor_32.h | 786 ------- include/asm-x86/processor_64.h | 452 ---- include/asm-x86/resume-trace_32.h | 13 include/asm-x86/resume-trace_64.h | 13 include/asm-x86/scatterlist_32.h | 28 include/asm-x86/scatterlist_64.h | 29 include/asm-x86/segment_32.h | 148 - include/asm-x86/segment_64.h | 53 include/asm-x86/sparsemem_32.h | 31 include/asm-x86/sparsemem_64.h | 26 include/asm-x86/spinlock_32.h | 221 - include/asm-x86/spinlock_64.h | 167 - include/asm-x86/system_32.h | 320 -- include/asm-x86/tlbflush_32.h | 168 - include/asm-x86/tlbflush_64.h | 100 include/asm-x86/topology_32.h | 121 - include/asm-x86/topology_64.h | 71 include/asm-x86/vsyscall32.h | 20 671 files changed, 42791 insertions(+), 38967 deletions(-) ^ permalink raw reply [flat|nested] 49+ messages in thread
* x86 arch updates also broke s390 2008-01-30 1:15 [git pull] x86 arch updates for v2.6.25 Ingo Molnar @ 2008-01-31 0:33 ` Adrian Bunk 2008-01-31 9:34 ` Martin Schwidefsky 2008-01-31 15:57 ` [git pull] x86 arch updates for v2.6.25 Adrian Bunk ` (2 subsequent siblings) 3 siblings, 1 reply; 49+ messages in thread From: Adrian Bunk @ 2008-01-31 0:33 UTC (permalink / raw) To: Ingo Molnar Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Nick Piggin, schwidefsky, heiko.carstens, linux390 <-- snip --> ... CC arch/s390/kernel/asm-offsets.s In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/arch/s390/kernel/asm-offsets.c:7: /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h: In function 'spin_needbreak': /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h:1931: error: implicit declaration of function '__raw_spin_is_contended' make[2]: *** [arch/s390/kernel/asm-offsets.s] Error 1 <-- snip --> Guilty commit: Commit: 95c354fe9f7d6decc08a92aa26eb233ecc2155bf Author: Nick Piggin <npiggin@suse.de> Wed, 30 Jan 2008 13:31:20 +0100 spinlock: lockbreak cleanup The break_lock data structure and code for spinlocks is quite nasty. Not only does it double the size of a spinlock but it changes locking to a potentially less optimal trylock. Put all of that under CONFIG_GENERIC_LOCKBREAK, and introduce a __raw_spin_is_contended that uses the lock data itself to determine whether there are waiters on the lock, to be used if CONFIG_GENERIC_LOCKBREAK is not set. Rename need_lockbreak to spin_needbreak, make it use spin_is_contended to decouple it from the spinlock implementation, and make it typesafe (rwlocks do not have any need_lockbreak sites -- why do they even get bloated up with that break_lock then?). Signed-off-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: x86 arch updates also broke s390 2008-01-31 0:33 ` x86 arch updates also broke s390 Adrian Bunk @ 2008-01-31 9:34 ` Martin Schwidefsky 2008-01-31 10:24 ` Ingo Molnar 2008-02-01 9:48 ` Ingo Molnar 0 siblings, 2 replies; 49+ messages in thread From: Martin Schwidefsky @ 2008-01-31 9:34 UTC (permalink / raw) To: Adrian Bunk Cc: Ingo Molnar, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Nick Piggin, heiko.carstens, linux390 On Thu, 2008-01-31 at 02:33 +0200, Adrian Bunk wrote: > <-- snip --> > > ... > CC arch/s390/kernel/asm-offsets.s > In file included from > /home/bunk/linux/kernel-2.6/git/linux-2.6/arch/s390/kernel/asm-offsets.c:7: > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h: In > function 'spin_needbreak': > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h:1931: > error: implicit declaration of function '__raw_spin_is_contended' > make[2]: *** [arch/s390/kernel/asm-offsets.s] Error 1 > > <-- snip --> Defining GENERIC_LOCKBREAK in arch/s390/Kconfig takes care of it. I'll cook up a patch and queue it in git390. -- blue skies, Martin. "Reality continues to ruin my life." - Calvin. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: x86 arch updates also broke s390 2008-01-31 9:34 ` Martin Schwidefsky @ 2008-01-31 10:24 ` Ingo Molnar 2008-01-31 12:37 ` Nick Piggin 2008-02-01 9:48 ` Ingo Molnar 1 sibling, 1 reply; 49+ messages in thread From: Ingo Molnar @ 2008-01-31 10:24 UTC (permalink / raw) To: Martin Schwidefsky Cc: Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Nick Piggin, heiko.carstens, linux390 * Martin Schwidefsky <schwidefsky@de.ibm.com> wrote: > On Thu, 2008-01-31 at 02:33 +0200, Adrian Bunk wrote: > > <-- snip --> > > > > ... > > CC arch/s390/kernel/asm-offsets.s > > In file included from > > /home/bunk/linux/kernel-2.6/git/linux-2.6/arch/s390/kernel/asm-offsets.c:7: > > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h: In > > function 'spin_needbreak': > > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h:1931: > > error: implicit declaration of function '__raw_spin_is_contended' > > make[2]: *** [arch/s390/kernel/asm-offsets.s] Error 1 > > > > <-- snip --> > > Defining GENERIC_LOCKBREAK in arch/s390/Kconfig takes care of it. I'll > cook up a patch and queue it in git390. thanks! Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: x86 arch updates also broke s390 2008-01-31 10:24 ` Ingo Molnar @ 2008-01-31 12:37 ` Nick Piggin 0 siblings, 0 replies; 49+ messages in thread From: Nick Piggin @ 2008-01-31 12:37 UTC (permalink / raw) To: Ingo Molnar Cc: Martin Schwidefsky, Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, heiko.carstens, linux390 On Thu, Jan 31, 2008 at 11:24:54AM +0100, Ingo Molnar wrote: > > * Martin Schwidefsky <schwidefsky@de.ibm.com> wrote: > > > On Thu, 2008-01-31 at 02:33 +0200, Adrian Bunk wrote: > > > <-- snip --> > > > > > > ... > > > CC arch/s390/kernel/asm-offsets.s > > > In file included from > > > /home/bunk/linux/kernel-2.6/git/linux-2.6/arch/s390/kernel/asm-offsets.c:7: > > > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h: In > > > function 'spin_needbreak': > > > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/sched.h:1931: > > > error: implicit declaration of function '__raw_spin_is_contended' > > > make[2]: *** [arch/s390/kernel/asm-offsets.s] Error 1 > > > > > > <-- snip --> > > > > Defining GENERIC_LOCKBREAK in arch/s390/Kconfig takes care of it. I'll > > cook up a patch and queue it in git390. > > thanks! Yeah thanks, don't know what happened with this, sorry. I thought I had defined it for all SMP capable ones, so maybe it was a quilt error or something on my part. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: x86 arch updates also broke s390 2008-01-31 9:34 ` Martin Schwidefsky 2008-01-31 10:24 ` Ingo Molnar @ 2008-02-01 9:48 ` Ingo Molnar 2008-02-01 9:52 ` Ingo Molnar 2008-02-01 9:54 ` Martin Schwidefsky 1 sibling, 2 replies; 49+ messages in thread From: Ingo Molnar @ 2008-02-01 9:48 UTC (permalink / raw) To: Martin Schwidefsky Cc: Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Nick Piggin, heiko.carstens, linux390 * Martin Schwidefsky <schwidefsky@de.ibm.com> wrote: > Defining GENERIC_LOCKBREAK in arch/s390/Kconfig takes care of it. I'll > cook up a patch and queue it in git390. the one below should do the trick. Ingo -----------------> Subject: s390: enable GENERIC_LOCKBREAK From: Ingo Molnar <mingo@elte.hu> the recent need_lockbreak cleanups broke s390 build: enable GENERIC_LOCKBREAK. Signed-off-by: Ingo Molnar <mingo@elte.hu> --- arch/s390/Kconfig | 3 +++ 1 file changed, 3 insertions(+) Index: linux/arch/s390/Kconfig =================================================================== --- linux.orig/arch/s390/Kconfig +++ linux/arch/s390/Kconfig @@ -22,6 +22,9 @@ config RWSEM_GENERIC_SPINLOCK config RWSEM_XCHGADD_ALGORITHM def_bool y +config GENERIC_LOCKBREAK + def_bool y + config ARCH_HAS_ILOG2_U32 bool default n ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: x86 arch updates also broke s390 2008-02-01 9:48 ` Ingo Molnar @ 2008-02-01 9:52 ` Ingo Molnar 2008-02-01 9:54 ` Martin Schwidefsky 1 sibling, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-02-01 9:52 UTC (permalink / raw) To: Martin Schwidefsky Cc: Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Nick Piggin, heiko.carstens, linux390 * Ingo Molnar <mingo@elte.hu> wrote: > > Defining GENERIC_LOCKBREAK in arch/s390/Kconfig takes care of it. > > I'll cook up a patch and queue it in git390. > > the one below should do the trick. ah, i see the one you queued up (below) is even better :) Ingo -------------> Subject: [PATCH] Define GENERIC_LOCKBREAK. From: Martin Schwidefsky <schwidefsky@de.ibm.com> Fix compile error: CC arch/s390/kernel/asm-offsets.s In file included from arch/s390/kernel/asm-offsets.c:7: include/linux/sched.h: In function 'spin_needbreak': include/linux/sched.h:1931: error: implicit declaration of function '__raw_spin_is_contended' make[2]: *** [arch/s390/kernel/asm-offsets.s] Error 1 Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> --- arch/s390/Kconfig | 5 +++++ 1 file changed, 5 insertions(+) diff -urpN linux-2.6/arch/s390/Kconfig linux-2.6-patched/arch/s390/Kconfig --- linux-2.6/arch/s390/Kconfig 2008-01-31 13:57:33.000000000 +0100 +++ linux-2.6-patched/arch/s390/Kconfig 2008-01-31 13:57:42.000000000 +0100 @@ -47,6 +47,11 @@ config NO_IOMEM config NO_DMA def_bool y +config GENERIC_LOCKBREAK + bool + default y + depends on SMP && PREEMPT + mainmenu "Linux Kernel Configuration" config S390 ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: x86 arch updates also broke s390 2008-02-01 9:48 ` Ingo Molnar 2008-02-01 9:52 ` Ingo Molnar @ 2008-02-01 9:54 ` Martin Schwidefsky 2008-02-01 10:02 ` Ingo Molnar 1 sibling, 1 reply; 49+ messages in thread From: Martin Schwidefsky @ 2008-02-01 9:54 UTC (permalink / raw) To: Ingo Molnar Cc: Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Nick Piggin, heiko.carstens, linux390 On Fri, 2008-02-01 at 10:48 +0100, Ingo Molnar wrote: > > Defining GENERIC_LOCKBREAK in arch/s390/Kconfig takes care of it. > I'll > > cook up a patch and queue it in git390. > > the one below should do the trick. Thanks but I already queued a different one (see below). The other architectures that define GENERIC_LOCKBREAK have the "depends on SMP && PREEMPT" line as well. The line does make sense if you look at the way how spin_is_contended is used, no ? -- blue skies, Martin. "Reality continues to ruin my life." - Calvin. --- Subject: [PATCH] Define GENERIC_LOCKBREAK. From: Martin Schwidefsky <schwidefsky@de.ibm.com> Fix compile error: CC arch/s390/kernel/asm-offsets.s In file included from arch/s390/kernel/asm-offsets.c:7: include/linux/sched.h: In function 'spin_needbreak': include/linux/sched.h:1931: error: implicit declaration of function '__raw_spin_is_contended' make[2]: *** [arch/s390/kernel/asm-offsets.s] Error 1 Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> --- arch/s390/Kconfig | 5 +++++ 1 file changed, 5 insertions(+) diff -urpN linux-2.6/arch/s390/Kconfig linux-2.6-patched/arch/s390/Kconfig --- linux-2.6/arch/s390/Kconfig 2008-01-31 13:57:33.000000000 +0100 +++ linux-2.6-patched/arch/s390/Kconfig 2008-01-31 13:57:42.000000000 +0100 @@ -47,6 +47,11 @@ config NO_IOMEM config NO_DMA def_bool y +config GENERIC_LOCKBREAK + bool + default y + depends on SMP && PREEMPT + mainmenu "Linux Kernel Configuration" config S390 ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: x86 arch updates also broke s390 2008-02-01 9:54 ` Martin Schwidefsky @ 2008-02-01 10:02 ` Ingo Molnar 0 siblings, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-02-01 10:02 UTC (permalink / raw) To: Martin Schwidefsky Cc: Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Nick Piggin, heiko.carstens, linux390 * Martin Schwidefsky <schwidefsky@de.ibm.com> wrote: > On Fri, 2008-02-01 at 10:48 +0100, Ingo Molnar wrote: > > > Defining GENERIC_LOCKBREAK in arch/s390/Kconfig takes care of it. > > I'll > > > cook up a patch and queue it in git390. > > > > the one below should do the trick. > > Thanks but I already queued a different one (see below). The other > architectures that define GENERIC_LOCKBREAK have the "depends on SMP > && PREEMPT" line as well. The line does make sense if you look at the > way how spin_is_contended is used, no ? yes, you are right and your fix is the correct one. Currently, if we define GENERIC_LOCKBREAK on UP then we get accesses to the non-existing lock->need_lockbreak field. [ btw., this is really a small uncleanliness in the generic code: it should be possible for an architecture to just enable GENERIC_LOCKBREAK unconditionally, to indicate that it intends to "let the generic code do this". Then the generic code, when it does not have a field (such as on UP), should just not access it. But this is a small detail. ] Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-30 1:15 [git pull] x86 arch updates for v2.6.25 Ingo Molnar 2008-01-31 0:33 ` x86 arch updates also broke s390 Adrian Bunk @ 2008-01-31 15:57 ` Adrian Bunk 2008-01-31 16:00 ` Ingo Molnar 2008-02-05 2:36 ` [git pull] x86 arch updates for v2.6.25 Maxim Levitsky 2008-02-09 14:11 ` [git pull] x86 arch updates for v2.6.25 Amit Shah 3 siblings, 1 reply; 49+ messages in thread From: Adrian Bunk @ 2008-01-31 15:57 UTC (permalink / raw) To: Ingo Molnar Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Wed, Jan 30, 2008 at 02:15:50AM +0100, Ingo Molnar wrote: > > Linus, please pull the latest x86 git tree from: > > git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git > > Find the shortlog attached below. > > Most of the changes we have described here: > > http://lkml.org/lkml/2008/1/21/230 > > It's not a small merge, it consists of 908 commits from 96 individual > arch/x86 developers (!): > > 671 files changed, 42791 insertions(+), 38967 deletions(-) > > so here are a few highlevel comments as well, in addition to the > shortlog: >... > the x86.git queue has been built and booted on 32-bit and 64-bit x86, > allnoconfig and allyesconfig [the new CONFIG_SIS190 gigabit driver in > -git has been disabled because it has build failures], including a real > legacy i386 DX 33 MHz system which successfully booted x86.git today. > > In the past few weeks tens of thousands of random x86.git bzImages were > successfully built and booted on a number of (commodity) 32-bit and > 64-bit testsystems - and there has been a fair amount of test exposure > on -mm as well. We expect the x86.git changes to be pretty robust - if > any problems there are they should be under more specialized conditions. > (or due to very recent changes that we kept at the tail of the commit > list) Famous last words? :) >... You tested x86 but broke more than half a dozen other archtectures, with at least 3 different commits breaking other architectures. It now takes a few days until this mess is completely sorted out, and I hope there won't be too many poor souls having to bisect 2.6.25-rc1 regresions on !x86 since this can now become the pure horror. And if people give up trying to bisect 2.6.25 might ship with more regressions. I already said in the past that the x86 tree contains not architecture specific stuff that doesn't belong there, and looking at the following parts of the diffstat, most of it does simply not belong into an "x86 arch update": > b/Makefile | 8 > b/arch/arm/Kconfig | 5 > b/arch/ia64/Kconfig | 8 > b/arch/ia64/ia32/binfmt_elf32.c | 3 > b/arch/ia64/kernel/module.c | 2 > b/arch/m32r/Kconfig | 5 > b/arch/mips/Kconfig | 5 > b/arch/mips/kernel/i8253.c | 12 > b/arch/parisc/Kconfig | 5 > b/arch/powerpc/Kconfig | 8 > b/arch/powerpc/kernel/ptrace.c | 52 > b/arch/sparc64/Kconfig | 8 > b/arch/um/kernel/ksyms.c | 4 > b/arch/um/sys-i386/signal.c | 50 > b/arch/um/sys-x86_64/signal.c | 70 >... > b/drivers/Makefile | 2 > b/drivers/acpi/processor_idle.c | 34 > b/drivers/char/agp/ali-agp.c | 2 > b/drivers/char/agp/backend.c | 3 > b/drivers/char/agp/generic.c | 3 > b/drivers/char/agp/i460-agp.c | 2 > b/drivers/char/agp/intel-agp.c | 11 > b/drivers/char/hpet.c | 126 - > b/drivers/char/keyboard.c | 1 > b/drivers/char/rtc.c | 253 +- > b/drivers/cpufreq/cpufreq.c | 2 > b/drivers/firmware/dmi_scan.c | 26 > b/drivers/ieee1394/Makefile | 1 > b/drivers/ieee1394/init_ohci1394_dma.c | 285 ++ > b/drivers/input/mouse/pc110pad.c | 7 > b/drivers/kvm/svm.c | 2 > b/drivers/kvm/vmx.c | 8 > b/drivers/lguest/x86/core.c | 4 > b/drivers/pnp/pnpbios/bioscalls.c | 5 > b/drivers/serial/8250.c | 52 > b/drivers/serial/8250_kgdb.c | 558 +++++ > b/drivers/serial/Kconfig | 2 > b/drivers/serial/Makefile | 1 > b/drivers/serial/serial_core.c | 24 > b/drivers/video/vermilion/vermilion.c | 15 > b/fs/Kconfig.binfmt | 4 > b/fs/Makefile | 1 > b/fs/aio.c | 2 > b/fs/binfmt_elf.c | 677 ++++-- > b/fs/compat_binfmt_elf.c | 131 + > b/fs/jbd/checkpoint.c | 3 > b/fs/jbd/commit.c | 2 > b/fs/jbd2/checkpoint.c | 3 > b/fs/jbd2/commit.c | 2 > b/include/acpi/reboot.h | 9 > b/include/asm-alpha/agp.h | 1 > b/include/asm-generic/bug.h | 17 > b/include/asm-generic/kgdb.h | 105 > b/include/asm-generic/percpu.h | 97 > b/include/asm-generic/tlb.h | 1 > b/include/asm-generic/vmlinux.lds.h | 1 > b/include/asm-ia64/acpi.h | 2 > b/include/asm-ia64/agp.h | 1 > b/include/asm-ia64/percpu.h | 24 > b/include/asm-m32r/signal.h | 2 > b/include/asm-parisc/agp.h | 1 > b/include/asm-powerpc/agp.h | 1 > b/include/asm-powerpc/percpu.h | 17 > b/include/asm-powerpc/ptrace.h | 7 > b/include/asm-s390/percpu.h | 20 > b/include/asm-sparc64/agp.h | 1 > b/include/asm-sparc64/percpu.h | 16 > b/include/asm-um/asm.h | 6 > b/include/asm-um/linkage.h | 1 > b/include/asm-um/nops.h | 6 >... > b/include/linux/acpi_pmtmr.h | 2 > b/include/linux/clocksource.h | 4 > b/include/linux/compat.h | 15 > b/include/linux/const.h | 5 > b/include/linux/cpumask.h | 4 > b/include/linux/elf.h | 1 > b/include/linux/hpet.h | 5 > b/include/linux/init_ohci1394_dma.h | 4 > b/include/linux/ioport.h | 2 > b/include/linux/kernel.h | 3 > b/include/linux/kgdb.h | 301 ++ > b/include/linux/kprobes.h | 10 > b/include/linux/linkage.h | 8 > b/include/linux/mm.h | 15 > b/include/linux/module.h | 16 > b/include/linux/pci_ids.h | 7 > b/include/linux/percpu.h | 24 > b/include/linux/pid.h | 2 > b/include/linux/ptrace.h | 75 > b/include/linux/regset.h | 368 +++ > b/include/linux/sched.h | 21 > b/include/linux/serial_8250.h | 2 > b/include/linux/smp.h | 2 > b/include/linux/spinlock.h | 6 > b/include/linux/spinlock_types.h | 4 > b/include/linux/spinlock_up.h | 2 > b/include/linux/suspend.h | 3 > b/include/linux/swap.h | 1 > b/include/linux/thread_info.h | 10 > b/include/linux/tick.h | 6 > b/include/linux/timer.h | 6 > b/include/linux/uaccess.h | 30 >... > b/init/main.c | 25 > b/kernel/Makefile | 3 > b/kernel/backtracetest.c | 48 > b/kernel/irq/manage.c | 3 > b/kernel/irq/proc.c | 21 > b/kernel/irq/spurious.c | 5 > b/kernel/kgdb.c | 2306 ++++++++++++++++++++ > b/kernel/kprobes.c | 2 > b/kernel/module.c | 66 > b/kernel/panic.c | 29 > b/kernel/printk.c | 7 > b/kernel/ptrace.c | 165 + > b/kernel/sched.c | 20 > b/kernel/signal.c | 4 > b/kernel/softirq.c | 11 > b/kernel/softlockup.c | 11 > b/kernel/spinlock.c | 3 > b/kernel/sysctl.c | 11 > b/kernel/test_kprobes.c | 216 + > b/kernel/time/clockevents.c | 13 > b/kernel/time/clocksource.c | 43 > b/kernel/time/tick-broadcast.c | 7 > b/kernel/time/tick-internal.h | 2 > b/kernel/time/tick-sched.c | 76 > b/kernel/time/timekeeping.c | 28 > b/kernel/time/timer_stats.c | 2 > b/kernel/timer.c | 82 > b/lib/Kconfig.debug | 54 > b/lib/Kconfig.kgdb | 88 > b/lib/rwsem.c | 8 > b/mm/memory.c | 39 > b/mm/mmap.c | 3 > b/net/sunrpc/svc.c | 1 > b/sound/pci/intel8x0.c | 8 >... ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 15:57 ` [git pull] x86 arch updates for v2.6.25 Adrian Bunk @ 2008-01-31 16:00 ` Ingo Molnar 2008-01-31 16:04 ` Ingo Molnar 2008-01-31 16:12 ` Adrian Bunk 0 siblings, 2 replies; 49+ messages in thread From: Ingo Molnar @ 2008-01-31 16:00 UTC (permalink / raw) To: Adrian Bunk Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin * Adrian Bunk <bunk@kernel.org> wrote: > You tested x86 but broke more than half a dozen other archtectures, > with at least 3 different commits breaking other architectures. Note that all known breakages are fixed in current -git, except for the s390 problem that Martin/Nick posted the fix. Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 16:00 ` Ingo Molnar @ 2008-01-31 16:04 ` Ingo Molnar 2008-01-31 16:12 ` Adrian Bunk 1 sibling, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-01-31 16:04 UTC (permalink / raw) To: Adrian Bunk Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin * Ingo Molnar <mingo@elte.hu> wrote: > Note that all known breakages are fixed in current -git, except for > the s390 problem that Martin/Nick posted the fix. find below the s390 fix. Ingo Index: linux/arch/s390/Kconfig =================================================================== --- linux.orig/arch/s390/Kconfig +++ linux/arch/s390/Kconfig @@ -22,6 +22,9 @@ config RWSEM_GENERIC_SPINLOCK config RWSEM_XCHGADD_ALGORITHM def_bool y +config GENERIC_LOCKBREAK + def_bool y + config ARCH_HAS_ILOG2_U32 bool default n ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 16:00 ` Ingo Molnar 2008-01-31 16:04 ` Ingo Molnar @ 2008-01-31 16:12 ` Adrian Bunk 2008-01-31 16:15 ` Ingo Molnar 1 sibling, 1 reply; 49+ messages in thread From: Adrian Bunk @ 2008-01-31 16:12 UTC (permalink / raw) To: Ingo Molnar Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Thu, Jan 31, 2008 at 05:00:33PM +0100, Ingo Molnar wrote: > > * Adrian Bunk <bunk@kernel.org> wrote: > > > You tested x86 but broke more than half a dozen other archtectures, > > with at least 3 different commits breaking other architectures. > > Note that all known breakages are fixed in current -git, except for the > s390 problem that Martin/Nick posted the fix. What about the breakages caused by commit a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? This commit touched two different not x86 specific headers, and both of them broke (different) architectures. > Ingo cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 16:12 ` Adrian Bunk @ 2008-01-31 16:15 ` Ingo Molnar 2008-01-31 16:21 ` WANG Cong ` (2 more replies) 0 siblings, 3 replies; 49+ messages in thread From: Ingo Molnar @ 2008-01-31 16:15 UTC (permalink / raw) To: Adrian Bunk Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin * Adrian Bunk <bunk@kernel.org> wrote: > On Thu, Jan 31, 2008 at 05:00:33PM +0100, Ingo Molnar wrote: > > > > * Adrian Bunk <bunk@kernel.org> wrote: > > > > > You tested x86 but broke more than half a dozen other archtectures, > > > with at least 3 different commits breaking other architectures. > > > > Note that all known breakages are fixed in current -git, except for the > > s390 problem that Martin/Nick posted the fix. > > What about the breakages caused by commit > a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the > defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? the patch below fixes that. Ingo --- include/asm-generic/tlb.h | 1 + 1 file changed, 1 insertion(+) Index: linux/include/asm-generic/tlb.h =================================================================== --- linux.orig/include/asm-generic/tlb.h +++ linux/include/asm-generic/tlb.h @@ -15,6 +15,7 @@ #include <linux/swap.h> #include <linux/quicklist.h> +#include <asm/pgalloc.h> #include <asm/tlbflush.h> /* ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 16:15 ` Ingo Molnar @ 2008-01-31 16:21 ` WANG Cong 2008-01-31 16:24 ` Adrian Bunk 2008-01-31 16:29 ` sparc compile error caused by x86 arch updates Adrian Bunk 2 siblings, 0 replies; 49+ messages in thread From: WANG Cong @ 2008-01-31 16:21 UTC (permalink / raw) To: Ingo Molnar Cc: Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Thu, Jan 31, 2008 at 05:15:23PM +0100, Ingo Molnar wrote: > >* Adrian Bunk <bunk@kernel.org> wrote: > >> On Thu, Jan 31, 2008 at 05:00:33PM +0100, Ingo Molnar wrote: >> > >> > * Adrian Bunk <bunk@kernel.org> wrote: >> > >> > > You tested x86 but broke more than half a dozen other archtectures, >> > > with at least 3 different commits breaking other architectures. >> > >> > Note that all known breakages are fixed in current -git, except for the >> > s390 problem that Martin/Nick posted the fix. >> >> What about the breakages caused by commit >> a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the >> defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? > >the patch below fixes that. > I just send the same patch[1] minutes ago. ;-) 1. http://lkml.org/lkml/2008/1/31/223 ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 16:15 ` Ingo Molnar 2008-01-31 16:21 ` WANG Cong @ 2008-01-31 16:24 ` Adrian Bunk 2008-01-31 16:46 ` Ingo Molnar 2008-01-31 16:29 ` sparc compile error caused by x86 arch updates Adrian Bunk 2 siblings, 1 reply; 49+ messages in thread From: Adrian Bunk @ 2008-01-31 16:24 UTC (permalink / raw) To: Ingo Molnar Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jeremy Fitzhardinge On Thu, Jan 31, 2008 at 05:15:23PM +0100, Ingo Molnar wrote: > > * Adrian Bunk <bunk@kernel.org> wrote: > > > On Thu, Jan 31, 2008 at 05:00:33PM +0100, Ingo Molnar wrote: > > > > > > * Adrian Bunk <bunk@kernel.org> wrote: > > > > > > > You tested x86 but broke more than half a dozen other archtectures, > > > > with at least 3 different commits breaking other architectures. > > > > > > Note that all known breakages are fixed in current -git, except for the > > > s390 problem that Martin/Nick posted the fix. > > > > What about the breakages caused by commit > > a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the > > defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? > > the patch below fixes that. Is it safe, or why did Jeremy state in the commit "I removed this include to avoid an include cycle"? > Ingo > > --- > include/asm-generic/tlb.h | 1 + > 1 file changed, 1 insertion(+) > > Index: linux/include/asm-generic/tlb.h > =================================================================== > --- linux.orig/include/asm-generic/tlb.h > +++ linux/include/asm-generic/tlb.h > @@ -15,6 +15,7 @@ > > #include <linux/swap.h> > #include <linux/quicklist.h> > +#include <asm/pgalloc.h> > #include <asm/tlbflush.h> > > /* cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 16:24 ` Adrian Bunk @ 2008-01-31 16:46 ` Ingo Molnar 2008-01-31 16:52 ` Jeremy Fitzhardinge 0 siblings, 1 reply; 49+ messages in thread From: Ingo Molnar @ 2008-01-31 16:46 UTC (permalink / raw) To: Adrian Bunk Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jeremy Fitzhardinge * Adrian Bunk <bunk@stusta.de> wrote: > > > What about the breakages caused by commit > > > a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the > > > defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? > > > > the patch below fixes that. > > Is it safe, or why did Jeremy state in the commit > "I removed this include to avoid an include cycle"? that is an x86.git complication alone, and only affects 32-bit PAE: it is solved by the uninlining patch (that i've queued up to before the asm-generic/tlb.h revert/fix). Ingo -------------> Subject: x86: uninline __pte_free_tlb() and __pmd_free_tlb() From: Ingo Molnar <mingo@elte.hu> this also removes an include file dependency. Signed-off-by: Ingo Molnar <mingo@elte.hu> --- arch/x86/mm/pgtable_32.c | 19 +++++++++++++++++++ include/asm-x86/pgalloc_32.h | 19 ++----------------- 2 files changed, 21 insertions(+), 17 deletions(-) Index: linux/arch/x86/mm/pgtable_32.c =================================================================== --- linux.orig/arch/x86/mm/pgtable_32.c +++ linux/arch/x86/mm/pgtable_32.c @@ -376,3 +376,22 @@ void check_pgt_cache(void) { quicklist_trim(0, pgd_dtor, 25, 16); } + +void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) +{ + paravirt_release_pt(page_to_pfn(pte)); + tlb_remove_page(tlb, pte); +} + +void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) +{ + /* This is called just after the pmd has been detached from + the pgd, which requires a full tlb flush to be recognized + by the CPU. Rather than incurring multiple tlb flushes + while the address space is being pulled down, make the tlb + gathering machinery do a full flush when we're done. */ + tlb->fullmm = 1; + + paravirt_release_pd(__pa(pmd) >> PAGE_SHIFT); + tlb_remove_page(tlb, virt_to_page(pmd)); +} Index: linux/include/asm-x86/pgalloc_32.h =================================================================== --- linux.orig/include/asm-x86/pgalloc_32.h +++ linux/include/asm-x86/pgalloc_32.h @@ -51,11 +51,7 @@ static inline void pte_free(struct page } -static inline void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) -{ - paravirt_release_pt(page_to_pfn(pte)); - tlb_remove_page(tlb, pte); -} +extern void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte); #ifdef CONFIG_X86_PAE /* @@ -72,18 +68,7 @@ static inline void pmd_free(pmd_t *pmd) free_page((unsigned long)pmd); } -static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) -{ - /* This is called just after the pmd has been detached from - the pgd, which requires a full tlb flush to be recognized - by the CPU. Rather than incurring multiple tlb flushes - while the address space is being pulled down, make the tlb - gathering machinery do a full flush when we're done. */ - tlb->fullmm = 1; - - paravirt_release_pd(__pa(pmd) >> PAGE_SHIFT); - tlb_remove_page(tlb, virt_to_page(pmd)); -} +extern void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd); static inline void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) { ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-31 16:46 ` Ingo Molnar @ 2008-01-31 16:52 ` Jeremy Fitzhardinge 0 siblings, 0 replies; 49+ messages in thread From: Jeremy Fitzhardinge @ 2008-01-31 16:52 UTC (permalink / raw) To: Ingo Molnar Cc: Adrian Bunk, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin Ingo Molnar wrote: > * Adrian Bunk <bunk@stusta.de> wrote: > > >>>> What about the breakages caused by commit >>>> a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the >>>> defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? >>>> >>> the patch below fixes that. >>> >> Is it safe, or why did Jeremy state in the commit >> "I removed this include to avoid an include cycle"? >> > > that is an x86.git complication alone, and only affects 32-bit PAE: it > is solved by the uninlining patch (that i've queued up to before the > asm-generic/tlb.h revert/fix). > > Ingo > > -------------> > Subject: x86: uninline __pte_free_tlb() and __pmd_free_tlb() > From: Ingo Molnar <mingo@elte.hu> > > this also removes an include file dependency. > Yes, that simplifies things a lot. J > Signed-off-by: Ingo Molnar <mingo@elte.hu> > --- > arch/x86/mm/pgtable_32.c | 19 +++++++++++++++++++ > include/asm-x86/pgalloc_32.h | 19 ++----------------- > 2 files changed, 21 insertions(+), 17 deletions(-) > > Index: linux/arch/x86/mm/pgtable_32.c > =================================================================== > --- linux.orig/arch/x86/mm/pgtable_32.c > +++ linux/arch/x86/mm/pgtable_32.c > @@ -376,3 +376,22 @@ void check_pgt_cache(void) > { > quicklist_trim(0, pgd_dtor, 25, 16); > } > + > +void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) > +{ > + paravirt_release_pt(page_to_pfn(pte)); > + tlb_remove_page(tlb, pte); > +} > + > +void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) > +{ > + /* This is called just after the pmd has been detached from > + the pgd, which requires a full tlb flush to be recognized > + by the CPU. Rather than incurring multiple tlb flushes > + while the address space is being pulled down, make the tlb > + gathering machinery do a full flush when we're done. */ > + tlb->fullmm = 1; > + > + paravirt_release_pd(__pa(pmd) >> PAGE_SHIFT); > + tlb_remove_page(tlb, virt_to_page(pmd)); > +} > Index: linux/include/asm-x86/pgalloc_32.h > =================================================================== > --- linux.orig/include/asm-x86/pgalloc_32.h > +++ linux/include/asm-x86/pgalloc_32.h > @@ -51,11 +51,7 @@ static inline void pte_free(struct page > } > > > -static inline void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) > -{ > - paravirt_release_pt(page_to_pfn(pte)); > - tlb_remove_page(tlb, pte); > -} > +extern void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte); > > #ifdef CONFIG_X86_PAE > /* > @@ -72,18 +68,7 @@ static inline void pmd_free(pmd_t *pmd) > free_page((unsigned long)pmd); > } > > -static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) > -{ > - /* This is called just after the pmd has been detached from > - the pgd, which requires a full tlb flush to be recognized > - by the CPU. Rather than incurring multiple tlb flushes > - while the address space is being pulled down, make the tlb > - gathering machinery do a full flush when we're done. */ > - tlb->fullmm = 1; > - > - paravirt_release_pd(__pa(pmd) >> PAGE_SHIFT); > - tlb_remove_page(tlb, virt_to_page(pmd)); > -} > +extern void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd); > > static inline void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) > { > ^ permalink raw reply [flat|nested] 49+ messages in thread
* sparc compile error caused by x86 arch updates 2008-01-31 16:15 ` Ingo Molnar 2008-01-31 16:21 ` WANG Cong 2008-01-31 16:24 ` Adrian Bunk @ 2008-01-31 16:29 ` Adrian Bunk 2008-01-31 16:50 ` Jeremy Fitzhardinge 2 siblings, 1 reply; 49+ messages in thread From: Adrian Bunk @ 2008-01-31 16:29 UTC (permalink / raw) To: Ingo Molnar, wli Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jeremy Fitzhardinge, sparclinux On Thu, Jan 31, 2008 at 05:15:23PM +0100, Ingo Molnar wrote: > > * Adrian Bunk <bunk@kernel.org> wrote: > > > On Thu, Jan 31, 2008 at 05:00:33PM +0100, Ingo Molnar wrote: > > > > > > * Adrian Bunk <bunk@kernel.org> wrote: > > > > > > > You tested x86 but broke more than half a dozen other archtectures, > > > > with at least 3 different commits breaking other architectures. > > > > > > Note that all known breakages are fixed in current -git, except for the > > > s390 problem that Martin/Nick posted the fix. > > > > What about the breakages caused by commit > > a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the > > defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? > > the patch below fixes that. The sparc breakage (might not have been reported until now and I bisected it just a few minutes ago) is caused by the following part of commit a5a19c63f4e55e32dc0bc3d936d7f94793d8b380: --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -6,6 +6,7 @@ #include <linux/mmzone.h> #include <linux/list.h> #include <linux/sched.h> +#include <linux/pagemap.h> #include <asm/atomic.h> #include <asm/page.h> The compile error with the sparc defconfig is: <-- snip --> ... CC init/main.o In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h:24, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:10, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/swap.h:9, from include2/asm/pgtable.h:15, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:39, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17, from include2/asm/dma-mapping.h:6, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52, from include2/asm/sbus.h:10, from include2/asm/dma.h:13, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8, from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26: include2/asm/highmem.h: In function 'kmap': include2/asm/highmem.h:60: error: implicit declaration of function 'PageHighMem' include2/asm/highmem.h:61: error: implicit declaration of function 'page_address' include2/asm/highmem.h:61: warning: return makes pointer from integer without a cast In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/swap.h:9, from include2/asm/pgtable.h:15, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:39, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17, from include2/asm/dma-mapping.h:6, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52, from include2/asm/sbus.h:10, from include2/asm/dma.h:13, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8, from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26: /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'lock_page': /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:169: error: implicit declaration of function 'TestSetPageLocked' /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'wait_on_page_locked': /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:199: error: implicit declaration of function 'PageLocked' /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: 'PG_locked' undeclared (first use in this function) /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: (Each undeclared identifier is reported only once /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: for each function it appears in.) /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'wait_on_page_writeback': /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:208: error: implicit declaration of function 'PageWriteback' /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:209: error: 'PG_writeback' undeclared (first use in this function) In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17, from include2/asm/dma-mapping.h:6, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52, from include2/asm/sbus.h:10, from include2/asm/dma.h:13, from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8, from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26: /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h: At top level: /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:556: error: conflicting types for 'page_address' include2/asm/highmem.h:61: error: previous implicit declaration of 'page_address' was here make[2]: *** [init/main.o] Error 1 make[1]: *** [init] Error 2 make: *** [sub-make] Error 2 <-- snip --> > Ingo cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: sparc compile error caused by x86 arch updates 2008-01-31 16:29 ` sparc compile error caused by x86 arch updates Adrian Bunk @ 2008-01-31 16:50 ` Jeremy Fitzhardinge 2008-01-31 17:43 ` Ingo Molnar 0 siblings, 1 reply; 49+ messages in thread From: Jeremy Fitzhardinge @ 2008-01-31 16:50 UTC (permalink / raw) To: Adrian Bunk Cc: Ingo Molnar, wli, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, sparclinux Adrian Bunk wrote: > On Thu, Jan 31, 2008 at 05:15:23PM +0100, Ingo Molnar wrote: > >> * Adrian Bunk <bunk@kernel.org> wrote: >> >> >>> On Thu, Jan 31, 2008 at 05:00:33PM +0100, Ingo Molnar wrote: >>> >>>> * Adrian Bunk <bunk@kernel.org> wrote: >>>> >>>> >>>>> You tested x86 but broke more than half a dozen other archtectures, >>>>> with at least 3 different commits breaking other architectures. >>>>> >>>> Note that all known breakages are fixed in current -git, except for the >>>> s390 problem that Martin/Nick posted the fix. >>>> >>> What about the breakages caused by commit >>> a5a19c63f4e55e32dc0bc3d936d7f94793d8b380 (this commit broke the >>> defconfig compilation on at least avr32, blackfin, sh, sparc and uml)? >>> >> the patch below fixes that. >> > > The sparc breakage (might not have been reported until now and I > bisected it just a few minutes ago) is caused by the following part of > commit a5a19c63f4e55e32dc0bc3d936d7f94793d8b380: > > --- a/include/linux/swap.h > +++ b/include/linux/swap.h > @@ -6,6 +6,7 @@ > #include <linux/mmzone.h> > #include <linux/list.h> > #include <linux/sched.h> > +#include <linux/pagemap.h> > > #include <asm/atomic.h> > #include <asm/page.h> > > > Drat. I added that because of /* only sparc can not include linux/pagemap.h in this file * so leave page_cache_release and release_pages undeclared... */ #define free_page_and_swap_cache(page) \ page_cache_release(page) #define free_pages_and_swap_cache(pages, nr) \ release_pages((pages), (nr), 0); But I guess I overlooked the comment... I guess the fix is to scatter linux/pagemap.h into the appropriate places where these macros are used (asm-generic/tlb.h, for a start). J > The compile error with the sparc defconfig is: > > <-- snip --> > > ... > CC init/main.o > In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/highmem.h:24, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:10, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/swap.h:9, > from include2/asm/pgtable.h:15, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:39, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17, > from include2/asm/dma-mapping.h:6, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52, > from include2/asm/sbus.h:10, > from include2/asm/dma.h:13, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26: > include2/asm/highmem.h: In function 'kmap': > include2/asm/highmem.h:60: error: implicit declaration of function 'PageHighMem' > include2/asm/highmem.h:61: error: implicit declaration of function 'page_address' > include2/asm/highmem.h:61: warning: return makes pointer from integer without a cast > In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/swap.h:9, > from include2/asm/pgtable.h:15, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:39, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17, > from include2/asm/dma-mapping.h:6, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52, > from include2/asm/sbus.h:10, > from include2/asm/dma.h:13, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26: > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'lock_page': > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:169: error: implicit declaration of function 'TestSetPageLocked' > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'wait_on_page_locked': > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:199: error: implicit declaration of function 'PageLocked' > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: 'PG_locked' undeclared (first use in this function) > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: (Each undeclared identifier is reported only once > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:200: error: for each function it appears in.) > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h: In function 'wait_on_page_writeback': > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:208: error: implicit declaration of function 'PageWriteback' > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/pagemap.h:209: error: 'PG_writeback' undeclared (first use in this function) > In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/asm-generic/dma-mapping.h:17, > from include2/asm/dma-mapping.h:6, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/dma-mapping.h:52, > from include2/asm/sbus.h:10, > from include2/asm/dma.h:13, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/bootmem.h:8, > from /home/bunk/linux/kernel-2.6/git/linux-2.6/init/main.c:26: > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h: At top level: > /home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mm.h:556: error: conflicting types for 'page_address' > include2/asm/highmem.h:61: error: previous implicit declaration of 'page_address' was here > make[2]: *** [init/main.o] Error 1 > make[1]: *** [init] Error 2 > make: *** [sub-make] Error 2 > > <-- snip --> > > > >> Ingo >> > > cu > Adrian > > ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: sparc compile error caused by x86 arch updates 2008-01-31 16:50 ` Jeremy Fitzhardinge @ 2008-01-31 17:43 ` Ingo Molnar 2008-01-31 17:55 ` Jeremy Fitzhardinge 2008-01-31 18:21 ` Adrian Bunk 0 siblings, 2 replies; 49+ messages in thread From: Ingo Molnar @ 2008-01-31 17:43 UTC (permalink / raw) To: Jeremy Fitzhardinge Cc: Adrian Bunk, wli, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, sparclinux * Jeremy Fitzhardinge <jeremy@goop.org> wrote: > But I guess I overlooked the comment... > > I guess the fix is to scatter linux/pagemap.h into the appropriate > places where these macros are used (asm-generic/tlb.h, for a start). no. The fix is always to undo the damage ASAP, to keep the window of breakage minimized. Adrian, could you please check whether latest x86.git: git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git resolves the Sparc build failure you were seeing? All known issues are fixed in it. (let me know if you know about more) Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: sparc compile error caused by x86 arch updates 2008-01-31 17:43 ` Ingo Molnar @ 2008-01-31 17:55 ` Jeremy Fitzhardinge 2008-01-31 18:21 ` Adrian Bunk 1 sibling, 0 replies; 49+ messages in thread From: Jeremy Fitzhardinge @ 2008-01-31 17:55 UTC (permalink / raw) To: Ingo Molnar Cc: Adrian Bunk, wli, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, sparclinux Ingo Molnar wrote: > * Jeremy Fitzhardinge <jeremy@goop.org> wrote: > > >> But I guess I overlooked the comment... >> >> I guess the fix is to scatter linux/pagemap.h into the appropriate >> places where these macros are used (asm-generic/tlb.h, for a start). >> > > no. The fix is always to undo the damage ASAP, to keep the window of > breakage minimized. > Yes, sorry about that. Uninlining the asm-x86/pgalloc.h functions is the right thing to do anyway. J ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: sparc compile error caused by x86 arch updates 2008-01-31 17:43 ` Ingo Molnar 2008-01-31 17:55 ` Jeremy Fitzhardinge @ 2008-01-31 18:21 ` Adrian Bunk 2008-01-31 18:38 ` Ingo Molnar 1 sibling, 1 reply; 49+ messages in thread From: Adrian Bunk @ 2008-01-31 18:21 UTC (permalink / raw) To: Ingo Molnar Cc: Jeremy Fitzhardinge, wli, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, sparclinux On Thu, Jan 31, 2008 at 06:43:31PM +0100, Ingo Molnar wrote: > > * Jeremy Fitzhardinge <jeremy@goop.org> wrote: > > > But I guess I overlooked the comment... > > > > I guess the fix is to scatter linux/pagemap.h into the appropriate > > places where these macros are used (asm-generic/tlb.h, for a start). > > no. The fix is always to undo the damage ASAP, to keep the window of > breakage minimized. > > Adrian, could you please check whether latest x86.git: > > git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git > > resolves the Sparc build failure you were seeing? All known issues are > fixed in it. (let me know if you know about more) Compiles here on sparc. > Ingo cu Adrian -- "Is there not promise of rain?" Ling Tan asked suddenly out of the darkness. There had been need of rain for many days. "Only a promise," Lao Er said. Pearl S. Buck - Dragon Seed ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: sparc compile error caused by x86 arch updates 2008-01-31 18:21 ` Adrian Bunk @ 2008-01-31 18:38 ` Ingo Molnar 0 siblings, 0 replies; 49+ messages in thread From: Ingo Molnar @ 2008-01-31 18:38 UTC (permalink / raw) To: Adrian Bunk Cc: Jeremy Fitzhardinge, wli, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, sparclinux * Adrian Bunk <bunk@kernel.org> wrote: > > Adrian, could you please check whether latest x86.git: > > > > git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git > > > > resolves the Sparc build failure you were seeing? All known issues > > are fixed in it. (let me know if you know about more) > > Compiles here on sparc. thanks Adrian. Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-30 1:15 [git pull] x86 arch updates for v2.6.25 Ingo Molnar 2008-01-31 0:33 ` x86 arch updates also broke s390 Adrian Bunk 2008-01-31 15:57 ` [git pull] x86 arch updates for v2.6.25 Adrian Bunk @ 2008-02-05 2:36 ` Maxim Levitsky 2008-02-05 3:27 ` Linus Torvalds 2008-02-09 14:11 ` [git pull] x86 arch updates for v2.6.25 Amit Shah 3 siblings, 1 reply; 49+ messages in thread From: Maxim Levitsky @ 2008-02-05 2:36 UTC (permalink / raw) To: Ingo Molnar Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Wednesday, 30 January 2008 03:15:50 Ingo Molnar wrote: > > Linus, please pull the latest x86 git tree from: > > git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git > > Find the shortlog attached below. > > Most of the changes we have described here: > > http://lkml.org/lkml/2008/1/21/230 > > It's not a small merge, it consists of 908 commits from 96 individual > arch/x86 developers (!): > > 671 files changed, 42791 insertions(+), 38967 deletions(-) > > so here are a few highlevel comments as well, in addition to the > shortlog: > > - a number of core files are changed as well: most notably percpu, > debugging details, timers, the firewire remote debugging patch and ... > the KGDB remote debugging stub in kernel/kgdb.c. > > - we tested KGDB to be merge-worthy within the x86 architecture (the > only supported architecture for now) and it's better to have > kernel/kgdb.c than arch/x86/kernel/kgdb.c. The code is reasonably > clean and the user-space exposure is small - the only real exposure is > the decades-old remote GDB protocol. We are happy to fix up any > further cleanliness comments that people might have - but we really > wanted to start somewhere and get this thing moving. As an added > bonus: finally a kernel debugger that can be read without puking too > much ;-) [anyone remember KDB?] > The x86 tree was merged several times, but I don't see kgdb included in latest mainline -git. So just one question, will it be included or no? Best regards, Maxim Levitsky ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 2:36 ` [git pull] x86 arch updates for v2.6.25 Maxim Levitsky @ 2008-02-05 3:27 ` Linus Torvalds 2008-02-05 4:11 ` Phil Oester ` (3 more replies) 0 siblings, 4 replies; 49+ messages in thread From: Linus Torvalds @ 2008-02-05 3:27 UTC (permalink / raw) To: Maxim Levitsky Cc: Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Tue, 5 Feb 2008, Maxim Levitsky wrote: > > The x86 tree was merged several times, but I don't see kgdb included in > latest mainline -git. > > So just one question, will it be included or no? I won't even consider pulling it unless it's offered as a separate tree, not mixed up with other things. At that point I can give a look. That said, I explained to Ingo why I'm not particularly interested in it. I don't think that "developer-centric" debugging is really even remotely our problem, and that I'm personally a lot more interested in infrastructure that helps normal users give better bug-reports. And kgdb isn't even _remotely_ it. So I'd merge a patch that puts oops information (or the whole console printout) in the Intel management stuff in a heartbeat. That code is likely much grottier than any kgdb thing will ever be (Intel really screwed up the interface and made it some insane XML thing), but it's also fundamentally more important - if it means that normal users can give oops reports after they happened in X (or, these days, probably more commonly during suspend/resume) and the machine just died. kgdb? Not so interesting. We have many more hard problems happening at user sites, not in developer hands. Linus ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 3:27 ` Linus Torvalds @ 2008-02-05 4:11 ` Phil Oester 2008-02-05 4:54 ` Andrew Morton 2008-02-08 4:48 ` Christoph Hellwig 2008-02-05 17:45 ` John Stoffel ` (2 subsequent siblings) 3 siblings, 2 replies; 49+ messages in thread From: Phil Oester @ 2008-02-05 4:11 UTC (permalink / raw) To: Linus Torvalds Cc: Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Mon, Feb 04, 2008 at 07:27:53PM -0800, Linus Torvalds wrote: > kgdb? Not so interesting. We have many more hard problems happening at > user sites, not in developer hands. FWIW, I'm not a fulltime developer by any means, but on occasion I have fixed a few bugs in the netfilter area of the kernel. And in almost all cases, I used kgdb in my debugging and testing of fixes. In doing so, it was a bit of a PITA to find/patch kgdb into the kernel, and having it as a configurable option would have saved me some time and effort and made the process much smoother. So perhaps someone else out there would find it similarly useful, and the extra time it takes to find/patch/compile kgdb in is precluding them from participating? Why would we ever want to do that? Phil ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 4:11 ` Phil Oester @ 2008-02-05 4:54 ` Andrew Morton 2008-02-06 12:08 ` Jan Kiszka 2008-02-08 4:48 ` Christoph Hellwig 1 sibling, 1 reply; 49+ messages in thread From: Andrew Morton @ 2008-02-05 4:54 UTC (permalink / raw) To: Phil Oester Cc: Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Thomas Gleixner, H. Peter Anvin On Mon, 4 Feb 2008 20:11:03 -0800 Phil Oester <kernel@linuxace.com> wrote: > On Mon, Feb 04, 2008 at 07:27:53PM -0800, Linus Torvalds wrote: > > kgdb? Not so interesting. We have many more hard problems happening at > > user sites, not in developer hands. > > FWIW, I'm not a fulltime developer by any means, but on occasion > I have fixed a few bugs in the netfilter area of the kernel. > And in almost all cases, I used kgdb in my debugging and testing ^^^^^^^ > of fixes. yup. > In doing so, it was a bit of a PITA to find/patch kgdb into the > kernel, and having it as a configurable option would have saved > me some time and effort and made the process much smoother. > > So perhaps someone else out there would find it similarly useful, > and the extra time it takes to find/patch/compile kgdb in is > precluding them from participating? Why would we ever want to do > that? I used kgdb continuously for 4-5 years until it broke. I don't think I ever used it much for "debugging" as such. I used it more for general observation of what's going on in the kernel. And for _confirmation_ of what's going on (ie: testing that the actual state matches the expected state). I'd end up doing my development with the assumption that kgdb was present. One example: rather than putting printks all over the place to ensure that the right thing was happening at the right time I'd instead add code like void foo(void) { } ... if (expr) foo(); then, when the testcase was up and running and in steady state, break in and put a breakpoint on foo(). Continue, wait for the breakpoint then go in and observe locals, globals, data structures, etc. It's hard to describe (and remember!). But the presence of the debugger as a development (not debugging) tool changes the way you do development a bit. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 4:54 ` Andrew Morton @ 2008-02-06 12:08 ` Jan Kiszka 2008-02-07 20:00 ` Daniel Phillips 0 siblings, 1 reply; 49+ messages in thread From: Jan Kiszka @ 2008-02-06 12:08 UTC (permalink / raw) To: Andrew Morton Cc: Phil Oester, Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Thomas Gleixner, H. Peter Anvin, Jason Wessel Andrew Morton wrote: > On Mon, 4 Feb 2008 20:11:03 -0800 Phil Oester <kernel@linuxace.com> wrote: > >> On Mon, Feb 04, 2008 at 07:27:53PM -0800, Linus Torvalds wrote: >>> kgdb? Not so interesting. We have many more hard problems happening at >>> user sites, not in developer hands. >> FWIW, I'm not a fulltime developer by any means, but on occasion >> I have fixed a few bugs in the netfilter area of the kernel. >> And in almost all cases, I used kgdb in my debugging and testing > > ^^^^^^^ >> of fixes. > > yup. I can also underline this - and add the aspect that a kernel debugger may also nicely serve to explore tricky code paths interactively. This specifically can lower the entrance barrier to complex kernel subsystems for new developers/bug hunters. With the latest changes, now all available through Jason's git repos for 2.6.25, kgdb should be usable again ("Now even more stable than ever!" ;) ). It became much less invasive towards critical code paths during recent rounds of refactoring, so we can hopefully meet the requirements for merging it upstream soon (2.6.26?). While too many people consider a debugger as _the_ tool for kernel development, which it clearly isn't, it remains a fairly useful feature, and I don't see any regression, technically or organizationally, it may introduce to Linux. IMHO, it would be a pity if kgdb have to remain out off tree and may potentially fall back at quality levels that many of us had fought with in the past. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-06 12:08 ` Jan Kiszka @ 2008-02-07 20:00 ` Daniel Phillips 0 siblings, 0 replies; 49+ messages in thread From: Daniel Phillips @ 2008-02-07 20:00 UTC (permalink / raw) To: Jan Kiszka Cc: Andrew Morton, Phil Oester, Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Thomas Gleixner, H. Peter Anvin, Jason Wessel On Wednesday 06 February 2008 04:08, Jan Kiszka wrote: > While too many people consider a debugger as _the_ tool for kernel > development, which it clearly isn't, it remains a fairly useful > feature, and I don't see any regression, technically or > organizationally, it may introduce to Linux. IMHO, it would be a pity > if kgdb have to remain out off tree and may potentially fall back at > quality levels that many of us had fought with in the past. I do pretty much all my debugging with printk, not just because it is a pain to go find a working kgdb patch, but also because tools like uml make printk style debugging really fast. That said, I often find my development time sinking away into tedious activity like putting in a printk after each line of code, just to find out where some bad thing started going bad. At that point a source level debugger would save me a bunch of time and I would not have to remove the printks afterwards. However, if the time required to patch the kernel with kgdb is more than the time spent putting in prinks then I will just grit my teeth and put in the printks. Never mind that I will end up going through the printk insertion process many times, while only needing to apply the kgdb patch once. Ahem, that is once per kernel version, and I change kernel versions like I change socks (that means "often" for the wags among you.) One thing I like to do with a source level debugger besides debugging is take a walk once through some new algorithm I have implemented. Not because I think there is a bug, but more for the same reason that I like to do a side by side walkthrough of new code with another developer before ever running it. This just provides a different perspective, so that perhaps some little blemishes, inefficiencies and redundancies will show themselves, and the code quality usually improves because of it. Not that this is the only way I review my own code, it is just another way. More ways of reviewing code are better. In this sense, the debugger is like a mechanical friend who always has time available to join in a side by side code review. Regards, Daniel ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 4:11 ` Phil Oester 2008-02-05 4:54 ` Andrew Morton @ 2008-02-08 4:48 ` Christoph Hellwig 2008-02-08 9:51 ` Jan Kiszka 1 sibling, 1 reply; 49+ messages in thread From: Christoph Hellwig @ 2008-02-08 4:48 UTC (permalink / raw) To: Phil Oester Cc: Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Mon, Feb 04, 2008 at 08:11:03PM -0800, Phil Oester wrote: > On Mon, Feb 04, 2008 at 07:27:53PM -0800, Linus Torvalds wrote: > > kgdb? Not so interesting. We have many more hard problems happening at > > user sites, not in developer hands. > > FWIW, I'm not a fulltime developer by any means, but on occasion > I have fixed a few bugs in the netfilter area of the kernel. > And in almost all cases, I used kgdb in my debugging and testing > of fixes. > > In doing so, it was a bit of a PITA to find/patch kgdb into the > kernel, and having it as a configurable option would have saved > me some time and effort and made the process much smoother. > > So perhaps someone else out there would find it similarly useful, > and the extra time it takes to find/patch/compile kgdb in is > precluding them from participating? Why would we ever want to do > that? Just as a note I find it extremly useful in some case to be able to run gdb on a kernel. As said by Andrew it's less the tradition debugging but more to get a picture of what's going on. But kgdb traditionally was more than just a simple gdb stub and contained hooks all over the place for additional functionality. I don't think all this is a good idea and I'd be against it. I'd be really happy to see a common gdb stub with small arch support that allows attaching gdb to the kernel through various transports. Maybe someone is up to do just that? Even the full blown kgdb with all the hooks would benefit from having the gdb stub already in, so maybe I could motivate some kgdb developers to do that work? ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-08 4:48 ` Christoph Hellwig @ 2008-02-08 9:51 ` Jan Kiszka 0 siblings, 0 replies; 49+ messages in thread From: Jan Kiszka @ 2008-02-08 9:51 UTC (permalink / raw) To: Christoph Hellwig Cc: Phil Oester, Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jason Wessel Hi Christoph, Christoph Hellwig wrote: > But kgdb traditionally was more than just a simple gdb stub and > contained hooks all over the place for additional functionality. > I don't think all this is a good idea and I'd be against it. > > I'd be really happy to see a common gdb stub with small arch support > that allows attaching gdb to the kernel through various transports. > > Maybe someone is up to do just that? Even the full blown kgdb with > all the hooks would benefit from having the gdb stub already in, > so maybe I could motivate some kgdb developers to do that work? For sure, every small step forward will help. Maybe you could have a look at current kgdb.git at kernel.org and comment on what you would like to see in a first submission round, what kind of hooks, specifically regarding the core, are not yet in an acceptable state, and so forth. We will listen. TiA, Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 3:27 ` Linus Torvalds 2008-02-05 4:11 ` Phil Oester @ 2008-02-05 17:45 ` John Stoffel 2008-02-05 17:52 ` H. Peter Anvin 2008-02-07 19:20 ` [git pull] x86 arch updates for v2.6.25 Daniel Phillips 2008-02-08 17:00 ` Andi Kleen 3 siblings, 1 reply; 49+ messages in thread From: John Stoffel @ 2008-02-05 17:45 UTC (permalink / raw) To: Linus Torvalds Cc: Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin >>>>> "Linus" == Linus Torvalds <torvalds@linux-foundation.org> writes: Linus> On Tue, 5 Feb 2008, Maxim Levitsky wrote: >> >> The x86 tree was merged several times, but I don't see kgdb included in >> latest mainline -git. >> >> So just one question, will it be included or no? Linus> I won't even consider pulling it unless it's offered as a Linus> separate tree, not mixed up with other things. At that point I Linus> can give a look. Linus> That said, I explained to Ingo why I'm not particularly Linus> interested in it. I don't think that "developer-centric" Linus> debugging is really even remotely our problem, and that I'm Linus> personally a lot more interested in infrastructure that helps Linus> normal users give better bug-reports. And kgdb isn't even Linus> _remotely_ it. Linus> So I'd merge a patch that puts oops information (or the whole Linus> console printout) in the Intel management stuff in a Linus> heartbeat. How about we put in some sort of console logging tool so we can buffer and log the console output better? Currently if I have both a serial and tty console defined, my GDM prompter looses the mouse until I goto the XDMCP chooser and back again. I'm pretty sure it's a GDM problem, since Xdm doesn't have this issue at all. Haven't had time to chase it though. In any case, having some way to log oopses better would be really nice. Not sure how we could do it reliably for suspend/resume needs on laptops without dedicated management hardware like the ILOM stuff on Intel/Sun boxes. Dunno... just viocing my desires... John ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 17:45 ` John Stoffel @ 2008-02-05 17:52 ` H. Peter Anvin 2008-02-08 18:24 ` Bernhard Kaindl 0 siblings, 1 reply; 49+ messages in thread From: H. Peter Anvin @ 2008-02-05 17:52 UTC (permalink / raw) To: John Stoffel Cc: Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner John Stoffel wrote: > > Linus> So I'd merge a patch that puts oops information (or the whole > Linus> console printout) in the Intel management stuff in a > Linus> heartbeat. > > How about we put in some sort of console logging tool so we can buffer > and log the console output better? Currently if I have both a serial > and tty console defined, my GDM prompter looses the mouse until I goto > the XDMCP chooser and back again. > > I'm pretty sure it's a GDM problem, since Xdm doesn't have this issue > at all. Haven't had time to chase it though. > > In any case, having some way to log oopses better would be really > nice. Not sure how we could do it reliably for suspend/resume needs > on laptops without dedicated management hardware like the ILOM stuff > on Intel/Sun boxes. > Hm. Dumping oops information plus perhaps even a memory dump to a USB key sounds like it would be highly useful - lots of storage capacity, readily available, and can be plugged into just about any system. I don't know if the backdoor debugging mode in EHCI can be used for that. Either way, this would have to be done *very* carefully to avoid clobbering USB devices not intended for this purpose. -hpa ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 17:52 ` H. Peter Anvin @ 2008-02-08 18:24 ` Bernhard Kaindl 2008-02-08 19:38 ` remote DMA via FireWire (was Re: [git pull] x86 arch updates for v2.6.25) Stefan Richter 0 siblings, 1 reply; 49+ messages in thread From: Bernhard Kaindl @ 2008-02-08 18:24 UTC (permalink / raw) To: H. Peter Anvin Cc: John Stoffel, Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner On Tue, 5 Feb 2008, H. Peter Anvin wrote: > John Stoffel wrote: > > > > Linus> So I'd merge a patch that puts oops information (or the whole > > Linus> console printout) in the Intel management stuff in a > > Linus> heartbeat. > > > > How about we put in some sort of console logging tool so we can buffer > > and log the console output better? Currently if I have both a serial > > and tty console defined, my GDM prompter looses the mouse until I goto > > the XDMCP chooser and back again. > > I'm pretty sure it's a GDM problem, since Xdm doesn't have this issue > > at all. Haven't had time to chase it though. > > > > In any case, having some way to log oopses better would be really > > nice. Not sure how we could do it reliably for suspend/resume needs > > on laptops without dedicated management hardware like the ILOM stuff > > on Intel/Sun boxes. > > Hm. Dumping oops information plus perhaps even a memory dump to a USB key > sounds like it would be highly useful - lots of storage capacity, readily > available, and can be plugged into just about any system. > > I don't know if the backdoor debugging mode in EHCI can be used for that. > Either way, this would have to be done *very* carefully to avoid clobbering > USB devices not intended for this purpose. If the machine can be hooked up over FireWire to another Linux box, you can use the OHCI1394 controller's "physical DMA" feature to get lots if info: What you need: - An OHCI1394-compliant (nearly all are) FireWire port in the oopsing system - A second Linux system (with other tools also other OS) with any FireWire port - A FireWire cable which connects the two ports (there are two kinds of plugs) - ftp://ftp.suse.de/private/bk/firewire/tools/firescope-0.2.2.tar.bz2 What you do: 1 - You boot both systems and connect them with the FireWire cable 2 - You initialize FireWire on both systems and ensure that 'physical DMA' is enabled in the OHCI1394-compliant FireWire controller of the oopsing machine. 3 - You transfer the System.map of the debugged kernel to the second system. - Everything after this point does not need the cooperation of the CPU of the debugged system, the PCI bus needs to be working and unlocked, but the CPU(s) of the debugged system can otherwise do anything or nothing at all anymore. 4 - You trigger the oops/crash/hang, but leave the debugged machine turned on. 5 - You install firescope (URL in the list above) on the second machine and run it for example with: firescope -A System.map-of-debugged-kernel 6) you press Ctrl-D (this is just one way to do it) What you get are the contents of the printk buffer containing the messages which the kernel logged into the in-memory printk buffer (such as oopses) - directly from the other machine's RAM over remote DMA (which is called "physical DMA" in FireWire language) Of course you can put firescope into "auto update mode" and just watch or log the printk buffer as it gets messages on the remote system - in real time. -------------------------------------------------------------------------- There is new code in mainline now to debug early boot issues: If the oops/hang/crash happens early in boot, before the normal ohci1394 kernel driver can initialize the OHCI1394-compatible controllers on the debugged system, such as in the ACPI initialisation or so, you can employ my early initialisation patch for OHCI1394 controllers to get remote access early: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f212ec4b7b4d84290f12c9c0416cdea283bf5f40 It has been committed into mainline (for 2.6.25) with the x86 merge on January 30 and it contains more documentation on debugging over FireWire. To to ensure everybody: The code is not compiled by default, and even if compiled, it runs __only__ when a specific boot parameter is given on boot. However, the initialization of the ohci1394 driver allows physical DMA to all FireWire nodes unless it is loaded with phys_dma=0. See the PS of this mail for more regarding security. You can also use the new code on debugging suspend/resume from disk/ram: To debug suspend: 1 - enable the early firewire patch as documentented in the patch 2 - have the second linux system set up and connected on boot already 3 - ensure that no OHIC1394 driver is ever loaded, as suspending as well as the driver unload would disable the OHCI1394 controller. 4 - suspend the machine to get the oops/hang/crash. To debug resume from disk: Nothing add to the above. The new code gets called when the boot kernel initializes the machine hardware on resume, so you can get access. To debug resume from ram: Disable the __init{,data} flags in the patch and insert a call to init_ohci1394_dma_on_all_controllers() early on resume, after the registers of PCI cards are accessible. Testing and submitting that would be the next thing on my todo list for debugging with firewire, but someone tries it, I'd be happy to hear how it went (or to look at the resulting patch). My plan would be to make that a config option which can be enabled when needed to debug resume from ram with a new flag to the boot option which the new init_ohci1394 commit added. The documentation in the commit also includes a link to firedump, a tool which can to pull the the contents of all PCI-accessible memory over FireWire at high speed. But it does not parse the e820 map yet, so it crashes the remote system hard if it ties to read from a memory hole. below the 4GB limit over to the second machine - with the speed of your Best Regards, Bernhard Kaindl PS: Using gdb (and even kgdb) over firewire is possible: For very advanced users, the documentation in the commit contains a link to a gdb stub for firewire (named fireproxy currenty) which allows gdb to access all data which can be referenced from symbols found by gdb using a vmlinux file which is compiled with debug information. With it, you can get symbolic kernel stack backtraces of the remote system by using the gdb macros which were written for kdump. The latest version of the gdb proxy (fireproxy-0.34) can communicate with kgdb over a generic memory-communication module (kgdbom). This implementation is just a proof-of-concept which can only excange a very small amount of messages over physical DMA memory back and forth, which means that it is not yet useable for real debbugging work. Regarding security: On the software side: The new fw-ohci driver seems to allow physical DMA only to devices which pretend to be FireWire disks (it is the specified way to transfer the data) unless a disk on a remote FireWire bus is being plugged-in. That makes it a bit harder to use physical DMA, but not impossible. Loading no FireWire driver is also possible, but you'd have to check that your BIOS does not enable FireWire when your machine reboots (for boot from FireWire). With FireWire enabled by the BIOS, a hacker could (in theory) load his own operating system into the system RAM and boot it by changing the code which the boot loader executes while it is running to trick the CPU to jump directy into the bootstrapping code of the loaded OS. Loading the ochi1394 driver with phys_dma=0 would disable physical DMA. It could mean that some FireWire drivers like sbp2 might not work, so if the BIOS does not enable FireWire on boot, you should be safe from the FireWire side with that. To be really safe from such kind of system tapping, you have to prevent physical access to your FireWire ports (and your mainboard, to exclude debug cards): Filling hot glue into the FireFire ports makes it harder to use them and a padlock on the system housing gives some resistance to physical system intrusions, but there is always a big enough bolt cutter to open it. How much you need depends on the threat you have. ^ permalink raw reply [flat|nested] 49+ messages in thread
* remote DMA via FireWire (was Re: [git pull] x86 arch updates for v2.6.25) 2008-02-08 18:24 ` Bernhard Kaindl @ 2008-02-08 19:38 ` Stefan Richter 0 siblings, 0 replies; 49+ messages in thread From: Stefan Richter @ 2008-02-08 19:38 UTC (permalink / raw) To: Bernhard Kaindl Cc: H. Peter Anvin, John Stoffel, Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner Bernhard Kaindl wrote: > Regarding security: > > On the software side: The new fw-ohci driver seems to allow physical DMA only > to devices which pretend to be FireWire disks (it is the specified way to > transfer the data) ... To be precise, firewire-sbp2 tells firewire-ohci to open up the physical response unit (which implements the remote DMA feature) for the target node from when it tries the SBP-2 login until when it completes the SBP-2 logout or the target is plugged out. Let's call it filtered physical DMA. A mode which doesn't require the physical response unit could be implemented in firewire-sbp2, but this would come with a considerable overhead regarding code, runtime CPU usage due to huge interrupt handling load, and additional runtime memory footprint. The older sbp2 driver relies on unfiltered physical DMA, hence is less secure. There can be a mode selected at compile time to run without physical DMA, but that's buggy and implemented in a way which is not portable. The only reason why we don't have an SBP-2 initiator which works without remote DMA is that nobody is bothered enough to either debug that mode in the old driver or implement it in the new driver. Besides, we could rather trivially add filtered physical DMA to the old sbp2/ieee1394/ohci1394 stack but nobody took the time to do this yet either. > With FireWire enabled by the BIOS, a hacker could (in theory) load his > own operating system into the system RAM and boot it ... x86 BIOSes don't initialize OHCI-1394 controllers up to the point that its physical response unit were working remote nodes were granted access to it. Apple's OpenFirmware implements SBP-2 initiator but I don't know if it uses the physical response unit. But this point is moot --- you can boot from SBP-2 targets. -- Stefan Richter -=====-==--- --=- -=--- http://arcgraph.de/sr/ ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 3:27 ` Linus Torvalds 2008-02-05 4:11 ` Phil Oester 2008-02-05 17:45 ` John Stoffel @ 2008-02-07 19:20 ` Daniel Phillips 2008-02-08 17:00 ` Andi Kleen 3 siblings, 0 replies; 49+ messages in thread From: Daniel Phillips @ 2008-02-07 19:20 UTC (permalink / raw) To: Linus Torvalds Cc: Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Monday 04 February 2008 19:27, Linus Torvalds wrote: > On Tue, 5 Feb 2008, Maxim Levitsky wrote: > > The x86 tree was merged several times, but I don't see kgdb > > included in latest mainline -git. > > > > So just one question, will it be included or no? > > I won't even consider pulling it unless it's offered as a separate > tree, not mixed up with other things. At that point I can give a > look. > > That said, I explained to Ingo why I'm not particularly interested in > it. I don't think that "developer-centric" debugging is really even > remotely our problem, and that I'm personally a lot more interested > in infrastructure that helps normal users give better bug-reports. > And kgdb isn't even _remotely_ it. > > So I'd merge a patch that puts oops information (or the whole console > printout) in the Intel management stuff in a heartbeat. That code is > likely much grottier than any kgdb thing will ever be (Intel really > screwed up the interface and made it some insane XML thing), but it's > also fundamentally more important - if it means that normal users can > give oops reports after they happened in X (or, these days, probably > more commonly during suspend/resume) and the machine just died. > > kgdb? Not so interesting. We have many more hard problems happening > at user sites, not in developer hands. Hi Linus, If you listen carefully you can hear dozens of Linux kernel developers collectively holding their breath and thinking "Maybe Linus will finally merge kgdb". Yes, user bug reports are important. Developer efficiency is important too. Regards, Daniel ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-05 3:27 ` Linus Torvalds ` (2 preceding siblings ...) 2008-02-07 19:20 ` [git pull] x86 arch updates for v2.6.25 Daniel Phillips @ 2008-02-08 17:00 ` Andi Kleen 2008-02-08 17:48 ` Jan Kiszka 3 siblings, 1 reply; 49+ messages in thread From: Andi Kleen @ 2008-02-08 17:00 UTC (permalink / raw) To: Linus Torvalds Cc: Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin Linus Torvalds <torvalds@linux-foundation.org> writes: > > So I'd merge a patch that puts oops information (or the whole console > printout) in the Intel management stuff in a heartbeat. That code is > likely much grottier than any kgdb thing will ever be (Intel really > screwed up the interface and made it some insane XML thing), but it's also > fundamentally more important - if it means that normal users can give oops > reports after they happened in X (or, these days, probably more commonly > during suspend/resume) and the machine just died. I agree. Even with XML ugliness that's a fairly important area. > kgdb? Not so interesting. We have many more hard problems happening at > user sites, not in developer hands. The other problem with the current kgdb code is that it has some serious problems. e.g. it reinvents various kernel interfaces that already exist -- one example is that it adds new notify_die()s just to reimplement the standard __ex_table exceptions in a bogus way. Couple of other issues. So even if it was a good idea to merge the code is not really fully in merge shape anyways. -Andi ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-08 17:00 ` Andi Kleen @ 2008-02-08 17:48 ` Jan Kiszka 2008-02-08 18:57 ` Andi Kleen 0 siblings, 1 reply; 49+ messages in thread From: Jan Kiszka @ 2008-02-08 17:48 UTC (permalink / raw) To: Andi Kleen Cc: Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jason Wessel Andi Kleen wrote: >> kgdb? Not so interesting. We have many more hard problems happening at >> user sites, not in developer hands. > > The other problem with the current kgdb code is that it has some serious > problems. e.g. it reinvents various kernel interfaces that already > exist -- one example is that it adds new notify_die()s just to reimplement > the standard __ex_table exceptions in a bogus way. /me was once wondering as well why kgdb installs a seconds way of handling (its own) faults. Jason explained to me that this approach is more robust against corruption along the normal fix-up path. Maybe he can elaborate better than I why this is useful (or what real-life bug once encouraged the current design). > Couple of other issues. So even if it was a good idea to merge the > code is not really fully in merge shape anyways. If you recall the issues (and they are still present), it would be nice to have them listed. kgdb suffered a lot from historic cruft, but we already remove at least some of it over the last patching rounds. Whatever remains should be addressed ASAP. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-08 17:48 ` Jan Kiszka @ 2008-02-08 18:57 ` Andi Kleen 2008-02-08 21:28 ` [RFC][PATCH] KGDB: remove kgdb-own fault handling (was: Re: [git pull] x86 arch updates for v2.6.25) Jan Kiszka 0 siblings, 1 reply; 49+ messages in thread From: Andi Kleen @ 2008-02-08 18:57 UTC (permalink / raw) To: Jan Kiszka Cc: Andi Kleen, Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jason Wessel > /me was once wondering as well why kgdb installs a seconds way of > handling (its own) faults. Jason explained to me that this approach is > more robust against corruption along the normal fix-up path. That's 100% bogus. > > If you recall the issues (and they are still present), it would be nice > to have them listed. kgdb suffered a lot from historic cruft, but we > already remove at least some of it over the last patching rounds. > Whatever remains should be addressed ASAP. I sent Jason a couple of mails last time when he posted (and before that the previous maintainer when he tried to merge it). All were fairly "beratungsresistent". If you're truly interested i can dig out the mails or do a fresh review. Long ago I did a quite clean x86-64 kgdb for Linux 2.4 based on the old 2.4 stub that dropped in without any strange other hooks (except for a straight forward change to the serial code). It worked just fine this way. -Andi ^ permalink raw reply [flat|nested] 49+ messages in thread
* [RFC][PATCH] KGDB: remove kgdb-own fault handling (was: Re: [git pull] x86 arch updates for v2.6.25) 2008-02-08 18:57 ` Andi Kleen @ 2008-02-08 21:28 ` Jan Kiszka 2008-02-08 21:58 ` Linus Torvalds 0 siblings, 1 reply; 49+ messages in thread From: Jan Kiszka @ 2008-02-08 21:28 UTC (permalink / raw) To: Andi Kleen Cc: Linus Torvalds, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jason Wessel Andi Kleen wrote: >> /me was once wondering as well why kgdb installs a seconds way of >> handling (its own) faults. Jason explained to me that this approach is >> more robust against corruption along the normal fix-up path. > > That's 100% bogus. > >> If you recall the issues (and they are still present), it would be nice >> to have them listed. kgdb suffered a lot from historic cruft, but we >> already remove at least some of it over the last patching rounds. >> Whatever remains should be addressed ASAP. > > I sent Jason a couple of mails last time when he posted (and before that the > previous maintainer when he tried to merge it). All were > fairly "beratungsresistent". > > If you're truly interested i can dig out the mails or do a fresh review. > > Long ago I did a quite clean x86-64 kgdb for Linux 2.4 based on the > old 2.4 stub that dropped in without any strange other hooks > (except for a straight forward change to the serial code). It worked > just fine this way. Well, let's try it this way: Find below a patch against kgdb.git that removes the special fault handling (this wouldn't be the first feature I recently removed from kgdb :->). Light testing revealed no obvious problems yet. Jason, please tell us what problems this could cause. I just dug out the reply you sent me regarding this last year, and you specifically mentioned non-recoverable unaligned accesses by gdb on MIPS. Is this still true? Is there no way to handle this particular arch separately and leave the rest happily with what the kernel already provides? Jan ----snip---- As the kernel already provides the infrastructure to carefully access potentially bogus memory locations, kgdb does not need to maintain its own, complex, arch-dependent mechanism. Signed-off-by: Jan Kiszka <jan.kiszka@web.de> --- arch/x86/kernel/Makefile | 2 arch/x86/kernel/kgdb-jmp_32.S | 74 ------------------------ arch/x86/kernel/kgdb-jmp_64.S | 65 --------------------- arch/x86/kernel/kgdb.c | 5 - include/asm-x86/kgdb.h | 6 -- include/linux/kgdb.h | 27 --------- kernel/kgdb.c | 125 ++++-------------------------------------- 7 files changed, 16 insertions(+), 288 deletions(-) Index: b/arch/x86/kernel/Makefile =================================================================== --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -58,7 +58,7 @@ obj-$(CONFIG_MODULES) += module_$(BITS) obj-$(CONFIG_ACPI_SRAT) += srat_32.o obj-$(CONFIG_EFI) += efi.o efi_$(BITS).o efi_stub_$(BITS).o obj-$(CONFIG_DOUBLEFAULT) += doublefault_32.o -obj-$(CONFIG_KGDB) += kgdb.o kgdb-jmp_$(BITS).o +obj-$(CONFIG_KGDB) += kgdb.o obj-$(CONFIG_VM86) += vm86_32.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o Index: b/arch/x86/kernel/kgdb-jmp_32.S =================================================================== --- a/arch/x86/kernel/kgdb-jmp_32.S +++ /dev/null @@ -1,74 +0,0 @@ -/* - * arch/x86/kernel/kgdb-jmp_32.S - * - * Save and restore system registers so that within a limited frame we - * may have a fault and "jump back" to a known safe location. - * - * Author: George Anzinger <george@mvista.com> - * - * Cribbed from glibc, which carries the following: - * Copyright (C) 1996, 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - * Copyright (C) 2005 by MontaVista Software. - * - * This file is licensed under the terms of the GNU General Public License - * version 2. This program as licensed "as is" without any warranty of - * any kind, whether express or implied. - */ - -#include <linux/linkage.h> - -#define PCOFF 0 -#define LINKAGE 4 /* just the return address */ -#define PTR_SIZE 4 -#define PARMS LINKAGE /* no space for saved regs */ -#define JMPBUF PARMS -#define VAL JMPBUF+PTR_SIZE - -#define JB_BX 0 -#define JB_SI 1 -#define JB_DI 2 -#define JB_BP 3 -#define JB_SP 4 -#define JB_PC 5 - -/* This must be called prior to kgdb_fault_longjmp and - * kgdb_fault_longjmp must not be called outside of the context of the - * last call to kgdb_fault_setjmp. - * kgdb_fault_setjmp(int *jmp_buf[6]) - */ -ENTRY(kgdb_fault_setjmp) - movl JMPBUF(%esp), %eax - - /* Save registers. */ - movl %ebx, (JB_BX*4)(%eax) - movl %esi, (JB_SI*4)(%eax) - movl %edi, (JB_DI*4)(%eax) - /* Save SP as it will be after we return. */ - leal JMPBUF(%esp), %ecx - movl %ecx, (JB_SP*4)(%eax) - movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */ - movl %ecx, (JB_PC*4)(%eax) - movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */ - - /* Restore state so we can now try the access. */ - movl JMPBUF(%esp), %ecx /* User's jmp_buf in %ecx. */ - /* Save the return address now. */ - movl (JB_PC*4)(%ecx), %edx - /* Restore registers. */ - movl $0, %eax - movl (JB_SP*4)(%ecx), %esp - jmp *%edx /* Jump to saved PC. */ - -/* kgdb_fault_longjmp(int *jmp_buf[6]) */ -ENTRY(kgdb_fault_longjmp) - movl JMPBUF(%esp), %ecx /* User's jmp_buf in %ecx. */ - /* Save the return address now. */ - movl (JB_PC*4)(%ecx), %edx - /* Restore registers. */ - movl (JB_BX*4)(%ecx), %ebx - movl (JB_SI*4)(%ecx), %esi - movl (JB_DI*4)(%ecx), %edi - movl (JB_BP*4)(%ecx), %ebp - movl $1, %eax - movl (JB_SP*4)(%ecx), %esp - jmp *%edx /* Jump to saved PC. */ Index: b/arch/x86/kernel/kgdb-jmp_64.S =================================================================== --- a/arch/x86/kernel/kgdb-jmp_64.S +++ /dev/null @@ -1,65 +0,0 @@ -/* - * arch/x86/kernel/kgdb-jmp.S - * - * Save and restore system registers so that within a limited frame we - * may have a fault and "jump back" to a known safe location. - * - * Author: Tom Rini <trini@kernel.crashing.org> - * - * Cribbed from glibc, which carries the following: - * Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc. - * Copyright (C) 2005 by MontaVista Software. - * - * This file is licensed under the terms of the GNU General Public License - * version 2. This program as licensed "as is" without any warranty of - * any kind, whether express or implied. - */ - -#include <linux/linkage.h> - -#define JB_RBX 0 -#define JB_RBP 1 -#define JB_R12 2 -#define JB_R13 3 -#define JB_R14 4 -#define JB_R15 5 -#define JB_RSP 6 -#define JB_PC 7 - - .code64 - -/* This must be called prior to kgdb_fault_longjmp and - * kgdb_fault_longjmp must not be called outside of the context of the - * last call to kgdb_fault_setjmp. - */ -ENTRY(kgdb_fault_setjmp) - /* Save registers. */ - movq %rbx, (JB_RBX*8)(%rdi) - movq %rbp, (JB_RBP*8)(%rdi) - movq %r12, (JB_R12*8)(%rdi) - movq %r13, (JB_R13*8)(%rdi) - movq %r14, (JB_R14*8)(%rdi) - movq %r15, (JB_R15*8)(%rdi) - leaq 8(%rsp), %rdx /* Save SP as it will be after we return. */ - movq %rdx, (JB_RSP*8)(%rdi) - movq (%rsp), %rax /* Save PC we are returning to now. */ - movq %rax, (JB_PC*8)(%rdi) - /* Set return value for setjmp. */ - mov $0,%eax - movq (JB_PC*8)(%rdi),%rdx - movq (JB_RSP*8)(%rdi),%rsp - jmpq *%rdx - -ENTRY(kgdb_fault_longjmp) - /* Restore registers. */ - movq (JB_RBX*8)(%rdi),%rbx - movq (JB_RBP*8)(%rdi),%rbp - movq (JB_R12*8)(%rdi),%r12 - movq (JB_R13*8)(%rdi),%r13 - movq (JB_R14*8)(%rdi),%r14 - movq (JB_R15*8)(%rdi),%r15 - /* Set return value for setjmp. */ - movq (JB_PC*8)(%rdi),%rdx - movq (JB_RSP*8)(%rdi),%rsp - mov $1,%eax - jmpq *%rdx Index: b/include/asm-x86/kgdb.h =================================================================== --- a/include/asm-x86/kgdb.h +++ b/include/asm-x86/kgdb.h @@ -63,15 +63,11 @@ enum regnames { _AX, /* 0 */ }; #endif /* CONFIG_X86_32 */ -/* Number of bytes of registers and critical bytes required for a - * setjmp/longjmp - */ +/* Number of bytes for gdb registers */ #ifdef CONFIG_X86_32 #define NUMREGBYTES 64 -#define NUMCRITREGBYTES 24 #else /* ! CONFIG_X86_32 */ #define NUMREGBYTES ((_PS+1)*8) -#define NUMCRITREGBYTES (8 * 8) /* 8 registers. */ #endif /* CONFIG_X86_32 */ #ifndef __ASSEMBLY__ Index: b/include/linux/kgdb.h =================================================================== --- a/include/linux/kgdb.h +++ b/include/linux/kgdb.h @@ -32,7 +32,6 @@ struct uart_port; void breakpoint(void); extern int kgdb_connected; -extern int kgdb_may_fault; extern atomic_t kgdb_setting_breakpoint; extern atomic_t cpu_doing_single_step; @@ -165,32 +164,6 @@ int kgdb_arch_handle_exception(int vecto */ void kgdb_roundup_cpus(unsigned long flags); -#ifndef JMP_REGS_ALIGNMENT -# define JMP_REGS_ALIGNMENT -#endif - -extern unsigned long kgdb_fault_jmp_regs[]; - -/** - * kgdb_fault_setjmp - Store state in case we fault. - * @curr_context: An array to store state into. - * - * Certain functions may try to access memory, and in doing so may - * cause a fault. When this happens, we trap it, restore state to - * this call, and let ourself know that something bad has happened. - */ -asmlinkage int kgdb_fault_setjmp(unsigned long *curr_context); - -/** - * kgdb_fault_longjmp - Restore state when we have faulted. - * @curr_context: The previously stored state. - * - * When something bad does happen, this function is called to - * restore the known good state, and set the return value to 1, so - * we know something bad happened. - */ -asmlinkage void kgdb_fault_longjmp(unsigned long *curr_context); - /* Optional functions. */ int kgdb_validate_break_address(unsigned long addr); int kgdb_arch_set_breakpoint(unsigned long addr, char *saved_instr); Index: b/kernel/kgdb.c =================================================================== --- a/kernel/kgdb.c +++ b/kernel/kgdb.c @@ -72,12 +72,6 @@ struct debuggerinfo_struct { struct task_struct *task; } kgdb_info[NR_CPUS]; -/* - * Could we be about to try and access a bad memory location? - * If so we also need to flag this has happened. - */ -int kgdb_may_fault; - /* Is a host GDB connected to us? */ int kgdb_connected; EXPORT_SYMBOL_GPL(kgdb_connected); @@ -133,10 +127,6 @@ static unsigned long gdb_regs[(NUMREGBY sizeof(unsigned long) - 1) / sizeof(unsigned long)]; -/* Storage of registers for handling a fault. */ -unsigned long kgdb_fault_jmp_regs[NUMCRITREGBYTES / - sizeof(unsigned long)] JMP_REGS_ALIGNMENT; - /* to keep track of the CPU which is doing the single stepping*/ atomic_t cpu_doing_single_step = ATOMIC_INIT(-1); @@ -314,44 +304,6 @@ static void put_packet(char *buffer) } /* - * Black magic portion. Dont look too closely. Limited setjmp support. - */ - -/* - * Wrap kgdb_fault_setjmp() call to enable the kernel faults and save/restore - * the state before/after a fault has happened. - * Note that it *must* be inline to work correctly. - */ -static __always_inline int fault_setjmp(void) -{ -#ifdef CONFIG_PREEMPT - int count = preempt_count(); -#endif - - /* - * kgdb_fault_setjmp() returns 0 after the jump buffer has been setup, - * and non-zero when an expected kernel fault has happened. - */ - if (kgdb_fault_setjmp(kgdb_fault_jmp_regs) == 0) { - kgdb_may_fault = 1; - return 0; - } else { - /* - * Close your eyes please! - */ -#ifdef CONFIG_PREEMPT - preempt_count() = count; -#endif - /* - * Thanks, you may open them now! - */ - kgdb_may_fault = 0; - - return 1; - } -} - -/* * Fault-tolerant memory accessor wrappers. Performance is a secondary * concern, the primary concern is not to crash the debugger (or the * debuggee): @@ -363,9 +315,6 @@ static __always_inline int fault_setjmp( */ char *kgdb_mem2hex(char *mem, char *buf, int count) { - if (fault_setjmp() != 0) - return ERR_PTR(-EINVAL); - /* * Accessing some registers in a single load instruction is * required to avoid bad side effects for some I/O registers. @@ -373,10 +322,8 @@ char *kgdb_mem2hex(char *mem, char *buf, if ((count == 2) && (((long)mem & 1) == 0)) { u16 tmp_s; - if (probe_kernel_address(mem, tmp_s) == -EFAULT) { - kgdb_may_fault = 0; + if (probe_kernel_address(mem, tmp_s) == -EFAULT) return ERR_PTR(-EINVAL); - } mem += 2; #ifdef __BIG_ENDIAN @@ -392,10 +339,8 @@ char *kgdb_mem2hex(char *mem, char *buf, #endif } else if ((count == 4) && (((long)mem & 3) == 0)) { u32 tmp_l; - if (probe_kernel_address(mem, tmp_l) == -EFAULT) { - kgdb_may_fault = 0; + if (probe_kernel_address(mem, tmp_l) == -EFAULT) return ERR_PTR(-EINVAL); - } mem += 4; #ifdef __BIG_ENDIAN @@ -420,10 +365,8 @@ char *kgdb_mem2hex(char *mem, char *buf, #ifdef CONFIG_64BIT } else if ((count == 8) && (((long)mem & 7) == 0)) { u64 tmp_ll; - if (probe_kernel_address(mem, tmp_ll) == -EFAULT) { - kgdb_may_fault = 0; + if (probe_kernel_address(mem, tmp_ll) == -EFAULT) return ERR_PTR(-EINVAL); - } mem += 8; #ifdef __BIG_ENDIAN @@ -466,17 +409,14 @@ char *kgdb_mem2hex(char *mem, char *buf, while (count-- > 0) { unsigned char ch; - if (probe_kernel_address(mem, ch) == -EFAULT) { - kgdb_may_fault = 0; + if (probe_kernel_address(mem, ch) == -EFAULT) return ERR_PTR(-EINVAL); - } mem++; *buf++ = hexchars[ch >> 4]; *buf++ = hexchars[ch & 0xf]; } } - kgdb_may_fault = 0; *buf = 0; return buf; @@ -489,26 +429,17 @@ char *kgdb_mem2hex(char *mem, char *buf, */ static char *kgdb_ebin2mem(char *buf, char *mem, int count) { - if (fault_setjmp() != 0) - return ERR_PTR(-EINVAL); - for (; count > 0; count--, buf++) { if (*buf == 0x7d) { if (probe_kernel_write(mem, (char)(*buf ^ 0x20)) == - -EFAULT) { - kgdb_may_fault = 0; + -EFAULT) return ERR_PTR(-EINVAL); - } buf++; - } else { - if (probe_kernel_write(mem, *buf) == -EFAULT) { - kgdb_may_fault = 0; + } else + if (probe_kernel_write(mem, *buf) == -EFAULT) return ERR_PTR(-EINVAL); - } - } mem++; } - kgdb_may_fault = 0; return mem; } @@ -520,9 +451,6 @@ static char *kgdb_ebin2mem(char *buf, ch */ char *kgdb_hex2mem(char *buf, char *mem, int count) { - if (fault_setjmp() != 0) - return ERR_PTR(-EINVAL); - if ((count == 2) && (((long)mem & 1) == 0)) { u16 tmp_s = 0; @@ -537,10 +465,8 @@ char *kgdb_hex2mem(char *buf, char *mem, tmp_s |= hex(*buf++) << 12; tmp_s |= hex(*buf++) << 8; #endif - if (probe_kernel_write(mem, tmp_s) == -EFAULT) { - kgdb_may_fault = 0; + if (probe_kernel_write(mem, tmp_s) == -EFAULT) return ERR_PTR(-EINVAL); - } mem += 2; } else if ((count == 4) && (((long)mem & 3) == 0)) { u32 tmp_l = 0; @@ -564,10 +490,8 @@ char *kgdb_hex2mem(char *buf, char *mem, tmp_l |= hex(*buf++) << 28; tmp_l |= hex(*buf++) << 24; #endif - if (probe_kernel_write(mem, tmp_l) == -EFAULT) { - kgdb_may_fault = 0; + if (probe_kernel_write(mem, tmp_l) == -EFAULT) return ERR_PTR(-EINVAL); - } mem += 4; } else { int i; @@ -576,14 +500,11 @@ char *kgdb_hex2mem(char *buf, char *mem, unsigned char ch = hex(*buf++) << 4; ch |= hex(*buf++); - if (probe_kernel_write(mem, ch) == -EFAULT) { - kgdb_may_fault = 0; + if (probe_kernel_write(mem, ch) == -EFAULT) return ERR_PTR(-EINVAL); - } mem++; } } - kgdb_may_fault = 0; return mem; } @@ -806,46 +727,28 @@ static void kgdb_wait(struct pt_regs *re char *kgdb_get_mem(char *addr, unsigned char *buf, int count) { - if (fault_setjmp() != 0) - return ERR_PTR(-EINVAL); - while (count) { - if ((unsigned long)addr < TASK_SIZE) { - kgdb_may_fault = 0; - return ERR_PTR(-EINVAL); - } - if (probe_kernel_address(addr, *buf) == -EFAULT) { - kgdb_may_fault = 0; + if ((unsigned long)addr < TASK_SIZE || + probe_kernel_address(addr, *buf) == -EFAULT) return ERR_PTR(-EINVAL); - } buf++; addr++; count--; } - kgdb_may_fault = 0; return NULL; } char *kgdb_set_mem(char *addr, unsigned char *buf, int count) { - if (fault_setjmp() != 0) - return ERR_PTR(-EINVAL); - while (count) { - if ((unsigned long)addr < TASK_SIZE) { - kgdb_may_fault = 0; + if ((unsigned long)addr < TASK_SIZE || + probe_kernel_write(addr, *buf) == -EFAULT) return ERR_PTR(-EINVAL); - } - if (probe_kernel_write(addr, *buf) == -EFAULT) { - kgdb_may_fault = 0; - return ERR_PTR(-EINVAL); - } buf++; addr++; count--; } - kgdb_may_fault = 0; return NULL; } Index: b/arch/x86/kernel/kgdb.c =================================================================== --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c @@ -475,11 +475,6 @@ static int kgdb_notify(struct notifier_b return NOTIFY_DONE; } - if (kgdb_may_fault) { - kgdb_fault_longjmp(kgdb_fault_jmp_regs); - return NOTIFY_STOP; - } - if (kgdb_handle_exception(args->trapnr, args->signr, args->err, regs)) return NOTIFY_DONE; ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [RFC][PATCH] KGDB: remove kgdb-own fault handling (was: Re: [git pull] x86 arch updates for v2.6.25) 2008-02-08 21:28 ` [RFC][PATCH] KGDB: remove kgdb-own fault handling (was: Re: [git pull] x86 arch updates for v2.6.25) Jan Kiszka @ 2008-02-08 21:58 ` Linus Torvalds 2008-02-08 22:16 ` [RFC][PATCH] KGDB: remove kgdb-own fault handling Jason Wessel 0 siblings, 1 reply; 49+ messages in thread From: Linus Torvalds @ 2008-02-08 21:58 UTC (permalink / raw) To: Jan Kiszka Cc: Andi Kleen, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Jason Wessel On Fri, 8 Feb 2008, Jan Kiszka wrote: > > Well, let's try it this way: Find below a patch against kgdb.git that > removes the special fault handling (this wouldn't be the first feature I > recently removed from kgdb :->). Light testing revealed no obvious > problems yet. That is indeed horrible code. No way will I merge anything that has things like that even in it's *history* (ie somebody needs to re-generate the tree without code like that - some things should not be allowed to exist). That said, while just using "probe_kernel_addr()" is certainly much better, it's still really inefficient. If you actually want to do a "safe memory copy", then the right way to do that is basically to do pagefault_disable(); leftover = __copy_from_user_inatomic(dst, src, count); pagefault_enable(); if (leftover) handle_the_fact_that_the_copy_didnt_complete(); which should even be reasonably efficient and should work in all contexts (hardware interrupts disabled, spinlocks held, you name it). So all those "kgdb_{get|set}_mem()" things seem bogus (they also have insane calling semantics - return NULL or errptr? Why not just return an integer error code? Linus ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [RFC][PATCH] KGDB: remove kgdb-own fault handling 2008-02-08 21:58 ` Linus Torvalds @ 2008-02-08 22:16 ` Jason Wessel 0 siblings, 0 replies; 49+ messages in thread From: Jason Wessel @ 2008-02-08 22:16 UTC (permalink / raw) To: Linus Torvalds Cc: Jan Kiszka, Andi Kleen, Maxim Levitsky, Ingo Molnar, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin Linus Torvalds wrote: > On Fri, 8 Feb 2008, Jan Kiszka wrote: > >> Well, let's try it this way: Find below a patch against kgdb.git that >> removes the special fault handling (this wouldn't be the first feature I >> recently removed from kgdb :->). Light testing revealed no obvious >> problems yet. >> > > That is indeed horrible code. No way will I merge anything that has things > like that even in it's *history* (ie somebody needs to re-generate the > tree without code like that - some things should not be allowed to exist). > > I concur. I will collapse the entire kgdb tree back to the original few patches which can be bisected. > That said, while just using "probe_kernel_addr()" is certainly much > better, it's still really inefficient. If you actually want to do a "safe > memory copy", then the right way to do that is basically to do > > pagefault_disable(); > leftover = __copy_from_user_inatomic(dst, src, count); > pagefault_enable(); > > if (leftover) > handle_the_fact_that_the_copy_didnt_complete(); > > Duly Noted. Further cleanups are in progress. Thanks, Jason. ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-01-30 1:15 [git pull] x86 arch updates for v2.6.25 Ingo Molnar ` (2 preceding siblings ...) 2008-02-05 2:36 ` [git pull] x86 arch updates for v2.6.25 Maxim Levitsky @ 2008-02-09 14:11 ` Amit Shah 2008-02-10 12:30 ` Jiri Kosina 3 siblings, 1 reply; 49+ messages in thread From: Amit Shah @ 2008-02-09 14:11 UTC (permalink / raw) To: Ingo Molnar Cc: Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin On Jan 30, 2008 6:45 AM, Ingo Molnar <mingo@elte.hu> wrote: > - PIE/brk randomization. Not a single regression happened due to this so > far (and it's been in x86.git for months) - it seems exec-shield has > rooted out stuff years ago - but we'll see. Details in the patch. It's > easily revertable in any case. cc503c1b "x86: PIE executable randomization" doesn't boot on my Ubuntu Feisty Fawn Intel Core2 system. I get numerous segfaults before getting a (initramfs) busybox shell. A similar bug was reported much earlier: http://lkml.org/lkml/2007/7/20/421 Sadly, reverting this (or all of the PIE patches) results in a lot of conflicts now with git-revert too failing, mainly in arch/x86/mm/mmap_64.c. -- Amit Shah http://www.amitshah.net/ ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-09 14:11 ` [git pull] x86 arch updates for v2.6.25 Amit Shah @ 2008-02-10 12:30 ` Jiri Kosina 2008-02-12 7:16 ` Amit Shah 0 siblings, 1 reply; 49+ messages in thread From: Jiri Kosina @ 2008-02-10 12:30 UTC (permalink / raw) To: Amit Shah Cc: Ingo Molnar, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Sergey Vlasov On Sat, 9 Feb 2008, Amit Shah wrote: > cc503c1b "x86: PIE executable randomization" doesn't boot on my Ubuntu > Feisty Fawn Intel Core2 system. > I get numerous segfaults before getting a (initramfs) busybox shell. A > similar bug was reported much earlier: [ please, when you experience a problem and are able to identify the commit that triggers it, don't forget to CC the author of the commit in question -- me, in this case ] As far as I remembers, Ubuntu uses klibc in initramfs, right? What version of klibc do you have? There was a bug in klibc that causes such behavior on PIE-randomization-enabled kernels, and has been fixed in klibc-1.45 by commit [1]. Please make sure you have updated klibc version that doesn't contain this bug. [1] http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=10df6dfb13ffefe716f12136bbc667f18ff64744 -- Jiri Kosina ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-10 12:30 ` Jiri Kosina @ 2008-02-12 7:16 ` Amit Shah 2008-02-13 8:56 ` Ingo Molnar 0 siblings, 1 reply; 49+ messages in thread From: Amit Shah @ 2008-02-12 7:16 UTC (permalink / raw) To: Jiri Kosina Cc: Ingo Molnar, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Sergey Vlasov On Feb 10, 2008 6:00 PM, Jiri Kosina <jkosina@suse.cz> wrote: > On Sat, 9 Feb 2008, Amit Shah wrote: > > > cc503c1b "x86: PIE executable randomization" doesn't boot on my Ubuntu > > Feisty Fawn Intel Core2 system. > > I get numerous segfaults before getting a (initramfs) busybox shell. A > > similar bug was reported much earlier: > > [ please, when you experience a problem and are able to identify the > commit that triggers it, don't forget to CC the author of the commit in > question -- me, in this case ] > > As far as I remembers, Ubuntu uses klibc in initramfs, right? > > What version of klibc do you have? There was a bug in klibc that causes > such behavior on PIE-randomization-enabled kernels, and has been fixed in > klibc-1.45 by commit [1]. Please make sure you have updated klibc version > that doesn't contain this bug. Thanks Jiri. > > [1] http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=10df6dfb13ffefe716f12136bbc667f18ff64744 > > -- > Jiri Kosina -- Amit Shah http://www.amitshah.net/ ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-12 7:16 ` Amit Shah @ 2008-02-13 8:56 ` Ingo Molnar 2008-02-13 10:19 ` Amit Shah 0 siblings, 1 reply; 49+ messages in thread From: Ingo Molnar @ 2008-02-13 8:56 UTC (permalink / raw) To: Amit Shah Cc: Jiri Kosina, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Sergey Vlasov * Amit Shah <amitshah@gmx.net> wrote: > > As far as I remembers, Ubuntu uses klibc in initramfs, right? > > > > What version of klibc do you have? There was a bug in klibc that > > causes such behavior on PIE-randomization-enabled kernels, and has > > been fixed in klibc-1.45 by commit [1]. Please make sure you have > > updated klibc version that doesn't contain this bug. > > Thanks Jiri. so your problem was resolved by an updated klibc version? Ingo ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 2008-02-13 8:56 ` Ingo Molnar @ 2008-02-13 10:19 ` Amit Shah 0 siblings, 0 replies; 49+ messages in thread From: Amit Shah @ 2008-02-13 10:19 UTC (permalink / raw) To: Ingo Molnar Cc: Jiri Kosina, Linus Torvalds, linux-kernel, Andrew Morton, Thomas Gleixner, H. Peter Anvin, Sergey Vlasov On Feb 13, 2008 2:26 PM, Ingo Molnar <mingo@elte.hu> wrote: > > * Amit Shah <amitshah@gmx.net> wrote: > > > > As far as I remembers, Ubuntu uses klibc in initramfs, right? > > > > > > What version of klibc do you have? There was a bug in klibc that > > > causes such behavior on PIE-randomization-enabled kernels, and has > > > been fixed in klibc-1.45 by commit [1]. Please make sure you have > > > updated klibc version that doesn't contain this bug. > > > > Thanks Jiri. > > so your problem was resolved by an updated klibc version? Yes, it was. I downloaded the sources from the gutsy repo (which is version 1.5) -- Amit Shah http://www.amitshah.net/ ^ permalink raw reply [flat|nested] 49+ messages in thread
* Re: [git pull] x86 arch updates for v2.6.25 @ 2008-02-06 2:28 David Cullen 0 siblings, 0 replies; 49+ messages in thread From: David Cullen @ 2008-02-06 2:28 UTC (permalink / raw) To: linux-kernel Dear Kernel Maintainers, I am with Phil Oester and Andrew Morton when it comes to getting kgdb into the mainline kernel. I _am_ a full time developer, and when I have to work with Linux kernel code, kgdb makes things a lot easier. I work on many different platforms, with many different operating systems, and there just is not enough time in the day to learn every line of every version of the kernel. kgdb allows me to get in, see what I need, and get out. That being said, if kgdb _does_ become mainline, and people are able to get more visibility into how the kernel works in real time, you will probably see more exploits. This may be the secret reason for reluctance by the powers on high. CC me if you want me to see your reply as I am not on the list. -- Thank you, David Cullen dcullen7@kerneldriver.org ^ permalink raw reply [flat|nested] 49+ messages in thread
end of thread, other threads:[~2008-02-13 10:19 UTC | newest] Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-01-30 1:15 [git pull] x86 arch updates for v2.6.25 Ingo Molnar 2008-01-31 0:33 ` x86 arch updates also broke s390 Adrian Bunk 2008-01-31 9:34 ` Martin Schwidefsky 2008-01-31 10:24 ` Ingo Molnar 2008-01-31 12:37 ` Nick Piggin 2008-02-01 9:48 ` Ingo Molnar 2008-02-01 9:52 ` Ingo Molnar 2008-02-01 9:54 ` Martin Schwidefsky 2008-02-01 10:02 ` Ingo Molnar 2008-01-31 15:57 ` [git pull] x86 arch updates for v2.6.25 Adrian Bunk 2008-01-31 16:00 ` Ingo Molnar 2008-01-31 16:04 ` Ingo Molnar 2008-01-31 16:12 ` Adrian Bunk 2008-01-31 16:15 ` Ingo Molnar 2008-01-31 16:21 ` WANG Cong 2008-01-31 16:24 ` Adrian Bunk 2008-01-31 16:46 ` Ingo Molnar 2008-01-31 16:52 ` Jeremy Fitzhardinge 2008-01-31 16:29 ` sparc compile error caused by x86 arch updates Adrian Bunk 2008-01-31 16:50 ` Jeremy Fitzhardinge 2008-01-31 17:43 ` Ingo Molnar 2008-01-31 17:55 ` Jeremy Fitzhardinge 2008-01-31 18:21 ` Adrian Bunk 2008-01-31 18:38 ` Ingo Molnar 2008-02-05 2:36 ` [git pull] x86 arch updates for v2.6.25 Maxim Levitsky 2008-02-05 3:27 ` Linus Torvalds 2008-02-05 4:11 ` Phil Oester 2008-02-05 4:54 ` Andrew Morton 2008-02-06 12:08 ` Jan Kiszka 2008-02-07 20:00 ` Daniel Phillips 2008-02-08 4:48 ` Christoph Hellwig 2008-02-08 9:51 ` Jan Kiszka 2008-02-05 17:45 ` John Stoffel 2008-02-05 17:52 ` H. Peter Anvin 2008-02-08 18:24 ` Bernhard Kaindl 2008-02-08 19:38 ` remote DMA via FireWire (was Re: [git pull] x86 arch updates for v2.6.25) Stefan Richter 2008-02-07 19:20 ` [git pull] x86 arch updates for v2.6.25 Daniel Phillips 2008-02-08 17:00 ` Andi Kleen 2008-02-08 17:48 ` Jan Kiszka 2008-02-08 18:57 ` Andi Kleen 2008-02-08 21:28 ` [RFC][PATCH] KGDB: remove kgdb-own fault handling (was: Re: [git pull] x86 arch updates for v2.6.25) Jan Kiszka 2008-02-08 21:58 ` Linus Torvalds 2008-02-08 22:16 ` [RFC][PATCH] KGDB: remove kgdb-own fault handling Jason Wessel 2008-02-09 14:11 ` [git pull] x86 arch updates for v2.6.25 Amit Shah 2008-02-10 12:30 ` Jiri Kosina 2008-02-12 7:16 ` Amit Shah 2008-02-13 8:56 ` Ingo Molnar 2008-02-13 10:19 ` Amit Shah 2008-02-06 2:28 David Cullen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).