More SG build fixes
[safe/jmp/linux-2.6] / arch / sparc64 / kernel / ldc.c
index 4cba286..217478a 100644 (file)
@@ -158,6 +158,10 @@ struct ldc_channel {
        u8                              mss;
        u8                              state;
 
+#define LDC_IRQ_NAME_MAX               32
+       char                            rx_irq_name[LDC_IRQ_NAME_MAX];
+       char                            tx_irq_name[LDC_IRQ_NAME_MAX];
+
        struct hlist_head               mh_list;
 
        struct hlist_node               list;
@@ -1226,25 +1230,31 @@ EXPORT_SYMBOL(ldc_free);
  * state.  This does not initiate a handshake, ldc_connect() does
  * that.
  */
-int ldc_bind(struct ldc_channel *lp)
+int ldc_bind(struct ldc_channel *lp, const char *name)
 {
        unsigned long hv_err, flags;
        int err = -EINVAL;
 
        spin_lock_irqsave(&lp->lock, flags);
 
+       if (!name)
+               goto out_err;
+
        if (lp->state != LDC_STATE_INIT)
                goto out_err;
 
+       snprintf(lp->rx_irq_name, LDC_IRQ_NAME_MAX, "%s RX", name);
+       snprintf(lp->tx_irq_name, LDC_IRQ_NAME_MAX, "%s TX", name);
+
        err = request_irq(lp->cfg.rx_irq, ldc_rx,
                          IRQF_SAMPLE_RANDOM | IRQF_SHARED,
-                         "LDC RX", lp);
+                         lp->rx_irq_name, lp);
        if (err)
                goto out_err;
 
        err = request_irq(lp->cfg.tx_irq, ldc_tx,
                          IRQF_SAMPLE_RANDOM | IRQF_SHARED,
-                         "LDC TX", lp);
+                         lp->tx_irq_name, lp);
        if (err)
                goto out_free_rx_irq;
 
@@ -2047,7 +2057,7 @@ static void fill_cookies(struct cookie_state *sp, unsigned long pa,
 
 static int sg_count_one(struct scatterlist *sg)
 {
-       unsigned long base = page_to_pfn(sg->page) << PAGE_SHIFT;
+       unsigned long base = page_to_pfn(sg_page(sg)) << PAGE_SHIFT;
        long len = sg->length;
 
        if ((sg->offset | len) & (8UL - 1))
@@ -2111,7 +2121,7 @@ int ldc_map_sg(struct ldc_channel *lp,
        state.nc = 0;
 
        for (i = 0; i < num_sg; i++)
-               fill_cookies(&state, page_to_pfn(sg[i].page) << PAGE_SHIFT,
+               fill_cookies(&state, page_to_pfn(sg_page(&sg[i])) << PAGE_SHIFT,
                             sg[i].offset, sg[i].length);
 
        return state.nc;
@@ -2325,15 +2335,20 @@ EXPORT_SYMBOL(ldc_free_exp_dring);
 
 static int __init ldc_init(void)
 {
-       struct mdesc_node *mp;
        unsigned long major, minor;
+       struct mdesc_handle *hp;
        const u64 *v;
+       u64 mp;
+
+       hp = mdesc_grab();
+       if (!hp)
+               return -ENODEV;
 
-       mp = md_find_node_by_name(NULL, "platform");
-       if (!mp)
+       mp = mdesc_node_by_name(hp, MDESC_NODE_NULL, "platform");
+       if (mp == MDESC_NODE_NULL)
                return -ENODEV;
 
-       v = md_get_property(mp, "domaining-enabled", NULL);
+       v = mdesc_get_property(hp, mp, "domaining-enabled", NULL);
        if (!v)
                return -ENODEV;