All of lore.kernel.org
 help / color / mirror / Atom feed
* [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass
@ 2023-03-24  0:18 aperard
  2023-03-24  7:07 ` Juergen Gross
  0 siblings, 1 reply; 6+ messages in thread
From: aperard @ 2023-03-24  0:18 UTC (permalink / raw)
  To: anthony.perard, jgross, xen-devel

[adhoc play] <osstest master /dev/pts/16>
harness ed1d8de4: PDU/IPMI: Be less aggressive with IPMI commands
179901: regressions - trouble: blocked/broken/fail/pass

flight 179901 linux-linus play [play]
http://logs.test-lab.xenproject.org/osstest/logs/179901/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-armhf                     <job status>                 broken
 build-armhf                   5 capture-logs           broken REGR. vs. 178042
 test-amd64-amd64-xl-credit1  14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-freebsd12-amd64 13 guest-start          fail REGR. vs. 178042
 test-amd64-amd64-xl-shadow   14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-xl-multivcpu 14 guest-start             fail REGR. vs. 178042
 test-amd64-amd64-xl-pvhv2-intel 14 guest-start           fail REGR. vs. 178042
 test-amd64-amd64-xl          14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-xl-xsm      14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-xl-pvhv2-amd 14 guest-start             fail REGR. vs. 178042
 test-amd64-amd64-freebsd11-amd64 13 guest-start          fail REGR. vs. 178042
 test-amd64-amd64-dom0pvh-xl-intel 14 guest-start         fail REGR. vs. 178042
 test-amd64-amd64-dom0pvh-xl-amd 14 guest-start           fail REGR. vs. 178042
 test-amd64-amd64-libvirt-xsm 14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-libvirt-pair 25 guest-start/debian      fail REGR. vs. 178042
 test-amd64-amd64-xl-credit2  14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-xl-rtds     14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-qemuu-nested-intel 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-libvirt     14 guest-start              fail REGR. vs. 178042
 test-amd64-coresched-amd64-xl 14 guest-start             fail REGR. vs. 178042
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-xl-qemuu-debianhvm-amd64 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-xl-qemut-debianhvm-amd64 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-pair        25 guest-start/debian       fail REGR. vs. 178042
 test-amd64-amd64-qemuu-nested-amd 12 debian-hvm-install  fail REGR. vs. 178042
 test-amd64-amd64-xl-pvshim   14 guest-start              fail REGR. vs. 178042
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail REGR. vs. 178042
 test-amd64-amd64-xl-vhd      12 debian-di-install        fail REGR. vs. 178042
 test-amd64-amd64-pygrub      12 debian-di-install        fail REGR. vs. 178042
 test-amd64-amd64-libvirt-raw 12 debian-di-install        fail REGR. vs. 178042
 test-amd64-amd64-libvirt-qcow2 12 debian-di-install      fail REGR. vs. 178042
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail REGR. vs. 178042
 build-armhf                   3 syslog-server                running

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-examine      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt-qcow2  1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt-raw  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit1   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit2   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-cubietruck  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-multivcpu  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-rtds      1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-vhd       1 build-check(1)               blocked  n/a
 build-armhf-libvirt           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-arndale   1 build-check(1)               blocked  n/a
 build-armhf                   4 host-install(4)       broken blocked in 178042
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail  like 178042
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail  like 178042
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail  like 178042
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail  like 178042
 test-arm64-arm64-xl          15 migrate-support-check        fail  like 178042
 test-arm64-arm64-xl          16 saverestore-support-check    fail  like 178042
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail  like 178042
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail  like 178042
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail  like 178042
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail  like 178042
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail  like 178042
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail  like 178042
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail  like 178042
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail  like 178042
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail  like 178042
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail  like 178042
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 178042
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 178042
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 178042
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 178042

baseline version:
 flight               178042

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  broken  
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          blocked 
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          fail    
 test-amd64-coresched-amd64-xl                                fail    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          blocked 
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           fail    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        fail    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 fail    
 test-amd64-amd64-libvirt-xsm                                 fail    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      fail    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                fail    
 test-amd64-amd64-dom0pvh-xl-amd                              fail    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    fail    
 test-amd64-amd64-freebsd11-amd64                             fail    
 test-amd64-amd64-freebsd12-amd64                             fail    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         fail    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  blocked 
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  fail    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  blocked 
 test-amd64-amd64-xl-credit2                                  fail    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  blocked 
 test-armhf-armhf-xl-cubietruck                               blocked 
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        fail    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     blocked 
 test-amd64-amd64-qemuu-nested-intel                          fail    
 test-amd64-amd64-xl-pvhv2-intel                              fail    
 test-amd64-amd64-dom0pvh-xl-intel                            fail    
 test-amd64-amd64-libvirt                                     fail    
 test-armhf-armhf-libvirt                                     blocked 
 test-amd64-amd64-xl-multivcpu                                fail    
 test-armhf-armhf-xl-multivcpu                                blocked 
 test-amd64-amd64-pair                                        fail    
 test-amd64-amd64-libvirt-pair                                fail    
 test-amd64-amd64-xl-pvshim                                   fail    
 test-amd64-amd64-pygrub                                      fail    
 test-amd64-amd64-libvirt-qcow2                               fail    
 test-armhf-armhf-libvirt-qcow2                               blocked 
 test-amd64-amd64-libvirt-raw                                 fail    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 blocked 
 test-amd64-amd64-xl-rtds                                     fail    
 test-armhf-armhf-xl-rtds                                     blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             fail    
 test-amd64-amd64-xl-shadow                                   fail    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      fail    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      blocked 


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass
  2023-03-24  0:18 [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass aperard
@ 2023-03-24  7:07 ` Juergen Gross
  2023-03-24  7:46   ` Jan Beulich
  0 siblings, 1 reply; 6+ messages in thread
From: Juergen Gross @ 2023-03-24  7:07 UTC (permalink / raw)
  To: aperard, anthony.perard, xen-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 795 bytes --]

On 24.03.23 01:18, aperard@xenbits.xen.org wrote:
> [adhoc play] <osstest master /dev/pts/16>
> harness ed1d8de4: PDU/IPMI: Be less aggressive with IPMI commands
> 179901: regressions - trouble: blocked/broken/fail/pass
> 
> flight 179901 linux-linus play [play]
> http://logs.test-lab.xenproject.org/osstest/logs/179901/
> 
> Regressions :-(

It seems the grant copy failures are gone, but the tests are still failing.

I have spotted:

[   18.258030] net eth0: Response for inactive request
[   18.258080] net eth0: Disabled for further use

in 
http://logs.test-lab.xenproject.org/osstest/logs/179901/test-amd64-amd64-xl/elbling1---var-log-xen-console-guest-debian.guest.osstest.log

This is clearly an explanation for the failed tests. I'm looking into it.


Juergen

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 3149 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass
  2023-03-24  7:07 ` Juergen Gross
@ 2023-03-24  7:46   ` Jan Beulich
  2023-03-24  8:34     ` Juergen Gross
  2023-03-24 11:16     ` Juergen Gross
  0 siblings, 2 replies; 6+ messages in thread
From: Jan Beulich @ 2023-03-24  7:46 UTC (permalink / raw)
  To: Juergen Gross; +Cc: aperard, anthony.perard, xen-devel

On 24.03.2023 08:07, Juergen Gross wrote:
> On 24.03.23 01:18, aperard@xenbits.xen.org wrote:
>> [adhoc play] <osstest master /dev/pts/16>
>> harness ed1d8de4: PDU/IPMI: Be less aggressive with IPMI commands
>> 179901: regressions - trouble: blocked/broken/fail/pass
>>
>> flight 179901 linux-linus play [play]
>> http://logs.test-lab.xenproject.org/osstest/logs/179901/
>>
>> Regressions :-(
> 
> It seems the grant copy failures are gone, but the tests are still failing.
> 
> I have spotted:
> 
> [   18.258030] net eth0: Response for inactive request
> [   18.258080] net eth0: Disabled for further use
> 
> in 
> http://logs.test-lab.xenproject.org/osstest/logs/179901/test-amd64-amd64-xl/elbling1---var-log-xen-console-guest-debian.guest.osstest.log
> 
> This is clearly an explanation for the failed tests. I'm looking into it.

Right - xenvif_tx_check_gop() now sends two responses for the split copy.

Jan


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass
  2023-03-24  7:46   ` Jan Beulich
@ 2023-03-24  8:34     ` Juergen Gross
  2023-03-24 11:16     ` Juergen Gross
  1 sibling, 0 replies; 6+ messages in thread
From: Juergen Gross @ 2023-03-24  8:34 UTC (permalink / raw)
  To: Jan Beulich; +Cc: aperard, anthony.perard, xen-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 1223 bytes --]

