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

Commit c11eef21 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
  [S390] tod clock: announce clocksource as perfect
  [S390] Rename "idle_time" attribute to "idle_time_us".
  [S390] Fix priority mistakes in drivers/s390/cio/cmf.c
  [S390] Fix memory detection.
  [S390] Fix compile on !CONFIG_SMP.
  [S390] device_schedule_callback() for dcssblk.
  [S390] Fix smsgiucv init on no iucv machines
  [S390] cio: use INIT_WORK to initialize struct work.
parents 221d4684 d2cb0e6e
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -200,11 +200,13 @@ static noinline __init void find_memory_chunks(unsigned long memsize)
		cc = __tprot(addr);
		while (cc == old_cc) {
			addr += CHUNK_INCR;
			cc = __tprot(addr);
			if (addr >= memsize)
				break;
#ifndef CONFIG_64BIT
			if (addr == ADDR2G)
				break;
#endif
			cc = __tprot(addr);
		}

		if (old_addr != addr &&
+6 −2
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ EXPORT_SYMBOL(unregister_idle_notifier);

void do_monitor_call(struct pt_regs *regs, long interruption_code)
{
#ifdef CONFIG_SMP
	struct s390_idle_data *idle;

	idle = &__get_cpu_var(s390_idle);
@@ -99,7 +100,7 @@ void do_monitor_call(struct pt_regs *regs, long interruption_code)
	idle->idle_time += get_clock() - idle->idle_enter;
	idle->in_idle = 0;
	spin_unlock(&idle->lock);

#endif
	/* disable monitor call class 0 */
	__ctl_clear_bit(8, 15);

@@ -114,7 +115,9 @@ extern void s390_handle_mcck(void);
static void default_idle(void)
{
	int cpu, rc;
#ifdef CONFIG_SMP
	struct s390_idle_data *idle;
#endif

	/* CPU is going idle. */
	cpu = smp_processor_id();
@@ -151,13 +154,14 @@ static void default_idle(void)
		s390_handle_mcck();
		return;
	}

#ifdef CONFIG_SMP
	idle = &__get_cpu_var(s390_idle);
	spin_lock(&idle->lock);
	idle->idle_count++;
	idle->in_idle = 1;
	idle->idle_enter = get_clock();
	spin_unlock(&idle->lock);
#endif
	trace_hardirqs_on();
	/* Wait for external, I/O or machine check interrupt. */
	__load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT |
+3 −3
Original line number Diff line number Diff line
@@ -788,14 +788,14 @@ static ssize_t show_idle_time(struct sys_device *dev, char *buf)
	}
	new_time = idle->idle_time;
	spin_unlock_irq(&idle->lock);
	return sprintf(buf, "%llu us\n", new_time >> 12);
	return sprintf(buf, "%llu\n", new_time >> 12);
}
static SYSDEV_ATTR(idle_time, 0444, show_idle_time, NULL);
static SYSDEV_ATTR(idle_time_us, 0444, show_idle_time, NULL);

static struct attribute *cpu_attrs[] = {
	&attr_capability.attr,
	&attr_idle_count.attr,
	&attr_idle_time.attr,
	&attr_idle_time_us.attr,
	NULL,
};

+1 −1
Original line number Diff line number Diff line
@@ -307,7 +307,7 @@ static cycle_t read_tod_clock(void)

static struct clocksource clocksource_tod = {
	.name		= "tod",
	.rating		= 100,
	.rating		= 400,
	.read		= read_tod_clock,
	.mask		= -1ULL,
	.mult		= 1000,
+7 −2
Original line number Diff line number Diff line
@@ -193,6 +193,12 @@ dcssblk_segment_warn(int rc, char* seg_name)
	}
}

static void dcssblk_unregister_callback(struct device *dev)
{
	device_unregister(dev);
	put_device(dev);
}

/*
 * device attribute for switching shared/nonshared (exclusive)
 * operation (show + store)
@@ -276,8 +282,7 @@ dcssblk_shared_store(struct device *dev, struct device_attribute *attr, const ch
	blk_cleanup_queue(dev_info->dcssblk_queue);
	dev_info->gd->queue = NULL;
	put_disk(dev_info->gd);
	device_unregister(dev);
	put_device(dev);
	rc = device_schedule_callback(dev, dcssblk_unregister_callback);
out:
	up_write(&dcssblk_devices_sem);
	return rc;
Loading