Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf8c0d1d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86: (32 commits)
  x86: fix page_is_ram() thinko
  x86: fix WARN_ON() message: teach page_is_ram() about the special 4Kb bios data page
  x86: i8259A: remove redundant irq_descinitialization
  x86: fix vdso_install breaks user "make install"
  x86: change IO delay back to 0x80
  x86: lds - Use THREAD_SIZE instead of numeric constant
  x86: lds - Use PAGE_SIZE instead of numeric constant
  x86 cleanup: suspend_asm_64.S - use X86_CR4_PGE instead of numeric value
  x86: docs fixes to Documentation/i386/IO-APIC.txt
  x86: fix printout ugliness in cpu info printk
  x86: clean up csum-wrappers_64.c some more
  x86: coding style fixes in arch/x86/lib/csum-wrappers_64.c
  x86: coding style fixes in arch/x86/lib/io_64.c
  x86: exclude vsyscall files from stackprotect
  x86: add pgd_large() on 64-bit, for consistency
  x86: minor cleanup of comments in processor.h
  x86: annotate pci/common.s:pci_scan_bus_with_sysdata with __devinit
  x86: fix section mismatch in head_64.S:initial_code
  x86: fix section mismatch in srat_64.c:reserve_hotadd
  x86: fix section mismatch warning in topology.c:arch_register_cpu
  ...
parents d5c67bac 156fbc3f
Loading
Loading
Loading
Loading
+17 −15
Original line number Diff line number Diff line
Most (all) Intel-MP compliant SMP boards have the so-called 'IO-APIC',
which is an enhanced interrupt controller, it enables us to route
hardware interrupts to multiple CPUs, or to CPU groups.
which is an enhanced interrupt controller. It enables us to route
hardware interrupts to multiple CPUs, or to CPU groups. Without an
IO-APIC, interrupts from hardware will be delivered only to the
CPU which boots the operating system (usually CPU#0).

Linux supports all variants of compliant SMP boards, including ones with
multiple IO-APICs. (multiple IO-APICs are used in high-end servers to
distribute IRQ load further).
multiple IO-APICs. Multiple IO-APICs are used in high-end servers to
distribute IRQ load further.

There are (a few) known breakages in certain older boards, which bugs are
There are (a few) known breakages in certain older boards, such bugs are
usually worked around by the kernel. If your MP-compliant SMP board does
not boot Linux, then consult the linux-smp mailing list archives first.

@@ -28,18 +30,18 @@ If your box boots fine with enabled IO-APIC IRQs, then your
  hell:~>
  <----------------------------

some interrupts are still listed as 'XT PIC', but this is not a problem,
Some interrupts are still listed as 'XT PIC', but this is not a problem;
none of those IRQ sources is performance-critical.


in the unlikely case that your board does not create a working mp-table,
In the unlikely case that your board does not create a working mp-table,
you can use the pirq= boot parameter to 'hand-construct' IRQ entries. This
is nontrivial though and cannot be automated. One sample /etc/lilo.conf
is non-trivial though and cannot be automated. One sample /etc/lilo.conf
entry:

	append="pirq=15,11,10"

the actual numbers depend on your system, on your PCI cards and on their
The actual numbers depend on your system, on your PCI cards and on their
PCI slot position. Usually PCI slots are 'daisy chained' before they are
connected to the PCI chipset IRQ routing facility (the incoming PIRQ1-4
lines):
@@ -54,7 +56,7 @@ lines):
     PIRQ1 ----| |-  `----| |-  `----| |-  `----| |--------| |
               `-'        `-'        `-'        `-'        `-'

every PCI card emits a PCI IRQ, which can be INTA,INTB,INTC,INTD:
Every PCI card emits a PCI IRQ, which can be INTA, INTB, INTC or INTD:

                               ,-.
                         INTD--| |
@@ -95,21 +97,21 @@ card (IRQ11) in Slot3, and have Slot1 empty:
[value '0' is a generic 'placeholder', reserved for empty (or non-IRQ emitting)
slots.]

generally, it's always possible to find out the correct pirq= settings, just
Generally, it's always possible to find out the correct pirq= settings, just
permute all IRQ numbers properly ... it will take some time though. An
'incorrect' pirq line will cause the booting process to hang, or a device
won't function properly (if it's inserted as eg. a module).
won't function properly (e.g. if it's inserted as a module).

If you have 2 PCI buses, then you can use up to 8 pirq values. Although such
If you have 2 PCI buses, then you can use up to 8 pirq values, although such
boards tend to have a good configuration.

Be prepared that it might happen that you need some strange pirq line:

	append="pirq=0,0,0,0,0,0,9,11"

use smart try-and-err techniques to find out the correct pirq line ...
Use smart trial-and-error techniques to find out the correct pirq line ...

good luck and mail to linux-smp@vger.kernel.org or
Good luck and mail to linux-smp@vger.kernel.org or
linux-kernel@vger.kernel.org if you have any problems that are not covered
by this document.

+0 −2
Original line number Diff line number Diff line
@@ -1056,8 +1056,6 @@ and is between 256 and 4096 characters. It is defined in the file
			[SCSI] Maximum number of LUNs received.
			Should be between 1 and 16384.

	mca-pentium	[BUGS=X86-32]

	mcatest=	[IA-64]

	mce		[X86-32] Machine Check Exception
+1 −1
Original line number Diff line number Diff line
@@ -176,7 +176,7 @@ define archhelp
  @echo '  *_defconfig     - Select default config from arch/$(ARCH)/configs'
endef

install: vdso_install
install:
	$(Q)$(MAKE) $(build)=$(boot) install

vdso_install:
+1 −1
Original line number Diff line number Diff line
@@ -156,7 +156,7 @@ config IO_DELAY_TYPE_NONE

choice
	prompt "IO delay type"
	default IO_DELAY_0XED
	default IO_DELAY_0X80

config IO_DELAY_0X80
	bool "port 0x80 based port-IO delay [recommended]"
+1 −1
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ zdisk bzdisk: vmlinux
fdimage fdimage144 fdimage288 isoimage: vmlinux
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@

install: vdso_install
install:
	$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install

PHONY += vdso_install
Loading