2004-06-27 06:32:47

by Andrew Morton

[permalink] [raw]
Subject: 2.6.7-mm3


ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-mm3/


- Added Adam's PNP bk tree to the "external bk trees"

- random fixes and updates all over the place




Changes since 2.6.7-mm2:


linus.patch
bk-acpi.patch
bk-agpgart.patch
bk-alsa.patch
bk-cifs.patch
bk-cpufreq.patch
bk-driver-core.patch
bk-ieee1394.patch
bk-input.patch
bk-netdev.patch
bk-ntfs.patch
bk-pnp.patch
bk-scsi.patch
bk-usb.patch

External trees

-allow-i386-to-reenable-interrupts-on-lock-contention.patch
-ext3-jbd-needs-to-wait-for-locked-buffers.patch
-Move-saved_command_line-to-init-mainc.patch
-rcu-lock-update-add-per-cpu-batch-counter.patch
-rcu-lock-update-use-a-sequence-lock-for-starting-batches.patch
-rcu-lock-update-code-move-cleanup.patch
-singly-linked-rcu.patch
-rcu-no-arg.patch
-rcu-no-arg-fix.patch
-rcu-no-arg-fastcall-fix.patch
-sch_generic-rcu-fix.patch
-cpumask-1-10-cpu_present_map-real-even-on-non-smp.patch
-cpumask-2-10-bitmap-cleanup-preparation-for-cpumask.patch
-cpumask-3-10-bitmap-inlining-and-optimizations.patch
-cpumask-5-10-rewrite-cpumaskh-single-bitmap-based.patch
-cpumask-5-10-rewrite-cpumaskh-single-bitmap-based-cpu_mask_none-fix.patch
-s390-fix-cpu_online-redefined-warnings.patch
-cpumask-6-10-remove-26-no-longer-used-cpumaskh-files.patch
-cpumask-7-10-remove-obsolete-cpumask-macro-uses-i386-arch.patch
-cpumask-8-10-remove-obsolete-cpumask-macro-uses-other.patch
-x86_64-cpu_online-fix.patch
-ppc64-cpu_online-fix.patch
-cpumask-9-10-remove-no-longer-used-obsolete-macro-emulation.patch
-cpumask-10-10-optimize-various-uses-of-new-cpumasks.patch
-cpumask-11-10-comment-spacing-tweaks.patch
-cleanup-cpumask_t-temporaries.patch
-alpha-cpumask-fix.patch
-irqaction-use-cpumask.patch
-fix-and-reenable-msi-support-on-x86_64.patch
-vmscan-shuffle-things-around.patch
-vmscan-scan-sanity.patch
-vmscan-dont-reclaim-too-many-pages.patch
-vfs-shrinkage-tuning.patch
-ide-stack-reduction.patch
-dnotify-remove-dn_lock.patch
-fancy-wakeups-in-wait-h.patch
-buddy-reordering.patch
-hwcache-align-kmalloc-caches.patch
-reduce-function-inlining-in-slabc.patch
-abs-fix.patch
-abs-fix-fix.patch
-ide-taskfilec-fixups-cleanups.patch
-ide-end-request-fix-for-config_ide_taskfile_io=y-pio-handlers.patch
-ide-pio-in-drive-busy-fix-config_ide_taskfile_io=y.patch
-ide-check-drive-mult_count-in-flagged_taskfile.patch
-ide-last-irq-fix-for-task_mulout_intr-config_ide_taskfile_io=n.patch
-ide-remove-dtf-debugging-printks-from-ide-taskfilec.patch
-ide-add-task_multi_sectors-to-ide-taskfilec.patch
-ide-split-task_sectors-and-task_multi_sectors.patch
-ide-dont-clear-rq-errors-for-req_drive_taskfile-requests.patch
-ide-use-task_buffer_sectors-in-ide-taskfilec.patch
-ide-pio-out-setup-fixes-config_ide_taskfile_io=n.patch
-for-netmos-based-pci-cards-providing-serial-and-parallel-ports.patch
-help-text-for-fb_riva_i2c.patch
-nr_pagecache-can-go-negative.patch
-nr_swap_pages-is-long.patch
-nr_swap_pages-is-long-fixes.patch
-total_swap_pages-is-long.patch
-a2-rewrite-and-26-fixes.patch
-dell-laptop-lockup-fix-for-alsa.patch
-mips-update.patch
-mips-indydog-update.patch
-re-267-mm1-linker-trouble-with-config_fb_riva_i2c=y-and-modular-i2c.patch
-fix-early-cpu-vendor-detection-for-non-intel-cpus.patch
-oprofile-allow-normal-user-to-trigger-sample-dumps.patch
-tiny-update-to-documentation-submittingdrivers-list-xorg.patch
-core-fbcon-fixes.patch
-video-mode-change-notify-fbset.patch
-fix-power3-numa-init.patch
-add-ppc85xx-maintainers-entry.patch
-flexible-mmap-267-mm1-a0.patch
-flexible-mmap-267-mm1-a0-fix.patch
-oprofile-documentation-basic_profilingtxt-updates.patch
-selinux-extend-and-revise-calls-to-secondary-module.patch
-fix-allocate_pgdat-comments.patch
-drivers-media-video-tda9840c-honour-return-code-of.patch
-altix-serial-driver.patch
-altix-serial-driver-fix.patch
-zap_pte_range-speedup.patch
-h8300-delete-obsolute-header.patch
-cirrusfb-it-lives.patch
-update-ikconfig-help-text.patch
-update-ikconfig-generator-script.patch
-hugetlb-use-safe-iterator.patch
-swsusp-minor-docs-updates.patch
-prepare-for-smp-suspend.patch
-swsusp-shuffle-cpuc-to-make-it-usable-for-smp-suspend.patch
-consolidate-in-kernel-configuration.patch
-sparse-trivial-fixes-of-assignment-expression-in-conditional-in-fs.patch
-more-bug-fix-in-mm-hugetlbc-fix-try_to_free_low.patch
-shut-up-kaweth-usb-net-driver.patch
-oom-killer-fix.patch
-sh-sh-3-on-chip-adc-support.patch
-sh-dma-mapping-updates.patch
-sh-dma-driver-updates.patch
-sh-early-printk-cleanup.patch
-sh-fixmap-support.patch
-sh-renesas-hs7751rvoip-board-support.patch
-sh-ide-cleanup.patch
-sh-ptep_get_and_clear-compile-fix.patch
-sh-sh-sci-updates.patch
-sh-solutionengine-7300-board-support.patch
-sh-renesas-rts7751r2d-board-support.patch
-sh-pci-updates.patch
-sh-sh7705-sh7300-subtype-support-st40-updates.patch
-sh-voyagergx-companion-chip-support.patch
-sh-merge.patch
-sh-consolidate-systemh-with-other-renesas-boards.patch
-md-fix-up-handling-for-read-error-in-raid1.patch
-md-xor-template-selection-redo.patch
-kswapd-warning-fix.patch
-balanced_irq-warning-fix.patch
-tr-warning-fixes.patch
-fc-warning-fix.patch
-ip_fw_compat_masq-build-fix.patch
-pkt_sched-warning-fixes.patch
-267-fix-broken-alpha-build-ptracec-error.patch

Merged

+add-pcdp-console-detection-support.patch
+add-pcdp-console-detection-support-config-fix.patch

Add support for the EFI/DIG PCDP console discovery table.

+pwc-uncompress-build-fix.patch

USB driver compile fix

+ppc64-COMMAND_LINE_SIZE-fix.patch
+ppc64-fix-oprofile-on-970.patch
+ppc64-udbg-should-use-snprintf.patch
+ppc64-another-udbg-fix.patch
+ppc64-udbg-fix.patch
+ppc64-remove-a-stale-comment-in-rtasc.patch
+ppc64-fix-usage-of-cpumask_t-on-iseries.patch

PPC64 updates

+__alloc_bootmem_node-should-not-panic-when-it-fails.patch

NUMA mm initialisation tweak

+kgdb-irqaction-use-cpumask.patch

kgdb fix

-sysfs-overflow-debug.patch

Dropped - the bug is fixed.

+i8042-sparc64-build-fix.patch

input build fix

+sysfs-fill_read_buffer-fix.patch

Fix sysfs BUG_ON

+altix-serial-driver-2.patch

ALTIX serial driver

+fix-module_text_address-store_stackinfo-race-2.patch

Fix for CONFIG_DEBUG_PAGEALLOC modules race

+reduce-tlb-flushing-during-process-migration-2-fix.patch
+tlb_migrate_flush-docs.patch

New version of this ia64 speedup patch

+per-node-huge-page-stats-in-sysfs-fix.patch

hugetlb NUMA instrumentation

+i386-uninline-memmove.patch

ia32 linkage fix

+selinux-config_security_network-build-fix.patch

selinux fix

+tidy-identify_cpu-output.patch

Neaten boot messages

+allow-root-to-choose-vfat-policy-to-utf8.patch

VFAT fix

+crc-add-common-crc16-module.patch
+crc-add-common-crc16-module-default-y.patch
+crc-use-it-in-async-ppp-driver.patch
+crc-use-it-in-irda-drivers.patch
+crc-use-it-in-isdn-drivers.patch
+crc-use-it-in-ax25-drivers.patch

Consolidate crc32 code

+direct-i-o-stomp-over-page-mapping-for-hugetlb-page.patch

hugetlb direct-io fix

+fix-numa-boundaray-between-zone_normal-and-highmem.patch

NUMA setup fix

+missing-semicolon-in-267-viodasd-driver.patch

build fix

+267-bk7-ppp_genericc-get_filter-made-conditional.patch

ifdef away some unused code

+radeonfb-accel-capabilities-resend.patch

radeonfb hardware acceleration

+sched-cleanup-init_idle.patch
+sched-cleanup-improve-sched-fork-apis.patch
+sched-misc-changes.patch
+sched-disable-balance-on-clone-by-default.patch
+sched-exit-race.patch

CPU scheduler updates

+mention-in-the-laptop-mode-docs-that-no-kernel-configuration-change-is-needed.patch

laptop-mode documentation update

+inodes_stat-nr_unused-fix.patch

inode_stat.nr_unused accounting fix

+memory-backed-inodes-fix.patch

small writeback speedup

+vc-locking.patch
+vc-locking-tweaks.patch

virtual console locking fixes

+laptop-mode-control-script-improvements.patch

laptop mode control script update

+swsusps-meaningfull-assembly-labels.patch

swsusp.S cleanup

+fix-gfp-zone-modifier-interators.patch

page allocator fixlet

+fix-char-ipmi-ipmi_si_intfc-warnings.patch

warning fixes

+ext3_bread-cleanup.patch

Code cleanup

+remove-include-arch-inith.patch

remove various asm/init.h files

+anon_vma-list-locking-bug.patch

MM locking fix

+cpufreq_delayed_get-inline-fix.patch

cpufreq inlining fix

+lock-ordering-update.patch

locking documentation update

+ext3-direct-io-credits-overflow-fix.patch

ext3 direct-io BUGfix

+arm-build-fix.patch

ARM compile fix

+dont-hold-i_sem-on-swapfiles.patch
+dont-hold-i_sem-on-swapfiles-comment.patch

Stop holding i_sem on swapfiles.

+setattr-retval-fixes.patch
+reiserfs_setattr-retval-fix.patch
+jfs_setattr-fix.patch
+cifs_setattr-retval-fix.patch
+ncpfs_setattr-retval-fix.patch
+affs_setattr-retval-fix.patch

Fix lots of filesystem setattr() implementations

+translate-japanese-comments-in-arch-v850.patch

asciify some v850 comments.




All 198 patches


linus.patch

add-pcdp-console-detection-support.patch
Add PCDP console detection support

add-pcdp-console-detection-support-config-fix.patch
add-pcdp-console-detection-support-config-fix

kbuild-improve-kernel-build-with-separated-output.patch
kbuild: Improve Kernel build with separated output

sysfs-leaves-mount.patch
sysfs backing store: add sysfs_dirent

sysfs-leaves-dir.patch
sysfs backing store: add sysfs_dirent

sysfs-leaves-file.patch
sysfs backing store: sysfs_create() changes

sysfs-leaves-bin.patch
sysfs backing store: bin attribute changes

sysfs-leaves-symlink.patch
sysfs backing store: sysfs_create_link changes

sysfs-leaves-misc.patch
sysfs backing store: attribute groups and misc routines

bk-acpi.patch

bk-agpgart.patch

bk-alsa.patch

bk-cifs.patch

bk-cpufreq.patch

bk-driver-core.patch

bk-ieee1394.patch

bk-input.patch

bk-netdev.patch

bk-ntfs.patch

bk-pnp.patch

bk-scsi.patch

bk-usb.patch

mm.patch
add -mmN to EXTRAVERSION

pwc-uncompress-build-fix.patch
pwc-uncompress-build-fix

ppc64-COMMAND_LINE_SIZE-fix.patch
ppc64: COMMAND_LINE_SIZE fix

ppc64-fix-oprofile-on-970.patch
ppc64: fix oprofile on 970

ppc64-udbg-should-use-snprintf.patch
ppc64: udbg should use snprintf

ppc64-another-udbg-fix.patch
ppc64: another udbg fix

ppc64-udbg-fix.patch
ppc64: udbg fix

ppc64-remove-a-stale-comment-in-rtasc.patch
ppc64: remove a stale comment in rtas.c

ppc64-fix-usage-of-cpumask_t-on-iseries.patch
ppc64: fix usage of cpumask_t on iSeries

