Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (29 commits) [POWERPC] Fix rheap alignment problem [POWERPC] Use check_legacy_ioport() for ISAPnP [POWERPC] Avoid NULL pointer in gpio1_interrupt [POWERPC] Enable generic rtc hook for the MPC8349 mITX [POWERPC] Add powerpc get/set_rtc_time interface to new generic rtc class [POWERPC] Create a "wrapper" script and use it in arch/powerpc/boot [POWERPC] fix spin lock nesting in hvc_iseries [POWERPC] EEH failure to mark pci slot as frozen. [POWERPC] update powerpc defconfig files after libata kconfig breakage [POWERPC] enable sysrq in pmac32_defconfig [POWERPC] UPIO_TSI cleanup [POWERPC] rewrite mkprep and mkbugboot in sane C [POWERPC] maple/pci iomem annotations [POWERPC] powerpc oprofile __user annotations [POWERPC] cell spufs iomem annotations [POWERPC] NULL noise removal: spufs [POWERPC] ppc math-emu needs -fno-builtin-fabs for math.c and fabs.c [POWERPC] update mpc8349_itx_defconfig and remove some debug settings [POWERPC] Always call cede in pseries dedicated idle loop [POWERPC] Fix loop logic in irq_alloc_virt() ...
This commit is contained in:
@@ -777,7 +777,6 @@ unsigned int irq_alloc_virt(struct irq_host *host,
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned int i, j, found = NO_IRQ;
|
||||
unsigned int limit = irq_virq_count - count;
|
||||
|
||||
if (count == 0 || count > (irq_virq_count - NUM_ISA_INTERRUPTS))
|
||||
return NO_IRQ;
|
||||
@@ -794,14 +793,16 @@ unsigned int irq_alloc_virt(struct irq_host *host,
|
||||
/* Look for count consecutive numbers in the allocatable
|
||||
* (non-legacy) space
|
||||
*/
|
||||
for (i = NUM_ISA_INTERRUPTS; i <= limit; ) {
|
||||
for (j = i; j < (i + count); j++)
|
||||
if (irq_map[j].host != NULL) {
|
||||
i = j + 1;
|
||||
continue;
|
||||
}
|
||||
found = i;
|
||||
break;
|
||||
for (i = NUM_ISA_INTERRUPTS, j = 0; i < irq_virq_count; i++) {
|
||||
if (irq_map[i].host != NULL)
|
||||
j = 0;
|
||||
else
|
||||
j++;
|
||||
|
||||
if (j == count) {
|
||||
found = i - count + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found == NO_IRQ) {
|
||||
spin_unlock_irqrestore(&irq_big_lock, flags);
|
||||
|
||||
@@ -526,9 +526,7 @@ static void do_syscall_trace(void)
|
||||
|
||||
void do_syscall_trace_enter(struct pt_regs *regs)
|
||||
{
|
||||
#ifdef CONFIG_PPC64
|
||||
secure_computing(regs->gpr[0]);
|
||||
#endif
|
||||
|
||||
if (test_thread_flag(TIF_SYSCALL_TRACE)
|
||||
&& (current->ptrace & PT_PTRACED))
|
||||
@@ -548,12 +546,8 @@ void do_syscall_trace_enter(struct pt_regs *regs)
|
||||
|
||||
void do_syscall_trace_leave(struct pt_regs *regs)
|
||||
{
|
||||
#ifdef CONFIG_PPC32
|
||||
secure_computing(regs->gpr[0]);
|
||||
#endif
|
||||
|
||||
if (unlikely(current->audit_context))
|
||||
audit_syscall_exit((regs->ccr&0x1000)?AUDITSC_FAILURE:AUDITSC_SUCCESS,
|
||||
audit_syscall_exit((regs->ccr&0x10000000)?AUDITSC_FAILURE:AUDITSC_SUCCESS,
|
||||
regs->result);
|
||||
|
||||
if ((test_thread_flag(TIF_SYSCALL_TRACE)
|
||||
@@ -561,8 +555,3 @@ void do_syscall_trace_leave(struct pt_regs *regs)
|
||||
&& (current->ptrace & PT_PTRACED))
|
||||
do_syscall_trace();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PPC32
|
||||
EXPORT_SYMBOL(do_syscall_trace_enter);
|
||||
EXPORT_SYMBOL(do_syscall_trace_leave);
|
||||
#endif
|
||||
|
||||
@@ -25,8 +25,8 @@ static DEFINE_PER_CPU(struct cpu, cpu_devices);
|
||||
/* SMT stuff */
|
||||
|
||||
#ifdef CONFIG_PPC_MULTIPLATFORM
|
||||
/* default to snooze disabled */
|
||||
DEFINE_PER_CPU(unsigned long, smt_snooze_delay);
|
||||
/* Time in microseconds we delay before sleeping in the idle loop */
|
||||
DEFINE_PER_CPU(unsigned long, smt_snooze_delay) = { 100 };
|
||||
|
||||
static ssize_t store_smt_snooze_delay(struct sys_device *dev, const char *buf,
|
||||
size_t count)
|
||||
|
||||
@@ -1041,6 +1041,48 @@ void __init time_init(void)
|
||||
set_dec(tb_ticks_per_jiffy);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_RTC_CLASS
|
||||
static int set_rtc_class_time(struct rtc_time *tm)
|
||||
{
|
||||
int err;
|
||||
struct class_device *class_dev =
|
||||
rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
|
||||
|
||||
if (class_dev == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
err = rtc_set_time(class_dev, tm);
|
||||
|
||||
rtc_class_close(class_dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void get_rtc_class_time(struct rtc_time *tm)
|
||||
{
|
||||
int err;
|
||||
struct class_device *class_dev =
|
||||
rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
|
||||
|
||||
if (class_dev == NULL)
|
||||
return;
|
||||
|
||||
err = rtc_read_time(class_dev, tm);
|
||||
|
||||
rtc_class_close(class_dev);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
int __init rtc_class_hookup(void)
|
||||
{
|
||||
ppc_md.get_rtc_time = get_rtc_class_time;
|
||||
ppc_md.set_rtc_time = set_rtc_class_time;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_RTC_CLASS */
|
||||
|
||||
|
||||
#define FEBRUARY 2
|
||||
#define STARTOFTIME 1970
|
||||
|
||||
Reference in New Issue
Block a user