Message ID | 20200211035552.5686-1-lokeshvutla@ti.com |
---|---|
State | Accepted |
Commit | e8d0d530404e5d0546c37992cfeb9d3d3187dd94 |
Headers | show |
Series | ARM: keystone2: enable initrd fixup for LPAE addressing | expand |
On Tue, Feb 11, 2020 at 09:25:52AM +0530, Lokesh Vutla wrote: > From: Tero Kristo <t-kristo at ti.com> > > Keystone2 u-boot loads the initrd image into non-LPAE addressed memory > but linux kernel is running in LPAE. This causes a conflict as kernel > detects that non-memory address is passed and kernel ignores initrd. > There is an existing fixup logic to modify the address in the proper > configuration, but this is disabled at the moment. Enable the fixup > by setting the env variable for this so that initrd can be used > properly. > > Signed-off-by: Tero Kristo <t-kristo at ti.com> > Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com> > --- > - This fixes boot on k2g platforms. > > include/configs/ti_armv7_keystone2.h | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h > index ba12428dbe..1b014c1022 100644 > --- a/include/configs/ti_armv7_keystone2.h > +++ b/include/configs/ti_armv7_keystone2.h > @@ -213,6 +213,7 @@ > "tftp_root=/\0" \ > "nfs_root=/export\0" \ > "mem_lpae=1\0" \ > + "uinitrd_fixup=1\0" \ > "addr_ubi=0x82000000\0" \ > "addr_secdb_key=0xc000000\0" \ > "name_kern=zImage\0" \ OK, hold up. Why is any of this code needed and can't the normal bootm_size / bootm_low / etc as documented in the README enforce these constraints? Thanks!
Hi Tom, On 11/02/20 8:31 PM, Tom Rini wrote: > On Tue, Feb 11, 2020 at 09:25:52AM +0530, Lokesh Vutla wrote: > >> From: Tero Kristo <t-kristo at ti.com> >> >> Keystone2 u-boot loads the initrd image into non-LPAE addressed memory >> but linux kernel is running in LPAE. This causes a conflict as kernel >> detects that non-memory address is passed and kernel ignores initrd. >> There is an existing fixup logic to modify the address in the proper >> configuration, but this is disabled at the moment. Enable the fixup >> by setting the env variable for this so that initrd can be used >> properly. >> >> Signed-off-by: Tero Kristo <t-kristo at ti.com> >> Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com> >> --- >> - This fixes boot on k2g platforms. >> >> include/configs/ti_armv7_keystone2.h | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h >> index ba12428dbe..1b014c1022 100644 >> --- a/include/configs/ti_armv7_keystone2.h >> +++ b/include/configs/ti_armv7_keystone2.h >> @@ -213,6 +213,7 @@ >> "tftp_root=/\0" \ >> "nfs_root=/export\0" \ >> "mem_lpae=1\0" \ >> + "uinitrd_fixup=1\0" \ >> "addr_ubi=0x82000000\0" \ >> "addr_secdb_key=0xc000000\0" \ >> "name_kern=zImage\0" \ > > OK, hold up. Why is any of this code needed and can't the normal > bootm_size / bootm_low / etc as documented in the README enforce these > constraints? Thanks! > K2 platforms has a special scenario. DDR view for U-Boot is starting from 0x8000_0000 - 0xFFFF_FFFF. Wheres as for kernel, the DDR view gets shifted to 0x8_0000_0000 - 0x8_7FFF_FFFF. This is a hardware limitation to ensure coherency among different master in the SoC. In kernel all the page tables are fixed up by the Kconfig CONFIG_ARM_PV_FIXUP. But the expectation is to pass the right information in DTB. U-Boot already fixes up the memory address nodes in ft_board_setup() but missed updating the linux-initrd. This patch enables the fixup for initrd. Thanks and regards, Lokesh
On Wed, Feb 12, 2020 at 09:37:46AM +0530, Lokesh Vutla wrote: > Hi Tom, > > On 11/02/20 8:31 PM, Tom Rini wrote: > > On Tue, Feb 11, 2020 at 09:25:52AM +0530, Lokesh Vutla wrote: > > > >> From: Tero Kristo <t-kristo at ti.com> > >> > >> Keystone2 u-boot loads the initrd image into non-LPAE addressed memory > >> but linux kernel is running in LPAE. This causes a conflict as kernel > >> detects that non-memory address is passed and kernel ignores initrd. > >> There is an existing fixup logic to modify the address in the proper > >> configuration, but this is disabled at the moment. Enable the fixup > >> by setting the env variable for this so that initrd can be used > >> properly. > >> > >> Signed-off-by: Tero Kristo <t-kristo at ti.com> > >> Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com> > >> --- > >> - This fixes boot on k2g platforms. > >> > >> include/configs/ti_armv7_keystone2.h | 1 + > >> 1 file changed, 1 insertion(+) > >> > >> diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h > >> index ba12428dbe..1b014c1022 100644 > >> --- a/include/configs/ti_armv7_keystone2.h > >> +++ b/include/configs/ti_armv7_keystone2.h > >> @@ -213,6 +213,7 @@ > >> "tftp_root=/\0" \ > >> "nfs_root=/export\0" \ > >> "mem_lpae=1\0" \ > >> + "uinitrd_fixup=1\0" \ > >> "addr_ubi=0x82000000\0" \ > >> "addr_secdb_key=0xc000000\0" \ > >> "name_kern=zImage\0" \ > > > > OK, hold up. Why is any of this code needed and can't the normal > > bootm_size / bootm_low / etc as documented in the README enforce these > > constraints? Thanks! > > > > K2 platforms has a special scenario. DDR view for U-Boot is starting from > 0x8000_0000 - 0xFFFF_FFFF. Wheres as for kernel, the DDR view gets shifted to > 0x8_0000_0000 - 0x8_7FFF_FFFF. This is a hardware limitation to ensure coherency > among different master in the SoC. In kernel all the page tables are fixed up by > the Kconfig CONFIG_ARM_PV_FIXUP. But the expectation is to pass the right > information in DTB. U-Boot already fixes up the memory address nodes in > ft_board_setup() but missed updating the linux-initrd. This patch enables the > fixup for initrd. OK, thanks.
On 11/02/20 9:25 AM, Lokesh Vutla wrote: > From: Tero Kristo <t-kristo at ti.com> > > Keystone2 u-boot loads the initrd image into non-LPAE addressed memory > but linux kernel is running in LPAE. This causes a conflict as kernel > detects that non-memory address is passed and kernel ignores initrd. > There is an existing fixup logic to modify the address in the proper > configuration, but this is disabled at the moment. Enable the fixup > by setting the env variable for this so that initrd can be used > properly. > > Signed-off-by: Tero Kristo <t-kristo at ti.com> > Signed-off-by: Lokesh Vutla <lokeshvutla at ti.com> Merged into u-boot-ti. Thanks and regards, Lokesh
diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h index ba12428dbe..1b014c1022 100644 --- a/include/configs/ti_armv7_keystone2.h +++ b/include/configs/ti_armv7_keystone2.h @@ -213,6 +213,7 @@ "tftp_root=/\0" \ "nfs_root=/export\0" \ "mem_lpae=1\0" \ + "uinitrd_fixup=1\0" \ "addr_ubi=0x82000000\0" \ "addr_secdb_key=0xc000000\0" \ "name_kern=zImage\0" \