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

Commit 7244d545 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [VIDEO] sunxvr500fb: Fix pseudo_palette array size
  [VIDEO] sunxvr2500fb: Fix pseudo_palette array size
  [VIDEO] ffb: The pseudo_palette is only 16 elements long
  [VIDEO]: Fix section mismatch warning in promcon.
  [ATA]: Back out bogus (SPARC64 && !PCI) Kconfig depends.
  [SPARC64]: Fill in gaps in non-PCI dma_*() NOP implementation.
  [SPARC64]: Fix {mc,smt}_capable().
  [SPARC64]: Make core and sibling groups equal on UltraSPARC-IV.
  [SPARC64]: Proper multi-core scheduling support.
  [SPARC64]: Provide mmu statistics via sysfs.
  [SPARC64]: Fix service channel hypervisor function names.
  [SPARC64]: Export basic cpu properties via sysfs.
  [SPARC64]: Move topology init code into new file, sysfs.c
parents 143a2759 e7e8cc5a
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -396,6 +396,15 @@ config SCHED_SMT
	  when dealing with UltraSPARC cpus at a cost of slightly increased
	  overhead in some places. If unsure say N here.

config SCHED_MC
	bool "Multi-core scheduler support"
	depends on SMP
	default y
	help
	  Multi-core scheduler support improves the CPU scheduler's decision
	  making when dealing with multi-core CPU chips at a cost of slightly
	  increased overhead in some places. If unsure say N here.

source "kernel/Kconfig.preempt"

config CMDLINE_BOOL
+2 −2
Original line number Diff line number Diff line
# $Id: Makefile,v 1.70 2002/02/09 19:49:30 davem Exp $
#
# Makefile for the linux kernel.
#

@@ -8,7 +8,7 @@ EXTRA_CFLAGS := -Werror
extra-y		:= head.o init_task.o vmlinux.lds

obj-y		:= process.o setup.o cpu.o idprom.o \
		   traps.o auxio.o una_asm.o \
		   traps.o auxio.o una_asm.o sysfs.o \
		   irq.o ptrace.o time.o sys_sparc.o signal.o \
		   unaligned.o central.o pci.o starfire.o semaphore.o \
		   power.o sbus.o iommu_common.o sparc64_ksyms.o chmc.o \
+42 −20
Original line number Diff line number Diff line
@@ -2514,9 +2514,9 @@ sun4v_ncs_request:
	 nop
	.size	sun4v_ncs_request, .-sun4v_ncs_request

	.globl	sun4v_scv_send
	.type	sun4v_scv_send,#function
sun4v_scv_send:
	.globl	sun4v_svc_send
	.type	sun4v_svc_send,#function
sun4v_svc_send:
	save	%sp, -192, %sp
	mov	%i0, %o0
	mov	%i1, %o1
@@ -2526,11 +2526,11 @@ sun4v_scv_send:
	stx	%o1, [%i3]
	ret
	restore
	.size	sun4v_scv_send, .-sun4v_scv_send
	.size	sun4v_svc_send, .-sun4v_svc_send

	.globl	sun4v_scv_recv
	.type	sun4v_scv_recv,#function
sun4v_scv_recv:
	.globl	sun4v_svc_recv
	.type	sun4v_svc_recv,#function
sun4v_svc_recv:
	save	%sp, -192, %sp
	mov	%i0, %o0
	mov	%i1, %o1
@@ -2540,33 +2540,55 @@ sun4v_scv_recv:
	stx	%o1, [%i3]
	ret
	restore
	.size	sun4v_scv_recv, .-sun4v_scv_recv
	.size	sun4v_svc_recv, .-sun4v_svc_recv

	.globl	sun4v_scv_getstatus
	.type	sun4v_scv_getstatus,#function
sun4v_scv_getstatus:
	.globl	sun4v_svc_getstatus
	.type	sun4v_svc_getstatus,#function
sun4v_svc_getstatus:
	mov	HV_FAST_SVC_GETSTATUS, %o5
	mov	%o1, %o4
	ta	HV_FAST_TRAP
	stx	%o1, [%o4]
	retl
	 nop
	.size	sun4v_scv_getstatus, .-sun4v_scv_getstatus
	.size	sun4v_svc_getstatus, .-sun4v_svc_getstatus

	.globl	sun4v_scv_setstatus
	.type	sun4v_scv_setstatus,#function
