From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933967AbbENUhc (ORCPT ); Thu, 14 May 2015 16:37:32 -0400 Received: from mail-bn1on0059.outbound.protection.outlook.com ([157.56.110.59]:55936 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933019AbbENUh0 (ORCPT ); Thu, 14 May 2015 16:37:26 -0400 Authentication-Results: spf=fail (sender IP is 66.35.236.236) smtp.mailfrom=opensource.altera.com; gmail.com; dkim=none (message not signed) header.d=none; Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none; Message-ID: <555507E2.2020606@opensource.altera.com> Date: Thu, 14 May 2015 15:38:58 -0500 From: Thor Thayer Reply-To: User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Dinh Nguyen , , , , , , , , , , CC: , , , , , Subject: Re: [PATCH 3/4] edac, altera: Addition of Arria10 EDAC References: <1431553787-27741-1-git-send-email-tthayer@opensource.altera.com> <1431553787-27741-4-git-send-email-tthayer@opensource.altera.com> <555503A4.2070802@opensource.altera.com> In-Reply-To: <555503A4.2070802@opensource.altera.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [64.129.157.38] X-ClientProxiedBy: SN1PR0701CA0019.namprd07.prod.outlook.com (25.162.96.29) To DM2PR03MB432.namprd03.prod.outlook.com (10.141.85.21) X-Microsoft-Exchange-Diagnostics-untrusted: 1;DM2PR03MB432;2:xOTnFt1zdYmNNe9wHiWxZjmKJvUeVYOALFn0Iiaw6s3IDleA378gOYRfGdTjHjS0;2:NA6YiIGwF6ESU4rMJhx+RuM1HPgPVPPDtPvjdNz4qi6+kRWdrMBq+r/4R8u7v595rAU0Rnn64ljO5QDzz5/IZRlIVe4TwEjI7t57y1r0OTZOGxOqb+lUXDZ+h7bs6sWJawBHBvDIDtRFu7YH+XpRjg==;6:feofsELgpPpxZV0e0UI6iVLyF5XiCHyp4SFF/OmZ6+AYhBRbjib8Apr/dqY+YUv93797NR/JI5XCpP5P1F0HcHX+hHFww/skoRJE0THCXtzNQ2+Y6tnUbGA6NtZrfbPw1oNovC5IcbGA89FyDnIn6A==;3:3gi+Iuy8pBGefvSKeOHJhXYD9tsenR3IzToji61gibA1uhFxoYVAl3b1zg6hlCQzUTJ2+JEBF2D/wSWjmUPtnGD4wIWrGUC3gQ4XrhFrkohIXL7qcW0tT8B/ZlOSkS+SbzoezrbNBWKW+tVb2uQrnjZ0rsR2vi4QPLGVbpdzbgTDWQh7K08Gq4XQMdoKViilvPlXDO4/9dLIAADv6Q/mMMaGp6PhhQAgfqOqQ3oF96Qd8EYWuywBcAGmxkR5L69LR49opeAo7lpzTlwIz9y0vqWixOxDXaSpjlOVO74+Kf0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB432;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1499; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:;UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:DM2PR03MB432;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB432;BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BY1PR03MB1499;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1499; X-Forefront-PRVS: 0576145E86 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(24454002)(51704005)(377454003)(479174004)(77096005)(59896002)(83506001)(33656002)(43066003)(5001960100002)(65956001)(2201001)(46102003)(66066001)(65816999)(50986999)(87266999)(53806999)(76176999)(54356999)(42186005)(189998001)(47776003)(5001770100001)(122386002)(4001350100001)(50466002)(62966003)(77156002)(2950100001)(40100003)(19580395003)(23746002)(87976001)(86362001)(19580405001)(80316001)(99136001)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR03MB432;H:[137.57.160.203];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics-untrusted: =?Windows-1252?Q?1;DM2PR03MB432;9:/AVDPBlDk5LUZpIWmCFqlmTgLBxU/X8BhLINjRP?= =?Windows-1252?Q?qncEEmxplJ9vPnYQBvMyuf7ffAJ7pTV6drRjvhzmYRqA1eXj6iNTal85?= =?Windows-1252?Q?LfcwidfgaahFKage6EZ71aFfLMuTHRiAQPxPC30m4RpZufF+n9El678p?= =?Windows-1252?Q?Gsk1bX1DNppndfcDT1PV8FIEy3XFylKZO118zks5ZuvgwqJyxFufgwYS?= =?Windows-1252?Q?CISai3eJs2CRcsxXHnh2qz4EpxBJYa54TCmlXQn4g2os5S4JAMJYEyKk?= =?Windows-1252?Q?KgtuvPWyMRszjbgQQUJrdVhh8C2UucMeVEgcjQhuaw2uSnXEkKkyI77h?= =?Windows-1252?Q?CFf2X/xKaSvK/GQNZqpuBx6bW5pR/gzWUbr53Gqrgp0U9Gt5wB1az45+?= =?Windows-1252?Q?lYJ63CDCyb6U4junssp/wnR8bOSIGqRacSBVc/j7QkTMI9WZJ++xU2Gr?= =?Windows-1252?Q?UksKXLTevWTHW1h2xd227TK4IFKwe625GrTP7J/foIV2gzYqRyZaWVTH?= =?Windows-1252?Q?jEGbjAuKKcuuDcP9nxXnjWNsBMMVfF1TwKKv63wX19JTkHV12Q6asCS1?= =?Windows-1252?Q?bpPN4srzGU1P5G7jbszHCkGyUHA4JwIHR+MOl74nFwX3kkX3HueZO+aN?= =?Windows-1252?Q?PbRLhBRq8LP41J2z6cD21QIQuctec+KSYsD3w//tFZwgxGIytkGDkda5?= =?Windows-1252?Q?VJoW4pidV1Iw7KObGiaB9EAhbnWfCERiM36S2jpnOypA5dhhExlaAQ0P?= =?Windows-1252?Q?AliVwQ7ECvHT9pCrVWTCSJz0+mER0vj15tcijS/VzhZ6rgv6w4pHHInQ?= =?Windows-1252?Q?928M6eSeNkWhDTkIYeZcT6IjPSkROex6nGI2vNksdj7vlguVN8umvnaU?= =?Windows-1252?Q?auk10w9Vwdqet982/QlNNWpAU8aVEHahpw/3ebFTO3yiSjYBxyOeHUFV?= =?Windows-1252?Q?aQyiLW9rqII3o2xmhkFfxNDXYeXCIgiY1tuPX9jfU1kIHoFpq7mBSFqN?= =?Windows-1252?Q?w8X4UoIjxmOwM4F9l5fe7q+q2buvKCJKawR89uZOD3K0IVufBo7w+SKQ?= =?Windows-1252?Q?A0l7vLtC1Yahl/OqksPMwCRf4A9vMUA/jp7L2fY82F3imoW97J5g8RhB?= =?Windows-1252?Q?4oQzm5NTyyhbKyonfo7oLaYtMf427XGsSk9mORg+bGgGDlmtZZ25+sRh?= =?Windows-1252?Q?FrPT0fg=3D=3D?= X-Microsoft-Exchange-Diagnostics-untrusted: 1;DM2PR03MB432;3:25JAf2AzIMfCudSBYq9f7Ks9LwEnp4VURy6+a6UT60bAs1HXy7uASPa4osuP80NGUin4KmfsEDGNDwPLzDGjC8ZY7xwfOj9zNKmxNStXoHmYXeNqx2vCCFcBOQQBQSQm/LbCa6BZAWZSNg1Sg+PUQg==;10:ztfkk94oIEudELbICWT1FJW5l0mqttiPYfdoABV5Up3PYp6lXMYgIPXRGlxYPlQP1Byup0B+KDaZHwyVBQ1TRJAECEfmUandNkQVRwGszCI=;6:7eTvJ47QimgYWuqFjkHrp9j5x/AQnKADONRX3F7THDqZwm/+cZuyVcsvICKByxOrofPh+a9/Mjjnv2ltnlvEJexc4XNlTOZNtqTDdRJWqNqH4gBCVNWCFzB4lVuPT8OrcjChk+Oc5i0DR5hDgvl4ig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR03MB432 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: BN1AFFO11FD053.protection.gbl X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD053;1:8taFAP2q61nxhjLWEUFY0HIc0QS/gIe46hNo983WzV/kyHnykIUcQOwe4oMAQaUBV+GMTvj+JhSIKiO8kLEV+l+eBa/2t32NY45GKKXRobsMs7RLn2OMFODyX0Bdb7FEP0pxbtHeIJkaWDf3R/fNd5hMZkZzqK8P5neugNK8cX+GsVvsas4qNIJVzwIGCT+XzR7kjoPlFdioJz2NmgVd4vu4QvAqId8bxfwLMtrhpJ6uFmjBN69HaFEXRb2nktdma9WKSs4eZZHEk9XFsK7omkyfv2LGoDFmrN37/UGXC7zwTd0wAZSMbDiX9RxQm2U+ X-Forefront-Antispam-Report: CIP:66.35.236.236;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(339900001)(24454002)(199003)(51704005)(377454003)(479174004)(189002)(64126003)(16796002)(77096005)(6806004)(59896002)(90366008)(85426001)(83506001)(33656002)(43066003)(106466001)(5001960100002)(65806001)(65956001)(2201001)(46102003)(66066001)(65816999)(50986999)(87266999)(53806999)(76176999)(54356999)(189998001)(47776003)(5001770100001)(81156007)(122386002)(4001350100001)(50466002)(62966003)(77156002)(2950100001)(40100003)(19580395003)(23746002)(87936001)(86362001)(19580405001)(80316001)(105606002)(99136001)(7099028)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BY1PR03MB1499;H:sj-itexedge04.altera.priv.altera.com;FPR:;SPF:Fail;MLV:ovrnspm;A:0;MX:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1499;2:KyB4UTnnsRDFULl+oiMcT3Hy+DoQuXiC6GuN2LYNp2ba9wMgff9osez+Jm5hXv5U;2:yHcje8XeZ2R4oaaKcDNZNn/z4+lTHBXT/91mRjYcpb3EuEM2W4xjGNkuE5cowlCzuyjKIPf24iPsR+Jb+N6bNaDvQZDJ8qzzh75LRW6G9wI+iqrKEEYhSU24Y4JUJf0LIDB0aJ+WfUraqgNvkL1Vq3Y/fgVpijTIBy5HvjpsAM2icRWIEukC4Y2b2Vim2bahcrxEvA+4gf8m2xkMa8qp/WGQCpXjE3YHgMYZPuV9gho=;6:ABd7BEqIInfEuSKD5HiwSg4xua4VY+6oahkxRyuZycKM7+X31kgWbHwDE1J2YRY9wtF8CiFLI19+hnzcfD6+hOERgzB0KEElJy5GkbBdOdjCCXDAPMyx9Fh7z3CJLdALa+4iNZskohbdwZDSkkHACQ==;3:j0cdqp8qc5zG+bMrzfL1baydj8ILGb47MW4ZDa4AJbaEPr/dzMfH0jwjnr8lIuh4Ky+B2qPFNq2xwg8HnlzhQrApMbLRali4aC9H8cnnzUygDkkJyNejK6HaV9SSagz1OBXt6+zz/xqDvpq6HsKfM/F1A8Et7gsmOqFBg/MAq2Z5ouRHbE/zRiAac+xxzAygIWUYnwHWdjSFnsohh80UyNym/0eKnibXvSArPP7b/RU4PMdnJ0pjgSJfttPc+oFMMvaztbdXppTT8OIBZTAcMrLzR0RX/ADq/zhlE4C4obU= X-Forefront-PRVS: 0576145E86 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;BY1PR03MB1499;9:1qWbP1HvZEpkHPfjYVjCbpQoLwehWvpYZErog7?= =?Windows-1252?Q?dVR9k3JJK/Kiv6k2bGVTGBkbkfxPOspv4aNfpvFC3o1BQfb96CnUrTe2?= =?Windows-1252?Q?QgP15gFAbsk9ZLXBOh+BZ9isNQWE8zPY4Tu9kXPswHhea4/+C6iGsk7a?= =?Windows-1252?Q?VmXLVFkaHfJG2Mflxoam4QdLzKoyyydWl0deptMS4Xj3Jefu40kTEQoL?= =?Windows-1252?Q?vmrzoP3ZrPLwK7PPkJ07gQmWH1EaPSe3ygWVg18tfTobi70eQ2Fdbxfe?= =?Windows-1252?Q?J1SVOKqQRwF9CU3p0IXAiaXZTedIaECcUlJTQSVMEJkg5rO82QbrzKG7?= =?Windows-1252?Q?gWdlxAd3uwhrLVXcV3tHR3LLgV/UQJuriGujhNAo+apotWCHrkTntwnq?= =?Windows-1252?Q?3Msbo+FeNMhsl351c2WmWn/3eEclO6nJO30iPMk9gp5eYeWqyHZsGMvW?= =?Windows-1252?Q?FMZTIyJY9IkKoOAxrazM55Ahd0jCL9fRcu/HLRzYgCYC+wMts0lKBMj5?= =?Windows-1252?Q?d4JcNz/QFcf0jaJQNAGx260rmwFbzwzIDbc9E2JWl2ghB648ShhMAh0w?= =?Windows-1252?Q?BXSLVxhyHW6neX8sA172n6ik+mZ6lnECkjPmA12JKrTkjVcxmazdQzfw?= =?Windows-1252?Q?phLHMlwAdT0tzYnlE7HQs/C2StmF+wl417kM3YqgLrD8xRHHVdSxYdEU?= =?Windows-1252?Q?BrJGQkBZthCYLLohm65R/6CqzVrlFEjmIgAn/A5g8DSWDpWZQL3CXjzp?= =?Windows-1252?Q?b5gsJ1115Z1nm9og/Ub96DUedQa7St7AmJkaLPqOkp5ToH68dnWGAy8Z?= =?Windows-1252?Q?c5QriXRjijGFHvc728YnpZqvnq+rJGmuzIeQqs6yIyITQQPqBaItE39n?= =?Windows-1252?Q?HdzF2ahkzDQV+q2UboH4WyuiRhuCOV/9qT08sKCSNuUgxs8flOmyoqsi?= =?Windows-1252?Q?d72J1LV/tcgaf7FfRsJ+zhDfs52egfpBZ7/EyD6h3EZ1WK1IqFB66E3F?= =?Windows-1252?Q?m/QZEG1ABI05NI9gmM8X75ALcDSCVEWoAc/BqVkfPwIsgPSEF1wbnKh4?= =?Windows-1252?Q?zbpOaRljp+UfGYwhs+hd7lwBfFGKglyaqjyuBb9k8I39of79n4u0V1gK?= =?Windows-1252?Q?jEM2NceaNefiCqAGBWwxx9/skG0NI5fiqxJPvhscgt/ac61BhFnOay6U?= =?Windows-1252?Q?aMnuALdVblcivtEjKjLsmrxUxelMOzsHIdpk05h0RcZePk6+8+WWJLHp?= =?Windows-1252?Q?c1DkbyW8Wo8J8DxPgsSDuCzUx9UaGNYuwccpeoRmymvloABr++xQt9A4?= =?Windows-1252?Q?ZNa+HOJk6LhNBk+56J9iHri5vzLE7uHP//KOX0YJelm8lN3xC4C9DVie?= =?Windows-1252?Q?0uwayjC9eppGkWisLGH1lu8ywRLoDKoQCA8cnaotMSXIZNnxjWhkw=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY1PR03MB1499;3:OF03wS6E17pKlQ72pC9kYkP1CXSlGfuTnCq8MvR/MSo+LF74tJgZ/6I+SXYx6uPBBTRyn19UvWS8huA3SHA0O5QRNSZt8irs61SLIkfv4yheEARV/YXjx8A6t5mjsokzk+qfT0vFvnRu2+dXiHBsbA==;10:zQr8y8hxoiTKJghc9JteJbGE3hk8im+Xtq2uWPwo62xnTm5eKYAZ/X8eYY/Y5kzWx2oyYIolvioCJCrDYxWx7+Euf7jRnivUu9o7Phx39l4=;6:aD4Fy515byDEiaF3eTEJOFlefB665tski326Ex56hINreQ7GPtVTK7RZUAWTskW/BDTFfW5cNgZjgMexk+cBtq8AJ0Z0BEHIpWa9fUin+OL16hzbATpn/6VyJGBLcpcwpHEmn51TH6KJX8ZARARUnA== X-OriginatorOrg: opensource.altera.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2015 20:37:21.6217 (UTC) X-MS-Exchange-CrossTenant-Id: fbd72e03-d4a5-4110-adce-614d51f2077a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fbd72e03-d4a5-4110-adce-614d51f2077a;Ip=[66.35.236.236];Helo=[sj-itexedge04.altera.priv.altera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1499 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/14/2015 03:20 PM, Dinh Nguyen wrote: > On 05/13/2015 04:49 PM, tthayer@opensource.altera.com wrote: >> From: Thor Thayer >> >> The Arria10 SDRAM and ECC system differs significantly from the >> Cyclone5 and Arria5 SoCs. This patch adds support for the Arria10 >> SoC. >> 1) IRQ handler needs to support SHARED IRQ >> 2) Support sberr and dberr address reporting. >> >> Signed-off-by: Thor Thayer >> --- >> drivers/edac/altera_edac.c | 132 ++++++++++++++++++++++++++++++++++++++------ >> drivers/edac/altera_edac.h | 85 ++++++++++++++++++++++++++++ >> 2 files changed, 201 insertions(+), 16 deletions(-) >> >> diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c >> index 204ad2d..735a180 100644 >> --- a/drivers/edac/altera_edac.c >> +++ b/drivers/edac/altera_edac.c >> @@ -42,6 +42,7 @@ const struct altr_sdram_prv_data c5_data = { >> .ecc_stat_ce_mask = CV_DRAMSTS_SBEERR, >> .ecc_stat_ue_mask = CV_DRAMSTS_DBEERR, >> .ecc_saddr_offset = CV_ERRADDR_OFST, >> + .ecc_daddr_offset = CV_ERRADDR_OFST, >> .ecc_cecnt_offset = CV_SBECOUNT_OFST, >> .ecc_uecnt_offset = CV_DBECOUNT_OFST, >> .ecc_irq_en_offset = CV_DRAMINTR_OFST, >> @@ -57,37 +58,62 @@ const struct altr_sdram_prv_data c5_data = { >> #endif >> }; >> >> +const struct altr_sdram_prv_data a10_data = {\ > > This should be static. > >> + .ecc_ctrl_offset = A10_ECCCTRL1_OFST, >> + .ecc_ctl_en_mask = A10_ECCCTRL1_ECC_EN, >> + .ecc_stat_offset = A10_INTSTAT_OFST, >> + .ecc_stat_ce_mask = A10_INTSTAT_SBEERR, >> + .ecc_stat_ue_mask = A10_INTSTAT_DBEERR, >> + .ecc_saddr_offset = A10_SERRADDR_OFST, >> + .ecc_daddr_offset = A10_DERRADDR_OFST, >> + .ecc_irq_en_offset = A10_ERRINTEN_OFST, >> + .ecc_irq_en_mask = A10_ECC_IRQ_EN_MASK, >> + .ecc_irq_clr_offset = A10_INTSTAT_OFST, >> + .ecc_irq_clr_mask = (A10_INTSTAT_SBEERR | A10_INTSTAT_DBEERR), >> + .ecc_cnt_rst_offset = A10_ECCCTRL1_OFST, >> + .ecc_cnt_rst_mask = A10_ECC_CNT_RESET_MASK, >> +#ifdef CONFIG_EDAC_DEBUG >> + .ce_ue_trgr_offset = A10_DIAGINTTEST_OFST, >> + .ce_set_mask = A10_DIAGINT_TSERRA_MASK, >> + .ue_set_mask = A10_DIAGINT_TDERRA_MASK, >> +#endif >> +}; >> + >> > > >> + >> static int altr_sdram_probe(struct platform_device *pdev) >> { >> const struct of_device_id *id; >> @@ -221,8 +295,8 @@ static int altr_sdram_probe(struct platform_device *pdev) >> struct regmap *mc_vbase; >> struct dimm_info *dimm; >> u32 read_reg; >> - int irq, res = 0; >> - unsigned long mem_size; >> + int irq, irq2, res = 0; >> + unsigned long mem_size, irqflags; >> >> id = of_match_device(altr_sdram_ctrl_of_match, &pdev->dev); >> if (!id) >> @@ -288,6 +362,9 @@ static int altr_sdram_probe(struct platform_device *pdev) >> return -ENODEV; >> } >> >> + /* Arria10 has a 2nd IRQ */ >> + irq2 = platform_get_irq(pdev, 1); >> + >> layers[0].type = EDAC_MC_LAYER_CHIP_SELECT; >> layers[0].size = 1; >> layers[0].is_virt_csrow = true; >> @@ -332,8 +409,31 @@ static int altr_sdram_probe(struct platform_device *pdev) >> if (res < 0) >> goto err; >> >> + /* Only the Arria10 has separate IRQs */ >> + if (irq2 > 0) { >> + /* Arria10 specific initialization */ >> + res = a10_init(mc_vbase); >> + if (res < 0) >> + goto err2; >> + >> + res = a10_unmask_irq(pdev, A10_DDR0_IRQ_MASK); >> + if (res < 0) >> + goto err2; >> + >> + res = devm_request_irq(&pdev->dev, irq2, >> + altr_sdram_mc_err_handler, >> + IRQF_SHARED, dev_name(&pdev->dev), mci); >> + if (res < 0) { >> + edac_mc_printk(mci, KERN_ERR, >> + "Unable to request irq %d\n", irq2); >> + res = -ENODEV; >> + goto err2; >> + } >> + irqflags = IRQF_SHARED; >> + } >> + >> res = devm_request_irq(&pdev->dev, irq, altr_sdram_mc_err_handler, >> - 0, dev_name(&pdev->dev), mci); >> + irqflags, dev_name(&pdev->dev), mci); > > irqflags was never set for the case of !(irq2 > 0). > > Dinh > Correct. So irqflags will be 0 for the CycloneV case.