1. 12 3月, 2018 1 次提交
    • P
      perf/core: Remove perf_event::group_entry · 8343aae6
      Peter Zijlstra 提交于
      Now that all the grouping is done with RB trees, we no longer need
      group_entry and can replace the whole thing with sibling_list.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: David Carrillo-Cisneros <davidcc@google.com>
      Cc: Dmitri Prokhorov <Dmitry.Prohorov@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Valery Cherepennikov <valery.cherepennikov@intel.com>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      8343aae6
  2. 20 9月, 2017 1 次提交
    • P
      MIPS: Fix perf event init · fd0b19ed
      Paul Burton 提交于
      Commit c311c797 ("cpumask: make "nr_cpumask_bits" unsigned")
      modified mipspmu_event_init() to cast the struct perf_event cpu field to
      an unsigned integer before it is compared with nr_cpumask_bits (and
      *ahem* did so without copying the linux-mips mailing list or any MIPS
      developers...). This is broken because the cpu field may be -1 for
      events which follow a process rather than being affine to a particular
      CPU. When this is the case the cast to an unsigned int results in a
      value equal to ULONG_MAX, which is always greater than nr_cpumask_bits
      so we always fail mipspmu_event_init() and return -ENODEV.
      
      The check against nr_cpumask_bits seems nonsensical anyway, so this
      patch simply removes it. The cpu field is going to either be -1 or a
      valid CPU number. Comparing it with nr_cpumask_bits is effectively
      checking that it's a valid cpu number, but it seems safe to rely on the
      core perf events code to ensure that's the case.
      
      The end result is that this fixes use of perf on MIPS when not
      constraining events to a particular CPU, and fixes the "perf list hw"
      command which fails to list any events without this.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Fixes: c311c797 ("cpumask: make "nr_cpumask_bits" unsigned")
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: linux-mips@linux-mips.org
      Cc: stable <stable@vger.kernel.org> # v4.12+
      Patchwork: https://patchwork.linux-mips.org/patch/17323/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      fd0b19ed
  3. 28 6月, 2017 1 次提交
  4. 08 6月, 2017 1 次提交
  5. 09 5月, 2017 1 次提交
    • A
      cpumask: make "nr_cpumask_bits" unsigned · c311c797
      Alexey Dobriyan 提交于
      Bit searching functions accept "unsigned long" indices but
      "nr_cpumask_bits" is "int" which is signed, so inevitable sign
      extensions occur on x86_64.  Those MOVSX are #1 MOVSX bloat by number of
      uses across whole kernel.
      
      Change "nr_cpumask_bits" to unsigned, this number can't be negative
      after all.  It allows to do implicit zero-extension on x86_64 without
      MOVSX.
      
      Change signed comparisons into unsigned comparisons where necessary.
      
      Other uses looks fine because it is either argument passed to a function
      or comparison is already unsigned.
      
      Net win on allyesconfig type of kernel: ~2.8 KB (!)
      
      	add/remove: 0/0 grow/shrink: 8/725 up/down: 93/-2926 (-2833)
      	function                                     old     new   delta
      	xen_exit_mmap                                691     735     +44
      	qstat_read                                   426     440     +14
      	__cpufreq_cooling_register                  1678    1687      +9
      	trace_rb_cpu_prepare                         447     455      +8
      	vermagic                                      54      60      +6
      	nfp_driver_version                            54      60      +6
      	rcu_torture_stats_print                     1147    1151      +4
      	find_next_push_cpu                           267     269      +2
      	xen_irq_resume                               961     960      -1
      				...
      	init_vp_index                                946     906     -40
      	od_set_powersave_bias                        328     281     -47
      	power_cpu_exit                               193     139     -54
      	arch_show_interrupts                        3538    3484     -54
      	select_idle_sibling                         1558    1471     -87
      	Total: Before=158358910, After=158356077, chg -0.00%
      
      Same arguments apply to "nr_cpu_ids" but I haven't yet found enough
      courage to delve into this issue (and proper fix may require new type
      "cpu_t" which is whole separate story).
      
      Link: http://lkml.kernel.org/r/20170309205322.GA1728@avx2Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c311c797
  6. 10 4月, 2017 1 次提交
    • R
      MIPS: perf: fix deadlock · f2b42866
      Rabin Vincent 提交于
      mipsxx_pmu_handle_shared_irq() calls irq_work_run() while holding the
      pmuint_rwlock for read.  irq_work_run() can, via perf_pending_event(),
      call try_to_wake_up() which can try to take rq->lock.
      
      However, perf can also call perf_pmu_enable() (and thus take the
      pmuint_rwlock for write) while holding the rq->lock, from
      finish_task_switch() via perf_event_context_sched_in().
      
      This leads to an ABBA deadlock:
      
       PID: 3855   TASK: 8f7ce288  CPU: 2   COMMAND: "process"
        #0 [89c39ac8] __delay at 803b5be4
        #1 [89c39ac8] do_raw_spin_lock at 8008fdcc
        #2 [89c39af8] try_to_wake_up at 8006e47c
        #3 [89c39b38] pollwake at 8018eab0
        #4 [89c39b68] __wake_up_common at 800879f4
        #5 [89c39b98] __wake_up at 800880e4
        #6 [89c39bc8] perf_event_wakeup at 8012109c
        #7 [89c39be8] perf_pending_event at 80121184
        #8 [89c39c08] irq_work_run_list at 801151f0
        #9 [89c39c38] irq_work_run at 80115274
       #10 [89c39c50] mipsxx_pmu_handle_shared_irq at 8002cc7c
      
       PID: 1481   TASK: 8eaac6a8  CPU: 3   COMMAND: "process"
        #0 [8de7f900] do_raw_write_lock at 800900e0
        #1 [8de7f918] perf_event_context_sched_in at 80122310
        #2 [8de7f938] __perf_event_task_sched_in at 80122608
        #3 [8de7f958] finish_task_switch at 8006b8a4
        #4 [8de7f998] __schedule at 805e4dc4
        #5 [8de7f9f8] schedule at 805e5558
        #6 [8de7fa10] schedule_hrtimeout_range_clock at 805e9984
        #7 [8de7fa70] poll_schedule_timeout at 8018e8f8
        #8 [8de7fa88] do_select at 8018f338
        #9 [8de7fd88] core_sys_select at 8018f5cc
       #10 [8de7fee0] sys_select at 8018f854
       #11 [8de7ff28] syscall_common at 80028fc8
      
      The lock seems to be there to protect the hardware counters so there is
      no need to hold it across irq_work_run().
      Signed-off-by: NRabin Vincent <rabinv@axis.com>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      f2b42866
  7. 14 2月, 2017 1 次提交
    • J
      MIPS: Unify perf counter register definitions · 2654294b
      James Hogan 提交于
      Unify definitions for MIPS performance counter register fields in
      mipsregs.h rather than duplicating them in perf_events and oprofile.
      This will allow future patches to use them to expose performance
      counters to KVM guests.
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Robert Richter <rric@kernel.org>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Cc: oprofile-list@lists.sf.net
      Patchwork: https://patchwork.linux-mips.org/patch/15212/Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      2654294b
  8. 17 5月, 2016 1 次提交
  9. 13 5月, 2016 2 次提交
    • J
      MIPS: Add perf counter feature · 30228c40
      James Hogan 提交于
      Add CPU feature for standard MIPS r2 performance counters, as determined
      by the Config1.PC bit. Both perf_events and oprofile probe this bit, so
      lets combine the probing and change both to use cpu_has_perf.
      
      This will also be used for VZ support in KVM to know whether performance
      counters exist which can be exposed to guests.
      
      [ralf@linux-mips.org: resolve conflict.]
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Robert Richter <rric@kernel.org>
      Cc: linux-mips@linux-mips.org
      Cc: oprofile-list@lists.sf.net
      Patchwork: https://patchwork.linux-mips.org/patch/13226/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      30228c40
    • P
      MIPS: Add P6600 cases to CPU switch statements · 1091bfa2
      Paul Burton 提交于
      Add cases supporting the P6600 CPU to various switch statements in
      core MIPS kernel code that define behaviour dependent upon the CPU.
      Signed-off-by: NPaul Burton <paul.burton@imgtec.com>
      Cc: Maciej W. Rozycki <macro@imgtec.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Joshua Kinard <kumba@gentoo.org>
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Petri Gynther <pgynther@google.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/12343/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      1091bfa2
  10. 03 4月, 2016 1 次提交
  11. 26 8月, 2015 1 次提交
  12. 01 4月, 2015 2 次提交
  13. 31 3月, 2015 2 次提交
    • J
      MIPS: perf: Allow sharing IRQ with timer · a1ec0e18
      James Hogan 提交于
      When requesting the performance counter overflow interrupt, pass flags
      which are compatible with the cevt-r4k driver, in particular
      IRQF_SHARED so that the two handlers can share the same IRQ. This is
      possible since release 2 of the architecture where there are separate
      pending interrupt bits for the timer interrupt and the performance
      counter interrupt.
      
      This will be necessary since the FDC interrupt can also be arbitrarily
      routed to a CPU interrupt, possibly sharing with the timer, the
      performance counters, or both, and it isn't scalable to have all the
      handlers able to call other handlers that may be on the same IRQ line.
      
      Shared handlers must also have a unique device pointer so they can be
      individually removed, so &mipspmu is now passed in for that instead of
      NULL.
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/9129/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      a1ec0e18
    • J
      MIPS: Remove redundant IPTI==IPPCI logic · 7eca5b14
      James Hogan 提交于
      The situation where the timer interrupt is on the same line as the
      performance counter interrupt is handled in per_cpu_trap_init() by
      setting cp0_perfcount_irq to -1, so there is no need to duplicate the
      logic conditional upon cp0_perfcount_irq >= 0 in perf
      (init_hw_perf_events()) and oprofile (mipsxx_init()).
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/9125/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      7eca5b14
  14. 24 11月, 2014 2 次提交
    • A
      MIPS: Add hook to get C0 performance counter interrupt · a669efc4
      Andrew Bresticker 提交于
      The hardware perf event driver and oprofile interpret the global
      cp0_perfcount_irq differently: in the hardware perf event driver
      it is an offset from MIPS_CPU_IRQ_BASE and in oprofile it is the
      actual IRQ number.  This still works most of the time since
      MIPS_CPU_IRQ_BASE is usually 0, but is clearly wrong.  Since the
      performance counter interrupt may vary from platform to platform
      like the C0 timer interrupt, add the optional get_c0_perfcount_int
      hook which returns the IRQ number of the performance counter.
      The hook should return < 0 if the performance counter interrupt is
      shared with the timer.  If the hook is not present, the CPU vector
      reported in C0_IntCtl (cp0_perfcount_irq) is used.
      Signed-off-by: NAndrew Bresticker <abrestic@chromium.org>
      Reviewed-by: NQais Yousef <qais.yousef@imgtec.com>
      Tested-by: NQais Yousef <qais.yousef@imgtec.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Andrew Bresticker <abrestic@chromium.org>
      Cc: Jeffrey Deans <jeffrey.deans@imgtec.com>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: Qais Yousef <qais.yousef@imgtec.com>
      Cc: Jonas Gorski <jogo@openwrt.org>
      Cc: John Crispin <blogic@openwrt.org>
      Cc: David Daney <ddaney.cavm@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/7805/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      a669efc4
    • J
      mips: Convert pr_warning to pr_warn · 7178d2cd
      Joe Perches 提交于
      Use the much more common pr_warn instead of pr_warning
      with the goal of removing pr_warning eventually.
      
      Other miscellanea:
      
      o Coalesce formats
      o Realign arguments
      Signed-off-by: NJoe Perches <joe@perches.com>
      Cc: linux-mips <linux-mips@linux-mips.org>
      Cc: LKML <linux-kernel@vger.kernel.org>
      Patchwork: https://patchwork.linux-mips.org/patch/7935/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      7178d2cd
  15. 27 8月, 2014 1 次提交
    • C
      mips: Replace __get_cpu_var uses · 35898716
      Christoph Lameter 提交于
      __get_cpu_var() is used for multiple purposes in the kernel source. One of
      them is address calculation via the form &__get_cpu_var(x).  This calculates
      the address for the instance of the percpu variable of the current processor
      based on an offset.
      
      Other use cases are for storing and retrieving data from the current
      processors percpu area.  __get_cpu_var() can be used as an lvalue when
      writing data or on the right side of an assignment.
      
      __get_cpu_var() is defined as :
      
      #define __get_cpu_var(var) (*this_cpu_ptr(&(var)))
      
      __get_cpu_var() always only does an address determination. However, store
      and retrieve operations could use a segment prefix (or global register on
      other platforms) to avoid the address calculation.
      
      this_cpu_write() and this_cpu_read() can directly take an offset into a
      percpu area and use optimized assembly code to read and write per cpu
      variables.
      
      This patch converts __get_cpu_var into either an explicit address
      calculation using this_cpu_ptr() or into a use of this_cpu operations that
      use the offset.  Thereby address calculations are avoided and less registers
      are used when code is generated.
      
      At the end of the patch set all uses of __get_cpu_var have been removed so
      the macro is removed too.
      
      The patch set includes passes over all arches as well. Once these operations
      are used throughout then specialized macros can be defined in non -x86
      arches as well in order to optimize per cpu access by f.e.  using a global
      register that may be set to the per cpu base.
      
      Transformations done to __get_cpu_var()
      
      1. Determine the address of the percpu instance of the current processor.
      
      	DEFINE_PER_CPU(int, y);
      	int *x = &__get_cpu_var(y);
      
          Converts to
      
      	int *x = this_cpu_ptr(&y);
      
      2. Same as #1 but this time an array structure is involved.
      
      	DEFINE_PER_CPU(int, y[20]);
      	int *x = __get_cpu_var(y);
      
          Converts to
      
      	int *x = this_cpu_ptr(y);
      
      3. Retrieve the content of the current processors instance of a per cpu
      variable.
      
      	DEFINE_PER_CPU(int, y);
      	int x = __get_cpu_var(y)
      
         Converts to
      
      	int x = __this_cpu_read(y);
      
      4. Retrieve the content of a percpu struct
      
      	DEFINE_PER_CPU(struct mystruct, y);
      	struct mystruct x = __get_cpu_var(y);
      
         Converts to
      
      	memcpy(&x, this_cpu_ptr(&y), sizeof(x));
      
      5. Assignment to a per cpu variable
      
      	DEFINE_PER_CPU(int, y)
      	__get_cpu_var(y) = x;
      
         Converts to
      
      	__this_cpu_write(y, x);
      
      6. Increment/Decrement etc of a per cpu variable
      
      	DEFINE_PER_CPU(int, y);
      	__get_cpu_var(y)++
      
         Converts to
      
      	__this_cpu_inc(y)
      
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Signed-off-by: NChristoph Lameter <cl@linux.com>
      Signed-off-by: NTejun Heo <tj@kernel.org>
      35898716
  16. 26 8月, 2014 1 次提交
    • Y
      MIPS: perf: Mark pmu interupt IRQF_NO_THREAD · 014365f5
      Yang Wei 提交于
      In RT kernel, I ran into the following calltrace, so PMU interrupts cannot
      be threaded
      
      in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/0
      INFO: lockdep is turned off.
      Call Trace:
      [<ffffffff8088595c>] dump_stack+0x1c/0x50
      [<ffffffff801a958c>] __might_sleep+0x13c/0x148
      [<ffffffff80891c54>] rt_spin_lock+0x3c/0xb0
      [<ffffffff801ad29c>] __wake_up+0x3c/0x80
      [<ffffffff80243ba4>] perf_event_wakeup+0x8c/0xf8
      [<ffffffff80243c50>] perf_pending_event+0x40/0x78
      [<ffffffff8023d88c>] irq_work_run+0x74/0xc0
      [<ffffffff80152640>] mipsxx_pmu_handle_shared_irq+0x110/0x228
      [<ffffffff8015276c>] mipsxx_pmu_handle_irq+0x14/0x30
      [<ffffffff801ffda4>] handle_irq_event_percpu+0xbc/0x470
      [<ffffffff80204478>] handle_percpu_irq+0x98/0xc8
      [<ffffffff801ff284>] generic_handle_irq+0x4c/0x68
      [<ffffffff8089748c>] do_IRQ+0x2c/0x48
      [<ffffffff80105864>] plat_irq_dispatch+0x64/0xd0
      
      [ralf@linux-mips.org: I don't see why based on this register dump the
      handler should be marked IRQF_NO_THREAD - but the handler is manipulating
      per-CPU resources so we don't want it to be rescheduled to another CPU.]
      Signed-off-by: NYang Wei <Wei.Yang@windriver.com>
      Cc: a.p.zijlstra@chello.nl
      Cc: paulus@samba.org
      Cc: mingo@redhat.com
      Cc: acme@kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/7506/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      014365f5
  17. 19 8月, 2014 1 次提交
    • Y
      MIPS: perf: Mark pmu interupt IRQF_NO_THREAD · ec756d45
      Yang Wei 提交于
      In RT kernel, I ran into the following calltrace, so PMU interrupts cannot
      be threaded
      
      in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/0
      INFO: lockdep is turned off.
      Call Trace:
      [<ffffffff8088595c>] dump_stack+0x1c/0x50
      [<ffffffff801a958c>] __might_sleep+0x13c/0x148
      [<ffffffff80891c54>] rt_spin_lock+0x3c/0xb0
      [<ffffffff801ad29c>] __wake_up+0x3c/0x80
      [<ffffffff80243ba4>] perf_event_wakeup+0x8c/0xf8
      [<ffffffff80243c50>] perf_pending_event+0x40/0x78
      [<ffffffff8023d88c>] irq_work_run+0x74/0xc0
      [<ffffffff80152640>] mipsxx_pmu_handle_shared_irq+0x110/0x228
      [<ffffffff8015276c>] mipsxx_pmu_handle_irq+0x14/0x30
      [<ffffffff801ffda4>] handle_irq_event_percpu+0xbc/0x470
      [<ffffffff80204478>] handle_percpu_irq+0x98/0xc8
      [<ffffffff801ff284>] generic_handle_irq+0x4c/0x68
      [<ffffffff8089748c>] do_IRQ+0x2c/0x48
      [<ffffffff80105864>] plat_irq_dispatch+0x64/0xd0
      
      [ralf@linux-mips.org: I don't see why based on this register dump the
      handler should be marked IRQF_NO_THREAD - but the handler is manipulating
      per-CPU resources so we don't want it to be rescheduled to another CPU.]
      Signed-off-by: NYang Wei <Wei.Yang@windriver.com>
      Cc: a.p.zijlstra@chello.nl
      Cc: paulus@samba.org
      Cc: mingo@redhat.com
      Cc: acme@kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/7506/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      ec756d45
  18. 02 8月, 2014 2 次提交
  19. 01 4月, 2014 3 次提交
  20. 07 3月, 2014 1 次提交
  21. 30 10月, 2013 1 次提交
  22. 01 2月, 2013 1 次提交
  23. 27 12月, 2012 1 次提交
  24. 09 11月, 2012 1 次提交
  25. 11 10月, 2012 5 次提交
  26. 23 7月, 2012 1 次提交
    • K
      MIPS: Add CPU support for Loongson1B · 2fa36399
      Kelvin Cheung 提交于
      Loongson 1B is a 32-bit SoC designed by Institute of Computing Technology
      (ICT) and the Chinese Academy of Sciences (CAS), which implements the
      MIPS32 release 2 instruction set.
      
      [ralf@linux-mips.org: But which is not strictly a MIPS32 compliant device
      which also is why it identifies itself with the Legacy Vendor ID in the
      PrID register.  When applying the patch I shoveled some code around to
      keep things in alphabetical order and avoid forward declarations.]
      Signed-off-by: NKelvin Cheung <keguang.zhang@gmail.com>
      Cc: To: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Cc: wuzhangjin@gmail.com
      Cc: zhzhl555@gmail.com
      Cc: Kelvin Cheung <keguang.zhang@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/3976/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      2fa36399
  27. 19 7月, 2012 1 次提交
  28. 15 5月, 2012 1 次提交
  29. 09 5月, 2012 1 次提交