sun4v_scv_setstatus:
	.globl	sun4v_svc_setstatus
	.type	sun4v_svc_setstatus,#function
sun4v_svc_setstatus:
	mov	HV_FAST_SVC_SETSTATUS, %o5
	ta	HV_FAST_TRAP
	retl
	 nop
	.size	sun4v_scv_setstatus, .-sun4v_scv_setstatus
	.size	sun4v_svc_setstatus, .-sun4v_svc_setstatus

	.globl	sun4v_scv_clrstatus
	.type	sun4v_scv_clrstatus,#function
sun4v_scv_clrstatus:
	.globl	sun4v_svc_clrstatus
	.type	sun4v_svc_clrstatus,#function
sun4v_svc_clrstatus:
	mov	HV_FAST_SVC_CLRSTATUS, %o5
	ta	HV_FAST_TRAP
	retl
	 nop
	.size	sun4v_scv_clrstatus, .-sun4v_scv_clrstatus
	.size	sun4v_svc_clrstatus, .-sun4v_svc_clrstatus

	.globl	sun4v_mmustat_conf
	.type	sun4v_mmustat_conf,#function
sun4v_mmustat_conf:
	mov	%o1, %o4
	mov	HV_FAST_MMUSTAT_CONF, %o5
	ta	HV_FAST_TRAP
	stx	%o1, [%o4]
	retl
	 nop
	.size	sun4v_mmustat_conf, .-sun4v_mmustat_conf

	.globl	sun4v_mmustat_info
	.type	sun4v_mmustat_info,#function
sun4v_mmustat_info:
	mov	%o0, %o4
	mov	HV_FAST_MMUSTAT_INFO, %o5
	ta	HV_FAST_TRAP
	stx	%o1, [%o4]
	retl
	 nop
	.size	sun4v_mmustat_info, .-sun4v_mmustat_info
+53 −0
Original line number Diff line number Diff line
@@ -473,6 +473,53 @@ static void __init set_core_ids(void)
	}
}

static void __init mark_proc_ids(struct mdesc_node *mp, int proc_id)
{
	int i;

	for (i = 0; i < mp->num_arcs; i++) {
		struct mdesc_node *t = mp->arcs[i].arc;
		const u64 *id;

		if (strcmp(mp->arcs[i].name, "back"))
			continue;

		if (strcmp(t->name, "cpu"))
			continue;

		id = md_get_property(t, "id", NULL);
		if (*id < NR_CPUS)
			cpu_data(*id).proc_id = proc_id;
	}
}

static void __init __set_proc_ids(const char *exec_unit_name)
{
	struct mdesc_node *mp;
	int idx;

	idx = 0;
	md_for_each_node_by_name(mp, exec_unit_name) {
		const char *type;
		int len;

		type = md_get_property(mp, "type", &len);
		if (!find_in_proplist(type, "int", len) &&
		    !find_in_proplist(type, "integer", len))
			continue;

		mark_proc_ids(mp, idx);

		idx++;
	}
}

static void __init set_proc_ids(void)
{
	__set_proc_ids("exec_unit");
	__set_proc_ids("exec-unit");
}

static void __init get_one_mondo_bits(const u64 *p, unsigned int *mask, unsigned char def)
{
	u64 val;
@@ -574,9 +621,15 @@ static void __init mdesc_fill_in_cpu_data(void)
#endif

		c->core_id = 0;
		c->proc_id = -1;
	}

#ifdef CONFIG_SMP
	sparc64_multi_core = 1;
#endif

	set_core_ids();
	set_proc_ids();

	smp_fill_in_sib_core_maps();
}
+5 −0
Original line number Diff line number Diff line
@@ -1781,6 +1781,10 @@ static void __init of_fill_in_cpu_data(void)
			}

			cpu_data(cpuid).core_id = portid + 1;
			cpu_data(cpuid).proc_id = portid;
#ifdef CONFIG_SMP
			sparc64_multi_core = 1;
#endif
		} else {
			cpu_data(cpuid).dcache_size =
				of_getintprop_default(dp, "dcache-size", 16 * 1024);
@@ -1799,6 +1803,7 @@ static void __init of_fill_in_cpu_data(void)
				of_getintprop_default(dp, "ecache-line-size", 64);

			cpu_data(cpuid).core_id = 0;
			cpu_data(cpuid).proc_id = -1;
		}

#ifdef CONFIG_SMP
Loading