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
Kirill Smelkov
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
VERSION
=
2
PATCHLEVEL
=
6
PATCHLEVEL
=
6
SUBLEVEL
=
9
SUBLEVEL
=
9
EXTRAVERSION
=
-rc4
EXTRAVERSION
=
NAME
=
Zonked Quokka
NAME
=
Zonked Quokka
# *DOCUMENTATION*
# *DOCUMENTATION*
...
...
arch/ppc/Kconfig
View file @
49093583
...
@@ -35,10 +35,6 @@ config GENERIC_NVRAM
...
@@ -35,10 +35,6 @@ config GENERIC_NVRAM
bool
bool
default y
default y
config GENERIC_IOMAP
bool
default y
source "init/Kconfig"
source "init/Kconfig"
menu "Processor"
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,
...
@@ -1709,6 +1709,32 @@ pci_init_resource(struct resource *res, unsigned long start, unsigned long end,
res
->
child
=
NULL
;
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
* Null PCI config access functions, for the case when we can't
* find a hose.
* find a hose.
...
...
arch/ppc/mm/pgtable.c
View file @
49093583
...
@@ -22,6 +22,7 @@
...
@@ -22,6 +22,7 @@
#include <linux/config.h>
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/mm.h>
#include <linux/vmalloc.h>
#include <linux/vmalloc.h>
...
@@ -271,6 +272,18 @@ void iounmap(void *addr)
...
@@ -271,6 +272,18 @@ void iounmap(void *addr)
vunmap
((
void
*
)
(
PAGE_MASK
&
(
unsigned
long
)
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
int
map_page
(
unsigned
long
va
,
phys_addr_t
pa
,
int
flags
)
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 \
...
@@ -19,7 +19,7 @@ pci-obj-$(CONFIG_PPC_ISERIES) += iSeries_pci.o iSeries_pci_reset.o \
iSeries_IoMmTable.o
iSeries_IoMmTable.o
pci-obj-$(CONFIG_PPC_MULTIPLATFORM)
+=
pci_dn.o pci_dma_direct.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
\
obj-$(CONFIG_PPC_ISERIES)
+=
iSeries_irq.o
\
iSeries_VpdInfo.o XmPciLpEvent.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)
...
@@ -697,121 +697,6 @@ void eeh_remove_device(struct pci_dev *dev)
}
}
EXPORT_SYMBOL
(
eeh_remove_device
);
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
)
static
int
proc_eeh_show
(
struct
seq_file
*
m
,
void
*
v
)
{
{
unsigned
int
cpu
;
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)
...
@@ -590,12 +590,15 @@ static void reserve_mem(unsigned long base, unsigned long size)
unsigned
long
top
=
base
+
size
;
unsigned
long
top
=
base
+
size
;
unsigned
long
cnt
=
RELOC
(
mem_reserve_cnt
);
unsigned
long
cnt
=
RELOC
(
mem_reserve_cnt
);
if
(
size
==
0
)
return
;
/* We need to always keep one empty entry so that we
/* We need to always keep one empty entry so that we
* have our terminator with "size" set to 0 since we are
* have our terminator with "size" set to 0 since we are
* dumb and just copy this entire array to the boot params
* dumb and just copy this entire array to the boot params
*/
*/
base
=
_ALIGN_DOWN
(
base
,
PAGE_SIZE
);
base
=
_ALIGN_DOWN
(
base
,
PAGE_SIZE
);
top
=
_ALIGN_
DOWN
(
top
,
PAGE_SIZE
);
top
=
_ALIGN_
UP
(
top
,
PAGE_SIZE
);
size
=
top
-
base
;
size
=
top
-
base
;
if
(
cnt
>=
(
MEM_RESERVE_MAP_SIZE
-
1
))
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)
...
@@ -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
)
static
inline
int
__devinit
smp_startup_cpu
(
unsigned
int
lcpu
)
{
{
int
status
;
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
;
unsigned
int
pcpu
;
/* At boot time the cpus are already spinning in hold
/* 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)
...
@@ -39,29 +39,28 @@ ENTRY(swsusp_arch_resume)
/
*
set
up
cr3
*/
/
*
set
up
cr3
*/
leaq
init_level4_pgt
(%
rip
),%
rax
leaq
init_level4_pgt
(%
rip
),%
rax
subq
$
__START_KERNEL_map
,%
rax
subq
$
__START_KERNEL_map
,%
rax
movq
%
rax
,%
cr3
movq
%
rax
,%
cr3
movq
mmu_cr4_features
(%
rip
),
%
rax
movq
mmu_cr4_features
(%
rip
),
%
rax
movq
%
rax
,
%
rdx
movq
%
rax
,
%
rdx
andq
$~
(
1
<<
7
),
%
rdx
#
PGE
andq
$~
(
1
<<
7
),
%
rdx
#
PGE
movq
%
rdx
,
%
cr4
; # turn off PGE
movq
%
rdx
,
%
cr4
; # turn off PGE
movq
%
cr3
,
%
rcx
; # flush TLB
movq
%
cr3
,
%
rcx
; # flush TLB
movq
%
rcx
,
%
cr3
;
movq
%
rcx
,
%
cr3
;
movq
%
rax
,
%
cr4
; # turn PGE back on
movq
%
rax
,
%
cr4
; # turn PGE back on
movl
nr_copy_pages
(%
rip
),
%
eax
movl
nr_copy_pages
(%
rip
),
%
eax
xorl
%
ecx
,
%
ecx
xorl
%
ecx
,
%
ecx
movq
$
0
,
loop
(%
rip
)
movq
$
0
,
%
r10
testl
%
eax
,
%
eax
testl
%
eax
,
%
eax
j
e
.
L108
j
z
done
.
L105
:
.
L105
:
xorl
%
esi
,
%
esi
xorl
%
esi
,
%
esi
movq
$
0
,
loop2
(%
rip
)
movq
$
0
,
%
r11
jmp
.
L104
jmp
.
L104
.
p2align
4
,,
7
.
p2align
4
,,
7
.
L111
:
copy_one_page
:
movq
loop
(%
rip
)
,
%
rcx
movq
%
r10
,
%
rcx
.
L104
:
.
L104
:
movq
pagedir_nosave
(%
rip
),
%
rdx
movq
pagedir_nosave
(%
rip
),
%
rdx
movq
%
rcx
,
%
rax
movq
%
rcx
,
%
rax
...
@@ -71,27 +70,26 @@ ENTRY(swsusp_arch_resume)
...
@@ -71,27 +70,26 @@ ENTRY(swsusp_arch_resume)
movzbl
(%
rsi
,%
rax
),
%
eax
movzbl
(%
rsi
,%
rax
),
%
eax
movb
%
al
,
(%
rsi
,%
rcx
)
movb
%
al
,
(%
rsi
,%
rcx
)
movq
%
cr3
,
%
rax
; # flush TLB
movq
%
cr3
,
%
rax
; # flush TLB
movq
%
rax
,
%
cr3
;
movq
%
rax
,
%
cr3
;
movq
loop2
(%
rip
)
,
%
rax
movq
%
r11
,
%
rax
incq
%
rax
incq
%
rax
cmpq
$
4095
,
%
rax
cmpq
$
4095
,
%
rax
movq
%
rax
,
%
rsi
movq
%
rax
,
%
rsi
movq
%
rax
,
loop2
(%
rip
)
movq
%
rax
,
%
r11
jbe
.
L111
jbe
copy_one_page
movq
loop
(%
rip
)
,
%
rax
movq
%
r10
,
%
rax
incq
%
rax
incq
%
rax
movq
%
rax
,
%
rcx
movq
%
rax
,
%
rcx
movq
%
rax
,
loop
(%
rip
)
movq
%
rax
,
%
r10
mov
nr_copy_pages
(%
rip
),
%
eax
mov
nr_copy_pages
(%
rip
),
%
eax
cmpq
%
rax
,
%
rcx
cmpq
%
rax
,
%
rcx
jb
.
L105
jb
.
L105
.
L108
:
done
:
.
align
4
movl
$
24
,
%
eax
movl
$
24
,
%
eax
movl
%
eax
,
%
ds
movl
%
eax
,
%
ds
movq
saved_context_esp
(%
rip
),
%
rsp
movq
saved_context_esp
(%
rip
),
%
rsp
movq
saved_context_ebp
(%
rip
),
%
rbp
movq
saved_context_ebp
(%
rip
),
%
rbp
movq
saved_context_eax
(%
rip
),
%
rax
movq
saved_context_eax
(%
rip
),
%
rax
...
@@ -111,10 +109,3 @@ ENTRY(swsusp_arch_resume)
...
@@ -111,10 +109,3 @@ ENTRY(swsusp_arch_resume)
pushq
saved_context_eflags
(%
rip
)
; popfq
pushq
saved_context_eflags
(%
rip
)
; popfq
call
swsusp_restore
call
swsusp_restore
ret
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,
...
@@ -235,6 +235,8 @@ firmware_data_write(struct kobject *kobj,
struct
firmware
*
fw
;
struct
firmware
*
fw
;
ssize_t
retval
;
ssize_t
retval
;
if
(
!
capable
(
CAP_SYS_RAWIO
))
return
-
EPERM
;
down
(
&
fw_lock
);
down
(
&
fw_lock
);
fw
=
fw_priv
->
fw
;
fw
=
fw_priv
->
fw
;
if
(
test_bit
(
FW_STATUS_DONE
,
&
fw_priv
->
status
))
{
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 = {
...
@@ -1778,7 +1778,7 @@ static struct pci_driver agp_intel_pci_driver = {
.
name
=
"agpgart-intel"
,
.
name
=
"agpgart-intel"
,
.
id_table
=
agp_intel_pci_table
,
.
id_table
=
agp_intel_pci_table
,
.
probe
=
agp_intel_probe
,
.
probe
=
agp_intel_probe
,
.
remove
=
agp_intel_remove
,
.
remove
=
__devexit_p
(
agp_intel_remove
)
,
.
resume
=
agp_intel_resume
,
.
resume
=
agp_intel_resume
,
};
};
...
...
drivers/input/joystick/Kconfig
View file @
49093583
...
@@ -249,7 +249,7 @@ config JOYSTICK_AMIGA
...
@@ -249,7 +249,7 @@ config JOYSTICK_AMIGA
config JOYSTICK_JOYDUMP
config JOYSTICK_JOYDUMP
tristate "Gameport data dumper"
tristate "Gameport data dumper"
depends on INPUT && INPUT_JOYSTICK
depends on INPUT && INPUT_JOYSTICK
&& GAMEPORT
help
help
Say Y here if you want to dump data from your joystick into the system
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
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
...
@@ -603,6 +603,8 @@ static void put_chip(struct map_info *map, struct flchip *chip, unsigned long ad
}
}
spin_unlock
(
&
shared
->
lock
);
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)
...
@@ -362,7 +362,7 @@ static void rpaphp_eeh_remove_bus_device(struct pci_dev *dev)
int
rpaphp_unconfig_pci_adapter
(
struct
slot
*
slot
)
int
rpaphp_unconfig_pci_adapter
(
struct
slot
*
slot
)
{
{
int
retval
=
0
;
int
retval
=
0
;
struct
list_head
*
ln
;
struct
list_head
*
ln
,
*
tmp
;
dbg
(
"Entry %s: slot[%s]
\n
"
,
__FUNCTION__
,
slot
->
name
);
dbg
(
"Entry %s: slot[%s]
\n
"
,
__FUNCTION__
,
slot
->
name
);
if
(
list_empty
(
&
slot
->
dev
.
pci_funcs
))
{
if
(
list_empty
(
&
slot
->
dev
.
pci_funcs
))
{
...
@@ -373,7 +373,7 @@ int rpaphp_unconfig_pci_adapter(struct slot *slot)
...
@@ -373,7 +373,7 @@ int rpaphp_unconfig_pci_adapter(struct slot *slot)
goto
exit
;
goto
exit
;
}
}
/* remove the devices from the pci core */
/* 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
;
struct
rpaphp_pci_func
*
func
;
func
=
list_entry
(
ln
,
struct
rpaphp_pci_func
,
sibling
);
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)
...
@@ -397,10 +397,6 @@ static void usblp_cleanup (struct usblp *usblp)
{
{
info
(
"usblp%d: removed"
,
usblp
->
minor
);
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
->
device_id_string
);
kfree
(
usblp
->
statusbuf
);
kfree
(
usblp
->
statusbuf
);
usb_free_urb
(
usblp
->
writeurb
);
usb_free_urb
(
usblp
->
writeurb
);
...
@@ -1159,6 +1155,10 @@ static void usblp_disconnect(struct usb_interface *intf)
...
@@ -1159,6 +1155,10 @@ static void usblp_disconnect(struct usb_interface *intf)
usb_set_intfdata
(
intf
,
NULL
);
usb_set_intfdata
(
intf
,
NULL
);
usblp_unlink_urbs
(
usblp
);
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
)
if
(
!
usblp
->
used
)
usblp_cleanup
(
usblp
);
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)
...
@@ -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
/* init to our chosen defaults, notably so that we NAK OUT
* packets until the driver queues a read (+note erratum 0112)
* 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
<<
SET_NAK_OUT_PACKETS
)
|
(
1
<<
CLEAR_EP_HIDE_STATUS_PHASE
)
|
(
1
<<
CLEAR_EP_HIDE_STATUS_PHASE
)
|
(
1
<<
CLEAR_INTERRUPT_MODE
)
|
(
1
<<
CLEAR_INTERRUPT_MODE
);
|
(
1
<<
CLEAR_ENDPOINT_TOGGLE
)
|
(
1
<<
CLEAR_ENDPOINT_HALT
)
if
(
ep
->
num
!=
0
)
{
,
&
ep
->
regs
->
ep_rsp
);
tmp
|=
(
1
<<
CLEAR_ENDPOINT_TOGGLE
)
|
(
1
<<
CLEAR_ENDPOINT_HALT
);
}
writel
(
tmp
,
&
ep
->
regs
->
ep_rsp
);
/* scrub most status bits, and flush any fifo state */
/* scrub most status bits, and flush any fifo state */
writel
(
(
1
<<
TIMEOUT
)
writel
(
(
1
<<
TIMEOUT
)
...
@@ -1920,8 +1923,6 @@ static void ep0_start (struct net2280 *dev)
...
@@ -1920,8 +1923,6 @@ static void ep0_start (struct net2280 *dev)
,
&
dev
->
usb
->
stdrsp
);
,
&
dev
->
usb
->
stdrsp
);
writel
(
(
1
<<
USB_ROOT_PORT_WAKEUP_ENABLE
)
writel
(
(
1
<<
USB_ROOT_PORT_WAKEUP_ENABLE
)
|
(
1
<<
SELF_POWERED_USB_DEVICE
)
|
(
1
<<
SELF_POWERED_USB_DEVICE
)
/* erratum 0102 workaround */
|
((
dev
->
chiprev
==
0100
)
?
0
:
1
)
<<
SUSPEND_IMMEDIATELY
|
(
1
<<
REMOTE_WAKEUP_SUPPORT
)
|
(
1
<<
REMOTE_WAKEUP_SUPPORT
)
|
(
dev
->
softconnect
<<
USB_DETECT_ENABLE
)
|
(
dev
->
softconnect
<<
USB_DETECT_ENABLE
)
|
(
1
<<
SELF_POWERED_STATUS
)
|
(
1
<<
SELF_POWERED_STATUS
)
...
@@ -2047,6 +2048,8 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver)
...
@@ -2047,6 +2048,8 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver)
stop_activity
(
dev
,
driver
);
stop_activity
(
dev
,
driver
);
spin_unlock_irqrestore
(
&
dev
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
dev
->
lock
,
flags
);
net2280_pullup
(
&
dev
->
gadget
,
0
);
driver
->
unbind
(
&
dev
->
gadget
);
driver
->
unbind
(
&
dev
->
gadget
);
dev
->
gadget
.
dev
.
driver
=
NULL
;
dev
->
gadget
.
dev
.
driver
=
NULL
;
dev
->
driver
=
NULL
;
dev
->
driver
=
NULL
;
...
@@ -2552,8 +2555,6 @@ static void handle_stat1_irqs (struct net2280 *dev, u32 stat)
...
@@ -2552,8 +2555,6 @@ static void handle_stat1_irqs (struct net2280 *dev, u32 stat)
if
(
stat
&
(
1
<<
SUSPEND_REQUEST_INTERRUPT
))
{
if
(
stat
&
(
1
<<
SUSPEND_REQUEST_INTERRUPT
))
{
if
(
dev
->
driver
->
suspend
)
if
(
dev
->
driver
->
suspend
)
dev
->
driver
->
suspend
(
&
dev
->
gadget
);
dev
->
driver
->
suspend
(
&
dev
->
gadget
);
/* we use SUSPEND_IMMEDIATELY */
stat
&=
~
(
1
<<
SUSPEND_REQUEST_INTERRUPT
);
}
else
{
}
else
{
if
(
dev
->
driver
->
resume
)
if
(
dev
->
driver
->
resume
)
dev
->
driver
->
resume
(
&
dev
->
gadget
);
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)
...
@@ -695,9 +695,18 @@ static void ehci_work (struct ehci_hcd *ehci, struct pt_regs *regs)
timer_action_done
(
ehci
,
TIMER_IO_WATCHDOG
);
timer_action_done
(
ehci
,
TIMER_IO_WATCHDOG
);
if
(
ehci
->
reclaim_ready
)
if
(
ehci
->
reclaim_ready
)
end_unlink_async
(
ehci
,
regs
);
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
);
scan_async
(
ehci
,
regs
);
if
(
ehci
->
next_uframe
!=
-
1
)
if
(
ehci
->
next_uframe
!=
-
1
)
scan_periodic
(
ehci
,
regs
);
scan_periodic
(
ehci
,
regs
);
ehci
->
scanning
=
0
;
/* the IO watchdog guards against hardware or driver bugs that
/* the IO watchdog guards against hardware or driver bugs that
* misplace IRQs, and should let us run completely without IRQs.
* 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 */
...
@@ -53,6 +53,7 @@ struct ehci_hcd { /* one per controller */
struct
ehci_qh
*
async
;
struct
ehci_qh
*
async
;
struct
ehci_qh
*
reclaim
;
struct
ehci_qh
*
reclaim
;
unsigned
reclaim_ready
:
1
;
unsigned
reclaim_ready
:
1
;
unsigned
scanning
:
1
;
/* periodic schedule support */
/* periodic schedule support */
#define DEFAULT_I_TDPS 1024
/* some HCs can do less */
#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)
...
@@ -926,6 +926,8 @@ static void hid_irq_in(struct urb *urb, struct pt_regs *regs)
case
-
ENOENT
:
case
-
ENOENT
:
case
-
ESHUTDOWN
:
case
-
ESHUTDOWN
:
return
;
return
;
case
-
ETIMEDOUT
:
/* NAK */
break
;
default:
/* error */
default:
/* error */
warn
(
"input irq status %d received"
,
urb
->
status
);
warn
(
"input irq status %d received"
,
urb
->
status
);
}
}
...
@@ -1859,8 +1861,8 @@ static int __init hid_init(void)
...
@@ -1859,8 +1861,8 @@ static int __init hid_init(void)
static
void
__exit
hid_exit
(
void
)
static
void
__exit
hid_exit
(
void
)
{
{
hiddev_exit
();
usb_deregister
(
&
hid_driver
);
usb_deregister
(
&
hid_driver
);
hiddev_exit
();
}
}
module_init
(
hid_init
);
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)
...
@@ -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
)
else
if
(
!
urb
->
status
&&
!
cam
->
last_data_urb
->
status
)
len
=
konicawc_compress_iso
(
uvd
,
cam
->
last_data_urb
,
urb
);
len
=
konicawc_compress_iso
(
uvd
,
cam
->
last_data_urb
,
urb
);
resubmit_urb
(
uvd
,
urb
);
resubmit_urb
(
uvd
,
cam
->
last_data_urb
);
resubmit_urb
(
uvd
,
cam
->
last_data_urb
);
resubmit_urb
(
uvd
,
urb
);
cam
->
last_data_urb
=
NULL
;
cam
->
last_data_urb
=
NULL
;
uvd
->
stats
.
urb_length
=
len
;
uvd
->
stats
.
urb_length
=
len
;
uvd
->
stats
.
data_count
+=
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 )
...
@@ -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
);
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 */
/* do cleanup only after final close on this port */
spin_lock_irqsave
(
&
priv
->
dp_port_lock
,
flags
);
spin_lock_irqsave
(
&
priv
->
dp_port_lock
,
flags
);
priv
->
dp_in_close
=
1
;
priv
->
dp_in_close
=
1
;
spin_unlock_irqrestore
(
&
priv
->
dp_port_lock
,
flags
);
spin_unlock_irqrestore
(
&
priv
->
dp_port_lock
,
flags
);
/* tell line discipline to process only XON/XOFF */
/* tell line discipline to process only XON/XOFF */
tty
->
closing
=
1
;
tty
->
closing
=
1
;
/* wait for output to drain */
/* wait for output to drain */
if
(
(
filp
->
f_flags
&
(
O_NDELAY
|
O_NONBLOCK
))
==
0
)
{
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
...
@@ -1616,6 +1620,7 @@ dbg( "digi_close: TOP: port=%d, open_count=%d", priv->dp_port_num, port->open_co
tty
->
closing
=
0
;
tty
->
closing
=
0
;
exit:
spin_lock_irqsave
(
&
priv
->
dp_port_lock
,
flags
);
spin_lock_irqsave
(
&
priv
->
dp_port_lock
,
flags
);
priv
->
dp_write_urb_in_use
=
0
;
priv
->
dp_write_urb_in_use
=
0
;
priv
->
dp_in_close
=
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,
...
@@ -1579,6 +1579,12 @@ static ssize_t ext3_direct_IO(int rw, struct kiocb *iocb,
offset
,
nr_segs
,
offset
,
nr_segs
,
ext3_direct_io_get_blocks
,
NULL
);
ext3_direct_io_get_blocks
,
NULL
);
/*
* Reacquire the handle: ext3_direct_io_get_block() can restart the
* transaction
*/
handle
=
journal_current_handle
();
out_stop:
out_stop:
if
(
handle
)
{
if
(
handle
)
{
int
err
;
int
err
;
...
...
include/asm-i386/linkage.h
View file @
49093583
...
@@ -5,6 +5,10 @@
...
@@ -5,6 +5,10 @@
#define FASTCALL(x) x __attribute__((regparm(3)))
#define FASTCALL(x) x __attribute__((regparm(3)))
#define fastcall __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
#ifdef CONFIG_X86_ALIGNMENT_16
#define __ALIGN .align 16,0x90
#define __ALIGN .align 16,0x90
#define __ALIGN_STR ".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,
...
@@ -398,6 +398,79 @@ static inline int isa_check_signature(unsigned long io_addr,
return
0
;
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 */
#endif
/* _PPC_IO_H */
#ifdef CONFIG_8260_PCI9
#ifdef CONFIG_8260_PCI9
...
...
include/linux/linkage.h
View file @
49093583
...
@@ -14,6 +14,10 @@
...
@@ -14,6 +14,10 @@
#define asmlinkage CPP_ASMLINKAGE
#define asmlinkage CPP_ASMLINKAGE
#endif
#endif
#ifndef prevent_tail_call
# define prevent_tail_call(ret) do { } while (0)
#endif
#ifndef __ALIGN
#ifndef __ALIGN
#define __ALIGN .align 4,0x90
#define __ALIGN .align 4,0x90
#define __ALIGN_STR ".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,
...
@@ -1376,6 +1376,8 @@ asmlinkage long sys_waitid(int which, pid_t pid,
struct
siginfo
__user
*
infop
,
int
options
,
struct
siginfo
__user
*
infop
,
int
options
,
struct
rusage
__user
*
ru
)
struct
rusage
__user
*
ru
)
{
{
long
ret
;
if
(
options
&
~
(
WNOHANG
|
WNOWAIT
|
WEXITED
|
WSTOPPED
|
WCONTINUED
))
if
(
options
&
~
(
WNOHANG
|
WNOWAIT
|
WEXITED
|
WSTOPPED
|
WCONTINUED
))
return
-
EINVAL
;
return
-
EINVAL
;
if
(
!
(
options
&
(
WEXITED
|
WSTOPPED
|
WCONTINUED
)))
if
(
!
(
options
&
(
WEXITED
|
WSTOPPED
|
WCONTINUED
)))
...
@@ -1398,15 +1400,25 @@ asmlinkage long sys_waitid(int which, pid_t pid,
...
@@ -1398,15 +1400,25 @@ asmlinkage long sys_waitid(int which, pid_t pid,
return
-
EINVAL
;
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
,
asmlinkage
long
sys_wait4
(
pid_t
pid
,
int
__user
*
stat_addr
,
int
options
,
struct
rusage
__user
*
ru
)
int
options
,
struct
rusage
__user
*
ru
)
{
{
long
ret
;
if
(
options
&
~
(
WNOHANG
|
WUNTRACED
|
__WNOTHREAD
|
__WCLONE
|
__WALL
))
if
(
options
&
~
(
WNOHANG
|
WUNTRACED
|
__WNOTHREAD
|
__WCLONE
|
__WALL
))
return
-
EINVAL
;
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
#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,
...
@@ -181,7 +181,7 @@ static int shrink_slab(unsigned long scanned, unsigned int gfp_mask,
struct
shrinker
*
shrinker
;
struct
shrinker
*
shrinker
;
if
(
scanned
==
0
)
if
(
scanned
==
0
)
return
0
;
scanned
=
SWAP_CLUSTER_MAX
;
if
(
!
down_read_trylock
(
&
shrinker_rwsem
))
if
(
!
down_read_trylock
(
&
shrinker_rwsem
))
return
0
;
return
0
;
...
@@ -1065,7 +1065,8 @@ static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
...
@@ -1065,7 +1065,8 @@ static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
total_reclaimed
+=
sc
.
nr_reclaimed
;
total_reclaimed
+=
sc
.
nr_reclaimed
;
if
(
zone
->
all_unreclaimable
)
if
(
zone
->
all_unreclaimable
)
continue
;
continue
;
if
(
zone
->
pages_scanned
>
zone
->
present_pages
*
2
)
if
(
zone
->
pages_scanned
>=
(
zone
->
nr_active
+
zone
->
nr_inactive
)
*
4
)
zone
->
all_unreclaimable
=
1
;
zone
->
all_unreclaimable
=
1
;
/*
/*
* If we've done a decent amount of scanning and
* 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)
...
@@ -1102,8 +1103,10 @@ static int balance_pgdat(pg_data_t *pgdat, int nr_pages)
zone
->
prev_priority
=
zone
->
temp_priority
;
zone
->
prev_priority
=
zone
->
temp_priority
;
}
}
if
(
!
all_zones_ok
)
if
(
!
all_zones_ok
)
{
cond_resched
();
goto
loop_again
;
goto
loop_again
;
}
return
total_reclaimed
;
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,
...
@@ -246,7 +246,7 @@ gss_parse_init_downcall(struct gss_api_mech *gm, struct xdr_netobj *buf,
spin_lock_init
(
&
ctx
->
gc_seq_lock
);
spin_lock_init
(
&
ctx
->
gc_seq_lock
);
atomic_set
(
&
ctx
->
count
,
1
);
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
;
goto
err_free_ctx
;
/* FIXME: discarded timeout for now */
/* FIXME: discarded timeout for now */
if
(
simple_get_bytes
(
&
p
,
end
,
&
timeout
,
sizeof
(
timeout
)))
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