From patchwork Tue Feb 23 22:53:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Niek Linnenbank X-Patchwork-Id: 1443663 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=XAhsuoHG; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DlZBF0tTgz9sVF for ; Wed, 24 Feb 2021 09:54:45 +1100 (AEDT) Received: from localhost ([::1]:36772 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lEgZn-0002Cv-3k for incoming@patchwork.ozlabs.org; Tue, 23 Feb 2021 17:54:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48060) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lEgZ9-0002An-SH; Tue, 23 Feb 2021 17:54:03 -0500 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]:33910) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lEgZ4-000229-AK; Tue, 23 Feb 2021 17:54:03 -0500 Received: by mail-ej1-x62f.google.com with SMTP id hs11so91487ejc.1; Tue, 23 Feb 2021 14:53:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X8WaP4W7cXz+9hJN4RigR0J/h1gkWz375q6Lq0YgScc=; b=XAhsuoHGugsSXtpNGT5IWmBKTB15WyHQ/jh08tr5uru+1CJpmIzNwKhSzsJ42SxBaD Nj8pWikkCx81MVAZrbUw2dxeJtmnQ/ajEFnyV92eMgZloS33pEwp3KBty4VmCgo5T+Hx 4YJticZOjq201WG/DhWYnNzKyyBJrzYMylXJ32vDQN0gt2Vlmyj2QAxI6yqg4dG7NPLs lSlb+LTbTExKL6gEpNGI5KXHxCUvPcn+a1V9CsL3klZGVqfpj5tNn5it75G4zjGtXtAn OQyBXD5109FBH5/1xIbNT73lQlXmfTPRzP5kFetmG6DID7IhqI1PempUdfTGSW8NXi6I xsfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X8WaP4W7cXz+9hJN4RigR0J/h1gkWz375q6Lq0YgScc=; b=hqk8JGXQu3JuhMYSRsvhfCve4LY99MSoEBss66YIXG95AMD41Fap7fLFpkZBl7k5Tq n52JWxbqeYffw4i2BIKe3DosjRzZ2PGalACDWPsO0BexqFwSzBhMzZ5lPeoVI46rJH4R hQTGoC86egOsM7CLJvRDKIwB0vxFRVE6JqVeeWLnRaKuJr63x4ueeeMY7R3tAgYKnVb9 AaxH9OHppc8J1cRlUzn9cWYI6OvWZGulvMAbz8HUi/6PGUz6ll75bSSNc9BkIin8soSk 8tt0wfRDKcXqDXqIfnl1dgSsdR9pB4evxZhmVohnR4Et+mCri5zpsiXiQH5SO0XR7RcP Xi8g== X-Gm-Message-State: AOAM531ZgR+60K1rCxNqBjgPIuABo2F7qeamZ/VZgY+dW7J4UVc6RGG/ zxcgQIzonTkEJcXUyYAHRLrBHkvZScA= X-Google-Smtp-Source: ABdhPJzVNxO42UbKirbtP11PvpVZcXSUpMrtbKsvkrZCV/d8BobIZio7+yUAUnH0QtKlZdqZAjuE6Q== X-Received: by 2002:a17:906:7f14:: with SMTP id d20mr28102936ejr.322.1614120836385; Tue, 23 Feb 2021 14:53:56 -0800 (PST) Received: from localhost.localdomain (2a02-a456-6be8-1-9f7b-4035-6320-cb66.fixed6.kpn.net. [2a02:a456:6be8:1:9f7b:4035:6320:cb66]) by smtp.gmail.com with ESMTPSA id u15sm55752ejy.48.2021.02.23.14.53.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Feb 2021 14:53:55 -0800 (PST) From: Niek Linnenbank To: qemu-devel@nongnu.org Subject: [PATCH v2 1/2] tests/acceptance: replace unstable apt.armbian.com URLs for orangepi-pc, cubieboard Date: Tue, 23 Feb 2021 23:53:26 +0100 Message-Id: <20210223225327.26700-2-nieklinnenbank@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210223225327.26700-1-nieklinnenbank@gmail.com> References: <20210223225327.26700-1-nieklinnenbank@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::62f; envelope-from=nieklinnenbank@gmail.com; helo=mail-ej1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, f4bug@amsat.org, b.galvani@gmail.com, Niek Linnenbank , qemu-arm@nongnu.org, Pavel.Dovgaluk@ispras.ru, crosa@redhat.com, Willian Rampazzo , philmd@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Currently the automated acceptance tests for the Orange Pi PC and cubieboard machines are disabled by default. The tests for both machines require artifacts that are stored on the apt.armbian.com domain. Unfortunately, some of these artifacts have been removed from apt.armbian.com and it is uncertain whether more will be removed. This commit moves the artifacts previously stored on apt.armbian.com to github and retrieves them using the path: '//'. Signed-off-by: Niek Linnenbank Reviewed-by: Willian Rampazzo Reviewed-by: Cleber Rosa Tested-by: Cleber Rosa Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé --- tests/acceptance/boot_linux_console.py | 49 ++++++++++---------------- tests/acceptance/replay_kernel.py | 6 ++-- 2 files changed, 21 insertions(+), 34 deletions(-) diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py index eb01286799..0f8a824c61 100644 --- a/tests/acceptance/boot_linux_console.py +++ b/tests/acceptance/boot_linux_console.py @@ -507,15 +507,13 @@ def test_arm_exynos4210_initrd(self): self.wait_for_console_pattern('Boot successful.') # TODO user command, for now the uart is stuck - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') def test_arm_cubieboard_initrd(self): """ :avocado: tags=arch:arm :avocado: tags=machine:cubieboard """ - deb_url = ('https://apt.armbian.com/pool/main/l/' - 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb') + deb_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/cubieboard/linux-image-dev-sunxi_5.75_armhf.deb') deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315' deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) kernel_path = self.extract_from_deb(deb_path, @@ -549,15 +547,13 @@ def test_arm_cubieboard_initrd(self): 'system-control@1c00000') # cubieboard's reboot is not functioning; omit reboot test. - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') def test_arm_cubieboard_sata(self): """ :avocado: tags=arch:arm :avocado: tags=machine:cubieboard """ - deb_url = ('https://apt.armbian.com/pool/main/l/' - 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb') + deb_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/cubieboard/linux-image-dev-sunxi_5.75_armhf.deb') deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315' deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) kernel_path = self.extract_from_deb(deb_path, @@ -678,15 +674,13 @@ def test_arm_quanta_gsj_initrd(self): self.wait_for_console_pattern( 'Give root password for system maintenance') - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') def test_arm_orangepi(self): """ :avocado: tags=arch:arm :avocado: tags=machine:orangepi-pc """ - deb_url = ('https://apt.armbian.com/pool/main/l/' - 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb') + deb_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/orangepi-pc/linux-image-dev-sunxi_5.75_armhf.deb') deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315' deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) kernel_path = self.extract_from_deb(deb_path, @@ -705,15 +699,13 @@ def test_arm_orangepi(self): console_pattern = 'Kernel command line: %s' % kernel_command_line self.wait_for_console_pattern(console_pattern) - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') def test_arm_orangepi_initrd(self): """ :avocado: tags=arch:arm :avocado: tags=machine:orangepi-pc """ - deb_url = ('https://apt.armbian.com/pool/main/l/' - 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb') + deb_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/orangepi-pc/linux-image-dev-sunxi_5.75_armhf.deb') deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315' deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) kernel_path = self.extract_from_deb(deb_path, @@ -749,24 +741,23 @@ def test_arm_orangepi_initrd(self): # Wait for VM to shut down gracefully self.vm.wait() - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') def test_arm_orangepi_sd(self): """ :avocado: tags=arch:arm :avocado: tags=machine:orangepi-pc :avocado: tags=device:sd """ - deb_url = ('https://apt.armbian.com/pool/main/l/' - 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb') + deb_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/orangepi-pc/linux-image-dev-sunxi_5.75_armhf.deb') deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315' deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) kernel_path = self.extract_from_deb(deb_path, '/boot/vmlinuz-4.20.7-sunxi') dtb_path = '/usr/lib/linux-image-dev-sunxi/sun8i-h3-orangepi-pc.dtb' dtb_path = self.extract_from_deb(deb_path, dtb_path) - rootfs_url = ('http://storage.kernelci.org/images/rootfs/buildroot/' - 'kci-2019.02/armel/base/rootfs.ext2.xz') + # Rootfs is based on buildroot 2019.02 from kernelci.org + rootfs_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/orangepi-pc/rootfs.ext2.xz') rootfs_hash = '692510cb625efda31640d1de0a8d60e26040f061' rootfs_path_xz = self.fetch_asset(rootfs_url, asset_hash=rootfs_hash) rootfs_path = os.path.join(self.workdir, 'rootfs.cpio') @@ -828,8 +819,6 @@ def do_test_arm_orangepi_uboot_armbian(self, image_path): 'to ') self.wait_for_console_pattern('Starting Load Kernel Modules...') - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') @skipUnless(os.getenv('AVOCADO_ALLOW_LARGE_STORAGE'), 'storage limited') @skipUnless(P7ZIP_AVAILABLE, '7z not installed') def test_arm_orangepi_bionic_19_11(self): @@ -840,7 +829,8 @@ def test_arm_orangepi_bionic_19_11(self): """ # This test download a 196MB compressed image and expand it to 1GB - image_url = ('https://dl.armbian.com/orangepipc/archive/' + image_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/orangepi-pc/' 'Armbian_19.11.3_Orangepipc_bionic_current_5.3.9.7z') image_hash = '196a8ffb72b0123d92cea4a070894813d305c71e' image_path_7z = self.fetch_asset(image_url, asset_hash=image_hash) @@ -851,8 +841,6 @@ def test_arm_orangepi_bionic_19_11(self): self.do_test_arm_orangepi_uboot_armbian(image_path) - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') @skipUnless(os.getenv('AVOCADO_ALLOW_LARGE_STORAGE'), 'storage limited') def test_arm_orangepi_bionic_20_08(self): """ @@ -865,7 +853,8 @@ def test_arm_orangepi_bionic_20_08(self): # to 1036 MiB, but the underlying filesystem is 1552 MiB... # As we expand it to 2 GiB we are safe. - image_url = ('https://dl.armbian.com/orangepipc/archive/' + image_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/orangepi-pc/' 'Armbian_20.08.1_Orangepipc_bionic_current_5.8.5.img.xz') image_hash = ('b4d6775f5673486329e45a0586bf06b6' 'dbe792199fd182ac6b9c7bb6c7d3e6dd') @@ -884,8 +873,8 @@ def test_arm_orangepi_uboot_netbsd9(self): :avocado: tags=device:sd """ # This test download a 304MB compressed image and expand it to 2GB - deb_url = ('http://snapshot.debian.org/archive/debian/' - '20200108T145233Z/pool/main/u/u-boot/' + deb_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/orangepi-pc/' 'u-boot-sunxi_2020.01%2Bdfsg-1_armhf.deb') deb_hash = 'f67f404a80753ca3d1258f13e38f2b060e13db99' deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) diff --git a/tests/acceptance/replay_kernel.py b/tests/acceptance/replay_kernel.py index c1cb862468..ca5670fa76 100644 --- a/tests/acceptance/replay_kernel.py +++ b/tests/acceptance/replay_kernel.py @@ -177,15 +177,13 @@ def test_arm_virt(self): self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=1) @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab') - @skipUnless(os.getenv('ARMBIAN_ARTIFACTS_CACHED'), - 'Test artifacts fetched from unreliable apt.armbian.com') def test_arm_cubieboard_initrd(self): """ :avocado: tags=arch:arm :avocado: tags=machine:cubieboard """ - deb_url = ('https://apt.armbian.com/pool/main/l/' - 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb') + deb_url = ('https://github.com/nieklinnenbank/QemuArtifacts/raw/' + 'master/cubieboard/linux-image-dev-sunxi_5.75_armhf.deb') deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315' deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) kernel_path = self.extract_from_deb(deb_path, From patchwork Tue Feb 23 22:53:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Niek Linnenbank X-Patchwork-Id: 1443666 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=ojkRGJkR; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DlZHw5WKMz9sVF for ; Wed, 24 Feb 2021 09:59:40 +1100 (AEDT) Received: from localhost ([::1]:48254 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lEgeY-0007Al-Q3 for incoming@patchwork.ozlabs.org; Tue, 23 Feb 2021 17:59:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48058) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lEgZ8-0002AM-0m; Tue, 23 Feb 2021 17:54:03 -0500 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]:33915) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lEgZ5-00022d-02; Tue, 23 Feb 2021 17:54:01 -0500 Received: by mail-ej1-x634.google.com with SMTP id hs11so91540ejc.1; Tue, 23 Feb 2021 14:53:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kFj03blwbcM66TuxYye9XnlpLa3NkLZCnKGhAwTXsCo=; b=ojkRGJkRsPNeqiOoXgOpmpfHhd3y3FD+hD49ccnwgx8h5kCp/oS3/IMxPMGzSmv8XF 44agrTSkH/5Yw3Aadj7GxDhFCnQG2w/R+U8l87+kPMgIlmbrWhTPfjC0WDk6K2Dug5lg j7EBxguSjnIrH6dqEVa+gdtJYuDz4p133M6V+EK/fI6bgZXAJDLyhjLpBv3mW6gVnCks ww/WDkj0BMshOGkIhUaDUYDzn2tADdmJymrSAGd3uML6QhL5yNRcLEix151weS73kazf rSy72WietYapCkjknlSdjm7FEJU22522hBkeBXSzWppPW1AJDwlqQMgbDmOGxMmu8MxT +M4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kFj03blwbcM66TuxYye9XnlpLa3NkLZCnKGhAwTXsCo=; b=CfPTbNCmI7GTqnCpfPfDEJeLRH03WXlkr6HueLqmn6J5qDvneDbKJBHvDop5BWlBiY gn/UNLF+Df3zlxsr3RzubJ0Tr2Z8rOgpvqEBChhiQdqhV23C1qF6coy/o43CPp4Gw7Cu Cx1IP6prnQk0FqSLL7rVsUemzjxO0hWQYdoPLGp3CVhTKBJpSpoCGW0Q6HG7JbW/qD8Q FNH/ihN+ml54KzMNj4MRHoHD3GJHl2hBSXDbzswGpMVreG25ZjDBfNm7Fah3vpDAmdz+ ML1LHxXOwYN/akx5/HaiAD0f900sEsJ/prgxSfyG1EIkgtgC2ktFF+ImtfQZ1MwObukK upxg== X-Gm-Message-State: AOAM530JFbxw7cH0s0Vm6pabZtBx6v0RjP7c34bZ3brNla0ozS00Z4AW MMayKpiiP1a5S0mD6td0fiZApWH5HNc= X-Google-Smtp-Source: ABdhPJyYrWm8NHnNLdQVv1pI3RgIpQ4NEWJqJSicPKHJjeWMq2vXpWtrFeBKTtnPECNUIqSvptuFzw== X-Received: by 2002:a17:907:9619:: with SMTP id gb25mr9262235ejc.64.1614120837252; Tue, 23 Feb 2021 14:53:57 -0800 (PST) Received: from localhost.localdomain (2a02-a456-6be8-1-9f7b-4035-6320-cb66.fixed6.kpn.net. [2a02:a456:6be8:1:9f7b:4035:6320:cb66]) by smtp.gmail.com with ESMTPSA id u15sm55752ejy.48.2021.02.23.14.53.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Feb 2021 14:53:56 -0800 (PST) From: Niek Linnenbank To: qemu-devel@nongnu.org Subject: [PATCH v2 2/2] hw/net/allwinner-sun8i-emac: traverse transmit queue using TX_CUR_DESC register value Date: Tue, 23 Feb 2021 23:53:27 +0100 Message-Id: <20210223225327.26700-3-nieklinnenbank@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210223225327.26700-1-nieklinnenbank@gmail.com> References: <20210223225327.26700-1-nieklinnenbank@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::634; envelope-from=nieklinnenbank@gmail.com; helo=mail-ej1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, f4bug@amsat.org, b.galvani@gmail.com, Niek Linnenbank , qemu-arm@nongnu.org, Pavel.Dovgaluk@ispras.ru, crosa@redhat.com, philmd@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Currently the emulated EMAC for sun8i always traverses the transmit queue from the head when transferring packets. It searches for a list of consecutive descriptors whichs are flagged as ready for processing and transmits their payloads accordingly. The controller stops processing once it finds a descriptor that is not marked ready. While the above behaviour works in most situations, it is not the same as the actual EMAC in hardware. Actual hardware uses the TX_CUR_DESC register value to keep track of the last position in the transmit queue and continues processing from that position when software triggers the start of DMA processing. The currently emulated behaviour can lead to packet loss on transmit when software fills the transmit queue with ready descriptors that overlap the tail of the circular list. This commit modifies the emulated EMAC for sun8i such that it processes the transmit queue using the TX_CUR_DESC register in the same way as hardware. Signed-off-by: Niek Linnenbank Reviewed-by: Philippe Mathieu-Daudé --- hw/net/allwinner-sun8i-emac.c | 58 +++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/hw/net/allwinner-sun8i-emac.c b/hw/net/allwinner-sun8i-emac.c index 042768922c..e586c147e5 100644 --- a/hw/net/allwinner-sun8i-emac.c +++ b/hw/net/allwinner-sun8i-emac.c @@ -339,35 +339,40 @@ static void allwinner_sun8i_emac_update_irq(AwSun8iEmacState *s) qemu_set_irq(s->irq, (s->int_sta & s->int_en) != 0); } -static uint32_t allwinner_sun8i_emac_next_desc(AwSun8iEmacState *s, - FrameDescriptor *desc, - size_t min_size) +static bool allwinner_sun8i_emac_desc_owned(FrameDescriptor *desc, + size_t min_buf_size) { - uint32_t paddr = desc->next; + return (desc->status & DESC_STATUS_CTL) && (min_buf_size == 0 || + (desc->status2 & DESC_STATUS2_BUF_SIZE_MASK) >= min_buf_size); +} - dma_memory_read(&s->dma_as, paddr, desc, sizeof(*desc)); +static void allwinner_sun8i_emac_get_desc(AwSun8iEmacState *s, + FrameDescriptor *desc, + uint32_t phys_addr) +{ + dma_memory_read(&s->dma_as, phys_addr, desc, sizeof(*desc)); +} - if ((desc->status & DESC_STATUS_CTL) && - (desc->status2 & DESC_STATUS2_BUF_SIZE_MASK) >= min_size) { - return paddr; - } else { - return 0; - } +static uint32_t allwinner_sun8i_emac_next_desc(AwSun8iEmacState *s, + FrameDescriptor *desc) +{ + const uint32_t nxt = desc->next; + allwinner_sun8i_emac_get_desc(s, desc, nxt); + return nxt; } -static uint32_t allwinner_sun8i_emac_get_desc(AwSun8iEmacState *s, - FrameDescriptor *desc, - uint32_t start_addr, - size_t min_size) +static uint32_t allwinner_sun8i_emac_find_desc(AwSun8iEmacState *s, + FrameDescriptor *desc, + uint32_t start_addr, + size_t min_size) { uint32_t desc_addr = start_addr; /* Note that the list is a cycle. Last entry points back to the head. */ while (desc_addr != 0) { - dma_memory_read(&s->dma_as, desc_addr, desc, sizeof(*desc)); + allwinner_sun8i_emac_get_desc(s, desc, desc_addr); - if ((desc->status & DESC_STATUS_CTL) && - (desc->status2 & DESC_STATUS2_BUF_SIZE_MASK) >= min_size) { + if (allwinner_sun8i_emac_desc_owned(desc, min_size)) { return desc_addr; } else if (desc->next == start_addr) { break; @@ -383,14 +388,14 @@ static uint32_t allwinner_sun8i_emac_rx_desc(AwSun8iEmacState *s, FrameDescriptor *desc, size_t min_size) { - return allwinner_sun8i_emac_get_desc(s, desc, s->rx_desc_curr, min_size); + return allwinner_sun8i_emac_find_desc(s, desc, s->rx_desc_curr, min_size); } static uint32_t allwinner_sun8i_emac_tx_desc(AwSun8iEmacState *s, - FrameDescriptor *desc, - size_t min_size) + FrameDescriptor *desc) { - return allwinner_sun8i_emac_get_desc(s, desc, s->tx_desc_head, min_size); + allwinner_sun8i_emac_get_desc(s, desc, s->tx_desc_curr); + return s->tx_desc_curr; } static void allwinner_sun8i_emac_flush_desc(AwSun8iEmacState *s, @@ -470,7 +475,8 @@ static ssize_t allwinner_sun8i_emac_receive(NetClientState *nc, bytes_left -= desc_bytes; /* Move to the next descriptor */ - s->rx_desc_curr = allwinner_sun8i_emac_next_desc(s, &desc, 64); + s->rx_desc_curr = allwinner_sun8i_emac_find_desc(s, &desc, desc.next, + AW_SUN8I_EMAC_MIN_PKT_SZ); if (!s->rx_desc_curr) { /* Not enough buffer space available */ s->int_sta |= INT_STA_RX_BUF_UA; @@ -495,10 +501,10 @@ static void allwinner_sun8i_emac_transmit(AwSun8iEmacState *s) size_t transmitted = 0; static uint8_t packet_buf[2048]; - s->tx_desc_curr = allwinner_sun8i_emac_tx_desc(s, &desc, 0); + s->tx_desc_curr = allwinner_sun8i_emac_tx_desc(s, &desc); /* Read all transmit descriptors */ - while (s->tx_desc_curr != 0) { + while (allwinner_sun8i_emac_desc_owned(&desc, 0)) { /* Read from physical memory into packet buffer */ bytes = desc.status2 & DESC_STATUS2_BUF_SIZE_MASK; @@ -524,7 +530,7 @@ static void allwinner_sun8i_emac_transmit(AwSun8iEmacState *s) packet_bytes = 0; transmitted++; } - s->tx_desc_curr = allwinner_sun8i_emac_next_desc(s, &desc, 0); + s->tx_desc_curr = allwinner_sun8i_emac_next_desc(s, &desc); } /* Raise transmit completed interrupt */