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

Commit 223ddcea authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files
parents ca412cc9 3e03a2fc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -618,7 +618,7 @@ appldata_offline_cpu(int cpu)
}

#ifdef CONFIG_HOTPLUG_CPU
static int
static int __cpuinit
appldata_cpu_notify(struct notifier_block *self,
		    unsigned long action, void *hcpu)
{
+3 −3
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ void __init paging_init(void)
                /*
                 * pg_table is physical at this point
                 */
		pg_table = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
		pg_table = (pte_t *) alloc_bootmem_pages(PAGE_SIZE);

                pg_dir->pgd0 =  (_PAGE_TABLE | __pa(pg_table));
                pg_dir->pgd1 =  (_PAGE_TABLE | (__pa(pg_table)+1024));
@@ -219,7 +219,7 @@ void __init paging_init(void)
                        continue;
                }          
        
	        pm_dir = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE*4);
		pm_dir = (pmd_t *) alloc_bootmem_pages(PAGE_SIZE * 4);
                pgd_populate(&init_mm, pg_dir, pm_dir);

                for (j = 0 ; j < PTRS_PER_PMD ; j++,pm_dir++) {
@@ -228,7 +228,7 @@ void __init paging_init(void)
                                continue; 
                        }          
                        
                        pt_dir = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
			pt_dir = (pte_t *) alloc_bootmem_pages(PAGE_SIZE);
                        pmd_populate_kernel(&init_mm, pm_dir, pt_dir);
	
                        for (k = 0 ; k < PTRS_PER_PTE ; k++,pt_dir++) {
+1 −1
Original line number Diff line number Diff line
@@ -1730,8 +1730,8 @@ dasd_flush_request_queue(struct dasd_device * device)
		req = elv_next_request(device->request_queue);
		if (req == NULL)
			break;
		dasd_end_request(req, 0);
		blkdev_dequeue_request(req);
		dasd_end_request(req, 0);
	}
	spin_unlock_irq(&device->request_queue_lock);
}
+40 −44
Original line number Diff line number Diff line
@@ -48,18 +48,20 @@ struct dasd_devmap {
};

/*
 * dasd_servermap is used to store the server_id of all storage servers
 * accessed by DASD device driver.
 * dasd_server_ssid_map contains a globally unique storage server subsystem ID.
 * dasd_server_ssid_list contains the list of all subsystem IDs accessed by
 * the DASD device driver.
 */
