[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] domU panic on nested call to arch_enter_lazy_mmu_mode()

  • To: xen-devel <xen-devel@xxxxxxxxxxxxx>
  • From: Andrew Jones <drjones@xxxxxxxxxx>
  • Date: Wed, 10 Apr 2013 11:35:35 -0400 (EDT)
  • Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
  • Delivery-date: Wed, 10 Apr 2013 15:35:52 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>
  • Thread-index: 6zElBlVGsXyiuACG5wImeuQPXEapww==
  • Thread-topic: domU panic on nested call to arch_enter_lazy_mmu_mode()

Hi all,

A couple years ago a thread[1] popped up here for a bug report that
Jeremy followed up to with this patch[2]. That patch was never
committed though (likely because the issue was difficult to
reproduce/test). We've got a report now of the same issue for the
rhel6 kernel running on EC2. It's pretty certain that it's the same,
because the reproducer steps[3] given would certainly generate the
same call sequences shown in [1], and applying the proposed patch[2]
to the rhel6 kernel fixes it.

Now, while the grant table code has changed some between what rhel6
has and recent kernels, I believe the issue should still be present
with recent kernels. However, we attempted to reproduce using a
Fedora18 kernel (>3.8) and could not. So I'm writing to see if I'm
missing something in my analysis - meaning upstream is no longer at
risk of hitting this bug, and/or if Jeremy's proposed patch was
rejected for other reasons than not being testable (or just
forgotten). If not, then I'd suggest we repost it.


[1] http://lists.xen.org/archives/html/xen-devel/2010-12/msg00440.html
[2] http://lists.xen.org/archives/html/xen-devel/2010-12/msg00505.html
[3] Reproducer steps
1. Start a instance which is a c1.xlarge of Amazon EC2 Instance type.
   (c1.xlarge has 8 cores)

2. create 7 file systems(ext3) on top of Amazon EBS volumes 

3. mount 7 file sytemes you created

4. For increasing page table operations, create a following program

#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(void)
        int status;
        pid_t pid; 
        for (;;) {
                pid = fork();
                if (pid == 0) {
                        return 0;

5. run the program  pinning CPU0

# gcc fork.c
# taskset -c 0 ./a.out  

6. For using grant table, execute simultaneous write operation to 7 EBS volumes.
  ( c1.xlarge can use 8CPU so execute simultaneous write to CPU1-CPU7 except 
CPU0 )

For instance:
for i in `seq 1 7`;
        taskset -c $i dd if=/dev/zero of=/mnt/$i/testfile bs=10M count=10000 
oflag=direct &

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.