Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 108849
b: refs/heads/master
c: 9bfa35f
h: refs/heads/master
i:
  108847: 9303e01
v: v3
  • Loading branch information
Marcel Holtmann committed Aug 18, 2008
1 parent cf71dff commit 8d4a6ad
Show file tree
Hide file tree
Showing 409 changed files with 6,596 additions and 21,430 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: f3b9605d744df537dee10fd06630f35a62b343ec
refs/heads/master: 9bfa35fe422c74882e27cc54450a5f76c96aad68
3 changes: 3 additions & 0 deletions trunk/Documentation/devices.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2560,6 +2560,9 @@ Your cooperation is appreciated.
96 = /dev/usb/hiddev0 1st USB HID device
...
111 = /dev/usb/hiddev15 16th USB HID device
112 = /dev/usb/auer0 1st auerswald ISDN device
...
127 = /dev/usb/auer15 16th auerswald ISDN device
128 = /dev/usb/brlvgr0 First Braille Voyager device
...
131 = /dev/usb/brlvgr3 Fourth Braille Voyager device
Expand Down
1 change: 1 addition & 0 deletions trunk/Documentation/ioctl-number.txt
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ Code Seq# Include File Comments
'T' all linux/soundcard.h conflict!
'T' all asm-i386/ioctls.h conflict!
'U' 00-EF linux/drivers/usb/usb.h
'U' F0-FF drivers/usb/auerswald.c
'V' all linux/vt.h
'W' 00-1F linux/watchdog.h conflict!
'W' 00-1F linux/wanrouter.h conflict!
Expand Down
5 changes: 0 additions & 5 deletions trunk/Documentation/rfkill.txt
Original file line number Diff line number Diff line change
Expand Up @@ -363,11 +363,6 @@ This rule exists because users of the rfkill subsystem expect to get (and set,
when possible) the overall transmitter rfkill state, not of a particular rfkill
line.

5. During suspend, the rfkill class will attempt to soft-block the radio
through a call to rfkill->toggle_radio, and will try to restore its previous
state during resume. After a rfkill class is suspended, it will *not* call
rfkill->toggle_radio until it is resumed.

Example of a WLAN wireless driver connected to the rfkill subsystem:
--------------------------------------------------------------------

Expand Down
30 changes: 30 additions & 0 deletions trunk/Documentation/usb/auerswald.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Auerswald USB kernel driver
===========================

What is it? What can I do with it?
==================================
The auerswald USB kernel driver connects your linux 2.4.x
system to the auerswald usb-enabled devices.

There are two types of auerswald usb devices:
a) small PBX systems (ISDN)
b) COMfort system telephones (ISDN)

The driver installation creates the devices
/dev/usb/auer0..15. These devices carry a vendor-
specific protocol. You may run all auerswald java
software on it. The java software needs a native
library "libAuerUsbJNINative.so" installed on
your system. This library is available from
auerswald and shipped as part of the java software.

You may create the devices with:
mknod -m 666 /dev/usb/auer0 c 180 112
...
mknod -m 666 /dev/usb/auer15 c 180 127

Future plans
============
- Connection to ISDN4LINUX (the hisax interface)

The maintainer of this driver is wolfgang@iksw-muees.de
7 changes: 1 addition & 6 deletions trunk/Documentation/usb/power-management.txt
Original file line number Diff line number Diff line change
Expand Up @@ -436,12 +436,7 @@ post_reset; the USB core guarantees that this is true of internal
suspend/resume events as well.

If a driver wants to block all suspend/resume calls during some
critical section, it can simply acquire udev->pm_mutex. Note that
calls to resume may be triggered indirectly. Block IO due to memory
allocations can make the vm subsystem resume a device. Thus while
holding this lock you must not allocate memory with GFP_KERNEL or
GFP_NOFS.

critical section, it can simply acquire udev->pm_mutex.
Alternatively, if the critical section might call some of the
usb_autopm_* routines, the driver can avoid deadlock by doing:

Expand Down
13 changes: 6 additions & 7 deletions trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -2928,12 +2928,6 @@ M: jirislaby@gmail.com
L: linux-kernel@vger.kernel.org
S: Maintained

MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
P: Felipe Balbi
M: felipe.balbi@nokia.com
L: linux-usb@vger.kernel.org
S: Maintained

MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
P: Andrew Gallatin
M: gallatin@myri.com
Expand Down Expand Up @@ -3082,7 +3076,6 @@ M: horms@verge.net.au
P: Julian Anastasov
M: ja@ssi.bg
L: netdev@vger.kernel.org
L: lvs-devel@vger.kernel.org
S: Maintained

NFS, SUNRPC, AND LOCKD CLIENTS
Expand Down Expand Up @@ -4202,6 +4195,12 @@ M: oliver@neukum.name
L: linux-usb@vger.kernel.org
S: Maintained

USB AUERSWALD DRIVER
P: Wolfgang Muees
M: wolfgang@iksw-muees.de
L: linux-usb@vger.kernel.org
S: Maintained

USB BLOCK DRIVER (UB ub)
P: Pete Zaitcev
M: zaitcev@redhat.com
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-omap2/usb-tusb6010.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@ tusb6010_setup_interface(struct musb_hdrc_platform_data *data,
printk(error, 6, status);
return -ENODEV;
}
data->multipoint = 1;
tusb_device.dev.platform_data = data;

/* REVISIT let the driver know what DMA channels work */
Expand Down
4 changes: 0 additions & 4 deletions trunk/arch/sparc/include/asm/irq_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,4 @@ static inline unsigned long get_softint(void)
void __trigger_all_cpu_backtrace(void);
#define trigger_all_cpu_backtrace() __trigger_all_cpu_backtrace()

extern void *hardirq_stack[NR_CPUS];
extern void *softirq_stack[NR_CPUS];
#define __ARCH_HAS_DO_SOFTIRQ

#endif
3 changes: 2 additions & 1 deletion trunk/arch/sparc/include/asm/of_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ struct of_device
extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name);
extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size);

/* This is just here during the transition */
/* These are just here during the transition */
#include <linux/of_device.h>
#include <linux/of_platform.h>

#endif /* __KERNEL__ */
Expand Down
52 changes: 0 additions & 52 deletions trunk/arch/sparc64/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -682,32 +682,10 @@ void ack_bad_irq(unsigned int virt_irq)
ino, virt_irq);
}

void *hardirq_stack[NR_CPUS];
void *softirq_stack[NR_CPUS];

static __attribute__((always_inline)) void *set_hardirq_stack(void)
{
void *orig_sp, *sp = hardirq_stack[smp_processor_id()];

__asm__ __volatile__("mov %%sp, %0" : "=r" (orig_sp));
if (orig_sp < sp ||
orig_sp > (sp + THREAD_SIZE)) {
sp += THREAD_SIZE - 192 - STACK_BIAS;
__asm__ __volatile__("mov %0, %%sp" : : "r" (sp));
}

return orig_sp;
}
static __attribute__((always_inline)) void restore_hardirq_stack(void *orig_sp)
{
__asm__ __volatile__("mov %0, %%sp" : : "r" (orig_sp));
}

void handler_irq(int irq, struct pt_regs *regs)
{
unsigned long pstate, bucket_pa;
struct pt_regs *old_regs;
void *orig_sp;

clear_softint(1 << irq);

Expand All @@ -725,8 +703,6 @@ void handler_irq(int irq, struct pt_regs *regs)
"i" (PSTATE_IE)
: "memory");

orig_sp = set_hardirq_stack();

while (bucket_pa) {
struct irq_desc *desc;
unsigned long next_pa;
Expand All @@ -743,38 +719,10 @@ void handler_irq(int irq, struct pt_regs *regs)
bucket_pa = next_pa;
}

restore_hardirq_stack(orig_sp);

irq_exit();
set_irq_regs(old_regs);
}

void do_softirq(void)
{
unsigned long flags;

if (in_interrupt())
return;

local_irq_save(flags);

if (local_softirq_pending()) {
void *orig_sp, *sp = softirq_stack[smp_processor_id()];

sp += THREAD_SIZE - 192 - STACK_BIAS;

__asm__ __volatile__("mov %%sp, %0\n\t"
"mov %1, %%sp"
: "=&r" (orig_sp)
: "r" (sp));
__do_softirq();
__asm__ __volatile__("mov %0, %%sp"
: : "r" (orig_sp));
}

local_irq_restore(flags);
}