struct dasd_servermap {
struct dasd_server_ssid_map {
	struct list_head list;
	struct server_id {
		char vendor[4];
		char serial[15];
	} sid;
	__u16 ssid;
};

static struct list_head dasd_serverlist;
static struct list_head dasd_server_ssid_list;

/*
 * Parameter parsing functions for dasd= parameter. The syntax is:
@@ -89,7 +91,7 @@ static char *dasd[256];
module_param_array(dasd, charp, NULL, 0);

/*
 * Single spinlock to protect devmap structures and lists.
 * Single spinlock to protect devmap and servermap structures and lists.
 */
static DEFINE_SPINLOCK(dasd_devmap_lock);

@@ -264,8 +266,9 @@ dasd_parse_keyword( char *parsestring ) {
		if (dasd_page_cache)
			return residual_str;
		dasd_page_cache =
			kmem_cache_create("dasd_page_cache", PAGE_SIZE, 0,
					  SLAB_CACHE_DMA, NULL, NULL );
			kmem_cache_create("dasd_page_cache", PAGE_SIZE,
					  PAGE_SIZE, SLAB_CACHE_DMA,
					  NULL, NULL );
		if (!dasd_page_cache)
			MESSAGE(KERN_WARNING, "%s", "Failed to create slab, "
				"fixed buffer mode disabled.");
@@ -858,39 +861,6 @@ static struct attribute_group dasd_attr_group = {
	.attrs = dasd_attrs,
};

/*
 * Check if the related storage server is already contained in the
 * dasd_serverlist. If server is not contained, create new entry.
 * Return 0 if server was already in serverlist,
 *	  1 if the server was added successfully
 *	 <0 in case of error.
 */
static int
dasd_add_server(struct dasd_uid *uid)
{
	struct dasd_servermap *new, *tmp;

	/* check if server is already contained */
	list_for_each_entry(tmp, &dasd_serverlist, list)
	  // normale cmp?
		if (strncmp(tmp->sid.vendor, uid->vendor,
			    sizeof(tmp->sid.vendor)) == 0
		    && strncmp(tmp->sid.serial, uid->serial,
			       sizeof(tmp->sid.serial)) == 0)
			return 0;

	new = (struct dasd_servermap *)
		kzalloc(sizeof(struct dasd_servermap), GFP_KERNEL);
	if (!new)
		return -ENOMEM;

	strncpy(new->sid.vendor, uid->vendor, sizeof(new->sid.vendor));
	strncpy(new->sid.serial, uid->serial, sizeof(new->sid.serial));
	list_add(&new->list, &dasd_serverlist);
	return 1;
}


/*
 * Return copy of the device unique identifier.
 */
@@ -910,6 +880,9 @@ dasd_get_uid(struct ccw_device *cdev, struct dasd_uid *uid)

/*
 * Register the given device unique identifier into devmap struct.
 * In addition check if the related storage server subsystem ID is already
 * contained in the dasd_server_ssid_list. If subsystem ID is not contained,
 * create new entry.
 * Return 0 if server was already in serverlist,
 *	  1 if the server was added successful
 *	 <0 in case of error.
@@ -918,16 +891,39 @@ int
dasd_set_uid(struct ccw_device *cdev, struct dasd_uid *uid)
{
	struct dasd_devmap *devmap;
	int rc;
	struct dasd_server_ssid_map *srv, *tmp;

	devmap = dasd_find_busid(cdev->dev.bus_id);
	if (IS_ERR(devmap))
		return PTR_ERR(devmap);

	/* generate entry for server_ssid_map */
	srv = (struct dasd_server_ssid_map *)
		kzalloc(sizeof(struct dasd_server_ssid_map), GFP_KERNEL);
	if (!srv)
		return -ENOMEM;
	strncpy(srv->sid.vendor, uid->vendor, sizeof(srv->sid.vendor) - 1);
	strncpy(srv->sid.serial, uid->serial, sizeof(srv->sid.serial) - 1);
	srv->ssid = uid->ssid;

	/* server is already contained ? */
	spin_lock(&dasd_devmap_lock);
	devmap->uid = *uid;
	rc = dasd_add_server(uid);
	list_for_each_entry(tmp, &dasd_server_ssid_list, list) {
		if (!memcmp(&srv->sid, &tmp->sid,
			    sizeof(struct dasd_server_ssid_map))) {
			kfree(srv);
			srv = NULL;
			break;
		}
	}

	/* add servermap to serverlist */
	if (srv)
		list_add(&srv->list, &dasd_server_ssid_list);
	spin_unlock(&dasd_devmap_lock);
	return rc;

	return (srv ? 1 : 0);
}
EXPORT_SYMBOL_GPL(dasd_set_uid);

@@ -995,7 +991,7 @@ dasd_devmap_init(void)
		INIT_LIST_HEAD(&dasd_hashlists[i]);

	/* Initialize servermap structure. */
	INIT_LIST_HEAD(&dasd_serverlist);
	INIT_LIST_HEAD(&dasd_server_ssid_list);
	return 0;
}

+4 −4
Original line number Diff line number Diff line
@@ -468,10 +468,10 @@ dasd_eckd_generate_uid(struct dasd_device *device, struct dasd_uid *uid)
		return -ENODEV;

	memset(uid, 0, sizeof(struct dasd_uid));
	strncpy(uid->vendor, confdata->ned1.HDA_manufacturer,
	memcpy(uid->vendor, confdata->ned1.HDA_manufacturer,
	       sizeof(uid->vendor) - 1);
	EBCASC(uid->vendor, sizeof(uid->vendor) - 1);
	strncpy(uid->serial, confdata->ned1.HDA_location,
	memcpy(uid->serial, confdata->ned1.HDA_location,
	       sizeof(uid->serial) - 1);
	EBCASC(uid->serial, sizeof(uid->serial) - 1);
	uid->ssid = confdata->neq.subsystemID;
Loading