On 24.03.23 08:46, Jan Beulich wrote:
> On 24.03.2023 08:07, Juergen Gross wrote:
>> On 24.03.23 01:18, aperard@xenbits.xen.org wrote:
>>> [adhoc play] <osstest master /dev/pts/16>
>>> harness ed1d8de4: PDU/IPMI: Be less aggressive with IPMI commands
>>> 179901: regressions - trouble: blocked/broken/fail/pass
>>>
>>> flight 179901 linux-linus play [play]
>>> http://logs.test-lab.xenproject.org/osstest/logs/179901/
>>>
>>> Regressions :-(
>>
>> It seems the grant copy failures are gone, but the tests are still failing.
>>
>> I have spotted:
>>
>> [   18.258030] net eth0: Response for inactive request
>> [   18.258080] net eth0: Disabled for further use
>>
>> in
>> http://logs.test-lab.xenproject.org/osstest/logs/179901/test-amd64-amd64-xl/elbling1---var-log-xen-console-guest-debian.guest.osstest.log
>>
>> This is clearly an explanation for the failed tests. I'm looking into it.
> 
> Right - xenvif_tx_check_gop() now sends two responses for the split copy.

Yes. I'm just figuring out how to keep track of the relation copy_op and pending
request. I can't just double the copy_pending_idx[] array size, as this would
grow the struct above the allowed size of 48 bytes.


Juergen

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 3149 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass
  2023-03-24  7:46   ` Jan Beulich
  2023-03-24  8:34     ` Juergen Gross
@ 2023-03-24 11:16     ` Juergen Gross
  2023-03-24 12:03       ` Anthony PERARD
  1 sibling, 1 reply; 6+ messages in thread
From: Juergen Gross @ 2023-03-24 11:16 UTC (permalink / raw)
  To: Jan Beulich; +Cc: aperard, anthony.perard, xen-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 1093 bytes --]