#ifdef CONFIG_HOTPLUG_CPU
void fixup_irqs(void)
{
Expand Down
60 changes: 0 additions & 60 deletions trunk/arch/sparc64/kernel/kstack.h

This file was deleted.

27 changes: 20 additions & 7 deletions trunk/arch/sparc64/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@
#include <asm/irq_regs.h>
#include <asm/smp.h>

#include "kstack.h"

static void sparc64_yield(int cpu)
{
if (tlb_type != hypervisor)
Expand Down Expand Up @@ -237,6 +235,19 @@ void show_regs(struct pt_regs *regs)
struct global_reg_snapshot global_reg_snapshot[NR_CPUS];
static DEFINE_SPINLOCK(global_reg_snapshot_lock);

static bool kstack_valid(struct thread_info *tp, struct reg_window *rw)
{
unsigned long thread_base, fp;

thread_base = (unsigned long) tp;
fp = (unsigned long) rw;

if (fp < (thread_base + sizeof(struct thread_info)) ||
fp >= (thread_base + THREAD_SIZE))
return false;
return true;
}

static void __global_reg_self(struct thread_info *tp, struct pt_regs *regs,
int this_cpu)
{
Expand All @@ -253,11 +264,11 @@ static void __global_reg_self(struct thread_info *tp, struct pt_regs *regs,

rw = (struct reg_window *)
(regs->u_regs[UREG_FP] + STACK_BIAS);
if (kstack_valid(tp, (unsigned long) rw)) {
if (kstack_valid(tp, rw)) {
global_reg_snapshot[this_cpu].i7 = rw->ins[7];
rw = (struct reg_window *)
(rw->ins[6] + STACK_BIAS);
if (kstack_valid(tp, (unsigned long) rw))
if (kstack_valid(tp, rw))
global_reg_snapshot[this_cpu].rpc = rw->ins[7];
}
} else {
Expand Down Expand Up @@ -817,7 +828,7 @@ asmlinkage int sparc_execve(struct pt_regs *regs)
unsigned long get_wchan(struct task_struct *task)
{
unsigned long pc, fp, bias = 0;
struct thread_info *tp;
unsigned long thread_info_base;
struct reg_window *rw;
unsigned long ret = 0;
int count = 0;
Expand All @@ -826,12 +837,14 @@ unsigned long get_wchan(struct task_struct *task)
task->state == TASK_RUNNING)
goto out;

tp = task_thread_info(task);
thread_info_base = (unsigned long) task_stack_page(task);
bias = STACK_BIAS;
fp = task_thread_info(task)->ksp + bias;

do {
if (!kstack_valid(tp, fp))
/* Bogus frame pointer? */
if (fp < (thread_info_base + sizeof(struct thread_info)) ||
fp >= (thread_info_base + THREAD_SIZE))
break;
rw = (struct reg_window *) fp;
pc = rw->ins[7];
Expand Down
4 changes: 4 additions & 0 deletions trunk/arch/sparc64/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -858,7 +858,9 @@ void smp_tsb_sync(struct mm_struct *mm)
extern unsigned long xcall_flush_tlb_mm;
extern unsigned long xcall_flush_tlb_pending;
extern unsigned long xcall_flush_tlb_kernel_range;
#ifdef CONFIG_MAGIC_SYSRQ
extern unsigned long xcall_fetch_glob_regs;
#endif
extern unsigned long xcall_receive_signal;
extern unsigned long xcall_new_mmu_context_version;
#ifdef CONFIG_KGDB
Expand Down Expand Up @@ -1003,10 +1005,12 @@ void kgdb_roundup_cpus(unsigned long flags)
}
#endif

#ifdef CONFIG_MAGIC_SYSRQ
void smp_fetch_global_regs(void)
{
smp_cross_call(&xcall_fetch_glob_regs, 0, 0, 0);
}
#endif

/* We know that the window frames of the user have been flushed
* to the stack before we get here because all callers of us
Expand Down
Loading

0 comments on commit 8d4a6ad

Please sign in to comment.