Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp6543314rwr; Tue, 2 May 2023 01:49:55 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ51tY1NAeJAfdWnw1MzVF6zgXA/eIiLxdcve35pp3LWgL+xBpnUd3q4TRJJb4V4WUm1uMzk X-Received: by 2002:a05:6a20:1592:b0:f6:592a:7e28 with SMTP id h18-20020a056a20159200b000f6592a7e28mr20930783pzj.14.1683017394993; Tue, 02 May 2023 01:49:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683017394; cv=none; d=google.com; s=arc-20160816; b=Aglf+Og4a2mPJNneWasQuBFYoqoHar9MyCyXwYXy36bNvJ8F5BpNCbiKROxX97iRpu htL8emAfGG6TTigqZ+VmlhOq/N/hlWmApSGaBobnSraKrGbeE0bX/ydMFCeTWlyBzc0Q 76PiinWlb5OYJ+N6JRTAwgiVMPEovEQwdFdtGuQAkqfd6zoJAHBN6bH6kjY5Pz1hcrGY luHS1ZypishHdvHHv1lhlcP4HqSsQ59ogLk7VLCMiTppkbQqR48vmSEnMA/2ws0qRM9R 5BPnDatDLCMyGXvF/zrebVb6G3RGADvgHXxgcspedYqv1WBBw6nyaCWPV45BSKezzuc1 5GPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=hiQalyBCKoJzAGN9ygHoJ7Nfja67Oxy2+AA4JQPS0Pk=; b=CO9KME89631+m/+a1Z0B+5Pj8F3HBp8M7m2S17CBU/DAbTaAi/pvqClSTHnWN06LI5 eDJ2al0J1J5KWA/VlAk9N1scDMpHL75ORiDQGPSNdNqON6EiIMIZODwfLIvPIReMX/nI 250O8ve/NEhBCn3tskkzyVPYHIcN2CVcR2U0l1VUoNUMsFnohco0q5f2jDChEX6/gbcB zMPeZrULo4wTbVqgSn0n7NcX+gsscnwvtkfnQbZODMNhUpcp3AWnIL7wbnHWSA8FEjRY ohx6PFAlS4bn9SFHbsUFqzMd2042LjTO1Hd99E10PxUyuyuoIxwmVgtiWWLR69fJIV9q /f2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=kOuFAu58; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d24-20020a656218000000b00509461bbf1csi29783532pgv.79.2023.05.02.01.49.43; Tue, 02 May 2023 01:49:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=kOuFAu58; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233480AbjEBIsI (ORCPT + 99 others); Tue, 2 May 2023 04:48:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233439AbjEBIrh (ORCPT ); Tue, 2 May 2023 04:47:37 -0400 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9544A5FFB for ; Tue, 2 May 2023 01:46:20 -0700 (PDT) Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1aaf21bb427so15481005ad.1 for ; Tue, 02 May 2023 01:46:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1683017175; x=1685609175; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=hiQalyBCKoJzAGN9ygHoJ7Nfja67Oxy2+AA4JQPS0Pk=; b=kOuFAu58T3IPgNuNzVp5vCYh7hR6x44qFnuyjuSRIfLqqO0MHN5vtigFl/4id/LQVq f9b3pEh65z3oghVjzMcjeMOe6qEEWG37i5Pr72O440jxONR6H4uGh8jkayhV+Z/DE5UG 7zCYXfRzRRjSjfnZWXed9evFK4oZhbwOd7IuL8X8/XbpDgyKuMbE5SdZ2BJfPzxgZDED 1QIAn3JSzPflxYubseT69TnaL1bkMyVjF2KRYfUSHJLvZopFMBligxlqzHIcFi428JeL GkAlUCc/E2HY481Fgi/9gZArPY3Wlcmuv7LXpgcUOLiPojkd3p4Tw7rKT/63dODvb5wZ Vg/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683017175; x=1685609175; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hiQalyBCKoJzAGN9ygHoJ7Nfja67Oxy2+AA4JQPS0Pk=; b=VMzzwh/PlLBiy6VBOf91iqmc5Ce5qzJyhD72JK2b0LE43+X9lfwVBkzOw+JcuYKDGV exvgfPoBRI+BfqQ/yzsG9xPM3lqV1Mw4PbY+i13NYPbJXdcZ35Ofj6vk8YACWjfj4WwL u9RsDvqSw5YhBQ/dL73HNJZqH1KVp8ZK9uy9VkopD/GFh2t5nFMegfz519wCRtUCsp0q CjH+sBWryOmBEq5glIUQykA4+tqfUc+ZKoqgZ+U62C8+zGOUWI8Yg/zUdnkaba8Kv1HT EW2Pwif+8rUi5ehHB2fN+4dHJspBIup+XUISTGM0iJgVlhSHhiuXXa3RUhmJFlMMWRBO Y5EQ== X-Gm-Message-State: AC+VfDxVjIWSBq3HVgv68NBUuajgURc9fHmGQlJ+TEW8V/Z/pmIvp/Kb 62DC9NkwPUBqvFipWQrAFa3Ijg== X-Received: by 2002:a17:903:2304:b0:1a1:dd2a:fe6c with SMTP id d4-20020a170903230400b001a1dd2afe6cmr17861325plh.53.1683017175023; Tue, 02 May 2023 01:46:15 -0700 (PDT) Received: from dragon (80.251.214.228.16clouds.com. [80.251.214.228]) by smtp.gmail.com with ESMTPSA id n20-20020a170902969400b001a6e9d170b8sm19031044plp.265.2023.05.02.01.46.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 May 2023 01:46:13 -0700 (PDT) Date: Tue, 2 May 2023 16:45:58 +0800 From: Shawn Guo To: Bjorn Helgaas Cc: Lorenzo Pieralisi , Bjorn Helgaas , Catalin Marinas , Will Deacon , Maximilian Luz , Thomas =?iso-8859-1?Q?Wei=DFschuh?= , linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Andy Gross , Bjorn Andersson Subject: Re: [PATCH v2] arm64: PCI: Add quirk for Qualcomm WoA devices Message-ID: <20230502084558.GA2103@dragon> References: <20230423030520.9570-1-shawn.guo@linaro.org> <20230428213027.GA363093@bhelgaas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230428213027.GA363093@bhelgaas> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 28, 2023 at 04:30:27PM -0500, Bjorn Helgaas wrote: > [+cc Andy, Bjorn A, plea for help from Qualcomm firmware folks] > > On Sun, Apr 23, 2023 at 11:05:20AM +0800, Shawn Guo wrote: > > Commit 8fd4391ee717 ("arm64: PCI: Exclude ACPI "consumer" resources from > > host bridge windows") introduced a check to remove host bridge register > > resources for all arm64 platforms, with the assumption that the PNP0A03 > > _CRS resources would always be host bridge registers and never as windows > > on arm64 platforms. > > That's not quite what the commit log says. The 8fd4391ee717 > assumption is that on arm64, > > - _CRS *consumer* resources are host bridge registers > - _CRS *producer* resources are windows > > which I think matches the intent of the ACPI spec. Yes, I will update. > > > The assumption stands true until Qualcomm WoA (Windows on ARM) devices > > emerge. These devices describe host bridge windows in PNP0A03 _CRS > > resources instead. For example, the Microsoft Surface Pro X has host > > bridges defined as > > > > Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID > > > > Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings > > { > > Name (RBUF, ResourceTemplate () > > { > > Memory32Fixed (ReadWrite, > > 0x60200000, // Address Base > > 0x01DF0000, // Address Length > > ) > > ... > > > The Memory32Fixed holds a host bridge window, but it's not properly > > defined as a "producer" resource. > > I assume you're saying the use of Memory32Fixed for a window is a > firmware defect, right? Yes, I will reword. > > (Per ACPI r6.5, sec 19.6.83, the Memory32Fixed descriptor cannot > specify a Producer/Consumer ResourceUsage. I think that means the > space is assumed to be ResourceConsumer.) > > > Consequently the resource gets removed by kernel, and the BAR > > allocation fails later on: > > > > [ 0.150731] pci 0002:00:00.0: BAR 14: no space for [mem size 0x00100000] > > [ 0.150744] pci 0002:00:00.0: BAR 14: failed to assign [mem size 0x00100000] > > [ 0.150758] pci 0002:01:00.0: BAR 0: no space for [mem size 0x00004000 64bit] > > [ 0.150769] pci 0002:01:00.0: BAR 0: failed to assign [mem size 0x00004000 64bit] > > > > This eventually prevents the PCIe NVME drive from being accessible. > > > > Add a quirk for these devices to avoid the resource being removed. > > Since this is a Windows laptop, I assume this works with Windows and > that Windows will in fact assign BARs in that Memory32Fixed area. > > If we knew what the firmware author's intent was, we could probably > make Linux understand it. > > Maybe (probably) Windows treats these descriptors the same on arm64 as > on x86, i.e., *everything* in PNP0A03 _CRS is assumed to be "producer" > (at least, that's my experimental observation; I have no actual > knowledge of Windows). That's my bet too. > > So I guess 8fd4391ee717 must have been motivated by some early arm64 > platform that put "consumer" descriptors in PNP0A03 _CRS as Lorenzo > said [1]. > > In that case I guess our choices are: > > - Add quirks like this and keep adding them for every new arm64 > platform that uses the same "everything in PNP0A03 _CRS is a > producer" strategy. > > - Remove 8fd4391ee717, break whatever early arm64 platforms needed > it, and add piecemeal quirks for them. > > I hate both, but I think I hate the first more because it has no end, > while the second is painful but limited. Thanks for your opinion on this! Let's try to pursue the second then. > > Obviously we would need to do whatever we can to identify and fix > things that depend on 8fd4391ee717 before reverting it. Lorenzo, I have zero experience on any of those early arm64 platforms. I would appreciate it if you can give some direction on how to identify them. Looking at your comment below, I'm wondering if it's true that the firmware on those early arm64 platforms has no MCFG table but provide root->mcfg_addr via _CBA method? "I believe it is because there were arm64 platforms (early) that added a consumer descriptor in the host bridge CRS with MMIO registers space in it (I am not sure I can find the bug report - it has been a while, remember the issue with non-ECAM config space and where to add the MMIO resource required to "extend" MCFG config space ? I will never forget that :))." It would be very helpful if we can find someone running any of those early platforms, so that we can ask favor to dump ACPI tables and test things out. Shawn