On 24.03.23 08:46, Jan Beulich wrote:
> On 24.03.2023 08:07, Juergen Gross wrote:
>> On 24.03.23 01:18, aperard@xenbits.xen.org wrote:
>>> [adhoc play] <osstest master /dev/pts/16>
>>> harness ed1d8de4: PDU/IPMI: Be less aggressive with IPMI commands
>>> 179901: regressions - trouble: blocked/broken/fail/pass
>>>
>>> flight 179901 linux-linus play [play]
>>> http://logs.test-lab.xenproject.org/osstest/logs/179901/
>>>
>>> Regressions :-(
>>
>> It seems the grant copy failures are gone, but the tests are still failing.
>>
>> I have spotted:
>>
>> [   18.258030] net eth0: Response for inactive request
>> [   18.258080] net eth0: Disabled for further use
>>
>> in
>> http://logs.test-lab.xenproject.org/osstest/logs/179901/test-amd64-amd64-xl/elbling1---var-log-xen-console-guest-debian.guest.osstest.log
>>
>> This is clearly an explanation for the failed tests. I'm looking into it.
> 
> Right - xenvif_tx_check_gop() now sends two responses for the split copy.

Next try.

Anthony, could you please use this patch instead of the previous one?


Juergen

[-- Attachment #1.1.2: 0001-xen-netback-don-t-do-grant-copy-across-page-boundary.patch --]
[-- Type: text/x-patch, Size: 5037 bytes --]

From 060a3bb73df2a0fa5718a7a05c740afc8e4e39ad Mon Sep 17 00:00:00 2001
From: Juergen Gross <jgross@suse.com>
Date: Thu, 23 Mar 2023 07:29:56 +0100
Subject: [PATCH] xen/netback: don't do grant copy across page boundary

Fix xenvif_get_requests() not to do grant copy operations across local
page boundaries. This requires to double the maximum number of copy
operations per queue, as each copy could now be split into 2.

Make sure that struct xenvif_tx_cb doesn't grow too large.

Cc: stable@vger.kernel.org
Fixes: ad7f402ae4f4 ("xen/netback: Ensure protocol headers don't fall in the non-linear area")
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 drivers/net/xen-netback/common.h  |  2 +-
 drivers/net/xen-netback/netback.c | 28 ++++++++++++++++++++++++----
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h
index 3dbfc8a6924e..1fcbd83f7ff2 100644
--- a/drivers/net/xen-netback/common.h
+++ b/drivers/net/xen-netback/common.h
@@ -166,7 +166,7 @@ struct xenvif_queue { /* Per-queue data for xenvif */
 	struct pending_tx_info pending_tx_info[MAX_PENDING_REQS];
 	grant_handle_t grant_tx_handle[MAX_PENDING_REQS];
 
-	struct gnttab_copy tx_copy_ops[MAX_PENDING_REQS];
+	struct gnttab_copy tx_copy_ops[2 * MAX_PENDING_REQS];
 	struct gnttab_map_grant_ref tx_map_ops[MAX_PENDING_REQS];
 	struct gnttab_unmap_grant_ref tx_unmap_ops[MAX_PENDING_REQS];
 	/* passed to gnttab_[un]map_refs with pages under (un)mapping */
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index 1b42676ca141..b832e6f24d60 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -334,6 +334,7 @@ static int xenvif_count_requests(struct xenvif_queue *queue,
 struct xenvif_tx_cb {
 	u16 copy_pending_idx[XEN_NETBK_LEGACY_SLOTS_MAX + 1];
 	u8 copy_count;
+	u32 split_mask;
 };
 
 #define XENVIF_TX_CB(skb) ((struct xenvif_tx_cb *)(skb)->cb)
@@ -361,6 +362,8 @@ static inline struct sk_buff *xenvif_alloc_skb(unsigned int size)
 	struct sk_buff *skb =
 		alloc_skb(size + NET_SKB_PAD + NET_IP_ALIGN,
 			  GFP_ATOMIC | __GFP_NOWARN);
+
+	BUILD_BUG_ON(sizeof(*XENVIF_TX_CB(skb)) > sizeof(skb->cb));
 	if (unlikely(skb == NULL))
 		return NULL;
 
@@ -396,6 +399,7 @@ static void xenvif_get_requests(struct xenvif_queue *queue,
 	nr_slots = shinfo->nr_frags + 1;
 
 	copy_count(skb) = 0;
+	XENVIF_TX_CB(skb)->split_mask = 0;
 
 	/* Create copy ops for exactly data_len bytes into the skb head. */
 	__skb_put(skb, data_len);
@@ -413,6 +417,12 @@ static void xenvif_get_requests(struct xenvif_queue *queue,
 		cop->dest.u.gmfn = virt_to_gfn(skb->data + skb_headlen(skb)
 				               - data_len);
 
+		/* Don't cross local page boundary! */
+		if (cop->dest.offset + amount > XEN_PAGE_SIZE) {
+			amount = XEN_PAGE_SIZE - cop->dest.offset;
+			XENVIF_TX_CB(skb)->split_mask |= 1U << copy_count(skb);
+		}
+
 		cop->len = amount;
 		cop->flags = GNTCOPY_source_gref;
 
@@ -441,7 +451,8 @@ static void xenvif_get_requests(struct xenvif_queue *queue,
 			nr_slots--;
 		} else {
 			/* The copy op partially covered the tx_request.
-			 * The remainder will be mapped.
+			 * The remainder will be mapped or copied in the next
+			 * iteration.
 			 */
 			txp->offset += amount;
 			txp->size -= amount;
@@ -518,6 +529,7 @@ static int xenvif_tx_check_gop(struct xenvif_queue *queue,
 {
 	struct gnttab_map_grant_ref *gop_map = *gopp_map;
 	u16 pending_idx;
+	u16 last_copy_idx = copy_pending_idx(skb, copy_count(skb) - 1);
 	/* This always points to the shinfo of the skb being checked, which
 	 * could be either the first or the one on the frag_list
 	 */
@@ -529,7 +541,7 @@ static int xenvif_tx_check_gop(struct xenvif_queue *queue,
 	int nr_frags = shinfo->nr_frags;
 	const bool sharedslot = nr_frags &&
 				frag_get_pending_idx(&shinfo->frags[0]) ==
-				    copy_pending_idx(skb, copy_count(skb) - 1);
+				last_copy_idx;
 	int i, err = 0;
 
 	for (i = 0; i < copy_count(skb); i++) {
@@ -539,9 +551,17 @@ static int xenvif_tx_check_gop(struct xenvif_queue *queue,
 		pending_idx = copy_pending_idx(skb, i);
 
 		newerr = (*gopp_copy)->status;
+
+		/* Split copies need to be handled together. */
+		if (XENVIF_TX_CB(skb)->split_mask & (1U << i)) {
+			i++;
+			(*gopp_copy)++;
+			if (!newerr)
+				newerr = (*gopp_copy)->status;
+		}
 		if (likely(!newerr)) {
 			/* The first frag might still have this slot mapped */
-			if (i < copy_count(skb) - 1 || !sharedslot)
+			if (pending_idx != last_copy_idx || !sharedslot)
 				xenvif_idx_release(queue, pending_idx,
 						   XEN_NETIF_RSP_OKAY);
 		} else {
@@ -553,7 +573,7 @@ static int xenvif_tx_check_gop(struct xenvif_queue *queue,
 					   pending_idx,
 					   (*gopp_copy)->source.u.ref);
 			/* The first frag might still have this slot mapped */
-			if (i < copy_count(skb) - 1 || !sharedslot)
+			if (pending_idx != last_copy_idx || !sharedslot)
 				xenvif_idx_release(queue, pending_idx,
 						   XEN_NETIF_RSP_ERROR);
 		}
-- 
2.35.3


[-- Attachment #1.1.3: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 3149 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass
  2023-03-24 11:16     ` Juergen Gross
@ 2023-03-24 12:03       ` Anthony PERARD
  0 siblings, 0 replies; 6+ messages in thread
From: Anthony PERARD @ 2023-03-24 12:03 UTC (permalink / raw)
  To: Juergen Gross; +Cc: Jan Beulich, aperard, xen-devel

On Fri, Mar 24, 2023 at 12:16:10PM +0100, Juergen Gross wrote:
> Next try.
> 
> Anthony, could you please use this patch instead of the previous one?

I've created flight 179924, with:
    https://xenbits.xen.org/gitweb/?p=people/aperard/linux.git;a=shortlog;h=refs/heads/0593df9b-f8ad-0042-e024-354623f163e6@suse.com

Cheers,

-- 
Anthony PERARD


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-03-24 12:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-24  0:18 [adhoc test] 179901: regressions - trouble: blocked/broken/fail/pass aperard
2023-03-24  7:07 ` Juergen Gross
2023-03-24  7:46   ` Jan Beulich
2023-03-24  8:34     ` Juergen Gross
2023-03-24 11:16     ` Juergen Gross
2023-03-24 12:03       ` Anthony PERARD

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.