Merge branch 'develop' into missing-tcc-transition

This commit is contained in:
Daniel Kouchekinia
2024-02-27 16:46:30 -06:00
committed by GitHub
6 changed files with 111 additions and 48 deletions

View File

@@ -16,8 +16,8 @@ jobs:
strategy:
fail-fast: false
matrix:
image: [gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14, clang-version-13,
clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies,
image: [gcc-version-13, gcc-version-12, gcc-version-11, gcc-version-10, gcc-version-8, clang-version-16, clang-version-15, clang-version-14,
clang-version-13, clang-version-12, clang-version-11, clang-version-10, clang-version-9, clang-version-8, clang-version-7, ubuntu-20.04_all-dependencies,
ubuntu-22.04_all-dependencies, ubuntu-22.04_min-dependencies]
opts: [.opt, .fast]
runs-on: [self-hosted, linux, x64]
@@ -40,7 +40,7 @@ jobs:
matrix:
gem5-compilation: [ARM, ARM_MESI_Three_Level, ARM_MESI_Three_Level_HTM, ARM_MOESI_hammer, Garnet_standalone, MIPS, 'NULL', NULL_MESI_Two_Level,
NULL_MOESI_CMP_directory, NULL_MOESI_CMP_token, NULL_MOESI_hammer, POWER, RISCV, SPARC, X86, X86_MI_example, X86_MOESI_AMD_Base, VEGA_X86]
image: [gcc-version-12, clang-version-16]
image: [gcc-version-13, clang-version-16]
opts: [.opt]
runs-on: [self-hosted, linux, x64]
timeout-minutes: 2880 # 48 hours

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018 ARM Limited
* Copyright (c) 2018,2024 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -69,9 +69,27 @@ QueuePolicy::create(const QoSMemCtrlParams &p)
}
}
QueuePolicy::PacketQueue::iterator
FifoQueuePolicy::selectPacket(PacketQueue* queue)
{
panic_if(queue->empty(),
"Provided packet queue is not usable by queue policy");
return queue->begin();
}
QueuePolicy::PacketQueue::iterator
LifoQueuePolicy::selectPacket(PacketQueue* queue)
{
panic_if(queue->empty(),
"Provided packet queue is not usable by queue policy");
return std::prev(queue->end());
}
QueuePolicy::PacketQueue::iterator
LrgQueuePolicy::selectPacket(PacketQueue* q)
{
panic_if(q->empty(),
"Provided packet queue is not usable by queue policy");
QueuePolicy::PacketQueue::iterator ret = q->end();
// Tracks one packet per requestor in the queue
@@ -91,10 +109,10 @@ LrgQueuePolicy::selectPacket(PacketQueue* q)
"from queue with id %d\n", requestor_id);
// Check if this is a known requestor.
panic_if(memCtrl->hasRequestor(requestor_id),
panic_if(!memCtrl->hasRequestor(requestor_id),
"%s: Unrecognized Requestor\n", __func__);
panic_if(toServe.size() > 0,
panic_if(toServe.size() <= 0,
"%s: toServe list is empty\n", __func__);
if (toServe.front() == requestor_id) {
@@ -137,8 +155,7 @@ LrgQueuePolicy::selectPacket(PacketQueue* q)
DPRINTF(QOS, "QoSQPolicy::lrg no packet was serviced\n");
// Ret will be : packet to serve if any found or queue begin
// (end if queue is empty)
// Ret will be : packet to serve
return ret;
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2018 ARM Limited
* Copyright (c) 2018, 2024 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -93,7 +93,7 @@ class QueuePolicy
* The implementation of this virtual method selects the packet
* to be serviced from the packet queue passed as an argument.
*
* @param queue Packet queue
* @param queue Non-empty packet queue to select a packet from
* @return Iterator pointing to the packet in the queue to be
* serviced
*/
@@ -127,14 +127,11 @@ class LifoQueuePolicy : public QueuePolicy
/**
* Implements LIFO packet select policy
*
* @param queue The queue in which to select a packet
* @param queue The non-empty queue from which to select a packet
* @return Iterator to the selected packet
*/
PacketQueue::iterator
selectPacket(PacketQueue* queue) override
{
return queue->end();
}
selectPacket(PacketQueue* queue) override;
};
/** First In First Out Queue Policy */
@@ -148,14 +145,11 @@ class FifoQueuePolicy : public QueuePolicy
/**
* Implements FCFS packet select policy
*
* @param queue The queue in which to select a packet
* @param queue The non-empty queue from which to select a packet
* @return Iterator to the selected packet
*/
PacketQueue::iterator
selectPacket(PacketQueue* queue) override
{
return queue->begin();
}
selectPacket(PacketQueue* queue) override;
};
/**
@@ -176,7 +170,7 @@ class LrgQueuePolicy : public QueuePolicy
/**
* Implements LRG packet select policy
*
* @param queue The queue in which to select a packet
* @param queue The non-empty queue from which to select a packet
* @return Iterator to the selected packet
*/
PacketQueue::iterator

View File

@@ -65,6 +65,11 @@ services:
args:
- version=12
image: gcr.io/gem5-test/gcc-version-12:latest
gcc-13:
build:
context: ubuntu-22.04_gcc_13-version
dockerfile: Dockerfile
image: gcr.io/gem5-test/gcc-version-13:latest
clang-7:
build:
context: ubuntu-20.04_clang-version

View File

@@ -0,0 +1,53 @@
# Copyright (c) 2024 The Regents of the University of California
# All Rights Reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met: redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer;
# redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution;
# neither the name of the copyright holders nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
FROM --platform=${BUILDPLATFORM} ubuntu:22.04
# Valid version values:
# 13
ENV DEBIAN_FRONTEND=noninteractive
RUN apt -y update && \
# software-properties-common is necessary to install
# to add PPA to the system
apt -y install software-properties-common && \
# Installing PPA is necessary to install gcc-13
# because it is not available in the default repositories
# for Ubuntu 22.04
add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
apt -y update && \
apt -y install git m4 scons zlib1g zlib1g-dev libprotobuf-dev \
protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev \
doxygen libboost-all-dev libhdf5-serial-dev python3-pydot libpng-dev \
gcc-13 g++-13 make
RUN update-alternatives --install \
/usr/bin/g++ g++ /usr/bin/g++- 100
RUN update-alternatives --install \
/usr/bin/gcc gcc /usr/bin/gcc-13 100
RUN update-alternatives --install \
/usr/bin/c++ c++ /usr/bin/g++-13 100
RUN update-alternatives --install \
/usr/bin/cc cc /usr/bin/gcc-13 100

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
# Copyright (c) 2017-2018 Arm Limited
# Copyright (c) 2017-2018, 2024 Arm Limited
# All rights reserved
#
# The license below extends only to copyright in the software and shall
@@ -88,20 +88,20 @@ class Commit:
return self._tags
@property
def change_id(self):
"""Get the Change-Id tag from the commit
def change_ids(self):
"""Get the Change-Id tag(s) from the commit
Returns: A change ID or None if no change ID has been
specified.
Returns: A list of change IDs. May be empty if no change IDs
have been specified.
"""
try:
cids = self.tags["Change-Id"]
except KeyError:
return None
return list()
assert len(cids) == 1
return cids[0]
return cids[:]
def __str__(self):
return f"{self.rev[0:8]}: {self.log[0]}"
@@ -137,32 +137,26 @@ def list_changes(upstream, feature, paths=[]):
feature_revs = tuple(list_revs(upstream, feature, paths=paths))
upstream_revs = tuple(list_revs(feature, upstream, paths=paths))
feature_cids = {
c.change_id: c for c in feature_revs if c.change_id is not None
}
upstream_cids = {
c.change_id: c for c in upstream_revs if c.change_id is not None
}
feature_cids = {cid: c for c in feature_revs for cid in c.change_ids}
upstream_cids = {cid: c for c in upstream_revs for cid in c.change_ids}
incoming = [
r
for r in reversed(upstream_revs)
if r.change_id and r.change_id not in feature_cids
if any(rcid not in feature_cids for rcid in r.change_ids)
]
outgoing = [
r
for r in reversed(feature_revs)
if r.change_id and r.change_id not in upstream_cids
if any(rcid not in upstream_cids for rcid in r.change_ids)
]
common = [
r for r in reversed(feature_revs) if r.change_id in upstream_cids
]
upstream_unknown = [
r for r in reversed(upstream_revs) if r.change_id is None
]
feature_unknown = [
r for r in reversed(feature_revs) if r.change_id is None
r
for r in reversed(feature_revs)
if any(rcid in upstream_cids for rcid in r.change_ids)
]
upstream_unknown = [r for r in reversed(upstream_revs) if not r.change_ids]
feature_unknown = [r for r in reversed(feature_revs) if not r.change_ids]
return incoming, outgoing, common, upstream_unknown, feature_unknown
@@ -252,12 +246,12 @@ def _main():
print("Incorrectly rebased changes:")
all_upstream_revs = list_revs(args.upstream, paths=args.paths)
all_upstream_cids = {
c.change_id: c
for c in all_upstream_revs
if c.change_id is not None
cid: c for c in all_upstream_revs for cid in c.change_ids
}
incorrect_outgoing = [
r for r in outgoing if r.change_id in all_upstream_cids
r
for r in outgoing
if any(rcid in all_upstream_cids for rcid in r.change_ids)
]
for rev in incorrect_outgoing:
print(rev)