diff --git a/a.out b/a.out deleted file mode 100755 index f7c6218..0000000 Binary files a/a.out and /dev/null differ diff --git a/a.p b/a.p deleted file mode 100644 index 20dda7f..0000000 --- a/a.p +++ /dev/null @@ -1,164 +0,0 @@ -diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h -index 41c4be0..6a312a3 100644 ---- a/arch/x86/include/asm/xen/hypercall.h -+++ b/arch/x86/include/asm/xen/hypercall.h -@@ -286,6 +286,11 @@ HYPERVISOR_fpu_taskswitch(int set) - return _hypercall1(int, fpu_taskswitch, set); - } - -+static inline unsigned long -+HYPERVISOR_alloc_hugepage(int set) -+{ -+ return _hypercall1(unsigned long,alloc_hugepage, set); -+} - static inline int - HYPERVISOR_sched_op(int cmd, void *arg) - { -diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c -index 32a1c65..181cefd 100644 ---- a/arch/x86/xen/mmu.c -+++ b/arch/x86/xen/mmu.c -@@ -241,6 +241,7 @@ static void p2m_top_init(unsigned long ***top) - top[i] = p2m_mid_missing; - } - -+ - static void p2m_top_mfn_init(unsigned long *top) - { - unsigned i; -@@ -516,6 +517,7 @@ static bool alloc_p2m(unsigned long pfn) - } - - /* Try to install p2m mapping; fail if intermediate bits missing */ -+ - bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn) - { - unsigned topidx, mididx, idx; -@@ -537,6 +539,15 @@ bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn) - return true; - } - -+//a2k2: -+static void xen_set_hugemfn(unsigned long pfn){ -+ unsigned long mfn; -+ printk("\nak2k2: Before hyper\n"); -+ mfn=HYPERVISOR_alloc_hugepage(1); -+ printk("\nak2k2: After hyper\n"); -+ -+ __set_phys_to_machine(pfn,mfn); -+} - bool set_phys_to_machine(unsigned long pfn, unsigned long mfn) - { - if (unlikely(xen_feature(XENFEAT_auto_translated_physmap))) { -diff --git a/arch/x86/xen/mmu.h b/arch/x86/xen/mmu.h -index 537bb9a..79040a4 100644 ---- a/arch/x86/xen/mmu.h -+++ b/arch/x86/xen/mmu.h -@@ -56,6 +56,7 @@ pte_t xen_ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t - void xen_ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t pte); - -+ - unsigned long xen_read_cr2_direct(void); - - extern void xen_init_mmu_ops(void); -diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c -index 158cdd1..ce8f60d 100644 ---- a/drivers/xen/balloon.c -+++ b/drivers/xen/balloon.c -@@ -245,8 +245,9 @@ static int increase_reservation(unsigned long nr_pages) - - if (nr_pages > ARRAY_SIZE(frame_list)) - nr_pages = ARRAY_SIZE(frame_list); -- -+ printk("\na2k2:inc first page\n"); - page = balloon_first_page(); -+ printk("\na2k2:inc after first page\n"); - for (i = 0; i < nr_pages; i++) { - BUG_ON(page == NULL); - frame_list[i] = page_to_pfn(page); -@@ -308,6 +309,7 @@ static int decrease_reservation(unsigned long nr_pages) - .domid = DOMID_SELF - }; - -+ printk("\na2k2:dec first page\n"); - if (nr_pages > ARRAY_SIZE(frame_list)) - nr_pages = ARRAY_SIZE(frame_list); - -@@ -364,7 +366,7 @@ static int decrease_reservation(unsigned long nr_pages) - reservation.extent_order = balloon_order; - ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation); - BUG_ON(ret != nr_pages); -- -+ printk("\na2k2:dec after hyper call\n"); - return need_sleep; - } - -diff --git a/fs/exec.c b/fs/exec.c -index a0410eb..e2929e7 100644 ---- a/fs/exec.c -+++ b/fs/exec.c -@@ -1876,7 +1876,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) - * core_pattern process dies. - */ - printk(KERN_WARNING -- "Process %d(%s) has RLIMIT_CORE set to 0\n", -+ "a2k2:Process %d(%s) has RLIMIT_CORE set to 0\n", - task_tgid_vnr(current), current->comm); - printk(KERN_WARNING "Aborting core\n"); - goto fail_unlock; -diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h -index 9ffaee0..f200a33 100644 ---- a/include/xen/interface/xen.h -+++ b/include/xen/interface/xen.h -@@ -58,7 +58,7 @@ - #define __HYPERVISOR_event_channel_op 32 - #define __HYPERVISOR_physdev_op 33 - #define __HYPERVISOR_hvm_op 34 -- -+#define __HYPERVISOR_alloc_hugepage 39 //a2k2 - /* Architecture-specific hypercall definitions. */ - #define __HYPERVISOR_arch_0 48 - #define __HYPERVISOR_arch_1 49 -diff --git a/mm/hugetlb.c b/mm/hugetlb.c -index f5a106e..0f11be1 100644 ---- a/mm/hugetlb.c -+++ b/mm/hugetlb.c -@@ -18,7 +18,6 @@ - #include - #include - #include -- - #include - #include - #include -@@ -69,6 +68,7 @@ struct file_region { - long to; - }; - -+ - static long region_add(struct list_head *head, long f, long t) - { - struct file_region *rg, *nrg, *trg; -@@ -455,7 +455,8 @@ static void enqueue_huge_page(struct hstate *h, struct page *page) - h->free_huge_pages++; - h->free_huge_pages_node[nid]++; - } -- -+//a2k2: -+extern void xen_set_hugemfn(unsigned long pfn); - static struct page *dequeue_huge_page_vma(struct hstate *h, - struct vm_area_struct *vma, - unsigned long address, int avoid_reserve) -@@ -499,7 +500,11 @@ static struct page *dequeue_huge_page_vma(struct hstate *h, - break; - } - } -+ printk("\nHello \n"); - mpol_cond_put(mpol); -+ //a2k2: -+ printk("\na2k2: %s \n",__FUNCTION__); -+ xen_set_hugemfn(page_to_pfn(page)); - return page; - } - diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h index 20c62f7..3202dcc 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -262,10 +262,8 @@ struct pv_mmu_ops { void (*release_pte)(unsigned long pfn); void (*release_pmd)(unsigned long pfn); void (*release_pud)(unsigned long pfn); - + /* Pagetable manipulation functions */ - //a2k2: - ///void (*xen_set_hugemfn)(unsigned long pfn); void (*set_pte)(pte_t *ptep, pte_t pteval); void (*set_pte_at)(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval); diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h index b26fbff..41c4be0 100644 --- a/arch/x86/include/asm/xen/hypercall.h +++ b/arch/x86/include/asm/xen/hypercall.h @@ -286,11 +286,6 @@ HYPERVISOR_fpu_taskswitch(int set) return _hypercall1(int, fpu_taskswitch, set); } -static inline unsigned long -HYPERVISOR_alloc_hugepage(int set,unsigned long *ptep,unsigned long pte) -{ - return _hypercall3(unsigned long,alloc_hugepage, set,ptep,pte); -} static inline int HYPERVISOR_sched_op(int cmd, void *arg) { diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 360ab32..32a1c65 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c @@ -241,7 +241,6 @@ static void p2m_top_init(unsigned long ***top) top[i] = p2m_mid_missing; } - static void p2m_top_mfn_init(unsigned long *top) { unsigned i; @@ -517,7 +516,6 @@ static bool alloc_p2m(unsigned long pfn) } /* Try to install p2m mapping; fail if intermediate bits missing */ - bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn) { unsigned topidx, mididx, idx; @@ -539,28 +537,6 @@ bool __set_phys_to_machine(unsigned long pfn, unsigned long mfn) return true; } -//a2k2: - -void xen_set_hugemfn(unsigned long pfn,pte_t *ptep, pte_t pte){ - unsigned long mfn;//,**ppp,*pt; - //pmd_t *pp,pte1; - //ppp=(unsigned long**)&pp; - //*ppp=ptep; - printk("ak2k2: Before hyper \n"); - pte.pte=HYPERVISOR_alloc_hugepage(3,(unsigned long *)ptep,(unsigned long)pte.pte); - mfn=(pte.pte >> 12) & 0x0ffffffffffff; - printk("MFN: %lx \n",mfn); - printk("ak2k2: After hyper \n"); - printk("a2k2:: %lx",get_phys_to_machine(pfn)); - //pt=(unsigned long*)&pte1; - //*pt=pte; - - if(mfn>0 && pfn > 0) - __set_phys_to_machine(pfn,mfn); - xen_set_pte(ptep,pte); - //xen_set_pmd(pp,pte1); - printk("pte=%lx\n",pte.pte); -} bool set_phys_to_machine(unsigned long pfn, unsigned long mfn) { if (unlikely(xen_feature(XENFEAT_auto_translated_physmap))) { @@ -2335,7 +2311,6 @@ static __init void xen_post_allocator_init(void) pv_mmu_ops.set_pte = xen_set_pte; pv_mmu_ops.set_pmd = xen_set_pmd; pv_mmu_ops.set_pud = xen_set_pud; -// pv_mmu_ops.set_xen_hugemfn=xen_set_hugemfn; #if PAGETABLE_LEVELS == 4 pv_mmu_ops.set_pgd = xen_set_pgd; #endif @@ -2396,7 +2371,7 @@ static const struct pv_mmu_ops xen_mmu_ops __initdata = { .set_pte = xen_set_pte_init, .set_pte_at = xen_set_pte_at, .set_pmd = xen_set_pmd_hyper, - //.set_xen_hugemfn=set_xen_hugemfn, + .ptep_modify_prot_start = __ptep_modify_prot_start, .ptep_modify_prot_commit = __ptep_modify_prot_commit, diff --git a/arch/x86/xen/mmu.h b/arch/x86/xen/mmu.h index 2066446..537bb9a 100644 --- a/arch/x86/xen/mmu.h +++ b/arch/x86/xen/mmu.h @@ -2,7 +2,7 @@ #include #include -#include + enum pt_level { PT_PGD, PT_PUD, @@ -56,7 +56,6 @@ pte_t xen_ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, pte_t void xen_ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte); - unsigned long xen_read_cr2_direct(void); extern void xen_init_mmu_ops(void); diff --git a/b.p b/b.p deleted file mode 100644 index e69de29..0000000 diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c index a2d4f30..158cdd1 100644 --- a/drivers/xen/balloon.c +++ b/drivers/xen/balloon.c @@ -245,6 +245,7 @@ static int increase_reservation(unsigned long nr_pages) if (nr_pages > ARRAY_SIZE(frame_list)) nr_pages = ARRAY_SIZE(frame_list); + page = balloon_first_page(); for (i = 0; i < nr_pages; i++) { BUG_ON(page == NULL); @@ -363,6 +364,7 @@ static int decrease_reservation(unsigned long nr_pages) reservation.extent_order = balloon_order; ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation); BUG_ON(ret != nr_pages); + return need_sleep; } diff --git a/fs/exec.c b/fs/exec.c index e2929e7..a0410eb 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1876,7 +1876,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs) * core_pattern process dies. */ printk(KERN_WARNING - "a2k2:Process %d(%s) has RLIMIT_CORE set to 0\n", + "Process %d(%s) has RLIMIT_CORE set to 0\n", task_tgid_vnr(current), current->comm); printk(KERN_WARNING "Aborting core\n"); goto fail_unlock; diff --git a/include/linux/myhuge.h b/include/linux/myhuge.h deleted file mode 100644 index be665ba..0000000 --- a/include/linux/myhuge.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef __MY_HUGE_H__ -#define __MY_HUGE_H__ -extern void xen_set_hugemfn(unsigned long pfn,pte_t *ptep, pte_t pte); - -#endif diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h index f200a33..9ffaee0 100644 --- a/include/xen/interface/xen.h +++ b/include/xen/interface/xen.h @@ -58,7 +58,7 @@ #define __HYPERVISOR_event_channel_op 32 #define __HYPERVISOR_physdev_op 33 #define __HYPERVISOR_hvm_op 34 -#define __HYPERVISOR_alloc_hugepage 39 //a2k2 + /* Architecture-specific hypercall definitions. */ #define __HYPERVISOR_arch_0 48 #define __HYPERVISOR_arch_1 49 diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 06ffe4a..f5a106e 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -18,14 +18,13 @@ #include #include #include + #include #include #include #include -#include #include "internal.h" -//#include "../include/asm-generic/page.h" const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL; static gfp_t htlb_alloc_mask = GFP_HIGHUSER; @@ -70,7 +69,6 @@ struct file_region { long to; }; - static long region_add(struct list_head *head, long f, long t) { struct file_region *rg, *nrg, *trg; @@ -457,8 +455,7 @@ static void enqueue_huge_page(struct hstate *h, struct page *page) h->free_huge_pages++; h->free_huge_pages_node[nid]++; } -//a2k2: -//extern void xen_set_hugemfn(unsigned long pfn); + static struct page *dequeue_huge_page_vma(struct hstate *h, struct vm_area_struct *vma, unsigned long address, int avoid_reserve) @@ -502,9 +499,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h, break; } } - mpol_cond_put(mpol); - //xen_set_hugemfn(page_to_pfn(page)); return page; } @@ -1100,7 +1095,6 @@ static void __init hugetlb_init_hstates(void) { struct hstate *h; - printk("\na2k2:%s\n",__FUNCTION__); for_each_hstate(h) { /* oversize hugepages were init'ed in early boot */ if (h->order < MAX_ORDER) @@ -1740,7 +1734,8 @@ static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page, pte_t entry; if (writable) { - entry =pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot))); + entry = + pte_mkwrite(pte_mkdirty(mk_pte(page, vma->vm_page_prot))); } else { entry = huge_pte_wrprotect(mk_pte(page, vma->vm_page_prot)); } @@ -2128,14 +2123,10 @@ retry: if (!huge_pte_none(huge_ptep_get(ptep))) goto backout; - printk("\na2k2:%s ,pte=%lu \n",__FUNCTION__,ptep->pte); new_pte = make_huge_pte(vma, page, ((vma->vm_flags & VM_WRITE) && (vma->vm_flags & VM_SHARED))); set_huge_pte_at(mm, address, ptep, new_pte); - printk("\na2k2:%s ,pte=%lx ,new_pte=%lx --11 \n",__FUNCTION__,ptep->pte,new_pte.pte); - xen_set_hugemfn(page_to_pfn(page),ptep,new_pte); - printk("\na2k2:%s ,pte=%lx ,new_pte=%lx \n",__FUNCTION__,ptep->pte,new_pte.pte); - + if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) { /* Optimization, do the COW without a second fault */ ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page); diff --git a/temp.c b/temp.c deleted file mode 100644 index ccd4c92..0000000 --- a/temp.c +++ /dev/null @@ -1,9 +0,0 @@ -#include -#define swap (x,y,z) (x t;t=y;y=z;z=t;) -main() -{ - -int a,b,c; - -swap(int,a,b); -}