public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [Patch] (big) real mode emulation - emulator_write_std
@ 2007-08-10 22:04 Nitin A Kamble
       [not found] ` <1186783440.6097.16.camel-mpPvwfgnXtFHIUuj5cj4Omt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Nitin A Kamble @ 2007-08-10 22:04 UTC (permalink / raw)
  To: Avi Kivity; +Cc: kvm-devel, Yu,  Wilfred


[-- Attachment #1.1.1.1: Type: text/plain, Size: 1212 bytes --]

Hi Avi,
  I have been collected quiet a few patches in my tree now. They are all
in dirty(style, debug) state. Now I started cleaning some of the code in
my tree, and cutting patches again. I plan to send you steady stream of
patches now. so you can expect lots of patches coming from me in coming
days now.

About the status of the big real mode; In my private tree I have evolved
the segment registers support for the emulator to next level now. I
think I can also cut that patch also and send it to you. now it is much
more complete than earlier. As of today the SuSe Linux 10.1 is
proceeding in the big-real mode into the int 10 call. that is with the
help emulation of about 20 new instructions, and also the infrastructure
support for those instructions.  Probably I should keep a count of
instructions emulated in the big real mode to gauge my progress. 

I am cutting my tree into simple patches, so it will be easy for you to
understand and apply/comment. 
    
Thanks & Regards,
Nitin 
Open Source Technology Center, Intel Corporation.
-------------------------------------------------------------------------
The mind is like a parachute; it works much better when it's open. 

[-- Attachment #1.1.1.2: Type: text/html, Size: 1856 bytes --]

[-- Attachment #1.1.2: emulator_write_std.patch --]
[-- Type: text/x-patch, Size: 1449 bytes --]

commit a757404387d3580f1a9dca86b2caf142103c6bdf
Author: Nitin A Kamble <nitin.a.kamble@intel.com>
Date:   Fri Aug 10 17:30:16 2007 -0700

    Implement the function emulator_write_std()
    
    Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>

diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index f7ff231..4a213e2 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -962,8 +962,35 @@ static int emulator_write_std(unsigned long addr,
 			      unsigned int bytes,
 			      struct kvm_vcpu *vcpu)
 {
-	pr_unimpl(vcpu, "emulator_write_std: addr %lx n %d\n", addr, bytes);
-	return X86EMUL_UNHANDLEABLE;
+	void *data = (void *) val;
+
+	while (bytes) {
+		gpa_t gpa;
+		unsigned offset = addr & (PAGE_SIZE-1);
+		unsigned tocopy = min(bytes, (unsigned)PAGE_SIZE - offset);
+		unsigned long pfn;
+		struct page *page;
+		void *page_virt;
+
+		gpa = vcpu->mmu.gva_to_gpa(vcpu, addr);
+		if (gpa == UNMAPPED_GVA)
+			return X86EMUL_PROPAGATE_FAULT;
+		pfn = gpa >> PAGE_SHIFT;
+		page = gfn_to_page(vcpu->kvm, pfn);
+		if (!page)
+			return X86EMUL_UNHANDLEABLE;
+		page_virt = kmap_atomic(page, KM_USER0);
+
+		memcpy(page_virt + offset, data, tocopy);
+
+		kunmap_atomic(page_virt, KM_USER0);
+
+		bytes -= tocopy;
+		data += tocopy;
+		addr += tocopy;
+	}
+
+	return X86EMUL_CONTINUE;
 }
 
 static struct kvm_io_device *vcpu_find_mmio_dev(struct kvm_vcpu *vcpu,

[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

[-- Attachment #2: Type: text/plain, Size: 315 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/

[-- Attachment #3: Type: text/plain, Size: 186 bytes --]

_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/kvm-devel

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-08-13 23:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-10 22:04 [Patch] (big) real mode emulation - emulator_write_std Nitin A Kamble
     [not found] ` <1186783440.6097.16.camel-mpPvwfgnXtFHIUuj5cj4Omt3HXsI98Cx0E9HWUfgJXw@public.gmane.org>
2007-08-13  8:46   ` Avi Kivity
     [not found]     ` <46C01A54.4010606-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-13 23:00       ` Kamble, Nitin A

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox