* 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