Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 41010
b: refs/heads/master
c: e030f82
h: refs/heads/master
v: v3
  • Loading branch information
Linus Torvalds committed Nov 18, 2006
1 parent ec87834 commit 7e36363
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 28 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: 1d08811d0c05cd54a778f45588ec22eee027ff89
refs/heads/master: e030f8294a5b9f8179dae10cdbf9dcf32aa64110
6 changes: 2 additions & 4 deletions trunk/CREDITS
Original file line number Diff line number Diff line change
Expand Up @@ -3511,14 +3511,12 @@ D: The Linux Support Team Erlangen

N: David Weinehall
E: tao@acc.umu.se
P: 1024D/DC47CA16 7ACE 0FB0 7A74 F994 9B36 E1D1 D14E 8526 DC47 CA16
W: http://www.acc.umu.se/~tao/
W: http://www.acc.umu.se/~mcalinux/
D: v2.0 kernel maintainer
D: Fixes for the NE/2-driver
D: Miscellaneous MCA-support
D: Cleanup of the Config-files
S: Axtorpsvagen 40:20
S: S-903 37 UMEA
S: Sweden

N: Matt Welsh
E: mdw@metalab.unc.edu
Expand Down
4 changes: 3 additions & 1 deletion trunk/arch/i386/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ void cpu_idle(void)
void cpu_idle_wait(void)
{
unsigned int cpu, this_cpu = get_cpu();
cpumask_t map;
cpumask_t map, tmp = current->cpus_allowed;

set_cpus_allowed(current, cpumask_of_cpu(this_cpu));
put_cpu();
Expand All @@ -227,6 +227,8 @@ void cpu_idle_wait(void)
}
cpus_and(map, map, cpu_online_map);
} while (!cpus_empty(map));

set_cpus_allowed(current, tmp);
}
EXPORT_SYMBOL_GPL(cpu_idle_wait);

Expand Down
10 changes: 7 additions & 3 deletions trunk/arch/i386/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,19 @@ static inline unsigned long print_context_stack(struct thread_info *tinfo,

#ifdef CONFIG_FRAME_POINTER
while (valid_stack_ptr(tinfo, (void *)ebp)) {
unsigned long new_ebp;
addr = *(unsigned long *)(ebp + 4);
ops->address(data, addr);
/*
* break out of recursive entries (such as
* end_of_stack_stop_unwind_function):
* end_of_stack_stop_unwind_function). Also,
* we can never allow a frame pointer to
* move downwards!
*/
if (ebp == *(unsigned long *)ebp)
new_ebp = *(unsigned long *)ebp;
if (new_ebp <= ebp)
break;
ebp = *(unsigned long *)ebp;
ebp = new_ebp;
}
#else
while (valid_stack_ptr(tinfo, stack)) {
Expand Down
4 changes: 3 additions & 1 deletion trunk/arch/x86_64/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ static void poll_idle (void)
void cpu_idle_wait(void)
{
unsigned int cpu, this_cpu = get_cpu();
cpumask_t map;
cpumask_t map, tmp = current->cpus_allowed;

set_cpus_allowed(current, cpumask_of_cpu(this_cpu));
put_cpu();
Expand All @@ -167,6 +167,8 @@ void cpu_idle_wait(void)
}
cpus_and(map, map, cpu_online_map);
} while (!cpus_empty(map));

set_cpus_allowed(current, tmp);
}
EXPORT_SYMBOL_GPL(cpu_idle_wait);

Expand Down
6 changes: 6 additions & 0 deletions trunk/arch/x86_64/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,12 @@ void dump_trace(struct task_struct *tsk, struct pt_regs *regs, unsigned long * s
if (tsk && tsk != current)
stack = (unsigned long *)tsk->thread.rsp;
}
/*
* Align the stack pointer on word boundary, later loops
* rely on that (and corruption / debug info bugs can cause
* unaligned values here):
*/
stack = (unsigned long *)((unsigned long)stack & ~(sizeof(long)-1));

/*
* Print function call entries within a stack. 'cond' is the
Expand Down
34 changes: 21 additions & 13 deletions trunk/drivers/acpi/osl.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ static unsigned int acpi_irq_irq;
static acpi_osd_handler acpi_irq_handler;
static void *acpi_irq_context;
static struct workqueue_struct *kacpid_wq;
static struct workqueue_struct *kacpi_notify_wq;

acpi_status acpi_os_initialize(void)
{
Expand All @@ -92,9 +91,8 @@ acpi_status acpi_os_initialize1(void)
return AE_NULL_ENTRY;
}
kacpid_wq = create_singlethread_workqueue("kacpid");
kacpi_notify_wq = create_singlethread_workqueue("kacpi_notify");
BUG_ON(!kacpid_wq);
BUG_ON(!kacpi_notify_wq);

return AE_OK;
}

Expand All @@ -106,7 +104,6 @@ acpi_status acpi_os_terminate(void)
}

destroy_workqueue(kacpid_wq);
destroy_workqueue(kacpi_notify_wq);

return AE_OK;
}
Expand Down Expand Up @@ -569,7 +566,10 @@ void acpi_os_derive_pci_id(acpi_handle rhandle, /* upper bound */

