All of lore.kernel.org
 help / color / mirror / Atom feed
From: Halil Pasic <pasic@linux.vnet.ibm.com>
To: Pierre Morel <pmorel@linux.vnet.ibm.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v4 07/10] s390x/sclp: properly guard pci-specific functions
Date: Mon, 21 Aug 2017 18:24:15 +0200	[thread overview]
Message-ID: <17cb7925-e4eb-d174-2886-49ab9af0852c@linux.vnet.ibm.com> (raw)
In-Reply-To: <0d8dcac1-f536-5d69-0187-23656d003348@linux.vnet.ibm.com>



On 08/21/2017 04:58 PM, Pierre Morel wrote:
> On 21/08/2017 11:16, Cornelia Huck wrote:
>> If we do not provide zpci, pci reconfiguration via sclp is not available
>> either. Don't indicate it in the sclp facilities and return an invalid
>> command if the guest tries to issue pci configure/deconfigure.
>>
>> Reviewed-by: Thomas Huth <thuth@redhat.com>
>> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
>> ---
>>   hw/s390x/sclp.c | 19 +++++++++++++++----
>>   1 file changed, 15 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
>> index 9253dbbc64..d0104cd784 100644
>> --- a/hw/s390x/sclp.c
>> +++ b/hw/s390x/sclp.c
>> @@ -59,6 +59,7 @@ static void read_SCP_info(SCLPDevice *sclp, SCCB *sccb)
>>       int rnsize, rnmax;
>>       int slots = MIN(machine->ram_slots, s390_get_memslot_count(kvm_state));
>>       IplParameterBlock *ipib = s390_ipl_get_iplb();
>> +    uint64_t sclp_facilities = SCLP_HAS_CPU_INFO;
>>
>>       CPU_FOREACH(cpu) {
>>           cpu_count++;
>> @@ -79,8 +80,10 @@ static void read_SCP_info(SCLPDevice *sclp, SCCB *sccb)
>>
>>       prepare_cpu_entries(sclp, read_info->entries, cpu_count);
>>
>> -    read_info->facilities = cpu_to_be64(SCLP_HAS_CPU_INFO |
>> -                                        SCLP_HAS_PCI_RECONFIG);
>> +    if (s390_has_feat(S390_FEAT_ZPCI)) {
>> +        sclp_facilities |= SCLP_HAS_PCI_RECONFIG;
>> +    }
>> +    read_info->facilities = cpu_to_be64(sclp_facilities);
>>
>>       /* Memory Hotplug is only supported for the ccw machine type */
>>       if (mhd) {
>> @@ -385,10 +388,18 @@ static void sclp_execute(SCLPDevice *sclp, SCCB *sccb, uint32_t code)
>>           sclp_c->unassign_storage(sclp, sccb);
>>           break;
>>       case SCLP_CMDW_CONFIGURE_PCI:
>> -        s390_pci_sclp_configure(sccb);
>> +        if (s390_has_feat(S390_FEAT_ZPCI)) {
>> +            s390_pci_sclp_configure(sccb);
>> +        } else {
>> +            sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_SCLP_COMMAND);
> 
> Hello Conny,
> 
> I find more logical if the response would be 0x06F0 : "Adapter type in SCCB not recognized"
> Since we could have more than one adapter type... someday.
> then the SCLP command would be valid but not the adapter type.

I agree, 01F0 does not seem to be the correct answer, based on
the AR as it seems to be tied to the command code.

Verifying what the machine does would be great though -- frankly
I cant tell with absolute confidence what's the right thing to
do based on my understanding of the AR. 


> 
> However, I will try to find a real hardware to test this since I noticed that my logic sometime... :) .
> 
> Another point is that don't you think that this test on S390_FEAT_ZPCI better belong to the dedicated PCI code inside of the s390_pci_sclp_configure().
>

I'm fine either way. If I imagine having a lots of adapter types, then I
would expect a switch or a jumptable on the type before handling control
to the pci specific function. In this case statically not supported types
would probably get caught by the default branch of the switch and for a
jumptable it could even handle the dynamic case (based on the facilities)
trivially. In short both approaches can make sense.

Regards,
Halil

> best regards,
> 
> Pierre
> 
> 
>> +        }
>>           break;
>>       case SCLP_CMDW_DECONFIGURE_PCI:
>> -        s390_pci_sclp_deconfigure(sccb);
>> +        if (s390_has_feat(S390_FEAT_ZPCI)) {
>> +            s390_pci_sclp_deconfigure(sccb);
>> +        } else {
>> +            sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_SCLP_COMMAND);
>> +        }
>>           break;
>>       default:
>>           efc->command_handler(ef, sccb, code);
>>
> 
> 

  reply	other threads:[~2017-08-21 16:24 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-21  9:16 [Qemu-devel] [PATCH v4 00/10] zpci detangling Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 01/10] 9pfs: fix dependencies Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 02/10] kvm: remove hard dependency on pci Cornelia Huck
2017-08-21 16:02   ` Pierre Morel
2017-08-22  9:04     ` Cornelia Huck
2017-08-23 11:05       ` Pierre Morel
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 03/10] s390x/pci: add stubs Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 04/10] s390x: chsc nt2 events are pci-only Cornelia Huck
2017-08-21 12:24   ` Thomas Huth
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 05/10] s390x/pci: do not advertise pci on non-pci builds Cornelia Huck
2017-08-21 12:29   ` Thomas Huth
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 06/10] s390x/ccw: create s390 phb conditionally Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 07/10] s390x/sclp: properly guard pci-specific functions Cornelia Huck
2017-08-21 11:41   ` Halil Pasic
2017-08-21 13:16     ` Cornelia Huck
2017-08-21 13:32       ` Halil Pasic
2017-08-21 13:36         ` Cornelia Huck
2017-08-21 14:58   ` Pierre Morel
2017-08-21 16:24     ` Halil Pasic [this message]
2017-08-22  8:39       ` Cornelia Huck
2017-08-22  9:20         ` Halil Pasic
2017-08-22  9:39           ` Cornelia Huck
2017-08-22 12:57             ` Cornelia Huck
2017-08-22 13:00               ` Halil Pasic
2017-08-22 12:58             ` Halil Pasic
2017-08-22 13:24               ` Cornelia Huck
2017-08-22 13:54                 ` Halil Pasic
2017-08-22 14:15                   ` Cornelia Huck
2017-08-22 14:34                     ` Halil Pasic
2017-08-22 15:10                       ` Cornelia Huck
2017-08-22 14:06                 ` Cornelia Huck
2017-08-22 14:27                   ` Halil Pasic
2017-08-22 14:34                     ` Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 08/10] s390x/pci: fence off instructions for non-pci Cornelia Huck
2017-08-23 14:10   ` Halil Pasic
2017-08-23 15:40     ` Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 09/10] s390x/kvm: msi route fixup " Cornelia Huck
2017-08-21 12:00   ` Halil Pasic
2017-08-21 12:13     ` Cornelia Huck
2017-08-21 15:10       ` Halil Pasic
2017-08-21 15:17         ` Thomas Huth
2017-08-21 15:30           ` Halil Pasic
2017-08-23 10:03             ` Cornelia Huck
2017-08-21  9:16 ` [Qemu-devel] [PATCH v4 10/10] s390x: refine pci dependencies Cornelia Huck

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=17cb7925-e4eb-d174-2886-49ab9af0852c@linux.vnet.ibm.com \
    --to=pasic@linux.vnet.ibm.com \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /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.