Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 75635
b: refs/heads/master
c: 87b4b66
h: refs/heads/master
i:
  75633: 99d5e4d
  75631: ad44541
v: v3
  • Loading branch information
Bjorn Helgaas authored and Mark M. Hoffman committed Jan 22, 2008
1 parent 67f4f30 commit 2cb911b
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ac935cb533b89a69e18ad175656910848ea0d79e
refs/heads/master: 87b4b6634ac112ddfe7b92aae50eb4bf7b128d1a
12 changes: 10 additions & 2 deletions trunk/arch/x86/kernel/io_apic_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -2169,10 +2169,14 @@ static inline void __init check_timer(void)
{
int apic1, pin1, apic2, pin2;
int vector;
unsigned int ver;
unsigned long flags;

local_irq_save(flags);

ver = apic_read(APIC_LVR);
ver = GET_APIC_VERSION(ver);

/*
* get/set the timer IRQ vector:
*/
Expand All @@ -2185,11 +2189,15 @@ static inline void __init check_timer(void)
* mode for the 8259A whenever interrupts are routed
* through I/O APICs. Also IRQ0 has to be enabled in
* the 8259A which implies the virtual wire has to be
* disabled in the local APIC.
* disabled in the local APIC. Finally timer interrupts
* need to be acknowledged manually in the 8259A for
* timer_interrupt() and for the i82489DX when using
* the NMI watchdog.
*/
apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
init_8259A(1);
timer_ack = 1;
timer_ack = !cpu_has_tsc;
timer_ack |= (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver));
if (timer_over_8254 > 0)
enable_8259A_irq(0);

Expand Down
9 changes: 7 additions & 2 deletions trunk/arch/x86/kernel/nmi_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

#include <asm/smp.h>
#include <asm/nmi.h>
#include <asm/timer.h>

#include "mach_traps.h"

Expand Down Expand Up @@ -83,7 +84,7 @@ static int __init check_nmi_watchdog(void)

prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL);
if (!prev_nmi_count)
return -1;
goto error;

printk(KERN_INFO "Testing NMI watchdog ... ");

Expand Down Expand Up @@ -118,7 +119,7 @@ static int __init check_nmi_watchdog(void)
if (!atomic_read(&nmi_active)) {
kfree(prev_nmi_count);
atomic_set(&nmi_active, -1);
return -1;
goto error;
}
printk("OK.\n");

Expand All @@ -129,6 +130,10 @@ static int __init check_nmi_watchdog(void)

kfree(prev_nmi_count);
return 0;
error:
timer_ack = !cpu_has_tsc;

return -1;
}
/* This needs to happen later in boot so counters are working */
late_initcall(check_nmi_watchdog);
Expand Down
32 changes: 23 additions & 9 deletions trunk/drivers/hwmon/it87.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@
it87.c - Part of lm_sensors, Linux kernel modules for hardware
monitoring.
The IT8705F is an LPC-based Super I/O part that contains UARTs, a
parallel port, an IR port, a MIDI port, a floppy controller, etc., in
addition to an Environment Controller (Enhanced Hardware Monitor and
Fan Controller)
This driver supports only the Environment Controller in the IT8705F and
similar parts. The other devices are supported by different drivers.
Supports: IT8705F Super I/O chip w/LPC interface
IT8712F Super I/O chip w/LPC interface
IT8716F Super I/O chip w/LPC interface
Expand Down Expand Up @@ -118,9 +126,15 @@ static int fix_pwm_polarity;
/* Length of ISA address segment */
#define IT87_EXTENT 8

/* Where are the ISA address/data registers relative to the base address */
#define IT87_ADDR_REG_OFFSET 5
#define IT87_DATA_REG_OFFSET 6
/* Length of ISA address segment for Environmental Controller */
#define IT87_EC_EXTENT 2

/* Offset of EC registers from ISA base address */
#define IT87_EC_OFFSET 5

/* Where are the ISA address/data registers relative to the EC base address */
#define IT87_ADDR_REG_OFFSET 0
#define IT87_DATA_REG_OFFSET 1

/*----- The IT87 registers -----*/

Expand Down Expand Up @@ -968,10 +982,10 @@ static int __devinit it87_probe(struct platform_device *pdev)
};

res = platform_get_resource(pdev, IORESOURCE_IO, 0);
if (!request_region(res->start, IT87_EXTENT, DRVNAME)) {
if (!request_region(res->start, IT87_EC_EXTENT, DRVNAME)) {
dev_err(dev, "Failed to request region 0x%lx-0x%lx\n",
(unsigned long)res->start,
(unsigned long)(res->start + IT87_EXTENT - 1));
(unsigned long)(res->start + IT87_EC_EXTENT - 1));
err = -EBUSY;
goto ERROR0;
}
Expand Down Expand Up @@ -1124,7 +1138,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, NULL);
kfree(data);
ERROR1:
release_region(res->start, IT87_EXTENT);
release_region(res->start, IT87_EC_EXTENT);
ERROR0:
return err;
}
Expand All @@ -1137,7 +1151,7 @@ static int __devexit it87_remove(struct platform_device *pdev)
sysfs_remove_group(&pdev->dev.kobj, &it87_group);
sysfs_remove_group(&pdev->dev.kobj, &it87_group_opt);

release_region(data->addr, IT87_EXTENT);
release_region(data->addr, IT87_EC_EXTENT);
platform_set_drvdata(pdev, NULL);
kfree(data);

Expand Down Expand Up @@ -1402,8 +1416,8 @@ static int __init it87_device_add(unsigned short address,
const struct it87_sio_data *sio_data)
{
struct resource res = {
.start = address ,
.end = address + IT87_EXTENT - 1,
.start = address + IT87_EC_OFFSET,
.end = address + IT87_EC_OFFSET + IT87_EC_EXTENT - 1,
.name = DRVNAME,
.flags = IORESOURCE_IO,
};
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/w1/slaves/w1_therm.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ static struct w1_therm_family_converter w1_therm_families[] = {

static inline int w1_DS18B20_convert_temp(u8 rom[9])
{
s16 t = (rom[1] << 8) | rom[0];
int t = (rom[1] << 8) | rom[0];
t /= 16;
return t;
}
Expand Down Expand Up @@ -204,7 +204,7 @@ static ssize_t w1_therm_read_bin(struct kobject *kobj,

crc = w1_calc_crc8(rom, 8);

if (rom[8] == crc)
if (rom[8] == crc && rom[0])
verdict = 1;
}
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/kernel/rcupdate.c
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@ static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp,
rdp->blimit = blimit;
}

static void __cpuinit rcu_online_cpu(int cpu)
static void __devinit rcu_online_cpu(int cpu)
{
struct rcu_data *rdp = &per_cpu(rcu_data, cpu);
struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu);
Expand Down
8 changes: 0 additions & 8 deletions trunk/kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -7153,14 +7153,6 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares)
{
int i;

/*
* A weight of 0 or 1 can cause arithmetics problems.
* (The default weight is 1024 - so there's no practical
* limitation from this.)
*/
if (shares < 2)
shares = 2;

spin_lock(&tg->lock);
if (tg->shares == shares)
goto done;
Expand Down

0 comments on commit 2cb911b

Please sign in to comment.