Home
Workboot General Questions
Work Boot Brands Questions
Safety Work Boot Questions
Construction Jobs By Location
Jobs In Construction Questions
Construction Employment Questions
Hardhat General Questions
Site Map
 
 
   
Double H Work Boot, Early USB debug port and i386 boot cleanups

Question:
Modern hardware relies primarily on memory mapped I/O which is typically at addresses that are not mapped by the kernels initial page tables, which makes using them currently unusable for early debugging print support.

So this patch set digs in and fixes the early page tables on both arch/i386 and arch/x86_64 so that set_fixmap works with our initial boot page tables. All that is needed is that we allocate preallocate the pte page that the fixmap entries live on.

On arch/i386 I accomplish this by ensuring the boot time page tables are in the native mode. Doing this provides an alternative and slightly more capable fix to Jeremy's problem of not having the initial memory mapping covering enough pages to identity map all of low memory. Because we are now updating the page table we are running on we add the mappings we need for the initial page table as we build the initial page table.

Since I was in there I kept cleaning up arch/i386/head.S. In particular I have gotten as far as removing the early cpuid, and have added a head32.S.


Answer:
This patch preallocates the intermediate page table entries so that all that is needed to setup a fixmap is to fill in the appropriate pte.

By doing this modern hardware that uses memory mapped access can be talked to early in boot through a fixmap.

Currently in head.S there are two ways we test to see if we are the boot cpu. By looking at %ebx and by looking at the static variable ready. When changing things around I have found that it gets tricky to preserve %ebx. So this patch just switches head.S over to the more reliable test of always using ready.

I am preparing to convert the boot time page table to the kernels native format. To achieve that I need to enable PAE. Enabling PSE and the no execute bit would not hurt. So this patch modifies the boot cpu path to execute all of the kernels enable code if and only if we have the proper bits set in mmu_cr4_features.

If we don't set the leaf page table entries it is quite possible that will inherit and incorrect page table entry from the initial boot page table setup in head.S. So we need to redo the effort here, so we pick up PSE, PGE and the like.

Hypervisors like Xen require that their page tables be read-only, which is slightly incompatible with our low identity mappings, however I discussed this with Jeremy he has modified the Xen early set_pte function to avoid problems in this area.

Andi I sent this once a part of the discussion on this issue so you may already have this patch in your queue.


What is Your answer?


 
| Home | Workboot General Questions | Work Boot Brands Questions | Safety Work Boot Questions | Construction Jobs By Location | Jobs In Construction Questions | Construction Employment Questions | Hardhat General Questions | Site Map |
Privacy Policy