]> err.no Git - linux-2.6/blobdiff - drivers/s390/cio/cmf.c
Pull battery into release branch
[linux-2.6] / drivers / s390 / cio / cmf.c
index 828b2d334f0a30fde8a687b7ac5587927151aa6f..34a796913b0604a787630beae9be87952982a8dc 100644 (file)
@@ -476,7 +476,7 @@ struct cmb_area {
 };
 
 static struct cmb_area cmb_area = {
-       .lock = SPIN_LOCK_UNLOCKED,
+       .lock = __SPIN_LOCK_UNLOCKED(cmb_area.lock),
        .list = LIST_HEAD_INIT(cmb_area.list),
        .num_channels  = 1024,
 };
@@ -519,8 +519,8 @@ struct cmb {
 /* insert a single device into the cmb_area list
  * called with cmb_area.lock held from alloc_cmb
  */
-static inline int alloc_cmb_single (struct ccw_device *cdev,
-                                   struct cmb_data *cmb_data)
+static int alloc_cmb_single(struct ccw_device *cdev,
+                           struct cmb_data *cmb_data)
 {
        struct cmb *cmb;
        struct ccw_device_private *node;
@@ -594,6 +594,9 @@ alloc_cmb (struct ccw_device *cdev)
                        free_pages((unsigned long)mem, get_order(size));
                } else if (!mem) {
                        /* no luck */
+                       printk(KERN_WARNING "cio: failed to allocate area "
+                              "for measuring %d subchannels\n",
+                              cmb_area.num_channels);
                        ret = -ENOMEM;
                        goto out;
                } else {
@@ -1185,12 +1188,12 @@ static ssize_t cmb_enable_store(struct device *dev, struct device_attribute *att
        case '0':
                ret = disable_cmf(cdev);
                if (ret)
-                       printk(KERN_INFO "disable_cmf failed (%d)\n", ret);
+                       dev_info(&cdev->dev, "disable_cmf failed (%d)\n", ret);
                break;
        case '1':
                ret = enable_cmf(cdev);
                if (ret && ret != -EBUSY)
-                       printk(KERN_INFO "enable_cmf failed (%d)\n", ret);
+                       dev_info(&cdev->dev, "enable_cmf failed (%d)\n", ret);
                break;
        }
 
@@ -1279,26 +1282,19 @@ init_cmf(void)
        case CMF_BASIC:
                format_string = "basic";
                cmbops = &cmbops_basic;
-               if (cmb_area.num_channels > 4096 || cmb_area.num_channels < 1) {
-                       printk(KERN_ERR "Basic channel measurement facility"
-                                       " can only use 1 to 4096 devices\n"
-                              KERN_ERR "when the cmf driver is built"
-                                       " as a loadable module\n");
-                       return 1;
-               }
                break;
        case CMF_EXTENDED:
                format_string = "extended";
                cmbops = &cmbops_extended;
                break;
        default:
-               printk(KERN_ERR "Invalid format %d for channel "
+               printk(KERN_ERR "cio: Invalid format %d for channel "
                        "measurement facility\n", format);
                return 1;
        }
 
-       printk(KERN_INFO "Channel measurement facility using %s format (%s)\n",
-               format_string, detect_string);
+       printk(KERN_INFO "cio: Channel measurement facility using %s "
+              "format (%s)\n", format_string, detect_string);
        return 0;
 }