All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qian Cai <quic_qiancai@quicinc.com>
To: Robin Murphy <robin.murphy@arm.com>
Cc: <will@kernel.org>, <mark.rutland@arm.com>,
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 0/4] perf/arm-cmn: Add CMN-650 and CMN-700
Date: Tue, 10 May 2022 13:15:20 -0400	[thread overview]
Message-ID: <20220510171520.GA215@qian> (raw)
In-Reply-To: <cover.1650320598.git.robin.murphy@arm.com>

On Mon, Apr 18, 2022 at 11:57:37PM +0100, Robin Murphy wrote:
> Hi Will,
> 
> As promised last time, here are the patches adding yet more inscrutable
> support for the other new members of the CMN family. I'm not sure if any
> of the folks who want this are the kind to give upstream feedback, but
> we can always live in hope... A colleague has kindly managed to briefly
> sanity-check the CMN-700 support under RTL emulation, but otherwise I've
> only been able to test the refactorings in terms of not breaking my
> little CMN-600 platform. Still, I'm pretty confident that that's caught
> all the stupids, and the rest is mostly just yet more events, so I
> don't think anything's particularly high-risk here.
> 
> Cheers,
> Robin.
> 
> 
> Robin Murphy (4):
>   dt-bindings: perf: arm-cmn: Add CMN-650 and CMN-700
>   perf/arm-cmn: Add CMN-650 support
>   perf/arm-cmn: Refactor occupancy filter selector
>   perf/arm-cmn: Add CMN-700 support
> 
>  .../devicetree/bindings/perf/arm,cmn.yaml     |   2 +
>  drivers/perf/arm-cmn.c                        | 606 ++++++++++++++----
>  2 files changed, 485 insertions(+), 123 deletions(-)

