11 Jul, 2008
14 commits
-
NR_IRQS: let VISWS be just a sub-case of the generic code.
This can create a somewhat larger irq_desc[] array if NR_CPUS is high
but that should not worry VisWS which has 4 CPUs at most.Signed-off-by: Ingo Molnar
-
use the generic version of setup_arch.h - it's the same.
Signed-off-by: Ingo Molnar
-
move the SGIVW definitions from setup_arch.h into its own header file.
preparation for turning VISWS into a generic PC architecture.
Signed-off-by: Ingo Molnar
-
move the include/asm-x86/mach-visws/ VISWS specific hardware
details include files into include/asm-x86/visws, to be used from
generic code.No code changed.
Signed-off-by: Ingo Molnar
-
Signed-off-by: Ingo Molnar
-
update asm-x86/mach-visws/mach_apicdef.h to the generic version.
This should work fine as VISWS has a standard local APIC and thus
its mach_apicdef.h copy is just an ancient version of the generic code.Signed-off-by: Ingo Molnar
-
now that include/asm-x86/mach-visws/smpboot_hooks.h equals
to the default file in ../mach-default/smpboot_hooks.h, simply
include it instead of maintaining a copy.Signed-off-by: Ingo Molnar
-
update include/asm-x86/mach-visws/smpboot_hooks.h to
include/asm-x86/mach-default/smpboot_hooks.h (the generic version).this _should_ work, because VISWS sets skip_ioapic_setup, but it
should be tested on a real VISWS to make sure.Signed-off-by: Ingo Molnar
-
Allow the generic smpboot quirks code to be built with
ONFIG_X86_IO_APIC disabled. This way VISWS will be able
to use it as-is.Signed-off-by: Ingo Molnar
-
now that include/asm-x86/mach-visws/mach_apic.h equals
to include/asm-x86/mach-default/mach_apic.h, simply start
using the generic one.Signed-off-by: Ingo Molnar
-
update asm-x86/mach-visws/mach_apic.h to the generic version.
Signed-off-by: Ingo Molnar
-
Signed-off-by: Ingo Molnar
-
Add early quirks support.
In preparation of enabling the generic architecture to boot on a VISWS.
This will allow us to remove the VISWS subarch and all its complications.
Signed-off-by: Ingo Molnar
10 Jul, 2008
4 commits
-
This remove lots of duplications in iommu.h and gart.h.
The end result of this patch is:
- iommu.h is a header file for everyone related with IOMMUs.
- gart.h is the private header file. Only pci-gart_64.c and its friends
include it.Signed-off-by: FUJITA Tomonori
Cc: fujita.tomonori@lab.ntt.co.jp
Signed-off-by: Ingo Molnar -
and let 64-bit to fall back to use fixmap too.
Signed-off-by: Yinghai Lu
Cc: Suresh Siddha
Signed-off-by: Ingo Molnar -
fix:
arch/x86/kernel/built-in.o: In function `dmi_ignore_irq0_timer_override':
boot.c:(.init.text+0x3ea4): undefined reference to `force_mask_ioapic_irq_2'Signed-off-by: Ingo Molnar
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 -
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
-
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 -
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 -
Remove them from the arch-specific file.
Signed-off-by: Glauber Costa
Signed-off-by: H. Peter Anvin
Signed-off-by: Ingo Molnar -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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