1. 18 Nov, 2007 2 commits
  2. 17 Nov, 2007 19 commits
    • Linus Torvalds's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86 · 2ffbb837
      Linus Torvalds authored
      * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:
        x86: simplify "make ARCH=x86" and fix kconfig all.config
        x86: reboot fixup for wrap2c board
        x86: check boundary in count setup resource
        x86: fix reboot with no keyboard attached
        x86: add hpet sanity checks
        x86: on x86_64, correct reading of PC RTC when update in progress in time_64.c
        x86: fix freeze in x86_64 RTC update code in time_64.c
        ntp: fix typo that makes sync_cmos_clock erratic
        Remove x86 merge artifact from top Makefile
        x86: fixup cpu_info array conversion
        x86: show cpuinfo only for online CPUs
        x86: fix cpu-hotplug regression
        x86: ignore the sys_getcpu() tcache parameter
        x86: voyager use correct header file name
        x86: fix smp init sections
        x86: fix voyager_cat_init section
        x86: fix bogus memcpy in es7000_check_dsdt()
      2ffbb837
    • Sam Ravnborg's avatar
      x86: simplify "make ARCH=x86" and fix kconfig all.config · 6840999b
      Sam Ravnborg authored
      Simplify "make ARCH=x86" and fix kconfig so we again can set 64BIT in
      all.config.
      
      For a fix the diffstat is nice:
       6 files changed, 3 insertions(+), 36 deletions(-)
      
      The patch reverts these commits:
       - 0f855aa6 ("kconfig: add helper to set
         config symbol from environment variable")
       - 2a113281 ("kconfig: use $K64BIT to
         set 64BIT with all*config targets")
      
      Roman Zippel pointed out that kconfig supported string compares so
      the additional complexity introduced by the above two patches were
      not needed.
      
      With this patch we have following behaviour:
      
        # make {allno,allyes,allmod,rand}config [ARCH=...]
        option \ host arch      | 32bit         | 64bit
        =====================================================
        ./.                     | 32bit         | 64bit
        ARCH=x86                | 32bit         | 32bit
        ARCH=i386               | 32bit         | 32bit
        ARCH=x86_64             | 64bit         | 64bit
      
      The general rule are that ARCH= and native architecture takes
      precedence over the configuration.
      
      So make ARCH=i386 [whatever] will always build a 32-bit kernel
      no matter what the configuration says.  The configuration will
      be updated to 32-bit if it was configured to 64-bit and the
      other way around.
      
      This behaviour is consistent with previous behaviour so no
      suprises here.
      
      make ARCH=x86 will per default result in a 32-bit kernel but as
      the only ARCH= value x86 allow the user to select between 32-bit
      and 64-bit using menuconfig.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Cc: Andreas Herrmann <aherrman@arcor.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6840999b
    • Sam Ravnborg's avatar
      x86: simplify "make ARCH=x86" and fix kconfig all.config · 80ef88d6
      Sam Ravnborg authored
      Simplify "make ARCH=x86" and fix kconfig so we again
      can set 64BIT in all.config.
      
      For a fix the diffstat is nice:
       6 files changed, 3 insertions(+), 36 deletions(-)
      
      The patch reverts these commits:
      0f855aa6
      -> kconfig: add helper to set config symbol from environment variable
      
      2a113281
      -> kconfig: use $K64BIT to set 64BIT with all*config targets
      
      Roman Zippel pointed out that kconfig supported string
      compares so the additional complexity introduced by the
      above two patches were not needed.
      
      With this patch we have following behaviour:
      
      # make {allno,allyes,allmod,rand}config [ARCH=...]
      option \ host arch      | 32bit         | 64bit
      =====================================================
      ./.                     | 32bit         | 64bit
      ARCH=x86                | 32bit         | 32bit
      ARCH=i386               | 32bit         | 32bit
      ARCH=x86_64             | 64bit         | 64bit
      
      The general rule are that ARCH= and native architecture
      takes precedence over the configuration.
      So make ARCH=i386 [whatever] will always build a 32-bit
      kernel no matter what the configuration says.
      The configuration will be updated to 32-bit if it was
      configured to 64-bit and the other way around.
      
      This behaviour is consistent with previous behaviour so
      no suprises here.
      
      make ARCH=x86 will per default result in a 32-bit kernel
      but as the only ARCH= value x86 allow the user to select
      between 32-bit and 64-bit using menuconfig. 
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Roman Zippel <zippel@linux-m68k.org>
      Cc: Andreas Herrmann <aherrman@arcor.de>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      80ef88d6
    • Denys's avatar
      x86: reboot fixup for wrap2c board · 6d1b30e3
      Denys authored
      Needed to make the wireless board, WRAP2C reboot.
      
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      6d1b30e3
    • Yinghai Lu's avatar
      x86: check boundary in count setup resource · 3d9befd2
      Yinghai Lu authored
      need to check info->res_num less than PCI_BUS_NUM_RESOURCES, so
      info->bus->resource[info->res_num] = res will not beyond of bus resource
      array when acpi returns too many resource entries.
      Signed-off-by: default avatarYinghai Lu <yinghai.lu@sun.com>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Cc: Gary Hade <gary.hade@us.ibm.com>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      3d9befd2
    • Truxton Fulton's avatar
      x86: fix reboot with no keyboard attached · 05dfa35e
      Truxton Fulton authored
      Attempt to fix http://bugzilla.kernel.org/show_bug.cgi?id=8378
      
      Hiroto Shibuya wrote to tell me that he has a VIA EPIA-EK10000 which
      suffers from the reboot problem when no keyboard is attached.  My first
      patch works for him:
      
        http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=59f4e7d572980a521b7bdba74ab71b21f5995538
      
      But the latest patch does not work for him :
      
        http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8b93789808756bcc1e5c90c99f1b1ef52f839a51
      
      We found that it was necessary to also set the "disable keyboard" flag in
      the command byte, as the first patch was doing.  The second patch tries to
      minimally modify the command byte, but it is not enough.
      
      Please consider this simple one-line patch to help people with low end VIA
      motherboards reboot when no keyboard is attached.  Hiroto Shibuya has
      verified that this works for him (as I no longer have an afflicted
      machine).
      
      
      Additional discussion:
      
      Note that original patch from Truxton DOES
      disable keyboard and this has been in main tree since 2.6.14, thus it must have
      quite a bit of air time already.
      
      http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.14.y.git;a=commit;h=59f4e7d572980a521b7bdba74ab71b21f5995538
      
      Note that he only mention "System flag" in the description and comment, but
      in the code, "disable keyboard" flag is set.
      
        outb(0x14, 0x60);       /* set "System flag" */
      
      In 2.6.23, he made a change to read the current byte and then mask the flags,
      but along this change,  he only set the "System flag" and dropped the setting
      of "disable keyboard" flag.
      
      http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.23.y.git;a=commit;h=8b93789808756bcc1e5c90c99f1b1ef52f839a51
      
         outb(cmd | 0x04, 0x60); /* set "System flag" */
      
      So my request is to restore the setting of disable keyboard flag which has been
      there since 2.6.14 but disappeared in 2.6.23.
      
      Cc: Lee Garrett <lee-in-berlin@web.de>
      Cc: "Hiroto Shibuya" <hiroto.shibuya@gmail.com>
      Cc: Natalie Protasevich <protasnb@gmail.com>
      Cc: Dmitry Torokhov <dtor@mail.ru>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Aristeu Rozanski <aris@ruivo.org>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      05dfa35e
    • Thomas Gleixner's avatar
      x86: add hpet sanity checks · f4df73c2
      Thomas Gleixner authored
      Some BIOSes advertise HPET at 0x0. We really do no want to 
      allocate a resource there. Check for it and leave early.
      
      Other BIOSes tell us the HPET is at 0xfed0000000000000 
      instead of 0xfed00000. Add a check and fix it up with a warning
      on user request.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      f4df73c2
    • David P. Reed's avatar
      x86: on x86_64, correct reading of PC RTC when update in progress in time_64.c · bbbd9995
      David P. Reed authored
      Correct potentially unstable PC RTC time register reading in time_64.c
      
      Stop the use of an incorrect technique for reading the standard PC RTC
      timer, which is documented to "disconnect" time registers from the bus
      while updates are in progress.  The use of UIP flag while interrupts
      are disabled to protect a 244 microsecond window is one of the
      Motorola spec sheet's documented ways to read the RTC time registers
      reliably.
      
      tglx: removed locking changes from original patch, as they gain nothing
      (read_persistent_clock is only called during boot, suspend, resume - so
      no hot path affected) and conflict with the paravirt locking scheme
      (see 32bit code), which we do not want to complicate for no benefit.
      Signed-off-by: default avatarDavid P. Reed <dpreed@reed.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      bbbd9995
    • David P. Reed's avatar
      x86: fix freeze in x86_64 RTC update code in time_64.c · c399da0d
      David P. Reed authored
      Fix hard freeze on x86_64 when the ntpd service calls 
      update_persistent_clock()
      
      A repeatable but randomly timed freeze has been happening in Fedora 6
      and 7 for the last year, whenever I run the ntpd service on my AMD64x2
      HP Pavilion dv9000z laptop.  This freeze is due to the use of
      spin_lock(&rtc_lock) under the assumption (per a bad comment) that
      set_rtc_mmss is called only with interrupts disabled.  The call from
      ntp.c to update_persistent_clock is made with interrupts enabled.
      Signed-off-by: default avatarDavid P. Reed <dpreed@reed.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      c399da0d
    • David P. Reed's avatar
      ntp: fix typo that makes sync_cmos_clock erratic · fa6a1a55
      David P. Reed authored
      Fix a typo in ntp.c that has caused updating of the persistent (RTC)
      clock when synced to NTP to behave erratically.
      
      When debugging a freeze that arises on my AMD64 machines when I
      run the ntpd service, I added a number of printk's to monitor the
      sync_cmos_clock procedure.  I discovered that it was not syncing to
      cmos RTC every 11 minutes as documented, but instead would keep trying
      every second for hours at a time.  The reason turned out to be a typo
      in sync_cmos_clock, where it attempts to ensure that
      update_persistent_clock is called very close to 500 msec. after a 1
      second boundary (required by the PC RTC's spec). That typo referred to
      "xtime" in one spot, rather than "now", which is derived from "xtime"
      but not equal to it.  This makes the test erratic, creating a
      "coin-flip" that decides when update_persistent_clock is called - when
      it is called, which is rarely, it may be at any time during the one
      second period, rather than close to 500 msec, so the value written is
      needlessly incorrect, too.
      
      Signed-off-by: David P. Reed
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      fa6a1a55
    • Thomas Gleixner's avatar
      Remove x86 merge artifact from top Makefile · d0974b11
      Thomas Gleixner authored
      The x86 merge modified the tags target to handle the two separate
      source directories. Remove it now that i386/x86_64 are gone completely.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      d0974b11
    • Thomas Gleixner's avatar
      x86: fixup cpu_info array conversion · 699d934d
      Thomas Gleixner authored
      92cb7612 sets cpu_info->cpu_index to zero
      for no reason. Referencing cpu_info->cpu_index now points always to CPU#0,
      which is apparently not what we want.
      
      Remove it.
      Spotted-by: default avatarZou Nan hai <nanhai.zou@intel.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      699d934d
    • Andreas Herrmann's avatar
      x86: show cpuinfo only for online CPUs · c0c52d28
      Andreas Herrmann authored
      Fix regressions introduced with 92cb7612.
      
      It can happen that cpuinfo is displayed for CPUs that are not online or
      even worse for CPUs not present at all. As an example, following was
      shown for a "second" CPU of a single core K8 variant:
      
          processor       : 0
          vendor_id       : unknown
          cpu family      : 0
          model           : 0
          model name      : unknown
          stepping        : 0
          cache size      : 0 KB
          fpu             : yes
          fpu_exception   : yes
          cpuid level     : 0
          wp              : yes
          flags           :
          bogomips        : 0.00
          clflush size    : 0
          cache_alignment : 0
          address sizes   : 0 bits physical, 0 bits virtual
          power management:
      Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      c0c52d28
    • Andreas Herrmann's avatar
      x86: fix cpu-hotplug regression · 90367556
      Andreas Herrmann authored
      Commit d435d862
      ("cpu hotplug: mce: fix cpu hotplug error handling")
      changed the error handling in mce_cpu_callback.
      
      In cases where not all CPUs are brought up during
      boot (e.g. using maxcpus and additional_cpus parameters)
      mce_cpu_callback now returns NOTFIY_BAD because
      for such CPUs cpu_data is not completely filled when
      the notifier is called. Thus mce_create_device fails right
      at its beginning:
      
              if (!mce_available(&cpu_data[cpu]))
                      return -EIO;
      
      As a quick fix I suggest to check boot_cpu_data for MCE.
      
      To reproduce this regression:
      
      (1) boot with maxcpus=2 addtional_cpus=2 on a 4 CPU x86-64 system
      (2) # echo 1 >/sys/devices/system/cpu/cpu2/online
        -bash: echo: write error: Invalid argument
      
      dmesg shows:
      
      _cpu_up: attempt to bring up CPU 2 failed
      Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      90367556
    • Ingo Molnar's avatar
      x86: ignore the sys_getcpu() tcache parameter · 4307d1e5
      Ingo Molnar authored
      dont use the vgetcpu tcache - it's causing problems with tasks
      migrating, they'll see the old cache up to a jiffy after the
      migration, further increasing the costs of the migration.
      
      In the worst case they see a complete bogus information from
      the tcache, when a sys_getcpu() call "invalidated" the cache
      info by incrementing the jiffies _and_ the cpuid info in the
      cache and the following vdso_getcpu() call happens after
      vdso_jiffies have been incremented.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarUlrich Drepper <drepper@redhat.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      4307d1e5
    • Randy Dunlap's avatar
      x86: voyager use correct header file name · 434b3d32
      Randy Dunlap authored
      Fix header file name for Voyager build.
      
      In file included from arch/x86/kernel/setup_32.c:61:
      include/asm-x86/mach-voyager/setup_arch.h:2:26: error: asm/setup_32.h: No such file or directory
      make[1]: *** [arch/x86/kernel/setup_32.o] Error 1
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      434b3d32
    • Randy Dunlap's avatar
      x86: fix smp init sections · 8f818210
      Randy Dunlap authored
      Fix Voyager section mismatch due to using __devinit instead of __cpuinit.
      
      WARNING: vmlinux.o(.text+0xd943): Section mismatch: reference to .init.text:init_gdt (between 'voyager_smp_prepare_boot_cpu' and 'smp_vic_cmn_interrupt')
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      8f818210
    • Randy Dunlap's avatar
      x86: fix voyager_cat_init section · e5ef67ef
      Randy Dunlap authored
      Fix Voyager section mismatches:  voyager_cat_init() should be __init.
      
      WARNING: vmlinux.o(.text+0xee83): Section mismatch: reference to .init.data:eprom_buf (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xeea6): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xeeac): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xeeb2): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xef4c): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xef56): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf10f): Section mismatch: reference to .init.data:eprom_buf (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf13b): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf14b): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf159): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf1b1): Section mismatch: reference to .init.data:eprom_buf (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf1bb): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf1c1): Section mismatch: reference to .init.data:eprom_buf (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf1c7): Section mismatch: reference to .init.data:eprom_buf (between 'voyager_cat_init' and 'aes_enc_blk')
      WARNING: vmlinux.o(.text+0xf1e6): Section mismatch: reference to .init.data: (between 'voyager_cat_init' and 'aes_enc_blk')
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      e5ef67ef
    • Thomas Gleixner's avatar
      x86: fix bogus memcpy in es7000_check_dsdt() · 142d0a67
      Thomas Gleixner authored
      es7000_check_dst() contains a memcpy from 0, which probably should have been
      a memset. Remove it and check the retunr value from acpi_get_table_header.
      
      Noticed by: Joe Perches <joe@perches.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      142d0a67
  3. 16 Nov, 2007 6 commits
  4. 15 Nov, 2007 13 commits
    • Linus Torvalds's avatar
      dirty page balancing: Get rid of broken unmapped_ratio logic · 8c086340
      Linus Torvalds authored
      This code harks back to the days when we didn't count dirty mapped
      pages, which led us to try to balance the number of dirty unmapped pages
      by how much unmapped memory there was in the system.
      
      That makes no sense any more, since now the dirty counts include the
      mapped pages.  Not to mention that the math doesn't work with HIGHMEM
      machines anyway, and causes the unmapped_ratio to potentially turn
      negative (which we do catch thanks to clamping it at a minimum value,
      but I mention that as an indication of how broken the code is).
      
      The code also was written at a time when the default dirty ratio was
      much larger, and the unmapped_ratio logic effectively capped that large
      dirty ratio a bit.  Again, we've since lowered the dirty ratio rather
      aggressively, further lessening the point of that code.
      Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8c086340
    • Linus Torvalds's avatar
      Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 · adea27f4
      Linus Torvalds authored
      * 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
        [NETFILTER]: Fix NULL pointer dereference in nf_nat_move_storage()
        [SUNHME]: VLAN support for sunhme
        [CHELSIO]: Fix skb->dev setting.
        [NETFILTER]: fix compat_nf_sockopt typo
        [INET]: Fix potential kfree on vmalloc-ed area of request_sock_queue
        [VIA_VELOCITY]: Don't oops on MTU change.
        iwl4965: fix not correctly dealing with hotunplug
        rt2x00: Fix chipset revision validation
        iwl3945: place CCK rates in front of OFDM for supported rates
        mac80211: Fix queuing of scan containing a SSID
      adea27f4
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus · 40787d00
      Linus Torvalds authored
      * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
        [MIPS] N32 needs to use the compat version of sys_nfsservctl.
        [MIPS] irq_cpu: use handle_percpu_irq handler to avoid dropping interrupts.
        [MIPS] Sibyte: Fix name of clocksource.
        [MIPS] SNI: s/achknowledge/acknowledge/
        [MIPS] Makefile: Fix canonical system names
        [MIPS] vpe: handle halting TCs in an errata safe way.
        [MIPS] Sibyte: Stop timers before programming next even.
        [MIPS] Sibyte: Increase minimum oneshot timer interval to two ticks.
        [MIPS] Lasat: Fix overlap of interrupt number ranges.
        [MIPS] SNI PCIT CPLUS: workaround for b0rked irq wiring of onboard PCI bus 1
        [MIPS] Fix shadow register support.
        [MIPS] Change get_cycles to always return 0.
        [MIPS] Fix typo in R3000 TRACE_IRQFLAGS code
        [MIPS] Sibyte: Replace use of removed IO_SPACE_BASE with IOADDR.
        [MIPS] iounmap if in vr41xx_pciu_init() pci clock is over 33MHz
        [MIPS] BCM1480: Remove duplicate acknowledge of timer interrupt.
        [MIPS] Sibyte: pin timer interrupt to their cores.
        [MIPS] Qemu: Add early printk, your friend in a cold night.
        [MIPS] Convert reference to mem_map to pfn_to_page().
        [MIPS] Sibyte: resurrect old cache hack.
      40787d00
    • Evgeniy Polyakov's avatar
      [NETFILTER]: Fix NULL pointer dereference in nf_nat_move_storage() · 77996525
      Evgeniy Polyakov authored
      Reported by Chuck Ebbert as:
      
      	https://bugzilla.redhat.com/show_bug.cgi?id=259501#c14
      
      This routine is called each time hash should be replaced, nf_conn has
      extension list which contains pointers to connection tracking users
      (like nat, which is right now the only such user), so when replace takes
      place it should copy own extensions. Loop above checks for own
      extension, but tries to move higer-layer one, which can lead to above
      oops.
      Signed-off-by: default avatarEvgeniy Polyakov <johnpol@2ka.mipt.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      77996525
    • Chris Poon's avatar
      [SUNHME]: VLAN support for sunhme · a5a97263
      Chris Poon authored
      This patch enables VLAN support on sunhme by increasing BMAC_TXMAX/BMAC_RXMAX
      and allocating extra space via skb_put for the VLAN header.
      Signed-off-by: default avatarChris Poon <dev-null@telus.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a5a97263
    • Ralf Baechle's avatar
    • Ralf Baechle's avatar
      [MIPS] irq_cpu: use handle_percpu_irq handler to avoid dropping interrupts. · 30e748a5
      Ralf Baechle authored
      This matters to any sort of device that is wired to one of the CPU
      interrupt pins on an SMP system.  Typically the scenario is most easily
      triggered with the count/compare timer interrupt where the same interrupt
      number and thus irq_desc is used on each processor.
      
         CPU A			CPU B
      
         do_IRQ()
         generic_handle_irq()
         handle_level_irq()
         spin_lock(desc_lock)
         set IRQ_INPROGRESS
         spin_unlock(desc_lock)
      				do_IRQ()
      				generic_handle_irq()
      				handle_level_irq()
      				spin_lock(desc_lock)
      				IRQ_INPROGRESS set => bail out
         spin_lock(desc_lock)
         clear IRQ_INPROGRESS
         spin_unlock(desc_lock)
      
      In case of the cp0 compare interrupt this means the interrupt will be
      acked and not handled or re-armed on CPU b, so there won't be any timer
      interrupt until the count register wraps around.
      
      With kernels 2.6.20 ... 2.6.23 we usually were lucky that things were just
      working right on VSMP because the count registers are synchronized on
      bootup so it takes something that disables interrupts for a long time on
      one processor to trigger this one.
      
      For scenarios where an interrupt is multicasted or broadcasted over several
      CPUs the existing code was safe and the fix will break it.  There is no
      way to know in the interrupt controller code because it is abstracted from
      the platform code.  I think we do not have such a setup currently, so this
      should be ok.
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      30e748a5
    • Ralf Baechle's avatar
      [MIPS] Sibyte: Fix name of clocksource. · f99f2cc9
      Ralf Baechle authored
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      f99f2cc9
    • Maciej W. Rozycki's avatar
      eae5fdc3
    • Maciej W. Rozycki's avatar
      [MIPS] Makefile: Fix canonical system names · 3247989e
      Maciej W. Rozycki authored
      The GNU `config.guess' uses "linux-gnu" as the canonical system name.
      Fix the list of compiler prefixes checked to spell it correctly.
      Signed-off-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      3247989e
    • Nigel Stephens's avatar
      [MIPS] vpe: handle halting TCs in an errata safe way. · 7c3a622d
      Nigel Stephens authored
      Adds a JR.HB after halting a TC, to ensure that the TC has really halted.
      only modifies the TCSTATUS register when the TC is safely halted.
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      7c3a622d
    • Ralf Baechle's avatar
      [MIPS] Sibyte: Stop timers before programming next even. · 8dfa741f
      Ralf Baechle authored
      We have no guarantee by the generic time code that the timer is stopped
      when the ->next_event method is called.  Modifying the Timer Initial Count
      register while the timer is enabled has UNPREDICTABLE effect according to
      the BCM1250/BCM1125/BCM1125H User Manual.  So stop the timer before
      reprogramming.
      
      This is a paranoia fix; no ill effects have been observed previously.
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      8dfa741f
    • Ralf Baechle's avatar
      [MIPS] Sibyte: Increase minimum oneshot timer interval to two ticks. · 62247753
      Ralf Baechle authored
      For the old minimum of a single tick a value of zero would be programmed
      into the init value register which in the BCM1250/BCM1125/BCM1125H User
      Manual in the Timer Special Cases section is documented to have
      UNPREDICTABLE effect.
      
      Observable sympthoms of this bug were hangs of several seconds on the
      console during bootup and later if both dyntick and highres timer options
      were activated.
      
      In theory contiguous mode of the timers is also affected but in an act of
      hopeless lack of realism I'll assume nobody will ever configure a KERNEL
      for HZ > 500kHz but if so I leave that to evolution to sort out.
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      62247753