Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
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 @@ finish_inode:
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