|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 06/19] x86/pv: Implement pv_inject_{event, page_fault, hw_exception}()
>>> On 28.11.16 at 12:13, <andrew.cooper3@xxxxxxxxxx> wrote:
> The existing propagate_page_fault() is fairly similar to
> pv_inject_page_fault(), although it has a return value. Only a single caller
> makes use of the return value, and non-NULL is only returned if the passed cr2
> is non-canonical. Opencode this single case in
> handle_gdt_ldt_mapping_fault(), allowing propagate_page_fault() to become
> void.
I can only say that back then it was quite intentional to not open
code this in the caller, no matter that it was (and still is) just one.
> if ( unlikely(null_trap_bounce(v, tb)) )
> - gprintk(XENLOG_WARNING,
> - "Unhandled %s fault/trap [#%d, ec=%04x]\n",
> - trapstr(trapnr), trapnr, regs->error_code);
> + {
> + if ( vector == TRAP_page_fault )
> + {
> + printk("%pv: unhandled page fault (ec=%04X)\n", v, error_code);
> + show_page_walk(event->cr2);
> +
> + if ( unlikely(error_code & PFEC_reserved_bit) )
> + reserved_bit_page_fault(event->cr2, regs);
I think you want to move the show_page_walk() into an else here,
to avoid logging two of them. But then again - why do you move
this behind the null_trap_bounce() check? It had been logged
independently in the original code, and for (imo) a good reason
(reserved bit faults are always a sign of a hypervisor problem
after all).
> + }
> + else
> + gprintk(XENLOG_WARNING,
> + "Unhandled %s fault/trap [#%d, ec=%04x]\n",
> + trapstr(vector), vector, error_code);
Which tells us that we need to finally get our log level handling
straightened, to avoid inconsistencies like the one here comparing
with the code a few lines up.
> +static inline void do_guest_trap(unsigned int trapnr,
> + const struct cpu_user_regs *regs)
> +{
> + const struct x86_event event = {
I don't mind the const, but I don't think it's very useful here.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |