11 Jul, 2008

14 commits


10 Jul, 2008

4 commits


09 Jul, 2008

22 commits

  • Introduce generic C routine for handling necessary tail operations after
    protection fault in copy_*_user on x86.

    Signed-off-by: Vitaly Mayatskikh
    Acked-by: Linus Torvalds
    Signed-off-by: Ingo Molnar

    Vitaly Mayatskikh
     
  • Ingo Molnar
     
  • Ingo Molnar
     
  • The problems are that, with the ACPI vs timer overring issue _fixed_,
    after using the box for some time (between several seconds and 1 hour, at
    random) processes get very high CPU loads (once I've got X using 107% of
    the CPU, for example) and the system becomes unresponsive, as though there
    were interrupts lost or something similar.

    Andreas Herrman reproduced similar problems:

    > Ok, now I've reproduced the stability problem.
    > - Using tip/master,
    > - reverting e38502eb8aa82314d5ab0eba45f50e6790dadd88 and
    > - applying your patch from this posting
    > http://marc.info/?l=linux-kernel&m=121539354224562&w=4
    >
    > Starting X, firefox, gimp, tuxpaint and doing some drawing in tuxpaint
    > results in a slow system. Drawing is almost not possible anymore --
    > Selections of new colors, cursors etc. is performed with huge delay
    > if it's performed at all.
    >
    > BTW, the code sets up timer IRQ as Virtual Wire IRQ:
    >
    > Jul 8 14:57:58 kodscha IO-APIC (apicid-pin) 2-22, 2-23 not connected.
    > Jul 8 14:57:58 kodscha ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
    > Jul 8 14:57:58 kodscha ...trying to set up timer as Virtual Wire IRQ... works.
    >
    > and both INT0 and INT2 of IOAPIC are masked:
    >
    > Jul 8 14:57:58 kodscha NR Dst Mask Trig IRR Pol Stat Dmod Deli Vect:
    > Jul 8 14:57:58 kodscha 00 000 1 0 0 0 0 0 0 00
    > Jul 8 14:57:58 kodscha 01 003 0 0 0 0 0 1 1 31
    > Jul 8 14:57:58 kodscha 02 003 1 0 0 0 0 0 0 30
    >
    > I've also seen strange CPU utilization -- with syslog-ng:
    >
    > top - 15:33:06 up 35 min, 4 users, load average: 1.70, 0.68, 0.37
    > Tasks: 64 total, 4 running, 60 sleeping, 0 stopped, 0 zombie
    > Cpu0 : 0.0%us,100.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    > Cpu1 : 6.4%us, 87.2%sy, 0.0%ni, 5.8%id, 0.0%wa, 0.6%hi, 0.0%si, 0.0%st
    > Mem: 895384k total, 283568k used, 611816k free, 35492k buffers
    > Swap: 1959920k total, 0k used, 1959920k free, 163044k cached
    >
    > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    > 4632 root 20 0 17216 800 580 S 104 0.1 0:34.22 syslog-ng
    > 28505 root 20 0 205m 11m 4024 S 6 1.3 0:21.16 X
    > 28518 root 20 0 56292 5652 4492 S 1 0.6 0:01.80 fluxbox
    > 1 root 20 0 3724 608 508 S 0 0.1 0:00.36 init
    >
    > So far I have no clue why C1E-idle in conjunction with virtual wire
    > mode causes this strange behaviour.
    >
    > ... and I start to think about the root cause of all this.
    >
    > I've performed similar tests under X with the IRQ0/INT0 configuration and
    > I did not see above symptoms.

    So lets fall back to the IRQ0/INT0 configuration on this box.

    This basically restores the dont-use-the-lapic-timer exception mechanism
    that was unconditional on this box prior commit 8750bf5 ("x86: add C1E
    aware idle function").

    Signed-off-by: Ingo Molnar

    Rafael J. Wysocki
     
  • Hmm, looks like it would be nice to have more cleanups of iommu.h and
    gart.h.

    Signed-off-by: FUJITA Tomonori
    Signed-off-by: Ingo Molnar

    FUJITA Tomonori
     
  • When system have 4g less ram installed, and acpi table sit
    near end of ram, make max_pfn cover them too,
    so 64bit kernel don't need to mess up fixmap.

    Signed-off-by: Yinghai Lu
    Cc: "Suresh Siddha"
    Signed-off-by: Ingo Molnar

    Yinghai Lu
     
  • Remove them from the arch-specific file.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • x86_64 does not need it, but it won't have X86_INTEL_USERCOPY
    defined either.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • We also carry the unaligned version with us. Only x86_64 uses
    it, but there's no problem in defining it.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Move both versions, which are highly similar, to uaccess.h.
    Note that, for x86_64, X86_WP_WORKS_OK is always defined.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • We also check user pointer in x86_64 put_user, the way i386 does.

    In a separate patch for bisecting purposes.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • For both __put_user_x and __put_user_8 macros, pass the error
    variable explicitly.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Move __get_user_asm and __get_user_size and __get_user_nocheck
    to uaccess.h. This requires us to define a macro at __get_user_size
    for the 64-bit access case.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Let the user of the macro specify the desired return.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Move both __put_user_asm and __put_user_size to
    uaccess.h. i386 already had a special function for 64-bit access,
    so for x86_64, we just define a macro with the same name.
    Note that for X86_64, CONFIG_X86_WP_WORKS_OK will always
    be defined, so the #else part will never be even compiled in.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Let the user of the macro specify the desired return.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Do it in a separate patch for bisectability.
    Goal is to have put_user_size integrated.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Take it out of uaccess_32.h. Since it seems that no users
    of the x86_64 exists, we simply pick the i386 version.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Merge versions of getuser from uaccess_32.h and uaccess_64.h into
    uaccess.h. There is a part which is 64-bit only (for now), and for
    that, we use a __get_user_8 macro.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Common parts of uaccess_32.h and uaccess_64.h
    are put in uaccess.h. Bits in uaccess_32.h and
    uaccess_64.h that come to this file are equal
    except for comments and whitespaces differences.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Using explicit hexa (0xFFFFFFUL) introduces an unnecessary difference
    between i386 and x86_64 because of the size of their long. Use -1UL instead.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa
     
  • Do not refer to the processor word-size with int, as it won't
    work with x86_64. Use long instead.

    Signed-off-by: Glauber Costa
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Glauber Costa