Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
49093583
Commit
49093583
authored
Oct 18, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/spare/repo/linux-2.6
into pobox.com:/spare/repo/libata-2.6
parents
8a3f059a
31a37910
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
335 additions
and
177 deletions
+335
-177
Makefile
Makefile
+1
-1
arch/ppc/Kconfig
arch/ppc/Kconfig
+0
-4
arch/ppc/kernel/pci.c
arch/ppc/kernel/pci.c
+26
-0
arch/ppc/mm/pgtable.c
arch/ppc/mm/pgtable.c
+13
-0
arch/ppc64/kernel/Makefile
arch/ppc64/kernel/Makefile
+1
-1
arch/ppc64/kernel/eeh.c
arch/ppc64/kernel/eeh.c
+0
-115
arch/ppc64/kernel/iomap.c
arch/ppc64/kernel/iomap.c
+119
-0
arch/ppc64/kernel/prom_init.c
arch/ppc64/kernel/prom_init.c
+4
-1
arch/ppc64/kernel/smp.c
arch/ppc64/kernel/smp.c
+2
-1
arch/x86_64/kernel/suspend_asm.S
arch/x86_64/kernel/suspend_asm.S
+19
-28
drivers/base/firmware_class.c
drivers/base/firmware_class.c
+2
-0
drivers/char/agp/intel-agp.c
drivers/char/agp/intel-agp.c
+1
-1
drivers/input/joystick/Kconfig
drivers/input/joystick/Kconfig
+1
-1
drivers/mtd/chips/cfi_cmdset_0001.c
drivers/mtd/chips/cfi_cmdset_0001.c
+2
-0
drivers/pci/hotplug/rpaphp_pci.c
drivers/pci/hotplug/rpaphp_pci.c
+2
-2
drivers/usb/class/usblp.c
drivers/usb/class/usblp.c
+4
-4
drivers/usb/gadget/net2280.c
drivers/usb/gadget/net2280.c
+10
-9
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-hcd.c
+9
-0
drivers/usb/host/ehci.h
drivers/usb/host/ehci.h
+1
-0
drivers/usb/input/hid-core.c
drivers/usb/input/hid-core.c
+3
-1
drivers/usb/media/konicawc.c
drivers/usb/media/konicawc.c
+1
-1
drivers/usb/serial/digi_acceleport.c
drivers/usb/serial/digi_acceleport.c
+6
-1
fs/ext3/inode.c
fs/ext3/inode.c
+6
-0
include/asm-i386/linkage.h
include/asm-i386/linkage.h
+4
-0
include/asm-ppc/io.h
include/asm-ppc/io.h
+73
-0
include/linux/linkage.h
include/linux/linkage.h
+4
-0
kernel/exit.c
kernel/exit.c
+14
-2
mm/vmscan.c
mm/vmscan.c
+6
-3
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/auth_gss/auth_gss.c
+1
-1
No files found.
Makefile
View file @
49093583
VERSION
=
2
PATCHLEVEL
=
6
SUBLEVEL
=
9
EXTRAVERSION
=
-rc4
EXTRAVERSION
=
NAME
=
Zonked Quokka
# *DOCUMENTATION*
...
...
arch/ppc/Kconfig
View file @
49093583
...
...
@@ -35,10 +35,6 @@ config GENERIC_NVRAM
bool
default y
config GENERIC_IOMAP
bool
default y
source "init/Kconfig"
menu "Processor"
...
...
arch/ppc/kernel/pci.c
View file @
49093583
...
...
@@ -1709,6 +1709,32 @@ pci_init_resource(struct resource *res, unsigned long start, unsigned long end,
res
->
child
=
NULL
;
}
void
__iomem
*
pci_iomap
(
struct
pci_dev
*
dev
,
int
bar
,
unsigned
long
max
)
{
unsigned
long
start
=
pci_resource_start
(
dev
,
bar
);
unsigned
long
len
=
pci_resource_len
(
dev
,
bar
);
unsigned
long
flags
=
pci_resource_flags
(
dev
,
bar
);
if
(
!
len
)
return
NULL
;
if
(
max
&&
len
>
max
)
len
=
max
;
if
(
flags
&
IORESOURCE_IO
)
return
ioport_map
(
start
,
len
);
if
(
flags
&
IORESOURCE_MEM
)
return
(
void
__iomem
*
)
start
;
/* What? */
return
NULL
;
}
void
pci_iounmap
(
struct
pci_dev
*
dev
,
void
__iomem
*
addr
)
{
/* Nothing to do */
}
EXPORT_SYMBOL
(
pci_iomap
);
EXPORT_SYMBOL
(
pci_iounmap
);
/*
* Null PCI config access functions, for the case when we can't
* find a hose.
...
...
arch/ppc/mm/pgtable.c
View file @
49093583
...
...
@@ -22,6 +22,7 @@
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/vmalloc.h>
...
...
@@ -271,6 +272,18 @@ void iounmap(void *addr)
vunmap
((
void
*
)
(
PAGE_MASK
&
(
unsigned
long
)
addr
));
}
void
__iomem
*
ioport_map
(
unsigned
long
port
,
unsigned
int
len
)
{
return
(
void
__iomem
*
)
(
port
+
_IO_BASE
);
}
void
ioport_unmap
(
void
__iomem
*
addr
)
{
/* Nothing to do */
}
EXPORT_SYMBOL
(
ioport_map
);
EXPORT_SYMBOL
(
ioport_unmap
);
int
map_page
(
unsigned
long
va
,
phys_addr_t
pa
,
int
flags
)
{
...
...
arch/ppc64/kernel/Makefile
View file @
49093583
...
...
@@ -19,7 +19,7 @@ pci-obj-$(CONFIG_PPC_ISERIES) += iSeries_pci.o iSeries_pci_reset.o \
iSeries_IoMmTable.o
pci-obj-$(CONFIG_PPC_MULTIPLATFORM)
+=
pci_dn.o pci_dma_direct.o
obj-$(CONFIG_PCI)
+=
pci.o pci_iommu.o
$
(
pci-obj-y
)
obj-$(CONFIG_PCI)
+=
pci.o pci_iommu.o
iomap.o
$
(
pci-obj-y
)
obj-$(CONFIG_PPC_ISERIES)
+=
iSeries_irq.o
\
iSeries_VpdInfo.o XmPciLpEvent.o
\
...
...
arch/ppc64/kernel/eeh.c
View file @
49093583
...
...
@@ -697,121 +697,6 @@ void eeh_remove_device(struct pci_dev *dev)
}
EXPORT_SYMBOL
(
eeh_remove_device
);
/*
* Here comes the EEH implementation of the IOMAP
* interfaces.
*/
unsigned
int
fastcall
ioread8
(
void
__iomem
*
addr
)
{
return
readb
(
addr
);
}
unsigned
int
fastcall
ioread16
(
void
__iomem
*
addr
)
{
return
readw
(
addr
);
}
unsigned
int
fastcall
ioread32
(
void
__iomem
*
addr
)
{
return
readl
(
addr
);
}
EXPORT_SYMBOL
(
ioread8
);
EXPORT_SYMBOL
(
ioread16
);
EXPORT_SYMBOL
(
ioread32
);
void
fastcall
iowrite8
(
u8
val
,
void
__iomem
*
addr
)
{
writeb
(
val
,
addr
);
}
void
fastcall
iowrite16
(
u16
val
,
void
__iomem
*
addr
)
{
writew
(
val
,
addr
);
}
void
fastcall
iowrite32
(
u32
val
,
void
__iomem
*
addr
)
{
writel
(
val
,
addr
);
}
EXPORT_SYMBOL
(
iowrite8
);
EXPORT_SYMBOL
(
iowrite16
);
EXPORT_SYMBOL
(
iowrite32
);
/*
* These are the "repeat read/write" functions. Note the
* non-CPU byte order. We do things in "IO byteorder"
* here.
*
* FIXME! We could make these do EEH handling if we really
* wanted. Not clear if we do.
*/
void
ioread8_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insb
((
u8
__force
*
)
addr
,
dst
,
count
);
}
void
ioread16_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insw_ns
((
u16
__force
*
)
addr
,
dst
,
count
);
}
void
ioread32_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insl_ns
((
u32
__force
*
)
addr
,
dst
,
count
);
}
EXPORT_SYMBOL
(
ioread8_rep
);
EXPORT_SYMBOL
(
ioread16_rep
);
EXPORT_SYMBOL
(
ioread32_rep
);
void
iowrite8_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsb
((
u8
__force
*
)
addr
,
src
,
count
);
}
void
iowrite16_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsw_ns
((
u16
__force
*
)
addr
,
src
,
count
);
}
void
iowrite32_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsl_ns
((
u32
__force
*
)
addr
,
src
,
count
);
}
EXPORT_SYMBOL
(
iowrite8_rep
);
EXPORT_SYMBOL
(
iowrite16_rep
);
EXPORT_SYMBOL
(
iowrite32_rep
);
void
__iomem
*
ioport_map
(
unsigned
long
port
,
unsigned
int
len
)
{
if
(
!
_IO_IS_VALID
(
port
))
return
NULL
;
return
(
void
__iomem
*
)
(
port
+
pci_io_base
);
}
void
ioport_unmap
(
void
__iomem
*
addr
)
{
/* Nothing to do */
}
EXPORT_SYMBOL
(
ioport_map
);
EXPORT_SYMBOL
(
ioport_unmap
);
void
__iomem
*
pci_iomap
(
struct
pci_dev
*
dev
,
int
bar
,
unsigned
long
max
)
{
unsigned
long
start
=
pci_resource_start
(
dev
,
bar
);
unsigned
long
len
=
pci_resource_len
(
dev
,
bar
);
unsigned
long
flags
=
pci_resource_flags
(
dev
,
bar
);
if
(
!
len
)
return
NULL
;
if
(
max
&&
len
>
max
)
len
=
max
;
if
(
flags
&
IORESOURCE_IO
)
return
ioport_map
(
start
,
len
);
if
(
flags
&
IORESOURCE_MEM
)
return
(
void
__iomem
*
)
start
;
/* What? */
return
NULL
;
}
void
pci_iounmap
(
struct
pci_dev
*
dev
,
void
__iomem
*
addr
)
{
/* Nothing to do */
}
EXPORT_SYMBOL
(
pci_iomap
);
EXPORT_SYMBOL
(
pci_iounmap
);
static
int
proc_eeh_show
(
struct
seq_file
*
m
,
void
*
v
)
{
unsigned
int
cpu
;
...
...
arch/ppc64/kernel/iomap.c
0 → 100644
View file @
49093583
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/mm.h>
#include <asm/io.h>
/*
* Here comes the ppc64 implementation of the IOMAP
* interfaces.
*/
unsigned
int
fastcall
ioread8
(
void
__iomem
*
addr
)
{
return
readb
(
addr
);
}
unsigned
int
fastcall
ioread16
(
void
__iomem
*
addr
)
{
return
readw
(
addr
);
}
unsigned
int
fastcall
ioread32
(
void
__iomem
*
addr
)
{
return
readl
(
addr
);
}
EXPORT_SYMBOL
(
ioread8
);
EXPORT_SYMBOL
(
ioread16
);
EXPORT_SYMBOL
(
ioread32
);
void
fastcall
iowrite8
(
u8
val
,
void
__iomem
*
addr
)
{
writeb
(
val
,
addr
);
}
void
fastcall
iowrite16
(
u16
val
,
void
__iomem
*
addr
)
{
writew
(
val
,
addr
);
}
void
fastcall
iowrite32
(
u32
val
,
void
__iomem
*
addr
)
{
writel
(
val
,
addr
);
}
EXPORT_SYMBOL
(
iowrite8
);
EXPORT_SYMBOL
(
iowrite16
);
EXPORT_SYMBOL
(
iowrite32
);
/*
* These are the "repeat read/write" functions. Note the
* non-CPU byte order. We do things in "IO byteorder"
* here.
*
* FIXME! We could make these do EEH handling if we really
* wanted. Not clear if we do.
*/
void
ioread8_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insb
((
u8
__force
*
)
addr
,
dst
,
count
);
}
void
ioread16_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insw_ns
((
u16
__force
*
)
addr
,
dst
,
count
);
}
void
ioread32_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insl_ns
((
u32
__force
*
)
addr
,
dst
,
count
);
}
EXPORT_SYMBOL
(
ioread8_rep
);
EXPORT_SYMBOL
(
ioread16_rep
);
EXPORT_SYMBOL
(
ioread32_rep
);
void
iowrite8_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsb
((
u8
__force
*
)
addr
,
src
,
count
);
}
void
iowrite16_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsw_ns
((
u16
__force
*
)
addr
,
src
,
count
);
}
void
iowrite32_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsl_ns
((
u32
__force
*
)
addr
,
src
,
count
);
}
EXPORT_SYMBOL
(
iowrite8_rep
);
EXPORT_SYMBOL
(
iowrite16_rep
);
EXPORT_SYMBOL
(
iowrite32_rep
);
void
__iomem
*
ioport_map
(
unsigned
long
port
,
unsigned
int
len
)
{
if
(
!
_IO_IS_VALID
(
port
))
return
NULL
;
return
(
void
__iomem
*
)
(
port
+
pci_io_base
);
}
void
ioport_unmap
(
void
__iomem
*
addr
)
{
/* Nothing to do */
}
EXPORT_SYMBOL
(
ioport_map
);
EXPORT_SYMBOL
(
ioport_unmap
);
void
__iomem
*
pci_iomap
(
struct
pci_dev
*
dev
,
int
bar
,
unsigned
long
max
)
{
unsigned
long
start
=
pci_resource_start
(
dev
,
bar
);
unsigned
long
len
=
pci_resource_len
(
dev
,
bar
);
unsigned
long
flags
=
pci_resource_flags
(
dev
,
bar
);
if
(
!
len
)
return
NULL
;
if
(
max
&&
len
>
max
)
len
=
max
;
if
(
flags
&
IORESOURCE_IO
)
return
ioport_map
(
start
,
len
);
if
(
flags
&
IORESOURCE_MEM
)
return
(
void
__iomem
*
)
start
;
/* What? */
return
NULL
;
}
void
pci_iounmap
(
struct
pci_dev
*
dev
,
void
__iomem
*
addr
)
{
/* Nothing to do */
}
EXPORT_SYMBOL
(
pci_iomap
);
EXPORT_SYMBOL
(
pci_iounmap
);
arch/ppc64/kernel/prom_init.c
View file @
49093583
...
...
@@ -590,12 +590,15 @@ static void reserve_mem(unsigned long base, unsigned long size)
unsigned
long
top
=
base
+
size
;
unsigned
long
cnt
=
RELOC
(
mem_reserve_cnt
);
if
(
size
==
0
)
return
;
/* We need to always keep one empty entry so that we
* have our terminator with "size" set to 0 since we are
* dumb and just copy this entire array to the boot params
*/
base
=
_ALIGN_DOWN
(
base
,
PAGE_SIZE
);
top
=
_ALIGN_
DOWN
(
top
,
PAGE_SIZE
);
top
=
_ALIGN_
UP
(
top
,
PAGE_SIZE
);
size
=
top
-
base
;
if
(
cnt
>=
(
MEM_RESERVE_MAP_SIZE
-
1
))
...
...
arch/ppc64/kernel/smp.c
View file @
49093583
...
...
@@ -390,7 +390,8 @@ static unsigned int find_physical_cpu_to_start(unsigned int old_hwindex)
static
inline
int
__devinit
smp_startup_cpu
(
unsigned
int
lcpu
)
{
int
status
;
unsigned
long
start_here
=
__pa
(
pseries_secondary_smp_init
);
unsigned
long
start_here
=
__pa
((
u32
)
*
((
unsigned
long
*
)
pseries_secondary_smp_init
));
unsigned
int
pcpu
;
/* At boot time the cpus are already spinning in hold
...
...
arch/x86_64/kernel/suspend_asm.S
View file @
49093583
...
...
@@ -39,29 +39,28 @@ ENTRY(swsusp_arch_resume)
/
*
set
up
cr3
*/
leaq
init_level4_pgt
(%
rip
),%
rax
subq
$
__START_KERNEL_map
,%
rax
movq
%
rax
,%
cr3
movq
%
rax
,%
cr3
movq
mmu_cr4_features
(%
rip
),
%
rax
movq
%
rax
,
%
rdx
andq
$~
(
1
<<
7
),
%
rdx
#
PGE
movq
%
rdx
,
%
cr4
; # turn off PGE
movq
%
cr3
,
%
rcx
; # flush TLB
movq
%
rcx
,
%
cr3
;
movq
%
rax
,
%
cr4
; # turn PGE back on
movq
%
rdx
,
%
cr4
; # turn off PGE
movq
%
cr3
,
%
rcx
; # flush TLB
movq
%
rcx
,
%
cr3
;
movq
%
rax
,
%
cr4
; # turn PGE back on
movl
nr_copy_pages
(%
rip
),
%
eax
xorl
%
ecx
,
%
ecx
movq
$
0
,
loop
(%
rip
)
movq
$
0
,
%
r10
testl
%
eax
,
%
eax
j
e
.
L108
j
z
done
.
L105
:
xorl
%
esi
,
%
esi
movq
$
0
,
loop2
(%
rip
)
movq
$
0
,
%
r11
jmp
.
L104
.
p2align
4
,,
7
.
L111
:
movq
loop
(%
rip
)
,
%
rcx
copy_one_page
:
movq
%
r10
,
%
rcx
.
L104
:
movq
pagedir_nosave
(%
rip
),
%
rdx
movq
%
rcx
,
%
rax
...
...
@@ -71,27 +70,26 @@ ENTRY(swsusp_arch_resume)
movzbl
(%
rsi
,%
rax
),
%
eax
movb
%
al
,
(%
rsi
,%
rcx
)
movq
%
cr3
,
%
rax
; # flush TLB
movq
%
rax
,
%
cr3
;
movq
%
cr3
,
%
rax
; # flush TLB
movq
%
rax
,
%
cr3
;
movq
loop2
(%
rip
)
,
%
rax
movq
%
r11
,
%
rax
incq
%
rax
cmpq
$
4095
,
%
rax
movq
%
rax
,
%
rsi
movq
%
rax
,
loop2
(%
rip
)
jbe
.
L111
movq
loop
(%
rip
)
,
%
rax
movq
%
rax
,
%
r11
jbe
copy_one_page
movq
%
r10
,
%
rax
incq
%
rax
movq
%
rax
,
%
rcx
movq
%
rax
,
loop
(%
rip
)
movq
%
rax
,
%
r10
mov
nr_copy_pages
(%
rip
),
%
eax
cmpq
%
rax
,
%
rcx
jb
.
L105
.
L108
:
.
align
4
done
:
movl
$
24
,
%
eax
movl
%
eax
,
%
ds
movl
%
eax
,
%
ds
movq
saved_context_esp
(%
rip
),
%
rsp
movq
saved_context_ebp
(%
rip
),
%
rbp
movq
saved_context_eax
(%
rip
),
%
rax
...
...
@@ -111,10 +109,3 @@ ENTRY(swsusp_arch_resume)
pushq
saved_context_eflags
(%
rip
)
; popfq
call
swsusp_restore
ret
.
section
.
data
.
nosave
loop
:
.
quad
0
loop2
:
.
quad
0
.
previous
drivers/base/firmware_class.c
View file @
49093583
...
...
@@ -235,6 +235,8 @@ firmware_data_write(struct kobject *kobj,
struct
firmware
*
fw
;
ssize_t
retval
;
if
(
!
capable
(
CAP_SYS_RAWIO
))
return
-
EPERM
;
down
(
&
fw_lock
);
fw
=
fw_priv
->
fw
;
if
(
test_bit
(
FW_STATUS_DONE
,
&
fw_priv
->
status
))
{
...
...
drivers/char/agp/intel-agp.c
View file @
49093583
...
...
@@ -1778,7 +1778,7 @@ static struct pci_driver agp_intel_pci_driver = {
.
name
=
"agpgart-intel"
,
.
id_table
=
agp_intel_pci_table
,
.
probe
=
agp_intel_probe
,
.
remove
=
agp_intel_remove
,
.
remove
=
__devexit_p
(
agp_intel_remove
)
,
.
resume
=
agp_intel_resume
,
};
...
...
drivers/input/joystick/Kconfig
View file @
49093583
...
...
@@ -249,7 +249,7 @@ config JOYSTICK_AMIGA
config JOYSTICK_JOYDUMP
tristate "Gameport data dumper"
depends on INPUT && INPUT_JOYSTICK
depends on INPUT && INPUT_JOYSTICK
&& GAMEPORT
help
Say Y here if you want to dump data from your joystick into the system
log for debugging purposes. Say N if you are making a production
...
...
drivers/mtd/chips/cfi_cmdset_0001.c
View file @
49093583
...
...
@@ -603,6 +603,8 @@ static void put_chip(struct map_info *map, struct flchip *chip, unsigned long ad
}
spin_unlock
(
&
shared
->
lock
);
}
}
else
{
spin_unlock
(
&
shared
->
lock
);
}
}
...
...
drivers/pci/hotplug/rpaphp_pci.c
View file @
49093583
...
...
@@ -362,7 +362,7 @@ static void rpaphp_eeh_remove_bus_device(struct pci_dev *dev)
int
rpaphp_unconfig_pci_adapter
(
struct
slot
*
slot
)
{
int
retval
=
0
;
struct
list_head
*
ln
;
struct
list_head
*
ln
,
*
tmp
;
dbg
(
"Entry %s: slot[%s]
\n
"
,
__FUNCTION__
,
slot
->
name
);
if
(
list_empty
(
&
slot
->
dev
.
pci_funcs
))
{
...
...
@@ -373,7 +373,7 @@ int rpaphp_unconfig_pci_adapter(struct slot *slot)
goto
exit
;
}
/* remove the devices from the pci core */
list_for_each
(
ln
,
&
slot
->
dev
.
pci_funcs
)
{
list_for_each
_safe
(
ln
,
tmp
,
&
slot
->
dev
.
pci_funcs
)
{
struct
rpaphp_pci_func
*
func
;
func
=
list_entry
(
ln
,
struct
rpaphp_pci_func
,
sibling
);
...
...
drivers/usb/class/usblp.c
View file @
49093583
...
...
@@ -397,10 +397,6 @@ static void usblp_cleanup (struct usblp *usblp)
{
info
(
"usblp%d: removed"
,
usblp
->
minor
);
usb_buffer_free
(
usblp
->
dev
,
USBLP_BUF_SIZE
,
usblp
->
writebuf
,
usblp
->
writeurb
->
transfer_dma
);
usb_buffer_free
(
usblp
->
dev
,
USBLP_BUF_SIZE
,
usblp
->
readbuf
,
usblp
->
readurb
->
transfer_dma
);
kfree
(
usblp
->
device_id_string
);
kfree
(
usblp
->
statusbuf
);
usb_free_urb
(
usblp
->
writeurb
);
...
...
@@ -1159,6 +1155,10 @@ static void usblp_disconnect(struct usb_interface *intf)
usb_set_intfdata
(
intf
,
NULL
);
usblp_unlink_urbs
(
usblp
);
usb_buffer_free
(
usblp
->
dev
,
USBLP_BUF_SIZE
,
usblp
->
writebuf
,
usblp
->
writeurb
->
transfer_dma
);
usb_buffer_free
(
usblp
->
dev
,
USBLP_BUF_SIZE
,
usblp
->
readbuf
,
usblp
->
readurb
->
transfer_dma
);
if
(
!
usblp
->
used
)
usblp_cleanup
(
usblp
);
...
...
drivers/usb/gadget/net2280.c
View file @
49093583
...
...
@@ -303,13 +303,16 @@ static void ep_reset (struct net2280_regs __iomem *regs, struct net2280_ep *ep)
/* init to our chosen defaults, notably so that we NAK OUT
* packets until the driver queues a read (+note erratum 0112)
*/
writel
(
(
1
<<
SET_NAK_OUT_PACKETS_MODE
)
tmp
=
(
1
<<
SET_NAK_OUT_PACKETS_MODE
)
|
(
1
<<
SET_NAK_OUT_PACKETS
)
|
(
1
<<
CLEAR_EP_HIDE_STATUS_PHASE
)
|
(
1
<<
CLEAR_INTERRUPT_MODE
)
|
(
1
<<
CLEAR_ENDPOINT_TOGGLE
)
|
(
1
<<
CLEAR_ENDPOINT_HALT
)
,
&
ep
->
regs
->
ep_rsp
);
|
(
1
<<
CLEAR_INTERRUPT_MODE
);
if
(
ep
->
num
!=
0
)
{
tmp
|=
(
1
<<
CLEAR_ENDPOINT_TOGGLE
)
|
(
1
<<
CLEAR_ENDPOINT_HALT
);
}
writel
(
tmp
,
&
ep
->
regs
->
ep_rsp
);
/* scrub most status bits, and flush any fifo state */
writel
(
(
1
<<
TIMEOUT
)
...
...
@@ -1920,8 +1923,6 @@ static void ep0_start (struct net2280 *dev)
,
&
dev
->
usb
->
stdrsp
);
writel
(
(
1
<<
USB_ROOT_PORT_WAKEUP_ENABLE
)
|
(
1
<<
SELF_POWERED_USB_DEVICE
)
/* erratum 0102 workaround */
|
((
dev
->
chiprev
==
0100
)
?
0
:
1
)
<<
SUSPEND_IMMEDIATELY
|
(
1
<<
REMOTE_WAKEUP_SUPPORT
)
|
(
dev
->
softconnect
<<
USB_DETECT_ENABLE
)
|
(
1
<<
SELF_POWERED_STATUS
)
...
...
@@ -2047,6 +2048,8 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver)
stop_activity
(
dev
,
driver
);
spin_unlock_irqrestore
(
&
dev
->
lock
,
flags
);
net2280_pullup
(
&
dev
->
gadget
,
0
);
driver
->
unbind
(
&
dev
->
gadget
);
dev
->
gadget
.
dev
.
driver
=
NULL
;
dev
->
driver
=
NULL
;
...
...
@@ -2552,8 +2555,6 @@ static void handle_stat1_irqs (struct net2280 *dev, u32 stat)
if
(
stat
&
(
1
<<
SUSPEND_REQUEST_INTERRUPT
))
{
if
(
dev
->
driver
->
suspend
)
dev
->
driver
->
suspend
(
&
dev
->
gadget
);
/* we use SUSPEND_IMMEDIATELY */
stat
&=
~
(
1
<<
SUSPEND_REQUEST_INTERRUPT
);
}
else
{
if
(
dev
->
driver
->
resume
)
dev
->
driver
->
resume
(
&
dev
->
gadget
);
...
...
drivers/usb/host/ehci-hcd.c
View file @
49093583
...
...
@@ -695,9 +695,18 @@ static void ehci_work (struct ehci_hcd *ehci, struct pt_regs *regs)
timer_action_done
(
ehci
,
TIMER_IO_WATCHDOG
);
if
(
ehci
->
reclaim_ready
)
end_unlink_async
(
ehci
,
regs
);
/* another CPU may drop ehci->lock during a schedule scan while
* it reports urb completions. this flag guards against bogus
* attempts at re-entrant schedule scanning.
*/
if
(
ehci
->
scanning
)
return
;
ehci
->
scanning
=
1
;
scan_async
(
ehci
,
regs
);
if
(
ehci
->
next_uframe
!=
-
1
)
scan_periodic
(
ehci
,
regs
);
ehci
->
scanning
=
0
;
/* the IO watchdog guards against hardware or driver bugs that
* misplace IRQs, and should let us run completely without IRQs.
...
...
drivers/usb/host/ehci.h
View file @
49093583
...
...
@@ -53,6 +53,7 @@ struct ehci_hcd { /* one per controller */
struct
ehci_qh
*
async
;
struct
ehci_qh
*
reclaim
;
unsigned
reclaim_ready
:
1
;
unsigned
scanning
:
1
;
/* periodic schedule support */
#define DEFAULT_I_TDPS 1024
/* some HCs can do less */
...
...
drivers/usb/input/hid-core.c
View file @
49093583
...
...
@@ -926,6 +926,8 @@ static void hid_irq_in(struct urb *urb, struct pt_regs *regs)
case
-
ENOENT
:
case
-
ESHUTDOWN
:
return
;
case
-
ETIMEDOUT
:
/* NAK */
break
;
default:
/* error */
warn
(
"input irq status %d received"
,
urb
->
status
);
}
...
...
@@ -1859,8 +1861,8 @@ static int __init hid_init(void)
static
void
__exit
hid_exit
(
void
)
{
hiddev_exit
();
usb_deregister
(
&
hid_driver
);
hiddev_exit
();
}
module_init
(
hid_init
);
...
...
drivers/usb/media/konicawc.c
View file @
49093583
...
...
@@ -362,8 +362,8 @@ static void konicawc_isoc_irq(struct urb *urb, struct pt_regs *regs)
else
if
(
!
urb
->
status
&&
!
cam
->
last_data_urb
->
status
)
len
=
konicawc_compress_iso
(
uvd
,
cam
->
last_data_urb
,
urb
);
resubmit_urb
(
uvd
,
urb
);
resubmit_urb
(
uvd
,
cam
->
last_data_urb
);
resubmit_urb
(
uvd
,
urb
);
cam
->
last_data_urb
=
NULL
;
uvd
->
stats
.
urb_length
=
len
;
uvd
->
stats
.
data_count
+=
len
;
...
...
drivers/usb/serial/digi_acceleport.c
View file @
49093583
...
...
@@ -1546,13 +1546,17 @@ static void digi_close( struct usb_serial_port *port, struct file *filp )
dbg
(
"digi_close: TOP: port=%d, open_count=%d"
,
priv
->
dp_port_num
,
port
->
open_count
);
/* if disconnected, just clear flags */
if
(
!
usb_get_intfdata
(
port
->
serial
->
interface
))
goto
exit
;
/* do cleanup only after final close on this port */
spin_lock_irqsave
(
&
priv
->
dp_port_lock
,
flags
);
priv
->
dp_in_close
=
1
;
spin_unlock_irqrestore
(
&
priv
->
dp_port_lock
,
flags
);
/* tell line discipline to process only XON/XOFF */
tty
->
closing
=
1
;
tty
->
closing
=
1
;
/* wait for output to drain */
if
(
(
filp
->
f_flags
&
(
O_NDELAY
|
O_NONBLOCK
))
==
0
)
{
...
...
@@ -1616,6 +1620,7 @@ dbg( "digi_close: TOP: port=%d, open_count=%d", priv->dp_port_num, port->open_co
tty
->
closing
=
0
;
exit:
spin_lock_irqsave
(
&
priv
->
dp_port_lock
,
flags
);
priv
->
dp_write_urb_in_use
=
0
;
priv
->
dp_in_close
=
0
;
...
...
fs/ext3/inode.c
View file @
49093583
...
...
@@ -1579,6 +1579,12 @@ static ssize_t ext3_direct_IO(int rw, struct kiocb *iocb,
offset
,
nr_segs
,
ext3_direct_io_get_blocks
,
NULL
);
/*
* Reacquire the handle: ext3_direct_io_get_block() can restart the
* transaction
*/
handle
=
journal_current_handle
();
out_stop:
if
(
handle
)
{
int
err
;
...
...
include/asm-i386/linkage.h
View file @
49093583
...
...
@@ -5,6 +5,10 @@
#define FASTCALL(x) x __attribute__((regparm(3)))
#define fastcall __attribute__((regparm(3)))
#ifdef CONFIG_REGPARM
# define prevent_tail_call(ret) __asm__ ("" : "=r" (ret) : "0" (ret))
#endif
#ifdef CONFIG_X86_ALIGNMENT_16
#define __ALIGN .align 16,0x90
#define __ALIGN_STR ".align 16,0x90"
...
...
include/asm-ppc/io.h
View file @
49093583
...
...
@@ -398,6 +398,79 @@ static inline int isa_check_signature(unsigned long io_addr,
return
0
;
}
/*
* Here comes the ppc implementation of the IOMAP
* interfaces.
*/
static
inline
unsigned
int
ioread8
(
void
__iomem
*
addr
)
{
return
readb
(
addr
);
}
static
inline
unsigned
int
ioread16
(
void
__iomem
*
addr
)
{
return
readw
(
addr
);
}
static
inline
unsigned
int
ioread32
(
void
__iomem
*
addr
)
{
return
readl
(
addr
);
}
static
inline
void
iowrite8
(
u8
val
,
void
__iomem
*
addr
)
{
writeb
(
val
,
addr
);
}
static
inline
void
iowrite16
(
u16
val
,
void
__iomem
*
addr
)
{
writew
(
val
,
addr
);
}
static
inline
void
iowrite32
(
u32
val
,
void
__iomem
*
addr
)
{
writel
(
val
,
addr
);
}
static
inline
void
ioread8_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insb
((
u8
__force
*
)
addr
,
dst
,
count
);
}
static
inline
void
ioread16_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insw_ns
((
u16
__force
*
)
addr
,
dst
,
count
);
}
static
inline
void
ioread32_rep
(
void
__iomem
*
addr
,
void
*
dst
,
unsigned
long
count
)
{
_insl_ns
((
u32
__force
*
)
addr
,
dst
,
count
);
}
static
inline
void
iowrite8_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsb
((
u8
__force
*
)
addr
,
src
,
count
);
}
static
inline
void
iowrite16_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsw_ns
((
u16
__force
*
)
addr
,
src
,
count
);
}
static
inline
void
iowrite32_rep
(
void
__iomem
*
addr
,
const
void
*
src
,
unsigned
long
count
)
{
_outsl_ns
((
u32
__force
*
)
addr
,
src
,
count
);
}
/* Create a virtual mapping cookie for an IO port range */
extern
void
__iomem
*
ioport_map
(
unsigned
long
port
,
unsigned
int
nr
);
extern
void
ioport_unmap
(
void
__iomem
*
);
/* Create a virtual mapping cookie for a PCI BAR (memory or IO) */
struct
pci_dev
;
extern
void
__iomem
*
pci_iomap
(
struct
pci_dev
*
dev
,
int
bar
,
unsigned
long
max
);
extern
void
pci_iounmap
(
struct
pci_dev
*
dev
,
void
__iomem
*
);
#endif
/* _PPC_IO_H */
#ifdef CONFIG_8260_PCI9
...
...
include/linux/linkage.h
View file @
49093583
...
...
@@ -14,6 +14,10 @@
#define asmlinkage CPP_ASMLINKAGE
#endif
#ifndef prevent_tail_call
# define prevent_tail_call(ret) do { } while (0)
#endif
#ifndef __ALIGN
#define __ALIGN .align 4,0x90
#define __ALIGN_STR ".align 4,0x90"
...
...
kernel/exit.c
View file @
49093583
...
...
@@ -1376,6 +1376,8 @@ asmlinkage long sys_waitid(int which, pid_t pid,
struct
siginfo
__user
*
infop
,
int
options
,
struct
rusage
__user
*
ru
)
{
long
ret
;
if
(
options
&
~
(
WNOHANG
|
WNOWAIT
|
WEXITED
|
WSTOPPED
|
WCONTINUED
))
return
-
EINVAL
;
if
(
!
(
options
&
(
WEXITED
|
WSTOPPED
|
WCONTINUED
)))
...
...
@@ -1398,15 +1400,25 @@ asmlinkage long sys_waitid(int which, pid_t pid,
return
-
EINVAL
;
}
return
do_wait
(
pid
,
options
,
infop
,
NULL
,
ru
);
ret
=
do_wait
(
pid
,
options
,
infop
,
NULL
,
ru
);
/* avoid REGPARM breakage on x86: */
prevent_tail_call
(
ret
);
return
ret
;
}
asmlinkage
long
sys_wait4
(
pid_t
pid
,
int
__user
*
stat_addr
,
int
options
,
struct
rusage
__user
*
ru
)
{
long
ret
;
if
(
options
&
~
(
WNOHANG
|
WUNTRACED
|
__WNOTHREAD
|
__WCLONE
|
__WALL
))
return
-
EINVAL
;
return
do_wait
(
pid
,
options
|
WEXITED
,
NULL
,
stat_addr
,
ru
);
ret
=
do_wait
(
pid
,
options
|
WEXITED
,
NULL
,
stat_addr
,
ru
);
/* avoid REGPARM breakage on x86: */
prevent_tail_call
(
ret
);
return
ret
;
}
#ifdef __ARCH_WANT_SYS_WAITPID
...
...
mm/vmscan.c
View file @
49093583
...
...
@@ -181,7 +181,7 @@ static int shrink_slab(unsigned long scanned, unsigned int gfp_mask,
struct
shrinker
*
shrinker
;
if
(
scanned
==
0
)
return
0
;
scanned
=
SWAP_CLUSTER_MAX
;
if
(
!
down_read_trylock
(
&
shrinker_rwsem
))
return
0
;
...
...
@@ -1065,7 +1065,8 @@ static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
total_reclaimed
+=
sc
.
nr_reclaimed
;
if
(
zone
->
all_unreclaimable
)
continue
;
if
(
zone
->
pages_scanned
>
zone
->
present_pages
*
2
)
if
(
zone
->
pages_scanned
>=
(
zone
->
nr_active
+
zone
->
nr_inactive
)
*
4
)
zone
->
all_unreclaimable
=
1
;
/*
* If we've done a decent amount of scanning and
...
...
@@ -1102,8 +1103,10 @@ static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
zone
->
prev_priority
=
zone
->
temp_priority
;
}
if
(
!
all_zones_ok
)
if
(
!
all_zones_ok
)
{
cond_resched
();
goto
loop_again
;
}
return
total_reclaimed
;
}
...
...
net/sunrpc/auth_gss/auth_gss.c
View file @
49093583
...
...
@@ -246,7 +246,7 @@ gss_parse_init_downcall(struct gss_api_mech *gm, struct xdr_netobj *buf,
spin_lock_init
(
&
ctx
->
gc_seq_lock
);
atomic_set
(
&
ctx
->
count
,
1
);
if
(
simple_get_bytes
(
&
p
,
end
,
uid
,
sizeof
(
uid
)))
if
(
simple_get_bytes
(
&
p
,
end
,
uid
,
sizeof
(
*
uid
)))
goto
err_free_ctx
;
/* FIXME: discarded timeout for now */
if
(
simple_get_bytes
(
&
p
,
end
,
&
timeout
,
sizeof
(
timeout
)))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment