提交 27c5a778 编写于 作者: L Linus Torvalds

Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Ingol Molnar:
 "Misc fixes:

   - EFI crash fix

   - Xen PV fixes

   - do not allow PTI on 2-level 32-bit kernels for now

   - documentation fix"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/APM: Fix build warning when PROC_FS is not enabled
  Revert "x86/mm/legacy: Populate the user page-table with user pgd's"
  x86/efi: Load fixmap GDT in efi_call_phys_epilog() before setting %cr3
  x86/xen: Disable CPU0 hotplug for Xen PV
  x86/EISA: Don't probe EISA bus for Xen PV guests
  x86/doc: Fix Documentation/x86/earlyprintk.txt
...@@ -35,25 +35,25 @@ and two USB cables, connected like this: ...@@ -35,25 +35,25 @@ and two USB cables, connected like this:
( If your system does not list a debug port capability then you probably ( If your system does not list a debug port capability then you probably
won't be able to use the USB debug key. ) won't be able to use the USB debug key. )
b.) You also need a Netchip USB debug cable/key: b.) You also need a NetChip USB debug cable/key:
http://www.plxtech.com/products/NET2000/NET20DC/default.asp http://www.plxtech.com/products/NET2000/NET20DC/default.asp
This is a small blue plastic connector with two USB connections, This is a small blue plastic connector with two USB connections;
it draws power from its USB connections. it draws power from its USB connections.
c.) You need a second client/console system with a high speed USB 2.0 c.) You need a second client/console system with a high speed USB 2.0
port. port.
d.) The Netchip device must be plugged directly into the physical d.) The NetChip device must be plugged directly into the physical
debug port on the "host/target" system. You cannot use a USB hub in debug port on the "host/target" system. You cannot use a USB hub in
between the physical debug port and the "host/target" system. between the physical debug port and the "host/target" system.
The EHCI debug controller is bound to a specific physical USB The EHCI debug controller is bound to a specific physical USB
port and the Netchip device will only work as an early printk port and the NetChip device will only work as an early printk
device in this port. The EHCI host controllers are electrically device in this port. The EHCI host controllers are electrically
wired such that the EHCI debug controller is hooked up to the wired such that the EHCI debug controller is hooked up to the
first physical and there is no way to change this via software. first physical port and there is no way to change this via software.
You can find the physical port through experimentation by trying You can find the physical port through experimentation by trying
each physical port on the system and rebooting. Or you can try each physical port on the system and rebooting. Or you can try
and use lsusb or look at the kernel info messages emitted by the and use lsusb or look at the kernel info messages emitted by the
...@@ -65,9 +65,9 @@ and two USB cables, connected like this: ...@@ -65,9 +65,9 @@ and two USB cables, connected like this:
to the hardware vendor, because there is no reason not to wire to the hardware vendor, because there is no reason not to wire
this port into one of the physically accessible ports. this port into one of the physically accessible ports.
e.) It is also important to note, that many versions of the Netchip e.) It is also important to note, that many versions of the NetChip
device require the "client/console" system to be plugged into the device require the "client/console" system to be plugged into the
right and side of the device (with the product logo facing up and right hand side of the device (with the product logo facing up and
readable left to right). The reason being is that the 5 volt readable left to right). The reason being is that the 5 volt
power supply is taken from only one side of the device and it power supply is taken from only one side of the device and it
must be the side that does not get rebooted. must be the side that does not get rebooted.
...@@ -81,13 +81,18 @@ and two USB cables, connected like this: ...@@ -81,13 +81,18 @@ and two USB cables, connected like this:
CONFIG_EARLY_PRINTK_DBGP=y CONFIG_EARLY_PRINTK_DBGP=y
And you need to add the boot command line: "earlyprintk=dbgp". And you need to add the boot command line: "earlyprintk=dbgp".
(If you are using Grub, append it to the 'kernel' line in (If you are using Grub, append it to the 'kernel' line in
/etc/grub.conf) /etc/grub.conf. If you are using Grub2 on a BIOS firmware system,
append it to the 'linux' line in /boot/grub2/grub.cfg. If you are
using Grub2 on an EFI firmware system, append it to the 'linux'
or 'linuxefi' line in /boot/grub2/grub.cfg or
/boot/efi/EFI/<distro>/grub.cfg.)
On systems with more than one EHCI debug controller you must On systems with more than one EHCI debug controller you must
specify the correct EHCI debug controller number. The ordering specify the correct EHCI debug controller number. The ordering
comes from the PCI bus enumeration of the EHCI controllers. The comes from the PCI bus enumeration of the EHCI controllers. The
default with no number argument is "0" the first EHCI debug default with no number argument is "0" or the first EHCI debug
controller. To use the second EHCI debug controller, you would controller. To use the second EHCI debug controller, you would
use the command line: "earlyprintk=dbgp1" use the command line: "earlyprintk=dbgp1"
...@@ -111,7 +116,7 @@ and two USB cables, connected like this: ...@@ -111,7 +116,7 @@ and two USB cables, connected like this:
see the raw output. see the raw output.
c.) On Nvidia Southbridge based systems: the kernel will try to probe c.) On Nvidia Southbridge based systems: the kernel will try to probe
and find out which port has debug device connected. and find out which port has a debug device connected.
3. Testing that it works fine: 3. Testing that it works fine:
......
...@@ -19,9 +19,6 @@ static inline void native_set_pte(pte_t *ptep , pte_t pte) ...@@ -19,9 +19,6 @@ static inline void native_set_pte(pte_t *ptep , pte_t pte)
static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd) static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
{ {
#ifdef CONFIG_PAGE_TABLE_ISOLATION
pmd.pud.p4d.pgd = pti_set_user_pgtbl(&pmdp->pud.p4d.pgd, pmd.pud.p4d.pgd);
#endif
*pmdp = pmd; *pmdp = pmd;
} }
...@@ -61,9 +58,6 @@ static inline pte_t native_ptep_get_and_clear(pte_t *xp) ...@@ -61,9 +58,6 @@ static inline pte_t native_ptep_get_and_clear(pte_t *xp)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp) static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
{ {
#ifdef CONFIG_PAGE_TABLE_ISOLATION
pti_set_user_pgtbl(&xp->pud.p4d.pgd, __pgd(0));
#endif
return __pmd(xchg((pmdval_t *)xp, 0)); return __pmd(xchg((pmdval_t *)xp, 0));
} }
#else #else
...@@ -73,9 +67,6 @@ static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp) ...@@ -73,9 +67,6 @@ static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
static inline pud_t native_pudp_get_and_clear(pud_t *xp) static inline pud_t native_pudp_get_and_clear(pud_t *xp)
{ {
#ifdef CONFIG_PAGE_TABLE_ISOLATION
pti_set_user_pgtbl(&xp->p4d.pgd, __pgd(0));
#endif
return __pud(xchg((pudval_t *)xp, 0)); return __pud(xchg((pudval_t *)xp, 0));
} }
#else #else
......
...@@ -1640,6 +1640,7 @@ static int do_open(struct inode *inode, struct file *filp) ...@@ -1640,6 +1640,7 @@ static int do_open(struct inode *inode, struct file *filp)
return 0; return 0;
} }
#ifdef CONFIG_PROC_FS
static int proc_apm_show(struct seq_file *m, void *v) static int proc_apm_show(struct seq_file *m, void *v)
{ {
unsigned short bx; unsigned short bx;
...@@ -1719,6 +1720,7 @@ static int proc_apm_show(struct seq_file *m, void *v) ...@@ -1719,6 +1720,7 @@ static int proc_apm_show(struct seq_file *m, void *v)
units); units);
return 0; return 0;
} }
#endif
static int apm(void *unused) static int apm(void *unused)
{ {
......
...@@ -7,11 +7,17 @@ ...@@ -7,11 +7,17 @@
#include <linux/eisa.h> #include <linux/eisa.h>
#include <linux/io.h> #include <linux/io.h>
#include <xen/xen.h>
static __init int eisa_bus_probe(void) static __init int eisa_bus_probe(void)
{ {
void __iomem *p = ioremap(0x0FFFD9, 4); void __iomem *p;
if (xen_pv_domain() && !xen_initial_domain())
return 0;
if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24)) p = ioremap(0x0FFFD9, 4);
if (p && readl(p) == 'E' + ('I' << 8) + ('S' << 16) + ('A' << 24))
EISA_bus = 1; EISA_bus = 1;
iounmap(p); iounmap(p);
return 0; return 0;
......
...@@ -111,8 +111,10 @@ int arch_register_cpu(int num) ...@@ -111,8 +111,10 @@ int arch_register_cpu(int num)
/* /*
* Currently CPU0 is only hotpluggable on Intel platforms. Other * Currently CPU0 is only hotpluggable on Intel platforms. Other
* vendors can add hotplug support later. * vendors can add hotplug support later.
* Xen PV guests don't support CPU0 hotplug at all.
*/ */
if (c->x86_vendor != X86_VENDOR_INTEL) if (c->x86_vendor != X86_VENDOR_INTEL ||
boot_cpu_has(X86_FEATURE_XENPV))
cpu0_hotpluggable = 0; cpu0_hotpluggable = 0;
/* /*
......
...@@ -85,10 +85,9 @@ pgd_t * __init efi_call_phys_prolog(void) ...@@ -85,10 +85,9 @@ pgd_t * __init efi_call_phys_prolog(void)
void __init efi_call_phys_epilog(pgd_t *save_pgd) void __init efi_call_phys_epilog(pgd_t *save_pgd)
{ {
load_fixmap_gdt(0);
load_cr3(save_pgd); load_cr3(save_pgd);
__flush_tlb_all(); __flush_tlb_all();
load_fixmap_gdt(0);
} }
void __init efi_runtime_update_mappings(void) void __init efi_runtime_update_mappings(void)
......
...@@ -57,7 +57,7 @@ config SECURITY_NETWORK ...@@ -57,7 +57,7 @@ config SECURITY_NETWORK
config PAGE_TABLE_ISOLATION config PAGE_TABLE_ISOLATION
bool "Remove the kernel mapping in user mode" bool "Remove the kernel mapping in user mode"
default y default y
depends on X86 && !UML depends on (X86_64 || X86_PAE) && !UML
help help
This feature reduces the number of hardware side channels by This feature reduces the number of hardware side channels by
ensuring that the majority of kernel addresses are not mapped ensuring that the majority of kernel addresses are not mapped
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册