[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <cf7b97d8-4393-424c-89fc-aa810d907a67@fujitsu.com>
Date: Wed, 2 Apr 2025 06:45:33 +0000
From: "Zhijian Li (Fujitsu)" <lizhijian@...itsu.com>
To: Gregory Price <gourry@...rry.net>, "lsf-pc@...ts.linux-foundation.org"
<lsf-pc@...ts.linux-foundation.org>
CC: "linux-mm@...ck.org" <linux-mm@...ck.org>, "linux-cxl@...r.kernel.org"
<linux-cxl@...r.kernel.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>
Subject: Re: CXL Boot to Bash - Section 2a (Drivers): CXL Decoder Programming
Hi Gregory,
On 07/03/2025 07:56, Gregory Price wrote:
> What if instead, we had two 256MB endpoints on the same host bridge?
>
> ```
> CEDT
> Subtable Type : 01 [CXL Fixed Memory Window Structure]
> Reserved : 00
> Length : 002C
> Reserved : 00000000
> Window base address : 0000000100000000 <- Memory Region
> Window size : 0000000020000000 <- 512MB
> Interleave Members (2^n) : 00 <- Not interleaved
>
> Memory Map:
> [mem 0x0000000100000000-0x0000000120000000] usable <- SPA
>
> Decoders
> decoder0.0
> range=[0x100000000, 0x120000000]
> |
> decoder1.0
> range=[0x100000000, 0x120000000]
> / \
> decoded2.0 decoder3.0
> range=[0x100000000, 0x110000000] range=[0x110000000, 0x120000000]
> ```
It reminds me that during construct_region(), it requires decoder range in the
switch/host-bridge is exact same with the endpoint decoder. see
match_switch_decoder_by_range()
If so, does following decoders make sense?
Decoders
decoder0.0
range=[0x100000000, 0x120000000]
|
+------------+-----------+
/ \
| Host-bridge contains |
decoder1.0 2 decoders decoder1.1
range=[0x100000000, 0x110000000] range=[0x110000000, 0x120000000]
/ \
decoded2.0 decoder3.0
range=[0x100000000, 0x110000000] range=[0x110000000, 0x120000000]
Thanks
Zhijian
Powered by blists - more mailing lists