From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0FA0EC61D99 for ; Thu, 23 Nov 2023 01:28:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=bdVBpoQuAj1vX2UZQq98kxj1YDK8kS9CycWahm0CY+g=; b=zkDZlxFoUm4Uqq 0yFqye1VTxErbo/OnhDsuoSzVllb7CJ04DZuYmlsZ01lhWH2+uHAIdLs8eJ8aivhrWGxF4F0qxjdp YwKziwQY4BEvXrauBRBLhbBmNffpgQHIdKrZrfMTUxtXIgHrj2keT0CjOqPCW1SMaKPnu2auvxzf9 eJFw82CylgkPjlfZR8sW/lHAqGiF1uNSFQ7lmclWXwVoVjxODi9iY+hmTEVXnL1qKUdtAEMFiFils exrIhmGsyqbGRZmlwTPA2zPaBe8jgWlR4TQLPtIoBBSkNPErndM2/GbH1gxxeve1hDgWaOsvtLjwc KaYM2QPrpd/YgMaZ6rvQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r5yV1-003V5l-1u; Thu, 23 Nov 2023 01:27:23 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r5yUx-003V40-0e; Thu, 23 Nov 2023 01:27:20 +0000 X-UUID: 6e2c8544899f11ee9b7791016c24628a-20231122 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=RuE1OIGl7HeuG81qxmfc5/SyEf/cNR7lLvQ7yhP/4Zg=; b=aq747MFeM0qn1hXAzPFoiswMeZpBsaQxuGXqKJ8+YzqZcKZH5DQCMxQOhBwqNU30Dr1T3KDfZ9O2gVSO5WgBykZVwhy8fD4FiuvZopVXAgSCQy0LdvCb2CVkp8JO0THS88l8tTDQzIUlXkrDcLBLd8aRkVagdxgm0MTTR3rGQdw=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.33,REQID:7677af2c-79eb-4d46-9b4c-068647abe8c1,IP:0,U RL:0,TC:0,Content:-5,EDM:0,RT:38,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:33 X-CID-META: VersionHash:364b77b,CLOUDID:3123f772-1bd3-4f48-b671-ada88705968c,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:11|1,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR: NO,DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_ULN X-UUID: 6e2c8544899f11ee9b7791016c24628a-20231122 Received: from mtkmbs14n2.mediatek.inc [(172.21.101.76)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1031778076; Wed, 22 Nov 2023 18:27:13 -0700 Received: from mtkmbs10n1.mediatek.inc (172.21.101.34) by mtkmbs11n1.mediatek.inc (172.21.101.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Thu, 23 Nov 2023 09:27:11 +0800 Received: from APC01-PSA-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Thu, 23 Nov 2023 09:27:10 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jueq6qMFq3QxhTucXUoVOTwf5sSkzur6Tx17QJUarYqOp/rqMC08Ph/DxRYuN3kkUG4tifndEDopWpTIHt4bwPjkX995CXmOHFaUUP4JVqRR7onR/xXQYxNxEYUul6U6av6AmNBytxELzi4Uj8CbQGQMqI5XKK9BLmU8c1RyhNz8OQbbv59Fg+UBqPaL5jzY8u4g4c5fyaUkMSC5TzlMFy3lUIKJgwffFZZWVVrEenuJXQSMBCxIlUhcvyudzAEBYEVreZWwNWdTvguDc9UF3mdAok6KzThdJzGsIv651sJotlJLkedoSDDuwr0PEIvC5zXaf99J5+oTrfSPQB6kNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RuE1OIGl7HeuG81qxmfc5/SyEf/cNR7lLvQ7yhP/4Zg=; b=LvTz7Kfir6zHYDSqUpLu4FdVPno585KchFFkIB3SsYXCVSkO/Dgo946KAoqwd0vDYb6+zCi75AbnWL8hswY8gRmIyOTz5RVIc5SFfGeagUL0Iqf4NwsiTMeKn4uCqkRD3NUaezS/eYbEttQlPzyLRM0h7q6T/aUZ55VEMw2sQ7B8OelwZHWTmDSrhffOTPMsPtrEZ6VyFlm+PtjHzqON9HG0LSklYfRsojHnbH+K3tkSA6g4GaAUXNHuVBqf54Bh8qiQOupHAK1SU2XxQ9B5q9KKZ8exIq7nptmScQVjuJ0MwTjw9N3nZ/CLWor5IR3ECm2PuMEugACpSO6wQK2J3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RuE1OIGl7HeuG81qxmfc5/SyEf/cNR7lLvQ7yhP/4Zg=; b=ULeEy31C0BA/SxuOfHxntSrhrDihZ6N7NFwIgJRBqlz1K3tXP9myc1qV0phb/WedIRDgJUmzTQ9ix0zEqns61MPBuzrLwqC7gn9NLNL45CKoa6NDxUCwHMtWo6OJzV5G9t2IN6JwPQGL2yk1mlweXEQ3NyLCav2gvTUC6pXbJ4o= Received: from PSAPR03MB5365.apcprd03.prod.outlook.com (2603:1096:301:17::5) by SEYPR03MB7416.apcprd03.prod.outlook.com (2603:1096:101:13a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7025.18; Thu, 23 Nov 2023 01:27:08 +0000 Received: from PSAPR03MB5365.apcprd03.prod.outlook.com ([fe80::bad5:5c99:1d71:2631]) by PSAPR03MB5365.apcprd03.prod.outlook.com ([fe80::bad5:5c99:1d71:2631%4]) with mapi id 15.20.7025.020; Thu, 23 Nov 2023 01:27:07 +0000 From: =?utf-8?B?Smlhbmp1biBXYW5nICjnjovlu7rlhpsp?= To: "robh@kernel.org" , "matthias.bgg@gmail.com" , "kw@linux.com" , "lpieralisi@kernel.org" , "bhelgaas@google.com" , "angelogioacchino.delregno@collabora.com" CC: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , =?utf-8?B?SmlleXkgWWFuZyAo5p2o5rSBKQ==?= , =?utf-8?B?Q2h1YW5qaWEgTGl1ICjmn7PkvKDlmIkp?= , =?utf-8?B?SmlhbiBZYW5nICjmnajmiKwp?= , =?utf-8?B?UWl6aG9uZyBDaGVuZyAo56iL5ZWf5b+gKQ==?= , "linux-arm-kernel@lists.infradead.org" , "linux-pci@vger.kernel.org" , Ryder Lee Subject: Re: [PATCH v2] PCI: mediatek-gen3: Fix translation window Thread-Topic: [PATCH v2] PCI: mediatek-gen3: Fix translation window Thread-Index: AQHaBYj34jUTwwci5EyGDD9GhMp2WbCHTUQA Date: Thu, 23 Nov 2023 01:27:07 +0000 Message-ID: <80fc850062017a2ef2091a43759e19f3fcf2666f.camel@mediatek.com> References: <20231023081423.18559-1-jianjun.wang@mediatek.com> In-Reply-To: <20231023081423.18559-1-jianjun.wang@mediatek.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PSAPR03MB5365:EE_|SEYPR03MB7416:EE_ x-ms-office365-filtering-correlation-id: 9ac190ed-1e1c-4f45-b9b9-08dbebc34edc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6KoZoGiqkZ67WT29gpGyIwii2igxBOUfQAhl/m3E4GBFRCEdBweqzolddjd/ramlMoGsARNdiu4g7I3HsYU+/tPXeUs7kYnP66MGHEDob2cF13714evK5YecjU8lPsFSaqTbU0879u+1+FSrvab3rkwGb49iFC3sKLAtFhOBYcGxwmrV7sOnAZ47d/Zumier4cAOyO3JogDCZz9dNo0/5gh7hJ4N7eADihUQAnwxW63zJopveYiT1MhfhjEJBeOZ9GFTWShaITAoeWMN21ZoI9AUVg8h0zWneIULllpCtxtAswBHB67Ik+28O+8VVoVOJuI6Be2T/1eo0asQcXv7qx5XBNBB0e+8FhHekn6x1QcR8wlaf4MzaXCKwrCfTIiIFVaWJTN+4ZvNxLmxUzihv9vZj/to+KP/Eo0Yj8PnPrUI/EILjaGZ/7FkkgsmTgvuAZ2tdhKC7cY8q7vQyKP7S7eModlMJSXRr7oWudhFZ0KtiEiwtrTU/tgRoQalt/DVy/7c0mf6vlIpJgX7n3IfDOzhrd+EHHHGmScXJxpBsOQ+IP/3yHZpGClDM3Nm6/IddVMP/iyGTR0K7O9kK67rLeqPw7erPa83phl4j/tWrM3QCds54WnqgFLDFg7hdXdAiS8H5eYf9r6lr1bXoSr5T6ZeWu5Gdirp2107C5/zX7I8aam704okS7kxanv5Pna9houP/3mQxl/h0j0H0s6/vg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PSAPR03MB5365.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(136003)(396003)(346002)(366004)(376002)(230173577357003)(230922051799003)(230273577357003)(451199024)(64100799003)(186009)(1800799012)(7416002)(41300700001)(4001150100001)(2906002)(8676002)(8936002)(316002)(5660300002)(4326008)(86362001)(38070700009)(36756003)(85182001)(6486002)(478600001)(2616005)(107886003)(76116006)(26005)(122000001)(6506007)(71200400001)(83380400001)(6512007)(38100700002)(54906003)(66556008)(66446008)(66476007)(66946007)(110136005)(91956017)(64756008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cmZaVlRVMXplUkhEbW9WT0tlNUx3VDRwekFKeG9VSEZCR1Yvb0NkTWN3dnA5?= =?utf-8?B?U0RFdTg0TVFLanBBRGVhQWJkbmdsVU4yT3hKQno2cnpocndjMVRQRE9SUVUr?= =?utf-8?B?U1l1Y3dxQlJPLzU3MDNqT0RFZFdpRGVDKzJMNUlKRVFHN1haWkpqSWE5Skpp?= =?utf-8?B?cmY4SHpteFc2SE5TS2t1eG02MnhIK3VNQUQydFRuYkN5eENOV3ZQbm02cUhh?= =?utf-8?B?T0JYVnMxbFlod1U5L1hkVnVsWjltTlZ6OGNrellPTXkrNXJZKy9Dc2FMMFBE?= =?utf-8?B?dDZRZ0dHbmtTTXRUNU4yTFhEcVlVMzFXVnJrUkp5UDZKcVVyby9lS3hWZUxO?= =?utf-8?B?K1g2WEJZVHpwMmx5eFFKazZVM3NYMmFKK3krMkVBeHljTUg4Zi9sTjJyM3BM?= =?utf-8?B?KzdXQ0NsbzBsZFVnekhZRjk3ZkM0NHErYlFHaUVYZE5Yc014U05QSzVTTmdJ?= =?utf-8?B?N1pYUkxXS0ZkKzNzKzRqeUk0SG9vVW1GNEFQbHJmaGVQbkluT1pyMHU5YnhX?= =?utf-8?B?c1YzV1RSWFFSeFVXRWtkRzkrNzMrekFNMmpTYVNqOXU5ZHk3ODNUbTZyb0J0?= =?utf-8?B?QVp3RTVqaFlzNFVBd2RjN0hrT2FDQXNhVkNBMTFFcjRHc2dxZ1FEN05vMkNt?= =?utf-8?B?eE55MVcxVC9pL1RmbjYzbXUzTWFFTElUbjg1eW10bDVzRjZkMGJJSFdZSXlL?= =?utf-8?B?TWhqeDZlLzkxYkMrRGpFcW5tSE16QTlub2VZMVBLaGpNeHpUeGxGQk5aYTVl?= =?utf-8?B?V0NLOWoxRmlZUjdWbTZibkYyNDMzbnk0dVMvZVJQN2Z1MVVPYkpBUW96RURW?= =?utf-8?B?czEzQXpBa3gvQ2xVRVVJdFBSSWZqa2pCb1dDZ1ZwT1ZRemRzTmF6dFdMelRi?= =?utf-8?B?RkRER0pJOXVPRVBPci9YTkFhbVIzMCs2SmJVckNrQldhQ0JFUzhkUERlOHA4?= =?utf-8?B?TFE0QWpUTjBZLzIwdXBqTUIrY1lYd3NlWkxNT1FQd2x2alczOGd4Z1JWUnFZ?= =?utf-8?B?SEEvQ05yVUpYTmIyRUhKSjhReGNVRGIxZ2JnRW9aQ1VGenFEYUZpV1dDYXAy?= =?utf-8?B?aXRpVjNKOUQ2OWZ0WVJ5ZXkxZlZBVFp5WUczK3ZQa2R3cVZDVGVwVUNyYURx?= =?utf-8?B?aUFZeW5WejBoeFY4Tlo0eFJoS2hNK2EyZzZGVEZBOVpneEtQemNHTEZYWGpH?= =?utf-8?B?Z2x3YmxHZFNuV2RaT1Y2VytqaS9rOWREbHZob2RsWS9sOHNxMVR6bGhWN1Zy?= =?utf-8?B?QVd4STNVbTMyUTcwZEJwWHZnanEwRjNsQVdGbWp0UzZkd3NSL01lYTVMeHlM?= =?utf-8?B?UFNnRGJhM3dWejBCN2NFL1BTT2RLNUFUeENGVmYvOG82UnF0d1RBWFhNZU0y?= =?utf-8?B?a1J4eThGQ1VDYnZGaWwvcnFDOHlRK2wvb1g1dFI4UE14bTNtYUJpejROditY?= =?utf-8?B?SFgzU0VBY015WnF6VDRTUDFNVWpDVnRuSzc3M3BobndEYUNSeDV1TjRMZnZS?= =?utf-8?B?NGlBOC8zQ3crOThRS0llWlVzNXNGMGxzbkFjaVNKa3JYOWdCSWhORHJ3dWFo?= =?utf-8?B?YTdsd1hjWkxYTGRuWkVieDJvWnlTMER1cVJyTk8wdDMzMXNSQUFFMmxCZm1n?= =?utf-8?B?TlludHZKdFlDaFV3UEVoSXdDajRiQnVYTW5TZnVPbGNjKzdyM2I3bjZWSGNi?= =?utf-8?B?ZVNoMjlEOGV5Rk1GQ0VVSmkxb2JmRWZ2SEhqVEpQUVhSMHJIcG5vR3NleitR?= =?utf-8?B?S1pIWjNKSjkzTTdlTVg3NDUrZXUvZDZjNlFFZS9vbXFVSm9TbXZES0tKK1Ja?= =?utf-8?B?RlZ0YURod3dOeXdyUmR6SjVKdncwYzA4VWZyWXlJd2N1Y3hKU2owaVVWU3Jr?= =?utf-8?B?K0xuVUcrSEppNkxucjFQamF0L3lCanRRM3I3NWE1RE9aRHVLYVVmdVdJc0VW?= =?utf-8?B?ZytOQXlkYTZKNnRXZ0JxUGhTUmhXNmpiUFMxQkJJVUdjUks3Rk1MQkxTejd0?= =?utf-8?B?REVGMm1tM3BwZFJKY1ptOFEydm03b1habnRDamFneUhLTUMrbmxxWHpjQVc4?= =?utf-8?B?d0dkakYxVktXVU42ako0QktnUHk2eTlnUURCVjMvRmZJakc0L0pVVFFDTDc5?= =?utf-8?B?bHVxN0o4Tk55MmN2RktaUTRRZ1pTcTFabmh3dXgyemVnMlptdGI5T0N0VnM0?= =?utf-8?B?RXc9PQ==?= Content-ID: <22FDD0A001F6154093FB3797F405AA81@apcprd03.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PSAPR03MB5365.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ac190ed-1e1c-4f45-b9b9-08dbebc34edc X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2023 01:27:07.7012 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nbKNMKeJkXHdGxUaR0sRoj6+87vz+NMslDlAvgW7BoZuRzZKK4SpaETA3RTvccb+KZO4yoEHhbEfPxW+W4b08H1uR5CMWb2sLTum5qY7Mps= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR03MB7416 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231122_172719_297139_0F6AAF7F X-CRM114-Status: GOOD ( 22.45 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Maintainers, Gentle ping for this patch, if there is anything I need to do, please let me know. Thanks. On Mon, 2023-10-23 at 16:14 +0800, Jianjun Wang wrote: > The size of translation table should be a power of 2, using fls() > cannot get the proper value when the size is not a power of 2. For > example, fls(0x3e00000) - 1 = 25, hence the PCIe translation window > size will be set to 0x2000000 instead of the expected size 0x3e00000. > > Fix translation window by splitting the MMIO space to multiple tables > if > its size is not a power of 2. > > Fixes: d3bf75b579b9 ("PCI: mediatek-gen3: Add MediaTek Gen3 driver > for MT8192") > Signed-off-by: Jianjun Wang > > --- > Changes in v2: > Only print warning message when reach the maximum translation table > number, the MEM space still works but will be smaller than expected. > > Bootup logs on MT8195 Platform: > > > Before this patch: > > mtk-pcie-gen3 112f0000.pcie: Parsing ranges property... > mtk-pcie-gen3 112f0000.pcie: IO 0x0020000000..0x00201fffff -> > 0x0020000000 > mtk-pcie-gen3 112f0000.pcie: MEM 0x0020200000..0x0023ffffff -> > 0x0020200000 > mtk-pcie-gen3 112f0000.pcie: set IO trans window[0]: cpu_addr = > 0x20000000, pci_addr = 0x20000000, size = 0x200000 > mtk-pcie-gen3 112f0000.pcie: set MEM trans window[1]: cpu_addr = > 0x20200000, pci_addr = 0x20200000, size = 0x3e00000 > > > We expect the MEM trans window size to be 0x3e00000, but its actual > > available size is 0x2000000. > > After applying this patch: > > mtk-pcie-gen3 112f0000.pcie: Parsing ranges property... > mtk-pcie-gen3 112f0000.pcie: IO 0x0020000000..0x00201fffff -> > 0x0020000000 > mtk-pcie-gen3 112f0000.pcie: MEM 0x0020200000..0x0023ffffff -> > 0x0020200000 > mtk-pcie-gen3 112f0000.pcie: set IO trans window[0]: cpu_addr = > 0x20000000, pci_addr = 0x20000000, size = 0x200000 > mtk-pcie-gen3 112f0000.pcie: set MEM trans window[1]: cpu_addr = > 0x20200000, pci_addr = 0x20200000, size = 0x200000 > mtk-pcie-gen3 112f0000.pcie: set MEM trans window[2]: cpu_addr = > 0x20400000, pci_addr = 0x20400000, size = 0x400000 > mtk-pcie-gen3 112f0000.pcie: set MEM trans window[3]: cpu_addr = > 0x20800000, pci_addr = 0x20800000, size = 0x800000 > mtk-pcie-gen3 112f0000.pcie: set MEM trans window[4]: cpu_addr = > 0x21000000, pci_addr = 0x21000000, size = 0x1000000 > mtk-pcie-gen3 112f0000.pcie: set MEM trans window[5]: cpu_addr = > 0x22000000, pci_addr = 0x22000000, size = 0x2000000 > > > Total available size for MEM trans window is 0x3e00000. > > --- > --- > drivers/pci/controller/pcie-mediatek-gen3.c | 85 ++++++++++++------- > -- > 1 file changed, 50 insertions(+), 35 deletions(-) > > diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c > b/drivers/pci/controller/pcie-mediatek-gen3.c > index e0e27645fdf4..975b3024fb08 100644 > --- a/drivers/pci/controller/pcie-mediatek-gen3.c > +++ b/drivers/pci/controller/pcie-mediatek-gen3.c > @@ -245,35 +245,60 @@ static int mtk_pcie_set_trans_table(struct > mtk_gen3_pcie *pcie, > resource_size_t cpu_addr, > resource_size_t pci_addr, > resource_size_t size, > - unsigned long type, int num) > + unsigned long type, int *num) > { > + resource_size_t remaining = size; > + resource_size_t table_size; > + resource_size_t addr_align; > + const char *range_type; > void __iomem *table; > u32 val; > > - if (num >= PCIE_MAX_TRANS_TABLES) { > - dev_err(pcie->dev, "not enough translate table for > addr: %#llx, limited to [%d]\n", > - (unsigned long long)cpu_addr, > PCIE_MAX_TRANS_TABLES); > - return -ENODEV; > - } > + while (remaining && (*num < PCIE_MAX_TRANS_TABLES)) { > + /* Table size needs to be a power of 2 */ > + table_size = BIT(fls(remaining) - 1); > + > + if (cpu_addr > 0) { > + addr_align = BIT(ffs(cpu_addr) - 1); > + table_size = min(table_size, addr_align); > + } > + > + /* Minimum size of translate table is 4KiB */ > + if (table_size < 0x1000) { > + dev_err(pcie->dev, "illegal table size > %#llx\n", > + (unsigned long long)table_size); > + return -EINVAL; > + } > > - table = pcie->base + PCIE_TRANS_TABLE_BASE_REG + > - num * PCIE_ATR_TLB_SET_OFFSET; > + table = pcie->base + PCIE_TRANS_TABLE_BASE_REG + *num * > PCIE_ATR_TLB_SET_OFFSET; > + writel_relaxed(lower_32_bits(cpu_addr) | > PCIE_ATR_SIZE(fls(table_size) - 1), table); > + writel_relaxed(upper_32_bits(cpu_addr), table + > PCIE_ATR_SRC_ADDR_MSB_OFFSET); > + writel_relaxed(lower_32_bits(pci_addr), table + > PCIE_ATR_TRSL_ADDR_LSB_OFFSET); > + writel_relaxed(upper_32_bits(pci_addr), table + > PCIE_ATR_TRSL_ADDR_MSB_OFFSET); > > - writel_relaxed(lower_32_bits(cpu_addr) | > PCIE_ATR_SIZE(fls(size) - 1), > - table); > - writel_relaxed(upper_32_bits(cpu_addr), > - table + PCIE_ATR_SRC_ADDR_MSB_OFFSET); > - writel_relaxed(lower_32_bits(pci_addr), > - table + PCIE_ATR_TRSL_ADDR_LSB_OFFSET); > - writel_relaxed(upper_32_bits(pci_addr), > - table + PCIE_ATR_TRSL_ADDR_MSB_OFFSET); > + if (type == IORESOURCE_IO) { > + val = PCIE_ATR_TYPE_IO | PCIE_ATR_TLP_TYPE_IO; > + range_type = "IO"; > + } else { > + val = PCIE_ATR_TYPE_MEM | > PCIE_ATR_TLP_TYPE_MEM; > + range_type = "MEM"; > + } > > - if (type == IORESOURCE_IO) > - val = PCIE_ATR_TYPE_IO | PCIE_ATR_TLP_TYPE_IO; > - else > - val = PCIE_ATR_TYPE_MEM | PCIE_ATR_TLP_TYPE_MEM; > + writel_relaxed(val, table + > PCIE_ATR_TRSL_PARAM_OFFSET); > > - writel_relaxed(val, table + PCIE_ATR_TRSL_PARAM_OFFSET); > + dev_dbg(pcie->dev, "set %s trans window[%d]: cpu_addr = > %#llx, pci_addr = %#llx, size = %#llx\n", > + range_type, *num, (unsigned long long)cpu_addr, > + (unsigned long long)pci_addr, (unsigned long > long)table_size); > + > + cpu_addr += table_size; > + pci_addr += table_size; > + remaining -= table_size; > + (*num)++; > + } > + > + if (remaining) > + dev_warn(pcie->dev, "not enough translate table for > addr: %#llx, limited to [%d]\n", > + (unsigned long long)cpu_addr, > PCIE_MAX_TRANS_TABLES); > > return 0; > } > @@ -380,30 +405,20 @@ static int mtk_pcie_startup_port(struct > mtk_gen3_pcie *pcie) > resource_size_t cpu_addr; > resource_size_t pci_addr; > resource_size_t size; > - const char *range_type; > > - if (type == IORESOURCE_IO) { > + if (type == IORESOURCE_IO) > cpu_addr = pci_pio_to_address(res->start); > - range_type = "IO"; > - } else if (type == IORESOURCE_MEM) { > + else if (type == IORESOURCE_MEM) > cpu_addr = res->start; > - range_type = "MEM"; > - } else { > + else > continue; > - } > > pci_addr = res->start - entry->offset; > size = resource_size(res); > err = mtk_pcie_set_trans_table(pcie, cpu_addr, > pci_addr, size, > - type, table_index); > + type, &table_index); > if (err) > return err; > - > - dev_dbg(pcie->dev, "set %s trans window[%d]: cpu_addr = > %#llx, pci_addr = %#llx, size = %#llx\n", > - range_type, table_index, (unsigned long > long)cpu_addr, > - (unsigned long long)pci_addr, (unsigned long > long)size); > - > - table_index++; > } > > return 0; _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel