From: Thomas Huth <thuth@redhat.com>
To: Rorie Reyes <rreyes@linux.ibm.com>,
qemu-devel@nongnu.org, qemu-s390x@nongnu.org
Cc: pbonzini@redhat.com, cohuck@redhat.com, pasic@linux.ibm.com,
jjherne@linux.ibm.com, borntraeger@linux.ibm.com,
alex.williamson@redhat.com, clg@redhat.com,
akrowiak@linux.ibm.com
Subject: Re: [RFC PATCH v4 5/5] s390: implementing CHSC SEI for AP config change
Date: Fri, 11 Apr 2025 08:45:12 +0200 [thread overview]
Message-ID: <ce83485a-7575-49df-a3eb-7feac3cfd675@redhat.com> (raw)
In-Reply-To: <ed45e437-5534-4ace-8a7e-196860b43cde@linux.ibm.com>
On 10/04/2025 22.31, Rorie Reyes wrote:
>
> On 3/17/25 9:41 AM, Thomas Huth wrote:
>> On 11/03/2025 16.16, Rorie Reyes wrote:
>>> Handle interception of the CHSC SEI instruction for requests
>>> indicating the guest's AP configuration has changed.
>>>
>>> Signed-off-by: Rorie Reyes <rreyes@linux.ibm.com>
>>> Reviewed-by: Anthony Krowiak <akrowiak@linux.ibm.com>
>>> Tested-by: Anthony Krowiak <akrowiak@linux.ibm.com>
>>> ---
>>> target/s390x/ioinst.c | 11 +++++++++--
>>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c
>>> index a944f16c25..f061c6db14 100644
>>> --- a/target/s390x/ioinst.c
>>> +++ b/target/s390x/ioinst.c
>>> @@ -17,6 +17,7 @@
>>> #include "trace.h"
>>> #include "hw/s390x/s390-pci-bus.h"
>>> #include "target/s390x/kvm/pv.h"
>>> +#include "hw/s390x/ap-bridge.h"
>>> /* All I/O instructions but chsc use the s format */
>>> static uint64_t get_address_from_regs(CPUS390XState *env, uint32_t ipb,
>>> @@ -573,13 +574,19 @@ out:
>>> static int chsc_sei_nt0_get_event(void *res)
>>> {
>>> - /* no events yet */
>>> + if (s390_has_feat(S390_FEAT_AP)) {
>>> + return ap_chsc_sei_nt0_get_event(res);
>>> + }
>>> +
>>> return 1;
>>> }
>>> static int chsc_sei_nt0_have_event(void)
>>> {
>>> - /* no events yet */
>>> + if (s390_has_feat(S390_FEAT_AP)) {
>>> + return ap_chsc_sei_nt0_have_event();
>>> + }
>>> +
>>> return 0;
>>> }
>>
>> Hi!
>>
>> This unfortunately fails to link when configuring QEMU with the "--
>> without-default-devices" configure switch:
>>
>> /usr/bin/ld: libqemu-s390x-softmmu.a.p/target_s390x_ioinst.c.o: in
>> function `ioinst_handle_chsc':
>> /tmp/qemu-mini/target/s390x/ioinst.c:587:(.text+0x1ce1): undefined
>> reference to `ap_chsc_sei_nt0_have_event'
>> /usr/bin/ld: /tmp/qemu-mini/target/s390x/ioinst.c:578:(.text+0x1d1c):
>> undefined reference to `ap_chsc_sei_nt0_get_event'
>> collect2: error: ld returned 1 exit status
>>
>> I guess you have to rather use some callback mechanism, stubs or #ifdefs
>> here instead.
>>
>> Thomas
>>
> Hey Thomas,
>
> Sorry for the delay. I was trying out some ways to resolve this issue but
> I'm not sure what I would use for the macro name if I were to
>
> go the #ifdef route. I had something roughly like this but it wasn't
> working. Would you have any recommendations?
>
> static int chsc_sei_nt0_get_event(void *res) { #ifdef HW_S390X_AP_BRIDGE_H
> if (s390_has_feat(S390_FEAT_AP)) { return ap_chsc_sei_nt0_get_event(res); }
> #endif return 1; } static int chsc_sei_nt0_have_event(void) { #ifdef
> HW_S390X_AP_BRIDGE_H if (s390_has_feat(S390_FEAT_AP)) { return
> ap_chsc_sei_nt0_have_event(); } #endif return 0; }
Hi,
right, that's the wrong #ifdef that you were trying here.
The problematic function is defined in hw/vfio/ap.c, so have a look into
hw/vfio/meson.build, and you'll see that it's conditionally included via the
CONFIG_VFIO_AP switch, so that's what you want here, I think. To be able to
use it, you likely have to add a:
#include CONFIG_DEVICES
at the beginning of the ioinst.c file. Then you should be able to do:
#ifdef CONFIG_VFIO_AP
if (s390_has_feat(S390_FEAT_AP)) {
return ap_chsc_sei_nt0_get_event(res);
}
#endif
(or whatever the code should look like).
Alternatively, and this might even be the nicer variant, add a file
hw/vfio/ap-stub.c and include a dummy ap_chsc_sei_nt0_get_event() function
there. Then in hw/vfio/meson.build add this line:
vfio_ss.add(when: 'CONFIG_VFIO_AP', if_false: files('ap-stub.c'))
HTH,
Thomas
next prev parent reply other threads:[~2025-04-11 6:46 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-11 15:16 [RFC PATCH v4 0/5] Report vfio-ap configuration changes Rorie Reyes
2025-03-11 15:16 ` [RFC PATCH v4 1/5] linux-headers: NOTFORMERGE - placeholder uapi updates for AP config change Rorie Reyes
2025-03-11 15:16 ` [RFC PATCH v4 2/5] hw/vfio/ap: notification handler for AP config changed event Rorie Reyes
2025-03-11 15:16 ` [RFC PATCH v4 3/5] hw/vfio/ap: store object indicating AP config changed in a queue Rorie Reyes
2025-03-12 11:24 ` Anthony Krowiak
2025-03-11 15:16 ` [RFC PATCH v4 4/5] hw/vfio/ap: Storing event information for an AP configuration change event Rorie Reyes
2025-03-12 13:14 ` Anthony Krowiak
2025-03-11 15:16 ` [RFC PATCH v4 5/5] s390: implementing CHSC SEI for AP config change Rorie Reyes
2025-03-17 13:41 ` Thomas Huth
2025-03-25 13:47 ` Rorie Reyes
2025-04-10 20:31 ` Rorie Reyes
2025-04-11 6:45 ` Thomas Huth [this message]
2025-04-14 14:37 ` Rorie Reyes
2025-04-14 14:54 ` Thomas Huth
2025-04-14 14:57 ` Rorie Reyes
2025-03-12 13:48 ` [RFC PATCH v4 0/5] Report vfio-ap configuration changes Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ce83485a-7575-49df-a3eb-7feac3cfd675@redhat.com \
--to=thuth@redhat.com \
--cc=akrowiak@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=clg@redhat.com \
--cc=cohuck@redhat.com \
--cc=jjherne@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=rreyes@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.