1. 22 3月, 2006 11 次提交
  2. 17 3月, 2006 2 次提交
  3. 16 3月, 2006 9 次提交
  4. 14 3月, 2006 1 次提交
    • P
      powerpc: Disallow lparcfg being a module · 82dfdcae
      Paul Mackerras 提交于
      The lparcfg code needs several things which are pretty arcane internal
      details and which we don't want to export, which means that lparcfg
      doesn't work when built as a module.  This makes it a bool instead of
      a tristate in the Kconfig so that users can't try to build it as a
      module.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      82dfdcae
  5. 08 3月, 2006 1 次提交
    • P
      powerpc: Fix various syscall/signal/swapcontext bugs · 1bd79336
      Paul Mackerras 提交于
      A careful reading of the recent changes to the system call entry/exit
      paths revealed several problems, plus some things that could be
      simplified and improved:
      
      * 32-bit wasn't testing the _TIF_NOERROR bit in the syscall fast exit
        path, so it was only doing anything with it once it saw some other
        bit being set.  In other words, the noerror behaviour would apply to
        the next system call where we had to reschedule or deliver a signal,
        which is not necessarily the current system call.
      
      * 32-bit wasn't doing the call to ptrace_notify in the syscall exit
        path when the _TIF_SINGLESTEP bit was set.
      
      * _TIF_RESTOREALL was in both _TIF_USER_WORK_MASK and
        _TIF_PERSYSCALL_MASK, which is odd since _TIF_RESTOREALL is only set
        by system calls.  I took it out of _TIF_USER_WORK_MASK.
      
      * On 64-bit, _TIF_RESTOREALL wasn't causing the non-volatile registers
        to be restored (unless perhaps a signal was delivered or the syscall
        was traced or single-stepped).  Thus the non-volatile registers
        weren't restored on exit from a signal handler.  We probably got
        away with it mostly because signal handlers written in C wouldn't
        alter the non-volatile registers.
      
      * On 32-bit I simplified the code and made it more like 64-bit by
        making the syscall exit path jump to ret_from_except to handle
        preemption and signal delivery.
      
      * 32-bit was calling do_signal unnecessarily when _TIF_RESTOREALL was
        set - but I think because of that 32-bit was actually restoring the
        non-volatile registers on exit from a signal handler.
      
      * I changed the order of enabling interrupts and saving the
        non-volatile registers before calling do_syscall_trace_leave; now we
        enable interrupts first.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      1bd79336
  6. 05 3月, 2006 1 次提交
  7. 03 3月, 2006 5 次提交
  8. 01 3月, 2006 1 次提交
  9. 28 2月, 2006 4 次提交
    • M
      [PATCH] powerpc/iseries: Fix double phys_to_abs bug in htab_bolt_mapping · 56ec6462
      Michael Ellerman 提交于
      Before the merge I updated create_pte_mapping() to work for iSeries, by
      calling iSeries_hpte_bolt_or_insert. (4c55130b)
      
      Later we changed iSeries_hpte_insert to cope with the bolting case, and called
      that instead from create_pte_mapping() (which was renamed to htab_bolt_mapping)
      (3c726f8d).
      
      Unfortunately that change introduced a subtle bug, where we pass an absolute
      address to iSeries_hpte_insert() where it expects a physical address. This
      leads to us calling phys_to_abs() twice on the physical address, which is
      seriously bogus.
      
      This only causes a problem if the absolute address from the first translation
      can be looked up again in the chunk_map, which depends on the size and layout
      of memory. I've seen it fail on one box, but not others.
      
      The minimal fix is to pass the physical address to iSeries_hpte_insert(). For
      2.6.17 we should make phys_to_abs() BUG if we try to double-translate an
      address.
      Signed-off-by: NMichael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      56ec6462
    • O
      [PATCH] powerpc: fix NULL pointer in handle_eeh_events · 273d2803
      Olaf Hering 提交于
      This patch fixes a crash in handle_eeh_events,
      but ethtool -t still doesnt work right.
      
      ...
      pepino:~ # cpu 0x3: Vector: 300 (Data Access) at [c00000005192bbe0]
          pc: c00000000004a380: .handle_eeh_events+0xe0/0x23c
          lr: c00000000004a374: .handle_eeh_events+0xd4/0x23c
          sp: c00000005192be60
         msr: 9000000000009032
         dar: 268
       dsisr: 40000000
        current = 0xc0000001fe7bf1a0
        paca    = 0xc00000000048b280
          pid   = 16322, comm = eehd
      enter ? for help
      [c00000005192bf00] c00000000004a808 .eeh_event_handler+0xcc/0x130
      [c00000005192bf90] c000000000025e00 .kernel_thread+0x4c/0x68
      
      ...
      
      (none):/# /usr/sbin/ethtool -i eth0
      driver: e100
      version: 3.5.10-k2-NAPI
      firmware-version: N/A
      bus-info: 0000:21:01.0
      (none):/# /usr/sbin/ethtool -t eth0
      Call Trace:
      [C00000000F8DEFF0] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable)
      [C00000000F8DF0A0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8
      [C00000000F8DF150] [C000000000049E58] .eeh_check_failure+0x10c/0x138
      [C00000000F8DF1E0] [C0000000002DFDB0] .e100_hw_reset+0x70/0xf4
      [C00000000F8DF270] [C0000000002E1BBC] .e100_hw_init+0x2c/0x260
      [C00000000F8DF310] [C0000000002E2464] .e100_loopback_test+0x8c/0x220
      [C00000000F8DF3C0] [C0000000002E28DC] .e100_diag_test+0xdc/0x16c
      [C00000000F8DF490] [C000000000420BE0] .dev_ethtool+0xf24/0x14f8
      [C00000000F8DF8F0] [C00000000041F4A8] .dev_ioctl+0x5cc/0x740
      [C00000000F8DFA20] [C00000000040FEFC] .sock_ioctl+0x3d0/0x404
      [C00000000F8DFAC0] [C0000000000D513C] .do_ioctl+0x68/0x108
      [C00000000F8DFB50] [C0000000000D56B0] .vfs_ioctl+0x4d4/0x510
      [C00000000F8DFC10] [C0000000000D5740] .sys_ioctl+0x54/0x94
      [C00000000F8DFCC0] [C0000000000FB6EC] .ethtool_ioctl+0x11c/0x150
      [C00000000F8DFD60] [C0000000000F7E40] .compat_sys_ioctl+0x338/0x3bc
      [C00000000F8DFE30] [C00000000000871C] syscall_exit+0x0/0x40
      EEH: Detected PCI bus error on device 0000:21:01.0
      EEH: This PCI device has failed 1 times since last reboot: <NULL> -
      
      modprobe: FATAL: Could not load /lib/modules/2.6.16-rc4-git7/modules.dep: No such file or directory
      
      Cannot get strings: No such device
      (none):/#
      (none):/# EEH: Unable to configure device bridge (-3) for /pci@400000000110/pci@2,2
      
      (none):/# Call Trace:
      [C00000000FA17940] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable)
      [C00000000FA179F0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8
      [C00000000FA17AA0] [C00000000001E114] .rtas_read_config+0x120/0x154
      [C00000000FA17B40] [C000000000049664] .early_enable_eeh+0x274/0x2bc
      [C00000000FA17C00] [C000000000049708] .eeh_add_device_early+0x5c/0x6c
      [C00000000FA17C90] [C000000000049748] .eeh_add_device_tree_early+0x30/0x5c
      [C00000000FA17D20] [C000000000046568] .pcibios_add_pci_devices+0x8c/0x1f8
      [C00000000FA17DD0] [C00000000004A528] .eeh_reset_device+0xe0/0x110
      [C00000000FA17E60] [C00000000004A698] .handle_eeh_events+0x140/0x250
      [C00000000FA17F00] [C00000000004AC7C] .eeh_event_handler+0xe8/0x140
      [C00000000FA17F90] [C000000000025784] .kernel_thread+0x4c/0x68
      EEH: Detected PCI bus error on device <NULL>
      EEH: This PCI device has failed 1 times since last reboot: <NULL> -
      EEH: Unable to configure device bridge (-3) for /pci@400000000110/pci@2,2
      Call Trace:
      [C00000000FA17940] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable)
      [C00000000FA179F0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8
      [C00000000FA17AA0] [C00000000001E114] .rtas_read_config+0x120/0x154
      [C00000000FA17B40] [C000000000049664] .early_enable_eeh+0x274/0x2bc
      [C00000000FA17C00] [C000000000049708] .eeh_add_device_early+0x5c/0x6c
      [C00000000FA17C90] [C000000000049748] .eeh_add_device_tree_early+0x30/0x5c
      [C00000000FA17D20] [C000000000046568] .pcibios_add_pci_devices+0x8c/0x1f8
      [C00000000FA17DD0] [C00000000004A528] .eeh_reset_device+0xe0/0x110
      [C00000000FA17E60] [C00000000004A698] .handle_eeh_events+0x140/0x250
      [C00000000FA17F00] [C00000000004AC7C] .eeh_event_handler+0xe8/0x140
      [C00000000FA17F90] [C000000000025784] .kernel_thread+0x4c/0x68
      EEH: Detected PCI bus error on device <NULL>
      EEH: This PCI device has failed 1 times since last reboot: <NULL> -
      EEH: Unable to configure device bridge (-3) for /pci@400000000110/pci@2,2
      Call Trace:
      [C00000000FA17940] [C00000000000F270] .show_stack+0x74/0x1b4 (unreliable)
      [C00000000FA179F0] [C000000000049D04] .eeh_dn_check_failure+0x290/0x2d8
      [C00000000FA17AA0] [C00000000001E114] .rtas_read_config+0x120/0x154
      [C00000000FA17B40] [C000000000049664] .early_enable_eeh+0x274/0x2bc
      [C00000000FA17C00] [C000000000049708] .eeh_add_device_early+0x5c/0x6c
      [C00000000FA17C90] [C000000000049748] .eeh_add_device_tree_early+0x30/0x5c
      [C00000000FA17D20] [C000000000046568] .pcibios_add_pci_devices+0x8c/0x1f8
      [C00000000FA17DD0] [C00000000004A528] .eeh_reset_device+0xe0/0x110
      [C00000000FA17E60] [C00000000004A698] .handle_eeh_events+0x140/0x250
      [C00000000FA17F00] [C00000000004AC7C] .eeh_event_handler+0xe8/0x140
      [C00000000FA17F90] [C000000000025784] .kernel_thread+0x4c/0x68
      EEH: Detected PCI bus error on device <NULL>
      and so on
      Signed-off-by: NOlaf Hering <olh@suse.de>
      Acked-by: NLinas Vepstas <linas@austin.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      273d2803
    • B
      [PATCH] powerpc: vdso 64bits gettimeofday bug · 634473db
      Benjamin Herrenschmidt 提交于
      A bug in the assembly code of the vdso can cause gettimeofday() to hang
      or to return incorrect results. The wrong register was used to test for
      pending updates of the calibration variables and to create a dependency
      for subsequent loads. This fixes it.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      634473db
    • J
      [PATCH] powerpc: fix dynamic PCI probe regression · 827c1a6c
      John Rose 提交于
      Some hotplug driver functions were migrated to the kernel for use by EEH
      in commit 2bf6a8fa.
      
      Previously, the PCI Hotplug module had been changed to use the new
      OFDT-based PCI probe when appropriate:
      5fa80fcd
      
      When rpaphp_pci_config_slot() was moved from the rpaphp driver to the
      new kernel function pcibios_add_pci_devices(), the OFDT-based probe
      stuff was dropped.  This patch restores it.
      Signed-off-by: NJohn Rose <johnrose@austin.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      827c1a6c
  10. 27 2月, 2006 2 次提交
  11. 25 2月, 2006 1 次提交
  12. 24 2月, 2006 2 次提交
    • P
      powerpc: Implement accurate task and CPU time accounting · c6622f63
      Paul Mackerras 提交于
      This implements accurate task and cpu time accounting for 64-bit
      powerpc kernels.  Instead of accounting a whole jiffy of time to a
      task on a timer interrupt because that task happened to be running at
      the time, we now account time in units of timebase ticks according to
      the actual time spent by the task in user mode and kernel mode.  We
      also count the time spent processing hardware and software interrupts
      accurately.  This is conditional on CONFIG_VIRT_CPU_ACCOUNTING.  If
      that is not set, we do tick-based approximate accounting as before.
      
      To get this accurate information, we read either the PURR (processor
      utilization of resources register) on POWER5 machines, or the timebase
      on other machines on
      
      * each entry to the kernel from usermode
      * each exit to usermode
      * transitions between process context, hard irq context and soft irq
        context in kernel mode
      * context switches.
      
      On POWER5 systems with shared-processor logical partitioning we also
      read both the PURR and the timebase at each timer interrupt and
      context switch in order to determine how much time has been taken by
      the hypervisor to run other partitions ("steal" time).  Unfortunately,
      since we need values of the PURR on both threads at the same time to
      accurately calculate the steal time, and since we can only calculate
      steal time on a per-core basis, the apportioning of the steal time
      between idle time (time which we ceded to the hypervisor in the idle
      loop) and actual stolen time is somewhat approximate at the moment.
      
      This is all based quite heavily on what s390 does, and it uses the
      generic interfaces that were added by the s390 developers,
      i.e. account_system_time(), account_user_time(), etc.
      
      This patch doesn't add any new interfaces between the kernel and
      userspace, and doesn't change the units in which time is reported to
      userspace by things such as /proc/stat, /proc/<pid>/stat, getrusage(),
      times(), etc.  Internally the various task and cpu times are stored in
      timebase units, but they are converted to USER_HZ units (1/100th of a
      second) when reported to userspace.  Some precision is therefore lost
      but there should not be any accumulating error, since the internal
      accumulation is at full precision.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      c6622f63
    • S
      [PATCH] powerpc: Don't re-assign PCI resources on Maple · 4558f417
      Segher Boessenkool 提交于
      Maple firmware does not need PCI resource allocation, and in fact, it
      can cause problems in some strange cases.
      Signed-off-by: NSegher Boessenkool <segher@kernel.crashing.org>
      Acked-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      4558f417