* 2.6.0-mm1
@ 2003-12-23 5:11 Andrew Morton
2003-12-23 5:27 ` 2.6.0-mm1 Valdis.Kletnieks
` (9 more replies)
0 siblings, 10 replies; 16+ messages in thread
From: Andrew Morton @ 2003-12-23 5:11 UTC (permalink / raw)
To: linux-kernel, linux-mm
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2.6.0-mm1/
Quite a lot of new material here. It would be appreciated if people who have
significant patches in -mm could retest please.
Changes since 2.6.0-test11-mm1:
-should-fix.patch
-must-fix-update-01.patch
-must-fix-update-2.patch
Folded into must-fix.patch
+must-fix-update-5.patch
must-fix and should-fix updates
-invalidate_inodes-speedup-fixes-2.patch
Folded into invalidate_inodes-speedup.patch
+unshare_files.patch
+use-unshare_files.patch
+add-steal_locks.patch
+use-steal_locks.patch
+env-signedness-fixes.patch
+suid-leak-fix.patch
+proc-tty-driver-permission-fix.patch
Backports of 2.4 fixes
-acpi_off-fix.patch
Dropped.
-acpi-update.patch
-acpi-update-warning-fix.patch
+acpi-20031203.patch
Latest ACPI tree
+acpi-20031203-fix.patch
Fix silliness in it.
-call_usermodehelper-retval-fix-3.patch
+call_usermodehelper-retval-fix-4.patch
Updated version which also does random things to blockdev and chardev
module loading.
-ia32-MSI-support-x86_64-fixes.patch
-msi-various-fixes.patch
-msi-many-cpus-fix.patch
Folded into ia32-MSI-support.patch
-sparc32-sched_clock.patch
Merged.
-fixmap-in-proc-pid-maps-ng.patch
Dropped pending rethink by David MT Roland McGrath.
-firmware-kernel_thread-on-demand.patch
Dropped (and added again in the DVB patches, below)
-loop-autoloading-fix.patch
Dropped (fixed in a different patch)
+loop-fix-hardsect.patch
Set the loop queue's hard sector size.
-loop-highmem-fixes.patch
Folded into loop-highmem.patch
-mpparse_es7000.patch
Fixed in the ACPI update patch
-x86_64-update.patch
This is out of date.
-x86_64-statfs64-fix.patch
+x86_64-statfs64-fix-2.patch
New version
+xfs-update-01.patch
XFS fixes
+jfs-nfs-le-fix.patch
JFS fixes
+modpost-fix.patch
Build fix
+ia32-jiffy-wrap-fixes.patch
Jiffy handling fixes
+mm_core_waiters-synchronisation.patch
Core dump/exit race fix
+inode-i_sb-checks.patch
Add checks for null inode->i_sb in core VFS (we're still arguing about this)
+rename-legacy_bus-to-platform_bus.patch
Rename `legacy_bus' to make more sense
+ioctl-userspace-warnings-fix.patch
Fix warnings when ioctl.h is used by userspace apps.
+tcrypt-cleanup-1.patch
+tcrypt-cleanup-2.patch
+tcrypt-module-unload-fix.patch
tcrypt work.
+w83627hf.patch
New watchdog driver. For the Winbond w83627hf.
+get_user_pages-lockup-fix.patch
Fix get_user_pages locking for i386's
+sn2-maintainers-update.patch
MAINTAINERS update
+ide-capability-elevation-fix.patch
IDE security fix
+ide-mmio-fix.patch
Fix IDE for MMIO mode
+scc-warning-fix.patch
+cycx-warning-fix.patch
Warning fixes
+via-audio-fixes.patch
via_audio can spam the system log
+locking-doc-update.patch
Documentation.
+name_to_dev_t-fix.patch
Don't replace slashes in names to `.'. Replace them with `!' instead. No
clue why, nobody tells me anything.
+atapi-mo-support.patch
Fix support for ATAPI MO drives (needs updating to reflect the changes in
mt-ranier-support.patch).
+mt-ranier-support.patch
Mt Ranier support in the CDROM uniform layer.
+ext3-enospc-accounting-fix.patch
ext3 space accounting goes wrong on ENOSPC with quotas enabled.
+dvb-01-remove-firmware.patch
+dvb-02-update-saa7146-capture-core.patch
+dvb-03-bt8xx-driver.patch
+dvb-04-skystar2-update.patch
+dvb-05-core-update.patch
+dvb-06-frontend-update.patch
+dvb-07-av7110-update.patch
+dvb-08-av7110-firmware-loading.patch
+dvb-09-ttusb-dec-update.patch
+dvb-10-cleanup.patch
+dvb-11-firmware_class-update.patch
+dvb-12-documentation.patch
DVB update
+selinux-separate-output-dir-fix.patch
+selinux-ioctl-check-fix.patch
+selinux-nameidata-oops-fix.patch
SELinux update
+isdn-compile-fix.patch
+ia32-GENERIC_ARCH-NUMA-build-fix.patch
Compile fixes
+summit-ebda-parsing-fix.patch
Summit EBDA parsing fix
+README-typo-fix.patch
Fix tpyo
+alsa-gus-scheduling-in-interrupt-fix.patch
Don't call scheule() from hard IRQ.
+o21-sched.patch
CPu scheduler interactivity update.
+fatfs-log-storm-fix.patch
Fix excessive printks from fatfs during I/O errors.
+gconfig-warning-fix.patch
Warning fix
+via-tsc-fix.patch
Fix problem with TSC on via686a/KX133 mobos
+fix-es7000-compile.patch
Build fix.
+ppp_async-locking-fix.patch
Move ppp rx handling to softirq.
+fix-sx-stupidity.patch
Don't do `if (i < TIMEOUT_1 > 0)'
+make-try_to_free_pages-walk-zonelist.patch
+make-try_to_free_pages-walk-zonelist-fix.patch
Page reclaim preparation for more complex NUMA layouts.
+pcmcia-maintainers.patch
MAINTAINER update
+yenta-printk-levels.patch
Fix some printk levels
+pcnet_cs-fixes.patch
PCMCIA net driver fixes
+pcmcia-16bit-interrupt-selection-fix.patch
+pcmcia-stack-reduction.patch
+i82365-pci-cruft-removal.patch
More PCMCIA fixes
+proc-pid-maps-gate_map.patch
Add a dummy VMA to prevent /proc/pid/maps printing wrong things on ia64. I
think. Nobody tells me anything.
+buffer_error-suppression.patch
Prevent some uninteresting printks after I/O error.
+main_c-cleanups.patch
init/main.c fixlets.
+fat-01-relax-validity-tests.patch
+fat-02-utf8-tailing-dots-fix.patch
+fat-03-readv-writev-support.patch
+fat-04-printk-fix.patch
+fat-05-msdos_fs-h-cleanup.patch
+fat-06-fix-prev_free.patch
+fat-07-cluster-count-check.patch
+fat-08-misc-cleanups.patch
+fat-09-fat_striptail_len-retval-fix.patch
+fat-10-panic-removal.patch
fatfs update
+non-terminating-inflate-fix.patch
inflate.c fix
+remove-CardServices-from-pcmcia-net-drivers.patch
Fix lots of pcmcia drivers to use newer API names. We may be dropped this
because it puts us out of sync with 2.4 drivers.
+const-fixes.patch
+s390-const-fixes.patch
Fix bogus declarations of functions to remove const values.
+execve-memleak-fix.patch
Fix a memleak on the execve() error path.
+h8300-bitops-update.patch
Fix h8/300 bitops
+document-speedstep-zero-page-usage.patch
Documentation fix.
+fbdev-printk-level-fix.patch
printk level fixes
+ppdev-module-alias.patch
Add a module alias to ppdev
+floppy-typo-fixes.patch
Fix typos.
+__BVEC_START-fix.patch
Fix BIO layer for DM.
+kunmap_atomic-check-resched.patch
Add preemption point to kunmap_atomic()
+e100-oops-fix.patch
Fix e100 ethtool oops.
+free_pgt_generic1.patch
Add hook to fix hugetlbs on ia64.
+SubmittingDrivers-update.patch
Documentaiton update.
+sysfs-oops-fix.patch
+sysfs-mem-device-support.patch
+sysfs-misc-device-support.patch
+sysfs-vc-device-support.patch
sysfs update.
+4g4g-sysenter-test-fix.patch
4G/4G sysenter/SEP fix.
All 384 patches:
mm.patch
add -mmN to EXTRAVERSION
kgdb-ga.patch
kgdb stub for ia32 (George Anzinger's one)
kgdbL warning fix
kgdb-buff-too-big.patch
kgdb buffer overflow fix
kgdb-warning-fix.patch
kgdbL warning fix
kgdb-build-fix.patch
kgdb-spinlock-fix.patch
kgdb-fix-debug-info.patch
kgdb: CONFIG_DEBUG_INFO fix
kgdb-cpumask_t.patch
kgdb-x86_64-fixes.patch
x86_64 fixes
kgdb-over-ethernet.patch
kgdb-over-ethernet patch
kgdb-over-ethernet-fixes.patch
kgdb-over-ethernet fixlets
kgdb-CONFIG_NET_POLL_CONTROLLER.patch
kgdb: replace CONFIG_KGDB with CONFIG_NET_RX_POLL in net drivers
kgdb-handle-stopped-NICs.patch
kgdb: handle netif_stopped NICs
eepro100-poll-controller.patch
tlan-poll_controller.patch
tulip-poll_controller.patch
tg3-poll_controller.patch
kgdb: tg3 poll_controller
8139too-poll_controller.patch
8139too poll controller
kgdb-eth-smp-fix.patch
kgdb-over-ethernet: fix SMP
kgdb-eth-reattach.patch
kgdb-skb_reserve-fix.patch
kgdb-over-ethernet: skb_reserve() fix
must-fix.patch
must fix lists update
must fix list update
mustfix update
must-fix-update-5.patch
must-fix update
RD1-cdrom_ioctl-B6.patch
RD2-ioctl-B6.patch
RD2-ioctl-B6-fix.patch
RD2-ioctl-B6 fixes
RD3-cdrom_open-B6.patch
RD4-open-B6.patch
RD5-cdrom_release-B6.patch
RD6-release-B6.patch
RD7-presto_journal_close-B6.patch
RD8-f_mapping-B6.patch
RD9-f_mapping2-B6.patch
RD10-i_sem-B6.patch
RD11-f_mapping3-B6.patch
RD12-generic_osync_inode-B6.patch
RD13-bd_acquire-B6.patch
RD14-generic_write_checks-B6.patch
RD15-I_BDEV-B6.patch
cramfs-use-pagecache.patch
cramfs: use pagecache better
invalidate_inodes-speedup.patch
invalidate_inodes speedup
more invalidate_inodes speedup fixes
unshare_files.patch
unshare_files
use-unshare_files.patch
use new unshare_files helper
add-steal_locks.patch
add steal_locks helper
use-steal_locks.patch
use new steal_locks helper
env-signedness-fixes.patch
fix unsigned issue with env_end - env_start
suid-leak-fix.patch
fix suid leak in /proc
proc-tty-driver-permission-fix.patch
make /proc/tty/driver/ S_IRUSR | S_IXUSR for root only
serio-01-renaming.patch
serio: rename serio_[un]register_slave_port to __serio_[un]register_port
serio-02-race-fix.patch
serio: possible race between port removal and kseriod
serio-03-blacklist.patch
Add black list to handler<->device matching
serio-04-synaptics-cleanup.patch
Synaptics: code cleanup
serio-05-reconnect-facility.patch
serio: reconnect facility
serio-06-synaptics-use-reconnect.patch
Synaptics: use serio_reconnect
synaptics-powerpro-fix.patch
synaptics powerpro fix
input-unregister-on-fail-fix.patch
Input: unregister i8042 port when writing to control register fails
serio-pm-fix.patch
psmouse pm resume fix
atkbd-24-compatibility.patch
Fixes for keyboard 2.4 compatibility
input-01-atkbd_softrepeat-fix.patch
input: fix atkbd_softrepeat
input-02-add-psmouse_proto.patch
Input: add psmouse_proto parameter
input-03-resume-methods.patch
Input: implement resume methods
input-04-atkbd-reconnect-method.patch
Input: add atkbd reconnect method
input-05-psmouse-fixes.patch
Input: psmouse fixes
input-06-serio_unregister_port_delayed.patch
Input: add serio_[un]register_port_delayed to fix deadlock
input-07-remove-synaptics-config-option.patch
Input: remove synaptics config option
input-08-synaptics-protocol-discovery.patch
Input: synaptics protocol discovery
input-use-after-free-checks.patch
input layer debug checks
acpi-20031203.patch
acpi-20031203-fix.patch
cfq-4.patch
CFQ io scheduler
CFQ fixes
config_spinline.patch
uninline spinlocks for profiling accuracy.
ppc64-bar-0-fix.patch
Allow PCI BARs that start at 0
ppc64-reloc_hide.patch
ppc64-sched_clock-fix.patch
implement sched_clock properly
ppc64-use-statfs64.patch
use compat_statfs64 on ppc64
ppc64-compat_clock.patch
ppc64: use compat clock syscalls
ppc64-numa-sign-extension-fix.patch
ppc64: fix sign extension bug in NUMA code
ppc64-IRQ_INPROGRESS-fix.patch
ppc64: revert IRQ_INPROGRESS change
sn2-console-driver-fix.patch
sn_serial console fix
qla1280-update.patch
qla1280 update
sym-speed-fix.patch
sym2 Ultra-160 fix
aic7xxx-parallel-build-fix.patch
fix parallel builds for aic7xxx
ramdisk-cleanup.patch
intel8x0-cleanup.patch
intel8x0 cleanups
pdflush-diag.patch
futex-uninlinings.patch
futex uninlining
zap_page_range-debug.patch
zap_page_range() debug
call_usermodehelper-retval-fix-4.patch
call_usermodehelper retval fix, take 4
asus-L5-fix.patch
Asus L5 framebuffer fix
jffs-use-daemonize.patch
tulip-NAPI-support.patch
tulip NAPI support
tulip-napi-disable.patch
tulip NAPI: disable poll in close
get_user_pages-handle-VM_IO.patch
ia32-MSI-support.patch
Updated ia32 MSI Patches
MSI Update Based on 2.6.0-test9-mm3
IOAPIC/MSI compile fixes for NR_CPUS > 32
ia32-efi-support.patch
EFI support for ia32
efi warning fix
fix EFI for ppc64, ia64
efi: warning fixes
ia32 EFI: Add CONFIG_EFI
efi: Update Kconfig help
efi update patch (ia64)
support-zillions-of-scsi-disks.patch
support many SCSI disks
SGI-IOC4-IDE-chipset-support.patch
Add support for SGI's IOC4 chipset
pcibios_test_irq-fix.patch
Fix pcibios test IRQ handler return
i82365-sysfs-ordering-fix.patch
Fix init_i82365 sysfs ordering oops
pci_set_power_state-might-sleep.patch
ia64-ia32-missing-compat-syscalls.patch
From: Arun Sharma <arun.sharma@intel.com>
Subject: Missing compat syscalls in ia64
compat-layer-fixes.patch
Minor bug fixes to the compat layer
compat-ioctl-for-i2c.patch
compat_ioctl for i2c
fix-sqrt.patch
sqrt() fixes
scale-min_free_kbytes.patch
scale the initial value of min_free_kbytes
cdrom-allocation-try-harder.patch
Use __GFP_REPEAT for cdrom buffer
sym-2.1.18f.patch
CONFIG_STANDALONE-default-to-n.patch
Make CONFIG_STANDALONE default to N
extra-buffer-diags.patch
name_to_dev_t-__init.patch
make name_to_dev_t __init
CONFIG_SYSFS.patch
From: Pat Mochel <mochel@osdl.org>
Subject: [PATCH] Add CONFIG_SYSFS
CONFIG_SYSFS-boot-from-disk-fix.patch
slab-leak-detector.patch
slab leak detector
early-serial-registration-fix.patch
serial console registration bugfix
3c527-smp-update.patch
SMP support on 3c527 net driver
3c527-race-fix.patch
ext3-latency-fix.patch
ext3 scheduling latency fix
loop-fix-hardsect.patch
loop: fix hard sector size
loop-module-alias.patch
loop needs MODULE_ALIAS_BLOCK
loop-remove-blkdev-special-case.patch
loop-highmem.patch
remove useless highmem bounce from loop/cryptoloop
loop-bio-handling-fix.patch
loop: BIO handling fix
cmpci-set_fs-fix.patch
cmpci.c: remove pointless set_fs()
dentry-bloat-fix-2.patch
Fix dcache and icache bloat with deep directories
nls-config-fixes.patch
NSL config fixes
proc_pid_lookup-vs-exit-race-fix.patch
Fix proc_pid_lookup vs exit race
gcc-Os-if-embedded.patch
Add `gcc -Os' config option
aic7xxx-sleep-in-spinlock-fix.patch
vm86-sysenter-fix.patch
Fix sysenter disabling in vm86 mode
refill_counter-overflow-fix.patch
vmscan: reset refill_counter after refilling the inactive list
verbose-timesource.patch
be verbose about the time source
acpi-pm-timer.patch
ACPI PM Timer
acpi-pm-timer-fixes-2.patch
ACPI PM timer fixes
timer_pm-verbose-timesource-fix.patch
Subject: [PATCH] linux-2.6.0-test9-mm3_verbose-timesource-acpi-pm_A0
as-regression-fix.patch
Fix IO scheduler regression
as-request-poisoning.patch
AS: request poisoning
as-request-poisoning-fix.patch
AS: request poisining fix
as-fix-all-known-bugs.patch
AS fixes
as-new-process-estimation.patch
AS: new process estimation
as-cooperative-thinktime.patch
AS: thinktime improvement
scale-nr_requests.patch
scale nr_requests with TCQ depth
truncate_inode_pages-check.patch
local_bh_enable-warning-fix.patch
cdc-acm-softirq-rx.patch
cdc-acm: move rx processing to softirq
forcedeth.patch
forcedeth: nForce ethernet driver
forcedeth-update-2.patch
forcedeth update
forcedeth-update-3.patch
forcedeth update
proc-pid-maps-output-fix.patch
Restore /proc/pid/maps formatting
sis900-pm-support.patch
Add PM support to sis900 network driver
8139too-locking-fix.patch
8139too locking fix
ia32-wp-test-cleanup.patch
ia32 WP test cleanup
powermate-payload-size-fix.patch
Griffin Powermate fix
more-than-256-cpus.patch
Fix for more than 256 CPUs
ZONE_SHIFT-from-NODES_SHIFT.patch
Use NODES_SHIFT to calculate ZONE_SHIFT
memmove-speedup.patch
optimize ia32 memmove
pipe-readv-writev.patch
Fix writev atomicity on pipe/fifo
lockless-semop.patch
lockless semop
percpu_counter-use-alloc_percpu.patch
use alloc_percpu in percpu_counters
i450nx-scanning-fix.patch
i450nx PCI scanning fix
find_busiest_queue-commentary.patch
find_busiest_queue() commentary fix
SOUND_CMPCI-config-typo-fix.patch
fix SOUND_CMPCI Configure help entry
context-switch-accounting-fix.patch
Fix context switch accounting
access-vfs_permission-fix.patch
Subject: Re: [PATCH] fix access() / vfs_permission() bug
eicon-linkage-fix.patch
eicon/ and hardware/eicon/ drivers using the same symbols
kobject-docco-additions.patch
Improve documentation for kobjects
radeon-line-length-fix.patch
radeonfb fix
proc-interrupts-use-seq-file.patch
seq_file version of /proc/interrupts
proc-interrupts-use-seq_file-2.patch
Finish /proc/interrupts seq_file patch
ide-tape-update.patch
ide-tape update
intel-440gx-ids-fix.patch
centrino-1ghz-support.patch
support centrino 1GHz
pnp-fix-1.patch
PnP Fixes #1
pnp-fix-2.patch
PnP Fixes #2
pnp-fix-3.patch
PnP Fixes #3
document-elevator-equals.patch
document elevator= parameter
cpio-offset-fix.patch
missing padding in cpio_mkfile in usr/gen_init_cpio.c
watchdog-retval-fix.patch
watchdog write() return value fixes
document-lib-parser.patch
Add lib/parser.c kernel-doc
cpumask-header-reorg.patch
cpumask.h reorg
cpumask-format-consolidation.patch
new /proc/irq cpumask format; consolidate cpumask display and input code
init-remove-CLONE_FILES.patch
Remove CLONE_FILES from init kernel thread creation
alpha-stack-dump.patch
usb-msgsize-fix.patch
HiSpd Isoc 1024KB submits: -EMSGSIZE
pagefault-accounting-fix.patch
pagefault accounting fix
pagefault-accounting-fix-fix.patch
pagefault accounting fix fix
pagefault_accounting-fix-fix-fix-fix.patch
pagefault accounting again
proc_kill_inodes-oops-fix.patch
proc_bus_pci_lseek-remove-lock_kernel.patch
remove lock_kernel() from proc_bus_pci_lseek()
pagemap-include-recursion-fix.patch
remove include recursion from linux/pagemap.h
dm-bounce-buffer-fix.patch
dm and bounce buffer panic fix
ia64-piix5-fix.patch
PIIX5 Doesn't work on IA64
ide-dma-disabled-fix.patch
Can't disable IDE DMA
sysfs_remove_dir-vs-dcache_readdir-race-fix.patch
sysfs_remove_dir Vs dcache_readdir race fix
ext3-external-journal-bd_claim.patch
ext3: bd_claim for journal device
page-alloc-failure-dump_stack.patch
x86_64-statfs64-fix-2.patch
statfs64 fix
x86_64-aout-support.patch
Add a.out support for x86-64
remove-mm-swap_address.patch
remove mm->swap_address
sis-assignment-fix.patch
sis comparison / assignment operator fix
sync_dquots-oops-fix.patch
Subject: [PATCH] Fix possible oops in vfs_quota_sync()
ext3-quota-deadlock-fix.patch
Ext3+quota deadlock fix
buslogic-update.patch
BusLogic Driver update
binfmt_elf-help-update.patch
BINFMT_ELF=m is not an option
aic7xxx_old-proc-oops-fix.patch
aic7x_old /proc oops fix
invalidate_mmap_range-non-gpl-export.patch
mark invalidate_mmap_range() as EXPORT_SYMBOL
md-1-limit_max_sectors.patch
md: Limit max_sectors on md when merge_bvec_fn defined on underlying device.
md-2-set-ra_pages.patch
md: set ra_pages for raid0/raid5 devices properly.
alsa-sleep-in-spinlock-fix.patch
ALSA sleep in spinlock fix
do_gettimeofday-tick_usec-fix.patch
Erronous use of tick_usec in do_gettimeofday
dm-1-fix-block-device-resizing.patch
dm: fix block device resizing
dm-2-remove-dynamic-table-resizing.patch
dm: remove dynamic table resizing
dm-3-v4-ioctl-default.patch
dm: make v4 of the ioctl interface the default
dm-4-set-io-restriction-defaults.patch
dm: set io restriction defaults
dm-5-sleep-in-spinlock-fix.patch
dm: dm_table_event() sleep on spinlock bug
fix-ELF-exec-with-huge-bss.patch
fix ELF exec with huge bss
direct-io-memleak-fix.patch
O_DIRECT memory leak fix
jbd-b_committed_data-locking-fix.patch
JBD: b_committed_data locking fix
dvb-i2c-timeout-fix.patch
dvb i2c timeout fix
compat_timespec-cleanup.patch
more correct get_compat_timespec interface
MAINTAINERS-mailing-list-fixes.patch
MAINTAINERS vger.rutgers.edu
list_empty_careful-docco.patch
list_empty_careful() documentation.
compound-pages-dirty-page-fix.patch
Clear dirty bits etc on compound frees
3c574_cs-deadlock-fix.patch
Fix deadlock in 3c574_cs.c
non-fg-console-unimap-fixes.patch
Allow unimap change on non fg console
sym2-speed-selection-fix.patch
Speed selection fix for sym53c8xx
jiffies-comment-fix.patch
fix outdated comment in jiffies.h
slab-reclaim-accounting-fix.patch
slab reclaim accounting fix
struct_cpy-warning-fix.patch
struct_cpy compilation warning
more-MODULE_ALIASes.patch
More MODULE_ALIASes
x86_64-sysrq-t-fix.patch
x86_64 sysrq-t fix
nr-slab-accounting-fix.patch
nr_slab accounting fix
moto-ppc32-booting-fix.patch
Fix booting on a number of Motorola PPC32 machines
isdn-spinlock-init.patch
isdn_ppp_ccp.c uses uninitialized spinlock
nbd-userspace-build-fix.patch
fix userspace compiles with nbd.h
dac960-separate-queues.patch
DAC960 request queue per disk
xfs-update-01.patch
XFS update
jfs-nfs-le-fix.patch
JFS fix for NFS on little-endian systems
modpost-fix.patch
Get modpost to work properly with vmlinux in a different directory
ia32-jiffy-wrap-fixes.patch
ia32 jiffy wrapping fixes
mm_core_waiters-synchronisation.patch
From: Roland McGrath <roland@redhat.com>
Subject: [PATCH] synchronize use of mm->core_waiters
inode-i_sb-checks.patch
Missing i_sb NULL pointer check in destroy_inode()
rename-legacy_bus-to-platform_bus.patch
Rename legacy_bus to platform_bus
ioctl-userspace-warnings-fix.patch
Fix ioctl related warnings in userspace
tcrypt-cleanup-1.patch
tcrypt cleanup (1/2)
tcrypt-cleanup-2.patch
tcrypt cleanup (2/2)
tcrypt-module-unload-fix.patch
Allow tcrypt module to be unloaded
w83627hf.patch
Winbond w83627hf driver
get_user_pages-lockup-fix.patch
Missing up_read after get_user_pages in arch/i386/lib/usercopy.c?
sn2-maintainers-update.patch
update sn2 MAINTAINERS file entry
ide-capability-elevation-fix.patch
IDE capability elevation fix
ide-mmio-fix.patch
IDE MMIO fix
scc-warning-fix.patch
SCC warning fix
cycx-warning-fix.patch
cycx_drv warning fix
via-audio-fixes.patch
VIA audio fixes
locking-doc-update.patch
Kernel Locking Documentation update
name_to_dev_t-fix.patch
name_to_dev_t() fix
atapi-mo-support.patch
ATAPI MO drive support
mt-ranier-support.patch
mt rainier support
ext3-enospc-accounting-fix.patch
From: Jan Kara <jack@suse.cz>
Subject: Re: ext3 truncate bug in 2.6.0?
dvb-01-remove-firmware.patch
dvb: av7110 firmware removal patch
dvb-02-update-saa7146-capture-core.patch
dvb: Update saa7146 capture core
dvb-03-bt8xx-driver.patch
dvb: Add new dvb bt8xx driver
dvb-04-skystar2-update.patch
dvb: Update Skystar2 DVB driver
dvb-05-core-update.patch
dvb: Update DVB core
dvb-06-frontend-update.patch
dvb: Update DVB frontend drivers
dvb-07-av7110-update.patch
dvb: Update av7110 driver
dvb-08-av7110-firmware-loading.patch
dvb: Add firmware loading support to av7110 driver
dvb-09-ttusb-dec-update.patch
dvb: Update TTUSB DEC driver
dvb-10-cleanup.patch
dvb: Cleanup patch to remove 2.4 crud
dvb-11-firmware_class-update.patch
dvb: Firmware_class update
dvb-12-documentation.patch
dvb: Add DVB documentation
selinux-separate-output-dir-fix.patch
Fix SELinux build for "make O=..."
selinux-ioctl-check-fix.patch
Reduce SELinux check on KDSKBENT/SENT ioctls
selinux-nameidata-oops-fix.patch
Remove use of nameidata by selinux_inode_permission
isdn-compile-fix.patch
isdn/eicon/eicon_mod.c build fix
ia32-GENERIC_ARCH-NUMA-build-fix.patch
Fix X86_GENERICARCH & NUMA compile error
summit-ebda-parsing-fix.patch
Fix Summit EBDA parsing
README-typo-fix.patch
./README typo fix
alsa-gus-scheduling-in-interrupt-fix.patch
alsa gus max schedule-in-irq-fix
o21-sched.patch
O21 for interactivity 2.6.0
fatfs-log-storm-fix.patch
fatfs: fix printk storm during I/O errors
gconfig-warning-fix.patch
make gconfig warning removal
via-tsc-fix.patch
Fix via686a/KX133 TSC failure
fix-es7000-compile.patch
Fix es7000 compile
ppp_async-locking-fix.patch
Make ppp_async callable from hard interrupt
fix-sx-stupidity.patch
Fix double logical operator drivers/char/sx.c
make-try_to_free_pages-walk-zonelist.patch
make try_to_free_pages walk zonelist
make-try_to_free_pages-walk-zonelist-fix.patch
zone scanning fix
pcmcia-maintainers.patch
dhinds is not 2.6 PCMCIA maintainer
yenta-printk-levels.patch
fix yenta printk logging levels
pcnet_cs-fixes.patch
pcnet_cs driver bug fix / update
pcmcia-16bit-interrupt-selection-fix.patch
fix for 16-bit PCMCIA interrupt selection
pcmcia-stack-reduction.patch
reduce kernel stack usage in PCMCIA CIS parsing
i82365-pci-cruft-removal.patch
strip out PCI cruft from i82365 driver
proc-pid-maps-gate_map.patch
/proc/pid/maps gate map
buffer_error-suppression.patch
relax check of page/bh state on I/O error
main_c-cleanups.patch
init/main.c trivial cleanups
fat-01-relax-validity-tests.patch
FAT: More relax FATFS validity tests (1/10)
fat-02-utf8-tailing-dots-fix.patch
FAT: Fix the tailing dots on the utf8 path (2/10)
fat-03-readv-writev-support.patch
FAT: add readv/writev support to FAT (3/10)
fat-04-printk-fix.patch
FAT: trivial printk format fix (4/10)
fat-05-msdos_fs-h-cleanup.patch
FAT: include/linux/msdos_fs.h cleanup
fat-06-fix-prev_free.patch
FAT: Fix ->prev_free of fat (6/10)
fat-07-cluster-count-check.patch
FAT: Add count of clusters check in fat_fill_super() (7/10)
fat-08-misc-cleanups.patch
FAT: misc cleanups/fixes
fat-09-fat_striptail_len-retval-fix.patch
FAT: empty path by fat_striptail_len returns the -ENOENT
fat-10-panic-removal.patch
FAT: Use just printk() instead of unneeded fat_fs_panic()
non-terminating-inflate-fix.patch
lib/inflate.c fix
remove-CardServices-from-pcmcia-net-drivers.patch
CardServices() removal from pcmcia net drivers
const-fixes.patch
const vs. __attribute__((const)) confusion
s390-const-fixes.patch
s390 const fixes
execve-memleak-fix.patch
Fix memleak on execve failure
h8300-bitops-update.patch
H8/300 bitops.h update
document-speedstep-zero-page-usage.patch
add SpeedStep zero-page usage documentation
fbdev-printk-level-fix.patch
change two annoying messages from framebuffer drivers
ppdev-module-alias.patch
ppdev MODULES_ALIAS
floppy-typo-fixes.patch
From: Juergen Quade <quade@hsnr.de>
Subject: [PATCH] Small copy-paste typo in floppy.c
__BVEC_START-fix.patch
Fix another dm and bio problem
kunmap_atomic-check-resched.patch
Check for preemption in kunmap_atomic()
e100-oops-fix.patch
e100 oops fix
free_pgt_generic1.patch
hugepage pagetable freeing fix
SubmittingDrivers-update.patch
SubmittingDrivers update
sysfs-oops-fix.patch
fix sysfs oops
sysfs-mem-device-support.patch
add sysfs mem device support
sysfs-misc-device-support.patch
add sysfs misc device support
sysfs-vc-device-support.patch
add sysfs vc device support [4/4]
ide-tape-rq-special.patch
ide-siimage-seagate.patch
ide-siimage-stack-fix.patch
ide-siimage-sil3114.patch
ide-cmd640-pci1.patch
ide-pdc_old-pio-fix.patch
ide-pdc_old-udma66-fix.patch
ide-pdc_old-66mhz_clock-fix.patch
nforce2-disconnect-quirk.patch
nforce2-apic.patch
ide-recovery-time.patch
ide-pdc_new-proc.patch
list_del-debug.patch
list_del debug check
print-build-options-on-oops.patch
show_task-free-stack-fix.patch
show_task() fix and cleanup
oops-dump-preceding-code.patch
i386 oops output: dump preceding code
lockmeter.patch
lockmeter-sparc64-fix.patch
lockmeter-sparc64-fix-fix.patch
lockmeter-preemption-fixes.patch
lockmeter preemption fixes
lockmeter-ia64-config-fix.patch
Fix lockmeter on ia64
printk-oops-mangle-fix.patch
disentangle printk's whilst oopsing on SMP
4g-2.6.0-test2-mm2-A5.patch
4G/4G split patch
4G/4G: remove debug code
4g4g: pmd fix
4g/4g: fixes from Bill
4g4g: fpu emulation fix
4g/4g usercopy atomicity fix
4G/4G: remove debug code
4g4g: pmd fix
4g/4g: fixes from Bill
4g4g: fpu emulation fix
4g/4g usercopy atomicity fix
4G/4G preempt on vstack
4G/4G: even number of kmap types
4g4g: fix __get_user in slab
4g4g: Remove extra .data.idt section definition
4g/4g linker error (overlapping sections)
4G/4G: remove debug code
4g4g: pmd fix
4g/4g: fixes from Bill
4g4g: fpu emulation fix
4g4g: show_registers() fix
4g/4g usercopy atomicity fix
4g4g: debug flags fix
4g4g: Fix wrong asm-offsets entry
cyclone time fixmap fix
4G/4G preempt on vstack
4G/4G: even number of kmap types
4g4g: fix __get_user in slab
4g4g: Remove extra .data.idt section definition
4g/4g linker error (overlapping sections)
4G/4G: remove debug code
4g4g: pmd fix
4g/4g: fixes from Bill
4g4g: fpu emulation fix
4g4g: show_registers() fix
4g/4g usercopy atomicity fix
4g4g: debug flags fix
4g4g: Fix wrong asm-offsets entry
cyclone time fixmap fix
use direct_copy_{to,from}_user for kernel access in mm/usercopy.c
4G/4G might_sleep warning fix
4g/4g pagetable accounting fix
4g4g-athlon-prefetch-handling-fix.patch
4g4g-wp-test-fix.patch
Fix 4G/4G and WP test lockup
4g4g-KERNEL_DS-usercopy-fix.patch
4G/4G KERNEL_DS usercopy again
4g4g-vm86-fix.patch
Fix 4G/4G X11/vm86 oops
4g4g-athlon-triplefault-fix.patch
Fix 4G/4G athlon triplefault
4g4g-sep-fix.patch
4g4g SEP fix
4g4g-sysenter-test-fix.patch
Fix 4G/4G split fix for pre-pentiumII machines
ppc-fixes.patch
make mm4 compile on ppc
aic7xxx_old-oops-fix.patch
O_DIRECT-race-fixes-rollup.patch
DIO fixes forward port and AIO-DIO fix
O_DIRECT race fixes comments
O_DRIECT race fixes fix fix fix
DIO locking rework
O_DIRECT XFS fix
dio-aio-fixes.patch
direct-io AIO fixes
dio-aio-fixes-fixes.patch
dio-aio fix fix
readahead-multiple-fixes.patch
readahead: multipole performance fixes
readahead-simplification.patch
readahead simplification
aio-sysctl-parms.patch
aio sysctl parms
aio-01-retry.patch
AIO: Core retry infrastructure
Fix aio process hang on EINVAL
AIO: flush workqueues before destroying ioctx'es
AIO: hold the context lock across unuse_mm
task task_lock in use_mm()
4g4g-aio-hang-fix.patch
Fix AIO and 4G-4G hang
aio-retry-elevated-refcount.patch
aio: extra ref count during retry
aio-splice-runlist.patch
Splice AIO runlist for fairer handling of multiple io contexts
aio-02-lockpage_wq.patch
AIO: Async page wait
aio-03-fs_read.patch
AIO: Filesystem aio read
aio-04-buffer_wq.patch
AIO: Async buffer wait
lock_buffer_wq fix
aio-05-fs_write.patch
AIO: Filesystem aio write
aio-06-bread_wq.patch
AIO: Async block read
aio-07-ext2getblk_wq.patch
AIO: Async get block for ext2
O_SYNC-speedup-2.patch
speed up O_SYNC writes
O_SYNC-speedup-2-f_mapping-fixes.patch
aio-09-o_sync.patch
aio O_SYNC
AIO: fix a BUG
Unify o_sync changes for aio and regular writes
aio-O_SYNC-fix bits got lost
aio: writev nr_segs fix
More AIO O_SYNC related fixes
aio-09-o_sync-f_mapping-fixes.patch
gang_lookup_next.patch
Change the page gang lookup API
aio-gang_lookup-fix.patch
AIO gang lookup fixes
aio-O_SYNC-short-write-fix.patch
Fix for O_SYNC short writes
aio-12-readahead.patch
AIO: readahead fixes
aio O_DIRECT no readahead
Unified page range readahead for aio and regular reads
aio-12-readahead-f_mapping-fix.patch
aio-readahead-speedup.patch
Readahead issues and AIO read speedup
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton @ 2003-12-23 5:27 ` Valdis.Kletnieks 2003-12-23 5:28 ` 2.6.0-mm1 Marcos D. Marado Torres ` (8 subsequent siblings) 9 siblings, 0 replies; 16+ messages in thread From: Valdis.Kletnieks @ 2003-12-23 5:27 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm [-- Attachment #1: Type: text/plain, Size: 278 bytes --] On Mon, 22 Dec 2003 21:11:31 PST, Andrew Morton <akpm@osdl.org> said: > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2. 6.0-mm1/ Erm? Seems to actually be at: ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0/2.6.0-mm1/ [-- Attachment #2: Type: application/pgp-signature, Size: 226 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton 2003-12-23 5:27 ` 2.6.0-mm1 Valdis.Kletnieks @ 2003-12-23 5:28 ` Marcos D. Marado Torres 2003-12-23 5:28 ` 2.6.0-mm1 Andrew Morton ` (7 subsequent siblings) 9 siblings, 0 replies; 16+ messages in thread From: Marcos D. Marado Torres @ 2003-12-23 5:28 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Mon, 22 Dec 2003, Andrew Morton wrote: > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2.6.0-mm1/ As a matter of fact the link is: ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0/2.6.0-mm1/ Thanks for the patch, Mind Booster Noori - -- ================================================== Marcos Daniel Marado Torres AKA Mind Booster Noori /"\ http://student.dei.uc.pt/~marado \ / marado@student.dei.uc.pt X ASCII Ribbon Campaign / \ against HTML e-mail and Micro$oft attachments ================================================== -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQE/59J5mNlq8m+oD34RAt7lAKDTyWM2+TvG2nvzjBAe8jTjvZO2WQCg3/4p GwaJRAHrIcspRXOkeABSIH4= =5K8v -----END PGP SIGNATURE----- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton 2003-12-23 5:27 ` 2.6.0-mm1 Valdis.Kletnieks 2003-12-23 5:28 ` 2.6.0-mm1 Marcos D. Marado Torres @ 2003-12-23 5:28 ` Andrew Morton 2003-12-23 5:40 ` 2.6.0-mm1 Stan Bubrouski 2003-12-23 7:30 ` 2.6.0-mm1 Martin J. Bligh ` (6 subsequent siblings) 9 siblings, 1 reply; 16+ messages in thread From: Andrew Morton @ 2003-12-23 5:28 UTC (permalink / raw) To: linux-kernel, linux-mm Andrew Morton <akpm@osdl.org> wrote: > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2.6.0-mm1/ make that ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0/2.6.0-mm1/ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:28 ` 2.6.0-mm1 Andrew Morton @ 2003-12-23 5:40 ` Stan Bubrouski 0 siblings, 0 replies; 16+ messages in thread From: Stan Bubrouski @ 2003-12-23 5:40 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm On Tue, 2003-12-23 at 00:28, Andrew Morton wrote: > Andrew Morton <akpm@osdl.org> wrote: > > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2.6.0-mm1/ > > make that > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0/2.6.0-mm1/ Why do I not see the original message Subject: 2.6.0-mm1 ??? Was there ever an original message to this thread? -sb -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton ` (2 preceding siblings ...) 2003-12-23 5:28 ` 2.6.0-mm1 Andrew Morton @ 2003-12-23 7:30 ` Martin J. Bligh 2003-12-23 17:29 ` 2.6.0-mm1 Tom Rini ` (5 subsequent siblings) 9 siblings, 0 replies; 16+ messages in thread From: Martin J. Bligh @ 2003-12-23 7:30 UTC (permalink / raw) To: Andrew Morton, linux-kernel, linux-mm These look new to me. In file included from init/initramfs.c:393: init/../lib/inflate.c: In function `gunzip': init/../lib/inflate.c:1123: warning: value computed is not used init/../lib/inflate.c:1124: warning: value computed is not used init/../lib/inflate.c:1125: warning: value computed is not used init/../lib/inflate.c:1126: warning: value computed is not used In file included from arch/i386/boot/compressed/misc.c:129: arch/i386/boot/compressed/../../../../lib/inflate.c: In function `gunzip': arch/i386/boot/compressed/../../../../lib/inflate.c:1123: warning: value computed is not used arch/i386/boot/compressed/../../../../lib/inflate.c:1124: warning: value computed is not used arch/i386/boot/compressed/../../../../lib/inflate.c:1125: warning: value computed is not used arch/i386/boot/compressed/../../../../lib/inflate.c:1126: warning: value computed is not used M. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton ` (3 preceding siblings ...) 2003-12-23 7:30 ` 2.6.0-mm1 Martin J. Bligh @ 2003-12-23 17:29 ` Tom Rini 2003-12-23 17:31 ` 2.6.0-mm1 Tom Rini 2003-12-23 21:08 ` 2.6.0-mm1 viro ` (4 subsequent siblings) 9 siblings, 1 reply; 16+ messages in thread From: Tom Rini @ 2003-12-23 17:29 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote: [snip] > moto-ppc32-booting-fix.patch > Fix booting on a number of Motorola PPC32 machines The following, based on comments from Keith Owens is better, please replace, thanks: ===== arch/ppc/boot/simple/Makefile 1.23 vs edited ===== --- 1.23/arch/ppc/boot/simple/Makefile Mon Sep 15 01:01:24 2003 +++ edited/arch/ppc/boot/simple/Makefile Tue Dec 23 09:58:53 2003 @@ -76,6 +76,7 @@ # The rest will be unset. motorola := $(CONFIG_MCPN765)$(CONFIG_MVME5100)$(CONFIG_PRPMC750) \ $(CONFIG_PRPMC800)$(CONFIG_LOPEC)$(CONFIG_PPLUS) +motorola := $(strip $(motorola)) pcore := $(CONFIG_PCORE)$(CONFIG_POWERPMC250) zimage-$(motorola) := zImage-PPLUS -- Tom Rini http://gate.crashing.org/~trini/ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 17:29 ` 2.6.0-mm1 Tom Rini @ 2003-12-23 17:31 ` Tom Rini 0 siblings, 0 replies; 16+ messages in thread From: Tom Rini @ 2003-12-23 17:31 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm On Tue, Dec 23, 2003 at 10:29:07AM -0700, Tom Rini wrote: > On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote: > > [snip] > > moto-ppc32-booting-fix.patch > > Fix booting on a number of Motorola PPC32 machines > > The following, based on comments from Keith Owens is better, please > replace, thanks: [snip] The following patch depends on the above, and fixes the 'znetboot' and 'znetbootrd' targets so that they work again (If you would prefer things in a different format, please let me know). Thanks: - Update the comments to reflect how things work with the correct usages now. - Fix the znetboot / znetbootrd targets. We now always set end-y, and use this to figure out what image will be tftpboot'ed. ===== arch/ppc/boot/simple/Makefile 1.24 vs edited ===== --- 1.24/arch/ppc/boot/simple/Makefile Tue Dec 23 10:00:06 2003 +++ edited/arch/ppc/boot/simple/Makefile Tue Dec 23 10:01:04 2003 @@ -4,30 +4,38 @@ # Author: Tom Rini <trini@mvista.com> # # Notes: -# (1) For machine targets which produce more than one image, define -# ZNETBOOT and ZNETBOOTRD to the image which should be available for -# 'znetboot' and 'znetboot.initrd` -# (2) Also, for machine targets which just need to remove the ELF header, -# define END to be the machine name you want in the image. -# (3) For machine targets which use the mktree program, define END to be -# the machine name you want in the image, and you can optionally set -# ENTRYPOINT which the image should be loaded at. The optimal setting -# for ENTRYPOINT is the link address. +# (1) For machines that do not want to use the ELF image directly (including +# stripping just the ELF header off), they must set the variables +# zimage-$(CONFIG_MACHINE) and zimagerd-$(CONFIG_MACHINE) to the target +# that produces the desired image and they must set end-$(CONFIG_MACHINE) +# to what will be suffixed to the image filename. +# (2) Regardless of (1), to have the resulting image be something other +# than 'zImage.elf', set end-$(CONFIG_MACHINE) to be the suffix used for +# the zImage, znetboot, and znetbootrd targets. +# (3) For machine targets which use the mktree program, you can optionally +# set entrypoint-$(CONFIG_MACHINE) to the location which the image should be +# loaded at. The optimal setting for entrypoint-$(CONFIG_MACHINE) is the link +# address. # (4) It is advisable to pass in the memory size using BI_MEMSIZE and # get_mem_size(), which is memory controller dependent. Add in the correct -# XXX_memory.o file for this to work, as well as editing the $(MISC) file. - +# XXX_memory.o file for this to work, as well as editing the +# misc-$(CONFIG_MACHINE) variable. boot := arch/ppc/boot common := $(boot)/common utils := $(boot)/utils bootlib := $(boot)/lib images := $(boot)/images +tftpboot := /tftpboot # Normally, we use the 'misc.c' file for decompress_kernel and # whatnot. Sometimes we need to override this however. misc-y := misc.o +# Normally, we have our images end in .elf, but something we want to +# change this. +end-y := elf + # Additionally, we normally don't need to mess with the L2 / L3 caches # if present on 'classic' PPC. cacheflag-y := -DCLEAR_CACHES="" @@ -41,35 +49,31 @@ zimage-$(CONFIG_IBM_OPENBIOS) := zImage-TREE zimageinitrd-$(CONFIG_IBM_OPENBIOS) := zImage.initrd-TREE end-$(CONFIG_IBM_OPENBIOS) := treeboot - tftpimage-$(CONFIG_IBM_OPENBIOS) := /tftpboot/zImage.$(end-y) misc-$(CONFIG_IBM_OPENBIOS) := misc-embedded.o - tftpimage-$(CONFIG_EMBEDDEDBOOT) := /tftpboot/zImage.embedded + end-$(CONFIG_EMBEDDEDBOOT) := embedded misc-$(CONFIG_EMBEDDEDBOOT) := misc-embedded.o zimage-$(CONFIG_EBONY) := zImage-TREE zimageinitrd-$(CONFIG_EBONY) := zImage.initrd-TREE end-$(CONFIG_EBONY) := ebony entrypoint-$(CONFIG_EBONY) := 0x01000000 - tftpimage-$(CONFIG_EBONY) := /tftpboot/zImage.$(end-y) zimage-$(CONFIG_OCOTEA) := zImage-TREE zimageinitrd-$(CONFIG_OCOTEA) := zImage.initrd-TREE end-$(CONFIG_OCOTEA) := ocotea entrypoint-$(CONFIG_OCOTEA) := 0x01000000 - tftpimage-$(CONFIG_OCOTEA) := /tftpboot/zImage.$(end-y) extra.o-$(CONFIG_EV64260) := direct.o misc-ev64260.o - tftpimage-$(CONFIG_EV64260) := /tftpboot/zImage.ev64260 + end-$(CONFIG_EV64260) := ev64260 cacheflag-$(CONFIG_EV64260) := -include $(clear_L2_L3) zimage-$(CONFIG_GEMINI) := zImage-STRIPELF zimageinitrd-$(CONFIG_GEMINI) := zImage.initrd-STRIPELF end-$(CONFIG_GEMINI) := gemini - tftpimage-$(CONFIG_GEMINI) := /tftpboot/zImage.$(end-y) extra.o-$(CONFIG_K2) := legacy.o - tftpimage-$(CONFIG_K2) := /tftpboot/zImage.k2 + end-$(CONFIG_K2) := k2 cacheflag-$(CONFIG_K2) := -include $(clear_L2_L3) # kconfig 'feature', only one of these will ever be 'y' at a time. @@ -81,9 +85,7 @@ zimage-$(motorola) := zImage-PPLUS zimageinitrd-$(motorola) := zImage.initrd-PPLUS - tftpimage-$(motorola) := /tftpboot/zImage.pplus - znetboot-$(motorola) := zImage.pplus - znetbootrd-$(motorola) := zImage.initrd.pplus + end-$(motorola) := pplus # Overrides previous assingment extra.o-$(CONFIG_PPLUS) := legacy.o @@ -92,10 +94,9 @@ zimageinitrd-$(pcore) := zImage.initrd-STRIPELF extra.o-$(pcore) := chrpmap.o end-$(pcore) := pcore - tftpimage-$(pcore) := /tftpboot/zImage.$(end-y) cacheflag-$(pcore) := -include $(clear_L2_L3) - tftpimage-$(CONFIG_SANDPOINT) := /tftpboot/zImage.sandpoint + end-$(CONFIG_SANDPOINT) := sandpoint cacheflag-$(CONFIG_SANDPOINT) := -include $(clear_L2_L3) zimage-$(CONFIG_SPRUCE) := zImage-TREE @@ -103,11 +104,9 @@ end-$(CONFIG_SPRUCE) := spruce entrypoint-$(CONFIG_SPRUCE) := 0x00800000 misc-$(CONFIG_SPRUCE) := misc-spruce.o - tftpimage-$(CONFIG_SPRUCE) := /tftpboot/zImage.$(end-y) - -# tftp image is prefixed with .smp if compiled for SMP -tftpimage-$(CONFIG_SMP) += .smp +# SMP images should have a '.smp' suffix. + end-$(CONFIG_SMP) += .smp # This is a treeboot that needs init functions until the # boot rom is sorted out (i.e. this is short lived) @@ -181,18 +180,10 @@ rm -f $(obj)/zvmlinux.initrd znetboot: zImage -ifneq ($(ZNETBOOT),) - cp $(images)/$(ZNETBOOT) $(tftpimage-y) -else - cp $(images)/zImage.* $(tftpimage-y) -endif + cp $(images)/zImage.$(end-y) $(tftpboot)/zImage.$(end-y) znetboot.initrd: zImage.initrd -ifneq ($(znetbootrd-y),) - cp $(images)/$(znetbootrd-y) $(tftpimage-y) -else - cp $(images)/zImage.* $(tftpimage-y) -endif + cp $(images)/zImage.initrd.$(end-y) $(tftpboot)/zImage.initrd.$(end-y) $(images)/zImage-STRIPELF: $(obj)/zvmlinux dd if=$(obj)/zvmlinux of=$(images)/zImage.$(end-y) skip=64 bs=1k -- Tom Rini http://gate.crashing.org/~trini/ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton ` (4 preceding siblings ...) 2003-12-23 17:29 ` 2.6.0-mm1 Tom Rini @ 2003-12-23 21:08 ` viro 2003-12-24 13:09 ` 2.6.0-mm1 William Lee Irwin III ` (3 subsequent siblings) 9 siblings, 0 replies; 16+ messages in thread From: viro @ 2003-12-23 21:08 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote: > +inode-i_sb-checks.patch > > Add checks for null inode->i_sb in core VFS (we're still arguing about this) They should be replaced with BUG_ON() or removed. > +name_to_dev_t-fix.patch > > Don't replace slashes in names to `.'. Replace them with `!' instead. No > clue why, nobody tells me anything. Take a look at /sys/block/ and you'll see - when we register disks, we mangle the disk names that contain slashes (e.g. cciss/c0d0) replacing them with '!' in corresponding sysfs names. So name_to_dev_t() should mangle the name in the same way before looking for it in /sys/block. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton ` (5 preceding siblings ...) 2003-12-23 21:08 ` 2.6.0-mm1 viro @ 2003-12-24 13:09 ` William Lee Irwin III 2003-12-24 14:26 ` 2.6.0-mm1 William Lee Irwin III 2003-12-24 15:39 ` 2.6.0-mm1 Gene Heskett ` (2 subsequent siblings) 9 siblings, 1 reply; 16+ messages in thread From: William Lee Irwin III @ 2003-12-24 13:09 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote: > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2.6.0-mm1/ > Quite a lot of new material here. It would be appreciated if people who have > significant patches in -mm could retest please. ptecache refresh. Includes the shrink_slab() and smp_local_irq_* suggestions as well as a fix for IPI recursion found while running hackbench on -wli, moving the "don't shrink lowmem slabs if gfp_mask wants highmem" logic into the shrinkers themselves, and converting shrink_pagetable_cache() to use on_each_cpu(). How's this look? -- wli diff -prauN mm1-2.6.0-1/arch/i386/mm/init.c mm1-2.6.0-2/arch/i386/mm/init.c --- mm1-2.6.0-1/arch/i386/mm/init.c 2003-12-24 04:02:51.000000000 -0800 +++ mm1-2.6.0-2/arch/i386/mm/init.c 2003-12-24 04:06:34.000000000 -0800 @@ -465,7 +465,7 @@ void __init mem_init(void) /* this will put all low memory onto the freelists */ totalram_pages += __free_all_bootmem(); - + tlb_init(); reservedpages = 0; for (tmp = 0; tmp < max_low_pfn; tmp++) /* diff -prauN mm1-2.6.0-1/arch/i386/mm/pgtable.c mm1-2.6.0-2/arch/i386/mm/pgtable.c --- mm1-2.6.0-1/arch/i386/mm/pgtable.c 2003-12-24 04:02:51.000000000 -0800 +++ mm1-2.6.0-2/arch/i386/mm/pgtable.c 2003-12-24 04:40:50.000000000 -0800 @@ -1,5 +1,6 @@ /* * linux/arch/i386/mm/pgtable.c + * highpte-compatible pte caching, William Irwin, IBM, June 2003 */ #include <linux/config.h> @@ -13,6 +14,7 @@ #include <linux/slab.h> #include <linux/pagemap.h> #include <linux/spinlock.h> +#include <linux/init.h> #include <asm/system.h> #include <asm/pgtable.h> @@ -139,18 +141,70 @@ pte_t *pte_alloc_one_kernel(struct mm_st return pte; } -struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) +void tlb_init(void) { - struct page *pte; + int cpu; + for (cpu = 0; cpu < NR_CPUS; ++cpu) { + int zone; + struct mmu_gather *tlb = &per_cpu(mmu_gathers, cpu); + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + INIT_LIST_HEAD(&tlb->active_list[zone]); + INIT_LIST_HEAD(&tlb->ready_list[zone]); + } + } +} -#ifdef CONFIG_HIGHPTE - pte = alloc_pages(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT, 0); -#else - pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT, 0); -#endif - if (pte) - clear_highpage(pte); - return pte; +static inline struct page *pte_alloc_fresh(int gfp_mask) +{ + struct page *page = alloc_page(gfp_mask); + if (page) { + clear_highpage(page); + if (TestSetPagePTE(page)) + BUG(); + } + return page; +} + +static inline int zone_high(struct zone *zone) +{ + if (!zone) + return 1; + else + return zone - zone->zone_pgdat->node_zones >= ZONE_HIGHMEM; +} + +static inline struct page *pte_alloc_ready(int gfp_flags) +{ + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + unsigned long flags; + struct page *page = NULL; + + local_irq_save(flags); + if (tlb->nr_pte_ready) { + int z; + for (z = MAX_ZONE_ID - 1; z >= 0; --z) { + struct zone *zone = zone_table[z]; + if (!(gfp_flags & __GFP_HIGHMEM) && zone_high(zone)) + continue; + if (!list_empty(&tlb->ready_list[z])) + break; + } + page = list_entry(tlb->ready_list[z].next, struct page, list); + if (TestSetPagePTE(page)) + BUG(); + list_del(&page->list); + tlb->ready_count[z]--; + tlb->nr_pte_ready--; + } + local_irq_restore(flags); + put_cpu(); + return page; +} + +struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) +{ + struct page *page = pte_alloc_ready(GFP_PTE); + return page ? page : pte_alloc_fresh(GFP_PTE); } void pmd_ctor(void *pmd, kmem_cache_t *cache, unsigned long flags) @@ -320,3 +374,45 @@ out_free: kmem_cache_free(pgd_cache, pgd); } +static void shrink_cpu_pagetable_cache(void *__gfp_mask) +{ + int zone, high, gfp_mask = (int)__gfp_mask; + unsigned long flags; + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + + high = !!(gfp_mask & __GFP_HIGHMEM); + local_irq_save(flags); + if (!tlb->nr_pte_ready) + goto out; + + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + if (list_empty(&tlb->ready_list[zone])) + continue; + if (!high && zone_high(zone_table[zone])) + continue; + + free_pages_bulk(zone_table[zone], + tlb->ready_count[zone], + &tlb->ready_list[zone], + 0); + tlb->nr_pte_ready -= tlb->ready_count[zone]; + tlb->ready_count[zone] = 0; + } +out: + local_irq_restore(flags); + put_cpu(); +} + +static int shrink_pagetable_cache(int nr_to_scan, unsigned int gfp_mask) +{ + on_each_cpu(shrink_cpu_pagetable_cache, (void *)gfp_mask, 1, 1); + return 1; +} + +static __init int init_pagetable_cache_shrinker(void) +{ + set_shrinker(1, shrink_pagetable_cache); + return 0; +} + +__initcall(init_pagetable_cache_shrinker); diff -prauN mm1-2.6.0-1/fs/dcache.c mm1-2.6.0-2/fs/dcache.c --- mm1-2.6.0-1/fs/dcache.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/fs/dcache.c 2003-12-24 04:15:28.000000000 -0800 @@ -642,6 +642,9 @@ void shrink_dcache_anon(struct hlist_hea */ static int shrink_dcache_memory(int nr, unsigned int gfp_mask) { + if (gfp_mask & __GFP_HIGHMEM) + return 0; + if (nr) { /* * Nasty deadlock avoidance. diff -prauN mm1-2.6.0-1/fs/dquot.c mm1-2.6.0-2/fs/dquot.c --- mm1-2.6.0-1/fs/dquot.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/fs/dquot.c 2003-12-24 04:15:47.000000000 -0800 @@ -391,6 +391,9 @@ static int shrink_dqcache_memory(int nr, { int ret; + if (gfp_mask & __GFP_HIGHMEM) + return 0; + spin_lock(&dq_list_lock); if (nr) prune_dqcache(nr); diff -prauN mm1-2.6.0-1/fs/inode.c mm1-2.6.0-2/fs/inode.c --- mm1-2.6.0-1/fs/inode.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/fs/inode.c 2003-12-24 04:16:14.000000000 -0800 @@ -468,6 +468,9 @@ static void prune_icache(int nr_to_scan) */ static int shrink_icache_memory(int nr, unsigned int gfp_mask) { + if (gfp_mask & __GFP_HIGHMEM) + return 0; + if (nr) { /* * Nasty deadlock avoidance. We may hold various FS locks, diff -prauN mm1-2.6.0-1/fs/mbcache.c mm1-2.6.0-2/fs/mbcache.c --- mm1-2.6.0-1/fs/mbcache.c 2003-12-17 18:59:53.000000000 -0800 +++ mm1-2.6.0-2/fs/mbcache.c 2003-12-24 04:16:50.000000000 -0800 @@ -176,6 +176,9 @@ mb_cache_shrink_fn(int nr_to_scan, unsig struct list_head *l, *ltmp; int count = 0; + if (gfp_mask & __GFP_HIGHMEM) + return 0; + spin_lock(&mb_cache_spinlock); list_for_each(l, &mb_cache_list) { struct mb_cache *cache = diff -prauN mm1-2.6.0-1/fs/xfs/quota/xfs_qm.c mm1-2.6.0-2/fs/xfs/quota/xfs_qm.c --- mm1-2.6.0-1/fs/xfs/quota/xfs_qm.c 2003-12-17 18:58:05.000000000 -0800 +++ mm1-2.6.0-2/fs/xfs/quota/xfs_qm.c 2003-12-24 04:17:50.000000000 -0800 @@ -2208,6 +2208,8 @@ xfs_qm_shake(int nr_to_scan, unsigned in if (!(gfp_mask & __GFP_WAIT)) return 0; + if (gfp_mask & __GFP_HIGHMEM) + return 0; if (!xfs_Gqm) return 0; diff -prauN mm1-2.6.0-1/include/asm-i386/pgalloc.h mm1-2.6.0-2/include/asm-i386/pgalloc.h --- mm1-2.6.0-1/include/asm-i386/pgalloc.h 2003-12-17 18:58:07.000000000 -0800 +++ mm1-2.6.0-2/include/asm-i386/pgalloc.h 2003-12-24 04:06:34.000000000 -0800 @@ -31,14 +31,6 @@ static inline void pte_free_kernel(pte_t free_page((unsigned long)pte); } -static inline void pte_free(struct page *pte) -{ - __free_page(pte); -} - - -#define __pte_free_tlb(tlb,pte) tlb_remove_page((tlb),(pte)) - /* * allocating and freeing a pmd is trivial: the 1-entry pmd is * inside the pgd, so has no extra memory associated with it. @@ -47,9 +39,26 @@ static inline void pte_free(struct page #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) #define pmd_free(x) do { } while (0) -#define __pmd_free_tlb(tlb,x) do { } while (0) #define pgd_populate(mm, pmd, pte) BUG() #define check_pgt_cache() do { } while (0) +#include <asm/tlb.h> + +static inline void pte_free(struct page *page) +{ + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + tlb_remove_page(tlb, page); + put_cpu(); +} + +static inline void pte_free_tlb(struct mmu_gather *tlb, struct page *page) +{ + tlb_remove_page(tlb, page); +} + +static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) +{ +} + #endif /* _I386_PGALLOC_H */ diff -prauN mm1-2.6.0-1/include/asm-i386/tlb.h mm1-2.6.0-2/include/asm-i386/tlb.h --- mm1-2.6.0-1/include/asm-i386/tlb.h 2003-12-17 18:58:38.000000000 -0800 +++ mm1-2.6.0-2/include/asm-i386/tlb.h 2003-12-24 04:41:00.000000000 -0800 @@ -1,10 +1,52 @@ #ifndef _I386_TLB_H #define _I386_TLB_H +/* + * include/asm-i386/tlb.h + * (C) June 2003 William Irwin, IBM + * Routines for pagetable caching and release. + */ + +#include <linux/config.h> +#include <linux/mm.h> +#include <linux/swap.h> +#include <linux/gfp.h> +#include <linux/list.h> +#include <linux/percpu.h> +#include <asm/tlbflush.h> + +#ifdef CONFIG_HIGHPTE +#define GFP_PTE (GFP_KERNEL|__GFP_REPEAT|__GFP_HIGHMEM) +#else +#define GFP_PTE (GFP_KERNEL|__GFP_REPEAT) +#endif + +#define PG_PTE PG_arch_1 +#define NR_PTE 128 +#define FREE_PTE_NR NR_PTE +#define NR_NONPTE 512 +#define MAX_ZONE_ID (MAX_NUMNODES * MAX_NR_ZONES) + +#define PagePTE(page) test_bit(PG_PTE, &(page)->flags) +#define SetPagePTE(page) set_bit(PG_PTE, &(page)->flags) +#define ClearPagePTE(page) clear_bit(PG_PTE, &(page)->flags) +#define TestSetPagePTE(page) test_and_set_bit(PG_PTE, &(page)->flags) +#define TestClearPagePTE(page) test_and_clear_bit(PG_PTE, &(page)->flags) +#define PageZoneID(page) ((page)->flags >> ZONE_SHIFT) /* - * x86 doesn't need any special per-pte or - * per-vma handling.. + * vmscan.c does smp_call_function() to shoot down cached pagetables under + * memory pressure. */ +struct mmu_gather { + struct mm_struct *mm; + int nr_pte_active, nr_pte_ready, nr_nonpte, need_flush, fullmm, freed; + struct list_head active_list[MAX_ZONE_ID], ready_list[MAX_ZONE_ID]; + int active_count[MAX_ZONE_ID], ready_count[MAX_ZONE_ID]; + struct page *nonpte[NR_NONPTE]; +}; + +DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); + #define tlb_start_vma(tlb, vma) do { } while (0) #define tlb_end_vma(tlb, vma) do { } while (0) #define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0) @@ -15,6 +57,119 @@ */ #define tlb_flush(tlb) flush_tlb_mm((tlb)->mm) -#include <asm-generic/tlb.h> +void tlb_init(void); -#endif +static inline +struct mmu_gather *tlb_gather_mmu(struct mm_struct *mm, unsigned int flush) +{ + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + tlb->mm = mm; + tlb->fullmm = flush; + tlb->freed = 0; + put_cpu(); + return tlb; +} + +static inline +void tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *pte, unsigned long addr) +{ + tlb->need_flush = 1; +} + +static inline +void tlb_flush_ready(struct mmu_gather *tlb) +{ + int zone; + + for (zone = 0; tlb->nr_pte_ready >= NR_PTE && zone < MAX_ZONE_ID; ++zone) { + if (!tlb->ready_count[zone]) + continue; + + free_pages_bulk(zone_table[zone], + tlb->ready_count[zone], + &tlb->ready_list[zone], + 0); + tlb->nr_pte_ready -= tlb->ready_count[zone]; + tlb->ready_count[zone] = 0; + } +} + +static inline +void tlb_flush_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) +{ + int zone; + unsigned long flags; + + if (!tlb->need_flush && tlb->nr_nonpte < NR_NONPTE) + return; + + tlb->need_flush = 0; + tlb_flush(tlb); + + local_irq_save(flags); + + if (tlb->nr_nonpte) { + free_pages_and_swap_cache(tlb->nonpte, tlb->nr_nonpte); + tlb->nr_nonpte = 0; + } + + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + if (!tlb->active_count[zone]) + continue; + + list_splice_init(&tlb->active_list[zone], &tlb->ready_list[zone]); + tlb->ready_count[zone] += tlb->active_count[zone]; + tlb->active_count[zone] = 0; + } + tlb->nr_pte_ready += tlb->nr_pte_active; + tlb->nr_pte_active = 0; + if (tlb->nr_pte_ready >= NR_PTE) + tlb_flush_ready(tlb); + + local_irq_restore(flags); +} + +static inline +void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) +{ + if (tlb->mm->rss >= tlb->freed) + tlb->mm->rss -= tlb->freed; + else + tlb->mm->rss = 0; + tlb_flush_mmu(tlb, start, end); +} + +static inline +void tlb_remove_nonpte_page(struct mmu_gather *tlb, struct page *page) +{ + tlb->nonpte[tlb->nr_nonpte] = page; + tlb->nr_nonpte++; + if (tlb->nr_nonpte >= NR_NONPTE) + tlb_flush_mmu(tlb, 0, 0); +} + +static inline +void tlb_remove_pte_page(struct mmu_gather *tlb, struct page *page) +{ + int zone = PageZoneID(page); + ClearPagePTE(page); + tlb->nr_pte_active++; + tlb->active_count[zone]++; + list_add(&page->list, &tlb->active_list[zone]); +} + +static inline +void tlb_remove_page(struct mmu_gather *tlb, struct page *page) +{ + unsigned long flags; + + local_irq_save(flags); + tlb->need_flush = 1; + if (PagePTE(page)) + tlb_remove_pte_page(tlb, page); + else + tlb_remove_nonpte_page(tlb, page); + local_irq_restore(flags); +} + +#endif /* _I386_TLB_H */ diff -prauN mm1-2.6.0-1/include/linux/gfp.h mm1-2.6.0-2/include/linux/gfp.h --- mm1-2.6.0-1/include/linux/gfp.h 2003-12-17 18:58:28.000000000 -0800 +++ mm1-2.6.0-2/include/linux/gfp.h 2003-12-24 04:06:34.000000000 -0800 @@ -79,6 +79,7 @@ static inline struct page * alloc_pages_ extern unsigned long FASTCALL(__get_free_pages(unsigned int gfp_mask, unsigned int order)); extern unsigned long FASTCALL(get_zeroed_page(unsigned int gfp_mask)); +int free_pages_bulk(struct zone *zone, int count, struct list_head *list, unsigned int order); #define __get_free_page(gfp_mask) \ __get_free_pages((gfp_mask),0) diff -prauN mm1-2.6.0-1/mm/page_alloc.c mm1-2.6.0-2/mm/page_alloc.c --- mm1-2.6.0-1/mm/page_alloc.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/mm/page_alloc.c 2003-12-24 04:06:34.000000000 -0800 @@ -238,8 +238,7 @@ static inline void free_pages_check(cons * And clear the zone's pages_scanned counter, to hold off the "all pages are * pinned" detection logic. */ -static int -free_pages_bulk(struct zone *zone, int count, +int free_pages_bulk(struct zone *zone, int count, struct list_head *list, unsigned int order) { unsigned long mask, flags; diff -prauN mm1-2.6.0-1/mm/vmscan.c mm1-2.6.0-2/mm/vmscan.c --- mm1-2.6.0-1/mm/vmscan.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/mm/vmscan.c 2003-12-24 04:24:29.000000000 -0800 @@ -891,12 +891,10 @@ int try_to_free_pages(struct zone **zone /* Take a nap, wait for some writeback to complete */ blk_congestion_wait(WRITE, HZ/10); - if (zones[0] - zones[0]->zone_pgdat->node_zones < ZONE_HIGHMEM) { - shrink_slab(total_scanned, gfp_mask); - if (reclaim_state) { - nr_reclaimed += reclaim_state->reclaimed_slab; - reclaim_state->reclaimed_slab = 0; - } + shrink_slab(total_scanned, gfp_mask); + if (reclaim_state) { + nr_reclaimed += reclaim_state->reclaimed_slab; + reclaim_state->reclaimed_slab = 0; } } if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) @@ -968,11 +966,12 @@ static int balance_pgdat(pg_data_t *pgda max_scan = SWAP_CLUSTER_MAX; to_free -= shrink_zone(zone, max_scan, GFP_KERNEL, to_reclaim, &nr_mapped, ps, priority); - if (i < ZONE_HIGHMEM) { - reclaim_state->reclaimed_slab = 0; + reclaim_state->reclaimed_slab = 0; + if (i < ZONE_HIGHMEM) shrink_slab(max_scan + nr_mapped, GFP_KERNEL); - to_free -= reclaim_state->reclaimed_slab; - } + else + shrink_slab(max_scan + nr_mapped, GFP_HIGHUSER); + to_free -= reclaim_state->reclaimed_slab; if (zone->all_unreclaimable) continue; if (zone->pages_scanned > zone->present_pages * 2) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-24 13:09 ` 2.6.0-mm1 William Lee Irwin III @ 2003-12-24 14:26 ` William Lee Irwin III 0 siblings, 0 replies; 16+ messages in thread From: William Lee Irwin III @ 2003-12-24 14:26 UTC (permalink / raw) To: Andrew Morton, linux-kernel, linux-mm [-- Attachment #1: Type: text/plain, Size: 939 bytes --] On Wed, Dec 24, 2003 at 05:09:42AM -0800, William Lee Irwin III wrote: > ptecache refresh. Includes the shrink_slab() and smp_local_irq_* > suggestions as well as a fix for IPI recursion found while running > hackbench on -wli, moving the "don't shrink lowmem slabs if gfp_mask > wants highmem" logic into the shrinkers themselves, and converting > shrink_pagetable_cache() to use on_each_cpu(). > How's this look? This tries to adjust the reclaim logic so it returns status like other shrinkers attached both incrementally and as a whole-hog replacement. BTW delta = scanned * shrinker->seeks; delta *= (*shrinker->shrinker)(0, gfp_mask); do_div(delta, pages + 1); shrinker->nr += delta; if (shrinker->nr > SHRINK_BATCH) { long nr_to_scan = shrinker->nr; more aggressively reclaims slabs requiring _more_ seeks to refill. -- wli [-- Attachment #2: fix_slab_shrink.patch --] [-- Type: text/plain, Size: 2330 bytes --] diff -u mm1-2.6.0-2/arch/i386/mm/pgtable.c mm1-2.6.0-2/arch/i386/mm/pgtable.c --- mm1-2.6.0-2/arch/i386/mm/pgtable.c 2003-12-24 04:40:50.000000000 -0800 +++ mm1-2.6.0-2/arch/i386/mm/pgtable.c 2003-12-24 06:02:29.000000000 -0800 @@ -374,13 +374,18 @@ kmem_cache_free(pgd_cache, pgd); } -static void shrink_cpu_pagetable_cache(void *__gfp_mask) +struct pagetable_shrink { + int gfp_mask; + atomic_t nr; +}; + +static void shrink_cpu_pagetable_cache(void *__shrink) { - int zone, high, gfp_mask = (int)__gfp_mask; - unsigned long flags; + struct pagetable_shrink *shrink = (struct pagetable_shrink *)__shrink; struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + int zone, high = !!(shrink->gfp_mask & __GFP_HIGHMEM); + unsigned long flags; - high = !!(gfp_mask & __GFP_HIGHMEM); local_irq_save(flags); if (!tlb->nr_pte_ready) goto out; @@ -396,17 +401,55 @@ &tlb->ready_list[zone], 0); tlb->nr_pte_ready -= tlb->ready_count[zone]; + atomic_sub(tlb->ready_count[zone], &shrink->nr); tlb->ready_count[zone] = 0; + if (atomic_read(&shrink->nr) <= 0) + goto out; } out: local_irq_restore(flags); put_cpu(); } +static int pagetable_shrinkage_possible(int gfp_mask) +{ + int cpu, total = 0; + + for (cpu = 0; cpu < NR_CPUS; ++cpu) { + struct mmu_gather *tlb; + if (!cpu_online(cpu)) + continue; + tlb = &per_cpu(mmu_gathers, cpu); + if ((gfp_mask & __GFP_HIGHMEM) || !(GFP_PTE & __GFP_HIGHMEM)) + total += tlb->nr_pte_ready; + else { + int zone; + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + if (!zone_high(zone_table[zone])) + total += tlb->ready_count[zone]; + } + } + } + return total; +} + static int shrink_pagetable_cache(int nr_to_scan, unsigned int gfp_mask) { - on_each_cpu(shrink_cpu_pagetable_cache, (void *)gfp_mask, 1, 1); - return 1; + int possible; + if ((gfp_mask & __GFP_HIGHMEM) && !(GFP_PTE & __GFP_HIGHMEM)) + return 0; + possible = pagetable_shrinkage_possible(gfp_mask); + if (!nr_to_scan) + return possible; + else if (!possible) + return 0; + else { + struct pagetable_shrink shrink; + shrink.gfp_mask = gfp_mask; + atomic_set(&shrink.nr, nr_to_scan); + on_each_cpu(shrink_cpu_pagetable_cache, &shrink, 1, 1); + return pagetable_shrinkage_possible(gfp_mask); + } } static __init int init_pagetable_cache_shrinker(void) [-- Attachment #3: ptecache-2.6.0-mm1-1 --] [-- Type: text/plain, Size: 15914 bytes --] diff -prauN mm1-2.6.0-1/arch/i386/mm/init.c mm1-2.6.0-2/arch/i386/mm/init.c --- mm1-2.6.0-1/arch/i386/mm/init.c 2003-12-24 04:02:51.000000000 -0800 +++ mm1-2.6.0-2/arch/i386/mm/init.c 2003-12-24 04:06:34.000000000 -0800 @@ -465,7 +465,7 @@ void __init mem_init(void) /* this will put all low memory onto the freelists */ totalram_pages += __free_all_bootmem(); - + tlb_init(); reservedpages = 0; for (tmp = 0; tmp < max_low_pfn; tmp++) /* diff -prauN mm1-2.6.0-1/arch/i386/mm/pgtable.c mm1-2.6.0-2/arch/i386/mm/pgtable.c --- mm1-2.6.0-1/arch/i386/mm/pgtable.c 2003-12-24 04:02:51.000000000 -0800 +++ mm1-2.6.0-2/arch/i386/mm/pgtable.c 2003-12-24 06:02:29.000000000 -0800 @@ -1,5 +1,6 @@ /* * linux/arch/i386/mm/pgtable.c + * highpte-compatible pte caching, William Irwin, IBM, June 2003 */ #include <linux/config.h> @@ -13,6 +14,7 @@ #include <linux/slab.h> #include <linux/pagemap.h> #include <linux/spinlock.h> +#include <linux/init.h> #include <asm/system.h> #include <asm/pgtable.h> @@ -139,18 +141,70 @@ pte_t *pte_alloc_one_kernel(struct mm_st return pte; } -struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) +void tlb_init(void) { - struct page *pte; + int cpu; + for (cpu = 0; cpu < NR_CPUS; ++cpu) { + int zone; + struct mmu_gather *tlb = &per_cpu(mmu_gathers, cpu); + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + INIT_LIST_HEAD(&tlb->active_list[zone]); + INIT_LIST_HEAD(&tlb->ready_list[zone]); + } + } +} -#ifdef CONFIG_HIGHPTE - pte = alloc_pages(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT, 0); -#else - pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT, 0); -#endif - if (pte) - clear_highpage(pte); - return pte; +static inline struct page *pte_alloc_fresh(int gfp_mask) +{ + struct page *page = alloc_page(gfp_mask); + if (page) { + clear_highpage(page); + if (TestSetPagePTE(page)) + BUG(); + } + return page; +} + +static inline int zone_high(struct zone *zone) +{ + if (!zone) + return 1; + else + return zone - zone->zone_pgdat->node_zones >= ZONE_HIGHMEM; +} + +static inline struct page *pte_alloc_ready(int gfp_flags) +{ + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + unsigned long flags; + struct page *page = NULL; + + local_irq_save(flags); + if (tlb->nr_pte_ready) { + int z; + for (z = MAX_ZONE_ID - 1; z >= 0; --z) { + struct zone *zone = zone_table[z]; + if (!(gfp_flags & __GFP_HIGHMEM) && zone_high(zone)) + continue; + if (!list_empty(&tlb->ready_list[z])) + break; + } + page = list_entry(tlb->ready_list[z].next, struct page, list); + if (TestSetPagePTE(page)) + BUG(); + list_del(&page->list); + tlb->ready_count[z]--; + tlb->nr_pte_ready--; + } + local_irq_restore(flags); + put_cpu(); + return page; +} + +struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) +{ + struct page *page = pte_alloc_ready(GFP_PTE); + return page ? page : pte_alloc_fresh(GFP_PTE); } void pmd_ctor(void *pmd, kmem_cache_t *cache, unsigned long flags) @@ -320,3 +374,88 @@ out_free: kmem_cache_free(pgd_cache, pgd); } +struct pagetable_shrink { + int gfp_mask; + atomic_t nr; +}; + +static void shrink_cpu_pagetable_cache(void *__shrink) +{ + struct pagetable_shrink *shrink = (struct pagetable_shrink *)__shrink; + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + int zone, high = !!(shrink->gfp_mask & __GFP_HIGHMEM); + unsigned long flags; + + local_irq_save(flags); + if (!tlb->nr_pte_ready) + goto out; + + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + if (list_empty(&tlb->ready_list[zone])) + continue; + if (!high && zone_high(zone_table[zone])) + continue; + + free_pages_bulk(zone_table[zone], + tlb->ready_count[zone], + &tlb->ready_list[zone], + 0); + tlb->nr_pte_ready -= tlb->ready_count[zone]; + atomic_sub(tlb->ready_count[zone], &shrink->nr); + tlb->ready_count[zone] = 0; + if (atomic_read(&shrink->nr) <= 0) + goto out; + } +out: + local_irq_restore(flags); + put_cpu(); +} + +static int pagetable_shrinkage_possible(int gfp_mask) +{ + int cpu, total = 0; + + for (cpu = 0; cpu < NR_CPUS; ++cpu) { + struct mmu_gather *tlb; + if (!cpu_online(cpu)) + continue; + tlb = &per_cpu(mmu_gathers, cpu); + if ((gfp_mask & __GFP_HIGHMEM) || !(GFP_PTE & __GFP_HIGHMEM)) + total += tlb->nr_pte_ready; + else { + int zone; + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + if (!zone_high(zone_table[zone])) + total += tlb->ready_count[zone]; + } + } + } + return total; +} + +static int shrink_pagetable_cache(int nr_to_scan, unsigned int gfp_mask) +{ + int possible; + if ((gfp_mask & __GFP_HIGHMEM) && !(GFP_PTE & __GFP_HIGHMEM)) + return 0; + possible = pagetable_shrinkage_possible(gfp_mask); + if (!nr_to_scan) + return possible; + else if (!possible) + return 0; + else { + struct pagetable_shrink shrink; + shrink.gfp_mask = gfp_mask; + atomic_set(&shrink.nr, nr_to_scan); + on_each_cpu(shrink_cpu_pagetable_cache, &shrink, 1, 1); + return pagetable_shrinkage_possible(gfp_mask); + } +} + +static __init int init_pagetable_cache_shrinker(void) +{ + set_shrinker(1, shrink_pagetable_cache); + return 0; +} + +__initcall(init_pagetable_cache_shrinker); diff -prauN mm1-2.6.0-1/fs/dcache.c mm1-2.6.0-2/fs/dcache.c --- mm1-2.6.0-1/fs/dcache.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/fs/dcache.c 2003-12-24 04:15:28.000000000 -0800 @@ -642,6 +642,9 @@ void shrink_dcache_anon(struct hlist_hea */ static int shrink_dcache_memory(int nr, unsigned int gfp_mask) { + if (gfp_mask & __GFP_HIGHMEM) + return 0; + if (nr) { /* * Nasty deadlock avoidance. diff -prauN mm1-2.6.0-1/fs/dquot.c mm1-2.6.0-2/fs/dquot.c --- mm1-2.6.0-1/fs/dquot.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/fs/dquot.c 2003-12-24 04:15:47.000000000 -0800 @@ -391,6 +391,9 @@ static int shrink_dqcache_memory(int nr, { int ret; + if (gfp_mask & __GFP_HIGHMEM) + return 0; + spin_lock(&dq_list_lock); if (nr) prune_dqcache(nr); diff -prauN mm1-2.6.0-1/fs/inode.c mm1-2.6.0-2/fs/inode.c --- mm1-2.6.0-1/fs/inode.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/fs/inode.c 2003-12-24 04:16:14.000000000 -0800 @@ -468,6 +468,9 @@ static void prune_icache(int nr_to_scan) */ static int shrink_icache_memory(int nr, unsigned int gfp_mask) { + if (gfp_mask & __GFP_HIGHMEM) + return 0; + if (nr) { /* * Nasty deadlock avoidance. We may hold various FS locks, diff -prauN mm1-2.6.0-1/fs/mbcache.c mm1-2.6.0-2/fs/mbcache.c --- mm1-2.6.0-1/fs/mbcache.c 2003-12-17 18:59:53.000000000 -0800 +++ mm1-2.6.0-2/fs/mbcache.c 2003-12-24 04:16:50.000000000 -0800 @@ -176,6 +176,9 @@ mb_cache_shrink_fn(int nr_to_scan, unsig struct list_head *l, *ltmp; int count = 0; + if (gfp_mask & __GFP_HIGHMEM) + return 0; + spin_lock(&mb_cache_spinlock); list_for_each(l, &mb_cache_list) { struct mb_cache *cache = diff -prauN mm1-2.6.0-1/fs/xfs/quota/xfs_qm.c mm1-2.6.0-2/fs/xfs/quota/xfs_qm.c --- mm1-2.6.0-1/fs/xfs/quota/xfs_qm.c 2003-12-17 18:58:05.000000000 -0800 +++ mm1-2.6.0-2/fs/xfs/quota/xfs_qm.c 2003-12-24 04:17:50.000000000 -0800 @@ -2208,6 +2208,8 @@ xfs_qm_shake(int nr_to_scan, unsigned in if (!(gfp_mask & __GFP_WAIT)) return 0; + if (gfp_mask & __GFP_HIGHMEM) + return 0; if (!xfs_Gqm) return 0; diff -prauN mm1-2.6.0-1/include/asm-i386/pgalloc.h mm1-2.6.0-2/include/asm-i386/pgalloc.h --- mm1-2.6.0-1/include/asm-i386/pgalloc.h 2003-12-17 18:58:07.000000000 -0800 +++ mm1-2.6.0-2/include/asm-i386/pgalloc.h 2003-12-24 04:06:34.000000000 -0800 @@ -31,14 +31,6 @@ static inline void pte_free_kernel(pte_t free_page((unsigned long)pte); } -static inline void pte_free(struct page *pte) -{ - __free_page(pte); -} - - -#define __pte_free_tlb(tlb,pte) tlb_remove_page((tlb),(pte)) - /* * allocating and freeing a pmd is trivial: the 1-entry pmd is * inside the pgd, so has no extra memory associated with it. @@ -47,9 +39,26 @@ static inline void pte_free(struct page #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) #define pmd_free(x) do { } while (0) -#define __pmd_free_tlb(tlb,x) do { } while (0) #define pgd_populate(mm, pmd, pte) BUG() #define check_pgt_cache() do { } while (0) +#include <asm/tlb.h> + +static inline void pte_free(struct page *page) +{ + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + tlb_remove_page(tlb, page); + put_cpu(); +} + +static inline void pte_free_tlb(struct mmu_gather *tlb, struct page *page) +{ + tlb_remove_page(tlb, page); +} + +static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) +{ +} + #endif /* _I386_PGALLOC_H */ diff -prauN mm1-2.6.0-1/include/asm-i386/tlb.h mm1-2.6.0-2/include/asm-i386/tlb.h --- mm1-2.6.0-1/include/asm-i386/tlb.h 2003-12-17 18:58:38.000000000 -0800 +++ mm1-2.6.0-2/include/asm-i386/tlb.h 2003-12-24 04:41:00.000000000 -0800 @@ -1,10 +1,52 @@ #ifndef _I386_TLB_H #define _I386_TLB_H +/* + * include/asm-i386/tlb.h + * (C) June 2003 William Irwin, IBM + * Routines for pagetable caching and release. + */ + +#include <linux/config.h> +#include <linux/mm.h> +#include <linux/swap.h> +#include <linux/gfp.h> +#include <linux/list.h> +#include <linux/percpu.h> +#include <asm/tlbflush.h> + +#ifdef CONFIG_HIGHPTE +#define GFP_PTE (GFP_KERNEL|__GFP_REPEAT|__GFP_HIGHMEM) +#else +#define GFP_PTE (GFP_KERNEL|__GFP_REPEAT) +#endif + +#define PG_PTE PG_arch_1 +#define NR_PTE 128 +#define FREE_PTE_NR NR_PTE +#define NR_NONPTE 512 +#define MAX_ZONE_ID (MAX_NUMNODES * MAX_NR_ZONES) + +#define PagePTE(page) test_bit(PG_PTE, &(page)->flags) +#define SetPagePTE(page) set_bit(PG_PTE, &(page)->flags) +#define ClearPagePTE(page) clear_bit(PG_PTE, &(page)->flags) +#define TestSetPagePTE(page) test_and_set_bit(PG_PTE, &(page)->flags) +#define TestClearPagePTE(page) test_and_clear_bit(PG_PTE, &(page)->flags) +#define PageZoneID(page) ((page)->flags >> ZONE_SHIFT) /* - * x86 doesn't need any special per-pte or - * per-vma handling.. + * vmscan.c does smp_call_function() to shoot down cached pagetables under + * memory pressure. */ +struct mmu_gather { + struct mm_struct *mm; + int nr_pte_active, nr_pte_ready, nr_nonpte, need_flush, fullmm, freed; + struct list_head active_list[MAX_ZONE_ID], ready_list[MAX_ZONE_ID]; + int active_count[MAX_ZONE_ID], ready_count[MAX_ZONE_ID]; + struct page *nonpte[NR_NONPTE]; +}; + +DECLARE_PER_CPU(struct mmu_gather, mmu_gathers); + #define tlb_start_vma(tlb, vma) do { } while (0) #define tlb_end_vma(tlb, vma) do { } while (0) #define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0) @@ -15,6 +57,119 @@ */ #define tlb_flush(tlb) flush_tlb_mm((tlb)->mm) -#include <asm-generic/tlb.h> +void tlb_init(void); -#endif +static inline +struct mmu_gather *tlb_gather_mmu(struct mm_struct *mm, unsigned int flush) +{ + struct mmu_gather *tlb = &per_cpu(mmu_gathers, get_cpu()); + tlb->mm = mm; + tlb->fullmm = flush; + tlb->freed = 0; + put_cpu(); + return tlb; +} + +static inline +void tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *pte, unsigned long addr) +{ + tlb->need_flush = 1; +} + +static inline +void tlb_flush_ready(struct mmu_gather *tlb) +{ + int zone; + + for (zone = 0; tlb->nr_pte_ready >= NR_PTE && zone < MAX_ZONE_ID; ++zone) { + if (!tlb->ready_count[zone]) + continue; + + free_pages_bulk(zone_table[zone], + tlb->ready_count[zone], + &tlb->ready_list[zone], + 0); + tlb->nr_pte_ready -= tlb->ready_count[zone]; + tlb->ready_count[zone] = 0; + } +} + +static inline +void tlb_flush_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) +{ + int zone; + unsigned long flags; + + if (!tlb->need_flush && tlb->nr_nonpte < NR_NONPTE) + return; + + tlb->need_flush = 0; + tlb_flush(tlb); + + local_irq_save(flags); + + if (tlb->nr_nonpte) { + free_pages_and_swap_cache(tlb->nonpte, tlb->nr_nonpte); + tlb->nr_nonpte = 0; + } + + for (zone = 0; zone < MAX_ZONE_ID; ++zone) { + if (!tlb->active_count[zone]) + continue; + + list_splice_init(&tlb->active_list[zone], &tlb->ready_list[zone]); + tlb->ready_count[zone] += tlb->active_count[zone]; + tlb->active_count[zone] = 0; + } + tlb->nr_pte_ready += tlb->nr_pte_active; + tlb->nr_pte_active = 0; + if (tlb->nr_pte_ready >= NR_PTE) + tlb_flush_ready(tlb); + + local_irq_restore(flags); +} + +static inline +void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) +{ + if (tlb->mm->rss >= tlb->freed) + tlb->mm->rss -= tlb->freed; + else + tlb->mm->rss = 0; + tlb_flush_mmu(tlb, start, end); +} + +static inline +void tlb_remove_nonpte_page(struct mmu_gather *tlb, struct page *page) +{ + tlb->nonpte[tlb->nr_nonpte] = page; + tlb->nr_nonpte++; + if (tlb->nr_nonpte >= NR_NONPTE) + tlb_flush_mmu(tlb, 0, 0); +} + +static inline +void tlb_remove_pte_page(struct mmu_gather *tlb, struct page *page) +{ + int zone = PageZoneID(page); + ClearPagePTE(page); + tlb->nr_pte_active++; + tlb->active_count[zone]++; + list_add(&page->list, &tlb->active_list[zone]); +} + +static inline +void tlb_remove_page(struct mmu_gather *tlb, struct page *page) +{ + unsigned long flags; + + local_irq_save(flags); + tlb->need_flush = 1; + if (PagePTE(page)) + tlb_remove_pte_page(tlb, page); + else + tlb_remove_nonpte_page(tlb, page); + local_irq_restore(flags); +} + +#endif /* _I386_TLB_H */ diff -prauN mm1-2.6.0-1/include/linux/gfp.h mm1-2.6.0-2/include/linux/gfp.h --- mm1-2.6.0-1/include/linux/gfp.h 2003-12-17 18:58:28.000000000 -0800 +++ mm1-2.6.0-2/include/linux/gfp.h 2003-12-24 04:06:34.000000000 -0800 @@ -79,6 +79,7 @@ static inline struct page * alloc_pages_ extern unsigned long FASTCALL(__get_free_pages(unsigned int gfp_mask, unsigned int order)); extern unsigned long FASTCALL(get_zeroed_page(unsigned int gfp_mask)); +int free_pages_bulk(struct zone *zone, int count, struct list_head *list, unsigned int order); #define __get_free_page(gfp_mask) \ __get_free_pages((gfp_mask),0) diff -prauN mm1-2.6.0-1/mm/page_alloc.c mm1-2.6.0-2/mm/page_alloc.c --- mm1-2.6.0-1/mm/page_alloc.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/mm/page_alloc.c 2003-12-24 04:06:34.000000000 -0800 @@ -238,8 +238,7 @@ static inline void free_pages_check(cons * And clear the zone's pages_scanned counter, to hold off the "all pages are * pinned" detection logic. */ -static int -free_pages_bulk(struct zone *zone, int count, +int free_pages_bulk(struct zone *zone, int count, struct list_head *list, unsigned int order) { unsigned long mask, flags; diff -prauN mm1-2.6.0-1/mm/vmscan.c mm1-2.6.0-2/mm/vmscan.c --- mm1-2.6.0-1/mm/vmscan.c 2003-12-24 04:02:53.000000000 -0800 +++ mm1-2.6.0-2/mm/vmscan.c 2003-12-24 04:24:29.000000000 -0800 @@ -891,12 +891,10 @@ int try_to_free_pages(struct zone **zone /* Take a nap, wait for some writeback to complete */ blk_congestion_wait(WRITE, HZ/10); - if (zones[0] - zones[0]->zone_pgdat->node_zones < ZONE_HIGHMEM) { - shrink_slab(total_scanned, gfp_mask); - if (reclaim_state) { - nr_reclaimed += reclaim_state->reclaimed_slab; - reclaim_state->reclaimed_slab = 0; - } + shrink_slab(total_scanned, gfp_mask); + if (reclaim_state) { + nr_reclaimed += reclaim_state->reclaimed_slab; + reclaim_state->reclaimed_slab = 0; } } if ((gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY)) @@ -968,11 +966,12 @@ static int balance_pgdat(pg_data_t *pgda max_scan = SWAP_CLUSTER_MAX; to_free -= shrink_zone(zone, max_scan, GFP_KERNEL, to_reclaim, &nr_mapped, ps, priority); - if (i < ZONE_HIGHMEM) { - reclaim_state->reclaimed_slab = 0; + reclaim_state->reclaimed_slab = 0; + if (i < ZONE_HIGHMEM) shrink_slab(max_scan + nr_mapped, GFP_KERNEL); - to_free -= reclaim_state->reclaimed_slab; - } + else + shrink_slab(max_scan + nr_mapped, GFP_HIGHUSER); + to_free -= reclaim_state->reclaimed_slab; if (zone->all_unreclaimable) continue; if (zone->pages_scanned > zone->present_pages * 2) ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton ` (6 preceding siblings ...) 2003-12-24 13:09 ` 2.6.0-mm1 William Lee Irwin III @ 2003-12-24 15:39 ` Gene Heskett 2003-12-28 3:43 ` [PATCH] 2.6.0-mm1 Ramón Rey Vicente 2003-12-28 10:58 ` 2.6.0-mm1 Christoph Hellwig 9 siblings, 0 replies; 16+ messages in thread From: Gene Heskett @ 2003-12-24 15:39 UTC (permalink / raw) To: Andrew Morton, linux-kernel, linux-mm On Tuesday 23 December 2003 00:11, Andrew Morton wrote: >ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0- >test11/2.6.0-mm1/ > > >Quite a lot of new material here. It would be appreciated if people > who have significant patches in -mm could retest please. I don't have anything in -mm1, but heres a report, up about 23 hrs now. Everything seems to be working fine, and one proggy I couldn't run before, now does, epsons iscan-1.5.2 front end for sane driven scanners now works. The major thing I see in the logs is audio related, and has been carrying on since last summer. Dec 23 20:35:18 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 23 21:33:06 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 23 22:10:50 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 23 22:25:58 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 23 22:50:40 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 23 23:20:37 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 23 23:33:07 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 23 23:53:43 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 24 00:07:46 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 24 00:22:26 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 24 01:22:55 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 24 01:35:27 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 24 03:47:31 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) Dec 24 03:59:54 coyote kernel: via82cxxx: timeout while reading AC97 codec (0x9A0000) I think that each of those is related to the little two tone noise I play when there is new incoming mail. There's a couple of other non-show stoppers but thats the major log clutterer. The only alsa is whats in the kernel, and with a couple of very minor exceptions, it all works. No Ooops, lockups or anything like that. All pretty smooth and interactive using anticipatory at the moment. Merry Christmas Andrew! -- Cheers, Gene AMD K6-III@500mhz 320M Athlon1600XP@1400mhz 512M 99.22% setiathome rank, not too shabby for a WV hillbilly Yahoo.com attornies please note, additions to this message by Gene Heskett are: Copyright 2003 by Maurice Eugene Heskett, all rights reserved. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH] Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton ` (7 preceding siblings ...) 2003-12-24 15:39 ` 2.6.0-mm1 Gene Heskett @ 2003-12-28 3:43 ` Ramón Rey Vicente 2003-12-28 10:58 ` 2.6.0-mm1 Christoph Hellwig 9 siblings, 0 replies; 16+ messages in thread From: Ramón Rey Vicente @ 2003-12-28 3:43 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm [-- Attachment #1.1: Type: text/plain, Size: 384 bytes --] El mar, 23-12-2003 a las 06:11, Andrew Morton escribió: > +mt-ranier-support.patch > > Mt Ranier support in the CDROM uniform layer. Somebody forgot this WAIT_CMD-to-ATAPI_WAIT_PC change -- Ramón Rey Vicente <ramon dot rey at hispalinux dot es> jabber ID <rreylinux at jabber dot org> GPG public key ID 0xBEBD71D5 -> http://pgp.escomposlinux.org/ [-- Attachment #1.2: fix_idecd_seek_timeout_macro.patch --] [-- Type: text/x-patch, Size: 485 bytes --] --- linux-2.6.0-orig/drivers/ide/ide-cd.c 2003-12-28 04:26:31.000000000 +0100 +++ linux-2.6/drivers/ide/ide-cd.c 2003-12-28 03:54:18.000000000 +0100 @@ -1318,7 +1318,7 @@ #define IDECD_SEEK_THRESHOLD (1000) /* 1000 blocks */ #define IDECD_SEEK_TIMER (5 * WAIT_MIN_SLEEP) /* 100 ms */ -#define IDECD_SEEK_TIMEOUT (2 * WAIT_CMD) /* 20 sec */ +#define IDECD_SEEK_TIMEOUT (2 * ATAPI_WAIT_PC) /* 20 sec */ static ide_startstop_t cdrom_seek_intr (ide_drive_t *drive) { [-- Attachment #2: Esta parte del mensaje está firmada digitalmente --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-23 5:11 2.6.0-mm1 Andrew Morton ` (8 preceding siblings ...) 2003-12-28 3:43 ` [PATCH] 2.6.0-mm1 Ramón Rey Vicente @ 2003-12-28 10:58 ` Christoph Hellwig 2003-12-28 19:49 ` 2.6.0-mm1 Andrew Morton 9 siblings, 1 reply; 16+ messages in thread From: Christoph Hellwig @ 2003-12-28 10:58 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote: > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2.6.0-mm1/ > > > Quite a lot of new material here. It would be appreciated if people who have > significant patches in -mm could retest please. BTW, could you please drop Al's RD* patches? They change the entry points for block drivers and thus create some hassle for people hacking on out of tree block drivers, and obviously can't go into mainline as is. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-28 10:58 ` 2.6.0-mm1 Christoph Hellwig @ 2003-12-28 19:49 ` Andrew Morton 2003-12-28 19:52 ` 2.6.0-mm1 Christoph Hellwig 0 siblings, 1 reply; 16+ messages in thread From: Andrew Morton @ 2003-12-28 19:49 UTC (permalink / raw) To: Christoph Hellwig; +Cc: linux-kernel, linux-mm, viro Christoph Hellwig <hch@infradead.org> wrote: > > On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote: > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.0-test11/2.6.0-mm1/ > > > > > > Quite a lot of new material here. It would be appreciated if people who have > > significant patches in -mm could retest please. > > BTW, could you please drop Al's RD* patches? They change the entry points > for block drivers and thus create some hassle for people hacking on out > of tree block drivers, and obviously can't go into mainline as is. Have you discussed this with him? I was actually hoping to get those patches merged up soon. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: 2.6.0-mm1 2003-12-28 19:49 ` 2.6.0-mm1 Andrew Morton @ 2003-12-28 19:52 ` Christoph Hellwig 0 siblings, 0 replies; 16+ messages in thread From: Christoph Hellwig @ 2003-12-28 19:52 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm, viro On Sun, Dec 28, 2003 at 11:49:06AM -0800, Andrew Morton wrote: > Have you discussed this with him? I was actually hoping to get those patches > merged up soon. A while ago he said he's gonna redo those parts that don't change the API for 2.6 and will postpone the rest to 2.7. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a> ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2003-12-28 19:52 UTC | newest] Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-12-23 5:11 2.6.0-mm1 Andrew Morton 2003-12-23 5:27 ` 2.6.0-mm1 Valdis.Kletnieks 2003-12-23 5:28 ` 2.6.0-mm1 Marcos D. Marado Torres 2003-12-23 5:28 ` 2.6.0-mm1 Andrew Morton 2003-12-23 5:40 ` 2.6.0-mm1 Stan Bubrouski 2003-12-23 7:30 ` 2.6.0-mm1 Martin J. Bligh 2003-12-23 17:29 ` 2.6.0-mm1 Tom Rini 2003-12-23 17:31 ` 2.6.0-mm1 Tom Rini 2003-12-23 21:08 ` 2.6.0-mm1 viro 2003-12-24 13:09 ` 2.6.0-mm1 William Lee Irwin III 2003-12-24 14:26 ` 2.6.0-mm1 William Lee Irwin III 2003-12-24 15:39 ` 2.6.0-mm1 Gene Heskett 2003-12-28 3:43 ` [PATCH] 2.6.0-mm1 Ramón Rey Vicente 2003-12-28 10:58 ` 2.6.0-mm1 Christoph Hellwig 2003-12-28 19:49 ` 2.6.0-mm1 Andrew Morton 2003-12-28 19:52 ` 2.6.0-mm1 Christoph Hellwig
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox