Merge pull request #606 from kata-containers/azure-obs-ci-implementation

ci: add packaging OBS files generation
This commit is contained in:
Jose Carlos Venegas Munoz 2019-06-29 14:31:18 -05:00 committed by GitHub
commit dada7c69d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 328 additions and 166 deletions

View File

@ -7,13 +7,44 @@
trigger: trigger:
- master - master
pool: jobs:
- job: packages
#timeout set to max
timeoutInMinutes: 0
pool:
vmImage: 'ubuntu-latest' vmImage: 'ubuntu-latest'
steps:
# azure docker installation task
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/tool/docker-installer?view=azure-devops
- task: DockerInstaller@0
displayName: 'Install Docker'
steps: - bash: |
- script: echo setup sudo apt-get update -y -qq
displayName: 'setup CI' sudo apt-get install -y git
git config --global user.email "azure-pipeline@kata.io"
git config --global user.name "azure-pipeline"
displayName: 'Setup'
- script: | - bash: |
echo This is an initial CI job # This is set by azure, but we use the same variable
displayName: 'Run CI' export AGENT_VERSION=""
script -qefc bash -c '.ci/packaging/request_to_obs.sh'
# Kata branch to build
displayName: 'Request build to OBS'
env:
CI: true
BRANCH: $(system.pullRequest.targetBranch)
OBS_USER: $(OBS_USER)
OBS_PASS: $(OBS_PASS)
GITHUB_PR: $(system.pullRequest.pullRequestNumber)
- bash: |
echo "Wait for packages from ${OBS_SUBPROJECT}"
[ "${OBS_SUBPROJECT}" != "" ] || { echo "OBS_SUBPROJECT"; exit 1; }
script -qefc bash -c './obs-packaging/wait-obs.sh --no-wait-publish'
displayName: 'Wait for packages are ready'
env:
USE_DOCKER: true
CI: $(CI)

67
.ci/packaging/request_to_obs.sh Executable file
View File

