[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] apic: Report current_count via 'info lapic'
From: |
Jan Kiszka |
Subject: |
Re: [PATCH] apic: Report current_count via 'info lapic' |
Date: |
Fri, 7 Feb 2020 07:41:02 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
On 06.02.20 23:36, Philippe Mathieu-Daudé wrote:
> On 2/6/20 8:50 PM, Jan Kiszka wrote:
>> From: Jan Kiszka <address@hidden>
>>
>> This is helpful when debugging stuck guest timers.
>>
>> As we need apic_get_current_count for that, and it is really not
>> emulation specific, move it to apic_common.c and export it.
>>
>> Signed-off-by: Jan Kiszka <address@hidden>
>> ---
>> hw/intc/apic.c | 18 ------------------
>> hw/intc/apic_common.c | 18 ++++++++++++++++++
>> include/hw/i386/apic_internal.h | 1 +
>> target/i386/helper.c | 5 +++--
>> 4 files changed, 22 insertions(+), 20 deletions(-)
>>
>> diff --git a/hw/intc/apic.c b/hw/intc/apic.c
>> index bd40467965..f2207d0ace 100644
>> --- a/hw/intc/apic.c
>> +++ b/hw/intc/apic.c
>> @@ -615,24 +615,6 @@ int apic_accept_pic_intr(DeviceState *dev)
>> return 0;
>> }
>> -static uint32_t apic_get_current_count(APICCommonState *s)
>> -{
>> - int64_t d;
>> - uint32_t val;
>> - d = (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) -
>> s->initial_count_load_time) >>
>> - s->count_shift;
>> - if (s->lvt[APIC_LVT_TIMER] & APIC_LVT_TIMER_PERIODIC) {
>> - /* periodic */
>> - val = s->initial_count - (d % ((uint64_t)s->initial_count + 1));
>> - } else {
>> - if (d >= s->initial_count)
>> - val = 0;
>> - else
>> - val = s->initial_count - d;
>> - }
>> - return val;
>> -}
>> -
>> static void apic_timer_update(APICCommonState *s, int64_t current_time)
>> {
>> if (apic_next_timer(s, current_time)) {
>> diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
>> index 9ec0f2deb2..6f4e877878 100644
>> --- a/hw/intc/apic_common.c
>> +++ b/hw/intc/apic_common.c
>> @@ -189,6 +189,24 @@ bool apic_next_timer(APICCommonState *s, int64_t
>> current_time)
>> return true;
>> }
>> +uint32_t apic_get_current_count(APICCommonState *s)
>> +{
>> + int64_t d;
>> + uint32_t val;
>> + d = (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) -
>> s->initial_count_load_time) >>
>> + s->count_shift;
>> + if (s->lvt[APIC_LVT_TIMER] & APIC_LVT_TIMER_PERIODIC) {
>> + /* periodic */
>> + val = s->initial_count - (d % ((uint64_t)s->initial_count + 1));
>> + } else {
>> + if (d >= s->initial_count)
>> + val = 0;
>> + else
>> + val = s->initial_count - d;
>
> Using QEMU style if () {} else {}:
Yeah, that happens when you move old code - will address.
> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Thanks,
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux