diff options
| -rw-r--r-- | Documentation/kernel-parameters.txt | 5 | ||||
| -rw-r--r-- | arch/x86/kernel/head.c | 53 | ||||
| -rw-r--r-- | arch/x86/kernel/head_64.S | 4 | ||||
| -rw-r--r-- | arch/x86/platform/efi/efi.c | 2 | ||||
| -rw-r--r-- | drivers/acpi/Kconfig | 3 |
5 files changed, 44 insertions, 23 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 1da946548772..e567af39ee34 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -564,6 +564,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 564 | UART at the specified I/O port or MMIO address, | 564 | UART at the specified I/O port or MMIO address, |
| 565 | switching to the matching ttyS device later. The | 565 | switching to the matching ttyS device later. The |
| 566 | options are the same as for ttyS, above. | 566 | options are the same as for ttyS, above. |
| 567 | hvc<n> Use the hypervisor console device <n>. This is for | ||
| 568 | both Xen and PowerPC hypervisors. | ||
| 567 | 569 | ||
| 568 | If the device connected to the port is not a TTY but a braille | 570 | If the device connected to the port is not a TTY but a braille |
| 569 | device, prepend "brl," before the device type, for instance | 571 | device, prepend "brl," before the device type, for instance |
| @@ -757,6 +759,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 757 | 759 | ||
| 758 | earlyprintk= [X86,SH,BLACKFIN] | 760 | earlyprintk= [X86,SH,BLACKFIN] |
| 759 | earlyprintk=vga | 761 | earlyprintk=vga |
| 762 | earlyprintk=xen | ||
| 760 | earlyprintk=serial[,ttySn[,baudrate]] | 763 | earlyprintk=serial[,ttySn[,baudrate]] |
| 761 | earlyprintk=ttySn[,baudrate] | 764 | earlyprintk=ttySn[,baudrate] |
| 762 | earlyprintk=dbgp[debugController#] | 765 | earlyprintk=dbgp[debugController#] |
| @@ -774,6 +777,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
| 774 | The VGA output is eventually overwritten by the real | 777 | The VGA output is eventually overwritten by the real |
| 775 | console. | 778 | console. |
| 776 | 779 | ||
| 780 | The xen output can only be used by Xen PV guests. | ||
| 781 | |||
| 777 | ekgdboc= [X86,KGDB] Allow early kernel console debugging | 782 | ekgdboc= [X86,KGDB] Allow early kernel console debugging |
| 778 | ekgdboc=kbd | 783 | ekgdboc=kbd |
| 779 | 784 | ||
diff --git a/arch/x86/kernel/head.c b/arch/x86/kernel/head.c index 48d9d4ea1020..992f442ca155 100644 --- a/arch/x86/kernel/head.c +++ b/arch/x86/kernel/head.c | |||
| @@ -5,8 +5,6 @@ | |||
| 5 | #include <asm/setup.h> | 5 | #include <asm/setup.h> |
| 6 | #include <asm/bios_ebda.h> | 6 | #include <asm/bios_ebda.h> |
| 7 | 7 | ||
| 8 | #define BIOS_LOWMEM_KILOBYTES 0x413 | ||
| 9 | |||
| 10 | /* | 8 | /* |
| 11 | * The BIOS places the EBDA/XBDA at the top of conventional | 9 | * The BIOS places the EBDA/XBDA at the top of conventional |
| 12 | * memory, and usually decreases the reported amount of | 10 | * memory, and usually decreases the reported amount of |
| @@ -16,17 +14,30 @@ | |||
| 16 | * chipset: reserve a page before VGA to prevent PCI prefetch | 14 | * chipset: reserve a page before VGA to prevent PCI prefetch |
| 17 | * into it (errata #56). Usually the page is reserved anyways, | 15 | * into it (errata #56). Usually the page is reserved anyways, |
| 18 | * unless you have no PS/2 mouse plugged in. | 16 | * unless you have no PS/2 mouse plugged in. |
| 17 | * | ||
| 18 | * This functions is deliberately very conservative. Losing | ||
| 19 | * memory in the bottom megabyte is rarely a problem, as long | ||
| 20 | * as we have enough memory to install the trampoline. Using | ||
| 21 | * memory that is in use by the BIOS or by some DMA device | ||
| 22 | * the BIOS didn't shut down *is* a big problem. | ||
| 19 | */ | 23 | */ |
| 24 | |||
| 25 | #define BIOS_LOWMEM_KILOBYTES 0x413 | ||
| 26 | #define LOWMEM_CAP 0x9f000U /* Absolute maximum */ | ||
| 27 | #define INSANE_CUTOFF 0x20000U /* Less than this = insane */ | ||
| 28 | |||
| 20 | void __init reserve_ebda_region(void) | 29 | void __init reserve_ebda_region(void) |
| 21 | { | 30 | { |
| 22 | unsigned int lowmem, ebda_addr; | 31 | unsigned int lowmem, ebda_addr; |
| 23 | 32 | ||
| 24 | /* To determine the position of the EBDA and the */ | 33 | /* |
| 25 | /* end of conventional memory, we need to look at */ | 34 | * To determine the position of the EBDA and the |
| 26 | /* the BIOS data area. In a paravirtual environment */ | 35 | * end of conventional memory, we need to look at |
| 27 | /* that area is absent. We'll just have to assume */ | 36 | * the BIOS data area. In a paravirtual environment |
| 28 | /* that the paravirt case can handle memory setup */ | 37 | * that area is absent. We'll just have to assume |
| 29 | /* correctly, without our help. */ | 38 | * that the paravirt case can handle memory setup |
| 39 | * correctly, without our help. | ||
| 40 | */ | ||
| 30 | if (paravirt_enabled()) | 41 | if (paravirt_enabled()) |
| 31 | return; | 42 | return; |
| 32 | 43 | ||
| @@ -37,19 +48,23 @@ void __init reserve_ebda_region(void) | |||
| 37 | /* start of EBDA area */ | 48 | /* start of EBDA area */ |
| 38 | ebda_addr = get_bios_ebda(); | 49 | ebda_addr = get_bios_ebda(); |
| 39 | 50 | ||
| 40 | /* Fixup: bios puts an EBDA in the top 64K segment */ | 51 | /* |
| 41 | /* of conventional memory, but does not adjust lowmem. */ | 52 | * Note: some old Dells seem to need 4k EBDA without |
| 42 | if ((lowmem - ebda_addr) <= 0x10000) | 53 | * reporting so, so just consider the memory above 0x9f000 |
| 43 | lowmem = ebda_addr; | 54 | * to be off limits (bugzilla 2990). |
| 55 | */ | ||
| 56 | |||
| 57 | /* If the EBDA address is below 128K, assume it is bogus */ | ||
| 58 | if (ebda_addr < INSANE_CUTOFF) | ||
| 59 | ebda_addr = LOWMEM_CAP; | ||
| 44 | 60 | ||
| 45 | /* Fixup: bios does not report an EBDA at all. */ | 61 | /* If lowmem is less than 128K, assume it is bogus */ |
| 46 | /* Some old Dells seem to need 4k anyhow (bugzilla 2990) */ | 62 | if (lowmem < INSANE_CUTOFF) |
| 47 | if ((ebda_addr == 0) && (lowmem >= 0x9f000)) | 63 | lowmem = LOWMEM_CAP; |
| 48 | lowmem = 0x9f000; | ||
| 49 | 64 | ||
| 50 | /* Paranoia: should never happen, but... */ | 65 | /* Use the lower of the lowmem and EBDA markers as the cutoff */ |
| 51 | if ((lowmem == 0) || (lowmem >= 0x100000)) | 66 | lowmem = min(lowmem, ebda_addr); |
| 52 | lowmem = 0x9f000; | 67 | lowmem = min(lowmem, LOWMEM_CAP); /* Absolute cap */ |
| 53 | 68 | ||
| 54 | /* reserve all memory between lowmem and the 1MB mark */ | 69 | /* reserve all memory between lowmem and the 1MB mark */ |
| 55 | memblock_reserve(lowmem, 0x100000 - lowmem); | 70 | memblock_reserve(lowmem, 0x100000 - lowmem); |
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index b7de3b25adb5..6859e9626442 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S | |||
| @@ -48,7 +48,7 @@ L3_START_KERNEL = pud_index(__START_KERNEL_map) | |||
| 48 | .globl startup_64 | 48 | .globl startup_64 |
| 49 | startup_64: | 49 | startup_64: |
| 50 | /* | 50 | /* |
| 51 | * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 1, | 51 | * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 0, |
| 52 | * and someone has loaded an identity mapped page table | 52 | * and someone has loaded an identity mapped page table |
| 53 | * for us. These identity mapped page tables map all of the | 53 | * for us. These identity mapped page tables map all of the |
| 54 | * kernel pages and possibly all of memory. | 54 | * kernel pages and possibly all of memory. |
| @@ -159,7 +159,7 @@ startup_64: | |||
| 159 | jmp 1f | 159 | jmp 1f |
| 160 | ENTRY(secondary_startup_64) | 160 | ENTRY(secondary_startup_64) |
| 161 | /* | 161 | /* |
| 162 | * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 1, | 162 | * At this point the CPU runs in 64bit mode CS.L = 1 CS.D = 0, |
| 163 | * and someone has loaded a mapped page table. | 163 | * and someone has loaded a mapped page table. |
| 164 | * | 164 | * |
| 165 | * %rsi holds a physical pointer to real_mode_data. | 165 | * %rsi holds a physical pointer to real_mode_data. |
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index 2f81db40d7ca..5ae99f9160d9 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c | |||
| @@ -85,7 +85,7 @@ int efi_enabled(int facility) | |||
| 85 | } | 85 | } |
| 86 | EXPORT_SYMBOL(efi_enabled); | 86 | EXPORT_SYMBOL(efi_enabled); |
| 87 | 87 | ||
| 88 | static bool disable_runtime = false; | 88 | static bool __initdata disable_runtime = false; |
| 89 | static int __init setup_noefi(char *arg) | 89 | static int __init setup_noefi(char *arg) |
| 90 | { | 90 | { |
| 91 | disable_runtime = true; | 91 | disable_runtime = true; |
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 320006019e68..92ed9692c47e 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig | |||
| @@ -266,7 +266,8 @@ config ACPI_CUSTOM_DSDT | |||
| 266 | default ACPI_CUSTOM_DSDT_FILE != "" | 266 | default ACPI_CUSTOM_DSDT_FILE != "" |
| 267 | 267 | ||
| 268 | config ACPI_INITRD_TABLE_OVERRIDE | 268 | config ACPI_INITRD_TABLE_OVERRIDE |
| 269 | bool "ACPI tables can be passed via uncompressed cpio in initrd" | 269 | bool "ACPI tables override via initrd" |
| 270 | depends on BLK_DEV_INITRD && X86 | ||
| 270 | default n | 271 | default n |
| 271 | help | 272 | help |
| 272 | This option provides functionality to override arbitrary ACPI tables | 273 | This option provides functionality to override arbitrary ACPI tables |
