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

Commit af299901 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:
  [SPARC64]: Fix 'niu' complex IRQ probing.
  [SPARC64]: check fork_idle() error
  [SPARC64]: Temporary workaround for PCI-E slot on T1000.
  [SPARC64]: VIO device addition log message level is too high.
  [SPARC64]: Fix domain-services port probing.
  [SPARC64]: Don't use in/local regs for ldx/stx data in N1 memcpy.
parents 4ecbca85 b2b27757
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -264,7 +264,7 @@ static int sun4v_read_pci_cfg(struct pci_bus *bus_dev, unsigned int devfn,
	unsigned int func = PCI_FUNC(devfn);
	unsigned long ret;

	if (bus_dev == pbm->pci_bus && devfn == 0x00)
	if (!bus && devfn == 0x00)
		return pci_host_bridge_read_pci_cfg(bus_dev, devfn, where,
						    size, value);
	if (config_out_of_range(pbm, bus, devfn, where)) {
@@ -300,7 +300,7 @@ static int sun4v_write_pci_cfg(struct pci_bus *bus_dev, unsigned int devfn,
	unsigned int func = PCI_FUNC(devfn);
	unsigned long ret;

	if (bus_dev == pbm->pci_bus && devfn == 0x00)
	if (!bus && devfn == 0x00)
		return pci_host_bridge_write_pci_cfg(bus_dev, devfn, where,
						     size, value);
	if (config_out_of_range(pbm, bus, devfn, where)) {
+2 −1
Original line number Diff line number Diff line
@@ -1046,7 +1046,8 @@ static void __init irq_trans_init(struct device_node *dp)
	if (!strcmp(dp->name, "fhc") &&
	    !strcmp(dp->parent->name, "central"))
		return central_irq_trans_init(dp);
	if (!strcmp(dp->name, "virtual-devices"))
	if (!strcmp(dp->name, "virtual-devices") ||
	    !strcmp(dp->name, "niu"))
		return sun4v_vdev_irq_trans_init(dp);
}

+2 −0
Original line number Diff line number Diff line
@@ -353,6 +353,8 @@ static int __devinit smp_boot_one_cpu(unsigned int cpu)
	int timeout, ret;

	p = fork_idle(cpu);
	if (IS_ERR(p))
		return PTR_ERR(p);
	callin_flag = 0;
	cpu_new_thread = task_thread_info(p);

+27 −2
Original line number Diff line number Diff line
@@ -292,7 +292,7 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
	}
	vdev->dp = dp;

	printk(KERN_ERR "VIO: Adding device %s\n", vdev->dev.bus_id);
	printk(KERN_INFO "VIO: Adding device %s\n", vdev->dev.bus_id);

	err = device_register(&vdev->dev);
	if (err) {
@@ -342,8 +342,33 @@ static struct mdesc_notifier_client vio_device_notifier = {
	.node_name	= "virtual-device-port",
};

/* We are only interested in domain service ports under the
 * "domain-services" node.  On control nodes there is another port
 * under "openboot" that we should not mess with as aparently that is
 * reserved exclusively for OBP use.
 */
static void vio_add_ds(struct mdesc_handle *hp, u64 node)
{
	int found;
	u64 a;

	found = 0;
	mdesc_for_each_arc(a, hp, node, MDESC_ARC_TYPE_BACK) {
		u64 target = mdesc_arc_target(hp, a);
		const char *name = mdesc_node_name(hp, target);

		if (!strcmp(name, "domain-services")) {
			found = 1;
			break;
		}
	}

	if (found)
		(void) vio_create_one(hp, node, &root_vdev->dev);
}

static struct mdesc_notifier_client vio_ds_notifier = {
	.add		= vio_add,
	.add		= vio_add_ds,
	.remove		= vio_remove,
	.node_name	= "domain-services-port",
};
+4 −4
Original line number Diff line number Diff line
@@ -321,11 +321,11 @@ FUNC_NAME: /* %i0=dst, %i1=src, %i2=len */
	andn		%i2, 0xf, %i4
	and		%i2, 0xf, %i2
1:	subcc		%i4, 0x10, %i4
	EX_LD(LOAD(ldx, %i1, %i5))
	EX_LD(LOAD(ldx, %i1, %o4))
	add		%i1, 0x08, %i1
	EX_LD(LOAD(ldx, %i1, %g1))
	sub		%i1, 0x08, %i1
	EX_ST(STORE(stx, %i5, %i1 + %i3))
	EX_ST(STORE(stx, %o4, %i1 + %i3))
	add		%i1, 0x8, %i1
	EX_ST(STORE(stx, %g1, %i1 + %i3))
	bgu,pt		%XCC, 1b
@@ -334,8 +334,8 @@ FUNC_NAME: /* %i0=dst, %i1=src, %i2=len */
	be,pt		%XCC, 1f
	 nop
	sub		%i2, 0x8, %i2
	EX_LD(LOAD(ldx, %i1, %i5))
	EX_ST(STORE(stx, %i5, %i1 + %i3))
	EX_LD(LOAD(ldx, %i1, %o4))
	EX_ST(STORE(stx, %o4, %i1 + %i3))
	add		%i1, 0x8, %i1
1:	andcc		%i2, 0x4, %g0
	be,pt		%XCC, 1f