static void acpi_os_execute_deferred(void *context)
{
struct acpi_os_dpc *dpc = (struct acpi_os_dpc *)context;
struct acpi_os_dpc *dpc = NULL;


dpc = (struct acpi_os_dpc *)context;
if (!dpc) {
printk(KERN_ERR PREFIX "Invalid (NULL) context\n");
return;
Expand Down Expand Up @@ -604,12 +604,14 @@ acpi_status acpi_os_execute(acpi_execute_type type,
struct acpi_os_dpc *dpc;
struct work_struct *task;

ACPI_FUNCTION_TRACE("os_queue_for_execution");

ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
"Scheduling function [%p(%p)] for deferred execution.\n",
function, context));

if (!function)
return AE_BAD_PARAMETER;
return_ACPI_STATUS(AE_BAD_PARAMETER);

/*
* Allocate/initialize DPC structure. Note that this memory will be
Expand All @@ -622,20 +624,26 @@ acpi_status acpi_os_execute(acpi_execute_type type,
* from the same memory.
*/

dpc = kmalloc(sizeof(struct acpi_os_dpc) +
sizeof(struct work_struct), GFP_ATOMIC);
dpc =
kmalloc(sizeof(struct acpi_os_dpc) + sizeof(struct work_struct),
GFP_ATOMIC);
if (!dpc)
return AE_NO_MEMORY;
return_ACPI_STATUS(AE_NO_MEMORY);

dpc->function = function;
dpc->context = context;

task = (void *)(dpc + 1);
INIT_WORK(task, acpi_os_execute_deferred, (void *)dpc);
if (!queue_work((type == OSL_NOTIFY_HANDLER)?
kacpi_notify_wq : kacpid_wq, task)) {
status = AE_ERROR;

if (!queue_work(kacpid_wq, task)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Call to queue_work() failed.\n"));
kfree(dpc);
status = AE_ERROR;
}
return status;

return_ACPI_STATUS(status);
}

EXPORT_SYMBOL(acpi_os_execute);
Expand Down
8 changes: 7 additions & 1 deletion trunk/drivers/video/aty/radeon_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,13 @@ void radeon_delete_i2c_busses(struct radeonfb_info *rinfo)
int radeon_probe_i2c_connector(struct radeonfb_info *rinfo, int conn,
u8 **out_edid)
{
u8 *edid = fb_ddc_read(&rinfo->i2c[conn-1].adapter);
u32 reg = rinfo->i2c[conn-1].ddc_reg;
u8 *edid;

OUTREG(reg, INREG(reg) &
~(VGA_DDC_DATA_OUTPUT | VGA_DDC_CLK_OUTPUT));

edid = fb_ddc_read(&rinfo->i2c[conn-1].adapter);

if (out_edid)
*out_edid = edid;
Expand Down
6 changes: 3 additions & 3 deletions trunk/drivers/video/fb_ddc.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,26 @@
static unsigned char *fb_do_probe_ddc_edid(struct i2c_adapter *adapter)
{
unsigned char start = 0x0;
unsigned char *buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
struct i2c_msg msgs[] = {
{
.addr = DDC_ADDR,
.flags = 0,
.len = 1,
.buf = &start,
}, {
.addr = DDC_ADDR,
.flags = I2C_M_RD,
.len = EDID_LENGTH,
.buf = buf,
}
};
unsigned char *buf;

buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
if (!buf) {
dev_warn(&adapter->dev, "unable to allocate memory for EDID "
"block.\n");
return NULL;
}
msgs[1].buf = buf;

if (i2c_transfer(adapter, msgs, 2) == 2)
return buf;
Expand Down
3 changes: 2 additions & 1 deletion trunk/kernel/lockdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -1081,7 +1081,8 @@ static int static_obj(void *obj)
*/
for_each_possible_cpu(i) {
start = (unsigned long) &__per_cpu_start + per_cpu_offset(i);
end = (unsigned long) &__per_cpu_end + per_cpu_offset(i);
end = (unsigned long) &__per_cpu_start + PERCPU_ENOUGH_ROOM
+ per_cpu_offset(i);

if ((addr >= start) && (addr < end))
return 1;
Expand Down

0 comments on commit 7e36363

Please sign in to comment.