Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2658361pxb; Tue, 13 Apr 2021 07:13:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxVJYVJuTtjqMEMuELiwuTZs140O64Hqq+Kl4zdeE9Idm4HkUw32o/mO96PHx9cBiQZRTV7 X-Received: by 2002:a17:906:f210:: with SMTP id gt16mr14589837ejb.22.1618323220246; Tue, 13 Apr 2021 07:13:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618323220; cv=none; d=google.com; s=arc-20160816; b=jGUoJwL//SBEpIJl9mzIl9g8pbysqHsn+lFcwvifiJ92L/h+3rsRUQx/y3O/o4HaKX 3G58Ka+LEncZW159TKStE6RW3fgTKtwZiOrcQojJrgIzxWPH7zH/mOxKmK0gsJpvN+Nm zw3/CVWbeBB1+hGmOa2CdqTW7/gcjKcW1YGCf5ZC4NrGwBZ68veJigMucq/AfsH/gWzA qvWP5oNlqJwJEEM0DD3F9USWi9jbUj7IEObsUfBcYh2mNNEFEBQ/R0IcsNn9ZWc0lf9y JlB5RyOVbiOcuQik2YK3rZJ1Bw6duaT02VoZyWypNpElvOn235Wq+EEwZklDAkz3usBu SINg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:references:in-reply-to :subject:cc:to:from:message-id:date; bh=iBUsfzP+/jwaMYQ/2t33mGzdXWhKAbF5SXuS16riXxk=; b=GJSZJ4m7T1XZFgNOa4KuVKt8cBwB8Gl4eYNI2D5dxKrlu94wdSmzDjScs3D2RNv6xS ga7bVf0ZX6uy/rlbllz1izhCx9V21RPygL8kMQzxS5ZK5baKqb9Sc3/nmAac4i7UBAMH a6josOHyHYf3TkmfQitzRCpDFdp/DPOw6mr2yJSYABuzRM5RJ0LxFHy+XoPUWzGntjud qDMHN1gtryKQCWHnlBqiDap1HoLRNZZfPiqw+1N884xfGV6TgaD5SY9OYFWGHY9OTFuF V5f+yCNbeS1/J/GPdlQOweSwAxQJ+hCkcrNKIA6sGAAF15XPqCWmSZ0JVh1NrIUDTlNs jADQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id by20si10941995ejc.288.2021.04.13.07.13.16; Tue, 13 Apr 2021 07:13:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239164AbhDMJXf (ORCPT + 99 others); Tue, 13 Apr 2021 05:23:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:47394 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237403AbhDMJXe (ORCPT ); Tue, 13 Apr 2021 05:23:34 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 72D4A611F2; Tue, 13 Apr 2021 09:23:15 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1lWFGL-007CIx-7A; Tue, 13 Apr 2021 10:23:13 +0100 Date: Tue, 13 Apr 2021 10:23:12 +0100 Message-ID: <871rbeo7wf.wl-maz@kernel.org> From: Marc Zyngier To: Peter Geis Cc: Thomas Gleixner , "open list:ARM/Rockchip SoC..." , linux-kernel@vger.kernel.org Subject: Re: [RFC] ITS fails to allocate on rk3568/rk3566 In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: pgwipeout@gmail.com, tglx@linutronix.de, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Peter, On Mon, 12 Apr 2021 21:49:59 +0100, Peter Geis wrote: > > Good Afternoon, > > I am assisting with early bringup of the rk3566 based quartz64 > development board for mainline linux. > I've encountered a few issues with allocating ITS on their version of > the GIC-V3. > The first issue is the ITS controller can only use 32bit addresses. > This leads to the following error: > [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 > [ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode > [ 0.000000] GICv3: 320 SPIs implemented > [ 0.000000] GICv3: 0 Extended SPIs implemented > [ 0.000000] GICv3: Distributor has no Range Selector support > [ 0.000000] Root IRQ handler: gic_handle_irq > [ 0.000000] GICv3: 16 PPIs implemented > [ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x00000000fd460000 > [ 0.000000] ITS [mem 0xfd440000-0xfd45ffff] > [ 0.000000] ITS@0x00000000fd440000: Devices doesn't stick: > f907000100190600 f907000000190600 Ouch. That looks pretty bad. Bit 32 of the register doesn't stick, and that's right in the middle of the address. The register should be fully writable as far as the address field is concerned. Please dump the distributor and ITS IIDR registers so that I can find the TRM for the exact IP. > [ 0.000000] ITS@0x00000000fd440000: failed probing (-6) > [ 0.000000] ITS: No ITS available, not enabling LPIs > > Downstream fixed this by adding the GFP_DMA32 flag to the memory > allocations. Urgh... this really looks like broken silicon to me. > They also force clear the GITS_BASER_SHAREABILITY_MASK. Why? Does this also apply to the command queue? Are they forcing cache flushing? > Unfortunately while this allowed ITS to allocate on downstream, as > soon as MSIs attempted to use it all interrupts would time out. > > On upstream, we observe this during allocation: > [ 0.000000] ITS [mem 0xfd440000-0xfd45ffff] > [ 0.000000] ITS@0x00000000fd440000: allocated 8192 Devices @3810000 > (indirect, esz 8, psz 64K, shr 1) > [ 0.000000] ITS@0x00000000fd440000: allocated 32768 Interrupt > Collections @3820000 (flat, esz 2, psz 64K, shr 1) > [ 0.000000] GICv3: using LPI property table @0x0000000003830000 > [ 0.000000] GICv3: CPU0: using allocated LPI pending table > @0x0000000003840000 > [ 0.000000] ITS queue timeout (64 1) > [ 0.000000] ITS cmd its_build_mapc_cmd failed > [ 0.000000] ITS queue timeout (96 1) > [ 0.000000] ITS cmd its_build_invall_cmd failed > So the command queue is not making forward progress. Either because the ITS cannot access the commands, or because it cannot use the memory it has been allocated. Please dump GITS_CBASER (and the value that has been written to it), just in case it shows the same brokenness as the GITS_BASER registers... [...] > Any assistance you can provide would be greatly appreciated. I'm not sure there is much we can do without a lot more details about the HW. We need to know the exact GIC implementation they are using (ARM has two versions of the GICv3 IP), and we also need to find out *how* this has been integrated. Only Rockchip can tell you that. Once we know which version they are using, and how it is wired, we can start looking at some IMPDEF debug registers. The Linux driver assumes that the ITS is able to access the whole memory. If there are restrictions on what memory ranges can be used, it is going to be a pain to support :-(. M. -- Without deviation from the norm, progress is not possible.