__alloc_bootmem_node-should-not-panic-when-it-fails.patch
__alloc_bootmem_node should not panic when it fails

kgdb-ga.patch
kgdb stub for ia32 (George Anzinger's one)
kgdbL warning fix
kgdb buffer overflow fix
kgdbL warning fix
kgdb: CONFIG_DEBUG_INFO fix
x86_64 fixes
correct kgdb.txt Documentation link (against 2.6.1-rc1-mm2)
kgdb: fix for recent gcc
kgdb warning fixes
THREAD_SIZE fixes for kgdb
Fix stack overflow test for non-8k stacks

kgdb-gapatch-fix-for-i386-single-step-into-sysenter.patch
kgdb-ga.patch fix for i386 single-step into sysenter

kgdboe-netpoll.patch
kgdb-over-ethernet via netpoll
kgdboe: fix configuration of MAC address

kgdb-x86_64-support.patch
kgdb-x86_64-support.patch for 2.6.2-rc1-mm3
kgdb-x86_64-warning-fixes

kgdb-ia64-support.patch
IA64 kgdb support
ia64 kgdb repair and cleanup

kgdb-irqaction-use-cpumask.patch

make-tree_lock-an-rwlock.patch
make mapping->tree_lock an rwlock

radix_tree_tag_set-atomic.patch
Make radix_tree_tag_set/clear atomic wrt the tag

radix_tree_tag_set-only-needs-read_lock.patch
radix_tree_tag_set only needs read_lock()

must-fix.patch
must fix lists update
must fix list update
mustfix update

must-fix-update-5.patch
must-fix update

mustfix-lists.patch
mustfix lists

ppc64-reloc_hide.patch

invalidate_inodes-speedup.patch
invalidate_inodes speedup
more invalidate_inodes speedup fixes

get_user_pages-handle-VM_IO.patch
fix get_user_pages() against mappings of /dev/mem

fa311-mac-address-fix.patch
wrong mac address with netgear FA311 ethernet card

pid_max-fix.patch
Bug when setting pid_max > 32k

jbd-remove-livelock-avoidance.patch
JBD: remove livelock avoidance code in journal_dirty_data()

journal_add_journal_head-debug.patch
journal_add_journal_head-debug

list_del-debug.patch
list_del debug check

oops-dump-preceding-code.patch
i386 oops output: dump preceding code

lockmeter.patch
lockmeter
ia64 CONFIG_LOCKMETER fix

unplug-can-sleep.patch
unplug functions can sleep

firestream-warnings.patch
firestream warnings

ext3_rsv_cleanup.patch
ext3 block reservation patch set -- ext3 preallocation cleanup

ext3_rsv_base.patch
ext3 block reservation patch set -- ext3 block reservation
ext3 reservations: fix performance regression
ext3 block reservation patch set -- mount and ioctl feature
ext3 block reservation patch set -- dynamically increase reservation window
ext3 reservation ifdef cleanup patch
ext3 reservation max window size check patch
ext3 reservation file ioctl fix

ext3-reservation-default-on.patch
ext3 reservation: default to on

ext3-lazy-discard-reservation-window-patch.patch
ext3 lazy discard reservation window patch
ext3 discard reservation in last iput fix patch
Fix lazy reservation discard
ext3 reservations: bad_inode fix
ext3 reservation discard race fix

hugetlb_shm_group-sysctl-gid-0-fix.patch
hugetlb_shm_group sysctl-gid-0-fix

larger-io-bitmap.patch
larger IO bitmaps

really-ptrace-single-step-2.patch
ptrace single-stepping fix

ftruncate-vs-block_write_full_page.patch
ftruncate vs block_write_full_page race fix

ia32-fault-deadlock-fix-2.patch
ia32: fix deadlocks when oopsing while mmap_sem is held

ppc64-fault-deadlock-fix-2.patch
ppc64: fix deadlocks when oopsing while mmap_sem is held

ipr-ppc64-depends.patch
Make ipr.c require ppc

disk-barrier-core.patch
disk barriers: core
disk-barrier-core-tweaks

disk-barrier-ide.patch
disk barriers: IDE
disk-barrier-ide-symbol-expoprt
disk-barrier ide warning fix

barrier-update.patch
barrier update

disk-barrier-scsi.patch
disk barriers: scsi

disk-barrier-dm.patch
disk barriers: devicemapper

disk-barrier-md.patch
disk barriers: MD

reiserfs-v3-barrier-support.patch
reiserfs v3 barrier support
reiserfs-v3-barrier-support-tweak

sync_dirty_buffer-retval.patch
make sync_dirty_buffer() return something useful

ext3-barrier-support.patch
ext3 barrier support

jbd-barrier-fallback-on-failure.patch
jbd: barrier fallback on failure

ide-print-failed-opcode.patch
ide: print failed opcode on IO errors
From: Jens Axboe <[email protected]>
Subject: Re: ide errors in 7-rc1-mm1 and later

add-bh_eopnotsupp-for-testing.patch
add BH_Eopnotsupp for testing async barrier failures

handle-async-barrier-failures.patch
Handle async barrier failures

x86-stack-dump-fixes.patch
x86 stack dump fixes

enable-suspend-resuming-of-e1000.patch
Enable suspend/resuming of e1000

tty_io-hangup-locking.patch
tty_io.c hangup locking

nx-2.6.7-rc2-bk2-AF.patch
NX (No eXecute) support for x86

nx-update.patch
nx update

nx-update-2.patch
nx update 2

perfctr-core.patch
From: Mikael Pettersson <[email protected]>
Subject: [PATCH][1/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: core
CONFIG_PERFCTR=n build fix

perfctr-i386.patch
From: Mikael Pettersson <[email protected]>
Subject: [PATCH][2/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: i386
perfctr #if/#ifdef cleanup
perfctr Dothan support

perfctr-x86_64.patch
From: Mikael Pettersson <[email protected]>
Subject: [PATCH][3/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: x86_64

perfctr-ppc.patch
From: Mikael Pettersson <[email protected]>
Subject: [PATCH][4/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: PowerPC

perfctr-ppc32-update.patch
perfctr ppc32 update

perfctr-virtualised-counters.patch
From: Mikael Pettersson <[email protected]>
Subject: [PATCH][5/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: virtualised counters

perfctr-ifdef-cleanup.patch
perfctr ifdef cleanup

perfctr-cpus_complement-fix.patch
perfctr-cpus_complement-fix

perfctr-cpumask-cleanup.patch
perfctr cpumask cleanup

perfctr-misc.patch
From: Mikael Pettersson <[email protected]>
Subject: [PATCH][6/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: misc

ext3-online-resize-patch.patch
ext3: online resizing

ext3-online-resize-warning-fix.patch
ext3-online-resize-warning-fix

dont-writeback-fd-bdev-inodes.patch
dont-writeback-fd-bdev-inodes

input-psmouse-resync-for-kvm-users.patch
input: psmouse resync for KVM users

input-psmouse-state-locking.patch
input: psmouse state locking

input-serio-connect-disconnect-mandatory.patch
input: serio connect/disconnect mandatory

input-serio-renames-1.patch
input: serio renames 1

input-serio-renames-1-fix.patch
input-serio-renames-1-fix

input-serio-renames-2.patch
input: serio renames 2

input-serio-dynamic-allocation.patch
input: serio dynamic allocation

input-serio-dynamic-allocation-fix-2.patch
input-serio-dynamic-allocation-fix-2

input-serio-dynamic-allocation-fix-3.patch
input-serio-dynamic-allocation-fix-3

input-serio-no-recursion.patch
input: serio no recursion

input-serio-sysfs-integration.patch
input: serio sysfs integration

input-serio-allow-rebinding.patch
input: serio allow rebinding

input-serio-manual-bind.patch
input: serio manual bind

input-serio_raw-driver.patch
input: serio_raw driver

i8042-sparc64-build-fix.patch
i8042 sparc64 build fix

sysfs-fill_read_buffer-fix.patch
sysfs: fill_read_buffer() fix

fix-smbfs-readdir-oops.patch
Fix smbfs readdir oops

remove-smbfs-server-rcls-err.patch
Remove smbfs server->rcls/err

kallsyms-exclude.patch
kallsyms: exclude kallsyms-generated symbols

kallsyms-verify.patch
kallsyms: verify that System.map is stable

r8169_napi-help-text.patch
R8169_NAPI help text

kbuild-distclean-srctree-fix.patch
kbuild: distclean srctree fix

make-__free_pages_bulk-more-comprehensible.patch
make __free_pages_bulk more comprehensible

net-at1700c-depends-on-mca_legacy.patch
net/at1700.c depends on MCA_LEGACY

net-ne2c-needs-mca_legacy.patch
net/ne2.c needs MCA_LEGACY

cap_dac_override.patch
CAP_DAC_OVERRIDE fix

altix-serial-driver-2.patch
Altix serial driver updates
altix-serial-driver-fix

fix-module_text_address-store_stackinfo-race-2.patch
Fix race between CONFIG_DEBUG_SLABALLOC and modules

bridge-fix-bpdu-message_age.patch
Bridge - Fix BPDU message_age

267-mm1-port-acer-laptop-irq-routing-workaround-to-new-dmi-probing.patch
dmi_scan: port Acer laptop irq routing workaround to new DMI probing

267-mm1-port-pnp-bios-driver-to-new-dmi-probing.patch
dmi_scan: port PnP BIOS driver to new DMI probing

267-mm1-port-sonypi-driver-to-new-dmi-probing.patch
dmi_scan: port sonypi driver to new DMI probing

267-mm1-port-piix4-smbus-driver-to-new-dmi-probing.patch
dmi_scan: port PIIX4 SMBUS driver to new DMI probing

267-mm1-port-powernow-k7-driver-to-new-dmi-probing.patch
dmi_scan: port powernow-k7 driver to new DMI probing

267-mm1-remove-unused-asus-k7v-rm-dmi-quirk.patch
dmi_scan: remove unused ASUS K7V-RM DMI quirk

267-mm1-port-apm-bios-driver-to-new-dmi-probing.patch
dmi_scan: port APM BIOS driver to new DMI probing

hpet-fixes.patch
hpet fixes

hpet-fixes-fix.patch
hpet-fixes fix

reduce-tlb-flushing-during-process-migration-2.patch
Reduce TLB flushing during process migration

reduce-tlb-flushing-during-process-migration-2-fix.patch
reduce-tlb-flushing-during-process-migration-2-fix

tlb_migrate_flush-docs.patch
tlb_migrate_flush documentation

per-node-huge-page-stats-in-sysfs.patch
per node huge page stats in sysfs

per-node-huge-page-stats-in-sysfs-fix.patch
per-node-huge-page-stats-in-sysfs fix

scsi-printk-fixes.patch
scsi printk fixes

knfsd-mark-nfs-tcp-server-not-experimental.patch
knfsd: mark NFS/TCP server not EXPERIMENTAL

knfsd-simplify-nfsd4-name-encoding.patch
knfsd: simplify nfsd4 name encoding.

knfsd-simplify-nfsd4_release_lockowner.patch
knfsd: simplify nfsd4_release_lockowner

knfsd-delete-an-obsolete-comment-from-nfsd-rpc-code.patch
knfsd: delete an obsolete comment from nfsd rpc code

knfsd-reduce-stack-usage-in-nfsd4.patch
knfsd: reduce stack usage in nfsd4

knfsd-nfsd4-lockowner-fixes.patch
knfsd: nfsd4 lockowner fixes

knfsd-parse-nsfd4-callback-information.patch
knfsd: parse nsfd4 callback information

knfsd-improve-cleaning-up-of-nfsd4-requests.patch
knfsd: improve cleaning up of nfsd4 requests

knfsd-allow-user-to-set-nfsv4-lease-time.patch
knfsd: allow user to set NFSv4 lease time.

i386-uninline-memmove.patch
i386: uninline memmove

selinux-config_security_network-build-fix.patch
SELinux: fix build with CONFIG_SECURITY_NETWORK=n

tidy-identify_cpu-output.patch
tidy up the identify_cpu() output

allow-root-to-choose-vfat-policy-to-utf8.patch
Permit root to choose vfat policy to UTF8

crc-add-common-crc16-module.patch
crc: add common CRC16 module

crc-add-common-crc16-module-default-y.patch
crc-add-common-crc16-module-default-y

crc-use-it-in-async-ppp-driver.patch
crc: use it in async PPP driver

crc-use-it-in-irda-drivers.patch
crc: use it in IRDA drivers

crc-use-it-in-isdn-drivers.patch
Subject: [PATCH 3/4] 2.6.7-mm2, Use it in ISDN drivers

crc-use-it-in-ax25-drivers.patch
crc: use it in AX.25 drivers

direct-i-o-stomp-over-page-mapping-for-hugetlb-page.patch
Fix direct I/O into hugetlb page

fix-numa-boundaray-between-zone_normal-and-highmem.patch
fix NUMA boundaray between ZONE_NORMAL and HIGHMEM

missing-semicolon-in-267-viodasd-driver.patch
missing semicolon in 2.6.7 VIODASD driver

267-bk7-ppp_genericc-get_filter-made-conditional.patch
ppp_generic.c get_filter made conditional

radeonfb-accel-capabilities-resend.patch
radeonfb accel capabilities (resend)

sched-cleanup-init_idle.patch
sched: cleanup init_idle

sched-cleanup-improve-sched-fork-apis.patch
sched: cleanup, improve sched <=> fork APIs

sched-misc-changes.patch
sched: sched misc changes

sched-disable-balance-on-clone-by-default.patch
sched: disable balance-on-clone by default

sched-exit-race.patch
sched: sched exit race

mention-in-the-laptop-mode-docs-that-no-kernel-configuration-change-is-needed.patch
laptop-mode documentation update

inodes_stat-nr_unused-fix.patch
inodes_stat.nr_unused fix

memory-backed-inodes-fix.patch
memory-backed inodes fix

vc-locking.patch
vc locking

vc-locking-tweaks.patch
vc-locking.patch tweaks

laptop-mode-control-script-improvements.patch
Laptop mode control script improvements

swsusps-meaningfull-assembly-labels.patch
swsusp.S: meaningful assembly labels

fix-gfp-zone-modifier-interators.patch
fix GFP zone modifier interators

fix-char-ipmi-ipmi_si_intfc-warnings.patch
drivers/char/ipmi/ipmi_si_intf.c warnings.

ext3_bread-cleanup.patch
ext3_bread() cleanup

remove-include-arch-inith.patch
Remove include/asm-*/init.h

anon_vma-list-locking-bug.patch
anon_vma list locking bug

cpufreq_delayed_get-inline-fix.patch
cpufreq_delayed_get() inlining fix

lock-ordering-update.patch
lock-ordering-update

ext3-direct-io-credits-overflow-fix.patch
ext3: direct-io transaction extending fix

arm-build-fix.patch
ARM COMMAND_LINE_SIZE build fix

dont-hold-i_sem-on-swapfiles.patch
Don't hold i_sem on swapfiles

dont-hold-i_sem-on-swapfiles-comment.patch
dont-hold-i_sem-on-swapfiles-comment

setattr-retval-fixes.patch
ext2_setattr retval fix

reiserfs_setattr-retval-fix.patch
reiserfs_setattr retval fix

jfs_setattr-fix.patch
jfs_setattr() fix

cifs_setattr-retval-fix.patch
cifs_setattr() retval fix

ncpfs_setattr-retval-fix.patch
ncpfs_setattr() retval fix

affs_setattr-retval-fix.patch
affs_setattr() retval fix

translate-japanese-comments-in-arch-v850.patch
Translate Japanese comments in arch/v850




2004-06-27 09:04:18

by Joshua Kwan

[permalink] [raw]
Subject: Re: 2.6.7-mm3

Hi Andrew,

thought I'd give this one a spin before I turned in.

On Sat, 26 Jun 2004 23:31:05 -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-mm3/
>
>
> - Added Adam's PNP bk tree to the "external bk trees"
>
> - random fixes and updates all over the place

A few issues.

1. NFS goes boom

mount -a -t nfs happens in my bootscripts, and results in

nfs warning: mount version older than kernel
net/sunrpc/rpc_pipe.c: rpc_lookup_parent failed to find path /nfs/clnt0
RPC: Couldn't create pipefs entry /nfs/clnt0, error -2
NFS: cannot create RPC client.
general protection fault: 0000 [#1]
PREEMPT
Modules linked in: snd_intel8x0 analog evdev usblp joydev ehci_hcd ohci_hcd orinoco_usb orinoco hermes forcedeth snd_au8830 snd_ac97_codec gameport snd_mpu401_uart snd_rawmidi snd_seq_device
CPU: 0
EIP: 0060:[<c0180e45>] Not tainted VLI
EFLAGS: 00010246 (2.6.7-mm3)
EIP is at nfs_fill_super+0x2e5/0x350
eax: fffffffe ebx: df045000 ecx: c1594200 edx: dffdd480
esi: 00000001 edi: df980627 ebp: df603ec0 esp: df603ea4
ds: 007b es: 007b ss: 0068
Process mount (pid: 2322, threadinfo=df602000 task=df653270)
Stack: c1594400 fffffffb dffdd480 c1594400 c1594400 00000060 dffdd562 df603ee8
c0182a8c dffdd480 c0376f71 dffdd480 00000001 c03c4900 dffbd9e0 fffffff4
c03c4900 df603f08 c014f7b9 df045000 df046000 00000001 dfb32000 df602000
Call Trace:
[<c01053ca>] show_stack+0x7a/0x90
[<c010554d>] show_registers+0x14d/0x1b0
[<c01056dd>] die+0x8d/0x100
[<c0105039>] error_code+0x2d/0x38
[<c0182a8c>] nfs_get_sb+0x19c/0x230
[<c014f7b9>] do_kern_mount+0x49/0xc0
[<c01638b2>] do_add_mount+0x72/0x180
[<c0163b98>] do_mount+0x128/0x160
[<c0163f4e>] sys_mount+0x8e/0x100
[<c0104e8f>] syscall_call+0x7/0xb
Code: c0 75 05 8b 45 e8 eb ae e8 49 54 fb ff eb f4 e8 22 de 1c 00 eb e3 e8 1b de 1c 00 eb d2 c7 04 24 20 ab 37 c0 e8 cd 62 f9 ff eb bb <ff> 00 8b 55 ec 8b 02 89 42 04 e9 2c ff ff ff c7 04 24 40 ab 37

config and full dmesg at
http://triplehelix.org/~joshk/2.6.7-mm3/

2. Cannot 'halt' or 'reboot' the system

Dunno why. Could be because the oops kind of screwed things up.

3. Noted this in the dmesg:

serial: guess board returned false
serial: guess board returned false

I suppose this is just some old debugging code.

4. New joystick?

input: Analog 4-axis 4-button joystick at <NULL> [ADC port]

I only have one gamepad on my system, and that's

input: USB HID v1.10 Joystick [Logitech Logitech Dual Action] on usb-0000:00:02.1-2

On a more positive note radeonfb hardware acceleration seems to work fine,
so that's really cool.

Good stuff!

--
Joshua Kwan


2004-06-27 11:33:31

by Rafał J. Wysocki

[permalink] [raw]
Subject: Re: 2.6.7-mm3 [broken serial console and Kernel BUG on dual Opteron]

On Sunday 27 of June 2004 08:31, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-m
>m3/

I see the following: (in the order of importance - to me ;-)):

1) Serial console does not work (at all), but earlyprintk _does_ (output goes
to tty0 after earlyprintk has finished).

Please, fix the serial console ASAP. It's a pain to hand-rewrite call traces
...

2) Well, I'm trying to hand-copy the trace from another screen (because of 1),
so it may be inaccurate, you know:

Kernel BUG at mempolicy:585
invalid operand: 0000 [1] SMP
CPU 0
Modules linked in:
Pid: 533, comm: modprobe Not tainted 2.6.7-mm3
RIP: 0010:[<ffffffff80172b86>] <ffffffff80172b86>{zonelist_policy+86}
RSP: 0018:000001003f105d50 EFLAGS: 00010046
[... other registers go here, I'm not going to rewrite this stuff ...]
CR2: 0000002a956fa1a0 CR3: 0000000000101000 CR4: 00000000000006e0
Process modprobe (pid: 533, threadinfo 000001001ffd3040, task
000001003f588e30)
Stack: fffffffff80173267 000001003f105dcc 000001001ffd3040 000001001ffd3040
fffffffff801589d0 000001001fa40740 ffffffff8015d6b3 000001001f127408
0000000000000012 0000000000000000
Call trace: <ffffffff80173267>{falloc_pages_current+119}
<ffffffff801589d0>{__get_free_pages+16}
<fffffffff8015d6b3>{kmem_getpages+35}
<fffffffff8015db0a>{cache_alloc_refill+714}
<ffffffff8015dd47>{kmem_cache_alloc+87} <ffffffff8013e95f>{send_signal+95}
<ffffffff8013f5b2>{__group_send_sig_info+178}
<ffffffff8013fa4f>{do_notify_parent+383}
<ffffffff8015ca65>{cache_free_debugcheck+693}
<ffffffff80137d45>{do_exit+2741}
<ffffffff80137eb0>{do_group_exit+232} <fffffffff8010e6ba>{system_call+126}

Code: 0f 0b 9d 45 34 80 ff ff ff ff 49 02 48 63 d0 48 89 f8 83 e0
RIP <ffffffff80172b86>{zonelist_policy+86} RSP <000001003f105d50>

(this's got "fixed" after unsetting DEBUG_SLAB in the kernel config, so I
assume that -mm2 is also affected - I haven't set DEBUG_SLAB before).

3) Ugly grey background behind the penguin logos (reprted for -mm2).

(this's got "fixed" after reversing the core-fbcon-fixes.patch, but you know
this already).

Attached are the kernel config and hardware config log.

Yours,
rjw


Attachments:
(No filename) (2.13 kB)
2.6.7-mm3.config (27.70 kB)
hardware.log (24.85 kB)
Download all attachments

2004-06-27 14:17:35

by Adrian Bunk

[permalink] [raw]
Subject: [patch] 2.6.7-mm3 ALSA gus compile error

On Sat, Jun 26, 2004 at 11:31:05PM -0700, Andrew Morton wrote:
>...
> All 198 patches
>...
> bk-alsa.patch
>...

This causes the following compile error:

<-- snip -->

...
LD .tmp_vmlinux1
sound/built-in.o(.text+0xfb4ae): In function `snd_gus_synth_new_device':
: undefined reference to `snd_seq_iwffff_init'
make: *** [.tmp_vmlinux1] Error 1

<-- snip -->


It seems the following is required:

Signed-off-by: Adrian Bunk <[email protected]>

--- linux-2.6.7-mm3-full/sound/core/seq/instr/Makefile.old 2004-06-27 14:42:55.000000000 +0200
+++ linux-2.6.7-mm3-full/sound/core/seq/instr/Makefile 2004-06-27 14:43:19.000000000 +0200
@@ -19,5 +19,5 @@
# Toplevel Module Dependency
obj-$(call sequencer,$(CONFIG_SND_OPL3_LIB)) += snd-ainstr-fm.o
obj-$(call sequencer,$(CONFIG_SND_OPL4_LIB)) += snd-ainstr-fm.o
-obj-$(call sequencer,$(CONFIG_SND_GUS_SYNTH)) += snd-ainstr-gf1.o snd-ainstr-simple.o
+obj-$(call sequencer,$(CONFIG_SND_GUS_SYNTH)) += snd-ainstr-gf1.o snd-ainstr-simple.o snd-ainstr-iw.o
obj-$(call sequencer,$(CONFIG_SND_TRIDENT)) += snd-ainstr-simple.o



cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2004-06-27 23:37:30

by Joseph Fannin

[permalink] [raw]
Subject: Re: 2.6.7-mm3

On Sat, Jun 26, 2004 at 11:31:05PM -0700, Andrew Morton wrote:
>
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-mm3/
>
> +ppc64-COMMAND_LINE_SIZE-fix.patch

The same fix is needed for ppc32 as well. I've attached a patch.

Signed-off-by: Joseph Fannin <[email protected]>
--
Joseph Fannin
[email protected]


Attachments:
(No filename) (346.00 B)
ppc-COMMAND_LINE_SIZE-fix.patch (429.00 B)
Download all attachments

2004-06-28 07:21:24

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.7-mm3 [broken serial console and Kernel BUG on dual Opteron]

"R. J. Wysocki" <[email protected]> wrote:
>
> On Sunday 27 of June 2004 08:31, Andrew Morton wrote:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-m
> >m3/
>
> I see the following: (in the order of importance - to me ;-)):
>
> 1) Serial console does not work (at all), but earlyprintk _does_ (output goes
> to tty0 after earlyprintk has finished).
>
> Please, fix the serial console ASAP. It's a pain to hand-rewrite call traces

erk, sorry, I thought the x86_64 console= parsing breakage had been fixed.

The below should get you going again while we remember what the problem was.


diff -puN arch/alpha/kernel/setup.c~a arch/alpha/kernel/setup.c
--- 25/arch/alpha/kernel/setup.c~a 2004-06-28 00:08:52.025672160 -0700
+++ 25-akpm/arch/alpha/kernel/setup.c 2004-06-28 00:08:58.851634456 -0700
@@ -123,6 +123,7 @@ static void get_sysnames(unsigned long,
static void determine_cpu_caches (unsigned int);

static char command_line[COMMAND_LINE_SIZE];
+char saved_command_line[COMMAND_LINE_SIZE];

/*
* The format of "screen_info" is strange, and due to early
diff -puN arch/arm26/kernel/setup.c~a arch/arm26/kernel/setup.c
--- 25/arch/arm26/kernel/setup.c~a 2004-06-28 00:08:52.082663496 -0700
+++ 25-akpm/arch/arm26/kernel/setup.c 2004-06-28 00:08:58.858633392 -0700
@@ -76,6 +76,7 @@ struct processor processor;

unsigned char aux_device_present;
char elf_platform[ELF_PLATFORM_SIZE];
+char saved_command_line[COMMAND_LINE_SIZE];

unsigned long phys_initrd_start __initdata = 0;
unsigned long phys_initrd_size __initdata = 0;
diff -puN arch/arm/kernel/setup.c~a arch/arm/kernel/setup.c
--- 25/arch/arm/kernel/setup.c~a 2004-06-28 00:08:52.114658632 -0700
+++ 25-akpm/arch/arm/kernel/setup.c 2004-06-28 00:08:58.859633240 -0700
@@ -97,6 +97,7 @@ unsigned char aux_device_present;
char elf_platform[ELF_PLATFORM_SIZE];
EXPORT_SYMBOL(elf_platform);

+char saved_command_line[COMMAND_LINE_SIZE];
unsigned long phys_initrd_start __initdata = 0;
unsigned long phys_initrd_size __initdata = 0;

diff -puN arch/cris/kernel/setup.c~a arch/cris/kernel/setup.c
--- 25/arch/cris/kernel/setup.c~a 2004-06-28 00:08:52.145653920 -0700
+++ 25-akpm/arch/cris/kernel/setup.c 2004-06-28 00:08:58.859633240 -0700
@@ -31,7 +31,10 @@ unsigned char aux_device_present;
extern int root_mountflags;
extern char _etext, _edata, _end;

+#define COMMAND_LINE_SIZE 256
+
static char command_line[COMMAND_LINE_SIZE] = { 0, };
+ char saved_command_line[COMMAND_LINE_SIZE];

extern const unsigned long text_start, edata; /* set by the linker script */
extern unsigned long dram_start, dram_end;
diff -puN arch/h8300/kernel/setup.c~a arch/h8300/kernel/setup.c
--- 25/arch/h8300/kernel/setup.c~a 2004-06-28 00:08:52.176649208 -0700
+++ 25-akpm/arch/h8300/kernel/setup.c 2004-06-28 00:08:58.860633088 -0700
@@ -30,7 +30,6 @@
#include <linux/major.h>
#include <linux/bootmem.h>
#include <linux/seq_file.h>
-#include <linux/init.h>

#include <asm/setup.h>
#include <asm/irq.h>
@@ -55,7 +54,8 @@ unsigned long rom_length;
unsigned long memory_start;
unsigned long memory_end;

-char command_line[COMMAND_LINE_SIZE];
+char command_line[512];
+char saved_command_line[512];

extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
extern int _ramstart, _ramend;
diff -puN arch/i386/boot/compressed/misc.c~a arch/i386/boot/compressed/misc.c
--- 25/arch/i386/boot/compressed/misc.c~a 2004-06-28 00:08:52.210644040 -0700
+++ 25-akpm/arch/i386/boot/compressed/misc.c 2004-06-28 00:08:58.861632936 -0700
@@ -87,11 +87,12 @@ static void gzip_release(void **);
*/
static unsigned char *real_mode; /* Pointer to real-mode data */

-#define RM_EXT_MEM_K (*(unsigned short *)(real_mode + 0x2))
+#define EXT_MEM_K (*(unsigned short *)(real_mode + 0x2))
#ifndef STANDARD_MEMORY_BIOS_CALL
-#define RM_ALT_MEM_K (*(unsigned long *)(real_mode + 0x1e0))
+#define ALT_MEM_K (*(unsigned long *)(real_mode + 0x1e0))
#endif
-#define RM_SCREEN_INFO (*(struct screen_info *)(real_mode+0))
+#define SCREEN_INFO (*(struct screen_info *)(real_mode+0))
+#define EDID_INFO (*(struct edid_info *)(real_mode+0x440))

extern char input_data[];
extern int input_len;
@@ -173,8 +174,8 @@ static void putstr(const char *s)
int x,y,pos;
char c;

- x = RM_SCREEN_INFO.orig_x;
- y = RM_SCREEN_INFO.orig_y;
+ x = SCREEN_INFO.orig_x;
+ y = SCREEN_INFO.orig_y;

while ( ( c = *s++ ) != '\0' ) {
if ( c == '\n' ) {
@@ -195,8 +196,8 @@ static void putstr(const char *s)
}
}

- RM_SCREEN_INFO.orig_x = x;
- RM_SCREEN_INFO.orig_y = y;
+ SCREEN_INFO.orig_x = x;
+ SCREEN_INFO.orig_y = y;

pos = (x + cols * y) * 2; /* Update cursor position */
outb_p(14, vidport);
@@ -305,9 +306,9 @@ struct {
static void setup_normal_output_buffer(void)
{
#ifdef STANDARD_MEMORY_BIOS_CALL
- if (RM_EXT_MEM_K < 1024) error("Less than 2MB of memory");
+ if (EXT_MEM_K < 1024) error("Less than 2MB of memory");
#else
- if ((RM_ALT_MEM_K > RM_EXT_MEM_K ? RM_ALT_MEM_K : RM_EXT_MEM_K) < 1024) error("Less than 2MB of memory");
+ if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < 1024) error("Less than 2MB of memory");
#endif
output_data = (char *)0x100000; /* Points to 1M */
free_mem_end_ptr = (long)real_mode;
@@ -322,11 +323,9 @@ static void setup_output_buffer_if_we_ru
{
high_buffer_start = (uch *)(((ulg)&end) + HEAP_SIZE);
#ifdef STANDARD_MEMORY_BIOS_CALL
- if (RM_EXT_MEM_K < (3*1024)) error("Less than 4MB of memory");
+ if (EXT_MEM_K < (3*1024)) error("Less than 4MB of memory");
#else
- if ((RM_ALT_MEM_K > RM_EXT_MEM_K ? RM_ALT_MEM_K : RM_EXT_MEM_K) <
- (3*1024))
- error("Less than 4MB of memory");
+ if ((ALT_MEM_K > EXT_MEM_K ? ALT_MEM_K : EXT_MEM_K) < (3*1024)) error("Less than 4MB of memory");
#endif
mv->low_buffer_start = output_data = (char *)LOW_BUFFER_START;
low_buffer_end = ((unsigned int)real_mode > LOW_BUFFER_MAX
@@ -359,7 +358,7 @@ asmlinkage int decompress_kernel(struct
{
real_mode = rmode;

- if (RM_SCREEN_INFO.orig_video_mode == 7) {
+ if (SCREEN_INFO.orig_video_mode == 7) {
vidmem = (char *) 0xb0000;
vidport = 0x3b4;
} else {
@@ -367,8 +366,8 @@ asmlinkage int decompress_kernel(struct
vidport = 0x3d4;
}

- lines = RM_SCREEN_INFO.orig_video_lines;
- cols = RM_SCREEN_INFO.orig_video_cols;
+ lines = SCREEN_INFO.orig_video_lines;
+ cols = SCREEN_INFO.orig_video_cols;

if (free_mem_ptr < 0x100000) setup_normal_output_buffer();
else setup_output_buffer_if_we_run_high(mv);
diff -puN arch/i386/kernel/setup.c~a arch/i386/kernel/setup.c
--- 25/arch/i386/kernel/setup.c~a 2004-06-28 00:08:52.242639176 -0700
+++ 25-akpm/arch/i386/kernel/setup.c 2004-06-28 00:08:58.862632784 -0700
@@ -127,6 +127,7 @@ unsigned long saved_videomode;
#define RAMDISK_LOAD_FLAG 0x4000

static char command_line[COMMAND_LINE_SIZE];
+ char saved_command_line[COMMAND_LINE_SIZE];

unsigned char __initdata boot_params[PARAM_SIZE];

diff -puN arch/ia64/kernel/setup.c~a arch/ia64/kernel/setup.c
--- 25/arch/ia64/kernel/setup.c~a 2004-06-28 00:08:52.275634160 -0700
+++ 25-akpm/arch/ia64/kernel/setup.c 2004-06-28 00:08:58.863632632 -0700
@@ -90,6 +90,10 @@ unsigned char aux_device_present = 0xaa;
unsigned long ia64_max_iommu_merge_mask = ~0UL;
EXPORT_SYMBOL(ia64_max_iommu_merge_mask);

+#define COMMAND_LINE_SIZE 512
+
+char saved_command_line[COMMAND_LINE_SIZE]; /* used in proc filesystem */
+
/*
* We use a special marker for the end of memory and it uses the extra (+1) slot
*/
diff -puN arch/m68k/kernel/setup.c~a arch/m68k/kernel/setup.c
--- 25/arch/m68k/kernel/setup.c~a 2004-06-28 00:08:52.310628840 -0700
+++ 25-akpm/arch/m68k/kernel/setup.c 2004-06-28 00:08:58.864632480 -0700
@@ -62,6 +62,7 @@ struct mem_info m68k_memory[NUM_MEMINFO]
static struct mem_info m68k_ramdisk;

static char m68k_command_line[CL_SIZE];
+char saved_command_line[CL_SIZE];

char m68k_debug_device[6] = "";

diff -puN arch/m68knommu/kernel/setup.c~a arch/m68knommu/kernel/setup.c
--- 25/arch/m68knommu/kernel/setup.c~a 2004-06-28 00:08:52.352622456 -0700
+++ 25-akpm/arch/m68knommu/kernel/setup.c 2004-06-28 00:08:58.865632328 -0700
@@ -31,7 +31,6 @@
#include <linux/bootmem.h>
#include <linux/seq_file.h>
#include <linux/root_dev.h>
-#include <linux/init.h>

#include <asm/setup.h>
#include <asm/irq.h>
@@ -45,7 +44,8 @@ unsigned long rom_length;
unsigned long memory_start;
unsigned long memory_end;

-char command_line[COMMAND_LINE_SIZE];
+char command_line[512];
+char saved_command_line[512];

/* setup some dummy routines */
static void dummy_waitbut(void)
diff -puN arch/m68k/q40/config.c~a arch/m68k/q40/config.c
--- 25/arch/m68k/q40/config.c~a 2004-06-28 00:08:52.379618352 -0700
+++ 25-akpm/arch/m68k/q40/config.c 2004-06-28 00:08:58.865632328 -0700
@@ -64,6 +64,7 @@ void q40_set_vectors (void);

extern void q40_mksound(unsigned int /*freq*/, unsigned int /*ticks*/ );

+extern char *saved_command_line;
extern char m68k_debug_device[];
static void q40_mem_console_write(struct console *co, const char *b,
unsigned int count);
diff -puN arch/mips/kernel/setup.c~a arch/mips/kernel/setup.c
--- 25/arch/mips/kernel/setup.c~a 2004-06-28 00:08:52.408613944 -0700
+++ 25-akpm/arch/mips/kernel/setup.c 2004-06-28 00:08:58.866632176 -0700
@@ -72,6 +72,7 @@ EXPORT_SYMBOL(mips_machgroup);
struct boot_mem_map boot_mem_map;

static char command_line[CL_SIZE];
+ char saved_command_line[CL_SIZE];
char arcs_cmdline[CL_SIZE]=CONFIG_CMDLINE;

/*
diff -puN arch/parisc/kernel/setup.c~a arch/parisc/kernel/setup.c
--- 25/arch/parisc/kernel/setup.c~a 2004-06-28 00:08:52.440609080 -0700
+++ 25-akpm/arch/parisc/kernel/setup.c 2004-06-28 00:08:58.871631416 -0700
@@ -46,6 +46,8 @@
#include <asm/io.h>
#include <asm/setup.h>

+#define COMMAND_LINE_SIZE 1024
+char saved_command_line[COMMAND_LINE_SIZE];
char command_line[COMMAND_LINE_SIZE];

/* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */
diff -puN arch/ppc64/kernel/head.S~a arch/ppc64/kernel/head.S
--- 25/arch/ppc64/kernel/head.S~a 2004-06-28 00:08:52.471604368 -0700
+++ 25-akpm/arch/ppc64/kernel/head.S 2004-06-28 00:08:58.872631264 -0700
@@ -35,7 +35,6 @@
#include <asm/offsets.h>
#include <asm/bug.h>
#include <asm/cputable.h>
-#include <asm/setup.h>

#ifdef CONFIG_PPC_ISERIES
#define DO_SOFT_DISABLE
@@ -2224,4 +2223,4 @@ stab_array:
*/
.globl cmd_line
cmd_line:
- .space COMMAND_LINE_SIZE
+ .space 512 /* COMMAND_LINE_SIZE */
diff -puN arch/ppc64/kernel/setup.c~a arch/ppc64/kernel/setup.c
--- 25/arch/ppc64/kernel/setup.c~a 2004-06-28 00:08:52.499600112 -0700
+++ 25-akpm/arch/ppc64/kernel/setup.c 2004-06-28 00:08:58.873631112 -0700
@@ -83,6 +83,7 @@ unsigned long decr_overclock_proc0_set =

int powersave_nap;

+char saved_command_line[COMMAND_LINE_SIZE];
unsigned char aux_device_present;

void parse_cmd_line(unsigned long r3, unsigned long r4, unsigned long r5,
diff -puN arch/ppc/kernel/setup.c~a arch/ppc/kernel/setup.c
--- 25/arch/ppc/kernel/setup.c~a 2004-06-28 00:08:52.534594792 -0700
+++ 25-akpm/arch/ppc/kernel/setup.c 2004-06-28 00:08:58.874630960 -0700
@@ -54,6 +54,7 @@ extern void ppc6xx_idle(void);
extern void power4_idle(void);

extern boot_infos_t *boot_infos;
+char saved_command_line[COMMAND_LINE_SIZE];
unsigned char aux_device_present;
struct ide_machdep_calls ppc_ide_md;
char *sysmap;
diff -puN arch/ppc/platforms/lopec_setup.c~a arch/ppc/platforms/lopec_setup.c
--- 25/arch/ppc/platforms/lopec_setup.c~a 2004-06-28 00:08:52.567589776 -0700
+++ 25-akpm/arch/ppc/platforms/lopec_setup.c 2004-06-28 00:08:58.875630808 -0700
@@ -33,6 +33,7 @@
#include <asm/hw_irq.h>
#include <asm/prep_nvram.h>

+extern char saved_command_line[];
extern void lopec_find_bridges(void);

/*
diff -puN arch/ppc/platforms/pmac_setup.c~a arch/ppc/platforms/pmac_setup.c
--- 25/arch/ppc/platforms/pmac_setup.c~a 2004-06-28 00:08:52.595585520 -0700
+++ 25-akpm/arch/ppc/platforms/pmac_setup.c 2004-06-28 00:08:58.876630656 -0700
@@ -103,6 +103,8 @@ int has_l2cache = 0;

static int current_root_goodness = -1;

+extern char saved_command_line[];
+
extern int pmac_newworld;

#define DEFAULT_ROOT_DEVICE Root_SDA1 /* sda1 - slightly silly choice */
diff -puN arch/ppc/platforms/pplus.c~a arch/ppc/platforms/pplus.c
--- 25/arch/ppc/platforms/pplus.c~a 2004-06-28 00:08:52.623581264 -0700
+++ 25-akpm/arch/ppc/platforms/pplus.c 2004-06-28 00:08:58.877630504 -0700
@@ -48,6 +48,8 @@

TODC_ALLOC();

+extern char saved_command_line[];
+
extern void pplus_setup_hose(void);
extern void pplus_set_VIA_IDE_native(void);

diff -puN arch/ppc/platforms/prep_setup.c~a arch/ppc/platforms/prep_setup.c
--- 25/arch/ppc/platforms/prep_setup.c~a 2004-06-28 00:08:52.651577008 -0700
+++ 25-akpm/arch/ppc/platforms/prep_setup.c 2004-06-28 00:08:58.878630352 -0700
@@ -76,6 +76,7 @@ extern void rs_nvram_write_val(int addr,
extern void ibm_prep_init(void);

extern void prep_find_bridges(void);
+extern char saved_command_line[];

int _prep_type;

diff -puN arch/s390/kernel/setup.c~a arch/s390/kernel/setup.c
--- 25/arch/s390/kernel/setup.c~a 2004-06-28 00:08:52.682572296 -0700
+++ 25-akpm/arch/s390/kernel/setup.c 2004-06-28 00:08:58.879630200 -0700
@@ -76,6 +76,7 @@ extern int _text,_etext, _edata, _end;
#include <asm/setup.h>

static char command_line[COMMAND_LINE_SIZE] = { 0, };
+ char saved_command_line[COMMAND_LINE_SIZE];

static struct resource code_resource = { "Kernel code", 0x100000, 0 };
static struct resource data_resource = { "Kernel data", 0, 0 };
diff -puN arch/sh/kernel/setup.c~a arch/sh/kernel/setup.c
--- 25/arch/sh/kernel/setup.c~a 2004-06-28 00:08:52.712567736 -0700
+++ 25-akpm/arch/sh/kernel/setup.c 2004-06-28 00:08:58.879630200 -0700
@@ -83,12 +83,14 @@ static struct sh_machine_vector* __init
#define INITRD_SIZE (*(unsigned long *) (PARAM+0x014))
/* ... */
#define COMMAND_LINE ((char *) (PARAM+0x100))
+#define COMMAND_LINE_SIZE 256

#define RAMDISK_IMAGE_START_MASK 0x07FF
#define RAMDISK_PROMPT_FLAG 0x8000
#define RAMDISK_LOAD_FLAG 0x4000

static char command_line[COMMAND_LINE_SIZE] = { 0, };
+ char saved_command_line[COMMAND_LINE_SIZE];

struct resource standard_io_resources[] = {
{ "dma1", 0x00, 0x1f },
diff -puN arch/sparc64/kernel/setup.c~a arch/sparc64/kernel/setup.c
--- 25/arch/sparc64/kernel/setup.c~a 2004-06-28 00:08:52.743563024 -0700
+++ 25-akpm/arch/sparc64/kernel/setup.c 2004-06-28 00:08:58.880630048 -0700
@@ -452,7 +452,8 @@ extern unsigned short ram_flags;

extern int root_mountflags;

-char reboot_command[COMMAND_LINE_SIZE];
+char saved_command_line[256];
+char reboot_command[256];

static struct pt_regs fake_swapper_regs = { { 0, }, 0, 0, 0, 0 };

diff -puN arch/sparc64/kernel/sparc64_ksyms.c~a arch/sparc64/kernel/sparc64_ksyms.c
--- 25/arch/sparc64/kernel/sparc64_ksyms.c~a 2004-06-28 00:08:52.772558616 -0700
+++ 25-akpm/arch/sparc64/kernel/sparc64_ksyms.c 2004-06-28 00:08:58.881629896 -0700
@@ -24,7 +24,6 @@
#include <linux/socket.h>
#include <linux/syscalls.h>
#include <linux/percpu.h>
-#include <linux/init.h>
#include <net/compat.h>

#include <asm/oplib.h>
@@ -77,6 +76,7 @@ extern int __memcmp(const void *, const
extern int __strncmp(const char *, const char *, __kernel_size_t);
extern __kernel_size_t __strlen(const char *);
extern __kernel_size_t strlen(const char *);
+extern char saved_command_line[];
extern void linux_sparc_syscall(void);
extern void rtrap(void);
extern void show_regs(struct pt_regs *);
diff -puN arch/sparc/kernel/setup.c~a arch/sparc/kernel/setup.c
--- 25/arch/sparc/kernel/setup.c~a 2004-06-28 00:08:52.802554056 -0700
+++ 25-akpm/arch/sparc/kernel/setup.c 2004-06-28 00:08:58.882629744 -0700
@@ -245,7 +245,8 @@ extern unsigned short ram_flags;

extern int root_mountflags;

-char reboot_command[COMMAND_LINE_SIZE];
+char saved_command_line[256];
+char reboot_command[256];
enum sparc_cpu sparc_cpu_model;

struct tt_entry *sparc_ttable;
diff -puN arch/sparc/kernel/sparc_ksyms.c~a arch/sparc/kernel/sparc_ksyms.c
--- 25/arch/sparc/kernel/sparc_ksyms.c~a 2004-06-28 00:08:52.830549800 -0700
+++ 25-akpm/arch/sparc/kernel/sparc_ksyms.c 2004-06-28 00:08:58.883629592 -0700
@@ -11,7 +11,6 @@

#include <linux/config.h>
#include <linux/module.h>
-#include <linux/init.h>
#include <linux/smp.h>
#include <linux/types.h>
#include <linux/string.h>
@@ -75,6 +74,7 @@ extern void *__memscan_zero(void *, size
extern void *__memscan_generic(void *, int, size_t);
extern int __memcmp(const void *, const void *, __kernel_size_t);
extern int __strncmp(const char *, const char *, __kernel_size_t);
+extern char saved_command_line[];

extern void bcopy (const char *, char *, int);
extern int __ashrdi3(int, int);
diff -puN arch/um/kernel/user_util.c~a arch/um/kernel/user_util.c
--- 25/arch/um/kernel/user_util.c~a 2004-06-28 00:08:52.858545544 -0700
+++ 25-akpm/arch/um/kernel/user_util.c 2004-06-28 00:08:58.884629440 -0700
@@ -34,6 +34,7 @@
#define COMMAND_LINE_SIZE _POSIX_ARG_MAX

/* Changed in linux_main and setup_arch, which run before SMP is started */
+char saved_command_line[COMMAND_LINE_SIZE] = { 0 };
char command_line[COMMAND_LINE_SIZE] = { 0 };

void add_arg(char *cmd_line, char *arg)
diff -puN arch/v850/kernel/setup.c~a arch/v850/kernel/setup.c
--- 25/arch/v850/kernel/setup.c~a 2004-06-28 00:08:52.894540072 -0700
+++ 25-akpm/arch/v850/kernel/setup.c 2004-06-28 00:08:58.884629440 -0700
@@ -20,7 +20,6 @@
#include <linux/major.h>
#include <linux/root_dev.h>
#include <linux/mtd/mtd.h>
-#include <linux/init.h>

#include <asm/irq.h>
#include <asm/setup.h>
@@ -42,7 +41,8 @@ extern char _root_fs_image_start __attri
extern char _root_fs_image_end __attribute__ ((__weak__));


-char command_line[COMMAND_LINE_SIZE];
+char command_line[512];
+char saved_command_line[512];

/* Memory not used by the kernel. */
static unsigned long total_ram_pages;
diff -puN arch/x86_64/kernel/setup.c~a arch/x86_64/kernel/setup.c
--- 25/arch/x86_64/kernel/setup.c~a 2004-06-28 00:08:52.927535056 -0700
+++ 25-akpm/arch/x86_64/kernel/setup.c 2004-06-28 00:08:58.885629288 -0700
@@ -101,6 +101,7 @@ extern int root_mountflags;
extern char _text, _etext, _edata, _end;

char command_line[COMMAND_LINE_SIZE];
+char saved_command_line[COMMAND_LINE_SIZE];

struct resource standard_io_resources[] = {
{ "dma1", 0x00, 0x1f, IORESOURCE_BUSY | IORESOURCE_IO },
diff -puN drivers/sbus/char/openprom.c~a drivers/sbus/char/openprom.c
--- 25/drivers/sbus/char/openprom.c~a 2004-06-28 00:08:52.960530040 -0700
+++ 25-akpm/drivers/sbus/char/openprom.c 2004-06-28 00:08:58.898627312 -0700
@@ -149,6 +149,7 @@ static int openprom_sunos_ioctl(struct i
char buffer[OPROMMAXPARAM+1], *buf;
struct openpromio *opp;
int bufsize, len, error = 0;
+ extern char saved_command_line[];
static int cnt;

if (cmd == OPROMSETOPT)
diff -puN fs/proc/kcore.c~a fs/proc/kcore.c
--- 25/fs/proc/kcore.c~a 2004-06-28 00:08:53.002523656 -0700
+++ 25-akpm/fs/proc/kcore.c 2004-06-28 00:08:58.899627160 -0700
@@ -18,7 +18,6 @@
#include <linux/elfcore.h>
#include <linux/vmalloc.h>
#include <linux/highmem.h>
-#include <linux/init.h>
#include <asm/uaccess.h>
#include <asm/io.h>

@@ -85,6 +84,8 @@ kclist_del(void *addr)
return 0;
}

+extern char saved_command_line[];
+
static size_t get_kcore_size(int *nphdr, size_t *elf_buflen)
{
size_t try, size;
diff -puN fs/proc/proc_misc.c~a fs/proc/proc_misc.c
--- 25/fs/proc/proc_misc.c~a 2004-06-28 00:08:53.030519400 -0700
+++ 25-akpm/fs/proc/proc_misc.c 2004-06-28 00:08:58.899627160 -0700
@@ -518,6 +518,7 @@ static int filesystems_read_proc(char *p
static int cmdline_read_proc(char *page, char **start, off_t off,
int count, int *eof, void *data)
{
+ extern char saved_command_line[];
int len;

len = sprintf(page, "%s\n", saved_command_line);
diff -L include/asm-alpha/setup.h -puN include/asm-alpha/setup.h~a /dev/null
--- 25/include/asm-alpha/setup.h
+++ /dev/null 2004-04-06 10:56:48.000000000 -0700
@@ -1,6 +0,0 @@
-#ifndef __ALPHA_SETUP_H
-#define __ALPHA_SETUP_H
-
-#define COMMAND_LINE_SIZE 256
-
-#endif
diff -puN include/asm-alpha/system.h~a include/asm-alpha/system.h
--- 25/include/asm-alpha/system.h~a 2004-06-28 00:08:53.099508912 -0700
+++ 25-akpm/include/asm-alpha/system.h 2004-06-28 00:08:58.901626856 -0700
@@ -43,6 +43,7 @@
*/
#define PARAM ZERO_PGE
#define COMMAND_LINE ((char*)(PARAM + 0x0000))
+#define COMMAND_LINE_SIZE 256
#define INITRD_START (*(unsigned long *) (PARAM+0x100))
#define INITRD_SIZE (*(unsigned long *) (PARAM+0x108))

diff -puN include/asm-cris/setup.h~a include/asm-cris/setup.h
--- 25/include/asm-cris/setup.h~a 2004-06-28 00:08:53.138502984 -0700
+++ 25-akpm/include/asm-cris/setup.h 2004-06-28 00:08:58.901626856 -0700
@@ -1,6 +1,3 @@
#ifndef _CRIS_SETUP_H
#define _CRIS_SETUP_H
-
-#define COMMAND_LINE_SIZE 256
-
#endif
diff -puN include/asm-h8300/setup.h~a include/asm-h8300/setup.h
--- 25/include/asm-h8300/setup.h~a 2004-06-28 00:08:53.181496448 -0700
+++ 25-akpm/include/asm-h8300/setup.h 2004-06-28 00:08:58.902626704 -0700
@@ -1,6 +1 @@
-#ifndef __H8300_SETUP_H
-#define __H8300_SETUP_H
-
-#define COMMAND_LINE_SIZE 512
-
-#endif
+/* Nothing do */
diff -puN include/asm-i386/param.h~a include/asm-i386/param.h
--- 25/include/asm-i386/param.h~a 2004-06-28 00:08:53.215491280 -0700
+++ 25-akpm/include/asm-i386/param.h 2004-06-28 00:08:58.904626400 -0700
@@ -18,6 +18,5 @@
#endif

#define MAXHOSTNAMELEN 64 /* max length of hostname */
-#define COMMAND_LINE_SIZE 256

#endif
diff -L include/asm-ia64/setup.h -puN include/asm-ia64/setup.h~a /dev/null
--- 25/include/asm-ia64/setup.h
+++ /dev/null 2004-04-06 10:56:48.000000000 -0700
@@ -1,6 +0,0 @@
-#ifndef __IA64_SETUP_H
-#define __IA64_SETUP_H
-
-#define COMMAND_LINE_SIZE 512
-
-#endif
diff -puN include/asm-m68knommu/setup.h~a include/asm-m68knommu/setup.h
--- 25/include/asm-m68knommu/setup.h~a 2004-06-28 00:08:53.293479424 -0700
+++ 25-akpm/include/asm-m68knommu/setup.h 2004-06-28 00:08:58.905626248 -0700
@@ -1,5 +1 @@
#include <asm-m68k/setup.h>
-
-/* We have a bigger command line buffer. */
-#undef COMMAND_LINE_SIZE
-#define COMMAND_LINE_SIZE 512
diff -puN include/asm-m68k/setup.h~a include/asm-m68k/setup.h
--- 25/include/asm-m68k/setup.h~a 2004-06-28 00:08:53.329473952 -0700
+++ 25-akpm/include/asm-m68k/setup.h 2004-06-28 00:08:58.906626096 -0700
@@ -357,7 +357,6 @@ extern int m68k_is040or060;

#define NUM_MEMINFO 4
#define CL_SIZE 256
-#define COMMAND_LINE_SIZE CL_SIZE

#ifndef __ASSEMBLY__
extern int m68k_num_memory; /* # of memory blocks found (and used) */
diff -puN include/asm-mips/bootinfo.h~a include/asm-mips/bootinfo.h
--- 25/include/asm-mips/bootinfo.h~a 2004-06-28 00:08:53.368468024 -0700
+++ 25-akpm/include/asm-mips/bootinfo.h 2004-06-28 00:08:58.906626096 -0700
@@ -12,7 +12,6 @@
#define _ASM_BOOTINFO_H

#include <linux/types.h>
-#include <asm/setup.h>

/*
* The MACH_GROUP_ IDs are the equivalent to PCI vendor IDs; the remaining
@@ -210,7 +209,7 @@
#define MACH_GROUP_TITAN 22 /* PMC-Sierra Titan */
#define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */

-#define CL_SIZE COMMAND_LINE_SIZE
+#define CL_SIZE (256)

const char *get_system_type(void);

diff -L include/asm-mips/setup.h -puN include/asm-mips/setup.h~a /dev/null
--- 25/include/asm-mips/setup.h
+++ /dev/null 2004-04-06 10:56:48.000000000 -0700
@@ -1,8 +0,0 @@
-#ifdef __KERNEL__
-#ifndef _MIPS_SETUP_H
-#define _MIPS_SETUP_H
-
-#define COMMAND_LINE_SIZE 256
-
-#endif /* __SETUP_H */
-#endif /* __KERNEL__ */
diff -puN include/asm-parisc/setup.h~a include/asm-parisc/setup.h
--- 25/include/asm-parisc/setup.h~a 2004-06-28 00:08:53.433458144 -0700
+++ 25-akpm/include/asm-parisc/setup.h 2004-06-28 00:08:58.908625792 -0700
@@ -1,6 +1,10 @@
-#ifndef _PARISC_SETUP_H
-#define _PARISC_SETUP_H
+/*
+ * Just a place holder. We don't want to have to test x86 before
+ * we include stuff
+ */

-#define COMMAND_LINE_SIZE 1024
+#ifndef _i386_SETUP_H
+#define _i386_SETUP_H

-#endif /* _PARISC_SETUP_H */
+
+#endif /* _i386_SETUP_H */
diff -puN include/asm-ppc64/machdep.h~a include/asm-ppc64/machdep.h
--- 25/include/asm-ppc64/machdep.h~a 2004-06-28 00:08:53.467452976 -0700
+++ 25-akpm/include/asm-ppc64/machdep.h 2004-06-28 00:08:58.908625792 -0700
@@ -11,7 +11,6 @@

#include <linux/config.h>
#include <linux/seq_file.h>
-#include <linux/init.h>
#include <linux/dma-mapping.h>

#include <asm/setup.h>
@@ -115,7 +114,9 @@ struct machdep_calls {
};

extern struct machdep_calls ppc_md;
+#define COMMAND_LINE_SIZE 512
extern char cmd_line[COMMAND_LINE_SIZE];
+extern char saved_command_line[COMMAND_LINE_SIZE];

/* Functions to produce codes on the leds.
* The SRC code should be unique for the message category and should
diff -puN include/asm-ppc64/setup.h~a include/asm-ppc64/setup.h
--- 25/include/asm-ppc64/setup.h~a 2004-06-28 00:08:53.495448720 -0700
+++ 25-akpm/include/asm-ppc64/setup.h 2004-06-28 00:08:58.909625640 -0700
@@ -1,6 +1,6 @@
#ifndef _PPC_SETUP_H
#define _PPC_SETUP_H

-#define COMMAND_LINE_SIZE 512
+/* This is a place holder include */

#endif /* _PPC_SETUP_H */
diff -puN include/asm-ppc/machdep.h~a include/asm-ppc/machdep.h
--- 25/include/asm-ppc/machdep.h~a 2004-06-28 00:08:53.529443552 -0700
+++ 25-akpm/include/asm-ppc/machdep.h 2004-06-28 00:08:58.910625488 -0700
@@ -108,6 +108,7 @@ struct machdep_calls {
};

extern struct machdep_calls ppc_md;
+#define COMMAND_LINE_SIZE 512
extern char cmd_line[COMMAND_LINE_SIZE];

extern void setup_pci_ptrs(void);
diff -puN include/asm-ppc/setup.h~a include/asm-ppc/setup.h
--- 25/include/asm-ppc/setup.h~a 2004-06-28 00:08:53.557439296 -0700
+++ 25-akpm/include/asm-ppc/setup.h 2004-06-28 00:08:58.911625336 -0700
@@ -6,9 +6,6 @@
#define m68k_memory memory

#include <asm-m68k/setup.h>
-/* We have a bigger command line buffer. */
-#undef COMMAND_LINE_SIZE
-#define COMMAND_LINE_SIZE 512

#endif /* _PPC_SETUP_H */
#endif /* __KERNEL__ */
diff -L include/asm-sh/setup.h -puN include/asm-sh/setup.h~a /dev/null
--- 25/include/asm-sh/setup.h
+++ /dev/null 2004-04-06 10:56:48.000000000 -0700
@@ -1,8 +0,0 @@
-#ifdef __KERNEL__
-#ifndef _SH_SETUP_H
-#define _SH_SETUP_H
-
-#define COMMAND_LINE_SIZE 256
-
-#endif /* _SH_SETUP_H */
-#endif /* __KERNEL__ */
diff -puN include/asm-sparc64/setup.h~a include/asm-sparc64/setup.h
--- 25/include/asm-sparc64/setup.h~a 2004-06-28 00:08:53.634427592 -0700
+++ 25-akpm/include/asm-sparc64/setup.h 2004-06-28 00:08:58.912625184 -0700
@@ -5,6 +5,5 @@
#ifndef _SPARC64_SETUP_H
#define _SPARC64_SETUP_H

-#define COMMAND_LINE_SIZE 256

#endif /* _SPARC64_SETUP_H */
diff -puN include/asm-sparc/setup.h~a include/asm-sparc/setup.h
--- 25/include/asm-sparc/setup.h~a 2004-06-28 00:08:53.669422272 -0700
+++ 25-akpm/include/asm-sparc/setup.h 2004-06-28 00:08:58.913625032 -0700
@@ -5,6 +5,5 @@
#ifndef _SPARC_SETUP_H
#define _SPARC_SETUP_H

-#define COMMAND_LINE_SIZE 256

#endif /* _SPARC_SETUP_H */
diff -L include/asm-um/setup.h -puN include/asm-um/setup.h~a /dev/null
--- 25/include/asm-um/setup.h
+++ /dev/null 2004-04-06 10:56:48.000000000 -0700
@@ -1,6 +0,0 @@
-#ifndef SETUP_H_INCLUDED
-#define SETUP_H_INCLUDED
-
-#define COMMAND_LINE_SIZE 512
-
-#endif /* SETUP_H_INCLUDED */
diff -L include/asm-v850/setup.h -puN include/asm-v850/setup.h~a /dev/null
--- 25/include/asm-v850/setup.h
+++ /dev/null 2004-04-06 10:56:48.000000000 -0700
@@ -1,6 +0,0 @@
-#ifndef _V850_SETUP_H
-#define _V850_SETUP_H
-
-#define COMMAND_LINE_SIZE 512
-
-#endif /* __SETUP_H */
diff -puN include/asm-x86_64/bootsetup.h~a include/asm-x86_64/bootsetup.h
--- 25/include/asm-x86_64/bootsetup.h~a 2004-06-28 00:08:53.768407224 -0700
+++ 25-akpm/include/asm-x86_64/bootsetup.h 2004-06-28 00:08:58.914624880 -0700
@@ -30,6 +30,7 @@ extern char x86_boot_params[2048];
#define EDD_NR (*(unsigned char *) (PARAM+EDDNR))
#define EDD_BUF ((struct edd_info *) (PARAM+EDDBUF))
#define COMMAND_LINE saved_command_line
+#define COMMAND_LINE_SIZE 256

#define RAMDISK_IMAGE_START_MASK 0x07FF
#define RAMDISK_PROMPT_FLAG 0x8000
diff -puN include/asm-x86_64/setup.h~a include/asm-x86_64/setup.h
--- 25/include/asm-x86_64/setup.h~a 2004-06-28 00:08:53.796402968 -0700
+++ 25-akpm/include/asm-x86_64/setup.h 2004-06-28 00:08:58.915624728 -0700
@@ -1,6 +1,10 @@
+/*
+ * Just a place holder. We don't want to have to test x86 before
+ * we include stuff
+ */
+
#ifndef _x8664_SETUP_H
#define _x8664_SETUP_H

-#define COMMAND_LINE_SIZE 256

#endif
diff -puN include/linux/init.h~a include/linux/init.h
--- 25/include/linux/init.h~a 2004-06-28 00:08:53.837396736 -0700
+++ 25-akpm/include/linux/init.h 2004-06-28 00:09:01.336256736 -0700
@@ -110,33 +110,25 @@ extern char saved_command_line[];
struct obs_kernel_param {
const char *str;
int (*setup_func)(char *);
- int early;
};

-/* Only for really core code. See moduleparam.h for the normal way. */
-#define __setup_param(str, unique_id, fn, early) \
+/* OBSOLETE: see moduleparam.h for the right way. */
+#define __setup_param(str, unique_id, fn) \
static char __setup_str_##unique_id[] __initdata = str; \
static struct obs_kernel_param __setup_##unique_id \
__attribute_used__ \
__attribute__((__section__(".init.setup"))) \
- = { __setup_str_##unique_id, fn, early }
+ = { __setup_str_##unique_id, fn }

#define __setup_null_param(str, unique_id) \
- __setup_param(str, unique_id, NULL, 0)
+ __setup_param(str, unique_id, NULL)

#define __setup(str, fn) \
- __setup_param(str, fn, fn, 0)
+ __setup_param(str, fn, fn)

#define __obsolete_setup(str) \
__setup_null_param(str, __LINE__)

-/* NOTE: fn is as per module_param, not __setup! Emits warning if fn
- * returns non-zero. */
-#define early_param(str, fn) \
- __setup_param(str, fn, fn, 1)
-
-/* Relies on saved_command_line being set */
-void __init parse_early_param(void);
#endif /* __ASSEMBLY__ */

/**
diff -puN init/main.c~a init/main.c
--- 25/init/main.c~a 2004-06-28 00:08:53.881390048 -0700
+++ 25-akpm/init/main.c 2004-06-28 00:09:01.351254456 -0700
@@ -112,9 +112,6 @@ extern void time_init(void);
void (*late_time_init)(void);
extern void softirq_init(void);

-/* Untouched command line (eg. for /proc) saved by arch-specific code. */
-char saved_command_line[COMMAND_LINE_SIZE];
-
static char *execute_command;

/* Setup configured maximum number of CPUs to activate */
@@ -161,14 +158,8 @@ static int __init obsolete_checksetup(ch
do {
int n = strlen(p->str);
if (!strncmp(line, p->str, n)) {
- if (p->early) {
- /* Already done in parse_early_param? (Needs
- * exact match on param part) */
- if (line[n] == '\0' || line[n] == '=')
- return 1;
- } else if (!p->setup_func) {
- printk(KERN_WARNING "Parameter %s is obsolete,"
- " ignored\n", p->str);
+ if (!p->setup_func) {
+ printk(KERN_WARNING "Parameter %s is obsolete, ignored\n", p->str);
return 1;
} else if (p->setup_func(line + n))
return 1;
@@ -403,38 +394,6 @@ static void noinline rest_init(void)
cpu_idle();
}

-/* Check for early params. */
-static int __init do_early_param(char *param, char *val)
-{
- struct obs_kernel_param *p;
- extern struct obs_kernel_param __setup_start, __setup_end;
-
- for (p = &__setup_start; p < &__setup_end; p++) {
- if (p->early && strcmp(param, p->str) == 0) {
- if (p->setup_func(val) != 0)
- printk(KERN_WARNING
- "Malformed early option '%s'\n", param);
- }
- }
- /* We accept everything at this stage. */
- return 0;
-}
-
-/* Arch code calls this early on, or if not, just before other parsing. */
-void __init parse_early_param(void)
-{
- static __initdata int done = 0;
- static __initdata char tmp_cmdline[COMMAND_LINE_SIZE];
-
- if (done)
- return;
-
- /* All fall through to do_early_param. */
- strlcpy(tmp_cmdline, saved_command_line, COMMAND_LINE_SIZE);
- parse_args("early options", tmp_cmdline, NULL, 0, do_early_param);
- done = 1;
-}
-
/*
* Activate the first processor.
*/
@@ -442,6 +401,7 @@ void __init parse_early_param(void)
asmlinkage void __init start_kernel(void)
{
char * command_line;
+ extern char saved_command_line[];
extern struct kernel_param __start___param[], __stop___param[];
/*
* Interrupts are still disabled. Do necessary setups, then
@@ -478,7 +438,6 @@ asmlinkage void __init start_kernel(void
page_alloc_init();
trap_init();
printk("Kernel command line: %s\n", saved_command_line);
- parse_early_param();
parse_args("Booting kernel", command_line, __start___param,
__stop___param - __start___param,
&unknown_bootoption);
@@ -719,16 +678,3 @@ static int init(void * unused)

panic("No init found. Try passing init= option to kernel.");
}
-
-static int early_param_test(char *rest)
-{
- printk("early_parm_test: %s\n", rest ?: "(null)");
- return rest ? 0 : -EINVAL;
-}
-early_param("testsetup", early_param_test);
-static int early_setup_test(char *rest)
-{
- printk("early_setup_test: %s\n", rest ?: "(null)");
- return 0;
-}
-__setup("testsetup_long", early_setup_test);

_

2004-06-28 15:07:47

by John Cherry

[permalink] [raw]
Subject: Re: 2.6.7-mm3 (compile stats)

Sample of the errors in the allyesconfig build. Adrian Bunk has a patch
for this.

Warnings/Errors Summary
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
sound/built-in.o(.text+0x10aee2): In function
`snd_gus_synth_new_device':
sound/isa/gus/gus_synth.c:272: undefined reference to
`snd_seq_iwffff_init'
make: [.tmp_vmlinux1] Error 1 (ignored)
KSYM .tmp_kallsyms1.S


----------------------------------------------------------------------

Linux 2.6 (mm tree) Compile Statistics (gcc 3.2.2)


Kernel bzImage bzImage bzImage modules bzImage modules
(defconfig) (allno) (allyes) (allyes) (allmod) (allmod)
--------------- ---------- -------- -------- -------- -------- --------
2.6.7-mm3 0w/0e 0w/0e 90w/6e 5w/0e 1w/0e 86w/0e
2.6.7-mm2 0w/0e 0w/0e 109w/0e 7w/0e 1w/0e 106w/0e
2.6.7-mm1 0w/0e 5w/0e 108w/0e 5w/0e 1w/0e 104w/0e
2.6.7-rc3-mm2 0w/0e 5w/0e 105w/10e 5w/0e 2w/0e 100w/2e
2.6.7-rc3-mm1 0w/0e 5w/0e 104w/10e 5w/0e 2w/0e 100w/2e
2.6.7-rc2-mm2 0w/0e 5w/0e 109w/10e 5w/0e 2w/0e 105w/2e
2.6.7-rc2-mm1 0w/0e 12w/0e 158w/13e 5w/0e 3w/0e 153w/4e
2.6.7-rc1-mm1 0w/0e 6w/0e 108w/0e 5w/0e 2w/0e 104w/0e
2.6.6-mm5 0w/0e 0w/0e 109w/5e 5w/0e 2w/0e 110w/0e
2.6.6-mm4 0w/0e 0w/0e 112w/9e 5w/0e 2w/5e 106w/1e
2.6.6-mm3 3w/9e 0w/0e 120w/26e 5w/0e 2w/0e 114w/10e
2.6.6-mm2 4w/11e 0w/0e 120w/24e 6w/0e 2w/0e 118w/9e
2.6.6-mm1 1w/0e 0w/0e 118w/25e 6w/0e 2w/0e 114w/10e
2.6.6-rc3-mm2 0w/0e 0w/0e 117w/ 0e 8w/0e 2w/0e 116w/0e
2.6.6-rc3-mm1 0w/0e 0w/0e 120w/10e 8w/0e 2w/0e 152w/2e
2.6.6-rc2-mm2 0w/0e 1w/5e 118w/ 0e 8w/0e 3w/0e 118w/0e
2.6.6-rc2-mm1 0w/0e 0w/0e 115w/ 0e 7w/0e 3w/0e 116w/0e
2.6.6-rc1-mm1 0w/0e 0w/7e 122w/ 0e 7w/0e 4w/0e 122w/0e
2.6.5-mm6 0w/0e 0w/0e 123w/ 0e 7w/0e 4w/0e 124w/0e
2.6.5-mm5 0w/0e 0w/0e 119w/ 0e 7w/0e 4w/0e 120w/0e
2.6.5-mm4 0w/0e 0w/0e 120w/ 0e 7w/0e 4w/0e 121w/0e
2.6.5-mm3 0w/0e 1w/0e 121w/12e 7w/0e 3w/0e 123w/0e
2.6.5-mm2 0w/0e 0w/0e 128w/12e 7w/0e 3w/0e 134w/0e
2.6.5-mm1 0w/0e 5w/0e 122w/ 0e 7w/0e 3w/0e 124w/0e
2.6.5-rc3-mm4 0w/0e 0w/0e 124w/ 0e 8w/0e 4w/0e 126w/0e
2.6.5-rc3-mm3 0w/0e 5w/0e 129w/14e 8w/0e 4w/0e 129w/6e
2.6.5-rc3-mm2 0w/0e 5w/0e 130w/14e 8w/0e 4w/0e 129w/6e
2.6.5-rc3-mm1 0w/0e 5w/0e 129w/ 0e 8w/0e 4w/0e 129w/0e
2.6.5-rc2-mm5 0w/0e 5w/0e 130w/ 0e 8w/0e 4w/0e 129w/0e
2.6.5-rc2-mm4 0w/0e 5w/0e 134w/ 0e 8w/0e 3w/0e 133w/0e
2.6.5-rc2-mm3 0w/0e 5w/0e 134w/ 0e 8w/0e 3w/0e 133w/0e
2.6.5-rc2-mm2 0w/0e 5w/0e 137w/ 0e 8w/0e 3w/0e 134w/0e
2.6.5-rc2-mm1 0w/0e 5w/0e 136w/ 0e 8w/0e 3w/0e 134w/0e
2.6.5-rc1-mm2 0w/0e 5w/0e 135w/ 5e 8w/0e 3w/0e 133w/0e
2.6.5-rc1-mm1 0w/0e 5w/0e 135w/ 5e 8w/0e 3w/0e 133w/0e
2.6.4-mm2 1w/2e 5w/2e 144w/10e 8w/0e 3w/2e 144w/0e
2.6.4-mm1 1w/0e 5w/0e 146w/ 5e 8w/0e 3w/0e 144w/0e
2.6.4-rc2-mm1 1w/0e 5w/0e 146w/12e 11w/0e 3w/0e 147w/2e
2.6.4-rc1-mm2 1w/0e 5w/0e 144w/ 0e 11w/0e 3w/0e 145w/0e
2.6.4-rc1-mm1 1w/0e 5w/0e 147w/ 5e 11w/0e 3w/0e 147w/0e
2.6.3-mm4 1w/0e 5w/0e 146w/ 0e 7w/0e 3w/0e 142w/0e
2.6.3-mm3 1w/2e 5w/2e 146w/15e 7w/0e 3w/2e 144w/5e
2.6.3-mm2 1w/8e 5w/0e 140w/ 0e 7w/0e 3w/0e 138w/0e
2.6.3-mm1 1w/0e 5w/0e 143w/ 5e 7w/0e 3w/0e 141w/0e
2.6.3-rc3-mm1 1w/0e 0w/0e 144w/13e 7w/0e 3w/0e 142w/3e
2.6.3-rc2-mm1 1w/0e 0w/265e 144w/ 5e 7w/0e 3w/0e 145w/0e
2.6.3-rc1-mm1 1w/0e 0w/265e 141w/ 5e 7w/0e 3w/0e 143w/0e
2.6.2-mm1 2w/0e 0w/264e 147w/ 5e 7w/0e 3w/0e 173w/0e
2.6.2-rc3-mm1 2w/0e 0w/265e 146w/ 5e 7w/0e 3w/0e 172w/0e
2.6.2-rc2-mm2 0w/0e 0w/264e 145w/ 5e 7w/0e 3w/0e 171w/0e
2.6.2-rc2-mm1 0w/0e 0w/264e 146w/ 5e 7w/0e 3w/0e 172w/0e
2.6.2-rc1-mm3 0w/0e 0w/265e 144w/ 8e 7w/0e 3w/0e 169w/0e
2.6.2-rc1-mm2 0w/0e 0w/264e 144w/ 5e 10w/0e 3w/0e 171w/0e
2.6.2-rc1-mm1 0w/0e 0w/264e 144w/ 5e 10w/0e 3w/0e 171w/0e
2.6.1-mm5 2w/5e 0w/264e 153w/11e 10w/0e 3w/0e 180w/0e
2.6.1-mm4 0w/821e 0w/264e 154w/ 5e 8w/1e 5w/0e 179w/0e
2.6.1-mm3 0w/0e 0w/0e 151w/ 5e 10w/0e 3w/0e 177w/0e
2.6.1-mm2 0w/0e 0w/0e 143w/ 5e 12w/0e 3w/0e 171w/0e
2.6.1-mm1 0w/0e 0w/0e 146w/ 9e 12w/0e 6w/0e 171w/0e
2.6.1-rc2-mm1 0w/0e 0w/0e 149w/ 0e 12w/0e 6w/0e 171w/4e
2.6.1-rc1-mm2 0w/0e 0w/0e 157w/15e 12w/0e 3w/0e 185w/4e
2.6.1-rc1-mm1 0w/0e 0w/0e 156w/10e 12w/0e 3w/0e 184w/2e
2.6.0-mm2 0w/0e 0w/0e 161w/ 0e 12w/0e 3w/0e 189w/0e
2.6.0-mm1 0w/0e 0w/0e 173w/ 0e 12w/0e 3w/0e 212w/0e

Web page with links to complete details:
http://developer.osdl.org/cherry/compile/

John



2004-06-28 19:10:33

by Rafał J. Wysocki

[permalink] [raw]
Subject: Re: 2.6.7-mm3 [broken serial console and Kernel BUG on dual Opteron]

On Monday 28 of June 2004 09:19, Andrew Morton wrote:
> "R. J. Wysocki" <[email protected]> wrote:
> > On Sunday 27 of June 2004 08:31, Andrew Morton wrote:
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.
> > >6.7-m m3/
> >
> > I see the following: (in the order of importance - to me ;-)):
> >
> > 1) Serial console does not work (at all), but earlyprintk _does_ (output
> > goes to tty0 after earlyprintk has finished).
> >
> > Please, fix the serial console ASAP. It's a pain to hand-rewrite call
> > traces
>
> erk, sorry, I thought the x86_64 console= parsing breakage had been fixed.
>
> The below should get you going again while we remember what the problem
> was.

It's revived the serial console, so thanks a lot! BTW, can you tell me
please, what it actually does? I see that it applies to many architectures,
not just x86-64 ...

FYIO, I see that for the following command line:

root=/dev/sdc3 vga=792 earlyprintk=serial,ttyS0,115200 console=ttyS0,115200
console=tty0 hdc=ide-scsi

it makes all of the kernel and system boot messages go to ttyS0 (see the
attached log) while tty0 gets only kernel messages ("normally" it worked in
the reverse way), which of course is not a big deal.

Now, I'm going to set the DEBUG_SLAB and see what happens. ;-)

Yours,
rjw

----------------------------
For a successful technology, reality must take precedence over public
relations, for nature cannot be fooled.
-- Richard P. Feynman


Attachments:
(No filename) (1.45 kB)
2.6.7-mm3-boot.log (26.18 kB)
Download all attachments

2004-06-28 19:21:52

by Rafał J. Wysocki

[permalink] [raw]
Subject: 2.6.7-mm3: Kernel BUG on dual Opteron with DEBUG_SLAB

On Monday 28 of June 2004 21:18, R. J. Wysocki wrote:
> On Monday 28 of June 2004 09:19, Andrew Morton wrote:
> > "R. J. Wysocki" <[email protected]> wrote:
> > > On Sunday 27 of June 2004 08:31, Andrew Morton wrote:
> > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/
> > > >2. 6.7-m m3/
> > >
> > > I see the following: (in the order of importance - to me ;-)):
> > >
> > > 1) Serial console does not work (at all), but earlyprintk _does_
> > > (output goes to tty0 after earlyprintk has finished).
> > >
> > > Please, fix the serial console ASAP. It's a pain to hand-rewrite call
> > > traces
> >
> > erk, sorry, I thought the x86_64 console= parsing breakage had been
> > fixed.
> >
> > The below should get you going again while we remember what the problem
> > was.
>
> It's revived the serial console, so thanks a lot! BTW, can you tell me
> please, what it actually does? I see that it applies to many
> architectures, not just x86-64 ...

[snip]

> Now, I'm going to set the DEBUG_SLAB and see what happens. ;-)

Well, it's in the attachement. Enjoy,

rjw

----------------------------
For a successful technology, reality must take precedence over public
relations, for nature cannot be fooled.
-- Richard P. Feynman


Attachments:
(No filename) (1.24 kB)
2.6.7-mm3-crash.log (50.67 kB)
Download all attachments

2004-06-28 19:33:35

by Francois Romieu

[permalink] [raw]
Subject: [PATCH 2.6.7-mm3] cirrusfb: minor fixes

Testers welcome.

- fix unbalanced invocation of pci_enable_device();
- leaks plugged in cirrusfb_zorro_setup();
- move framebuffer_release() into cirrusfb_{pci/zorro}_unmap() to balance
cirrusfb_{pci/zorro}_setup();
- make cirrusfb_{pci/zorro}_setup() return adequate error codes when
something fails;
- cirrusfb_zorro_unmap: iounmap() now take as argument values previously
returned by ioremap().

Signed-off-by: Francois Romieu <[email protected]>

diff -puN drivers/video/cirrusfb.c~cirrusfb-00 drivers/video/cirrusfb.c
--- linux-2.6.7/drivers/video/cirrusfb.c~cirrusfb-00 2004-06-24 22:55:10.000000000 +0200
+++ linux-2.6.7-fr/drivers/video/cirrusfb.c 2004-06-28 21:10:41.000000000 +0200
@@ -2144,15 +2144,17 @@ static void get_pci_addrs (const struct

static void __devexit cirrusfb_pci_unmap (struct cirrusfb_info *cinfo)
{
- iounmap (cinfo->fbmem);
- release_mem_region(cinfo->fbmem_phys, cinfo->size);
+ struct pci_dev *pdev = cinfo->pdev;

+ iounmap(cinfo->fbmem);
#if 0 /* if system didn't claim this region, we would... */
release_mem_region(0xA0000, 65535);
#endif
-
if (release_io_ports)
release_region(0x3C0, 32);
+ pci_release_regions(pdev);
+ framebuffer_release(cinfo->info);
+ pci_disable_device(pdev);
}


@@ -2163,16 +2165,19 @@ static struct cirrusfb_info *cirrusfb_pc
struct fb_info *info;
cirrusfb_board_t btype;
unsigned long board_addr, board_size;
+ int ret;

- if (pci_enable_device(pdev) != 0) {
+ ret = pci_enable_device(pdev);
+ if (ret < 0) {
printk(KERN_ERR "cirrusfb: Cannot enable PCI device\n");
- return NULL;
+ goto err_out;
}

info = framebuffer_alloc(sizeof(struct cirrusfb_info), &pdev->dev);
if (!info) {
- printk (KERN_ERR "cirrusfb: could not allocate memory\n");
- return NULL;
+ printk(KERN_ERR "cirrusfb: could not allocate memory\n");
+ ret = -ENOMEM;
+ goto err_disable;
}

cinfo = info->par;
@@ -2202,25 +2207,30 @@ static struct cirrusfb_info *cirrusfb_pc
board_size = (btype == BT_GD5480) ?
32 * MB_ : cirrusfb_get_memsize (cinfo->regbase);

- if (!request_mem_region(board_addr, board_size, "cirrusfb")) {
+ ret = pci_request_regions(pdev, "cirrusfb");
+ if (ret <0) {
printk(KERN_ERR "cirrusfb: cannot reserve region 0x%lx, abort\n",
board_addr);
- framebuffer_release (info);
- return NULL;
+ goto err_release_fb;
}
#if 0 /* if the system didn't claim this region, we would... */
if (!request_mem_region(0xA0000, 65535, "cirrusfb")) {
- printk(KERN_ERR "cirrusfb: cannot reserve region 0x%lx, abort\n",
+ printk(KERN_ERR "cirrusfb: cannot reserve region 0x%lx, abort\n"
+,
0xA0000L);
- release_mem_region(board_addr, board_size);
- framebuffer_release (info);
- return NULL;
+ ret = -EBUSY;
+ goto err_release_regions;
}
#endif
if (request_region(0x3C0, 32, "cirrusfb"))
release_io_ports = 1;

- cinfo->fbmem = ioremap (board_addr, board_size);
+ cinfo->fbmem = ioremap(board_addr, board_size);
+ if (!cinfo->fbmem) {
+ ret = -EIO;
+ goto err_release_legacy;
+ }
+
cinfo->fbmem_phys = board_addr;
cinfo->size = board_size;

@@ -2228,6 +2238,21 @@ static struct cirrusfb_info *cirrusfb_pc
printk ("Cirrus Logic chipset on PCI bus\n");

return cinfo;
+
+err_release_legacy:
+ if (release_io_ports)
+ release_region(0x3C0, 32);
+#if 0
+ release_mem_region(0xA0000, 65535);
+err_release_regions:
+#endif
+ pci_release_regions(pdev);
+err_release_fb:
+ framebuffer_release(info);
+err_disable:
+ pci_disable_device(pdev);
+err_out:
+ return ERR_PTR(ret);
}
#endif /* CONFIG_PCI */

@@ -2266,7 +2291,7 @@ static int cirrusfb_zorro_find (struct z
}

printk (KERN_NOTICE "cirrusfb: no supported board found.\n");
- return -1;
+ return -ENODEV;
}


@@ -2275,30 +2300,35 @@ static void __devexit cirrusfb_zorro_unm
release_mem_region(cinfo->board_addr, cinfo->board_size);

if (cinfo->btype == BT_PICASSO4) {
- iounmap ((void *)cinfo->board_addr);
- iounmap ((void *)cinfo->fbmem_phys);
+ cinfo->regbase -= 0x600000;
+ iounmap ((void *)cinfo->regbase);
+ iounmap ((void *)cinfo->fbmem);
} else {
if (cinfo->board_addr > 0x01000000)
- iounmap ((void *)cinfo->board_addr);
+ iounmap ((void *)cinfo->fbmem);
}
+ framebuffer_release(cinfo->info);
}


-static struct cirrusfb_info *cirrusfb_zorro_setup ()
+static struct cirrusfb_info *cirrusfb_zorro_setup(void)
{
struct cirrusfb_info *cinfo;
struct fb_info *info;
cirrusfb_board_t btype;
struct zorro_dev *z = NULL, *z2 = NULL;
unsigned long board_addr, board_size, size;
+ int ret;

- if (cirrusfb_zorro_find (&z, &z2, &btype, &size))
- return NULL;
+ ret = cirrusfb_zorro_find (&z, &z2, &btype, &size);
+ if (ret < 0)
+ goto err_out;

info = framebuffer_alloc(sizeof(struct cirrusfb_info), &z->dev);
if (!info) {
printk (KERN_ERR "cirrusfb: could not allocate memory\n");
- return NULL;
+ ret = -ENOMEM;
+ goto err_out;
}

cinfo = info->par;
@@ -2316,11 +2346,14 @@ static struct cirrusfb_info *cirrusfb_zo
if (!request_mem_region(board_addr, board_size, "cirrusfb")) {
printk(KERN_ERR "cirrusfb: cannot reserve region 0x%lx, abort\n",
board_addr);
- return -1;
+ ret = -EBUSY;
+ goto err_release_fb;
}

printk (" RAM (%lu MB) at $%lx, ", board_size / MB_, board_addr);

+ ret = -EIO;
+
if (btype == BT_PICASSO4) {
printk (" REG at $%lx\n", board_addr + 0x600000);

@@ -2329,12 +2362,17 @@ static struct cirrusfb_info *cirrusfb_zo
/* for P4, map in its address space in 2 chunks (### TEST! ) */
/* (note the ugly hardcoded 16M number) */
cinfo->regbase = ioremap (board_addr, 16777216);
+ if (!cinfo->regbase)
+ goto err_release_region;
+
DPRINTK ("cirrusfb: Virtual address for board set to: $%p\n", cinfo->regbase);
cinfo->regbase += 0x600000;
cinfo->fbregs_phys = board_addr + 0x600000;

cinfo->fbmem_phys = board_addr + 16777216;
cinfo->fbmem = ioremap (info->fbmem_phys, 16777216);
+ if (!cinfo->fbmem)
+ goto err_unmap_regbase;
} else {
printk (" REG at $%lx\n", (unsigned long) z2->resource.start);

@@ -2343,6 +2381,8 @@ static struct cirrusfb_info *cirrusfb_zo
cinfo->fbmem = ioremap (board_addr, board_size);
else
cinfo->fbmem = (caddr_t) ZTWO_VADDR (board_addr);
+ if (!cinfo->fbmem)
+ goto err_release_region;

/* set address for REG area of board */
cinfo->regbase = (caddr_t) ZTWO_VADDR (z2->resource.start);
@@ -2354,6 +2394,16 @@ static struct cirrusfb_info *cirrusfb_zo
printk (KERN_INFO "Cirrus Logic chipset on Zorro bus\n");

return 0;
+
+err_unmap_regbase:
+ /* Parental advisory: explicit hack */
+ iounmap(cinfo->regbase - 0x600000);
+err_release_region:
+ release_region(board_addr, board_size);
+err_release_fb:
+ framebuffer_release(info);
+err_out:
+ return ERR_PTR(ret);
}
#endif /* CONFIG_ZORRO */

@@ -2430,8 +2480,10 @@ static int cirrusfb_pci_register (struct

cinfo = cirrusfb_bus_setup(pdev, ent);

- if (!cinfo)
- return -ENODEV;
+ if (IS_ERR(cinfo)) {
+ err = PTR_ERR(cinfo);
+ goto err_out;
+ }

info = cinfo->info;
btype = cinfo->btype;
@@ -2446,13 +2498,12 @@ static int cirrusfb_pci_register (struct
/* state, even though we haven't written the mode to the hw yet... */
info->var = cirrusfb_predefined[cirrusfb_def_mode].var;
info->var.activate = FB_ACTIVATE_NOW;
+
err = cirrusfb_decode_var(&info->var, &cinfo->currentmode, info);
- if(err) {
+ if (err < 0) {
/* should never happen */
DPRINTK("choking on default var... umm, no good.\n");
- cirrusfb_unmap (cinfo);
- framebuffer_release (info);
- return -EINVAL;
+ goto err_unmap_cirrusfb;
}

/* set all the vital stuff */
@@ -2460,16 +2511,21 @@ static int cirrusfb_pci_register (struct

pci_set_drvdata(pdev, info);

- if ((err = register_framebuffer (info)) < 0) {
+ err = register_framebuffer(info);
+ if (err < 0) {
printk (KERN_ERR "cirrusfb: could not register fb device; err = %d!\n", err);
- fb_dealloc_cmap(&info->cmap);
- cirrusfb_unmap (cinfo);
- framebuffer_release (info);
- return -EINVAL;
+ goto err_dealloc_cmap;
}

DPRINTK ("EXIT, returning 0\n");
return 0;
+
+err_dealloc_cmap:
+ fb_dealloc_cmap(&info->cmap);
+err_unmap_cirrusfb:
+ cirrusfb_unmap(cinfo);
+err_out:
+ return err;
}


@@ -2482,11 +2538,10 @@ static void __devexit cirrusfb_cleanup (
switch_monitor (cinfo, 0);
#endif

- cirrusfb_unmap (cinfo);
- fb_dealloc_cmap (&info->cmap);
unregister_framebuffer (info);
+ fb_dealloc_cmap (&info->cmap);
printk ("Framebuffer unregistered\n");
- framebuffer_release (info);
+ cirrusfb_unmap (cinfo);

DPRINTK ("EXIT\n");
}

_

2004-06-28 21:59:55

by David Eger

[permalink] [raw]
Subject: Re: [PATCH 2.6.7-mm3] cirrusfb: minor fixes

On Mon, Jun 28, 2004 at 09:27:27PM +0200, Francois Romieu wrote:
> Testers welcome.
>
> - fix unbalanced invocation of pci_enable_device();
> - leaks plugged in cirrusfb_zorro_setup();
> - move framebuffer_release() into cirrusfb_{pci/zorro}_unmap() to balance
> cirrusfb_{pci/zorro}_setup();
> - make cirrusfb_{pci/zorro}_setup() return adequate error codes when
> something fails;
> - cirrusfb_zorro_unmap: iounmap() now take as argument values previously
> returned by ioremap().
>
> Signed-off-by: Francois Romieu <[email protected]>

Your patch looks great.

Not only does it look great, with it X and cirrusfb now play nice with
each other! Andrew, please apply. Feel free to add my:

Signed-off-by: David Eger <[email protected]>

On another note...
pci_request_regions() replaces request_mem_region()...
looks like virtually all of the FB drivers have suffered from bit
rot. I guess that's what you get when people just look at code in
drivers/video/ to copy..

-dte

2004-06-28 22:46:53

by Francois Romieu

[permalink] [raw]
Subject: Re: [PATCH 2.6.7-mm3] cirrusfb: minor fixes

David Eger <[email protected]> :
[...]
> On another note...
> pci_request_regions() replaces request_mem_region()...

Oops, I forgot to include it in the description of the patch.

> looks like virtually all of the FB drivers have suffered from bit
> rot.

It is not the closest target but it's on the radar.

--
Ueimor

2004-06-28 23:14:21

by Andrew Morton

[permalink] [raw]
Subject: Re: 2.6.7-mm3: Kernel BUG on dual Opteron with DEBUG_SLAB

"R. J. Wysocki" <[email protected]> wrote:
>
> Kernel BUG at mempolicy:585

OK, this is a straight use-after-free bug:


--- 25/mm/mempolicy.c~a 2004-06-28 15:46:42.000000000 -0700
+++ 25-akpm/mm/mempolicy.c 2004-06-28 15:48:25.000000000 -0700
@@ -582,7 +582,7 @@ static struct zonelist *zonelist_policy(
break;
default:
nd = 0;
- BUG();
+ printk("%s: policy=%x\n", __FUNCTION__, policy->policy);
}
return NODE_DATA(nd)->node_zonelists + (gfp & GFP_ZONEMASK);
}

linux:/home/akpm> dmesg -s 1000000|grep zonelist
Built 1 zonelists
zonelist_policy: policy=6b6b
zonelist_policy: policy=6b6b

Andi, could you take a look? Enabling CONFIG_DEBUG_SLAB and CONFIG_NUMA
triggers it 100% of the time.