linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* 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