linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* Re: use case for register_pstore_blk?
  2020-10-07 19:17  6%           ` Kees Cook
@ 2020-10-12  7:02  0%             ` Christoph Hellwig
  0 siblings, 0 replies; 8+ results
From: Christoph Hellwig @ 2020-10-12  7:02 UTC (permalink / raw)
  To: Kees Cook
  Cc: Christoph Hellwig, WeiXiong Liao, linux-kernel,
	Richard Weinberger, linux-mtd

On Wed, Oct 07, 2020 at 12:17:25PM -0700, Kees Cook wrote:
> Do you mean psblk_generic_blk_read() and psblk_generic_blk_write()?
> These are for writing to the block device... I'm happy to adjust this
> if you can show me the better API. (This was being developed in the
> middle of the iov_iter changes, so perhaps I missed a more appropriate
> way to do things.)

The problem is that you use library function for file systems, and
then call them on an instance you don't own, and you're feeding crap
into them like your own methods.

Now given that as far as I can tell you require 4k aligned reads and
writes anyway, there doesn't seem to be any need for this whole page
cache dance to start with, and you could just do the completely trivial
bios submission.  But if for some reason you need to use the page cache,
that needs to be done through fs/block_dev.c APIs instead of through
the side.

> 
> > and it uses name_to_dev_t which must not be used in new code.
> 
> What?
> 
> include/linux/mount.h:
> extern dev_t name_to_dev_t(const char *name);

