[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 1/2] x86: restore pv_rtc_handler() invocation
On 15.07.2020 12:01, Paul Durrant wrote: >> -----Original Message----- >> From: Jan Beulich <jbeulich@xxxxxxxx> >> Sent: 15 July 2020 10:47 >> To: xen-devel@xxxxxxxxxxxxxxxxxxxx >> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>; Paul Durrant <paul@xxxxxxx>; >> Wei Liu <wl@xxxxxxx>; >> Roger Pau Monné <roger.pau@xxxxxxxxxx> >> Subject: [PATCH v2 1/2] x86: restore pv_rtc_handler() invocation >> >> This was lost when making the logic accessible to PVH Dom0. >> >> Fixes: 835d8d69d96a ("x86/rtc: provide mediated access to RTC for PVH dom0") >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> >> >> --- a/xen/arch/x86/time.c >> +++ b/xen/arch/x86/time.c >> @@ -1160,6 +1160,10 @@ void rtc_guest_write(unsigned int port, >> case RTC_PORT(1): >> if ( !ioports_access_permitted(currd, RTC_PORT(0), RTC_PORT(1)) ) >> break; >> + >> + if ( pv_rtc_handler ) >> + pv_rtc_handler(currd->arch.cmos_idx & 0x7f, data); >> + > > This appears to be semantically slightly different to the old code in that it > is only done for a write to RC_PORT(1), whereas it would have been done on a > write to either RTC_POR(0) or RTC_PORT(1) before. Is that of any concern? The old code was (quoting plain 4.13.1) else if ( port == RTC_PORT(0) ) { currd->arch.cmos_idx = data; } else if ( (port == RTC_PORT(1)) && ioports_access_permitted(currd, RTC_PORT(0), RTC_PORT(1)) ) { unsigned long flags; if ( pv_rtc_handler ) pv_rtc_handler(currd->arch.cmos_idx & 0x7f, data); spin_lock_irqsave(&rtc_lock, flags); outb(currd->arch.cmos_idx & 0x7f, RTC_PORT(0)); outb(data, RTC_PORT(1)); spin_unlock_irqrestore(&rtc_lock, flags); } which I think similarly invoked the hook for RTC_PORT(1) only. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |