From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5C41C4338F for ; Wed, 25 Aug 2021 06:56:20 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5D92A610FB for ; Wed, 25 Aug 2021 06:56:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5D92A610FB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ilande.co.uk Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:52762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mImpf-0007FG-AN for qemu-devel@archiver.kernel.org; Wed, 25 Aug 2021 02:56:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51364) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mImos-0006IA-Rr; Wed, 25 Aug 2021 02:55:30 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:46038 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mImoq-0002ZE-Tw; Wed, 25 Aug 2021 02:55:30 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=[192.168.50.176]) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mImoO-0006tg-Bl; Wed, 25 Aug 2021 07:55:05 +0100 To: Finn Thain , David Gibson , Greg Kurz References: <9b78e8c6e453feab6275d04bf503051645770d85.1629799776.git.fthain@linux-m68k.org> From: Mark Cave-Ayland Message-ID: Date: Wed, 25 Aug 2021 07:55:14 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <9b78e8c6e453feab6275d04bf503051645770d85.1629799776.git.fthain@linux-m68k.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: Re: [RFC 01/10] hw/mos6522: Remove get_load_time() methods and functions X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, NICE_REPLY_A=-1.305, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-ppc@nongnu.org, Laurent Vivier , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" On 24/08/2021 11:09, Finn Thain wrote: > This code appears to be unnecessary. > > Signed-off-by: Finn Thain > --- > hw/misc/mos6522.c | 22 +--------------------- > 1 file changed, 1 insertion(+), 21 deletions(-) > > diff --git a/hw/misc/mos6522.c b/hw/misc/mos6522.c > index 1c57332b40..a478c1ca43 100644 > --- a/hw/misc/mos6522.c > +++ b/hw/misc/mos6522.c > @@ -63,17 +63,6 @@ static uint64_t get_counter_value(MOS6522State *s, MOS6522Timer *ti) > } > } > > -static uint64_t get_load_time(MOS6522State *s, MOS6522Timer *ti) > -{ > - MOS6522DeviceClass *mdc = MOS6522_GET_CLASS(s); > - > - if (ti->index == 0) { > - return mdc->get_timer1_load_time(s, ti); > - } else { > - return mdc->get_timer2_load_time(s, ti); > - } > -} > - > static unsigned int get_counter(MOS6522State *s, MOS6522Timer *ti) > { > int64_t d; > @@ -98,7 +87,7 @@ static unsigned int get_counter(MOS6522State *s, MOS6522Timer *ti) > static void set_counter(MOS6522State *s, MOS6522Timer *ti, unsigned int val) > { > trace_mos6522_set_counter(1 + ti->index, val); > - ti->load_time = get_load_time(s, ti); > + ti->load_time = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); > ti->counter_value = val; > if (ti->index == 0) { > mos6522_timer1_update(s, ti, ti->load_time); > @@ -208,13 +197,6 @@ static uint64_t mos6522_get_counter_value(MOS6522State *s, MOS6522Timer *ti) > ti->frequency, NANOSECONDS_PER_SECOND); > } > > -static uint64_t mos6522_get_load_time(MOS6522State *s, MOS6522Timer *ti) > -{ > - uint64_t load_time = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); > - > - return load_time; > -} > - > static void mos6522_portA_write(MOS6522State *s) > { > qemu_log_mask(LOG_UNIMP, "portA_write unimplemented\n"); > @@ -518,8 +500,6 @@ static void mos6522_class_init(ObjectClass *oc, void *data) > mdc->update_irq = mos6522_update_irq; > mdc->get_timer1_counter_value = mos6522_get_counter_value; > mdc->get_timer2_counter_value = mos6522_get_counter_value; > - mdc->get_timer1_load_time = mos6522_get_load_time; > - mdc->get_timer2_load_time = mos6522_get_load_time; > } > > static const TypeInfo mos6522_type_info = { Both the get_counter_value() and get_load_time() callbacks are used as part of the CUDA emulation in hw/misc/macio/cuda.c as per the comment: /* MacOS uses timer 1 for calibration on startup, so we use * the timebase frequency and cuda_get_counter_value() with * cuda_get_load_time() to steer MacOS to calculate calibrate its timers * correctly for both TCG and KVM (see commit b981289c49 "PPC: Cuda: Use cuda * timer to expose tbfreq to guest" for more information) */ Certainly for the 6522 device it is worth configuring with --target-list="ppc-softmmu m68k-softmmu" to make sure that you don't inadvertently break anything in the PPC world. A bit of history here: the original mos6522.c was extracted from hw/misc/macio/cuda.c when Laurent presented his initial q800 patches since they also had their own implementation of the 6522, and it was better to move the implementation into a separate QEMU device so that the logic could be shared. The Darwin kernel timer calibration loop is quite hard to get right: see https://opensource.apple.com/source/xnu/xnu-123.5/pexpert/ppc/pe_clock_speed_asm.s.auto.html and https://opensource.apple.com/source/xnu/xnu-123.5/pexpert/ppc/pe_clock_speed.c.auto.html. Ben/Alex came up with the current mechanism to fool the calibration routine, and I simply added in those callbacks to allow it to be implemented as part of the now-generic 6522 device. ATB, Mark.