It used to be a private API, but then the Chromium folks just exported
it in e6e20a7a5f3f49bfee518d5c6849107398d83912 without consulting any
relevant maintainer.  And now we have this mess :(

> Where did this happen, where was it documented, and what should be used
> instead?

Use blkdev_get_by_path only.  If you look at blkdev_get_by_dev it has
this very explicit comment:

 * Use it ONLY if you really do not have anything better - i.e. when
 * you are behind a truly sucky interface and all you are given is a
 * device number.  _Never_ to be used for internal purposes.  If you
 * ever need it - reconsider your API.


> > It also does not happen to share code with the mtd case.
> 
> What? Yes it does: it explicitly uses the pstore/blk configuration
> callback to get the details configured at boot to identify and configure
> the backing device. This is specifically designed this way to avoid
> repeating the mistake of having per-backing-device configuration that is
> essentially only actually used by the pstore storage layer. i.e. the very
> thing I'm trying to get away from in ramoops, efi-pstore, etc: storage
> configuration is tied to the pstore storage layer (i.e. pstore/blk and
> pstore/zone), not the specific backing device (i.e. MTD, blk, RAM, NVRAM,
> EFI variables, etc).

Sharing the config is trivial.  But it shared nothing in the actual
I/O path, which is entirely different for mtd vs block.  And the sad part
is that with fs/pstore/zone.c you have added the right abstraction, one
that totally makes sense.  But only when used by the block and mtd drivers
directly.  Adding another pointless layer of obsfucation and dead code
that doesn't share anything does not help.

^ permalink raw reply	[relevance 0%]

* [GIT PULL][Update] ACPI and power management updates for v3.15-rc1
@ 2014-04-01 20:43  3% Rafael J. Wysocki
  0 siblings, 0 replies; 8+ results
From: Rafael J. Wysocki @ 2014-04-01 20:43 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-acpi, linux-pm, linux-pci, linux-kernel

Hi Linus,

There is a number of additional commits that were not quite ready when I sent
the original pull request for 3.15-rc1 several days ago, but they have spent
some time in linux-next since then and appear to be good to go, so here's
an update.

Please pull from

 git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
 pm+acpi-3.15-rc1

to receive ACPI and power management updates for v3.15-rc1 with
top-most commit 7b5c39389c86063e86fe8f2e0093c7197ddfa60a

 Merge branch 'pm-runtime'

on top of commit dcb99fd9b08cfe1afe426af4d8d3cbc429190f15

 Linux 3.14-rc7

All of this material has been in linux-next for some time (for several
weeks even in some cases).

ACPI took the lead this time, both in terms of the number of commits and the
number of modified lines of code, cpufreq follows and there are a few changes
in the PM core and in cpuidle too.

A new feature that already got some LWN.net's attention is the device PM QoS
extension allowing latency tolerance requirements to be propagated from leaf
devices to their ancestors with hardware interfaces for specifying latency
tolerance.  That should help systems with hardware-driven power management
to avoid going too far with it in cases when there are latency tolerance
constraints.

There also are some significant changes in the ACPI core related to the way
in which hotplug notifications are handled.  They affect PCI hotplug (ACPIPHP)
and the ACPI dock station code too.  The bottom line is that all those
notification now go through the root notify handler and are propagated to
the interested subsystems by means of callbacks instead of having to install
a notify handler for each device object that we can potentially get hotplug
notifications for.

In addition to that ACPICA will now advertise "Windows 2013" compatibility
for _OSI, because some systems out there don't work correctly if that is not
done (some of them don't even boot).  It also has a new feature supposed to
harden in against broken AML by serializing the execution of certain methods
automatically to avoid concurrency problems.

On the system suspend side of things, all of the device suspend and resume
callbacks, except for ->prepare() and ->complete(), are now going to be
executed asynchronously as that turns out to speed up system suspend and
resume on some platforms quite significantly and we have a few more
optimizations in that area.

Apart from that, there are some new device IDs and fixes and cleanups all
over.  In particular, the system suspend and resume handling by cpufreq
should be improved and the cpuidle menu governor should be a bit more
robust now.

Specifics:

 - Device PM QoS support for latency tolerance constraints on systems with
   hardware interfaces allowing such constraints to be specified.  That is
   necessary to prevent hardware-driven power management from becoming
   overly aggressive on some systems and to prevent power management
   features leading to excessive latencies from being used in some cases.

 - Consolidation of the handling of ACPI hotplug notifications for device
   objects.  This causes all device hotplug notifications to go through
   the root notify handler (that was executed for all of them anyway
   before) that propagates them to individual subsystems, if necessary,
   by executing callbacks provided by those subsystems (those callbacks
   are associated with struct acpi_device objects during device
   enumeration).  As a result, the code in question becomes both smaller
   in size and more straightforward and all of those changes should not
   affect users.

 - ACPICA update to upstream version 20140214, including fixes related
   to the handling of _PRT in cases when it is broken, the addition of
   "Windows 2013" to the list of supported "features" for _OSI (which is
   necessary to support systems that work incorrectly or don't even boot
   without it), and new code to automatically serialize the execution of
   methods creating any named objects which really cannot be executed in
   parallel with each other anyway (ACPICA attempted to address that by
   aborting methods upon conflict detection, but that wasn't reliable
   enough and led to other issues).  Changes from Bob Moore and Lv Zheng.

 - Consolidation of ACPI _OST handling from Jiang Liu.

 - ACPI battery and AC fixes allowing unusual system configurations to
   be handled by that code from Alexander Mezin.

 - New device IDs for the ACPI LPSS driver from Chiau Ee Chew.

 - ACPI fan and thermal optimizations related to system suspend and resume
   from Aaron Lu.

 - Cleanups related to ACPI video from Jean Delvare.

 - Assorted ACPI fixes and cleanups from Al Stone, Hanjun Guo, Lan Tianyu,
   Paul Bolle, Tomasz Nowicki.

 - Intel RAPL (Running Average Power Limits) driver cleanups from Jacob Pan.

 - intel_pstate fixes and cleanups from Dirk Brandewie.

 - cpufreq fixes related to system suspend/resume handling from Viresh Kumar.

 - cpufreq core fixes and cleanups from Viresh Kumar, Stratos Karafotis,
   Saravana Kannan, Rashika Kheria, Joe Perches.

 - cpufreq drivers updates from Viresh Kumar, Zhuoyu Zhang, Rob Herring.

 - cpuidle fixes related to the menu governor from Tuukka Tikkanen.

 - cpuidle fix related to the handling of coupled CPUs from Paul Burton.

 - Asynchronous execution of all device suspend and resume callbacks,
   except for ->prepare and ->complete, during system suspend and resume
   from Chuansheng Liu.

 - Delayed resuming of runtime-suspended devices during system suspend for
   the PCI bus type and ACPI PM domain.

 - New set of PM helper routines to allow device runtime PM callbacks to
   be used during system suspend and resume more easily from Ulf Hansson.

 - Assorted fixes and cleanups in the PM core from Geert Uytterhoeven,
   Prabhakar Lad, Philipp Zabel, Rashika Kheria, Sebastian Capella.

 - devfreq fix from Saravana Kannan.

 - PNP core cleanup from Michael Opdenacker.

Thanks!


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

Aaron Lu (2):
      ACPI / fan: do nothing in suspend and poweroff callback
      ACPI / thermal: make acpi_thermal_check asynchronous on resume

Al Stone (1):
      ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE_ONLY

Alexander Mezin (3):
      ACPI / battery: move some ACPI_BATTERY_* definitions to header
      ACPI / battery: call ACPI notifier chain in acpi_battery_notify
      ACPI / AC: recheck adapter status upon battery status changes

Bob Moore (22):
      ACPICA: Improve support for 32/64 bit physical addresses in printf().
      ACPICA: Deploy new 32/64 printf support for table override mechanism.
      ACPICA: Utilities: Load of local test tables is now optional.
      ACPICA: Improve parameter validation for acpi_install_gpe_block.
      ACPICA: Update ACPICA copyrights to 2014.
      ACPICA: Correctly support references in the union acpi_object.
      ACPICA: Debugger: Add new command to read/write/compare all
namespace objects.
      ACPICA: Update version to 20140114.
      ACPICA: Add "Windows 2013" string to _OSI support.
      ACPICA: Headers: Deploy #pragma pack (push) and (pop).
      ACPICA: Predefined names: Add support for the _PRP method.
      ACPICA: Harden _PRT repair code; check for minimum package length.
      ACPICA: Do not abort _PRT repair on a single subpackage failure.
      ACPICA: Comment update - no functional change.
      ACPICA: Update for _PRP predefined name.
      ACPICA: Add text: ACPICA policy for new _OSI strings. No
functional change.
      ACPICA: Debugger: Add missing objects; Traverse linked lists
      ACPICA: Prevent infinite loops when traversing corrupted lists.
      ACPICA: Update version to 20140214.
      ACPICA: Add auto-serialization support for ill-behaved control methods.
      ACPICA: Ignore sync_level for methods that have been auto-serialized.
      ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)."

Chew, Chiau Ee (1):
      ACPI / LPSS: Add Intel BayTrail ACPI mode PWM

Dirk Brandewie (5):
      intel_pstate: remove unneeded sample buffers
      intel_pstate: fix pid_reset to use fixed point values
      cpufreq: Add stop CPU callback to cpufreq_driver interface
      intel_pstate: Set core to min P state during core offline
      intel_pstate: Use del_timer_sync in intel_pstate_cpu_stop

Geert Uytterhoeven (11):
      PM / Runtime: Add missing "it" in comment
      PM / Hibernate: Spelling s/anonymouns/anonymous/
      PM: Add missing "freeze" state
      PM / Runtime: Update runtime_idle() documentation for return value meaning
      PM / sleep: Correct whitespace errors in <linux/pm.h>
      PM / Runtime: dev_pm_info.runtime_error is signed
      PM / Runtime: Split line longer than 80 characters
      PM / Runtime: Correct documented return values for generic PM callbacks
      PM / Runtime: GENERIC_SUBSYS_PM_OPS is gone
      PM / Runtime: s/foo_process_requests/foo_process_next_request/
      PM / Runtime: Spelling s/competing/completing/

Hanjun Guo (8):
      ACPI / processor: Fix acpi_processor_eval_pdc() return value type
      ACPI / processor: Use ACPI_PROCESSOR_DEVICE_HID instead of "ACPI0007"
      ACPI / processor: Build idle_boot_override on x86 and ia64
      ACPI / processor: Make it possible to get APIC ID via GIC
      ACPI: Move BAD_MADT_ENTRY() to linux/acpi.h
      ACPI / tables: Replace printk with pr_*
      ACPI: Remove duplicate definitions of PREFIX
      Revert "ACPI / processor: Make it possible to get APIC ID via GIC"

Jacob Pan (2):
      powercap / intel_rapl: relax sanity check on energy counters
      powercap / intel_rapl: spell out SoC names

Jean Delvare (5):
      ACPI / video: fix ACPI_VIDEO dependencies
      ACPI / gpu / drm: Stop selecting VIDEO_OUTPUT_CONTROL
      acer-wmi: Stop selecting VIDEO_OUTPUT_CONTROL
      fujitsu-laptop: Drop unneeded include
      video / output: Drop display output class support

Jiang Liu (5):
      ACPI: rename acpi_evaluate_hotplug_ost() to acpi_evaluate_ost()
      ACPI / PAD: use acpi_evaluate_ost() to replace open-coded version
      ACPI / PAD / xen: use acpi_evaluate_ost() to replace open-coded version
      ACPI / processor: use acpi_evaluate_ost() to replace open-coded version
      ACPI: use device name LNXSYBUS.xx for ACPI \_SB and \_TZ objects

Joe Perches (1):
      cpufreq: Reformat printk() statements

Lad, Prabhakar (1):
      PM: fix typo in comment

Lan Tianyu (1):
      ACPI / button: Add ACPI Button event via netlink routine

Liu, Chuansheng (5):
      PM / sleep: Two flags for async suspend_noirq and suspend_late
      PM / sleep: Asynchronous threads for resume_noirq
      PM / sleep: Asynchronous threads for resume_early
      PM / sleep: Asynchronous threads for suspend_noirq
      PM / sleep: Asynchronous threads for suspend_late

Lv Zheng (12):
      ACPICA: Update the conditions to enable the utility resource dump strings.
      ACPICA: Add support for extra, optional OS-specific header file.
      ACPICA: acpidump: Add sparse declarators support.
      ACPICA: acpidump: Remove integer types translation protection.
      ACPICA: Add boot option to disable auto return object repair
      ACPICA: Update conditional compilation flags for resource dump functions.
      ACPICA: Properly handle NULL entries in _PRT return packages.
      ACPICA: Restore code that repairs NULL package elements in return values.
      ACPICA: Cleanup/improve global variable declarations.
      ACPICA: Remove global option to serialize all control methods.
      ACPICA: Add additional named objects for the auto-serialize method scan.
      ACPICA: Enable auto-serialization as a default kernel behavior.

Michael Opdenacker (1):
      PNP: remove deprecated IRQF_DISABLED

Paul Bolle (1):
      ACPI: Remove Kconfig symbol ACPI_PROCFS

Paul Burton (1):
      cpuidle: delay enabling interrupts until all coupled CPUs leave idle

Philipp Zabel (1):
      PM / domains: Turn latency warning into debug message

Rafael J. Wysocki (48):
      ACPI / hotplug / PCI: Simplify disable_slot()
      ACPI / hotplug / PCI: Proper kerneldoc comments for enumeration/removal
      ACPI / hotplug / PCI: Simplify register_slot()
      ACPI / hotplug / PCI: Drop acpiphp_bus_trim()
      ACPI / hotplug / PCI: Rework acpiphp_no_hotplug()
      ACPI / hotplug / PCI: Store acpi_device pointer in acpiphp_context
      ACPI / hotplug / PCI: Drop acpiphp_bus_add()
      ACPI / hotplug / PCI: Drop crit_sect locking
      ACPI / hotplug / PCI: Simplify hotplug_event()
      ACPI / hotplug / PCI: Use acpi_handle_debug() in hotplug_event()
      ACPI / hotplug / PCI: Do not pass ACPI handle to hotplug_event()
      ACPICA: Introduce acpi_get_data_full() and rework acpi_get_data()
      ACPI / hotplug: Fix potential race in acpi_bus_notify()
      ACPI / hotplug / PCI: Define hotplug context lock in the core
      ACPI / hotplug / PCI: Consolidate ACPIPHP with ACPI core hotplug
      ACPI / hotplug / PCI: Rework the handling of eject requests
      ACPI / hotplug / PCI: Simplify acpi_install_hotplug_notify_handler()
      ACPI / hotplug / PCI: Hotplug notifications from acpi_bus_notify()
      ACPI / hotplug / PCI: Rework acpiphp_check_host_bridge()
      ACPI / hotplug / PCI: Execute _EJ0 under the ACPI scan lock
      PM / QoS: Rename device resume latency QoS items
      PM / QoS: Add no_constraints_value field to struct pm_qos_constraints
      PM / QoS: Introcuce latency tolerance device PM QoS type
      ACPI / scan: Add bind/unbind callbacks to struct acpi_scan_handler
      ACPI / LPSS: Support for device latency tolerance PM QoS
      PM / QoS: Add type to dev_pm_qos_add_ancestor_request() arguments
      ACPI / hotplug / PCI: Rename register_slot() to acpiphp_add_context()
      ACPI / hotplug / PCI: Add ACPIPHP contexts to devices handled by PCIeHP
      ACPI / dock: Dispatch dock notifications from the global notify handler
      ACPI / dock: Pass ACPI device pointer to acpi_device_is_battery()
      ACPI / dock: Associate dock platform devices with ACPI device objects
      ACPI / hotplug / PCI: Do not clear event callback pointer for docks
      ACPI / hotplug: Add .fixup() callback to struct acpi_hotplug_context
      ACPI / dock: Use ACPI device object pointers instead of ACPI handles
      ACPI / dock: Use callback pointers from devices' ACPI hotplug contexts
      ACPI / dock: Add .uevent() callback to struct acpi_hotplug_context
      ACPI / ATA: Add hotplug contexts to ACPI companions of SATA devices
      ACPI / dock: Drop struct acpi_dock_ops and all code related to it
      ACPI / dock: Drop remove_dock_dependent_devices()
      ACPI / dock: Update copyright notice
      ACPI: Drop acpi_evaluate_hotplug_ost() and ACPI_HOTPLUG_OST
      cpufreq: Refactor cpufreq_set_policy()
      ACPI / PM: Resume runtime-suspended devices later during system suspend
      PCI / PM: Resume runtime-suspended devices later during system suspend
      ACPI / hotplug: Rework deferred execution of acpi_device_hotplug()
      ACPI / hotplug / PCI: Use pci_device_is_present()
      cpufreq: Do not allow ->setpolicy drivers to provide ->target
      MAINTAINERS: Reorder maintainer addresses for PM and ACPI

Rashika Kheria (3):
      cpufreq: Mark function as static in cpufreq.c
      PM / sleep: Move prototype declaration to header file kernel/power/power.h
      PM / wakeup: Include appropriate header file in kernel/power/wakelock.c

Rob Herring (1):
      cpufreq: enable ARM drivers on arm64

Saravana Kannan (4):
      cpufreq: stats: Remove redundant cpufreq_cpu_get() call
      cpufreq: stats: Fix error handling in __cpufreq_stats_create_table()
      cpufreq: stats: Refactor common code into __cpufreq_stats_create_table()
      PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs

Sebastian Capella (1):
      PM / hibernate: use name_to_dev_t to parse resume

Srivatsa S. Bhat (1):
      cpufreq: Make sure frequency transitions are serialized

Stratos Karafotis (2):
      cpufreq: Fix checkpatch errors and warnings
      cpufreq: Remove unnecessary braces

Tomasz Nowicki (2):
      ACPI / APEI: Remove X86 redundant dependency for APEI GHES.
      ACPI / PCI: Do not call ISA-specific code if ISA is not supported

Tuukka Tikkanen (6):
      cpuidle: rename expected_us to next_timer_us in menu governor
      cpuidle: Use actual state latency in menu governor
      cpuidle: Ensure menu coefficients stay within domain
      cpuidle: Do not substract exit latency from assumed sleep length
      cpuidle: Move perf multiplier calculation out of the selection loop
      cpuidle: poll state can measure residency

Ulf Hansson (3):
      PM / sleep: Set pm_generic functions to NULL for !CONFIG_PM_SLEEP
      PM / runtime: Fetch runtime PM callbacks using a macro
      PM: Add pm_runtime_suspend|resume_force functions

Viresh Kumar (19):
      cpufreq: don't call cpufreq_update_policy() on CPU addition
      cpufreq: Return error if ->get() failed in cpufreq_update_policy()
      cpufreq: suspend governors on system suspend/hibernate
      cpufreq: Implement cpufreq_generic_suspend()
      cpufreq: exynos: Use cpufreq_generic_suspend()
      cpufreq: s5pv210: Use cpufreq_generic_suspend()
      cpufreq: Tegra: Use cpufreq_generic_suspend()
      PM / suspend: Remove unnecessary !!
      cpufreq: add 'freq_table' in struct cpufreq_policy
      cpufreq: Remove cpufreq_generic_exit()
      cpufreq: Remove unnecessary variable/parameter 'frozen'
      cpufreq: SPEAr: Instantiate as platform_driver
      cpufreq: remove unused notifier: CPUFREQ_{SUSPENDCHANGE|RESUMECHANGE}
      cpufreq: resume drivers before enabling governors
      cpufreq: Convert existing drivers to use
cpufreq_freq_transition_{begin|end}
      cpufreq: Make cpufreq_notify_transition &
cpufreq_notify_post_transition static
      cpufreq: move call to __find_governor() to cpufreq_init_policy()
      cpufreq: arm_big_little: make vexpress driver depend on bL core driver
      cpufreq: arm_big_little: set 'physical_cluster' for each CPU

Zhuoyu Zhang (1):
      cpufreq: powerpc: add cpufreq transition latency for FSL e500mc SoCs

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

 Documentation/ABI/testing/sysfs-devices-power |  27 +-
 Documentation/ABI/testing/sysfs-power         |   5 +-
 Documentation/cpu-freq/core.txt               |   4 -
 Documentation/cpu-freq/cpu-drivers.txt        |   8 +-
 Documentation/kernel-parameters.txt           |  18 +-
 Documentation/power/pm_qos_interface.txt      |  82 ++--
 Documentation/power/runtime_pm.txt            |  29 +-
 Documentation/trace/events-power.txt          |   2 +-
 MAINTAINERS                                   |   8 +-
 arch/arm/kernel/smp.c                         |   3 +-
 arch/arm/kernel/smp_twd.c                     |   2 +-
 arch/arm/mach-pxa/viper.c                     |   3 -
 arch/arm/mach-spear/spear1310.c               |   1 +
 arch/arm/mach-spear/spear1340.c               |   1 +
 arch/arm64/Kconfig                            |   8 +
 arch/ia64/configs/generic_defconfig           |   1 -
 arch/ia64/configs/tiger_defconfig             |   1 -
 arch/ia64/configs/zx1_defconfig               |   1 -
 arch/ia64/kernel/acpi.c                       |   4 -
 arch/powerpc/oprofile/op_model_cell.c         |   3 +-
 arch/sparc/kernel/time_64.c                   |   3 +-
 arch/x86/configs/i386_defconfig               |   1 -
 arch/x86/configs/x86_64_defconfig             |   1 -
 arch/x86/kernel/acpi/boot.c                   |   4 -
 arch/x86/kernel/tsc.c                         |   3 +-
 drivers/acpi/Kconfig                          |  28 +-
 drivers/acpi/ac.c                             |  25 ++
 drivers/acpi/acpi_cmos_rtc.c                  |   2 -
 drivers/acpi/acpi_lpss.c                      |  82 +++-
 drivers/acpi/acpi_pad.c                       |  24 +-
 drivers/acpi/acpica/Makefile                  |   4 +-
 drivers/acpi/acpica/accommon.h                |   2 +-
 drivers/acpi/acpica/acdebug.h                 |   4 +-
 drivers/acpi/acpica/acdispat.h                |  15 +-
 drivers/acpi/acpica/acevents.h                |   2 +-
 drivers/acpi/acpica/acglobal.h                | 364 +++++++++---------
 drivers/acpi/acpica/achware.h                 |   2 +-
 drivers/acpi/acpica/acinterp.h                |  10 +-
 drivers/acpi/acpica/aclocal.h                 |   2 +-
 drivers/acpi/acpica/acmacros.h                |  16 +-
 drivers/acpi/acpica/acnamesp.h                |   2 +-
 drivers/acpi/acpica/acobject.h                |   5 +-
 drivers/acpi/acpica/acopcode.h                |   2 +-
 drivers/acpi/acpica/acparser.h                |   2 +-
 drivers/acpi/acpica/acpredef.h                |  16 +-
 drivers/acpi/acpica/acresrc.h                 |   2 +-
 drivers/acpi/acpica/acstruct.h                |   5 +-
 drivers/acpi/acpica/actables.h                |   2 +-
 drivers/acpi/acpica/acutils.h                 |   4 +-
 drivers/acpi/acpica/amlcode.h                 |   2 +-
 drivers/acpi/acpica/amlresrc.h                |   2 +-
 drivers/acpi/acpica/dsargs.c                  |   2 +-
 drivers/acpi/acpica/dscontrol.c               |   2 +-
 drivers/acpi/acpica/dsfield.c                 |   2 +-
 drivers/acpi/acpica/dsinit.c                  |  61 ++-
 drivers/acpi/acpica/dsmethod.c                | 158 +++++++-
 drivers/acpi/acpica/dsmthdat.c                |   2 +-
 drivers/acpi/acpica/dsobject.c                |   2 +-
 drivers/acpi/acpica/dsopcode.c                |   2 +-
 drivers/acpi/acpica/dsutils.c                 |   2 +-
 drivers/acpi/acpica/dswexec.c                 |   2 +-
 drivers/acpi/acpica/dswload.c                 |  18 +-
 drivers/acpi/acpica/dswload2.c                |   2 +-
 drivers/acpi/acpica/dswscope.c                |   2 +-
 drivers/acpi/acpica/dswstate.c                |   2 +-
 drivers/acpi/acpica/evevent.c                 |   2 +-
 drivers/acpi/acpica/evglock.c                 |   2 +-
 drivers/acpi/acpica/evgpe.c                   |   2 +-
 drivers/acpi/acpica/evgpeblk.c                |   2 +-
 drivers/acpi/acpica/evgpeinit.c               |   2 +-
 drivers/acpi/acpica/evgpeutil.c               |   2 +-
 drivers/acpi/acpica/evhandler.c               |   2 +-
 drivers/acpi/acpica/evmisc.c                  |   2 +-
 drivers/acpi/acpica/evregion.c                |  13 +-
 drivers/acpi/acpica/evrgnini.c                |   2 +-
 drivers/acpi/acpica/evsci.c                   |   2 +-
 drivers/acpi/acpica/evxface.c                 |   2 +-
 drivers/acpi/acpica/evxfevnt.c                |   2 +-
 drivers/acpi/acpica/evxfgpe.c                 |  21 +-
 drivers/acpi/acpica/evxfregn.c                |   2 +-
 drivers/acpi/acpica/exconfig.c                |   2 +-
 drivers/acpi/acpica/exconvrt.c                |   2 +-
 drivers/acpi/acpica/excreate.c                |   2 +-
 drivers/acpi/acpica/exdebug.c                 |   2 +-
 drivers/acpi/acpica/exdump.c                  | 231 ++++++++++--
 drivers/acpi/acpica/exfield.c                 |   2 +-
 drivers/acpi/acpica/exfldio.c                 |   2 +-
 drivers/acpi/acpica/exmisc.c                  |   2 +-
 drivers/acpi/acpica/exmutex.c                 |   2 +-
 drivers/acpi/acpica/exnames.c                 |   2 +-
 drivers/acpi/acpica/exoparg1.c                |   2 +-
 drivers/acpi/acpica/exoparg2.c                |   2 +-
 drivers/acpi/acpica/exoparg3.c                |   2 +-
 drivers/acpi/acpica/exoparg6.c                |   2 +-
 drivers/acpi/acpica/exprep.c                  |   2 +-
 drivers/acpi/acpica/exregion.c                |   2 +-
 drivers/acpi/acpica/exresnte.c                |   2 +-
 drivers/acpi/acpica/exresolv.c                |   2 +-
 drivers/acpi/acpica/exresop.c                 |   2 +-
 drivers/acpi/acpica/exstore.c                 |   2 +-
 drivers/acpi/acpica/exstoren.c                |   2 +-
 drivers/acpi/acpica/exstorob.c                |   2 +-
 drivers/acpi/acpica/exsystem.c                |  14 +-
 drivers/acpi/acpica/exutils.c                 |  82 +---
 drivers/acpi/acpica/hwacpi.c                  |   2 +-
 drivers/acpi/acpica/hwesleep.c                |   2 +-
 drivers/acpi/acpica/hwgpe.c                   |   2 +-
 drivers/acpi/acpica/hwpci.c                   |   2 +-
 drivers/acpi/acpica/hwregs.c                  |   2 +-
 drivers/acpi/acpica/hwsleep.c                 |   2 +-
 drivers/acpi/acpica/hwtimer.c                 |   2 +-
 drivers/acpi/acpica/hwvalid.c                 |   2 +-
 drivers/acpi/acpica/hwxface.c                 |   2 +-
 drivers/acpi/acpica/hwxfsleep.c               |   2 +-
 drivers/acpi/acpica/nsaccess.c                |   2 +-
 drivers/acpi/acpica/nsalloc.c                 |   2 +-
 drivers/acpi/acpica/nsarguments.c             |   2 +-
 drivers/acpi/acpica/nsconvert.c               |   2 +-
 drivers/acpi/acpica/nsdump.c                  |   2 +-
 drivers/acpi/acpica/nsdumpdv.c                |   2 +-
 drivers/acpi/acpica/nseval.c                  |   2 +-
 drivers/acpi/acpica/nsinit.c                  |   7 +-
 drivers/acpi/acpica/nsload.c                  |   6 +-
 drivers/acpi/acpica/nsnames.c                 |   2 +-
 drivers/acpi/acpica/nsobject.c                |  12 +-
 drivers/acpi/acpica/nsparse.c                 |   2 +-
 drivers/acpi/acpica/nspredef.c                |   2 +-
 drivers/acpi/acpica/nsprepkg.c                |  42 +--
 drivers/acpi/acpica/nsrepair.c                |  31 +-
 drivers/acpi/acpica/nsrepair2.c               |  39 +-
 drivers/acpi/acpica/nssearch.c                |   2 +-
 drivers/acpi/acpica/nsutils.c                 |   2 +-
 drivers/acpi/acpica/nswalk.c                  |   2 +-
 drivers/acpi/acpica/nsxfeval.c                |  35 +-
 drivers/acpi/acpica/nsxfname.c                |   2 +-
 drivers/acpi/acpica/nsxfobj.c                 |   2 +-
 drivers/acpi/acpica/psargs.c                  |   2 +-
 drivers/acpi/acpica/psloop.c                  |   6 +-
 drivers/acpi/acpica/psobject.c                |   9 +-
 drivers/acpi/acpica/psopcode.c                |   2 +-
 drivers/acpi/acpica/psopinfo.c                |   2 +-
 drivers/acpi/acpica/psparse.c                 |   2 +-
 drivers/acpi/acpica/psscope.c                 |   2 +-
 drivers/acpi/acpica/pstree.c                  |   2 +-
 drivers/acpi/acpica/psutils.c                 |   2 +-
 drivers/acpi/acpica/pswalk.c                  |   2 +-
 drivers/acpi/acpica/psxface.c                 |   2 +-
 drivers/acpi/acpica/rsaddr.c                  |   2 +-
 drivers/acpi/acpica/rscalc.c                  |   4 +-
 drivers/acpi/acpica/rscreate.c                |  12 +-
 drivers/acpi/acpica/rsdump.c                  |   5 +-
 drivers/acpi/acpica/rsdumpinfo.c              |   4 +-
 drivers/acpi/acpica/rsinfo.c                  |   6 +-
 drivers/acpi/acpica/rsio.c                    |   2 +-
 drivers/acpi/acpica/rsirq.c                   |   2 +-
 drivers/acpi/acpica/rslist.c                  |   2 +-
 drivers/acpi/acpica/rsmemory.c                |   2 +-
 drivers/acpi/acpica/rsmisc.c                  |   2 +-
 drivers/acpi/acpica/rsserial.c                |   2 +-
 drivers/acpi/acpica/rsutils.c                 |   2 +-
 drivers/acpi/acpica/rsxface.c                 |   2 +-
 drivers/acpi/acpica/tbfadt.c                  |   2 +-
 drivers/acpi/acpica/tbfind.c                  |   2 +-
 drivers/acpi/acpica/tbinstal.c                |  17 +-
 drivers/acpi/acpica/tbprint.c                 |  22 +-
 drivers/acpi/acpica/tbutils.c                 |   2 +-
 drivers/acpi/acpica/tbxface.c                 |   2 +-
 drivers/acpi/acpica/tbxfload.c                |   2 +-
 drivers/acpi/acpica/tbxfroot.c                |   2 +-
 drivers/acpi/acpica/utaddress.c               |   2 +-
 drivers/acpi/acpica/utalloc.c                 |   2 +-
 drivers/acpi/acpica/utbuffer.c                |   2 +-
 drivers/acpi/acpica/utcache.c                 |   2 +-
 drivers/acpi/acpica/utcopy.c                  |   8 +-
 drivers/acpi/acpica/utdebug.c                 |   2 +-
 drivers/acpi/acpica/utdecode.c                |   2 +-
 drivers/acpi/acpica/utdelete.c                |  17 +-
 drivers/acpi/acpica/uterror.c                 |   2 +-
 drivers/acpi/acpica/uteval.c                  |   2 +-
 drivers/acpi/acpica/utexcep.c                 |   2 +-
 drivers/acpi/acpica/utglobal.c                |  39 +-
 drivers/acpi/acpica/utids.c                   |   2 +-
 drivers/acpi/acpica/utinit.c                  |   2 +-
 drivers/acpi/acpica/utlock.c                  |   2 +-
 drivers/acpi/acpica/utmath.c                  |   2 +-
 drivers/acpi/acpica/utmisc.c                  |   2 +-
 drivers/acpi/acpica/utmutex.c                 |   2 +-
 drivers/acpi/acpica/utobject.c                |   2 +-
 drivers/acpi/acpica/utosi.c                   |  28 +-
 drivers/acpi/acpica/utownerid.c               |   2 +-
 drivers/acpi/acpica/utpredef.c                |   2 +-
 drivers/acpi/acpica/utresrc.c                 |   5 +-
 drivers/acpi/acpica/utstate.c                 |   2 +-
 drivers/acpi/acpica/utstring.c                |   2 +-
 drivers/acpi/acpica/uttrack.c                 |   5 +-
 drivers/acpi/acpica/utxface.c                 |   2 +-
 drivers/acpi/acpica/utxferror.c               |   2 +-
 drivers/acpi/acpica/utxfinit.c                |   2 +-
 drivers/acpi/acpica/utxfmutex.c               |   2 +-
 drivers/acpi/apei/Kconfig                     |   2 +-
 drivers/acpi/battery.c                        |   7 +-
 drivers/acpi/battery.h                        |  10 +
 drivers/acpi/bus.c                            |  63 ++--
 drivers/acpi/button.c                         |   4 +
 drivers/acpi/container.c                      |   5 +-
 drivers/acpi/device_pm.c                      |  41 +-
 drivers/acpi/dock.c                           | 454 ++++++----------------
 drivers/acpi/fan.c                            |  13 +-
 drivers/acpi/glue.c                           |  12 +
 drivers/acpi/internal.h                       |  13 +-
 drivers/acpi/osl.c                            |  43 ++-
 drivers/acpi/pci_irq.c                        |  36 +-
 drivers/acpi/pci_link.c                       |   2 -
 drivers/acpi/pci_root.c                       |   4 +-
 drivers/acpi/power.c                          |   2 -
 drivers/acpi/processor_core.c                 |  52 +--
 drivers/acpi/processor_driver.c               |   2 -
 drivers/acpi/processor_perflib.c              |  14 +-
 drivers/acpi/sbs.c                            |   2 +-
 drivers/acpi/scan.c                           | 261 ++++++++-----
 drivers/acpi/sysfs.c                          |   2 -
 drivers/acpi/tables.c                         | 128 +++----
 drivers/acpi/thermal.c                        |  37 +-
 drivers/acpi/utils.c                          |  16 +-
 drivers/acpi/video.c                          |   2 -
 drivers/acpi/video_detect.c                   |   2 -
 drivers/ata/libata-acpi.c                     |  72 ++--
 drivers/base/power/Makefile                   |   3 +-
 drivers/base/power/domain.c                   |   2 +-
 drivers/base/power/generic_ops.c              |   2 +-
 drivers/base/power/main.c                     | 280 +++++++++++---
 drivers/base/power/power.h                    |   4 +-
 drivers/base/power/qos.c                      | 220 ++++++++---
 drivers/base/power/runtime.c                  | 164 ++++++--
 drivers/base/power/sysfs.c                    |  97 +++--
 drivers/cpufreq/Kconfig                       |   2 +-
 drivers/cpufreq/Kconfig.arm                   |  17 +-
 drivers/cpufreq/acpi-cpufreq.c                |   1 -
 drivers/cpufreq/arm_big_little.c              |   6 +-
 drivers/cpufreq/blackfin-cpufreq.c            |   1 -
 drivers/cpufreq/cpufreq-cpu0.c                |   1 -
 drivers/cpufreq/cpufreq-nforce2.c             |   4 +-
 drivers/cpufreq/cpufreq.c                     | 497 +++++++++++++-----------
 drivers/cpufreq/cpufreq_stats.c               |  38 +-
 drivers/cpufreq/cris-artpec3-cpufreq.c        |   1 -
 drivers/cpufreq/cris-etraxfs-cpufreq.c        |   1 -
 drivers/cpufreq/davinci-cpufreq.c             |   1 -
 drivers/cpufreq/e_powersaver.c                |   1 -
 drivers/cpufreq/elanfreq.c                    |   1 -
 drivers/cpufreq/exynos-cpufreq.c              |  97 +----
 drivers/cpufreq/exynos5440-cpufreq.c          |   5 +-
 drivers/cpufreq/freq_table.c                  |  46 +--
 drivers/cpufreq/gx-suspmod.c                  |   4 +-
 drivers/cpufreq/ia64-acpi-cpufreq.c           |   1 -
 drivers/cpufreq/imx6q-cpufreq.c               |   1 -
 drivers/cpufreq/integrator-cpufreq.c          |   4 +-
 drivers/cpufreq/intel_pstate.c                |  45 +--
 drivers/cpufreq/kirkwood-cpufreq.c            |   1 -
 drivers/cpufreq/longhaul.c                    |   5 +-
 drivers/cpufreq/loongson2_cpufreq.c           |   1 -
 drivers/cpufreq/omap-cpufreq.c                |   1 -
 drivers/cpufreq/p4-clockmod.c                 |   1 -
 drivers/cpufreq/pasemi-cpufreq.c              |   1 -
 drivers/cpufreq/pcc-cpufreq.c                 |   4 +-
 drivers/cpufreq/powernow-k6.c                 |   5 +-
 drivers/cpufreq/powernow-k7.c                 |   6 +-
 drivers/cpufreq/powernow-k8.c                 |   6 +-
 drivers/cpufreq/ppc-corenet-cpufreq.c         |   5 +-
 drivers/cpufreq/ppc_cbe_cpufreq.c             |   1 -
 drivers/cpufreq/pxa2xx-cpufreq.c              |   1 -
 drivers/cpufreq/pxa3xx-cpufreq.c              |   1 -
 drivers/cpufreq/s3c24xx-cpufreq.c             |   4 +-
 drivers/cpufreq/s5pv210-cpufreq.c             |  49 +--
 drivers/cpufreq/sc520_freq.c                  |   1 -
 drivers/cpufreq/sh-cpufreq.c                  |   5 +-
 drivers/cpufreq/sparc-us2e-cpufreq.c          |   4 +-
 drivers/cpufreq/sparc-us3-cpufreq.c           |   4 +-
 drivers/cpufreq/spear-cpufreq.c               |  14 +-
 drivers/cpufreq/speedstep-centrino.c          |   2 -
 drivers/cpufreq/speedstep-ich.c               |   1 -
 drivers/cpufreq/speedstep-smi.c               |   1 -
 drivers/cpufreq/tegra-cpufreq.c               |  47 +--
 drivers/cpufreq/unicore2-cpufreq.c            |   4 +-
 drivers/cpuidle/cpuidle.c                     |   3 +-
 drivers/cpuidle/driver.c                      |   2 +-
 drivers/cpuidle/governors/menu.c              |  75 ++--
 drivers/devfreq/devfreq.c                     |  31 +-
 drivers/gpu/drm/gma500/Kconfig                |   1 -
 drivers/gpu/drm/i915/Kconfig                  |   1 -
 drivers/gpu/drm/nouveau/Kconfig               |   3 +-
 drivers/input/touchscreen/st1232.c            |   3 +-
 drivers/mtd/nand/sh_flctl.c                   |   2 +-
 drivers/pci/hotplug/acpiphp.h                 |  16 +-
 drivers/pci/hotplug/acpiphp_glue.c            | 523 +++++++++-----------------
 drivers/pci/pci-driver.c                      |  33 +-
 drivers/pcmcia/sa11xx_base.c                  |   3 -
 drivers/platform/x86/Kconfig                  |   2 -
 drivers/platform/x86/fujitsu-laptop.c         |   1 -
 drivers/pnp/resource.c                        |   2 +-
 drivers/powercap/intel_rapl.c                 |  17 +-
 drivers/tty/serial/sh-sci.c                   |   3 +-
 drivers/video/Kconfig                         |   6 -
 drivers/video/Makefile                        |   2 -
 drivers/video/output.c                        | 133 -------
 drivers/xen/xen-acpi-cpuhotplug.c             |   2 +-
 drivers/xen/xen-acpi-memhotplug.c             |   2 +-
 drivers/xen/xen-acpi-pad.c                    |  26 +-
 include/acpi/acbuffer.h                       |   2 +-
 include/acpi/acconfig.h                       |   2 +-
 include/acpi/acexcep.h                        |   2 +-
 include/acpi/acnames.h                        |   2 +-
 include/acpi/acoutput.h                       |   2 +-
 include/acpi/acpi.h                           |   5 +-
 include/acpi/acpi_bus.h                       |  49 ++-
 include/acpi/acpi_drivers.h                   |  26 +-
 include/acpi/acpiosxf.h                       |   2 +-
 include/acpi/acpixf.h                         |  10 +-
 include/acpi/acrestyp.h                       |   2 +-
 include/acpi/actbl.h                          |   2 +-
 include/acpi/actbl1.h                         |   2 +-
 include/acpi/actbl2.h                         |   2 +-
 include/acpi/actbl3.h                         |   2 +-
 include/acpi/actypes.h                        |  66 ++--
 include/acpi/platform/acenv.h                 |   2 +-
 include/acpi/platform/acgcc.h                 |   2 +-
 include/acpi/platform/aclinux.h               |  20 +-
 include/linux/acpi.h                          |   4 +
 include/linux/cpufreq.h                       |  37 +-
 include/linux/pci-acpi.h                      |   4 +-
 include/linux/pm.h                            |  71 ++--
 include/linux/pm_qos.h                        |  34 +-
 include/linux/pm_runtime.h                    |   4 +
 include/linux/video_output.h                  |  57 ---
 include/trace/events/power.h                  |   4 +-
 kernel/power/hibernate.c                      |  22 +-
 kernel/power/main.c                           |   4 +-
 kernel/power/power.h                          |   2 +
 kernel/power/qos.c                            |  18 +-
 kernel/power/snapshot.c                       |   2 +-
 kernel/power/suspend.c                        |   2 +-
 kernel/power/wakelock.c                       |   2 +
 341 files changed, 3484 insertions(+), 2942 deletions(-)

^ permalink raw reply	[relevance 3%]

* Re: 2.6.0-rc1-mm1 error in bond_main.c
       [not found]     <6BE35B06920A7841A6F6AFFC7303CE5EB84C@mbi-10.mbi.ufl.edu>
@ 2003-12-31 15:13  3% ` Jeff Garzik
  0 siblings, 0 replies; 8+ results
From: Jeff Garzik @ 2003-12-31 15:13 UTC (permalink / raw)
  To: Jon K. Akers; +Cc: Andrew Morton, linux-kernel, linux-mm

[-- Attachment #1: Type: text/plain, Size: 852 bytes --]

Jon K. Akers wrote:
> Recieved the following error when compiling the bonding section of the network drivers as a module.
> 
>   CC [M]  drivers/net/bonding/bond_main.o
> drivers/net/bonding/bond_main.c: In function `bond_release':
> drivers/net/bonding/bond_main.c:1660: error: structure has no member named `params'
> drivers/net/bonding/bond_main.c:1661: error: structure has no member named `params'
> make[3]: *** [drivers/net/bonding/bond_main.o] Error 1
> make[2]: *** [drivers/net/bonding] Error 2
> make[1]: *** [drivers/net] Error 2
> make: *** [drivers] Error 2


Fixed in my update:

http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-rc1-netdrvr-exp1.patch.bz2
http://www.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-rc1-netdrvr-exp1.log

The broken-out patch that fixes this is attached.

	Jeff



[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 65019 bytes --]

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.1591  -> 1.1592 
#	drivers/net/bonding/bond_main.c	1.71    -> 1.72   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/12/30	jgarzik@redhat.com	1.1474.13.23
# [netdrvr e100] remove __devinit markers, fixing oops
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.1
# [PATCH] unshare_files
# 
# From: Chris Wright <chrisw@osdl.org>
# 
# Introduce unshare_files as a helper for use during execve to eliminate
# potential leak of the execve'd binary's fd.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.2
# [PATCH] use new unshare_files helper
# 
# From: Chris Wright <chrisw@osdl.org>
# 
# Use unshare_files during binary loading to eliminate potential leak of
# the binary's fd installed during execve().  As is, this breaks
# binfmt_som.c
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.3
# [PATCH] add steal_locks helper
# 
# From: Chris Wright <chrisw@osdl.org>
# 
# Add steal_locks helper for use in conjunction with unshare_files to make
# sure POSIX file lock semantics aren't broken due to unshare_files.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.4
# [PATCH] use new steal_locks helper
# 
# From: Chris Wright <chrisw@osdl.org>
# 
# Use the new steal_locks helper to steal the locks from the old files struct
# left from unshare_files() when the new unshared struct files gets used.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.5
# [PATCH] fix unsigned issue with env_end - env_start
# 
# From: Chris Wright <chrisw@osdl.org>
# 
# Fix for CAN-2003-0462:  A race condition in the way env_start and
# env_end pointers are initialized in the execve system call and used in
# fs/proc/base.c on Linux 2.4 allows local users to cause a denial of
# service (crash).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.6
# [PATCH] fix suid leak in /proc
# 
# From: Chris Wright <chrisw@osdl.org>
# 
# Fix for CAN-2003-0501: The /proc filesystem in Linux allows local users to
# obtain sensitive information by opening various entries in /proc/self
# before executing a setuid program, which causes the program to fail to
# change the ownership and permissions of those entries.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.7
# [PATCH] make /proc/tty/driver/ S_IRUSR | S_IXUSR for root only
# 
# From: Chris Wright <chrisw@osdl.org>
# 
# Fix for CAN-2003-0461: /proc/tty/driver/serial in Linux 2.4.x reveals the
# exact number of characters used in serial links, which could allow local
# users to obtain potentially sensitive information such as the length of
# passwords.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.8
# [PATCH] futex uninlining
# 
#            text    data     bss     dec     hex filename
# Before:    4674    1040    4100    9814    2656 kernel/futex.o
# After:     4098    1176    4100    9374    249e kernel/futex.o
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.9
# [PATCH] ia32 Message Signalled Interrupt support
# 
# From: long <tlnguyen@snoqualmie.dp.intel.com>
# 
# 
# Add support for Message Signalled Interrupt delivery on ia32.
# 
# With a fix from Zwane Mwaikambo <zwane@arm.linux.org.uk>
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.10
# [PATCH] EFI support for ia32
# 
# From: Matt Tolentino <metolent@snoqualmie.dp.intel.com>
# 
# Attached is a patch that enables EFI boot-up support in ia32 kernels.
# 
# In order to continue to determine whether the kernel should initialize using
# EFI tables, I've temporarily added a check on the LOADER_TYPE boot parameter.
#  Although I haven't requested that elilo be assigned an id for this yet, I've
# used this to determine whether the kernel should use the EFI initialization
# path as well as a check to see if the EFI_SYSTAB boot parameter contains
# anything.  If someone has a better suggestion for determining this, I'm
# open...
# 
# This patch also uses the existing ioremapping functions to map the efi tables
# into kernel virtual address space.  I've added an option such that I could
# use Dave Hansen's boot_ioremap() before paging_init().  After paging_init, I
# then remap the efi memmap using bt_ioremap for use later.  This has
# eliminated the need for several functions...thanks for the suggestions and
# thanks for your help Dave.  Still this could use a look-see.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.11
# [PATCH] compat_ioctl for i2c
# 
# From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
# 
# I needed those for the G5 on ppc64, so here they are, I was only
# able to test the SMBUS stuff though.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.12
# [PATCH] sqrt() fixes
# 
# It turns out that the int_sqrt() function in oom_kill.c gets it wrong.
# 
# But fb_sqrt() in fbmon.c gets its math right.  Move that function into
# lib/int_sqrt.c, and consolidate.
# 
# (oom_kill.c fix from Thomas Schlichter <schlicht@uni-mannheim.de>)
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.13
# [PATCH] scale the initial value of min_free_kbytes
# 
# This tunable refers to the amount of free memory which the VM will attempt to
# sustain.  It is mainly needed for atomic allocations (eg, networking
# receive).
# 
# It is currently hardwired to 1024k, which is far too large for small machines
# and too small for large machines.
# 
# Rework it to be 128k on tiny machines and 16M on huge machines.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.14
# [PATCH] Use __GFP_REPEAT for cdrom buffer
# 
# The cdrom driver does an order-4 allocation and the open will fail if that
# allocation does not succeed.  This happened to me on an unstressed 900MB
# machine.
# 
# So add the __GFP_REPEAT flag in there - this will cause the page allocator to
# keep on freeing pages until the allocation succeeds.
# 
# It can in theory livelock but in practice I expect it is OK: the user should
# just stop running dbench or whatever it is which is gobbling all the memory
# and the mount/open will then succeed.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.15
# [PATCH] make name_to_dev_t __init
# 
# It calls __init functions anyway.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.16
# [PATCH] ext3 scheduling latency fix
# 
# Sometimes kjournald has to refile a huge number of buffers, because someone
# else wrote them out beforehand - they are all clean.
# 
# This happens under a lock and scheduling latencies of 88 milliseconds on a
# 2.7GHx CPU were observed.
# 
# The patch forward-ports a little bit of the 2.4 low-latency patch to fix this
# problem.
# 
# Worst-case on ext3 is now sub-half-millisecond, except for when the RCU
# dentry reaping softirq cuts in :(
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.17
# [PATCH] cmpci.c: remove pointless set_fs()
# 
# It is doing a set_fs(KERNEL_DS) for no obvious reason.
# 
# Spotted by margitsw@t-online.de (Margit Schubert-While)
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.18
# [PATCH] Fix dcache and icache bloat with deep directories
# 
# This fixes the recently-reported "fsstress memory leak" problem.  It has been
# there since November 2002.
# 
# shrink_dcache() has a heuristic to prevent the dcache (and hence icache) from
# getting shrunk too far: it refuses to allow the dcache to shrink below
# 2*nr_used.
# 
# Problem is, _all_ non-leaf dentries (directories) count as used.  So when you
# have really deep directory hierarchies (fsstress creates these), nr_used is
# really high, and there is no upper bound to the amount of pinned dcache.
# 
# The patch just rips out the heuristic.  This means that dcache (and hence
# icache (and hence pagecache)) will be shrunk more aggressively.  This could
# be a problem, and tons of testing is needed - a new heuristic may be needed.
# 
# However I am not able to reproduce the problem which cause me to add this
# heuristic in the first place:
# 
#    Simple testcase: run a huge `dd' while running a concurrent `watch -n1
#    cat /proc/meminfo'.  The program text for `cat' gets loaded from disk once
#    per second.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.19
# [PATCH] NSL config fixes
# 
# From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
# 
# - use "select" instead of "depend"
# 
# - remove the unused SMB_NLS
# 
# - remove unneeded "default y" of CONFIG_NLS
# 
# - revert to postion of nls menu (middle of filessytem menus is strange)
# 
# - fix "#ifdef CONFIG_NLS" on UDF (should this add new one to Kconfig?)
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.20
# [PATCH] Fix init_i82365 sysfs ordering oops
# 
# From: Russell King <rmk@arm.linux.org.uk>
# 
# This oops has been caused by the need to register the class before
# registering any objects against it.  Unfortunately, the class needs
# to be registered asynchronously in a separate thread to avoid driver
# model deadlock with yenta with cardbus cards inserted or standard
# PCMCIA cards not being detected correctly due to a race.
# 
# I think the only real solution is to remove the class_device_create_file
# calls from all socket drivers.  This is just a simple commenting out of
# the calls, and should be suitable for the remainder of the -test kernels.
# 
# Due to the number of cases that we're encountering with PCMCIA, I'm
# beginning to wonder if the driver model could be fixed to be more kind
# to PCMCIA by avoiding some of these ordering dependencies.  None of this
# would be a problem if the driver model would allow PCI device drivers to
# register PCI devices while their probe or remove functions were executing.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.21
# [PATCH] Fix proc_pid_lookup vs exit race
# 
# From: Manfred Spraul <manfred@colorfullife.com>
# 
# Fixes a race between proc_pid_lookup and sys_exit.
# 
# - The inodes and dentries for /proc/<pid>/whatever are cached in the dentry
#   cache.  d_revalidate is used to protect against stale data: d_revalidate
#   returns invalid if the task exited.
# 
#   Additionally, sys_exit flushes the dentries for the task that died -
#   otherwise the dentries would stay around until they arrive at the end of
#   the LRU, which could take some time.  But there is one race:
# 
#   - proc_pid_lookup finds a task and prepares new dentries for it. It must 
#     drop all locks for that operation.
#   - the process exits, and the /proc/ dentries are flushed. Nothing
#     happens, because they are not yet in the hash tables.
#   - proc_pid_lookup adds the task to the dentry cache.
# 
#   Result: dentry of a dead task in the hash tables.
# 
#   The patch fixes that problem by flushing again if proc_pid_lookup notices
#   that the thread exited while it created the dentry.  The patch should go
#   in, but it's not critical.
# 
# 
# - task->proc_dentry must be the dentry of /proc/<pid>.  That way sys_exit
#   can flush the whole subtree at exit time.  proc_task_lookup is a direct
#   copy of proc_pid_lookup and handles /proc/<>/task/<pid>.  It contains the
#   lines that set task->proc_dentry.  This is bogus, and must be removed.
# 
#   This hunk is much more critical, because creates a de-facto dentry leak
#   (they are recovered after flushing real dentries from the cache).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.22
# [PATCH] Add `gcc -Os' config option
# 
# From: Adrian Bunk <bunk@fs.tum.de>
# 
# Allow the kernel to be built with `-Os'.
# 
# It requires CONFIG_EMBEDDED.  This is to make it "hard to get at" because
# one gcc version (3.2.x I think) from RH9 generates crashy kernels with this
# option set.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.23
# [PATCH] Fix sysenter disabling in vm86 mode
# 
# From: Brian Gerst <bgerst@didntduck.org>
# 
# The current code disables sysenter when first entering vm86 mode, but does
# not disable it again when coming back to a vm86 task after a task switch.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.24
# [PATCH] serial console registration bugfix
# 
# From: Bjorn Helgaas <bjorn.helgaas@hp.com>
# 
# uart_set_options() can dereference a null pointer.  This happens if you
# specify a console that hasn't previously been setup by early_serial_setup().
# 
# For example, on ia64, the HCDP typically tells us about line 0, so we calls
# early_serial_setup() for it.  If the user specifies "console=ttyS3", we
# machine-check when trying to follow the uninitialized port->ops pointer.
# 
# It's not entirely clear to me whether we should return 0 or -ENODEV or
# something.  The advantage of returning zero is that if the user specifies
# "console=ttyS0" and we just lack the HCDP, the console doesn't work as early
# as usual, but it does start working after the serial driver detects the port
# (though the baud/parity/etc from the command line are lost).  Returning
# -ENODEV seems to prevent it from ever working.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.25
# [PATCH] vmscan: reset refill_counter after refilling the inactive list
# 
# zone->refill_counter is only there to provide decent levels of work batching:
# don't call refill_inactive_zone() just for a couple of pages.
# 
# But the logic in there allows it to build up to huge values and it can
# overflow (go negative) which will disable refilling altogether until it wraps
# positive again.
# 
# Just reset it to zero whenever we decide to do some refilling.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.26
# [PATCH] Be verbose about the ia32 time source
# 
# From: john stultz <johnstul@us.ibm.com>
# 
# The patch arranges for each timesource type to have a name, and uses that to
# tell the user which timesource is in use at bootup time.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.27
# [PATCH] Get modpost to work properly with vmlinux in a different directory
# 
# From: "Bryan O'Sullivan" <bos@pathscale.com>
# 
# The current version of modpost breaks if invoked from outside the build
# tree.  This patch fixes that, and simplifies the code a bit while it's at
# it.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.28
# [PATCH] Restore /proc/pid/maps formatting
# 
# The seq_file conversion of /proc/pid/maps caused altered behaviour with
# respect to 2.4.22.  Before the conversion, spaces and tabs in filenames were
# displayed verbatim.  After the conversion they are escaped as \040, etc.
# 
# Also, if the mmapped file has been unlinked the output appears as
# 
# 40017000-40018000 rw-p 00000000 03:02 1425800    /home/akpm/foo\040(deleted)
# 
# instead of
# 
# 40017000-40018000 rw-p 00000000 03:02 1425800    /home/akpm/foo (deleted)
# 
# This could break applications which parse /proc/pid/maps (one person has
# reported this).
# 
# The patch restores the 2.4.20 behaviour.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.29
# [PATCH] ia32 WP test cleanup
# 
# From: Zwane Mwaikambo <zwane@arm.linux.org.uk>
# 
# Make the test unconditional - we can always run it now we have fixmap
# support.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.30
# [PATCH] Fix for more than 256 CPUs
# 
# From: Paul Jackson <pj@sgi.com>
# 
# The patch is needed to build NR_CPUS > 256.
# 
# Without this fix, you get compile errors:
#     include/linux/cpumask.h: In function `next_online_cpu':
#     include/linux/cpumask.h:56: structure has no member named `val'
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.31
# [PATCH] Use NODES_SHIFT to calculate ZONE_SHIFT
# 
# From: jbarnes@sgi.com (Jesse Barnes)
# 
# Now that we have a proper NODES_SHIFT value, we need to use it to define
# ZONE_SHIFT otherwise we'll spill over 8 bits if we have more than 85 nodes.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.32
# [PATCH] optimize ia32 memmove
# 
# From: Manfred Spraul <manfred@colorfullife.com>
# 
# The memmove implementation of i386 is not optimized: it uses movsb, which is
# far slower than movsd.  The optimization is trivial: if dest is less than
# source, then call memcpy().  markw tried it on a 4xXeon with dbt2, it saved
# around 300 million cpu ticks in cache_flusharray():
# 
# oprofile, GLOBAL_POWER_EVENTS, count 100k
# Before:
# c0144ed1 <cache_flusharray>: /* cache_flusharray total:  21823  0.0165 */
#      6 4.5e-06 :c0144f8e:       cmp    %esi,%ebx
#     11 8.3e-06 :c0144f90:       jae    c0144f9e <cache_flusharray+0xcd>
#      3 2.3e-06 :c0144f92:       mov    %ebx,%edi
#   7305  0.0055 :c0144f94:       repz movsb %ds:(%esi),%es:(%edi)
#    201 1.5e-04 :c0144f96:       add    $0x10,%esp
# 
# After:
# c0144f1d <cache_flusharray>: /* cache_flusharray total:  17959  0.0136 */
#   1270 9.6e-04 :c0144f1d:       push   %ebp
# [snip]
#      6 4.6e-06 :c0144fdc:       cmp    %esi,%ebx
#     13 9.9e-06 :c0144fde:       jae    c0145000 <cache_flusharray+0xe3>
#      2 1.5e-06 :c0144fe0:       mov    %edx,%eax
#      1 7.6e-07 :c0144fe2:       mov    %ebx,%edi
#     11 8.4e-06 :c0144fe4:       shr    $0x2,%eax
#      1 7.6e-07 :c0144fe7:       mov    %eax,%ecx
#   4129  0.0031 :c0144fe9:       repz movsl %ds:(%esi),%es:(%edi)
#    261 2.0e-04 :c0144feb:       test   $0x2,%dl
#     27 2.1e-05 :c0144fee:       je     c0144ff2 <cache_flusharray+0xd5>
#                :c0144ff0:       movsw  %ds:(%esi),%es:(%edi)
#     95 7.2e-05 :c0144ff2:       test   $0x1,%dl
#     96 7.3e-05 :c0144ff5:       je     c0144ff8 <cache_flusharray+0xdb>
#                :c0144ff7:       movsb  %ds:(%esi),%es:(%edi)
#    121 9.2e-05 :c0144ff8:       add    $0x1c,%esp
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.33
# [PATCH] Fix writev atomicity on pipe/fifo
# 
# From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
# 
# Current writev() of pipe/fifo can be interleaved with data from other
# processes doing writes even when the requests size is <= PIPE_BUF.  These
# writes should in fact be atomic.
# 
# The readv() side is also supported for same behavior with read().  And it
# is faster.
# 
# readv/writev version of bw_pipe in LMbench
# 
# 2.6.0-test9-bk12
# hirofumi@devron (i686-pc-linux-gnu)[1010]$ ./bw_pipe -m 4096 -M 5
# Pipe bandwidth: 45.53 MB/sec
# hirofumi@devron (i686-pc-linux-gnu)[1009]$ ./bw_pipe -m 1024 -M 5
# Pipe bandwidth: 20.08 MB/sec
# 
# 2.6.0-test9-bk12 + patch
# hirofumi@devron (i686-pc-linux-gnu)[1001]$ ./bw_pipe -m 4096 -M 5
# Pipe bandwidth: 65.98 MB/sec
# hirofumi@devron (i686-pc-linux-gnu)[1002]$ ./bw_pipe -m 1024 -M 5
# Pipe bandwidth: 32.19 MB/sec
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.34
# [PATCH] lockless semop
# 
# From: Manfred Spraul <manfred@colorfullife.com>
# 
# attached is the lockless semop patch. I did another test run with 
# idle=poll on an pentium III, and it remained unchanged: 99.9% direct 
# fast path, 0.1% race with wakeup against writing the final result code:
# 
# http://khack.osdl.org/stp/282936/environment/proc/slabinfo
# 
# That means there is no immediate need to add the two-stage
# implementation to finish_wait.
# 
# It reduces the spinlock operations on the semaphore array spinlock by 1/3.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.35
# [PATCH] use alloc_percpu in percpu_counters
# 
# From: Martin Hicks <mort@wildopensource.com>
# 
# Once NR_CPUS exceeds about 300 ext2 and ext3 will not compile, because the
# percpu counters in the superblocks are so huge that they cannot be kmalloced.
# 
# Fix this by converting the percpu_counter mechanism to use alloc_percpu()
# rather than an NR_CPUS-sized array.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.36
# [PATCH] find_busiest_queue() commentary fix
# 
# From: Ingo Molnar <mingo@elte.hu>
# 
# Clarify a comment in the CPU scheduler.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.37
# [PATCH] fix SOUND_CMPCI Configure help entry
# 
# From: Adrian Bunk <bunk@fs.tum.de>
# 
# the issue below is only a minor documentation fix, but it has confused
# me when configuring a kernel for such a card.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.38
# [PATCH] eicon/ and hardware/eicon/ drivers using the same symbols
# 
# From: Adrian Bunk <bunk@fs.tum.de>
# 
# The legacy eicon driver in drivers/isdn/eicon is the old one and will be
# removed as soon as all features went to the new driver.  Anyway this old
# driver was never meant to be non-module.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.39
# [PATCH] seq_file version of /proc/interrupts
# 
# From: corbet@lwn.net (Jonathan Corbet)
# 
# This converts all architectures' /proc/interrupts implementation over to
# seq_file.  We need this for SMP machines with ridiculous numbers of CPUs and
# if you convert one arch, you have to convert them all...
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.40
# [PATCH] Intel 440gx PCI IDs
# 
# - Add missing PCI ID
# 
# - Forward-port IRQ routing workaround from 2.4.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.41
# [PATCH] support centrino 1GHz
# 
# From: Jeremy Fitzhardinge <jeremy@goop.org>
# 
# I've been getting quite a lot of people mailing me about this CPU.  It
# seems Toshiba has released a machine with it.  It would be nice if this
# patch gets into a kernel soonish.  It's very low-impact.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.42
# [PATCH] document elevator= parameter
# 
# From: Valdis.Kletnieks@vt.edu
# 
# Nick wrote a nice as-iosched.txt file, but apparently nobody updated the
# kernel-parameters.txt file...
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.43
# [PATCH] missing padding in cpio_mkfile in usr/gen_init_cpio.c
# 
# From: Olaf Hering <olh@suse.de>
# 
# We need to update `offset' here so that the subsequent push_pad() (which
# uses `offset') will do the right thing.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.44
# [PATCH] watchdog write() return value fixes
# 
# From: gleb@nbase.co.il (Gleb Natapov)
# 
# There is inconsistency in fops->write() implementation in different
# watchdog drivers.  Some of them return number of bytes written while others
# return 1.
# 
# I think the correct implementation should always return number of bytes
# written (we examine all the buffer after all) otherwise "echo V >
# /dev/watchdog" doesn't work as expected (it doesn't stop watchdog).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.45
# [PATCH] Minor bug fixes to the compat layer
# 
# From: Arun Sharma <arun.sharma@intel.com>
# 
# - Several instances where we were using pid_t instead of uid_t
# 
# - If the caller passed a NULL `oldact' pointer into sys_sigprocmask then
#   don't try to write the old sigmask there.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.46
# [PATCH] ide-tape update
# 
# From: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>,
#       Stuart Hayes <stuart_hayes@dell.com>
# 
# - Check drive's write protect bit, try to return appropriate
#   errors when attempting to write a write-protected tape.
# 
# - Moved "idetape_read_position" call in idetape_chrdev_open
#   after the "wait_ready" call.
# 
# - Added IDETAPE_MEDIUM_PRESENT flag so driver would know
#   not to rewind tape after ejecting it.
# 
# - Fixed bug with ide_abort_pipeline (it was deleting stages
#   from tape->next_stage to end, instead of from
#   new_last_stage->next (tape->next_stage was set to NULL
#   by idetape_discard_read_pipeline before calling!).
# 
# - Made improvements to idetape_wait_ready.
# 
# - Added a few comments here and there.
# 
# - Made MTOFFL unlock tape drive door before attempting to eject.
# 
# - Added fixes to get Seagate STT3401A Travan working:
#   Handle drives that don't support 0-length reads/writes increased timeout
#   (retension takes ~10 minutes before irq is returned).
#   Fixed request mode page packet command byte 3.
# 
# Also remove code depending on NO_LONGER_REQUIRED to match 2.4.x (me).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.47
# [PATCH] PIIX5 Doesn't work on IA64
# 
# From: Peter Chubb <peterc@gelato.unsw.edu.au>
# 
# The PIIX5 IDE controller on I2000 IA64 boxen using the 460GX chipset will
# hang on startup if an ordinary harddrive is plugged into it (it seems to
# workj for the LSI120 and the CDROM drives).
# 
# This is because the 460GX chipset contains a PCI expanssion bridge that
# works like the 450NX PXB, and has the same PCI ID (but a later revision).
# The PIIX driver, to work around interactions between PIIX4 and the 450NX
# PXB, tries to disable DMA.
# 
# Unfortunately, the way it tries to disable DMA doesn't work, and the higher
# layers think that DMA is still on, and so timeout waiting for DMA, and then
# hang on bootup.
# 
# A simple workaround is to tighten the check for the buggy chipset, as in
# the attached patch.  However, someone with more time (and who actually
# *understands* the IDE subsystem) needs to fix the real bug as well.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.48
# [PATCH] Can't disable IDE DMA
# 
# From: Peter Chubb <peterc@gelato.unsw.edu.au>
# 
# If you try to disable IDE DMA from Kconfig, you'll end up with an undefined
# symbol, ide_hwif_setup_dma().
# 
# The attached rather ugly patch fixes the problem by defining a dummy
# function.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.49
# [PATCH] IDE MMIO fix
# 
# From: Alan Cox <alan@redhat.com>
# 
# IDE core code had the mmio==2 (ioremap) mode supported but two small changes
# had been missed for ide-dma.c.  Without this fix mmio IDE controllers bomb if
# you have plenty of memory as it uses request_mem_region on an ioremap return.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.50
# [PATCH] IDE capability elevation fix
# 
# From: Alan Cox <alan@redhat.com>
# 
# Capability elevation bug in 2.6.0 IDE. Long fixed in 2.4.x, trivial to cure
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.51
# [PATCH] Add lib/parser.c kernel-doc
# 
# From: Will Dyson <will_dyson@pobox.com>
# 
# Add documentation and comments to lib/parser.c and include/linux/parser.h
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.52
# [PATCH] cpumask.h reorg
# 
# From: Paul Jackson <pj@sgi.com>
# 
# Push the cpumask implementation from linux/cpumask.h into asm/cpumask.h, so
# that ia64 can do special things without breaking sparc64.
# 
# 1) Each arch has its own include/asm-<arch>/cpumask.h file
# 
# 2) That arch-specific header file can include <asm-generic/cpumask.h>,
#    if it wants to make use of the generic cpumask implementation.
# 
# 3) Using code should continue to include linux/cpumask.h, which
#    in turn includes asm/cpumask.h.  Some common implementation
#    independent cpumask related items, such as the cpu_online_map,
#    are declared directly in linux/cpumask.h.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.53
# [PATCH] new /proc/irq cpumask format; consolidate cpumask display and input code
# 
# From: Paul Jackson <pj@sgi.com>
# 
# This patch is a followup to one from Bill Irwin.  On Nov
# 17, he had consolidated the half-dozen chunks of code
# that displayed cpumasks in /proc/irq/prof_cpu_mask and
# /proc/irq/<pid>/smp_affinity into a single routine, which he
# called format_cpumask().
# 
# I believe that Andrew Morton has accepted Bill's patch into
# his 2.6.0-test10-mm1 patch set as the "format_cpumask" patch.
# I hope that the following patch will replace Bill's patch.
# I look forward to Bill's feedback on this patch.
# 
# The following patch carries Bill's work further:
# 
#  1) It also consolidates the input side (write syscalls).
#  2) It adapts a new format, same on input and output.
#  3) The core routines work for any multi-word bitmask,
#     not just cpumasks.
#  4) The core routines avoid overrunning their output
#     buffers.
# 
# Note esp. for David Mosberger:
# 
#     The small patch I sent you and the linux-ia64 list
#     yesterday entitled: "check user access ok writing
#     /proc/irq/<pid>/smp_affinity" for arch ia64 only is
#     _separate_ from the following patch.  Neither presumes the
#     other.  However, they do collide on one line.  Last one in
#     is a Monkey's Uncle and will need an updated patch from me
#     (or otherwise need to resolve the one obvious collision).
# 
# Details of the following patch:
# 
# Both the display and input of cpumasks on 9 arch's are
# consolidated into a single pair of routines, which use the
# same format for input and output, as recommended by Tony
# Luck.  The two common routines work on any multi-word bitmask
# (array of unsigned longs).  A pair of trivial inline wrappers
# cpumask_snprintf() and cpumask_parse() hide this generality
# for the common case of cpumask input and output.
# 
# My real motivation for consolidating this code will become
# visible later - when I seek to add a nodemask_t that resembles
# cpumask_t (just a different length).  These common underlying
# routines will be used there as well, following up on a suggestion
# of Christoph Hellwig that I investigate implementing nodemask_t
# as an ADT sharing infrastructure with cpumask_t.  However, I
# believe that this patch stands on its own merit, consolidating
# a couple hundred lines of duplicated code, and making the
# cpumask display format usable on very large systems.
# 
# There are two exceptions to the consolidation - the alpha and
# sparc64 arch's manipulate bare unsigned longs, not cpumask_t's,
# on input (write syscall), and do stuff that was more funky than
# I could make sense of.  So the input side of these two arch's
# was left as-is.  I'd welcome someone with access to either of
# these systems to provide additional patches.
# 
# The new format consists of multiple 32 bit words, separated by
# commas, displayed and input in hex.  The following comment from
# this patch describes this format further:
# 
# * The ascii representation of multi-word bit masks displays each
# * 32bit word in hex (not zero filled), and for masks longer than
# * one word, uses a comma separator between words.  Words are
# * displayed in big-endian order most significant first.  And hex
# * digits within a word are also in big-endian order, of course.
# *
# * Examples:
# *   A mask with just bit 0 set displays as "1".
# *   A mask with just bit 127 set displays as "80000000,0,0,0".
# *   A mask with just bit 64 set displays as "1,0,0".
# *   A mask with bits 0, 1, 2, 4, 8, 16, 32 and 64 set displays
# *     as "1,1,10117".  The first "1" is for bit 64, the second
# *     for bit 32, the third for bit 16, and so forth, to the
# *     "7", which is for bits 2, 1 and 0.
# *   A mask with bits 32 through 39 set displays as "ff,0".
# 
# The essential reason for adding the comma breaks was to make
# the long masks from our (SGI's) big 512 CPU systems parsable by
# humans.  An unbroken string of 128 hex digits is pretty difficult
# to read.  For those who are compiling systems with CONFIG_NR_CPUS
# of 32 or less, there should be no visible change in format.
# 
# There are of course a thousand possible output formats that
# meet similar criteria.  If someone wants to lobby for and seek
# consensus behind another such format, that's fine.  Now that
# the format is consolidated into a single pair of routines,
# it should be easy to adapt whatever we choose.
# 
# Internally, the display routine uses snprintf to track the
# remaining space in its output buffer, to avoid the risk of
# overrunning it.
# 
# A new file, lib/mask.c, is added to the lib directory, to
# hold the two common routines.  I anticipate adding a few more
# common routines for generic support of multi-word bit masks to
# lib/mask.c, in subsequent patches that will add a nodemask_t
# type as an ADT sharing implementation with cpumask_t.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.54
# [PATCH] Add support for SGI's IOC4 chipset
# 
# From: Aniket Malatpure <aniket@sgi.com>
# 
# Adds support for the IOC4 IDE part.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.55
# [PATCH] Remove CLONE_FILES from init kernel thread creation
# 
# From: James Morris <jmorris@redhat.com>
# 
# The patch below removes the CLONE_FILES flag from the kernel_thread() call
# which starts init.
# 
# This is to prevent other kernel threads from sharing file descriptors
# opened by init (try 'lsof /dev/initctl' on a 2.6 system :-).
# 
# The reason this patch is being proposed is so that usermode helper apps
# launched via kernel threads (e.g. modprobe, hotplug) do not then inherit
# any such file descriptors.  This is not a problem in itself so far (other
# than being messy), but it is a problem for SELinux, which will otherwise
# need to grant access to /dev/initctl by modprobe and hotplug, a somewhat
# undesirable scenario.
# 
# As far as I can tell, there is no reason why init needs to be spawned with
# CLONE_FILES.  Please let me know if there are any objections to the
# change, which I would like to propose for 2.6.0+ as a cleanup.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.56
# [PATCH] pagefault accounting fix
# 
# From: William Lee Irwin III <wli@holomorphy.com>
# 
# Our accounting of minor faults versus major faults is currently quite wrong.
# 
# To fix it up we need to propagate the actual fault type back to the
# higher-level code.  Repurpose the currently-unused third arg to ->nopage
# for this.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.57
# [PATCH] fix oops in proc_kill_inodes()
# 
# proc_kill_inodes() walks the s_files list, playing with ->f_dentry.
# 
# But there is a window in which __fput() will leave a file on that list with a
# null f_dentry and f_vfsmnt.
# 
# I'm not sure it was ever confirmed that this fixed the reported oops, but it
# seems much better to set those fields to null _after_ removing the filp from
# the list.
# 
# (Actually, there's no need to null those pointers out at all.  But whatever;
# it caught a bug).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.58
# [PATCH] remove lock_kernel() from proc_bus_pci_lseek()
# 
# Remove pointless lock_kernel(), replace with the standard-but-still-odd
# i_sem-based lseek locking.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.59
# [PATCH] remove include recursion from linux/pagemap.h
# 
# From: Arnaldo Carvalho de Melo <acme@conectiva.com.br>
# 
# pagemap.h, do not include thyself.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.60
# [PATCH] ext3: bd_claim for journal device
# 
# From: Neil Brown <neilb@cse.unsw.edu.au>
# 
# Change ext3 to run bd_claim() against external journal devices. It is
# significant only for those who have ext3 journals on a separate device, and
# gets exclusive access to that device.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.61
# [PATCH] dm and bounce buffer panic fix
# 
# From: Mark Haverkamp <markh@osdl.org>
# 
# About three weeks ago markw at osdl posted a mail about a panic that he
# was seeing:
# 
# http://marc.theaimsgroup.com/?l=linux-kernel&m=106737176716474&w=2
# 
# I believe what is happening, is that the dm __clone_and_map function is
# generating bio structures with the bi_idx field non-zero.  When
# __blk_queue_bounce creates a new bio with bounce pages, it sets the bi_idx
# field to 0 rather than the bi_idx of the original.  This causes trouble since
# bv_page pointers will be dereferenced later that are zero.  The following
# uses the original bio structure's bi_idx in the new bio structure and in
# copy_to_high_bio_irq and bounce_end_io.
# 
# This has cleared up the panic when using the volume.
# 
# (acked by Joe Thornber)
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.62
# [PATCH] statfs64 fix
# 
# From: Andi Kleen <ak@muc.de>
# 
# It fixes the statfs64 emulation on x86-64.  The problem is that x86-64
# needs an __attribute__((aligned)) on the compat_statfs64 structure.  The
# conclusion last time this was discussed was that the structure should be
# duplicated.
# 
# Essentially it is the old shared structure copied to every user and x86-64
# uses __attribute__((packed)).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.63
# [PATCH] Add a.out support for x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# Add 32bit a.out support for x86-64.
# 
# Not exactly an important bug fix, but maybe it will help someone.  This
# should increase the current 98% compatibility to i386 to perhaps 98.1% @)
# 
# I tested an old a.out SuSE 4.2 installation in chroot and it worked.  It
# also ran some very old linux binaries from '92 found on ftp.funet.fi.  The
# only program that didn't was the SuSE a.out GNU emacs, but I was too lazy
# to track that down.  Core dumps are not supported.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.64
# [PATCH] Critical x86-64 IOMMU fixes for 2.6.0
# 
# From: Andi Kleen <ak@muc.de>
# 
# Please consider applying this patch, I would consider it critical for x86-64.
# 
# The 2.6.0 x86-64 IOMMU code unfortunately had a few problems, leading
# to non booting systems and in a few cases to data corruption.
# 
# It fixes a two serious bugs in handling special kinds of scatter gather
# lists in pci_map_sg.
# 
# AGP was completely broken with IOMMU because of a wrong #ifdef.
# Fix that.
# 
# One TLB flush optimization I did a long time ago seems to break on
# some 3ware boards (who require IOMMU because they don't support 64bit
# addresses).  The breakage lead to data corruption. This patch diables
# the optimization for now and fixes a potential SMP race in the flush
# code too. The TLB flush is done in a slower, but more reliable way
# now too.
# 
# This patch fixes them. Please consider applying, because some of these
# problems hit quite many people.
# 
# This also disables the IOMMU_DEBUG in the defconfig. A lot of people 
# were using the IOMMU when they didn't need to, which multiplied the
# problems.
# 
# IOMMU merge is disabled for now. This was an experimental optimization
# which helped with some block devices, but for production it seems to
# be better to disable it for now because there are some questionable
# corner cases when the IOMMU aperture fragments. The same is done
# for IOMMU SAC force, which was related to that. 
# 
# i386 has quite broken semantics for pci_alloc_consistent(). It uses
# the standard device DMA mask instead of the consistent mask. Make us
# bug-to-bug compatible here. This fixes problems with some sound
# drivers that don't support full 32bit addressing.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.65
# [PATCH] Fix CPUID compilation on x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# A lot of people have run into this: the x86-64 cpuid driver didn't
# compile as module.
# 
# Using a kludge suggested by Sam Ravnsborg.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.66
# [PATCH] Fix sysrq-t on x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# From Badari Pulavarty
# 
# Without this sysrq-t shows the same backtrace for all processes on x86-64
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.67
# [PATCH] Fix 32bit truncate on x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# Another potential data corruption fix.
# 
# The 32bit truncate64 on x86-64 did silently truncate
# offsets >32bit. That broke mysql for example. Fix that.
# 
# From Chris Wilson
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.68
# [PATCH] Add more paranoid checking in x86-64 prefetch checker
# 
# From: Andi Kleen <ak@muc.de>
# 
# Make sure we never access anything in kernel mapping while
# doing the prefetch workaround checks on x86-64.
# 
# Originally suggested by Jamie Lockier.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.69
# [PATCH] Merge i386 fix for page fault to x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# Merge the i386 fix for the page fault from Linus to x86-64
# (I'm not actually sure what it fixes, but if it's good for 32bit
# it is likely good for 64bit too)
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.70
# [PATCH] Signal fixes for x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# Merge signal race fixes from i386 to x86-64.
# 
# Fix a bug in system call restart, noted by John Blackwood.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.71
# [PATCH] Don't panic in mpparse on x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# Merge i386 fix. Don't panic in MP table parsing when the table is bad.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.72
# [PATCH] Fix 32bit siginfo problems on x86-64
# 
# From: Andi Kleen <ak@muc.de>
# 
# 32bit siginfo would sometimes get passed incorrectly on x86-64. This
# change fixes the conversion function to be a bit dumber, but more
# correct.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.73
# [PATCH] remove mm->swap_address
# 
# From: William Lee Irwin III <wli@holomorphy.com>
# 
# This field is 100% unused. This patch removes it.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.74
# [PATCH] sis comparison / assignment operator fix
# 
# From: Geoffrey Lee <glee@gnupilgrims.org>
# 
# This fixes what seems to be an obvious = vs == bug in the init301.c sis
# file.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.75
# [PATCH] Fix possible oops in vfs_quota_sync()
# 
# From: Jan Kara <jack@ucw.cz>
# 
# I'm sending you a fix of possible Oops in vfs_quota_sync().  Actually
# nobody has run into that I found it when I was looking through the code.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.76
# [PATCH] Ext3+quota deadlock fix
# 
# From: Jan Kara <jack@ucw.cz>
# 
# here's patch which should fix deadlock with quotas+ext3 reported in 2.4
# (the same problem existed in 2.6 but nobody found it).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.77
# [PATCH] BINFMT_ELF=m is not an option
# 
# From: glee@gnupilgrims.org
# 
# I think Adrian had forgotten to update the help text.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.78
# [PATCH] md: Limit max_sectors on md when merge_bvec_fn defined on underlying device.
# 
# From: NeilBrown <neilb@cse.unsw.edu.au>
# 
# As no md personalities honour the merge_bvec_fn of underlying devices,
# we must make sure never to submit a bio larger than 1 page when a 
# merge_bvec_fn is defined.
# 
# raid5 already does this (it never submits bios larger than one page).
# With this patch, all other raid personalities limit their
# max_sectors when a merge_bvec_fn is present.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.79
# [PATCH] md: set ra_pages for raid0/raid5 devices properly.
# 
# From: NeilBrown <neilb@cse.unsw.edu.au>
# 
# stripe to be effective.  This patch sets ra_pages
# appropriately.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.80
# [PATCH] Erronous use of tick_usec in do_gettimeofday
# 
# From: Joe Korty <joe.korty@ccur.com>
# 
# do_gettimeofday() is using tick_usec which is defined in terms of USER_HZ
# not HZ.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.81
# [PATCH] fix ELF exec with huge bss
# 
# From: Roland McGrath <roland@redhat.com>
# 
# The following test program will crash every time if dynamically linked.
# I think this bites all 32-bit platforms, including 32-bit executables on
# 64-bit platforms that support them (and could in theory bite 64-bit
# platforms with bss sizes beyond the bounds of comprehension).
# 
# 	volatile char hugebss[1080000000];
# 	main() { printf("%p..%p\n", &hugebss[0], &hugebss[sizeof hugebss]);
# 	 system("cat /proc/$PPID/maps");
# 	 hugebss[sizeof hugebss - 1] = 1;
# 	 return 23;
# 	}
# 
# The problem is that the kernel maps ld.so at 0x40000000 or some such place,
# before it maps the bss.  Here the bss is so large that it overlaps and
# clobbers that mapping.  I've changed it to map the bss before it loads the
# interpreter, so that part of the address space is reserved before ld.so's
# mapping (which doesn't really care where it goes) is done.
# 
# This patch also adds error checking to the bss setup (and interpreter's bss
# setup).  With the aforementioned change but no error checking, "ulimit -v
# 65536; ./hugebss" will crash in the store after the `system' call, because
# the kernel will have failed to allocate the bss and ignored the error, so
# the program runs without those pages being mapped at all.  With this change
# it dies with a SIGKILL as for a failure to set up stack pages.  It might be
# even better to try to detect the case earlier so that execve can return an
# error before it has wiped out the address space.  But that seems like it
# would always be fragile and miss some corner cases, so I did not try to add
# such complexity.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.82
# [PATCH] O_DIRECT memory leak fix
# 
# From: Badari Pulavarty <pbadari@us.ibm.com>
# 
# I found the problem with O_DIRECT memory leak.
# 
# The problem is, when we are doing DIO read and crossed the end of file - we
# don't release referencess on all the pages we got from get_user_pages().
# (since it is a success case).
# 
# The fix is to call dio_cleanup() even for sucess cases.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.83
# [PATCH] JBD: b_committed_data locking fix
# 
# The locking rules say that b_committed_data is covered by
# jbd_lock_bh_state(), so implement that during the start of commit, while
# throwing away unused shadow buffers.
# 
# I don't expect that there is really a race here, but them's the rules.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.84
# [PATCH] dvb i2c timeout fix
# 
# From: Gerd Knorr <kraxel@bytesex.org>
# 
# Below is a ObviouslyCorrect[tm] patch which fixes the i2c bus timeout
# handling in the saa7146 driver.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.85
# [PATCH] more correct get_compat_timespec interface
# 
# From: Joe Korty <joe.korty@ccur.com>
# 
# The API for get_compat_timespec / put_compat_timespec is incorrect, it
# forces a caller with const args to (incorrectly) cast.  The posix message
# queue patch is one such caller.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.86
# [PATCH] MAINTAINERS vger.rutgers.edu
# 
# From: Geert Uytterhoeven <geert@linux-m68k.org>
# 
# Mailing lists at vger.rutgers.edu are obsolete, use vger.kernel.org
# instead.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.87
# [PATCH] list_empty_careful() documentation.
# 
# From: Ingo Molnar <mingo@elte.hu>
# 
# I'd also suggest the following patch below, to clarify the use of
# unsynchronized list_empty().  list_empty_careful() can only be safe in the
# very specific case of "one-shot" list entries which might be removed by
# another CPU.  (but nothing else can happen to them and this is their only
# final state.) list_empty_careful() is otherwise completely unsynchronized
# on both the compiler and CPU level and is not 'SMP safe' in any way.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.88
# [PATCH] Clear dirty bits etc on compound frees
# 
# From: "Martin J. Bligh" <mbligh@aracnet.com>,
#       Guillaume Morin <guillaume@morinfr.org>
# 
# We need to clear the software dirty bit on the tail pages of a compound page
# when freeing it up.
# 
# The tail pages can become dirtied by mmap'ing /dev/mem, and writing into
# any clustered page group (that a driver might have created or whatever).
# 
# Plus it's better to run all these pages through the free_pages_check checks
# anyway.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.89
# [PATCH] Allow unimap change on non fg console
# 
# From: Kurt Garloff <garloff@suse.de>
# 
# The comment in front of vt_ioctl() reads
# /*
#  * We handle the console-specific ioctl's here.  We allow the
#  * capability to modify any console, not just the fg_console.=20
#  */
# 
# Unfortunately, this does not apply to PIO_UNIMAPCLR, nor
# GIO_/PIO_UNIMAP. They always operate on the current foreground
# console, which is inconsistent at least. For most ioctls, the
# comment is applicable.
# 
# It also causes problems, as setfont can't do the full job on
# the non-fg consoles. (OK, our setfont is slightly changed to
# even try it ... as you know.)
# 
# The attached patch does fix this.
# 
# I have a similar patch for 2.4, but it never got merged :-(
# because not many people seem to care and I submitted in the middle
# of the 2.4 series ...
# It has been in UnitedLinux/SUSE kernels for ages, though.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.90
# [PATCH] fix outdated comment in jiffies.h
# 
# From: Tim Schmielau <tim@physik3.uni-rostock.de>
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.91
# [PATCH] slab reclaim accounting fix
# 
# From: Manfred Spraul <manfred@colorfullife.com>
# 
# slab_reclaim_pages is increased even if get_free_pages fails.  The attached
# patch moves the update to the correct position.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.92
# [PATCH] struct_cpy compilation warning
# 
# From: Ingo Molnar <mingo@elte.hu>
# 
# i've attached a minor fix for the 2.6.1 timeframe - we clearly meant
# __struct_cpy_bug().  Newest versions of gcc warn about this.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.93
# [PATCH] More MODULE_ALIASes
# 
# From: Rusty Russell <rusty@rustcorp.com.au>
#       Steve Youngs, Stephen Hemminger
# 
# Three more MODULE_ALIASes.  Trivial, but useful if people want things
# to "just work" in 2.6.0.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.94
# [PATCH] nr_slab accounting fix
# 
# From: Manfred Spraul <manfred@colorfullife.com>
# 
# if alloc_slabmgmt fails, then kmem_freepages() calls sub_page_state(),
# altough nr_slab was not yet increased.  The attached patch fixes that by
# moving the inc_page_state into kmem_getpages().
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.95
# [PATCH] isdn_ppp_ccp.c uses uninitialized spinlock
# 
# From: Tonnerre Anklin <thunder@keepsake.ch>
# 
# This spinlock was used uninitialized. Gave me a lot of warnings.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.96
# [PATCH] fix userspace compiles with nbd.h
# 
# From: Paul Clements <Paul.Clements@SteelEye.com>
# 
# A previous "cleanup" on the nbd.h header file broke userspace compiles.
# I've added an #ifdef __KERNEL__ so that userspace doesn't need to worry
# about the nbd_device structure, which is only used in-kernel. The patch
# allows me to compile my nbd tools with the 2.6 nbd.h.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.97
# [PATCH] DAC960 request queue per disk
# 
# From: Dave Olien <dmo@osdl.org>
# 
# Here's a patch that changes the DAC960 driver from having one request
# queue for ALL disks on the controller, to having a request queue for
# each logical disk.  This turns out to make little difference for deadline
# scheduler, nor for AS scheduler under light IO load.  But under AS
# scheduler with heavy IO, it makes about a 40% difference on dbt2
# workload.  Here are the measured numbers:
# 
# The 2.6.0-test11-D kernel version includes this mutli-queue patch to the
# DAC960 driver.
# 
# For non-cached dbt2 workload  (heavy IO load)
# 
# Scheduler	kernel/driver	NOTPM(bigger is better)
# AS		2.6.0-test11-D  1598
# AS		2.6.0-test11     973
# deadline	2.6.0-test11    1640
# deadline	2.6.0-test11-D  1645
# 
# For cached dbt2 workload (lighter IO load)
# 
# AS		2.6.0-test11-D  4993
# AS		2.6.-test6-mm4  4976, 4890, 4972
# deadline	2.6.0-test11-D  4998
# 
# Can this be included in 2.6.0?  I know it's not a "critical patch"
# in the sense that something won't work without it.  On the other hand,
# the change is isolated to a driver.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.98
# [PATCH] synchronize use of mm->core_waiters
# 
# From: Roland McGrath <roland@redhat.com>
# 
# I believe I have identified a failure mode that Linus saw a couple weeks
# back when tracking down some other fork/exit sorts of races.  We saw this
# come up on rare occasions with the RHEL3 kernel's backport of the new code
# (while trying to track down other race failure modes we have yet to fix, sigh).
# 
# I am talking about the following scenario:
# 
# > Btw, even with the fix, doing a "while : ; ./crash t 10 ; done" will
# > eventually result in a stuck process:
# >
# > 	 1415 tty1     D      0:00 ./crash
# >
# > This is some kind of deadlock: most of the fifty threads are in "D"
# > state, with a trace something like
# >
# > 	 [<c011fbe3>] schedule+0x360/0x7f8
# > 	 [<c0120539>] wait_for_completion+0xd4/0x1c3
# > 	 [<c0128c9e>] do_exit+0x627/0x6a4
# > 	 [<c0128ddd>] do_group_exit+0x3d/0x177
# > 	 [<c0130c13>] dequeue_signal+0x2d/0x84
# > 	 [<c0133911>] get_signal_to_deliver+0x390/0x575
# > 	 [<c010a541>] do_signal+0x6c/0xf1
# > 	 [<c01200be>] default_wake_function+0x0/0x12
# > 	 [<c01200be>] default_wake_function+0x0/0x12
# > 	 [<c013d50f>] do_futex+0x6d/0x7d
# > 	 [<c013d635>] sys_futex+0x116/0x12f
# > 	 [<c010a601>] do_notify_resume+0x3b/0x3d
# > 	 [<c010a82e>] work_notifysig+0x13/0x15
# >
# > except for one that is trying to core-dump:
# >
# > 	 [<c0120539>] wait_for_completion+0xd4/0x1c3
# > 	 [<c01200be>] default_wake_function+0x0/0x12
# > 	 [<c01200be>] default_wake_function+0x0/0x12
# > 	 [<c02101aa>] rwsem_wake+0x86/0x12d
# > 	 [<c01738af>] coredump_wait+0xa8/0xaa
# > 	 [<c0173a26>] do_coredump+0x175/0x26c
# >
# > and three that are just doing a regular "exit()" system call:
# >
# > 	 [<c011fbe3>] schedule+0x360/0x7f8
# > 	 [<c011e19a>] recalc_task_prio+0x90/0x1aa
# > 	 [<c0120539>] wait_for_completion+0xd4/0x1c3
# > 	 [<c01200be>] default_wake_function+0x0/0x12
# > 	 [<c01200be>] default_wake_function+0x0/0x12
# > 	 [<c0210207>] rwsem_wake+0xe3/0x12d
# > 	 [<c0128c9e>] do_exit+0x627/0x6a4
# > 	 [<c0128d4d>] next_thread+0x0/0x53
# > 	 [<c010a7e3>] syscall_call+0x7/0xb
# >
# > However, the rest of the system is totally unaffected by this deadlock:
# > it's only deadlocked withing the thread group itself, nobody else cares.
# 
# What happens here is a race between an exiting thread checking
# mm->core_waiters in __exit_mm, and the thread taking the core-dump signal
# (in coredump_wait) examining the first thread's ->mm pointer and
# incrementing mm->core_waiters to account for it.  There is no
# synchronization at all in __exit_mm's use of mm->core_waiters.  If the
# coredump_wait thread reads tsk->mm when tsk is in __exit_mm between
# checking mm->core_waiters and clearing tsk->mm, then it will increment
# mm->core_waiters and the total count will later exceed the number of
# threads that will ever decrement it and synchronize.  Hence it blocks forever.
# 
# The following patch fixes the problem by using mm->mmap_sem in __exit_mm.
# The read lock must be held around checking mm->core_waiters and clearing
# tsk->mm so that coredump_wait (which gets the write lock) cannot come in
# between and do bogus bookkeeping.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.99
# [PATCH] Rename legacy_bus to platform_bus
# 
# From: Jeff Garzik <jgarzik@pobox.com>
# 
# I've seen this patch floating around.  Not sure the origin, but it's 
# surfaced on lkml and also when I was poking around handhelds.org CVS for
# iPAQ patches:  on non-PCs, particularly system-on-chip devices but not
# just there, you have a custom "platform bus" that is the root of pretty 
# much all other devices and buses.
# 
# It's something I wanted to make sure people didn't forget; to make sure 
# the legacy_bus didn't get "legacied out of existence."  ;-)
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.100
# [PATCH] Fix ioctl related warnings in userspace
# 
# From: Johannes Stezenbach <js@convergence.de>
# 
# the patch below removes warnings like:
# 
#   warning: signed and unsigned type in conditional expression
# 
# when compiling userspace applications against a glibc built with 2.6 kernel
# headers (like on Debian unstable).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.101
# [PATCH] Winbond w83627hf driver
# 
# From: Pádraig Brady <P@draigBrady.com>
# 
# Watchdog driver for the Winbond w83627hf which is on the last 3 motherboards
# I got here for test (tyan, advantech, force).
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.102
# [PATCH] update sn2 MAINTAINERS file entry
# 
# From: jbarnes@sgi.com (Jesse Barnes)
# 
# Just a quick patch to fix MAINTAINERS for sn2.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.103
# [PATCH] SCC warning fix
# 
# From: Alan Cox <alan@redhat.com>
# 
# Just a warning fix and behaviour tidy. Changing the kiss.mintime variable isn't
# going to work as its exposed to user space
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.104
# [PATCH] cycx_drv warning fix
# 
# From: Alan Cox <alan@redhat.com>
# 
# Type errors, just fixes a warning
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.105
# [PATCH] VIA audio fixes
# 
# From: Alan Cox <alan@redhat.com>
# 
# VIA audio had a fix from 2.4 missing so any user could spam the system log. Also
# include a fix for a bug which is pending 2.4 fixing too and causes a bogus
# warning to be displayed on close of audio file handle.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.106
# [PATCH] Kernel Locking Documentation update
# 
# From: Rusty Russell <rusty@rustcorp.com.au>
# 
# Entirely revised, and largely rewritten.  Has a continuing example now, which
# I think makes things clearer.  Also covers Read Copy Update.  This version
# further deprecates rwlock_t, shuffles sections for better organization.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.107
# [PATCH] name_to_dev_t() fix
# 
# From: viro@parcelfarce.linux.theplanet.co.uk
# 
# 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.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.108
# [PATCH] dm: fix block device resizing
# 
# From: Joe Thornber <thornber@sistina.com>
# 
# When setting the size of a Device-Mapper device in the gendisk entry, also
# try to set the size of the corresponding block_device entry's inode.  This is
# necessary to allow online device/filesystem resizing to work correctly. 
# [Kevin Corry]
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.109
# [PATCH] dm: remove dynamic table resizing
# 
# From: Joe Thornber <thornber@sistina.com>
# 
# The dm table size is always known in advance, so we can specify it in
# dm_table_create(), rather than relying on dynamic resizing.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.110
# [PATCH] dm: make v4 of the ioctl interface the default
# 
# From: Joe Thornber <thornber@sistina.com>
# 
# Make the version-4 ioctl interface the default kernel configuration option.
# If you have out of date tools you will need to use the v1 interface.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.111
# [PATCH] dm: set io restriction defaults
# 
# From: Joe Thornber <thornber@sistina.com>
# 
# Make sure that a target has a sensible set of default io restrictions.
# --------------------------------------------
# 03/12/29	akpm@osdl.org	1.1474.48.112
# [PATCH] dm: dm_table_event() sleep on spinlock bug
# 
# From: Joe Thornber <thornber@sistina.com>
# 
# You can no longer call dm_table_event() from interrupt context.
# --------------------------------------------
# 03/12/29	torvalds@home.osdl.org	1.1474.48.113
# Merge bk://kernel.bkbits.net/davem/net-2.6
# into home.osdl.org:/home/torvalds/v2.5/linux
# --------------------------------------------
# 03/12/29	torvalds@home.osdl.org	1.1474.48.114
# Merge bk://bk.arm.linux.org.uk/linux-2.6-serial
# into home.osdl.org:/home/torvalds/v2.5/linux
# --------------------------------------------
# 03/12/29	torvalds@home.osdl.org	1.1474.1.56
# Merge ia64 conflicts
# --------------------------------------------
# 03/12/29	torvalds@home.osdl.org	1.1474.1.57
# Merge bk://gkernel.bkbits.net/net-drivers-2.5
# into home.osdl.org:/home/torvalds/v2.5/linux
# --------------------------------------------
# 03/12/30	davem@nuts.ninka.net	1.1474.1.58
# Merge nuts.ninka.net:/disk1/davem/BK/sparcwork-2.6
# into nuts.ninka.net:/disk1/davem/BK/sparc-2.6
# --------------------------------------------
# 03/12/30	davem@nuts.ninka.net	1.1474.49.1
# Merge nuts.ninka.net:/disk1/davem/BK/network-2.6
# into nuts.ninka.net:/disk1/davem/BK/net-2.6
# --------------------------------------------
# 03/12/30	davem@nuts.ninka.net	1.1474.49.2
# Merge nuts.ninka.net:/disk1/davem/BK/net-2.6.1
# into nuts.ninka.net:/disk1/davem/BK/net-2.6
# --------------------------------------------
# 03/12/30	davem@nuts.ninka.net	1.1474.1.59
# [SPARC64]: Fix build after show_interrupts() changes.
# --------------------------------------------
# 03/12/30	davem@nuts.ninka.net	1.1474.1.60
# [SPARC32]: Fix build after show_interrupts() changes.
# --------------------------------------------
# 03/12/30	bcollins@debian.org	1.1474.1.61
# Merge http://linux.bkbits.net/linux-2.5
# into debian.org:/usr/src/kernel/linux-2.6
# --------------------------------------------
# 03/12/30	bcollins@debian.org	1.1474.1.62
# MAINTAINERS:
#   [IEEE1394]: Update maintainer info
# --------------------------------------------
# 03/12/30	bcollins@debian.org	1.1474.1.63
# video1394.c:
#   [IEEE1394]
#   Patch from Damien Douxchamps to fix video1394 when image size is less than
#   page size.
# --------------------------------------------
# 03/12/30	amir.noam@intel.com	1.1592
# [netdrvr bonding] fix build breakage
# --------------------------------------------
#
diff -Nru a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
--- a/drivers/net/bonding/bond_main.c	Wed Dec 31 10:13:11 2003
+++ b/drivers/net/bonding/bond_main.c	Wed Dec 31 10:13:11 2003
@@ -1657,8 +1657,8 @@
 		bond_change_active_slave(bond, NULL);
 	}
 
-	if ((bond->params.mode == BOND_MODE_TLB) ||
-	    (bond->params.mode == BOND_MODE_ALB)) {
+	if ((bond_mode == BOND_MODE_TLB) ||
+	    (bond_mode == BOND_MODE_ALB)) {
 		/* Must be called only after the slave has been
 		 * detached from the list and the curr_active_slave
 		 * has been cleared (if our_slave == old_current),

^ permalink raw reply	[relevance 3%]

* Re: use case for register_pstore_blk?
  2020-10-07 18:42  7%         ` Christoph Hellwig
@ 2020-10-07 19:17  6%           ` Kees Cook
  2020-10-12  7:02  0%             ` Christoph Hellwig
  0 siblings, 1 reply; 8+ results
From: Kees Cook @ 2020-10-07 19:17 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: WeiXiong Liao, linux-kernel, Richard Weinberger, linux-mtd

On Wed, Oct 07, 2020 at 08:42:58PM +0200, Christoph Hellwig wrote:
> The problem with the block code is that it is completely broken.

This seems like hyperbole.

> It uses on-stack structures where it can't,

Do you mean the ones in pstore_blk_init() and pstore_blk_exit()? Those
are fine -- they're what provide the "driverless" module-param loaded
"best_effort" target. Do you seem something unsafe about it?

> it pokes into internals of the block device read/write path for
> absolutely no reason,

Do you mean psblk_generic_blk_read() and psblk_generic_blk_write()?
These are for writing to the block device... I'm happy to adjust this
if you can show me the better API. (This was being developed in the
middle of the iov_iter changes, so perhaps I missed a more appropriate
way to do things.)

> and it uses name_to_dev_t which must not be used in new code.

What?

include/linux/mount.h:
extern dev_t name_to_dev_t(const char *name);

init/do_mounts.c:
/*
 *      Convert a name into device number.  We accept the following
 *      variants:
 ...
 *      If name doesn't have fall into the categories above, we return
 *      (0,0).
 *      block_class is used to check if something is a disk name. If the
 *      disk
 *      name contains slashes, the device name has them replaced with
 *      bangs.
 */
dev_t name_to_dev_t(const char *name)

There are no comments about it being deprecated.

And even I had guessed to double-check, there isn't even a hit
on lkml about it that I can easily find:
https://lore.kernel.org/lkml/?q=name_to_dev_t+%22new+code%22
https://lore.kernel.org/lkml/?q=name_to_dev_t+deprecated

Where did this happen, where was it documented, and what should be used
instead?

> Or in other words: it is a complete piece of crap full of layering
> violations that should never have been merged in that form.

Gee thanks. I obviously don't agree with you.

> It also does not happen to share code with the mtd case.

What? Yes it does: it explicitly uses the pstore/blk configuration
callback to get the details configured at boot to identify and configure
the backing device. This is specifically designed this way to avoid
repeating the mistake of having per-backing-device configuration that is
essentially only actually used by the pstore storage layer. i.e. the very
thing I'm trying to get away from in ramoops, efi-pstore, etc: storage
configuration is tied to the pstore storage layer (i.e. pstore/blk and
pstore/zone), not the specific backing device (i.e. MTD, blk, RAM, NVRAM,
EFI variables, etc).

So, yes, I think it'd be fine to drop the unused EXPORTs, and I welcome
corrections to the generic read/write routines, I very specifically do
not want to rip out having a block device as a backing device, nor do I
want to revert the configuration management to being backing device
specific.

-- 
Kees Cook

^ permalink raw reply	[relevance 6%]

* Re: [PATCH] PM / Hibernate : Use get_gendisk to verify partition if resume_file is integer format
  @ 2012-05-12 21:39  6% ` Rafael J. Wysocki
  2012-05-14  0:53  6%   ` Minho Ban
  0 siblings, 1 reply; 8+ results
From: Rafael J. Wysocki @ 2012-05-12 21:39 UTC (permalink / raw)
  To: Minho Ban
  Cc: Len Brown, Pavel Machek, Rob Landley, linux-kernel, linux-doc, linux-pm

On Wednesday, May 09, 2012, Minho Ban wrote:
> Sometimes resume= parameter comes in integer style (e.g. major:minor) then
> name_to_dev_t can not detect partition properly. (especially async device like
> usb, mmc)
> This patch calls get_gendisk if resumewait is true and resume_file is in integer
> format.
> 
> Signed-off-by: Minho Ban <mhban@samsung.com>
> ---
>  Documentation/kernel-parameters.txt |    2 ++
>  kernel/power/hibernate.c            |   13 +++++++++++++
>  2 files changed, 15 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index c1601e5..5900b49 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -2372,6 +2372,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>  
>  	resume=		[SWSUSP]
>  			Specify the partition device for software suspend
> +			Format:
> +			{/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
>  
>  	resume_offset=	[SWSUSP]
>  			Specify the offset from the beginning of the partition
> diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
> index e09dfbf..8b53db3 100644
> --- a/kernel/power/hibernate.c
> +++ b/kernel/power/hibernate.c
> @@ -25,6 +25,8 @@
>  #include <linux/freezer.h>
>  #include <linux/gfp.h>
>  #include <linux/syscore_ops.h>
> +#include <linux/ctype.h>
> +#include <linux/genhd.h>
>  #include <scsi/scsi_scan.h>
>  
>  #include "power.h"
> @@ -722,6 +724,17 @@ static int software_resume(void)
>  
>  	/* Check if the device is there */
>  	swsusp_resume_device = name_to_dev_t(resume_file);
> +
> +	/*
> +	 * name_to_dev_t is ineffective to verify parition if resume_file is in
> +	 * integer format. (e.g. major:minor)
> +	 */
> +	if (isdigit(resume_file[0]) && resume_wait) {
> +		int partno;
> +		while (!get_gendisk(swsusp_resume_device, &partno))
> +			msleep(10);
> +	}

Hmm.  Wouldn't it be better to do:

	if (isdigit(resume_file[0]) && resume_wait) {
		int partno;
		while (!get_gendisk(swsusp_resume_device, &partno))
			msleep(10);
	} else {
		swsusp_resume_device = name_to_dev_t(resume_file);
	}

?

Your new code will overwrite whatever swsusp_resume_device is set to by the
preceding statement anyway.

> +
>  	if (!swsusp_resume_device) {
>  		/*
>  		 * Some device discovery might still be in progress; we need
> 

Thanks,
Rafael

^ permalink raw reply	[relevance 6%]

* Re: [PATCH] PM / Hibernate : Use get_gendisk to verify partition if resume_file is integer format
  2012-05-12 21:39  6% ` Rafael J. Wysocki
@ 2012-05-14  0:53  6%   ` Minho Ban
  0 siblings, 0 replies; 8+ results
From: Minho Ban @ 2012-05-14  0:53 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Len Brown, Pavel Machek, Rob Landley, linux-kernel, linux-doc, linux-pm

On 05/13/2012 06:39 AM, Rafael J. Wysocki wrote:
> On Wednesday, May 09, 2012, Minho Ban wrote:
>>  	/* Check if the device is there */
>>  	swsusp_resume_device = name_to_dev_t(resume_file);
>> +
>> +	/*
>> +	 * name_to_dev_t is ineffective to verify parition if resume_file is in
>> +	 * integer format. (e.g. major:minor)
>> +	 */
>> +	if (isdigit(resume_file[0]) && resume_wait) {
>> +		int partno;
>> +		while (!get_gendisk(swsusp_resume_device, &partno))
>> +			msleep(10);
>> +	}
> 
> Hmm.  Wouldn't it be better to do:
> 
> 	if (isdigit(resume_file[0]) && resume_wait) {
> 		int partno;
> 		while (!get_gendisk(swsusp_resume_device, &partno))
> 			msleep(10);
> 	} else {
> 		swsusp_resume_device = name_to_dev_t(resume_file);
> 	}
> 
> ?

Do you want name_to_dev_t to be called again?  If not, swsusp_resume_device parameter 
in get_gendisk can not be used because it is not initialized yet.

> 
> Your new code will overwrite whatever swsusp_resume_device is set to by the
> preceding statement anyway.
> 

Sorry, I don't understand what will be overwritten by the new code. It would be very 
much appreciated if you point it again.

Regards,
Minho Ban

^ permalink raw reply	[relevance 6%]

* Re: Software RAID partitions not detected at boot time with linux 2.6.25.1.
  @ 2008-05-05 12:29  6%   ` Kay Sievers
  0 siblings, 0 replies; 8+ results
From: Kay Sievers @ 2008-05-05 12:29 UTC (permalink / raw)
  To: Neil Brown
  Cc: Joao Luis Meloni Assirati, Greg Kroah-Hartman, linux-kernel, linux-raid

On Sun, 2008-05-04 at 22:56 +1000, Neil Brown wrote:
> On Saturday May 3, assirati@nonada.if.usp.br wrote:
> > Let's try again, this this time with a proper e-mail subject.

> > The problem I reported in
> > http://marc.info/?l=linux-kernel&m=120804001406787&w=2
> > still persists at 2.6.25.1. (sorry for the repeated messages there; that was 
> > my mail client's fault).
> > 
> > In my previous bug repor, I was using raid1; now, I am using raid5, as 
> > follows.
> > 
> > I have three partitions /dev/sda2, /dev/sdb2 and /dev/sdc2 marked as raid 
> > autodetect (FD). They are assembled as a partitionable raid 5 array, and my 
> > root is in /dev/md_d0p1. With a 2.6.24.2 kernel with sata, ext3 and raid5 
> > compiled in (I don't use initrd), the system boots fine. In fact, the raid 
> > array and partitions are detected as show with dmesg:
> > 
> > md: Autodetecting RAID arrays.
> > md: Scanned 3 and added 3 devices.
> > md: autorun ...
> > md: considering sdc2 ...
> > md:  adding sdc2 ...
> > md:  adding sdb2 ...
> > md:  adding sda2 ...
> > md: created md_d0
> > md: bind<sda2>
> > md: bind<sdb2>
> > md: bind<sdc2>
> > md: running: <sdc2><sdb2><sda2>
> > raid5: device sdc2 operational as raid disk 2
> > raid5: device sdb2 operational as raid disk 1
> > raid5: device sda2 operational as raid disk 0
> > raid5: allocated 3226kB for md_d0
> > raid5: raid level 5 set md_d0 active with 3 out of 3 devices, algorithm 2
> > RAID5 conf printout:
> >  --- rd:3 wd:3
> >  disk 0, o:1, dev:sda2
> >  disk 1, o:1, dev:sdb2
> >  disk 2, o:1, dev:sdc2
> > md: ... autorun DONE.
> >  md_d0: p1 p2 p3 p4 < p5 p6 p7 >
> > 
> > The last line shows my raid partitions are detected.
> > 
> > However, when I try kernel 2.6.25.1, again with sata, ext3 and raid5 compiled 
> > in and no initrd, the kernel does not recognize the raid partitions at boot 
> > time, nonetheless the array is dected. The output of dmesg is the same  until:
> > 
> > raid5: allocated 3224kB for md_d0
> > raid5: raid level 5 set md_d0 active with 3 out of 3 devices, algorithm 2
> > RAID5 conf printout:
> >  --- rd:3 wd:3
> >  disk 0, o:1, dev:sda2
> >  disk 1, o:1, dev:sdb2
> >  disk 2, o:1, dev:sdc2
> > md: ... autorun DONE.
> > VFS: Cannot open root device "md_d0p1" or unknown-block(0,0)
> > Please append a coorect "root=" boot option; here are the available partitions:
> > 0800  312571224 sda driver:sd
> >   0801      96358 sda1
> >   0802  312472282 sda2
> > 0810  312571224 sdb driver:sd
> >   0811      96358 sdb1
> >   0812  312472282 sdb2
> > 0820  312571224 sdc driver:sd
> >   0821      96358 sdc1
> >   0822  312472282 sdc2
> > fe00  624944384 md_d0 (driver?)
> > Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
> > 
> > Note the absence of the line
> >  md_d0: p1 p2 p3 p4 < p5 p6 p7 >
> > showing partition detection.
> > 
> 
> It appears this regression was introduced by commit
>    edfaa7c36574f1bf09c65ad602412db9da5f96bf
>    Driver core: convert block from raw kobjects to core devices
> 
> Previously, the device name "md_d0p1" would be parsed out as "md_d0"
> and partition 1.
> md_d0 would be found and the device number of the first partition
> could then be deduced even though the partition table hadn't been
> processed at this point, so 'p1' wasn't actually known.
> The kernel would attempt to open 'p1', this would trigger a read of
> the partition table and the open would be successful.
> 
> The new code is 'simpler'.  It doesn't try to parse the device name at
> all.  It just compares the device name against the names of all known
> devices.  As the partitions are not known at this time, md_d0p1 is not
> found.
> 
> There seem to be two ways this could be fixed:
> 1/ restore the old behaviour of parsing out the partition information.
>    This would be least likely to leave other regressions waiting to be
>    found, but might be seen as somewhat ugly.
> 
> 2/ Get md_d0 to read it's partition table earlier.  I've tried this
>    before without much luck.
>    There are three times that the partition table can be parsed.
>    a/ When the device is opened if bd_invalidated is set.
>    b/ When the device is first registered.  register_disk calls
>       blkdev_get which effectively opens the device, thus triggering
>       'a' above.
>    c/ When the BLKRRPART ioctl is made on the device.
> 
>    When an md device is first registered, there are no disks attached
>    to it, so no partition table can be read.  The way md devices get
>    set up, they are registered as empty devices, the component devices
>    are attached, then the array is 'started'.  Only at this point can
>    data, such as the partition table, be read.  But this it too late
>    for case 'b' above.  Case 'a' is the one that usually causes
>    partitions to be read.  'mdadm' explicitly opens devices after
>    creating them to trigger this.
> 
>    We could conceivably put a BLKRRPART call in at the end of
>    autorun_array where the array has just been started, but that would
>    be rather ugly.  We would need to open the device, and doing that
>    inside the kernel is never clean.  The code in 'init/*.c' for that
>    sort of thing creates nodes in /dev in a temporary root filesystem.
>    We cannot do that for autorun_array as it can be call long after
>    boot time (but the RAID_AUTODETECT ioctl) so there may not be 
>    a temporary filesystem to play with.
> 
> So I currently think that restoring the old behaviour of not requiring
> partitions to exist before trying to open them would be best.
> 
> Kay?

Care to test/fix/improve the following. I just booted a normal disk,
didn't test a partitioned md device.

Thanks,
Kay



From: Kay Sievers <kay.sievers@vrfy.org>
Subject: block: do_mounts - accept root=<non-existant partition>

Some devices, like md, may create partitions only at first access,
so allow root= to be set to a valid non-existant partition of an
existing disk. This applies only to non-initramfs root mounting.

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
---

diff --git a/block/genhd.c b/block/genhd.c
index fda9c7a..129ad93 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -653,7 +653,7 @@ void genhd_media_change_notify(struct gendisk *disk)
 EXPORT_SYMBOL_GPL(genhd_media_change_notify);
 #endif  /*  0  */
 
-dev_t blk_lookup_devt(const char *name)
+dev_t blk_lookup_devt(const char *name, int part)
 {
 	struct device *dev;
 	dev_t devt = MKDEV(0, 0);
@@ -661,7 +661,11 @@ dev_t blk_lookup_devt(const char *name)
 	mutex_lock(&block_class_lock);
 	list_for_each_entry(dev, &block_class.devices, node) {
 		if (strcmp(dev->bus_id, name) == 0) {
-			devt = dev->devt;
+			struct gendisk *disk = dev_to_disk(dev);
+
+			if (part < disk->minors)
+				devt = MKDEV(MAJOR(dev->devt),
+					     MINOR(dev->devt) + part);
 			break;
 		}
 	}
@@ -669,7 +673,6 @@ dev_t blk_lookup_devt(const char *name)
 
 	return devt;
 }
-
 EXPORT_SYMBOL(blk_lookup_devt);
 
 struct gendisk *alloc_disk(int minors)
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index ecd2bf6..612a790 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -524,7 +524,7 @@ struct unixware_disklabel {
 #define ADDPART_FLAG_RAID	1
 #define ADDPART_FLAG_WHOLEDISK	2
 
-extern dev_t blk_lookup_devt(const char *name);
+extern dev_t blk_lookup_devt(const char *name, int part);
 extern char *disk_name (struct gendisk *hd, int part, char *buf);
 
 extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev);
@@ -552,7 +552,7 @@ static inline struct block_device *bdget_disk(struct gendisk *disk, int index)
 
 static inline void printk_all_partitions(void) { }
 
-static inline dev_t blk_lookup_devt(const char *name)
+static inline dev_t blk_lookup_devt(const char *name, int part)
 {
 	dev_t devt = MKDEV(0, 0);
 	return devt;
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 3885e70..660c1e5 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -76,6 +76,7 @@ dev_t name_to_dev_t(char *name)
 	char s[32];
 	char *p;
 	dev_t res = 0;
+	int part;
 
 	if (strncmp(name, "/dev/", 5) != 0) {
 		unsigned maj, min;
@@ -106,7 +107,31 @@ dev_t name_to_dev_t(char *name)
 	for (p = s; *p; p++)
 		if (*p == '/')
 			*p = '!';
-	res = blk_lookup_devt(s);
+	res = blk_lookup_devt(s, 0);
+	if (res)
+		goto done;
+
+	/*
+	 * try non-existant, but valid partition, which may only exist
+	 * after revalidating the disk, like partitioned md devices
+	 */
+	while (p > s && isdigit(p[-1]))
+		p--;
+	if (p == s || !*p || *p == '0')
+		goto fail;
+
+	/* try disk name without <part number> */
+	part = simple_strtoul(p, NULL, 10);
+	*p = '\0';
+	res = blk_lookup_devt(s, part);
+	if (res)
+		goto done;
+
+	/* try disk name without p<part number> */
+	if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
+		goto fail;
+	p[-1] = '\0';
+	res = blk_lookup_devt(s, part);
 	if (res)
 		goto done;
 



^ permalink raw reply related	[relevance 6%]

* Re: use case for register_pstore_blk?
  @ 2020-10-07 18:42  7%         ` Christoph Hellwig
  2020-10-07 19:17  6%           ` Kees Cook
  0 siblings, 1 reply; 8+ results
From: Christoph Hellwig @ 2020-10-07 18:42 UTC (permalink / raw)
  To: Kees Cook
  Cc: Christoph Hellwig, WeiXiong Liao, linux-kernel,
	Richard Weinberger, linux-mtd

The problem with the block code is that it is completely broken.
It uses on-stack structures where it can't, it pokes into internals
of the block device read/write path for absolutely not reason, and
it uses name_to_dev_t which must not be used in new code.

Or in other words: it is a complete piece of crap full of layering
violations that should never have been merged in that form.

It also does not happen to share code with the mtd case.

On Wed, Oct 07, 2020 at 11:40:36AM -0700, Kees Cook wrote:
> On Wed, Oct 07, 2020 at 10:37:15AM +0200, Christoph Hellwig wrote:
> > Looking at this more:  in addition to the block code being totally
> > broken, there is really no point in mtdpstore even using this code.
> > It does nothing but minimal parameter validation to just pass it
> > on to the pstore zone interface.  IMHO writing the mtd code directly
> > to the zone interface makes a whole lot more sense even if we grow
> > a non-broken block backend at some point.  Something like this:
> 
> I really don't like this, sorry. I'm using the pstore/blk bits myself
> already, and I don't want that removed. Additionally I really don't want
> the structures open-coded in the MTD driver. The whole point was to
> encapsulate it. I've spent a lot of time clawing pstore back from the
> brink of open-coded argument and member explosion. :)
> 
> I'm fine to drop the exported register_pstore_blk() API until someone
> actually uses it, but I want to keep pstore/blk itself and the existing
> separation between pstore backing devices and pstore storage logic so
> that configuration happens at the storage level, not the backing device
> level. My intent, for example, is to migrate ramoops to pstore/zone,
> etc, and remove all the ramoops-specific configuration which is common
> to pstore/zone.
> 
> -- 
> Kees Cook
---end quoted text---

^ permalink raw reply	[relevance 7%]

Results 1-8 of 8 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
     [not found]     <6BE35B06920A7841A6F6AFFC7303CE5EB84C@mbi-10.mbi.ufl.edu>
2003-12-31 15:13  3% ` 2.6.0-rc1-mm1 error in bond_main.c Jeff Garzik
2014-04-01 20:43  3% [GIT PULL][Update] ACPI and power management updates for v3.15-rc1 Rafael J. Wysocki
2020-10-06 15:52     use case for register_pstore_blk? Christoph Hellwig
2020-10-07  7:13     ` Kees Cook
2020-10-07  7:55       ` Christoph Hellwig
2020-10-07  8:37         ` Christoph Hellwig
2020-10-07 18:40           ` Kees Cook
2020-10-07 18:42  7%         ` Christoph Hellwig
2020-10-07 19:17  6%           ` Kees Cook
2020-10-12  7:02  0%             ` Christoph Hellwig
2008-05-04  1:45     Software RAID partitions not detected at boot time with linux 2.6.25.1 Joao Luis Meloni Assirati
2008-05-04 12:56     ` Neil Brown
2008-05-05 12:29  6%   ` Kay Sievers
2012-05-09 10:23     [PATCH] PM / Hibernate : Use get_gendisk to verify partition if resume_file is integer format Minho Ban
2012-05-12 21:39  6% ` Rafael J. Wysocki
2012-05-14  0:53  6%   ` Minho Ban

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).