Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6: [S390] show_interrupts: prevent cpu hotplug when walking cpu_online_map. [S390] smp: __smp_call_function_map vs cpu_online_map fix. [S390] tape: Use ccw_dev_id to build cdev_id. [S390] dasd: fix timeout handling in interrupt handler [S390] s390dbf: Use const char * for dbf name. [S390] dasd: Use const in busid functions. [S390] blacklist.c: removed duplicated include [S390] vmlogrdr: module initialization function should return negative errors [S390] sparsemem vmemmap: initialize memmap. [S390] Remove last traces of cio_msg=. [S390] cio: Remove CCW_CMD_SUSPEND_RECONN in front of CCW_CMD_SET_PGID.wifi-calibration
commit
8568dae21e
|
@ -398,9 +398,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
cio_ignore= [S390]
|
cio_ignore= [S390]
|
||||||
See Documentation/s390/CommonIO for details.
|
See Documentation/s390/CommonIO for details.
|
||||||
|
|
||||||
cio_msg= [S390]
|
|
||||||
See Documentation/s390/CommonIO for details.
|
|
||||||
|
|
||||||
clock= [BUGS=X86-32, HW] gettimeofday clocksource override.
|
clock= [BUGS=X86-32, HW] gettimeofday clocksource override.
|
||||||
[Deprecated]
|
[Deprecated]
|
||||||
Forces specified clocksource (if available) to be used
|
Forces specified clocksource (if available) to be used
|
||||||
|
|
|
@ -71,7 +71,7 @@ static ssize_t debug_input(struct file *file, const char __user *user_buf,
|
||||||
size_t user_len, loff_t * offset);
|
size_t user_len, loff_t * offset);
|
||||||
static int debug_open(struct inode *inode, struct file *file);
|
static int debug_open(struct inode *inode, struct file *file);
|
||||||
static int debug_close(struct inode *inode, struct file *file);
|
static int debug_close(struct inode *inode, struct file *file);
|
||||||
static debug_info_t* debug_info_create(char *name, int pages_per_area,
|
static debug_info_t *debug_info_create(const char *name, int pages_per_area,
|
||||||
int nr_areas, int buf_size, mode_t mode);
|
int nr_areas, int buf_size, mode_t mode);
|
||||||
static void debug_info_get(debug_info_t *);
|
static void debug_info_get(debug_info_t *);
|
||||||
static void debug_info_put(debug_info_t *);
|
static void debug_info_put(debug_info_t *);
|
||||||
|
@ -234,8 +234,8 @@ fail_malloc_areas:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static debug_info_t*
|
static debug_info_t*
|
||||||
debug_info_alloc(char *name, int pages_per_area, int nr_areas, int buf_size,
|
debug_info_alloc(const char *name, int pages_per_area, int nr_areas,
|
||||||
int level, int mode)
|
int buf_size, int level, int mode)
|
||||||
{
|
{
|
||||||
debug_info_t* rc;
|
debug_info_t* rc;
|
||||||
|
|
||||||
|
@ -326,8 +326,8 @@ debug_info_free(debug_info_t* db_info){
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static debug_info_t*
|
static debug_info_t*
|
||||||
debug_info_create(char *name, int pages_per_area, int nr_areas, int buf_size,
|
debug_info_create(const char *name, int pages_per_area, int nr_areas,
|
||||||
mode_t mode)
|
int buf_size, mode_t mode)
|
||||||
{
|
{
|
||||||
debug_info_t* rc;
|
debug_info_t* rc;
|
||||||
|
|
||||||
|
@ -684,9 +684,9 @@ debug_close(struct inode *inode, struct file *file)
|
||||||
* - Returns handle for debug area
|
* - Returns handle for debug area
|
||||||
*/
|
*/
|
||||||
|
|
||||||
debug_info_t *debug_register_mode(char *name, int pages_per_area, int nr_areas,
|
debug_info_t *debug_register_mode(const char *name, int pages_per_area,
|
||||||
int buf_size, mode_t mode, uid_t uid,
|
int nr_areas, int buf_size, mode_t mode,
|
||||||
gid_t gid)
|
uid_t uid, gid_t gid)
|
||||||
{
|
{
|
||||||
debug_info_t *rc = NULL;
|
debug_info_t *rc = NULL;
|
||||||
|
|
||||||
|
@ -722,8 +722,8 @@ EXPORT_SYMBOL(debug_register_mode);
|
||||||
* - returns handle for debug area
|
* - returns handle for debug area
|
||||||
*/
|
*/
|
||||||
|
|
||||||
debug_info_t *debug_register(char *name, int pages_per_area, int nr_areas,
|
debug_info_t *debug_register(const char *name, int pages_per_area,
|
||||||
int buf_size)
|
int nr_areas, int buf_size)
|
||||||
{
|
{
|
||||||
return debug_register_mode(name, pages_per_area, nr_areas, buf_size,
|
return debug_register_mode(name, pages_per_area, nr_areas, buf_size,
|
||||||
S_IRUSR | S_IWUSR, 0, 0);
|
S_IRUSR | S_IWUSR, 0, 0);
|
||||||
|
|
|
@ -25,6 +25,7 @@ int show_interrupts(struct seq_file *p, void *v)
|
||||||
static const char *intrclass_names[] = { "EXT", "I/O", };
|
static const char *intrclass_names[] = { "EXT", "I/O", };
|
||||||
int i = *(loff_t *) v, j;
|
int i = *(loff_t *) v, j;
|
||||||
|
|
||||||
|
get_online_cpus();
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
seq_puts(p, " ");
|
seq_puts(p, " ");
|
||||||
for_each_online_cpu(j)
|
for_each_online_cpu(j)
|
||||||
|
@ -43,7 +44,7 @@ int show_interrupts(struct seq_file *p, void *v)
|
||||||
seq_putc(p, '\n');
|
seq_putc(p, '\n');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
put_online_cpus();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,6 @@ static void __smp_call_function_map(void (*func) (void *info), void *info,
|
||||||
if (wait)
|
if (wait)
|
||||||
data.finished = CPU_MASK_NONE;
|
data.finished = CPU_MASK_NONE;
|
||||||
|
|
||||||
spin_lock(&call_lock);
|
|
||||||
call_data = &data;
|
call_data = &data;
|
||||||
|
|
||||||
for_each_cpu_mask(cpu, map)
|
for_each_cpu_mask(cpu, map)
|
||||||
|
@ -151,7 +150,6 @@ static void __smp_call_function_map(void (*func) (void *info), void *info,
|
||||||
if (wait)
|
if (wait)
|
||||||
while (!cpus_equal(map, data.finished))
|
while (!cpus_equal(map, data.finished))
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
spin_unlock(&call_lock);
|
|
||||||
out:
|
out:
|
||||||
if (local) {
|
if (local) {
|
||||||
local_irq_disable();
|
local_irq_disable();
|
||||||
|
@ -177,11 +175,11 @@ int smp_call_function(void (*func) (void *info), void *info, int nonatomic,
|
||||||
{
|
{
|
||||||
cpumask_t map;
|
cpumask_t map;
|
||||||
|
|
||||||
preempt_disable();
|
spin_lock(&call_lock);
|
||||||
map = cpu_online_map;
|
map = cpu_online_map;
|
||||||
cpu_clear(smp_processor_id(), map);
|
cpu_clear(smp_processor_id(), map);
|
||||||
__smp_call_function_map(func, info, nonatomic, wait, map);
|
__smp_call_function_map(func, info, nonatomic, wait, map);
|
||||||
preempt_enable();
|
spin_unlock(&call_lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(smp_call_function);
|
EXPORT_SYMBOL(smp_call_function);
|
||||||
|
@ -202,10 +200,10 @@ EXPORT_SYMBOL(smp_call_function);
|
||||||
int smp_call_function_single(int cpu, void (*func) (void *info), void *info,
|
int smp_call_function_single(int cpu, void (*func) (void *info), void *info,
|
||||||
int nonatomic, int wait)
|
int nonatomic, int wait)
|
||||||
{
|
{
|
||||||
preempt_disable();
|
spin_lock(&call_lock);
|
||||||
__smp_call_function_map(func, info, nonatomic, wait,
|
__smp_call_function_map(func, info, nonatomic, wait,
|
||||||
cpumask_of_cpu(cpu));
|
cpumask_of_cpu(cpu));
|
||||||
preempt_enable();
|
spin_unlock(&call_lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(smp_call_function_single);
|
EXPORT_SYMBOL(smp_call_function_single);
|
||||||
|
@ -228,10 +226,10 @@ EXPORT_SYMBOL(smp_call_function_single);
|
||||||
int smp_call_function_mask(cpumask_t mask, void (*func)(void *), void *info,
|
int smp_call_function_mask(cpumask_t mask, void (*func)(void *), void *info,
|
||||||
int wait)
|
int wait)
|
||||||
{
|
{
|
||||||
preempt_disable();
|
spin_lock(&call_lock);
|
||||||
cpu_clear(smp_processor_id(), mask);
|
cpu_clear(smp_processor_id(), mask);
|
||||||
__smp_call_function_map(func, info, 0, wait, mask);
|
__smp_call_function_map(func, info, 0, wait, mask);
|
||||||
preempt_enable();
|
spin_unlock(&call_lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(smp_call_function_mask);
|
EXPORT_SYMBOL(smp_call_function_mask);
|
||||||
|
@ -592,7 +590,9 @@ int __cpuinit start_secondary(void *cpuvoid)
|
||||||
pfault_init();
|
pfault_init();
|
||||||
|
|
||||||
/* Mark this cpu as online */
|
/* Mark this cpu as online */
|
||||||
|
spin_lock(&call_lock);
|
||||||
cpu_set(smp_processor_id(), cpu_online_map);
|
cpu_set(smp_processor_id(), cpu_online_map);
|
||||||
|
spin_unlock(&call_lock);
|
||||||
/* Switch on interrupts */
|
/* Switch on interrupts */
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
/* Print info about this processor */
|
/* Print info about this processor */
|
||||||
|
|
|
@ -27,19 +27,12 @@ struct memory_segment {
|
||||||
|
|
||||||
static LIST_HEAD(mem_segs);
|
static LIST_HEAD(mem_segs);
|
||||||
|
|
||||||
static void __ref *vmem_alloc_pages(unsigned int order)
|
static pud_t *vmem_pud_alloc(void)
|
||||||
{
|
|
||||||
if (slab_is_available())
|
|
||||||
return (void *)__get_free_pages(GFP_KERNEL, order);
|
|
||||||
return alloc_bootmem_pages((1 << order) * PAGE_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline pud_t *vmem_pud_alloc(void)
|
|
||||||
{
|
{
|
||||||
pud_t *pud = NULL;
|
pud_t *pud = NULL;
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
pud = vmem_alloc_pages(2);
|
pud = vmemmap_alloc_block(PAGE_SIZE * 4, 0);
|
||||||
if (!pud)
|
if (!pud)
|
||||||
return NULL;
|
return NULL;
|
||||||
clear_table((unsigned long *) pud, _REGION3_ENTRY_EMPTY, PAGE_SIZE * 4);
|
clear_table((unsigned long *) pud, _REGION3_ENTRY_EMPTY, PAGE_SIZE * 4);
|
||||||
|
@ -47,12 +40,12 @@ static inline pud_t *vmem_pud_alloc(void)
|
||||||
return pud;
|
return pud;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline pmd_t *vmem_pmd_alloc(void)
|
static pmd_t *vmem_pmd_alloc(void)
|
||||||
{
|
{
|
||||||
pmd_t *pmd = NULL;
|
pmd_t *pmd = NULL;
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
pmd = vmem_alloc_pages(2);
|
pmd = vmemmap_alloc_block(PAGE_SIZE * 4, 0);
|
||||||
if (!pmd)
|
if (!pmd)
|
||||||
return NULL;
|
return NULL;
|
||||||
clear_table((unsigned long *) pmd, _SEGMENT_ENTRY_EMPTY, PAGE_SIZE * 4);
|
clear_table((unsigned long *) pmd, _SEGMENT_ENTRY_EMPTY, PAGE_SIZE * 4);
|
||||||
|
@ -60,7 +53,7 @@ static inline pmd_t *vmem_pmd_alloc(void)
|
||||||
return pmd;
|
return pmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
static pte_t __init_refok *vmem_pte_alloc(void)
|
static pte_t __ref *vmem_pte_alloc(void)
|
||||||
{
|
{
|
||||||
pte_t *pte;
|
pte_t *pte;
|
||||||
|
|
||||||
|
@ -214,7 +207,7 @@ int __meminit vmemmap_populate(struct page *start, unsigned long nr, int node)
|
||||||
if (pte_none(*pt_dir)) {
|
if (pte_none(*pt_dir)) {
|
||||||
unsigned long new_page;
|
unsigned long new_page;
|
||||||
|
|
||||||
new_page =__pa(vmem_alloc_pages(0));
|
new_page =__pa(vmemmap_alloc_block(PAGE_SIZE, 0));
|
||||||
if (!new_page)
|
if (!new_page)
|
||||||
goto out;
|
goto out;
|
||||||
pte = pfn_pte(new_page >> PAGE_SHIFT, PAGE_KERNEL);
|
pte = pfn_pte(new_page >> PAGE_SHIFT, PAGE_KERNEL);
|
||||||
|
|
|
@ -925,6 +925,8 @@ static void dasd_handle_killed_request(struct ccw_device *cdev,
|
||||||
struct dasd_ccw_req *cqr;
|
struct dasd_ccw_req *cqr;
|
||||||
struct dasd_device *device;
|
struct dasd_device *device;
|
||||||
|
|
||||||
|
if (!intparm)
|
||||||
|
return;
|
||||||
cqr = (struct dasd_ccw_req *) intparm;
|
cqr = (struct dasd_ccw_req *) intparm;
|
||||||
if (cqr->status != DASD_CQR_IN_IO) {
|
if (cqr->status != DASD_CQR_IN_IO) {
|
||||||
MESSAGE(KERN_DEBUG,
|
MESSAGE(KERN_DEBUG,
|
||||||
|
@ -976,17 +978,16 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,
|
||||||
if (IS_ERR(irb)) {
|
if (IS_ERR(irb)) {
|
||||||
switch (PTR_ERR(irb)) {
|
switch (PTR_ERR(irb)) {
|
||||||
case -EIO:
|
case -EIO:
|
||||||
dasd_handle_killed_request(cdev, intparm);
|
|
||||||
break;
|
break;
|
||||||
case -ETIMEDOUT:
|
case -ETIMEDOUT:
|
||||||
printk(KERN_WARNING"%s(%s): request timed out\n",
|
printk(KERN_WARNING"%s(%s): request timed out\n",
|
||||||
__func__, cdev->dev.bus_id);
|
__func__, cdev->dev.bus_id);
|
||||||
//FIXME - dasd uses own timeout interface...
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printk(KERN_WARNING"%s(%s): unknown error %ld\n",
|
printk(KERN_WARNING"%s(%s): unknown error %ld\n",
|
||||||
__func__, cdev->dev.bus_id, PTR_ERR(irb));
|
__func__, cdev->dev.bus_id, PTR_ERR(irb));
|
||||||
}
|
}
|
||||||
|
dasd_handle_killed_request(cdev, intparm);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,10 +86,10 @@ static DEFINE_SPINLOCK(dasd_devmap_lock);
|
||||||
static struct list_head dasd_hashlists[256];
|
static struct list_head dasd_hashlists[256];
|
||||||
int dasd_max_devindex;
|
int dasd_max_devindex;
|
||||||
|
|
||||||
static struct dasd_devmap *dasd_add_busid(char *, int);
|
static struct dasd_devmap *dasd_add_busid(const char *, int);
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
dasd_hash_busid(char *bus_id)
|
dasd_hash_busid(const char *bus_id)
|
||||||
{
|
{
|
||||||
int hash, i;
|
int hash, i;
|
||||||
|
|
||||||
|
@ -394,7 +394,7 @@ dasd_parse(void)
|
||||||
* devices.
|
* devices.
|
||||||
*/
|
*/
|
||||||
static struct dasd_devmap *
|
static struct dasd_devmap *
|
||||||
dasd_add_busid(char *bus_id, int features)
|
dasd_add_busid(const char *bus_id, int features)
|
||||||
{
|
{
|
||||||
struct dasd_devmap *devmap, *new, *tmp;
|
struct dasd_devmap *devmap, *new, *tmp;
|
||||||
int hash;
|
int hash;
|
||||||
|
@ -430,7 +430,7 @@ dasd_add_busid(char *bus_id, int features)
|
||||||
* Find devmap for device with given bus_id.
|
* Find devmap for device with given bus_id.
|
||||||
*/
|
*/
|
||||||
static struct dasd_devmap *
|
static struct dasd_devmap *
|
||||||
dasd_find_busid(char *bus_id)
|
dasd_find_busid(const char *bus_id)
|
||||||
{
|
{
|
||||||
struct dasd_devmap *devmap, *tmp;
|
struct dasd_devmap *devmap, *tmp;
|
||||||
int hash;
|
int hash;
|
||||||
|
@ -452,7 +452,7 @@ dasd_find_busid(char *bus_id)
|
||||||
* Check if busid has been added to the list of dasd ranges.
|
* Check if busid has been added to the list of dasd ranges.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
dasd_busid_known(char *bus_id)
|
dasd_busid_known(const char *bus_id)
|
||||||
{
|
{
|
||||||
return IS_ERR(dasd_find_busid(bus_id)) ? -ENOENT : 0;
|
return IS_ERR(dasd_find_busid(bus_id)) ? -ENOENT : 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -598,7 +598,7 @@ struct dasd_device *dasd_device_from_cdev_locked(struct ccw_device *);
|
||||||
struct dasd_device *dasd_device_from_devindex(int);
|
struct dasd_device *dasd_device_from_devindex(int);
|
||||||
|
|
||||||
int dasd_parse(void);
|
int dasd_parse(void);
|
||||||
int dasd_busid_known(char *);
|
int dasd_busid_known(const char *);
|
||||||
|
|
||||||
/* externals in dasd_gendisk.c */
|
/* externals in dasd_gendisk.c */
|
||||||
int dasd_gendisk_init(void);
|
int dasd_gendisk_init(void);
|
||||||
|
|
|
@ -76,32 +76,9 @@ const char *tape_op_verbose[TO_SIZE] =
|
||||||
[TO_KEKL_QUERY] = "KLQ",[TO_RDC] = "RDC",
|
[TO_KEKL_QUERY] = "KLQ",[TO_RDC] = "RDC",
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int devid_to_int(struct ccw_dev_id *dev_id)
|
||||||
busid_to_int(char *bus_id)
|
|
||||||
{
|
{
|
||||||
int dec;
|
return dev_id->devno + (dev_id->ssid << 16);
|
||||||
int d;
|
|
||||||
char * s;
|
|
||||||
|
|
||||||
for(s = bus_id, d = 0; *s != '\0' && *s != '.'; s++)
|
|
||||||
d = (d * 10) + (*s - '0');
|
|
||||||
dec = d;
|
|
||||||
for(s++, d = 0; *s != '\0' && *s != '.'; s++)
|
|
||||||
d = (d * 10) + (*s - '0');
|
|
||||||
dec = (dec << 8) + d;
|
|
||||||
|
|
||||||
for(s++; *s != '\0'; s++) {
|
|
||||||
if (*s >= '0' && *s <= '9') {
|
|
||||||
d = *s - '0';
|
|
||||||
} else if (*s >= 'a' && *s <= 'f') {
|
|
||||||
d = *s - 'a' + 10;
|
|
||||||
} else {
|
|
||||||
d = *s - 'A' + 10;
|
|
||||||
}
|
|
||||||
dec = (dec << 4) + d;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -551,6 +528,7 @@ tape_generic_probe(struct ccw_device *cdev)
|
||||||
{
|
{
|
||||||
struct tape_device *device;
|
struct tape_device *device;
|
||||||
int ret;
|
int ret;
|
||||||
|
struct ccw_dev_id dev_id;
|
||||||
|
|
||||||
device = tape_alloc_device();
|
device = tape_alloc_device();
|
||||||
if (IS_ERR(device))
|
if (IS_ERR(device))
|
||||||
|
@ -565,7 +543,8 @@ tape_generic_probe(struct ccw_device *cdev)
|
||||||
cdev->dev.driver_data = device;
|
cdev->dev.driver_data = device;
|
||||||
cdev->handler = __tape_do_irq;
|
cdev->handler = __tape_do_irq;
|
||||||
device->cdev = cdev;
|
device->cdev = cdev;
|
||||||
device->cdev_id = busid_to_int(cdev->dev.bus_id);
|
ccw_device_get_id(cdev, &dev_id);
|
||||||
|
device->cdev_id = devid_to_int(&dev_id);
|
||||||
PRINT_INFO("tape device %s found\n", cdev->dev.bus_id);
|
PRINT_INFO("tape device %s found\n", cdev->dev.bus_id);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -858,7 +858,7 @@ static int __init vmlogrdr_init(void)
|
||||||
for (i=0; i < MAXMINOR; ++i ) {
|
for (i=0; i < MAXMINOR; ++i ) {
|
||||||
sys_ser[i].buffer = (char *) get_zeroed_page(GFP_KERNEL);
|
sys_ser[i].buffer = (char *) get_zeroed_page(GFP_KERNEL);
|
||||||
if (!sys_ser[i].buffer) {
|
if (!sys_ser[i].buffer) {
|
||||||
rc = ENOMEM;
|
rc = -ENOMEM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sys_ser[i].current_position = sys_ser[i].buffer;
|
sys_ser[i].current_position = sys_ser[i].buffer;
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
#include <asm/cio.h>
|
#include <asm/cio.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/cio.h>
|
|
||||||
|
|
||||||
#include "blacklist.h"
|
#include "blacklist.h"
|
||||||
#include "cio.h"
|
#include "cio.h"
|
||||||
|
|
|
@ -243,16 +243,10 @@ __ccw_device_do_pgid(struct ccw_device *cdev, __u8 func)
|
||||||
/* Setup sense path group id channel program. */
|
/* Setup sense path group id channel program. */
|
||||||
cdev->private->pgid[0].inf.fc = func;
|
cdev->private->pgid[0].inf.fc = func;
|
||||||
ccw = cdev->private->iccws;
|
ccw = cdev->private->iccws;
|
||||||
if (!cdev->private->flags.pgid_single) {
|
if (cdev->private->flags.pgid_single)
|
||||||
cdev->private->pgid[0].inf.fc |= SPID_FUNC_MULTI_PATH;
|
|
||||||
ccw->cmd_code = CCW_CMD_SUSPEND_RECONN;
|
|
||||||
ccw->cda = 0;
|
|
||||||
ccw->count = 0;
|
|
||||||
ccw->flags = CCW_FLAG_SLI | CCW_FLAG_CC;
|
|
||||||
ccw++;
|
|
||||||
} else
|
|
||||||
cdev->private->pgid[0].inf.fc |= SPID_FUNC_SINGLE_PATH;
|
cdev->private->pgid[0].inf.fc |= SPID_FUNC_SINGLE_PATH;
|
||||||
|
else
|
||||||
|
cdev->private->pgid[0].inf.fc |= SPID_FUNC_MULTI_PATH;
|
||||||
ccw->cmd_code = CCW_CMD_SET_PGID;
|
ccw->cmd_code = CCW_CMD_SET_PGID;
|
||||||
ccw->cda = (__u32) __pa (&cdev->private->pgid[0]);
|
ccw->cda = (__u32) __pa (&cdev->private->pgid[0]);
|
||||||
ccw->count = sizeof (struct pgid);
|
ccw->count = sizeof (struct pgid);
|
||||||
|
|
|
@ -120,10 +120,10 @@ debug_entry_t* debug_exception_common(debug_info_t* id, int level,
|
||||||
|
|
||||||
/* Debug Feature API: */
|
/* Debug Feature API: */
|
||||||
|
|
||||||
debug_info_t* debug_register(char* name, int pages, int nr_areas,
|
debug_info_t *debug_register(const char *name, int pages, int nr_areas,
|
||||||
int buf_size);
|
int buf_size);
|
||||||
|
|
||||||
debug_info_t *debug_register_mode(char *name, int pages, int nr_areas,
|
debug_info_t *debug_register_mode(const char *name, int pages, int nr_areas,
|
||||||
int buf_size, mode_t mode, uid_t uid,
|
int buf_size, mode_t mode, uid_t uid,
|
||||||
gid_t gid);
|
gid_t gid);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue