public inbox for linux-kernel@vger.kernel.org
 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; 42+ 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




^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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] 42+ 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; 42+ 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-----


^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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/

^ permalink raw reply	[flat|nested] 42+ 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
  2003-12-23  7:57     ` 2.6.0-mm1 Andrew Walrond
  0 siblings, 1 reply; 42+ messages in thread
From: Stan Bubrouski @ 2003-12-23  5:40 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel@vger.kernel.org, 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


^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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.


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23  5:40   ` 2.6.0-mm1 Stan Bubrouski
@ 2003-12-23  7:57     ` Andrew Walrond
  2003-12-23  8:20       ` compiling modules after 2.4.* --> 2.6.0 upgrade Ben Srour
  0 siblings, 1 reply; 42+ messages in thread
From: Andrew Walrond @ 2003-12-23  7:57 UTC (permalink / raw)
  To: linux-kernel

On Tuesday 23 Dec 2003 5:40 am, Stan Bubrouski wrote:
>
> Why do I not see the original message Subject: 2.6.0-mm1
> ???
>
> Was there ever an original message to this thread?
>

FYI I recieved the original ok.


^ permalink raw reply	[flat|nested] 42+ messages in thread

* compiling modules after 2.4.* --> 2.6.0 upgrade
  2003-12-23  7:57     ` 2.6.0-mm1 Andrew Walrond
@ 2003-12-23  8:20       ` Ben Srour
  2003-12-23 16:25         ` Erik Mouw
                           ` (2 more replies)
  0 siblings, 3 replies; 42+ messages in thread
From: Ben Srour @ 2003-12-23  8:20 UTC (permalink / raw)
  To: linux-kernel

Hello,

I'm attempting to port a module I wrote for the 2.4 series to 2.6 but I
get the following error when I try and insmod:

	root@dimension# /usr/sbin/insmod gpstest.o
	insmod: error inserting 'gpstest.o': -1 Invalid module format
	root@dimension#

(/sbin/insmod returns:
	insmod: QM_MODULES: Function not implemented
but isnt that a remnant of the 2.4 series module-init-tools?)

/usr/sbin/insmod -v
module-init-tools version 3.0-pre1

/sbin/insmod -V
insmod version 2.4.18
....


I'm guessing this is happening because the module it seems to be compiling
for is 2.4:
	root@dimension# strings gpstest.o
	kernel_version=2.4.9-31
	....
	root@dimension#

I'm using module-init-tools-3.0-pre1, gcc3.0.4, kernel2.6.0


Any help/direction would be appreciated!
Thanks
Ben

-- 
Ben Srour
srour@cs.wisc.edu



^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
       [not found] <15N7L-7y2-3@gated-at.bofh.it>
@ 2003-12-23 15:41 ` Pascal Schmidt
  2003-12-23 16:32   ` 2.6.0-mm1 Jens Axboe
  0 siblings, 1 reply; 42+ messages in thread
From: Pascal Schmidt @ 2003-12-23 15:41 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

On Tue, 23 Dec 2003 06:20:14 +0100, you wrote in linux.kernel:

> +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.

Since the atapi-mo patch is mine, is there something I need to do?

-- 
Ciao,
Pascal

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: compiling modules after 2.4.* --> 2.6.0 upgrade
  2003-12-23  8:20       ` compiling modules after 2.4.* --> 2.6.0 upgrade Ben Srour
@ 2003-12-23 16:25         ` Erik Mouw
  2003-12-23 16:27         ` Jonathan Corbet
  2003-12-23 16:39         ` Randy.Dunlap
  2 siblings, 0 replies; 42+ messages in thread
From: Erik Mouw @ 2003-12-23 16:25 UTC (permalink / raw)
  To: Ben Srour; +Cc: linux-kernel

On Tue, Dec 23, 2003 at 02:20:06AM -0600, Ben Srour wrote:
> I'm attempting to port a module I wrote for the 2.4 series to 2.6 but I
> get the following error when I try and insmod:
> 
> 	root@dimension# /usr/sbin/insmod gpstest.o
> 	insmod: error inserting 'gpstest.o': -1 Invalid module format
> 	root@dimension#

You want the .ko file, not the .o file. See also:

- http://www.linux.org.uk/~davej/docs/post-halloween-2.6.txt
- http://lwn.net/Articles/driver-porting/


Erik

-- 
+-- Erik Mouw -- www.harddisk-recovery.com -- +31 70 370 12 90 --
| Lab address: Delftechpark 26, 2628 XH, Delft, The Netherlands

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: compiling modules after 2.4.* --> 2.6.0 upgrade
  2003-12-23  8:20       ` compiling modules after 2.4.* --> 2.6.0 upgrade Ben Srour
  2003-12-23 16:25         ` Erik Mouw
@ 2003-12-23 16:27         ` Jonathan Corbet
  2003-12-23 16:39         ` Randy.Dunlap
  2 siblings, 0 replies; 42+ messages in thread
From: Jonathan Corbet @ 2003-12-23 16:27 UTC (permalink / raw)
  To: Ben Srour; +Cc: linux-kernel

> I'm attempting to port a module I wrote for the 2.4 series to 2.6 but I
> get the following error when I try and insmod:
> 
> 	root@dimension# /usr/sbin/insmod gpstest.o
> 	insmod: error inserting 'gpstest.o': -1 Invalid module format
> 	root@dimension#

Try inserting gpstest.ko instead.

Don't have a gpstest.ko?  Head off to 

	http://lwn.net/Articles/driver-porting/

to see how to make one.

jon

Jonathan Corbet
Executive editor, LWN.net
corbet@lwn.net

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 15:41 ` 2.6.0-mm1 Pascal Schmidt
@ 2003-12-23 16:32   ` Jens Axboe
  2003-12-23 16:46     ` 2.6.0-mm1 Pascal Schmidt
  0 siblings, 1 reply; 42+ messages in thread
From: Jens Axboe @ 2003-12-23 16:32 UTC (permalink / raw)
  To: Pascal Schmidt, Andrew Morton; +Cc: linux-kernel

On Tue, Dec 23 2003, Pascal Schmidt wrote:
> On Tue, 23 Dec 2003 06:20:14 +0100, you wrote in linux.kernel:
> 
> > +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.
> 
> Since the atapi-mo patch is mine, is there something I need to do?

Nah don't worry about it, Andrew and I just agreed that I'd merge the
remaining changes once 2.6.0-mm1 was up. Basically, MO needs to set
_RAM capability so we can kill the various MO checks.

Jens


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
@ 2003-12-23 16:34 Pascal Schmidt
  2003-12-23 16:39 ` 2.6.0-mm1 Jens Axboe
  0 siblings, 1 reply; 42+ messages in thread
From: Pascal Schmidt @ 2003-12-23 16:34 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel


On Tue, 23 Dec 2003 06:20:14 +0100, you wrote in linux.kernel:

>> +atapi-mo-support.patch
>> 
>>  Fix support for ATAPI MO drives (needs updating to reflect the changes 
>>  in mt-ranier-support.patch).
> Since the atapi-mo patch is mine, is there something I need to do?

I figured it out. ;) This small additional patch on top of mm1 is
needed to get MO write support to work.


--- linux-2.6.0-mm1/drivers/cdrom/cdrom.c	Tue Dec 23 17:26:27 2003
+++ linux-2.6.0-mm1-mo/drivers/cdrom/cdrom.c	Tue Dec 23 17:11:50 2003
@@ -708,6 +708,8 @@ static int cdrom_open_write(struct cdrom
 		ret = cdrom_mrw_open_write(cdi);
 	else if (CDROM_CAN(CDC_DVD_RAM))
 		ret = cdrom_dvdram_open_write(cdi);
+	else if (CDROM_CAN(CDC_MO_DRIVE))
+		ret = 0;
 
 	return ret;
 }


-- 
Ciao,
Pascal


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 16:34 2.6.0-mm1 Pascal Schmidt
@ 2003-12-23 16:39 ` Jens Axboe
  2003-12-23 16:54   ` 2.6.0-mm1 Jens Axboe
  0 siblings, 1 reply; 42+ messages in thread
From: Jens Axboe @ 2003-12-23 16:39 UTC (permalink / raw)
  To: Pascal Schmidt, Andrew Morton; +Cc: linux-kernel

On Tue, Dec 23 2003, Pascal Schmidt wrote:
> 
> On Tue, 23 Dec 2003 06:20:14 +0100, you wrote in linux.kernel:
> 
> >> +atapi-mo-support.patch
> >> 
> >>  Fix support for ATAPI MO drives (needs updating to reflect the changes 
> >>  in mt-ranier-support.patch).
> > Since the atapi-mo patch is mine, is there something I need to do?
> 
> I figured it out. ;) This small additional patch on top of mm1 is
> needed to get MO write support to work.
> 
> 
> --- linux-2.6.0-mm1/drivers/cdrom/cdrom.c	Tue Dec 23 17:26:27 2003
> +++ linux-2.6.0-mm1-mo/drivers/cdrom/cdrom.c	Tue Dec 23 17:11:50 2003
> @@ -708,6 +708,8 @@ static int cdrom_open_write(struct cdrom
>  		ret = cdrom_mrw_open_write(cdi);
>  	else if (CDROM_CAN(CDC_DVD_RAM))
>  		ret = cdrom_dvdram_open_write(cdi);
> +	else if (CDROM_CAN(CDC_MO_DRIVE))
> +		ret = 0;

Still needs cleanups, as mentioned in the other mail. Let me dig out
the laptop and fix it up for posting.

Jens


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: compiling modules after 2.4.* --> 2.6.0 upgrade
  2003-12-23  8:20       ` compiling modules after 2.4.* --> 2.6.0 upgrade Ben Srour
  2003-12-23 16:25         ` Erik Mouw
  2003-12-23 16:27         ` Jonathan Corbet
@ 2003-12-23 16:39         ` Randy.Dunlap
  2 siblings, 0 replies; 42+ messages in thread
From: Randy.Dunlap @ 2003-12-23 16:39 UTC (permalink / raw)
  To: Ben Srour; +Cc: linux-kernel

On Tue, 23 Dec 2003 02:20:06 -0600 (CST) Ben Srour <srour@cs.wisc.edu> wrote:

| Hello,
| 
| I'm attempting to port a module I wrote for the 2.4 series to 2.6 but I
| get the following error when I try and insmod:
| 
| 	root@dimension# /usr/sbin/insmod gpstest.o
| 	insmod: error inserting 'gpstest.o': -1 Invalid module format
| 	root@dimension#

In 2.6.x, modules are named *.ko, and you 'insmod|modprobe *.ko'.

To have *.ko built correctly, read and use
./Documentation/kbuild/{modules.txt,makefiles.txt}.

Here is a working trivial makefile for out-of-tree simple modules:

# makefile for oops_test/dump*.c
# Randy Dunlap, 2003-03-12
# usage:
# cd /path/to/kernel/source && make SUBDIRS=/path/to/source/oops_test/ modules

obj-m := dump_test.o

# end;


| (/sbin/insmod returns:
| 	insmod: QM_MODULES: Function not implemented
| but isnt that a remnant of the 2.4 series module-init-tools?)

Yes.

| /usr/sbin/insmod -v
| module-init-tools version 3.0-pre1
| 
| /sbin/insmod -V
| insmod version 2.4.18
| ....
| 
| 
| I'm guessing this is happening because the module it seems to be compiling
| for is 2.4:
| 	root@dimension# strings gpstest.o
| 	kernel_version=2.4.9-31
| 	....
| 	root@dimension#
| 
| I'm using module-init-tools-3.0-pre1, gcc3.0.4, kernel2.6.0

Make sure that the module-init-tools binaries are in $PATH
for user=root (and before the older ones if both are there).

--
~Randy
MOTD:  Always include version info.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 16:32   ` 2.6.0-mm1 Jens Axboe
@ 2003-12-23 16:46     ` Pascal Schmidt
  2003-12-23 16:56       ` 2.6.0-mm1 Jens Axboe
  0 siblings, 1 reply; 42+ messages in thread
From: Pascal Schmidt @ 2003-12-23 16:46 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel

On Tue, 23 Dec 2003, Jens Axboe wrote:

>> Since the atapi-mo patch is mine, is there something I need to do?
> Nah don't worry about it, Andrew and I just agreed that I'd merge the
> remaining changes once 2.6.0-mm1 was up. Basically, MO needs to set
> _RAM capability so we can kill the various MO checks.

Please remember that you can't send the MO drive any DVD-RAM specific
commands and expect it to work. The special-casing in the probe routine
in ide-cd is there for a reason, and I don't think calling
cdrom_dvdram_open_write would be a good idea, either. I haven't actually
looked at that routine, but if it sends anything to the drive, my MO
drive won't like it one bit. It will at best error out and then
cdrom_dvdram_open_write will error out, too, disallowing opening for
write, right?

-- 
Ciao,
Pascal


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 16:39 ` 2.6.0-mm1 Jens Axboe
@ 2003-12-23 16:54   ` Jens Axboe
  2003-12-23 16:58     ` 2.6.0-mm1 Jens Axboe
  0 siblings, 1 reply; 42+ messages in thread
From: Jens Axboe @ 2003-12-23 16:54 UTC (permalink / raw)
  To: Pascal Schmidt, Andrew Morton; +Cc: linux-kernel

On Tue, Dec 23 2003, Jens Axboe wrote:
> On Tue, Dec 23 2003, Pascal Schmidt wrote:
> > 
> > On Tue, 23 Dec 2003 06:20:14 +0100, you wrote in linux.kernel:
> > 
> > >> +atapi-mo-support.patch
> > >> 
> > >>  Fix support for ATAPI MO drives (needs updating to reflect the changes 
> > >>  in mt-ranier-support.patch).
> > > Since the atapi-mo patch is mine, is there something I need to do?
> > 
> > I figured it out. ;) This small additional patch on top of mm1 is
> > needed to get MO write support to work.
> > 
> > 
> > --- linux-2.6.0-mm1/drivers/cdrom/cdrom.c	Tue Dec 23 17:26:27 2003
> > +++ linux-2.6.0-mm1-mo/drivers/cdrom/cdrom.c	Tue Dec 23 17:11:50 2003
> > @@ -708,6 +708,8 @@ static int cdrom_open_write(struct cdrom
> >  		ret = cdrom_mrw_open_write(cdi);
> >  	else if (CDROM_CAN(CDC_DVD_RAM))
> >  		ret = cdrom_dvdram_open_write(cdi);
> > +	else if (CDROM_CAN(CDC_MO_DRIVE))
> > +		ret = 0;
> 
> Still needs cleanups, as mentioned in the other mail. Let me dig out
> the laptop and fix it up for posting.

A general update patch against 2.6.0-mm1, Andrew can you apply this
for now? Looks like there was a merge error with cdi->use_count as well
in mm1.

Pascal, if you could take care of the mode sense check for RO media (see
comment) that would be perfect.

diff -urp linux-2.6.0-mm1.virgin/drivers/cdrom/cdrom.c linux-2.6.0-mm1/drivers/cdrom/cdrom.c
--- linux-2.6.0-mm1.virgin/drivers/cdrom/cdrom.c	2003-12-23 17:44:54.000000000 +0100
+++ linux-2.6.0-mm1/drivers/cdrom/cdrom.c	2003-12-23 17:50:56.320349076 +0100
@@ -708,6 +708,11 @@ static int cdrom_open_write(struct cdrom
 		ret = cdrom_mrw_open_write(cdi);
 	else if (CDROM_CAN(CDC_DVD_RAM))
 		ret = cdrom_dvdram_open_write(cdi);
+	/*
+	 * needs to really check whether media is writeable
+	 */
+	else if (CDROM_CAN(CDC_MO_DRIVE))
+		ret = 0;
 
 	return ret;
 }
@@ -737,7 +742,7 @@ int cdrom_open(struct cdrom_device_info 
 	cdi->use_count++;
 	ret = -EROFS;
 	if (fp->f_mode & FMODE_WRITE) {
-		if (!(CDROM_CAN(CDC_RAM) || CDROM_CAN(CDC_MO_DRIVE)))
+		if (!CDROM_CAN(CDC_RAM))
 			goto out;
 		if (cdrom_open_write(cdi))
 			goto out;
@@ -750,8 +755,6 @@ int cdrom_open(struct cdrom_device_info 
 	else
 		ret = open_for_data(cdi);
 
-	if (!ret) cdi->use_count++;
-
 	cdinfo(CD_OPEN, "Use count for \"/dev/%s\" now %d\n", cdi->name, cdi->use_count);
 	/* Do this on open.  Don't wait for mount, because they might
 	    not be mounting, but opening with O_NONBLOCK */
diff -urp linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.c linux-2.6.0-mm1/drivers/ide/ide-cd.c
--- linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.c	2003-12-23 17:44:54.000000000 +0100
+++ linux-2.6.0-mm1/drivers/ide/ide-cd.c	2003-12-23 17:49:12.404670677 +0100
@@ -790,8 +790,8 @@ static int cdrom_decode_status(ide_drive
 				 * devices will return this error while flushing
 				 * data from cache */
 				if (!rq->errors)
-					info->write_timeout = jiffies + ATAPI_WAIT_BUSY;
-				rq->errors = 1;
+					info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
+				++rq->errors;
 				if (time_after(jiffies, info->write_timeout))
 					do_end_request = 1;
 				else {
@@ -2950,6 +2950,7 @@ int ide_cdrom_probe_capabilities (ide_dr
 
 	if (drive->media == ide_optical) {
 		CDROM_CONFIG_FLAGS(drive)->mo_drive = 1;
+		CDROM_CONFIG_FLAGS(drive)->ram = 1;
 		printk("%s: ATAPI magneto-optical drive\n", drive->name);
 		return nslots;
 	}
@@ -3281,9 +3282,7 @@ int ide_cdrom_setup (ide_drive_t *drive)
 	/*
 	 * set correct block size and read-only for non-ram media
 	 */
-	set_disk_ro(drive->disk,
-		!(CDROM_CONFIG_FLAGS(drive)->ram ||
-			CDROM_CONFIG_FLAGS(drive)->mo_drive));
+	set_disk_ro(drive->disk, !CDROM_CONFIG_FLAGS(drive)->ram);
 	blk_queue_hardsect_size(drive->queue, CD_FRAMESIZE);
 
 #if 0
diff -urp linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.h linux-2.6.0-mm1/drivers/ide/ide-cd.h
--- linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.h	2003-12-23 17:44:54.000000000 +0100
+++ linux-2.6.0-mm1/drivers/ide/ide-cd.h	2003-12-23 17:48:19.939386898 +0100
@@ -39,7 +39,7 @@
  * typical timeout for packet command
  */
 #define ATAPI_WAIT_PC		(60 * HZ)
-#define ATAPI_WAIT_BUSY		(5 * HZ)
+#define ATAPI_WAIT_WRITE_BUSY	(10 * HZ)
 
 /************************************************************************/
 

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 16:46     ` 2.6.0-mm1 Pascal Schmidt
@ 2003-12-23 16:56       ` Jens Axboe
  0 siblings, 0 replies; 42+ messages in thread
From: Jens Axboe @ 2003-12-23 16:56 UTC (permalink / raw)
  To: Pascal Schmidt; +Cc: linux-kernel

On Tue, Dec 23 2003, Pascal Schmidt wrote:
> On Tue, 23 Dec 2003, Jens Axboe wrote:
> 
> >> Since the atapi-mo patch is mine, is there something I need to do?
> > Nah don't worry about it, Andrew and I just agreed that I'd merge the
> > remaining changes once 2.6.0-mm1 was up. Basically, MO needs to set
> > _RAM capability so we can kill the various MO checks.
> 
> Please remember that you can't send the MO drive any DVD-RAM specific
> commands and expect it to work. The special-casing in the probe routine
> in ide-cd is there for a reason, and I don't think calling
> cdrom_dvdram_open_write would be a good idea, either. I haven't actually
> looked at that routine, but if it sends anything to the drive, my MO
> drive won't like it one bit. It will at best error out and then
> cdrom_dvdram_open_write will error out, too, disallowing opening for
> write, right?

The changes are nothing like that. Don't confuse CDC_DVD_RAM and CDC_RAM
- the latter just means that it is ok to open this media for random
writes so we don't have to check for three types of different devices.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 16:54   ` 2.6.0-mm1 Jens Axboe
@ 2003-12-23 16:58     ` Jens Axboe
  2003-12-23 17:29       ` 2.6.0-mm1 Pascal Schmidt
  0 siblings, 1 reply; 42+ messages in thread
From: Jens Axboe @ 2003-12-23 16:58 UTC (permalink / raw)
  To: Pascal Schmidt, Andrew Morton; +Cc: linux-kernel

On Tue, Dec 23 2003, Jens Axboe wrote:
> -				rq->errors = 1;
> +					info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
> +				++rq->errors;

Didn't mean to change the = 1, here's an updated one.

diff -urp linux-2.6.0-mm1.virgin/drivers/cdrom/cdrom.c linux-2.6.0-mm1/drivers/cdrom/cdrom.c
--- linux-2.6.0-mm1.virgin/drivers/cdrom/cdrom.c	2003-12-23 17:44:54.000000000 +0100
+++ linux-2.6.0-mm1/drivers/cdrom/cdrom.c	2003-12-23 17:50:56.320349076 +0100
@@ -497,7 +497,7 @@ int cdrom_mrw_probe_pc(struct cdrom_devi
 	printk(KERN_ERR "cdrom: %s: unknown mrw mode page\n", cdi->name);
 	return 1;
 }
-
+	
 int cdrom_is_mrw(struct cdrom_device_info *cdi, int *write)
 {
 	struct cdrom_generic_command cgc;
@@ -708,6 +708,11 @@ static int cdrom_open_write(struct cdrom
 		ret = cdrom_mrw_open_write(cdi);
 	else if (CDROM_CAN(CDC_DVD_RAM))
 		ret = cdrom_dvdram_open_write(cdi);
+	/*
+	 * needs to really check whether media is writeable
+	 */
+	else if (CDROM_CAN(CDC_MO_DRIVE))
+		ret = 0;
 
 	return ret;
 }
@@ -737,7 +742,7 @@ int cdrom_open(struct cdrom_device_info 
 	cdi->use_count++;
 	ret = -EROFS;
 	if (fp->f_mode & FMODE_WRITE) {
-		if (!(CDROM_CAN(CDC_RAM) || CDROM_CAN(CDC_MO_DRIVE)))
+		if (!CDROM_CAN(CDC_RAM))
 			goto out;
 		if (cdrom_open_write(cdi))
 			goto out;
@@ -750,8 +755,6 @@ int cdrom_open(struct cdrom_device_info 
 	else
 		ret = open_for_data(cdi);
 
-	if (!ret) cdi->use_count++;
-
 	cdinfo(CD_OPEN, "Use count for \"/dev/%s\" now %d\n", cdi->name, cdi->use_count);
 	/* Do this on open.  Don't wait for mount, because they might
 	    not be mounting, but opening with O_NONBLOCK */
diff -urp linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.c linux-2.6.0-mm1/drivers/ide/ide-cd.c
--- linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.c	2003-12-23 17:44:54.000000000 +0100
+++ linux-2.6.0-mm1/drivers/ide/ide-cd.c	2003-12-23 17:57:26.326859551 +0100
@@ -790,7 +790,7 @@ static int cdrom_decode_status(ide_drive
 				 * devices will return this error while flushing
 				 * data from cache */
 				if (!rq->errors)
-					info->write_timeout = jiffies + ATAPI_WAIT_BUSY;
+					info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
 				rq->errors = 1;
 				if (time_after(jiffies, info->write_timeout))
 					do_end_request = 1;
@@ -2950,6 +2950,7 @@ int ide_cdrom_probe_capabilities (ide_dr
 
 	if (drive->media == ide_optical) {
 		CDROM_CONFIG_FLAGS(drive)->mo_drive = 1;
+		CDROM_CONFIG_FLAGS(drive)->ram = 1;
 		printk("%s: ATAPI magneto-optical drive\n", drive->name);
 		return nslots;
 	}
@@ -3281,9 +3282,7 @@ int ide_cdrom_setup (ide_drive_t *drive)
 	/*
 	 * set correct block size and read-only for non-ram media
 	 */
-	set_disk_ro(drive->disk,
-		!(CDROM_CONFIG_FLAGS(drive)->ram ||
-			CDROM_CONFIG_FLAGS(drive)->mo_drive));
+	set_disk_ro(drive->disk, !CDROM_CONFIG_FLAGS(drive)->ram);
 	blk_queue_hardsect_size(drive->queue, CD_FRAMESIZE);
 
 #if 0
diff -urp linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.h linux-2.6.0-mm1/drivers/ide/ide-cd.h
--- linux-2.6.0-mm1.virgin/drivers/ide/ide-cd.h	2003-12-23 17:44:54.000000000 +0100
+++ linux-2.6.0-mm1/drivers/ide/ide-cd.h	2003-12-23 17:48:19.939386898 +0100
@@ -39,7 +39,7 @@
  * typical timeout for packet command
  */
 #define ATAPI_WAIT_PC		(60 * HZ)
-#define ATAPI_WAIT_BUSY		(5 * HZ)
+#define ATAPI_WAIT_WRITE_BUSY	(10 * HZ)
 
 /************************************************************************/
 

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
       [not found] <20031223170633.GG1601@suse.de>
@ 2003-12-23 17:15 ` Pascal Schmidt
  0 siblings, 0 replies; 42+ messages in thread
From: Pascal Schmidt @ 2003-12-23 17:15 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel

On Tue, 23 Dec 2003, Jens Axboe wrote:

> > > Pascal, if you could take care of the mode sense check for RO media (see
> > > comment) that would be perfect.
[...]
> Alright, I'll cook it up then.

Much appreciated.

> Yes it will, I don't want to allow write opens on RO media though. It's
> a lot less confusing that way.

Agreed, I'll just have to leave it to you since I don't know how to
implement it.

-- 
Ciao,
Pascal


^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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/

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 16:58     ` 2.6.0-mm1 Jens Axboe
@ 2003-12-23 17:29       ` Pascal Schmidt
  2003-12-23 18:49         ` 2.6.0-mm1 Jens Axboe
  0 siblings, 1 reply; 42+ messages in thread
From: Pascal Schmidt @ 2003-12-23 17:29 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel

On Tue, 23 Dec 2003, Jens Axboe wrote:

> On Tue, Dec 23 2003, Jens Axboe wrote:
> > -				rq->errors = 1;
> > +					info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
> > +				++rq->errors;
> 
> Didn't mean to change the = 1, here's an updated one.

Applied, compiled, and tested. MO drive workes just fine with the
updated patch applied.

-- 
Ciao,
Pascal


^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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/

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-23 17:29       ` 2.6.0-mm1 Pascal Schmidt
@ 2003-12-23 18:49         ` Jens Axboe
  0 siblings, 0 replies; 42+ messages in thread
From: Jens Axboe @ 2003-12-23 18:49 UTC (permalink / raw)
  To: Pascal Schmidt; +Cc: linux-kernel

On Tue, Dec 23 2003, Pascal Schmidt wrote:
> On Tue, 23 Dec 2003, Jens Axboe wrote:
> 
> > On Tue, Dec 23 2003, Jens Axboe wrote:
> > > -				rq->errors = 1;
> > > +					info->write_timeout = jiffies + ATAPI_WAIT_WRITE_BUSY;
> > > +				++rq->errors;
> > 
> > Didn't mean to change the = 1, here's an updated one.
> 
> Applied, compiled, and tested. MO drive workes just fine with the
> updated patch applied.

Great, thanks for testing.

Jens


^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
@ 2003-12-24  9:59 GCS
  2003-12-24 11:32 ` 2.6.0-mm1 Andrew Morton
  2003-12-24 14:38 ` 2.6.0-mm1 GCS
  0 siblings, 2 replies; 42+ messages in thread
From: GCS @ 2003-12-24  9:59 UTC (permalink / raw)
  To: linux-kernel

Hi,

On Tue, Dec 23, 2003 at 05:11:31AM +0200, Andrew Morton <akpm@osdl.org> wrote:

> It would be appreciated if people who have
> significant patches in -mm could retest please.
 It seems I can write CDs on my laptop now. AFAICR I was last trying it on
test8, but it was the same: if the image is over ~400Mb, the machine
freezes hard. If it's shorter, then it's ok, but still some lock or sth
is not unlocked, as the CPU is used more and more about five secs by one
or two percent. Sooner or later it's crashed as well, but I could
restart the machine before that happened. Rebooting to 2.4.2x and
writing CDs there was working all the time.
 So I do not know if it's fixed since test8, or in 2.6.0-mm1, but I am
happy with it. Also, I have two problems with 2.6.0-mm1:
- I can not deselect CONFIG_SCSI, only module or built-in available.
  Maybe something is depend on it, but could not figure out what (no
  CONFIG_BLK_DEV_IDESCSI, nothing is selected under CONFIG_SCSI).
- I have a synaptics touchpad, which is detected correctly, but only
  works if I set psmouse_noext=1. Under vanilla 2.6.0 it still works this
  way, but with 2.6.0-mm1 it works only on the console, but not under
  XFree86. Strange, as gpm interprets the input and pipes thru gpmdata
  to XFree86 4.3.0. Any idea what broke this configuration?

Thanks,
GCS

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24  9:59 2.6.0-mm1 GCS
@ 2003-12-24 11:32 ` Andrew Morton
  2003-12-24 11:53   ` 2.6.0-mm1 GCS
                     ` (2 more replies)
  2003-12-24 14:38 ` 2.6.0-mm1 GCS
  1 sibling, 3 replies; 42+ messages in thread
From: Andrew Morton @ 2003-12-24 11:32 UTC (permalink / raw)
  To: GCS; +Cc: linux-kernel, Peter Osterlund, Dmitry Torokhov

GCS <gcs@lsc.hu> wrote:
>
> Hi,
> 
> On Tue, Dec 23, 2003 at 05:11:31AM +0200, Andrew Morton <akpm@osdl.org> wrote:
> 
> > It would be appreciated if people who have
> > significant patches in -mm could retest please.
>  It seems I can write CDs on my laptop now. AFAICR I was last trying it on
> test8, but it was the same: if the image is over ~400Mb, the machine
> freezes hard. If it's shorter, then it's ok, but still some lock or sth
> is not unlocked, as the CPU is used more and more about five secs by one
> or two percent. Sooner or later it's crashed as well, but I could
> restart the machine before that happened. Rebooting to 2.4.2x and
> writing CDs there was working all the time.
>  So I do not know if it's fixed since test8, or in 2.6.0-mm1, but I am
> happy with it. Also, I have two problems with 2.6.0-mm1:

> - I can not deselect CONFIG_SCSI, only module or built-in available.
>   Maybe something is depend on it, but could not figure out what (no
>   CONFIG_BLK_DEV_IDESCSI, nothing is selected under CONFIG_SCSI).

Yes, this part of the config system is hard.  It always has been.  It's
similar to "wtf do I have to enable to make the <foo> menu appear.

I bit of grepping tells us that CONFIG_USB_STORAGE turns on CONFIG_SCSI.

> - I have a synaptics touchpad, which is detected correctly, but only
>   works if I set psmouse_noext=1. Under vanilla 2.6.0 it still works this
>   way, but with 2.6.0-mm1 it works only on the console, but not under
>   XFree86. Strange, as gpm interprets the input and pipes thru gpmdata
>   to XFree86 4.3.0. Any idea what broke this configuration?

Peter or Dmitry may be able to tell us.

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24 11:32 ` 2.6.0-mm1 Andrew Morton
@ 2003-12-24 11:53   ` GCS
  2003-12-24 12:23     ` 2.6.0-mm1 GCS
  2003-12-24 12:47   ` 2.6.0-mm1 Thomas Molina
  2003-12-25  9:11   ` 2.6.0-mm1 Dmitry Torokhov
  2 siblings, 1 reply; 42+ messages in thread
From: GCS @ 2003-12-24 11:53 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, Peter Osterlund, Dmitry Torokhov

On Wed, Dec 24, 2003 at 03:32:00AM -0800, Andrew Morton <akpm@osdl.org> wrote:
> I bit of grepping tells us that CONFIG_USB_STORAGE turns on CONFIG_SCSI.
 Thanks! Never throught. I could come up with this:
find . -name Kconfig| xargs grep --colour 'depends.* SCSI'
(Execute in the kernel tree, and replace SCSI with whatever you like;
may help others with similar questions).

> Peter or Dmitry may be able to tell us.
 IMHO it's either:
serio-04-synaptics-cleanup.patch
serio-06-synaptics-use-reconnect.patch
synaptics-powerpro-fix.patch
serio-pm-fix.patch
input-02-add-psmouse_proto.patch (?)
input-05-psmouse-fixes.patch
input-07-remove-synaptics-config-option.patch (maybe?)
input-08-synaptics-protocol-discovery.patch

Thus meanwhile I try to revert them. Anyway, as -mm1 is already bigger,
is it possible that you release 2.6.1 in this year with some/most of the
fixes in mm1?

GCS

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24 11:53   ` 2.6.0-mm1 GCS
@ 2003-12-24 12:23     ` GCS
  2003-12-24 15:17       ` 2.6.0-mm1 Dmitry Torokhov
  0 siblings, 1 reply; 42+ messages in thread
From: GCS @ 2003-12-24 12:23 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, Peter Osterlund, Dmitry Torokhov

On Wed, Dec 24, 2003 at 12:53:42PM +0100, GCS <gcs@lsc.hu> wrote:
> input-02-add-psmouse_proto.patch (?)
 Just found out psmouse_noext is deprecated. I have specified
psmouse_proto then, but imps and exps (and bare too, but I have not
tested it, as reading the code it seems psmouse_noext falls back to
bare) are the same. On the console touchpad is working, under XFree86
4.3.0 is not. To be more specific, the buttons do work, but I can not
move the pointer at all. Well, first I thought the middle two buttons
are for scrolling, as they are placed (and IIRC, they do scroll under
m$ win), but the top button is like the left button and the bottom button
is for paste, ie middle button on three buttons mices.

GCS

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24 11:32 ` 2.6.0-mm1 Andrew Morton
  2003-12-24 11:53   ` 2.6.0-mm1 GCS
@ 2003-12-24 12:47   ` Thomas Molina
  2003-12-25  9:11   ` 2.6.0-mm1 Dmitry Torokhov
  2 siblings, 0 replies; 42+ messages in thread
From: Thomas Molina @ 2003-12-24 12:47 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Kernel Mailing List



On Wed, 24 Dec 2003, Andrew Morton wrote:

> > - I have a synaptics touchpad, which is detected correctly, but only
> >   works if I set psmouse_noext=1. Under vanilla 2.6.0 it still works this
> >   way, but with 2.6.0-mm1 it works only on the console, but not under
> >   XFree86. Strange, as gpm interprets the input and pipes thru gpmdata
> >   to XFree86 4.3.0. Any idea what broke this configuration?
> 
> Peter or Dmitry may be able to tell us.

On the other hand, the synaptics touchpad on my laptop works under 
2.6.0-mm1 without the need to use the above parameter.  I don't get the 
jitter I reported for vanilla 2.6.0 synaptics support, but I do get an 
occasional small mouse jump.  

Other than that, 2.6.0-mm1 appears to be working well on my Presario 
12XL325 laptop.

^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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)

^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24  9:59 2.6.0-mm1 GCS
  2003-12-24 11:32 ` 2.6.0-mm1 Andrew Morton
@ 2003-12-24 14:38 ` GCS
  1 sibling, 0 replies; 42+ messages in thread
From: GCS @ 2003-12-24 14:38 UTC (permalink / raw)
  To: linux-kernel; +Cc: Andrew Morton

On Wed, Dec 24, 2003 at 10:59:21AM +0100, GCS <gcs@lsc.hu> wrote:
> [...] but still some lock or sth
> is not unlocked, as the CPU is used more and more about five secs by one
> or two percent. Sooner or later it's crashed as well, but I could
> restart the machine before that happened.
 Update: I could trigger this bug in 2.6.0-mm1 as well with the Linux
port of Head over Heels (classic game from C64). The CPU was getting
more and more used, so the game slowed down. I could quit then from the
game and XFree86. I did an emergency sync, and it succeded. Issued halt,
but it stopped at init sending term to all processes, so I tried a hard
power off. I got an error, something about slab, maybe at line 168. It
was scrolled out too fast by the stack-trace, and at the end:
ACPI-0094: *** Error: Could not acquire interpreter mutex
Crashed there. :-(

GCS

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24 12:23     ` 2.6.0-mm1 GCS
@ 2003-12-24 15:17       ` Dmitry Torokhov
  2003-12-24 19:12         ` 2.6.0-mm1 GCS
  0 siblings, 1 reply; 42+ messages in thread
From: Dmitry Torokhov @ 2003-12-24 15:17 UTC (permalink / raw)
  To: GCS, Andrew Morton; +Cc: linux-kernel, Peter Osterlund

On Wednesday 24 December 2003 07:23 am, GCS wrote:
> On Wed, Dec 24, 2003 at 12:53:42PM +0100, GCS <gcs@lsc.hu> wrote:
> > input-02-add-psmouse_proto.patch (?)
>
>  Just found out psmouse_noext is deprecated. I have specified
> psmouse_proto then, but imps and exps (and bare too, but I have not
> tested it, as reading the code it seems psmouse_noext falls back to
> bare) are the same. On the console touchpad is working, under XFree86
> 4.3.0 is not. To be more specific, the buttons do work, but I can not
> move the pointer at all. Well, first I thought the middle two buttons
> are for scrolling, as they are placed (and IIRC, they do scroll under
> m$ win), but the top button is like the left button and the bottom
> button is for paste, ie middle button on three buttons mices.

May we see your dmegs, XF86Config and the parameters you are passing
to GPM please? Btw, what version of GPM are you using?

As far as reverting patches I would start with
input-08-synaptics-protocol-discovery.patch

Dmitry

^ permalink raw reply	[flat|nested] 42+ 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; 42+ 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.


^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24 15:17       ` 2.6.0-mm1 Dmitry Torokhov
@ 2003-12-24 19:12         ` GCS
  0 siblings, 0 replies; 42+ messages in thread
From: GCS @ 2003-12-24 19:12 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Andrew Morton, linux-kernel, Peter Osterlund

On Wed, Dec 24, 2003 at 10:17:43AM -0500, Dmitry Torokhov <dtor_core@ameritech.net> wrote:
> May we see your dmegs, XF86Config and the parameters you are passing
> to GPM please?
 Sure, sorry for not doing it earlier:
-- dmesg --
i8042.c: Detected active multiplexing controller, rev 1.1.
serio: i8042 AUX0 port at 0x60,0x64 irq 12
serio: i8042 AUX1 port at 0x60,0x64 irq 12
serio: i8042 AUX2 port at 0x60,0x64 irq 12
serio: i8042 AUX3 port at 0x60,0x64 irq 12
Synaptics Touchpad, model: 1
 Firmware: 5.6
 180 degree mounted touchpad
 Sensor: 18
 new absolute packet format
 Touchpad has extended capability bits
 -> four buttons
 -> multifinger detection
 -> palm detection
input: SynPS/2 Synaptics TouchPad on isa0060/serio4
serio: i8042 KBD port at 0x60,0x64 irq 1
input: AT Translated Set 2 keyboard on isa0060/serio0
-- dmesg --

-- XF86Config-4 --
Section "Module"
        Load    "GLcore"
        Load    "bitmap"
        Load    "dbe"
        Load    "ddc"
        Load    "dri"
        Load    "extmod"
        Load    "glx"
        Load    "int10"
        Load    "record"
        Load    "speedo"
        Load    "type1"
        Load    "vbe"
        Load    "xtt"
        Load    "synaptics"
EndSection

Section "InputDevice"
        Driver        "synaptics"
        Identifier    "Configured Mouse"
        Option        "Device"        "/dev/gpmdata"
        Option        "Protocol"      "auto-dev"
        Option        "LeftEdge"      "1900"
        Option        "RightEdge"     "5400"
        Option        "TopEdge"       "1900"
        Option        "BottomEdge"    "4000"
        Option        "FingerLow"     "25"
        Option        "FingerHigh"    "30"
        Option        "MaxTapTime"    "180"
        Option        "MaxTapMove"    "220"
        Option        "VertScrollDelta" "100"
        Option        "MinSpeed"      "0.02"
        Option        "MaxSpeed"      "0.18"
        Option        "AccelFactor" "0.0010"
        Option        "SHMConfig"     "on"
#       Option       "Repeater"      "/dev/ps2mouse"
EndSection
-- XF86Config-4 --

The Synaptics driver used is 0.12.2, compiled for myself, evdev is in
module, but ofcourse it's loaded before XFree86 starts. (I have stripped
down the files a bit, if you would like to see the whole files or other
parts, please ask - I thought it would be easier to see the relevant
lines only). gpm is configured by /etc/gpm.conf , but it should be:
gpm -m /dev/psaux -t ps2 -R raw
Also, the XFree86 Synaptics driver prints this while starting and
switching between console and XFree86:
Synaptics DeviceInit called
SynapticsCtrl called.
Synaptics DeviceOn called
Synaptics DeviceOff called
[the last two repeated more times]

> Btw, what version of GPM are you using?
 I am running Debian Sid, thus I also thought gpm is the newest; as I
do understand I should use 1.20.1, which is the latest AFAIK. Thus I was
shocked a bit on what 'dpkg -l gpm' gives:
ii  gpm            1.19.6-12.1    General Purpose Mouse Interface
More than a year old! Already filed an important bug on this. Sorry, it
seems to be the problem, or at least produces strange behavior:
I plugged in an USB mouse, which works while the touchpad still not
under XFree86 (both works at the same time under console - even if I did
not specified any additional config for gpm). The config for XFree86:
-- XF86Config-4 --
Section "InputDevice"
        Identifier      "USB Mouse"
        Driver          "mouse"
        Option          "CorePointer"
        Option          "Device"                "/dev/input/mice"
        Option          "Protocol"              "imps/2"
        Option          "Emulate3Buttons"       "true"
        Option          "ZAxisMapping"          "4 5"
EndSection
-- XF86Config-4 --

Made it the only one pointer input. Now, if I kill gpm with 'gpm -k',
then the touchpad begins to work! Sometimes if I release it, then the
pointer jumps a bit from where I pointed it, but that's all. I'm not
good in mice stuff, so I can't explain this. Anyway, I will try to
compile a newer gpm, change it's device, so play a bit; maybe I can come
up with something.

> As far as reverting patches I would start with
> input-08-synaptics-protocol-discovery.patch
 It did not help. :-(

Thanks, and Merry Christmas!
GCS

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-24 11:32 ` 2.6.0-mm1 Andrew Morton
  2003-12-24 11:53   ` 2.6.0-mm1 GCS
  2003-12-24 12:47   ` 2.6.0-mm1 Thomas Molina
@ 2003-12-25  9:11   ` Dmitry Torokhov
  2003-12-25 18:22     ` 2.6.0-mm1 GCS
  2 siblings, 1 reply; 42+ messages in thread
From: Dmitry Torokhov @ 2003-12-25  9:11 UTC (permalink / raw)
  To: Andrew Morton, GCS; +Cc: linux-kernel, Peter Osterlund

On Wednesday 24 December 2003 06:32 am, Andrew Morton wrote:
> GCS <gcs@lsc.hu> wrote:
[..SKIP..]
>
> > - I have a synaptics touchpad, which is detected correctly, but only
> >   works if I set psmouse_noext=1. Under vanilla 2.6.0 it still works
> > this way, but with 2.6.0-mm1 it works only on the console, but not
> > under XFree86. Strange, as gpm interprets the input and pipes thru
> > gpmdata to XFree86 4.3.0. Any idea what broke this configuration?
>
> Peter or Dmitry may be able to tell us.

Whew.. that wasn't easy to spot... When doing PS/2 emulation for touchpads
that use absolute events, when processing BTN_TOUCH event mousedev would
stop on the very first client. So in your normal case only GPM would see
the Synaptics but once you killed GPM XFree would be the first in line and
magically start working.

My guess you didn't see that in stock 2.6.0 because you were compiling
without Synaptics support.

I am sending 2 patches - one to remove mouse jitter with Synaptics when
it is used through mousedev (PS/2 emulation) - mousedev will use 3 point
history and average when calculating deltas, the other one is the fix for
the problem you are experiencing. They should apply to 2.6.0-mm1 and to
stock 2.6.0 with minimal jitter.

Dmitry

^ permalink raw reply	[flat|nested] 42+ messages in thread

* Re: 2.6.0-mm1
  2003-12-25  9:11   ` 2.6.0-mm1 Dmitry Torokhov
@ 2003-12-25 18:22     ` GCS
  0 siblings, 0 replies; 42+ messages in thread
From: GCS @ 2003-12-25 18:22 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Andrew Morton, linux-kernel, Peter Osterlund

On Thu, Dec 25, 2003 at 04:11:54AM -0500, Dmitry Torokhov <dtor_core@ameritech.net> wrote:
> I am sending 2 patches - one to remove mouse jitter with Synaptics when
> it is used through mousedev (PS/2 emulation) - mousedev will use 3 point
> history and average when calculating deltas, the other one is the fix for
> the problem you are experiencing. They should apply to 2.6.0-mm1 and to
> stock 2.6.0 with minimal jitter.
 I have applied both to 2.6.0-mm1. They are just working, no jumping
mouse pointer when I release the touchpad, and both touchpad+usb mouse
working on console and under XFree86 as well. OK, I could not really
understand how they are working, as for me it seems gpm interprets
/dev/psaux only, and get both pointing device right, still XFree86 which
reads data replicated by gpm via gpmdata can't handle the USB mouse
directly. I had to use a separate config, which reads /dev/input/mice as
well. I think it's because XFree86's synaptics driver skip events from
the USB mouse. Anyway, thanks for your help and work!

Merry Christmas!
GCS
-- 
BorsodChem Joint-Stock Company				Linux Support Center
Software engineer					Developer
+36-48-511211/12-99                                     +36-20-4441745

^ permalink raw reply	[flat|nested] 42+ 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; 42+ messages in thread
From: Ramón Rey Vicente @ 2003-12-28  3:43 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel@vger.kernel.org, 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] 42+ 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; 42+ 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.


^ permalink raw reply	[flat|nested] 42+ 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; 42+ messages in thread
From: Andrew Morton @ 2003-12-28 19:49 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: linux-kernel, linux-mm, viro@parcelfarce.linux.theplanet.co.uk

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.


^ permalink raw reply	[flat|nested] 42+ 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; 42+ messages in thread
From: Christoph Hellwig @ 2003-12-28 19:52 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, linux-mm, viro@parcelfarce.linux.theplanet.co.uk

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.


^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2003-12-28 19:52 UTC | newest]

Thread overview: 42+ 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:57     ` 2.6.0-mm1 Andrew Walrond
2003-12-23  8:20       ` compiling modules after 2.4.* --> 2.6.0 upgrade Ben Srour
2003-12-23 16:25         ` Erik Mouw
2003-12-23 16:27         ` Jonathan Corbet
2003-12-23 16:39         ` Randy.Dunlap
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
     [not found] <15N7L-7y2-3@gated-at.bofh.it>
2003-12-23 15:41 ` 2.6.0-mm1 Pascal Schmidt
2003-12-23 16:32   ` 2.6.0-mm1 Jens Axboe
2003-12-23 16:46     ` 2.6.0-mm1 Pascal Schmidt
2003-12-23 16:56       ` 2.6.0-mm1 Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2003-12-23 16:34 2.6.0-mm1 Pascal Schmidt
2003-12-23 16:39 ` 2.6.0-mm1 Jens Axboe
2003-12-23 16:54   ` 2.6.0-mm1 Jens Axboe
2003-12-23 16:58     ` 2.6.0-mm1 Jens Axboe
2003-12-23 17:29       ` 2.6.0-mm1 Pascal Schmidt
2003-12-23 18:49         ` 2.6.0-mm1 Jens Axboe
     [not found] <20031223170633.GG1601@suse.de>
2003-12-23 17:15 ` 2.6.0-mm1 Pascal Schmidt
2003-12-24  9:59 2.6.0-mm1 GCS
2003-12-24 11:32 ` 2.6.0-mm1 Andrew Morton
2003-12-24 11:53   ` 2.6.0-mm1 GCS
2003-12-24 12:23     ` 2.6.0-mm1 GCS
2003-12-24 15:17       ` 2.6.0-mm1 Dmitry Torokhov
2003-12-24 19:12         ` 2.6.0-mm1 GCS
2003-12-24 12:47   ` 2.6.0-mm1 Thomas Molina
2003-12-25  9:11   ` 2.6.0-mm1 Dmitry Torokhov
2003-12-25 18:22     ` 2.6.0-mm1 GCS
2003-12-24 14:38 ` 2.6.0-mm1 GCS

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox