31 Oct, 2005

40 commits

  • Update SMC91x driver for m32r.

    - Remove needless NONCACHE_OFFSET adjustment.
    > [PATCH 2.6.14-rc4] m32r: NONCACHE_OFFSET in _port2addr
    > Change _port2addr() not to add NONCACHE_OFFSET.
    > Adding NONCACHE_OFFSET requires needless address adjusting by a driver
    > using ioremap() like a SMC91x driver.

    - Fix lots of warnings as following:
    /usr/src/ctest/git/kernel/drivers/net/smc91x.c: In function `smc_reset':
    /usr/src/ctest/git/kernel/drivers/net/smc91x.c:324: warning: passing arg 2 of `_outw' makes integer from pointer without a cast
    /usr/src/ctest/git/kernel/drivers/net/smc91x.c:325: warning: passing arg 2 of `_outw' makes integer from pointer without a cast
    /usr/src/ctest/git/kernel/drivers/net/smc91x.c:341: warning: passing arg 2 of `_outw' makes integer from pointer without a cast
    /usr/src/ctest/git/kernel/drivers/net/smc91x.c:342: warning: passing arg 2 of `_outw' makes integer from pointer without a cast
    :
    /usr/src/ctest/git/kernel/drivers/net/smc91x.c:1915: warning: passing arg 1 of `_inw' makes integer from pointer without a cast
    /usr/src/ctest/git/kernel/drivers/net/smc91x.c:1915: warning: passing arg 1 of `_inw' makes integer from pointer without a cast

    Signed-off-by: Hayato Fujiwara
    Signed-off-by: Hirokazu Takata
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hirokazu Takata
     
  • Change _port2addr() not to add NONCACHE_OFFSET. Adding NONCACHE_OFFSET
    requires needless address adjusting by a driver using ioremap() like a
    SMC91x driver.

    Signed-off-by: Hayato Fujiwara
    Signed-off-by: Hirokazu Takata
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hirokazu Takata
     
  • Fix warnings for #if directives.

    Signed-off-by: Hirokazu Takata
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hirokazu Takata
     
  • Remove unused instructions for debugging.

    Signed-off-by: Naoto Sugai
    Signed-off-by: Hirokazu Takata
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hirokazu Takata
     
  • Add pm_ops.valid callback, so only the available pm states show in
    /sys/power/state. And this also makes an earlier states error report at
    enter_state before we do actual suspend/resume.

    Signed-off-by: Shaohua Li
    Acked-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shaohua Li
     
  • The following patch simplifies the progress meter in disk.c:free_some_memory()
    and makes disk.c:pm_suspend_disk() call device_resume() explicitly in the
    suspend path.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • The following patch merges two functions in a trivial way.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Reduce number of ifdefs somehow, and fix whitespace a bit. No real code
    changes.

    Signed-off-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Machek
     
  • Cleanup comments and remove unneccessary includes.

    Signed-off-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Machek
     
  • The following patch makes swsusp use the PG_nosave and PG_nosave_free flags to
    mark pages that should be freed in case of an error during resume.

    This allows us to simplify the code and to use swsusp_free() in all of the
    swsusp's resume error paths, which makes them actually work.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • The following patch moves the functionality of swsusp related to creating and
    handling the snapshot of memory to a separate file, snapshot.c

    This should enable us to untangle the code in the future and eventually to
    implement some parts of swsusp.c in the user space.

    The patch does not change the code.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • The following patch makes swsusp use PG_nosave and PG_nosave_free flags to
    mark pages that should be freed after the state of the system has been
    restored from the image (or in case of an error during suspend).

    This allows us to avoid storing metadata in swap twice and to reduce the
    amount of memory needed by swsusp.  Additionally, it allows us to simplify
    the code by removing a couple of functions that are no longer necessary.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • cpufreq entries in sysfs should only be populated when CPU is online state.
    When we either boot with maxcpus=x and then boot the other cpus by echoing
    to sysfs online file, these entries should be created and destroyed when
    CPU_DEAD is notified. Same treatement as cache entries under sysfs.

    We place the processor in the lowest frequency, so hw managed P-State
    transitions can still work on the other threads to save power.

    Primary goal was to just make these directories appear/disapper dynamically.

    There is one in this patch i had to do, which i really dont like myself but
    probably best if someone handling the cpufreq infrastructure could give
    this code right treatment if this is not acceptable. I guess its probably
    good for the first cut.

    - Converting lock_cpu_hotplug()/unlock_cpu_hotplug() to disable/enable preempt.
    The locking was smack in the middle of the notification path, when the
    hotplug is already holding the lock. I tried another solution to avoid this
    so avoid taking locks if we know we are from notification path. The solution
    was getting very ugly and i decided this was probably good for this iteration
    until someone who understands cpufreq could do a better job than me.

    (akpm: export cpucontrol to GPL modules: drivers/cpufreq/cpufreq_stats.c now
    does lock_cpu_hotplug())

    Signed-off-by: Ashok Raj
    Signed-off-by: Venkatesh Pallipadi
    Cc: Dave Jones
    Cc: Zwane Mwaikambo
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ashok Raj
     
  • cpu_sys_devices is redundant with the new API get_cpu_sysdev(). So nuking
    this usage since its not needed.

    Signed-off-by: Ashok Raj
    Signed-off-by: Venkatesh Pallipadi
    Cc: Dave Jones
    Cc: Zwane Mwaikambo
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ashok Raj
     
  • cpu cache entries should be populated only when cpu is online and removed
    when they are logically offlined.

    Without which entries are not removed when cpu is offlined, or dont appear
    when we boot with maxcpus=1 and then kick the rest of the cpus via echo 1
    to the sysfs online file.

    - Changed __devinit to __cpuinit for consistency.
    - Changed sysfs_driver_register to register_cpu_notifier.

    Signed-off-by: Ashok Raj
    Signed-off-by: Venkatesh Pallipadi
    Cc: Dave Jones
    Cc: Zwane Mwaikambo
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ashok Raj
     
  • Some modules creating sysfs entries under /sys/devices/system/cpu/cpuX/
    need to know the parent sysfs entry to make devices under them. This will
    just return the sysfs entry for a given cpu.

    sysfs entries showing under each cpu sysfs can be easily created if such
    entries can be created by registering a sysfs driver for cpuclass. The
    issue is when the entry is created the CPU may not be online, hence we
    would need to defer the creation until the online notification comes.

    Current users: cache entries for Intel CPU's and cpufreq subsystem.

    Signed-off-by: Ashok Raj
    Signed-off-by: Venkatesh Pallipadi
    Cc: Dave Jones
    Cc: Zwane Mwaikambo
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ashok Raj
     
  • This patch adds a check for the return value of acpi_find_root_pointer().
    Without this patch systems without ACPI support such as QEMU crashes when
    booting a NUMA kernel with CONFIG_ACPI_SRAT=y.

    Signed-off-by: Magnus Damm
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Magnus Damm
     
  • After staring at mpparse.c for a little longer I noticed that when we hit
    our limit of num_processors we are filtering out information about other
    processors that we can still store.

    This patch just reorders the code so we store everything we can.

    This should avoid the incorrect warning about our boot CPU not being listed
    by the BIOS that we are now getting in the kexec on panic case, and it
    should allow us to detect all apicid conflicts even when our physical
    number of cpus exceeds maxcpus.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • o Removes the unnecessary call to local_irq_disable().

    o Kdump was failing while second kernel was coming up. Check for presence
    of boot cpu apic id was failing in (apic_id_registered), hence hitting
    BUG().

    o This should not have failed because before calling setup_local_APIC(), it is
    ensured that even if BIOS has not reported boot cpu, then hard set the
    prence of it. Problem happens because of usage of hard_smp_processor_id()
    which is hardcoded to zero in case of non SMP kernel. In kdump case second
    kernel can boot on a cpu whose boot cpu id is not zero.

    o Using boot_cpu_physical_apicid instead to hard set the presence of boot cpu.

    Signed-off-by: Vivek Goyal
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • Signed-off-by: Ingo Molnar
    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Handle 32-bit mtrr ioctls in the mtrr driver instead of the ia32
    compatability layer.

    Signed-off-by: Brian Gerst
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brian Gerst
     
  • If VMX feature is available in the CPU, this patch will make it visible in
    the /proc/cpuinfo with the cpuid detection.

    Signed-Off-By: Nitin A Kamble
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kamble, Nitin A
     
  • It is dangerous to shutdown the apics in machine_crash_shutdown.

    With my previous patch to initialize apics in init_IRQ we should be able to
    boot a kernel without this. As long as we reinitialize the APICs we don't
    care what state they were in during bootup.

    This should make machine_crash_shutdown noticeably more reliable.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • All kinds of ugliness exists because we don't initialize
    the apics during init_IRQs.
    - We calibrate jiffies in non apic mode even when we are using apics.
    - We have to have special code to initialize the apics when non-smp.
    - The legacy i8259 must exist and be setup correctly, even
    when we won't use it past initialization.
    - The kexec on panic code must restore the state of the io_apics.
    - init/main.c needs a special case for !smp smp_init on x86

    In addition to pure code movement I needed a couple
    of non-obvious changes:
    - Move setup_boot_APIC_clock into APIC_late_time_init for
    simplicity.
    - Use cpu_khz to generate a better approximation of loops_per_jiffies
    so I can verify the timer interrupt is working.
    - Call setup_apic_nmi_watchdog again after cpu_khz is initialized on
    the boot cpu.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • The per cpu nmi watchdog timer is based on an event counter. idle cpus
    don't generate events so the NMI watchdog doesn't fire and the test to see
    if the watchdog is working fails.

    - Add nmi_cpu_busy so idle cpus don't mess up the test.
    - kmalloc prev_nmi_count to keep kernel stack usage bounded.
    - Improve the error message on failure so there is enough
    information to debug problems.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Currently we attempt to restore virtual wire mode on reboot, which only
    works if we can figure out where the i8259 is connected. This is very
    useful when we kexec another kernel and likely helpful when dealing with a
    BIOS that make assumptions about how the system is setup.

    Since the acpi MADT table does not provide the location where the i8259 is
    connected we have to look at the hardware to figure it out.

    Most systems have the i8259 connected the local apic of the cpu so won't be
    affected but people running Opteron and some serverworks chipsets should be
    able to use kexec now.

    In addition this patch removes the hard coded assumption that the io_apic
    that delivers isa interrups is always known to the kernel as io_apic 0. As
    there does not appear to be anything to guarantee that assumption is true.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • This is platform code update for ES7000: disables IRQ overrides for the
    recent ES7000 (Rascal/Zorro), cleans up the compile warning. The patch
    only affects the ES7000 subarch.

    Signed-off-by:
    Acked-by: Zwane Mwaikambo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Natalie.Protasevich@unisys.com
     
  • The code that prints the cache size assumes that L3 always lives in chipset
    and is shared across CPUs. Which is not really true.

    I think all the cachesizes reported by cpuid are in the processor itself.
    The attached patch changes the code to reflect that.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Venkatesh Pallipadi
     
  • This was reported because someone was getting oopses reading /proc/iomem.
    It was tracked down to a zero-sized 'struct resource' entry which was
    located right at 4GB.

    You need two conditions to hit this bug: a BIOS E820_RAM area starting at
    exactly the boundary where you specify mem= (to get a zero-sized entry),
    and for the legacy_init_iomem_resources() loop to skip that resource (which
    only happens at exactly 4G).

    I think the killing zero-sized e820 entry is the easiest way to fix this.

    Signed-off-by: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Hansen
     
  • Hopefully fix http://bugzilla.kernel.org/show_bug.cgi?id=5235

    Similar problem has been reported before here:
    http://groups.google.com/group/linux.kernel/browse_thread/thread/def4ca19dbc3cd4/5cffbf349f2c87a4?tvc=2&q=Aleksey+Gorelov&hl=en#5cffbf349f2c87a4
    and was related to bug in BIOS reporting 82C686 router compatible to 586.

    I suspect BIOS on this board has similar issue: reports VT8235 router to be
    compatible with 586 one - which is obviously not true. Patch from the link
    above has already incorporated in both 2.6 & 2.4 series, but might not work
    in this particular case.

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    aleksey_gorelov@phoenix.com
     
  • Make P6 MCA initialization code complaint with guidelines in IA-32 SDM
    Vol3. Bank 0 control register should not be set by OS and clear status
    registers on all banks on reset.

    This will prevent false MCE alarms on the systems that has some non-MCE
    information left-over in MC0_STATUS on reboot.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Venkatesh Pallipadi
     
  • Add an accessor function for getting the per-CPU gdt. Callee must already
    have the CPU.

    Signed-off-by: Zachary Amsden
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zachary Amsden
     
  • The per-CPU initialization code is copying in bogus data into
    thread->tls_array. Note that it copies &per_cpu(cpu_gdt_table, cpu), not
    &per_cpu(cpu_gdt_table, cpu)[GDT_ENTRY_TLS_MIN). That is totally broken
    and unnecessary. Make the initialization explicitly NULL.

    Signed-off-by: Zachary Amsden
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zachary Amsden
     
  • The patch allows physical bring-up of new processors (not initially present
    in the configuration) from facilities such as driver/utility implemented on
    a platform. The actual method of making processors available is up to the
    platform implementation.

    Signed-off-by: Natalie Protasevich
    Cc: Shaohua Li
    Cc: Ashok Raj
    Cc: Zwane Mwaikambo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Natalie Protasevich
     
  • Join together some common functions (pmd_page{,_kernel}) over 2level and
    3level pages.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Acked-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • Initial internal version of Venki's cpuid(4) deterministic cache parameter
    identification patch used static arrays of size MAX_CACHE_LEAVES. Final patch
    which made to the base used dynamic array allocation, with this
    MAX_CACHE_LEAVES limit hunk still in place.

    cpuid(4) already has a mechanism to find out the number of cache levels
    implemented and there is no need for this hardcoded MAX_CACHE_LEAVES limit.

    So remove the MAX_CACHE_LEAVES limit from the routine which calculates the
    number of cache levels using cpuid(4)

    Signed-off-by: Suresh Siddha
    Cc: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Siddha, Suresh B
     
  • There exists a field io_bitmap_owner in the TSS that is only checked, but
    never set to anything else but NULL.

    Signed-off-by: Bart Oldeman
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bart Oldeman
     
  • mxcsr_feature_mask_init isn't needed in suspend/resume time (we can use
    boot time mask). And actually it's harmful, as it clear task's saved
    fxsave in resume. This bug is widely seen by users using zsh.

    (akpm: my eyes. Fixed some surrounding whitespace mess)

    Signed-off-by: Shaohua Li
    Cc: Pavel Machek
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shaohua Li
     
  • This adjusts i386's cmpxchg patterns so that

    - for word and long cmpxchg-es the compiler can utilize all possible
    registers

    - cmpxchg8b gets disabled when the minimum specified hardware architectur
    doesn't support it (like was already happening for the byte, word, and
    long ones).

    Signed-off-by: Jan Beulich
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Beulich