Il 21/07/2014 13:37, Nadav Amit ha scritto:
> +int kvm_exception_type(unsigned int nr)

The manual calls this the exception class.

Please open code this as an if like this

        int mask;

        /* This should never happen, right? */
        if (WARN_ON(nr > 31))
                return EXCPT_INTERRUPT;

        mask = 1 << nr;
        if (mask &
            ((1 << DB_VECTOR) | (1 << BP_VECTOR) |
             (1 << OF_VECTOR)))
                return EXCPT_TRAP;

        ...

        /*
         * If it is reserved, assume it is a fault and
         * set RF.
         */
        return EXCPT_FAULT;

> +     case VE_VECTOR:
> +             return EXCPT_FAULT;
> +     case DB_VECTOR:
> +             return EXCPT_FAULT_OR_TRAP;

It is only a fault for instruction fetch breakpoints.  You can modify
kvm_vcpu_check_breakpoint to set RF, add a comment here that fault
handling is done elsewhere, and return EXCPT_TRAP.

Paolo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to