[2/4] s390/pci: track whether util_str is valid in the zpci_dev
diff mbox series

Message ID 1600529318-8996-3-git-send-email-mjrosato@linux.ibm.com
State Superseded
Headers show
Series
  • Pass zPCI hardware information via VFIO
Related show

Commit Message

Matthew Rosato Sept. 19, 2020, 3:28 p.m. UTC
We'll need to keep track of whether or not the byte string in util_str is
valid and thus needs to be passed to a vfio-pci passthrough device.

Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
---
 arch/s390/include/asm/pci.h | 3 ++-
 arch/s390/pci/pci_clp.c     | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

Comments

Christian Borntraeger Sept. 21, 2020, 9:38 a.m. UTC | #1
On 19.09.20 17:28, Matthew Rosato wrote:
> We'll need to keep track of whether or not the byte string in util_str is
> valid and thus needs to be passed to a vfio-pci passthrough device.
> 
> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>

If this goes via the vfio tree, 

Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>

(please wait for an ack from Niklas Schnelle as well)
> ---
>  arch/s390/include/asm/pci.h | 3 ++-
>  arch/s390/pci/pci_clp.c     | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
> index 882e233..32eb975 100644
> --- a/arch/s390/include/asm/pci.h
> +++ b/arch/s390/include/asm/pci.h
> @@ -132,7 +132,8 @@ struct zpci_dev {
>  	u8		rid_available	: 1;
>  	u8		has_hp_slot	: 1;
>  	u8		is_physfn	: 1;
> -	u8		reserved	: 5;
> +	u8		util_avail	: 1;
> +	u8		reserved	: 4;
>  	unsigned int	devfn;		/* DEVFN part of the RID*/
>  
>  	struct mutex lock;
> diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
> index 48bf316..d011134 100644
> --- a/arch/s390/pci/pci_clp.c
> +++ b/arch/s390/pci/pci_clp.c
> @@ -168,6 +168,7 @@ static int clp_store_query_pci_fn(struct zpci_dev *zdev,
>  	if (response->util_str_avail) {
>  		memcpy(zdev->util_str, response->util_str,
>  		       sizeof(zdev->util_str));
> +		zdev->util_avail = 1;
>  	}
>  	zdev->mio_capable = response->mio_addr_avail;
>  	for (i = 0; i < PCI_STD_NUM_BARS; i++) {
>
Niklas Schnelle Sept. 21, 2020, 9:41 a.m. UTC | #2
Hi Matthew,

On 9/19/20 5:28 PM, Matthew Rosato wrote:
> We'll need to keep track of whether or not the byte string in util_str is
> valid and thus needs to be passed to a vfio-pci passthrough device.
> 
> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
> ---
>  arch/s390/include/asm/pci.h | 3 ++-
>  arch/s390/pci/pci_clp.c     | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
> index 882e233..32eb975 100644
> --- a/arch/s390/include/asm/pci.h
> +++ b/arch/s390/include/asm/pci.h
> @@ -132,7 +132,8 @@ struct zpci_dev {
>  	u8		rid_available	: 1;
>  	u8		has_hp_slot	: 1;
>  	u8		is_physfn	: 1;
> -	u8		reserved	: 5;
> +	u8		util_avail	: 1;

Any reason you're not matching the util_str_avail name in the response struct?
I think this is currently always an EBCDIC encoded string so the information that
even if it looks like binary for anyone with a non-mainframe background
it is in fact a string seems quite helpful.
Other than that

Acked-by: Niklas Schnelle <schnelle@linux.ibm.com>

> +	u8		reserved	: 4;
>  	unsigned int	devfn;		/* DEVFN part of the RID*/
>  
>  	struct mutex lock;
> diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
> index 48bf316..d011134 100644
> --- a/arch/s390/pci/pci_clp.c
> +++ b/arch/s390/pci/pci_clp.c
> @@ -168,6 +168,7 @@ static int clp_store_query_pci_fn(struct zpci_dev *zdev,
>  	if (response->util_str_avail) {
>  		memcpy(zdev->util_str, response->util_str,
>  		       sizeof(zdev->util_str));
> +		zdev->util_avail = 1;
>  	}
>  	zdev->mio_capable = response->mio_addr_avail;
>  	for (i = 0; i < PCI_STD_NUM_BARS; i++) {
>
Matthew Rosato Sept. 22, 2020, 2:06 p.m. UTC | #3
On 9/21/20 5:41 AM, Niklas Schnelle wrote:
> Hi Matthew,
> 
> On 9/19/20 5:28 PM, Matthew Rosato wrote:
>> We'll need to keep track of whether or not the byte string in util_str is
>> valid and thus needs to be passed to a vfio-pci passthrough device.
>>
>> Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
>> ---
>>   arch/s390/include/asm/pci.h | 3 ++-
>>   arch/s390/pci/pci_clp.c     | 1 +
>>   2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
>> index 882e233..32eb975 100644
>> --- a/arch/s390/include/asm/pci.h
>> +++ b/arch/s390/include/asm/pci.h
>> @@ -132,7 +132,8 @@ struct zpci_dev {
>>   	u8		rid_available	: 1;
>>   	u8		has_hp_slot	: 1;
>>   	u8		is_physfn	: 1;
>> -	u8		reserved	: 5;
>> +	u8		util_avail	: 1;
> 
> Any reason you're not matching the util_str_avail name in the response struct? > I think this is currently always an EBCDIC encoded string so the 
information that
> even if it looks like binary for anyone with a non-mainframe background
> it is in fact a string seems quite helpful.

Frankly, the dropping of 'str_' was arbitrary on my part -- I'll go 
ahead and rename it to util_str_avail with v2.

> Other than that
> 
> Acked-by: Niklas Schnelle <schnelle@linux.ibm.com>
> 

Thanks!

>> +	u8		reserved	: 4;
>>   	unsigned int	devfn;		/* DEVFN part of the RID*/
>>   
>>   	struct mutex lock;
>> diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
>> index 48bf316..d011134 100644
>> --- a/arch/s390/pci/pci_clp.c
>> +++ b/arch/s390/pci/pci_clp.c
>> @@ -168,6 +168,7 @@ static int clp_store_query_pci_fn(struct zpci_dev *zdev,
>>   	if (response->util_str_avail) {
>>   		memcpy(zdev->util_str, response->util_str,
>>   		       sizeof(zdev->util_str));
>> +		zdev->util_avail = 1;
>>   	}
>>   	zdev->mio_capable = response->mio_addr_avail;
>>   	for (i = 0; i < PCI_STD_NUM_BARS; i++) {
>>

Patch
diff mbox series

diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
index 882e233..32eb975 100644
--- a/arch/s390/include/asm/pci.h
+++ b/arch/s390/include/asm/pci.h
@@ -132,7 +132,8 @@  struct zpci_dev {
 	u8		rid_available	: 1;
 	u8		has_hp_slot	: 1;
 	u8		is_physfn	: 1;
-	u8		reserved	: 5;
+	u8		util_avail	: 1;
+	u8		reserved	: 4;
 	unsigned int	devfn;		/* DEVFN part of the RID*/
 
 	struct mutex lock;
diff --git a/arch/s390/pci/pci_clp.c b/arch/s390/pci/pci_clp.c
index 48bf316..d011134 100644
--- a/arch/s390/pci/pci_clp.c
+++ b/arch/s390/pci/pci_clp.c
@@ -168,6 +168,7 @@  static int clp_store_query_pci_fn(struct zpci_dev *zdev,
 	if (response->util_str_avail) {
 		memcpy(zdev->util_str, response->util_str,
 		       sizeof(zdev->util_str));
+		zdev->util_avail = 1;
 	}
 	zdev->mio_capable = response->mio_addr_avail;
 	for (i = 0; i < PCI_STD_NUM_BARS; i++) {