Messages in this thread Patch in this message | | | Subject | Re: AMD boot woe due to "x86/mm: Cleanup pgprot_4k_2_large() and pgprot_large_2_4k()" | From | Qian Cai <> | Date | Wed, 22 Apr 2020 17:32:00 -0400 |
| |
> On Apr 22, 2020, at 1:01 PM, Christoph Hellwig <hch@lst.de> wrote: > > On Wed, Apr 22, 2020 at 11:55:54AM -0400, Qian Cai wrote: >> Reverted the linux-next commit and its dependency, >> >> a85573f7e741 ("x86/mm: Unexport __cachemode2pte_tbl”) >> 9e294786c89a (“x86/mm: Cleanup pgprot_4k_2_large() and pgprot_large_2_4k()”) >> >> fixed crashes or hard reset on AMD machines during boot that have been flagged by >> KASAN in different forms indicating some sort of memory corruption with this config, > > Interesting. Your config seems to boot fine in my VM until the point > where the lack of virtio-blk support stops it from mounting the root > file system. > > Looking at the patch I found one bug, although that should not affect > your config (it should use the pgprotval_t type), and one difference > that could affect code generation, although I prefer the new version > (use of __pgprot vs a local variable + pgprot_val()). > > Two patches attached, can you try them? > <0001-x86-Use-pgprotval_t-in-protval_4k_2_large-and-pgprot.patch><0002-foo.patch>
This fixed the sucker,
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index edf9cea4871f..c54d1d0a8e3b 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -708,7 +708,7 @@ int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot) set_pte((pte_t *)pud, pfn_pte( (u64)addr >> PAGE_SHIFT, - __pgprot(protval_4k_2_large(pgprot_val(prot) | _PAGE_PSE)))); + __pgprot(protval_4k_2_large(pgprot_val(prot)) | _PAGE_PSE))); return 1; }
| |