diff options
author | kaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk> | 2003-02-19 20:26:12 +0000 |
---|---|---|
committer | kaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk> | 2003-02-19 20:26:12 +0000 |
commit | a2104601f3481d9b1253f2a28488ea93f64c2295 (patch) | |
tree | 497a4906ddf884619145699f77145943c27b94d3 | |
parent | 8d9db2d7e191309f809aaafeb588e6190d490c7d (diff) | |
download | xen-a2104601f3481d9b1253f2a28488ea93f64c2295.tar.gz xen-a2104601f3481d9b1253f2a28488ea93f64c2295.tar.bz2 xen-a2104601f3481d9b1253f2a28488ea93f64c2295.zip |
bitkeeper revision 1.72 (3e53e864n4XeM5UI6L2plu_QV-Asug)
init.c, xl_block.c:
Fix bugs in earlier blkdev checkin.
-rw-r--r-- | xenolinux-2.4.16-sparse/arch/xeno/drivers/block/xl_block.c | 2 | ||||
-rw-r--r-- | xenolinux-2.4.16-sparse/arch/xeno/mm/init.c | 16 |
2 files changed, 11 insertions, 7 deletions
diff --git a/xenolinux-2.4.16-sparse/arch/xeno/drivers/block/xl_block.c b/xenolinux-2.4.16-sparse/arch/xeno/drivers/block/xl_block.c index e9f1aed53c..7eb4d9d2ec 100644 --- a/xenolinux-2.4.16-sparse/arch/xeno/drivers/block/xl_block.c +++ b/xenolinux-2.4.16-sparse/arch/xeno/drivers/block/xl_block.c @@ -410,7 +410,7 @@ int __init xlblk_init(void) int loop, error, result; /* This mapping was created early at boot time. */ - blk_ring = (blk_ring_t *)FIX_BLKRING_BASE; + blk_ring = (blk_ring_t *)fix_to_virt(FIX_BLKRING_BASE); blk_ring->req_prod = blk_ring->req_cons = 0; blk_ring->resp_prod = blk_ring->resp_cons = 0; diff --git a/xenolinux-2.4.16-sparse/arch/xeno/mm/init.c b/xenolinux-2.4.16-sparse/arch/xeno/mm/init.c index ac2019910e..71b22ddcac 100644 --- a/xenolinux-2.4.16-sparse/arch/xeno/mm/init.c +++ b/xenolinux-2.4.16-sparse/arch/xeno/mm/init.c @@ -141,9 +141,9 @@ void __set_fixmap (enum fixed_addresses idx, unsigned long phys, static void __init fixrange_init (unsigned long start, unsigned long end, pgd_t *pgd_base) { - pgd_t *pgd; - pmd_t *pmd; - pte_t *pte; + pgd_t *pgd, *kpgd; + pmd_t *pmd, *kpmd; + pte_t *pte, *kpte; int i, j; unsigned long vaddr; @@ -157,9 +157,13 @@ static void __init fixrange_init (unsigned long start, for (; (j < PTRS_PER_PMD) && (vaddr != end); pmd++, j++) { if (pmd_none(*pmd)) { pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE); + clear_page(pte); + kpgd = pgd_offset_k((unsigned long)pte); + kpmd = pmd_offset(kpgd, (unsigned long)pte); + kpte = pte_offset(kpmd, (unsigned long)pte); + queue_l1_entry_update(__pa(kpte), + (*(unsigned long *)kpte)&~_PAGE_RW); set_pmd(pmd, __pmd(_KERNPG_TABLE + __pa(pte))); - if (pte != pte_offset(pmd, 0)) - BUG(); } vaddr += PMD_SIZE; } @@ -195,7 +199,7 @@ void __init paging_init(void) * mappings will be set by set_fixmap(): */ vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK; - fixrange_init(vaddr, 0, init_mm.pgd); + fixrange_init(vaddr, HYPERVISOR_VIRT_START, init_mm.pgd); /* * XXX We do this conversion early, so that all other page tables |