diff options
author | Jaroslav Kysela <perex@suse.cz> | 2005-01-04 10:52:25 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-01-04 10:52:25 +0100 |
commit | 601e4fa5668352afecb8ff676262fed8ea364267 (patch) | |
tree | 5a22631c3a7bfc710a9199fc08d0cb1c8deaec9e /Documentation | |
parent | 3831763c45cf907375f656302082cd73332cc2da (diff) | |
parent | 1acbef74137860dbe3099e4ea616edbc062f5942 (diff) | |
download | history-601e4fa5668352afecb8ff676262fed8ea364267.tar.gz |
Merge suse.cz:/home/perex/bk/linux-sound/linux-sound
into suse.cz:/home/perex/bk/linux-sound/work
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/i386/boot.txt | 3 | ||||
-rw-r--r-- | Documentation/i386/zero-page.txt | 4 | ||||
-rw-r--r-- | Documentation/kernel-parameters.txt | 5 | ||||
-rw-r--r-- | Documentation/powerpc/00-INDEX | 3 | ||||
-rw-r--r-- | Documentation/powerpc/cpu_features.txt | 56 |
5 files changed, 71 insertions, 0 deletions
diff --git a/Documentation/i386/boot.txt b/Documentation/i386/boot.txt index afa6d1299d5395..1c48f0eba6fb79 100644 --- a/Documentation/i386/boot.txt +++ b/Documentation/i386/boot.txt @@ -173,6 +173,9 @@ filled out, however: 2 bootsect-loader 3 SYSLINUX 4 EtherBoot + 5 ELILO + 7 GRuB + 8 U-BOOT Please contact <hpa@zytor.com> if you need a bootloader ID value assigned. diff --git a/Documentation/i386/zero-page.txt b/Documentation/i386/zero-page.txt index 30badb4e39f5e9..67c053a099ed42 100644 --- a/Documentation/i386/zero-page.txt +++ b/Documentation/i386/zero-page.txt @@ -74,6 +74,10 @@ Offset Type Description 0x21c unsigned long INITRD_SIZE, size in bytes of ramdisk image 0x220 4 bytes (setup.S) 0x224 unsigned short setup.S heap end pointer +0x226 unsigned short zero_pad +0x228 unsigned long cmd_line_ptr +0x22c unsigned long ramdisk_max +0x230 16 bytes trampoline 0x290 - 0x2cf EDD_MBR_SIG_BUFFER (edd.S) 0x2d0 - 0x600 E820MAP 0x600 - 0x7ff EDDBUF (edd.S) for disk signature read sector diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index ed2fbf2da775ef..9fe116a508537c 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -50,6 +50,7 @@ restrictions referred to are that the relevant option is valid if: MOUSE Appropriate mouse support is enabled. MTD MTD support is enabled. NET Appropriate network support is enabled. + NUMA NUMA support is enabled. NFS Appropriate NFS support is enabled. OSS OSS sound support is enabled. PARIDE The ParIDE subsystem is enabled. @@ -476,6 +477,10 @@ running once the system is up. gvp11= [HW,SCSI] + hashdist= [KNL,NUMA] Large hashes allocated during boot + are distributed across NUMA nodes. Defaults on + for IA-64, off otherwise. + hcl= [IA-64] SGI's Hardware Graph compatibility layer hd= [EIDE] (E)IDE hard drive subsystem geometry diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX index 2a46c07a84a99e..e7bea0a407b4d5 100644 --- a/Documentation/powerpc/00-INDEX +++ b/Documentation/powerpc/00-INDEX @@ -5,6 +5,9 @@ please mail me. 00-INDEX - this file +cpu_features.txt + - info on how we support a variety of CPUs with minimal compile-time + options. ppc_htab.txt - info about the Linux/PPC /proc/ppc_htab entry smp.txt diff --git a/Documentation/powerpc/cpu_features.txt b/Documentation/powerpc/cpu_features.txt new file mode 100644 index 00000000000000..472739880e87a9 --- /dev/null +++ b/Documentation/powerpc/cpu_features.txt @@ -0,0 +1,56 @@ +Hollis Blanchard <hollis@austin.ibm.com> +5 Jun 2002 + +This document describes the system (including self-modifying code) used in the +PPC Linux kernel to support a variety of PowerPC CPUs without requiring +compile-time selection. + +Early in the boot process the ppc32 kernel detects the current CPU type and +chooses a set of features accordingly. Some examples include Altivec support, +split instruction and data caches, and if the CPU supports the DOZE and NAP +sleep modes. + +Detection of the feature set is simple. A list of processors can be found in +arch/ppc/kernel/cputable.c. The PVR register is masked and compared with each +value in the list. If a match is found, the cpu_features of cur_cpu_spec is +assigned to the feature bitmask for this processor and a __setup_cpu function +is called. + +C code may test 'cur_cpu_spec[smp_processor_id()]->cpu_features' for a +particular feature bit. This is done in quite a few places, for example +in ppc_setup_l2cr(). + +Implementing cpufeatures in assembly is a little more involved. There are +several paths that are performance-critical and would suffer if an array +index, structure dereference, and conditional branch were added. To avoid the +performance penalty but still allow for runtime (rather than compile-time) CPU +selection, unused code is replaced by 'nop' instructions. This nop'ing is +based on CPU 0's capabilities, so a multi-processor system with non-identical +processors will not work (but such a system would likely have other problems +anyways). + +After detecting the processor type, the kernel patches out sections of code +that shouldn't be used by writing nop's over it. Using cpufeatures requires +just 2 macros (found in include/asm-ppc/cputable.h), as seen in head.S +transfer_to_handler: + + #ifdef CONFIG_ALTIVEC + BEGIN_FTR_SECTION + mfspr r22,SPRN_VRSAVE /* if G4, save vrsave register value */ + stw r22,THREAD_VRSAVE(r23) + END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) + #endif /* CONFIG_ALTIVEC */ + +If CPU 0 supports Altivec, the code is left untouched. If it doesn't, both +instructions are replaced with nop's. + +The END_FTR_SECTION macro has two simpler variations: END_FTR_SECTION_IFSET +and END_FTR_SECTION_IFCLR. These simply test if a flag is set (in +cur_cpu_spec[0]->cpu_features) or is cleared, respectively. These two macros +should be used in the majority of cases. + +The END_FTR_SECTION macros are implemented by storing information about this +code in the '__ftr_fixup' ELF section. When do_cpu_ftr_fixups +(arch/ppc/kernel/misc.S) is invoked, it will iterate over the records in +__ftr_fixup, and if the required feature is not present it will loop writing +nop's from each BEGIN_FTR_SECTION to END_FTR_SECTION. |