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

Commit 24dd064d authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branches 'x86/dma', 'x86/microcode', 'x86/mm' and 'x86/vdso' into x86/urgent



Merge these small and simple 1-2 commit branches into the urgent branch.

Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -301,5 +301,6 @@ extern struct x86_apic_ops x86_apic_ops;
extern void x86_early_init_platform_quirks(void);
extern void x86_early_init_platform_quirks(void);
extern void x86_init_noop(void);
extern void x86_init_noop(void);
extern void x86_init_uint_noop(unsigned int unused);
extern void x86_init_uint_noop(unsigned int unused);
extern bool x86_pnpbios_disabled(void);


#endif
#endif
+3 −3
Original line number Original line Diff line number Diff line
@@ -70,7 +70,7 @@ static DEFINE_MUTEX(microcode_mutex);
/*
/*
 * Serialize late loading so that CPUs get updated one-by-one.
 * Serialize late loading so that CPUs get updated one-by-one.
 */
 */
static DEFINE_SPINLOCK(update_lock);
static DEFINE_RAW_SPINLOCK(update_lock);


struct ucode_cpu_info		ucode_cpu_info[NR_CPUS];
struct ucode_cpu_info		ucode_cpu_info[NR_CPUS];


@@ -560,9 +560,9 @@ static int __reload_late(void *info)
	if (__wait_for_cpus(&late_cpus_in, NSEC_PER_SEC))
	if (__wait_for_cpus(&late_cpus_in, NSEC_PER_SEC))
		return -1;
		return -1;


	spin_lock(&update_lock);
	raw_spin_lock(&update_lock);
	apply_microcode_local(&err);
	apply_microcode_local(&err);
	spin_unlock(&update_lock);
	raw_spin_unlock(&update_lock);


	/* siblings return UCODE_OK because their engine got updated already */
	/* siblings return UCODE_OK because their engine got updated already */
	if (err > UCODE_NFOUND) {
	if (err > UCODE_NFOUND) {
+12 −21
Original line number Original line Diff line number Diff line
@@ -106,17 +106,9 @@ mtrr_write(struct file *file, const char __user *buf, size_t len, loff_t * ppos)


	memset(line, 0, LINE_SIZE);
	memset(line, 0, LINE_SIZE);


	length = len;
	length = strncpy_from_user(line, buf, LINE_SIZE - 1);
	length--;

	if (length > LINE_SIZE - 1)
		length = LINE_SIZE - 1;

	if (length < 0)
	if (length < 0)
		return -EINVAL;
		return length;

	if (copy_from_user(line, buf, length))
		return -EFAULT;


	linelen = strlen(line);
	linelen = strlen(line);
	ptr = line + linelen - 1;
	ptr = line + linelen - 1;
@@ -149,9 +141,10 @@ mtrr_write(struct file *file, const char __user *buf, size_t len, loff_t * ppos)
		return -EINVAL;
		return -EINVAL;
	ptr = skip_spaces(ptr + 5);
	ptr = skip_spaces(ptr + 5);


	for (i = 0; i < MTRR_NUM_TYPES; ++i) {
	i = match_string(mtrr_strings, MTRR_NUM_TYPES, ptr);
		if (strcmp(ptr, mtrr_strings[i]))
	if (i < 0)
			continue;
		return i;

	base >>= PAGE_SHIFT;
	base >>= PAGE_SHIFT;
	size >>= PAGE_SHIFT;
	size >>= PAGE_SHIFT;
	err = mtrr_add_page((unsigned long)base, (unsigned long)size, i, true);
	err = mtrr_add_page((unsigned long)base, (unsigned long)size, i, true);
@@ -159,8 +152,6 @@ mtrr_write(struct file *file, const char __user *buf, size_t len, loff_t * ppos)
		return err;
		return err;
	return len;
	return len;
}
}
	return -EINVAL;
}


static long
static long
mtrr_ioctl(struct file *file, unsigned int cmd, unsigned long __arg)
mtrr_ioctl(struct file *file, unsigned int cmd, unsigned long __arg)
+25 −0
Original line number Original line Diff line number Diff line
@@ -9,10 +9,12 @@
 * your option) any later version.
 * your option) any later version.
 */
 */


#include <linux/dmi.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/syscore_ops.h>
#include <linux/syscore_ops.h>


#include <asm/dma.h>
#include <asm/dma.h>
#include <asm/x86_init.h>


/*
/*
 * This module just handles suspend/resume issues with the
 * This module just handles suspend/resume issues with the
@@ -49,6 +51,29 @@ static struct syscore_ops i8237_syscore_ops = {


static int __init i8237A_init_ops(void)
static int __init i8237A_init_ops(void)
{
{
	/*
	 * From SKL PCH onwards, the legacy DMA device is removed in which the
	 * I/O ports (81h-83h, 87h, 89h-8Bh, 8Fh) related to it are removed
	 * as well. All removed ports must return 0xff for a inb() request.
	 *
	 * Note: DMA_PAGE_2 (port 0x81) should not be checked for detecting
	 * the presence of DMA device since it may be used by BIOS to decode
	 * LPC traffic for POST codes. Original LPC only decodes one byte of
	 * port 0x80 but some BIOS may choose to enhance PCH LPC port 0x8x
	 * decoding.
	 */
	if (dma_inb(DMA_PAGE_0) == 0xFF)
		return -ENODEV;

	/*
	 * It is not required to load this driver as newer SoC may not
	 * support 8237 DMA or bus mastering from LPC. Platform firmware
	 * must announce the support for such legacy devices via
	 * ACPI_FADT_LEGACY_DEVICES field in FADT table.
	 */
	if (x86_pnpbios_disabled() && dmi_get_bios_year() >= 2017)
		return -ENODEV;

	register_syscore_ops(&i8237_syscore_ops);
	register_syscore_ops(&i8237_syscore_ops);
	return 0;
	return 0;
}
}
+6 −1
Original line number Original line Diff line number Diff line
@@ -33,9 +33,14 @@ void __init x86_early_init_platform_quirks(void)
		x86_platform.set_legacy_features();
		x86_platform.set_legacy_features();
}
}


bool __init x86_pnpbios_disabled(void)
{
	return x86_platform.legacy.devices.pnpbios == 0;
}

#if defined(CONFIG_PNPBIOS)
#if defined(CONFIG_PNPBIOS)
bool __init arch_pnpbios_disabled(void)
bool __init arch_pnpbios_disabled(void)
{
{
	return x86_platform.legacy.devices.pnpbios == 0;
	return x86_pnpbios_disabled();
}
}
#endif
#endif