[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/4] mc146818rtc: Make PF independent of PIE
From: |
Jason Thorpe |
Subject: |
Re: [PATCH 1/4] mc146818rtc: Make PF independent of PIE |
Date: |
Wed, 16 Jun 2021 10:34:47 -0700 |
> On Jun 14, 2021, at 9:17 PM, Richard Henderson <richard.henderson@linaro.org>
> wrote:
>
> Cc: paolo and mst
>
> On 6/13/21 2:15 PM, Jason Thorpe wrote:
>> Make the PF flag behave like real hardware by always running the
>> periodic timer without regard to the setting of the PIE bit, so
>> that the PF will be set when the period expires even if an interrupt
>> will not be raised. This behavior is documented on page 16 of the
>> MC146818A advance information datasheet.
>> Signed-off-by: Jason Thorpe <thorpej@me.com>
>> ---
>> hw/rtc/mc146818rtc.c | 4 ----
>> 1 file changed, 4 deletions(-)
>> diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c
>> index 4fbafddb22..366b8f13de 100644
>> --- a/hw/rtc/mc146818rtc.c
>> +++ b/hw/rtc/mc146818rtc.c
>> @@ -155,10 +155,6 @@ static uint32_t rtc_periodic_clock_ticks(RTCState *s)
>> {
>> int period_code;
>> - if (!(s->cmos_data[RTC_REG_B] & REG_B_PIE)) {
>> - return 0;
>> - }
>
> This looks correct, but I don't know enough about this device.
Quoting the data sheet here, for context:
<quote>
PF - The periodic interrupt flag (PF) is a read-only bit which is set to a "1"
when a particular edge is detected on the selected tap of the divider chain.
The RS3 to RS0 bits establish the periodic rate. PF is set to "1" independent
of the state of the PIE bit. PF initiates an ~IRQ signal and sets the IRQF bit
when PIE is also a "1". The PF bit is cleared by a ~RESET or a software read
of Register C.
</quote>
This is why my patch always runs the timer, and does not suppress it if PF is
already set; real hardware will always latch PF at regular intervals
irrespective of when software reads Register C.
-- thorpej
[PATCH 2/4] alpha: Set minimum PCI device ID to 1 to match Clipper IRQ mappings., Jason Thorpe, 2021/06/13
[PATCH 3/4] alpha: Provide a PCI-ISA bridge device node for guest OS's that expect it, Jason Thorpe, 2021/06/13
[PATCH 4/4] alpha: Provide console information to the PALcode at start-up., Jason Thorpe, 2021/06/13