Reverting this series fixed a null-ptr-deref while running some syscall
fuzzers by an unprivileged user on a Neoverse-N1 server with two CMN-600
(one for each socket).

 KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f]
 Mem abort info:
   ESR = 0x0000000096000004
   EC = 0x25: DABT (current EL), IL = 32 bits
   SET = 0, FnV = 0
   EA = 0, S1PTW = 0
   FSC = 0x04: level 0 translation fault
 Data abort info:
   ISV = 0, ISS = 0x00000004
   CM = 0, WnR = 0
 [dfff800000000007] address between user and kernel address ranges
 Internal error: Oops: 96000004 [#1] PREEMPT SMP
 CPU: 7 PID: 115283 Comm: trinity-c57 Not tainted 5.18.0-rc6-next-20220510-dirty #93
 pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
 pc : arm_cmn_event_init [arm_cmn]
 lr : perf_try_init_event
 sp : ffff800058eb7a00
 x29: ffff800058eb7a10 x28: ffff080232bed880 x27: ffff400ccef2e120
 x26: ffff400ccef2e280 x25: 000000000000001f x24: 0000000000000003
 x23: 0000000000000001 x22: dfff800000000000 x21: 0000000000000219
 x20: ffffb0f539491e88 x19: 0000000000000000 x18: 0000000000000000
 x17: 0000000000000000 x16: 0000000000000000 x15: 0000aaaae0821540
 x14: 0000000000000028 x13: 0000000000000000 x12: ffff70000b1d6f03
 x11: 1ffff0000b1d6f02 x10: ffff70000b1d6f02 x9 : ffffb0f572260468
 x8 : ffff800058eb7817 x7 : ffff400ccef2e200 x6 : 1fffe80199de5c40
 x5 : ffffb0f53948fa00 x4 : 0000000000000000 x3 : ffff080232bed8e0
 x2 : ffffb0f539491efc x1 : 0000000000000007 x0 : 0000000000000038
 Call trace:
  arm_cmn_event_init [arm_cmn]
  perf_try_init_event
  perf_init_event
  perf_event_alloc
  __do_sys_perf_event_open
  __arm64_sys_perf_event_open
  invoke_syscall
  el0_svc_common.constprop.0
  do_el0_svc
  el0_svc
  el0t_64_sync_handler
  el0t_64_sync
 Code: 35002a21 f9400293 9100e260 d343fc01 (38f66821)
 ---[ end trace 0000000000000000 ]---
 Kernel panic - not syncing: Oops: Fatal exception
 SMP: stopping secondary CPUs
 Kernel Offset: 0x30f569c50000 from 0xffff800008000000
 PHYS_OFFSET: 0x80000000
 CPU features: 0x000,0042e015,19801c82
 Memory Limit: none


0x3e6c is in arm_cmn_event_init (drivers/perf/arm-cmn.c:1528).
1523    }
1524
1525
1526    static int arm_cmn_event_init(struct perf_event *event)
1527    {
1528            struct arm_cmn *cmn = to_cmn(event->pmu);
1529            struct arm_cmn_hw_event *hw = to_cmn_hw(event);
1530            struct arm_cmn_node *dn;
1531            enum cmn_node_type type;
1532            bool bynodeid;

# "map_1" has the same content.
$ sudo cat /sys/kernel/debug/arm-cmn/map
     X    0        1        2        3        4        5        6        7
Y P D+--------+--------+--------+--------+--------+--------+--------+--------+
5    | XP #40 | XP #41 | XP #42 | XP #43 | XP #44 | XP #45 | XP #46 | XP #47 |
     | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  |
     |........|........|........|........|........|........|........|........|
  0  |  CXRH  |  HN-I  |  HN-I  |  HN-I  |  HN-D  |  HN-I  |  HN-I  |  CXRH  |
    0|   #2   |   #3   |   #4   |   #5   |   #0   |   #6   |   #7   |   #3   |
    1|        |        |        |        |        |        |        |        |
  1  |  RN-D  |  RN-D  |  RN-D  |  RN-I  |  RN-I  |  RN-D  |  RN-D  |  RN-D  |
    0|   #2   |   #3   |   #4   |   #10  |   #11  |   #5   |   #6   |   #7   |
    1|        |        |        |        |        |        |        |        |
-----+--------+--------+--------+--------+--------+--------+--------+--------+
4    | XP #32 | XP #33 | XP #34 | XP #35 | XP #36 | XP #37 | XP #38 | XP #39 |
     | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  |
     |........|........|........|........|........|........|........|........|
  0  |  SN-F  | RN-F_B |  RN-I  | RN-F_B | RN-F_B |  RN-I  | RN-F_B |  SN-F  |
    0|        |        |   #8   |        |        |   #9   |        |        |
    1|        |        |        |        |        |        |        |        |
  1  |        | RN-F_B |        | RN-F_B | RN-F_B |        | RN-F_B |        |
    0|   #24  |        |   #26  |        |        |   #28  |        |   #30  |
    1|   #25  |        |   #27  |        |        |   #29  |        |   #31  |
-----+--------+--------+--------+--------+--------+--------+--------+--------+
3    | XP #24 | XP #25 | XP #26 | XP #27 | XP #28 | XP #29 | XP #30 | XP #31 |
     | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  |
     |........|........|........|........|........|........|........|........|
  0  |  SN-F  | RN-F_B |  RN-I  | RN-F_B | RN-F_B |  RN-I  | RN-F_B |  SN-F  |
    0|        |        |   #6   |        |        |   #7   |        |        |
    1|        |        |        |        |        |        |        |        |
  1  |        | RN-F_B |        | RN-F_B | RN-F_B |        | RN-F_B |        |
    0|   #16  |        |   #18  |        |        |   #20  |        |   #22  |
    1|   #17  |        |   #19  |        |        |   #21  |        |   #23  |
-----+--------+--------+--------+--------+--------+--------+--------+--------+
2    | XP #16 | XP #17 | XP #18 | XP #19 | XP #20 | XP #21 | XP #22 | XP #23 |
     | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  |
     |........|........|........|........|........|........|........|........|
  0  |  SN-F  | RN-F_B |  RN-I  | RN-F_B | RN-F_B |  RN-I  | RN-F_B |  SN-F  |
    0|        |        |   #4   |        |        |   #5   |        |        |
    1|        |        |        |        |        |        |        |        |
  1  |        | RN-F_B |        | RN-F_B | RN-F_B |        | RN-F_B |        |
    0|   #8   |        |   #10  |        |        |   #12  |        |   #14  |
    1|   #9   |        |   #11  |        |        |   #13  |        |   #15  |
-----+--------+--------+--------+--------+--------+--------+--------+--------+
1    | XP #8  | XP #9  | XP #10 | XP #11 | XP #12 | XP #13 | XP #14 | XP #15 |
     | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  |
     |........|........|........|........|........|........|........|........|
  0  |  SN-F  | RN-F_B |  RN-I  | RN-F_B | RN-F_B |  RN-I  | RN-F_B |  SN-F  |
    0|        |        |   #2   |        |        |   #3   |        |        |
    1|        |        |        |        |        |        |        |        |
  1  |        | RN-F_B |        | RN-F_B | RN-F_B |        | RN-F_B |        |
    0|   #0   |        |   #2   |        |        |   #4   |        |   #6   |
    1|   #1   |        |   #3   |        |        |   #5   |        |   #7   |
-----+--------+--------+--------+--------+--------+--------+--------+--------+
0    | XP #0  | XP #1  | XP #2  | XP #3  | XP #4  | XP #5  | XP #6  | XP #7  |
     | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  | DTC 0  |
     |........|........|........|........|........|........|........|........|
  0  |  CXRH  | RN-F_B |  RN-I  | RN-F_B | RN-F_B |  RN-I  | RN-F_B |  CXRH  |
    0|   #0   |        |   #0   |        |        |   #1   |        |   #1   |
    1|        |        |        |        |        |        |        |        |
  1  |  RN-D  | RN-F_B |  HN-I  | RN-F_B | RN-F_B |  HN-I  | RN-F_B |  RN-D  |
    0|   #0   |        |   #1   |        |        |   #2   |        |   #1   |
    1|        |        |        |        |        |        |        |        |
-----+--------+--------+--------+--------+--------+--------+--------+--------+

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-05-10 17:16 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-18 22:57 [PATCH 0/4] perf/arm-cmn: Add CMN-650 and CMN-700 Robin Murphy
2022-04-18 22:57 ` [PATCH 1/4] dt-bindings: perf: arm-cmn: " Robin Murphy
2022-04-18 22:57   ` Robin Murphy
2022-04-26 20:12   ` Rob Herring
2022-04-26 20:12     ` Rob Herring
2022-04-18 22:57 ` [PATCH 2/4] perf/arm-cmn: Add CMN-650 support Robin Murphy
2022-04-19 23:05   ` Ilkka Koskinen
2022-04-19 23:47     ` Ilkka Koskinen
2022-04-20  9:26       ` Will Deacon
2022-04-20 10:12     ` Robin Murphy
2022-04-21  7:09       ` Ilkka Koskinen
2022-04-21  7:25   ` Ilkka Koskinen
2022-04-21  9:46     ` Robin Murphy
2022-04-21 21:26       ` Ilkka Koskinen
2022-04-18 22:57 ` [PATCH 3/4] perf/arm-cmn: Refactor occupancy filter selector Robin Murphy
2022-04-18 22:57 ` [PATCH 4/4] perf/arm-cmn: Add CMN-700 support Robin Murphy
2022-04-21  7:54 ` [PATCH 0/4] perf/arm-cmn: Add CMN-650 and CMN-700 Ilkka Koskinen
2022-05-06 14:43 ` Will Deacon
2022-05-10 17:15 ` Qian Cai [this message]
2022-05-10 17:50   ` Robin Murphy
2022-05-10 19:38     ` Qian Cai
2022-05-10 21:05       ` Robin Murphy
2022-05-10 20:09     ` Qian Cai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220510171520.GA215@qian \
    --to=quic_qiancai@quicinc.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=robin.murphy@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.