@ -0,0 +1,67 @@
#!/bin/bash
# Copyright (c) 2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
# This script will request package creation in OBS.
# create a repository under:
# https://build.opensuse.org/project/show/home:katacontainers
# Generate package files: rpm spec, deb source files.
# Send a request to OBS to build the packages in its servers
set -o errexit
set -o nounset
set -o pipefail
set -o errtrace
[ -z "${DEBUG:-}" ] || set -x
readonly script_dir=$(dirname $(readlink -f "$0"))
readonly packaging_dir="${script_dir}/../.."
# Kata branch where packages will be based
BRANCH=${BRANCH:-master}
# Name of OBS branch to to push
OBS_BRANCH="${OBS_BRANCH:-testing}"
if [ "${CI:-}" == "true" ] && [ "${GITHUB_PR:-}" != "" ]; then
OBS_BRANCH="packaging-PR-${GITHUB_PR}"
fi
# Push to anywhere, variable used by release scripts to push
PUSH=1
# dont use release kata image
BUILD_HEAD=true
if [ "${CI:-}" == "true" ];then
SUBPROJECT_TYPE="ci"
else
SUBPROJECT_TYPE="releases"
fi
# Name of the OBS subproject under:
# https://build.opensuse.org/project/subprojects/home:katacontainers
OBS_SUBPROJECT="${SUBPROJECT_TYPE}:$(uname -m):${OBS_BRANCH}"
export BUILD_HEAD
export BRANCH
export OBS_BRANCH
export OBS_SUBPROJECT
export PUSH
# azure: Export in all pipeline tasks
echo "##vso[task.setvariable variable=OBS_SUBPROJECT;]${OBS_SUBPROJECT}"
echo "INFO: BUILD_HEAD=${BUILD_HEAD}"
echo "INFO: BRANCH=${BRANCH}"
echo "INFO: OBS_BRANCH=${OBS_SUBPROJECT}"
echo "INFO: PUSH=${PUSH}"
# Export in all pipeline tasks
cd "${packaging_dir}/obs-packaging" || exit 1
echo "Building for head gen versions ..."
./gen_versions_txt.sh --head "${BRANCH}"
# print versions just for debug/info
cat versions.txt
export NEW_VERSION=$(curl -s -L https://raw.githubusercontent.com/kata-containers/runtime/${BRANCH}/VERSION)
script -qefc bash -c './create-repo-branch.sh --ci ${OBS_BRANCH}'
script -qefc bash -c './build_from_docker.sh ${NEW_VERSION}'

View File

@ -210,7 +210,7 @@ setup_kernel() {
cd "${kernel_path}" || exit 1 cd "${kernel_path}" || exit 1
for p in ${kernel_patches}; do for p in ${kernel_patches}; do
info "Applying patch $p" info "Applying patch $p"
patch -p1 <"$p" patch -p1 --fuzz 0 <"$p"
done done
[ -n "${hypervisor_target}" ] || hypervisor_target="kvm" [ -n "${hypervisor_target}" ] || hypervisor_target="kvm"

View File

@ -1 +1 @@
43 44

View File

@ -1,4 +1,4 @@
From e480fb43fda5d90a6277e969ac74b9a5a60c3f05 Mon Sep 17 00:00:00 2001 From 9a821958eb0b586b526af5490c811f28ec062d94 Mon Sep 17 00:00:00 2001
From: Stefan Hajnoczi <stefanha@redhat.com> From: Stefan Hajnoczi <stefanha@redhat.com>
Date: Tue, 12 Jun 2018 09:41:17 +0100 Date: Tue, 12 Jun 2018 09:41:17 +0100
Subject: [PATCH] fuse: add skeleton virtio_fs.ko module Subject: [PATCH] fuse: add skeleton virtio_fs.ko module
@ -534,7 +534,7 @@ Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
create mode 100644 include/uapi/linux/virtio_fs.h create mode 100644 include/uapi/linux/virtio_fs.h
diff --git a/drivers/dax/super.c b/drivers/dax/super.c diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index 6e928f37d084..74f3bf7ae822 100644 index 6e928f37d..74f3bf7ae 100644
--- a/drivers/dax/super.c --- a/drivers/dax/super.c
+++ b/drivers/dax/super.c +++ b/drivers/dax/super.c
@@ -52,7 +52,8 @@ EXPORT_SYMBOL_GPL(dax_read_unlock); @@ -52,7 +52,8 @@ EXPORT_SYMBOL_GPL(dax_read_unlock);
@ -548,7 +548,7 @@ index 6e928f37d084..74f3bf7ae822 100644
if (pgoff) if (pgoff)
*pgoff = PHYS_PFN(phys_off); *pgoff = PHYS_PFN(phys_off);
diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c
index 4cd9ea5c75be..9642fa8dbeb0 100644 index 4cd9ea5c7..9642fa8db 100644
--- a/drivers/virtio/virtio_mmio.c --- a/drivers/virtio/virtio_mmio.c
+++ b/drivers/virtio/virtio_mmio.c +++ b/drivers/virtio/virtio_mmio.c
@@ -494,6 +494,37 @@ static const char *vm_bus_name(struct virtio_device *vdev) @@ -494,6 +494,37 @@ static const char *vm_bus_name(struct virtio_device *vdev)
@ -598,7 +598,7 @@ index 4cd9ea5c75be..9642fa8dbeb0 100644
diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c
index 07571daccfec..51c9e6eca5ac 100644 index 07571dacc..51c9e6eca 100644
--- a/drivers/virtio/virtio_pci_modern.c --- a/drivers/virtio/virtio_pci_modern.c
+++ b/drivers/virtio/virtio_pci_modern.c +++ b/drivers/virtio/virtio_pci_modern.c
@@ -446,6 +446,112 @@ static void del_vq(struct virtio_pci_vq_info *info) @@ -446,6 +446,112 @@ static void del_vq(struct virtio_pci_vq_info *info)
@ -731,7 +731,7 @@ index 07571daccfec..51c9e6eca5ac 100644
/** /**
diff --git a/fs/dax.c b/fs/dax.c diff --git a/fs/dax.c b/fs/dax.c
index 09fa70683c41..408a06b74335 100644 index 75a289c31..8c55d4bdf 100644
--- a/fs/dax.c --- a/fs/dax.c
+++ b/fs/dax.c +++ b/fs/dax.c
@@ -1021,12 +1021,12 @@ static int dax_writeback_one(struct dax_device *dax_dev, @@ -1021,12 +1021,12 @@ static int dax_writeback_one(struct dax_device *dax_dev,
@ -790,7 +790,7 @@ index 09fa70683c41..408a06b74335 100644
if (!IS_ALIGNED(offset, sector_size)) if (!IS_ALIGNED(offset, sector_size))
return false; return false;
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index e4bb9386c045..c9b024dafe09 100644 index e4bb9386c..c9b024daf 100644
--- a/fs/ext2/inode.c --- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c +++ b/fs/ext2/inode.c
@@ -956,7 +956,7 @@ static int @@ -956,7 +956,7 @@ static int
@ -803,7 +803,7 @@ index e4bb9386c045..c9b024dafe09 100644
const struct address_space_operations ext2_aops = { const struct address_space_operations ext2_aops = {
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 2c43c5b92229..a94aff38cda4 100644 index 05dc5a4ba..221824742 100644
--- a/fs/ext4/inode.c --- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c +++ b/fs/ext4/inode.c
@@ -2949,7 +2949,7 @@ static int ext4_dax_writepages(struct address_space *mapping, @@ -2949,7 +2949,7 @@ static int ext4_dax_writepages(struct address_space *mapping,
@ -816,7 +816,7 @@ index 2c43c5b92229..a94aff38cda4 100644
nr_to_write - wbc->nr_to_write); nr_to_write - wbc->nr_to_write);
percpu_up_read(&sbi->s_journal_flag_rwsem); percpu_up_read(&sbi->s_journal_flag_rwsem);
diff --git a/fs/fuse/Kconfig b/fs/fuse/Kconfig diff --git a/fs/fuse/Kconfig b/fs/fuse/Kconfig
index 76f09ce7e5b2..46e9a8ff9f7a 100644 index 76f09ce7e..46e9a8ff9 100644
--- a/fs/fuse/Kconfig --- a/fs/fuse/Kconfig
+++ b/fs/fuse/Kconfig +++ b/fs/fuse/Kconfig
@@ -26,3 +26,14 @@ config CUSE @@ -26,3 +26,14 @@ config CUSE
@ -835,7 +835,7 @@ index 76f09ce7e5b2..46e9a8ff9f7a 100644
+ If you want to share files between guests or with the host, answer Y + If you want to share files between guests or with the host, answer Y
+ or M. + or M.
diff --git a/fs/fuse/Makefile b/fs/fuse/Makefile diff --git a/fs/fuse/Makefile b/fs/fuse/Makefile
index 60da84a86dab..d125ff826f2d 100644 index 60da84a86..d125ff826 100644
--- a/fs/fuse/Makefile --- a/fs/fuse/Makefile
+++ b/fs/fuse/Makefile +++ b/fs/fuse/Makefile
@@ -4,5 +4,6 @@ @@ -4,5 +4,6 @@
@ -846,7 +846,7 @@ index 60da84a86dab..d125ff826f2d 100644
fuse-objs := dev.o dir.o file.o inode.o control.o xattr.o acl.o fuse-objs := dev.o dir.o file.o inode.o control.o xattr.o acl.o
diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c diff --git a/fs/fuse/cuse.c b/fs/fuse/cuse.c
index 8f68181256c0..d49d64f42768 100644 index 8f6818125..d49d64f42 100644
--- a/fs/fuse/cuse.c --- a/fs/fuse/cuse.c
+++ b/fs/fuse/cuse.c +++ b/fs/fuse/cuse.c
@@ -503,9 +503,10 @@ static int cuse_channel_open(struct inode *inode, struct file *file) @@ -503,9 +503,10 @@ static int cuse_channel_open(struct inode *inode, struct file *file)
@ -863,7 +863,7 @@ index 8f68181256c0..d49d64f42768 100644
kfree(cc); kfree(cc);
return -ENOMEM; return -ENOMEM;
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index baaed4d05b22..24d4a9b93fb6 100644 index 6ee471b72..601da8d58 100644
--- a/fs/fuse/dev.c --- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c +++ b/fs/fuse/dev.c
@@ -103,6 +103,7 @@ void fuse_request_free(struct fuse_req *req) @@ -103,6 +103,7 @@ void fuse_request_free(struct fuse_req *req)
@ -1091,7 +1091,7 @@ index baaed4d05b22..24d4a9b93fb6 100644
return -ENOMEM; return -ENOMEM;
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
index 82a13221775e..3f923fe7841a 100644 index 82a132217..3f923fe78 100644
--- a/fs/fuse/dir.c --- a/fs/fuse/dir.c
+++ b/fs/fuse/dir.c +++ b/fs/fuse/dir.c
@@ -44,12 +44,26 @@ union fuse_dentry { @@ -44,12 +44,26 @@ union fuse_dentry {
@ -1151,7 +1151,7 @@ index 82a13221775e..3f923fe7841a 100644
clear_bit(FUSE_I_SIZE_UNSTABLE, &fi->state); clear_bit(FUSE_I_SIZE_UNSTABLE, &fi->state);
diff --git a/fs/fuse/file.c b/fs/fuse/file.c diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index bd500c3b7858..51faed351c7c 100644 index 9a22aa580..7333b449e 100644
--- a/fs/fuse/file.c --- a/fs/fuse/file.c
+++ b/fs/fuse/file.c +++ b/fs/fuse/file.c
@@ -18,8 +18,18 @@ @@ -18,8 +18,18 @@
@ -1398,8 +1398,8 @@ index bd500c3b7858..51faed351c7c 100644
- file->f_op = &fuse_direct_io_file_operations; - file->f_op = &fuse_direct_io_file_operations;
if (!(ff->open_flags & FOPEN_KEEP_CACHE)) if (!(ff->open_flags & FOPEN_KEEP_CACHE))
invalidate_inode_pages2(inode->i_mapping); invalidate_inode_pages2(inode->i_mapping);
if (ff->open_flags & FOPEN_NONSEEKABLE) if (ff->open_flags & FOPEN_STREAM)
@@ -202,7 +421,7 @@ int fuse_open_common(struct inode *inode, struct file *file, bool isdir) @@ -204,7 +423,7 @@ int fuse_open_common(struct inode *inode, struct file *file, bool isdir)
int err; int err;
bool lock_inode = (file->f_flags & O_TRUNC) && bool lock_inode = (file->f_flags & O_TRUNC) &&
fc->atomic_o_trunc && fc->atomic_o_trunc &&
@ -1408,7 +1408,7 @@ index bd500c3b7858..51faed351c7c 100644
err = generic_file_open(inode, file); err = generic_file_open(inode, file);
if (err) if (err)
@@ -250,6 +469,7 @@ void fuse_release_common(struct file *file, bool isdir) @@ -252,6 +471,7 @@ void fuse_release_common(struct file *file, bool isdir)
struct fuse_file *ff = file->private_data; struct fuse_file *ff = file->private_data;
struct fuse_req *req = ff->reserved_req; struct fuse_req *req = ff->reserved_req;
int opcode = isdir ? FUSE_RELEASEDIR : FUSE_RELEASE; int opcode = isdir ? FUSE_RELEASEDIR : FUSE_RELEASE;
@ -1416,7 +1416,7 @@ index bd500c3b7858..51faed351c7c 100644
fuse_prepare_release(ff, file->f_flags, opcode); fuse_prepare_release(ff, file->f_flags, opcode);
@@ -270,8 +490,20 @@ void fuse_release_common(struct file *file, bool isdir) @@ -272,8 +492,20 @@ void fuse_release_common(struct file *file, bool isdir)
* Make the release synchronous if this is a fuseblk mount, * Make the release synchronous if this is a fuseblk mount,
* synchronous RELEASE is allowed (and desirable) in this case * synchronous RELEASE is allowed (and desirable) in this case
* because the server can be trusted not to screw up. * because the server can be trusted not to screw up.
@ -1438,7 +1438,7 @@ index bd500c3b7858..51faed351c7c 100644
} }
static int fuse_open(struct inode *inode, struct file *file) static int fuse_open(struct inode *inode, struct file *file)
@@ -916,11 +1148,23 @@ static int fuse_readpages(struct file *file, struct address_space *mapping, @@ -918,11 +1150,23 @@ static int fuse_readpages(struct file *file, struct address_space *mapping,
return err; return err;
} }
@ -1463,7 +1463,7 @@ index bd500c3b7858..51faed351c7c 100644
/* /*
* In auto invalidate mode, always update attributes on read. * In auto invalidate mode, always update attributes on read.
* Otherwise, only update if we attempt to read past EOF (to ensure * Otherwise, only update if we attempt to read past EOF (to ensure
@@ -1168,9 +1412,14 @@ static ssize_t fuse_perform_write(struct kiocb *iocb, @@ -1170,9 +1414,14 @@ static ssize_t fuse_perform_write(struct kiocb *iocb,
return res > 0 ? res : err; return res > 0 ? res : err;
} }
@ -1478,7 +1478,7 @@ index bd500c3b7858..51faed351c7c 100644
struct address_space *mapping = file->f_mapping; struct address_space *mapping = file->f_mapping;
ssize_t written = 0; ssize_t written = 0;
ssize_t written_buffered = 0; ssize_t written_buffered = 0;
@@ -1178,6 +1427,11 @@ static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from) @@ -1180,6 +1429,11 @@ static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
ssize_t err; ssize_t err;
loff_t endbyte = 0; loff_t endbyte = 0;
@ -1490,7 +1490,7 @@ index bd500c3b7858..51faed351c7c 100644
if (get_fuse_conn(inode)->writeback_cache) { if (get_fuse_conn(inode)->writeback_cache) {
/* Update size (EOF optimization) and mode (SUID clearing) */ /* Update size (EOF optimization) and mode (SUID clearing) */
err = fuse_update_attributes(mapping->host, file); err = fuse_update_attributes(mapping->host, file);
@@ -1442,16 +1696,279 @@ static ssize_t fuse_direct_write_iter(struct kiocb *iocb, struct iov_iter *from) @@ -1444,16 +1698,279 @@ static ssize_t fuse_direct_write_iter(struct kiocb *iocb, struct iov_iter *from)
/* Don't allow parallel writes to the same file */ /* Don't allow parallel writes to the same file */
inode_lock(inode); inode_lock(inode);
res = generic_write_checks(iocb, from); res = generic_write_checks(iocb, from);
@ -1774,7 +1774,7 @@ index bd500c3b7858..51faed351c7c 100644
static void fuse_writepage_free(struct fuse_conn *fc, struct fuse_req *req) static void fuse_writepage_free(struct fuse_conn *fc, struct fuse_req *req)
{ {
int i; int i;
@@ -1901,6 +2418,17 @@ static int fuse_writepages_fill(struct page *page, @@ -1903,6 +2420,17 @@ static int fuse_writepages_fill(struct page *page,
return err; return err;
} }
@ -1792,7 +1792,7 @@ index bd500c3b7858..51faed351c7c 100644
static int fuse_writepages(struct address_space *mapping, static int fuse_writepages(struct address_space *mapping,
struct writeback_control *wbc) struct writeback_control *wbc)
{ {
@@ -2074,8 +2602,20 @@ static const struct vm_operations_struct fuse_file_vm_ops = { @@ -2076,8 +2604,20 @@ static const struct vm_operations_struct fuse_file_vm_ops = {
.page_mkwrite = fuse_page_mkwrite, .page_mkwrite = fuse_page_mkwrite,
}; };
@ -1813,7 +1813,7 @@ index bd500c3b7858..51faed351c7c 100644
if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE))
fuse_link_write_file(file); fuse_link_write_file(file);
@@ -2095,6 +2635,103 @@ static int fuse_direct_mmap(struct file *file, struct vm_area_struct *vma) @@ -2097,6 +2637,103 @@ static int fuse_direct_mmap(struct file *file, struct vm_area_struct *vma)
return generic_file_mmap(file, vma); return generic_file_mmap(file, vma);
} }
@ -1917,7 +1917,7 @@ index bd500c3b7858..51faed351c7c 100644
static int convert_fuse_file_lock(struct fuse_conn *fc, static int convert_fuse_file_lock(struct fuse_conn *fc,
const struct fuse_file_lock *ffl, const struct fuse_file_lock *ffl,
struct file_lock *fl) struct file_lock *fl)
@@ -2938,8 +3575,12 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter) @@ -2940,8 +3577,12 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
return ret; return ret;
} }
@ -1932,7 +1932,7 @@ index bd500c3b7858..51faed351c7c 100644
{ {
struct fuse_file *ff = file->private_data; struct fuse_file *ff = file->private_data;
struct inode *inode = file_inode(file); struct inode *inode = file_inode(file);
@@ -2953,8 +3594,6 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset, @@ -2955,8 +3596,6 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset,
.mode = mode .mode = mode
}; };
int err; int err;
@ -1941,7 +1941,7 @@ index bd500c3b7858..51faed351c7c 100644
if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE))
return -EOPNOTSUPP; return -EOPNOTSUPP;
@@ -2962,17 +3601,13 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset, @@ -2964,17 +3603,13 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset,
if (fc->no_fallocate) if (fc->no_fallocate)
return -EOPNOTSUPP; return -EOPNOTSUPP;
@ -1965,8 +1965,8 @@ index bd500c3b7858..51faed351c7c 100644
+ fuse_sync_writes(inode); + fuse_sync_writes(inode);
} }
if (!(mode & FALLOC_FL_KEEP_SIZE)) if (!(mode & FALLOC_FL_KEEP_SIZE) &&
@@ -2999,18 +3634,42 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset, @@ -3008,18 +3643,42 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset,
file_update_time(file); file_update_time(file);
} }
@ -2012,7 +2012,7 @@ index bd500c3b7858..51faed351c7c 100644
return err; return err;
} }
@@ -3018,38 +3677,21 @@ static const struct file_operations fuse_file_operations = { @@ -3027,38 +3686,21 @@ static const struct file_operations fuse_file_operations = {
.llseek = fuse_file_llseek, .llseek = fuse_file_llseek,
.read_iter = fuse_file_read_iter, .read_iter = fuse_file_read_iter,
.write_iter = fuse_file_write_iter, .write_iter = fuse_file_write_iter,
@ -2054,7 +2054,7 @@ index bd500c3b7858..51faed351c7c 100644
static const struct address_space_operations fuse_file_aops = { static const struct address_space_operations fuse_file_aops = {
.readpage = fuse_readpage, .readpage = fuse_readpage,
.writepage = fuse_writepage, .writepage = fuse_writepage,
@@ -3063,8 +3705,271 @@ static const struct address_space_operations fuse_file_aops = { @@ -3072,8 +3714,271 @@ static const struct address_space_operations fuse_file_aops = {
.write_end = fuse_write_end, .write_end = fuse_write_end,
}; };
@ -2327,7 +2327,7 @@ index bd500c3b7858..51faed351c7c 100644
+ pr_debug("fuse: fuse_dax_free_memory() failed with err=%d\n", ret); + pr_debug("fuse: fuse_dax_free_memory() failed with err=%d\n", ret);
} }
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index cec8b8e74969..1149281ab1e8 100644 index cec8b8e74..1149281ab 100644
--- a/fs/fuse/fuse_i.h --- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h
@@ -43,6 +43,20 @@ @@ -43,6 +43,20 @@
@ -2610,7 +2610,7 @@ index cec8b8e74969..1149281ab1e8 100644
+ +
#endif /* _FS_FUSE_I_H */ #endif /* _FS_FUSE_I_H */
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index db9e60b7eb69..dd16c7f6a561 100644 index db9e60b7e..dd16c7f6a 100644
--- a/fs/fuse/inode.c --- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c +++ b/fs/fuse/inode.c
@@ -22,6 +22,8 @@ @@ -22,6 +22,8 @@
@ -3193,7 +3193,7 @@ index db9e60b7eb69..dd16c7f6a561 100644
.owner = THIS_MODULE, .owner = THIS_MODULE,
diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
new file mode 100644 new file mode 100644
index 000000000000..a0a2cd1cefc7 index 000000000..a0a2cd1ce
--- /dev/null --- /dev/null
+++ b/fs/fuse/virtio_fs.c +++ b/fs/fuse/virtio_fs.c
@@ -0,0 +1,1121 @@ @@ -0,0 +1,1121 @@
@ -4319,7 +4319,7 @@ index 000000000000..a0a2cd1cefc7
+MODULE_ALIAS_FS(KBUILD_MODNAME); +MODULE_ALIAS_FS(KBUILD_MODNAME);
+MODULE_DEVICE_TABLE(virtio, id_table); +MODULE_DEVICE_TABLE(virtio, id_table);
diff --git a/fs/splice.c b/fs/splice.c diff --git a/fs/splice.c b/fs/splice.c
index b3daa971f597..d0bfbc13a417 100644 index 485e409ef..c74f18098 100644
--- a/fs/splice.c --- a/fs/splice.c
+++ b/fs/splice.c +++ b/fs/splice.c
@@ -365,7 +365,7 @@ static ssize_t kernel_readv(struct file *file, const struct kvec *vec, @@ -365,7 +365,7 @@ static ssize_t kernel_readv(struct file *file, const struct kvec *vec,
@ -4340,7 +4340,7 @@ index b3daa971f597..d0bfbc13a417 100644
/* /*
* Send 'sd->len' bytes to socket from 'sd->file' at position 'sd->pos' * Send 'sd->len' bytes to socket from 'sd->file' at position 'sd->pos'
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
index b697866946d2..c97f8a0cb47b 100644 index b69786694..c97f8a0cb 100644
--- a/fs/xfs/xfs_aops.c --- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c
@@ -953,7 +953,7 @@ xfs_dax_writepages( @@ -953,7 +953,7 @@ xfs_dax_writepages(
@ -4353,7 +4353,7 @@ index b697866946d2..c97f8a0cb47b 100644
STATIC int STATIC int
diff --git a/include/linux/dax.h b/include/linux/dax.h diff --git a/include/linux/dax.h b/include/linux/dax.h
index 450b28db9533..a8461841f148 100644 index 450b28db9..a8461841f 100644
--- a/include/linux/dax.h --- a/include/linux/dax.h
+++ b/include/linux/dax.h +++ b/include/linux/dax.h
@@ -85,7 +85,8 @@ static inline void fs_put_dax(struct dax_device *dax_dev) @@ -85,7 +85,8 @@ static inline void fs_put_dax(struct dax_device *dax_dev)
@ -4377,10 +4377,10 @@ index 450b28db9533..a8461841f148 100644
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
diff --git a/include/linux/fs.h b/include/linux/fs.h diff --git a/include/linux/fs.h b/include/linux/fs.h
index 7b6084854bfe..1c5ef6bf46e5 100644 index d4e1b43a5..374122b5b 100644
--- a/include/linux/fs.h --- a/include/linux/fs.h
+++ b/include/linux/fs.h +++ b/include/linux/fs.h
@@ -2991,6 +2991,8 @@ extern void block_sync_page(struct page *page); @@ -3000,6 +3000,8 @@ extern void block_sync_page(struct page *page);
/* fs/splice.c */ /* fs/splice.c */
extern ssize_t generic_file_splice_read(struct file *, loff_t *, extern ssize_t generic_file_splice_read(struct file *, loff_t *,
struct pipe_inode_info *, size_t, unsigned int); struct pipe_inode_info *, size_t, unsigned int);
@ -4390,7 +4390,7 @@ index 7b6084854bfe..1c5ef6bf46e5 100644
struct file *, loff_t *, size_t, unsigned int); struct file *, loff_t *, size_t, unsigned int);
extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
index 32baf8e26735..8f85d1d8a895 100644 index 32baf8e26..8f85d1d8a 100644
--- a/include/linux/virtio_config.h --- a/include/linux/virtio_config.h
+++ b/include/linux/virtio_config.h +++ b/include/linux/virtio_config.h
@@ -10,6 +10,11 @@ @@ -10,6 +10,11 @@
@ -4439,10 +4439,10 @@ index 32baf8e26735..8f85d1d8a895 100644
{ {
return virtio_has_feature(vdev, VIRTIO_F_VERSION_1) || return virtio_has_feature(vdev, VIRTIO_F_VERSION_1) ||
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
index 92fa24c24c92..dbc5013ad747 100644 index 2170e58a2..2f35b3791 100644
--- a/include/uapi/linux/fuse.h --- a/include/uapi/linux/fuse.h
+++ b/include/uapi/linux/fuse.h +++ b/include/uapi/linux/fuse.h
@@ -381,6 +381,8 @@ enum fuse_opcode { @@ -383,6 +383,8 @@ enum fuse_opcode {
FUSE_READDIRPLUS = 44, FUSE_READDIRPLUS = 44,
FUSE_RENAME2 = 45, FUSE_RENAME2 = 45,
FUSE_LSEEK = 46, FUSE_LSEEK = 46,
@ -4451,7 +4451,7 @@ index 92fa24c24c92..dbc5013ad747 100644
/* CUSE specific operations */ /* CUSE specific operations */
CUSE_INIT = 4096, CUSE_INIT = 4096,
@@ -792,4 +794,36 @@ struct fuse_lseek_out { @@ -794,4 +796,36 @@ struct fuse_lseek_out {
uint64_t offset; uint64_t offset;
}; };
@ -4490,7 +4490,7 @@ index 92fa24c24c92..dbc5013ad747 100644
#endif /* _LINUX_FUSE_H */ #endif /* _LINUX_FUSE_H */
diff --git a/include/uapi/linux/virtio_fs.h b/include/uapi/linux/virtio_fs.h diff --git a/include/uapi/linux/virtio_fs.h b/include/uapi/linux/virtio_fs.h
new file mode 100644 new file mode 100644
index 000000000000..d4bb549568eb index 000000000..d4bb54956
--- /dev/null --- /dev/null
+++ b/include/uapi/linux/virtio_fs.h +++ b/include/uapi/linux/virtio_fs.h
@@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
@ -4539,7 +4539,7 @@ index 000000000000..d4bb549568eb
+ +
+#endif /* _UAPI_LINUX_VIRTIO_FS_H */ +#endif /* _UAPI_LINUX_VIRTIO_FS_H */
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index 6d5c3b2d4f4d..884b0e2734bb 100644 index 6d5c3b2d4..884b0e273 100644
--- a/include/uapi/linux/virtio_ids.h --- a/include/uapi/linux/virtio_ids.h
+++ b/include/uapi/linux/virtio_ids.h +++ b/include/uapi/linux/virtio_ids.h
@@ -43,5 +43,6 @@ @@ -43,5 +43,6 @@
@ -4550,7 +4550,7 @@ index 6d5c3b2d4f4d..884b0e2734bb 100644
#endif /* _LINUX_VIRTIO_IDS_H */ #endif /* _LINUX_VIRTIO_IDS_H */
diff --git a/include/uapi/linux/virtio_mmio.h b/include/uapi/linux/virtio_mmio.h diff --git a/include/uapi/linux/virtio_mmio.h b/include/uapi/linux/virtio_mmio.h
index c4b09689ab64..0650f91bea6c 100644 index c4b09689a..0650f91be 100644
--- a/include/uapi/linux/virtio_mmio.h --- a/include/uapi/linux/virtio_mmio.h
+++ b/include/uapi/linux/virtio_mmio.h +++ b/include/uapi/linux/virtio_mmio.h
@@ -122,6 +122,17 @@ @@ -122,6 +122,17 @@
@ -4572,7 +4572,7 @@ index c4b09689ab64..0650f91bea6c 100644
#define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc #define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc
diff --git a/include/uapi/linux/virtio_pci.h b/include/uapi/linux/virtio_pci.h diff --git a/include/uapi/linux/virtio_pci.h b/include/uapi/linux/virtio_pci.h
index 90007a1abcab..31841a60a4ad 100644 index 90007a1ab..31841a60a 100644
--- a/include/uapi/linux/virtio_pci.h --- a/include/uapi/linux/virtio_pci.h
+++ b/include/uapi/linux/virtio_pci.h +++ b/include/uapi/linux/virtio_pci.h
@@ -113,6 +113,8 @@ @@ -113,6 +113,8 @@
@ -4600,5 +4600,5 @@ index 90007a1abcab..31841a60a4ad 100644
#define VIRTIO_PCI_CAP_VNDR 0 #define VIRTIO_PCI_CAP_VNDR 0
#define VIRTIO_PCI_CAP_NEXT 1 #define VIRTIO_PCI_CAP_NEXT 1
-- --
2.20.1 2.19.2

View File

@ -1,8 +1,8 @@
From a4ed45e6019646ace9f0ec9d1780122f6a2b75d2 Mon Sep 17 00:00:00 2001 From db193ecf3b98ead50f57f58154b7e43c98099e0b Mon Sep 17 00:00:00 2001
From: Penny Zheng <penny.zheng@arm.com> From: Penny Zheng <penny.zheng@arm.com>
Date: Thu, 20 Jun 2019 17:55:53 +0800 Date: Thu, 20 Jun 2019 17:55:53 +0800
Subject: [PATCH 5/5] arm64: backport Arm64 KVM Dynamic IPA and 52bit IPA Subject: [PATCH] arm64: backport Arm64 KVM Dynamic IPA and 52bit IPA support
support to 4.19.X to 4.19.X
This patch is based on Suzuki K Poulose's This patch is based on Suzuki K Poulose's
[v6,00/18] kvm: arm64: Dynamic IPA and 52bit IPA [v6,00/18] kvm: arm64: Dynamic IPA and 52bit IPA
@ -52,10 +52,10 @@ Signed-off-by: Penny Zheng <penny.zheng@arm.com>
delete mode 100644 arch/arm64/kvm/hyp/s2-setup.c delete mode 100644 arch/arm64/kvm/hyp/s2-setup.c
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 92eb1f42240d..1124b6d8d2db 100644 index a29301d6e..13e57f5cf 100644
--- a/Documentation/admin-guide/kernel-parameters.txt --- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -2751,6 +2751,10 @@ @@ -2818,6 +2818,10 @@
noclflush [BUGS=X86] Don't use the CLFLUSH instruction noclflush [BUGS=X86] Don't use the CLFLUSH instruction
@ -67,7 +67,7 @@ index 92eb1f42240d..1124b6d8d2db 100644
nodsp [SH] Disable hardware DSP at boot time. nodsp [SH] Disable hardware DSP at boot time.
diff --git a/arch/arm/include/asm/kvm_arm.h b/arch/arm/include/asm/kvm_arm.h diff --git a/arch/arm/include/asm/kvm_arm.h b/arch/arm/include/asm/kvm_arm.h
index 3ab8b3781bfe..b95f8d0d9f17 100644 index 3ab8b3781..b95f8d0d9 100644
--- a/arch/arm/include/asm/kvm_arm.h --- a/arch/arm/include/asm/kvm_arm.h
+++ b/arch/arm/include/asm/kvm_arm.h +++ b/arch/arm/include/asm/kvm_arm.h
@@ -133,8 +133,7 @@ @@ -133,8 +133,7 @@
@ -89,10 +89,10 @@ index 3ab8b3781bfe..b95f8d0d9f17 100644
#define VTTBR_VMID_SHIFT _AC(48, ULL) #define VTTBR_VMID_SHIFT _AC(48, ULL)
#define VTTBR_VMID_MASK(size) (_AT(u64, (1 << size) - 1) << VTTBR_VMID_SHIFT) #define VTTBR_VMID_MASK(size) (_AT(u64, (1 << size) - 1) << VTTBR_VMID_SHIFT)
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 3ad482d2f1eb..5ca5d9af0c26 100644 index d0d0227fc..4ecd426e9 100644
--- a/arch/arm/include/asm/kvm_host.h --- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h +++ b/arch/arm/include/asm/kvm_host.h
@@ -273,7 +273,7 @@ static inline void __cpu_init_stage2(void) @@ -283,7 +283,7 @@ static inline void __cpu_init_stage2(void)
kvm_call_hyp(__init_stage2_translation); kvm_call_hyp(__init_stage2_translation);
} }
@ -101,7 +101,7 @@ index 3ad482d2f1eb..5ca5d9af0c26 100644
{ {
return 0; return 0;
} }
@@ -354,4 +354,15 @@ static inline void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu) {} @@ -364,4 +364,15 @@ static inline void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu) {}
struct kvm *kvm_arch_alloc_vm(void); struct kvm *kvm_arch_alloc_vm(void);
void kvm_arch_free_vm(struct kvm *kvm); void kvm_arch_free_vm(struct kvm *kvm);
@ -118,7 +118,7 @@ index 3ad482d2f1eb..5ca5d9af0c26 100644
+ +
#endif /* __ARM_KVM_HOST_H__ */ #endif /* __ARM_KVM_HOST_H__ */
diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h
index 265ea9cf7df7..c9dcfd918c2a 100644 index 523c499e4..938a98a9e 100644
--- a/arch/arm/include/asm/kvm_mmu.h --- a/arch/arm/include/asm/kvm_mmu.h
+++ b/arch/arm/include/asm/kvm_mmu.h +++ b/arch/arm/include/asm/kvm_mmu.h
@@ -35,16 +35,12 @@ @@ -35,16 +35,12 @@
@ -153,7 +153,7 @@ index 265ea9cf7df7..c9dcfd918c2a 100644
int create_hyp_mappings(void *from, void *to, pgprot_t prot); int create_hyp_mappings(void *from, void *to, pgprot_t prot);
int create_hyp_io_mappings(phys_addr_t phys_addr, size_t size, int create_hyp_io_mappings(phys_addr_t phys_addr, size_t size,
void __iomem **kaddr, void __iomem **kaddr,
@@ -355,6 +358,23 @@ static inline int hyp_map_aux_data(void) @@ -366,6 +369,23 @@ static inline int hyp_map_aux_data(void)
#define kvm_phys_to_vttbr(addr) (addr) #define kvm_phys_to_vttbr(addr) (addr)
@ -178,7 +178,7 @@ index 265ea9cf7df7..c9dcfd918c2a 100644
#endif /* __ARM_KVM_MMU_H__ */ #endif /* __ARM_KVM_MMU_H__ */
diff --git a/arch/arm/include/asm/stage2_pgtable.h b/arch/arm/include/asm/stage2_pgtable.h diff --git a/arch/arm/include/asm/stage2_pgtable.h b/arch/arm/include/asm/stage2_pgtable.h
index 460d616bb2d6..f6a7ea805232 100644 index 460d616bb..f6a7ea805 100644
--- a/arch/arm/include/asm/stage2_pgtable.h --- a/arch/arm/include/asm/stage2_pgtable.h
+++ b/arch/arm/include/asm/stage2_pgtable.h +++ b/arch/arm/include/asm/stage2_pgtable.h
@@ -19,43 +19,53 @@ @@ -19,43 +19,53 @@
@ -258,10 +258,10 @@ index 460d616bb2d6..f6a7ea805232 100644
#endif /* __ARM_S2_PGTABLE_H_ */ #endif /* __ARM_S2_PGTABLE_H_ */
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 1b1a0e95c751..f9162da575a9 100644 index 8790a29d0..3ba56830c 100644
--- a/arch/arm64/Kconfig --- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig
@@ -1132,6 +1132,19 @@ config ARM64_RAS_EXTN @@ -1150,6 +1150,19 @@ config ARM64_RAS_EXTN
and access the new registers if the system supports the extension. and access the new registers if the system supports the extension.
Platform RAS features may additionally depend on firmware support. Platform RAS features may additionally depend on firmware support.
@ -282,7 +282,7 @@ index 1b1a0e95c751..f9162da575a9 100644
config ARM64_SVE config ARM64_SVE
diff --git a/arch/arm64/include/asm/cpucaps.h b/arch/arm64/include/asm/cpucaps.h diff --git a/arch/arm64/include/asm/cpucaps.h b/arch/arm64/include/asm/cpucaps.h
index 25ce9056cf64..5538e927b380 100644 index 25ce9056c..5538e927b 100644
--- a/arch/arm64/include/asm/cpucaps.h --- a/arch/arm64/include/asm/cpucaps.h
+++ b/arch/arm64/include/asm/cpucaps.h +++ b/arch/arm64/include/asm/cpucaps.h
@@ -52,7 +52,8 @@ @@ -52,7 +52,8 @@
@ -296,7 +296,7 @@ index 25ce9056cf64..5538e927b380 100644
#endif /* __ASM_CPUCAPS_H */ #endif /* __ASM_CPUCAPS_H */
diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h
index 1717ba1db35d..6dc5823d5f12 100644 index 1717ba1db..6dc5823d5 100644
--- a/arch/arm64/include/asm/cpufeature.h --- a/arch/arm64/include/asm/cpufeature.h
+++ b/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h
@@ -262,7 +262,7 @@ extern struct arm64_ftr_reg arm64_ftr_reg_ctrel0; @@ -262,7 +262,7 @@ extern struct arm64_ftr_reg arm64_ftr_reg_ctrel0;
@ -349,18 +349,18 @@ index 1717ba1db35d..6dc5823d5f12 100644
#endif #endif
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
index aa45df752a16..6f602af5263c 100644 index 8b284cbf8..bc2327d4a 100644
--- a/arch/arm64/include/asm/kvm_arm.h --- a/arch/arm64/include/asm/kvm_arm.h
+++ b/arch/arm64/include/asm/kvm_arm.h +++ b/arch/arm64/include/asm/kvm_arm.h
@@ -107,6 +107,7 @@ @@ -110,6 +110,7 @@
#define VTCR_EL2_RES1 (1 << 31) #define VTCR_EL2_RES1 (1U << 31)
#define VTCR_EL2_HD (1 << 22) #define VTCR_EL2_HD (1 << 22)
#define VTCR_EL2_HA (1 << 21) #define VTCR_EL2_HA (1 << 21)
+#define VTCR_EL2_PS_SHIFT TCR_EL2_PS_SHIFT +#define VTCR_EL2_PS_SHIFT TCR_EL2_PS_SHIFT
#define VTCR_EL2_PS_MASK TCR_EL2_PS_MASK #define VTCR_EL2_PS_MASK TCR_EL2_PS_MASK
#define VTCR_EL2_TG0_MASK TCR_TG0_MASK #define VTCR_EL2_TG0_MASK TCR_TG0_MASK
#define VTCR_EL2_TG0_4K TCR_TG0_4K #define VTCR_EL2_TG0_4K TCR_TG0_4K
@@ -120,62 +121,150 @@ @@ -123,62 +124,150 @@
#define VTCR_EL2_IRGN0_WBWA TCR_IRGN0_WBWA #define VTCR_EL2_IRGN0_WBWA TCR_IRGN0_WBWA
#define VTCR_EL2_SL0_SHIFT 6 #define VTCR_EL2_SL0_SHIFT 6
#define VTCR_EL2_SL0_MASK (3 << VTCR_EL2_SL0_SHIFT) #define VTCR_EL2_SL0_MASK (3 << VTCR_EL2_SL0_SHIFT)
@ -541,7 +541,7 @@ index aa45df752a16..6f602af5263c 100644
#define VTTBR_VMID_SHIFT (UL(48)) #define VTTBR_VMID_SHIFT (UL(48))
#define VTTBR_VMID_MASK(size) (_AT(u64, (1 << size) - 1) << VTTBR_VMID_SHIFT) #define VTTBR_VMID_MASK(size) (_AT(u64, (1 << size) - 1) << VTTBR_VMID_SHIFT)
@@ -223,6 +312,13 @@ @@ -226,6 +315,13 @@
/* Hyp Prefetch Fault Address Register (HPFAR/HDFAR) */ /* Hyp Prefetch Fault Address Register (HPFAR/HDFAR) */
#define HPFAR_MASK (~UL(0xf)) #define HPFAR_MASK (~UL(0xf))
@ -556,7 +556,7 @@ index aa45df752a16..6f602af5263c 100644
#define kvm_arm_exception_type \ #define kvm_arm_exception_type \
{0, "IRQ" }, \ {0, "IRQ" }, \
diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h
index 102b5a5c47b6..aea01a09eb94 100644 index 102b5a5c4..aea01a09e 100644
--- a/arch/arm64/include/asm/kvm_asm.h --- a/arch/arm64/include/asm/kvm_asm.h
+++ b/arch/arm64/include/asm/kvm_asm.h +++ b/arch/arm64/include/asm/kvm_asm.h
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
@ -577,10 +577,10 @@ index 102b5a5c47b6..aea01a09eb94 100644
#define __hyp_this_cpu_ptr(sym) \ #define __hyp_this_cpu_ptr(sym) \
({ \ ({ \
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 3d6d7336f871..f84052f306af 100644 index 6abe40029..cb61992c1 100644
--- a/arch/arm64/include/asm/kvm_host.h --- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h
@@ -53,7 +53,7 @@ DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use); @@ -54,7 +54,7 @@ DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
int __attribute_const__ kvm_target_cpu(void); int __attribute_const__ kvm_target_cpu(void);
int kvm_reset_vcpu(struct kvm_vcpu *vcpu); int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
@ -589,7 +589,7 @@ index 3d6d7336f871..f84052f306af 100644
void __extended_idmap_trampoline(phys_addr_t boot_pgd, phys_addr_t idmap_start); void __extended_idmap_trampoline(phys_addr_t boot_pgd, phys_addr_t idmap_start);
struct kvm_arch { struct kvm_arch {
@@ -61,11 +61,13 @@ struct kvm_arch { @@ -62,11 +62,13 @@ struct kvm_arch {
u64 vmid_gen; u64 vmid_gen;
u32 vmid; u32 vmid;
@ -604,7 +604,7 @@ index 3d6d7336f871..f84052f306af 100644
/* The last vcpu id that ran on each physical CPU */ /* The last vcpu id that ran on each physical CPU */
int __percpu *last_vcpu_ran; int __percpu *last_vcpu_ran;
@@ -440,13 +442,7 @@ int kvm_arm_vcpu_arch_get_attr(struct kvm_vcpu *vcpu, @@ -451,13 +453,7 @@ int kvm_arm_vcpu_arch_get_attr(struct kvm_vcpu *vcpu,
int kvm_arm_vcpu_arch_has_attr(struct kvm_vcpu *vcpu, int kvm_arm_vcpu_arch_has_attr(struct kvm_vcpu *vcpu,
struct kvm_device_attr *attr); struct kvm_device_attr *attr);
@ -619,7 +619,7 @@ index 3d6d7336f871..f84052f306af 100644
/* Guest/host FPSIMD coordination helpers */ /* Guest/host FPSIMD coordination helpers */
int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu); int kvm_arch_vcpu_run_map_fp(struct kvm_vcpu *vcpu);
@@ -509,8 +505,12 @@ static inline int kvm_arm_have_ssbd(void) @@ -520,8 +516,12 @@ static inline int kvm_arm_have_ssbd(void)
void kvm_vcpu_load_sysregs(struct kvm_vcpu *vcpu); void kvm_vcpu_load_sysregs(struct kvm_vcpu *vcpu);
void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu); void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu);
@ -633,7 +633,7 @@ index 3d6d7336f871..f84052f306af 100644
+ +
#endif /* __ARM64_KVM_HOST_H__ */ #endif /* __ARM64_KVM_HOST_H__ */
diff --git a/arch/arm64/include/asm/kvm_hyp.h b/arch/arm64/include/asm/kvm_hyp.h diff --git a/arch/arm64/include/asm/kvm_hyp.h b/arch/arm64/include/asm/kvm_hyp.h
index 384c34397619..23aca66767f9 100644 index 384c34397..23aca6676 100644
--- a/arch/arm64/include/asm/kvm_hyp.h --- a/arch/arm64/include/asm/kvm_hyp.h
+++ b/arch/arm64/include/asm/kvm_hyp.h +++ b/arch/arm64/include/asm/kvm_hyp.h
@@ -155,5 +155,15 @@ void deactivate_traps_vhe_put(void); @@ -155,5 +155,15 @@ void deactivate_traps_vhe_put(void);
@ -653,7 +653,7 @@ index 384c34397619..23aca66767f9 100644
#endif /* __ARM64_KVM_HYP_H__ */ #endif /* __ARM64_KVM_HYP_H__ */
diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
index d6fff7de5539..658657367f2f 100644 index b2558447c..64c9c26c9 100644
--- a/arch/arm64/include/asm/kvm_mmu.h --- a/arch/arm64/include/asm/kvm_mmu.h
+++ b/arch/arm64/include/asm/kvm_mmu.h +++ b/arch/arm64/include/asm/kvm_mmu.h
@@ -141,8 +141,16 @@ static inline unsigned long __kern_hyp_va(unsigned long v) @@ -141,8 +141,16 @@ static inline unsigned long __kern_hyp_va(unsigned long v)
@ -688,7 +688,7 @@ index d6fff7de5539..658657367f2f 100644
#define hyp_pte_table_empty(ptep) kvm_page_empty(ptep) #define hyp_pte_table_empty(ptep) kvm_page_empty(ptep)
#ifdef __PAGETABLE_PMD_FOLDED #ifdef __PAGETABLE_PMD_FOLDED
@@ -517,5 +519,34 @@ static inline int hyp_map_aux_data(void) @@ -528,5 +530,34 @@ static inline int hyp_map_aux_data(void)
#define kvm_phys_to_vttbr(addr) phys_to_ttbr(addr) #define kvm_phys_to_vttbr(addr) phys_to_ttbr(addr)
@ -724,7 +724,7 @@ index d6fff7de5539..658657367f2f 100644
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* __ARM64_KVM_MMU_H__ */ #endif /* __ARM64_KVM_MMU_H__ */
diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index 39ec0b8a689e..1e58bf58c22b 100644 index 39ec0b8a6..1e58bf58c 100644
--- a/arch/arm64/include/asm/mmu_context.h --- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h +++ b/arch/arm64/include/asm/mmu_context.h
@@ -147,12 +147,25 @@ static inline void cpu_replace_ttbr1(pgd_t *pgdp) @@ -147,12 +147,25 @@ static inline void cpu_replace_ttbr1(pgd_t *pgdp)
@ -756,7 +756,7 @@ index 39ec0b8a689e..1e58bf58c22b 100644
} }
diff --git a/arch/arm64/include/asm/pgtable-hwdef.h b/arch/arm64/include/asm/pgtable-hwdef.h diff --git a/arch/arm64/include/asm/pgtable-hwdef.h b/arch/arm64/include/asm/pgtable-hwdef.h
index fd208eac9f2a..1d7d8da2ef9b 100644 index fd208eac9..1d7d8da2e 100644
--- a/arch/arm64/include/asm/pgtable-hwdef.h --- a/arch/arm64/include/asm/pgtable-hwdef.h
+++ b/arch/arm64/include/asm/pgtable-hwdef.h +++ b/arch/arm64/include/asm/pgtable-hwdef.h
@@ -211,6 +211,8 @@ @@ -211,6 +211,8 @@
@ -770,7 +770,7 @@ index fd208eac9f2a..1d7d8da2ef9b 100644
*/ */
diff --git a/arch/arm64/include/asm/stage2_pgtable-nopmd.h b/arch/arm64/include/asm/stage2_pgtable-nopmd.h diff --git a/arch/arm64/include/asm/stage2_pgtable-nopmd.h b/arch/arm64/include/asm/stage2_pgtable-nopmd.h
deleted file mode 100644 deleted file mode 100644
index 2656a0fd05a6..000000000000 index 2656a0fd0..000000000
--- a/arch/arm64/include/asm/stage2_pgtable-nopmd.h --- a/arch/arm64/include/asm/stage2_pgtable-nopmd.h
+++ /dev/null +++ /dev/null
@@ -1,42 +0,0 @@ @@ -1,42 +0,0 @@
@ -818,7 +818,7 @@ index 2656a0fd05a6..000000000000
-#endif -#endif
diff --git a/arch/arm64/include/asm/stage2_pgtable-nopud.h b/arch/arm64/include/asm/stage2_pgtable-nopud.h diff --git a/arch/arm64/include/asm/stage2_pgtable-nopud.h b/arch/arm64/include/asm/stage2_pgtable-nopud.h
deleted file mode 100644 deleted file mode 100644
index 5ee87b54ebf3..000000000000 index 5ee87b54e..000000000
--- a/arch/arm64/include/asm/stage2_pgtable-nopud.h --- a/arch/arm64/include/asm/stage2_pgtable-nopud.h
+++ /dev/null +++ /dev/null
@@ -1,39 +0,0 @@ @@ -1,39 +0,0 @@
@ -862,7 +862,7 @@ index 5ee87b54ebf3..000000000000
- -
-#endif -#endif
diff --git a/arch/arm64/include/asm/stage2_pgtable.h b/arch/arm64/include/asm/stage2_pgtable.h diff --git a/arch/arm64/include/asm/stage2_pgtable.h b/arch/arm64/include/asm/stage2_pgtable.h
index 8b68099348e5..d352f6df8d2c 100644 index 8b6809934..d352f6df8 100644
--- a/arch/arm64/include/asm/stage2_pgtable.h --- a/arch/arm64/include/asm/stage2_pgtable.h
+++ b/arch/arm64/include/asm/stage2_pgtable.h +++ b/arch/arm64/include/asm/stage2_pgtable.h
@@ -19,8 +19,16 @@ @@ -19,8 +19,16 @@
@ -1158,7 +1158,7 @@ index 8b68099348e5..d352f6df8d2c 100644
return (boundary - 1 < end - 1) ? boundary : end; return (boundary - 1 < end - 1) ? boundary : end;
} }
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index e238b7932096..734f44e63bbb 100644 index 93f69d822..e14d600d7 100644
--- a/arch/arm64/kernel/cpufeature.c --- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
@ -1177,8 +1177,8 @@ index e238b7932096..734f44e63bbb 100644
/* /*
* NOTE: Any changes to the visibility of features should be kept in * NOTE: Any changes to the visibility of features should be kept in
@@ -859,6 +861,29 @@ static bool has_cache_dic(const struct arm64_cpu_capabilities *entry, @@ -873,6 +875,29 @@ static bool has_cache_dic(const struct arm64_cpu_capabilities *entry,
return read_sanitised_ftr_reg(SYS_CTR_EL0) & BIT(CTR_DIC_SHIFT); return ctr & BIT(CTR_DIC_SHIFT);
} }
+static bool nocnp; +static bool nocnp;
@ -1207,7 +1207,7 @@ index e238b7932096..734f44e63bbb 100644
#ifdef CONFIG_UNMAP_KERNEL_AT_EL0 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0
static int __kpti_forced; /* 0: not forced, >0: forced on, <0: forced off */ static int __kpti_forced; /* 0: not forced, >0: forced on, <0: forced off */
@@ -1221,6 +1246,19 @@ static const struct arm64_cpu_capabilities arm64_features[] = { @@ -1235,6 +1260,19 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
.matches = has_hw_dbm, .matches = has_hw_dbm,
.cpu_enable = cpu_enable_hw_dbm, .cpu_enable = cpu_enable_hw_dbm,
}, },
@ -1227,7 +1227,7 @@ index e238b7932096..734f44e63bbb 100644
#endif #endif
{}, {},
}; };
@@ -1658,6 +1696,11 @@ cpufeature_pan_not_uao(const struct arm64_cpu_capabilities *entry, int __unused) @@ -1672,6 +1710,11 @@ cpufeature_pan_not_uao(const struct arm64_cpu_capabilities *entry, int __unused)
return (cpus_have_const_cap(ARM64_HAS_PAN) && !cpus_have_const_cap(ARM64_HAS_UAO)); return (cpus_have_const_cap(ARM64_HAS_PAN) && !cpus_have_const_cap(ARM64_HAS_UAO));
} }
@ -1240,7 +1240,7 @@ index e238b7932096..734f44e63bbb 100644
* We emulate only the following system register space. * We emulate only the following system register space.
* Op0 = 0x3, CRn = 0x0, Op1 = 0x0, CRm = [0, 4 - 7] * Op0 = 0x3, CRn = 0x0, Op1 = 0x0, CRm = [0, 4 - 7]
diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c
index 70c283368b64..9405d1b7f4b0 100644 index 70c283368..9405d1b7f 100644
--- a/arch/arm64/kernel/suspend.c --- a/arch/arm64/kernel/suspend.c
+++ b/arch/arm64/kernel/suspend.c +++ b/arch/arm64/kernel/suspend.c
@@ -48,6 +48,10 @@ void notrace __cpu_suspend_exit(void) @@ -48,6 +48,10 @@ void notrace __cpu_suspend_exit(void)
@ -1255,7 +1255,7 @@ index 70c283368b64..9405d1b7f4b0 100644
* PSTATE was not saved over suspend/resume, re-enable any detected * PSTATE was not saved over suspend/resume, re-enable any detected
* features that might not have been set correctly. * features that might not have been set correctly.
diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
index a6c9fbaeaefc..dd436a50fce7 100644 index a6c9fbaea..dd436a50f 100644
--- a/arch/arm64/kvm/guest.c --- a/arch/arm64/kvm/guest.c
+++ b/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c
@@ -391,15 +391,15 @@ int __attribute_const__ kvm_target_cpu(void) @@ -391,15 +391,15 @@ int __attribute_const__ kvm_target_cpu(void)
@ -1278,7 +1278,7 @@ index a6c9fbaeaefc..dd436a50fce7 100644
/* Return a default generic target */ /* Return a default generic target */
return KVM_ARM_TARGET_GENERIC_V8; return KVM_ARM_TARGET_GENERIC_V8;
diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S
index ea9225160786..4576b86a5579 100644 index ea9225160..4576b86a5 100644
--- a/arch/arm64/kvm/hyp-init.S --- a/arch/arm64/kvm/hyp-init.S
+++ b/arch/arm64/kvm/hyp-init.S +++ b/arch/arm64/kvm/hyp-init.S
@@ -65,6 +65,9 @@ __do_hyp_init: @@ -65,6 +65,9 @@ __do_hyp_init:
@ -1292,7 +1292,7 @@ index ea9225160786..4576b86a5579 100644
mrs x4, tcr_el1 mrs x4, tcr_el1
diff --git a/arch/arm64/kvm/hyp/Makefile b/arch/arm64/kvm/hyp/Makefile diff --git a/arch/arm64/kvm/hyp/Makefile b/arch/arm64/kvm/hyp/Makefile
index 2fabc2dc1966..82d1904328ad 100644 index 2fabc2dc1..82d190432 100644
--- a/arch/arm64/kvm/hyp/Makefile --- a/arch/arm64/kvm/hyp/Makefile
+++ b/arch/arm64/kvm/hyp/Makefile +++ b/arch/arm64/kvm/hyp/Makefile
@@ -19,7 +19,6 @@ obj-$(CONFIG_KVM_ARM_HOST) += switch.o @@ -19,7 +19,6 @@ obj-$(CONFIG_KVM_ARM_HOST) += switch.o
@ -1305,7 +1305,7 @@ index 2fabc2dc1966..82d1904328ad 100644
# compiler instrumentation that inserts callbacks or checks into the code may # compiler instrumentation that inserts callbacks or checks into the code may
diff --git a/arch/arm64/kvm/hyp/s2-setup.c b/arch/arm64/kvm/hyp/s2-setup.c diff --git a/arch/arm64/kvm/hyp/s2-setup.c b/arch/arm64/kvm/hyp/s2-setup.c
deleted file mode 100644 deleted file mode 100644
index 603e1ee83e89..000000000000 index 603e1ee83..000000000
--- a/arch/arm64/kvm/hyp/s2-setup.c --- a/arch/arm64/kvm/hyp/s2-setup.c
+++ /dev/null +++ /dev/null
@@ -1,90 +0,0 @@ @@ -1,90 +0,0 @@
@ -1400,10 +1400,10 @@ index 603e1ee83e89..000000000000
- return parange; - return parange;
-} -}
diff --git a/arch/arm64/kvm/hyp/switch.c b/arch/arm64/kvm/hyp/switch.c diff --git a/arch/arm64/kvm/hyp/switch.c b/arch/arm64/kvm/hyp/switch.c
index ca46153d7915..7cc175c88a37 100644 index 6290a4e81..c9f4b25f6 100644
--- a/arch/arm64/kvm/hyp/switch.c --- a/arch/arm64/kvm/hyp/switch.c
+++ b/arch/arm64/kvm/hyp/switch.c +++ b/arch/arm64/kvm/hyp/switch.c
@@ -198,7 +198,7 @@ void deactivate_traps_vhe_put(void) @@ -201,7 +201,7 @@ void deactivate_traps_vhe_put(void)
static void __hyp_text __activate_vm(struct kvm *kvm) static void __hyp_text __activate_vm(struct kvm *kvm)
{ {
@ -1412,7 +1412,7 @@ index ca46153d7915..7cc175c88a37 100644
} }
static void __hyp_text __deactivate_vm(struct kvm_vcpu *vcpu) static void __hyp_text __deactivate_vm(struct kvm_vcpu *vcpu)
@@ -263,7 +263,7 @@ static bool __hyp_text __translate_far_to_hpfar(u64 far, u64 *hpfar) @@ -266,7 +266,7 @@ static bool __hyp_text __translate_far_to_hpfar(u64 far, u64 *hpfar)
return false; /* Translation failed, back to guest */ return false; /* Translation failed, back to guest */
/* Convert PAR to HPFAR format */ /* Convert PAR to HPFAR format */
@ -1422,10 +1422,10 @@ index ca46153d7915..7cc175c88a37 100644
} }
diff --git a/arch/arm64/kvm/hyp/tlb.c b/arch/arm64/kvm/hyp/tlb.c diff --git a/arch/arm64/kvm/hyp/tlb.c b/arch/arm64/kvm/hyp/tlb.c
index 131c7772703c..4dbd9c69a96d 100644 index c041eab3d..7fcc9c1a5 100644
--- a/arch/arm64/kvm/hyp/tlb.c --- a/arch/arm64/kvm/hyp/tlb.c
+++ b/arch/arm64/kvm/hyp/tlb.c +++ b/arch/arm64/kvm/hyp/tlb.c
@@ -30,7 +30,7 @@ static void __hyp_text __tlb_switch_to_guest_vhe(struct kvm *kvm) @@ -35,7 +35,7 @@ static void __hyp_text __tlb_switch_to_guest_vhe(struct kvm *kvm,
* bits. Changing E2H is impossible (goodbye TTBR1_EL2), so * bits. Changing E2H is impossible (goodbye TTBR1_EL2), so
* let's flip TGE before executing the TLB operation. * let's flip TGE before executing the TLB operation.
*/ */
@ -1434,9 +1434,9 @@ index 131c7772703c..4dbd9c69a96d 100644
val = read_sysreg(hcr_el2); val = read_sysreg(hcr_el2);
val &= ~HCR_TGE; val &= ~HCR_TGE;
write_sysreg(val, hcr_el2); write_sysreg(val, hcr_el2);
@@ -39,7 +39,7 @@ static void __hyp_text __tlb_switch_to_guest_vhe(struct kvm *kvm) @@ -45,7 +45,7 @@ static void __hyp_text __tlb_switch_to_guest_vhe(struct kvm *kvm,
static void __hyp_text __tlb_switch_to_guest_nvhe(struct kvm *kvm,
static void __hyp_text __tlb_switch_to_guest_nvhe(struct kvm *kvm) unsigned long *flags)
{ {
- write_sysreg(kvm->arch.vttbr, vttbr_el2); - write_sysreg(kvm->arch.vttbr, vttbr_el2);
+ __load_guest_stage2(kvm); + __load_guest_stage2(kvm);
@ -1444,7 +1444,7 @@ index 131c7772703c..4dbd9c69a96d 100644
} }
diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c
index e37c78bbe1ca..b72a3dd56204 100644 index 0688816f1..e2a0500cd 100644
--- a/arch/arm64/kvm/reset.c --- a/arch/arm64/kvm/reset.c
+++ b/arch/arm64/kvm/reset.c +++ b/arch/arm64/kvm/reset.c
@@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
@ -1455,8 +1455,8 @@ index e37c78bbe1ca..b72a3dd56204 100644
#include <asm/cputype.h> #include <asm/cputype.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/kvm_arm.h> #include <asm/kvm_arm.h>
@@ -33,6 +34,9 @@ @@ -34,6 +35,9 @@
#include <asm/kvm_coproc.h> #include <asm/kvm_emulate.h>
#include <asm/kvm_mmu.h> #include <asm/kvm_mmu.h>
+/* Maximum phys_shift supported for any VM on this host */ +/* Maximum phys_shift supported for any VM on this host */
@ -1465,7 +1465,7 @@ index e37c78bbe1ca..b72a3dd56204 100644
/* /*
* ARMv8 Reset Values * ARMv8 Reset Values
*/ */
@@ -55,12 +59,12 @@ static bool cpu_has_32bit_el1(void) @@ -56,12 +60,12 @@ static bool cpu_has_32bit_el1(void)
} }
/** /**
@ -1480,7 +1480,7 @@ index e37c78bbe1ca..b72a3dd56204 100644
{ {
int r; int r;
@@ -82,9 +86,11 @@ int kvm_arch_dev_ioctl_check_extension(struct kvm *kvm, long ext) @@ -83,9 +87,11 @@ int kvm_arch_dev_ioctl_check_extension(struct kvm *kvm, long ext)
break; break;
case KVM_CAP_SET_GUEST_DEBUG: case KVM_CAP_SET_GUEST_DEBUG:
case KVM_CAP_VCPU_ATTRIBUTES: case KVM_CAP_VCPU_ATTRIBUTES:
@ -1493,9 +1493,9 @@ index e37c78bbe1ca..b72a3dd56204 100644
default: default:
r = 0; r = 0;
} }
@@ -133,3 +139,99 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu) @@ -179,3 +185,99 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
/* Reset timer */ preempt_enable();
return kvm_timer_vcpu_reset(vcpu); return ret;
} }
+ +
+void kvm_set_ipa_limit(void) +void kvm_set_ipa_limit(void)
@ -1594,7 +1594,7 @@ index e37c78bbe1ca..b72a3dd56204 100644
+ return 0; + return 0;
+} +}
diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c
index c127f94da8e2..a65af49e12e7 100644 index c127f94da..a65af49e1 100644
--- a/arch/arm64/mm/context.c --- a/arch/arm64/mm/context.c
+++ b/arch/arm64/mm/context.c +++ b/arch/arm64/mm/context.c
@@ -196,6 +196,9 @@ void check_and_switch_context(struct mm_struct *mm, unsigned int cpu) @@ -196,6 +196,9 @@ void check_and_switch_context(struct mm_struct *mm, unsigned int cpu)
@ -1608,10 +1608,10 @@ index c127f94da8e2..a65af49e12e7 100644
/* /*
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
index 03646e6a2ef4..2c75b0b903ae 100644 index 8cce091b6..07b951980 100644
--- a/arch/arm64/mm/proc.S --- a/arch/arm64/mm/proc.S
+++ b/arch/arm64/mm/proc.S +++ b/arch/arm64/mm/proc.S
@@ -160,6 +160,12 @@ ENTRY(cpu_do_switch_mm) @@ -162,6 +162,12 @@ ENTRY(cpu_do_switch_mm)
mrs x2, ttbr1_el1 mrs x2, ttbr1_el1
mmid x1, x1 // get mm->context.id mmid x1, x1 // get mm->context.id
phys_to_ttbr x3, x0 phys_to_ttbr x3, x0
@ -1624,7 +1624,7 @@ index 03646e6a2ef4..2c75b0b903ae 100644
#ifdef CONFIG_ARM64_SW_TTBR0_PAN #ifdef CONFIG_ARM64_SW_TTBR0_PAN
bfi x3, x1, #48, #16 // set the ASID field in TTBR0 bfi x3, x1, #48, #16 // set the ASID field in TTBR0
#endif #endif
@@ -184,7 +190,7 @@ ENDPROC(cpu_do_switch_mm) @@ -186,7 +192,7 @@ ENDPROC(cpu_do_switch_mm)
.endm .endm
/* /*
@ -1633,7 +1633,7 @@ index 03646e6a2ef4..2c75b0b903ae 100644
* *
* This is the low-level counterpart to cpu_replace_ttbr1, and should not be * This is the low-level counterpart to cpu_replace_ttbr1, and should not be
* called by anything else. It can only be executed from a TTBR0 mapping. * called by anything else. It can only be executed from a TTBR0 mapping.
@@ -194,8 +200,7 @@ ENTRY(idmap_cpu_replace_ttbr1) @@ -196,8 +202,7 @@ ENTRY(idmap_cpu_replace_ttbr1)
__idmap_cpu_set_reserved_ttbr1 x1, x3 __idmap_cpu_set_reserved_ttbr1 x1, x3
@ -1644,7 +1644,7 @@ index 03646e6a2ef4..2c75b0b903ae 100644
restore_daif x2 restore_daif x2
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h
index 8bdbb5f29494..74b0aa9c7499 100644 index 3188c0bef..2ce489144 100644
--- a/include/linux/irqchip/arm-gic-v3.h --- a/include/linux/irqchip/arm-gic-v3.h
+++ b/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h
@@ -357,6 +357,8 @@ @@ -357,6 +357,8 @@
@ -1667,7 +1667,7 @@ index 8bdbb5f29494..74b0aa9c7499 100644
#define GITS_BASER_InnerShareable \ #define GITS_BASER_InnerShareable \
GIC_BASER_SHAREABILITY(GITS_BASER, InnerShareable) GIC_BASER_SHAREABILITY(GITS_BASER, InnerShareable)
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 251be353f950..c6a2f49b2d2e 100644 index 251be353f..c6a2f49b2 100644
--- a/include/uapi/linux/kvm.h --- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h
@@ -750,6 +750,15 @@ struct kvm_ppc_resize_hpt { @@ -750,6 +750,15 @@ struct kvm_ppc_resize_hpt {
@ -1700,7 +1700,7 @@ index 251be353f950..c6a2f49b2d2e 100644
#ifdef KVM_CAP_IRQ_ROUTING #ifdef KVM_CAP_IRQ_ROUTING
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
index 02bac8abd206..d63ce2007eec 100644 index 02bac8abd..d63ce2007 100644
--- a/virt/kvm/arm/arm.c --- a/virt/kvm/arm/arm.c
+++ b/virt/kvm/arm/arm.c +++ b/virt/kvm/arm/arm.c
@@ -120,8 +120,9 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) @@ -120,8 +120,9 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
@ -1782,7 +1782,7 @@ index 02bac8abd206..d63ce2007eec 100644
} }
diff --git a/virt/kvm/arm/mmu.c b/virt/kvm/arm/mmu.c diff --git a/virt/kvm/arm/mmu.c b/virt/kvm/arm/mmu.c
index ed162a6c57c5..7e477b3cae5b 100644 index 1344557a7..aad4db4fc 100644
--- a/virt/kvm/arm/mmu.c --- a/virt/kvm/arm/mmu.c
+++ b/virt/kvm/arm/mmu.c +++ b/virt/kvm/arm/mmu.c
@@ -45,7 +45,6 @@ static phys_addr_t hyp_idmap_vector; @@ -45,7 +45,6 @@ static phys_addr_t hyp_idmap_vector;
@ -2022,7 +2022,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
if (ret) if (ret)
goto out; goto out;
spin_lock(&kvm->mmu_lock); spin_lock(&kvm->mmu_lock);
@@ -1296,19 +1297,21 @@ static void stage2_wp_ptes(pmd_t *pmd, phys_addr_t addr, phys_addr_t end) @@ -1302,19 +1303,21 @@ static void stage2_wp_ptes(pmd_t *pmd, phys_addr_t addr, phys_addr_t end)
/** /**
* stage2_wp_pmds - write protect PUD range * stage2_wp_pmds - write protect PUD range
@ -2047,7 +2047,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
if (!pmd_none(*pmd)) { if (!pmd_none(*pmd)) {
if (pmd_thp_or_huge(*pmd)) { if (pmd_thp_or_huge(*pmd)) {
if (!kvm_s2pmd_readonly(pmd)) if (!kvm_s2pmd_readonly(pmd))
@@ -1328,18 +1331,19 @@ static void stage2_wp_pmds(pud_t *pud, phys_addr_t addr, phys_addr_t end) @@ -1334,18 +1337,19 @@ static void stage2_wp_pmds(pud_t *pud, phys_addr_t addr, phys_addr_t end)
* *
* Process PUD entries, for a huge PUD we cause a panic. * Process PUD entries, for a huge PUD we cause a panic.
*/ */
@ -2073,7 +2073,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
} }
} while (pud++, addr = next, addr != end); } while (pud++, addr = next, addr != end);
} }
@@ -1355,7 +1359,7 @@ static void stage2_wp_range(struct kvm *kvm, phys_addr_t addr, phys_addr_t end) @@ -1361,7 +1365,7 @@ static void stage2_wp_range(struct kvm *kvm, phys_addr_t addr, phys_addr_t end)
pgd_t *pgd; pgd_t *pgd;
phys_addr_t next; phys_addr_t next;
@ -2082,7 +2082,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
do { do {
/* /*
* Release kvm_mmu_lock periodically if the memory region is * Release kvm_mmu_lock periodically if the memory region is
@@ -1369,9 +1373,9 @@ static void stage2_wp_range(struct kvm *kvm, phys_addr_t addr, phys_addr_t end) @@ -1375,9 +1379,9 @@ static void stage2_wp_range(struct kvm *kvm, phys_addr_t addr, phys_addr_t end)
cond_resched_lock(&kvm->mmu_lock); cond_resched_lock(&kvm->mmu_lock);
if (!READ_ONCE(kvm->arch.pgd)) if (!READ_ONCE(kvm->arch.pgd))
break; break;
@ -2095,7 +2095,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
} while (pgd++, addr = next, addr != end); } while (pgd++, addr = next, addr != end);
} }
@@ -1520,7 +1524,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, @@ -1526,7 +1530,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
up_read(&current->mm->mmap_sem); up_read(&current->mm->mmap_sem);
/* We need minimum second+third level pages */ /* We need minimum second+third level pages */
@ -2104,7 +2104,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
KVM_NR_MEM_OBJS); KVM_NR_MEM_OBJS);
if (ret) if (ret)
return ret; return ret;
@@ -1763,7 +1767,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu, struct kvm_run *run) @@ -1769,7 +1773,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu, struct kvm_run *run)
} }
/* Userspace should not be able to register out-of-bounds IPAs */ /* Userspace should not be able to register out-of-bounds IPAs */
@ -2113,7 +2113,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
if (fault_status == FSC_ACCESS) { if (fault_status == FSC_ACCESS) {
handle_access_fault(vcpu, fault_ipa); handle_access_fault(vcpu, fault_ipa);
@@ -2062,7 +2066,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, @@ -2068,7 +2072,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
* space addressable by the KVM guest IPA space. * space addressable by the KVM guest IPA space.
*/ */
if (memslot->base_gfn + memslot->npages >= if (memslot->base_gfn + memslot->npages >=
@ -2123,7 +2123,7 @@ index ed162a6c57c5..7e477b3cae5b 100644
down_read(&current->mm->mmap_sem); down_read(&current->mm->mmap_sem);
diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
index 12502251727e..eb2a390a6c86 100644 index 621bb0040..69973d980 100644
--- a/virt/kvm/arm/vgic/vgic-its.c --- a/virt/kvm/arm/vgic/vgic-its.c
+++ b/virt/kvm/arm/vgic/vgic-its.c +++ b/virt/kvm/arm/vgic/vgic-its.c
@@ -241,13 +241,6 @@ static struct its_ite *find_ite(struct vgic_its *its, u32 device_id, @@ -241,13 +241,6 @@ static struct its_ite *find_ite(struct vgic_its *its, u32 device_id,
@ -2146,9 +2146,9 @@ index 12502251727e..eb2a390a6c86 100644
u64 indirect_ptr, type = GITS_BASER_TYPE(baser); u64 indirect_ptr, type = GITS_BASER_TYPE(baser);
+ phys_addr_t base = GITS_BASER_ADDR_48_to_52(baser); + phys_addr_t base = GITS_BASER_ADDR_48_to_52(baser);
int esz = GITS_BASER_ENTRY_SIZE(baser); int esz = GITS_BASER_ENTRY_SIZE(baser);
int index; int index, idx;
gfn_t gfn; gfn_t gfn;
@@ -783,7 +777,7 @@ static bool vgic_its_check_id(struct vgic_its *its, u64 baser, u32 id, @@ -784,7 +778,7 @@ static bool vgic_its_check_id(struct vgic_its *its, u64 baser, u32 id,
if (id >= (l1_tbl_size / esz)) if (id >= (l1_tbl_size / esz))
return false; return false;
@ -2157,7 +2157,7 @@ index 12502251727e..eb2a390a6c86 100644
gfn = addr >> PAGE_SHIFT; gfn = addr >> PAGE_SHIFT;
if (eaddr) if (eaddr)
@@ -798,7 +792,7 @@ static bool vgic_its_check_id(struct vgic_its *its, u64 baser, u32 id, @@ -800,7 +794,7 @@ static bool vgic_its_check_id(struct vgic_its *its, u64 baser, u32 id,
/* Each 1st level entry is represented by a 64-bit value. */ /* Each 1st level entry is represented by a 64-bit value. */
if (kvm_read_guest_lock(its->dev->kvm, if (kvm_read_guest_lock(its->dev->kvm,
@ -2166,7 +2166,7 @@ index 12502251727e..eb2a390a6c86 100644
&indirect_ptr, sizeof(indirect_ptr))) &indirect_ptr, sizeof(indirect_ptr)))
return false; return false;
@@ -808,11 +802,7 @@ static bool vgic_its_check_id(struct vgic_its *its, u64 baser, u32 id, @@ -810,11 +804,7 @@ static bool vgic_its_check_id(struct vgic_its *its, u64 baser, u32 id,
if (!(indirect_ptr & BIT_ULL(63))) if (!(indirect_ptr & BIT_ULL(63)))
return false; return false;
@ -2179,7 +2179,7 @@ index 12502251727e..eb2a390a6c86 100644
indirect_ptr &= GENMASK_ULL(51, 16); indirect_ptr &= GENMASK_ULL(51, 16);
/* Find the address of the actual entry */ /* Find the address of the actual entry */
@@ -1304,9 +1294,6 @@ static u64 vgic_sanitise_its_baser(u64 reg) @@ -1311,9 +1301,6 @@ static u64 vgic_sanitise_its_baser(u64 reg)
GITS_BASER_OUTER_CACHEABILITY_SHIFT, GITS_BASER_OUTER_CACHEABILITY_SHIFT,
vgic_sanitise_outer_cacheability); vgic_sanitise_outer_cacheability);
@ -2189,7 +2189,7 @@ index 12502251727e..eb2a390a6c86 100644
/* We support only one (ITS) page size: 64K */ /* We support only one (ITS) page size: 64K */
reg = (reg & ~GITS_BASER_PAGE_SIZE_MASK) | GITS_BASER_PAGE_SIZE_64K; reg = (reg & ~GITS_BASER_PAGE_SIZE_MASK) | GITS_BASER_PAGE_SIZE_64K;
@@ -1325,11 +1312,8 @@ static u64 vgic_sanitise_its_cbaser(u64 reg) @@ -1332,11 +1319,8 @@ static u64 vgic_sanitise_its_cbaser(u64 reg)
GITS_CBASER_OUTER_CACHEABILITY_SHIFT, GITS_CBASER_OUTER_CACHEABILITY_SHIFT,
vgic_sanitise_outer_cacheability); vgic_sanitise_outer_cacheability);
@ -2203,7 +2203,7 @@ index 12502251727e..eb2a390a6c86 100644
return reg; return reg;
} }
@@ -1375,7 +1359,7 @@ static void vgic_its_process_commands(struct kvm *kvm, struct vgic_its *its) @@ -1382,7 +1366,7 @@ static void vgic_its_process_commands(struct kvm *kvm, struct vgic_its *its)
if (!its->enabled) if (!its->enabled)
return; return;
@ -2212,7 +2212,7 @@ index 12502251727e..eb2a390a6c86 100644
while (its->cwriter != its->creadr) { while (its->cwriter != its->creadr) {
int ret = kvm_read_guest_lock(kvm, cbaser + its->creadr, int ret = kvm_read_guest_lock(kvm, cbaser + its->creadr,
@@ -2233,7 +2217,7 @@ static int vgic_its_restore_device_tables(struct vgic_its *its) @@ -2240,7 +2224,7 @@ static int vgic_its_restore_device_tables(struct vgic_its *its)
if (!(baser & GITS_BASER_VALID)) if (!(baser & GITS_BASER_VALID))
return 0; return 0;
@ -2221,7 +2221,7 @@ index 12502251727e..eb2a390a6c86 100644
if (baser & GITS_BASER_INDIRECT) { if (baser & GITS_BASER_INDIRECT) {
l1_esz = GITS_LVL1_ENTRY_SIZE; l1_esz = GITS_LVL1_ENTRY_SIZE;
@@ -2305,7 +2289,7 @@ static int vgic_its_save_collection_table(struct vgic_its *its) @@ -2312,7 +2296,7 @@ static int vgic_its_save_collection_table(struct vgic_its *its)
{ {
const struct vgic_its_abi *abi = vgic_its_get_abi(its); const struct vgic_its_abi *abi = vgic_its_get_abi(its);
u64 baser = its->baser_coll_table; u64 baser = its->baser_coll_table;
@ -2230,7 +2230,7 @@ index 12502251727e..eb2a390a6c86 100644
struct its_collection *collection; struct its_collection *collection;
u64 val; u64 val;
size_t max_size, filled = 0; size_t max_size, filled = 0;
@@ -2354,7 +2338,7 @@ static int vgic_its_restore_collection_table(struct vgic_its *its) @@ -2361,7 +2345,7 @@ static int vgic_its_restore_collection_table(struct vgic_its *its)
if (!(baser & GITS_BASER_VALID)) if (!(baser & GITS_BASER_VALID))
return 0; return 0;
@ -2240,7 +2240,7 @@ index 12502251727e..eb2a390a6c86 100644
max_size = GITS_BASER_NR_PAGES(baser) * SZ_64K; max_size = GITS_BASER_NR_PAGES(baser) * SZ_64K;
diff --git a/virt/kvm/arm/vgic/vgic-kvm-device.c b/virt/kvm/arm/vgic/vgic-kvm-device.c diff --git a/virt/kvm/arm/vgic/vgic-kvm-device.c b/virt/kvm/arm/vgic/vgic-kvm-device.c
index 6ada2432e37c..5099723c38c6 100644 index 6ada2432e..5099723c3 100644
--- a/virt/kvm/arm/vgic/vgic-kvm-device.c --- a/virt/kvm/arm/vgic/vgic-kvm-device.c
+++ b/virt/kvm/arm/vgic/vgic-kvm-device.c +++ b/virt/kvm/arm/vgic/vgic-kvm-device.c
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
@ -2253,7 +2253,7 @@ index 6ada2432e37c..5099723c38c6 100644
if (!IS_ALIGNED(addr, alignment)) if (!IS_ALIGNED(addr, alignment))
diff --git a/virt/kvm/arm/vgic/vgic-mmio-v3.c b/virt/kvm/arm/vgic/vgic-mmio-v3.c diff --git a/virt/kvm/arm/vgic/vgic-mmio-v3.c b/virt/kvm/arm/vgic/vgic-mmio-v3.c
index a2a175b08b17..b3d1f0985117 100644 index a2a175b08..b3d1f0985 100644
--- a/virt/kvm/arm/vgic/vgic-mmio-v3.c --- a/virt/kvm/arm/vgic/vgic-mmio-v3.c
+++ b/virt/kvm/arm/vgic/vgic-mmio-v3.c +++ b/virt/kvm/arm/vgic/vgic-mmio-v3.c
@@ -364,7 +364,6 @@ static u64 vgic_sanitise_pendbaser(u64 reg) @@ -364,7 +364,6 @@ static u64 vgic_sanitise_pendbaser(u64 reg)
@ -2273,5 +2273,5 @@ index a2a175b08b17..b3d1f0985117 100644
} }
-- --
2.17.1 2.19.2

View File

@ -19,6 +19,7 @@ http_proxy=${http_proxy:-}
https_proxy=${https_proxy:-} https_proxy=${https_proxy:-}
no_proxy=${no_proxy:-} no_proxy=${no_proxy:-}
PUSH=${PUSH:-} PUSH=${PUSH:-}
BUILD_HEAD="${BUILD_HEAD:-false}"
# shellcheck source=scripts/obs-docker.sh # shellcheck source=scripts/obs-docker.sh
source "${script_dir}/scripts/obs-docker.sh" source "${script_dir}/scripts/obs-docker.sh"
@ -44,7 +45,7 @@ get_image() {
echo "branch not provided" echo "branch not provided"
return 1 return 1
fi fi
if "${script_dir}/download_image.sh" "${branch}"; then if [ ${BUILD_HEAD} = "false" ] && "${script_dir}/download_image.sh" "${branch}"; then
echo "OK image downloaded" echo "OK image downloaded"
find . -name 'kata-containers-'"${branch}"'-*.tar.gz' || die "Failed to find downloaded image" find . -name 'kata-containers-'"${branch}"'-*.tar.gz' || die "Failed to find downloaded image"
return 0 return 0

View File

@ -137,9 +137,26 @@ EOT
} }
main() { main() {
case "${1:-}" in
"-h"|"--help")
usage Help
;;
--ci)
create_ci_subproject=true
shift
;;
-*)
die "Invalid option: ${1:-}"
;;
esac
local branch="${1:-}" local branch="${1:-}"
[ -n "${branch}" ] || usage "missing branch" "1" [ -n "${branch}" ] || usage "missing branch" "1"
project_branch="${home_project}:releases:${arch_target}:${branch}" if [ "${create_ci_subproject:-false}" == "true" ];then
release_type="ci"
else
release_type="releases"
fi
project_branch="${home_project}:${release_type}:${arch_target}:${branch}"
create_meta_xml "${project_branch}" "${branch}" create_meta_xml "${project_branch}" "${branch}"
info "Creating/Updating project with name ${project_branch}" info "Creating/Updating project with name ${project_branch}"
# Update /Create project metadata. # Update /Create project metadata.

View File

@ -15,5 +15,6 @@ SLE_12_SP3::SUSE:SLE-12-SP3:GA::standard
openSUSE_Leap_42.3::openSUSE:Leap:42.3::standard openSUSE_Leap_42.3::openSUSE:Leap:42.3::standard
openSUSE_Leap_15.0::openSUSE:Leap:15.0::standard openSUSE_Leap_15.0::openSUSE:Leap:15.0::standard
openSUSE_Tumbleweed::openSUSE:Factory::snapshot openSUSE_Tumbleweed::openSUSE:Factory::snapshot
xUbuntu_16.04::Ubuntu:16.04::universe,universe-update,update # FIXME: https://github.com/kata-containers/packaging/issues/607
#xUbuntu_16.04::Ubuntu:16.04::universe,universe-update,update
xUbuntu_18.04::Ubuntu:18.04::universe xUbuntu_18.04::Ubuntu:18.04::universe

View File

@ -11,6 +11,9 @@ setup_oscrc() {
# oscrc exists at different places on different distros # oscrc exists at different places on different distros
[ -f "${HOME}/.config/osc/oscrc" ] && OSCRC="${HOME}/.config/osc/oscrc" [ -f "${HOME}/.config/osc/oscrc" ] && OSCRC="${HOME}/.config/osc/oscrc"
OSCRC=${OSCRC:-"${HOME}/.oscrc"} OSCRC=${OSCRC:-"${HOME}/.oscrc"}
(
# do not log OBS credentials even in debug mode
set +x
OBS_API="https://api.opensuse.org" OBS_API="https://api.opensuse.org"
if [ -n "${OBS_USER:-}" ] && [ -n "${OBS_PASS:-}" ] && [ ! -e "${OSCRC}" ]; then if [ -n "${OBS_USER:-}" ] && [ -n "${OBS_PASS:-}" ] && [ ! -e "${OSCRC}" ]; then
@ -24,11 +27,12 @@ user = ${OBS_USER}
pass = ${OBS_PASS} pass = ${OBS_PASS}
eom eom
fi fi
) >> /dev/null
if [ ! -e "${OSCRC}" ]; then if [ ! -e "${OSCRC}" ]; then
echo "${OSCRC}, please do 'export OBS_USER=your_user ; export OBS_PASS=your_pass' to configure osc for first time." echo "${OSCRC}, please do 'export OBS_USER=your_user ; export OBS_PASS=your_pass' to configure osc for first time."
exit 1 exit 1
fi fi
echo "OK - osc configured"
} }
docker_run() { docker_run() {

View File

@ -9,6 +9,8 @@ set -o nounset
set -o pipefail set -o pipefail
set -o errtrace set -o errtrace
script_name="$(basename "${BASH_SOURCE[0]}")"
handle_error() { handle_error() {
local exit_code="${?}" local exit_code="${?}"
local line_number="${1:-}" local line_number="${1:-}"
@ -24,7 +26,7 @@ run_in_docker() {
# shellcheck source=scripts/obs-docker.sh # shellcheck source=scripts/obs-docker.sh
source "${script_dir}/scripts/obs-docker.sh" source "${script_dir}/scripts/obs-docker.sh"
packaging_repo_dir=$(cd "${script_dir}/.." && pwd) packaging_repo_dir=$(cd "${script_dir}/.." && pwd)
docker_run "${packaging_repo_dir}/obs-packaging/wait-obs.sh" docker_run "${packaging_repo_dir}/obs-packaging/wait-obs.sh" $@
exit 0 exit 0
fi fi
} }
@ -33,6 +35,8 @@ run_in_docker() {
# Check all project has finshed the build # Check all project has finshed the build
wait_finish_building() { wait_finish_building() {
while osc pr -q | grep '(building)'; do sleep 5; done while osc pr -q | grep '(building)'; do sleep 5; done
# just in case something goes wrong
while osc pr -q | grep '(building)'; do sleep 5; done
} }
# obs distro final status is 'published' # obs distro final status is 'published'
@ -45,7 +49,7 @@ is_published() {
continue continue
fi fi
if ! echo "${c}" | grep 'published'; then if ! echo "${c}" | grep 'published'; then
echo "${c}" echo "waiting for : ${c}"
return 1 return 1
fi fi
done done
@ -63,14 +67,45 @@ check_failed(){
failed_query=$(osc pr -c -s F) failed_query=$(osc pr -c -s F)
regex=".*failed.*" regex=".*failed.*"
if [[ ${failed_query} =~ ${regex} ]];then if [[ ${failed_query} =~ ${regex} ]];then
printf "%s" "${failed_query}" | column -t -s\; echo "ERROR: Build failed"
return 1 osc pr -V -s 'F'
exit 1
fi fi
echo "Nothing failed"
osc pr -q -c | tail -n +2 | column -t -s\;
return 0 return 0
} }
usage() {
msg="${1:-}"
exit_code=$"${2:-0}"
cat <<EOT
${msg}
Usage:
${script_name} [--options]
options:
-h, --help: Show this help
--no-wait-publish : no wait that OBS publish packages
EOT
exit "${exit_code}"
}
main() { main() {
run_in_docker run_in_docker $@
local no_wait_publish="false"
case "${1:-}" in
"-h"|"--help")
usage "Help" 0
;;
--no-wait-publish)
no_wait_publish="true"
shift
;;
-*)
usage "Invalid option: ${1:-}" 1
;;
esac
OBS_SUBPROJECT="${OBS_SUBPROJECT:-releases:x86_64:alpha}" OBS_SUBPROJECT="${OBS_SUBPROJECT:-releases:x86_64:alpha}"
project="home:katacontainers:${OBS_SUBPROJECT}" project="home:katacontainers:${OBS_SUBPROJECT}"
echo "Checkout: ${project}" echo "Checkout: ${project}"
@ -85,6 +120,11 @@ main() {
check_failed check_failed
echo "OK - build did not fail" echo "OK - build did not fail"
if [ "${no_wait_publish}" == "true" ];then
echo " Requested not wait for publish"
exit
fi
echo "Wait for published" echo "Wait for published"
wait_published wait_published
echo "OK - published" echo "OK - published"

View File

@ -36,13 +36,14 @@ get_from_kata_deps() {
local branch="${2:-${BRANCH}}" local branch="${2:-${BRANCH}}"
local runtime_repo="github.com/kata-containers/runtime" local runtime_repo="github.com/kata-containers/runtime"
GOPATH=${GOPATH:-${HOME}/go} GOPATH=${GOPATH:-${HOME}/go}
local runtime_repo_dir="${GOPATH}/src/${runtime_repo}"
# For our CI, we will query the local versions.yaml file both for kernel and # For our CI, we will query the local versions.yaml file both for kernel and
# all other subsystems. eg: a new version of NEMU would be good to test # all other subsystems. eg: a new version of NEMU would be good to test
# through CI. For the kernel, .ci/install_kata_kernel.sh file in tests # through CI. For the kernel, .ci/install_kata_kernel.sh file in tests
# repository will pass the kernel version as an override to this function to # repository will pass the kernel version as an override to this function to
# allow testing of kernels before they land in tree. # allow testing of kernels before they land in tree.
if [ "${CI:-}" = "true" ]; then if [ "${CI:-}" = "true" ] && [ -d "${runtime_repo_dir}" ]; then
versions_file="${GOPATH}/src/${runtime_repo}/versions.yaml" versions_file="${runtime_repo_dir}/versions.yaml"
else else
versions_file="versions-${branch}.yaml" versions_file="versions-${branch}.yaml"
fi fi