upstream u-boot with additional patches for our devices/boards:
https://lists.denx.de/pipermail/u-boot/2017-March/282789.html (AXP crashes) ;
Gbit ethernet patch for some LIME2 revisions ;
with SPI flash support
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1.5 KiB
27 lines
1.5 KiB
12 years ago
|
Spin table in cache
|
||
|
=====================================
|
||
|
As specified by ePAPR v1.1, the spin table needs to be in cached memory. After
|
||
|
DDR is initialized and U-boot relocates itself into DDR, the spin table is
|
||
|
accessible for core 0. It is part of release.S, within 4KB range after
|
||
|
__secondary_start_page. For other cores to use the spin table, the booting
|
||
|
process is described below:
|
||
|
|
||
|
Core 0 sets up the reset page on the top 4K of memory (or 4GB if total memory
|
||
|
is more than 4GB), and creates a TLB to map it to 0xffff_f000, regardless of
|
||
|
the physical address of this page, with WIMGE=0b01010. Core 0 also enables boot
|
||
|
page translation for secondary cores to use this page of memory. Then 4KB
|
||
|
memory is copied from __secondary_start_page to the boot page, after flusing
|
||
|
cache because this page is mapped as normal DDR. Before copying the reset page,
|
||
|
core 0 puts the physical address of the spin table (which is in release.S and
|
||
|
relocated to the top of mapped memory) into a variable __spin_table_addr so
|
||
|
that secondary cores can see it.
|
||
|
|
||
|
When secondary cores boot up from 0xffff_f000 page, they only have one default
|
||
|
TLB. While booting, they set up another TLB in AS=1 space and jump into
|
||
|
the new space. The new TLB covers the physical address of the spin table page,
|
||
|
with WIMGE =0b00100. Now secondary cores can keep polling the spin table
|
||
|
without stress DDR bus because both the code and the spin table is in cache.
|
||
|
|
||
|
For the above to work, DDR has to set the 'M' bit of WIMGE, in order to keep
|
||
|
cache coherence.
|