aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64')
-rw-r--r--arch/sparc64/kernel/ds.c2
-rw-r--r--arch/sparc64/kernel/ldc.c16
-rw-r--r--arch/sparc64/kernel/viohs.c2
3 files changed, 15 insertions, 5 deletions
diff --git a/arch/sparc64/kernel/ds.c b/arch/sparc64/kernel/ds.c
index 22517dfd021d..c7ece8c52039 100644
--- a/arch/sparc64/kernel/ds.c
+++ b/arch/sparc64/kernel/ds.c
@@ -598,7 +598,7 @@ static int __devinit ds_probe(struct vio_dev *vdev,
598 } 598 }
599 dp->lp = lp; 599 dp->lp = lp;
600 600
601 err = ldc_bind(lp); 601 err = ldc_bind(lp, "DS");
602 if (err) 602 if (err)
603 goto out_free_ldc; 603 goto out_free_ldc;
604 604
diff --git a/arch/sparc64/kernel/ldc.c b/arch/sparc64/kernel/ldc.c
index 4cba28685967..dbb65b674a67 100644
--- a/arch/sparc64/kernel/ldc.c
+++ b/arch/sparc64/kernel/ldc.c
@@ -158,6 +158,10 @@ struct ldc_channel {
158 u8 mss; 158 u8 mss;
159 u8 state; 159 u8 state;
160 160
161#define LDC_IRQ_NAME_MAX 32
162 char rx_irq_name[LDC_IRQ_NAME_MAX];
163 char tx_irq_name[LDC_IRQ_NAME_MAX];
164
161 struct hlist_head mh_list; 165 struct hlist_head mh_list;
162 166
163 struct hlist_node list; 167 struct hlist_node list;
@@ -1226,25 +1230,31 @@ EXPORT_SYMBOL(ldc_free);
1226 * state. This does not initiate a handshake, ldc_connect() does 1230 * state. This does not initiate a handshake, ldc_connect() does
1227 * that. 1231 * that.
1228 */ 1232 */
1229int ldc_bind(struct ldc_channel *lp) 1233int ldc_bind(struct ldc_channel *lp, const char *name)
1230{ 1234{
1231 unsigned long hv_err, flags; 1235 unsigned long hv_err, flags;
1232 int err = -EINVAL; 1236 int err = -EINVAL;
1233 1237
1234 spin_lock_irqsave(&lp->lock, flags); 1238 spin_lock_irqsave(&lp->lock, flags);
1235 1239
1240 if (!name)
1241 goto out_err;
1242
1236 if (lp->state != LDC_STATE_INIT) 1243 if (lp->state != LDC_STATE_INIT)
1237 goto out_err; 1244 goto out_err;
1238 1245
1246 snprintf(lp->rx_irq_name, LDC_IRQ_NAME_MAX, "%s RX", name);
1247 snprintf(lp->tx_irq_name, LDC_IRQ_NAME_MAX, "%s TX", name);
1248
1239 err = request_irq(lp->cfg.rx_irq, ldc_rx, 1249 err = request_irq(lp->cfg.rx_irq, ldc_rx,
1240 IRQF_SAMPLE_RANDOM | IRQF_SHARED, 1250 IRQF_SAMPLE_RANDOM | IRQF_SHARED,
1241 "LDC RX", lp); 1251 lp->rx_irq_name, lp);
1242 if (err) 1252 if (err)
1243 goto out_err; 1253 goto out_err;
1244 1254
1245 err = request_irq(lp->cfg.tx_irq, ldc_tx, 1255 err = request_irq(lp->cfg.tx_irq, ldc_tx,
1246 IRQF_SAMPLE_RANDOM | IRQF_SHARED, 1256 IRQF_SAMPLE_RANDOM | IRQF_SHARED,
1247 "LDC TX", lp); 1257 lp->tx_irq_name, lp);
1248 if (err) 1258 if (err)
1249 goto out_free_rx_irq; 1259 goto out_free_rx_irq;
1250 1260
diff --git a/arch/sparc64/kernel/viohs.c b/arch/sparc64/kernel/viohs.c
index 3eb42e3624f3..b0b1b8779342 100644
--- a/arch/sparc64/kernel/viohs.c
+++ b/arch/sparc64/kernel/viohs.c
@@ -724,7 +724,7 @@ void vio_port_up(struct vio_driver_state *vio)
724 724
725 err = 0; 725 err = 0;
726 if (state == LDC_STATE_INIT) { 726 if (state == LDC_STATE_INIT) {
727 err = ldc_bind(vio->lp); 727 err = ldc_bind(vio->lp, vio->name);
728 if (err) 728 if (err)
729 printk(KERN_WARNING "%s: Port %lu bind failed, " 729 printk(KERN_WARNING "%s: Port %lu bind failed, "
730 "err=%d\n", 730 "err=%d\n",