diff options
Diffstat (limited to 'arch/x86/platform')
| -rw-r--r-- | arch/x86/platform/efi/efi_64.c | 7 | ||||
| -rw-r--r-- | arch/x86/platform/efi/quirks.c | 13 | ||||
| -rw-r--r-- | arch/x86/platform/intel-mid/device_libs/platform_bt.c | 2 | ||||
| -rw-r--r-- | arch/x86/platform/uv/tlb_uv.c | 2 | ||||
| -rw-r--r-- | arch/x86/platform/uv/uv_irq.c | 2 | ||||
| -rw-r--r-- | arch/x86/platform/uv/uv_nmi.c | 4 | 
6 files changed, 23 insertions, 7 deletions
diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c index 6a151ce70e86..2dd15e967c3f 100644 --- a/arch/x86/platform/efi/efi_64.c +++ b/arch/x86/platform/efi/efi_64.c @@ -135,7 +135,9 @@ pgd_t * __init efi_call_phys_prolog(void)  				pud[j] = *pud_offset(p4d_k, vaddr);  			}  		} +		pgd_offset_k(pgd * PGDIR_SIZE)->pgd &= ~_PAGE_NX;  	} +  out:  	__flush_tlb_all(); @@ -196,6 +198,9 @@ static pgd_t *efi_pgd;   * because we want to avoid inserting EFI region mappings (EFI_VA_END   * to EFI_VA_START) into the standard kernel page tables. Everything   * else can be shared, see efi_sync_low_kernel_mappings(). + * + * We don't want the pgd on the pgd_list and cannot use pgd_alloc() for the + * allocation.   */  int __init efi_alloc_page_tables(void)  { @@ -208,7 +213,7 @@ int __init efi_alloc_page_tables(void)  		return 0;  	gfp_mask = GFP_KERNEL | __GFP_ZERO; -	efi_pgd = (pgd_t *)__get_free_page(gfp_mask); +	efi_pgd = (pgd_t *)__get_free_pages(gfp_mask, PGD_ALLOCATION_ORDER);  	if (!efi_pgd)  		return -ENOMEM; diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c index 8a99a2e96537..5b513ccffde4 100644 --- a/arch/x86/platform/efi/quirks.c +++ b/arch/x86/platform/efi/quirks.c @@ -592,7 +592,18 @@ static int qrk_capsule_setup_info(struct capsule_info *cap_info, void **pkbuff,  	/*  	 * Update the first page pointer to skip over the CSH header.  	 */ -	cap_info->pages[0] += csh->headersize; +	cap_info->phys[0] += csh->headersize; + +	/* +	 * cap_info->capsule should point at a virtual mapping of the entire +	 * capsule, starting at the capsule header. Our image has the Quark +	 * security header prepended, so we cannot rely on the default vmap() +	 * mapping created by the generic capsule code. +	 * Given that the Quark firmware does not appear to care about the +	 * virtual mapping, let's just point cap_info->capsule at our copy +	 * of the capsule header. +	 */ +	cap_info->capsule = &cap_info->header;  	return 1;  } diff --git a/arch/x86/platform/intel-mid/device_libs/platform_bt.c b/arch/x86/platform/intel-mid/device_libs/platform_bt.c index dc036e511f48..5a0483e7bf66 100644 --- a/arch/x86/platform/intel-mid/device_libs/platform_bt.c +++ b/arch/x86/platform/intel-mid/device_libs/platform_bt.c @@ -60,7 +60,7 @@ static int __init tng_bt_sfi_setup(struct bt_sfi_data *ddata)  	return 0;  } -static const struct bt_sfi_data tng_bt_sfi_data __initdata = { +static struct bt_sfi_data tng_bt_sfi_data __initdata = {  	.setup	= tng_bt_sfi_setup,  }; diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c index f44c0bc95aa2..8538a6723171 100644 --- a/arch/x86/platform/uv/tlb_uv.c +++ b/arch/x86/platform/uv/tlb_uv.c @@ -299,7 +299,7 @@ static void bau_process_message(struct msg_desc *mdp, struct bau_control *bcp,  		local_flush_tlb();  		stat->d_alltlb++;  	} else { -		__flush_tlb_one(msg->address); +		__flush_tlb_single(msg->address);  		stat->d_onetlb++;  	}  	stat->d_requestee++; diff --git a/arch/x86/platform/uv/uv_irq.c b/arch/x86/platform/uv/uv_irq.c index 5f6fd860820a..e4cb9f4cde8a 100644 --- a/arch/x86/platform/uv/uv_irq.c +++ b/arch/x86/platform/uv/uv_irq.c @@ -128,7 +128,7 @@ static void uv_domain_free(struct irq_domain *domain, unsigned int virq,   * on the specified blade to allow the sending of MSIs to the specified CPU.   */  static int uv_domain_activate(struct irq_domain *domain, -			      struct irq_data *irq_data, bool early) +			      struct irq_data *irq_data, bool reserve)  {  	uv_program_mmr(irqd_cfg(irq_data), irq_data->chip_data);  	return 0; diff --git a/arch/x86/platform/uv/uv_nmi.c b/arch/x86/platform/uv/uv_nmi.c index c34bd8233f7c..5f64f30873e2 100644 --- a/arch/x86/platform/uv/uv_nmi.c +++ b/arch/x86/platform/uv/uv_nmi.c @@ -905,7 +905,7 @@ static inline void uv_call_kgdb_kdb(int cpu, struct pt_regs *regs, int master)  /*   * UV NMI handler   */ -int uv_handle_nmi(unsigned int reason, struct pt_regs *regs) +static int uv_handle_nmi(unsigned int reason, struct pt_regs *regs)  {  	struct uv_hub_nmi_s *hub_nmi = uv_hub_nmi;  	int cpu = smp_processor_id(); @@ -1013,7 +1013,7 @@ void uv_nmi_init(void)  }  /* Setup HUB NMI info */ -void __init uv_nmi_setup_common(bool hubbed) +static void __init uv_nmi_setup_common(bool hubbed)  {  	int size = sizeof(void *) * (1 << NODES_SHIFT);  	int cpu;  | 

