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
cfad589f
Commit
cfad589f
authored
Dec 11, 2007
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'linux-2.6' into for-2.6.25
parents
bc625f20
437105f2
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
294 additions
and
156 deletions
+294
-156
Makefile
Makefile
+6
-8
arch/ia64/Makefile
arch/ia64/Makefile
+1
-1
arch/ia64/hp/sim/boot/Makefile
arch/ia64/hp/sim/boot/Makefile
+1
-1
arch/ia64/hp/sim/boot/bootloader.lds
arch/ia64/hp/sim/boot/bootloader.lds
+2
-1
arch/ia64/kernel/acpi.c
arch/ia64/kernel/acpi.c
+1
-1
arch/ia64/kernel/efi.c
arch/ia64/kernel/efi.c
+5
-5
arch/ia64/kernel/gate.lds.S
arch/ia64/kernel/gate.lds.S
+1
-1
arch/ia64/kernel/ia64_ksyms.c
arch/ia64/kernel/ia64_ksyms.c
+3
-0
arch/ia64/kernel/iosapic.c
arch/ia64/kernel/iosapic.c
+4
-17
arch/ia64/kernel/kprobes.c
arch/ia64/kernel/kprobes.c
+22
-7
arch/ia64/kernel/setup.c
arch/ia64/kernel/setup.c
+1
-2
arch/ia64/kernel/signal.c
arch/ia64/kernel/signal.c
+4
-4
arch/ia64/kernel/vmlinux.lds.S
arch/ia64/kernel/vmlinux.lds.S
+2
-1
arch/ia64/lib/Makefile
arch/ia64/lib/Makefile
+2
-2
arch/ia64/mm/tlb.c
arch/ia64/mm/tlb.c
+1
-1
arch/ia64/scripts/unwcheck.py
arch/ia64/scripts/unwcheck.py
+0
-0
arch/ia64/sn/kernel/io_common.c
arch/ia64/sn/kernel/io_common.c
+6
-7
arch/powerpc/platforms/chrp/pci.c
arch/powerpc/platforms/chrp/pci.c
+15
-6
arch/powerpc/platforms/powermac/pci.c
arch/powerpc/platforms/powermac/pci.c
+9
-2
drivers/pci/probe.c
drivers/pci/probe.c
+12
-36
fs/xfs/linux-2.6/xfs_buf.c
fs/xfs/linux-2.6/xfs_buf.c
+16
-21
fs/xfs/linux-2.6/xfs_file.c
fs/xfs/linux-2.6/xfs_file.c
+124
-0
fs/xfs/linux-2.6/xfs_ioctl.c
fs/xfs/linux-2.6/xfs_ioctl.c
+8
-12
fs/xfs/linux-2.6/xfs_ioctl32.c
fs/xfs/linux-2.6/xfs_ioctl32.c
+3
-0
fs/xfs/linux-2.6/xfs_iops.c
fs/xfs/linux-2.6/xfs_iops.c
+2
-2
fs/xfs/quota/xfs_qm.c
fs/xfs/quota/xfs_qm.c
+3
-0
fs/xfs/xfs_iget.c
fs/xfs/xfs_iget.c
+1
-1
fs/xfs/xfs_itable.c
fs/xfs/xfs_itable.c
+29
-14
include/asm-ia64/iosapic.h
include/asm-ia64/iosapic.h
+0
-2
mm/slob.c
mm/slob.c
+1
-1
mm/slub.c
mm/slub.c
+3
-0
scripts/mkmakefile
scripts/mkmakefile
+6
-0
No files found.
Makefile
View file @
cfad589f
...
...
@@ -108,6 +108,9 @@ endif
PHONY
:=
_all
_all
:
# Cancel implicit rules on top Makefile
$(CURDIR)/Makefile Makefile
:
;
ifneq
($(KBUILD_OUTPUT),)
# Invoke a second make in the output directory, passing relevant variables
# check that the output directory actually exists
...
...
@@ -115,13 +118,10 @@ saved-output := $(KBUILD_OUTPUT)
KBUILD_OUTPUT
:=
$(
shell
cd
$(KBUILD_OUTPUT)
&&
/bin/pwd
)
$(if
$(KBUILD_OUTPUT),,
\
$(error
output
directory
"$(saved-output)"
does
not
exist))
# Check that OUTPUT directory is not the same as where we have kernel src
$(if
$(filter-out
$(KBUILD_OUTPUT),$(shell
/bin/pwd)),,
\
$(error
Output
directory
(O
=
...
)
specifies kernel src
dir
))
PHONY
+=
$(MAKECMDGOALS)
sub-make
$(filter-out _all sub-make
,
$(MAKECMDGOALS)) _all
:
sub-make
$(filter-out _all sub-make
$(CURDIR)/Makefile,
$(MAKECMDGOALS)) _all
:
sub-make
$(Q)
@:
sub-make
:
FORCE
...
...
@@ -291,7 +291,8 @@ export quiet Q KBUILD_VERBOSE
# Look for make include files relative to root of kernel src
MAKEFLAGS
+=
--include-dir
=
$(srctree)
# We need some generic definitions.
# We need some generic definitions (do not try to remake the file).
$(srctree)/scripts/Kbuild.include
:
;
include
$(srctree)/scripts/Kbuild.include
# Make variables (CC, etc...)
...
...
@@ -1560,9 +1561,6 @@ endif # skip-makefile
PHONY
+=
FORCE
FORCE
:
# Cancel implicit rules on top Makefile, `-rR' will apply to sub-makes.
Makefile
:
;
# Declare the contents of the .PHONY variable as phony. We keep that
# information in a variable se we can use it in if_changed and friends.
.PHONY
:
$(PHONY)
arch/ia64/Makefile
View file @
cfad589f
...
...
@@ -77,7 +77,7 @@ vmlinux.gz: vmlinux
$(Q)$(MAKE)
$(build)
=
$(boot)
$@
unwcheck
:
vmlinux
-
$(Q)READELF
=
$(READELF)
$(srctree)
/arch/ia64/scripts/unwcheck.py
$<
-
$(Q)READELF
=
$(READELF)
python
$(srctree)
/arch/ia64/scripts/unwcheck.py
$<
archclean
:
$(Q)$(MAKE)
$(clean)
=
$(boot)
...
...
arch/ia64/hp/sim/boot/Makefile
View file @
cfad589f
...
...
@@ -33,5 +33,5 @@ $(obj)/vmlinux.bin: vmlinux FORCE
LDFLAGS_bootloader
=
-static
-T
$(obj)/bootloader
:
$(src)/bootloader.lds $(obj)/bootloader.o $(obj)/boot_head.o $(obj)/fw-emu.o
\
lib/lib.a arch/ia64/lib/lib.a FORCE
lib/lib.a arch/ia64/lib/
built-in.o arch/ia64/lib/
lib.a FORCE
$(
call
if_changed,ld
)
arch/ia64/hp/sim/boot/bootloader.lds
View file @
cfad589f
...
...
@@ -22,10 +22,11 @@ SECTIONS
.sdata : { *(.sdata) }
_edata = .;
_
bss
= .;
_
_bss_start
= .;
.sbss : { *(.sbss) *(.scommon) }
.bss : { *(.bss) *(COMMON) }
. = ALIGN(64 / 8);
__bss_stop = .;
_end = . ;
/* Stabs debugging sections. */
...
...
arch/ia64/kernel/acpi.c
View file @
cfad589f
...
...
@@ -860,7 +860,7 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu)
lsapic
=
(
struct
acpi_madt_local_sapic
*
)
obj
->
buffer
.
pointer
;
if
((
lsapic
->
header
.
type
!=
ACPI_MADT_TYPE_LOCAL_SAPIC
)
||
(
!
lsapic
->
lapic_flags
&
ACPI_MADT_ENABLED
))
{
(
!
(
lsapic
->
lapic_flags
&
ACPI_MADT_ENABLED
)
))
{
kfree
(
buffer
.
pointer
);
return
-
EINVAL
;
}
...
...
arch/ia64/kernel/efi.c
View file @
cfad589f
...
...
@@ -370,7 +370,7 @@ efi_get_pal_addr (void)
continue
;
}
if
(
md
->
num_pages
<<
EFI_PAGE_SHIFT
>
IA64_GRANULE_SIZE
)
if
(
efi_md_size
(
md
)
>
IA64_GRANULE_SIZE
)
panic
(
"Woah! PAL code size bigger than a granule!"
);
#if EFI_DEBUG
...
...
@@ -378,7 +378,7 @@ efi_get_pal_addr (void)
printk
(
KERN_INFO
"CPU %d: mapping PAL code [0x%lx-0x%lx) into [0x%lx-0x%lx)
\n
"
,
smp_processor_id
(),
md
->
phys_addr
,
md
->
phys_addr
+
(
md
->
num_pages
<<
EFI_PAGE_SHIFT
),
md
->
phys_addr
+
efi_md_size
(
md
),
vaddr
&
mask
,
(
vaddr
&
mask
)
+
IA64_GRANULE_SIZE
);
#endif
return
__va
(
md
->
phys_addr
);
...
...
@@ -523,7 +523,7 @@ efi_init (void)
md
=
p
;
printk
(
"mem%02u: type=%u, attr=0x%lx, range=[0x%016lx-0x%016lx) (%luMB)
\n
"
,
i
,
md
->
type
,
md
->
attribute
,
md
->
phys_addr
,
md
->
phys_addr
+
(
md
->
num_pages
<<
EFI_PAGE_SHIFT
),
md
->
phys_addr
+
efi_md_size
(
md
),
md
->
num_pages
>>
(
20
-
EFI_PAGE_SHIFT
));
}
}
...
...
@@ -656,7 +656,7 @@ efi_memory_descriptor (unsigned long phys_addr)
for
(
p
=
efi_map_start
;
p
<
efi_map_end
;
p
+=
efi_desc_size
)
{
md
=
p
;
if
(
phys_addr
-
md
->
phys_addr
<
(
md
->
num_pages
<<
EFI_PAGE_SHIFT
))
if
(
phys_addr
-
md
->
phys_addr
<
efi_md_size
(
md
))
return
md
;
}
return
NULL
;
...
...
@@ -1158,7 +1158,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
res
->
name
=
name
;
res
->
start
=
md
->
phys_addr
;
res
->
end
=
md
->
phys_addr
+
(
md
->
num_pages
<<
EFI_PAGE_SHIFT
)
-
1
;
res
->
end
=
md
->
phys_addr
+
efi_md_size
(
md
)
-
1
;
res
->
flags
=
flags
;
if
(
insert_resource
(
&
iomem_resource
,
res
)
<
0
)
...
...
arch/ia64/kernel/gate.lds.S
View file @
cfad589f
...
...
@@ -30,7 +30,7 @@ SECTIONS
*
the
dynamic
symbol
table
et
al
.
If
this
amount
is
insufficient
,
*
ld
-
shared
will
barf
.
Just
increase
it
here
.
*/
.
=
GATE_ADDR
+
0x
5
00
;
.
=
GATE_ADDR
+
0x
6
00
;
.
data.patch
:
{
__start_gate_mckinley_e9_patchlist
=
.
;
...
...
arch/ia64/kernel/ia64_ksyms.c
View file @
cfad589f
...
...
@@ -63,6 +63,9 @@ EXPORT_SYMBOL(__udivdi3);
EXPORT_SYMBOL
(
__moddi3
);
EXPORT_SYMBOL
(
__umoddi3
);
#include <asm/page.h>
EXPORT_SYMBOL
(
copy_page
);
#if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE)
extern
void
xor_ia64_2
(
void
);
extern
void
xor_ia64_3
(
void
);
...
...
arch/ia64/kernel/iosapic.c
View file @
cfad589f
...
...
@@ -199,19 +199,6 @@ static inline int __gsi_to_irq(unsigned int gsi)
return
-
1
;
}
/*
* Translate GSI number to the corresponding IA-64 interrupt vector. If no
* entry exists, return -1.
*/
inline
int
gsi_to_vector
(
unsigned
int
gsi
)
{
int
irq
=
__gsi_to_irq
(
gsi
);
if
(
check_irq_used
(
irq
)
<
0
)
return
-
1
;
return
irq_to_vector
(
irq
);
}
int
gsi_to_irq
(
unsigned
int
gsi
)
{
...
...
@@ -429,7 +416,7 @@ iosapic_end_level_irq (unsigned int irq)
#define iosapic_disable_level_irq mask_irq
#define iosapic_ack_level_irq nop
struct
irq_chip
irq_type_iosapic_level
=
{
st
atic
st
ruct
irq_chip
irq_type_iosapic_level
=
{
.
name
=
"IO-SAPIC-level"
,
.
startup
=
iosapic_startup_level_irq
,
.
shutdown
=
iosapic_shutdown_level_irq
,
...
...
@@ -478,7 +465,7 @@ iosapic_ack_edge_irq (unsigned int irq)
#define iosapic_disable_edge_irq nop
#define iosapic_end_edge_irq nop
struct
irq_chip
irq_type_iosapic_edge
=
{
st
atic
st
ruct
irq_chip
irq_type_iosapic_edge
=
{
.
name
=
"IO-SAPIC-edge"
,
.
startup
=
iosapic_startup_edge_irq
,
.
shutdown
=
iosapic_disable_edge_irq
,
...
...
@@ -491,7 +478,7 @@ struct irq_chip irq_type_iosapic_edge = {
.
set_affinity
=
iosapic_set_affinity
};
unsigned
int
static
unsigned
int
iosapic_version
(
char
__iomem
*
addr
)
{
/*
...
...
@@ -938,7 +925,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
case
ACPI_INTERRUPT_CPEI
:
irq
=
vector
=
IA64_CPE_VECTOR
;
BUG_ON
(
bind_irq_vector
(
irq
,
vector
,
CPU_MASK_ALL
));
delivery
=
IOSAPIC_
LOWEST_PRIORITY
;
delivery
=
IOSAPIC_
FIXED
;
mask
=
1
;
break
;
default:
...
...
arch/ia64/kernel/kprobes.c
View file @
cfad589f
...
...
@@ -182,8 +182,8 @@ static int __kprobes unsupported_inst(uint template, uint slot,
qp
=
kprobe_inst
&
0x3f
;
if
(
is_cmp_ctype_unc_inst
(
template
,
slot
,
major_opcode
,
kprobe_inst
))
{
if
(
slot
==
1
&&
qp
)
{
printk
(
KERN_WARNING
"Kprobes on cmp unc"
"instruction on slot 1 at <0x%lx>"
printk
(
KERN_WARNING
"Kprobes on cmp unc
"
"instruction on slot 1 at <0x%lx>
"
"is not supported
\n
"
,
addr
);
return
-
EINVAL
;
...
...
@@ -221,8 +221,8 @@ static int __kprobes unsupported_inst(uint template, uint slot,
* bit 12 to be equal to 1
*/
if
(
slot
==
1
&&
qp
)
{
printk
(
KERN_WARNING
"Kprobes on test bit"
"instruction on slot at <0x%lx>"
printk
(
KERN_WARNING
"Kprobes on test bit
"
"instruction on slot at <0x%lx>
"
"is not supported
\n
"
,
addr
);
return
-
EINVAL
;
}
...
...
@@ -242,7 +242,7 @@ static int __kprobes unsupported_inst(uint template, uint slot,
*/
int
x6
=
(
kprobe_inst
>>
27
)
&
0x3F
;
if
((
x6
==
0x10
)
||
(
x6
==
0x11
))
{
printk
(
KERN_WARNING
"Kprobes on"
printk
(
KERN_WARNING
"Kprobes on
"
"Indirect Predict is not supported
\n
"
);
return
-
EINVAL
;
}
...
...
@@ -430,6 +430,23 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
* real return address, and all the rest will point to
* kretprobe_trampoline
*/
hlist_for_each_entry_safe
(
ri
,
node
,
tmp
,
head
,
hlist
)
{
if
(
ri
->
task
!=
current
)
/* another task is sharing our hash bucket */
continue
;
orig_ret_address
=
(
unsigned
long
)
ri
->
ret_addr
;
if
(
orig_ret_address
!=
trampoline_address
)
/*
* This is the real return address. Any other
* instances associated with this task are for
* other calls deeper on the call stack
*/
break
;
}
regs
->
cr_iip
=
orig_ret_address
;
hlist_for_each_entry_safe
(
ri
,
node
,
tmp
,
head
,
hlist
)
{
if
(
ri
->
task
!=
current
)
/* another task is sharing our hash bucket */
...
...
@@ -452,8 +469,6 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
kretprobe_assert
(
ri
,
orig_ret_address
,
trampoline_address
);
regs
->
cr_iip
=
orig_ret_address
;
reset_current_kprobe
();
spin_unlock_irqrestore
(
&
kretprobe_lock
,
flags
);
preempt_enable_no_resched
();
...
...
arch/ia64/kernel/setup.c
View file @
cfad589f
...
...
@@ -95,7 +95,6 @@ static struct resource bss_resource = {
.
name
=
"Kernel bss"
,
.
flags
=
IORESOURCE_BUSY
|
IORESOURCE_MEM
};
extern
char
_text
[],
_end
[],
_etext
[],
_edata
[],
_bss
[];
unsigned
long
ia64_max_cacheline_size
;
...
...
@@ -206,7 +205,7 @@ static int __init register_memory(void)
code_resource
.
end
=
ia64_tpa
(
_etext
)
-
1
;
data_resource
.
start
=
ia64_tpa
(
_etext
);
data_resource
.
end
=
ia64_tpa
(
_edata
)
-
1
;
bss_resource
.
start
=
ia64_tpa
(
_
bss
);
bss_resource
.
start
=
ia64_tpa
(
_
_bss_start
);
bss_resource
.
end
=
ia64_tpa
(
_end
)
-
1
;
efi_initialize_iomem_resources
(
&
code_resource
,
&
data_resource
,
&
bss_resource
);
...
...
arch/ia64/kernel/signal.c
View file @
cfad589f
...
...
@@ -98,7 +98,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr)
if
((
flags
&
IA64_SC_FLAG_FPH_VALID
)
!=
0
)
{
struct
ia64_psr
*
psr
=
ia64_psr
(
&
scr
->
pt
);
__copy_from_user
(
current
->
thread
.
fph
,
&
sc
->
sc_fr
[
32
],
96
*
16
);
err
|=
__copy_from_user
(
current
->
thread
.
fph
,
&
sc
->
sc_fr
[
32
],
96
*
16
);
psr
->
mfh
=
0
;
/* drop signal handler's fph contents... */
preempt_disable
();
if
(
psr
->
dfh
)
...
...
@@ -244,7 +244,7 @@ static long
setup_sigcontext
(
struct
sigcontext
__user
*
sc
,
sigset_t
*
mask
,
struct
sigscratch
*
scr
)
{
unsigned
long
flags
=
0
,
ifs
,
cfm
,
nat
;
long
err
;
long
err
=
0
;
ifs
=
scr
->
pt
.
cr_ifs
;
...
...
@@ -257,12 +257,12 @@ setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratc
ia64_flush_fph
(
current
);
if
((
current
->
thread
.
flags
&
IA64_THREAD_FPH_VALID
))
{
flags
|=
IA64_SC_FLAG_FPH_VALID
;
__copy_to_user
(
&
sc
->
sc_fr
[
32
],
current
->
thread
.
fph
,
96
*
16
);
err
=
__copy_to_user
(
&
sc
->
sc_fr
[
32
],
current
->
thread
.
fph
,
96
*
16
);
}
nat
=
ia64_get_scratch_nat_bits
(
&
scr
->
pt
,
scr
->
scratch_unat
);
err
=
__put_user
(
flags
,
&
sc
->
sc_flags
);
err
|
=
__put_user
(
flags
,
&
sc
->
sc_flags
);
err
|=
__put_user
(
nat
,
&
sc
->
sc_nat
);
err
|=
PUT_SIGSET
(
mask
,
&
sc
->
sc_mask
);
err
|=
__put_user
(
cfm
,
&
sc
->
sc_cfm
);
...
...
arch/ia64/kernel/vmlinux.lds.S
View file @
cfad589f
...
...
@@ -240,11 +240,12 @@ SECTIONS
.
sdata
:
AT
(
ADDR
(
.
sdata
)
-
LOAD_OFFSET
)
{
*(
.
sdata
)
*(
.
sdata1
)
*(
.
srdata
)
}
_edata
=
.
;
_
bss
=
.
;
_
_bss_start
=
.
;
.
sbss
:
AT
(
ADDR
(
.
sbss
)
-
LOAD_OFFSET
)
{
*(
.
sbss
)
*(
.
scommon
)
}
.
bss
:
AT
(
ADDR
(
.
bss
)
-
LOAD_OFFSET
)
{
*(
.
bss
)
*(
COMMON
)
}
__bss_stop
=
.
;
_end
=
.
;
...
...
arch/ia64/lib/Makefile
View file @
cfad589f
...
...
@@ -11,8 +11,8 @@ lib-y := __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \
flush.o ip_fast_csum.o do_csum.o
\
memset.o strlen.o xor.o
lib
-$(CONFIG_ITANIUM)
+=
copy_page.o copy_user.o memcpy.o
lib
-$(CONFIG_MCKINLEY)
+=
copy_page_mck.o memcpy_mck.o
obj
-$(CONFIG_ITANIUM)
+=
copy_page.o copy_user.o memcpy.o
obj
-$(CONFIG_MCKINLEY)
+=
copy_page_mck.o memcpy_mck.o
lib-$(CONFIG_PERFMON)
+=
carta_random.o
AFLAGS___divdi3.o
=
...
...
arch/ia64/mm/tlb.c
View file @
cfad589f
...
...
@@ -180,7 +180,7 @@ ia64_tlb_init (void)
long
status
;
if
((
status
=
ia64_pal_vm_page_size
(
&
tr_pgbits
,
&
purge
.
mask
))
!=
0
)
{
printk
(
KERN_ERR
"PAL_VM_PAGE_SIZE failed with status=%ld;"
printk
(
KERN_ERR
"PAL_VM_PAGE_SIZE failed with status=%ld;
"
"defaulting to architected purge page-sizes.
\n
"
,
status
);
purge
.
mask
=
0x115557000UL
;
}
...
...
arch/ia64/scripts/unwcheck.py
100755 → 100644
View file @
cfad589f
File mode changed from 100755 to 100644
arch/ia64/sn/kernel/io_common.c
View file @
cfad589f
...
...
@@ -347,7 +347,7 @@ sn_common_bus_fixup(struct pci_bus *bus,
if
(
controller
->
node
>=
num_online_nodes
())
{
struct
pcibus_bussoft
*
b
=
SN_PCIBUS_BUSSOFT
(
bus
);
printk
(
KERN_WARNING
"Device ASIC=%u XID=%u PBUSNUM=%u"
printk
(
KERN_WARNING
"Device ASIC=%u XID=%u PBUSNUM=%u
"
"L_IO=%lx L_MEM=%lx BASE=%lx
\n
"
,
b
->
bs_asic_type
,
b
->
bs_xid
,
b
->
bs_persist_busnum
,
b
->
bs_legacy_io
,
b
->
bs_legacy_mem
,
b
->
bs_base
);
...
...
@@ -545,19 +545,18 @@ sn_io_late_init(void)
nasid
=
NASID_GET
(
bussoft
->
bs_base
);
cnode
=
nasid_to_cnodeid
(
nasid
);
if
((
bussoft
->
bs_asic_type
==
PCIIO_ASIC_TYPE_TIOCP
)
||
(
bussoft
->
bs_asic_type
==
PCIIO_ASIC_TYPE_TIOCE
))
{
/* TIO PCI Bridge: find nearest node with CPUs */
(
bussoft
->
bs_asic_type
==
PCIIO_ASIC_TYPE_TIOCE
)
||
(
bussoft
->
bs_asic_type
==
PCIIO_ASIC_TYPE_PIC
))
{
/* PCI Bridge: find nearest node with CPUs */
int
e
=
sn_hwperf_get_nearest_node
(
cnode
,
NULL
,
&
near_cnode
);
if
(
e
<
0
)
{
near_cnode
=
(
cnodeid_t
)
-
1
;
/* use any node */
printk
(
KERN_WARNING
"
pcibr_bus_fixup
: failed "
"to find near node with CPUs
to TIO
"
printk
(
KERN_WARNING
"
sn_io_late_init
: failed "
"to find near node with CPUs
for
"
"node %d, err=%d
\n
"
,
cnode
,
e
);
}
PCI_CONTROLLER
(
bus
)
->
node
=
near_cnode
;
}
else
if
(
bussoft
->
bs_asic_type
==
PCIIO_ASIC_TYPE_PIC
)
{
PCI_CONTROLLER
(
bus
)
->
node
=
cnode
;
}
}
...
...
arch/powerpc/platforms/chrp/pci.c
View file @
cfad589f
...
...
@@ -317,8 +317,12 @@ chrp_find_bridges(void)
/* SL82C105 IDE Control/Status Register */
#define SL82C105_IDECSR 0x40
/* Fixup for Winbond ATA quirk, required for briq */
void
chrp_pci_fixup_winbond_ata
(
struct
pci_dev
*
sl82c105
)
/* Fixup for Winbond ATA quirk, required for briq mostly because the
* 8259 is configured for level sensitive IRQ 14 and so wants the
* ATA controller to be set to fully native mode or bad things
* will happen.
*/
static
void
__devinit
chrp_pci_fixup_winbond_ata
(
struct
pci_dev
*
sl82c105
)
{
u8
progif
;
...
...
@@ -334,10 +338,15 @@ void chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105)
sl82c105
->
class
|=
0x05
;
/* Disable SL82C105 second port */
pci_write_config_word
(
sl82c105
,
SL82C105_IDECSR
,
0x0003
);
/* Clear IO BARs, they will be reassigned */
pci_write_config_dword
(
sl82c105
,
PCI_BASE_ADDRESS_0
,
0
);
pci_write_config_dword
(
sl82c105
,
PCI_BASE_ADDRESS_1
,
0
);
pci_write_config_dword
(
sl82c105
,
PCI_BASE_ADDRESS_2
,
0
);
pci_write_config_dword
(
sl82c105
,
PCI_BASE_ADDRESS_3
,
0
);
}
}
DECLARE_PCI_FIXUP_
FINAL
(
PCI_VENDOR_ID_WINBOND
,
PCI_DEVICE_ID_WINBOND_82C105
,
chrp_pci_fixup_winbond_ata
);
DECLARE_PCI_FIXUP_
EARLY
(
PCI_VENDOR_ID_WINBOND
,
PCI_DEVICE_ID_WINBOND_82C105
,
chrp_pci_fixup_winbond_ata
);
/* Pegasos2 firmware version 20040810 configures the built-in IDE controller
* in legacy mode, but sets the PCI registers to PCI native mode.
...
...
@@ -345,7 +354,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
* mode as well. The same fixup must be done to the class-code property in
* the IDE node /pci@80000000/ide@C,1
*/
static
void
chrp_pci_fixup_vt8231_ata
(
struct
pci_dev
*
viaide
)
static
void
__devinit
chrp_pci_fixup_vt8231_ata
(
struct
pci_dev
*
viaide
)
{
u8
progif
;
struct
pci_dev
*
viaisa
;
...
...
@@ -366,4 +375,4 @@ static void chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide)
pci_dev_put
(
viaisa
);
}
DECLARE_PCI_FIXUP_
FINAL
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C586_1
,
chrp_pci_fixup_vt8231_ata
);
DECLARE_PCI_FIXUP_
EARLY
(
PCI_VENDOR_ID_VIA
,
PCI_DEVICE_ID_VIA_82C586_1
,
chrp_pci_fixup_vt8231_ata
);
arch/powerpc/platforms/powermac/pci.c
View file @
cfad589f
...
...
@@ -1243,15 +1243,22 @@ void pmac_pci_fixup_pciata(struct pci_dev* dev)
good:
pci_read_config_byte
(
dev
,
PCI_CLASS_PROG
,
&
progif
);
if
((
progif
&
5
)
!=
5
)
{
printk
(
KERN_INFO
"
Forcing PCI IDE into native mode: %s
\n
"
,
printk
(
KERN_INFO
"
PCI: %s Forcing PCI IDE into native mode
\n
"
,
pci_name
(
dev
));
(
void
)
pci_write_config_byte
(
dev
,
PCI_CLASS_PROG
,
progif
|
5
);
if
(
pci_read_config_byte
(
dev
,
PCI_CLASS_PROG
,
&
progif
)
||
(
progif
&
5
)
!=
5
)
printk
(
KERN_ERR
"Rewrite of PROGIF failed !
\n
"
);
else
{
/* Clear IO BARs, they will be reassigned */
pci_write_config_dword
(
dev
,
PCI_BASE_ADDRESS_0
,
0
);
pci_write_config_dword
(
dev
,
PCI_BASE_ADDRESS_1
,
0
);
pci_write_config_dword
(
dev
,
PCI_BASE_ADDRESS_2
,
0
);
pci_write_config_dword
(
dev
,
PCI_BASE_ADDRESS_3
,
0
);
}
}
}
DECLARE_PCI_FIXUP_
FINAL
(
PCI_ANY_ID
,
PCI_ANY_ID
,
pmac_pci_fixup_pciata
);
DECLARE_PCI_FIXUP_
EARLY
(
PCI_ANY_ID
,
PCI_ANY_ID
,
pmac_pci_fixup_pciata
);
#endif
/*
...
...
drivers/pci/probe.c
View file @
cfad589f
...
...
@@ -743,46 +743,22 @@ static int pci_setup_device(struct pci_dev * dev)
*/
if
(
class
==
PCI_CLASS_STORAGE_IDE
)
{
u8
progif
;
struct
pci_bus_region
region
;
pci_read_config_byte
(
dev
,
PCI_CLASS_PROG
,
&
progif
);
if
((
progif
&
1
)
==
0
)
{
struct
resource
resource
=
{
.
start
=
0x1F0
,
.
end
=
0x1F7
,
.
flags
=
LEGACY_IO_RESOURCE
,
};
pcibios_resource_to_bus
(
dev
,
&
region
,
&
resource
);
dev
->
resource
[
0
].
start
=
region
.
start
;
dev
->
resource
[
0
].
end
=
region
.
end
;
dev
->
resource
[
0
].
flags
=
resource
.
flags
;
resource
.
start
=
0x3F6
;
resource
.
end
=
0x3F6
;
resource
.
flags
=
LEGACY_IO_RESOURCE
;
pcibios_resource_to_bus
(
dev
,
&
region
,
&
resource
);
dev
->
resource
[
1
].
start
=
region
.
start
;
dev
->
resource
[
1
].
end
=
region
.
end
;
dev
->
resource
[
1
].
flags
=
resource
.
flags
;
dev
->
resource
[
0
].
start
=
0x1F0
;
dev
->
resource
[
0
].
end
=
0x1F7
;
dev
->
resource
[
0
].
flags
=
LEGACY_IO_RESOURCE
;
dev
->
resource
[
1
].
start
=
0x3F6
;
dev
->
resource
[
1
].
end
=
0x3F6
;
dev
->
resource
[
1
].
flags
=
LEGACY_IO_RESOURCE
;
}
if
((
progif
&
4
)
==
0
)
{
struct
resource
resource
=
{
.
start
=
0x170
,
.
end
=
0x177
,
.
flags
=
LEGACY_IO_RESOURCE
,
};
pcibios_resource_to_bus
(
dev
,
&
region
,
&
resource
);
dev
->
resource
[
2
].
start
=
region
.
start
;
dev
->
resource
[
2
].
end
=
region
.
end
;
dev
->
resource
[
2
].
flags
=
resource
.
flags
;
resource
.
start
=
0x376
;
resource
.
end
=
0x376
;
resource
.
flags
=
LEGACY_IO_RESOURCE
;
pcibios_resource_to_bus
(
dev
,
&
region
,
&
resource
);
dev
->
resource
[
3
].
start
=
region
.
start
;
dev
->
resource
[
3
].
end
=
region
.
end
;
dev
->
resource
[
3
].
flags
=
resource
.
flags
;
dev
->
resource
[
2
].
start
=
0x170
;
dev
->
resource
[
2
].
end
=
0x177
;
dev
->
resource
[
2
].
flags
=
LEGACY_IO_RESOURCE
;
dev
->
resource
[
3
].
start
=
0x376
;
dev
->
resource
[
3
].
end
=
0x376
;
dev
->
resource
[
3
].
flags
=
LEGACY_IO_RESOURCE
;
}
}
break
;
...
...
fs/xfs/linux-2.6/xfs_buf.c
View file @
cfad589f
...
...
@@ -725,15 +725,15 @@ xfs_buf_associate_memory(
{
int
rval
;
int
i
=
0
;
size_t
pt
r
;
size_t
end
,
end_cur
;
off_t
offset
;
unsigned
long
pageadd
r
;
unsigned
long
offset
;
size_t
buflen
;
int
page_count
;
page
_count
=
PAGE_CACHE_ALIGN
(
len
)
>>
PAGE_CACHE_SHIFT
;
offset
=
(
off_t
)
mem
-
((
off_t
)
mem
&
PAGE_CACHE_MASK
)
;
if
(
offset
&&
(
len
>
PAGE_CACHE_SIZE
))
page_count
++
;
page
addr
=
(
unsigned
long
)
mem
&
PAGE_CACHE_MASK
;
offset
=
(
unsigned
long
)
mem
-
pageaddr
;
buflen
=
PAGE_CACHE_ALIGN
(
len
+
offset
);
page_count
=
buflen
>>
PAGE_CACHE_SHIFT
;
/* Free any previous set of page pointers */
if
(
bp
->
b_pages
)
...
...
@@ -747,22 +747,15 @@ xfs_buf_associate_memory(
return
rval
;
bp
->
b_offset
=
offset
;
ptr
=
(
size_t
)
mem
&
PAGE_CACHE_MASK
;
end
=
PAGE_CACHE_ALIGN
((
size_t
)
mem
+
len
);
end_cur
=
end
;
/* set up first page */
bp
->
b_pages
[
0
]
=
mem_to_page
(
mem
);
ptr
+=
PAGE_CACHE_SIZE
;
bp
->
b_page_count
=
++
i
;
while
(
ptr
<
end
)
{
bp
->
b_pages
[
i
]
=
mem_to_page
((
void
*
)
ptr
);
bp
->
b_page_count
=
++
i
;
ptr
+=
PAGE_CACHE_SIZE
;
for
(
i
=
0
;
i
<
bp
->
b_page_count
;
i
++
)
{
bp
->
b_pages
[
i
]
=
mem_to_page
((
void
*
)
pageaddr
);
pageaddr
+=
PAGE_CACHE_SIZE
;
}
bp
->
b_locked
=
0
;
bp
->
b_count_desired
=
bp
->
b_buffer_length
=
len
;
bp
->
b_count_desired
=
len
;
bp
->
b_buffer_length
=
buflen
;
bp
->
b_flags
|=
XBF_MAPPED
;
return
0
;
...
...
@@ -1032,7 +1025,7 @@ xfs_buf_ioend(
xfs_buf_t
*
bp
,
int
schedule
)
{
bp
->
b_flags
&=
~
(
XBF_READ
|
XBF_WRITE
);
bp
->
b_flags
&=
~
(
XBF_READ
|
XBF_WRITE
|
XBF_READ_AHEAD
);
if
(
bp
->
b_error
==
0
)
bp
->
b_flags
|=
XBF_DONE
;
...
...
@@ -1750,6 +1743,8 @@ xfsbufd(
current
->
flags
|=
PF_MEMALLOC
;
set_freezable
();
do
{
if
(
unlikely
(
freezing
(
current
)))
{
set_bit
(
XBT_FORCE_SLEEP
,
&
target
->
bt_flags
);
...
...
fs/xfs/linux-2.6/xfs_file.c
View file @
cfad589f
...
...
@@ -218,6 +218,15 @@ xfs_vm_fault(
}
#endif
/* CONFIG_XFS_DMAPI */
/*
* Unfortunately we can't just use the clean and simple readdir implementation
* below, because nfs might call back into ->lookup from the filldir callback
* and that will deadlock the low-level btree code.
*
* Hopefully we'll find a better workaround that allows to use the optimal
* version at least for local readdirs for 2.6.25.
*/
#if 0
STATIC int
xfs_file_readdir(
struct file *filp,
...
...
@@ -249,6 +258,121 @@ xfs_file_readdir(
return -error;
return 0;
}
#else
struct
hack_dirent
{
int
namlen
;
loff_t
offset
;
u64
ino
;
unsigned
int
d_type
;
char
name
[];
};
struct
hack_callback
{
char
*
dirent
;
size_t
len
;
size_t
used
;
};
STATIC
int
xfs_hack_filldir
(
void
*
__buf
,
const
char
*
name
,
int
namlen
,
loff_t
offset
,
u64
ino
,
unsigned
int
d_type
)
{
struct
hack_callback
*
buf
=
__buf
;
struct
hack_dirent
*
de
=
(
struct
hack_dirent
*
)(
buf
->
dirent
+
buf
->
used
);
if
(
buf
->
used
+
sizeof
(
struct
hack_dirent
)
+
namlen
>
buf
->
len
)
return
-
EINVAL
;
de
->
namlen
=
namlen
;
de
->
offset
=
offset
;
de
->
ino
=
ino
;
de
->
d_type
=
d_type
;
memcpy
(
de
->
name
,
name
,
namlen
);
buf
->
used
+=
sizeof
(
struct
hack_dirent
)
+
namlen
;
return
0
;
}
STATIC
int
xfs_file_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
)
{
struct
inode
*
inode
=
filp
->
f_path
.
dentry
->
d_inode
;
xfs_inode_t
*
ip
=
XFS_I
(
inode
);
struct
hack_callback
buf
;
struct
hack_dirent
*
de
;
int
error
;
loff_t
size
;
int
eof
=
0
;
xfs_off_t
start_offset
,
curr_offset
,
offset
;
/*
* Try fairly hard to get memory
*/
buf
.
len
=
PAGE_CACHE_SIZE
;
do
{
buf
.
dirent
=
kmalloc
(
buf
.
len
,
GFP_KERNEL
);
if
(
buf
.
dirent
)
break
;
buf
.
len
>>=
1
;
}
while
(
buf
.
len
>=
1024
);
if
(
!
buf
.
dirent
)
return
-
ENOMEM
;
curr_offset
=
filp
->
f_pos
;
if
(
curr_offset
==
0x7fffffff
)
offset
=
0xffffffff
;
else
offset
=
filp
->
f_pos
;
while
(
!
eof
)
{
int
reclen
;
start_offset
=
offset
;
buf
.
used
=
0
;
error
=
-
xfs_readdir
(
ip
,
&
buf
,
buf
.
len
,
&
offset
,
xfs_hack_filldir
);
if
(
error
||
offset
==
start_offset
)
{
size
=
0
;
break
;
}
size
=
buf
.
used
;
de
=
(
struct
hack_dirent
*
)
buf
.
dirent
;
while
(
size
>
0
)
{
if
(
filldir
(
dirent
,
de
->
name
,
de
->
namlen
,
curr_offset
&
0x7fffffff
,
de
->
ino
,
de
->
d_type
))
{
goto
done
;
}
reclen
=
sizeof
(
struct
hack_dirent
)
+
de
->
namlen
;
size
-=
reclen
;
curr_offset
=
de
->
offset
/* & 0x7fffffff */
;
de
=
(
struct
hack_dirent
*
)((
char
*
)
de
+
reclen
);
}
}
done:
if
(
!
error
)
{
if
(
size
==
0
)
filp
->
f_pos
=
offset
&
0x7fffffff
;
else
if
(
de
)
filp
->
f_pos
=
curr_offset
;
}
kfree
(
buf
.
dirent
);
return
error
;
}
#endif
STATIC
int
xfs_file_mmap
(
...
...
fs/xfs/linux-2.6/xfs_ioctl.c
View file @
cfad589f
...
...
@@ -1047,24 +1047,20 @@ xfs_ioc_bulkstat(
if
((
count
=
bulkreq
.
icount
)
<=
0
)
return
-
XFS_ERROR
(
EINVAL
);
if
(
bulkreq
.
ubuffer
==
NULL
)
return
-
XFS_ERROR
(
EINVAL
);
if
(
cmd
==
XFS_IOC_FSINUMBERS
)
error
=
xfs_inumbers
(
mp
,
&
inlast
,
&
count
,
bulkreq
.
ubuffer
,
xfs_inumbers_fmt
);
else
if
(
cmd
==
XFS_IOC_FSBULKSTAT_SINGLE
)
error
=
xfs_bulkstat_single
(
mp
,
&
inlast
,
bulkreq
.
ubuffer
,
&
done
);
else
{
/* XFS_IOC_FSBULKSTAT */
if
(
count
==
1
&&
inlast
!=
0
)
{
inlast
++
;
error
=
xfs_bulkstat_single
(
mp
,
&
inlast
,
bulkreq
.
ubuffer
,
&
done
);
}
else
{
error
=
xfs_bulkstat
(
mp
,
&
inlast
,
&
count
,
(
bulkstat_one_pf
)
xfs_bulkstat_one
,
NULL
,
sizeof
(
xfs_bstat_t
),
bulkreq
.
ubuffer
,
BULKSTAT_FG_QUICK
,
&
done
);
}
}
else
/* XFS_IOC_FSBULKSTAT */
error
=
xfs_bulkstat
(
mp
,
&
inlast
,
&
count
,
(
bulkstat_one_pf
)
xfs_bulkstat_one
,
NULL
,
sizeof
(
xfs_bstat_t
),
bulkreq
.
ubuffer
,
BULKSTAT_FG_QUICK
,
&
done
);
if
(
error
)
return
-
error
;
...
...
fs/xfs/linux-2.6/xfs_ioctl32.c
View file @
cfad589f
...
...
@@ -291,6 +291,9 @@ xfs_ioc_bulkstat_compat(
if
((
count
=
bulkreq
.
icount
)
<=
0
)
return
-
XFS_ERROR
(
EINVAL
);
if
(
bulkreq
.
ubuffer
==
NULL
)
return
-
XFS_ERROR
(
EINVAL
);
if
(
cmd
==
XFS_IOC_FSINUMBERS
)
error
=
xfs_inumbers
(
mp
,
&
inlast
,
&
count
,
bulkreq
.
ubuffer
,
xfs_inumbers_fmt_compat
);
...
...
fs/xfs/linux-2.6/xfs_iops.c
View file @
cfad589f
...
...
@@ -117,7 +117,7 @@ xfs_ichgtime(
*/
SYNCHRONIZE
();
ip
->
i_update_core
=
1
;
if
(
!
(
inode
->
i_state
&
I_
SYNC
))
if
(
!
(
inode
->
i_state
&
I_
NEW
))
mark_inode_dirty_sync
(
inode
);
}
...
...
@@ -169,7 +169,7 @@ xfs_ichgtime_fast(
*/
SYNCHRONIZE
();
ip
->
i_update_core
=
1
;
if
(
!
(
inode
->
i_state
&
I_
SYNC
))
if
(
!
(
inode
->
i_state
&
I_
NEW
))
mark_inode_dirty_sync
(
inode
);
}
...
...
fs/xfs/quota/xfs_qm.c
View file @
cfad589f
...
...
@@ -1008,6 +1008,9 @@ xfs_qm_sync(
boolean_t
nowait
;
int
error
;
if
(
!
XFS_IS_QUOTA_ON
(
mp
))
return
0
;
restarts
=
0
;
/*
* We won't block unless we are asked to.
...
...
fs/xfs/xfs_iget.c
View file @
cfad589f
...
...
@@ -267,7 +267,7 @@ xfs_iget_core(
icl
=
NULL
;
if
(
radix_tree_gang_lookup
(
&
pag
->
pag_ici_root
,
(
void
**
)
&
iq
,
first_index
,
1
))
{
if
((
iq
->
i_ino
&
mask
)
==
first_index
)
if
((
XFS_INO_TO_AGINO
(
mp
,
iq
->
i_ino
)
&
mask
)
==
first_index
)
icl
=
iq
->
i_cluster
;
}
...
...
fs/xfs/xfs_itable.c
View file @
cfad589f
...
...
@@ -316,6 +316,8 @@ xfs_bulkstat_use_dinode(
return
1
;
}
#define XFS_BULKSTAT_UBLEFT(ubleft) ((ubleft) >= statstruct_size)
/*
* Return stat information in bulk (by-inode) for the filesystem.
*/
...
...
@@ -353,7 +355,7 @@ xfs_bulkstat(
xfs_inobt_rec_incore_t
*
irbp
;
/* current irec buffer pointer */
xfs_inobt_rec_incore_t
*
irbuf
;
/* start of irec buffer */
xfs_inobt_rec_incore_t
*
irbufend
;
/* end of good irec buffer entries */
xfs_ino_t
lastino
=
0
;
/* last inode number returned */
xfs_ino_t
lastino
;
/* last inode number returned */
int
nbcluster
;
/* # of blocks in a cluster */
int
nicluster
;
/* # of inodes in a cluster */
int
nimask
;
/* mask for inode clusters */
...
...
@@ -373,6 +375,7 @@ xfs_bulkstat(
* Get the last inode value, see if there's nothing to do.
*/
ino
=
(
xfs_ino_t
)
*
lastinop
;
lastino
=
ino
;
dip
=
NULL
;
agno
=
XFS_INO_TO_AGNO
(
mp
,
ino
);
agino
=
XFS_INO_TO_AGINO
(
mp
,
ino
);
...
...
@@ -382,6 +385,9 @@ xfs_bulkstat(
*
ubcountp
=
0
;
return
0
;
}
if
(
!
ubcountp
||
*
ubcountp
<=
0
)
{
return
EINVAL
;
}
ubcount
=
*
ubcountp
;
/* statstruct's */
ubleft
=
ubcount
*
statstruct_size
;
/* bytes */
*
ubcountp
=
ubelem
=
0
;
...
...
@@ -402,7 +408,8 @@ xfs_bulkstat(
* inode returned; 0 means start of the allocation group.
*/
rval
=
0
;
while
(
ubleft
>=
statstruct_size
&&
agno
<
mp
->
m_sb
.
sb_agcount
)
{
while
(
XFS_BULKSTAT_UBLEFT
(
ubleft
)
&&
agno
<
mp
->
m_sb
.
sb_agcount
)
{
cond_resched
();
bp
=
NULL
;
down_read
(
&
mp
->
m_peraglock
);
error
=
xfs_ialloc_read_agi
(
mp
,
NULL
,
agno
,
&
agbp
);
...
...
@@ -499,6 +506,7 @@ xfs_bulkstat(
break
;
error
=
xfs_inobt_lookup_ge
(
cur
,
agino
,
0
,
0
,
&
tmp
);
cond_resched
();
}
/*
* If ran off the end of the ag either with an error,
...
...
@@ -542,6 +550,7 @@ xfs_bulkstat(
*/
agino
=
gino
+
XFS_INODES_PER_CHUNK
;
error
=
xfs_inobt_increment
(
cur
,
0
,
&
tmp
);
cond_resched
();
}
/*
* Drop the btree buffers and the agi buffer.
...
...
@@ -555,12 +564,12 @@ xfs_bulkstat(
*/
irbufend
=
irbp
;
for
(
irbp
=
irbuf
;
irbp
<
irbufend
&&
ubleft
>=
statstruct_size
;
irbp
++
)
{
irbp
<
irbufend
&&
XFS_BULKSTAT_UBLEFT
(
ubleft
)
;
irbp
++
)
{
/*
* Now process this chunk of inodes.
*/
for
(
agino
=
irbp
->
ir_startino
,
chunkidx
=
clustidx
=
0
;
ubleft
>
0
&&
XFS_BULKSTAT_UBLEFT
(
ubleft
)
&&
irbp
->
ir_freecount
<
XFS_INODES_PER_CHUNK
;
chunkidx
++
,
clustidx
++
,
agino
++
)
{
ASSERT
(
chunkidx
<
XFS_INODES_PER_CHUNK
);
...
...
@@ -663,15 +672,13 @@ xfs_bulkstat(
ubleft
,
private_data
,
bno
,
&
ubused
,
dip
,
&
fmterror
);
if
(
fmterror
==
BULKSTAT_RV_NOTHING
)
{
if
(
error
==
EFAULT
)
{
ubleft
=
0
;
rval
=
error
;
break
;
}
else
if
(
error
==
ENOMEM
)
if
(
error
&&
error
!=
ENOENT
&&
error
!=
EINVAL
)
{
ubleft
=
0
;
else
lastino
=
ino
;
rval
=
error
;
break
;
}
lastino
=
ino
;
continue
;
}
if
(
fmterror
==
BULKSTAT_RV_GIVEUP
)
{
...
...
@@ -686,6 +693,8 @@ xfs_bulkstat(
ubelem
++
;
lastino
=
ino
;
}
cond_resched
();
}
if
(
bp
)
...
...
@@ -694,11 +703,12 @@ xfs_bulkstat(
/*
* Set up for the next loop iteration.
*/
if
(
ubleft
>
0
)
{
if
(
XFS_BULKSTAT_UBLEFT
(
ubleft
)
)
{
if
(
end_of_ag
)
{
agno
++
;
agino
=
0
;
}
}
else
agino
=
XFS_INO_TO_AGINO
(
mp
,
lastino
);
}
else
break
;
}
...
...
@@ -707,6 +717,11 @@ xfs_bulkstat(
*/
kmem_free
(
irbuf
,
irbsize
);
*
ubcountp
=
ubelem
;
/*
* Found some inodes, return them now and return the error next time.
*/
if
(
ubelem
)
rval
=
0
;
if
(
agno
>=
mp
->
m_sb
.
sb_agcount
)
{
/*
* If we ran out of filesystem, mark lastino as off
...
...
include/asm-ia64/iosapic.h
View file @
cfad589f
...
...
@@ -80,7 +80,6 @@ extern int iosapic_remove (unsigned int gsi_base);
#else
#define iosapic_remove(gsi_base) (-EINVAL)
#endif
/* CONFIG_HOTPLUG */
extern
int
gsi_to_vector
(
unsigned
int
gsi
);
extern
int
gsi_to_irq
(
unsigned
int
gsi
);
extern
int
iosapic_register_intr
(
unsigned
int
gsi
,
unsigned
long
polarity
,
unsigned
long
trigger
);
...
...
@@ -94,7 +93,6 @@ extern int __init iosapic_register_platform_intr (u32 int_type,
u16
eid
,
u16
id
,
unsigned
long
polarity
,
unsigned
long
trigger
);
extern
unsigned
int
iosapic_version
(
char
__iomem
*
addr
);
#ifdef CONFIG_NUMA
extern
void
__devinit
map_iosapic_to_node
(
unsigned
int
,
int
);
...
...
mm/slob.c
View file @
cfad589f
...
...
@@ -330,7 +330,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
/* Not enough space: must allocate a new page */
if
(
!
b
)
{
b
=
slob_new_page
(
gfp
,
0
,
node
);
b
=
slob_new_page
(
gfp
&
~
__GFP_ZERO
,
0
,
node
);
if
(
!
b
)
return
0
;
sp
=
(
struct
slob_page
*
)
virt_to_page
(
b
);
...
...
mm/slub.c
View file @
cfad589f
...
...
@@ -1468,6 +1468,9 @@ static void *__slab_alloc(struct kmem_cache *s,
void
**
object
;
struct
page
*
new
;
/* We handle __GFP_ZERO in the caller */
gfpflags
&=
~
__GFP_ZERO
;
if
(
!
c
->
page
)
goto
new_slab
;
...
...
scripts/mkmakefile
View file @
cfad589f
...
...
@@ -11,6 +11,12 @@
test
!
-r
$2
/Makefile
-o
-O
$2
/Makefile
||
exit
0
# Only overwrite automatically generated Makefiles
# (so we do not overwrite kernel Makefile)
if
!
grep
-q
Automatically
$2
/Makefile
then
exit
0
fi
echo
" GEN
$2
/Makefile"
cat
<<
EOF
>
$2
/Makefile
...
...
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