From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:38951) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RCqYR-0002dB-6j for qemu-devel@nongnu.org; Sun, 09 Oct 2011 06:24:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RCqYO-0003ok-WE for qemu-devel@nongnu.org; Sun, 09 Oct 2011 06:24:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:22749) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RCqYO-0003oD-OM for qemu-devel@nongnu.org; Sun, 09 Oct 2011 06:24:20 -0400 Message-ID: <4E91764F.4040109@redhat.com> Date: Sun, 09 Oct 2011 12:24:15 +0200 From: Avi Kivity MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] apic: test tsc deadline timer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Liu, Jinsong" Cc: Marcelo Tosatti , "qemu-devel@nongnu.org" , "kvm@vger.kernel.org" On 10/09/2011 12:05 PM, Liu, Jinsong wrote: > Marcelo, > > I add test case for tsc deadline timer https://github.com/avikivity/kvm-unit-tests, as attached. > > According to the kvm-unit-tests README, I try to run > qemu-system-x86_64 -device testdev,chardev=testlog -chardev file,id=testlog,path=apic.out -kernel ./x86/apic.flat > but get nothing from the testlog 'apic.out' > (BTW, at kvm side I did observe the expected tsc deadline timer action) > > I also try to run the README example > qemu-system-x86_64 -device testdev,chardev=testlog -chardev file,id=testlog,path=msr.out -kernel ./x86/msr.flat > but still get nothing from 'msr.out' > > Do I miss something? how can I get test log? This was recently changed, it now outputs to the serial port. Try qemu-system-x86_64 -device testdev,chardev=testlog -chardev file,id=testlog,path=apic.out -serial stdio -kernel ./x86/apic.flat > + > +static void start_tsc_deadline_timer(void) > +{ > + unsigned a, d; > + > + handle_irq(TSC_DEADLINE_TIMER_VECTOR, tsc_deadline_timer_isr); > + irq_enable(); > + > + asm ("rdmsr" : "=a"(a), "=d"(d) : "c"(MSR_IA32_TSC)); > + asm ("wrmsr" : : "a"(a), "d"(d), "c"(MSR_IA32_TSCDEADLINE)); > + asm volatile ("nop"); > + report("tsc deadline timer", tdt_count == 1); > +} Please use rdmsr()/wrmsr() from processor.h. > + > +static int enable_tsc_deadline_timer(void) > +{ > + unsigned a, b, c, d; > + uint32_t lvtt; > + > + asm ("cpuid" : "=a"(a), "=b"(b), "=c"(c), "=d"(d) : "0"(1)); cpuid()... > + > + if (c& (1<< 24)) { > + lvtt = TSC_DEADLINE_TIMER_MODE | TSC_DEADLINE_TIMER_VECTOR; > + apic_write(APIC_LVTT, lvtt); > + start_tsc_deadline_timer(); > + return 1; > + } else { > + return 0; > + } > +} > + > +static void test_tsc_deadline_timer(void) > +{ > + if(enable_tsc_deadline_timer()) { > + printf("tsc deadline timer enabled\n"); > + } else { > + printf("tsc deadline timer not detected\n"); > + } > +} > + > #define MSR_APIC_BASE 0x0000001b > > void test_enable_x2apic(void) > @@ -291,6 +342,8 @@ int main() > test_sti_nmi(); > test_multiple_nmi(); > > + test_tsc_deadline_timer(); > + > printf("\nsummary: %d tests, %d failures\n", g_tests, g_fail); > > return g_fail != 0; -- error compiling committee.c: too many arguments to function