From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C36CB606A31A for ; Thu, 29 Oct 2026 15:12:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Xm56vkH9 Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xMRnu-0004BE-Lu; Thu, 29 Oct 2026 11:12:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xMRnl-00048k-Lc for qemu-arm@nongnu.org; Thu, 29 Oct 2026 11:12:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xMRnh-0002rd-5i for qemu-arm@nongnu.org; Thu, 29 Oct 2026 11:12:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1793286739; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sy6RcJq7kWnzNPatcCz5vMju7T26X8KtMwEXCbitl90=; b=Xm56vkH9ATMJMygfPZSg+6GK3F6dQs7YPsYUO98Xep2m+NG+NICizkX3sSRQ6aFxum1tFS 2r5qzweZVvntR9s1vJ+llUI80AT507RpAf8Wam+f6LXJQP6VwleF7JeNpCHZ3Pdfknrstd mi7fwEqZHv79SYuWjlc8dXp0RGQs8wo= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-647-lR4E_uxDPxGRis0Bj7u-cg-1; Thu, 29 Oct 2026 11:12:15 -0400 X-MC-Unique: lR4E_uxDPxGRis0Bj7u-cg-1 X-Mimecast-MFC-AGG-ID: lR4E_uxDPxGRis0Bj7u-cg_1793286731 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5CA951956043; Thu, 29 Oct 2026 15:12:09 +0000 (UTC) Received: from redhat.com (headnet04.pony-001.prod.iad2.dc.redhat.com [10.2.32.116]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 11F131955F08; Thu, 29 Oct 2026 15:11:43 +0000 (UTC) Date: Thu, 29 Oct 2026 15:11:41 +0000 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= To: Markus Armbruster Cc: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , qemu-devel@nongnu.org, Michael Roth , John Snow , Peter Maydell , Mauro Carvalho Chehab , Pierrick Bouvier , Paolo Bonzini , Kostiantyn Kostiuk , Eric Blake , David Hildenbrand , Igor Mammedov , "Edgar E. Iglesias" , Jason Wang , Marcelo Tosatti , kvm@vger.kernel.org, Alberto Garcia , Kevin Wolf , Hanna Reitz , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Zhao Liu , Jonathan Cameron , Junjie Cao , Anisa Su , Elena Ufimtseva , Jagannathan Raman , John Levon , Thanos Makatos , =?utf-8?Q?C=C3=A9dric?= Le Goater , Cornelia Huck , Eric Farman , Matthew Rosato , Richard Henderson , Ilya Leoshkevich , qemu-block@nongnu.org, linux-cxl@vger.kernel.org, qemu-s390x@nongnu.org, "Michael S. Tsirkin" , Sergio Lopez , qemu-arm@nongnu.org, Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , qemu-riscv@nongnu.org, Song Gao <17746591750@163.com>, Bibo Mao , Xianglai Li , Jiaxun Yang , Pedro Barbuda , Mohamed Mediouni , Nicholas Piggin , Harsh Prateek Bora , Amit Machhiwal , qemu-ppc@nongnu.org, Zhang Chen , Li Zhijian , Alistair Francis , Alexander Graf , "Gonglei (Arei)" , zhenwei pi , Ani Sinha , Luc Michel , =?utf-8?Q?C=C3=A9dric?= Le Goater , Jamin Lin , Kane Chen , Samuel Tardieu , "Denis V. Lunev" , FangSheng Huang , Tyrone Ting , Hao Wu , Keith Busch , Klaus Jensen , Jesper Devantier , Aditya Gupta , Glenn Miles , Conor Dooley , Sebastian Huber , Halil Pasic , Christian Borntraeger , Jason Herne , Titus Rwantare , Stefano Stabellini , Anthony PERARD , Peter Xu , Chinmay Rath , Hendrik Brueckner , xen-devel@lists.xenproject.org, Roman Bolshakov , Phil Dennis-Jordan , Fam Zheng , Farhan Ali , Alex Williamson , Tao Tang , Stefan Berger , Fabiano Rosas , Mark Cave-Ayland , Artyom Tarasenko , Yoshinori Sato , Jiri Pirko , Eric Auger , Laurent Vivier Subject: Re: [PATCH v7 54/65] qdev: adjust PciDevfn declared type Message-ID: References: <20261020-qom-qapi-v7-0-431a86b02b58@redhat.com> <20261020-qom-qapi-v7-54-431a86b02b58@redhat.com> <87zevz5h4k.fsf@pond.sub.org> <87o6ce47rr.fsf@pond.sub.org> X-Archived-By: MIME-Version: 1.0 In-Reply-To: <87o6ce47rr.fsf@pond.sub.org> User-Agent: Mutt/2.4.2 (2026-08-30) X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-MFC-PROC-ID: cOnvmGa3JG0-UUXF_DMcM5Fi47z1QJyfBagPGcOt_fo_1793286731 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, GB_FAKE_RF=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Sender: qemu-arm-bounces+qemu-arm=archiver.kernel.org@nongnu.org X-Spam-Status: No, score=-7.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 On Wed, Oct 28, 2026 at 08:13:44AM +0100, Markus Armbruster wrote: > Daniel P. Berrangé writes: > > > On Tue, Oct 27, 2026 at 03:54:03PM +0100, Markus Armbruster wrote: > >> Marc-André Lureau writes: > >> > >> > Hi > >> > > >> > On Fri, Oct 23, 2026 at 2:04 PM Daniel P. Berrangé wrote: > >> >> > >> >> On Tue, Oct 20, 2026 at 02:46:11PM +0400, Marc-André Lureau wrote: > >> >> > PciDevfn is a bit special, since it accepts integer and string as > >> >> > setter, but only output integer as getter. > > > > snip > > > >> > But I agree we > >> > could do better. > >> > > >> > There are multiple options. We could keep declaring the property as > >> > str instead. In this case, the getter should probably return a string > >> > for consistency and correctness. This might surprise some existing > >> > users though. > >> > >> I.e. ditch numeric suppport for numeric addresses, right? > >> > >> Incompatible change. Do we care? > >> > >> If we don't, we should be honest about it and mark qom-get unstable. > >> > >> > We could introduce new properties like `devfn-str` and `devfn-int` > >> > that alias the same value. > >> > >> Compatibility break. If breaking compatibility is okay, I'd rather use > >> the opportunity to get rid of cleverness, and go with your first option. > >> > >> > We could also introduce a new structured QAPI type. > >> > >> What kind of type do you have in mind? > > > > IMHO the root cause design flaw here was to overload 'addr' as a > > way to set both the slot number and function number, as using > > one property for two pieces of data is a well known anti-pattern > > we caution against. > > > > IOW, we should have had 'slot' and 'function' as separate properties > > from the start. > > Fair. > > Our modeling of PCI is old and weird. > > What we call "pci-device" isn't a device, it's a function, where > function 0 sort of stands in for the device. Mmm, yes, interesting way of looking at it. > Its "addr" isn't a PCI address, it's the address of the function on its > PCI bus, i.e. the tail of a PCI address. > > > From a CLI POV, we could easily change 'addr' to mean only the slot > > number, since it is always parsed in string format without the > > magic (slot << 4) | function encoding. Then add a 'function' prop > > In CLI, HMP and QMP string (not integer), value "5" is shorthand for > "5.0", and means device 5, function 0. > > We could deprecate the .FN part in favor of a new property "function". > > Once we drop support for .FN from "addr", its name becomes even more > misleading than it always was. Yes. > > The challenge is the impact on QMP with strict typing, as ideally > > int format would soley represent the slot number, but today the > > int format is encoded (slot << 4) | function. So anyone relying > > on int format in QMP would silently have a semantic change if we > > altered what 'addr' means. > > That's a no-go. > > > Deprecating 'addr' entirely and adding brand new 'slot' and > > 'function' properties would be a significant disruption to > > a syntax which has been documented for years (decades). > > What about this: > > * No change to PCIDevice member @devfn: encodes slot and function as an > integer. > > * New "pci-device" properties "slot" and "function". "slot" sets just > the slot bits of @devfn, and "function" sets just the function bits. > Both default to zero, so specifying just "slot" gives you > PCI_DEVFN(slot, 0), which makes sense. > > * Deprecate "pci-device" property "addr" for QMP. We can keep it around > for longer than the required grace period if that helps. > > * Declare it legacy for CLI and HMP, with no intent to remove it. We can't easily keep it in CLI/HMP, while removing from QMP can we ? As long as the property exists on the PCIDevice object, it will be accessible everywhere. Perhaps keep it relatively simple and merely deprecate the string syntax of 'addr' in QMP. That's the place where it is really ugy. Force QMP over to only the integer syntax for 'addr', and leave CLI/HMP accepting the (optionally dotted) string syntax. Mgmt apps like libvirt will have to adapt. Tedious, but actually quite simple compared to most deprecations, as the integer syntax can already be used with all historical QEMU versions in QMP that mgmt apps ever need to deal with. They can unconditionally change their code to int syntax and not worry about old/new QEMUs at all. With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|