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

Commit 8b9686ff authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branches 'x86-fixes-for-linus', 'sched-fixes-for-linus',...

Merge branches 'x86-fixes-for-linus', 'sched-fixes-for-linus', 'timers-fixes-for-linus', 'irq-fixes-for-linus' and 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86-32, fpu: Fix FPU exception handling on non-SSE systems
  x86, hibernate: Initialize mmu_cr4_features during boot
  x86-32, NUMA: Fix ACPI NUMA init broken by recent x86-64 change
  x86: visws: Fixup irq overhaul fallout

* 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  sched: Clean up rebalance_domains() load-balance interval calculation

* 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86/mrst/vrtc: Fix boot crash in mrst_rtc_init()
  rtc, x86/mrst/vrtc: Fix boot crash in rtc_read_alarm()

* 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  genirq: Fix cpumask leak in __setup_irq()

* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  perf probe: Fix listing incorrect line number with inline function
  perf probe: Fix to find recursively inlined function
  perf probe: Fix multiple --vars options behavior
  perf probe: Fix to remove redundant close
  perf probe: Fix to ensure function declared file
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -237,7 +237,7 @@ static inline void fpu_save_init(struct fpu *fpu)
	} else if (use_fxsr()) {
	} else if (use_fxsr()) {
		fpu_fxsave(fpu);
		fpu_fxsave(fpu);
	} else {
	} else {
		asm volatile("fsave %[fx]; fwait"
		asm volatile("fnsave %[fx]; fwait"
			     : [fx] "=m" (fpu->state->fsave));
			     : [fx] "=m" (fpu->state->fsave));
		return;
		return;
	}
	}
+5 −0
Original line number Original line Diff line number Diff line
@@ -976,6 +976,11 @@ void __init setup_arch(char **cmdline_p)
	paging_init();
	paging_init();
	x86_init.paging.pagetable_setup_done(swapper_pg_dir);
	x86_init.paging.pagetable_setup_done(swapper_pg_dir);


	if (boot_cpu_data.cpuid_level >= 0) {
		/* A CPU has %cr4 if and only if it has CPUID */
		mmu_cr4_features = read_cr4();
	}

#ifdef CONFIG_X86_32
#ifdef CONFIG_X86_32
	/* sync back kernel address range */
	/* sync back kernel address range */
	clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY,
	clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY,
+3 −1
Original line number Original line Diff line number Diff line
@@ -211,10 +211,12 @@ int __init get_memcfg_from_srat(void)
{
{
	int i, j, nid;
	int i, j, nid;



	if (srat_disabled())
	if (srat_disabled())
		goto out_fail;
		goto out_fail;


	if (acpi_numa_init() < 0)
		goto out_fail;

	if (num_memory_chunks == 0) {
	if (num_memory_chunks == 0) {
		printk(KERN_DEBUG
		printk(KERN_DEBUG
			 "could not find any ACPI SRAT memory areas.\n");
			 "could not find any ACPI SRAT memory areas.\n");
+3 −1
Original line number Original line Diff line number Diff line
@@ -100,9 +100,11 @@ int vrtc_set_mmss(unsigned long nowtime)


void __init mrst_rtc_init(void)
void __init mrst_rtc_init(void)
{
{
	unsigned long vrtc_paddr = sfi_mrtc_array[0].phys_addr;
	unsigned long vrtc_paddr;


	sfi_table_parse(SFI_SIG_MRTC, NULL, NULL, sfi_parse_mrtc);
	sfi_table_parse(SFI_SIG_MRTC, NULL, NULL, sfi_parse_mrtc);

	vrtc_paddr = sfi_mrtc_array[0].phys_addr;
	if (!sfi_mrtc_num || !vrtc_paddr)
	if (!sfi_mrtc_num || !vrtc_paddr)
		return;
		return;


+6 −14
Original line number Original line Diff line number Diff line
@@ -471,15 +471,7 @@ static unsigned int startup_piix4_master_irq(struct irq_data *data)
{
{
	legacy_pic->init(0);
	legacy_pic->init(0);
	enable_cobalt_irq(data);
	enable_cobalt_irq(data);
}
	return 0;

static void end_piix4_master_irq(struct irq_data *data)
{
	unsigned long flags;

	spin_lock_irqsave(&cobalt_lock, flags);
	enable_cobalt_irq(data);
	spin_unlock_irqrestore(&cobalt_lock, flags);
}
}


static struct irq_chip piix4_master_irq_type = {
static struct irq_chip piix4_master_irq_type = {
@@ -492,7 +484,7 @@ static void pii4_mask(struct irq_data *data) { }


static struct irq_chip piix4_virtual_irq_type = {
static struct irq_chip piix4_virtual_irq_type = {
	.name		= "PIIX4-virtual",
	.name		= "PIIX4-virtual",
	.mask		= pii4_mask,
	.irq_mask	= pii4_mask,
};
};


/*
/*
@@ -580,9 +572,9 @@ static struct irqaction cascade_action = {


static inline void set_piix4_virtual_irq_type(void)
static inline void set_piix4_virtual_irq_type(void)
{
{
	piix4_virtual_irq_type.enable =	i8259A_chip.unmask;
	piix4_virtual_irq_type.irq_enable = i8259A_chip.irq_unmask;
	piix4_virtual_irq_type.disable = i8259A_chip.mask;
	piix4_virtual_irq_type.irq_disable = i8259A_chip.irq_mask;
	piix4_virtual_irq_type.unmask =	i8259A_chip.unmask;
	piix4_virtual_irq_type.irq_unmask = i8259A_chip.irq_unmask;
}
}


static void __init visws_pre_intr_init(void)
static void __init visws_pre_intr_init(void)
@@ -599,7 +591,7 @@ static void __init visws_pre_intr_init(void)
		else if (i == CO_IRQ_IDE0)
		else if (i == CO_IRQ_IDE0)
			chip = &cobalt_irq_type;
			chip = &cobalt_irq_type;
		else if (i == CO_IRQ_IDE1)
		else if (i == CO_IRQ_IDE1)
			>chip = &cobalt_irq_type;
			chip = &cobalt_irq_type;
		else if (i == CO_IRQ_8259)
		else if (i == CO_IRQ_8259)
			chip = &piix4_master_irq_type;
			chip = &piix4_master_irq_type;
		else if (i < CO_IRQ_APIC0)
		else if (i < CO_IRQ_APIC0)
Loading